{"version":3,"file":"eln-plugin.js","sources":["../src/types/default.js","../src/types/reaction/general.js","../node_modules/utf8/utf8.js","../node_modules/iobuffer/lib-esm/IOBuffer.js","../node_modules/netcdfjs/src/utils.js","../node_modules/netcdfjs/src/types.js","../node_modules/netcdfjs/src/data.js","../node_modules/netcdfjs/src/header.js","../node_modules/netcdfjs/src/toString.js","../node_modules/netcdfjs/src/index.js","../node_modules/netcdf-gcms/src/agilentGCMS.js","../node_modules/netcdf-gcms/src/brukerGCMS.js","../node_modules/netcdf-gcms/src/agilentHPLC.js","../node_modules/netcdf-gcms/src/finniganGCMS.js","../node_modules/netcdf-gcms/src/shimadzuGCMS.js","../node_modules/netcdf-gcms/src/advionGCMS.js","../node_modules/netcdf-gcms/src/aiaTemplate.js","../node_modules/netcdf-gcms/src/index.js","../node_modules/atob/browser-atob.js","../node_modules/base64-js/index.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/jcampconverter/src/complexChromatogram.js","../node_modules/jcampconverter/src/convertToFloatArray.js","../node_modules/jcampconverter/src/parse/fastParseXYData.js","../node_modules/jcampconverter/src/parse/parsePeakTable.js","../node_modules/jcampconverter/src/parse/parseXYA.js","../node_modules/is-any-array/src/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/jcampconverter/src/2d/convertTo3DZ.js","../node_modules/jcampconverter/src/2d/generateContourLines.js","../node_modules/jcampconverter/src/2d/add2D.js","../node_modules/nmr-processing/lib-esm/constants/gyromagneticRatio.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/ml-savitzky-golay-generalized/src/index.js","../node_modules/ml-levenberg-marquardt/src/checkOptions.js","../node_modules/ml-levenberg-marquardt/src/errorCalculation.js","../node_modules/ml-levenberg-marquardt/src/gradientFunction.js","../node_modules/ml-levenberg-marquardt/src/step.js","../node_modules/ml-levenberg-marquardt/src/index.js","../node_modules/ml-spectra-processing/src/x/xAbsolute.js","../node_modules/ml-spectra-processing/src/x/xAbsoluteMedian.js","../node_modules/ml-spectra-processing/src/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/src/x/xGetFromToIndex.js","../node_modules/d3-array/build/d3-array.js","../node_modules/spline-interpolator/index.js","../node_modules/ml-spectra-processing/src/x/erfcinv.js","../node_modules/ml-spectra-processing/src/x/rayleighCdf.js","../node_modules/ml-spectra-processing/src/x/xNoiseSanPlot.js","../node_modules/ml-spectra-processing/src/xy/xyCheck.js","../node_modules/ml-spectra-processing/src/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/src/xy/xyExtract.js","../node_modules/ml-spectra-processing/src/xy/xyIntegration.js","../node_modules/assign-symbols/index.js","../node_modules/assign-deep/index.js","../node_modules/jcampconverter/src/postProcessingNMR.js","../node_modules/jcampconverter/src/profiling.js","../node_modules/jcampconverter/src/simpleChromatogram.js","../node_modules/jcampconverter/src/postProcessing.js","../node_modules/jcampconverter/src/prepareNtuplesDatatable.js","../node_modules/jcampconverter/src/prepareSpectrum.js","../node_modules/jcampconverter/src/convert.js","../src/types/common.js","../src/types/sample/chromatogram.js","../src/types/sample/cyclicVoltammetry.js","../src/types/sample/differentialCentrifugalSedimentation.js","../src/types/sample/differentialScanningCalorimetry.js","../src/types/sample/dls.js","../src/types/sample/elementAnalysis.js","../node_modules/genbank-parser/src/utils/months.js","../node_modules/genbank-parser/src/index.js","../src/types/sample/genbank.js","../src/types/sample/general.js","../src/types/sample/hgPorosimetry.js","../src/types/sample/icp.js","../src/types/sample/image.js","../src/types/sample/ir.js","../src/types/sample/isotherm.js","../src/types/sample/iv.js","../src/types/sample/mass.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/constants/impurities.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/peaksFilterImpurities.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/Shape1D.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/getShape1D.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/gsd.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/util/constants.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussianLorentzians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfLorentzians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/checkInput.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/selectMethod.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/index.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/groupPeaks.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/optimizePeaks.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/joinBroadPeaks.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/xy/xyAutoPeaksPicking.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/util/jAnalyzer.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/util/joinRanges.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/peaksToRanges.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/xy/xyAutoRangesPicking.js","../node_modules/nmr-metadata/src/getNucleusFrom2DExperiment.js","../node_modules/nmr-metadata/src/getSpectrumType.js","../node_modules/nmr-metadata/src/getMetaData.js","../node_modules/nmr-metadata/src/index.js","../src/types/sample/nmr.js","../src/types/sample/oan.js","../src/types/sample/pelletHardness.js","../src/types/sample/physical.js","../src/types/sample/raman.js","../src/types/sample/thermogravimetricAnalysis.js","../src/types/sample/uv.js","../src/types/sample/video.js","../src/types/sample/voidVolume.js","../src/types/sample/xps.js","../src/types/sample/xray.js","../src/types/sample/xrd.js","../src/types/sample/xrf.js","../src/types/index.js","../src/types.js","../src/util/defaults.js","../src/index.js"],"sourcesContent":["export default {\n  process() {\n    return {};\n  },\n\n  getEmpty() {\n    return [];\n  },\n};\n","export default {\n  jpath: [],\n  getEmpty() {\n    return {\n      code: '',\n      date: Date.now(),\n      procedure: '',\n      products: [],\n      reagents: [],\n      conditions: '',\n      keywords: [],\n      remarks: '',\n      title: '',\n      reactionRXN: '$RXN\\n\\n\\n\\n  0  0\\n',\n    };\n  },\n};\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","import { decode, encode } from 'utf8';\nconst defaultByteLength = 1024 * 8;\nexport class IOBuffer {\n    /**\n     * @param data - The data to construct the IOBuffer with.\n     * If data is a number, it will be the new buffer's length<br>\n     * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n     * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n     * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n     * @param options\n     */\n    constructor(data = defaultByteLength, options = {}) {\n        let dataIsGiven = false;\n        if (typeof data === 'number') {\n            data = new ArrayBuffer(data);\n        }\n        else {\n            dataIsGiven = true;\n            this.lastWrittenByte = data.byteLength;\n        }\n        const offset = options.offset ? options.offset >>> 0 : 0;\n        const byteLength = data.byteLength - offset;\n        let dvOffset = offset;\n        if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n            if (data.byteLength !== data.buffer.byteLength) {\n                dvOffset = data.byteOffset + offset;\n            }\n            data = data.buffer;\n        }\n        if (dataIsGiven) {\n            this.lastWrittenByte = byteLength;\n        }\n        else {\n            this.lastWrittenByte = 0;\n        }\n        this.buffer = data;\n        this.length = byteLength;\n        this.byteLength = byteLength;\n        this.byteOffset = dvOffset;\n        this.offset = 0;\n        this.littleEndian = true;\n        this._data = new DataView(this.buffer, dvOffset, byteLength);\n        this._mark = 0;\n        this._marks = [];\n    }\n    /**\n     * Checks if the memory allocated to the buffer is sufficient to store more\n     * bytes after the offset.\n     * @param byteLength - The needed memory in bytes.\n     * @returns `true` if there is sufficient space and `false` otherwise.\n     */\n    available(byteLength = 1) {\n        return this.offset + byteLength <= this.length;\n    }\n    /**\n     * Check if little-endian mode is used for reading and writing multi-byte\n     * values.\n     * @returns `true` if little-endian mode is used, `false` otherwise.\n     */\n    isLittleEndian() {\n        return this.littleEndian;\n    }\n    /**\n     * Set little-endian mode for reading and writing multi-byte values.\n     */\n    setLittleEndian() {\n        this.littleEndian = true;\n        return this;\n    }\n    /**\n     * Check if big-endian mode is used for reading and writing multi-byte values.\n     * @returns `true` if big-endian mode is used, `false` otherwise.\n     */\n    isBigEndian() {\n        return !this.littleEndian;\n    }\n    /**\n     * Switches to big-endian mode for reading and writing multi-byte values.\n     */\n    setBigEndian() {\n        this.littleEndian = false;\n        return this;\n    }\n    /**\n     * Move the pointer n bytes forward.\n     * @param n - Number of bytes to skip.\n     */\n    skip(n = 1) {\n        this.offset += n;\n        return this;\n    }\n    /**\n     * Move the pointer to the given offset.\n     * @param offset\n     */\n    seek(offset) {\n        this.offset = offset;\n        return this;\n    }\n    /**\n     * Store the current pointer offset.\n     * @see {@link IOBuffer#reset}\n     */\n    mark() {\n        this._mark = this.offset;\n        return this;\n    }\n    /**\n     * Move the pointer back to the last pointer offset set by mark.\n     * @see {@link IOBuffer#mark}\n     */\n    reset() {\n        this.offset = this._mark;\n        return this;\n    }\n    /**\n     * Push the current pointer offset to the mark stack.\n     * @see {@link IOBuffer#popMark}\n     */\n    pushMark() {\n        this._marks.push(this.offset);\n        return this;\n    }\n    /**\n     * Pop the last pointer offset from the mark stack, and set the current\n     * pointer offset to the popped value.\n     * @see {@link IOBuffer#pushMark}\n     */\n    popMark() {\n        const offset = this._marks.pop();\n        if (offset === undefined) {\n            throw new Error('Mark stack empty');\n        }\n        this.seek(offset);\n        return this;\n    }\n    /**\n     * Move the pointer offset back to 0.\n     */\n    rewind() {\n        this.offset = 0;\n        return this;\n    }\n    /**\n     * Make sure the buffer has sufficient memory to write a given byteLength at\n     * the current pointer offset.\n     * If the buffer's memory is insufficient, this method will create a new\n     * buffer (a copy) with a length that is twice (byteLength + current offset).\n     * @param byteLength\n     */\n    ensureAvailable(byteLength = 1) {\n        if (!this.available(byteLength)) {\n            const lengthNeeded = this.offset + byteLength;\n            const newLength = lengthNeeded * 2;\n            const newArray = new Uint8Array(newLength);\n            newArray.set(new Uint8Array(this.buffer));\n            this.buffer = newArray.buffer;\n            this.length = this.byteLength = newLength;\n            this._data = new DataView(this.buffer);\n        }\n        return this;\n    }\n    /**\n     * Read a byte and return false if the byte's value is 0, or true otherwise.\n     * Moves pointer forward by one byte.\n     */\n    readBoolean() {\n        return this.readUint8() !== 0;\n    }\n    /**\n     * Read a signed 8-bit integer and move pointer forward by 1 byte.\n     */\n    readInt8() {\n        return this._data.getInt8(this.offset++);\n    }\n    /**\n     * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n     */\n    readUint8() {\n        return this._data.getUint8(this.offset++);\n    }\n    /**\n     * Alias for {@link IOBuffer#readUint8}.\n     */\n    readByte() {\n        return this.readUint8();\n    }\n    /**\n     * Read `n` bytes and move pointer forward by `n` bytes.\n     */\n    readBytes(n = 1) {\n        const bytes = new Uint8Array(n);\n        for (let i = 0; i < n; i++) {\n            bytes[i] = this.readByte();\n        }\n        return bytes;\n    }\n    /**\n     * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n     */\n    readInt16() {\n        const value = this._data.getInt16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n     */\n    readUint16() {\n        const value = this._data.getUint16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n     */\n    readInt32() {\n        const value = this._data.getInt32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n     */\n    readUint32() {\n        const value = this._data.getUint32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit floating number and move pointer forward by 4 bytes.\n     */\n    readFloat32() {\n        const value = this._data.getFloat32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 64-bit floating number and move pointer forward by 8 bytes.\n     */\n    readFloat64() {\n        const value = this._data.getFloat64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n     */\n    readChar() {\n        return String.fromCharCode(this.readInt8());\n    }\n    /**\n     * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n     */\n    readChars(n = 1) {\n        let result = '';\n        for (let i = 0; i < n; i++) {\n            result += this.readChar();\n        }\n        return result;\n    }\n    /**\n     * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n     * forward by `n` bytes.\n     */\n    readUtf8(n = 1) {\n        const bString = this.readChars(n);\n        return decode(bString);\n    }\n    /**\n     * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n     * forward by 1 byte.\n     */\n    writeBoolean(value) {\n        this.writeUint8(value ? 0xff : 0x00);\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n     */\n    writeInt8(value) {\n        this.ensureAvailable(1);\n        this._data.setInt8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n     * byte.\n     */\n    writeUint8(value) {\n        this.ensureAvailable(1);\n        this._data.setUint8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * An alias for {@link IOBuffer#writeUint8}.\n     */\n    writeByte(value) {\n        return this.writeUint8(value);\n    }\n    /**\n     * Write all elements of `bytes` as uint8 values and move pointer forward by\n     * `bytes.length` bytes.\n     */\n    writeBytes(bytes) {\n        this.ensureAvailable(bytes.length);\n        for (let i = 0; i < bytes.length; i++) {\n            this._data.setUint8(this.offset++, bytes[i]);\n        }\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit signed integer and move pointer forward by 2\n     * bytes.\n     */\n    writeInt16(value) {\n        this.ensureAvailable(2);\n        this._data.setInt16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n     * bytes.\n     */\n    writeUint16(value) {\n        this.ensureAvailable(2);\n        this._data.setUint16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit signed integer and move pointer forward by 4\n     * bytes.\n     */\n    writeInt32(value) {\n        this.ensureAvailable(4);\n        this._data.setInt32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n     * bytes.\n     */\n    writeUint32(value) {\n        this.ensureAvailable(4);\n        this._data.setUint32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit floating number and move pointer forward by 4\n     * bytes.\n     */\n    writeFloat32(value) {\n        this.ensureAvailable(4);\n        this._data.setFloat32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit floating number and move pointer forward by 8\n     * bytes.\n     */\n    writeFloat64(value) {\n        this.ensureAvailable(8);\n        this._data.setFloat64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n     * and move pointer forward by 1 byte.\n     */\n    writeChar(str) {\n        return this.writeUint8(str.charCodeAt(0));\n    }\n    /**\n     * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n     * and move pointer forward by `str.length` bytes.\n     */\n    writeChars(str) {\n        for (let i = 0; i < str.length; i++) {\n            this.writeUint8(str.charCodeAt(i));\n        }\n        return this;\n    }\n    /**\n     * UTF-8 encode and write `str` to the current pointer offset and move pointer\n     * forward according to the encoded length.\n     */\n    writeUtf8(str) {\n        const bString = encode(str);\n        return this.writeChars(bString);\n    }\n    /**\n     * Export a Uint8Array view of the internal buffer.\n     * The view starts at the byte offset and its length\n     * is calculated to stop at the last written byte or the original length.\n     */\n    toArray() {\n        return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n    }\n    /**\n     * Update the last written byte offset\n     * @private\n     */\n    _updateLastWrittenByte() {\n        if (this.offset > this.lastWrittenByte) {\n            this.lastWrittenByte = this.offset;\n        }\n    }\n}\n//# sourceMappingURL=IOBuffer.js.map","'use strict';\n\n/**\n * Throws a non-valid NetCDF exception if the statement it's true\n * @ignore\n * @param {boolean} statement - Throws if true\n * @param {string} reason - Reason to throw\n */\nfunction notNetcdf(statement, reason) {\n  if (statement) {\n    throw new TypeError(`Not a valid NetCDF v3.x file: ${reason}`);\n  }\n}\n\n/**\n * Moves 1, 2, or 3 bytes to next 4-byte boundary\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n */\nfunction padding(buffer) {\n  if ((buffer.offset % 4) !== 0) {\n    buffer.skip(4 - (buffer.offset % 4));\n  }\n}\n\n\n/**\n * Reads the name\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {string} - Name\n */\nfunction readName(buffer) {\n  // Read name\n  var nameLength = buffer.readUint32();\n  var name = buffer.readChars(nameLength);\n\n  // validate name\n  // TODO\n\n  // Apply padding\n  padding(buffer);\n  return name;\n}\n\nmodule.exports.notNetcdf = notNetcdf;\nmodule.exports.padding = padding;\nmodule.exports.readName = readName;\n","'use strict';\n\nconst notNetcdf = require('./utils').notNetcdf;\n\nconst types = {\n  BYTE: 1,\n  CHAR: 2,\n  SHORT: 3,\n  INT: 4,\n  FLOAT: 5,\n  DOUBLE: 6\n};\n\n/**\n * Parse a number into their respective type\n * @ignore\n * @param {number} type - integer that represents the type\n * @return {string} - parsed value of the type\n */\nfunction num2str(type) {\n  switch (Number(type)) {\n    case types.BYTE:\n      return 'byte';\n    case types.CHAR:\n      return 'char';\n    case types.SHORT:\n      return 'short';\n    case types.INT:\n      return 'int';\n    case types.FLOAT:\n      return 'float';\n    case types.DOUBLE:\n      return 'double';\n      /* istanbul ignore next */\n    default:\n      return 'undefined';\n  }\n}\n\n/**\n * Parse a number type identifier to his size in bytes\n * @ignore\n * @param {number} type - integer that represents the type\n * @return {number} -size of the type\n */\nfunction num2bytes(type) {\n  switch (Number(type)) {\n    case types.BYTE:\n      return 1;\n    case types.CHAR:\n      return 1;\n    case types.SHORT:\n      return 2;\n    case types.INT:\n      return 4;\n    case types.FLOAT:\n      return 4;\n    case types.DOUBLE:\n      return 8;\n      /* istanbul ignore next */\n    default:\n      return -1;\n  }\n}\n\n/**\n * Reverse search of num2str\n * @ignore\n * @param {string} type - string that represents the type\n * @return {number} - parsed value of the type\n */\nfunction str2num(type) {\n  switch (String(type)) {\n    case 'byte':\n      return types.BYTE;\n    case 'char':\n      return types.CHAR;\n    case 'short':\n      return types.SHORT;\n    case 'int':\n      return types.INT;\n    case 'float':\n      return types.FLOAT;\n    case 'double':\n      return types.DOUBLE;\n      /* istanbul ignore next */\n    default:\n      return -1;\n  }\n}\n\n/**\n * Auxiliary function to read numeric data\n * @ignore\n * @param {number} size - Size of the element to read\n * @param {function} bufferReader - Function to read next value\n * @return {Array<number>|number}\n */\nfunction readNumber(size, bufferReader) {\n  if (size !== 1) {\n    var numbers = new Array(size);\n    for (var i = 0; i < size; i++) {\n      numbers[i] = bufferReader();\n    }\n    return numbers;\n  } else {\n    return bufferReader();\n  }\n}\n\n/**\n * Given a type and a size reads the next element\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} type - Type of the data to read\n * @param {number} size - Size of the element to read\n * @return {string|Array<number>|number}\n */\nfunction readType(buffer, type, size) {\n  switch (type) {\n    case types.BYTE:\n      return buffer.readBytes(size);\n    case types.CHAR:\n      return trimNull(buffer.readChars(size));\n    case types.SHORT:\n      return readNumber(size, buffer.readInt16.bind(buffer));\n    case types.INT:\n      return readNumber(size, buffer.readInt32.bind(buffer));\n    case types.FLOAT:\n      return readNumber(size, buffer.readFloat32.bind(buffer));\n    case types.DOUBLE:\n      return readNumber(size, buffer.readFloat64.bind(buffer));\n      /* istanbul ignore next */\n    default:\n      notNetcdf(true, `non valid type ${type}`);\n      return undefined;\n  }\n}\n\n/**\n * Removes null terminate value\n * @ignore\n * @param {string} value - String to trim\n * @return {string} - Trimmed string\n */\nfunction trimNull(value) {\n  if (value.charCodeAt(value.length - 1) === 0) {\n    return value.substring(0, value.length - 1);\n  }\n  return value;\n}\n\nmodule.exports = types;\nmodule.exports.num2str = num2str;\nmodule.exports.num2bytes = num2bytes;\nmodule.exports.str2num = str2num;\nmodule.exports.readType = readType;\n","'use strict';\n\nconst types = require('./types');\n\n// const STREAMING = 4294967295;\n\n/**\n * Read data for the given non-record variable\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {object} variable - Variable metadata\n * @return {Array} - Data of the element\n */\nfunction nonRecord(buffer, variable) {\n  // variable type\n  const type = types.str2num(variable.type);\n\n  // size of the data\n  var size = variable.size / types.num2bytes(type);\n\n  // iterates over the data\n  var data = new Array(size);\n  for (var i = 0; i < size; i++) {\n    data[i] = types.readType(buffer, type, 1);\n  }\n\n  return data;\n}\n\n/**\n * Read data for the given record variable\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {object} variable - Variable metadata\n * @param {object} recordDimension - Record dimension metadata\n * @return {Array} - Data of the element\n */\nfunction record(buffer, variable, recordDimension) {\n  // variable type\n  const type = types.str2num(variable.type);\n  const width = variable.size ? variable.size / types.num2bytes(type) : 1;\n\n  // size of the data\n  // TODO streaming data\n  var size = recordDimension.length;\n\n  // iterates over the data\n  var data = new Array(size);\n  const step = recordDimension.recordStep;\n\n  for (var i = 0; i < size; i++) {\n    var currentOffset = buffer.offset;\n    data[i] = types.readType(buffer, type, width);\n    buffer.seek(currentOffset + step);\n  }\n\n  return data;\n}\n\nmodule.exports.nonRecord = nonRecord;\nmodule.exports.record = record;\n","'use strict';\n\nconst utils = require('./utils');\nconst types = require('./types');\n\n// Grammar constants\nconst ZERO = 0;\nconst NC_DIMENSION = 10;\nconst NC_VARIABLE = 11;\nconst NC_ATTRIBUTE = 12;\n\n/**\n * Read the header of the file\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} version - Version of the file\n * @return {object} - Object with the fields:\n *  * `recordDimension`: Number with the length of record dimension\n *  * `dimensions`: List of dimensions\n *  * `globalAttributes`: List of global attributes\n *  * `variables`: List of variables\n */\nfunction header(buffer, version) {\n  // Length of record dimension\n  // sum of the varSize's of all the record variables.\n  var header = { recordDimension: { length: buffer.readUint32() } };\n\n  // Version\n  header.version = version;\n\n  // List of dimensions\n  var dimList = dimensionsList(buffer);\n  header.recordDimension.id = dimList.recordId; // id of the unlimited dimension\n  header.recordDimension.name = dimList.recordName; // name of the unlimited dimension\n  header.dimensions = dimList.dimensions;\n\n  // List of global attributes\n  header.globalAttributes = attributesList(buffer);\n\n  // List of variables\n  var variables = variablesList(buffer, dimList.recordId, version);\n  header.variables = variables.variables;\n  header.recordDimension.recordStep = variables.recordStep;\n\n  return header;\n}\n\nconst NC_UNLIMITED = 0;\n\n/**\n * List of dimensions\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {object} - Ojbect containing the following properties:\n *  * `dimensions` that is an array of dimension object:\n  *  * `name`: String with the name of the dimension\n  *  * `size`: Number with the size of the dimension dimensions: dimensions\n *  * `recordId`: the id of the dimension that has unlimited size or undefined,\n *  * `recordName`: name of the dimension that has unlimited size\n */\nfunction dimensionsList(buffer) {\n  var recordId, recordName;\n  const dimList = buffer.readUint32();\n  if (dimList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of dimensions');\n    return [];\n  } else {\n    utils.notNetcdf((dimList !== NC_DIMENSION), 'wrong tag for list of dimensions');\n\n    // Length of dimensions\n    const dimensionSize = buffer.readUint32();\n    var dimensions = new Array(dimensionSize);\n    for (var dim = 0; dim < dimensionSize; dim++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read dimension size\n      const size = buffer.readUint32();\n      if (size === NC_UNLIMITED) { // in netcdf 3 one field can be of size unlimmited\n        recordId = dim;\n        recordName = name;\n      }\n\n      dimensions[dim] = {\n        name: name,\n        size: size\n      };\n    }\n  }\n  return {\n    dimensions: dimensions,\n    recordId: recordId,\n    recordName: recordName\n  };\n}\n\n/**\n * List of attributes\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {Array<object>} - List of attributes with:\n *  * `name`: String with the name of the attribute\n *  * `type`: String with the type of the attribute\n *  * `value`: A number or string with the value of the attribute\n */\nfunction attributesList(buffer) {\n  const gAttList = buffer.readUint32();\n  if (gAttList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of attributes');\n    return [];\n  } else {\n    utils.notNetcdf((gAttList !== NC_ATTRIBUTE), 'wrong tag for list of attributes');\n\n    // Length of attributes\n    const attributeSize = buffer.readUint32();\n    var attributes = new Array(attributeSize);\n    for (var gAtt = 0; gAtt < attributeSize; gAtt++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read type\n      var type = buffer.readUint32();\n      utils.notNetcdf(((type < 1) || (type > 6)), `non valid type ${type}`);\n\n      // Read attribute\n      var size = buffer.readUint32();\n      var value = types.readType(buffer, type, size);\n\n      // Apply padding\n      utils.padding(buffer);\n\n      attributes[gAtt] = {\n        name: name,\n        type: types.num2str(type),\n        value: value\n      };\n    }\n  }\n  return attributes;\n}\n\n/**\n * List of variables\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} recordId - Id of the unlimited dimension (also called record dimension)\n *                            This value may be undefined if there is no unlimited dimension\n * @param {number} version - Version of the file\n * @return {object} - Number of recordStep and list of variables with:\n *  * `name`: String with the name of the variable\n *  * `dimensions`: Array with the dimension IDs of the variable\n *  * `attributes`: Array with the attributes of the variable\n *  * `type`: String with the type of the variable\n *  * `size`: Number with the size of the variable\n *  * `offset`: Number with the offset where of the variable begins\n *  * `record`: True if is a record variable, false otherwise (unlimited size)\n */\n\nfunction variablesList(buffer, recordId, version) {\n  const varList = buffer.readUint32();\n  var recordStep = 0;\n  if (varList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of variables');\n    return [];\n  } else {\n    utils.notNetcdf((varList !== NC_VARIABLE), 'wrong tag for list of variables');\n\n    // Length of variables\n    const variableSize = buffer.readUint32();\n    var variables = new Array(variableSize);\n    for (var v = 0; v < variableSize; v++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read dimensionality of the variable\n      const dimensionality = buffer.readUint32();\n\n      // Index into the list of dimensions\n      var dimensionsIds = new Array(dimensionality);\n      for (var dim = 0; dim < dimensionality; dim++) {\n        dimensionsIds[dim] = buffer.readUint32();\n      }\n\n      // Read variables size\n      var attributes = attributesList(buffer);\n\n      // Read type\n      var type = buffer.readUint32();\n      utils.notNetcdf(((type < 1) && (type > 6)), `non valid type ${type}`);\n\n      // Read variable size\n      // The 32-bit varSize field is not large enough to contain the size of variables that require\n      // more than 2^32 - 4 bytes, so 2^32 - 1 is used in the varSize field for such variables.\n      const varSize = buffer.readUint32();\n\n      // Read offset\n      var offset = buffer.readUint32();\n      if (version === 2) {\n        utils.notNetcdf((offset > 0), 'offsets larger than 4GB not supported');\n        offset = buffer.readUint32();\n      }\n\n      let record = false;\n      // Count amount of record variables\n      if ((typeof recordId !== 'undefined') && (dimensionsIds[0] === recordId)) {\n        recordStep += varSize;\n        record = true;\n      }\n      variables[v] = {\n        name: name,\n        dimensions: dimensionsIds,\n        attributes,\n        type: types.num2str(type),\n        size: varSize,\n        offset,\n        record\n      };\n    }\n  }\n\n  return {\n    variables: variables,\n    recordStep: recordStep\n  };\n}\n\nmodule.exports = header;\n","'use strict';\n\nfunction toString() {\n  let result = [];\n\n  result.push('DIMENSIONS');\n  for (let dimension of this.dimensions) {\n    result.push(`  ${dimension.name.padEnd(30)} = size: ${dimension.size}`);\n  }\n\n  result.push('');\n  result.push('GLOBAL ATTRIBUTES');\n  for (let attribute of this.globalAttributes) {\n    result.push(`  ${attribute.name.padEnd(30)} = ${attribute.value}`);\n  }\n\n  let variables = JSON.parse(JSON.stringify(this.variables));\n  result.push('');\n  result.push('VARIABLES:');\n  for (let variable of variables) {\n    variable.value = this.getDataVariable(variable);\n    let stringify = JSON.stringify(variable.value);\n    if (stringify.length > 50) stringify = stringify.substring(0, 50);\n    if (!isNaN(variable.value.length)) {\n      stringify += ` (length: ${variable.value.length})`;\n    }\n    result.push(`  ${variable.name.padEnd(30)} = ${stringify}`);\n  }\n  return result.join('\\n');\n}\n\nmodule.exports = toString;\n","'use strict';\n\nconst { IOBuffer } = require('iobuffer');\n\nconst utils = require('./utils');\nconst data = require('./data');\nconst readHeader = require('./header');\nconst toString = require('./toString');\n\n/**\n * Reads a NetCDF v3.x file\n * https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications.html\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @constructor\n */\nclass NetCDFReader {\n  constructor(data) {\n    const buffer = new IOBuffer(data);\n    buffer.setBigEndian();\n\n    // Validate that it's a NetCDF file\n    utils.notNetcdf(buffer.readChars(3) !== 'CDF', 'should start with CDF');\n\n    // Check the NetCDF format\n    const version = buffer.readByte();\n    utils.notNetcdf(version > 2, 'unknown version');\n\n    // Read the header\n    this.header = readHeader(buffer, version);\n    this.buffer = buffer;\n  }\n\n  /**\n   * @return {string} - Version for the NetCDF format\n   */\n  get version() {\n    if (this.header.version === 1) {\n      return 'classic format';\n    } else {\n      return '64-bit offset format';\n    }\n  }\n\n  /**\n   * @return {object} - Metadata for the record dimension\n   *  * `length`: Number of elements in the record dimension\n   *  * `id`: Id number in the list of dimensions for the record dimension\n   *  * `name`: String with the name of the record dimension\n   *  * `recordStep`: Number with the record variables step size\n   */\n  get recordDimension() {\n    return this.header.recordDimension;\n  }\n\n  /**\n   * @return {Array<object>} - List of dimensions with:\n   *  * `name`: String with the name of the dimension\n   *  * `size`: Number with the size of the dimension\n   */\n  get dimensions() {\n    return this.header.dimensions;\n  }\n\n  /**\n   * @return {Array<object>} - List of global attributes with:\n   *  * `name`: String with the name of the attribute\n   *  * `type`: String with the type of the attribute\n   *  * `value`: A number or string with the value of the attribute\n   */\n  get globalAttributes() {\n    return this.header.globalAttributes;\n  }\n\n  /**\n   * Returns the value of an attribute\n   * @param {string} attributeName\n   * @return {string} Value of the attributeName or null\n   */\n  getAttribute(attributeName) {\n    const attribute = this.globalAttributes.find(\n      (val) => val.name === attributeName\n    );\n    if (attribute) return attribute.value;\n    return null;\n  }\n\n  /**\n   * Returns the value of a variable as a string\n   * @param {string} variableName\n   * @return {string} Value of the variable as a string or null\n   */\n  getDataVariableAsString(variableName) {\n    const variable = this.getDataVariable(variableName);\n    if (variable) return variable.join('');\n    return null;\n  }\n\n  /**\n   * @return {Array<object>} - List of variables with:\n   *  * `name`: String with the name of the variable\n   *  * `dimensions`: Array with the dimension IDs of the variable\n   *  * `attributes`: Array with the attributes of the variable\n   *  * `type`: String with the type of the variable\n   *  * `size`: Number with the size of the variable\n   *  * `offset`: Number with the offset where of the variable begins\n   *  * `record`: True if is a record variable, false otherwise\n   */\n  get variables() {\n    return this.header.variables;\n  }\n\n  toString() {\n    return toString.call(this);\n  }\n\n  /**\n   * Retrieves the data for a given variable\n   * @param {string|object} variableName - Name of the variable to search or variable object\n   * @return {Array} - List with the variable values\n   */\n  getDataVariable(variableName) {\n    let variable;\n    if (typeof variableName === 'string') {\n      // search the variable\n      variable = this.header.variables.find(function (val) {\n        return val.name === variableName;\n      });\n    } else {\n      variable = variableName;\n    }\n\n    // throws if variable not found\n    utils.notNetcdf(\n      variable === undefined,\n      `variable not found: ${variableName}`\n    );\n\n    // go to the offset position\n    this.buffer.seek(variable.offset);\n\n    if (variable.record) {\n      // record variable case\n      return data.record(this.buffer, variable, this.header.recordDimension);\n    } else {\n      // non-record variable case\n      return data.nonRecord(this.buffer, variable);\n    }\n  }\n\n  /**\n   * Check if a dataVariable exists\n   * @param {string} variableName - Name of the variable to find\n   * @return {boolean}\n   */\n  dataVariableExists(variableName) {\n    const variable = this.header.variables.find(function (val) {\n      return val.name === variableName;\n    });\n    return variable !== undefined;\n  }\n\n  /**\n   * Check if an attribute exists\n   * @param {string} attributeName - Name of the attribute to find\n   * @return {boolean}\n   */\n  attributeExists(attributeName) {\n    const attribute = this.globalAttributes.find(\n      (val) => val.name === attributeName\n    );\n    return attribute !== undefined;\n  }\n}\n\nmodule.exports = NetCDFReader;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      administrative_comments        = 1% CH2Cl2\n      dataset_origin                 = Santa Clara, CA\n      netcdf_file_date_time_stamp    = 20161012052159+0200\n      experiment_title               = P071 Essence super BP\n      experiment_date_time_stamp     = 20070923040800+0200\n      operator_name                  = SC\n      external_file_ref_0            = FIRE_RTL.M\n      experiment_type                = Centroided Mass Spectrum\n      number_of_times_processed      = 1\n      number_of_times_calibrated     = 0\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Capillary Direct\n      test_ionization_mode           = Electron Impact\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Float\n      raw_data_time_format           = Short\n      raw_data_intensity_format      = Float\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6402)\n      scan_acquisition_time          = [5.25,5.84,6.428999999999999,7.019,7.609,8.199,8.7 (length: 6401)\n      scan_duration                  = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      resolution                     = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      actual_scan_number             = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 (length: 6401)\n      total_intensity                = [3134,3157,3085,3134,3093,3113,3061,3057,3030,3166 (length: 6401)\n      mass_range_min                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 6401)\n      mass_range_max                 = [206.89999389648438,206.89999389648438,207,207.100 (length: 6401)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      scan_index                     = [0,11,22,33,44,55,66,76,88,99,111,122,134,145,156, (length: 6401)\n      point_count                    = [11,11,11,11,11,11,10,12,11,12,11,12,11,11,11,11,1 (length: 6401)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 6401)\n      mass_values                    = [16,17,18.100000381469727,28,32,35,36,38,40,44.099 (length: 157201)\n      time_values                    = [9.969209968386869e+36,9.969209968386869e+36,9.969 (length: 157201)\n      intensity_values               = [37,293,1243,737,420,45,196,72,22,35,34,28,299,123 (length: 157201)\n      instrument_name                = [\"G\",\"a\",\"s\",\" \",\"C\",\"h\",\"r\",\"o\",\"m\",\"a\",\"t\",\"o\",\" (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_model               = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_serial_no           = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_sw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_fw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_os_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_app_version         = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction agilentGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  const pointCount = reader.getDataVariable('point_count');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n\n  let ms = new Array(pointCount.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = pointCount[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = agilentGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      netcdf_file_date_time_stamp    = 20170428032023+0000\n      experiment_title               = MS51762A16\n    11829FC03_3__60_40\n      experiment_date_time_stamp     = 20160930202145-0001\n      operator_name                  = Begemann/Eikenberg/Roettger\n      pre_experiment_program_name    = otofControl 3.4.16.0\n      post_experiment_program_name   = Bruker Compass DataAnalysis 4.2\n      source_file_reference          = X:\\2016\\MS5\\1700\\MS51762A16.d\n      source_file_format             = Bruker Daltonics Data File\n      experiment_type                = Centroided Mass Spectrum\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Direct Inlet Probe\n      test_ionization_mode           = Electrospray Ionization\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Proportional Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Double\n      raw_data_time_format           = Float\n      raw_data_intensity_format      = Float\n      units                          = Seconds\n      scale_factor                   = 1\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4514)\n      scan_acquisition_time          = [0.329,0.73,1.132,1.534,1.936,2.337,2.739,3.14,3.5 (length: 4513)\n      scan_duration                  = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      resolution                     = [106.6623112889557,110.7855343519544,104.407495112 (length: 4513)\n      actual_scan_number             = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34, (length: 4513)\n      total_intensity                = [5297.4945068359375,6172.123912811279,5934.7557412 (length: 4513)\n      mass_range_min                 = [49.99999997418507,49.99999997418507,49.9999999741 (length: 4513)\n      mass_range_max                 = [1599.9999564432276,1599.9999564432276,1599.999956 (length: 4513)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      scan_index                     = [0,60,128,195,265,324,399,472,542,596,671,738,803, (length: 4513)\n      point_count                    = [60,68,67,70,59,75,73,70,54,75,67,65,64,73,56,69,6 (length: 4513)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 4513)\n      mass_values                    = [51.53516375878996,95.32974890044508,106.334477231 (length: 1176507)\n      intensity_values               = [76.99999237060547,80,90,78.99799346923828,80.9352 (length: 1176507)\n      instrument_name                = [\"m\",\"i\",\"c\",\"r\",\"O\",\"T\",\"O\",\"F\",\"\",\" \",\" \",\" \",\"  (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\"B\",\"r\",\"u\",\"k\",\"e\",\"r\",\" \",\"D\",\"a\",\"l\",\"t\",\"o\",\" (length: 32)\n      instrument_model               = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_serial_no           = [\"2\",\"1\",\"3\",\"7\",\"5\",\"0\",\".\",\"1\",\"0\",\"3\",\"5\",\"9\",\" (length: 32)\n      instrument_sw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_fw_version          = [\"\",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\"  (length: 32)\n      instrument_os_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_app_version         = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction finniganGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = finniganGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      aia_template_revision          = 1.0\n      netcdf_revision                = 2.3\n      languages                      = English only\n      injection_date_time_stamp      = 20181030174305+0000\n      HP_injection_time              = 30-Oct-18, 17:43:05\n      experiment_title               = SequenceLine: 1  Inj: 1\n      operator_name                  = SYSTEM\n      separation_experiment_type     = liquid chromatography\n      source_file_reference          = C:\\CHEM32\\1\\DATA\\MINGMING\\MW-1-MEO-I IC-90 2018-10-30 17-42-13\\MW-2-6-6 IC 90.D\n      sample_name                    = MW-2-6-6 IC 90\n      sample_id                      =\n      detector_unit                  = mAU\n      detection_method_name          = POS 3 IC 90-10 31 MIN.M\n      detector_name                  = DAD1 A, Sig=254,4 Ref=360,100\n      retention_unit                 = seconds\n\n   VARIABLES:\n      detector_maximum_value         = [130.9263458251953] (length: 1)\n      detector_minimum_value         = [-0.1758841574192047] (length: 1)\n      actual_run_time_length         = [1860] (length: 1)\n      actual_delay_time              = [0.012000000104308128] (length: 1)\n      actual_sampling_interval       = [0.4000000059604645] (length: 1)\n      ordinate_values                = [-0.07588416337966919,-0.07525086402893066,-0.0740 (length: 4651)\n      peak_retention_time            = [196.0651397705078,332.5663757324219,527.549865722 (length: 8)\n      peak_start_time                = [186.81199645996094,239.21200561523438,502.4119873 (length: 8)\n      peak_end_time                  = [220.81201171875,471.5176696777344,572.47869873046 (length: 8)\n      peak_width                     = [4.974428176879883,62.90694808959961,11.9328641891 (length: 8)\n      peak_area                      = [556.7650146484375,419.825439453125,66.56610107421 (length: 8)\n      peak_area_percent              = [7.0321502685546875,5.302552223205566,0.8407546877 (length: 8)\n      peak_height                    = [100.07515716552734,5.1860527992248535,4.827196121 (length: 8)\n      peak_height_percent            = [29.76352310180664,1.5423927307128906,1.4356645345 (length: 8)\n      peak_asymmetry                 = [1.4555920362472534,0.8351489901542664,1.707817316 (length: 8)\n      baseline_start_time            = [186.81199645996094,239.21200561523438,502.4119873 (length: 8)\n      baseline_start_value           = [1.9561424255371094,0.9857341647148132,1.127734780 (length: 8)\n      baseline_stop_time             = [220.81201171875,471.5176696777344,572.47869873046 (length: 8)\n      baseline_stop_value            = [1.1907591819763184,1.10896897315979,1.18347382545 (length: 8)\n      peak_start_detection_code      = [\"B\",\"\",\"B\",\"\",\"B\",\"\",\"B\",\"\",\"V\",\"\",\"B\",\"\",\"B\",\"\", (length: 16)\n      peak_stop_detection_code       = [\"B\",\"\",\"B\",\"\",\"B\",\"\",\"V\",\"\",\"B\",\"\",\"B\",\"\",\"B\",\"\", (length: 16)\n      migration_time                 = [196.0651397705078,332.5663757324219,527.549865722 (length: 8)\n      peak_area_square_root          = [23.595869064331055,20.489643096923828,8.158804893 (length: 8)\n      manually_reintegrated_peaks    = [0,0,0,0,0,0,0,0] (length: 8)\n*/\n\nfunction agilentHPLC(reader) {\n  const intensities = reader.getDataVariable('ordinate_values');\n  const numberPoints = intensities.length;\n  const detector = reader.getAttribute('detector_name');\n  let channel;\n  if (detector.match(/dad/i)) {\n    channel = `uv${Number(detector.replace(/.*Sig=([0-9]+).*/, '$1'))}`;\n  } else if (detector.match(/tic/i)) {\n    channel = 'tic';\n  } else {\n    channel = 'unknown';\n  }\n  const delayTime = reader.getDataVariable('actual_delay_time')[0];\n  const runtimeLength = reader.getDataVariable('actual_run_time_length')[0];\n  let samplingInterval;\n  if (reader.dataVariableExists('actual_sampling_interval')) {\n    samplingInterval = reader.getDataVariable('actual_sampling_interval')[0];\n\n    if (\n      Math.abs(delayTime + samplingInterval * numberPoints - runtimeLength) > 3\n    ) {\n      throw new Error(\n        'The expected last time does not correspond to the runtimeLength',\n      );\n    }\n  } else {\n    samplingInterval = (runtimeLength - delayTime) / numberPoints;\n  }\n\n  let times = [];\n  let time = delayTime;\n  for (let i = 0; i < numberPoints; i++) {\n    times.push(time);\n    time += samplingInterval;\n  }\n\n  return {\n    times,\n    series: [\n      {\n        name: channel,\n        dimension: 1,\n        data: intensities,\n      },\n    ],\n  };\n}\n\nmodule.exports = agilentHPLC;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      administrative_comments        =\n      dataset_owner                  =\n      experiment_title               =\n      experiment_date_time_stamp     = 20150902041002+0100\n      netcdf_file_date_time_stamp    = 20151026063419+0000\n      experiment_type                = Centroided Mass Spectrum\n      netcdf_revision                = 2.3.2\n      operator_name                  = DSQ\n      source_file_reference          = G:\\FCO\\FCO_CIO\\K2\\MP2013\\T1 IL database 2013\\9. IL Data Entry\\12_HU_HIFS\\IL database\\RAW files\\Lukoil-Disel-150901.RAW\n      source_file_date_time_stamp    = 20150902041002+0100\n      source_file_format             = Finnigan\n      languages                      = English\n      external_file_ref_0            =\n      instrument_number              = 1\n      sample_prep_comments           =\n      sample_comments                = Lukoil Disel 0,5 % CS2 1 % inkt\n      test_separation_type           =\n      test_ms_inlet                  =\n      test_ionization_mode           =\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Conversion Dynode Electron Multiplier\n      test_scan_function             = Mass Scan\n      test_scan_direction            =\n      test_scan_law                  = Linear\n      number_of_scans                = 11832\n      raw_data_mass_format           = Double\n      raw_data_intensity_format      = Long\n      actual_run_time                = 3519.6410000000005\n      actual_delay_time              = 82.328\n      global_mass_min                = 0\n      global_mass_max                = 450\n      calibrated_mass_min            = 0\n      calibrated_mass_max            = 0\n      mass_axis_label                = M/Z\n      intensity_axis_label           = Abundance\n\n    VARIABLES:\n      error_log                      = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 64)\n      instrument_name                = [\"L\",\"C\",\"Q\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_id                  = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_mfr                 = [\"F\",\"i\",\"n\",\"n\",\"i\",\"g\",\"a\",\"n\",\"-\",\"M\",\"A\",\"T\",\" (length: 32)\n      instrument_model               = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_sw_version          = [\"3\",\".\",\"1\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_os_version          = [\"W\",\"i\",\"n\",\"d\",\"o\",\"w\",\"s\",\" \",\"V\",\"i\",\"s\",\"t\",\" (length: 32)\n      scan_index                     = [0,34,74,113,145,177,211,239,267,299,341,374,400,4 (length: 11832)\n      point_count                    = [34,40,39,32,32,34,28,28,32,42,33,26,29,34,31,28,2 (length: 11832)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      a_d_sampling_rate              = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000 (length: 11832)\n      scan_acquisition_time          = [82.328,82.625,82.76599999999999,83.063,83.188,83. (length: 11832)\n      scan_duration                  = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      mass_range_min                 = [35,16,35,16,35,16,35,16,35,16,35,16,35,16,35,16,3 (length: 11832)\n      mass_range_max                 = [450,150,450,150,450,150,450,150,450,150,450,150,4 (length: 11832)\n      scan_type                      = [65537,65537,65537,65537,65537,65537,65537,65537,6 (length: 11832)\n      resolution                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      total_intensity                = [375220,1054339,228245,576718,58280,288629,29815,1 (length: 11832)\n      mass_values                    = [36.3023681640625,36.98402404785156,38.08326721191 (length: 1366002)\n      intensity_values               = [335,287,331,266,2423,448,9009,833,261,661,4003,21 (length: 1366002)\n\n*/\n\nfunction finniganGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = finniganGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      administrative_comments        =\n      netcdf_file_date_time_stamp    = 20180913165502+0000\n      experiment_title               =\n      experiment_date_time_stamp     = 20180910165319+0000\n      operator_name                  = Admin\n      source_file_reference          = D:\\GCMSsolution\\Data\\Chromatograms\\Cato\\bormann_CB000_Test2.qgd\n      source_file_format             = Shimadzu GCMSsolution\n      source_file_date_time_stamp    = 20180910165319+0000\n      experiment_type                = Centroided Mass Spectrum\n      sample_internal_id             =\n      sample_comments                =\n      sample_state                   = Other State\n      test_separation_type           = Gas-Solid Chromatography\n      test_ms_inlet                  = Other Probe\n      test_ionization_mode           = Electron Impact\n      test_ionization_polarity       = Positive Polarity\n      test_electron_energy           = 70\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Quadratic\n      test_scan_time                 = 0\n      raw_data_mass_format           = Double\n      raw_data_time_format           = Long\n      raw_data_intensity_format      = Long\n      units                          = Seconds\n      scale_factor                   = 1\n      long_name                      = Seconds\n      starting_scan_number           = 0\n      actual_run_time_length         = 1289\n      actual_delay_time              = 0\n      raw_data_uniform_sampling_flag = 1\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      a_d_coaddition_factor          = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      scan_acquisition_time          = [144,144.3,144.6,144.9,145.2,145.5,145.8,146.1,146 (length: 3820)\n      scan_duration                  = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      inter_scan_time                = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      resolution                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      actual_scan_number             = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2 (length: 3820)\n      total_intensity                = [63566,61702,61873,59738,58321,59001,59364,59871,6 (length: 3820)\n      mass_range_min                 = [35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,3 (length: 3820)\n      mass_range_max                 = [500,500,500,500,500,500,500,500,500,500,500,500,5 (length: 3820)\n      time_range_min                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      time_range_max                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      scan_index                     = [0,466,932,1398,1863,2329,2795,3260,3726,4192,4658 (length: 3820)\n      point_count                    = [466,466,466,465,466,466,465,466,466,466,466,466,4 (length: 3820)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      mass_values                    = [35,36,37.1,38.1,39.1,40.15,41.1,42.1,43.15,44.1,4 (length: 1779397)\n      intensity_values               = [26,111,412,785,3098,485,5772,7391,11213,711,687,1 (length: 1779397)\n      instrument_name                = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\"S\",\"h\",\"i\",\"m\",\"a\",\"d\",\"z\",\"u\",\" \",\"C\",\"o\",\"r\",\" (length: 32)\n      instrument_model               = [\"G\",\"C\",\"M\",\"S\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_serial_no           = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_sw_version          = [\"4\",\".\",\"2\",\"0\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_fw_version          = [\"G\",\"C\",\"M\",\"S\",\"-\",\"Q\",\"P\",\"2\",\"0\",\"1\",\"0\",\"1\",\" (length: 32)\n      instrument_os_version          = [\"W\",\"i\",\"n\",\"d\",\"o\",\"w\",\"s\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_app_version         = [\"G\",\"C\",\"M\",\"S\",\"s\",\"o\",\"l\",\"u\",\"t\",\"i\",\"o\",\"n\",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction shimadzuGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = shimadzuGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    DIMENSIONS\n      point_number                   = size: 0\n      scan_number                    = size: 60\n      error_number                   = size: 1\n      _64_byte_string                = size: 64\n\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 4.2\n      languages                      = English\n      administrative_comments        =\n      netcdf_file_date_time_stamp    = 202003031432433600000\n      experiment_date_time_stamp     = 202003031432433600000\n      source_file_reference          = JC-012_cleavage test_Scan1_is1.datx 2020.03.03 14:32:43\n      source_file_format             = Advion ExpressIon Compact Mass Spectrometer Data System\n      source_file_date_time_stamp    = 202003031432433600000\n      experiment_title               =\n      experiment_type                = Continuum Mass Spectrum\n      test_ionization_mode           = Electrospray Ionization\n      test_ionization_polarity       = Positive Polarity\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Direct Inlet Probe\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Float\n      raw_data_time_format           = Double\n      raw_data_intensity_format      = Float\n      units                          = Seconds\n      global_mass_min                = 9.949999809265137\n      global_mass_max                = 1199.75\n      actual_run_time_length         = 133.46099853515625\n      starting_scan_number           = 1\n      actual_delay_time              = 0\n      raw_data_uniform_sampling_flag = 0\n\n    VARIABLES:\n      error_log                      = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 64)\n      scan_index                     = [0,3096,6282,9865,13409,16765,20281,23603,27099,30 (length: 60)\n      point_count                    = [3096,3186,3583,3544,3356,3516,3322,3496,3351,3031 (length: 60)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 60)\n      actual_scan_number             = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 (length: 60)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      mass_range_min                 = [9.949999809265137,9.949999809265137,9.94999980926 (length: 60)\n      mass_range_max                 = [164.6999969482422,169.1999969482422,189.050003051 (length: 60)\n      scan_acquisition_time          = [0.08100000023841858,2.3420000076293945,4.60300016 (length: 60)\n      scan_duration                  = [2.261000007390976,2.261000156402588,2.25999975204 (length: 60)\n      resolution                     = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      total_intensity                = [4498210816,4468554240,5001547264,5405233152,50000 (length: 60)\n      mass_values                    = [9.949999809265137,83.5,83.55000305175781,83.59999 (length: 199393)\n      intensity_values               = [0,818716,462148,0,735558,952901,0,165241,421829,0 (length: 199393)\n*/\n\nfunction advionGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = advionGCMS;\n","'use strict';\n\nfunction aiaTemplate(reader) {\n  let time = [];\n  const tic = reader.getDataVariable('ordinate_values');\n\n  // variables to get the time\n  const delayTime = Number(reader.getDataVariable('actual_delay_time'));\n  const interval = Number(reader.getDataVariable('actual_sampling_interval'));\n\n  let currentTime = delayTime;\n  for (let i = 0; i < tic.length; i++) {\n    time.push(currentTime);\n    currentTime += interval;\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n    ],\n  };\n}\n\nmodule.exports = aiaTemplate;\n","'use strict';\n\nconst NetCDFReader = require('netcdfjs');\n\nconst agilentGCMS = require('./agilentGCMS');\nconst brukerGCMS = require('./brukerGCMS');\nconst agilentHPLC = require('./agilentHPLC');\nconst finniganGCMS = require('./finniganGCMS');\nconst shimadzuGCMS = require('./shimadzuGCMS');\nconst advionGCMS = require('./advionGCMS');\nconst aiaTemplate = require('./aiaTemplate');\n\n/**\n * Reads a NetCDF file and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @param {object} [options={}]\n * @param {boolean} [options.meta] - add meta information\n * @param {boolean} [options.variables] -add variables information\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction netcdfGcms(data, options = {}) {\n  let reader = new NetCDFReader(data);\n  const globalAttributes = reader.globalAttributes;\n\n  let instrument_mfr =\n    reader.dataVariableExists('instrument_mfr') &&\n    reader.getDataVariableAsString('instrument_mfr');\n  let dataset_origin = reader.attributeExists('dataset_origin');\n  let mass_values = reader.dataVariableExists('mass_values');\n  let detector_name = reader.getAttribute('detector_name');\n  let aia_template_revision = reader.attributeExists('aia_template_revision');\n  let source_file_format = reader.getAttribute('source_file_format');\n\n  let ans;\n\n  if (mass_values && dataset_origin) {\n    ans = agilentGCMS(reader);\n  } else if (\n    mass_values &&\n    instrument_mfr &&\n    instrument_mfr.match(/finnigan/i)\n  ) {\n    ans = finniganGCMS(reader);\n  } else if (mass_values && instrument_mfr && instrument_mfr.match(/bruker/i)) {\n    ans = brukerGCMS(reader);\n  } else if (mass_values && instrument_mfr && instrument_mfr.match(/bruker/i)) {\n    ans = brukerGCMS(reader);\n  } else if (\n    mass_values &&\n    source_file_format &&\n    source_file_format.match(/shimadzu/i)\n  ) {\n    ans = shimadzuGCMS(reader);\n  } else if (\n    mass_values &&\n    source_file_format &&\n    source_file_format.match(/advion/i)\n  ) {\n    ans = advionGCMS(reader);\n  } else if (detector_name && detector_name.match(/(dad|tic)/i)) {\n    // diode array agilent HPLC\n    ans = agilentHPLC(reader);\n  } else if (aia_template_revision) {\n    ans = aiaTemplate(reader);\n  } else {\n    throw new TypeError('Unknown file format');\n  }\n\n  if (options.meta) {\n    ans.meta = addMeta(globalAttributes);\n  }\n\n  if (options.variables) {\n    ans.variables = addVariables(reader);\n  }\n\n  return ans;\n}\n\n/**\n * Reads a NetCDF file with Agilent GCMS format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromAgilentGCMS(data) {\n  return agilentGCMS(new NetCDFReader(data));\n}\n\n/**\n * Reads a NetCDF file with Agilent HPLC format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromAgilentHPLC(data) {\n  return agilentHPLC(new NetCDFReader(data));\n}\n\n/**\n * Reads a NetCDF file with Finnigan format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromFinniganGCMS(data) {\n  return finniganGCMS(new NetCDFReader(data));\n}\n\nfunction fromAiaTemplate(data) {\n  return aiaTemplate(new NetCDFReader(data));\n}\n\nfunction addMeta(globalAttributes) {\n  let ans = {};\n  for (const item of globalAttributes) {\n    ans[item.name] = item.value;\n  }\n  return ans;\n}\n\nfunction addVariables(reader) {\n  for (let variable of reader.variables) {\n    variable.value = reader.getDataVariable(variable);\n  }\n  return reader.variables;\n}\n\nmodule.exports = netcdfGcms;\nmodule.exports.fromAgilentGCMS = fromAgilentGCMS;\nmodule.exports.fromAgilentHPLC = fromAgilentHPLC;\nmodule.exports.fromFinniganGCMS = fromFinniganGCMS;\nmodule.exports.fromAiaTemplate = fromAiaTemplate;\n","(function (w) {\n  \"use strict\";\n\n  function findBest(atobNative) {\n    // normal window\n    if ('function' === typeof atobNative) { return atobNative; }\n\n\n    // browserify (web worker)\n    if ('function' === typeof Buffer) {\n      return function atobBrowserify(a) {\n        //!! Deliberately using an API that's deprecated in node.js because\n        //!! this file is for browsers and we expect them to cope with it.\n        //!! Discussion: github.com/node-browser-compat/atob/pull/9\n        return new Buffer(a, 'base64').toString('binary');\n      };\n    }\n\n    // ios web worker with base64js\n    if ('object' === typeof w.base64js) {\n      // bufferToBinaryString\n      // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50\n      return function atobWebWorker_iOS(a) {\n        var buf = w.base64js.b64ToByteArray(a);\n        return Array.prototype.map.call(buf, function (ch) {\n          return String.fromCharCode(ch);\n        }).join('');\n      };\n    }\n\n\t\treturn function () {\n\t\t\t// ios web worker without base64js\n\t\t\tthrow new Error(\"You're probably in an old browser or an iOS webworker.\" +\n\t\t\t\t\" It might help to include beatgammit's base64-js.\");\n    };\n  }\n\n  var atobBest = findBest(w.atob);\n  w.atob = atobBest;\n\n  if ((typeof module === 'object') && module && module.exports) {\n    module.exports = atobBest;\n  }\n}(window));\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/**\n * 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    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/**\n * Dynamically type a string\n * @param {string} value String to dynamically type\n * @returns {boolean|string|number}\n */\nexport function parseString(value) {\n  if (value.length === 4 || value.length === 5) {\n    let lowercase = value.toLowerCase();\n\n    if (lowercase === 'true') return true;\n    if (lowercase === 'false') return false;\n  }\n  let number = Number(value);\n  if (number === 0 && !value.includes('0')) {\n    return value;\n  }\n  if (!Number.isNaN(number)) return number;\n  return value;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\n\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\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\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(\n        spectrum[existingGCMSFields[j]],\n      );\n    }\n    if (spectrum.data) {\n      chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n    }\n  }\n  result.chromatogram = chromatogram;\n}\n\nexport function isMSField(canonicDataLabel) {\n  return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\n\nexport function convertMSFieldToLabel(value) {\n  return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n","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","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\n  let yFactor = spectrum.yFactor;\n  let deltaX = spectrum.deltaX;\n\n  spectrum.isXYdata = true;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let currentX = spectrum.firstX;\n  let currentY = spectrum.firstY;\n\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    } else {\n      if (endLine) break;\n    }\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) ascii = 13;\n    else 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    } 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        } else {\n          currentValue *= 10;\n          currentValue += ascii - 48;\n        }\n      } else if (ascii === 44 || ascii === 46) {\n        // a \",\" or \".\"\n        inValue = true;\n        decimalPosition++;\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) skipFirstValue = true;\n          } else {\n            // need to deal with duplicate and differences\n            if (skipFirstValue) {\n              skipFirstValue = false;\n            } else {\n              if (isDifference) {\n                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                isLastDifference = true;\n                isDifference = false;\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                } 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\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        } 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        } 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        } else if (ascii > 82 && ascii < 91) {\n          inValue = true;\n          isDuplicate = true;\n          currentValue = ascii - 82;\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        } 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        } 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        } 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        } 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 (\n            (ascii2 >= 48 && ascii2 <= 57) ||\n            ascii2 === 44 ||\n            ascii2 === 46\n          ) {\n            inValue = true;\n            if (!newLine) isLastDifference = false;\n            isNegative = true;\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","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\n\nexport default function parsePeakTable(spectrum, value, result) {\n  spectrum.isPeaktable = true;\n\n  if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n    parseXY(spectrum, value, result);\n  } else {\n    parseXYZ(spectrum, value, result);\n  }\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}\n\nfunction parseXY(spectrum, value, result) {\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\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    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\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\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\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    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n","export default function parseXYA(spectrum, value) {\n  let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n\n  spectrum.isXYAdata = true;\n  let values;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\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","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\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 isArray from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isArray(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 default median;\n","import getMedian from 'ml-array-median';\n\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\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) minZ = value;\n      if (value > maxZ) maxZ = value;\n    }\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\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  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) row[i] = -row[i];\n    }\n    medians.push(getMedian(row));\n  }\n  const median = getMedian(medians);\n\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","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\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\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\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 =\n      (maxZ - options.noiseMultiplier * noise) *\n      Math.exp((level >> 1) - options.nbContourLevels);\n    if (side === 0) {\n      lineZValue = factor + options.noiseMultiplier * noise;\n    } else {\n      lineZValue = 0 - factor - options.noiseMultiplier * noise;\n    }\n    let lines = [];\n    contourLevel.zValue = lineZValue;\n    contourLevel.lines = lines;\n\n    if (lineZValue <= minZ || lineZValue >= maxZ) continue;\n\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\n        isOver0 = povarHeight0 > lineZValue;\n        isOver1 = povarHeight1 > lineZValue;\n        isOver2 = povarHeight2 > lineZValue;\n        isOver3 = povarHeight3 > lineZValue;\n\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\n  return {\n    minX: zData.minX,\n    maxX: zData.maxX,\n    minY: zData.minY,\n    maxY: zData.maxY,\n    segments: contourLevels,\n  };\n}\n","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\n\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","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\n// TODO: #13 can we have a better source and more digits ? @jwist\nexport const gyromagneticRatio = {\n    '1H': 267.52218744e6,\n    '2H': 41.065e6,\n    '3H': 285.3508e6,\n    '3He': -203.789e6,\n    '7Li': 103.962e6,\n    '13C': 67.28284e6,\n    '14N': 19.331e6,\n    '15N': -27.116e6,\n    '17O': -36.264e6,\n    '19F': 251.662e6,\n    '23Na': 70.761e6,\n    '27Al': 69.763e6,\n    '29Si': -53.19e6,\n    '31P': 108.291e6,\n    '57Fe': 8.681e6,\n    '63Cu': 71.118e6,\n    '67Zn': 16.767e6,\n    '129Xe': -73.997e6,\n};\n//# sourceMappingURL=gyromagneticRatio.js.map","import isArray from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport default max;\n","import isArray from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport default min;\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n  checkNonEmpty,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (Array.isArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","import isArray from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","/**\n * Apply Savitzky Golay algorithm\n * @param {array} [ys] Array of y values\n * @param {array|number} [xs] Array of X or deltaX\n * @param {object} [options={}]\n * @param {number} [options.windowSize=9]\n * @param {number} [options.derivative=0]\n * @param {number} [options.polynomial=3]\n * @return {array} Array containing the new ys (same length)\n */\n\nexport default function SavitzkyGolay(ys, xs, options = {}) {\n  let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n\n  if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (windowSize > ys.length) {\n    throw new RangeError(\n      `Window size is higher than the data length ${windowSize}>${ys.length}`,\n    );\n  }\n  if (derivative < 0 || !Number.isInteger(derivative)) {\n    throw new RangeError('Derivative should be a positive integer');\n  }\n  if (polynomial < 1 || !Number.isInteger(polynomial)) {\n    throw new RangeError('Polynomial should be a positive integer');\n  }\n  if (polynomial >= 6) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'You should not use polynomial grade higher than 5 if you are' +\n        ' not sure that your data arises from such a model. Possible polynomial oscillation problems',\n    );\n  }\n\n  let half = Math.floor(windowSize / 2);\n  let np = ys.length;\n  let ans = new Array(np);\n  let weights = fullWeights(windowSize, polynomial, derivative);\n  let hs = 0;\n  let constantH = true;\n  if (Array.isArray(xs)) {\n    constantH = false;\n  } else {\n    hs = Math.pow(xs, derivative);\n  }\n\n  //For the borders\n  for (let i = 0; i < half; i++) {\n    let wg1 = weights[half - i - 1];\n    let wg2 = weights[half + i + 1];\n    let d1 = 0;\n    let d2 = 0;\n    for (let l = 0; l < windowSize; l++) {\n      d1 += wg1[l] * ys[l];\n      d2 += wg2[l] * ys[np - windowSize + l];\n    }\n    if (constantH) {\n      ans[half - i - 1] = d1 / hs;\n      ans[np - half + i] = d2 / hs;\n    } else {\n      hs = getHs(xs, half - i - 1, half, derivative);\n      ans[half - i - 1] = d1 / hs;\n      hs = getHs(xs, np - half + i, half, derivative);\n      ans[np - half + i] = d2 / hs;\n    }\n  }\n\n  //For the internal points\n  let wg = weights[half];\n  for (let i = windowSize; i <= np; i++) {\n    let d = 0;\n    for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];\n    if (!constantH) hs = getHs(xs, i - half - 1, half, derivative);\n    ans[i - half - 1] = d / hs;\n  }\n  return ans;\n}\n\nfunction getHs(h, center, half, derivative) {\n  let hs = 0;\n  let count = 0;\n  for (let i = center - half; i < center + half; i++) {\n    if (i >= 0 && i < h.length - 1) {\n      hs += h[i + 1] - h[i];\n      count++;\n    }\n  }\n  return Math.pow(hs / count, derivative);\n}\n\nfunction GramPoly(i, m, k, s) {\n  let Grampoly = 0;\n  if (k > 0) {\n    Grampoly =\n      ((4 * k - 2) / (k * (2 * m - k + 1))) *\n        (i * GramPoly(i, m, k - 1, s) + s * GramPoly(i, m, k - 1, s - 1)) -\n      (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n        GramPoly(i, m, k - 2, s);\n  } else {\n    if (k === 0 && s === 0) {\n      Grampoly = 1;\n    } else {\n      Grampoly = 0;\n    }\n  }\n  return Grampoly;\n}\n\nfunction GenFact(a, b) {\n  let gf = 1;\n  if (a >= b) {\n    for (let j = a - b + 1; j <= a; j++) {\n      gf *= j;\n    }\n  }\n  return gf;\n}\n\nfunction Weight(i, t, m, n, s) {\n  let sum = 0;\n  for (let k = 0; k <= n; k++) {\n    //console.log(k);\n    sum +=\n      (2 * k + 1) *\n      (GenFact(2 * m, k) / GenFact(2 * m + k + 1, k + 1)) *\n      GramPoly(i, m, k, 0) *\n      GramPoly(t, m, k, s);\n  }\n  return sum;\n}\n\n/**\n *\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n  let weights = new Array(m);\n  let np = Math.floor(m / 2);\n  for (let t = -np; t <= np; t++) {\n    weights[t + np] = new Array(m);\n    for (let j = -np; j <= np; j++) {\n      weights[t + np][j + np] = Weight(j, t, np, n, s);\n    }\n  }\n  return weights;\n}\n\n/*function entropy(data,h,options){\n    var trend = SavitzkyGolay(data,h,trendOptions);\n    var copy = new Array(data.length);\n    var sum = 0;\n    var max = 0;\n    for(var i=0;i<data.length;i++){\n        copy[i] = data[i]-trend[i];\n    }\n\n    sum/=data.length;\n    console.log(sum+\" \"+max);\n    console.log(stat.array.standardDeviation(copy));\n    console.log(Math.abs(stat.array.mean(copy))/stat.array.standardDeviation(copy));\n    return sum;\n\n}\n\n\n\nfunction guessWindowSize(data, h){\n    console.log(\"entropy \"+entropy(data,h,trendOptions));\n    return 5;\n}\n*/\n","import isArray from 'is-any-array';\n\nexport default function checkOptions(data, parameterizedFunction, options) {\n  let {\n    timeout,\n    minValues,\n    maxValues,\n    initialValues,\n    weights = 1,\n    damping = 1e-2,\n    dampingStepUp = 11,\n    dampingStepDown = 9,\n    maxIterations = 100,\n    errorTolerance = 1e-7,\n    centralDifference = false,\n    gradientDifference = 10e-2,\n    improvementThreshold = 1e-3,\n  } = options;\n\n  if (damping <= 0) {\n    throw new Error('The damping option must be a positive number');\n  } else if (!data.x || !data.y) {\n    throw new Error('The data parameter must have x and y elements');\n  } else if (\n    !isArray(data.x) ||\n    data.x.length < 2 ||\n    !isArray(data.y) ||\n    data.y.length < 2\n  ) {\n    throw new Error(\n      'The data parameter elements must be an array with more than 2 points',\n    );\n  } else if (data.x.length !== data.y.length) {\n    throw new Error('The data parameter elements must have the same size');\n  }\n\n  let parameters =\n    initialValues || new Array(parameterizedFunction.length).fill(1);\n\n  let nbPoints = data.y.length;\n  let parLen = parameters.length;\n  maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n  minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n\n  if (maxValues.length !== minValues.length) {\n    throw new Error('minValues and maxValues must be the same size');\n  }\n\n  if (!isArray(parameters)) {\n    throw new Error('initialValues must be an array');\n  }\n\n  if (typeof gradientDifference === 'number') {\n    gradientDifference = new Array(parameters.length).fill(gradientDifference);\n  } else if (isArray(gradientDifference)) {\n    if (gradientDifference.length !== parLen) {\n      gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n    }\n  } else {\n    throw new Error(\n      'gradientDifference should be a number or array with length equal to the number of parameters',\n    );\n  }\n\n  let filler;\n  if (typeof weights === 'number') {\n    let value = 1 / weights ** 2;\n    filler = () => value;\n  } else if (isArray(weights)) {\n    if (weights.length < data.x.length) {\n      let value = 1 / weights[0] ** 2;\n      filler = () => value;\n    } else {\n      filler = (i) => 1 / weights[i] ** 2;\n    }\n  } else {\n    throw new Error(\n      'weights should be a number or array with length equal to the number of data points',\n    );\n  }\n\n  let checkTimeout;\n  if (timeout !== undefined) {\n    if (typeof timeout !== 'number') {\n      throw new Error('timeout should be a number');\n    }\n    let endTime = Date.now() + timeout * 1000;\n    checkTimeout = () => Date.now() > endTime;\n  } else {\n    checkTimeout = () => false;\n  }\n\n  let weightSquare = new Array(data.x.length);\n  for (let i = 0; i < nbPoints; i++) {\n    weightSquare[i] = filler(i);\n  }\n\n  return {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  };\n}\n","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {Array} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(\n  data,\n  parameters,\n  parameterizedFunction,\n  weightSquare,\n) {\n  let error = 0;\n  const func = parameterizedFunction(parameters);\n  for (let i = 0; i < data.x.length; i++) {\n    error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n  }\n\n  return error;\n}\n","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\n\nexport default function gradientFunction(\n  data,\n  evaluatedData,\n  params,\n  gradientDifference,\n  paramFunction,\n  centralDifference,\n) {\n  const nbParams = params.length;\n  const nbPoints = data.x.length;\n  let ans = Matrix.zeros(nbParams, nbPoints);\n\n  let rowIndex = 0;\n  for (let param = 0; param < nbParams; param++) {\n    if (gradientDifference[param] === 0) continue;\n    let delta = gradientDifference[param];\n    let auxParams = params.slice();\n    auxParams[param] += delta;\n    let funcParam = paramFunction(auxParams);\n    if (!centralDifference) {\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (evaluatedData[point] - funcParam(data.x[point])) / delta,\n        );\n      }\n    } else {\n      auxParams = params.slice();\n      auxParams[param] -= delta;\n      delta *= 2;\n      let funcParam2 = paramFunction(auxParams);\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta,\n        );\n      }\n    }\n    rowIndex++;\n  }\n\n  return ans;\n}\n","import { inverse, Matrix } from 'ml-matrix';\n\nimport gradientFunction from './gradientFunction';\n\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n  const m = data.x.length;\n\n  let ans = new Matrix(m, 1);\n\n  for (let point = 0; point < m; point++) {\n    ans.set(point, 0, data.y[point] - evaluatedData[point]);\n  }\n  return ans;\n}\n\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Array<number>}\n */\nexport default function step(\n  data,\n  params,\n  damping,\n  gradientDifference,\n  parameterizedFunction,\n  centralDifference,\n  weights,\n) {\n  let value = damping;\n  let identity = Matrix.eye(params.length, params.length, value);\n\n  const func = parameterizedFunction(params);\n\n  let evaluatedData = new Float64Array(data.x.length);\n  for (let i = 0; i < data.x.length; i++) {\n    evaluatedData[i] = func(data.x[i]);\n  }\n\n  let gradientFunc = gradientFunction(\n    data,\n    evaluatedData,\n    params,\n    gradientDifference,\n    parameterizedFunction,\n    centralDifference,\n  );\n  let residualError = matrixFunction(data, evaluatedData);\n\n  let inverseMatrix = inverse(\n    identity.add(\n      gradientFunc.mmul(\n        gradientFunc.transpose().scale('row', { scale: weights }),\n      ),\n    ),\n  );\n\n  let jacobianWeigthResidualError = gradientFunc.mmul(\n    residualError.scale('row', { scale: weights }),\n  );\n\n  let perturbations = inverseMatrix.mmul(jacobianWeigthResidualError);\n\n  return {\n    perturbations,\n    jacobianWeigthResidualError,\n  };\n}\n","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n\n/**\n * Curve fitting algorithm\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {object} [options] - Options object\n * @param {number|array} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|array} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {Array<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {Array<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {Array<number>} [options.initialValues] - Array of initial parameter values\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport default function levenbergMarquardt(\n  data,\n  parameterizedFunction,\n  options = {},\n) {\n  let {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  } = checkOptions(data, parameterizedFunction, options);\n\n  let error = errorCalculation(\n    data,\n    parameters,\n    parameterizedFunction,\n    weightSquare,\n  );\n\n  let converged = error <= errorTolerance;\n\n  let iteration = 0;\n  for (; iteration < maxIterations && !converged; iteration++) {\n    let previousError = error;\n\n    let { perturbations, jacobianWeigthResidualError } = step(\n      data,\n      parameters,\n      damping,\n      gradientDifference,\n      parameterizedFunction,\n      centralDifference,\n      weightSquare,\n    );\n\n    for (let k = 0; k < parameters.length; k++) {\n      parameters[k] = Math.min(\n        Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)),\n        maxValues[k],\n      );\n    }\n\n    error = errorCalculation(\n      data,\n      parameters,\n      parameterizedFunction,\n      weightSquare,\n    );\n\n    if (isNaN(error)) break;\n\n    let improvementMetric =\n      (previousError - error) /\n      perturbations\n        .transpose()\n        .mmul(perturbations.mulS(damping).add(jacobianWeigthResidualError))\n        .get(0, 0);\n\n    if (improvementMetric > improvementThreshold) {\n      damping = Math.max(damping / dampingStepDown, 1e-7);\n    } else {\n      error = previousError;\n      damping = Math.min(damping * dampingStepUp, 1e7);\n    }\n\n    if (checkTimeout()) {\n      throw new Error(\n        `The execution time is over to ${options.timeout} seconds`,\n      );\n    }\n\n    converged = error <= errorTolerance;\n  }\n\n  return {\n    parameterValues: parameters,\n    parameterError: error,\n    iterations: iteration,\n  };\n}\n","/**\n * This function returns an array with absolute values\n * @param {Array<Number>} array\n * @return {Number}\n */\nexport function xAbsolute(array) {\n  let tmpArray = array.slice();\n  for (let i = 0; i < tmpArray.length; i++) {\n    if (tmpArray[i] < 0) tmpArray[i] *= -1;\n  }\n\n  return tmpArray;\n}\n","import median from 'ml-array-median';\n\nimport { xAbsolute } from './xAbsolute';\n/**\n * This function calculates the median after taking the reimAbsolute values of the points\n * @param {Array<Number>} array - the array that will be rotated\n * @return {Number}\n */\nexport function xAbsoluteMedian(array) {\n  return median(xAbsolute(array));\n}\n","/**\n * Returns the closest index of a `target` in an ordered array\n * @param {array<Number>} array\n * @param {number} target\n */\n\nexport function xFindClosestIndex(array, target) {\n  let low = 0;\n  let high = array.length - 1;\n  let middle = 0;\n  while (high - low > 1) {\n    middle = low + ((high - low) >> 1);\n    if (array[middle] < target) {\n      low = middle;\n    } else if (array[middle] > target) {\n      high = middle;\n    } else {\n      return middle;\n    }\n  }\n\n  if (low < array.length - 1) {\n    if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n      return low;\n    } else {\n      return low + 1;\n    }\n  } else {\n    return low;\n  }\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param {array} x\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n */\n\nexport function xGetFromToIndex(x, options = {}) {\n  let { fromIndex, toIndex, from, to } = options;\n\n  if (fromIndex === undefined) {\n    if (from !== undefined) {\n      fromIndex = xFindClosestIndex(x, from);\n    } else {\n      fromIndex = 0;\n    }\n  }\n  if (toIndex === undefined) {\n    if (to !== undefined) {\n      toIndex = xFindClosestIndex(x, to);\n    } else {\n      toIndex = x.length - 1;\n    }\n  }\n  if (fromIndex > toIndex) [fromIndex, toIndex] = [toIndex, fromIndex];\n  return { fromIndex, toIndex };\n}\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","const {bisectRight} = require('d3-array')\n\nconst quincunx = (u, v, w, q) => {\n  const n = u.length - 1\n\n  u[0] = 0\n  v[0] = 0\n  w[0] = 0\n  v[1] = v[1] / u[1]\n  w[1] = w[1] / u[1]\n  for (let i = 2; i < n; ++i) {\n    u[i] = u[i] - u[i - 2] * w[i - 2] * w[i - 2] - u[i - 1] * v[i - 1] * v[i - 1]\n    v[i] = (v[i] - u[i - 1] * v[i - 1] * w[i - 1]) / u[i]\n    w[i] = w[i] / u[i]\n  }\n\n  for (let i = 2; i < n; ++i) {\n    q[i] = q[i] - v[i - 1] * q[i - 1] - w[i - 2] * q[i - 2]\n  }\n  for (let i = 1; i < n; ++i) {\n    q[i] = q[i] / u[i]\n  }\n\n  q[n - 2] = q[n - 2] - v[n - 2] * q[n - 1]\n  for (let i = n - 3; i > 0; --i) {\n    q[i] = q[i] - v[i] * q[i + 1] - w[i] * q[i + 2]\n  }\n}\n\nconst smoothingSpline = (x, y, sigma, lambda) => {\n  const n = x.length - 1\n  const h = new Array(n + 1)\n  const r = new Array(n + 1)\n  const f = new Array(n + 1)\n  const p = new Array(n + 1)\n  const q = new Array(n + 1)\n  const u = new Array(n + 1)\n  const v = new Array(n + 1)\n  const w = new Array(n + 1)\n  const params = x.map(() => [0, 0, 0, 0])\n  params.pop()\n\n  const mu = 2 * (1 - lambda) / (3 * lambda)\n  for (let i = 0; i < n; ++i) {\n    h[i] = x[i + 1] - x[i]\n    r[i] = 3 / h[i]\n  }\n  q[0] = 0\n  for (let i = 1; i < n; ++i) {\n    f[i] = -(r[i - 1] + r[i])\n    p[i] = 2 * (x[i + 1] - x[i - 1])\n    q[i] = 3 * (y[i + 1] - y[i]) / h[i] - 3 * (y[i] - y[i - 1]) / h[i - 1]\n  }\n  q[n] = 0\n\n  for (let i = 1; i < n; ++i) {\n    u[i] = r[i - 1] * r[i - 1] * sigma[i - 1] + f[i] * f[i] * sigma[i] + r[i] * r[i] * sigma[i + 1]\n    u[i] = mu * u[i] + p[i]\n  }\n  for (let i = 1; i < n - 1; ++i) {\n    v[i] = f[i] * r[i] * sigma[i] + r[i] * f[i + 1] * sigma[i + 1]\n    v[i] = mu * v[i] + h[i]\n  }\n  for (let i = 1; i < n - 2; ++i) {\n    w[i] = mu * r[i] * r[i + 1] * sigma[i + 1]\n  }\n\n  quincunx(u, v, w, q)\n\n  params[0][3] = y[0] - mu * r[0] * q[1] * sigma[0]\n  params[1][3] = y[1] - mu * (f[1] * q[1] + r[1] * q[2]) * sigma[0]\n  params[0][0] = q[1] / (3 * h[0])\n  params[0][1] = 0\n  params[0][2] = (params[1][3] - params[0][3]) / h[0] - q[1] * h[0] / 3\n  r[0] = 0\n  for (let i = 1; i < n; ++i) {\n    params[i][0] = (q[i + 1] - q[i]) / (3 * h[i])\n    params[i][1] = q[i]\n    params[i][2] = (q[i] + q[i - 1]) * h[i - 1] + params[i - 1][2]\n    params[i][3] = r[i - 1] * q[i - 1] + f[i] * q[i] + r[i] * q[i + 1]\n    params[i][3] = y[i] - mu * params[i][3] * sigma[i]\n  }\n  return params\n}\n\nclass SplineInterpolator {\n  constructor (xIn, yIn, lambda = 1) {\n    const indices = xIn.map((_, i) => i)\n    indices.sort((i, j) => xIn[i] - xIn[j])\n    const x = indices.map((i) => xIn[i])\n    const y = indices.map((i) => yIn[i])\n    const n = indices.length\n    const sigma = indices.map(() => 1)\n    this.n = n\n    this.x = x\n    this.y = y\n    this.params = smoothingSpline(x, y, sigma, lambda)\n  }\n\n  interpolate (v) {\n    if (v === this.x[this.n - 1]) {\n      return this.y[this.n - 1]\n    }\n    const i = Math.min(Math.max(0, bisectRight(this.x, v) - 1), this.n - 2)\n    const [a, b, c, d] = this.params[i]\n    v = v - this.x[i]\n    return a * v * v * v + b * v * v + c * v + d\n  }\n\n  max (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let maxValue = -Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y > maxValue) {\n        maxValue = y\n      }\n    }\n    return maxValue\n  }\n\n  min (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let minValue = Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y < minValue) {\n        minValue = y\n      }\n    }\n    return minValue\n  }\n\n  domain () {\n    return [this.x[0], this.x[this.x.length - 1]]\n  }\n\n  range () {\n    return [this.min(), this.max()]\n  }\n\n  curve (nInterval, domain = null) {\n    domain = domain || this.domain()\n    const delta = (domain[1] - domain[0]) / (nInterval - 1)\n    const vals = new Array(nInterval)\n    for (let i = 0; i < nInterval; ++i) {\n      const x = delta * i + domain[0]\n      vals[i] = [x, this.interpolate(x)]\n    }\n    return vals\n  }\n}\n\nmodule.exports = SplineInterpolator\n","/* eslint-disable no-loss-of-precision */\n\n/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n  -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n  2.19878681111168899165e-2, -3.65637971411762664006e-2,\n  -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n  -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n  8.86216390456424707504e-4, -2.33393759374190016776e-3,\n  7.95283687341571680018e-2, -5.27396382340099713954e-2,\n  -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n  -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n  -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n  -4.46382324441786960818e1, -1.88510648058714251895e1,\n  1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n  -2.02433508355938759655e-1,\n];\nconst Q2 = [\n  1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n  4.85609213108739935468e1, -2.01432634680485188801e1,\n  -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n  -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n  -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n  2.90157910005329060432e-2, 1.42869534408157156766e-1,\n  3.37785538912035898924e-1, 3.87079738972604337464e-1,\n  1.17030156341995252019e-1, -1.63794047193317060787e-1,\n  -1.31102781679951906451e-1,\n];\nconst Q3 = [\n  1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n  2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n  3.46625407242567245975, 1,\n];\n\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n  2.66339227425782031962e-12, -2.30404776911882601748e-10,\n  4.60469890584317994083e-6, 1.57544617424960554631e-4,\n  1.87123492819559223345e-3, 9.50804701325919603619e-3,\n  1.85573306514231072324e-2, -2.22426529213447927281e-3,\n  -3.50353787183177984712e-2,\n];\nconst Q4 = [\n  7.64675292302794483503e-5, 2.63861676657015992959e-3,\n  3.41589143670947727934e-2, 2.20091105764131249824e-1,\n  7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\n\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n  9.9055709973310326855e-17, -2.81128735628831791805e-14,\n  4.62596163522878599135e-9, 4.49696789927706453732e-7,\n  1.49624783758342370182e-5, 2.09386317487588078668e-4,\n  1.05628862152492910091e-3, -1.12951438745580278863e-3,\n  -1.67431005076633737133e-2,\n];\nconst Q5 = [\n  2.82243172016108031869e-7, 2.75335474764726041141e-5,\n  9.64011807005165528527e-4, 1.60746087093676504695e-2,\n  1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n\nfunction polyval(c, x) {\n  let p = 0;\n  for (const coef of c) {\n    p = p * x + coef;\n  }\n  return p;\n}\n\n/**\n * Calculates a rational approximation.\n *\n * @private\n * @param {Number} x\n * @param {Number} v\n * @param {Array} P - array of polynomial coefficients\n * @param {Array} Q - array of polynomial coefficients\n * @param {Number} Y\n * @returns {Number} rational approximation\n */\nfunction calc(x, v, P, Q, Y) {\n  const s = x - v;\n  const r = polyval(P, s) / polyval(Q, s);\n  return Y * x + r * x;\n}\n\n/**\n * Evaluates the complementary inverse error function for an input value.\n *\n * @private\n * @param {Number} x - input value\n * @returns {Number} evaluated complementary inverse error function\n */\nexport default function erfcinv(x) {\n  let sign = false;\n  let val;\n  let q;\n  let g;\n  let r;\n\n  // [1] Special cases...\n\n  // NaN:\n  if (Number.isNaN(x)) {\n    return NaN;\n  }\n  // x not on the interval: [0,2]\n  if (x < 0 || x > 2) {\n    throw new RangeError(\n      `erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`,\n    );\n  }\n  if (x === 0) {\n    return Number.POSITIVE_INFINITY;\n  }\n  if (x === 2) {\n    return Number.NEGATIVE_INFINITY;\n  }\n  if (x === 1) {\n    return 0;\n  }\n  // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n  if (x > 1) {\n    q = 2 - x;\n    x = 1 - q;\n    sign = true;\n  } else {\n    q = x;\n    x = 1 - x;\n  }\n  // [3] |x| <= 0.5\n  if (x <= 0.5) {\n    g = x * (x + 10);\n    r = polyval(P1, x) / polyval(Q1, x);\n    val = g * Y1 + g * r;\n    return sign ? -val : val;\n  }\n\n  // [4] 1-|x| >= 0.25\n  if (q >= 0.25) {\n    g = Math.sqrt(-2 * Math.log(q));\n    q = q - 0.25;\n    r = polyval(P2, q) / polyval(Q2, q);\n    val = g / (Y2 + r);\n    return sign ? -val : val;\n  }\n  q = Math.sqrt(-Math.log(q));\n\n  // [5] q < 3\n  if (q < 3) {\n    return calc(q, 1.125, P3, Q3, Y3);\n  }\n  // [6] q < 6\n  if (q < 6) {\n    return calc(q, 3, P4, Q4, Y4);\n  }\n  // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n  return calc(q, 6, P5, Q5, Y5);\n\n  // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n","export default function rayleighCdf(x, sigma = 1) {\n  if (x < 0) {\n    return 0;\n  }\n  return -Math.expm1(-Math.pow(x, 2) / (2 * Math.pow(sigma, 2)));\n}\n","import fill from 'ml-array-sequential-fill';\nimport SplineInterpolator from 'spline-interpolator';\n\nimport erfcinv from './erfcinv';\nimport rayleighCdf from './rayleighCdf';\n\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param {Array} data - real or magnitude spectra data.\n * @param {object} [options = {}]\n * @param {array} [options.mask] - boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param {number} [options.scaleFactor=1] - factor to scale the data input[i]*=scaleFactor.\n * @param {number} [options.cutOff] - percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param {number} [options.factorStd=5] - factor times std to determine what will be marked as signals.\n * @param {boolean} [options.refine=true] - if true the noise level will be recalculated get out the signals using factorStd.\n * @param {boolean} [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. if true, the distribution will be centered.\n * @param {number} [options.logBaseY=2] - log scale to apply in the intensity axis in order to avoid big numbers.\n */\n\nexport function xNoiseSanPlot(data, options = {}) {\n  const {\n    mask,\n    cutOff,\n    refine = true,\n    magnitudeMode = false,\n    scaleFactor = 1,\n    factorStd = 5,\n    fixOffset = true,\n  } = options;\n\n  let input;\n  if (Array.isArray(mask) && mask.length === data.length) {\n    input = new Float64Array(data.filter((_e, i) => !mask[i]));\n  } else {\n    input = new Float64Array(data);\n  }\n\n  if (scaleFactor > 1) {\n    for (let i = 0; i < input.length; i++) {\n      input[i] *= scaleFactor;\n    }\n  }\n  input = input.sort().reverse();\n\n  if (fixOffset && !magnitudeMode) {\n    let medianIndex = Math.floor(input.length / 2);\n    let median = 0.5 * (input[medianIndex] + input[medianIndex + 1]);\n    for (let i = 0; i < input.length; i++) {\n      input[i] -= median;\n    }\n  }\n\n  let firstNegativeValueIndex =\n    input[input.length - 1] >= 0 ? input.length : input.findIndex((e) => e < 0);\n  let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n  for (let i = lastPositiveValueIndex; i >= 0; i--) {\n    if (input[i] > 0) {\n      lastPositiveValueIndex = i;\n      break;\n    }\n  }\n\n  let signPositive = input.slice(0, lastPositiveValueIndex + 1);\n  let signNegative = input.slice(firstNegativeValueIndex);\n\n  let cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n\n  let pIndex = Math.floor(signPositive.length * cutOffDist);\n  let initialNoiseLevelPositive = signPositive[pIndex];\n\n  let skyPoint = signPositive[0];\n\n  let initialNoiseLevelNegative;\n  if (signNegative.length > 0) {\n    let nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n    initialNoiseLevelNegative = -1 * signNegative[nIndex];\n  } else {\n    initialNoiseLevelNegative = 0;\n  }\n\n  let noiseLevelPositive = initialNoiseLevelPositive;\n  let noiseLevelNegative = initialNoiseLevelNegative;\n  let cloneSignPositive = signPositive.slice();\n  let cloneSignNegative = signNegative.slice();\n\n  let cutOffSignalsIndexPlus = 0;\n  let cutOffSignalsIndexNeg = 2;\n  if (refine) {\n    let cutOffSignals = noiseLevelPositive * factorStd;\n    cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n\n    if (cutOffSignalsIndexPlus > -1) {\n      cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n      noiseLevelPositive =\n        cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n    }\n\n    cutOffSignals = noiseLevelNegative * factorStd;\n    cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n    if (cutOffSignalsIndexNeg > -1) {\n      cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n      noiseLevelNegative =\n        cloneSignPositive[\n          Math.floor(cloneSignNegative.length * (1 - cutOffDist))\n        ];\n    }\n  }\n  let correctionFactor = -simpleNormInv(cutOffDist / 2, { magnitudeMode });\n  initialNoiseLevelPositive = initialNoiseLevelPositive / correctionFactor;\n  initialNoiseLevelNegative = initialNoiseLevelNegative / correctionFactor;\n\n  let effectiveCutOffDist, refinedCorrectionFactor;\n\n  if (refine && cutOffSignalsIndexPlus > -1) {\n    effectiveCutOffDist =\n      (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n      (cloneSignPositive.length + cutOffSignalsIndexPlus);\n    refinedCorrectionFactor =\n      -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n\n    noiseLevelPositive /= refinedCorrectionFactor;\n\n    if (cutOffSignalsIndexNeg > -1) {\n      effectiveCutOffDist =\n        (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n        (cloneSignNegative.length + cutOffSignalsIndexNeg);\n      refinedCorrectionFactor =\n        -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n      if (noiseLevelNegative !== 0) {\n        noiseLevelNegative /= refinedCorrectionFactor;\n      }\n    }\n  } else {\n    noiseLevelPositive /= correctionFactor;\n    noiseLevelNegative /= correctionFactor;\n  }\n\n  return {\n    positive: noiseLevelPositive,\n    negative: noiseLevelNegative,\n    snr: skyPoint / noiseLevelPositive,\n    sanplot: generateSanPlot(input, {\n      fromTo: {\n        positive: { from: 0, to: lastPositiveValueIndex },\n        negative: { from: firstNegativeValueIndex, to: input.length },\n      },\n    }),\n  };\n}\n\nfunction determineCutOff(signPositive, options = {}) {\n  let {\n    magnitudeMode = false,\n    considerList = { from: 0.5, step: 0.1, to: 0.9 },\n  } = options;\n  //generate a list of values for\n  let cutOff = [];\n  let indexMax = signPositive.length - 1;\n  for (let i = 0.01; i <= 0.99; i += 0.01) {\n    let index = Math.round(indexMax * i);\n    let value =\n      -signPositive[index] / simpleNormInv([i / 2], { magnitudeMode });\n    cutOff.push([i, value]);\n  }\n\n  let minKi = Number.MAX_SAFE_INTEGER;\n  let { from, to, step } = considerList;\n  let delta = step / 2;\n  let whereToCutStat = 0.5;\n  for (let i = from; i <= to; i += step) {\n    let floor = i - delta;\n    let top = i + delta;\n    let elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n    let averageValue = elementsOfCutOff.reduce((a, b) => a + Math.abs(b[1]), 0);\n    let kiSqrt = 0;\n    for (let j = 0; j < elementsOfCutOff.length; j++) {\n      kiSqrt += Math.pow(elementsOfCutOff[j][1] - averageValue, 2);\n    }\n\n    if (kiSqrt < minKi) {\n      minKi = kiSqrt;\n      whereToCutStat = i;\n    }\n  }\n\n  return whereToCutStat;\n}\n\nfunction simpleNormInv(data, options = {}) {\n  const { magnitudeMode = false } = options;\n\n  if (!Array.isArray(data)) data = [data];\n\n  let from = 0;\n  let to = 2;\n  let step = 0.01;\n  let xTraining = createArray(from, to, step);\n\n  let result = new Float64Array(data.length);\n  let yTraining = new Float64Array(xTraining.length);\n  if (magnitudeMode) {\n    let factor = 1;\n    for (let i = 0; i < yTraining.length; i++) {\n      let finalInput = xTraining[i] * factor;\n      yTraining[i] = 1 - rayleighCdf(finalInput);\n    }\n    let interp = new SplineInterpolator(xTraining, yTraining);\n    for (let i = 0; i < result.length; i++) {\n      let yValue = 2 * data[i];\n      result[i] = -1 * interp.interpolate(yValue);\n    }\n  } else {\n    for (let i = 0; i < result.length; i++) {\n      result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n    }\n  }\n  return result.length === 1 ? result[0] : result;\n}\n\nfunction createArray(from, to, step) {\n  let result = new Array(Math.abs((from - to) / step + 1));\n  for (let i = 0; i < result.length; i++) {\n    result[i] = from + i * step;\n  }\n  return result;\n}\n\nfunction generateSanPlot(array, options = {}) {\n  const { fromTo, logBaseY = 2 } = options;\n\n  let sanplot = {};\n  for (let key in fromTo) {\n    let { from, to } = fromTo[key];\n    sanplot[key] =\n      from !== to\n        ? scale(array.slice(from, to), {\n            logBaseY,\n          })\n        : { x: [], y: [] };\n    if (key === 'negative') {\n      sanplot[key].y.reverse();\n    }\n  }\n  return sanplot;\n}\n\nfunction scale(array, options = {}) {\n  const { log10, abs } = Math;\n  const { logBaseY } = options;\n  if (logBaseY) {\n    array = array.slice();\n    const logOfBase = log10(logBaseY);\n    for (let i = 0; i < array.length; i++) {\n      array[i] = log10(abs(array[i])) / logOfBase;\n    }\n  }\n\n  const xAxis = fill({\n    from: 0,\n    to: array.length - 1,\n    size: array.length,\n  });\n\n  return { x: xAxis, y: array };\n}\n","import isAnyArray from 'is-any-array';\n\n/**\n * Throw an error in no an object of x,y arrays\n * @param {DataXY} [data={}]\n */\nexport function xyCheck(data = {}) {\n  if (!isAnyArray(data.x) || !isAnyArray(data.y)) {\n    throw new Error('Data must be an object of x and y arrays');\n  }\n  if (data.x.length !== data.y.length) {\n    throw new Error('The x and y arrays mush have the same length');\n  }\n}\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * @param {Array<Zone>} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.MIN_VALUE]\n * @param {number} [options.to=Number.MAX_VALUE]\n */\n\nexport function zonesNormalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } =\n    options;\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let zone of zones) {\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { zonesNormalize } from '../zones/zonesNormalize';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * xyExtract zones from a XY data\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {Array} [options.zones=[]]\n * @return {Array} Array of points\n */\n\nexport function xyExtract(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  let { zones } = options;\n\n  zones = zonesNormalize(zones);\n\n  if (!Array.isArray(zones) || zones.length === 0) return data;\n\n  let newX = [];\n  let newY = [];\n\n  let currentZone = zones[0];\n  let position = 0;\n  loop: for (let i = 0; i < x.length; i++) {\n    while (currentZone.to < x[i]) {\n      position++;\n      currentZone = zones[position];\n      if (!currentZone) {\n        i = x.length;\n        break loop;\n      }\n    }\n    if (x[i] >= currentZone.from) {\n      newX.push(x[i]);\n      newY.push(y[i]);\n    }\n  }\n  return { x: newX, y: newY };\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Calculate integration\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number} xyIntegration value on the specified range\n */\n\nexport function xyIntegration(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n  let currentxyIntegration = 0;\n  for (let i = fromIndex; i < toIndex; i++) {\n    currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n  }\n\n  return currentxyIntegration;\n}\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nconst getSymbols = Object.getOwnPropertySymbols;\n\nmodule.exports = (target, ...args) => {\n  if (!isObject(target)) {\n    throw new TypeError('expected the first argument to be an object');\n  }\n\n  if (args.length === 0 || typeof Symbol !== 'function' || typeof getSymbols !== 'function') {\n    return target;\n  }\n\n  for (let arg of args) {\n    let names = getSymbols(arg);\n\n    for (let key of names) {\n      if (isEnumerable.call(arg, key)) {\n        target[key] = arg[key];\n      }\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]' || Array.isArray(val);\n}\n","/*!\n * assign-deep <https://github.com/jonschlinkert/assign-deep>\n *\n * Copyright (c) 2017-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst assignSymbols = require('assign-symbols');\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nconst assign = module.exports = (target, ...args) => {\n  let i = 0;\n  if (isPrimitive(target)) target = args[i++];\n  if (!target) target = {};\n  for (; i < args.length; i++) {\n    if (isObject(args[i])) {\n      for (const key of Object.keys(args[i])) {\n        if (isValidKey(key)) {\n          if (isObject(target[key]) && isObject(args[i][key])) {\n            assign(target[key], args[i][key]);\n          } else {\n            target[key] = args[i][key];\n          }\n        }\n      }\n      assignSymbols(target, args[i]);\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]';\n}\n\nfunction isPrimitive(val) {\n  return typeof val === 'object' ? val === null : typeof val !== 'function';\n}\n","import { gyromagneticRatio } from 'nmr-processing';\n\nexport default function postProcessingNMR(entriesFlat) {\n  // specific NMR functions\n\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      } else {\n        observeFrequency = spectrum.observeFrequency;\n        shiftOffsetVal = spectrum.shiftOffsetVal;\n      }\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\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              } 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') entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n          }\n          if (symbol === 'F2') {\n            entry.yType = entry.ntuples.nucleus[0];\n          }\n        }\n      }\n\n      if (\n        observeFrequency &&\n        entry.ntuples &&\n        entry.ntuples.symbol &&\n        entry.ntuples.nucleus\n      ) {\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\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","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","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","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\n\nexport default function postProcessing(entriesFlat, result, options) {\n  // converting Hz to ppm\n  postProcessingNMR(entriesFlat);\n\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]) newNtuples[j] = {};\n          newNtuples[j][key] = values[j];\n        }\n      }\n      entry.ntuples = newNtuples;\n    }\n\n    if (entry.twoD && options.wantXY) {\n      add2D(entry, options);\n\n      profiling(result, 'Finished countour plot calculation', options);\n\n      if (!options.keepSpectra) {\n        delete entry.spectra;\n      }\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      } else {\n        simpleChromatogram(entry);\n      }\n      profiling(result, 'Finished chromatogram calculation', options);\n    }\n\n    delete entry.tmp;\n  }\n}\n","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  } 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) 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\n  if (xIndex === -1) xIndex = 0;\n  if (yIndex === -1) yIndex = 0;\n\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 (\n    currentEntry.ntuples.vardim &&\n    currentEntry.ntuples.vardim.length > xIndex\n  ) {\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 (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[xIndex]\n      ) {\n        spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n      } else {\n        spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n      }\n    }\n    if (currentEntry.ntuples.units.length > yIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[yIndex]\n      ) {\n        spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n      } else {\n        spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n      }\n    }\n  }\n}\n","export default function prepareSpectrum(spectrum) {\n  if (!spectrum.xFactor) spectrum.xFactor = 1;\n  if (!spectrum.yFactor) spectrum.yFactor = 1;\n}\n","import { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\n\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\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\n\nclass Spectrum {}\n\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 * Parse a jcamp.\n *\n * @param {string|ArrayBuffer|Uint8Array} jcamp\n * @param {object} [options]\n * @param {number} [options.keepRecordsRegExp=/^$/] - By default we don't keep meta information.\n * @param {number} [options.canonicDataLabels=true] - Canonize the Labels (uppercase without symbol).\n * @param {number} [options.canonicMetadataLabels=false] - Canonize the metadata Labels (uppercase without symbol).\n * @param {number} [options.dynamicTyping=false] - Convert numbers to Number.\n * @param {number} [options.withoutXY=false] - Remove the XY data.\n * @param {number} [options.chromatogram=false] - Special post-processing for GC / HPLC / MS.\n * @param {number} [options.keepSpectra=false] - Force to keep the spectra in case of 2D.\n * @param {number} [options.noContour=false] - Don't calculate countour in case of 2D.\n * @param {number} [options.nbContourLevels=7] - Number of positive / negative contour levels to calculate.\n * @param {number} [options.noiseMultiplier=5] - Define for 2D the level as 5 times the median as default.\n * @param {number} [options.profiling=false] - Add profiling information.\n * @returns {object}\n */\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\n  let entriesFlat = [];\n\n  let result = {\n    profiling: options.profiling ? [] : false,\n    logs: [],\n    entries: [],\n  };\n\n  let tmpResult = { children: [] };\n  let currentEntry = tmpResult;\n  let parentsStack = [];\n\n  let spectrum = new Spectrum();\n\n  if (typeof jcamp !== 'string') {\n    throw new TypeError('the JCAMP should be a string');\n  }\n\n  profiling(result, 'Before split to LDRS', options);\n\n  let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n\n  profiling(result, 'Split to LDRS', options);\n\n  if (ldrs[0]) ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\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\n    let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n\n    if (canonicDataLabel === 'DATATABLE') {\n      let endLine = dataValue.indexOf('\\n');\n      if (endLine === -1) endLine = dataValue.indexOf('\\r');\n      if (endLine > 0) {\n        // ##DATA TABLE= (X++(I..I)), XYDATA\n        // We need to find the variables\n\n        let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n        prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n\n        spectrum.datatable = infos[0];\n        if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n          canonicDataLabel = 'PEAKTABLE';\n        } else if (\n          infos[1] &&\n          (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)\n        ) {\n          canonicDataLabel = 'XYDATA';\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          spectrum.deltaX =\n            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n\n          fastParseXYData(spectrum, dataValue, result);\n        } else {\n          parsePeakTable(spectrum, dataValue, result);\n        }\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    } else if (canonicDataLabel === 'PEAKTABLE') {\n      if (options.wantXY) {\n        prepareSpectrum(spectrum);\n        parsePeakTable(spectrum, dataValue, result);\n        currentEntry.spectra.push(spectrum);\n        spectrum = new 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 = new Spectrum();\n      }\n      continue;\n    }\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    } else if (canonicDataLabel === 'DATATYPE') {\n      currentEntry.dataType = dataValue;\n      if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'NTUPLES') {\n      if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'DATACLASS') {\n      currentEntry.dataClass = dataValue;\n    } else if (canonicDataLabel === 'XUNITS') {\n      spectrum.xUnits = dataValue;\n    } else if (canonicDataLabel === 'YUNITS') {\n      spectrum.yUnits = dataValue;\n    } else if (canonicDataLabel === 'FIRSTX') {\n      spectrum.firstX = Number(dataValue);\n    } else if (canonicDataLabel === 'LASTX') {\n      spectrum.lastX = Number(dataValue);\n    } else if (canonicDataLabel === 'FIRSTY') {\n      spectrum.firstY = Number(dataValue);\n    } else if (canonicDataLabel === 'LASTY') {\n      spectrum.lastY = Number(dataValue);\n    } else if (canonicDataLabel === 'NPOINTS') {\n      spectrum.nbPoints = Number(dataValue);\n    } else if (canonicDataLabel === 'XFACTOR') {\n      spectrum.xFactor = Number(dataValue);\n    } else if (canonicDataLabel === 'YFACTOR') {\n      spectrum.yFactor = Number(dataValue);\n    } else if (canonicDataLabel === 'MAXX') {\n      spectrum.maxX = Number(dataValue);\n    } else if (canonicDataLabel === 'MINX') {\n      spectrum.minX = Number(dataValue);\n    } else if (canonicDataLabel === 'MAXY') {\n      spectrum.maxY = Number(dataValue);\n    } else if (canonicDataLabel === 'MINY') {\n      spectrum.minY = Number(dataValue);\n    } else if (canonicDataLabel === 'DELTAX') {\n      spectrum.deltaX = Number(dataValue);\n    } else if (\n      canonicDataLabel === '.OBSERVEFREQUENCY' ||\n      canonicDataLabel === '$SFO1'\n    ) {\n      if (!spectrum.observeFrequency) {\n        spectrum.observeFrequency = Number(dataValue);\n      }\n    } else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n      if (!spectrum.xType) {\n        currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\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    } 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    } else if (canonicDataLabel === 'VARNAME') {\n      currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'SYMBOL') {\n      currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARTYPE') {\n      currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARFORM') {\n      currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARDIM') {\n      currentEntry.ntuples.vardim = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'UNITS') {\n      currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'FACTOR') {\n      currentEntry.ntuples.factor = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'FIRST') {\n      currentEntry.ntuples.first = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'LAST') {\n      currentEntry.ntuples.last = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'MIN') {\n      currentEntry.ntuples.min = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'MAX') {\n      currentEntry.ntuples.max = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === '.NUCLEUS') {\n      if (currentEntry.ntuples) {\n        currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n      }\n    } else if (canonicDataLabel === 'PAGE') {\n      spectrum.page = dataValue.trim();\n      spectrum.pageValue = Number(dataValue.replace(/^.*=/, ''));\n      spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n    } else if (canonicDataLabel === 'RETENTIONTIME') {\n      spectrum.pageValue = Number(dataValue);\n    } else if (isMSField(canonicDataLabel)) {\n      spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n    } else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n      spectrum.sampleDescription = dataValue;\n    } else if (canonicDataLabel.startsWith('$NUC')) {\n      if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n        currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n      }\n    } else if (canonicDataLabel === 'END') {\n      currentEntry = parentsStack.pop();\n    }\n\n    if (\n      currentEntry &&\n      currentEntry.info &&\n      currentEntry.meta &&\n      canonicDataLabel.match(options.keepRecordsRegExp)\n    ) {\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      } else {\n        label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n        target = currentEntry.info;\n      }\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      } else {\n        target[label] = value;\n      }\n    }\n  }\n\n  profiling(result, 'Finished parsing', options);\n\n  postProcessing(entriesFlat, result, options);\n\n  profiling(result, 'Total time', options);\n\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\n  return result;\n}\n","import atob from 'atob';\nimport { toByteArray } from 'base64-js';\nimport { convert } from 'jcampconverter';\n\nconst common = {};\nexport default common;\ncommon.getBasename = function getBasename(filename) {\n  let base = filename.replace(/.*\\//, '');\n  return base.replace(/\\.[0-9]+$/, '');\n};\n\ncommon.getExtension = function getExtension(filename) {\n  let extension = common.getBasename(filename);\n  return extension.replace(/.*\\./, '').toLowerCase();\n};\n\ncommon.getFilename = function getFilename(typeEntry) {\n  let keys = Object.keys(typeEntry);\n  for (let i = 0; i < keys.length; i++) {\n    if (typeEntry[keys[i]] && typeEntry[keys[i]].filename) {\n      return typeEntry[keys[i]].filename;\n    }\n  }\n  return undefined;\n};\n\ncommon.basenameFind = function basenameFind(typeEntries, filename) {\n  let reference = common.getBasename(filename);\n\n  return typeEntries.find((typeEntry) => {\n    return common.getBasename(common.getFilename(typeEntry)) === reference;\n  });\n};\n\ncommon.getTargetProperty = function getTargetProperty(filename) {\n  switch (common.getExtension(filename)) {\n    case 'jdx':\n    case 'dx':\n    case 'jcamp':\n      return 'jcamp';\n    case 'png':\n    case 'jpg':\n    case 'jpeg':\n    case 'tif':\n    case 'tiff':\n    case 'svg':\n      return 'image';\n    case 'mp4':\n    case 'm4a':\n    case 'avi':\n    case 'wav':\n      return 'video';\n    case 'cif':\n      return 'cif';\n    case 'pdb':\n      return 'pdb';\n    case 'xml':\n    case 'mzml':\n    case 'mzxml':\n    case 'mzdata':\n      return 'xml';\n    case 'cdf':\n    case 'nc':\n    case 'netcdf':\n      return 'cdf';\n    case 'pdf':\n      return 'pdf';\n    case 'txt':\n    case 'text':\n    case 'csv':\n    case 'tsv':\n      return 'text';\n    case 'gbk':\n    case 'gb':\n      return 'genbank';\n    default:\n      return 'file';\n  }\n};\n\ncommon.getContent = function getContent(content, target) {\n  switch (target) {\n    case 'text':\n    case 'xml':\n    case 'pdb':\n    case 'jcamp':\n    case 'cif':\n    case 'genbank':\n      return common.getTextContent(content);\n    default:\n      return common.getBufferContent(content);\n  }\n};\n\ncommon.getTextContent = function getTextContent(content) {\n  switch (content.encoding) {\n    case 'base64':\n      return atob(content.content);\n    default:\n      return content.content;\n  }\n};\n\ncommon.getBufferContent = function getBufferContent(content) {\n  switch (content.encoding) {\n    case 'base64':\n      return toByteArray(content.content);\n    default:\n      return content.content;\n  }\n};\n\ncommon.getMetaFromJcamp = function getMetaFromJcamp(filename, content) {\n  const extension = common.getExtension(filename);\n  let metaData = {};\n  if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n    let textContent = common.getTextContent(content);\n    let parsed = convert(textContent, {\n      withoutXY: true,\n      keepRecordsRegExp: /cheminfo/i,\n    }).flatten[0];\n    if (parsed && parsed.meta && parsed.meta.cheminfo) {\n      try {\n        let cheminfo = JSON.parse(parsed.meta.cheminfo);\n        if (cheminfo.meta) {\n          return cheminfo.meta;\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.trace(e);\n      }\n    }\n  }\n  return metaData;\n};\n","import parseNetCDF from 'netcdf-gcms';\n\nimport common from '../common';\n\nfunction process(filename, content) {\n  const extension = common.getExtension(filename);\n  let metaData = {};\n  if (extension === 'cdf' || extension === 'netcdf') {\n    let bufferContent = common.getBufferContent(content);\n    let parsed = parseNetCDF(bufferContent, { meta: true });\n    if (parsed.series.length === 1) {\n      metaData.detector = parsed.series[0].name;\n    }\n  }\n  return metaData;\n}\n\nexport default {\n  jpath: ['spectra', 'chromatogram'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'cyclicVoltammetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'differentialCentrifugalSedimentation'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'differentialScanningCalorimetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'dls'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'elementalAnalysis'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","'use strict';\n\nmodule.exports = [\n  'JAN',\n  'FEB',\n  'MAR',\n  'APR',\n  'MAY',\n  'JUN',\n  'JUL',\n  'AUG',\n  'SEP',\n  'OCT',\n  'NOV',\n  'DEC',\n];\n","/* eslint no-div-regex: 0*/\n/* eslint prefer-named-capture-group: 0 */\n\n'use strict';\n\nconst MONTHS = require('./utils/months');\n\nfunction genbankToJson(sequence) {\n  if (typeof sequence !== 'string') {\n    throw new TypeError('input must be a string');\n  }\n\n  let resultsArray = [];\n  let result;\n  let currentFeatureNote;\n\n  // Genbank specification: https://www.ncbi.nlm.nih.gov/Sitemap/samplerecord.html\n  let genbankAnnotationKey = {\n    // Contains in order: locus name, sequence length, molecule type (e.g. DNA), genbank division (see 1-18 below), modification date\n    // locus definition has changed with time, use accession number for a unique identifier\n    LOCUS_TAG: 'LOCUS',\n    DEFINITION_TAG: 'DEFINITION',\n    // Accession tag\n    // Example: Z78533\n    ACCESSION_TAG: 'ACCESSION',\n    // The version tag contains 2 informations\n    // The accession number with a revision\n    // The GI (GenInfo Identifier), a ncbi sequential number\n    // Example: Z78533.1  GI:2765658\n    // Unicity garanteed with respect to sequence. If 1 nucleotide changes, the version is different.\n    VERSION_TAG: 'VERSION',\n    KEYWORDS_TAG: 'KEYWORDS',\n    // SEGMENT_TAG:\"SEGMENT\"\n    // Source is free text\n    SOURCE_TAG: 'SOURCE',\n    ORGANISM_TAG: 'ORGANISM',\n    REFERENCE_TAG: 'REFERENCE',\n    AUTHORS_TAG: 'AUTHORS',\n    CONSORTIUM_TAG: 'CONSRTM',\n    TITLE_TAG: 'TITLE',\n    // Can be multiple journal tags\n    JOURNAL_TAG: 'JOURNAL',\n    PUBMED_TAG: 'PUBMED',\n    REMARK_TAG: 'REMARK',\n    FEATURES_TAG: 'FEATURES',\n    BASE_COUNT_TAG: 'BASE COUNT',\n    // CONTIG_TAG: \"CONTIG\"\n    ORIGIN_TAG: 'ORIGIN',\n    END_SEQUENCE_TAG: '//',\n  };\n\n  // Genbank divisions\n  //   1. PRI - primate sequences\n  //   2. ROD - rodent sequences\n  //   3. MAM - other mammalian sequences\n  //   4. VRT - other vertebrate sequences\n  //   5. INV - invertebrate sequences\n  //   6. PLN - plant, fungal, and algal sequences\n  //   7. BCT - bacterial sequences\n  //   8. VRL - viral sequences\n  //   9. PHG - bacteriophage sequences\n  // 10. SYN - synthetic sequences\n  // 11. UNA - unannotated sequences\n  // 12. EST - EST sequences (expressed sequence tags)\n  // 13. PAT - patent sequences\n  // 14. STS - STS sequences (sequence tagged sites)\n  // 15. GSS - GSS sequences (genome survey sequences)\n  // 16. HTG - HTG sequences (high-throughput genomic sequences)\n  // 17. HTC - unfinished high-throughput cDNA sequencing\n  // 18. ENV - environmental sampling sequences\n\n  let lines = sequence.split(/\\r?\\n/);\n  let fieldName;\n  let subFieldType;\n  let featureLocationIndentation;\n  let lastLineWasFeaturesTag;\n  let lastLineWasLocation;\n\n  let hasFoundLocus = false;\n\n  for (let line of lines) {\n    if (line === null) break;\n    let lineFieldName = getLineFieldName(line);\n    let val = getLineVal(line);\n    let isSubKey = isSubKeyword(line);\n    let isKey = isKeyword(line);\n\n    if (lineFieldName === genbankAnnotationKey.END_SEQUENCE_TAG || isKey) {\n      fieldName = lineFieldName;\n      subFieldType = null;\n    } else if (isSubKey) {\n      subFieldType = lineFieldName;\n    }\n    // IGNORE LINES: DO NOT EVEN PROCESS\n    if (line.trim() === '' || lineFieldName === ';') {\n      continue;\n    }\n\n    if (!hasFoundLocus && fieldName !== genbankAnnotationKey.LOCUS_TAG) {\n      // 'Genbank files must start with a LOCUS tag so this must not be a genbank'\n      break;\n    }\n\n    switch (fieldName) {\n      case genbankAnnotationKey.LOCUS_TAG:\n        hasFoundLocus = true;\n        parseLocus(line);\n        break;\n      case genbankAnnotationKey.FEATURES_TAG:\n        parseFeatures(line, lineFieldName, val);\n        break;\n      case genbankAnnotationKey.ORIGIN_TAG:\n        parseOrigin(line, lineFieldName);\n        break;\n      case genbankAnnotationKey.DEFINITION_TAG:\n      case genbankAnnotationKey.ACCESSION_TAG:\n      case genbankAnnotationKey.VERSION_TAG:\n      case genbankAnnotationKey.KEYWORDS_TAG:\n        parseMultiLineField(fieldName, line, fieldName.toLowerCase());\n        break;\n      case genbankAnnotationKey.SOURCE_TAG:\n        if (subFieldType === genbankAnnotationKey.ORGANISM_TAG) {\n          parseMultiLineField(subFieldType, line, 'organism');\n        } else {\n          parseMultiLineField(lineFieldName, line, 'source');\n        }\n        break;\n      case genbankAnnotationKey.REFERENCE_TAG:\n        if (lineFieldName === genbankAnnotationKey.REFERENCE_TAG) {\n          const ref = result.references || [];\n          result.references = ref;\n          ref.push({});\n        }\n        parseReference(line, subFieldType);\n        break;\n      case genbankAnnotationKey.END_SEQUENCE_TAG:\n        endSeq();\n        break;\n      default:\n        // Unhandled tag\n        break;\n    }\n  }\n\n  // catch the case where we've successfully started a sequence and parsed it, but endSeq isn't called correctly\n  if (resultsArray[resultsArray.length - 1] !== result) {\n    // current result isn't in resultsArray yet\n    // so we call endSeq here\n    endSeq();\n  }\n  return resultsArray;\n\n  function endSeq() {\n    // do some post processing clean-up\n    postProcessCurSeq();\n    // push the result into the resultsArray\n    resultsArray.push(result);\n  }\n\n  function getCurrentFeature() {\n    return result.features[result.features.length - 1];\n  }\n\n  function postProcessCurSeq() {\n    if (result && result.features) {\n      for (let i = 0; i < result.features.length; i++) {\n        result.features[i] = postProcessGenbankFeature(result.features[i]);\n      }\n    }\n  }\n\n  function parseOrigin(line, key) {\n    if (key !== genbankAnnotationKey.ORIGIN_TAG) {\n      let newLine = line.replace(/[\\s]*[0-9]*/g, '');\n      result.sequence += newLine;\n    }\n  }\n\n  function parseLocus(line) {\n    result = {\n      features: [],\n      name: 'Untitled sequence',\n      sequence: '',\n      references: [],\n    };\n    line = removeFieldName(genbankAnnotationKey.LOCUS_TAG, line);\n    const m = line.match(\n      /^([^\\s]+)\\s+(\\d+)\\s+bp\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s*([^\\s]+)?$/,\n    );\n    let locusName = m[1];\n    let size = +m[2];\n    let moleculeType = m[3];\n    let circular = m[4] === 'circular';\n    const seq = result;\n    let dateStr = '';\n    if (!m[6]) {\n      dateStr = m[5];\n    } else {\n      seq.genbankDivision = m[5];\n      dateStr = m[6];\n    }\n    seq.circular = circular;\n    seq.moleculeType = moleculeType;\n    const dateMatch = dateStr.match(/^(\\d{2})-(.{3})-(\\d{4})$/);\n    const date = new Date();\n    date.setFullYear(+dateMatch[3]);\n    date.setUTCMonth(MONTHS.indexOf(dateMatch[2].toUpperCase()));\n    date.setDate(+dateMatch[1]);\n    date.setUTCHours(12);\n    date.setMinutes(0);\n    date.setSeconds(0);\n    date.setMilliseconds(0);\n    seq.date = date.toISOString();\n    seq.name = locusName;\n    seq.size = size;\n  }\n\n  function removeFieldName(fName, line) {\n    line = line.replace(/^\\s*/, '');\n    if (line.indexOf(fName) === 0) {\n      line = line.replace(fName, '');\n    }\n    return line.trim();\n  }\n\n  function parseReference(line, subType) {\n    const refs = result.references;\n    let lastRef = refs[refs.length - 1];\n    if (!subType) {\n      parseMultiLineField(\n        genbankAnnotationKey.REFERENCE_TAG,\n        line,\n        'description',\n        lastRef,\n      );\n    } else {\n      parseMultiLineField(subType, line, subType.toLowerCase(), lastRef);\n    }\n  }\n\n  function parseFeatures(line, key, val) {\n    let strand;\n    // FOR THE MAIN FEATURES LOCATION/QUALIFIER LINE\n    if (key === genbankAnnotationKey.FEATURES_TAG) {\n      lastLineWasFeaturesTag = true;\n      return;\n    }\n\n    if (lastLineWasFeaturesTag) {\n      // we need to get the indentation of feature locations\n      featureLocationIndentation = getLengthOfWhiteSpaceBeforeStartOfLetters(\n        line,\n      );\n      // set lastLineWasFeaturesTag to false\n      lastLineWasFeaturesTag = false;\n    }\n\n    // FOR LOCATION && QUALIFIER LINES\n    if (isFeatureLineRunon(line, featureLocationIndentation)) {\n      // the line is a continuation of the above line\n      if (lastLineWasLocation) {\n        // the last line was a location, so the run-on line is expected to be a feature location as well\n        parseFeatureLocation(line.trim());\n        lastLineWasLocation = true;\n      } else {\n        // the last line was a note\n        if (currentFeatureNote) {\n          // append to the currentFeatureNote\n          currentFeatureNote[\n            currentFeatureNote.length - 1\n          ] += line.trim().replace(/\"/g, '');\n        }\n        lastLineWasLocation = false;\n      }\n    } else {\n      // New Element/Qualifier lines. Not runon lines.\n      if (isNote(line)) {\n        // is a new Feature Element (e.g. source, CDS) in the form of  \"[\\s] KEY  SEQLOCATION\"\n        // is a FeatureQualifier in the /KEY=\"BLAH\" format; could be multiple per Element\n        // Check that feature did not get skipped for missing location\n        if (getCurrentFeature()) {\n          parseFeatureNote(line);\n          lastLineWasLocation = false;\n        }\n      } else {\n        // the line is a location, so we make a new feature from it\n        if (val.match(/complement/g)) {\n          strand = -1;\n        } else {\n          strand = 1;\n        }\n\n        newFeature();\n        let feat = getCurrentFeature();\n        feat.type = key;\n        feat.strand = strand;\n\n        parseFeatureLocation(val);\n        lastLineWasLocation = true;\n      }\n    }\n  }\n\n  function newFeature() {\n    result.features.push({\n      notes: {},\n    });\n  }\n\n  function isNote(line) {\n    let qual = false;\n    /* if (line.charAt(21) === \"/\") {//T.H. Hard coded method\n           qual = true;\n         }*/\n    if (line.trim().charAt(0).match(/\\//)) {\n      // searches based on looking for / in beginning of line\n      qual = true;\n    } else if (line.match(/^[\\s]*\\/[\\w]+=[\\S]+/)) {\n      // searches based on \"   /key=BLAH\" regex\n      qual = true;\n    }\n    return qual;\n  }\n\n  function parseFeatureLocation(locStr) {\n    locStr = locStr.trim();\n    let locArr = [];\n    locStr.replace(/(\\d+)/g, function (string, match) {\n      locArr.push(match);\n    });\n    let feat = getCurrentFeature();\n    feat.start = +locArr[0];\n    feat.end = locArr[1] === undefined ? +locArr[0] : +locArr[1];\n  }\n\n  function parseFeatureNote(line) {\n    let newLine, lineArr;\n\n    newLine = line.trim();\n    newLine = newLine.replace(/^\\/|\"$/g, '');\n    lineArr = newLine.split(/=\"|=/);\n\n    let val = lineArr[1];\n\n    if (val) {\n      val = val.replace(/\\\\/g, ' ');\n\n      if (line.match(/=\"/g)) {\n        val = val.replace(/\".*/g, '');\n      } else if (val.match(/^\\d+$/g)) {\n        val = +val;\n      }\n    }\n    let key = lineArr[0];\n    let currentNotes = getCurrentFeature().notes;\n    if (currentNotes[key]) {\n      // array already exists, so push value into it\n      currentNotes[key].push(val);\n    } else {\n      // array doesn't exist yet, so create it and populate it with the value\n      currentNotes[key] = [val];\n    }\n    currentFeatureNote = currentNotes[key];\n  }\n\n  function getLineFieldName(line) {\n    let arr;\n    line = line.trim();\n\n    arr = line.split(/[\\s]+/);\n\n    return arr[0];\n  }\n\n  function parseMultiLineField(fName, line, resultKey, r) {\n    r = r || result;\n    let fieldValue = removeFieldName(fName, line);\n    r[resultKey] = r[resultKey] ? `${r[resultKey]} ` : '';\n    r[resultKey] += fieldValue;\n  }\n\n  function getLineVal(line) {\n    let arr;\n\n    if (line.indexOf('=') < 0) {\n      line = line.replace(/^[\\s]*[\\S]+[\\s]+|[\\s]+$/, '');\n      line = line.trim();\n      return line;\n    } else {\n      arr = line.split(/=/);\n      return arr[1];\n    }\n  }\n\n  function isKeyword(line) {\n    let isKey = false;\n    if (line.substr(0, 10).match(/^[\\S]+/)) {\n      isKey = true;\n    }\n    return isKey;\n  }\n\n  function isSubKeyword(line) {\n    let isSubKey = false;\n    if (line.substr(0, 10).match(/^[\\s]+[\\S]+/)) {\n      isSubKey = true;\n    }\n    return isSubKey;\n  }\n\n  function postProcessGenbankFeature(feat) {\n    if (feat.notes.label) {\n      feat.name = feat.notes.label[0];\n    } else if (feat.notes.gene) {\n      feat.name = feat.notes.gene[0];\n    } else if (feat.notes.ApEinfo_label) {\n      feat.name = feat.notes.ApEinfo_label[0];\n    } else if (feat.notes.name) {\n      feat.name = feat.notes.name[0];\n    } else if (feat.notes.organism) {\n      feat.name = feat.notes.organism[0];\n    } else if (feat.notes.locus_tag) {\n      feat.name = feat.notes.locus_tag[0];\n    } else if (feat.notes.note) {\n      feat.name = feat.notes.note[0];\n    } else {\n      feat.name = 'Untitled Feature';\n    }\n    feat.name = typeof feat.name === 'string' ? feat.name : String(feat.name);\n    return feat;\n  }\n}\n\nfunction isFeatureLineRunon(line, featureLocationIndentation) {\n  let indentationOfLine = getLengthOfWhiteSpaceBeforeStartOfLetters(line);\n  if (featureLocationIndentation === indentationOfLine) {\n    // the feature location indentation calculated right after the feature tag\n    // cannot be the same as the indentation of the line\n    //\n    // FEATURES             Location/Qualifiers\n    //     rep_origin      complement(1074..3302)\n    // 01234  <-- this is the indentation we're talking about\n    return false; // the line is NOT a run on\n  }\n\n  let trimmed = line.trim();\n  if (trimmed.charAt(0).match(/\\//)) {\n    // the first char in the trimmed line cannot be a /\n    return false; // the line is NOT a run on\n  }\n  // the line is a run on\n  return true;\n  // run-on line example:\n  // FEATURES             Location/Qualifiers\n  //     rep_origin      complement(1074..3302)\n  //                 /label=pSC101**\n  //                 /note=\"REP_ORIGIN REP_ORIGIN pSC101* aka pMPP6, gives plasm\n  //                 id number 3 -4 copies per cell, BglII site in pSC101* ori h <--run-on line!\n  //                 as been dele ted by quick change agatcT changed to agatcA g <--run-on line!\n  //                 iving pSC101* * pSC101* aka pMPP6, gives plasmid number 3-4 <--run-on line!\n  //                 copies p er cell, BglII site in pSC101* ori has been delet  <--run-on line!\n  //                 ed by quic k change agatcT changed to agatcA giving pSC101* <--run-on line!\n  //                 * [pBbS0a-RFP]\"                                             <--run-on line!\n  //                 /gene=\"SC101** Ori\"\n  //                 /note=\"pSC101* aka pMPP6, gives plasmid number 3-4 copies p\n  //                 er cell, BglII site in pSC101* ori has been deleted by qui\n  //                 c k change agatcT changed to agatcA giving pSC101**\"\n  //                 /vntifkey=\"33\"\n}\n\nfunction getLengthOfWhiteSpaceBeforeStartOfLetters(string) {\n  let match = /^\\s*/.exec(string);\n  if (match !== null) {\n    return match[0].length;\n  } else {\n    return 0;\n  }\n}\n\nmodule.exports = genbankToJson;\n","import genbankParser from 'genbank-parser';\n\nimport common from '../common';\n\nexport default {\n  find(genbank, filename) {\n    let reference = common.getBasename(filename);\n\n    return genbank.find((genbank) => {\n      return common.getBasename(common.getFilename(genbank)) === reference;\n    });\n  },\n\n  getProperty(filename) {\n    return common.getTargetProperty(filename);\n  },\n\n  process(filename, content) {\n    let textContent = common.getTextContent(content);\n    let toReturn;\n    const parsed = genbankParser(textContent);\n    toReturn = {\n      seq: parsed.map((p) => p.parsedSequence),\n    };\n    return toReturn;\n  },\n\n  jpath: ['biology', 'nucleic'],\n};\n","export default {\n  jpath: ['general'],\n  getEmpty() {\n    return {\n      description: '',\n      title: '',\n      name: [],\n      mf: '',\n      molfile: '',\n      mw: 0,\n      keyword: [],\n      meta: {},\n      sequence: '',\n      kind: '',\n    };\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'hgPorosimetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'icp'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['image'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'ir'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'isotherm'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'iv'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'mass'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","/* eslint-disable camelcase */\nexport const impurities = {\n  cdcl3: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: 'ds',\n        shift: 7.26,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 'bs',\n        shift: 1.56,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.1,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.17,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.1,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.36,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.28,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.19,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.22,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.98,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.01,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.27,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.26,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.73,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.3,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.21,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.48,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.65,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.57,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.39,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.4,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.55,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.02,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.02,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.96,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.88,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.62,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.71,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.25,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.72,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 1.32,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.12,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.26,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.14,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.46,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.06,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.76,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.26,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.26,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.65,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.49,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.09,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.33,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 7,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.22,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 4.04,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.62,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.29,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.68,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.07,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.85,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.76,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.36,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.17,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.25,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.03,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.53,\n      },\n    ],\n  },\n  '(cd3)2co': {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 2.05,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.84,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.36,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.18,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.13,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.13,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.96,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.41,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.02,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.87,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.63,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.11,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.41,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.56,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.47,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.46,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.83,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.96,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.78,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.52,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.59,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.57,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 3.39,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.05,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.2,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.87,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.29,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.28,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.59,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.31,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.12,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.43,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.1,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.9,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.58,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.35,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.76,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.13,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.79,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.63,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.32,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.5,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.5,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n    ],\n  },\n  dmso: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: 'quint',\n        shift: 2.5,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.33,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.91,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.37,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.11,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.19,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.11,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.08,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.87,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.65,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.18,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.36,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.32,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.9,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.76,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.09,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.38,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.51,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.38,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.24,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.24,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.43,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.78,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.95,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.89,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.73,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.54,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.57,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.06,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.44,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 4.63,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.99,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.03,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.91,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    'grease^f': [],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.25,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.53,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.16,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.01,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.42,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.04,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.78,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.58,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.39,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.79,\n      },\n    ],\n    silicone_greasei: [],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.76,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.6,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.3,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.18,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.25,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.93,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n    ],\n  },\n  c6d6: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 7.16,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.4,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.15,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.05,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.07,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.04,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.05,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.79,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.24,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.38,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.15,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.9,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.27,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.11,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.26,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.46,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.34,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.11,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.33,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.6,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.57,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.63,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.36,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.86,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.68,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.34,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.65,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.89,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.92,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.58,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 1.81,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.85,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.41,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.92,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.36,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.24,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.4,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.07,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.23,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 0.95,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.67,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.53,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 6.66,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 6.98,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.29,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.4,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.57,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.11,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.02,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.13,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.4,\n      },\n    ],\n  },\n  cd3cn: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 1.94,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.13,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.37,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.16,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.18,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.14,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.13,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.97,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.2,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.39,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.58,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.44,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.81,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.44,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.42,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.53,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.45,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.29,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.45,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.96,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.83,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.92,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.89,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.77,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.5,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.6,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.54,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 2.47,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.06,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.2,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.06,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.51,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.27,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.28,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.57,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.16,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.31,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.87,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.09,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.87,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.57,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.33,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.73,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.08,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.8,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.64,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.33,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.2,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.2,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n    ],\n  },\n  cd3od: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 3.31,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.87,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.99,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.15,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.03,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.33,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.15,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.2,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.92,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.21,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.9,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.45,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.78,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.49,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.18,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.49,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.61,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.58,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.52,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.31,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.92,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.97,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.99,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.86,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.65,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.66,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.19,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.6,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.01,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.09,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.24,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.12,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.5,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.01,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.59,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.29,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.9,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.64,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.34,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.5,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.92,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.53,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.44,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.85,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.1,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.87,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.71,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.32,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.16,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.16,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.05,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.58,\n      },\n    ],\n  },\n  d2o: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 4.79,\n      },\n    ],\n    h2o: [],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.06,\n      },\n    ],\n    benzene: [],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.24,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.21,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.22,\n      },\n    ],\n    bhtb: [],\n    chloroform: [],\n    cyclohexane: [],\n    '1,2-dichloroethane': [],\n    dichloromethane: [],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.56,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.67,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.61,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.37,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.37,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.6,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.06,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.9,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.92,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.01,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.85,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.71,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.75,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.65,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.14,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.24,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.19,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.18,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.26,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.65,\n      },\n    ],\n    'grease^f': [],\n    'n-hexane': [],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.61,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.4,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.9,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 4.02,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.52,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.45,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.87,\n      },\n    ],\n    silicone_greasei: [],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.88,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.74,\n      },\n    ],\n    toluene: [],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.99,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.57,\n      },\n    ],\n  },\n};\n","import { impurities } from '../constants/impurities';\n\nconst toCheck = ['solvent', 'H2O', 'TMS'];\n\n/**\n * Try to remove peaks of impurities.\n * @param {array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options={}] - options\n * @param {string} [options.solvent=''] - solvent name.\n * @param {string} [options.error=0.025] - tolerance in ppm to assign a impurity.\n */\n\nexport function peaksFilterImpurities(peakList, options = {}) {\n  let { solvent = '', error = 0.025, remove = false } = options;\n  solvent = solvent.toLowerCase();\n  if (solvent === '(cd3)2so') solvent = 'dmso';\n  if (solvent === 'meod') solvent = 'cd3od';\n  let solventImpurities = impurities[solvent];\n  if (solventImpurities) {\n    for (let impurity of toCheck) {\n      let name = impurity.toLowerCase();\n      let impurityShifts = solventImpurities[name];\n      checkImpurity(peakList, impurityShifts, {\n        error,\n        remove,\n        name,\n      });\n    }\n  }\n  return peakList;\n}\n\nfunction checkImpurity(peakList, impurity, options) {\n  let { name, error, remove } = options;\n  let j, tolerance, difference;\n  let i = impurity.length;\n  while (i--) {\n    j = peakList.length;\n    while (j--) {\n      if (!peakList[j].asymmetric) {\n        tolerance = error + peakList[j].width;\n        difference = Math.abs(impurity[i].shift - peakList[j].x);\n        if (difference < tolerance) {\n          // && (impurity[i].multiplicity === '' || (impurity[i].multiplicity.indexOf(peakList[j].multiplicity)) { // some impurities has multiplicities like 'bs' but at presents it is unsupported\n          if (remove) {\n            peakList.splice(j, 1);\n          } else {\n            peakList[j].kind = name;\n          }\n        }\n      }\n    }\n  }\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","export class Shape1D {\n}\n//# sourceMappingURL=Shape1D.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nimport { Shape1D } from '../Shape1D';\nexport class Gaussian extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, sd, height } = options;\n        this.fwhm = sd ? widthToFWHM(2 * sd) : fwhm;\n        this.height =\n            height === undefined\n                ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n                : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return fwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return widthToFWHM(width);\n    }\n    fct(x) {\n        return fct(x, this.fwhm);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({ fwhm: this.fwhm, height: this.height, factor, length });\n    }\n}\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @returns - the y value of gaussian with the current parameters.\n */\nexport function fct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * for more information check the [mathworld page](https://mathworld.wolfram.com/GaussianFunction.html)\n * @returns fwhm\n */\nexport function widthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * for more information check the [mathworld page](https://mathworld.wolfram.com/GaussianFunction.html)\n * @param fwhm - Full Width at Half Maximum.\n * @returns width\n */\nexport function fwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    let { fwhm, sd, height = 1 } = options;\n    if (sd)\n        fwhm = widthToFWHM(2 * sd);\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\n/**\n * Calculate intensity array of a gaussian shape.\n * @returns {Float64Array} Intensity values.\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, sd, height } = options;\n    if (sd)\n        fwhm = widthToFWHM(2 * sd);\n    if (!height) {\n        height = Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / fwhm;\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from '../../../util/constants';\nimport { Shape1D } from '../Shape1D';\nexport class Lorentzian extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, height } = options;\n        this.fwhm = fwhm;\n        this.height = height === undefined ? 2 / Math.PI / fwhm : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return fwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return widthToFWHM(width);\n    }\n    fct(x) {\n        return fct(x, this.fwhm);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({ fwhm: this.fwhm, height: this.height, factor, length });\n    }\n}\n/**\n * Return a parameterized function of a lorentzian shape (see README for equation).\n * @param x - x value to calculate.\n * @param fwhm - full width half maximum\n * @returns - the y value of lorentzian with the current parameters.\n */\nexport function fct(x, fwhm) {\n    return Math.pow(fwhm, 2) / (4 * Math.pow(x, 2) + Math.pow(fwhm, 2));\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * for more information check the [mathworld page](https://mathworld.wolfram.com/LorentzianFunction.html)\n * @param width - Width between the inflection points\n * @returns fwhm\n */\nexport function widthToFWHM(width) {\n    return width * ROOT_THREE;\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * for more information check the [mathworld page](https://mathworld.wolfram.com/LorentzianFunction.html)\n * @param fwhm - Full Width at Half Maximum.\n * @returns width\n */\nexport function fwhmToWidth(fwhm) {\n    return fwhm / ROOT_THREE;\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    const { fwhm, height = 1 } = options;\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (height * Math.PI * fwhm) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999) {\n    return 2 * Math.tan(Math.PI * (area - 0.5));\n}\n/**\n * Calculate intensity array of a lorentzian shape.\n * @returns {Float64Array} y values\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, height } = options;\n    if (!height) {\n        height = 2 / Math.PI / fwhm;\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Lorentzian.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { Shape1D } from '../Shape1D';\nimport { fct as gaussian, getFactor as getFactorGaussian, } from '../gaussian/Gaussian';\nimport { fct as lorentzian, getFactor as getFactorLorentzian, } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, height, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n        this.height =\n            height === undefined\n                ? 1 /\n                    ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                        ((1 - mu) * fwhm * Math.PI) / 2)\n                : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return fwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return widthToFWHM(width, mu);\n    }\n    fct(x) {\n        return fct(x, this.fwhm, this.mu);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({\n            fwhm: this.fwhm,\n            height: this.height,\n            mu: this.mu,\n            factor,\n            length,\n        });\n    }\n}\n/**\n * Return a parameterized function of a pseudo voigt shape (see README for equation).\n * @param x - x value to calculate.\n * @param fwhm - full width half maximum\n * @returns - the y value of pseudo voigt with the current parameters.\n */\nexport function fct(x, fwhm, mu) {\n    return (1 - mu) * lorentzian(x, fwhm) + mu * gaussian(x, fwhm);\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * @param width - Width between the inflection points\n * @param [mu=0.5] Ratio of gaussian contribution in the shape\n * @returns fwhm\n */\nexport function widthToFWHM(width, mu = 0.5) {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param fwhm - Full Width at Half Maximum.\n * @param [mu=0.5] Ratio of gaussian contribution in the shape\n * @returns width\n */\nexport function fwhmToWidth(fwhm, mu = 0.5) {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    const { fwhm, height = 1, mu = 0.5 } = options;\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999, mu = 0.5) {\n    return mu < 1 ? getFactorLorentzian(area) : getFactorGaussian(area);\n}\n/**\n * Calculate intensity array of a pseudo voigt shape.\n * @returns {Float64Array} y values\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, height, mu = 0.5 } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=PseudoVoigt.js.map","import { Gaussian } from '../shapes/1d/gaussian/Gaussian';\nimport { Lorentzian } from '../shapes/1d/lorentzian/Lorentzian';\nimport { PseudoVoigt } from '../shapes/1d/pseudoVoigt/PseudoVoigt';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape1D(kind, shapeOptions = {}) {\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shapeOptions);\n        case 'lorentzian':\n            return new Lorentzian(shapeOptions);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shapeOptions);\n        default: {\n            const unHandled = kind;\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw Error(`Unknown distribution ${unHandled}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport SG from 'ml-savitzky-golay-generalized';\n\n/**\n * Global spectra deconvolution\n * @param {object} data - Object data with x and y arrays\n * @param {Array<number>} [data.x] - Independent variable\n * @param {Array<number>} [data.y] - Dependent variable\n * @param {object} [options={}] - Options object\n * @param {object} [options.shape={}] - Object that specified the kind of shape to calculate the FWHM instead of width between inflection points. see https://mljs.github.io/peak-shape-generator/#inflectionpointswidthtofwhm\n * @param {object} [options.shape.kind='gaussian']\n * @param {object} [options.shape.options={}]\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array<object>}\n */\nexport function gsd(data, options = {}) {\n  let {\n    noiseLevel,\n    sgOptions = {\n      windowSize: 9,\n      polynomial: 3,\n    },\n    shape = {},\n    smoothY = true,\n    heightFactor = 0,\n    broadRatio = 0.0,\n    maxCriteria = true,\n    minMaxRatio = 0.00025,\n    derivativeThreshold = -1,\n    realTopDetection = false,\n  } = options;\n\n  let { y: yIn, x } = data;\n\n  const y = yIn.slice();\n  let equalSpaced = isEqualSpaced(x);\n\n  if (maxCriteria === false) {\n    for (let i = 0; i < y.length; i++) {\n      y[i] *= -1;\n    }\n  }\n\n  if (noiseLevel === undefined) {\n    noiseLevel = equalSpaced ? getNoiseLevel(y) : 0;\n  }\n  for (let i = 0; i < y.length; i++) {\n    y[i] -= noiseLevel;\n  }\n  for (let i = 0; i < y.length; i++) {\n    if (y[i] < 0) {\n      y[i] = 0;\n    }\n  }\n  // If the max difference between delta x is less than 5%, then,\n  // we can assume it to be equally spaced variable\n  let yData = y;\n  let dY, ddY;\n  const { windowSize, polynomial } = sgOptions;\n\n  if (equalSpaced) {\n    if (smoothY) {\n      yData = SG(y, x[1] - x[0], {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  } else {\n    if (smoothY) {\n      yData = SG(y, x, {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  }\n\n  const xData = x;\n  const dX = x[1] - x[0];\n  let maxDdy = 0;\n  let maxY = 0;\n  for (let i = 0; i < yData.length; i++) {\n    if (Math.abs(ddY[i]) > maxDdy) {\n      maxDdy = Math.abs(ddY[i]);\n    }\n    if (Math.abs(yData[i]) > maxY) {\n      maxY = Math.abs(yData[i]);\n    }\n  }\n\n  let lastMax = null;\n  let lastMin = null;\n  let minddY = [];\n  let intervalL = [];\n  let intervalR = [];\n  let broadMask = [];\n\n  // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n  for (let i = 1; i < yData.length - 1; ++i) {\n    // filter based on derivativeThreshold\n    if (Math.abs(dY[i]) > derivativeThreshold) {\n      // Minimum in first derivative\n      if (\n        (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n        (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])\n      ) {\n        lastMin = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX > 0 && lastMax !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n\n      // Maximum in first derivative\n      if (\n        (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n        (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])\n      ) {\n        lastMax = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX < 0 && lastMin !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n    }\n\n    // Minimum in second derivative\n    if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n      minddY.push(i);\n      broadMask.push(Math.abs(ddY[i]) <= broadRatio * maxDdy);\n    }\n  }\n\n  let widthProcessor = shape.kind\n    ? getShape1D(shape.kind, shape.options).widthToFWHM\n    : (x) => x;\n\n  let signals = [];\n  let lastK = -1;\n  let possible, frequency, distanceJ, minDistance, gettingCloser;\n  for (let j = 0; j < minddY.length; ++j) {\n    frequency = xData[minddY[j]];\n    possible = -1;\n    let k = lastK + 1;\n    minDistance = Number.MAX_VALUE;\n    distanceJ = 0;\n    gettingCloser = true;\n    while (possible === -1 && k < intervalL.length && gettingCloser) {\n      distanceJ = Math.abs(frequency - (intervalL[k].x + intervalR[k].x) / 2);\n\n      // Still getting closer?\n      if (distanceJ < minDistance) {\n        minDistance = distanceJ;\n      } else {\n        gettingCloser = false;\n      }\n      if (distanceJ < Math.abs(intervalL[k].x - intervalR[k].x) / 2) {\n        possible = k;\n        lastK = k;\n      }\n      ++k;\n    }\n\n    if (possible !== -1) {\n      if (Math.abs(yData[minddY[j]]) > minMaxRatio * maxY) {\n        let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n        signals.push({\n          index: minddY[j],\n          x: frequency,\n          y: maxCriteria\n            ? yData[minddY[j]] + noiseLevel\n            : -yData[minddY[j]] - noiseLevel,\n          width: widthProcessor(width),\n          soft: broadMask[j],\n        });\n\n        signals[signals.length - 1].left = intervalL[possible];\n        signals[signals.length - 1].right = intervalR[possible];\n\n        if (heightFactor) {\n          let yLeft = yData[intervalL[possible].index];\n          let yRight = yData[intervalR[possible].index];\n          signals[signals.length - 1].height =\n            heightFactor *\n            (signals[signals.length - 1].y - (yLeft + yRight) / 2);\n        }\n      }\n    }\n  }\n\n  if (realTopDetection) {\n    determineRealTop(signals, xData, yData);\n  }\n\n  // Correct the values to fit the original spectra data\n  for (let j = 0; j < signals.length; j++) {\n    signals[j].base = noiseLevel;\n  }\n\n  signals.sort((a, b) => {\n    return a.x - b.x;\n  });\n\n  return signals;\n}\n\nconst isEqualSpaced = (x) => {\n  let tmp;\n  let maxDx = 0;\n  let minDx = Number.MAX_SAFE_INTEGER;\n  for (let i = 0; i < x.length - 1; ++i) {\n    tmp = Math.abs(x[i + 1] - x[i]);\n    if (tmp < minDx) {\n      minDx = tmp;\n    }\n    if (tmp > maxDx) {\n      maxDx = tmp;\n    }\n  }\n  return (maxDx - minDx) / maxDx < 0.05;\n};\n\nconst getNoiseLevel = (y) => {\n  let mean = 0;\n\n  let stddev = 0;\n  let length = y.length;\n  for (let i = 0; i < length; ++i) {\n    mean += y[i];\n  }\n  mean /= length;\n  let averageDeviations = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    averageDeviations[i] = Math.abs(y[i] - mean);\n  }\n  averageDeviations.sort((a, b) => a - b);\n  if (length % 2 === 1) {\n    stddev = averageDeviations[(length - 1) / 2] / 0.6745;\n  } else {\n    stddev =\n      (0.5 *\n        (averageDeviations[length / 2] + averageDeviations[length / 2 - 1])) /\n      0.6745;\n  }\n\n  return stddev;\n};\n\nconst determineRealTop = (peakList, x, y) => {\n  let alpha, beta, gamma, p, currentPoint;\n  for (let j = 0; j < peakList.length; j++) {\n    currentPoint = peakList[j].index; // peakList[j][2];\n    // The detected peak could be moved 1 or 2 units to left or right.\n    if (\n      y[currentPoint - 1] >= y[currentPoint - 2] &&\n      y[currentPoint - 1] >= y[currentPoint]\n    ) {\n      currentPoint--;\n    } else {\n      if (\n        y[currentPoint + 1] >= y[currentPoint] &&\n        y[currentPoint + 1] >= y[currentPoint + 2]\n      ) {\n        currentPoint++;\n      } else {\n        if (\n          y[currentPoint - 2] >= y[currentPoint - 3] &&\n          y[currentPoint - 2] >= y[currentPoint - 1]\n        ) {\n          currentPoint -= 2;\n        } else {\n          if (\n            y[currentPoint + 2] >= y[currentPoint + 1] &&\n            y[currentPoint + 2] >= y[currentPoint + 3]\n          ) {\n            currentPoint += 2;\n          }\n        }\n      }\n    }\n    // interpolation to a sin() function\n    if (\n      y[currentPoint - 1] > 0 &&\n      y[currentPoint + 1] > 0 &&\n      y[currentPoint] >= y[currentPoint - 1] &&\n      y[currentPoint] >= y[currentPoint + 1] &&\n      (y[currentPoint] !== y[currentPoint - 1] ||\n        y[currentPoint] !== y[currentPoint + 1])\n    ) {\n      alpha = 20 * Math.log10(y[currentPoint - 1]);\n      beta = 20 * Math.log10(y[currentPoint]);\n      gamma = 20 * Math.log10(y[currentPoint + 1]);\n      p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n      // console.log(alpha, beta, gamma, `p: ${p}`);\n      // console.log(x[currentPoint]+\" \"+tmp+\" \"+currentPoint);\n      peakList[j].x =\n        x[currentPoint] + (x[currentPoint] - x[currentPoint - 1]) * p;\n      peakList[j].y =\n        y[currentPoint] -\n        0.25 * (y[currentPoint - 1] - y[currentPoint + 1]) * p;\n    }\n  }\n};\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=4*LN2/(PI*FWHM)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=2/(PI*FWHM)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=1/(mu*FWHM/sqrt(4*LN2/PI)+(1-mu)*fwhm*PI*0.5)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { PseudoVoigt } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of linear combination of gaussian and lorentzian functions. The pseudo voigt\n * parameters are divided in 4 batches. 1st: centers; 2nd: heights; 3th: widths; 4th: mu's ;\n * @param t Ordinate value\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussianLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 4;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result +=\n        p[i + nL] * PseudoVoigt.fct(t - p[i], p[i + nL * 2], p[i + nL * 3]);\n    }\n    return result;\n  };\n}\n","import { Gaussian } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of gaussian functions. The Gaussian\n * parameters are divided in 3 batches. 1st: centers; 2nd: height; 3th: widths;\n * @param t Ordinate values\n * @param p Gaussian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Gaussian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import { Lorentzian } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of lorentzian functions. The Lorentzian\n * parameters are divided in 3 batches. 1st: centers; 2nd: heights; 3th: widths;\n * @param t Ordinate values\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Lorentzian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import assignDeep from 'assign-deep';\nimport getMaxValue from 'ml-array-max';\n\nimport { sumOfGaussianLorentzians } from './shapes/sumOfGaussianLorentzians';\nimport { sumOfGaussians } from './shapes/sumOfGaussians';\nimport { sumOfLorentzians } from './shapes/sumOfLorentzians';\n\nexport function checkInput(data, peaks, options) {\n  let {\n    shape = { kind: 'gaussian' },\n    optimization = {\n      kind: 'lm',\n    },\n  } = options;\n\n  if (typeof shape.kind !== 'string') {\n    throw new Error('kind should be a string');\n  }\n\n  let kind = shape.kind.toLowerCase().replace(/[^a-z]/g, '');\n\n  let paramsFunc;\n  let defaultParameters;\n  switch (kind) {\n    case 'gaussian':\n      paramsFunc = sumOfGaussians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n      };\n      break;\n    case 'lorentzian':\n      paramsFunc = sumOfLorentzians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n      };\n      break;\n    case 'pseudovoigt':\n      paramsFunc = sumOfGaussianLorentzians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        mu: {\n          init: (peak) => (peak.mu !== undefined ? peak.mu : 0.5),\n          min: () => 0,\n          max: () => 1,\n          gradientDifference: () => 0.01,\n        },\n      };\n      break;\n    default:\n      throw new Error('kind of shape is not supported');\n  }\n\n  let x = data.x;\n  let maxY = getMaxValue(data.y);\n  let y = new Array(x.length);\n  for (let i = 0; i < x.length; i++) {\n    y[i] = data.y[i] / maxY;\n  }\n\n  for (let i = 0; i < peaks.length; i++) {\n    peaks[i].y /= maxY;\n  }\n\n  let parameters = assignDeep({}, optimization.parameters, defaultParameters);\n\n  for (let key in parameters) {\n    for (let par in parameters[key]) {\n      if (!Array.isArray(parameters[key][par])) {\n        parameters[key][par] = [parameters[key][par]];\n      }\n      if (\n        parameters[key][par].length !== 1 &&\n        parameters[key][par].length !== peaks.length\n      ) {\n        throw new Error(`The length of ${key}-${par} is not correct`);\n      }\n      for (let index = 0; index < parameters[key][par].length; index++) {\n        if (typeof parameters[key][par][index] === 'number') {\n          let value = parameters[key][par][index];\n          parameters[key][par][index] = () => value;\n        }\n      }\n    }\n  }\n\n  optimization.parameters = parameters;\n\n  return {\n    y,\n    x,\n    maxY,\n    peaks,\n    paramsFunc,\n    optimization,\n  };\n}\n","import LM from 'ml-levenberg-marquardt';\n\nconst LEVENBERG_MARQUARDT = 1;\n\nexport function selectMethod(optimizationOptions = {}) {\n  let { kind, options } = optimizationOptions;\n  kind = getKind(kind);\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return {\n        algorithm: LM,\n        optimizationOptions: checkOptions(kind, options),\n      };\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nfunction checkOptions(kind, options = {}) {\n  // eslint-disable-next-line default-case\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return Object.assign({}, lmOptions, options);\n  }\n}\n\nfunction getKind(kind) {\n  if (typeof kind !== 'string') return kind;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'lm':\n    case 'levenbergmarquardt':\n      return LEVENBERG_MARQUARDT;\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nconst lmOptions = {\n  damping: 1.5,\n  maxIterations: 100,\n  errorTolerance: 1e-8,\n};\n","import { checkInput } from './checkInput';\nimport { selectMethod } from './selectMethod';\n\n// const STATE_INIT = 0;\n// const STATE_MIN = 1;\n// const STATE_MAX = 2;\n// const STATE_GRADIENT_DIFFERENCE = 3;\n\n// const X = 0;\n// const Y = 1;\n// const WIDTH = 2;\n// const MU = 3;\n\n// const keys = ['x', 'y', 'width', 'mu'];\n/**\n * Fits a set of points to the sum of a set of bell functions.\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {array} peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}]\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {object} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.parameters] - options of each parameter to be optimized e.g. For a gaussian shape\n *  it could have x, y and with properties, each of which could contain init, min, max and gradientDifference, those options will define the guess,\n *  the min and max value of the parameter (search space) and the step size to approximate the jacobian matrix respectively. Those options could be a number,\n *  array of numbers, callback, or array of callbacks. Each kind of shape has default parameters so it could be undefined.\n * @param {object} [options.optimization.parameters.x] - options for x parameter.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.init] - definition of the starting point of the parameter (the guess),\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the guess of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.min] - definition of the lower limit of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the min of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.max] - definition of the upper limit of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the max of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.gradientDifference] - definition of  the step size to approximate the jacobian matrix of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the gradientDifference of the first peak and so on.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout] - maximum time running before break in seconds.\n * @param {number} [options.optimization.options.damping=1.5]\n * @param {number} [options.optimization.options.maxIterations=100]\n * @param {number} [options.optimization.options.errorTolerance=1e-8]\n * @returns {object} - A object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peakList, options = {}) {\n  const { y, x, maxY, peaks, paramsFunc, optimization } = checkInput(\n    data,\n    peakList,\n    options,\n  );\n\n  let parameters = optimization.parameters;\n\n  let nbShapes = peaks.length;\n  let parameterKey = Object.keys(parameters);\n  let nbParams = nbShapes * parameterKey.length;\n  let pMin = new Float64Array(nbParams);\n  let pMax = new Float64Array(nbParams);\n  let pInit = new Float64Array(nbParams);\n  let gradientDifference = new Float64Array(nbParams);\n\n  for (let i = 0; i < nbShapes; i++) {\n    let peak = peaks[i];\n    for (let k = 0; k < parameterKey.length; k++) {\n      let key = parameterKey[k];\n      let init = parameters[key].init;\n      let min = parameters[key].min;\n      let max = parameters[key].max;\n      let gradientDifferenceValue = parameters[key].gradientDifference;\n      pInit[i + k * nbShapes] = init[i % init.length](peak);\n      pMin[i + k * nbShapes] = min[i % min.length](peak);\n      pMax[i + k * nbShapes] = max[i % max.length](peak);\n      gradientDifference[i + k * nbShapes] = gradientDifferenceValue[\n        i % gradientDifferenceValue.length\n      ](peak);\n    }\n  }\n\n  let { algorithm, optimizationOptions } = selectMethod(optimization);\n\n  optimizationOptions.minValues = pMin;\n  optimizationOptions.maxValues = pMax;\n  optimizationOptions.initialValues = pInit;\n  optimizationOptions.gradientDifference = gradientDifference;\n\n  let pFit = algorithm({ x, y }, paramsFunc, optimizationOptions);\n\n  let { parameterError: error, iterations } = pFit;\n  let result = { error, iterations, peaks };\n  for (let i = 0; i < nbShapes; i++) {\n    pFit.parameterValues[i + nbShapes] *= maxY;\n    for (let k = 0; k < parameterKey.length; k++) {\n      // we modify the optimized parameters\n      peaks[i][parameterKey[k]] = pFit.parameterValues[i + k * nbShapes];\n    }\n  }\n\n  return result;\n}\n","/**\n * Group peaks based on factor and add group property in peaks\n * @param {array} peakList\n * @param {number} factor\n */\n\nexport function groupPeaks(peakList, factor = 1) {\n  if (peakList.length === 0) return [];\n  let peaks = peakList.sort((a, b) => a.x - b.x);\n\n  let previousPeak = { x: Number.NEGATIVE_INFINITY, width: 1 };\n  let currentGroup = [previousPeak];\n  let groups = [];\n\n  for (let peak of peaks) {\n    if (\n      (peak.x - previousPeak.x) / (peak.width + previousPeak.width) <=\n      factor / 2\n    ) {\n      currentGroup.push(peak);\n    } else {\n      currentGroup = [peak];\n      groups.push(currentGroup);\n    }\n    peak.group = groups.length - 1;\n    previousPeak = peak;\n  }\n\n  return groups;\n}\n","import { optimize } from 'ml-spectra-fitting';\nimport { xGetFromToIndex } from 'ml-spectra-processing';\n\nimport { groupPeaks } from './groupPeaks';\n\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (width)\n * and the ratio of gaussian contribution (mu) if it's required. It supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] -\n * @param {number} [options.factorWidth = 1] - times of width to group peaks.\n * @param {number} [options.factorLimits = 2] - times of width to use to optimize peaks\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {string} [options.shape.options={}] - options depending the kind of shape\n * @param {object} [options.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options={}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout=10] - maximum time running before break in seconds.\n */\n\nexport function optimizePeaks(data, peakList, options = {}) {\n  const {\n    factorWidth = 1,\n    factorLimits = 2,\n    shape = {\n      kind: 'gaussian',\n    },\n    optimization = {\n      kind: 'lm',\n      options: {\n        timeout: 10,\n      },\n    },\n  } = options;\n\n  if (data.x[0] > data.x[1]) {\n    data.x.reverse();\n    data.y.reverse();\n  }\n\n  let groups = groupPeaks(peakList, factorWidth);\n\n  let results = [];\n  for (const peaks of groups) {\n    const firstPeak = peaks[0];\n    const lastPeak = peaks[peaks.length - 1];\n\n    const from = firstPeak.x - firstPeak.width * factorLimits;\n    const to = lastPeak.x + lastPeak.width * factorLimits;\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, { from, to });\n    // Multiple peaks\n    const currentRange = {\n      x: data.x.slice(fromIndex, toIndex),\n      y: data.y.slice(fromIndex, toIndex),\n    };\n    if (currentRange.x.length > 5) {\n      let { peaks: optimizedPeaks } = optimize(currentRange, peaks, {\n        shape,\n        optimization,\n      });\n      results = results.concat(optimizedPeaks);\n    } else {\n      results = results.concat(peaks);\n    }\n  }\n  return results;\n}\n","import { optimize } from 'ml-spectra-fitting';\n\n/**\n * This function try to join the peaks that seems to belong to a broad signal in a single broad peak.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] - options\n * @param {number} [options.width=0.25] - width limit to join peaks.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {number} [options.optimization.options.timeout = 10] - maximum time running before break in seconds.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n */\nexport function joinBroadPeaks(peakList, options = {}) {\n  let {\n    width = 0.25,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm', timeout: 10 },\n  } = options;\n  let broadLines = [];\n  // Optimize the possible broad lines\n  let max = 0;\n\n  let maxI = 0;\n\n  let count = 1;\n  for (let i = peakList.length - 1; i >= 0; i--) {\n    if (peakList[i].soft) {\n      broadLines.push(peakList.splice(i, 1)[0]);\n    }\n  }\n  // Push a feke peak\n  broadLines.push({ x: Number.MAX_VALUE });\n\n  let candidates = { x: [broadLines[0].x], y: [broadLines[0].y] };\n  let indexes = [0];\n  for (let i = 1; i < broadLines.length; i++) {\n    if (Math.abs(broadLines[i - 1].x - broadLines[i].x) < width) {\n      candidates.x.push(broadLines[i].x);\n      candidates.y.push(broadLines[i].y);\n      if (broadLines[i].y > max) {\n        max = broadLines[i].y;\n        maxI = i;\n      }\n      indexes.push(i);\n      count++;\n    } else {\n      if (count > 2) {\n        let fitted = optimize(\n          candidates,\n          [\n            {\n              x: broadLines[maxI].x,\n              y: max,\n              width: Math.abs(\n                candidates.x[0] - candidates.x[candidates.x.length - 1],\n              ),\n            },\n          ],\n          { shape, optimization },\n        );\n        let { peaks: peak } = fitted;\n        peak[0].index = Math.floor(\n          indexes.reduce((a, b) => a + b, 0) / indexes.length,\n        );\n        peak[0].soft = false;\n        peakList.push(peak[0]);\n      } else {\n        // Put back the candidates to the signals list\n        indexes.forEach((index) => {\n          peakList.push(broadLines[index]);\n        });\n      }\n      candidates = { x: [broadLines[i].x], y: [broadLines[i].y] };\n      indexes = [i];\n      max = broadLines[i].y;\n      maxI = i;\n      count = 1;\n    }\n  }\n  peakList.sort((a, b) => {\n    return a.x - b.x;\n  });\n\n  return peakList;\n}\n","import { gsd, joinBroadPeaks, optimizePeaks } from 'ml-gsd';\nimport {\n  xyExtract,\n  xNoiseSanPlot,\n  xAbsoluteMedian,\n} from 'ml-spectra-processing';\n/**\n * Implementation of the peak picking method described by Cobas in:\n * A new approach to improving automated analysis of proton NMR spectra\n * through Global Spectral Deconvolution (GSD)\n * http://www.spectrosco-pyeurope.com/images/stories/ColumnPDFs/TD_23_1.pdf\n * @param {DataXY} data - Object of kind\n * @param {object} [options={}] - options object with some parameter for GSD.\n * @param {number} [options.minMaxRatio = 0.01] - Threshold to determine if a given peak should be considered as a noise, bases on its relative height compared to the highest peak.\n * @param {number} [options.broadRatio = 0.00025] - If broadRatio is higher than 0, then all the peaks which second derivative smaller than broadRatio * maxAbsSecondDerivative will be marked with the soft mask equal to true.\n * @param {number} [options.broadWidth = 0.25] - Threshold to determine if some peak is candidate to clustering into range.\n * @param {number} [options.thresholdFactor=3] - the factor that multiplies the noise level to set up a threshold to select peaks with respect to the intensity.\n * @param {number} [options.noiseLevel = median(data.y) * (options.thresholdFactor || 3)] - Noise threshold in spectrum y units. Default is three/thresholdFactor times the absolute median of data.y.\n * @param {number} [options.factorWidth = 4] - factor to determine the width at the moment to group the peaks in signals in 'GSD.optimizePeaks' function.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @param {Boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables?\n * @param {Boolean} [options.optimize = true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @return {Array}\n */\n\nexport function xyAutoPeaksPicking(data, options = {}) {\n  const {\n    from,\n    to,\n    noiseLevel,\n    thresholdFactor = 3,\n    minMaxRatio = 0.05,\n    broadRatio = 0.00025,\n    useSanPlot = false,\n    smoothY = true,\n    optimize = false,\n    factorWidth = 4,\n    realTopDetection = true,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm' },\n    broadWidth = 0.25,\n    lookNegative = false,\n    sgOptions = { windowSize: 9, polynomial: 3 },\n  } = options;\n\n  if (from !== undefined && to !== undefined) {\n    data = xyExtract(data, [{ from, to }]);\n  }\n\n  const cutOff = getCutOff(data.y, { noiseLevel, useSanPlot, thresholdFactor });\n\n  let getPeakOptions = {\n    shape,\n    broadWidth,\n    optimize,\n    factorWidth,\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel: cutOff.positive,\n    smoothY,\n    optimization,\n    realTopDetection,\n  };\n\n  let peaks = getPeakList(data, getPeakOptions);\n\n  if (lookNegative) {\n    getPeakOptions.noiseLevel = cutOff.negative;\n    peaks.push(...getNegativePeaks(data, getPeakOptions));\n  }\n\n  return peaks;\n}\n\nfunction getPeakList(data, options) {\n  const {\n    shape,\n    broadWidth,\n    optimize,\n    factorWidth,\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel,\n    smoothY,\n    optimization,\n    realTopDetection,\n  } = options;\n\n  let peakList = gsd(data, {\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel,\n    smoothY,\n    realTopDetection,\n  });\n\n  if (broadWidth) {\n    peakList = joinBroadPeaks(peakList, {\n      width: broadWidth,\n      shape,\n      optimization,\n    });\n  }\n\n  if (optimize) {\n    peakList = optimizePeaks(data, peakList, {\n      shape,\n      factorWidth,\n      optimization,\n    });\n  }\n\n  return peakList;\n}\n\nfunction getNegativePeaks(data, options) {\n  let { x, y } = data;\n  let negativeDataY = new Float64Array(data.y.length);\n  for (let i = 0; i < negativeDataY.length; i++) {\n    negativeDataY[i] = -1 * y[i];\n  }\n\n  let peakList = getPeakList({ x, y: negativeDataY }, options);\n\n  for (let i = 0; i < peakList.length; i++) {\n    peakList[i].y *= -1;\n  }\n  return peakList;\n}\n\nfunction getCutOff(data, options = {}) {\n  const { noiseLevel, useSanPlot, thresholdFactor } = options;\n\n  const formatResult = (noiseLevel) =>\n    typeof noiseLevel === 'number'\n      ? { positive: noiseLevel, negative: -noiseLevel }\n      : noiseLevel;\n\n  if (noiseLevel) {\n    return formatResult(noiseLevel);\n  } else {\n    return useSanPlot\n      ? xNoiseSanPlot(data, { factorStd: thresholdFactor })\n      : formatResult(xAbsoluteMedian(data) * thresholdFactor);\n  }\n}\n","/*\n * This library implements the J analyser described by Cobas et al in the paper:\n * A two-stage approach to automatic determination of 1H NMR coupling constants\n */\nconst patterns = ['s', 'd', 't', 'q', 'quint', 'h', 'sept', 'o', 'n'];\nlet symRatio = 1.5;\nlet maxErrorIter1 = 2.5; // Hz\nlet maxErrorIter2 = 1; // Hz\nlet jAxisKeys = { jAxis: 'x', intensity: 'intensity' };\n\nexport default {\n  /**\n   * The compilation process implements at the first stage a normalization procedure described by Golotvin et al.\n   * embedding in peak-component-counting method described by Hoyes et al.\n   * @param {object} signal\n   * @private\n   */\n  compilePattern: function (signal, options = {}) {\n    let { jAxisKey = jAxisKeys } = options;\n    signal.multiplicity = 'm';\n    // 1.1 symmetrize\n    // It will add a set of peaks(signal.peaksComp) to the signal that will be used during\n    // the compilation process. The unit of those peaks will be in Hz\n    signal.symRank = symmetrizeChoiseBest(signal, {\n      maxError: maxErrorIter1,\n      iteration: 1,\n      jAxisKey,\n    });\n    signal.asymmetric = true;\n    // Is the signal symmetric?\n    if (signal.symRank >= 0.95 && signal.peaksComp.length < 32) {\n      signal.asymmetric = false;\n      let P1, n2, maxFlagged;\n      let k = 1;\n      let Jc = [];\n\n      // Loop over the possible number of coupling contributing to the multiplet\n      for (let n = 0; n < 9; n++) {\n        // 1.2 Normalize. It makes a deep copy of the peaks before to modify them.\n        let peaks = normalize(signal, n);\n        // signal.peaksCompX = peaks;\n        let validPattern = false; // It will change to true, when we find the good patter\n        // Lets check if the signal could be a singulet.\n        if (peaks.length === 1 && n === 0) {\n          validPattern = true;\n        } else {\n          if (peaks.length <= 1) {\n            continue;\n          }\n        }\n        // 1.3 Establish a range for the Heights Hi [peaks.intensity*0.85,peaks.intensity*1.15];\n        let ranges = getRanges(peaks);\n        n2 = Math.pow(2, n);\n\n        // 1.4 Find a combination of integer heights Hi, one from each Si, that sums to 2^n.\n        let heights = null;\n        let counter = 1;\n        while (\n          !validPattern &&\n          (heights = getNextCombination(ranges, n2)) !== null &&\n          counter < 400\n        ) {\n          // 2.1 Number the components of the multiplet consecutively from 1 to 2n,\n          // starting at peak 1\n          let numbering = new Array(heights.length);\n          k = 1;\n          for (let i = 0; i < heights.length; i++) {\n            numbering[i] = new Array(heights[i]);\n            for (let j = 0; j < heights[i]; j++) {\n              numbering[i][j] = k++;\n            }\n          }\n\n          Jc = []; // The array to store the detected j-coupling\n          // 2.2 Set j = 1; J1 = P2 - P1. Flag components 1 and 2 as accounted for.\n          let j = 1;\n          Jc.push(peaks[1].x - peaks[0].x);\n          P1 = peaks[0].x;\n          numbering[0].splice(0, 1); // Flagged\n          numbering[1].splice(0, 1); // Flagged\n          k = 1;\n          let nFlagged = 2;\n          maxFlagged = Math.pow(2, n) - 1;\n          while (Jc.length < n && nFlagged < maxFlagged && k < peaks.length) {\n            counter += 1;\n            // 4.1. Increment j. Set k to the number of the first unflagged component.\n            j++;\n            while (k < peaks.length && numbering[k].length === 0) {\n              k++;\n            }\n            if (k < peaks.length) {\n              // 4.2 Jj = Pk - P1.\n              Jc.push(peaks[k].x - peaks[0].x);\n              // Flag component k and, for each sum of the...\n              numbering[k].splice(0, 1); // Flageed\n              nFlagged++;\n              // Flag the other components of the multiplet\n              for (let u = 2; u <= j; u++) {\n                let jSum = 0;\n                for (let i = 0; i < u; i++) {\n                  jSum += Jc[i];\n                }\n                for (let i = 1; i < numbering.length; i++) {\n                  // Maybe 0.25 Hz is too much?\n                  if (Math.abs(peaks[i].x - (P1 + jSum)) < 0.25) {\n                    numbering[i].splice(0, 1); // Flageed\n                    nFlagged++;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n          // Calculate the ideal patter by using the extracted j-couplings\n          let pattern = idealPattern(Jc);\n          // Compare the ideal pattern with the proposed intensities.\n          // All the intensities have to match to accept the multiplet\n          validPattern = true;\n          for (let i = 0; i < pattern.length; i++) {\n            if (pattern[i].intensity !== heights[i]) {\n              validPattern = false;\n            }\n          }\n        }\n        // If we found a valid pattern we should inform about the pattern.\n        if (validPattern) {\n          updateSignal(signal, Jc);\n        }\n      }\n    }\n    // Before to return, change the units of peaksComp from Hz to PPM again\n    for (let i = 0; i < signal.peaksComp.length; i++) {\n      signal.peaksComp[i].x /= signal.observe;\n    }\n  },\n};\n\n/**\n * @private\n * update the signal\n * @param {*} signal\n * @param {*} Jc\n */\nfunction updateSignal(signal, Jc) {\n  // Update the limits of the signal\n  let peaks = signal.peaksComp; // Always in Hz\n  let nbPeaks = peaks.length;\n  signal.startX = peaks[0].x / signal.observe - peaks[0].width;\n  signal.stopX =\n    peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width;\n  signal.integralData.from = peaks[0].x / signal.observe - peaks[0].width * 3;\n  signal.integralData.to =\n    peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width * 3;\n  // Compile the pattern and format the constant couplings\n  signal.maskPattern = signal.mask2;\n  signal.multiplicity = abstractPattern(signal, Jc);\n  signal.pattern = signal.multiplicity; // Our library depends on this parameter, but it is old\n}\n\n/**\n * Returns the multiplet in the compact format\n * @param {object} signal\n * @param {object} Jc\n * @return {String}\n * @private\n */\nfunction abstractPattern(signal, Jc) {\n  let tol = 0.05;\n  let pattern = '';\n  let cont = 1;\n  let newNmrJs = [];\n\n  if (Jc && Jc.length > 0) {\n    Jc.sort(function (a, b) {\n      return b - a;\n    });\n\n    for (let i = 0; i < Jc.length - 1; i++) {\n      if (Math.abs(Jc[i] - Jc[i + 1]) < tol) {\n        cont++;\n      } else {\n        newNmrJs.push({\n          coupling: Math.abs(Jc[i]),\n          multiplicity: patterns[cont],\n        });\n        pattern += patterns[cont];\n        cont = 1;\n      }\n    }\n    let index = Jc.length - 1;\n    newNmrJs.push({\n      coupling: Math.abs(Jc[index]),\n      multiplicity: patterns[cont],\n    });\n    pattern += patterns[cont];\n    signal.nmrJs = newNmrJs;\n  } else {\n    pattern = 's';\n    if (Math.abs(signal.startX - signal.stopX) * signal.observe > 16) {\n      pattern = 'br s';\n    }\n  }\n  return pattern;\n}\n\n/**\n * This function creates an ideal pattern from the given J-couplings\n * @private\n * @param {Array} Jc\n * @return {*[]}\n * @private\n */\nfunction idealPattern(Jc) {\n  let hsum = Math.pow(2, Jc.length);\n  let pattern = [{ x: 0, intensity: hsum }];\n  // To split the initial height\n  for (let i = 0; i < Jc.length; i++) {\n    for (let j = pattern.length - 1; j >= 0; j--) {\n      pattern.push({\n        x: pattern[j].x + Jc[i] / 2,\n        intensity: pattern[j].intensity / 2,\n      });\n      pattern[j].x = pattern[j].x - Jc[i] / 2;\n      pattern[j].intensity = pattern[j].intensity / 2;\n    }\n  }\n  // To sum the heights in the same positions\n  pattern.sort(function compare(a, b) {\n    return a.x - b.x;\n  });\n  for (let j = pattern.length - 2; j >= 0; j--) {\n    if (Math.abs(pattern[j].x - pattern[j + 1].x) < 0.1) {\n      pattern[j].intensity += pattern[j + 1].intensity;\n      pattern.splice(j + 1, 1);\n    }\n  }\n  return pattern;\n}\n\n/**\n * Find a combination of integer heights Hi, one from each Si, that sums to 2n.\n * @param {object} ranges\n * @param {Number} value\n * @return {*}\n * @private\n */\nfunction getNextCombination(ranges, value) {\n  let half = Math.ceil(ranges.values.length * 0.5);\n  let lng = ranges.values.length;\n  let sum = 0;\n  let ok;\n  while (sum !== value) {\n    // Update the indexes to point at the next possible combination\n    ok = false;\n    while (!ok) {\n      ok = true;\n      ranges.currentIndex[ranges.active]++;\n      if (\n        ranges.currentIndex[ranges.active] >=\n        ranges.values[ranges.active].length\n      ) {\n        // In this case, there is no more possible combinations\n        if (ranges.active + 1 === half) {\n          return null;\n        } else {\n          // If this happens we need to try the next active peak\n          ranges.currentIndex[ranges.active] = 0;\n          ok = false;\n          ranges.active++;\n        }\n      } else {\n        ranges.active = 0;\n      }\n    }\n    // Sum the heights for this combination\n    sum = 0;\n    for (let i = 0; i < half; i++) {\n      sum += ranges.values[i][ranges.currentIndex[i]] * 2;\n    }\n    if (ranges.values.length % 2 !== 0) {\n      sum -= ranges.values[half - 1][ranges.currentIndex[half - 1]];\n    }\n  }\n  // If the sum is equal to the expected value, fill the array to return\n  if (sum === value) {\n    let heights = new Array(lng);\n    for (let i = 0; i < half; i++) {\n      heights[i] = ranges.values[i][ranges.currentIndex[i]];\n      heights[lng - i - 1] = ranges.values[i][ranges.currentIndex[i]];\n    }\n    return heights;\n  }\n  return null;\n}\n\n/**\n * This function generates the possible values that each peak can contribute\n * to the multiplet.\n * @param {Array} peaks Array of objects with peaks information {intensity}\n * @return {{values: Array, currentIndex: Array, active: number}}\n * @private\n */\nfunction getRanges(peaks) {\n  let ranges = new Array(peaks.length);\n  let currentIndex = new Array(peaks.length);\n  let min, max;\n  ranges[0] = [1];\n  ranges[peaks.length - 1] = [1];\n  currentIndex[0] = -1;\n  currentIndex[peaks.length - 1] = 0;\n  for (let i = 1; i < peaks.length - 1; i++) {\n    min = Math.round(peaks[i].intensity * 0.85);\n    max = Math.round(peaks[i].intensity * 1.15);\n    ranges[i] = [];\n    for (let j = min; j <= max; j++) {\n      ranges[i].push(j);\n    }\n    currentIndex[i] = 0;\n  }\n  return { values: ranges, currentIndex: currentIndex, active: 0 };\n}\n/**\n * Performs a symmetrization of the signal by using different aproximations to the center.\n * It will return the result of the symmetrization that removes less peaks from the signal\n * @param {object} signal\n * @param {Number} maxError\n * @param {Number} iteration\n * @return {*}\n * @private\n */\nfunction symmetrizeChoiseBest(signal, options = {}) {\n  let { maxError, iteration, jAxisKey = jAxisKeys } = options;\n  let symRank1 = symmetrize(signal, maxError, iteration, jAxisKey);\n  let tmpPeaks = signal.peaksComp;\n  let tmpMask = signal.mask;\n  let cs = signal.delta1;\n  signal.delta1 =\n    (signal.peaks[0].x + signal.peaks[signal.peaks.length - 1].x) / 2;\n  let symRank2 = symmetrize(signal, maxError, iteration, jAxisKey);\n  if (signal.peaksComp.length > tmpPeaks.length) {\n    return symRank2;\n  } else {\n    signal.delta1 = cs;\n    signal.peaksComp = tmpPeaks;\n    signal.mask = tmpMask;\n    return symRank1;\n  }\n}\n\n/**\n * This function will return a set of symmetric peaks that will\n * be the enter point for the patter compilation process.\n * @param {object} signal\n * @param {Number} maxError\n * @param {Number} iteration\n * @return {Number}\n * @private\n */\nfunction symmetrize(signal, maxError, iteration, key) {\n  let { jAxis, intensity } = key;\n  // Before to symmetrize we need to keep only the peaks that possibly conforms the multiplete\n  let max, min, avg, ratio, avgWidth;\n  let peaks = new Array(signal.peaks.length);\n  // Make a deep copy of the peaks and convert PPM ot HZ\n  for (let i = 0; i < peaks.length; i++) {\n    peaks[i] = {\n      x: signal.peaks[i][jAxis] * signal.observe,\n      intensity: signal.peaks[i][intensity],\n      width: signal.peaks[i].width,\n    };\n  }\n  // Join the peaks that are closer than 0.25 Hz\n  for (let i = peaks.length - 2; i >= 0; i--) {\n    if (Math.abs(peaks[i].x - peaks[i + 1].x) < 0.25) {\n      peaks[i].x =\n        peaks[i].x * peaks[i].intensity +\n        peaks[i + 1].x * peaks[i + 1].intensity;\n      peaks[i].intensity = peaks[i].intensity + peaks[i + 1].intensity;\n      peaks[i].x /= peaks[i].intensity;\n      peaks[i].intensity /= 2;\n      peaks[i].width += peaks[i + 1].width;\n      peaks.splice(i + 1, 1);\n    }\n  }\n  signal.peaksComp = peaks;\n  let nbPeaks = peaks.length;\n  let mask = new Array(nbPeaks);\n  signal.mask = mask;\n  let left = 0;\n  let right = peaks.length - 1;\n  let cs = signal.delta1 * signal.observe;\n  let middle = [(peaks[0].x + peaks[nbPeaks - 1].x) / 2, 1];\n  maxError = error(Math.abs(cs - middle[0]));\n  let heightSum = 0;\n  // We try to symmetrize the extreme peaks. We consider as candidates for symmetricing those which have\n  // ratio smaller than 3\n  for (let i = 0; i < nbPeaks; i++) {\n    mask[i] = true;\n    // heightSum += signal.peaks[i].intensity;\n    heightSum += peaks[i].intensity;\n  }\n\n  while (left <= right) {\n    mask[left] = true;\n    mask[right] = true;\n    if (left === right) {\n      if (nbPeaks > 2 && Math.abs(peaks[left].x - cs) > maxError) {\n        mask[left] = false;\n      }\n    } else {\n      max = Math.max(peaks[left].intensity, peaks[right].intensity);\n      min = Math.min(peaks[left].intensity, peaks[right].intensity);\n      ratio = max / min;\n      if (ratio > symRatio) {\n        if (peaks[left].intensity === min) {\n          mask[left] = false;\n          right++;\n        } else {\n          mask[right] = false;\n          left--;\n        }\n      } else {\n        let diffL = Math.abs(peaks[left].x - cs);\n        let diffR = Math.abs(peaks[right].x - cs);\n\n        if (Math.abs(diffL - diffR) < maxError) {\n          avg = Math.min(peaks[left].intensity, peaks[right].intensity);\n          avgWidth = Math.min(peaks[left].width, peaks[right].width);\n          peaks[left].intensity = peaks[right].intensity = avg;\n          peaks[left].width = peaks[right].width = avgWidth;\n          middle = [\n            middle[0] + (peaks[right].x + peaks[left].x) / 2,\n            middle[1] + 1,\n          ];\n        } else {\n          if (Math.max(diffL, diffR) === diffR) {\n            mask[right] = false;\n            left--;\n          } else {\n            mask[left] = false;\n            right++;\n          }\n        }\n      }\n    }\n    left++;\n    right--;\n    // Only alter cs if it is the first iteration of the sym process.\n    if (iteration === 1) {\n      cs = chemicalShift(peaks, mask);\n      // There is not more available peaks\n      if (isNaN(cs)) {\n        return 0;\n      }\n    }\n    maxError = error(Math.abs(cs - middle[0] / middle[1]));\n  }\n  // To remove the weak peaks and recalculate the cs\n  for (let i = nbPeaks - 1; i >= 0; i--) {\n    if (mask[i] === false) {\n      peaks.splice(i, 1);\n    }\n  }\n  cs = chemicalShift(peaks);\n  if (isNaN(cs)) {\n    return 0;\n  }\n  signal.delta1 = cs / signal.observe;\n  // Now, the peak should be symmetric in heights, but we need to know if it is symmetric in x\n  let symFactor = 0;\n  let weight = 0;\n  if (peaks.length > 1) {\n    for (let i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {\n      symFactor +=\n        ((3 +\n          Math.min(\n            Math.abs(peaks[i].x - cs),\n            Math.abs(peaks[peaks.length - 1 - i].x - cs),\n          )) /\n          (3 +\n            Math.max(\n              Math.abs(peaks[i].x - cs),\n              Math.abs(peaks[peaks.length - 1 - i].x - cs),\n            ))) *\n        peaks[i].intensity;\n      weight += peaks[i].intensity;\n    }\n    symFactor /= weight;\n  } else {\n    if (peaks.length === 1) {\n      symFactor = 1;\n    }\n  }\n  let newSumHeights = 0;\n  for (let i = 0; i < peaks.length; i++) {\n    newSumHeights += peaks[i].intensity;\n  }\n  symFactor -= ((heightSum - newSumHeights) / heightSum) * 0.12; // Removed peaks penalty\n  // Sometimes we need a second opinion after the first symmetrization.\n  if (symFactor > 0.8 && symFactor < 0.97 && iteration < 2) {\n    return symmetrize(signal, maxErrorIter2, 2, key);\n  } else {\n    // Center the given pattern at cs and symmetrize x\n    if (peaks.length > 1) {\n      let dxi;\n      for (let i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {\n        dxi = (peaks[i].x - peaks[peaks.length - 1 - i].x) / 2.0;\n        peaks[i].x = cs + dxi;\n        peaks[peaks.length - 1 - i].x = cs - dxi;\n      }\n    }\n  }\n  return symFactor;\n}\n/**\n * Error validator\n * @param {Number} value\n * @return {Number}\n * @private\n */\nfunction error(value) {\n  let maxError = value * 2.5;\n  if (maxError < 0.75) {\n    maxError = 0.75;\n  }\n  if (maxError > 3) {\n    maxError = 3;\n  }\n  return maxError;\n}\n/**\n * @private\n * 2 stages normalizarion of the peaks heights to Math.pow(2,n).\n * Creates a new mask with the peaks that could contribute to the multiplete\n * @param {object} signal\n * @param {Number} n\n * @return {*}\n */\nfunction normalize(signal, n) {\n  // Perhaps this is slow\n  let peaks = JSON.parse(JSON.stringify(signal.peaksComp));\n  let norm = 0;\n  let norm2 = 0;\n  for (let i = 0; i < peaks.length; i++) {\n    norm += peaks[i].intensity;\n  }\n  norm = Math.pow(2, n) / norm;\n  signal.mask2 = JSON.parse(JSON.stringify(signal.mask));\n\n  let index = signal.mask2.length - 1;\n  for (let i = peaks.length - 1; i >= 0; i--) {\n    peaks[i].intensity *= norm;\n    while (index >= 0 && signal.mask2[index] === false) {\n      index--;\n    }\n    if (peaks[i].intensity < 0.75) {\n      peaks.splice(i, 1);\n      signal.mask2[index] = false;\n    } else {\n      norm2 += peaks[i].intensity;\n    }\n    index--;\n  }\n  norm2 = Math.pow(2, n) / norm2;\n  for (let i = peaks.length - 1; i >= 0; i--) {\n    peaks[i].intensity *= norm2;\n  }\n  return peaks;\n}\n\n/**\n * @private\n * Calculates the chemical shift as the weighted sum of the peaks\n * @param {Array} peaks\n * @param {Array} mask\n * @return {Number}\n */\nfunction chemicalShift(peaks, mask) {\n  let sum = 0;\n  let cs = 0;\n  let area;\n  if (mask) {\n    for (let i = 0; i < peaks.length; i++) {\n      if (mask[i] === true) {\n        area = getArea(peaks[i]);\n        sum += area;\n        cs += area * peaks[i].x;\n      }\n    }\n  } else {\n    for (let i = 0; i < peaks.length; i++) {\n      area = getArea(peaks[i]);\n      sum += area;\n      cs += area * peaks[i].x;\n    }\n  }\n  return cs / sum;\n}\n\n/**\n * Return the area of a Lorentzian function\n * @param {object} peak - object with peak information\n * @return {Number}\n * @private\n */\nfunction getArea(peak) {\n  return Math.abs(peak.intensity * peak.width * 1.57); // 1.772453851);\n}\n","export function joinRanges(ranges) {\n  ranges.sort((a, b) => a.from - b.from);\n  for (let i = 0; i < ranges.length - 1; i++) {\n    if (ranges[i].to > ranges[i + 1].from) {\n      ranges[i].to = Math.max(ranges[i + 1].to, ranges[i].to);\n      ranges[i].signal = ranges[i].signal.concat(ranges[i + 1].signal);\n      ranges[i].integral += ranges[i + 1].integral;\n      ranges.splice(i + 1, 1);\n      i--;\n    }\n  }\n  return ranges;\n}\n","// import { Ranges } from 'spectra-data-ranges';\nimport { xyIntegration } from 'ml-spectra-processing';\n\nimport jAnalyzer from './util/jAnalyzer';\nimport { joinRanges } from './util/joinRanges';\n\n/**\n * This function clustering peaks and calculate the integral value for each range from the peak list returned from extractPeaks function.\n * @param {Object} data - spectra data\n * @param {Array} peakList - nmr signals\n * @param {Object} [options={}] - options object with some parameter for GSD, detectSignal functions.\n * @param {Number} [options.integrationSum=100] - Number of hydrogens or some number to normalize the integral data. If it's zero return the absolute integral value\n * @param {String} [options.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range ('sum', 'peaks')\n * @param {Number} [options.frequencyCluster=16] - distance limit to clustering peaks.\n * @param {Number} [options.clean=0.4] - If exits it remove all the signals with integration < clean value\n * @param {Boolean} [options.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.keepPeaks=false] - If true each signal will contain an array of peaks.\n * @param {String} [options.nucleus='1H'] - Nucleus\n * @param {String} [options.frequency=400] - Observed frequency\n * @returns {Array}\n */\n\nexport function peaksToRanges(data, peakList, options = {}) {\n  let {\n    integrationSum = 100,\n    joinOverlapRanges = true,\n    clean = 0.4,\n    compile = true,\n    integralType = 'sum',\n    frequency = 400,\n    frequencyCluster = 16,\n    keepPeaks = false,\n    nucleus = '1H',\n  } = options;\n\n  let signalOptions = {\n    integrationSum,\n    integralType,\n    frequencyCluster,\n    frequency,\n    nucleus,\n  };\n\n  if (data.x[0] > data.x[1]) {\n    data.x = data.x.reverse();\n    data.y = data.y.reverse();\n  }\n\n  let signals = detectSignals(data, peakList, signalOptions);\n  if (clean) {\n    for (let i = 0; i < signals.length; i++) {\n      if (Math.abs(signals[i].integralData.value) < clean) {\n        signals.splice(i, 1);\n      }\n    }\n  }\n\n  if (compile) {\n    let nHi, sum;\n    for (let i = 0; i < signals.length; i++) {\n      jAnalyzer.compilePattern(signals[i]);\n\n      if (\n        signals[i].maskPattern &&\n        signals[i].multiplicity !== 'm' &&\n        signals[i].multiplicity !== ''\n      ) {\n        // Create a new signal with the removed peaks\n        nHi = 0;\n        sum = 0;\n        let peaksO = [];\n        for (let j = signals[i].maskPattern.length - 1; j >= 0; j--) {\n          sum += computeArea(signals[i].peaks[j]);\n          if (signals[i].maskPattern[j] === false) {\n            let peakR = signals[i].peaks.splice(j, 1)[0];\n            peaksO.push({ x: peakR.x, y: peakR.intensity, width: peakR.width });\n            signals[i].mask.splice(j, 1);\n            signals[i].mask2.splice(j, 1);\n            signals[i].maskPattern.splice(j, 1);\n            signals[i].nbPeaks--;\n            nHi += computeArea(peakR);\n          }\n        }\n        if (peaksO.length > 0) {\n          nHi = (nHi * signals[i].integralData.value) / sum;\n          signals[i].integralData.value -= nHi;\n          let peaks1 = [];\n          for (let j = peaksO.length - 1; j >= 0; j--) {\n            peaks1.push(peaksO[j]);\n          }\n          signalOptions.integrationSum = Math.abs(nHi);\n          let ranges = detectSignals(data, peaks1, signalOptions);\n\n          for (let j = 0; j < ranges.length; j++) {\n            signals.push(ranges[j]);\n          }\n        }\n      }\n    }\n    // it was a updateIntegrals function.\n    let sumIntegral = 0;\n    let sumObserved = 0;\n    for (let i = 0; i < signals.length; i++) {\n      sumObserved += Math.abs(Math.round(signals[i].integralData.value));\n    }\n    if (sumObserved !== integrationSum) {\n      sumIntegral = integrationSum / sumObserved;\n      for (let i = 0; i < signals.length; i++) {\n        signals[i].integralData.value *= sumIntegral;\n      }\n    }\n  }\n\n  signals.sort((a, b) => {\n    return b.delta1 - a.delta1;\n  });\n\n  if (clean) {\n    for (let i = signals.length - 1; i >= 0; i--) {\n      if (Math.abs(signals[i].integralData.value) < clean) {\n        signals.splice(i, 1);\n      }\n    }\n  }\n\n  let ranges = []; //new Array(signals.length);\n  for (let i = 0; i < signals.length; i++) {\n    let signal = signals[i];\n    ranges[i] = {\n      from: signal.integralData.from,\n      to: signal.integralData.to,\n      integral: signal.integralData.value,\n      signal: [\n        {\n          kind: signal.kind || 'signal',\n          multiplicity: signal.multiplicity,\n        },\n      ],\n    };\n    if (keepPeaks) {\n      ranges[i].signal[0].peak = signal.peaks;\n    }\n    if (signal.nmrJs) {\n      ranges[i].signal[0].j = signal.nmrJs;\n    }\n    if (!signal.asymmetric || signal.multiplicity === 'm') {\n      ranges[i].signal[0].delta = signal.delta1;\n    }\n  }\n\n  if (joinOverlapRanges) ranges = joinRanges(ranges);\n  // return new Ranges(ranges);\n  return ranges;\n}\n\n/**\n * Extract the signals from the peakList and the given spectrum.\n * @param {object} data - spectra data\n * @param {array} peakList - nmr signals\n * @param {object} [options = {}]\n * @param {number} [options.integrationSum='100'] - Number of hydrogens or some number to normalize the integration data, If it's zero return the absolute integral value\n * @param {string} [options.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range\n * @param {number} [options.frequencyCluster=16] - distance limit to clustering the peaks.\n * range = frequencyCluster / observeFrequency -> Peaks withing this range are considered to belongs to the same signal1D\n * @param {string} [options.nucleus='1H'] - - Nucleus\n * @param {String} [options.frequency = 400] - Observed frequency\n * @return {array} nmr signals\n * @private\n */\nfunction detectSignals(data, peakList, options = {}) {\n  let {\n    integrationSum = 100,\n    integralType = 'sum',\n    frequencyCluster = 16,\n    frequency = 400,\n    nucleus = '1H',\n  } = options;\n\n  let signal1D, peaks;\n  let signals = [];\n  let prevPeak = { x: 100000 };\n  let spectrumIntegral = 0;\n  frequencyCluster /= frequency;\n  for (let i = 0; i < peakList.length; i++) {\n    if (Math.abs(peakList[i].x - prevPeak.x) > frequencyCluster) {\n      signal1D = {\n        nbPeaks: 1,\n        units: 'PPM',\n        startX: peakList[i].x - peakList[i].width,\n        stopX: peakList[i].x + peakList[i].width,\n        multiplicity: '',\n        pattern: '',\n        observe: frequency,\n        nucleus,\n        integralData: {\n          from: peakList[i].x - peakList[i].width * 3,\n          to: peakList[i].x + peakList[i].width * 3,\n        },\n        peaks: [\n          {\n            x: peakList[i].x,\n            intensity: peakList[i].y,\n            width: peakList[i].width,\n          },\n        ],\n      };\n      if (peakList[i].kind) signal1D.kind = peakList[i].kind;\n      signals.push(signal1D);\n    } else {\n      let tmp = peakList[i].x + peakList[i].width;\n      signal1D.stopX = Math.max(signal1D.stopX, tmp);\n      signal1D.startX = Math.min(signal1D.startX, tmp);\n      signal1D.nbPeaks++;\n      signal1D.peaks.push({\n        x: peakList[i].x,\n        intensity: peakList[i].y,\n        width: peakList[i].width,\n      });\n      signal1D.integralData.from = Math.min(\n        signal1D.integralData.from,\n        peakList[i].x - peakList[i].width * 3,\n      );\n      signal1D.integralData.to = Math.max(\n        signal1D.integralData.to,\n        peakList[i].x + peakList[i].width * 3,\n      );\n      if (peakList[i].kind) signal1D.kind = peakList[i].kind;\n    }\n    prevPeak = peakList[i];\n  }\n\n  for (let i = 0; i < signals.length; i++) {\n    peaks = signals[i].peaks;\n    let integral = signals[i].integralData;\n    let chemicalShift = 0;\n    let integralPeaks = 0;\n\n    for (let j = 0; j < peaks.length; j++) {\n      let area = computeArea(peaks[j]);\n      chemicalShift += peaks[j].x * area;\n      integralPeaks += area;\n    }\n    signals[i].delta1 = chemicalShift / integralPeaks;\n\n    if (integralType === 'sum') {\n      integral.value = xyIntegration(data, {\n        from: integral.from,\n        to: integral.to,\n      });\n    } else {\n      integral.value = integralPeaks;\n    }\n    spectrumIntegral += integral.value;\n  }\n\n  if (integrationSum > 0) {\n    let integralFactor = integrationSum / spectrumIntegral;\n    for (let i = 0; i < signals.length; i++) {\n      let integral = signals[i].integralData;\n      integral.value *= integralFactor;\n    }\n  }\n\n  return signals;\n}\n\n/**\n * Return the area of a Lorentzian function\n * @param {object} peak - object with peak information\n * @return {Number}\n * @private\n */\nfunction computeArea(peak) {\n  return Math.abs(peak.intensity * peak.width * 1.57); // todo add an option with this value: 1.772453851\n}\n","import { peaksFilterImpurities } from '../peaks/peaksFilterImpurities';\nimport { peaksToRanges } from '../peaks/peaksToRanges';\n\nimport { xyAutoPeaksPicking } from './xyAutoPeaksPicking';\n\n/**\n * Detect peaks, optimize parameters and compile multiplicity if required.\n * @param {DataXY}  data - Object of kind\n * @param {object}  [options={}] - options object with some parameter for GSD.\n * @param {object}  [options.peakPicking={}] - options to peak detection and optimization.\n * @param {number}  [options.peakPicking.minMaxRatio=0.01] - Threshold to determine if a given peak should be considered as a noise, bases on its relative height compared to the highest peak.\n * @param {number}  [options.peakPicking.broadRatio=0.00025] - If broadRatio is higher than 0, then all the peaks which second derivative smaller than broadRatio * maxAbsSecondDerivative will be marked with the soft mask equal to true.\n * @param {number}  [options.peakPicking.broadWidth=0.25] - Threshold to determine if some peak is candidate to clustering into range.\n * @param {number}  [options.peakPicking.noiseLevel=median(data.y) * (options.thresholdFactor || 3)] - Noise threshold in spectrum y units. Default is three/thresholdFactor times the absolute median of data.y.\n * @param {number}  [options.peakPicking.factorWidth=4] - factor to determine the width at the moment to group the peaks in signals in 'GSD.optimizePeaks' function.\n * @param {object}  [options.peakPicking.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string}  [options.peakPicking.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object}  [options.peakPicking.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string}  [options.peakPicking.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object}  [options.peakPicking.optimization.options={}] - options for the specific kind of algorithm.\n * @param {Boolean} [options.peakPicking.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.peakPicking.smoothY=true] - Select the peak intensities from a smoothed version of the independent variables?\n * @param {Boolean} [options.peakPicking.optimize=true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @param {Boolean} [options.peakPicking.optimize=true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @param {Number}  [options.ranges.integrationSum=100] - Number of hydrogens or some number to normalize the integral data. If it's zero return the absolute integral value\n * @param {String}  [options.ranges.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range ('sum', 'peaks')\n * @param {Number}  [options.ranges.frequencyCluster=16] - distance limit to clustering peaks.\n * @param {Number}  [options.ranges.clean=0.4] - If exits it remove all the signals with integration < clean value\n * @param {Boolean} [options.ranges.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.ranges.keepPeaks=false] - If true each signal will contain an array of peaks.\n * @param {String}  [options.ranges.nucleus='1H'] - Nucleus\n * @param {String}  [options.ranges.frequency=400] - Observed frequency\n * @param {object}  [options.impurities={}] - impurities options.\n * @param {string}  [options.impurities.solvent=''] - solvent name.\n * @param {string}  [options.impurities.error=0.025] - tolerance in ppm to assign a impurity.\n * @returns {array} - Array of ranges with {from, to, integral, signals: [{delta, j, multiplicity, peaks}]}\n */\n\nexport function xyAutoRangesPicking(data, options = {}) {\n  let peaks = xyAutoPeaksPicking(data, options.peakPicking);\n  peaks = peaksFilterImpurities(peaks, options.impurities);\n  return peaksToRanges(data, peaks, options.ranges);\n}\n","/**\n * Returns a list of likely nuclei based on an experiment string\n * This is really an hypothesis and should not be used\n * @param {string} experiment\n * @return {string[]}\n */\n\nexport function getNucleusFrom2DExperiment(experiment) {\n  if (typeof experiment !== 'string') {\n    return [];\n  }\n  experiment = experiment.toLowerCase();\n  if (experiment.includes('jres')) {\n    return ['1H'];\n  }\n  if (experiment.includes('hmbc') || experiment.includes('hsqc')) {\n    return ['1H', '13C'];\n  }\n  return ['1H', '1H'];\n}\n","/**\n * Returns an experiment string based on a pulse sequence\n * @param {string} pulse\n * @return {string}\n */\nexport function getSpectrumType(meta = {}, info = {}) {\n  if (meta === null) meta = {};\n  if (typeof meta === 'string') {\n    meta = { pulse: meta };\n  }\n\n  let spectyp;\n  if (Array.isArray(info.$SPECTYP)) {\n    spectyp = (info.$SPECTYP[0] || '').replace(/^<(.*)>$/, '$1').toLowerCase();\n  } else {\n    spectyp = (info.$SPECTYP || '').replace(/^<(.*)>$/, '$1').toLowerCase();\n  }\n\n  if (spectyp) return spectyp;\n\n  let pulse = meta.pulse;\n  if (typeof pulse !== 'string') {\n    return '';\n  }\n\n  pulse = pulse.toLowerCase();\n  if (pulse.includes('zg')) {\n    return '1d';\n  }\n\n  if (\n    pulse.includes('hsqct') ||\n    (pulse.includes('invi') && (pulse.includes('ml') || pulse.includes('di')))\n  ) {\n    return 'hsqctocsy';\n  }\n\n  if (pulse.includes('hsqc') || pulse.includes('invi')) {\n    return 'hsqc';\n  }\n\n  if (\n    pulse.includes('hmbc') ||\n    (pulse.includes('inv4') && pulse.includes('lp'))\n  ) {\n    return 'hmbc';\n  }\n\n  if (pulse.includes('cosy')) {\n    return 'cosy';\n  }\n\n  if (pulse.includes('jres')) {\n    return 'jres';\n  }\n\n  if (\n    pulse.includes('tocsy') ||\n    pulse.includes('mlev') ||\n    pulse.includes('dipsi')\n  ) {\n    return 'tocsy';\n  }\n\n  if (pulse.includes('noesy')) {\n    return 'noesy';\n  }\n\n  if (pulse.includes('roesy')) {\n    return 'roesy';\n  }\n\n  if (pulse.includes('dept')) {\n    return 'dept';\n  }\n\n  if (pulse.includes('jmod') || pulse.includes('apt')) {\n    return 'aptjmod';\n  }\n\n  return '';\n}\n","import { getNucleusFrom2DExperiment } from './getNucleusFrom2DExperiment';\nimport { getSpectrumType } from './getSpectrumType';\n\nexport function getMetaData(info, meta) {\n  const metadata = {\n    dimension: 1,\n    nucleus: [],\n    isFid: false,\n    isFt: false,\n    isComplex: false,\n  };\n\n  maybeAdd(metadata, 'title', info.TITLE);\n  maybeAdd(metadata, 'solvent', info['.SOLVENTNAME']);\n  maybeAdd(\n    metadata,\n    'pulse',\n    info['.PULSESEQUENCE'] || info['.PULPROG'] || meta.PULPROG,\n  );\n  maybeAdd(metadata, 'experiment', getSpectrumType(metadata, info));\n  maybeAdd(metadata, 'temperature', parseFloat(meta.TE || info['.TE']));\n  maybeAdd(metadata, 'frequency', parseFloat(info['.OBSERVEFREQUENCY']));\n  maybeAdd(metadata, 'type', info.DATATYPE);\n  maybeAdd(metadata, 'probe', meta.PROBHD);\n  if (meta.FNTYPE !== undefined) {\n    maybeAdd(metadata, 'acquisitionMode', parseInt(meta.FNTYPE, 10));\n  }\n  maybeAdd(metadata, 'expno', parseInt(meta.EXPNO, 10));\n  if (metadata.type) {\n    if (metadata.type.toUpperCase().indexOf('FID') >= 0) {\n      metadata.isFid = true;\n    } else if (metadata.type.toUpperCase().indexOf('SPECTRUM') >= 0) {\n      metadata.isFt = true;\n    }\n  }\n\n  if (info['.NUCLEUS']) {\n    metadata.nucleus = info['.NUCLEUS'].split(',').map((nuc) => nuc.trim());\n  } else if (info['.OBSERVENUCLEUS']) {\n    metadata.nucleus = [info['.OBSERVENUCLEUS'].replace(/[^A-Za-z0-9]/g, '')];\n  } else {\n    metadata.nucleus = getNucleusFrom2DExperiment(metadata.experiment);\n  }\n\n  metadata.dimension = metadata.nucleus.length;\n\n  if (info.SYMBOL) {\n    let symbols = info.SYMBOL.split(/[, ]+/);\n    if (symbols.includes('R') && symbols.includes('I')) {\n      metadata.isComplex = true;\n    }\n  }\n\n  if (meta.DATE) {\n    metadata.date = new Date(meta.DATE * 1000).toISOString();\n  }\n  return metadata;\n}\n\nfunction maybeAdd(obj, name, value) {\n  if (value !== undefined) {\n    if (typeof value === 'string') {\n      if (value.startsWith('<') && value.endsWith('>')) {\n        value = value.substring(1, value.length - 2);\n      }\n      obj[name] = value.trim();\n    } else {\n      obj[name] = value;\n    }\n  }\n}\n","import { convert } from 'jcampconverter';\nimport { xyAutoRangesPicking } from 'nmr-processing';\n\nimport { getMetaData } from './getMetaData';\n\nexport const fromInfo = getMetaData;\n\n/**\n * Object containing parsed metadata\n * @name NMRMetadata\n * @typedef {object} NMRMetadata\n * @property {number} dimension\n * @property {number[]} nucleus\n * @property {string} title\n * @property {string} solvent\n * @property {string} pulse\n * @property {string} experiment\n * @property {number} temperature - Temperature in Kelvin\n * @property {number} frequency\n * @property {string} probe\n * @property {string} acquisitionMode\n * @property {number} expno - Experience number\n * @property {string} date - Date in ISO string format\n * @property {object} ranges\n */\n\nconst defaultOptions = {\n  computeRanges: false,\n};\n\nconst defaultRangesOptions = {\n  integrationSum: 100,\n  clean: 0.4,\n  compile: true,\n  integralType: 'sum',\n};\n\nconst defaultPeaksOptions = {\n  thresholdFactor: 0.85,\n};\n\n/**\n * Returns a metadata object from JCAMP\n * @param {string} jcampData\n * @param {object} [options={}]\n * @param {boolean} [options.computeRanges=false]\n * @param {number} [options.ranges] - options for ranges computation\n * @return {NMRMetadata} metadata\n */\nexport function fromJcamp(jcampData, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options,\n  };\n\n  const parsedJcamp = convert(jcampData, {\n    keepRecordsRegExp: /.*/,\n    canonicMetadataLabels: true,\n    withoutXY: false,\n  }).flatten[0];\n\n  let metadata = getMetaData(parsedJcamp.info, parsedJcamp.meta);\n\n  if (\n    options.computeRanges &&\n    metadata.isFt &&\n    metadata.dimension === 1 &&\n    metadata.nucleus[0] === '1H'\n  ) {\n    let { ranges = {}, impurities = {}, peakPicking = {} } = options;\n\n    const rangesOptions = { ...defaultRangesOptions, ...ranges };\n    const peaksOptions = { ...defaultPeaksOptions, ...peakPicking };\n\n    if (metadata.solvent) {\n      impurities.solvent = metadata.solvent;\n    }\n\n    metadata.range = xyAutoRangesPicking(parsedJcamp.spectra[0].data, {\n      impurities,\n      ranges: rangesOptions,\n      peakPicking: peaksOptions,\n    });\n  }\n\n  return metadata;\n}\n\nexport { getSpectrumType } from './getSpectrumType';\n","import { fromJcamp } from 'nmr-metadata';\n\nimport common from '../common';\n\nconst isFid = /[^a-z]fid[^a-z]/i;\nconst replaceFid = /[^a-z]fid[^a-z]?/i;\nexport default {\n  find: (nmr, filename) => {\n    let reference = getReference(filename);\n\n    return nmr.find((nmr) => {\n      return getReference(common.getFilename(nmr)) === reference;\n    });\n  },\n\n  getProperty: (filename) => {\n    const extension = common.getExtension(filename);\n    if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n      if (isFid.test(filename)) {\n        return 'jcampFID';\n      }\n    }\n    return common.getTargetProperty(filename);\n  },\n\n  process: (filename, content) => {\n    const extension = common.getExtension(filename);\n    let metaData = {};\n    if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n      let textContent = common.getTextContent(content);\n      metaData = fromJcamp(textContent);\n    }\n    return metaData;\n  },\n\n  jpath: ['spectra', 'nmr'],\n};\n\nconst reg2 = /(.*)\\.(.*)/;\n\nfunction getReference(filename) {\n  if (typeof filename === 'undefined') return undefined;\n\n  let reference = common.getBasename(filename);\n  reference = reference.replace(reg2, '$1');\n\n  if (isFid.test(filename)) {\n    reference = reference.replace(replaceFid, '');\n  }\n  return reference;\n}\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'oan'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'pelletHardness'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","export default {\n  jpath: ['physical'],\n  getEmpty() {\n    return {};\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'raman'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'thermogravimetricAnalysis'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'uv'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['video'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'voidVolume'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xps'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xray'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xrd'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xrf'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","const lib = {};\nlib['reaction'] = {}\nimport reactiongeneral from './reaction/general';\nlib['reaction']['general'] = reactiongeneral;\n\nlib['sample'] = {}\nimport samplechromatogram from './sample/chromatogram';\nlib['sample']['chromatogram'] = samplechromatogram;\n\nimport samplecyclicVoltammetry from './sample/cyclicVoltammetry';\nlib['sample']['cyclicVoltammetry'] = samplecyclicVoltammetry;\n\nimport sampledifferentialCentrifugalSedimentation from './sample/differentialCentrifugalSedimentation';\nlib['sample']['differentialCentrifugalSedimentation'] = sampledifferentialCentrifugalSedimentation;\n\nimport sampledifferentialScanningCalorimetry from './sample/differentialScanningCalorimetry';\nlib['sample']['differentialScanningCalorimetry'] = sampledifferentialScanningCalorimetry;\n\nimport sampledls from './sample/dls';\nlib['sample']['dls'] = sampledls;\n\nimport sampleelementAnalysis from './sample/elementAnalysis';\nlib['sample']['elementAnalysis'] = sampleelementAnalysis;\n\nimport samplegenbank from './sample/genbank';\nlib['sample']['genbank'] = samplegenbank;\n\nimport samplegeneral from './sample/general';\nlib['sample']['general'] = samplegeneral;\n\nimport samplehgPorosimetry from './sample/hgPorosimetry';\nlib['sample']['hgPorosimetry'] = samplehgPorosimetry;\n\nimport sampleicp from './sample/icp';\nlib['sample']['icp'] = sampleicp;\n\nimport sampleimage from './sample/image';\nlib['sample']['image'] = sampleimage;\n\nimport sampleir from './sample/ir';\nlib['sample']['ir'] = sampleir;\n\nimport sampleisotherm from './sample/isotherm';\nlib['sample']['isotherm'] = sampleisotherm;\n\nimport sampleiv from './sample/iv';\nlib['sample']['iv'] = sampleiv;\n\nimport samplemass from './sample/mass';\nlib['sample']['mass'] = samplemass;\n\nimport samplenmr from './sample/nmr';\nlib['sample']['nmr'] = samplenmr;\n\nimport sampleoan from './sample/oan';\nlib['sample']['oan'] = sampleoan;\n\nimport samplepelletHardness from './sample/pelletHardness';\nlib['sample']['pelletHardness'] = samplepelletHardness;\n\nimport samplephysical from './sample/physical';\nlib['sample']['physical'] = samplephysical;\n\nimport sampleraman from './sample/raman';\nlib['sample']['raman'] = sampleraman;\n\nimport samplethermogravimetricAnalysis from './sample/thermogravimetricAnalysis';\nlib['sample']['thermogravimetricAnalysis'] = samplethermogravimetricAnalysis;\n\nimport sampleuv from './sample/uv';\nlib['sample']['uv'] = sampleuv;\n\nimport samplevideo from './sample/video';\nlib['sample']['video'] = samplevideo;\n\nimport samplevoidVolume from './sample/voidVolume';\nlib['sample']['voidVolume'] = samplevoidVolume;\n\nimport samplexps from './sample/xps';\nlib['sample']['xps'] = samplexps;\n\nimport samplexray from './sample/xray';\nlib['sample']['xray'] = samplexray;\n\nimport samplexrd from './sample/xrd';\nlib['sample']['xrd'] = samplexrd;\n\nimport samplexrf from './sample/xrf';\nlib['sample']['xrf'] = samplexrf;\n\nexport default lib;","import defaultType from './types/default.js';\nimport lib from './types/index';\n\nexport function getType(type, kind, custom) {\n  if (kind) {\n    if (lib[kind][type]) {\n      return Object.assign({}, defaultType, lib[kind][type], custom);\n    }\n  } else {\n    for (kind in lib) {\n      if (lib[kind][type]) {\n        return Object.assign(\n          {},\n          defaultType,\n          lib[kind].default,\n          lib[kind][type],\n          custom,\n        );\n      }\n    }\n  }\n\n  return Object.assign({}, defaultType);\n}\n\nexport function getAllTypes(kind, custom) {\n  let all = [];\n\n  for (let type in lib[kind]) {\n    if (type !== 'default') {\n      all.push(getType(type, kind, custom));\n    }\n  }\n  return all;\n}\n\nexport default lib;\n","/*\n    Modified from https://github.com/justmoon/node-extend\n    Copyright (c) 2014 Stefan Thomas\n */\n\n/* eslint prefer-rest-params: 0 */\n\nlet hasOwn = Object.prototype.hasOwnProperty;\nlet toStr = Object.prototype.toString;\n\nlet isArray = function isArray(arr) {\n  if (typeof Array.isArray === 'function') {\n    return Array.isArray(arr);\n  }\n\n  return toStr.call(arr) === '[object Array]';\n};\n\nlet isPlainObject = function isPlainObject(obj) {\n  if (!obj || toStr.call(obj) !== '[object Object]') {\n    return false;\n  }\n\n  let hasOwnConstructor = hasOwn.call(obj, 'constructor');\n  let hasIsPrototypeOf =\n    obj.constructor &&\n    obj.constructor.prototype &&\n    hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n  // Not own constructor property must be Object\n  if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n    return false;\n  }\n\n  // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n  let key;\n  for (key in obj) {\n    /**/\n  }\n\n  return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\nexport default function defaults() {\n  let options, name, src, copy, copyIsArray, clone;\n  let target = arguments[0];\n  let i = 1;\n  let length = arguments.length;\n  let deep = false;\n\n  // Handle a deep copy situation\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {};\n    // skip the boolean and the target\n    i = 2;\n  } else if (\n    (typeof target !== 'object' && typeof target !== 'function') ||\n    target == null\n  ) {\n    target = {};\n  }\n\n  for (; i < length; ++i) {\n    options = arguments[i];\n    // Only deal with non-null/undefined values\n    if (options != null) {\n      // Extend the base object\n      for (name in options) {\n        src = target[name];\n        copy = options[name];\n\n        // Prevent never-ending loop\n        if (target !== copy) {\n          // Recurse if we're merging plain objects or arrays\n          if (\n            deep &&\n            copy &&\n            (isPlainObject(copy) || (copyIsArray = isArray(copy)))\n          ) {\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isPlainObject(src) ? src : {};\n            }\n\n            // Never move original objects, clone them\n            if (typeof target[name] === 'undefined') {\n              target[name] = defaults(deep, clone, copy);\n            } else {\n              defaults(deep, clone, copy);\n            }\n\n            // Don't bring in undefined values\n          } else if (typeof copy !== 'undefined') {\n            if (typeof target[name] === 'undefined') {\n              target[name] = copy;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Return the modified object\n  return target;\n}\n","import { getAllTypes, getType } from './types';\nimport util from './types/common';\nimport defaults from './util/defaults';\n\nconst elnPlugin = {\n  util,\n  /**\n   *\n   * @param {*} type\n   * @param {*} doc\n   * @param {*} content\n   * @param {*} customMetadata\n   * @param {object} [options={}]\n   * @param {boolean} [options.keepContent=false]\n   */\n  process(type, doc, content, customMetadata, options = {}) {\n    let filename = content.filename;\n    const typeProcessor = getType(type);\n    const arr = createFromJpath(doc, typeProcessor);\n    const entry = typeProcessor.find(arr, filename);\n    const property = typeProcessor.getProperty(filename, content);\n    if (property === undefined) {\n      throw new Error(`Could not get property of ${filename} (type ${type}`);\n    }\n    const metadata = typeProcessor.process(filename, content);\n\n    metadata[property] = {\n      filename: elnPlugin.getFilename(type, content.filename),\n    };\n\n    if (options.keepContent) {\n      metadata[property].data = util.getContent(content, property);\n    }\n\n    if (entry) {\n      Object.assign(entry, metadata, customMetadata);\n    } else {\n      Object.assign(metadata, customMetadata);\n      arr.push(metadata);\n    }\n\n    return doc;\n  },\n\n  getType(type, doc, kind) {\n    const typeProcessor = getType(type, kind);\n    return getFromJpath(doc, typeProcessor);\n  },\n\n  getFilename(type, filename) {\n    let match = /[^/]*$/.exec(filename);\n    if (match) filename = match[0];\n    const typeProcessor = getType(type);\n    const jpath = typeProcessor.jpath;\n    if (!jpath) throw new Error('No such type or no jpath');\n    return jpath.concat(filename).join('/');\n  },\n\n  getEmpty(kind, content) {\n    const typeProcessors = getAllTypes(kind);\n    if (!content) content = {};\n    for (let i = 0; i < typeProcessors.length; i++) {\n      createFromJpath(content, typeProcessors[i]);\n    }\n\n    return content;\n  },\n\n  defaults(kind, content) {\n    let empty = elnPlugin.getEmpty(kind);\n    defaults(true, content, empty);\n    return content;\n  },\n};\n\nfunction createFromJpath(doc, typeProcessor) {\n  const jpath = typeProcessor.jpath;\n  if (!jpath) {\n    throw new Error('createFromJpath: undefined jpath argument');\n  }\n  for (let i = 0; i < jpath.length; i++) {\n    if (doc[jpath[i]] === undefined) {\n      if (i !== jpath.length - 1) {\n        doc[jpath[i]] = {};\n      } else {\n        doc[jpath[i]] = typeProcessor.getEmpty();\n      }\n    }\n    doc = doc[jpath[i]];\n  }\n  if (jpath.length === 0) {\n    doc = Object.assign(doc, typeProcessor.getEmpty());\n  }\n  return doc;\n}\n\nfunction getFromJpath(doc, typeProcessor) {\n  if (!doc) return undefined;\n  const jpath = typeProcessor.jpath;\n  if (!jpath) throw new Error('getFromJpath: undefined jpath argument');\n  for (let i = 0; i < jpath.length; i++) {\n    if (doc[jpath[i]] === undefined) {\n      return undefined;\n    }\n    doc = doc[jpath[i]];\n  }\n  return doc;\n}\n\nexport default elnPlugin;\n"],"names":["process","getEmpty","jpath","code","date","Date","now","procedure","products","reagents","conditions","keywords","remarks","title","reactionRXN","root","stringFromCharCode","String","fromCharCode","ucs2decode","string","output","counter","length","value","extra","charCodeAt","push","ucs2encode","array","index","checkScalarValue","codePoint","Error","toString","toUpperCase","createByte","shift","encodeCodePoint","symbol","utf8encode","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","utf8decode","tmp","version","encode","decode","exports","IOBuffer","notNetcdf","statement","reason","TypeError","padding","buffer","offset","skip","readName","nameLength","readUint32","name","readChars","require$$0","types","BYTE","CHAR","SHORT","INT","FLOAT","DOUBLE","num2str","type","Number","num2bytes","str2num","readNumber","size","bufferReader","numbers","Array","i","readType","readBytes","trimNull","readInt16","bind","readInt32","readFloat32","readFloat64","undefined","substring","typesModule","nonRecord","variable","data","record","recordDimension","width","step","recordStep","currentOffset","seek","utils","require$$1","ZERO","NC_DIMENSION","NC_VARIABLE","NC_ATTRIBUTE","header","dimList","dimensionsList","id","recordId","recordName","dimensions","globalAttributes","attributesList","variables","variablesList","NC_UNLIMITED","dimensionSize","dim","gAttList","attributeSize","attributes","gAtt","varList","variableSize","v","dimensionality","dimensionsIds","varSize","header_1","result","dimension","padEnd","attribute","JSON","parse","stringify","getDataVariable","isNaN","join","toString_1","require$$2","readHeader","require$$3","require$$4","NetCDFReader","constructor","setBigEndian","readByte","getAttribute","attributeName","find","val","getDataVariableAsString","variableName","call","dataVariableExists","attributeExists","src","agilentGCMS","reader","time","tic","pointCount","massValues","intensityValues","ms","j","times","series","agilentGCMS_1","finniganGCMS","scanIndex","brukerGCMS","agilentHPLC","intensities","numberPoints","detector","channel","match","replace","delayTime","runtimeLength","samplingInterval","Math","abs","agilentHPLC_1","finniganGCMS_1","shimadzuGCMS","shimadzuGCMS_1","advionGCMS","advionGCMS_1","aiaTemplate","interval","currentTime","aiaTemplate_1","require$$5","require$$6","require$$7","netcdfGcms","options","instrument_mfr","dataset_origin","mass_values","detector_name","aia_template_revision","source_file_format","ans","meta","addMeta","addVariables","fromAgilentGCMS","fromAgilentHPLC","fromFinniganGCMS","fromAiaTemplate","item","srcModule","w","findBest","atobNative","Buffer","atobBrowserify","a","base64js","atobWebWorker_iOS","buf","b64ToByteArray","prototype","map","ch","atobBest","atob","module","window","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","len","getLens","b64","validLen","indexOf","placeHoldersLen","lens","_byteLength","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","extraBytes","parts","maxChunkLength","len2","parseString","lowercase","toLowerCase","number","includes","GC_MS_FIELDS","complexChromatogram","spectra","chromatogram","existingGCMSFields","label","convertMSFieldToLabel","spectrum","pageValue","x","y","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentData","currentX","firstX","currentY","firstY","endLine","ascii","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","pow","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","Object","keys","parseXY","parseXYZ","key","lines","split","values","trim","xFactor","logs","numberOfVariables","forEach","parseXYA","removeSymbolRegExp","isXYAdata","isAnyArray","object","endsWith","d","e","f","g","h","c","b","_ref","median","input","isArray","quickSelectMedian","slice","convertTo3DZ","minZ","maxZ","ySize","xSize","z","lastX","lastY","reverse","medians","row","Float64Array","from","getMedian","minX","min","maxX","max","minY","maxY","noise","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","x0","xN","dx","y0","yN","dy","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","factor","noiseMultiplier","exp","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","minMax","arguments","_options$fromIndex","fromIndex","_options$toIndex","toIndex","isInteger","maxValue","minValue","rescale","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","numStr","precise","toPrecision","exponential","toExponential","eIndex","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","expm1","floor","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","column","checkColumnIndices","rowOut","some","r","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","reducedEchelonForm","m","n","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","NaN","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","standardDeviation","center","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","_typeof","obj","iterator","sequentialFill","_options","_options$from","_options$to","to","_options$size","_i","SavitzkyGolay","ys","xs","windowSize","derivative","polynomial","half","np","weights","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","GramPoly","Grampoly","GenFact","gf","Weight","checkOptions","parameterizedFunction","timeout","minValues","maxValues","initialValues","damping","dampingStepUp","dampingStepDown","maxIterations","errorTolerance","centralDifference","gradientDifference","improvementThreshold","parameters","nbPoints","parLen","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","filler","checkTimeout","endTime","weightSquare","errorCalculation","error","func","gradientFunction","evaluatedData","params","paramFunction","nbParams","param","delta","auxParams","funcParam","point","funcParam2","matrixFunction","gradientFunc","residualError","inverseMatrix","jacobianWeigthResidualError","perturbations","levenbergMarquardt","converged","iteration","previousError","improvementMetric","parameterValues","parameterError","iterations","xAbsolute","tmpArray","xAbsoluteMedian","xFindClosestIndex","target","low","high","xGetFromToIndex","global","factory","this","ascending","bisector","compare","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","descending","number$1","deviation","extent","constant","range","stop","e10","e5","e2","ticks","tickStep","step0","step1","LN10","sturges","LN2","histogram","domain","xz","x1","tz","pop","bins","bin","_","thresholds","quantile","freedmanDiaconis","scott","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","zip","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","quincunx","u","smoothingSpline","sigma","lambda","mu","SplineInterpolator","xIn","yIn","interpolate","xStart","xStop","Infinity","curve","nInterval","vals","splineInterpolator","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","POSITIVE_INFINITY","NEGATIVE_INFINITY","rayleighCdf","xNoiseSanPlot","mask","cutOff","refine","magnitudeMode","scaleFactor","factorStd","fixOffset","filter","_e","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","simpleNormInv","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","averageValue","reduce","kiSqrt","xTraining","createArray","yTraining","finalInput","interp","yValue","SQRT2","logBaseY","logOfBase","xAxis","xyCheck","zonesNormalize","zones","zone","currentZone","xyExtract","newX","newY","position","loop","xyIntegration","currentxyIntegration","isEnumerable","propertyIsEnumerable","getSymbols","getOwnPropertySymbols","assignSymbols","isObject","args","arg","names","isValidKey","assign","assignDeepModule","isPrimitive","postProcessingNMR","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","xUnits","nucleus","startsWith","$NUC2","f2index","$NUC1","yType","unit","pageSymbolIndex","pageSymbol","units","ratio0","gyromagneticRatio","ratio1","ratio","profiling","action","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","kind","xIndex","yIndex","firstVariable","secondVariable","charAt","lowerCaseSymbol","vardim","varname","yUnits","prepareSpectrum","ntuplesSeparatorRegExp","Spectrum","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","convert","jcamp","ensureString","entries","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","dataValue","infos","datatable","parentEntry","info","dataType","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","flatten","common","getBasename","filename","base","getExtension","extension","getFilename","typeEntry","basenameFind","typeEntries","reference","getTargetProperty","getContent","content","getTextContent","getBufferContent","encoding","getMetaFromJcamp","metaData","textContent","parsed","cheminfo","bufferContent","parseNetCDF","getProperty","months","MONTHS","genbankToJson","sequence","resultsArray","currentFeatureNote","genbankAnnotationKey","LOCUS_TAG","DEFINITION_TAG","ACCESSION_TAG","VERSION_TAG","KEYWORDS_TAG","SOURCE_TAG","ORGANISM_TAG","REFERENCE_TAG","AUTHORS_TAG","CONSORTIUM_TAG","TITLE_TAG","JOURNAL_TAG","PUBMED_TAG","REMARK_TAG","FEATURES_TAG","BASE_COUNT_TAG","ORIGIN_TAG","END_SEQUENCE_TAG","fieldName","subFieldType","featureLocationIndentation","lastLineWasFeaturesTag","lastLineWasLocation","hasFoundLocus","lineFieldName","getLineFieldName","getLineVal","isSubKey","isSubKeyword","isKey","isKeyword","parseLocus","parseFeatures","parseOrigin","parseMultiLineField","ref","references","parseReference","endSeq","postProcessCurSeq","getCurrentFeature","features","postProcessGenbankFeature","removeFieldName","locusName","moleculeType","circular","seq","dateStr","genbankDivision","dateMatch","setFullYear","setUTCMonth","setDate","setUTCHours","setMinutes","setSeconds","setMilliseconds","toISOString","fName","subType","refs","lastRef","strand","getLengthOfWhiteSpaceBeforeStartOfLetters","isFeatureLineRunon","parseFeatureLocation","isNote","parseFeatureNote","newFeature","feat","notes","qual","locStr","locArr","lineArr","currentNotes","resultKey","fieldValue","substr","gene","ApEinfo_label","organism","locus_tag","note","indentationOfLine","trimmed","exec","genbank","toReturn","genbankParser","parsedSequence","description","mf","molfile","mw","keyword","impurities","cdcl3","tms","proton","coupling","multiplicity","solvent","h2o","acetic_acid","acetone","acetonitrile","benzene","bhtb","chloroform","cyclohexane","dichloromethane","diethyl_ether","diglyme","dimethylacetamide","dimethylformamide","dimethyl_sulfoxide","dioxane","ethanol","ethyl_acetate","ethyl_methyl_ketone","ethylene_glycol","hmpag","methanol","nitromethane","pyridine","silicone_greasei","tetrahydrofuran","toluene","triethylamine","dmso","c6d6","cd3cn","cd3od","d2o","toCheck","peaksFilterImpurities","peakList","remove","solventImpurities","impurity","impurityShifts","checkImpurity","tolerance","difference","asymmetric","GAUSSIAN_EXP_FACTOR","ROOT_PI_OVER_LN2","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","Gaussian","widthToFWHM","fwhmToWidth","fct","getArea","getFactor","getData","Lorentzian","PseudoVoigt","lorentzian","gaussian","getFactorLorentzian","getFactorGaussian","gsd","noiseLevel","sgOptions","shape","smoothY","heightFactor","broadRatio","maxCriteria","minMaxRatio","derivativeThreshold","realTopDetection","equalSpaced","isEqualSpaced","getNoiseLevel","yData","dY","ddY","SG","xData","dX","maxDdy","lastMax","lastMin","minddY","intervalL","intervalR","broadMask","widthProcessor","getShape1D","signals","lastK","possible","frequency","distanceJ","minDistance","gettingCloser","MAX_VALUE","soft","yLeft","yRight","height","determineRealTop","maxDx","minDx","stddev","averageDeviations","beta","gamma","currentPoint","PI","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","fwhm","sd","area","setFWHM","setHeight","squareFWHM","setMu","sumOfGaussianLorentzians","nL","sumOfGaussians","sumOfLorentzians","checkInput","peaks","optimization","paramsFunc","defaultParameters","init","peak","getMaxValue","assignDeep","par","LEVENBERG_MARQUARDT","selectMethod","optimizationOptions","getKind","algorithm","LM","lmOptions","optimize","nbShapes","parameterKey","pMin","pMax","pInit","gradientDifferenceValue","pFit","groupPeaks","previousPeak","currentGroup","groups","group","optimizePeaks","factorWidth","factorLimits","results","firstPeak","lastPeak","currentRange","optimizedPeaks","concat","joinBroadPeaks","broadLines","candidates","fitted","xyAutoPeaksPicking","thresholdFactor","useSanPlot","broadWidth","lookNegative","getCutOff","getPeakOptions","getPeakList","getNegativePeaks","negativeDataY","formatResult","patterns","symRatio","maxErrorIter1","maxErrorIter2","jAxisKeys","jAxis","compilePattern","signal","jAxisKey","symRank","symmetrizeChoiseBest","maxError","peaksComp","n2","maxFlagged","Jc","normalize","validPattern","ranges","getRanges","heights","getNextCombination","numbering","nFlagged","jSum","pattern","idealPattern","updateSignal","observe","nbPeaks","startX","stopX","integralData","maskPattern","mask2","abstractPattern","cont","newNmrJs","nmrJs","hsum","lng","ok","currentIndex","active","symRank1","symmetrize","tmpPeaks","tmpMask","delta1","symRank2","avg","avgWidth","heightSum","diffL","diffR","chemicalShift","symFactor","weight","newSumHeights","dxi","joinRanges","integral","peaksToRanges","integrationSum","joinOverlapRanges","clean","compile","integralType","frequencyCluster","keepPeaks","signalOptions","detectSignals","nHi","jAnalyzer","peaksO","computeArea","peakR","peaks1","sumIntegral","sumObserved","signal1D","prevPeak","spectrumIntegral","integralPeaks","integralFactor","xyAutoRangesPicking","peakPicking","getNucleusFrom2DExperiment","experiment","getSpectrumType","pulse","spectyp","$SPECTYP","getMetaData","metadata","isFid","isFt","isComplex","maybeAdd","TITLE","PULPROG","parseFloat","TE","DATATYPE","PROBHD","FNTYPE","EXPNO","nuc","SYMBOL","symbols","DATE","computeRanges","defaultRangesOptions","defaultPeaksOptions","fromJcamp","jcampData","parsedJcamp","rangesOptions","peaksOptions","replaceFid","nmr","getReference","test","reg2","lib","reactiongeneral","samplechromatogram","samplecyclicVoltammetry","sampledifferentialCentrifugalSedimentation","sampledifferentialScanningCalorimetry","sampledls","sampleelementAnalysis","samplegenbank","samplegeneral","samplehgPorosimetry","sampleicp","sampleimage","sampleir","sampleisotherm","sampleiv","samplemass","samplenmr","sampleoan","samplepelletHardness","samplephysical","sampleraman","samplethermogravimetricAnalysis","sampleuv","samplevideo","samplevoidVolume","samplexps","samplexray","samplexrd","samplexrf","getType","custom","defaultType","default","getAllTypes","all","hasOwn","hasOwnProperty","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","defaults","copyIsArray","deep","elnPlugin","util","doc","customMetadata","typeProcessor","createFromJpath","property","keepContent","getFromJpath","typeProcessors","empty"],"mappings":";;;;;;;;;;;;AAAA,oBAAe;EACbA,EAAAA,OAAO,GAAG;EACR,WAAO,EAAP;EACD,GAHY;;EAKbC,EAAAA,QAAQ,GAAG;EACT,WAAO,EAAP;EACD;;EAPY,CAAf;;ACAA,wBAAe;EACbC,EAAAA,KAAK,EAAE,EADM;;EAEbD,EAAAA,QAAQ,GAAG;EACT,WAAO;EACLE,MAAAA,IAAI,EAAE,EADD;EAELC,MAAAA,IAAI,EAAEC,IAAI,CAACC,GAAL,EAFD;EAGLC,MAAAA,SAAS,EAAE,EAHN;EAILC,MAAAA,QAAQ,EAAE,EAJL;EAKLC,MAAAA,QAAQ,EAAE,EALL;EAMLC,MAAAA,UAAU,EAAE,EANP;EAOLC,MAAAA,QAAQ,EAAE,EAPL;EAQLC,MAAAA,OAAO,EAAE,EARJ;EASLC,MAAAA,KAAK,EAAE,EATF;EAULC,MAAAA,WAAW,EAAE;EAVR,KAAP;EAYD;;EAfY,CAAf;;;;;;;;;;;;;;;;;;;;;;;;;;;ECCE,aAASC,IAAT,EAAe;EAEhB,QAAIC,kBAAkB,GAAGC,MAAM,CAACC,YAAhC,CAFgB;;EAKhB,aAASC,UAAT,CAAoBC,MAApB,EAA4B;EAC3B,UAAIC,MAAM,GAAG,EAAb;EACA,UAAIC,OAAO,GAAG,CAAd;EACA,UAAIC,MAAM,GAAGH,MAAM,CAACG,MAApB;EACA,UAAIC,KAAJ;EACA,UAAIC,KAAJ;;EACA,aAAOH,OAAO,GAAGC,MAAjB,EAAyB;EACxBC,QAAAA,KAAK,GAAGJ,MAAM,CAACM,UAAP,CAAkBJ,OAAO,EAAzB,CAAR;;EACA,YAAIE,KAAK,IAAI,MAAT,IAAmBA,KAAK,IAAI,MAA5B,IAAsCF,OAAO,GAAGC,MAApD,EAA4D;;EAE3DE,UAAAA,KAAK,GAAGL,MAAM,CAACM,UAAP,CAAkBJ,OAAO,EAAzB,CAAR;;EACA,cAAI,CAACG,KAAK,GAAG,MAAT,KAAoB,MAAxB,EAAgC;;EAC/BJ,YAAAA,MAAM,CAACM,IAAP,CAAY,CAAC,CAACH,KAAK,GAAG,KAAT,KAAmB,EAApB,KAA2BC,KAAK,GAAG,KAAnC,IAA4C,OAAxD;EACA,WAFD,MAEO;;;EAGNJ,YAAAA,MAAM,CAACM,IAAP,CAAYH,KAAZ;EACAF,YAAAA,OAAO;EACP;EACD,SAXD,MAWO;EACND,UAAAA,MAAM,CAACM,IAAP,CAAYH,KAAZ;EACA;EACD;;EACD,aAAOH,MAAP;EACA,KA7Be;;;EAgChB,aAASO,UAAT,CAAoBC,KAApB,EAA2B;EAC1B,UAAIN,MAAM,GAAGM,KAAK,CAACN,MAAnB;EACA,UAAIO,KAAK,GAAG,CAAC,CAAb;EACA,UAAIN,KAAJ;EACA,UAAIH,MAAM,GAAG,EAAb;;EACA,aAAO,EAAES,KAAF,GAAUP,MAAjB,EAAyB;EACxBC,QAAAA,KAAK,GAAGK,KAAK,CAACC,KAAD,CAAb;;EACA,YAAIN,KAAK,GAAG,MAAZ,EAAoB;EACnBA,UAAAA,KAAK,IAAI,OAAT;EACAH,UAAAA,MAAM,IAAIL,kBAAkB,CAACQ,KAAK,KAAK,EAAV,GAAe,KAAf,GAAuB,MAAxB,CAA5B;EACAA,UAAAA,KAAK,GAAG,SAASA,KAAK,GAAG,KAAzB;EACA;;EACDH,QAAAA,MAAM,IAAIL,kBAAkB,CAACQ,KAAD,CAA5B;EACA;;EACD,aAAOH,MAAP;EACA;;EAED,aAASU,gBAAT,CAA0BC,SAA1B,EAAqC;EACpC,UAAIA,SAAS,IAAI,MAAb,IAAuBA,SAAS,IAAI,MAAxC,EAAgD;EAC/C,cAAMC,KAAK,CACV,sBAAsBD,SAAS,CAACE,QAAV,CAAmB,EAAnB,EAAuBC,WAAvB,EAAtB,GACA,wBAFU,CAAX;EAIA;EACD;;;;EAGD,aAASC,UAAT,CAAoBJ,SAApB,EAA+BK,KAA/B,EAAsC;EACrC,aAAOrB,kBAAkB,CAAGgB,SAAS,IAAIK,KAAd,GAAuB,IAAxB,GAAgC,IAAjC,CAAzB;EACA;;EAED,aAASC,eAAT,CAAyBN,SAAzB,EAAoC;EACnC,UAAI,CAACA,SAAS,GAAG,UAAb,KAA4B,CAAhC,EAAmC;;EAClC,eAAOhB,kBAAkB,CAACgB,SAAD,CAAzB;EACA;;EACD,UAAIO,MAAM,GAAG,EAAb;;EACA,UAAI,CAACP,SAAS,GAAG,UAAb,KAA4B,CAAhC,EAAmC;;EAClCO,QAAAA,MAAM,GAAGvB,kBAAkB,CAAGgB,SAAS,IAAI,CAAd,GAAmB,IAApB,GAA4B,IAA7B,CAA3B;EACA,OAFD,MAGK,IAAI,CAACA,SAAS,GAAG,UAAb,KAA4B,CAAhC,EAAmC;;EACvCD,QAAAA,gBAAgB,CAACC,SAAD,CAAhB;EACAO,QAAAA,MAAM,GAAGvB,kBAAkB,CAAGgB,SAAS,IAAI,EAAd,GAAoB,IAArB,GAA6B,IAA9B,CAA3B;EACAO,QAAAA,MAAM,IAAIH,UAAU,CAACJ,SAAD,EAAY,CAAZ,CAApB;EACA,OAJI,MAKA,IAAI,CAACA,SAAS,GAAG,UAAb,KAA4B,CAAhC,EAAmC;;EACvCO,QAAAA,MAAM,GAAGvB,kBAAkB,CAAGgB,SAAS,IAAI,EAAd,GAAoB,IAArB,GAA6B,IAA9B,CAA3B;EACAO,QAAAA,MAAM,IAAIH,UAAU,CAACJ,SAAD,EAAY,EAAZ,CAApB;EACAO,QAAAA,MAAM,IAAIH,UAAU,CAACJ,SAAD,EAAY,CAAZ,CAApB;EACA;;EACDO,MAAAA,MAAM,IAAIvB,kBAAkB,CAAEgB,SAAS,GAAG,IAAb,GAAqB,IAAtB,CAA5B;EACA,aAAOO,MAAP;EACA;;EAED,aAASC,UAAT,CAAoBpB,MAApB,EAA4B;EAC3B,UAAIqB,UAAU,GAAGtB,UAAU,CAACC,MAAD,CAA3B;EACA,UAAIG,MAAM,GAAGkB,UAAU,CAAClB,MAAxB;EACA,UAAIO,KAAK,GAAG,CAAC,CAAb;EACA,UAAIE,SAAJ;EACA,UAAIU,UAAU,GAAG,EAAjB;;EACA,aAAO,EAAEZ,KAAF,GAAUP,MAAjB,EAAyB;EACxBS,QAAAA,SAAS,GAAGS,UAAU,CAACX,KAAD,CAAtB;EACAY,QAAAA,UAAU,IAAIJ,eAAe,CAACN,SAAD,CAA7B;EACA;;EACD,aAAOU,UAAP;EACA;;;;EAID,aAASC,oBAAT,GAAgC;EAC/B,UAAIC,SAAS,IAAIC,SAAjB,EAA4B;EAC3B,cAAMZ,KAAK,CAAC,oBAAD,CAAX;EACA;;EAED,UAAIa,gBAAgB,GAAGC,SAAS,CAACH,SAAD,CAAT,GAAuB,IAA9C;EACAA,MAAAA,SAAS;;EAET,UAAI,CAACE,gBAAgB,GAAG,IAApB,KAA6B,IAAjC,EAAuC;EACtC,eAAOA,gBAAgB,GAAG,IAA1B;EACA,OAV8B;;;EAa/B,YAAMb,KAAK,CAAC,2BAAD,CAAX;EACA;;EAED,aAASe,YAAT,GAAwB;EACvB,UAAIC,KAAJ;EACA,UAAIC,KAAJ;EACA,UAAIC,KAAJ;EACA,UAAIC,KAAJ;EACA,UAAIpB,SAAJ;;EAEA,UAAIY,SAAS,GAAGC,SAAhB,EAA2B;EAC1B,cAAMZ,KAAK,CAAC,oBAAD,CAAX;EACA;;EAED,UAAIW,SAAS,IAAIC,SAAjB,EAA4B;EAC3B,eAAO,KAAP;EACA,OAbsB;;;EAgBvBI,MAAAA,KAAK,GAAGF,SAAS,CAACH,SAAD,CAAT,GAAuB,IAA/B;EACAA,MAAAA,SAAS,GAjBc;;EAoBvB,UAAI,CAACK,KAAK,GAAG,IAAT,KAAkB,CAAtB,EAAyB;EACxB,eAAOA,KAAP;EACA,OAtBsB;;;EAyBvB,UAAI,CAACA,KAAK,GAAG,IAAT,KAAkB,IAAtB,EAA4B;EAC3BC,QAAAA,KAAK,GAAGP,oBAAoB,EAA5B;EACAX,QAAAA,SAAS,GAAI,CAACiB,KAAK,GAAG,IAAT,KAAkB,CAAnB,GAAwBC,KAApC;;EACA,YAAIlB,SAAS,IAAI,IAAjB,EAAuB;EACtB,iBAAOA,SAAP;EACA,SAFD,MAEO;EACN,gBAAMC,KAAK,CAAC,2BAAD,CAAX;EACA;EACD,OAjCsB;;;EAoCvB,UAAI,CAACgB,KAAK,GAAG,IAAT,KAAkB,IAAtB,EAA4B;EAC3BC,QAAAA,KAAK,GAAGP,oBAAoB,EAA5B;EACAQ,QAAAA,KAAK,GAAGR,oBAAoB,EAA5B;EACAX,QAAAA,SAAS,GAAI,CAACiB,KAAK,GAAG,IAAT,KAAkB,EAAnB,GAA0BC,KAAK,IAAI,CAAnC,GAAwCC,KAApD;;EACA,YAAInB,SAAS,IAAI,MAAjB,EAAyB;EACxBD,UAAAA,gBAAgB,CAACC,SAAD,CAAhB;EACA,iBAAOA,SAAP;EACA,SAHD,MAGO;EACN,gBAAMC,KAAK,CAAC,2BAAD,CAAX;EACA;EACD,OA9CsB;;;EAiDvB,UAAI,CAACgB,KAAK,GAAG,IAAT,KAAkB,IAAtB,EAA4B;EAC3BC,QAAAA,KAAK,GAAGP,oBAAoB,EAA5B;EACAQ,QAAAA,KAAK,GAAGR,oBAAoB,EAA5B;EACAS,QAAAA,KAAK,GAAGT,oBAAoB,EAA5B;EACAX,QAAAA,SAAS,GAAI,CAACiB,KAAK,GAAG,IAAT,KAAkB,IAAnB,GAA4BC,KAAK,IAAI,IAArC,GACVC,KAAK,IAAI,IADC,GACOC,KADnB;;EAEA,YAAIpB,SAAS,IAAI,QAAb,IAAyBA,SAAS,IAAI,QAA1C,EAAoD;EACnD,iBAAOA,SAAP;EACA;EACD;;EAED,YAAMC,KAAK,CAAC,wBAAD,CAAX;EACA;;EAED,QAAIc,SAAJ;EACA,QAAIF,SAAJ;EACA,QAAID,SAAJ;;EACA,aAASS,UAAT,CAAoBX,UAApB,EAAgC;EAC/BK,MAAAA,SAAS,GAAG5B,UAAU,CAACuB,UAAD,CAAtB;EACAG,MAAAA,SAAS,GAAGE,SAAS,CAACxB,MAAtB;EACAqB,MAAAA,SAAS,GAAG,CAAZ;EACA,UAAIH,UAAU,GAAG,EAAjB;EACA,UAAIa,GAAJ;;EACA,aAAO,CAACA,GAAG,GAAGN,YAAY,EAAnB,MAA2B,KAAlC,EAAyC;EACxCP,QAAAA,UAAU,CAACd,IAAX,CAAgB2B,GAAhB;EACA;;EACD,aAAO1B,UAAU,CAACa,UAAD,CAAjB;EACA;;;;EAID1B,IAAAA,IAAI,CAACwC,OAAL,GAAe,OAAf;EACAxC,IAAAA,IAAI,CAACyC,MAAL,GAAchB,UAAd;EACAzB,IAAAA,IAAI,CAAC0C,MAAL,GAAcJ,UAAd;EAEA,GAxMC,EAwMkDK,OAxMlD,CAAD;;;ECCD,MAAM,iBAAiB,GAAG,OAAO,CAAjC;EAWM,MAAOC,UAAP,CAAe;EAiCnB;;;;;;;EAOG;EACH,EAAA,WAAA,GAE+B;EAAA,QAD7B,IAC6B,uEADX,iBACW;EAAA,QAA7B,OAA6B,uEAAF,EAAE;EAE7B,QAAI,WAAW,GAAG,KAAlB;;EACA,QAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;EAC5B,MAAA,IAAI,GAAG,IAAI,WAAJ,CAAgB,IAAhB,CAAP;EACD,KAFD,MAEO;EACL,MAAA,WAAW,GAAG,IAAd;EACA,WAAK,eAAL,GAAuB,IAAI,CAAC,UAA5B;EACD;;EAED,UAAM,MAAM,GAAG,OAAO,CAAC,MAAR,GAAiB,OAAO,CAAC,MAAR,KAAmB,CAApC,GAAwC,CAAvD;EACA,UAAM,UAAU,GAAG,IAAI,CAAC,UAAL,GAAkB,MAArC;EACA,QAAI,QAAQ,GAAG,MAAf;;EACA,QAAI,WAAW,CAAC,MAAZ,CAAmB,IAAnB,KAA4B,IAAI,YAAYA,UAAhD,EAA0D;EACxD,UAAI,IAAI,CAAC,UAAL,KAAoB,IAAI,CAAC,MAAL,CAAY,UAApC,EAAgD;EAC9C,QAAA,QAAQ,GAAG,IAAI,CAAC,UAAL,GAAkB,MAA7B;EACD;;EACD,MAAA,IAAI,GAAG,IAAI,CAAC,MAAZ;EACD;;EACD,QAAI,WAAJ,EAAiB;EACf,WAAK,eAAL,GAAuB,UAAvB;EACD,KAFD,MAEO;EACL,WAAK,eAAL,GAAuB,CAAvB;EACD;;EACD,SAAK,MAAL,GAAc,IAAd;EACA,SAAK,MAAL,GAAc,UAAd;EACA,SAAK,UAAL,GAAkB,UAAlB;EACA,SAAK,UAAL,GAAkB,QAAlB;EACA,SAAK,MAAL,GAAc,CAAd;EACA,SAAK,YAAL,GAAoB,IAApB;EACA,SAAK,KAAL,GAAa,IAAI,QAAJ,CAAa,KAAK,MAAlB,EAA0B,QAA1B,EAAoC,UAApC,CAAb;EACA,SAAK,KAAL,GAAa,CAAb;EACA,SAAK,MAAL,GAAc,EAAd;EACD;EAED;;;;;EAKG;;;EACI,EAAA,SAAS,GAAuB;EAAA,QAAtB,UAAsB,uEAAD,CAAC;EACrC,WAAO,KAAK,MAAL,GAAc,UAAd,IAA4B,KAAK,MAAxC;EACD;EAED;;;;EAIG;;;EACI,EAAA,cAAc,GAAA;EACnB,WAAO,KAAK,YAAZ;EACD;EAED;;EAEG;;;EACI,EAAA,eAAe,GAAA;EACpB,SAAK,YAAL,GAAoB,IAApB;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,WAAW,GAAA;EAChB,WAAO,CAAC,KAAK,YAAb;EACD;EAED;;EAEG;;;EACI,EAAA,YAAY,GAAA;EACjB,SAAK,YAAL,GAAoB,KAApB;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,IAAI,GAAc;EAAA,QAAb,CAAa,uEAAD,CAAC;EACvB,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,IAAI,CAAC,MAAD,EAAe;EACxB,SAAK,MAAL,GAAc,MAAd;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,IAAI,GAAA;EACT,SAAK,KAAL,GAAa,KAAK,MAAlB;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,KAAK,GAAA;EACV,SAAK,MAAL,GAAc,KAAK,KAAnB;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,QAAQ,GAAA;EACb,SAAK,MAAL,CAAY,IAAZ,CAAiB,KAAK,MAAtB;;EACA,WAAO,IAAP;EACD;EAED;;;;EAIG;;;EACI,EAAA,OAAO,GAAA;EACZ,UAAM,MAAM,GAAG,KAAK,MAAL,CAAY,GAAZ,EAAf;;EACA,QAAI,MAAM,KAAK,SAAf,EAA0B;EACxB,YAAM,IAAI,KAAJ,CAAU,kBAAV,CAAN;EACD;;EACD,SAAK,IAAL,CAAU,MAAV;EACA,WAAO,IAAP;EACD;EAED;;EAEG;;;EACI,EAAA,MAAM,GAAA;EACX,SAAK,MAAL,GAAc,CAAd;EACA,WAAO,IAAP;EACD;EAED;;;;;;EAMG;;;EACI,EAAA,eAAe,GAAuB;EAAA,QAAtB,UAAsB,uEAAD,CAAC;;EAC3C,QAAI,CAAC,KAAK,SAAL,CAAe,UAAf,CAAL,EAAiC;EAC/B,YAAM,YAAY,GAAG,KAAK,MAAL,GAAc,UAAnC;EACA,YAAM,SAAS,GAAG,YAAY,GAAG,CAAjC;EACA,YAAM,QAAQ,GAAG,IAAI,UAAJ,CAAe,SAAf,CAAjB;EACA,MAAA,QAAQ,CAAC,GAAT,CAAa,IAAI,UAAJ,CAAe,KAAK,MAApB,CAAb;EACA,WAAK,MAAL,GAAc,QAAQ,CAAC,MAAvB;EACA,WAAK,MAAL,GAAc,KAAK,UAAL,GAAkB,SAAhC;EACA,WAAK,KAAL,GAAa,IAAI,QAAJ,CAAa,KAAK,MAAlB,CAAb;EACD;;EACD,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,WAAW,GAAA;EAChB,WAAO,KAAK,SAAL,OAAqB,CAA5B;EACD;EAED;;EAEG;;;EACI,EAAA,QAAQ,GAAA;EACb,WAAO,KAAK,KAAL,CAAW,OAAX,CAAmB,KAAK,MAAL,EAAnB,CAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,GAAA;EACd,WAAO,KAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAL,EAApB,CAAP;EACD;EAED;;EAEG;;;EACI,EAAA,QAAQ,GAAA;EACb,WAAO,KAAK,SAAL,EAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,GAAc;EAAA,QAAb,CAAa,uEAAD,CAAC;EAC5B,UAAM,KAAK,GAAG,IAAI,UAAJ,CAAe,CAAf,CAAd;;EACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;EAC1B,MAAA,KAAK,CAAC,CAAD,CAAL,GAAW,KAAK,QAAL,EAAX;EACD;;EACD,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,GAAA;EACd,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAzB,EAAiC,KAAK,YAAtC,CAAd;;EACA,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,UAAU,GAAA;EACf,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,SAAX,CAAqB,KAAK,MAA1B,EAAkC,KAAK,YAAvC,CAAd;;EACA,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,GAAA;EACd,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAzB,EAAiC,KAAK,YAAtC,CAAd;;EACA,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,UAAU,GAAA;EACf,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,SAAX,CAAqB,KAAK,MAA1B,EAAkC,KAAK,YAAvC,CAAd;;EACA,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,WAAW,GAAA;EAChB,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,UAAX,CAAsB,KAAK,MAA3B,EAAmC,KAAK,YAAxC,CAAd;;EACA,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,WAAW,GAAA;EAChB,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,UAAX,CAAsB,KAAK,MAA3B,EAAmC,KAAK,YAAxC,CAAd;;EACA,SAAK,MAAL,IAAe,CAAf;EACA,WAAO,KAAP;EACD;EAED;;EAEG;;;EACI,EAAA,QAAQ,GAAA;EACb,WAAO,MAAM,CAAC,YAAP,CAAoB,KAAK,QAAL,EAApB,CAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,GAAc;EAAA,QAAb,CAAa,uEAAD,CAAC;EAC5B,QAAI,MAAM,GAAG,EAAb;;EACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;EAC1B,MAAA,MAAM,IAAI,KAAK,QAAL,EAAV;EACD;;EACD,WAAO,MAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,QAAQ,GAAc;EAAA,QAAb,CAAa,uEAAD,CAAC;EAC3B,UAAM,OAAO,GAAG,KAAK,SAAL,CAAe,CAAf,CAAhB;EACA,WAAOF,WAAM,CAAC,OAAD,CAAb;EACD;EAED;;;EAGG;;;EACI,EAAA,YAAY,CAAC,KAAD,EAAe;EAChC,SAAK,UAAL,CAAgB,KAAK,GAAG,IAAH,GAAU,IAA/B;EACA,WAAO,IAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,CAAC,KAAD,EAAc;EAC5B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,OAAX,CAAmB,KAAK,MAAL,EAAnB,EAAkC,KAAlC;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,UAAU,CAAC,KAAD,EAAc;EAC7B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAL,EAApB,EAAmC,KAAnC;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;EAEG;;;EACI,EAAA,SAAS,CAAC,KAAD,EAAc;EAC5B,WAAO,KAAK,UAAL,CAAgB,KAAhB,CAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,UAAU,CAAC,KAAD,EAAyB;EACxC,SAAK,eAAL,CAAqB,KAAK,CAAC,MAA3B;;EACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;EACrC,WAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAL,EAApB,EAAmC,KAAK,CAAC,CAAD,CAAxC;EACD;;EACD,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,UAAU,CAAC,KAAD,EAAc;EAC7B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAzB,EAAiC,KAAjC,EAAwC,KAAK,YAA7C;;EACA,SAAK,MAAL,IAAe,CAAf;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,WAAW,CAAC,KAAD,EAAc;EAC9B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,SAAX,CAAqB,KAAK,MAA1B,EAAkC,KAAlC,EAAyC,KAAK,YAA9C;;EACA,SAAK,MAAL,IAAe,CAAf;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,UAAU,CAAC,KAAD,EAAc;EAC7B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,QAAX,CAAoB,KAAK,MAAzB,EAAiC,KAAjC,EAAwC,KAAK,YAA7C;;EACA,SAAK,MAAL,IAAe,CAAf;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,WAAW,CAAC,KAAD,EAAc;EAC9B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,SAAX,CAAqB,KAAK,MAA1B,EAAkC,KAAlC,EAAyC,KAAK,YAA9C;;EACA,SAAK,MAAL,IAAe,CAAf;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,YAAY,CAAC,KAAD,EAAc;EAC/B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,UAAX,CAAsB,KAAK,MAA3B,EAAmC,KAAnC,EAA0C,KAAK,YAA/C;;EACA,SAAK,MAAL,IAAe,CAAf;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,YAAY,CAAC,KAAD,EAAc;EAC/B,SAAK,eAAL,CAAqB,CAArB;;EACA,SAAK,KAAL,CAAW,UAAX,CAAsB,KAAK,MAA3B,EAAmC,KAAnC,EAA0C,KAAK,YAA/C;;EACA,SAAK,MAAL,IAAe,CAAf;;EACA,SAAK,sBAAL;;EACA,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,SAAS,CAAC,GAAD,EAAY;EAC1B,WAAO,KAAK,UAAL,CAAgB,GAAG,CAAC,UAAJ,CAAe,CAAf,CAAhB,CAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,UAAU,CAAC,GAAD,EAAY;EAC3B,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAAG,CAAC,MAAxB,EAAgC,CAAC,EAAjC,EAAqC;EACnC,WAAK,UAAL,CAAgB,GAAG,CAAC,UAAJ,CAAe,CAAf,CAAhB;EACD;;EACD,WAAO,IAAP;EACD;EAED;;;EAGG;;;EACI,EAAA,SAAS,CAAC,GAAD,EAAY;EAC1B,UAAM,OAAO,GAAGD,WAAM,CAAC,GAAD,CAAtB;EACA,WAAO,KAAK,UAAL,CAAgB,OAAhB,CAAP;EACD;EAED;;;;EAIG;;;EACI,EAAA,OAAO,GAAA;EACZ,WAAO,IAAI,UAAJ,CAAe,KAAK,MAApB,EAA4B,KAAK,UAAjC,EAA6C,KAAK,eAAlD,CAAP;EACD;EAED;;;EAGG;;;EACK,EAAA,sBAAsB,GAAA;EAC5B,QAAI,KAAK,MAAL,GAAc,KAAK,eAAvB,EAAwC;EACtC,WAAK,eAAL,GAAuB,KAAK,MAA5B;EACD;EACF;;EAhfkB;;;;;;;;;;;ECXrB;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASI,WAAT,CAAmBC,SAAnB,EAA8BC,MAA9B,EAAsC;EACpC,MAAID,SAAJ,EAAe;EACb,UAAM,IAAIE,SAAJ,CAAe,iCAAgCD,MAAO,EAAtD,CAAN;EACD;EACF;EAED;EACA;EACA;EACA;EACA;;;EACA,SAASE,OAAT,CAAiBC,MAAjB,EAAyB;EACvB,MAAKA,MAAM,CAACC,MAAP,GAAgB,CAAjB,KAAwB,CAA5B,EAA+B;EAC7BD,IAAAA,MAAM,CAACE,IAAP,CAAY,IAAKF,MAAM,CAACC,MAAP,GAAgB,CAAjC;EACD;EACF;EAGD;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASE,QAAT,CAAkBH,MAAlB,EAA0B;;EAExB,MAAII,UAAU,GAAGJ,MAAM,CAACK,UAAP,EAAjB;EACA,MAAIC,IAAI,GAAGN,MAAM,CAACO,SAAP,CAAiBH,UAAjB,CAAX,CAHwB;;;;EASxBL,EAAAA,OAAO,CAACC,MAAD,CAAP;EACA,SAAOM,IAAP;EACD;;sBAE0BX;oBACFI;qBACCI;;;;;;EC7C1B,MAAMR,SAAS,GAAGa,OAAkB,CAACb,SAArC;EAEA,MAAMc,OAAK,GAAG;EACZC,EAAAA,IAAI,EAAE,CADM;EAEZC,EAAAA,IAAI,EAAE,CAFM;EAGZC,EAAAA,KAAK,EAAE,CAHK;EAIZC,EAAAA,GAAG,EAAE,CAJO;EAKZC,EAAAA,KAAK,EAAE,CALK;EAMZC,EAAAA,MAAM,EAAE;EANI,CAAd;EASA;EACA;EACA;EACA;EACA;EACA;;EACA,SAASC,OAAT,CAAiBC,IAAjB,EAAuB;EACrB,UAAQC,MAAM,CAACD,IAAD,CAAd;EACE,SAAKR,OAAK,CAACC,IAAX;EACE,aAAO,MAAP;;EACF,SAAKD,OAAK,CAACE,IAAX;EACE,aAAO,MAAP;;EACF,SAAKF,OAAK,CAACG,KAAX;EACE,aAAO,OAAP;;EACF,SAAKH,OAAK,CAACI,GAAX;EACE,aAAO,KAAP;;EACF,SAAKJ,OAAK,CAACK,KAAX;EACE,aAAO,OAAP;;EACF,SAAKL,OAAK,CAACM,MAAX;EACE,aAAO,QAAP;;;;EAEF;EACE,aAAO,WAAP;EAfJ;EAiBD;EAED;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASI,SAAT,CAAmBF,IAAnB,EAAyB;EACvB,UAAQC,MAAM,CAACD,IAAD,CAAd;EACE,SAAKR,OAAK,CAACC,IAAX;EACE,aAAO,CAAP;;EACF,SAAKD,OAAK,CAACE,IAAX;EACE,aAAO,CAAP;;EACF,SAAKF,OAAK,CAACG,KAAX;EACE,aAAO,CAAP;;EACF,SAAKH,OAAK,CAACI,GAAX;EACE,aAAO,CAAP;;EACF,SAAKJ,OAAK,CAACK,KAAX;EACE,aAAO,CAAP;;EACF,SAAKL,OAAK,CAACM,MAAX;EACE,aAAO,CAAP;;;;EAEF;EACE,aAAO,CAAC,CAAR;EAfJ;EAiBD;EAED;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASK,OAAT,CAAiBH,IAAjB,EAAuB;EACrB,UAAQjE,MAAM,CAACiE,IAAD,CAAd;EACE,SAAK,MAAL;EACE,aAAOR,OAAK,CAACC,IAAb;;EACF,SAAK,MAAL;EACE,aAAOD,OAAK,CAACE,IAAb;;EACF,SAAK,OAAL;EACE,aAAOF,OAAK,CAACG,KAAb;;EACF,SAAK,KAAL;EACE,aAAOH,OAAK,CAACI,GAAb;;EACF,SAAK,OAAL;EACE,aAAOJ,OAAK,CAACK,KAAb;;EACF,SAAK,QAAL;EACE,aAAOL,OAAK,CAACM,MAAb;;;;EAEF;EACE,aAAO,CAAC,CAAR;EAfJ;EAiBD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASM,UAAT,CAAoBC,IAApB,EAA0BC,YAA1B,EAAwC;EACtC,MAAID,IAAI,KAAK,CAAb,EAAgB;EACd,QAAIE,OAAO,GAAG,IAAIC,KAAJ,CAAUH,IAAV,CAAd;;EACA,SAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAApB,EAA0BI,CAAC,EAA3B,EAA+B;EAC7BF,MAAAA,OAAO,CAACE,CAAD,CAAP,GAAaH,YAAY,EAAzB;EACD;;EACD,WAAOC,OAAP;EACD,GAND,MAMO;EACL,WAAOD,YAAY,EAAnB;EACD;EACF;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASI,QAAT,CAAkB3B,MAAlB,EAA0BiB,IAA1B,EAAgCK,IAAhC,EAAsC;EACpC,UAAQL,IAAR;EACE,SAAKR,OAAK,CAACC,IAAX;EACE,aAAOV,MAAM,CAAC4B,SAAP,CAAiBN,IAAjB,CAAP;;EACF,SAAKb,OAAK,CAACE,IAAX;EACE,aAAOkB,QAAQ,CAAC7B,MAAM,CAACO,SAAP,CAAiBe,IAAjB,CAAD,CAAf;;EACF,SAAKb,OAAK,CAACG,KAAX;EACE,aAAOS,UAAU,CAACC,IAAD,EAAOtB,MAAM,CAAC8B,SAAP,CAAiBC,IAAjB,CAAsB/B,MAAtB,CAAP,CAAjB;;EACF,SAAKS,OAAK,CAACI,GAAX;EACE,aAAOQ,UAAU,CAACC,IAAD,EAAOtB,MAAM,CAACgC,SAAP,CAAiBD,IAAjB,CAAsB/B,MAAtB,CAAP,CAAjB;;EACF,SAAKS,OAAK,CAACK,KAAX;EACE,aAAOO,UAAU,CAACC,IAAD,EAAOtB,MAAM,CAACiC,WAAP,CAAmBF,IAAnB,CAAwB/B,MAAxB,CAAP,CAAjB;;EACF,SAAKS,OAAK,CAACM,MAAX;EACE,aAAOM,UAAU,CAACC,IAAD,EAAOtB,MAAM,CAACkC,WAAP,CAAmBH,IAAnB,CAAwB/B,MAAxB,CAAP,CAAjB;;;;EAEF;EACEL,MAAAA,SAAS,CAAC,IAAD,EAAQ,kBAAiBsB,IAAK,EAA9B,CAAT;EACA,aAAOkB,SAAP;EAhBJ;EAkBD;EAED;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASN,QAAT,CAAkBtE,KAAlB,EAAyB;EACvB,MAAIA,KAAK,CAACE,UAAN,CAAiBF,KAAK,CAACD,MAAN,GAAe,CAAhC,MAAuC,CAA3C,EAA8C;EAC5C,WAAOC,KAAK,CAAC6E,SAAN,CAAgB,CAAhB,EAAmB7E,KAAK,CAACD,MAAN,GAAe,CAAlC,CAAP;EACD;;EACD,SAAOC,KAAP;EACD;;AAED8E,iBAAA,GAAiB5B,OAAjB;4BACyBO;8BACEG;4BACFC;6BACCO;;EC1J1B,MAAMlB,OAAK,GAAGD,eAAd;;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,SAAS8B,SAAT,CAAmBtC,MAAnB,EAA2BuC,QAA3B,EAAqC;;EAEnC,QAAMtB,IAAI,GAAGR,OAAK,CAACW,OAAN,CAAcmB,QAAQ,CAACtB,IAAvB,CAAb,CAFmC;;EAKnC,MAAIK,IAAI,GAAGiB,QAAQ,CAACjB,IAAT,GAAgBb,OAAK,CAACU,SAAN,CAAgBF,IAAhB,CAA3B,CALmC;;EAQnC,MAAIuB,IAAI,GAAG,IAAIf,KAAJ,CAAUH,IAAV,CAAX;;EACA,OAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAApB,EAA0BI,CAAC,EAA3B,EAA+B;EAC7Bc,IAAAA,IAAI,CAACd,CAAD,CAAJ,GAAUjB,OAAK,CAACkB,QAAN,CAAe3B,MAAf,EAAuBiB,IAAvB,EAA6B,CAA7B,CAAV;EACD;;EAED,SAAOuB,IAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASC,MAAT,CAAgBzC,MAAhB,EAAwBuC,QAAxB,EAAkCG,eAAlC,EAAmD;;EAEjD,QAAMzB,IAAI,GAAGR,OAAK,CAACW,OAAN,CAAcmB,QAAQ,CAACtB,IAAvB,CAAb;EACA,QAAM0B,KAAK,GAAGJ,QAAQ,CAACjB,IAAT,GAAgBiB,QAAQ,CAACjB,IAAT,GAAgBb,OAAK,CAACU,SAAN,CAAgBF,IAAhB,CAAhC,GAAwD,CAAtE,CAHiD;;;EAOjD,MAAIK,IAAI,GAAGoB,eAAe,CAACpF,MAA3B,CAPiD;;EAUjD,MAAIkF,IAAI,GAAG,IAAIf,KAAJ,CAAUH,IAAV,CAAX;EACA,QAAMsB,IAAI,GAAGF,eAAe,CAACG,UAA7B;;EAEA,OAAK,IAAInB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAApB,EAA0BI,CAAC,EAA3B,EAA+B;EAC7B,QAAIoB,aAAa,GAAG9C,MAAM,CAACC,MAA3B;EACAuC,IAAAA,IAAI,CAACd,CAAD,CAAJ,GAAUjB,OAAK,CAACkB,QAAN,CAAe3B,MAAf,EAAuBiB,IAAvB,EAA6B0B,KAA7B,CAAV;EACA3C,IAAAA,MAAM,CAAC+C,IAAP,CAAYD,aAAa,GAAGF,IAA5B;EACD;;EAED,SAAOJ,IAAP;EACD;;qBAE0BF;kBACHG;;EC1DxB,MAAMO,OAAK,GAAGxC,OAAd;EACA,MAAMC,KAAK,GAAGwC,eAAd;;EAGA,MAAMC,IAAI,GAAG,CAAb;EACA,MAAMC,YAAY,GAAG,EAArB;EACA,MAAMC,WAAW,GAAG,EAApB;EACA,MAAMC,YAAY,GAAG,EAArB;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,SAASC,MAAT,CAAgBtD,MAAhB,EAAwBV,OAAxB,EAAiC;;;EAG/B,MAAIgE,MAAM,GAAG;EAAEZ,IAAAA,eAAe,EAAE;EAAEpF,MAAAA,MAAM,EAAE0C,MAAM,CAACK,UAAP;EAAV;EAAnB,GAAb,CAH+B;;EAM/BiD,EAAAA,MAAM,CAAChE,OAAP,GAAiBA,OAAjB,CAN+B;;EAS/B,MAAIiE,OAAO,GAAGC,cAAc,CAACxD,MAAD,CAA5B;EACAsD,EAAAA,MAAM,CAACZ,eAAP,CAAuBe,EAAvB,GAA4BF,OAAO,CAACG,QAApC,CAV+B;;EAW/BJ,EAAAA,MAAM,CAACZ,eAAP,CAAuBpC,IAAvB,GAA8BiD,OAAO,CAACI,UAAtC,CAX+B;;EAY/BL,EAAAA,MAAM,CAACM,UAAP,GAAoBL,OAAO,CAACK,UAA5B,CAZ+B;;EAe/BN,EAAAA,MAAM,CAACO,gBAAP,GAA0BC,cAAc,CAAC9D,MAAD,CAAxC,CAf+B;;EAkB/B,MAAI+D,SAAS,GAAGC,aAAa,CAAChE,MAAD,EAASuD,OAAO,CAACG,QAAjB,EAA2BpE,OAA3B,CAA7B;EACAgE,EAAAA,MAAM,CAACS,SAAP,GAAmBA,SAAS,CAACA,SAA7B;EACAT,EAAAA,MAAM,CAACZ,eAAP,CAAuBG,UAAvB,GAAoCkB,SAAS,CAAClB,UAA9C;EAEA,SAAOS,MAAP;EACD;;EAED,MAAMW,YAAY,GAAG,CAArB;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,SAAST,cAAT,CAAwBxD,MAAxB,EAAgC;EAC9B,MAAI0D,QAAJ,EAAcC,UAAd;EACA,QAAMJ,OAAO,GAAGvD,MAAM,CAACK,UAAP,EAAhB;;EACA,MAAIkD,OAAO,KAAKL,IAAhB,EAAsB;EACpBF,IAAAA,OAAK,CAACrD,SAAN,CAAiBK,MAAM,CAACK,UAAP,OAAwB6C,IAAzC,EAAgD,wCAAhD;EACA,WAAO,EAAP;EACD,GAHD,MAGO;EACLF,IAAAA,OAAK,CAACrD,SAAN,CAAiB4D,OAAO,KAAKJ,YAA7B,EAA4C,kCAA5C,EADK;;EAIL,UAAMe,aAAa,GAAGlE,MAAM,CAACK,UAAP,EAAtB;EACA,QAAIuD,UAAU,GAAG,IAAInC,KAAJ,CAAUyC,aAAV,CAAjB;;EACA,SAAK,IAAIC,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGD,aAAxB,EAAuCC,GAAG,EAA1C,EAA8C;;EAE5C,UAAI7D,IAAI,GAAG0C,OAAK,CAAC7C,QAAN,CAAeH,MAAf,CAAX,CAF4C;;EAK5C,YAAMsB,IAAI,GAAGtB,MAAM,CAACK,UAAP,EAAb;;EACA,UAAIiB,IAAI,KAAK2C,YAAb,EAA2B;;EACzBP,QAAAA,QAAQ,GAAGS,GAAX;EACAR,QAAAA,UAAU,GAAGrD,IAAb;EACD;;EAEDsD,MAAAA,UAAU,CAACO,GAAD,CAAV,GAAkB;EAChB7D,QAAAA,IAAI,EAAEA,IADU;EAEhBgB,QAAAA,IAAI,EAAEA;EAFU,OAAlB;EAID;EACF;;EACD,SAAO;EACLsC,IAAAA,UAAU,EAAEA,UADP;EAELF,IAAAA,QAAQ,EAAEA,QAFL;EAGLC,IAAAA,UAAU,EAAEA;EAHP,GAAP;EAKD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASG,cAAT,CAAwB9D,MAAxB,EAAgC;EAC9B,QAAMoE,QAAQ,GAAGpE,MAAM,CAACK,UAAP,EAAjB;;EACA,MAAI+D,QAAQ,KAAKlB,IAAjB,EAAuB;EACrBF,IAAAA,OAAK,CAACrD,SAAN,CAAiBK,MAAM,CAACK,UAAP,OAAwB6C,IAAzC,EAAgD,wCAAhD;EACA,WAAO,EAAP;EACD,GAHD,MAGO;EACLF,IAAAA,OAAK,CAACrD,SAAN,CAAiByE,QAAQ,KAAKf,YAA9B,EAA6C,kCAA7C,EADK;;EAIL,UAAMgB,aAAa,GAAGrE,MAAM,CAACK,UAAP,EAAtB;EACA,QAAIiE,UAAU,GAAG,IAAI7C,KAAJ,CAAU4C,aAAV,CAAjB;;EACA,SAAK,IAAIE,IAAI,GAAG,CAAhB,EAAmBA,IAAI,GAAGF,aAA1B,EAAyCE,IAAI,EAA7C,EAAiD;;EAE/C,UAAIjE,IAAI,GAAG0C,OAAK,CAAC7C,QAAN,CAAeH,MAAf,CAAX,CAF+C;;EAK/C,UAAIiB,IAAI,GAAGjB,MAAM,CAACK,UAAP,EAAX;EACA2C,MAAAA,OAAK,CAACrD,SAAN,CAAkBsB,IAAI,GAAG,CAAR,IAAeA,IAAI,GAAG,CAAvC,EAA6C,kBAAiBA,IAAK,EAAnE,EAN+C;;EAS/C,UAAIK,IAAI,GAAGtB,MAAM,CAACK,UAAP,EAAX;EACA,UAAI9C,KAAK,GAAGkD,KAAK,CAACkB,QAAN,CAAe3B,MAAf,EAAuBiB,IAAvB,EAA6BK,IAA7B,CAAZ,CAV+C;;EAa/C0B,MAAAA,OAAK,CAACjD,OAAN,CAAcC,MAAd;EAEAsE,MAAAA,UAAU,CAACC,IAAD,CAAV,GAAmB;EACjBjE,QAAAA,IAAI,EAAEA,IADW;EAEjBW,QAAAA,IAAI,EAAER,KAAK,CAACO,OAAN,CAAcC,IAAd,CAFW;EAGjB1D,QAAAA,KAAK,EAAEA;EAHU,OAAnB;EAKD;EACF;;EACD,SAAO+G,UAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASN,aAAT,CAAuBhE,MAAvB,EAA+B0D,QAA/B,EAAyCpE,OAAzC,EAAkD;EAChD,QAAMkF,OAAO,GAAGxE,MAAM,CAACK,UAAP,EAAhB;EACA,MAAIwC,UAAU,GAAG,CAAjB;;EACA,MAAI2B,OAAO,KAAKtB,IAAhB,EAAsB;EACpBF,IAAAA,OAAK,CAACrD,SAAN,CAAiBK,MAAM,CAACK,UAAP,OAAwB6C,IAAzC,EAAgD,uCAAhD;EACA,WAAO,EAAP;EACD,GAHD,MAGO;EACLF,IAAAA,OAAK,CAACrD,SAAN,CAAiB6E,OAAO,KAAKpB,WAA7B,EAA2C,iCAA3C,EADK;;EAIL,UAAMqB,YAAY,GAAGzE,MAAM,CAACK,UAAP,EAArB;EACA,QAAI0D,SAAS,GAAG,IAAItC,KAAJ,CAAUgD,YAAV,CAAhB;;EACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,YAApB,EAAkCC,CAAC,EAAnC,EAAuC;;EAErC,UAAIpE,IAAI,GAAG0C,OAAK,CAAC7C,QAAN,CAAeH,MAAf,CAAX,CAFqC;;EAKrC,YAAM2E,cAAc,GAAG3E,MAAM,CAACK,UAAP,EAAvB,CALqC;;EAQrC,UAAIuE,aAAa,GAAG,IAAInD,KAAJ,CAAUkD,cAAV,CAApB;;EACA,WAAK,IAAIR,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGQ,cAAxB,EAAwCR,GAAG,EAA3C,EAA+C;EAC7CS,QAAAA,aAAa,CAACT,GAAD,CAAb,GAAqBnE,MAAM,CAACK,UAAP,EAArB;EACD,OAXoC;;;EAcrC,UAAIiE,UAAU,GAAGR,cAAc,CAAC9D,MAAD,CAA/B,CAdqC;;EAiBrC,UAAIiB,IAAI,GAAGjB,MAAM,CAACK,UAAP,EAAX;EACA2C,MAAAA,OAAK,CAACrD,SAAN,CAAkBsB,IAAI,GAAG,CAAR,IAAeA,IAAI,GAAG,CAAvC,EAA6C,kBAAiBA,IAAK,EAAnE,EAlBqC;;;;EAuBrC,YAAM4D,OAAO,GAAG7E,MAAM,CAACK,UAAP,EAAhB,CAvBqC;;EA0BrC,UAAIJ,MAAM,GAAGD,MAAM,CAACK,UAAP,EAAb;;EACA,UAAIf,OAAO,KAAK,CAAhB,EAAmB;EACjB0D,QAAAA,OAAK,CAACrD,SAAN,CAAiBM,MAAM,GAAG,CAA1B,EAA8B,uCAA9B;EACAA,QAAAA,MAAM,GAAGD,MAAM,CAACK,UAAP,EAAT;EACD;;EAED,UAAIoC,MAAM,GAAG,KAAb,CAhCqC;;EAkCrC,UAAK,OAAOiB,QAAP,KAAoB,WAArB,IAAsCkB,aAAa,CAAC,CAAD,CAAb,KAAqBlB,QAA/D,EAA0E;EACxEb,QAAAA,UAAU,IAAIgC,OAAd;EACApC,QAAAA,MAAM,GAAG,IAAT;EACD;;EACDsB,MAAAA,SAAS,CAACW,CAAD,CAAT,GAAe;EACbpE,QAAAA,IAAI,EAAEA,IADO;EAEbsD,QAAAA,UAAU,EAAEgB,aAFC;EAGbN,QAAAA,UAHa;EAIbrD,QAAAA,IAAI,EAAER,KAAK,CAACO,OAAN,CAAcC,IAAd,CAJO;EAKbK,QAAAA,IAAI,EAAEuD,OALO;EAMb5E,QAAAA,MANa;EAObwC,QAAAA;EAPa,OAAf;EASD;EACF;;EAED,SAAO;EACLsB,IAAAA,SAAS,EAAEA,SADN;EAELlB,IAAAA,UAAU,EAAEA;EAFP,GAAP;EAID;;MAEDiC,QAAc,GAAGxB;;EChOjB,SAASrF,UAAT,GAAoB;EAClB,MAAI8G,MAAM,GAAG,EAAb;EAEAA,EAAAA,MAAM,CAACrH,IAAP,CAAY,YAAZ;;EACA,OAAK,IAAIsH,SAAT,IAAsB,KAAKpB,UAA3B,EAAuC;EACrCmB,IAAAA,MAAM,CAACrH,IAAP,CAAa,KAAIsH,SAAS,CAAC1E,IAAV,CAAe2E,MAAf,CAAsB,EAAtB,CAA0B,YAAWD,SAAS,CAAC1D,IAAK,EAArE;EACD;;EAEDyD,EAAAA,MAAM,CAACrH,IAAP,CAAY,EAAZ;EACAqH,EAAAA,MAAM,CAACrH,IAAP,CAAY,mBAAZ;;EACA,OAAK,IAAIwH,SAAT,IAAsB,KAAKrB,gBAA3B,EAA6C;EAC3CkB,IAAAA,MAAM,CAACrH,IAAP,CAAa,KAAIwH,SAAS,CAAC5E,IAAV,CAAe2E,MAAf,CAAsB,EAAtB,CAA0B,MAAKC,SAAS,CAAC3H,KAAM,EAAhE;EACD;;EAED,MAAIwG,SAAS,GAAGoB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAe,KAAKtB,SAApB,CAAX,CAAhB;EACAgB,EAAAA,MAAM,CAACrH,IAAP,CAAY,EAAZ;EACAqH,EAAAA,MAAM,CAACrH,IAAP,CAAY,YAAZ;;EACA,OAAK,IAAI6E,QAAT,IAAqBwB,SAArB,EAAgC;EAC9BxB,IAAAA,QAAQ,CAAChF,KAAT,GAAiB,KAAK+H,eAAL,CAAqB/C,QAArB,CAAjB;EACA,QAAI8C,SAAS,GAAGF,IAAI,CAACE,SAAL,CAAe9C,QAAQ,CAAChF,KAAxB,CAAhB;EACA,QAAI8H,SAAS,CAAC/H,MAAV,GAAmB,EAAvB,EAA2B+H,SAAS,GAAGA,SAAS,CAACjD,SAAV,CAAoB,CAApB,EAAuB,EAAvB,CAAZ;;EAC3B,QAAI,CAACmD,KAAK,CAAChD,QAAQ,CAAChF,KAAT,CAAeD,MAAhB,CAAV,EAAmC;EACjC+H,MAAAA,SAAS,IAAK,aAAY9C,QAAQ,CAAChF,KAAT,CAAeD,MAAO,GAAhD;EACD;;EACDyH,IAAAA,MAAM,CAACrH,IAAP,CAAa,KAAI6E,QAAQ,CAACjC,IAAT,CAAc2E,MAAd,CAAqB,EAArB,CAAyB,MAAKI,SAAU,EAAzD;EACD;;EACD,SAAON,MAAM,CAACS,IAAP,CAAY,IAAZ,CAAP;EACD;;MAEDC,UAAc,GAAGxH;;EC7BjB,MAAM;EAAEyB,EAAAA;EAAF,IAAec,UAArB;EAEA,MAAMwC,KAAK,GAAGC,OAAd;EACA,MAAMT,IAAI,GAAGkD,MAAb;EACA,MAAMC,UAAU,GAAGC,QAAnB;EACA,MAAM3H,UAAQ,GAAG4H,UAAjB;EAEA;EACA;EACA;EACA;EACA;EACA;;EACA,MAAMC,cAAN,CAAmB;EACjBC,EAAAA,WAAW,CAACvD,IAAD,EAAO;EAChB,UAAMxC,MAAM,GAAG,IAAIN,QAAJ,CAAa8C,IAAb,CAAf;EACAxC,IAAAA,MAAM,CAACgG,YAAP,GAFgB;;EAKhBhD,IAAAA,KAAK,CAACrD,SAAN,CAAgBK,MAAM,CAACO,SAAP,CAAiB,CAAjB,MAAwB,KAAxC,EAA+C,uBAA/C,EALgB;;EAQhB,UAAMjB,OAAO,GAAGU,MAAM,CAACiG,QAAP,EAAhB;EACAjD,IAAAA,KAAK,CAACrD,SAAN,CAAgBL,OAAO,GAAG,CAA1B,EAA6B,iBAA7B,EATgB;;EAYhB,SAAKgE,MAAL,GAAcqC,UAAU,CAAC3F,MAAD,EAASV,OAAT,CAAxB;EACA,SAAKU,MAAL,GAAcA,MAAd;EACD;;EAGH;EACA;;;EACa,MAAPV,OAAO,GAAG;EACZ,QAAI,KAAKgE,MAAL,CAAYhE,OAAZ,KAAwB,CAA5B,EAA+B;EAC7B,aAAO,gBAAP;EACD,KAFD,MAEO;EACL,aAAO,sBAAP;EACD;EACF;;EAGH;EACA;EACA;EACA;EACA;EACA;;;EACqB,MAAfoD,eAAe,GAAG;EACpB,WAAO,KAAKY,MAAL,CAAYZ,eAAnB;EACD;;EAGH;EACA;EACA;EACA;;;EACgB,MAAVkB,UAAU,GAAG;EACf,WAAO,KAAKN,MAAL,CAAYM,UAAnB;EACD;;EAGH;EACA;EACA;EACA;EACA;;;EACsB,MAAhBC,gBAAgB,GAAG;EACrB,WAAO,KAAKP,MAAL,CAAYO,gBAAnB;EACD;;EAGH;EACA;EACA;EACA;;;EACEqC,EAAAA,YAAY,CAACC,aAAD,EAAgB;EAC1B,UAAMjB,SAAS,GAAG,KAAKrB,gBAAL,CAAsBuC,IAAtB,CACfC,GAAD,IAASA,GAAG,CAAC/F,IAAJ,KAAa6F,aADN,CAAlB;EAGA,QAAIjB,SAAJ,EAAe,OAAOA,SAAS,CAAC3H,KAAjB;EACf,WAAO,IAAP;EACD;;EAGH;EACA;EACA;EACA;;;EACE+I,EAAAA,uBAAuB,CAACC,YAAD,EAAe;EACpC,UAAMhE,QAAQ,GAAG,KAAK+C,eAAL,CAAqBiB,YAArB,CAAjB;EACA,QAAIhE,QAAJ,EAAc,OAAOA,QAAQ,CAACiD,IAAT,CAAc,EAAd,CAAP;EACd,WAAO,IAAP;EACD;;EAGH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACe,MAATzB,SAAS,GAAG;EACd,WAAO,KAAKT,MAAL,CAAYS,SAAnB;EACD;;EAED9F,EAAAA,QAAQ,GAAG;EACT,WAAOA,UAAQ,CAACuI,IAAT,CAAc,IAAd,CAAP;EACD;;EAGH;EACA;EACA;EACA;;;EACElB,EAAAA,eAAe,CAACiB,YAAD,EAAe;EAC5B,QAAIhE,QAAJ;;EACA,QAAI,OAAOgE,YAAP,KAAwB,QAA5B,EAAsC;;EAEpChE,MAAAA,QAAQ,GAAG,KAAKe,MAAL,CAAYS,SAAZ,CAAsBqC,IAAtB,CAA2B,UAAUC,GAAV,EAAe;EACnD,eAAOA,GAAG,CAAC/F,IAAJ,KAAaiG,YAApB;EACD,OAFU,CAAX;EAGD,KALD,MAKO;EACLhE,MAAAA,QAAQ,GAAGgE,YAAX;EACD,KAT2B;;;EAY5BvD,IAAAA,KAAK,CAACrD,SAAN,CACE4C,QAAQ,KAAKJ,SADf,EAEG,uBAAsBoE,YAAa,EAFtC,EAZ4B;;EAkB5B,SAAKvG,MAAL,CAAY+C,IAAZ,CAAiBR,QAAQ,CAACtC,MAA1B;;EAEA,QAAIsC,QAAQ,CAACE,MAAb,EAAqB;;EAEnB,aAAOD,IAAI,CAACC,MAAL,CAAY,KAAKzC,MAAjB,EAAyBuC,QAAzB,EAAmC,KAAKe,MAAL,CAAYZ,eAA/C,CAAP;EACD,KAHD,MAGO;;EAEL,aAAOF,IAAI,CAACF,SAAL,CAAe,KAAKtC,MAApB,EAA4BuC,QAA5B,CAAP;EACD;EACF;;EAGH;EACA;EACA;EACA;;;EACEkE,EAAAA,kBAAkB,CAACF,YAAD,EAAe;EAC/B,UAAMhE,QAAQ,GAAG,KAAKe,MAAL,CAAYS,SAAZ,CAAsBqC,IAAtB,CAA2B,UAAUC,GAAV,EAAe;EACzD,aAAOA,GAAG,CAAC/F,IAAJ,KAAaiG,YAApB;EACD,KAFgB,CAAjB;EAGA,WAAOhE,QAAQ,KAAKJ,SAApB;EACD;;EAGH;EACA;EACA;EACA;;;EACEuE,EAAAA,eAAe,CAACP,aAAD,EAAgB;EAC7B,UAAMjB,SAAS,GAAG,KAAKrB,gBAAL,CAAsBuC,IAAtB,CACfC,GAAD,IAASA,GAAG,CAAC/F,IAAJ,KAAa6F,aADN,CAAlB;EAGA,WAAOjB,SAAS,KAAK/C,SAArB;EACD;;EA5JgB;;MA+JnBwE,KAAc,GAAGb;;EC5KjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASc,aAAT,CAAqBC,MAArB,EAA6B;EAC3B,QAAMC,IAAI,GAAGD,MAAM,CAACvB,eAAP,CAAuB,uBAAvB,CAAb;EACA,QAAMyB,GAAG,GAAGF,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAAZ,CAF2B;;EAK3B,QAAM0B,UAAU,GAAGH,MAAM,CAACvB,eAAP,CAAuB,aAAvB,CAAnB;EACA,QAAM2B,UAAU,GAAGJ,MAAM,CAACvB,eAAP,CAAuB,aAAvB,CAAnB;EACA,QAAM4B,eAAe,GAAGL,MAAM,CAACvB,eAAP,CAAuB,kBAAvB,CAAxB;EAEA,MAAI6B,EAAE,GAAG,IAAI1F,KAAJ,CAAUuF,UAAU,CAAC1J,MAArB,CAAT;EACA,MAAIO,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyF,EAAE,CAAC7J,MAAvB,EAA+BoE,CAAC,EAAhC,EAAoC;EAClC,QAAIJ,IAAI,GAAG0F,UAAU,CAACtF,CAAD,CAArB;EACAyF,IAAAA,EAAE,CAACzF,CAAD,CAAF,GAAQ,CAAC,IAAID,KAAJ,CAAUH,IAAV,CAAD,EAAkB,IAAIG,KAAJ,CAAUH,IAAV,CAAlB,CAAR;;EAEA,SAAK,IAAI8F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9F,IAApB,EAA0B8F,CAAC,EAA3B,EAA+B;EAC7BD,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcH,UAAU,CAACpJ,KAAD,CAAxB;EACAsJ,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcF,eAAe,CAACrJ,KAAK,EAAN,CAA7B;EACD;EACF;;EAED,SAAO;EACLwJ,IAAAA,KAAK,EAAEP,IADF;EAELQ,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAE,KADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEuE;EAHR,KADM,EAMN;EACEzG,MAAAA,IAAI,EAAE,IADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAE2E;EAHR,KANM;EAFH,GAAP;EAeD;;MAEDI,aAAc,GAAGX;;ECpGjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASY,cAAT,CAAsBX,MAAtB,EAA8B;EAC5B,QAAMC,IAAI,GAAGD,MAAM,CAACvB,eAAP,CAAuB,uBAAvB,CAAb;EACA,QAAMyB,GAAG,GAAGF,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAAZ,CAF4B;;EAK5B,MAAImC,SAAS,GAAGZ,MAAM,CAACvB,eAAP,CAAuB,YAAvB,CAAhB;EACA,QAAM2B,UAAU,GAAGJ,MAAM,CAACvB,eAAP,CAAuB,aAAvB,CAAnB;EACA,QAAM4B,eAAe,GAAGL,MAAM,CAACvB,eAAP,CAAuB,kBAAvB,CAAxB;EACAmC,EAAAA,SAAS,CAAC/J,IAAV,CAAeuJ,UAAU,CAAC3J,MAA1B;EAEA,MAAI6J,EAAE,GAAG,IAAI1F,KAAJ,CAAUqF,IAAI,CAACxJ,MAAf,CAAT;EACA,MAAIO,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyF,EAAE,CAAC7J,MAAvB,EAA+BoE,CAAC,EAAhC,EAAoC;EAClC,QAAIJ,IAAI,GAAGmG,SAAS,CAAC/F,CAAC,GAAG,CAAL,CAAT,GAAmB+F,SAAS,CAAC/F,CAAD,CAAvC;EACAyF,IAAAA,EAAE,CAACzF,CAAD,CAAF,GAAQ,CAAC,IAAID,KAAJ,CAAUH,IAAV,CAAD,EAAkB,IAAIG,KAAJ,CAAUH,IAAV,CAAlB,CAAR;;EAEA,SAAK,IAAI8F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9F,IAApB,EAA0B8F,CAAC,EAA3B,EAA+B;EAC7BD,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcH,UAAU,CAACpJ,KAAD,CAAxB;EACAsJ,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcF,eAAe,CAACrJ,KAAK,EAAN,CAA7B;EACD;EACF;;EAED,SAAO;EACLwJ,IAAAA,KAAK,EAAEP,IADF;EAELQ,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAE,KADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEuE;EAHR,KADM,EAMN;EACEzG,MAAAA,IAAI,EAAE,IADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAE2E;EAHR,KANM;EAFH,GAAP;EAeD;;MAEDO,YAAc,GAAGF;;ECtGjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASG,aAAT,CAAqBd,MAArB,EAA6B;EAC3B,QAAMe,WAAW,GAAGf,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAApB;EACA,QAAMuC,YAAY,GAAGD,WAAW,CAACtK,MAAjC;EACA,QAAMwK,QAAQ,GAAGjB,MAAM,CAACX,YAAP,CAAoB,eAApB,CAAjB;EACA,MAAI6B,OAAJ;;EACA,MAAID,QAAQ,CAACE,KAAT,CAAe,MAAf,CAAJ,EAA4B;EAC1BD,IAAAA,OAAO,GAAI,KAAI7G,MAAM,CAAC4G,QAAQ,CAACG,OAAT,CAAiB,kBAAjB,EAAqC,IAArC,CAAD,CAA6C,EAAlE;EACD,GAFD,MAEO,IAAIH,QAAQ,CAACE,KAAT,CAAe,MAAf,CAAJ,EAA4B;EACjCD,IAAAA,OAAO,GAAG,KAAV;EACD,GAFM,MAEA;EACLA,IAAAA,OAAO,GAAG,SAAV;EACD;;EACD,QAAMG,SAAS,GAAGrB,MAAM,CAACvB,eAAP,CAAuB,mBAAvB,EAA4C,CAA5C,CAAlB;EACA,QAAM6C,aAAa,GAAGtB,MAAM,CAACvB,eAAP,CAAuB,wBAAvB,EAAiD,CAAjD,CAAtB;EACA,MAAI8C,gBAAJ;;EACA,MAAIvB,MAAM,CAACJ,kBAAP,CAA0B,0BAA1B,CAAJ,EAA2D;EACzD2B,IAAAA,gBAAgB,GAAGvB,MAAM,CAACvB,eAAP,CAAuB,0BAAvB,EAAmD,CAAnD,CAAnB;;EAEA,QACE+C,IAAI,CAACC,GAAL,CAASJ,SAAS,GAAGE,gBAAgB,GAAGP,YAA/B,GAA8CM,aAAvD,IAAwE,CAD1E,EAEE;EACA,YAAM,IAAInK,KAAJ,CACJ,iEADI,CAAN;EAGD;EACF,GAVD,MAUO;EACLoK,IAAAA,gBAAgB,GAAG,CAACD,aAAa,GAAGD,SAAjB,IAA8BL,YAAjD;EACD;;EAED,MAAIR,KAAK,GAAG,EAAZ;EACA,MAAIP,IAAI,GAAGoB,SAAX;;EACA,OAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmG,YAApB,EAAkCnG,CAAC,EAAnC,EAAuC;EACrC2F,IAAAA,KAAK,CAAC3J,IAAN,CAAWoJ,IAAX;EACAA,IAAAA,IAAI,IAAIsB,gBAAR;EACD;;EAED,SAAO;EACLf,IAAAA,KADK;EAELC,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAEyH,OADR;EAEE/C,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEoF;EAHR,KADM;EAFH,GAAP;EAUD;;MAEDW,aAAc,GAAGZ;;EC9FjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;;;EAEA,SAASH,cAAT,CAAsBX,MAAtB,EAA8B;EAC5B,QAAMC,IAAI,GAAGD,MAAM,CAACvB,eAAP,CAAuB,uBAAvB,CAAb;EACA,QAAMyB,GAAG,GAAGF,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAAZ,CAF4B;;EAK5B,MAAImC,SAAS,GAAGZ,MAAM,CAACvB,eAAP,CAAuB,YAAvB,CAAhB;EACA,QAAM2B,UAAU,GAAGJ,MAAM,CAACvB,eAAP,CAAuB,aAAvB,CAAnB;EACA,QAAM4B,eAAe,GAAGL,MAAM,CAACvB,eAAP,CAAuB,kBAAvB,CAAxB;EACAmC,EAAAA,SAAS,CAAC/J,IAAV,CAAeuJ,UAAU,CAAC3J,MAA1B;EAEA,MAAI6J,EAAE,GAAG,IAAI1F,KAAJ,CAAUqF,IAAI,CAACxJ,MAAf,CAAT;EACA,MAAIO,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyF,EAAE,CAAC7J,MAAvB,EAA+BoE,CAAC,EAAhC,EAAoC;EAClC,QAAIJ,IAAI,GAAGmG,SAAS,CAAC/F,CAAC,GAAG,CAAL,CAAT,GAAmB+F,SAAS,CAAC/F,CAAD,CAAvC;EACAyF,IAAAA,EAAE,CAACzF,CAAD,CAAF,GAAQ,CAAC,IAAID,KAAJ,CAAUH,IAAV,CAAD,EAAkB,IAAIG,KAAJ,CAAUH,IAAV,CAAlB,CAAR;;EAEA,SAAK,IAAI8F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9F,IAApB,EAA0B8F,CAAC,EAA3B,EAA+B;EAC7BD,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcH,UAAU,CAACpJ,KAAD,CAAxB;EACAsJ,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcF,eAAe,CAACrJ,KAAK,EAAN,CAA7B;EACD;EACF;;EAED,SAAO;EACLwJ,IAAAA,KAAK,EAAEP,IADF;EAELQ,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAE,KADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEuE;EAHR,KADM,EAMN;EACEzG,MAAAA,IAAI,EAAE,IADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAE2E;EAHR,KANM;EAFH,GAAP;EAeD;;MAEDqB,cAAc,GAAGhB;;ECvGjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASiB,cAAT,CAAsB5B,MAAtB,EAA8B;EAC5B,QAAMC,IAAI,GAAGD,MAAM,CAACvB,eAAP,CAAuB,uBAAvB,CAAb;EACA,QAAMyB,GAAG,GAAGF,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAAZ,CAF4B;;EAK5B,MAAImC,SAAS,GAAGZ,MAAM,CAACvB,eAAP,CAAuB,YAAvB,CAAhB;EACA,QAAM2B,UAAU,GAAGJ,MAAM,CAACvB,eAAP,CAAuB,aAAvB,CAAnB;EACA,QAAM4B,eAAe,GAAGL,MAAM,CAACvB,eAAP,CAAuB,kBAAvB,CAAxB;EACAmC,EAAAA,SAAS,CAAC/J,IAAV,CAAeuJ,UAAU,CAAC3J,MAA1B;EAEA,MAAI6J,EAAE,GAAG,IAAI1F,KAAJ,CAAUqF,IAAI,CAACxJ,MAAf,CAAT;EACA,MAAIO,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyF,EAAE,CAAC7J,MAAvB,EAA+BoE,CAAC,EAAhC,EAAoC;EAClC,QAAIJ,IAAI,GAAGmG,SAAS,CAAC/F,CAAC,GAAG,CAAL,CAAT,GAAmB+F,SAAS,CAAC/F,CAAD,CAAvC;EACAyF,IAAAA,EAAE,CAACzF,CAAD,CAAF,GAAQ,CAAC,IAAID,KAAJ,CAAUH,IAAV,CAAD,EAAkB,IAAIG,KAAJ,CAAUH,IAAV,CAAlB,CAAR;;EAEA,SAAK,IAAI8F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9F,IAApB,EAA0B8F,CAAC,EAA3B,EAA+B;EAC7BD,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcH,UAAU,CAACpJ,KAAD,CAAxB;EACAsJ,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcF,eAAe,CAACrJ,KAAK,EAAN,CAA7B;EACD;EACF;;EAED,SAAO;EACLwJ,IAAAA,KAAK,EAAEP,IADF;EAELQ,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAE,KADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEuE;EAHR,KADM,EAMN;EACEzG,MAAAA,IAAI,EAAE,IADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAE2E;EAHR,KANM;EAFH,GAAP;EAeD;;MAEDuB,cAAc,GAAGD;;EC9GjB;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASE,YAAT,CAAoB9B,MAApB,EAA4B;EAC1B,QAAMC,IAAI,GAAGD,MAAM,CAACvB,eAAP,CAAuB,uBAAvB,CAAb;EACA,QAAMyB,GAAG,GAAGF,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAAZ,CAF0B;;EAK1B,MAAImC,SAAS,GAAGZ,MAAM,CAACvB,eAAP,CAAuB,YAAvB,CAAhB;EACA,QAAM2B,UAAU,GAAGJ,MAAM,CAACvB,eAAP,CAAuB,aAAvB,CAAnB;EACA,QAAM4B,eAAe,GAAGL,MAAM,CAACvB,eAAP,CAAuB,kBAAvB,CAAxB;EACAmC,EAAAA,SAAS,CAAC/J,IAAV,CAAeuJ,UAAU,CAAC3J,MAA1B;EAEA,MAAI6J,EAAE,GAAG,IAAI1F,KAAJ,CAAUqF,IAAI,CAACxJ,MAAf,CAAT;EACA,MAAIO,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyF,EAAE,CAAC7J,MAAvB,EAA+BoE,CAAC,EAAhC,EAAoC;EAClC,QAAIJ,IAAI,GAAGmG,SAAS,CAAC/F,CAAC,GAAG,CAAL,CAAT,GAAmB+F,SAAS,CAAC/F,CAAD,CAAvC;EACAyF,IAAAA,EAAE,CAACzF,CAAD,CAAF,GAAQ,CAAC,IAAID,KAAJ,CAAUH,IAAV,CAAD,EAAkB,IAAIG,KAAJ,CAAUH,IAAV,CAAlB,CAAR;;EAEA,SAAK,IAAI8F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9F,IAApB,EAA0B8F,CAAC,EAA3B,EAA+B;EAC7BD,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcH,UAAU,CAACpJ,KAAD,CAAxB;EACAsJ,MAAAA,EAAE,CAACzF,CAAD,CAAF,CAAM,CAAN,EAAS0F,CAAT,IAAcF,eAAe,CAACrJ,KAAK,EAAN,CAA7B;EACD;EACF;;EAED,SAAO;EACLwJ,IAAAA,KAAK,EAAEP,IADF;EAELQ,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAE,KADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEuE;EAHR,KADM,EAMN;EACEzG,MAAAA,IAAI,EAAE,IADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAE2E;EAHR,KANM;EAFH,GAAP;EAeD;;MAEDyB,YAAc,GAAGD;;ECrGjB,SAASE,aAAT,CAAqBhC,MAArB,EAA6B;EAC3B,MAAIC,IAAI,GAAG,EAAX;EACA,QAAMC,GAAG,GAAGF,MAAM,CAACvB,eAAP,CAAuB,iBAAvB,CAAZ,CAF2B;;EAK3B,QAAM4C,SAAS,GAAGhH,MAAM,CAAC2F,MAAM,CAACvB,eAAP,CAAuB,mBAAvB,CAAD,CAAxB;EACA,QAAMwD,QAAQ,GAAG5H,MAAM,CAAC2F,MAAM,CAACvB,eAAP,CAAuB,0BAAvB,CAAD,CAAvB;EAEA,MAAIyD,WAAW,GAAGb,SAAlB;;EACA,OAAK,IAAIxG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqF,GAAG,CAACzJ,MAAxB,EAAgCoE,CAAC,EAAjC,EAAqC;EACnCoF,IAAAA,IAAI,CAACpJ,IAAL,CAAUqL,WAAV;EACAA,IAAAA,WAAW,IAAID,QAAf;EACD;;EAED,SAAO;EACLzB,IAAAA,KAAK,EAAEP,IADF;EAELQ,IAAAA,MAAM,EAAE,CACN;EACEhH,MAAAA,IAAI,EAAE,KADR;EAEE0E,MAAAA,SAAS,EAAE,CAFb;EAGExC,MAAAA,IAAI,EAAEuE;EAHR,KADM;EAFH,GAAP;EAUD;;MAEDiC,aAAc,GAAGH;;EC1BjB,MAAM/C,YAAY,GAAGtF,KAArB;EAEA,MAAMoG,WAAW,GAAG3D,aAApB;EACA,MAAMyE,UAAU,GAAGhC,YAAnB;EACA,MAAMiC,WAAW,GAAG/B,aAApB;EACA,MAAM4B,YAAY,GAAG3B,cAArB;EACA,MAAM4C,YAAY,GAAGQ,cAArB;EACA,MAAMN,UAAU,GAAGO,YAAnB;EACA,MAAML,WAAW,GAAGM,aAApB;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,SAASC,UAAT,CAAoB5G,IAApB,EAAwC;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACtC,MAAIxC,MAAM,GAAG,IAAIf,YAAJ,CAAiBtD,IAAjB,CAAb;EACA,QAAMqB,gBAAgB,GAAGgD,MAAM,CAAChD,gBAAhC;EAEA,MAAIyF,cAAc,GAChBzC,MAAM,CAACJ,kBAAP,CAA0B,gBAA1B,KACAI,MAAM,CAACP,uBAAP,CAA+B,gBAA/B,CAFF;EAGA,MAAIiD,cAAc,GAAG1C,MAAM,CAACH,eAAP,CAAuB,gBAAvB,CAArB;EACA,MAAI8C,WAAW,GAAG3C,MAAM,CAACJ,kBAAP,CAA0B,aAA1B,CAAlB;EACA,MAAIgD,aAAa,GAAG5C,MAAM,CAACX,YAAP,CAAoB,eAApB,CAApB;EACA,MAAIwD,qBAAqB,GAAG7C,MAAM,CAACH,eAAP,CAAuB,uBAAvB,CAA5B;EACA,MAAIiD,kBAAkB,GAAG9C,MAAM,CAACX,YAAP,CAAoB,oBAApB,CAAzB;EAEA,MAAI0D,GAAJ;;EAEA,MAAIJ,WAAW,IAAID,cAAnB,EAAmC;EACjCK,IAAAA,GAAG,GAAGhD,WAAW,CAACC,MAAD,CAAjB;EACD,GAFD,MAEO,IACL2C,WAAW,IACXF,cADA,IAEAA,cAAc,CAACtB,KAAf,CAAqB,WAArB,CAHK,EAIL;EACA4B,IAAAA,GAAG,GAAGpC,YAAY,CAACX,MAAD,CAAlB;EACD,GANM,MAMA,IAAI2C,WAAW,IAAIF,cAAf,IAAiCA,cAAc,CAACtB,KAAf,CAAqB,SAArB,CAArC,EAAsE;EAC3E4B,IAAAA,GAAG,GAAGlC,UAAU,CAACb,MAAD,CAAhB;EACD,GAFM,MAEA,IAAI2C,WAAW,IAAIF,cAAf,IAAiCA,cAAc,CAACtB,KAAf,CAAqB,SAArB,CAArC,EAAsE;EAC3E4B,IAAAA,GAAG,GAAGlC,UAAU,CAACb,MAAD,CAAhB;EACD,GAFM,MAEA,IACL2C,WAAW,IACXG,kBADA,IAEAA,kBAAkB,CAAC3B,KAAnB,CAAyB,WAAzB,CAHK,EAIL;EACA4B,IAAAA,GAAG,GAAGnB,YAAY,CAAC5B,MAAD,CAAlB;EACD,GANM,MAMA,IACL2C,WAAW,IACXG,kBADA,IAEAA,kBAAkB,CAAC3B,KAAnB,CAAyB,SAAzB,CAHK,EAIL;EACA4B,IAAAA,GAAG,GAAGjB,UAAU,CAAC9B,MAAD,CAAhB;EACD,GANM,MAMA,IAAI4C,aAAa,IAAIA,aAAa,CAACzB,KAAd,CAAoB,YAApB,CAArB,EAAwD;;EAE7D4B,IAAAA,GAAG,GAAGjC,WAAW,CAACd,MAAD,CAAjB;EACD,GAHM,MAGA,IAAI6C,qBAAJ,EAA2B;EAChCE,IAAAA,GAAG,GAAGf,WAAW,CAAChC,MAAD,CAAjB;EACD,GAFM,MAEA;EACL,UAAM,IAAI/G,SAAJ,CAAc,qBAAd,CAAN;EACD;;EAED,MAAIuJ,OAAO,CAACQ,IAAZ,EAAkB;EAChBD,IAAAA,GAAG,CAACC,IAAJ,GAAWC,OAAO,CAACjG,gBAAD,CAAlB;EACD;;EAED,MAAIwF,OAAO,CAACtF,SAAZ,EAAuB;EACrB6F,IAAAA,GAAG,CAAC7F,SAAJ,GAAgBgG,YAAY,CAAClD,MAAD,CAA5B;EACD;;EAED,SAAO+C,GAAP;EACD;EAED;EACA;EACA;EACA;EACA;;;EACA,SAASI,eAAT,CAAyBxH,IAAzB,EAA+B;EAC7B,SAAOoE,WAAW,CAAC,IAAId,YAAJ,CAAiBtD,IAAjB,CAAD,CAAlB;EACD;EAED;EACA;EACA;EACA;EACA;;;EACA,SAASyH,eAAT,CAAyBzH,IAAzB,EAA+B;EAC7B,SAAOmF,WAAW,CAAC,IAAI7B,YAAJ,CAAiBtD,IAAjB,CAAD,CAAlB;EACD;EAED;EACA;EACA;EACA;EACA;;;EACA,SAAS0H,gBAAT,CAA0B1H,IAA1B,EAAgC;EAC9B,SAAOgF,YAAY,CAAC,IAAI1B,YAAJ,CAAiBtD,IAAjB,CAAD,CAAnB;EACD;;EAED,SAAS2H,eAAT,CAAyB3H,IAAzB,EAA+B;EAC7B,SAAOqG,WAAW,CAAC,IAAI/C,YAAJ,CAAiBtD,IAAjB,CAAD,CAAlB;EACD;;EAED,SAASsH,OAAT,CAAiBjG,gBAAjB,EAAmC;EACjC,MAAI+F,GAAG,GAAG,EAAV;;EACA,OAAK,MAAMQ,IAAX,IAAmBvG,gBAAnB,EAAqC;EACnC+F,IAAAA,GAAG,CAACQ,IAAI,CAAC9J,IAAN,CAAH,GAAiB8J,IAAI,CAAC7M,KAAtB;EACD;;EACD,SAAOqM,GAAP;EACD;;EAED,SAASG,YAAT,CAAsBlD,MAAtB,EAA8B;EAC5B,OAAK,IAAItE,QAAT,IAAqBsE,MAAM,CAAC9C,SAA5B,EAAuC;EACrCxB,IAAAA,QAAQ,CAAChF,KAAT,GAAiBsJ,MAAM,CAACvB,eAAP,CAAuB/C,QAAvB,CAAjB;EACD;;EACD,SAAOsE,MAAM,CAAC9C,SAAd;EACD;;AAEDsG,eAAA,GAAiBjB,UAAjB;kCACiCY;kCACAC;mCACCC;kCACDC;;;;;;ECjIhC,aAAUG,CAAV,EAAa;;EAGZ,aAASC,QAAT,CAAkBC,UAAlB,EAA8B;;EAE5B,UAAI,eAAe,OAAOA,UAA1B,EAAsC;EAAE,eAAOA,UAAP;EAAoB,OAFhC;;;EAM5B,UAAI,eAAe,OAAOC,MAA1B,EAAkC;EAChC,eAAO,SAASC,cAAT,CAAwBC,CAAxB,EAA2B;;;;EAIhC,iBAAO,IAAIF,MAAJ,CAAWE,CAAX,EAAc,QAAd,EAAwB1M,QAAxB,CAAiC,QAAjC,CAAP;EACD,SALD;EAMD,OAb2B;;;EAgB5B,UAAI,aAAa,OAAOqM,CAAC,CAACM,QAA1B,EAAoC;;;EAGlC,eAAO,SAASC,iBAAT,CAA2BF,CAA3B,EAA8B;EACnC,cAAIG,GAAG,GAAGR,CAAC,CAACM,QAAF,CAAWG,cAAX,CAA0BJ,CAA1B,CAAV;EACA,iBAAOlJ,KAAK,CAACuJ,SAAN,CAAgBC,GAAhB,CAAoBzE,IAApB,CAAyBsE,GAAzB,EAA8B,UAAUI,EAAV,EAAc;EACjD,mBAAOlO,MAAM,CAACC,YAAP,CAAoBiO,EAApB,CAAP;EACD,WAFM,EAEJ1F,IAFI,CAEC,EAFD,CAAP;EAGD,SALD;EAMD;;EAEH,aAAO,YAAY;;EAElB,cAAM,IAAIxH,KAAJ,CAAU,2DACf,mDADK,CAAN;EAEE,OAJH;EAKC;;EAED,QAAImN,QAAQ,GAAGZ,QAAQ,CAACD,CAAC,CAACc,IAAH,CAAvB;EACAd,IAAAA,CAAC,CAACc,IAAF,GAASD,QAAT;;EAEA,QAAoCE,MAAhC,IAA0CA,MAAM,CAAC5L,OAArD,EAA8D;EAC5D4L,MAAAA,cAAA,GAAiBF,QAAjB;EACD;EACF,GA3CA,EA2CCG,MA3CD,CAAD;;;;;;;wBCEqBC;EACrB,2CAAsBC,WAAtB;2BACwBC;EAExB,IAAIC,MAAM,GAAG,EAAb;EACA,IAAIC,SAAS,GAAG,EAAhB;EACA,IAAIC,GAAG,GAAG,OAAOC,UAAP,KAAsB,WAAtB,GAAoCA,UAApC,GAAiDpK,KAA3D;EAEA,IAAIvF,IAAI,GAAG,kEAAX;;EACA,KAAK,IAAIwF,CAAC,GAAG,CAAR,EAAWoK,GAAG,GAAG5P,IAAI,CAACoB,MAA3B,EAAmCoE,CAAC,GAAGoK,GAAvC,EAA4C,EAAEpK,CAA9C,EAAiD;EAC/CgK,EAAAA,MAAM,CAAChK,CAAD,CAAN,GAAYxF,IAAI,CAACwF,CAAD,CAAhB;EACAiK,EAAAA,SAAS,CAACzP,IAAI,CAACuB,UAAL,CAAgBiE,CAAhB,CAAD,CAAT,GAAgCA,CAAhC;EACD;EAGD;;;EACAiK,SAAS,CAAC,IAAIlO,UAAJ,CAAe,CAAf,CAAD,CAAT,GAA+B,EAA/B;EACAkO,SAAS,CAAC,IAAIlO,UAAJ,CAAe,CAAf,CAAD,CAAT,GAA+B,EAA/B;;EAEA,SAASsO,OAAT,CAAkBC,GAAlB,EAAuB;EACrB,MAAIF,GAAG,GAAGE,GAAG,CAAC1O,MAAd;;EAEA,MAAIwO,GAAG,GAAG,CAAN,GAAU,CAAd,EAAiB;EACf,UAAM,IAAI9N,KAAJ,CAAU,gDAAV,CAAN;EACD,GALoB;;;;EASrB,MAAIiO,QAAQ,GAAGD,GAAG,CAACE,OAAJ,CAAY,GAAZ,CAAf;EACA,MAAID,QAAQ,KAAK,CAAC,CAAlB,EAAqBA,QAAQ,GAAGH,GAAX;EAErB,MAAIK,eAAe,GAAGF,QAAQ,KAAKH,GAAb,GAClB,CADkB,GAElB,IAAKG,QAAQ,GAAG,CAFpB;EAIA,SAAO,CAACA,QAAD,EAAWE,eAAX,CAAP;EACD;;;EAGD,SAASZ,UAAT,CAAqBS,GAArB,EAA0B;EACxB,MAAII,IAAI,GAAGL,OAAO,CAACC,GAAD,CAAlB;EACA,MAAIC,QAAQ,GAAGG,IAAI,CAAC,CAAD,CAAnB;EACA,MAAID,eAAe,GAAGC,IAAI,CAAC,CAAD,CAA1B;EACA,SAAQ,CAACH,QAAQ,GAAGE,eAAZ,IAA+B,CAA/B,GAAmC,CAApC,GAAyCA,eAAhD;EACD;;EAED,SAASE,WAAT,CAAsBL,GAAtB,EAA2BC,QAA3B,EAAqCE,eAArC,EAAsD;EACpD,SAAQ,CAACF,QAAQ,GAAGE,eAAZ,IAA+B,CAA/B,GAAmC,CAApC,GAAyCA,eAAhD;EACD;;EAED,SAASX,WAAT,CAAsBQ,GAAtB,EAA2B;EACzB,MAAI3M,GAAJ;EACA,MAAI+M,IAAI,GAAGL,OAAO,CAACC,GAAD,CAAlB;EACA,MAAIC,QAAQ,GAAGG,IAAI,CAAC,CAAD,CAAnB;EACA,MAAID,eAAe,GAAGC,IAAI,CAAC,CAAD,CAA1B;EAEA,MAAIE,GAAG,GAAG,IAAIV,GAAJ,CAAQS,WAAW,CAACL,GAAD,EAAMC,QAAN,EAAgBE,eAAhB,CAAnB,CAAV;EAEA,MAAII,OAAO,GAAG,CAAd,CARyB;;EAWzB,MAAIT,GAAG,GAAGK,eAAe,GAAG,CAAlB,GACNF,QAAQ,GAAG,CADL,GAENA,QAFJ;EAIA,MAAIvK,CAAJ;;EACA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGoK,GAAhB,EAAqBpK,CAAC,IAAI,CAA1B,EAA6B;EAC3BrC,IAAAA,GAAG,GACAsM,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAf,CAAD,CAAT,IAAgC,EAAjC,GACCiK,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAC,GAAG,CAAnB,CAAD,CAAT,IAAoC,EADrC,GAECiK,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAC,GAAG,CAAnB,CAAD,CAAT,IAAoC,CAFrC,GAGAiK,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAC,GAAG,CAAnB,CAAD,CAJX;EAKA4K,IAAAA,GAAG,CAACC,OAAO,EAAR,CAAH,GAAkBlN,GAAG,IAAI,EAAR,GAAc,IAA/B;EACAiN,IAAAA,GAAG,CAACC,OAAO,EAAR,CAAH,GAAkBlN,GAAG,IAAI,CAAR,GAAa,IAA9B;EACAiN,IAAAA,GAAG,CAACC,OAAO,EAAR,CAAH,GAAiBlN,GAAG,GAAG,IAAvB;EACD;;EAED,MAAI8M,eAAe,KAAK,CAAxB,EAA2B;EACzB9M,IAAAA,GAAG,GACAsM,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAf,CAAD,CAAT,IAAgC,CAAjC,GACCiK,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAC,GAAG,CAAnB,CAAD,CAAT,IAAoC,CAFvC;EAGA4K,IAAAA,GAAG,CAACC,OAAO,EAAR,CAAH,GAAiBlN,GAAG,GAAG,IAAvB;EACD;;EAED,MAAI8M,eAAe,KAAK,CAAxB,EAA2B;EACzB9M,IAAAA,GAAG,GACAsM,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAf,CAAD,CAAT,IAAgC,EAAjC,GACCiK,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAC,GAAG,CAAnB,CAAD,CAAT,IAAoC,CADrC,GAECiK,SAAS,CAACK,GAAG,CAACvO,UAAJ,CAAeiE,CAAC,GAAG,CAAnB,CAAD,CAAT,IAAoC,CAHvC;EAIA4K,IAAAA,GAAG,CAACC,OAAO,EAAR,CAAH,GAAkBlN,GAAG,IAAI,CAAR,GAAa,IAA9B;EACAiN,IAAAA,GAAG,CAACC,OAAO,EAAR,CAAH,GAAiBlN,GAAG,GAAG,IAAvB;EACD;;EAED,SAAOiN,GAAP;EACD;;EAED,SAASE,eAAT,CAA0BC,GAA1B,EAA+B;EAC7B,SAAOf,MAAM,CAACe,GAAG,IAAI,EAAP,GAAY,IAAb,CAAN,GACLf,MAAM,CAACe,GAAG,IAAI,EAAP,GAAY,IAAb,CADD,GAELf,MAAM,CAACe,GAAG,IAAI,CAAP,GAAW,IAAZ,CAFD,GAGLf,MAAM,CAACe,GAAG,GAAG,IAAP,CAHR;EAID;;EAED,SAASC,WAAT,CAAsBC,KAAtB,EAA6BC,KAA7B,EAAoCC,GAApC,EAAyC;EACvC,MAAIxN,GAAJ;EACA,MAAIjC,MAAM,GAAG,EAAb;;EACA,OAAK,IAAIsE,CAAC,GAAGkL,KAAb,EAAoBlL,CAAC,GAAGmL,GAAxB,EAA6BnL,CAAC,IAAI,CAAlC,EAAqC;EACnCrC,IAAAA,GAAG,GACD,CAAEsN,KAAK,CAACjL,CAAD,CAAL,IAAY,EAAb,GAAmB,QAApB,KACEiL,KAAK,CAACjL,CAAC,GAAG,CAAL,CAAL,IAAgB,CAAjB,GAAsB,MADvB,KAECiL,KAAK,CAACjL,CAAC,GAAG,CAAL,CAAL,GAAe,IAFhB,CADF;EAIAtE,IAAAA,MAAM,CAACM,IAAP,CAAY8O,eAAe,CAACnN,GAAD,CAA3B;EACD;;EACD,SAAOjC,MAAM,CAACoI,IAAP,CAAY,EAAZ,CAAP;EACD;;EAED,SAASiG,aAAT,CAAwBkB,KAAxB,EAA+B;EAC7B,MAAItN,GAAJ;EACA,MAAIyM,GAAG,GAAGa,KAAK,CAACrP,MAAhB;EACA,MAAIwP,UAAU,GAAGhB,GAAG,GAAG,CAAvB,CAH6B;;EAI7B,MAAIiB,KAAK,GAAG,EAAZ;EACA,MAAIC,cAAc,GAAG,KAArB,CAL6B;;;EAQ7B,OAAK,IAAItL,CAAC,GAAG,CAAR,EAAWuL,IAAI,GAAGnB,GAAG,GAAGgB,UAA7B,EAAyCpL,CAAC,GAAGuL,IAA7C,EAAmDvL,CAAC,IAAIsL,cAAxD,EAAwE;EACtED,IAAAA,KAAK,CAACrP,IAAN,CAAWgP,WAAW,CAACC,KAAD,EAAQjL,CAAR,EAAYA,CAAC,GAAGsL,cAAL,GAAuBC,IAAvB,GAA8BA,IAA9B,GAAsCvL,CAAC,GAAGsL,cAArD,CAAtB;EACD,GAV4B;;;EAa7B,MAAIF,UAAU,KAAK,CAAnB,EAAsB;EACpBzN,IAAAA,GAAG,GAAGsN,KAAK,CAACb,GAAG,GAAG,CAAP,CAAX;EACAiB,IAAAA,KAAK,CAACrP,IAAN,CACEgO,MAAM,CAACrM,GAAG,IAAI,CAAR,CAAN,GACAqM,MAAM,CAAErM,GAAG,IAAI,CAAR,GAAa,IAAd,CADN,GAEA,IAHF;EAKD,GAPD,MAOO,IAAIyN,UAAU,KAAK,CAAnB,EAAsB;EAC3BzN,IAAAA,GAAG,GAAG,CAACsN,KAAK,CAACb,GAAG,GAAG,CAAP,CAAL,IAAkB,CAAnB,IAAwBa,KAAK,CAACb,GAAG,GAAG,CAAP,CAAnC;EACAiB,IAAAA,KAAK,CAACrP,IAAN,CACEgO,MAAM,CAACrM,GAAG,IAAI,EAAR,CAAN,GACAqM,MAAM,CAAErM,GAAG,IAAI,CAAR,GAAa,IAAd,CADN,GAEAqM,MAAM,CAAErM,GAAG,IAAI,CAAR,GAAa,IAAd,CAFN,GAGA,GAJF;EAMD;;EAED,SAAO0N,KAAK,CAACvH,IAAN,CAAW,EAAX,CAAP;;;EC7IF;;;;;EAKG;EACG,SAAU,YAAV,CACJ,IADI,EAE6B;EAAA,MAAjC,OAAiC,uEAAF,EAAE;;EAEjC,MAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;EAC5B,WAAO,IAAP;EACD;;EACD,MAAI,WAAW,CAAC,MAAZ,CAAmB,IAAnB,KAA4B,IAAI,YAAY,WAAhD,EAA6D;EAC3D,UAAM;EAAE,MAAA,QAAQ,GAAG,aAAa,CAAC,IAAD;EAA1B,QAAqC,OAA3C;EACA,UAAM,OAAO,GAAG,IAAI,WAAJ,CAAgB,QAAhB,CAAhB;EACA,WAAO,OAAO,CAAC,MAAR,CAAe,IAAf,CAAP;EACD;;EACD,QAAM,IAAI,SAAJ,CAAc,uDAAd,CAAN;EACD;;EAED,SAAS,aAAT,CAAuB,IAAvB,EAAqD;EACnD,QAAM,KAAK,GAAG,WAAW,CAAC,MAAZ,CAAmB,IAAnB,IACV,IAAI,UAAJ,CAAe,IAAI,CAAC,MAApB,EAA4B,IAAI,CAAC,UAAjC,EAA6C,IAAI,CAAC,UAAlD,CADU,GAEV,IAAI,UAAJ,CAAe,IAAf,CAFJ;;EAGA,MAAI,KAAK,CAAC,MAAN,IAAgB,CAApB,EAAuB;EACrB,QAAI,KAAK,CAAC,CAAD,CAAL,KAAa,IAAb,IAAqB,KAAK,CAAC,CAAD,CAAL,KAAa,IAAtC,EAA4C;EAC1C,aAAO,UAAP;EACD;;EACD,QAAI,KAAK,CAAC,CAAD,CAAL,KAAa,IAAb,IAAqB,KAAK,CAAC,CAAD,CAAL,KAAa,IAAtC,EAA4C;EAC1C,aAAO,UAAP;EACD;EACF;;EACD,SAAO,OAAP;EACD;;ECzCD;EACA;EACA;EACA;EACA;EACO,SAAS0H,WAAT,CAAqB3P,KAArB,EAA4B;EACjC,MAAIA,KAAK,CAACD,MAAN,KAAiB,CAAjB,IAAsBC,KAAK,CAACD,MAAN,KAAiB,CAA3C,EAA8C;EAC5C,QAAI6P,SAAS,GAAG5P,KAAK,CAAC6P,WAAN,EAAhB;EAEA,QAAID,SAAS,KAAK,MAAlB,EAA0B,OAAO,IAAP;EAC1B,QAAIA,SAAS,KAAK,OAAlB,EAA2B,OAAO,KAAP;EAC5B;;EACD,MAAIE,MAAM,GAAGnM,MAAM,CAAC3D,KAAD,CAAnB;;EACA,MAAI8P,MAAM,KAAK,CAAX,IAAgB,CAAC9P,KAAK,CAAC+P,QAAN,CAAe,GAAf,CAArB,EAA0C;EACxC,WAAO/P,KAAP;EACD;;EACD,MAAI,CAAC2D,MAAM,CAACqE,KAAP,CAAa8H,MAAb,CAAL,EAA2B,OAAOA,MAAP;EAC3B,SAAO9P,KAAP;EACD;;EClBD,MAAMgQ,YAAY,GAAG,CAAC,KAAD,EAAQ,MAAR,EAAgB,YAAhB,CAArB;EAEO,SAASC,mBAAT,CAA6BzI,MAA7B,EAAqC;EAC1C,MAAI0I,OAAO,GAAG1I,MAAM,CAAC0I,OAArB;EACA,MAAInQ,MAAM,GAAGmQ,OAAO,CAACnQ,MAArB;EACA,MAAIoQ,YAAY,GAAG;EACjBrG,IAAAA,KAAK,EAAE,IAAI5F,KAAJ,CAAUnE,MAAV,CADU;EAEjBgK,IAAAA,MAAM,EAAE;EACNH,MAAAA,EAAE,EAAE;EACFnC,QAAAA,SAAS,EAAE,CADT;EAEFxC,QAAAA,IAAI,EAAE,IAAIf,KAAJ,CAAUnE,MAAV;EAFJ;EADE;EAFS,GAAnB;EAUA,MAAIqQ,kBAAkB,GAAG,EAAzB;;EACA,OAAK,IAAIjM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6L,YAAY,CAACjQ,MAAjC,EAAyCoE,CAAC,EAA1C,EAA8C;EAC5C,QAAIkM,KAAK,GAAGC,qBAAqB,CAACN,YAAY,CAAC7L,CAAD,CAAb,CAAjC;;EACA,QAAI+L,OAAO,CAAC,CAAD,CAAP,CAAWG,KAAX,CAAJ,EAAuB;EACrBD,MAAAA,kBAAkB,CAACjQ,IAAnB,CAAwBkQ,KAAxB;EACAF,MAAAA,YAAY,CAACpG,MAAb,CAAoBsG,KAApB,IAA6B;EAC3B5I,QAAAA,SAAS,EAAE,CADgB;EAE3BxC,QAAAA,IAAI,EAAE,IAAIf,KAAJ,CAAUnE,MAAV;EAFqB,OAA7B;EAID;EACF;;EAED,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpE,MAApB,EAA4BoE,CAAC,EAA7B,EAAiC;EAC/B,QAAIoM,QAAQ,GAAGL,OAAO,CAAC/L,CAAD,CAAtB;EACAgM,IAAAA,YAAY,CAACrG,KAAb,CAAmB3F,CAAnB,IAAwBoM,QAAQ,CAACC,SAAjC;;EACA,SAAK,IAAI3G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuG,kBAAkB,CAACrQ,MAAvC,EAA+C8J,CAAC,EAAhD,EAAoD;EAClDsG,MAAAA,YAAY,CAACpG,MAAb,CAAoBqG,kBAAkB,CAACvG,CAAD,CAAtC,EAA2C5E,IAA3C,CAAgDd,CAAhD,IAAqDR,MAAM,CACzD4M,QAAQ,CAACH,kBAAkB,CAACvG,CAAD,CAAnB,CADiD,CAA3D;EAGD;;EACD,QAAI0G,QAAQ,CAACtL,IAAb,EAAmB;EACjBkL,MAAAA,YAAY,CAACpG,MAAb,CAAoBH,EAApB,CAAuB3E,IAAvB,CAA4Bd,CAA5B,IAAiC,CAACoM,QAAQ,CAACtL,IAAT,CAAcwL,CAAf,EAAkBF,QAAQ,CAACtL,IAAT,CAAcyL,CAAhC,CAAjC;EACD;EACF;;EACDlJ,EAAAA,MAAM,CAAC2I,YAAP,GAAsBA,YAAtB;EACD;EAEM,SAASQ,SAAT,CAAmBC,gBAAnB,EAAqC;EAC1C,SAAOZ,YAAY,CAACrB,OAAb,CAAqBiC,gBAArB,MAA2C,CAAC,CAAnD;EACD;EAEM,SAASN,qBAAT,CAA+BtQ,KAA/B,EAAsC;EAC3C,SAAOA,KAAK,CAAC6P,WAAN,GAAoBnF,OAApB,CAA4B,YAA5B,EAA0C,EAA1C,CAAP;EACD;;EChDc,SAASmG,mBAAT,CAA6BC,WAA7B,EAA0C;EACvD,MAAIC,UAAU,GAAG,EAAjB;;EACA,OAAK,IAAI5M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2M,WAAW,CAAC/Q,MAAhC,EAAwCoE,CAAC,EAAzC,EAA6C;EAC3C4M,IAAAA,UAAU,CAAC5Q,IAAX,CAAgBwD,MAAM,CAACmN,WAAW,CAAC3M,CAAD,CAAZ,CAAtB;EACD;;EACD,SAAO4M,UAAP;EACD;;ECNc,SAASC,eAAT,CAAyBT,QAAzB,EAAmCvQ,KAAnC,EAA0C;EACvD;EACA;EACA;EAEA,MAAIiR,OAAO,GAAGV,QAAQ,CAACU,OAAvB;EACA,MAAIC,MAAM,GAAGX,QAAQ,CAACW,MAAtB;EAEAX,EAAAA,QAAQ,CAACY,QAAT,GAAoB,IAApB;EACA,MAAIC,WAAW,GAAG;EAAEX,IAAAA,CAAC,EAAE,EAAL;EAASC,IAAAA,CAAC,EAAE;EAAZ,GAAlB;EACAH,EAAAA,QAAQ,CAACtL,IAAT,GAAgBmM,WAAhB;EAEA,MAAIC,QAAQ,GAAGd,QAAQ,CAACe,MAAxB;EACA,MAAIC,QAAQ,GAAGhB,QAAQ,CAACiB,MAAxB,CAbuD;EAgBvD;;EACA,MAAIC,OAAO,GAAG,KAAd;EACA,MAAIC,KAAJ;EACA,MAAIvN,CAAC,GAAG,CAAR;;EACA,SAAOA,CAAC,GAAGnE,KAAK,CAACD,MAAjB,EAAyBoE,CAAC,EAA1B,EAA8B;EAC5BuN,IAAAA,KAAK,GAAG1R,KAAK,CAACE,UAAN,CAAiBiE,CAAjB,CAAR;;EACA,QAAIuN,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;EAChCD,MAAAA,OAAO,GAAG,IAAV;EACD,KAFD,MAEO;EACL,UAAIA,OAAJ,EAAa;EACd;EACF,GA3BsD;;;EA8BvD,MAAIE,OAAO,GAAG,IAAd;EACA,MAAIC,YAAY,GAAG,KAAnB;EACA,MAAIC,gBAAgB,GAAG,KAAvB;EACA,MAAIC,cAAc,GAAG,CAArB;EACA,MAAIC,WAAW,GAAG,KAAlB;EACA,MAAIC,SAAS,GAAG,KAAhB;EACA,MAAIC,YAAY,GAAG,CAAnB,CApCuD;;EAqCvD,MAAIC,SAAS,GAAG,CAAhB,CArCuD;;EAsCvD,MAAIC,UAAU,GAAG,KAAjB;EACA,MAAIC,OAAO,GAAG,KAAd;EACA,MAAIC,cAAc,GAAG,KAArB;EACA,MAAIC,eAAe,GAAG,CAAtB;;EACA,SAAOnO,CAAC,IAAInE,KAAK,CAACD,MAAlB,EAA0BoE,CAAC,EAA3B,EAA+B;EAC7B,QAAIA,CAAC,KAAKnE,KAAK,CAACD,MAAhB,EAAwB2R,KAAK,GAAG,EAAR,CAAxB,KACKA,KAAK,GAAG1R,KAAK,CAACE,UAAN,CAAiBiE,CAAjB,CAAR;;EACL,QAAI6N,SAAJ,EAAe;EACb;EACA,UAAIN,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;EAChCC,QAAAA,OAAO,GAAG,IAAV;EACAK,QAAAA,SAAS,GAAG,KAAZ;EACD;EACF,KAND,MAMO;EACL;EACA;EACA;EACA,UAAIN,KAAK,IAAI,EAAT,IAAeA,KAAK,IAAI,EAA5B,EAAgC;EAC9B;EACAU,QAAAA,OAAO,GAAG,IAAV;;EACA,YAAIE,eAAe,GAAG,CAAtB,EAAyB;EACvBL,UAAAA,YAAY,IAAI,CAACP,KAAK,GAAG,EAAT,IAAe5G,IAAI,CAACyH,GAAL,CAAS,EAAT,EAAaD,eAAe,EAA5B,CAA/B;EACD,SAFD,MAEO;EACLL,UAAAA,YAAY,IAAI,EAAhB;EACAA,UAAAA,YAAY,IAAIP,KAAK,GAAG,EAAxB;EACD;EACF,OATD,MASO,IAAIA,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;EACvC;EACAU,QAAAA,OAAO,GAAG,IAAV;EACAE,QAAAA,eAAe;EAChB,OAJM,MAIA;EACL,YAAIF,OAAJ,EAAa;EACX;EACA,cAAIT,OAAJ,EAAa;EACXA,YAAAA,OAAO,GAAG,KAAV,CADW;EAEX;EACA;EACA;;EACA,gBAAIE,gBAAJ,EAAsBQ,cAAc,GAAG,IAAjB;EACvB,WAND,MAMO;EACL;EACA,gBAAIA,cAAJ,EAAoB;EAClBA,cAAAA,cAAc,GAAG,KAAjB;EACD,aAFD,MAEO;EACL,kBAAIT,YAAJ,EAAkB;EAChBE,gBAAAA,cAAc,GAAGK,UAAU,GAAG,IAAIF,YAAP,GAAsBA,YAAjD;EACAJ,gBAAAA,gBAAgB,GAAG,IAAnB;EACAD,gBAAAA,YAAY,GAAG,KAAf;EACD,eAJD,MAIO,IAAI,CAACG,WAAL,EAAkB;EACvBG,gBAAAA,SAAS,GAAGC,UAAU,GAAG,IAAIF,YAAP,GAAsBA,YAA5C;EACD;;EACD,kBAAIO,SAAS,GAAGT,WAAW,GAAGE,YAAY,GAAG,CAAlB,GAAsB,CAAjD;;EACA,mBAAK,IAAIpI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2I,SAApB,EAA+B3I,CAAC,EAAhC,EAAoC;EAClC,oBAAIgI,gBAAJ,EAAsB;EACpBN,kBAAAA,QAAQ,IAAIO,cAAZ;EACD,iBAFD,MAEO;EACLP,kBAAAA,QAAQ,GAAGW,SAAX;EACD;;EACDd,gBAAAA,WAAW,CAACX,CAAZ,CAActQ,IAAd,CAAmBkR,QAAnB;EACAD,gBAAAA,WAAW,CAACV,CAAZ,CAAcvQ,IAAd,CAAmBoR,QAAQ,GAAGN,OAA9B;EACAI,gBAAAA,QAAQ,IAAIH,MAAZ;EACD;EACF;EACF;;EACDiB,UAAAA,UAAU,GAAG,KAAb;EACAF,UAAAA,YAAY,GAAG,CAAf;EACAK,UAAAA,eAAe,GAAG,CAAlB;EACAF,UAAAA,OAAO,GAAG,KAAV;EACAL,UAAAA,WAAW,GAAG,KAAd;EACD,SAvCI;;;EA0CL,YAAIL,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,EAA1B,EAA8B;EAC5BU,UAAAA,OAAO,GAAG,IAAV;EACAP,UAAAA,gBAAgB,GAAG,KAAnB;EACAI,UAAAA,YAAY,GAAGP,KAAK,GAAG,EAAvB;EACD,SAJD,MAIO,IAAIA,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,GAA1B,EAA+B;EACpC;EACAU,UAAAA,OAAO,GAAG,IAAV;EACAP,UAAAA,gBAAgB,GAAG,KAAnB;EACAI,UAAAA,YAAY,GAAGP,KAAK,GAAG,EAAvB;EACAS,UAAAA,UAAU,GAAG,IAAb;EACD,SANM,MAMA,IAAIT,KAAK,KAAK,GAAd,EAAmB;EACxB;EACAU,UAAAA,OAAO,GAAG,IAAV;EACAL,UAAAA,WAAW,GAAG,IAAd;EACAE,UAAAA,YAAY,GAAG,CAAf;EACD,SALM,MAKA,IAAIP,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,EAA1B,EAA8B;EACnCU,UAAAA,OAAO,GAAG,IAAV;EACAL,UAAAA,WAAW,GAAG,IAAd;EACAE,UAAAA,YAAY,GAAGP,KAAK,GAAG,EAAvB;EACD,SAJM,MAIA,IAAIA,KAAK,GAAG,EAAR,IAAcA,KAAK,GAAG,EAA1B,EAA8B;EACnC;EACAU,UAAAA,OAAO,GAAG,IAAV;EACAR,UAAAA,YAAY,GAAG,IAAf;EACAK,UAAAA,YAAY,GAAGP,KAAK,GAAG,EAAvB;EACD,SALM,MAKA,IAAIA,KAAK,GAAG,GAAR,IAAeA,KAAK,GAAG,GAA3B,EAAgC;EACrC;EACAU,UAAAA,OAAO,GAAG,IAAV;EACAR,UAAAA,YAAY,GAAG,IAAf;EACAK,UAAAA,YAAY,GAAGP,KAAK,GAAG,GAAvB;EACAS,UAAAA,UAAU,GAAG,IAAb;EACD,SANM,MAMA,IAAIT,KAAK,KAAK,EAAV,IAAgB1R,KAAK,CAACE,UAAN,CAAiBiE,CAAC,GAAG,CAArB,MAA4B,EAAhD,EAAoD;EACzD;EACAiO,UAAAA,OAAO,GAAG,IAAV;EACAJ,UAAAA,SAAS,GAAG,IAAZ;EACD,SAJM,MAIA,IAAIN,KAAK,KAAK,EAAd,EAAkB;EACvB;EACAU,UAAAA,OAAO,GAAG,IAAV;EACAR,UAAAA,YAAY,GAAG,IAAf;EACAK,UAAAA,YAAY,GAAG,CAAf;EACAE,UAAAA,UAAU,GAAG,KAAb;EACD,SANM,MAMA,IAAIT,KAAK,KAAK,EAAd,EAAkB;EACvB;EACA;EACA,cAAIe,MAAM,GAAGzS,KAAK,CAACE,UAAN,CAAiBiE,CAAC,GAAG,CAArB,CAAb;;EACA,cACGsO,MAAM,IAAI,EAAV,IAAgBA,MAAM,IAAI,EAA3B,IACAA,MAAM,KAAK,EADX,IAEAA,MAAM,KAAK,EAHb,EAIE;EACAL,YAAAA,OAAO,GAAG,IAAV;EACA,gBAAI,CAACT,OAAL,EAAcE,gBAAgB,GAAG,KAAnB;EACdM,YAAAA,UAAU,GAAG,IAAb;EACD;EACF,SAbM,MAaA,IAAIT,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,EAA9B,EAAkC;EACvCC,UAAAA,OAAO,GAAG,IAAV;EACAK,UAAAA,SAAS,GAAG,KAAZ;EACD,SAlGI;EAoGL;;EACD;EACF;EACF;EACF;;EC5KD,MAAMU,mBAAmB,GAAG,QAA5B;EACA,MAAMC,oBAAoB,GAAG,SAA7B;EAEe,SAASC,cAAT,CAAwBrC,QAAxB,EAAkCvQ,KAAlC,EAAyCwH,MAAzC,EAAiD;EAC9D+I,EAAAA,QAAQ,CAACsC,WAAT,GAAuB,IAAvB;;EAEA,MAAI,CAACtC,QAAQ,CAAC/J,SAAV,IAAuBsM,MAAM,CAACC,IAAP,CAAYxC,QAAQ,CAAC/J,SAArB,MAAoC,CAA/D,EAAkE;EAChEwM,IAAAA,OAAO,CAACzC,QAAD,EAAWvQ,KAAX,EAAkBwH,MAAlB,CAAP;EACD,GAFD,MAEO;EACLyL,IAAAA,QAAQ,CAAC1C,QAAD,EAAWvQ,KAAX,EAAkBwH,MAAlB,CAAR;EACD,GAP6D;;;EAU9D,MAAI+I,QAAQ,CAAC/J,SAAb,EAAwB;EACtB,SAAK,IAAI0M,GAAT,IAAgB3C,QAAQ,CAAC/J,SAAzB,EAAoC;EAClC+J,MAAAA,QAAQ,CAAC/J,SAAT,CAAmB0M,GAAnB,EAAwBjO,IAAxB,GAA+BsL,QAAQ,CAACtL,IAAT,CAAciO,GAAd,CAA/B;EACD;EACF;EACF;;EAED,SAASF,OAAT,CAAiBzC,QAAjB,EAA2BvQ,KAA3B,EAAkCwH,MAAlC,EAA0C;EACxC,MAAI4J,WAAW,GAAG;EAAEX,IAAAA,CAAC,EAAE,EAAL;EAASC,IAAAA,CAAC,EAAE;EAAZ,GAAlB;EACAH,EAAAA,QAAQ,CAACtL,IAAT,GAAgBmM,WAAhB,CAFwC;;EAKxC,MAAI+B,KAAK,GAAGnT,KAAK,CAACoT,KAAN,CAAY,kBAAZ,CAAZ;;EAEA,OAAK,IAAIjP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgP,KAAK,CAACpT,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC,QAAIkP,MAAM,GAAGF,KAAK,CAAChP,CAAD,CAAL,CACVmP,IADU,GAEV5I,OAFU,CAEFgI,mBAFE,EAEmB,EAFnB,EAGVU,KAHU,CAGJT,oBAHI,CAAb;;EAIA,QAAIU,MAAM,CAACtT,MAAP,GAAgB,CAAhB,KAAsB,CAA1B,EAA6B;EAC3B,WAAK,IAAI8J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwJ,MAAM,CAACtT,MAA3B,EAAmC8J,CAAC,GAAGA,CAAC,GAAG,CAA3C,EAA8C;EAC5C;EACAuH,QAAAA,WAAW,CAACX,CAAZ,CAActQ,IAAd,CAAmBwD,MAAM,CAAC0P,MAAM,CAACxJ,CAAD,CAAP,CAAN,GAAoB0G,QAAQ,CAACgD,OAAhD;EACAnC,QAAAA,WAAW,CAACV,CAAZ,CAAcvQ,IAAd,CAAmBwD,MAAM,CAAC0P,MAAM,CAACxJ,CAAC,GAAG,CAAL,CAAP,CAAN,GAAwB0G,QAAQ,CAACU,OAApD;EACD;EACF,KAND,MAMO;EACLzJ,MAAAA,MAAM,CAACgM,IAAP,CAAYrT,IAAZ,CAAkB,iBAAgBkT,MAAO,EAAzC;EACD;EACF;EACF;;EAED,SAASJ,QAAT,CAAkB1C,QAAlB,EAA4BvQ,KAA5B,EAAmCwH,MAAnC,EAA2C;EACzC,MAAI4J,WAAW,GAAG,EAAlB;EACA,MAAI5K,SAAS,GAAGsM,MAAM,CAACC,IAAP,CAAYxC,QAAQ,CAAC/J,SAArB,CAAhB;EACA,MAAIiN,iBAAiB,GAAGjN,SAAS,CAACzG,MAAlC;EACAyG,EAAAA,SAAS,CAACkN,OAAV,CAAmB1O,QAAD,IAAeoM,WAAW,CAACpM,QAAD,CAAX,GAAwB,EAAzD;EACAuL,EAAAA,QAAQ,CAACtL,IAAT,GAAgBmM,WAAhB,CALyC;;EAQzC,MAAI+B,KAAK,GAAGnT,KAAK,CAACoT,KAAN,CAAY,kBAAZ,CAAZ;;EAEA,OAAK,IAAIjP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgP,KAAK,CAACpT,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC,QAAIkP,MAAM,GAAGF,KAAK,CAAChP,CAAD,CAAL,CACVmP,IADU,GAEV5I,OAFU,CAEFgI,mBAFE,EAEmB,EAFnB,EAGVU,KAHU,CAGJT,oBAHI,CAAb;;EAIA,QAAIU,MAAM,CAACtT,MAAP,GAAgB0T,iBAAhB,KAAsC,CAA1C,EAA6C;EAC3C,WAAK,IAAI5J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwJ,MAAM,CAACtT,MAA3B,EAAmC8J,CAAC,EAApC,EAAwC;EACtC;EACAuH,QAAAA,WAAW,CAAC5K,SAAS,CAACqD,CAAC,GAAG4J,iBAAL,CAAV,CAAX,CAA8CtT,IAA9C,CAAmDwD,MAAM,CAAC0P,MAAM,CAACxJ,CAAD,CAAP,CAAzD;EACD;EACF,KALD,MAKO;EACLrC,MAAAA,MAAM,CAACgM,IAAP,CAAYrT,IAAZ,CAAkB,iBAAgBkT,MAAO,EAAzC;EACD;EACF;EACF;;ECpEc,SAASM,QAAT,CAAkBpD,QAAlB,EAA4BvQ,KAA5B,EAAmC;EAChD,MAAI4T,kBAAkB,GAAG,sBAAzB;EAEArD,EAAAA,QAAQ,CAACsD,SAAT,GAAqB,IAArB;EACA,MAAIR,MAAJ;EACA,MAAIjC,WAAW,GAAG;EAAEX,IAAAA,CAAC,EAAE,EAAL;EAASC,IAAAA,CAAC,EAAE;EAAZ,GAAlB;EACAH,EAAAA,QAAQ,CAACtL,IAAT,GAAgBmM,WAAhB;EAEA,MAAI+B,KAAK,GAAGnT,KAAK,CAACoT,KAAN,CAAY,kBAAZ,CAAZ;;EAEA,OAAK,IAAIjP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgP,KAAK,CAACpT,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrCkP,IAAAA,MAAM,GAAGF,KAAK,CAAChP,CAAD,CAAL,CAASmP,IAAT,GAAgB5I,OAAhB,CAAwBkJ,kBAAxB,EAA4C,EAA5C,EAAgDR,KAAhD,CAAsD,GAAtD,CAAT;EACAhC,IAAAA,WAAW,CAACX,CAAZ,CAActQ,IAAd,CAAmBwD,MAAM,CAAC0P,MAAM,CAAC,CAAD,CAAP,CAAzB;EACAjC,IAAAA,WAAW,CAACV,CAAZ,CAAcvQ,IAAd,CAAmBwD,MAAM,CAAC0P,MAAM,CAAC,CAAD,CAAP,CAAzB;EACD;EACF;;ECfD,MAAM3S,UAAQ,GAAGoS,MAAM,CAACrF,SAAP,CAAiB/M,QAAlC;EAEe,SAASoT,UAAT,CAAoBC,MAApB,EAA4B;EACzC,SAAOrT,UAAQ,CAACuI,IAAT,CAAc8K,MAAd,EAAsBC,QAAtB,CAA+B,QAA/B,CAAP;EACD;;;;;ECJD,GAAC,YAAU;EAAC,aAAS5G,CAAT,CAAW6G,CAAX,EAAa;EAAC,WAAI,IAAIC,CAAC,GAAC,CAAN,EAAQC,CAAC,GAACF,CAAC,CAAClU,MAAF,GAAS,CAAnB,EAAqBqU,CAAC,GAAC,KAAK,CAA5B,EAA8BC,CAAC,GAAC,KAAK,CAArC,EAAuClQ,CAAC,GAAC,KAAK,CAA9C,EAAgD0F,CAAC,GAACyK,CAAC,CAACJ,CAAD,EAAGC,CAAH,CAAvD,EAA6D,CAAC,CAA9D,GAAiE;EAAC,YAAGA,CAAC,IAAED,CAAN,EAAQ,OAAOD,CAAC,CAACpK,CAAD,CAAR;EAAY,YAAGsK,CAAC,IAAED,CAAC,GAAC,CAAR,EAAU,OAAOD,CAAC,CAACC,CAAD,CAAD,GAAKD,CAAC,CAACE,CAAD,CAAN,IAAWI,CAAC,CAACN,CAAD,EAAGC,CAAH,EAAKC,CAAL,CAAZ,EAAoBF,CAAC,CAACpK,CAAD,CAA5B;;EAAgC,aAAIuK,CAAC,GAACE,CAAC,CAACJ,CAAD,EAAGC,CAAH,CAAH,EAASF,CAAC,CAACG,CAAD,CAAD,GAAKH,CAAC,CAACE,CAAD,CAAN,IAAWI,CAAC,CAACN,CAAD,EAAGG,CAAH,EAAKD,CAAL,CAArB,EAA6BF,CAAC,CAACC,CAAD,CAAD,GAAKD,CAAC,CAACE,CAAD,CAAN,IAAWI,CAAC,CAACN,CAAD,EAAGC,CAAH,EAAKC,CAAL,CAAzC,EAAiDF,CAAC,CAACG,CAAD,CAAD,GAAKH,CAAC,CAACC,CAAD,CAAN,IAAWK,CAAC,CAACN,CAAD,EAAGG,CAAH,EAAKF,CAAL,CAA7D,EAAqEK,CAAC,CAACN,CAAD,EAAGG,CAAH,EAAKF,CAAC,GAAC,CAAP,CAAtE,EAAgFG,CAAC,GAACH,CAAC,GAAC,CAApF,EAAsF/P,CAAC,GAACgQ,CAA5F,EAA8F,CAAC,CAA/F,GAAkG;EAAC,aAAGE,CAAC,GAAJ,QAAaJ,CAAC,CAACC,CAAD,CAAD,GAAKD,CAAC,CAACI,CAAD,CAAnB;;EAAwB,aAAGlQ,CAAC,GAAJ,QAAa8P,CAAC,CAAC9P,CAAD,CAAD,GAAK8P,CAAC,CAACC,CAAD,CAAnB;;EAAwB,cAAG/P,CAAC,GAACkQ,CAAL,EAAO;EAAME,UAAAA,CAAC,CAACN,CAAD,EAAGI,CAAH,EAAKlQ,CAAL,CAAD;EAAS;;EAAAoQ,QAAAA,CAAC,CAACN,CAAD,EAAGC,CAAH,EAAK/P,CAAL,CAAD,EAASA,CAAC,IAAE0F,CAAH,KAAOqK,CAAC,GAACG,CAAT,CAAT,EAAqBlQ,CAAC,IAAE0F,CAAH,KAAOsK,CAAC,GAAChQ,CAAC,GAAC,CAAX,CAArB;EAAmC;EAAC;;EAAA,QAAIoQ,CAAC,GAAC,SAASA,CAAT,CAAWN,CAAX,EAAaC,CAAb,EAAeC,CAAf,EAAiB;EAAC,UAAIK,IAAJ;;EAAS,aAAOA,IAAI,GAAC,CAACP,CAAC,CAACE,CAAD,CAAF,EAAMF,CAAC,CAACC,CAAD,CAAP,CAAL,EAAiBD,CAAC,CAACC,CAAD,CAAD,GAAKM,IAAI,CAAC,CAAD,CAA1B,EAA8BP,CAAC,CAACE,CAAD,CAAD,GAAKK,IAAI,CAAC,CAAD,CAAvC,EAA2CA,IAAlD;EAAuD,KAAxF;EAAA,QAAyFF,CAAC,GAAC,SAASA,CAAT,CAAWL,CAAX,EAAaC,CAAb,EAAe;EAAC,aAAM,CAAC,EAAE,CAACD,CAAC,GAACC,CAAH,IAAM,CAAR,CAAP;EAAkB,KAA7H;;EAA8H,IAA4BpG,MAAM,CAAC5L,OAAnC,GAA2C4L,cAAA,GAAeV,CAA1D,GAA4DW,MAAM,CAAC0G,MAAP,GAAcrH,CAA1E;EAA4E,GAAjjB;;;;;ECGA,SAASqH,MAAT,CAAgBC,KAAhB,EAAuB;EACrB,MAAI,CAACC,UAAO,CAACD,KAAD,CAAZ,EAAqB;EACnB,UAAM,IAAInS,SAAJ,CAAc,wBAAd,CAAN;EACD;;EAED,MAAImS,KAAK,CAAC3U,MAAN,KAAiB,CAArB,EAAwB;EACtB,UAAM,IAAIwC,SAAJ,CAAc,yBAAd,CAAN;EACD;;EAED,SAAOqS,iBAAiB,CAACF,KAAK,CAACG,KAAN,EAAD,CAAxB;EACD;;ECXc,SAASC,YAAT,CAAsB5E,OAAtB,EAA+B;EAC5C,MAAI6E,IAAI,GAAG7E,OAAO,CAAC,CAAD,CAAP,CAAWjL,IAAX,CAAgByL,CAAhB,CAAkB,CAAlB,CAAX;EACA,MAAIsE,IAAI,GAAGD,IAAX;EACA,MAAIE,KAAK,GAAG/E,OAAO,CAACnQ,MAApB;EACA,MAAImV,KAAK,GAAGhF,OAAO,CAAC,CAAD,CAAP,CAAWjL,IAAX,CAAgBwL,CAAhB,CAAkB1Q,MAA9B;EAEA,MAAIoV,CAAC,GAAG,IAAIjR,KAAJ,CAAU+Q,KAAV,CAAR;;EACA,OAAK,IAAI9Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Q,KAApB,EAA2B9Q,CAAC,EAA5B,EAAgC;EAC9BgR,IAAAA,CAAC,CAAChR,CAAD,CAAD,GAAO+L,OAAO,CAAC/L,CAAD,CAAP,CAAWc,IAAX,CAAgByL,CAAvB;;EACA,SAAK,IAAI7G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqL,KAApB,EAA2BrL,CAAC,EAA5B,EAAgC;EAC9B,UAAI7J,KAAK,GAAGmV,CAAC,CAAChR,CAAD,CAAD,CAAK0F,CAAL,CAAZ;EACA,UAAI7J,KAAK,GAAG+U,IAAZ,EAAkBA,IAAI,GAAG/U,KAAP;EAClB,UAAIA,KAAK,GAAGgV,IAAZ,EAAkBA,IAAI,GAAGhV,KAAP;EACnB;EACF;;EAED,QAAMsR,MAAM,GAAGpB,OAAO,CAAC,CAAD,CAAP,CAAWjL,IAAX,CAAgBwL,CAAhB,CAAkB,CAAlB,CAAf;EACA,QAAM2E,KAAK,GAAGlF,OAAO,CAAC,CAAD,CAAP,CAAWjL,IAAX,CAAgBwL,CAAhB,CAAkBP,OAAO,CAAC,CAAD,CAAP,CAAWjL,IAAX,CAAgBwL,CAAhB,CAAkB1Q,MAAlB,GAA2B,CAA7C,CAAd,CAjB4C;;EAkB5C,QAAMyR,MAAM,GAAGtB,OAAO,CAAC,CAAD,CAAP,CAAWM,SAA1B;EACA,QAAM6E,KAAK,GAAGnF,OAAO,CAAC+E,KAAK,GAAG,CAAT,CAAP,CAAmBzE,SAAjC,CAnB4C;EAsB5C;;EACA,MAAIc,MAAM,GAAG8D,KAAb,EAAoB;EAClB,SAAK,IAAI7E,QAAT,IAAqB4E,CAArB,EAAwB;EACtB5E,MAAAA,QAAQ,CAAC+E,OAAT;EACD;EACF;;EACD,MAAI9D,MAAM,GAAG6D,KAAb,EAAoB;EAClBF,IAAAA,CAAC,CAACG,OAAF;EACD;;EAED,QAAMC,OAAO,GAAG,EAAhB;;EACA,OAAK,IAAIpR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgR,CAAC,CAACpV,MAAtB,EAA8BoE,CAAC,EAA/B,EAAmC;EACjC,UAAMqR,GAAG,GAAGC,YAAY,CAACC,IAAb,CAAkBP,CAAC,CAAChR,CAAD,CAAnB,CAAZ;;EACA,SAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqR,GAAG,CAACzV,MAAxB,EAAgCoE,CAAC,EAAjC,EAAqC;EACnC,UAAIqR,GAAG,CAACrR,CAAD,CAAH,GAAS,CAAb,EAAgBqR,GAAG,CAACrR,CAAD,CAAH,GAAS,CAACqR,GAAG,CAACrR,CAAD,CAAb;EACjB;;EACDoR,IAAAA,OAAO,CAACpV,IAAR,CAAawV,MAAS,CAACH,GAAD,CAAtB;EACD;;EACD,QAAMf,QAAM,GAAGkB,MAAS,CAACJ,OAAD,CAAxB;EAEA,SAAO;EACLJ,IAAAA,CAAC,EAAEA,CADE;EAELS,IAAAA,IAAI,EAAE9K,IAAI,CAAC+K,GAAL,CAASvE,MAAT,EAAiB8D,KAAjB,CAFD;EAGLU,IAAAA,IAAI,EAAEhL,IAAI,CAACiL,GAAL,CAASzE,MAAT,EAAiB8D,KAAjB,CAHD;EAILY,IAAAA,IAAI,EAAElL,IAAI,CAAC+K,GAAL,CAASrE,MAAT,EAAiB6D,KAAjB,CAJD;EAKLY,IAAAA,IAAI,EAAEnL,IAAI,CAACiL,GAAL,CAASvE,MAAT,EAAiB6D,KAAjB,CALD;EAMLN,IAAAA,IAAI,EAAEA,IAND;EAOLC,IAAAA,IAAI,EAAEA,IAPD;EAQLkB,IAAAA,KAAK,EAAEzB;EARF,GAAP;EAUD;;ECtDc,SAAS0B,oBAAT,CAA8BC,KAA9B,EAAqCtK,OAArC,EAA8C;EAC3D,MAAIoK,KAAK,GAAGE,KAAK,CAACF,KAAlB;EACA,MAAIf,CAAC,GAAGiB,KAAK,CAACjB,CAAd;EACA,MAAIkB,YAAJ,EAAkBC,YAAlB,EAAgCC,YAAhC,EAA8CC,YAA9C;EACA,MAAIC,OAAJ,EAAaC,OAAb,EAAsBC,OAAtB,EAA+BC,OAA/B;EACA,MAAIC,YAAY,GAAG1B,CAAC,CAACpV,MAArB;EACA,MAAI+W,QAAQ,GAAG3B,CAAC,CAAC,CAAD,CAAD,CAAKpV,MAApB;EACA,MAAIgX,GAAJ,EAASC,GAAT,EAAcC,GAAd,EAAmBC,GAAnB;EAEA,MAAIC,EAAE,GAAGf,KAAK,CAACR,IAAf;EACA,MAAIwB,EAAE,GAAGhB,KAAK,CAACN,IAAf;EACA,MAAIuB,EAAE,GAAG,CAACD,EAAE,GAAGD,EAAN,KAAaL,QAAQ,GAAG,CAAxB,CAAT;EACA,MAAIQ,EAAE,GAAGlB,KAAK,CAACJ,IAAf;EACA,MAAIuB,EAAE,GAAGnB,KAAK,CAACH,IAAf;EACA,MAAIuB,EAAE,GAAG,CAACD,EAAE,GAAGD,EAAN,KAAaT,YAAY,GAAG,CAA5B,CAAT;EACA,MAAI9B,IAAI,GAAGqB,KAAK,CAACrB,IAAjB;EACA,MAAIC,IAAI,GAAGoB,KAAK,CAACpB,IAAjB,CAhB2D;EAmB3D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,MAAIyC,IAAI,GAAG3L,OAAO,CAAC4L,eAAR,GAA0B,CAArC;EACA,MAAIC,aAAa,GAAG,IAAIzT,KAAJ,CAAUuT,IAAV,CAApB;EACA,MAAIG,UAAJ;;EACA,OAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGJ,IAA5B,EAAkCI,KAAK,EAAvC,EAA2C;EACzC;EACA,QAAIC,YAAY,GAAG,EAAnB;EACAH,IAAAA,aAAa,CAACE,KAAD,CAAb,GAAuBC,YAAvB;EACA,QAAIC,IAAI,GAAGF,KAAK,GAAG,CAAnB;EACA,QAAIG,MAAM,GACR,CAAChD,IAAI,GAAGlJ,OAAO,CAACmM,eAAR,GAA0B/B,KAAlC,IACApL,IAAI,CAACoN,GAAL,CAAS,CAACL,KAAK,IAAI,CAAV,IAAe/L,OAAO,CAAC4L,eAAhC,CAFF;;EAGA,QAAIK,IAAI,KAAK,CAAb,EAAgB;EACdH,MAAAA,UAAU,GAAGI,MAAM,GAAGlM,OAAO,CAACmM,eAAR,GAA0B/B,KAAhD;EACD,KAFD,MAEO;EACL0B,MAAAA,UAAU,GAAG,IAAII,MAAJ,GAAalM,OAAO,CAACmM,eAAR,GAA0B/B,KAApD;EACD;;EACD,QAAI/C,KAAK,GAAG,EAAZ;EACA2E,IAAAA,YAAY,CAACK,MAAb,GAAsBP,UAAtB;EACAE,IAAAA,YAAY,CAAC3E,KAAb,GAAqBA,KAArB;EAEA,QAAIyE,UAAU,IAAI7C,IAAd,IAAsB6C,UAAU,IAAI5C,IAAxC,EAA8C;;EAE9C,SAAK,IAAIoD,WAAW,GAAG,CAAvB,EAA0BA,WAAW,GAAGvB,YAAY,GAAG,CAAvD,EAA0DuB,WAAW,EAArE,EAAyE;EACvE,UAAIC,UAAU,GAAGlD,CAAC,CAACiD,WAAD,CAAlB;EACA,UAAIE,eAAe,GAAGnD,CAAC,CAACiD,WAAW,GAAG,CAAf,CAAvB;;EACA,WAAK,IAAIG,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGzB,QAAQ,GAAG,CAAvC,EAA0CyB,KAAK,EAA/C,EAAmD;EACjDlC,QAAAA,YAAY,GAAGgC,UAAU,CAACE,KAAD,CAAzB;EACAjC,QAAAA,YAAY,GAAG+B,UAAU,CAACE,KAAK,GAAG,CAAT,CAAzB;EACAhC,QAAAA,YAAY,GAAG+B,eAAe,CAACC,KAAD,CAA9B;EACA/B,QAAAA,YAAY,GAAG8B,eAAe,CAACC,KAAK,GAAG,CAAT,CAA9B;EAEA9B,QAAAA,OAAO,GAAGJ,YAAY,GAAGuB,UAAzB;EACAlB,QAAAA,OAAO,GAAGJ,YAAY,GAAGsB,UAAzB;EACAjB,QAAAA,OAAO,GAAGJ,YAAY,GAAGqB,UAAzB;EACAhB,QAAAA,OAAO,GAAGJ,YAAY,GAAGoB,UAAzB,CATiD;EAYjD;EACA;;EACA,YAAInB,OAAO,KAAKC,OAAZ,IAAuBD,OAAO,KAAKE,OAAvC,EAAgD;EAC9CI,UAAAA,GAAG,GACDwB,KAAK,GAAG,CAACX,UAAU,GAAGvB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CADV;EAEAW,UAAAA,GAAG,GAAGoB,WAAN;EACAnB,UAAAA,GAAG,GAAGsB,KAAN;EACArB,UAAAA,GAAG,GACDkB,WAAW,GACX,CAACR,UAAU,GAAGvB,YAAd,KAA+BE,YAAY,GAAGF,YAA9C,CAFF;EAGAlD,UAAAA,KAAK,CAAChT,IAAN,CAAW4W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACAhE,UAAAA,KAAK,CAAChT,IAAN,CAAW6W,GAAG,GAAGQ,EAAN,GAAWF,EAAtB;EACAnE,UAAAA,KAAK,CAAChT,IAAN,CAAW8W,GAAG,GAAGI,EAAN,GAAWF,EAAtB;EACAhE,UAAAA,KAAK,CAAChT,IAAN,CAAW+W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACD,SA1BgD;;;EA4BjD,YAAIV,OAAO,KAAKF,OAAZ,IAAuBE,OAAO,KAAKD,OAAvC,EAAgD;EAC9CI,UAAAA,GAAG,GAAGwB,KAAK,GAAG,CAAd;EACAvB,UAAAA,GAAG,GACDoB,WAAW,GACX,CADA,GAEA,CAACR,UAAU,GAAGpB,YAAd,KAA+BF,YAAY,GAAGE,YAA9C,CAHF;EAIAS,UAAAA,GAAG,GACDsB,KAAK,GACL,CADA,GAEA,CAACX,UAAU,GAAGpB,YAAd,KAA+BD,YAAY,GAAGC,YAA9C,CAHF;EAIAU,UAAAA,GAAG,GAAGkB,WAAW,GAAG,CAApB;EACAjF,UAAAA,KAAK,CAAChT,IAAN,CAAW4W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACAhE,UAAAA,KAAK,CAAChT,IAAN,CAAW6W,GAAG,GAAGQ,EAAN,GAAWF,EAAtB;EACAnE,UAAAA,KAAK,CAAChT,IAAN,CAAW8W,GAAG,GAAGI,EAAN,GAAWF,EAAtB;EACAhE,UAAAA,KAAK,CAAChT,IAAN,CAAW+W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACD,SA3CgD;;;EA6CjD,YAAIZ,OAAO,KAAKC,OAAhB,EAAyB;EACvBI,UAAAA,GAAG,GACD,CAACwB,KAAK,GACJ,CADD,GAEC,CAACX,UAAU,GAAGtB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CAFF,IAGEe,EAHF,GAIAF,EALF;EAMAH,UAAAA,GAAG,GACD,CAACoB,WAAW,GACV,CAACR,UAAU,GAAGtB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CADF,IAEEkB,EAFF,GAGAF,EAJF;;EAKA,cAAIZ,OAAO,KAAKD,OAAhB,EAAyB;EACvBQ,YAAAA,GAAG,GACDsB,KAAK,GACL,CADA,GAEA,CAACX,UAAU,GAAGtB,YAAd,KAA+BD,YAAY,GAAGC,YAA9C,CAHF;EAIAY,YAAAA,GAAG,GAAGkB,WAAN;EACAjF,YAAAA,KAAK,CAAChT,IAAN,CAAW4W,GAAX;EACA5D,YAAAA,KAAK,CAAChT,IAAN,CAAW6W,GAAX;EACA7D,YAAAA,KAAK,CAAChT,IAAN,CAAW8W,GAAG,GAAGI,EAAN,GAAWF,EAAtB;EACAhE,YAAAA,KAAK,CAAChT,IAAN,CAAW+W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACD;;EACD,cAAIX,OAAO,KAAKF,OAAhB,EAAyB;EACvBQ,YAAAA,GAAG,GAAGsB,KAAN;EACArB,YAAAA,GAAG,GACDkB,WAAW,GACX,CADA,GAEA,CAACR,UAAU,GAAGrB,YAAd,KAA+BF,YAAY,GAAGE,YAA9C,CAHF;EAIApD,YAAAA,KAAK,CAAChT,IAAN,CAAW4W,GAAX;EACA5D,YAAAA,KAAK,CAAChT,IAAN,CAAW6W,GAAX;EACA7D,YAAAA,KAAK,CAAChT,IAAN,CAAW8W,GAAG,GAAGI,EAAN,GAAWF,EAAtB;EACAhE,YAAAA,KAAK,CAAChT,IAAN,CAAW+W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACD;;EACD,cAAIZ,OAAO,KAAKE,OAAhB,EAAyB;EACvBK,YAAAA,GAAG,GAAGsB,KAAK,GAAG,CAAd;EACArB,YAAAA,GAAG,GACDkB,WAAW,GACX,CAACR,UAAU,GAAGtB,YAAd,KAA+BE,YAAY,GAAGF,YAA9C,CAFF;EAGAnD,YAAAA,KAAK,CAAChT,IAAN,CAAW4W,GAAX;EACA5D,YAAAA,KAAK,CAAChT,IAAN,CAAW6W,GAAX;EACA7D,YAAAA,KAAK,CAAChT,IAAN,CAAW8W,GAAG,GAAGI,EAAN,GAAWF,EAAtB;EACAhE,YAAAA,KAAK,CAAChT,IAAN,CAAW+W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACD;;EACD,cAAIX,OAAO,KAAKC,OAAhB,EAAyB;EACvBK,YAAAA,GAAG,GACDsB,KAAK,GACL,CAACX,UAAU,GAAGrB,YAAd,KAA+BC,YAAY,GAAGD,YAA9C,CAFF;EAGAW,YAAAA,GAAG,GAAGkB,WAAW,GAAG,CAApB;EACAjF,YAAAA,KAAK,CAAChT,IAAN,CAAW4W,GAAX;EACA5D,YAAAA,KAAK,CAAChT,IAAN,CAAW6W,GAAX;EACA7D,YAAAA,KAAK,CAAChT,IAAN,CAAW8W,GAAG,GAAGI,EAAN,GAAWF,EAAtB;EACAhE,YAAAA,KAAK,CAAChT,IAAN,CAAW+W,GAAG,GAAGM,EAAN,GAAWF,EAAtB;EACD;EACF;EACF;EACF;EACF;;EAED,SAAO;EACL1B,IAAAA,IAAI,EAAEQ,KAAK,CAACR,IADP;EAELE,IAAAA,IAAI,EAAEM,KAAK,CAACN,IAFP;EAGLE,IAAAA,IAAI,EAAEI,KAAK,CAACJ,IAHP;EAILC,IAAAA,IAAI,EAAEG,KAAK,CAACH,IAJP;EAKLuC,IAAAA,QAAQ,EAAEb;EALL,GAAP;EAOD;;EClKc,SAASc,KAAT,CAAejR,MAAf,EAAuBsE,OAAvB,EAAgC;EAC7C,MAAIsK,KAAK,GAAGtB,YAAY,CAACtN,MAAM,CAAC0I,OAAR,CAAxB;;EACA,MAAI,CAACpE,OAAO,CAAC4M,SAAb,EAAwB;EACtBlR,IAAAA,MAAM,CAACmR,YAAP,GAAsBxC,oBAAoB,CAACC,KAAD,EAAQtK,OAAR,CAA1C;EACA,WAAOsK,KAAK,CAACjB,CAAb;EACD;;EACD3N,EAAAA,MAAM,CAACoR,MAAP,GAAgBxC,KAAhB;EACD;;ECVD;EACA;EAEA;EAEO,MAAM,iBAAiB,GAAG;EAC/B,QAAM,cADyB;EAE/B,QAAM,QAFyB;EAG/B,QAAM,UAHyB;EAI/B,SAAO,CAAC,SAJuB;EAK/B,SAAO,SALwB;EAM/B,SAAO,UANwB;EAO/B,SAAO,QAPwB;EAQ/B,SAAO,CAAC,QARuB;EAS/B,SAAO,CAAC,QATuB;EAU/B,SAAO,SAVwB;EAW/B,UAAQ,QAXuB;EAY/B,UAAQ,QAZuB;EAa/B,UAAQ,CAAC,OAbsB;EAc/B,SAAO,SAdwB;EAe/B,UAAQ,OAfuB;EAgB/B,UAAQ,QAhBuB;EAiB/B,UAAQ,QAjBuB;EAkB/B,WAAS,CAAC;EAlBqB,CAA1B;;ECHP,SAASL,GAAT,CAAarB,KAAb,EAAoB;EAClB,MAAI5I,OAAO,GAAG+M,SAAS,CAAC9Y,MAAV,GAAmB,CAAnB,IAAwB8Y,SAAS,CAAC,CAAD,CAAT,KAAiBjU,SAAzC,GAAqDiU,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;;EAEA,MAAI,CAAClE,UAAO,CAACD,KAAD,CAAZ,EAAqB;EACnB,UAAM,IAAInS,SAAJ,CAAc,wBAAd,CAAN;EACD;;EAED,MAAImS,KAAK,CAAC3U,MAAN,KAAiB,CAArB,EAAwB;EACtB,UAAM,IAAIwC,SAAJ,CAAc,yBAAd,CAAN;EACD;;EAED,MAAIuW,kBAAkB,GAAGhN,OAAO,CAACiN,SAAjC;EAAA,MACIA,SAAS,GAAGD,kBAAkB,KAAK,KAAK,CAA5B,GAAgC,CAAhC,GAAoCA,kBADpD;EAAA,MAEIE,gBAAgB,GAAGlN,OAAO,CAACmN,OAF/B;EAAA,MAGIA,OAAO,GAAGD,gBAAgB,KAAK,KAAK,CAA1B,GAA8BtE,KAAK,CAAC3U,MAApC,GAA6CiZ,gBAH3D;;EAKA,MAAID,SAAS,GAAG,CAAZ,IAAiBA,SAAS,IAAIrE,KAAK,CAAC3U,MAApC,IAA8C,CAAC4D,MAAM,CAACuV,SAAP,CAAiBH,SAAjB,CAAnD,EAAgF;EAC9E,UAAM,IAAItY,KAAJ,CAAU,0DAAV,CAAN;EACD;;EAED,MAAIwY,OAAO,IAAIF,SAAX,IAAwBE,OAAO,GAAGvE,KAAK,CAAC3U,MAAxC,IAAkD,CAAC4D,MAAM,CAACuV,SAAP,CAAiBD,OAAjB,CAAvD,EAAkF;EAChF,UAAM,IAAIxY,KAAJ,CAAU,+EAAV,CAAN;EACD;;EAED,MAAI0Y,QAAQ,GAAGzE,KAAK,CAACqE,SAAD,CAApB;;EAEA,OAAK,IAAI5U,CAAC,GAAG4U,SAAS,GAAG,CAAzB,EAA4B5U,CAAC,GAAG8U,OAAhC,EAAyC9U,CAAC,EAA1C,EAA8C;EAC5C,QAAIuQ,KAAK,CAACvQ,CAAD,CAAL,GAAWgV,QAAf,EAAyBA,QAAQ,GAAGzE,KAAK,CAACvQ,CAAD,CAAhB;EAC1B;;EAED,SAAOgV,QAAP;EACD;;EC/BD,SAAStD,GAAT,CAAanB,KAAb,EAAoB;EAClB,MAAI5I,OAAO,GAAG+M,SAAS,CAAC9Y,MAAV,GAAmB,CAAnB,IAAwB8Y,SAAS,CAAC,CAAD,CAAT,KAAiBjU,SAAzC,GAAqDiU,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;;EAEA,MAAI,CAAClE,UAAO,CAACD,KAAD,CAAZ,EAAqB;EACnB,UAAM,IAAInS,SAAJ,CAAc,wBAAd,CAAN;EACD;;EAED,MAAImS,KAAK,CAAC3U,MAAN,KAAiB,CAArB,EAAwB;EACtB,UAAM,IAAIwC,SAAJ,CAAc,yBAAd,CAAN;EACD;;EAED,MAAIuW,kBAAkB,GAAGhN,OAAO,CAACiN,SAAjC;EAAA,MACIA,SAAS,GAAGD,kBAAkB,KAAK,KAAK,CAA5B,GAAgC,CAAhC,GAAoCA,kBADpD;EAAA,MAEIE,gBAAgB,GAAGlN,OAAO,CAACmN,OAF/B;EAAA,MAGIA,OAAO,GAAGD,gBAAgB,KAAK,KAAK,CAA1B,GAA8BtE,KAAK,CAAC3U,MAApC,GAA6CiZ,gBAH3D;;EAKA,MAAID,SAAS,GAAG,CAAZ,IAAiBA,SAAS,IAAIrE,KAAK,CAAC3U,MAApC,IAA8C,CAAC4D,MAAM,CAACuV,SAAP,CAAiBH,SAAjB,CAAnD,EAAgF;EAC9E,UAAM,IAAItY,KAAJ,CAAU,0DAAV,CAAN;EACD;;EAED,MAAIwY,OAAO,IAAIF,SAAX,IAAwBE,OAAO,GAAGvE,KAAK,CAAC3U,MAAxC,IAAkD,CAAC4D,MAAM,CAACuV,SAAP,CAAiBD,OAAjB,CAAvD,EAAkF;EAChF,UAAM,IAAIxY,KAAJ,CAAU,+EAAV,CAAN;EACD;;EAED,MAAI2Y,QAAQ,GAAG1E,KAAK,CAACqE,SAAD,CAApB;;EAEA,OAAK,IAAI5U,CAAC,GAAG4U,SAAS,GAAG,CAAzB,EAA4B5U,CAAC,GAAG8U,OAAhC,EAAyC9U,CAAC,EAA1C,EAA8C;EAC5C,QAAIuQ,KAAK,CAACvQ,CAAD,CAAL,GAAWiV,QAAf,EAAyBA,QAAQ,GAAG1E,KAAK,CAACvQ,CAAD,CAAhB;EAC1B;;EAED,SAAOiV,QAAP;EACD;;EC7BD,SAASC,OAAT,CAAiB3E,KAAjB,EAAwB;EACtB,MAAI5I,OAAO,GAAG+M,SAAS,CAAC9Y,MAAV,GAAmB,CAAnB,IAAwB8Y,SAAS,CAAC,CAAD,CAAT,KAAiBjU,SAAzC,GAAqDiU,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;;EAEA,MAAI,CAAClE,UAAO,CAACD,KAAD,CAAZ,EAAqB;EACnB,UAAM,IAAInS,SAAJ,CAAc,wBAAd,CAAN;EACD,GAFD,MAEO,IAAImS,KAAK,CAAC3U,MAAN,KAAiB,CAArB,EAAwB;EAC7B,UAAM,IAAIwC,SAAJ,CAAc,yBAAd,CAAN;EACD;;EAED,MAAI1C,MAAJ;;EAEA,MAAIiM,OAAO,CAACjM,MAAR,KAAmB+E,SAAvB,EAAkC;EAChC,QAAI,CAAC+P,UAAO,CAAC7I,OAAO,CAACjM,MAAT,CAAZ,EAA8B;EAC5B,YAAM,IAAI0C,SAAJ,CAAc,6CAAd,CAAN;EACD;;EAED1C,IAAAA,MAAM,GAAGiM,OAAO,CAACjM,MAAjB;EACD,GAND,MAMO;EACLA,IAAAA,MAAM,GAAG,IAAIqE,KAAJ,CAAUwQ,KAAK,CAAC3U,MAAhB,CAAT;EACD;;EAED,MAAIuZ,UAAU,GAAGzD,GAAG,CAACnB,KAAD,CAApB;EACA,MAAI6E,UAAU,GAAGxD,GAAG,CAACrB,KAAD,CAApB;;EAEA,MAAI4E,UAAU,KAAKC,UAAnB,EAA+B;EAC7B,UAAM,IAAIC,UAAJ,CAAe,6EAAf,CAAN;EACD;;EAED,MAAIC,YAAY,GAAG3N,OAAO,CAAC+J,GAA3B;EAAA,MACIuD,QAAQ,GAAGK,YAAY,KAAK,KAAK,CAAtB,GAA0B3N,OAAO,CAAC4N,UAAR,GAAqBJ,UAArB,GAAkC,CAA5D,GAAgEG,YAD/E;EAAA,MAEIE,YAAY,GAAG7N,OAAO,CAACiK,GAF3B;EAAA,MAGIoD,QAAQ,GAAGQ,YAAY,KAAK,KAAK,CAAtB,GAA0B7N,OAAO,CAAC4N,UAAR,GAAqBH,UAArB,GAAkC,CAA5D,GAAgEI,YAH/E;;EAKA,MAAIP,QAAQ,IAAID,QAAhB,EAA0B;EACxB,UAAM,IAAIK,UAAJ,CAAe,4CAAf,CAAN;EACD;;EAED,MAAIxB,MAAM,GAAG,CAACmB,QAAQ,GAAGC,QAAZ,KAAyBG,UAAU,GAAGD,UAAtC,CAAb;;EAEA,OAAK,IAAInV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuQ,KAAK,CAAC3U,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrCtE,IAAAA,MAAM,CAACsE,CAAD,CAAN,GAAY,CAACuQ,KAAK,CAACvQ,CAAD,CAAL,GAAWmV,UAAZ,IAA0BtB,MAA1B,GAAmCoB,QAA/C;EACD;;EAED,SAAOvZ,MAAP;EACD;;EChDD,MAAM+Z,MAAM,GAAG,IAAIC,MAAJ,CAAW,CAAX,CAAf;EACA,MAAMC,UAAU,GAAG,IAAID,MAAJ,CAAW,CAAX,CAAnB;EAEO,SAASE,aAAT,GAAyB;EAC9B,SAAOC,wBAAwB,CAAC,IAAD,CAA/B;EACD;EAEM,SAASA,wBAAT,CAAkCC,MAAlC,EAAwD;EAAA,MAAdnO,OAAc,uEAAJ,EAAI;EAC7D,QAAM;EAAEoO,IAAAA,OAAO,GAAG,EAAZ;EAAgBC,IAAAA,UAAU,GAAG,EAA7B;EAAiCC,IAAAA,UAAU,GAAG;EAA9C,MAAoDtO,OAA1D;EACA,SAAQ,GAAEmO,MAAM,CAACzR,WAAP,CAAmBzF,IAAK;AACpC,EAAE6W,MAAO;AACT,EAAEE,UAAW,GAAEO,WAAW,CAACJ,MAAD,EAASC,OAAT,EAAkBC,UAAlB,EAA8BC,UAA9B,CAA0C;AACpE,EAAER,MAAO;AACT,EAAEA,MAAO,SAAQK,MAAM,CAACK,IAAK;AAC7B,EAAEV,MAAO,YAAWK,MAAM,CAACM,OAAQ;AACnC,EANE;EAOD;;EAED,SAASF,WAAT,CAAqBJ,MAArB,EAA6BC,OAA7B,EAAsCC,UAAtC,EAAkDC,UAAlD,EAA8D;EAC5D,QAAM;EAAEE,IAAAA,IAAF;EAAQC,IAAAA;EAAR,MAAoBN,MAA1B;EACA,QAAMO,IAAI,GAAG1P,IAAI,CAAC+K,GAAL,CAASyE,IAAT,EAAeJ,OAAf,CAAb;EACA,QAAMO,IAAI,GAAG3P,IAAI,CAAC+K,GAAL,CAAS0E,OAAT,EAAkBJ,UAAlB,CAAb;EACA,QAAM3S,MAAM,GAAG,EAAf;;EACA,OAAK,IAAIrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqW,IAApB,EAA0BrW,CAAC,EAA3B,EAA+B;EAC7B,QAAIuW,IAAI,GAAG,EAAX;;EACA,SAAK,IAAI7Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Q,IAApB,EAA0B5Q,CAAC,EAA3B,EAA+B;EAC7B6Q,MAAAA,IAAI,CAACva,IAAL,CAAUwa,YAAY,CAACV,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAD,EAAmBuQ,UAAnB,CAAtB;EACD;;EACD5S,IAAAA,MAAM,CAACrH,IAAP,CAAa,GAAEua,IAAI,CAACzS,IAAL,CAAU,GAAV,CAAe,EAA9B;EACD;;EACD,MAAIwS,IAAI,KAAKF,OAAb,EAAsB;EACpB/S,IAAAA,MAAM,CAACA,MAAM,CAACzH,MAAP,GAAgB,CAAjB,CAAN,IAA8B,QAAOwa,OAAO,GAAGJ,UAAW,eAA1D;EACD;;EACD,MAAIK,IAAI,KAAKF,IAAb,EAAmB;EACjB9S,IAAAA,MAAM,CAACrH,IAAP,CAAa,OAAMma,IAAI,GAAGJ,OAAQ,YAAlC;EACD;;EACD,SAAO1S,MAAM,CAACS,IAAP,CAAa,KAAI6R,UAAW,EAA5B,CAAP;EACD;;EAED,SAASa,YAAT,CAAsBzL,GAAtB,EAA2BkL,UAA3B,EAAuC;EACrC,QAAMS,MAAM,GAAGpb,MAAM,CAACyP,GAAD,CAArB;;EACA,MAAI2L,MAAM,CAAC9a,MAAP,IAAiBqa,UAArB,EAAiC;EAC/B,WAAOS,MAAM,CAACnT,MAAP,CAAc0S,UAAd,EAA0B,GAA1B,CAAP;EACD;;EACD,QAAMU,OAAO,GAAG5L,GAAG,CAAC6L,WAAJ,CAAgBX,UAAU,GAAG,CAA7B,CAAhB;;EACA,MAAIU,OAAO,CAAC/a,MAAR,IAAkBqa,UAAtB,EAAkC;EAChC,WAAOU,OAAP;EACD;;EACD,QAAME,WAAW,GAAG9L,GAAG,CAAC+L,aAAJ,CAAkBb,UAAU,GAAG,CAA/B,CAApB;EACA,QAAMc,MAAM,GAAGF,WAAW,CAACrM,OAAZ,CAAoB,GAApB,CAAf;EACA,QAAMuF,CAAC,GAAG8G,WAAW,CAACnG,KAAZ,CAAkBqG,MAAlB,CAAV;EACA,SAAOF,WAAW,CAACnG,KAAZ,CAAkB,CAAlB,EAAqBuF,UAAU,GAAGlG,CAAC,CAACnU,MAApC,IAA8CmU,CAArD;EACD;;ECpDM,SAASiH,qBAAT,CAA+BC,cAA/B,EAA+CC,MAA/C,EAAuD;EAC5DD,EAAAA,cAAc,CAAC3N,SAAf,CAAyB6N,GAAzB,GAA+B,SAASA,GAAT,CAAatb,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKub,IAAL,CAAUvb,KAAV,CAAP;EAC/B,WAAO,KAAKwb,IAAL,CAAUxb,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB8N,IAAzB,GAAgC,SAASA,IAAT,CAAcvb,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB+N,IAAzB,GAAgC,SAASA,IAAT,CAAcvB,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACE,GAAf,GAAqB,SAASA,GAAT,CAAarB,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACL,GAAV,CAActb,KAAd,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBmO,GAAzB,GAA+B,SAASA,GAAT,CAAa5b,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAK6b,IAAL,CAAU7b,KAAV,CAAP;EAC/B,WAAO,KAAK8b,IAAL,CAAU9b,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBoO,IAAzB,GAAgC,SAASA,IAAT,CAAc7b,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBqO,IAAzB,GAAgC,SAASA,IAAT,CAAc7B,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACQ,GAAf,GAAqB,SAASA,GAAT,CAAa3B,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACC,GAAV,CAAc5b,KAAd,CAAP;EACD,GAHD;;EAIAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBsO,QAAzB,GAAoCX,cAAc,CAAC3N,SAAf,CAAyBmO,GAA7D;EACAR,EAAAA,cAAc,CAAC3N,SAAf,CAAyBuO,SAAzB,GAAqCZ,cAAc,CAAC3N,SAAf,CAAyBoO,IAA9D;EACAT,EAAAA,cAAc,CAAC3N,SAAf,CAAyBwO,SAAzB,GAAqCb,cAAc,CAAC3N,SAAf,CAAyBqO,IAA9D;EACAV,EAAAA,cAAc,CAACW,QAAf,GAA0BX,cAAc,CAACQ,GAAzC;;EAEAR,EAAAA,cAAc,CAAC3N,SAAf,CAAyByO,GAAzB,GAA+B,SAASA,GAAT,CAAalc,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKmc,IAAL,CAAUnc,KAAV,CAAP;EAC/B,WAAO,KAAKoc,IAAL,CAAUpc,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB0O,IAAzB,GAAgC,SAASA,IAAT,CAAcnc,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB2O,IAAzB,GAAgC,SAASA,IAAT,CAAcnC,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACc,GAAf,GAAqB,SAASA,GAAT,CAAajC,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACO,GAAV,CAAclc,KAAd,CAAP;EACD,GAHD;;EAIAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB4O,QAAzB,GAAoCjB,cAAc,CAAC3N,SAAf,CAAyByO,GAA7D;EACAd,EAAAA,cAAc,CAAC3N,SAAf,CAAyB6O,SAAzB,GAAqClB,cAAc,CAAC3N,SAAf,CAAyB0O,IAA9D;EACAf,EAAAA,cAAc,CAAC3N,SAAf,CAAyB8O,SAAzB,GAAqCnB,cAAc,CAAC3N,SAAf,CAAyB2O,IAA9D;EACAhB,EAAAA,cAAc,CAACiB,QAAf,GAA0BjB,cAAc,CAACc,GAAzC;;EAEAd,EAAAA,cAAc,CAAC3N,SAAf,CAAyB+O,GAAzB,GAA+B,SAASA,GAAT,CAAaxc,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKyc,IAAL,CAAUzc,KAAV,CAAP;EAC/B,WAAO,KAAK0c,IAAL,CAAU1c,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBgP,IAAzB,GAAgC,SAASA,IAAT,CAAczc,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBiP,IAAzB,GAAgC,SAASA,IAAT,CAAczC,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACoB,GAAf,GAAqB,SAASA,GAAT,CAAavC,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACa,GAAV,CAAcxc,KAAd,CAAP;EACD,GAHD;;EAIAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBkP,MAAzB,GAAkCvB,cAAc,CAAC3N,SAAf,CAAyB+O,GAA3D;EACApB,EAAAA,cAAc,CAAC3N,SAAf,CAAyBmP,OAAzB,GAAmCxB,cAAc,CAAC3N,SAAf,CAAyBgP,IAA5D;EACArB,EAAAA,cAAc,CAAC3N,SAAf,CAAyBoP,OAAzB,GAAmCzB,cAAc,CAAC3N,SAAf,CAAyBiP,IAA5D;EACAtB,EAAAA,cAAc,CAACuB,MAAf,GAAwBvB,cAAc,CAACoB,GAAvC;;EAEApB,EAAAA,cAAc,CAAC3N,SAAf,CAAyBqP,GAAzB,GAA+B,SAASA,GAAT,CAAa9c,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAK+c,IAAL,CAAU/c,KAAV,CAAP;EAC/B,WAAO,KAAKgd,IAAL,CAAUhd,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBsP,IAAzB,GAAgC,SAASA,IAAT,CAAc/c,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBuP,IAAzB,GAAgC,SAASA,IAAT,CAAc/C,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAAC0B,GAAf,GAAqB,SAASA,GAAT,CAAa7C,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACmB,GAAV,CAAc9c,KAAd,CAAP;EACD,GAHD;;EAIAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBwP,OAAzB,GAAmC7B,cAAc,CAAC3N,SAAf,CAAyBqP,GAA5D;EACA1B,EAAAA,cAAc,CAAC3N,SAAf,CAAyByP,QAAzB,GAAoC9B,cAAc,CAAC3N,SAAf,CAAyBsP,IAA7D;EACA3B,EAAAA,cAAc,CAAC3N,SAAf,CAAyB0P,QAAzB,GAAoC/B,cAAc,CAAC3N,SAAf,CAAyBuP,IAA7D;EACA5B,EAAAA,cAAc,CAAC6B,OAAf,GAAyB7B,cAAc,CAAC0B,GAAxC;;EAEA1B,EAAAA,cAAc,CAAC3N,SAAf,CAAyB2P,GAAzB,GAA+B,SAASA,GAAT,CAAapd,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKqd,IAAL,CAAUrd,KAAV,CAAP;EAC/B,WAAO,KAAKsd,IAAL,CAAUtd,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB4P,IAAzB,GAAgC,SAASA,IAAT,CAAcrd,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB6P,IAAzB,GAAgC,SAASA,IAAT,CAAcrD,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACgC,GAAf,GAAqB,SAASA,GAAT,CAAanD,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACyB,GAAV,CAAcpd,KAAd,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB8P,EAAzB,GAA8B,SAASA,EAAT,CAAYvd,KAAZ,EAAmB;EAC/C,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKwd,GAAL,CAASxd,KAAT,CAAP;EAC/B,WAAO,KAAKyd,GAAL,CAASzd,KAAT,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB+P,GAAzB,GAA+B,SAASA,GAAT,CAAaxd,KAAb,EAAoB;EACjD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBgQ,GAAzB,GAA+B,SAASA,GAAT,CAAaxD,MAAb,EAAqB;EAClDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACmC,EAAf,GAAoB,SAASA,EAAT,CAAYtD,MAAZ,EAAoBja,KAApB,EAA2B;EAC7C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC4B,EAAV,CAAavd,KAAb,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBiQ,GAAzB,GAA+B,SAASA,GAAT,CAAa1d,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAK2d,IAAL,CAAU3d,KAAV,CAAP;EAC/B,WAAO,KAAK4d,IAAL,CAAU5d,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBkQ,IAAzB,GAAgC,SAASA,IAAT,CAAc3d,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB7J,KAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBmQ,IAAzB,GAAgC,SAASA,IAAT,CAAc3D,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAhC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACsC,GAAf,GAAqB,SAASA,GAAT,CAAazD,MAAb,EAAqBja,KAArB,EAA4B;EAC/C,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC+B,GAAV,CAAc1d,KAAd,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBoQ,SAAzB,GAAqC,SAASA,SAAT,CAAmB7d,KAAnB,EAA0B;EAC7D,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAK8d,UAAL,CAAgB9d,KAAhB,CAAP;EAC/B,WAAO,KAAK+d,UAAL,CAAgB/d,KAAhB,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBqQ,UAAzB,GAAsC,SAASA,UAAT,CAAoB9d,KAApB,EAA2B;EAC/D,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,KAAkB7J,KAAjC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBsQ,UAAzB,GAAsC,SAASA,UAAT,CAAoB9D,MAApB,EAA4B;EAChEA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,KAAkBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAjC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAACyC,SAAf,GAA2B,SAASA,SAAT,CAAmB5D,MAAnB,EAA2Bja,KAA3B,EAAkC;EAC3D,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACkC,SAAV,CAAoB7d,KAApB,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBuQ,yBAAzB,GAAqD,SAASA,yBAAT,CAAmChe,KAAnC,EAA0C;EAC7F,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKie,0BAAL,CAAgCje,KAAhC,CAAP;EAC/B,WAAO,KAAKke,0BAAL,CAAgCle,KAAhC,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyBwQ,0BAAzB,GAAsD,SAASA,0BAAT,CAAoCje,KAApC,EAA2C;EAC/F,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,KAAkB7J,KAAjC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyByQ,0BAAzB,GAAsD,SAASA,0BAAT,CAAoCjE,MAApC,EAA4C;EAChGA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,KAAkBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAjC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAAC4C,yBAAf,GAA2C,SAASA,yBAAT,CAAmC/D,MAAnC,EAA2Cja,KAA3C,EAAkD;EAC3F,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACqC,yBAAV,CAAoChe,KAApC,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB0Q,UAAzB,GAAsC,SAASA,UAAT,CAAoBne,KAApB,EAA2B;EAC/D,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKoe,WAAL,CAAiBpe,KAAjB,CAAP;EAC/B,WAAO,KAAKqe,WAAL,CAAiBre,KAAjB,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB2Q,WAAzB,GAAuC,SAASA,WAAT,CAAqBpe,KAArB,EAA4B;EACjE,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmB7J,KAAlC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB4Q,WAAzB,GAAuC,SAASA,WAAT,CAAqBpE,MAArB,EAA6B;EAClEA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAlC;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;;EAcAuR,EAAAA,cAAc,CAAC+C,UAAf,GAA4B,SAASA,UAAT,CAAoBlE,MAApB,EAA4Bja,KAA5B,EAAmC;EAC7D,UAAM2b,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACwC,UAAV,CAAqBne,KAArB,CAAP;EACD,GAHD;;EAIAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB6Q,kBAAzB,GAA8ClD,cAAc,CAAC3N,SAAf,CAAyB0Q,UAAvE;EACA/C,EAAAA,cAAc,CAAC3N,SAAf,CAAyB8Q,mBAAzB,GAA+CnD,cAAc,CAAC3N,SAAf,CAAyB2Q,WAAxE;EACAhD,EAAAA,cAAc,CAAC3N,SAAf,CAAyB+Q,mBAAzB,GAA+CpD,cAAc,CAAC3N,SAAf,CAAyB4Q,WAAxE;EACAjD,EAAAA,cAAc,CAACkD,kBAAf,GAAoClD,cAAc,CAAC+C,UAAnD;;EAEA/C,EAAAA,cAAc,CAAC3N,SAAf,CAAyBgR,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAIta,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,CAAE,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAjB;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACqD,GAAf,GAAqB,SAASA,GAAT,CAAaxE,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC8C,GAAV,EAAP;EACD,GAHD;;EAKArD,EAAAA,cAAc,CAAC3N,SAAf,CAAyB1C,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAI5G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACC,GAAL,CAAS,KAAK6P,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACrQ,GAAf,GAAqB,SAASA,GAAT,CAAakP,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC5Q,GAAV,EAAP;EACD,GAHD;;EAKAqQ,EAAAA,cAAc,CAAC3N,SAAf,CAAyBiR,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAIva,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC4T,IAAL,CAAU,KAAK9D,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACsD,IAAf,GAAsB,SAASA,IAAT,CAAczE,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC+C,IAAV,EAAP;EACD,GAHD;;EAKAtD,EAAAA,cAAc,CAAC3N,SAAf,CAAyBkR,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAIxa,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC6T,KAAL,CAAW,KAAK/D,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACuD,KAAf,GAAuB,SAASA,KAAT,CAAe1E,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACgD,KAAV,EAAP;EACD,GAHD;;EAKAvD,EAAAA,cAAc,CAAC3N,SAAf,CAAyBmR,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAIza,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC8T,IAAL,CAAU,KAAKhE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACwD,IAAf,GAAsB,SAASA,IAAT,CAAc3E,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACiD,IAAV,EAAP;EACD,GAHD;;EAKAxD,EAAAA,cAAc,CAAC3N,SAAf,CAAyBoR,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAI1a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC+T,KAAL,CAAW,KAAKjE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACyD,KAAf,GAAuB,SAASA,KAAT,CAAe5E,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACkD,KAAV,EAAP;EACD,GAHD;;EAKAzD,EAAAA,cAAc,CAAC3N,SAAf,CAAyBqR,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI3a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACgU,IAAL,CAAU,KAAKlE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC0D,IAAf,GAAsB,SAASA,IAAT,CAAc7E,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACmD,IAAV,EAAP;EACD,GAHD;;EAKA1D,EAAAA,cAAc,CAAC3N,SAAf,CAAyBsR,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAI5a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACiU,KAAL,CAAW,KAAKnE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC2D,KAAf,GAAuB,SAASA,KAAT,CAAe9E,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACoD,KAAV,EAAP;EACD,GAHD;;EAKA3D,EAAAA,cAAc,CAAC3N,SAAf,CAAyBuR,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI7a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACkU,IAAL,CAAU,KAAKpE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC4D,IAAf,GAAsB,SAASA,IAAT,CAAc/E,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACqD,IAAV,EAAP;EACD,GAHD;;EAKA5D,EAAAA,cAAc,CAAC3N,SAAf,CAAyBwR,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI9a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACmU,IAAL,CAAU,KAAKrE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC6D,IAAf,GAAsB,SAASA,IAAT,CAAchF,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACsD,IAAV,EAAP;EACD,GAHD;;EAKA7D,EAAAA,cAAc,CAAC3N,SAAf,CAAyByR,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAI/a,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACoU,KAAL,CAAW,KAAKtE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC8D,KAAf,GAAuB,SAASA,KAAT,CAAejF,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACuD,KAAV,EAAP;EACD,GAHD;;EAKA9D,EAAAA,cAAc,CAAC3N,SAAf,CAAyB0R,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAIhb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACqU,GAAL,CAAS,KAAKvE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC+D,GAAf,GAAqB,SAASA,GAAT,CAAalF,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACwD,GAAV,EAAP;EACD,GAHD;;EAKA/D,EAAAA,cAAc,CAAC3N,SAAf,CAAyB2R,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAIjb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACsU,IAAL,CAAU,KAAKxE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACgE,IAAf,GAAsB,SAASA,IAAT,CAAcnF,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACyD,IAAV,EAAP;EACD,GAHD;;EAKAhE,EAAAA,cAAc,CAAC3N,SAAf,CAAyByK,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAI/T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACoN,GAAL,CAAS,KAAK0C,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAClD,GAAf,GAAqB,SAASA,GAAT,CAAa+B,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACzD,GAAV,EAAP;EACD,GAHD;;EAKAkD,EAAAA,cAAc,CAAC3N,SAAf,CAAyB4R,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAIlb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACuU,KAAL,CAAW,KAAKzE,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACiE,KAAf,GAAuB,SAASA,KAAT,CAAepF,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC0D,KAAV,EAAP;EACD,GAHD;;EAKAjE,EAAAA,cAAc,CAAC3N,SAAf,CAAyB6R,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAInb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACwU,KAAL,CAAW,KAAK1E,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACkE,KAAf,GAAuB,SAASA,KAAT,CAAerF,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC2D,KAAV,EAAP;EACD,GAHD;;EAKAlE,EAAAA,cAAc,CAAC3N,SAAf,CAAyB8R,MAAzB,GAAkC,SAASA,MAAT,GAAkB;EAClD,SAAK,IAAIpb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACyU,MAAL,CAAY,KAAK3E,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAZ,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACmE,MAAf,GAAwB,SAASA,MAAT,CAAgBtF,MAAhB,EAAwB;EAC9C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC4D,MAAV,EAAP;EACD,GAHD;;EAKAnE,EAAAA,cAAc,CAAC3N,SAAf,CAAyB+R,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAIrb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC0U,GAAL,CAAS,KAAK5E,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACoE,GAAf,GAAqB,SAASA,GAAT,CAAavF,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC6D,GAAV,EAAP;EACD,GAHD;;EAKApE,EAAAA,cAAc,CAAC3N,SAAf,CAAyBgS,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAItb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC2U,KAAL,CAAW,KAAK7E,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACqE,KAAf,GAAuB,SAASA,KAAT,CAAexF,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC8D,KAAV,EAAP;EACD,GAHD;;EAKArE,EAAAA,cAAc,CAAC3N,SAAf,CAAyBiS,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAIvb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC4U,KAAL,CAAW,KAAK9E,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACsE,KAAf,GAAuB,SAASA,KAAT,CAAezF,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAAC+D,KAAV,EAAP;EACD,GAHD;;EAKAtE,EAAAA,cAAc,CAAC3N,SAAf,CAAyBkS,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAIxb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC6U,IAAL,CAAU,KAAK/E,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACuE,IAAf,GAAsB,SAASA,IAAT,CAAc1F,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACgE,IAAV,EAAP;EACD,GAHD;;EAKAvE,EAAAA,cAAc,CAAC3N,SAAf,CAAyBmS,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAIzb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC8U,KAAL,CAAW,KAAKhF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACwE,KAAf,GAAuB,SAASA,KAAT,CAAe3F,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACiE,KAAV,EAAP;EACD,GAHD;;EAKAxE,EAAAA,cAAc,CAAC3N,SAAf,CAAyBoS,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI1b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAAC+U,IAAL,CAAU,KAAKjF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAACyE,IAAf,GAAsB,SAASA,IAAT,CAAc5F,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACkE,IAAV,EAAP;EACD,GAHD;;EAKAzE,EAAAA,cAAc,CAAC3N,SAAf,CAAyBqS,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAI3b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACgV,GAAL,CAAS,KAAKlF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC0E,GAAf,GAAqB,SAASA,GAAT,CAAa7F,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACmE,GAAV,EAAP;EACD,GAHD;;EAKA1E,EAAAA,cAAc,CAAC3N,SAAf,CAAyBsS,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI5b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACiV,IAAL,CAAU,KAAKnF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC2E,IAAf,GAAsB,SAASA,IAAT,CAAc9F,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACoE,IAAV,EAAP;EACD,GAHD;;EAKA3E,EAAAA,cAAc,CAAC3N,SAAf,CAAyBuS,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI7b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACkV,IAAL,CAAU,KAAKpF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC4E,IAAf,GAAsB,SAASA,IAAT,CAAc/F,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACqE,IAAV,EAAP;EACD,GAHD;;EAKA5E,EAAAA,cAAc,CAAC3N,SAAf,CAAyBwS,GAAzB,GAA+B,SAASA,GAAT,GAAe;EAC5C,SAAK,IAAI9b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACmV,GAAL,CAAS,KAAKrF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC6E,GAAf,GAAqB,SAASA,GAAT,CAAahG,MAAb,EAAqB;EACxC,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACsE,GAAV,EAAP;EACD,GAHD;;EAKA7E,EAAAA,cAAc,CAAC3N,SAAf,CAAyByS,IAAzB,GAAgC,SAASA,IAAT,GAAgB;EAC9C,SAAK,IAAI/b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACoV,IAAL,CAAU,KAAKtF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAV,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC8E,IAAf,GAAsB,SAASA,IAAT,CAAcjG,MAAd,EAAsB;EAC1C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACuE,IAAV,EAAP;EACD,GAHD;;EAKA9E,EAAAA,cAAc,CAAC3N,SAAf,CAAyB0S,KAAzB,GAAiC,SAASA,KAAT,GAAiB;EAChD,SAAK,IAAIhc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACqV,KAAL,CAAW,KAAKvF,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAuR,EAAAA,cAAc,CAAC+E,KAAf,GAAuB,SAASA,KAAT,CAAelG,MAAf,EAAuB;EAC5C,UAAM0B,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACwE,KAAV,EAAP;EACD,GAHD;;EAKA/E,EAAAA,cAAc,CAAC7I,GAAf,GAAqB,SAASA,GAAT,CAAa0H,MAAb,EAAqBmG,IAArB,EAA2B;EAC9C,UAAMzE,SAAS,GAAG,IAAIN,MAAJ,CAAWpB,MAAX,CAAlB;EACA,WAAO0B,SAAS,CAACpJ,GAAV,CAAc6N,IAAd,CAAP;EACD,GAHD;;EAKAhF,EAAAA,cAAc,CAAC3N,SAAf,CAAyB8E,GAAzB,GAA+B,SAASA,GAAT,CAAavS,KAAb,EAAoB;EACjD,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,KAAKqgB,IAAL,CAAUrgB,KAAV,CAAP;EAC/B,WAAO,KAAKsgB,IAAL,CAAUtgB,KAAV,CAAP;EACD,GAHD;;EAKAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB4S,IAAzB,GAAgC,SAASA,IAAT,CAAcrgB,KAAd,EAAqB;EACnD,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACyH,GAAL,CAAS,KAAKqI,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,EAAyB7J,KAAzB,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAPD;;EASAob,EAAAA,cAAc,CAAC3N,SAAf,CAAyB6S,IAAzB,GAAgC,SAASA,IAAT,CAAcrG,MAAd,EAAsB;EACpDA,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAI,KAAKK,IAAL,KAAcL,MAAM,CAACK,IAArB,IACF,KAAKC,OAAL,KAAiBN,MAAM,CAACM,OAD1B,EACmC;EACjC,YAAM,IAAIf,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,SAAK,IAAIrV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeiB,IAAI,CAACyH,GAAL,CAAS,KAAKqI,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAT,EAAyBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAzB,CAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD,GAZD;EAaD;;ECtzBD;EACA;EACA;EACA;EACA;EACA;EACA;EACO,SAAS0W,aAAT,CAAuBtG,MAAvB,EAA+B3Z,KAA/B,EAAsCkgB,KAAtC,EAA6C;EAClD,MAAIzK,GAAG,GAAGyK,KAAK,GAAGvG,MAAM,CAACK,IAAV,GAAiBL,MAAM,CAACK,IAAP,GAAc,CAA9C;;EACA,MAAIha,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAGyV,GAAzB,EAA8B;EAC5B,UAAM,IAAIyD,UAAJ,CAAe,wBAAf,CAAN;EACD;EACF;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASiH,gBAAT,CAA0BxG,MAA1B,EAAkC3Z,KAAlC,EAAyCkgB,KAAzC,EAAgD;EACrD,MAAIzK,GAAG,GAAGyK,KAAK,GAAGvG,MAAM,CAACM,OAAV,GAAoBN,MAAM,CAACM,OAAP,GAAiB,CAApD;;EACA,MAAIja,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAGyV,GAAzB,EAA8B;EAC5B,UAAM,IAAIyD,UAAJ,CAAe,2BAAf,CAAN;EACD;EACF;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASkH,cAAT,CAAwBzG,MAAxB,EAAgC0G,MAAhC,EAAwC;EAC7C,MAAIA,MAAM,CAACC,SAAX,EAAsB;EACpBD,IAAAA,MAAM,GAAGA,MAAM,CAACC,SAAP,EAAT;EACD;;EACD,MAAID,MAAM,CAAC5gB,MAAP,KAAkBka,MAAM,CAACM,OAA7B,EAAsC;EACpC,UAAM,IAAIf,UAAJ,CACJ,uDADI,CAAN;EAGD;;EACD,SAAOmH,MAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASE,iBAAT,CAA2B5G,MAA3B,EAAmC0G,MAAnC,EAA2C;EAChD,MAAIA,MAAM,CAACC,SAAX,EAAsB;EACpBD,IAAAA,MAAM,GAAGA,MAAM,CAACC,SAAP,EAAT;EACD;;EACD,MAAID,MAAM,CAAC5gB,MAAP,KAAkBka,MAAM,CAACK,IAA7B,EAAmC;EACjC,UAAM,IAAId,UAAJ,CAAe,oDAAf,CAAN;EACD;;EACD,SAAOmH,MAAP;EACD;EAEM,SAASG,YAAT,CAAsB7G,MAAtB,EAA8B8G,UAA9B,EAA0CC,aAA1C,EAAyD;EAC9D,SAAO;EACLxL,IAAAA,GAAG,EAAEyL,eAAe,CAAChH,MAAD,EAAS8G,UAAT,CADf;EAELG,IAAAA,MAAM,EAAEC,kBAAkB,CAAClH,MAAD,EAAS+G,aAAT;EAFrB,GAAP;EAID;EAEM,SAASC,eAAT,CAAyBhH,MAAzB,EAAiC8G,UAAjC,EAA6C;EAClD,MAAI,OAAOA,UAAP,KAAsB,QAA1B,EAAoC;EAClC,UAAM,IAAIxe,SAAJ,CAAc,iCAAd,CAAN;EACD;;EAED,MAAI6e,MAAM,GAAGL,UAAU,CAACM,IAAX,CAAiBC,CAAD,IAAO;EAClC,WAAOA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAIrH,MAAM,CAACK,IAA5B;EACD,GAFY,CAAb;;EAIA,MAAI8G,MAAJ,EAAY;EACV,UAAM,IAAI5H,UAAJ,CAAe,8BAAf,CAAN;EACD;;EAED,MAAI,CAACtV,KAAK,CAACyQ,OAAN,CAAcoM,UAAd,CAAL,EAAgCA,UAAU,GAAG7c,KAAK,CAACwR,IAAN,CAAWqL,UAAX,CAAb;EAEhC,SAAOA,UAAP;EACD;EAEM,SAASI,kBAAT,CAA4BlH,MAA5B,EAAoC+G,aAApC,EAAmD;EACxD,MAAI,OAAOA,aAAP,KAAyB,QAA7B,EAAuC;EACrC,UAAM,IAAIze,SAAJ,CAAc,oCAAd,CAAN;EACD;;EAED,MAAIgf,SAAS,GAAGP,aAAa,CAACK,IAAd,CAAoB/M,CAAD,IAAO;EACxC,WAAOA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI2F,MAAM,CAACM,OAA5B;EACD,GAFe,CAAhB;;EAIA,MAAIgH,SAAJ,EAAe;EACb,UAAM,IAAI/H,UAAJ,CAAe,iCAAf,CAAN;EACD;;EACD,MAAI,CAACtV,KAAK,CAACyQ,OAAN,CAAcqM,aAAd,CAAL,EAAmCA,aAAa,GAAG9c,KAAK,CAACwR,IAAN,CAAWsL,aAAX,CAAhB;EAEnC,SAAOA,aAAP;EACD;EAEM,SAASQ,UAAT,CAAoBvH,MAApB,EAA4BwH,QAA5B,EAAsCC,MAAtC,EAA8CC,WAA9C,EAA2DC,SAA3D,EAAsE;EAC3E,MAAI/I,SAAS,CAAC9Y,MAAV,KAAqB,CAAzB,EAA4B;EAC1B,UAAM,IAAIyZ,UAAJ,CAAe,sBAAf,CAAN;EACD;;EACDqI,EAAAA,WAAW,CAAC,UAAD,EAAaJ,QAAb,CAAX;EACAI,EAAAA,WAAW,CAAC,QAAD,EAAWH,MAAX,CAAX;EACAG,EAAAA,WAAW,CAAC,aAAD,EAAgBF,WAAhB,CAAX;EACAE,EAAAA,WAAW,CAAC,WAAD,EAAcD,SAAd,CAAX;;EACA,MACEH,QAAQ,GAAGC,MAAX,IACAC,WAAW,GAAGC,SADd,IAEAH,QAAQ,GAAG,CAFX,IAGAA,QAAQ,IAAIxH,MAAM,CAACK,IAHnB,IAIAoH,MAAM,GAAG,CAJT,IAKAA,MAAM,IAAIzH,MAAM,CAACK,IALjB,IAMAqH,WAAW,GAAG,CANd,IAOAA,WAAW,IAAI1H,MAAM,CAACM,OAPtB,IAQAqH,SAAS,GAAG,CARZ,IASAA,SAAS,IAAI3H,MAAM,CAACM,OAVtB,EAWE;EACA,UAAM,IAAIf,UAAJ,CAAe,oCAAf,CAAN;EACD;EACF;EAEM,SAASsI,QAAT,CAAkB/hB,MAAlB,EAAqC;EAAA,MAAXC,KAAW,uEAAH,CAAG;EAC1C,MAAIK,KAAK,GAAG,EAAZ;;EACA,OAAK,IAAI8D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpE,MAApB,EAA4BoE,CAAC,EAA7B,EAAiC;EAC/B9D,IAAAA,KAAK,CAACF,IAAN,CAAWH,KAAX;EACD;;EACD,SAAOK,KAAP;EACD;;EAED,SAASwhB,WAAT,CAAqB9e,IAArB,EAA2B/C,KAA3B,EAAkC;EAChC,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B,UAAM,IAAIuC,SAAJ,CAAe,GAAEQ,IAAK,mBAAtB,CAAN;EACD;EACF;;EAEM,SAASgf,aAAT,CAAuB9H,MAAvB,EAA+B;EACpC,MAAIA,MAAM,CAAC+H,OAAP,EAAJ,EAAsB;EACpB,UAAM,IAAIvhB,KAAJ,CAAU,uCAAV,CAAN;EACD;EACF;;ECpJM,SAASwhB,QAAT,CAAkBhI,MAAlB,EAA0B;EAC/B,MAAIiI,GAAG,GAAGJ,QAAQ,CAAC7H,MAAM,CAACK,IAAR,CAAlB;;EACA,OAAK,IAAInW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiC,EAAEnW,CAAnC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC,EAAE1Q,CAAtC,EAAyC;EACvCqY,MAAAA,GAAG,CAAC/d,CAAD,CAAH,IAAU8V,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAV;EACD;EACF;;EACD,SAAOqY,GAAP;EACD;EAEM,SAASC,WAAT,CAAqBlI,MAArB,EAA6B;EAClC,MAAIiI,GAAG,GAAGJ,QAAQ,CAAC7H,MAAM,CAACM,OAAR,CAAlB;;EACA,OAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiC,EAAEnW,CAAnC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC,EAAE1Q,CAAtC,EAAyC;EACvCqY,MAAAA,GAAG,CAACrY,CAAD,CAAH,IAAUoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAV;EACD;EACF;;EACD,SAAOqY,GAAP;EACD;EAEM,SAASE,MAAT,CAAgBnI,MAAhB,EAAwB;EAC7B,MAAI9S,CAAC,GAAG,CAAR;;EACA,OAAK,IAAIhD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvC1C,MAAAA,CAAC,IAAI8S,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAL;EACD;EACF;;EACD,SAAO1C,CAAP;EACD;EAEM,SAASkb,YAAT,CAAsBpI,MAAtB,EAA8B;EACnC,MAAIiI,GAAG,GAAGJ,QAAQ,CAAC7H,MAAM,CAACK,IAAR,EAAc,CAAd,CAAlB;;EACA,OAAK,IAAInW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiC,EAAEnW,CAAnC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC,EAAE1Q,CAAtC,EAAyC;EACvCqY,MAAAA,GAAG,CAAC/d,CAAD,CAAH,IAAU8V,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAV;EACD;EACF;;EACD,SAAOqY,GAAP;EACD;EAEM,SAASI,eAAT,CAAyBrI,MAAzB,EAAiC;EACtC,MAAIiI,GAAG,GAAGJ,QAAQ,CAAC7H,MAAM,CAACM,OAAR,EAAiB,CAAjB,CAAlB;;EACA,OAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiC,EAAEnW,CAAnC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC,EAAE1Q,CAAtC,EAAyC;EACvCqY,MAAAA,GAAG,CAACrY,CAAD,CAAH,IAAUoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAV;EACD;EACF;;EACD,SAAOqY,GAAP;EACD;EAEM,SAASK,UAAT,CAAoBtI,MAApB,EAA4B;EACjC,MAAI9S,CAAC,GAAG,CAAR;;EACA,OAAK,IAAIhD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvC1C,MAAAA,CAAC,IAAI8S,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAL;EACD;EACF;;EACD,SAAO1C,CAAP;EACD;EAEM,SAASqb,aAAT,CAAuBvI,MAAvB,EAA+BwI,QAA/B,EAAyCC,IAAzC,EAA+C;EACpD,QAAMpI,IAAI,GAAGL,MAAM,CAACK,IAApB;EACA,QAAMqI,IAAI,GAAG1I,MAAM,CAACM,OAApB;EACA,QAAMqI,QAAQ,GAAG,EAAjB;;EAEA,OAAK,IAAIze,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,QAAI0e,IAAI,GAAG,CAAX;EACA,QAAIC,IAAI,GAAG,CAAX;EACA,QAAIrS,CAAC,GAAG,CAAR;;EACA,SAAK,IAAI5G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Y,IAApB,EAA0B9Y,CAAC,EAA3B,EAA+B;EAC7B4G,MAAAA,CAAC,GAAGwJ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmB6Y,IAAI,CAACve,CAAD,CAA3B;EACA0e,MAAAA,IAAI,IAAIpS,CAAR;EACAqS,MAAAA,IAAI,IAAIrS,CAAC,GAAGA,CAAZ;EACD;;EACD,QAAIgS,QAAJ,EAAc;EACZG,MAAAA,QAAQ,CAACziB,IAAT,CAAc,CAAC2iB,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBF,IAAxB,KAAiCA,IAAI,GAAG,CAAxC,CAAd;EACD,KAFD,MAEO;EACLC,MAAAA,QAAQ,CAACziB,IAAT,CAAc,CAAC2iB,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBF,IAAxB,IAAgCA,IAA9C;EACD;EACF;;EACD,SAAOC,QAAP;EACD;EAEM,SAASG,gBAAT,CAA0B9I,MAA1B,EAAkCwI,QAAlC,EAA4CC,IAA5C,EAAkD;EACvD,QAAMpI,IAAI,GAAGL,MAAM,CAACK,IAApB;EACA,QAAMqI,IAAI,GAAG1I,MAAM,CAACM,OAApB;EACA,QAAMqI,QAAQ,GAAG,EAAjB;;EAEA,OAAK,IAAI/Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Y,IAApB,EAA0B9Y,CAAC,EAA3B,EAA+B;EAC7B,QAAIgZ,IAAI,GAAG,CAAX;EACA,QAAIC,IAAI,GAAG,CAAX;EACA,QAAIrS,CAAC,GAAG,CAAR;;EACA,SAAK,IAAItM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7BsM,MAAAA,CAAC,GAAGwJ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmB6Y,IAAI,CAAC7Y,CAAD,CAA3B;EACAgZ,MAAAA,IAAI,IAAIpS,CAAR;EACAqS,MAAAA,IAAI,IAAIrS,CAAC,GAAGA,CAAZ;EACD;;EACD,QAAIgS,QAAJ,EAAc;EACZG,MAAAA,QAAQ,CAACziB,IAAT,CAAc,CAAC2iB,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBvI,IAAxB,KAAiCA,IAAI,GAAG,CAAxC,CAAd;EACD,KAFD,MAEO;EACLsI,MAAAA,QAAQ,CAACziB,IAAT,CAAc,CAAC2iB,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgBvI,IAAxB,IAAgCA,IAA9C;EACD;EACF;;EACD,SAAOsI,QAAP;EACD;EAEM,SAASI,WAAT,CAAqB/I,MAArB,EAA6BwI,QAA7B,EAAuCC,IAAvC,EAA6C;EAClD,QAAMpI,IAAI,GAAGL,MAAM,CAACK,IAApB;EACA,QAAMqI,IAAI,GAAG1I,MAAM,CAACM,OAApB;EACA,QAAMxW,IAAI,GAAGuW,IAAI,GAAGqI,IAApB;EAEA,MAAIE,IAAI,GAAG,CAAX;EACA,MAAIC,IAAI,GAAG,CAAX;EACA,MAAIrS,CAAC,GAAG,CAAR;;EACA,OAAK,IAAItM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Y,IAApB,EAA0B9Y,CAAC,EAA3B,EAA+B;EAC7B4G,MAAAA,CAAC,GAAGwJ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmB6Y,IAAvB;EACAG,MAAAA,IAAI,IAAIpS,CAAR;EACAqS,MAAAA,IAAI,IAAIrS,CAAC,GAAGA,CAAZ;EACD;EACF;;EACD,MAAIgS,QAAJ,EAAc;EACZ,WAAO,CAACK,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgB9e,IAAxB,KAAiCA,IAAI,GAAG,CAAxC,CAAP;EACD,GAFD,MAEO;EACL,WAAO,CAAC+e,IAAI,GAAID,IAAI,GAAGA,IAAR,GAAgB9e,IAAxB,IAAgCA,IAAvC;EACD;EACF;EAEM,SAASkf,WAAT,CAAqBhJ,MAArB,EAA6ByI,IAA7B,EAAmC;EACxC,OAAK,IAAIve,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCoQ,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmB6Y,IAAI,CAACve,CAAD,CAAxC;EACD;EACF;EACF;EAEM,SAAS+e,cAAT,CAAwBjJ,MAAxB,EAAgCyI,IAAhC,EAAsC;EAC3C,OAAK,IAAIve,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCoQ,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmB6Y,IAAI,CAAC7Y,CAAD,CAAxC;EACD;EACF;EACF;EAEM,SAASsZ,SAAT,CAAmBlJ,MAAnB,EAA2ByI,IAA3B,EAAiC;EACtC,OAAK,IAAIve,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCoQ,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmB6Y,IAApC;EACD;EACF;EACF;EAEM,SAASU,aAAT,CAAuBnJ,MAAvB,EAA+B;EACpC,QAAMoJ,KAAK,GAAG,EAAd;;EACA,OAAK,IAAIlf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,QAAI+d,GAAG,GAAG,CAAV;;EACA,SAAK,IAAIrY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCqY,MAAAA,GAAG,IAAIpX,IAAI,CAACyH,GAAL,CAAS0H,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAT,EAA2B,CAA3B,KAAiCoQ,MAAM,CAACM,OAAP,GAAiB,CAAlD,CAAP;EACD;;EACD8I,IAAAA,KAAK,CAACljB,IAAN,CAAW2K,IAAI,CAACkV,IAAL,CAAUkC,GAAV,CAAX;EACD;;EACD,SAAOmB,KAAP;EACD;EAEM,SAASC,UAAT,CAAoBrJ,MAApB,EAA4BoJ,KAA5B,EAAmC;EACxC,OAAK,IAAIlf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCoQ,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmBwZ,KAAK,CAAClf,CAAD,CAAzC;EACD;EACF;EACF;EAEM,SAASof,gBAAT,CAA0BtJ,MAA1B,EAAkC;EACvC,QAAMoJ,KAAK,GAAG,EAAd;;EACA,OAAK,IAAIxZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvC,QAAIqY,GAAG,GAAG,CAAV;;EACA,SAAK,IAAI/d,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC+d,MAAAA,GAAG,IAAIpX,IAAI,CAACyH,GAAL,CAAS0H,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAT,EAA2B,CAA3B,KAAiCoQ,MAAM,CAACK,IAAP,GAAc,CAA/C,CAAP;EACD;;EACD+I,IAAAA,KAAK,CAACljB,IAAN,CAAW2K,IAAI,CAACkV,IAAL,CAAUkC,GAAV,CAAX;EACD;;EACD,SAAOmB,KAAP;EACD;EAEM,SAASG,aAAT,CAAuBvJ,MAAvB,EAA+BoJ,KAA/B,EAAsC;EAC3C,OAAK,IAAIlf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCoQ,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmBwZ,KAAK,CAACxZ,CAAD,CAAzC;EACD;EACF;EACF;EAEM,SAAS4Z,WAAT,CAAqBxJ,MAArB,EAA6B;EAClC,QAAMyJ,OAAO,GAAGzJ,MAAM,CAAClW,IAAP,GAAc,CAA9B;EACA,MAAIme,GAAG,GAAG,CAAV;;EACA,OAAK,IAAIrY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvC,SAAK,IAAI1F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC+d,MAAAA,GAAG,IAAIpX,IAAI,CAACyH,GAAL,CAAS0H,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAT,EAA2B,CAA3B,IAAgC6Z,OAAvC;EACD;EACF;;EACD,SAAO5Y,IAAI,CAACkV,IAAL,CAAUkC,GAAV,CAAP;EACD;EAEM,SAASyB,QAAT,CAAkB1J,MAAlB,EAA0BoJ,KAA1B,EAAiC;EACtC,OAAK,IAAIlf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,SAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCoQ,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmBwZ,KAApC;EACD;EACF;EACF;;ECjLM,MAAMjI,cAAN,CAAqB;EACR,SAAXwI,WAAW,CAACC,OAAD,EAAUC,UAAV,EAAsBC,OAAtB,EAA+B;EAC/C,QAAIhkB,MAAM,GAAG8jB,OAAO,GAAGC,UAAvB;;EACA,QAAI/jB,MAAM,KAAKgkB,OAAO,CAAChkB,MAAvB,EAA+B;EAC7B,YAAM,IAAIyZ,UAAJ,CAAe,6CAAf,CAAN;EACD;;EACD,QAAImC,SAAS,GAAG,IAAIN,MAAJ,CAAWwI,OAAX,EAAoBC,UAApB,CAAhB;;EACA,SAAK,IAAItO,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGqO,OAAxB,EAAiCrO,GAAG,EAApC,EAAwC;EACtC,WAAK,IAAI0L,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG4C,UAA9B,EAA0C5C,MAAM,EAAhD,EAAoD;EAClDvF,QAAAA,SAAS,CAACF,GAAV,CAAcjG,GAAd,EAAmB0L,MAAnB,EAA2B6C,OAAO,CAACvO,GAAG,GAAGsO,UAAN,GAAmB5C,MAApB,CAAlC;EACD;EACF;;EACD,WAAOvF,SAAP;EACD;;EAEe,SAATqI,SAAS,CAACD,OAAD,EAAU;EACxB,QAAIpD,MAAM,GAAG,IAAItF,MAAJ,CAAW,CAAX,EAAc0I,OAAO,CAAChkB,MAAtB,CAAb;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4f,OAAO,CAAChkB,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvCwc,MAAAA,MAAM,CAAClF,GAAP,CAAW,CAAX,EAActX,CAAd,EAAiB4f,OAAO,CAAC5f,CAAD,CAAxB;EACD;;EACD,WAAOwc,MAAP;EACD;;EAEkB,SAAZsD,YAAY,CAACF,OAAD,EAAU;EAC3B,QAAIpD,MAAM,GAAG,IAAItF,MAAJ,CAAW0I,OAAO,CAAChkB,MAAnB,EAA2B,CAA3B,CAAb;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4f,OAAO,CAAChkB,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvCwc,MAAAA,MAAM,CAAClF,GAAP,CAAWtX,CAAX,EAAc,CAAd,EAAiB4f,OAAO,CAAC5f,CAAD,CAAxB;EACD;;EACD,WAAOwc,MAAP;EACD;;EAEW,SAALuD,KAAK,CAAC5J,IAAD,EAAOC,OAAP,EAAgB;EAC1B,WAAO,IAAIc,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAP;EACD;;EAEU,SAAJ4J,IAAI,CAAC7J,IAAD,EAAOC,OAAP,EAAgB;EACzB,WAAO,IAAIc,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,EAA0B6J,IAA1B,CAA+B,CAA/B,CAAP;EACD;;EAEU,SAAJC,IAAI,CAAC/J,IAAD,EAAOC,OAAP,EAA8B;EAAA,QAAdzO,OAAc,uEAAJ,EAAI;;EACvC,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAE+hB,MAAAA,MAAM,GAAGxZ,IAAI,CAACwZ;EAAhB,QAA2BxY,OAAjC;EACA,QAAImO,MAAM,GAAG,IAAIoB,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChCoQ,QAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBya,MAAM,EAAvB;EACD;EACF;;EACD,WAAOrK,MAAP;EACD;;EAEa,SAAPsK,OAAO,CAACjK,IAAD,EAAOC,OAAP,EAA8B;EAAA,QAAdzO,OAAc,uEAAJ,EAAI;;EAC1C,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAEsT,MAAAA,GAAG,GAAG,CAAR;EAAWE,MAAAA,GAAG,GAAG,IAAjB;EAAuBuO,MAAAA,MAAM,GAAGxZ,IAAI,CAACwZ;EAArC,QAAgDxY,OAAtD;EACA,QAAI,CAACnI,MAAM,CAACuV,SAAP,CAAiBrD,GAAjB,CAAL,EAA4B,MAAM,IAAItT,SAAJ,CAAc,wBAAd,CAAN;EAC5B,QAAI,CAACoB,MAAM,CAACuV,SAAP,CAAiBnD,GAAjB,CAAL,EAA4B,MAAM,IAAIxT,SAAJ,CAAc,wBAAd,CAAN;EAC5B,QAAIsT,GAAG,IAAIE,GAAX,EAAgB,MAAM,IAAIyD,UAAJ,CAAe,8BAAf,CAAN;EAChB,QAAIjO,QAAQ,GAAGwK,GAAG,GAAGF,GAArB;EACA,QAAIoE,MAAM,GAAG,IAAIoB,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChC,YAAI7J,KAAK,GAAG6V,GAAG,GAAG/K,IAAI,CAAC8U,KAAL,CAAW0E,MAAM,KAAK/Y,QAAtB,CAAlB;EACA0O,QAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiB7J,KAAjB;EACD;EACF;;EACD,WAAOia,MAAP;EACD;;EAES,SAAHuK,GAAG,CAAClK,IAAD,EAAOC,OAAP,EAAgBva,KAAhB,EAAuB;EAC/B,QAAIua,OAAO,KAAK3V,SAAhB,EAA2B2V,OAAO,GAAGD,IAAV;EAC3B,QAAIta,KAAK,KAAK4E,SAAd,EAAyB5E,KAAK,GAAG,CAAR;EACzB,QAAI6V,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAASyE,IAAT,EAAeC,OAAf,CAAV;EACA,QAAIN,MAAM,GAAG,KAAKiK,KAAL,CAAW5J,IAAX,EAAiBC,OAAjB,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0R,GAApB,EAAyB1R,CAAC,EAA1B,EAA8B;EAC5B8V,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAcA,CAAd,EAAiBnE,KAAjB;EACD;;EACD,WAAOia,MAAP;EACD;;EAEU,SAAJwK,IAAI,CAACxf,IAAD,EAAOqV,IAAP,EAAaC,OAAb,EAAsB;EAC/B,QAAImK,CAAC,GAAGzf,IAAI,CAAClF,MAAb;EACA,QAAIua,IAAI,KAAK1V,SAAb,EAAwB0V,IAAI,GAAGoK,CAAP;EACxB,QAAInK,OAAO,KAAK3V,SAAhB,EAA2B2V,OAAO,GAAGD,IAAV;EAC3B,QAAIzE,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAAS6O,CAAT,EAAYpK,IAAZ,EAAkBC,OAAlB,CAAV;EACA,QAAIN,MAAM,GAAG,KAAKiK,KAAL,CAAW5J,IAAX,EAAiBC,OAAjB,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0R,GAApB,EAAyB1R,CAAC,EAA1B,EAA8B;EAC5B8V,MAAAA,MAAM,CAACwB,GAAP,CAAWtX,CAAX,EAAcA,CAAd,EAAiBc,IAAI,CAACd,CAAD,CAArB;EACD;;EACD,WAAO8V,MAAP;EACD;;EAES,SAAHpE,GAAG,CAAC8O,OAAD,EAAUC,OAAV,EAAmB;EAC3BD,IAAAA,OAAO,GAAG,KAAKjJ,WAAL,CAAiBiJ,OAAjB,CAAV;EACAC,IAAAA,OAAO,GAAG,KAAKlJ,WAAL,CAAiBkJ,OAAjB,CAAV;EACA,QAAItK,IAAI,GAAGqK,OAAO,CAACrK,IAAnB;EACA,QAAIC,OAAO,GAAGoK,OAAO,CAACpK,OAAtB;EACA,QAAI/S,MAAM,GAAG,IAAI6T,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChCrC,QAAAA,MAAM,CAACiU,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBiB,IAAI,CAAC+K,GAAL,CAAS8O,OAAO,CAAC/J,GAAR,CAAYzW,CAAZ,EAAe0F,CAAf,CAAT,EAA4B+a,OAAO,CAAChK,GAAR,CAAYzW,CAAZ,EAAe0F,CAAf,CAA5B,CAAjB;EACD;EACF;;EACD,WAAOrC,MAAP;EACD;;EAES,SAAHuO,GAAG,CAAC4O,OAAD,EAAUC,OAAV,EAAmB;EAC3BD,IAAAA,OAAO,GAAG,KAAKjJ,WAAL,CAAiBiJ,OAAjB,CAAV;EACAC,IAAAA,OAAO,GAAG,KAAKlJ,WAAL,CAAiBkJ,OAAjB,CAAV;EACA,QAAItK,IAAI,GAAGqK,OAAO,CAACrK,IAAnB;EACA,QAAIC,OAAO,GAAGoK,OAAO,CAACpK,OAAtB;EACA,QAAI/S,MAAM,GAAG,IAAI,IAAJ,CAAS8S,IAAT,EAAeC,OAAf,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChCrC,QAAAA,MAAM,CAACiU,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBiB,IAAI,CAACiL,GAAL,CAAS4O,OAAO,CAAC/J,GAAR,CAAYzW,CAAZ,EAAe0F,CAAf,CAAT,EAA4B+a,OAAO,CAAChK,GAAR,CAAYzW,CAAZ,EAAe0F,CAAf,CAA5B,CAAjB;EACD;EACF;;EACD,WAAOrC,MAAP;EACD;;EAEiB,SAAXkU,WAAW,CAAC1b,KAAD,EAAQ;EACxB,WAAOob,cAAc,CAACyJ,QAAf,CAAwB7kB,KAAxB,IAAiCA,KAAjC,GAAyC,IAAIqb,MAAJ,CAAWrb,KAAX,CAAhD;EACD;;EAEc,SAAR6kB,QAAQ,CAAC7kB,KAAD,EAAQ;EACrB,WAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAAC8kB,KAAN,KAAgB,QAAxC;EACD;;EAEO,MAAJ/gB,IAAI,GAAG;EACT,WAAO,KAAKuW,IAAL,GAAY,KAAKC,OAAxB;EACD;;EAEDwK,EAAAA,KAAK,CAACC,QAAD,EAAW;EACd,QAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;EAClC,YAAM,IAAIziB,SAAJ,CAAc,6BAAd,CAAN;EACD;;EACD,SAAK,IAAI4B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrCmb,QAAAA,QAAQ,CAAC/b,IAAT,CAAc,IAAd,EAAoB9E,CAApB,EAAuB0F,CAAvB;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED+W,EAAAA,SAAS,GAAG;EACV,QAAIvgB,KAAK,GAAG,EAAZ;;EACA,SAAK,IAAI8D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrCxJ,QAAAA,KAAK,CAACF,IAAN,CAAW,KAAKya,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAX;EACD;EACF;;EACD,WAAOxJ,KAAP;EACD;;EAED4kB,EAAAA,SAAS,GAAG;EACV,QAAIC,IAAI,GAAG,EAAX;;EACA,SAAK,IAAI/gB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC+gB,MAAAA,IAAI,CAAC/kB,IAAL,CAAU,EAAV;;EACA,WAAK,IAAI0J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrCqb,QAAAA,IAAI,CAAC/gB,CAAD,CAAJ,CAAQhE,IAAR,CAAa,KAAKya,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAb;EACD;EACF;;EACD,WAAOqb,IAAP;EACD;;EAEDC,EAAAA,MAAM,GAAG;EACP,WAAO,KAAKF,SAAL,EAAP;EACD;;EAEDG,EAAAA,WAAW,GAAG;EACZ,WAAO,KAAK9K,IAAL,KAAc,CAArB;EACD;;EAED+K,EAAAA,cAAc,GAAG;EACf,WAAO,KAAK9K,OAAL,KAAiB,CAAxB;EACD;;EAED+K,EAAAA,QAAQ,GAAG;EACT,WAAO,KAAKhL,IAAL,KAAc,CAAd,IAAmB,KAAKC,OAAL,KAAiB,CAA3C;EACD;;EAEDgL,EAAAA,QAAQ,GAAG;EACT,WAAO,KAAKjL,IAAL,KAAc,KAAKC,OAA1B;EACD;;EAEDyH,EAAAA,OAAO,GAAG;EACR,WAAO,KAAK1H,IAAL,KAAc,CAAd,IAAmB,KAAKC,OAAL,KAAiB,CAA3C;EACD;;EAEDiL,EAAAA,WAAW,GAAG;EACZ,QAAI,KAAKD,QAAL,EAAJ,EAAqB;EACnB,WAAK,IAAIphB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,aAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI1F,CAArB,EAAwB0F,CAAC,EAAzB,EAA6B;EAC3B,cAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmB,KAAK+Q,GAAL,CAAS/Q,CAAT,EAAY1F,CAAZ,CAAvB,EAAuC;EACrC,mBAAO,KAAP;EACD;EACF;EACF;;EACD,aAAO,IAAP;EACD;;EACD,WAAO,KAAP;EACD;;EAEDshB,EAAAA,aAAa,GAAG;EACd,QAAIthB,CAAC,GAAG,CAAR;EACA,QAAI0F,CAAC,GAAG,CAAR;EACA,QAAI6b,cAAc,GAAG,CAAC,CAAtB;EACA,QAAID,aAAa,GAAG,IAApB;EACA,QAAIE,OAAO,GAAG,KAAd;;EACA,WAAOxhB,CAAC,GAAG,KAAKmW,IAAT,IAAiBmL,aAAxB,EAAuC;EACrC5b,MAAAA,CAAC,GAAG,CAAJ;EACA8b,MAAAA,OAAO,GAAG,KAAV;;EACA,aAAO9b,CAAC,GAAG,KAAK0Q,OAAT,IAAoBoL,OAAO,KAAK,KAAvC,EAA8C;EAC5C,YAAI,KAAK/K,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmB,CAAvB,EAA0B;EACxBA,UAAAA,CAAC;EACF,SAFD,MAEO,IAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmB,CAAnB,IAAwBA,CAAC,GAAG6b,cAAhC,EAAgD;EACrDC,UAAAA,OAAO,GAAG,IAAV;EACAD,UAAAA,cAAc,GAAG7b,CAAjB;EACD,SAHM,MAGA;EACL4b,UAAAA,aAAa,GAAG,KAAhB;EACAE,UAAAA,OAAO,GAAG,IAAV;EACD;EACF;;EACDxhB,MAAAA,CAAC;EACF;;EACD,WAAOshB,aAAP;EACD;;EAEDG,EAAAA,oBAAoB,GAAG;EACrB,QAAIzhB,CAAC,GAAG,CAAR;EACA,QAAI0F,CAAC,GAAG,CAAR;EACA,QAAI6b,cAAc,GAAG,CAAC,CAAtB;EACA,QAAIE,oBAAoB,GAAG,IAA3B;EACA,QAAID,OAAO,GAAG,KAAd;;EACA,WAAOxhB,CAAC,GAAG,KAAKmW,IAAT,IAAiBsL,oBAAxB,EAA8C;EAC5C/b,MAAAA,CAAC,GAAG,CAAJ;EACA8b,MAAAA,OAAO,GAAG,KAAV;;EACA,aAAO9b,CAAC,GAAG,KAAK0Q,OAAT,IAAoBoL,OAAO,KAAK,KAAvC,EAA8C;EAC5C,YAAI,KAAK/K,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmB,CAAvB,EAA0B;EACxBA,UAAAA,CAAC;EACF,SAFD,MAEO,IAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,MAAmB,CAAnB,IAAwBA,CAAC,GAAG6b,cAAhC,EAAgD;EACrDC,UAAAA,OAAO,GAAG,IAAV;EACAD,UAAAA,cAAc,GAAG7b,CAAjB;EACD,SAHM,MAGA;EACL+b,UAAAA,oBAAoB,GAAG,KAAvB;EACAD,UAAAA,OAAO,GAAG,IAAV;EACD;EACF;;EACD,WAAK,IAAIE,CAAC,GAAGhc,CAAC,GAAG,CAAjB,EAAoBgc,CAAC,GAAG,KAAKvL,IAA7B,EAAmCuL,CAAC,EAApC,EAAwC;EACtC,YAAI,KAAKjL,GAAL,CAASzW,CAAT,EAAY0hB,CAAZ,MAAmB,CAAvB,EAA0B;EACxBD,UAAAA,oBAAoB,GAAG,KAAvB;EACD;EACF;;EACDzhB,MAAAA,CAAC;EACF;;EACD,WAAOyhB,oBAAP;EACD;;EAEDE,EAAAA,WAAW,GAAG;EACZ,QAAIte,MAAM,GAAG,KAAKue,KAAL,EAAb;EACA,QAAI1R,CAAC,GAAG,CAAR;EACA,QAAIwR,CAAC,GAAG,CAAR;;EACA,WAAOxR,CAAC,GAAG7M,MAAM,CAAC8S,IAAX,IAAmBuL,CAAC,GAAGre,MAAM,CAAC+S,OAArC,EAA8C;EAC5C,UAAIyL,IAAI,GAAG3R,CAAX;;EACA,WAAK,IAAIlQ,CAAC,GAAGkQ,CAAb,EAAgBlQ,CAAC,GAAGqD,MAAM,CAAC8S,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,YAAIqD,MAAM,CAACoT,GAAP,CAAWzW,CAAX,EAAc0hB,CAAd,IAAmBre,MAAM,CAACoT,GAAP,CAAWoL,IAAX,EAAiBH,CAAjB,CAAvB,EAA4C;EAC1CG,UAAAA,IAAI,GAAG7hB,CAAP;EACD;EACF;;EACD,UAAIqD,MAAM,CAACoT,GAAP,CAAWoL,IAAX,EAAiBH,CAAjB,MAAwB,CAA5B,EAA+B;EAC7BA,QAAAA,CAAC;EACF,OAFD,MAEO;EACLre,QAAAA,MAAM,CAACye,QAAP,CAAgB5R,CAAhB,EAAmB2R,IAAnB;EACA,YAAIlkB,GAAG,GAAG0F,MAAM,CAACoT,GAAP,CAAWvG,CAAX,EAAcwR,CAAd,CAAV;;EACA,aAAK,IAAIhc,CAAC,GAAGgc,CAAb,EAAgBhc,CAAC,GAAGrC,MAAM,CAAC+S,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvCrC,UAAAA,MAAM,CAACiU,GAAP,CAAWpH,CAAX,EAAcxK,CAAd,EAAiBrC,MAAM,CAACoT,GAAP,CAAWvG,CAAX,EAAcxK,CAAd,IAAmB/H,GAApC;EACD;;EACD,aAAK,IAAIqC,CAAC,GAAGkQ,CAAC,GAAG,CAAjB,EAAoBlQ,CAAC,GAAGqD,MAAM,CAAC8S,IAA/B,EAAqCnW,CAAC,EAAtC,EAA0C;EACxC,cAAI6T,MAAM,GAAGxQ,MAAM,CAACoT,GAAP,CAAWzW,CAAX,EAAc0hB,CAAd,IAAmBre,MAAM,CAACoT,GAAP,CAAWvG,CAAX,EAAcwR,CAAd,CAAhC;EACAre,UAAAA,MAAM,CAACiU,GAAP,CAAWtX,CAAX,EAAc0hB,CAAd,EAAiB,CAAjB;;EACA,eAAK,IAAIhc,CAAC,GAAGgc,CAAC,GAAG,CAAjB,EAAoBhc,CAAC,GAAGrC,MAAM,CAAC+S,OAA/B,EAAwC1Q,CAAC,EAAzC,EAA6C;EAC3CrC,YAAAA,MAAM,CAACiU,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBrC,MAAM,CAACoT,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmBrC,MAAM,CAACoT,GAAP,CAAWvG,CAAX,EAAcxK,CAAd,IAAmBmO,MAAvD;EACD;EACF;;EACD3D,QAAAA,CAAC;EACDwR,QAAAA,CAAC;EACF;EACF;;EACD,WAAOre,MAAP;EACD;;EAED0e,EAAAA,kBAAkB,GAAG;EACnB,QAAI1e,MAAM,GAAG,KAAKse,WAAL,EAAb;EACA,QAAIK,CAAC,GAAG3e,MAAM,CAAC+S,OAAf;EACA,QAAI6L,CAAC,GAAG5e,MAAM,CAAC8S,IAAf;EACA,QAAIjG,CAAC,GAAG+R,CAAC,GAAG,CAAZ;;EACA,WAAO/R,CAAC,IAAI,CAAZ,EAAe;EACb,UAAI7M,MAAM,CAAC6e,MAAP,CAAchS,CAAd,MAAqB,CAAzB,EAA4B;EAC1BA,QAAAA,CAAC;EACF,OAFD,MAEO;EACL,YAAIiS,CAAC,GAAG,CAAR;EACA,YAAIC,KAAK,GAAG,KAAZ;;EACA,eAAOD,CAAC,GAAGF,CAAJ,IAASG,KAAK,KAAK,KAA1B,EAAiC;EAC/B,cAAI/e,MAAM,CAACoT,GAAP,CAAWvG,CAAX,EAAciS,CAAd,MAAqB,CAAzB,EAA4B;EAC1BC,YAAAA,KAAK,GAAG,IAAR;EACD,WAFD,MAEO;EACLD,YAAAA,CAAC;EACF;EACF;;EACD,aAAK,IAAIniB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkQ,CAApB,EAAuBlQ,CAAC,EAAxB,EAA4B;EAC1B,cAAI6T,MAAM,GAAGxQ,MAAM,CAACoT,GAAP,CAAWzW,CAAX,EAAcmiB,CAAd,CAAb;;EACA,eAAK,IAAIzc,CAAC,GAAGyc,CAAb,EAAgBzc,CAAC,GAAGsc,CAApB,EAAuBtc,CAAC,EAAxB,EAA4B;EAC1B,gBAAI/H,GAAG,GAAG0F,MAAM,CAACoT,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,IAAmBmO,MAAM,GAAGxQ,MAAM,CAACoT,GAAP,CAAWvG,CAAX,EAAcxK,CAAd,CAAtC;EACArC,YAAAA,MAAM,CAACiU,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiB/H,GAAjB;EACD;EACF;;EACDuS,QAAAA,CAAC;EACF;EACF;;EACD,WAAO7M,MAAP;EACD;;EAEDiU,EAAAA,GAAG,GAAG;EACJ,UAAM,IAAIhb,KAAJ,CAAU,6BAAV,CAAN;EACD;;EAEDma,EAAAA,GAAG,GAAG;EACJ,UAAM,IAAIna,KAAJ,CAAU,6BAAV,CAAN;EACD;;EAEDoZ,EAAAA,MAAM,GAAe;EAAA,QAAd/N,OAAc,uEAAJ,EAAI;;EACnB,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAE+X,MAAAA,IAAI,GAAG,CAAT;EAAYC,MAAAA,OAAO,GAAG;EAAtB,QAA4BzO,OAAlC;;EACA,QAAI,CAACnI,MAAM,CAACuV,SAAP,CAAiBoB,IAAjB,CAAD,IAA2BA,IAAI,IAAI,CAAvC,EAA0C;EACxC,YAAM,IAAI/X,SAAJ,CAAc,iCAAd,CAAN;EACD;;EACD,QAAI,CAACoB,MAAM,CAACuV,SAAP,CAAiBqB,OAAjB,CAAD,IAA8BA,OAAO,IAAI,CAA7C,EAAgD;EAC9C,YAAM,IAAIhY,SAAJ,CAAc,oCAAd,CAAN;EACD;;EACD,QAAI0X,MAAM,GAAG,IAAIoB,MAAJ,CAAW,KAAKf,IAAL,GAAYA,IAAvB,EAA6B,KAAKC,OAAL,GAAeA,OAA5C,CAAb;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChCoQ,QAAAA,MAAM,CAACuM,YAAP,CAAoB,IAApB,EAA0B,KAAKlM,IAAL,GAAYnW,CAAtC,EAAyC,KAAKoW,OAAL,GAAe1Q,CAAxD;EACD;EACF;;EACD,WAAOoQ,MAAP;EACD;;EAEDmK,EAAAA,IAAI,CAACpkB,KAAD,EAAQ;EACV,SAAK,IAAImE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe7J,KAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEDymB,EAAAA,GAAG,GAAG;EACJ,WAAO,KAAKtK,IAAL,CAAU,CAAC,CAAX,CAAP;EACD;;EAEDuK,EAAAA,MAAM,CAACpmB,KAAD,EAAQ;EACZigB,IAAAA,aAAa,CAAC,IAAD,EAAOjgB,KAAP,CAAb;EACA,QAAIkV,GAAG,GAAG,EAAV;;EACA,SAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrCqR,MAAAA,GAAG,CAACrV,IAAJ,CAAS,KAAKya,GAAL,CAASta,KAAT,EAAgB6D,CAAhB,CAAT;EACD;;EACD,WAAOqR,GAAP;EACD;;EAEDmR,EAAAA,YAAY,CAACrmB,KAAD,EAAQ;EAClB,WAAO+a,MAAM,CAAC2I,SAAP,CAAiB,KAAK0C,MAAL,CAAYpmB,KAAZ,CAAjB,CAAP;EACD;;EAEDsmB,EAAAA,MAAM,CAACtmB,KAAD,EAAQD,KAAR,EAAe;EACnBkgB,IAAAA,aAAa,CAAC,IAAD,EAAOjgB,KAAP,CAAb;EACAD,IAAAA,KAAK,GAAGqgB,cAAc,CAAC,IAAD,EAAOrgB,KAAP,CAAtB;;EACA,SAAK,IAAI8D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,WAAKsX,GAAL,CAASnb,KAAT,EAAgB6D,CAAhB,EAAmB9D,KAAK,CAAC8D,CAAD,CAAxB;EACD;;EACD,WAAO,IAAP;EACD;;EAED8hB,EAAAA,QAAQ,CAACY,IAAD,EAAOC,IAAP,EAAa;EACnBvG,IAAAA,aAAa,CAAC,IAAD,EAAOsG,IAAP,CAAb;EACAtG,IAAAA,aAAa,CAAC,IAAD,EAAOuG,IAAP,CAAb;;EACA,SAAK,IAAI3iB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,UAAI4iB,IAAI,GAAG,KAAKnM,GAAL,CAASiM,IAAT,EAAe1iB,CAAf,CAAX;EACA,WAAKsX,GAAL,CAASoL,IAAT,EAAe1iB,CAAf,EAAkB,KAAKyW,GAAL,CAASkM,IAAT,EAAe3iB,CAAf,CAAlB;EACA,WAAKsX,GAAL,CAASqL,IAAT,EAAe3iB,CAAf,EAAkB4iB,IAAlB;EACD;;EACD,WAAO,IAAP;EACD;;EAEDC,EAAAA,SAAS,CAAC1mB,KAAD,EAAQ;EACfmgB,IAAAA,gBAAgB,CAAC,IAAD,EAAOngB,KAAP,CAAhB;EACA,QAAI4gB,MAAM,GAAG,EAAb;;EACA,SAAK,IAAI/c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC+c,MAAAA,MAAM,CAAC/gB,IAAP,CAAY,KAAKya,GAAL,CAASzW,CAAT,EAAY7D,KAAZ,CAAZ;EACD;;EACD,WAAO4gB,MAAP;EACD;;EAED+F,EAAAA,eAAe,CAAC3mB,KAAD,EAAQ;EACrB,WAAO+a,MAAM,CAAC4I,YAAP,CAAoB,KAAK+C,SAAL,CAAe1mB,KAAf,CAApB,CAAP;EACD;;EAED4mB,EAAAA,SAAS,CAAC5mB,KAAD,EAAQD,KAAR,EAAe;EACtBogB,IAAAA,gBAAgB,CAAC,IAAD,EAAOngB,KAAP,CAAhB;EACAD,IAAAA,KAAK,GAAGwgB,iBAAiB,CAAC,IAAD,EAAOxgB,KAAP,CAAzB;;EACA,SAAK,IAAI8D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAKsX,GAAL,CAAStX,CAAT,EAAY7D,KAAZ,EAAmBD,KAAK,CAAC8D,CAAD,CAAxB;EACD;;EACD,WAAO,IAAP;EACD;;EAEDgjB,EAAAA,WAAW,CAACC,OAAD,EAAUC,OAAV,EAAmB;EAC5B5G,IAAAA,gBAAgB,CAAC,IAAD,EAAO2G,OAAP,CAAhB;EACA3G,IAAAA,gBAAgB,CAAC,IAAD,EAAO4G,OAAP,CAAhB;;EACA,SAAK,IAAIljB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,UAAI4iB,IAAI,GAAG,KAAKnM,GAAL,CAASzW,CAAT,EAAYijB,OAAZ,CAAX;EACA,WAAK3L,GAAL,CAAStX,CAAT,EAAYijB,OAAZ,EAAqB,KAAKxM,GAAL,CAASzW,CAAT,EAAYkjB,OAAZ,CAArB;EACA,WAAK5L,GAAL,CAAStX,CAAT,EAAYkjB,OAAZ,EAAqBN,IAArB;EACD;;EACD,WAAO,IAAP;EACD;;EAEDO,EAAAA,YAAY,CAAC3G,MAAD,EAAS;EACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAAC9W,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED0d,EAAAA,YAAY,CAAC5G,MAAD,EAAS;EACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAAC9W,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED2d,EAAAA,YAAY,CAAC7G,MAAD,EAAS;EACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAAC9W,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED4d,EAAAA,YAAY,CAAC9G,MAAD,EAAS;EACnBA,IAAAA,MAAM,GAAGD,cAAc,CAAC,IAAD,EAAOC,MAAP,CAAvB;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAAC9W,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED6d,EAAAA,eAAe,CAAC/G,MAAD,EAAS;EACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAACxc,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEDwjB,EAAAA,eAAe,CAAChH,MAAD,EAAS;EACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAACxc,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEDyjB,EAAAA,eAAe,CAACjH,MAAD,EAAS;EACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAACxc,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED0jB,EAAAA,eAAe,CAAClH,MAAD,EAAS;EACtBA,IAAAA,MAAM,GAAGE,iBAAiB,CAAC,IAAD,EAAOF,MAAP,CAA1B;;EACA,SAAK,IAAIxc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAe,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB8W,MAAM,CAACxc,CAAD,CAAtC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED2jB,EAAAA,MAAM,CAACxnB,KAAD,EAAQN,KAAR,EAAe;EACnBugB,IAAAA,aAAa,CAAC,IAAD,EAAOjgB,KAAP,CAAb;;EACA,SAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,WAAKsX,GAAL,CAASnb,KAAT,EAAgB6D,CAAhB,EAAmB,KAAKyW,GAAL,CAASta,KAAT,EAAgB6D,CAAhB,IAAqBnE,KAAxC;EACD;;EACD,WAAO,IAAP;EACD;;EAED+nB,EAAAA,SAAS,CAACznB,KAAD,EAAQN,KAAR,EAAe;EACtBygB,IAAAA,gBAAgB,CAAC,IAAD,EAAOngB,KAAP,CAAhB;;EACA,SAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAKsX,GAAL,CAAStX,CAAT,EAAY7D,KAAZ,EAAmB,KAAKsa,GAAL,CAASzW,CAAT,EAAY7D,KAAZ,IAAqBN,KAAxC;EACD;;EACD,WAAO,IAAP;EACD;;EAED+V,EAAAA,GAAG,GAAG;EACJ,QAAI,KAAKiM,OAAL,EAAJ,EAAoB;EAClB,aAAOgG,GAAP;EACD;;EACD,QAAI7gB,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAR;;EACA,SAAK,IAAIzW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,YAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB1C,CAArB,EAAwB;EACtBA,UAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAJ;EACD;EACF;EACF;;EACD,WAAO1C,CAAP;EACD;;EAED8gB,EAAAA,QAAQ,GAAG;EACTlG,IAAAA,aAAa,CAAC,IAAD,CAAb;EACA,QAAI5a,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAR;EACA,QAAIsN,GAAG,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAV;;EACA,SAAK,IAAI/jB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,YAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB1C,CAArB,EAAwB;EACtBA,UAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAJ;EACAqe,UAAAA,GAAG,CAAC,CAAD,CAAH,GAAS/jB,CAAT;EACA+jB,UAAAA,GAAG,CAAC,CAAD,CAAH,GAASre,CAAT;EACD;EACF;EACF;;EACD,WAAOqe,GAAP;EACD;;EAEDrS,EAAAA,GAAG,GAAG;EACJ,QAAI,KAAKmM,OAAL,EAAJ,EAAoB;EAClB,aAAOgG,GAAP;EACD;;EACD,QAAI7gB,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAR;;EACA,SAAK,IAAIzW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,YAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB1C,CAArB,EAAwB;EACtBA,UAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAJ;EACD;EACF;EACF;;EACD,WAAO1C,CAAP;EACD;;EAEDghB,EAAAA,QAAQ,GAAG;EACTpG,IAAAA,aAAa,CAAC,IAAD,CAAb;EACA,QAAI5a,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAR;EACA,QAAIsN,GAAG,GAAG,CAAC,CAAD,EAAI,CAAJ,CAAV;;EACA,SAAK,IAAI/jB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,YAAI,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB1C,CAArB,EAAwB;EACtBA,UAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAJ;EACAqe,UAAAA,GAAG,CAAC,CAAD,CAAH,GAAS/jB,CAAT;EACA+jB,UAAAA,GAAG,CAAC,CAAD,CAAH,GAASre,CAAT;EACD;EACF;EACF;;EACD,WAAOqe,GAAP;EACD;;EAED7B,EAAAA,MAAM,CAAC7Q,GAAD,EAAM;EACV+K,IAAAA,aAAa,CAAC,IAAD,EAAO/K,GAAP,CAAb;;EACA,QAAI,KAAKwM,OAAL,EAAJ,EAAoB;EAClB,aAAOgG,GAAP;EACD;;EACD,QAAI7gB,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAc,CAAd,CAAR;;EACA,SAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,UAAI,KAAKyW,GAAL,CAASpF,GAAT,EAAcrR,CAAd,IAAmBgD,CAAvB,EAA0B;EACxBA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAcrR,CAAd,CAAJ;EACD;EACF;;EACD,WAAOgD,CAAP;EACD;;EAEDihB,EAAAA,WAAW,CAAC5S,GAAD,EAAM;EACf+K,IAAAA,aAAa,CAAC,IAAD,EAAO/K,GAAP,CAAb;EACAuM,IAAAA,aAAa,CAAC,IAAD,CAAb;EACA,QAAI5a,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAc,CAAd,CAAR;EACA,QAAI0S,GAAG,GAAG,CAAC1S,GAAD,EAAM,CAAN,CAAV;;EACA,SAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,UAAI,KAAKyW,GAAL,CAASpF,GAAT,EAAcrR,CAAd,IAAmBgD,CAAvB,EAA0B;EACxBA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAcrR,CAAd,CAAJ;EACA+jB,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS/jB,CAAT;EACD;EACF;;EACD,WAAO+jB,GAAP;EACD;;EAEDG,EAAAA,MAAM,CAAC7S,GAAD,EAAM;EACV+K,IAAAA,aAAa,CAAC,IAAD,EAAO/K,GAAP,CAAb;;EACA,QAAI,KAAKwM,OAAL,EAAJ,EAAoB;EAClB,aAAOgG,GAAP;EACD;;EACD,QAAI7gB,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAc,CAAd,CAAR;;EACA,SAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,UAAI,KAAKyW,GAAL,CAASpF,GAAT,EAAcrR,CAAd,IAAmBgD,CAAvB,EAA0B;EACxBA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAcrR,CAAd,CAAJ;EACD;EACF;;EACD,WAAOgD,CAAP;EACD;;EAEDmhB,EAAAA,WAAW,CAAC9S,GAAD,EAAM;EACf+K,IAAAA,aAAa,CAAC,IAAD,EAAO/K,GAAP,CAAb;EACAuM,IAAAA,aAAa,CAAC,IAAD,CAAb;EACA,QAAI5a,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAc,CAAd,CAAR;EACA,QAAI0S,GAAG,GAAG,CAAC1S,GAAD,EAAM,CAAN,CAAV;;EACA,SAAK,IAAIrR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,UAAI,KAAKyW,GAAL,CAASpF,GAAT,EAAcrR,CAAd,IAAmBgD,CAAvB,EAA0B;EACxBA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASpF,GAAT,EAAcrR,CAAd,CAAJ;EACA+jB,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS/jB,CAAT;EACD;EACF;;EACD,WAAO+jB,GAAP;EACD;;EAEDK,EAAAA,SAAS,CAACrH,MAAD,EAAS;EAChBT,IAAAA,gBAAgB,CAAC,IAAD,EAAOS,MAAP,CAAhB;;EACA,QAAI,KAAKc,OAAL,EAAJ,EAAoB;EAClB,aAAOgG,GAAP;EACD;;EACD,QAAI7gB,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAYsG,MAAZ,CAAR;;EACA,SAAK,IAAI/c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,UAAI,KAAKyW,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,IAAsB/Z,CAA1B,EAA6B;EAC3BA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,CAAJ;EACD;EACF;;EACD,WAAO/Z,CAAP;EACD;;EAEDqhB,EAAAA,cAAc,CAACtH,MAAD,EAAS;EACrBT,IAAAA,gBAAgB,CAAC,IAAD,EAAOS,MAAP,CAAhB;EACAa,IAAAA,aAAa,CAAC,IAAD,CAAb;EACA,QAAI5a,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAYsG,MAAZ,CAAR;EACA,QAAIgH,GAAG,GAAG,CAAC,CAAD,EAAIhH,MAAJ,CAAV;;EACA,SAAK,IAAI/c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,UAAI,KAAKyW,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,IAAsB/Z,CAA1B,EAA6B;EAC3BA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,CAAJ;EACAgH,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS/jB,CAAT;EACD;EACF;;EACD,WAAO+jB,GAAP;EACD;;EAEDO,EAAAA,SAAS,CAACvH,MAAD,EAAS;EAChBT,IAAAA,gBAAgB,CAAC,IAAD,EAAOS,MAAP,CAAhB;;EACA,QAAI,KAAKc,OAAL,EAAJ,EAAoB;EAClB,aAAOgG,GAAP;EACD;;EACD,QAAI7gB,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAYsG,MAAZ,CAAR;;EACA,SAAK,IAAI/c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,UAAI,KAAKyW,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,IAAsB/Z,CAA1B,EAA6B;EAC3BA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,CAAJ;EACD;EACF;;EACD,WAAO/Z,CAAP;EACD;;EAEDuhB,EAAAA,cAAc,CAACxH,MAAD,EAAS;EACrBT,IAAAA,gBAAgB,CAAC,IAAD,EAAOS,MAAP,CAAhB;EACAa,IAAAA,aAAa,CAAC,IAAD,CAAb;EACA,QAAI5a,CAAC,GAAG,KAAKyT,GAAL,CAAS,CAAT,EAAYsG,MAAZ,CAAR;EACA,QAAIgH,GAAG,GAAG,CAAC,CAAD,EAAIhH,MAAJ,CAAV;;EACA,SAAK,IAAI/c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,UAAI,KAAKyW,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,IAAsB/Z,CAA1B,EAA6B;EAC3BA,QAAAA,CAAC,GAAG,KAAKyT,GAAL,CAASzW,CAAT,EAAY+c,MAAZ,CAAJ;EACAgH,QAAAA,GAAG,CAAC,CAAD,CAAH,GAAS/jB,CAAT;EACD;EACF;;EACD,WAAO+jB,GAAP;EACD;;EAEDzD,EAAAA,IAAI,GAAG;EACL,QAAI5O,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAAS,KAAKyE,IAAd,EAAoB,KAAKC,OAAzB,CAAV;EACA,QAAIkK,IAAI,GAAG,EAAX;;EACA,SAAK,IAAItgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0R,GAApB,EAAyB1R,CAAC,EAA1B,EAA8B;EAC5BsgB,MAAAA,IAAI,CAACtkB,IAAL,CAAU,KAAKya,GAAL,CAASzW,CAAT,EAAYA,CAAZ,CAAV;EACD;;EACD,WAAOsgB,IAAP;EACD;;EAEDkE,EAAAA,IAAI,GAAqB;EAAA,QAApBjlB,IAAoB,uEAAb,WAAa;EACvB,QAAI8D,MAAM,GAAG,CAAb;;EACA,QAAI9D,IAAI,KAAK,KAAb,EAAoB;EAClB,aAAO,KAAKqS,GAAL,EAAP;EACD,KAFD,MAEO,IAAIrS,IAAI,KAAK,WAAb,EAA0B;EAC/B,WAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,aAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrCrC,UAAAA,MAAM,GAAGA,MAAM,GAAG,KAAKoT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiB,KAAK+Q,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAnC;EACD;EACF;;EACD,aAAOiB,IAAI,CAACkV,IAAL,CAAUxY,MAAV,CAAP;EACD,KAPM,MAOA;EACL,YAAM,IAAIgS,UAAJ,CAAgB,sBAAqB9V,IAAK,EAA1C,CAAN;EACD;EACF;;EAEDklB,EAAAA,aAAa,GAAG;EACd,QAAI1G,GAAG,GAAG,CAAV;;EACA,SAAK,IAAI/d,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrCqY,QAAAA,GAAG,IAAI,KAAKtH,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAP;EACA,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAeqY,GAAf;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAED2G,EAAAA,GAAG,CAACC,OAAD,EAAU;EACX,QAAI1N,cAAc,CAACyJ,QAAf,CAAwBiE,OAAxB,CAAJ,EAAsCA,OAAO,GAAGA,OAAO,CAAClI,SAAR,EAAV;EACtC,QAAImI,OAAO,GAAG,KAAKnI,SAAL,EAAd;;EACA,QAAImI,OAAO,CAAChpB,MAAR,KAAmB+oB,OAAO,CAAC/oB,MAA/B,EAAuC;EACrC,YAAM,IAAIyZ,UAAJ,CAAe,mCAAf,CAAN;EACD;;EACD,QAAIqP,GAAG,GAAG,CAAV;;EACA,SAAK,IAAI1kB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4kB,OAAO,CAAChpB,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC0kB,MAAAA,GAAG,IAAIE,OAAO,CAAC5kB,CAAD,CAAP,GAAa2kB,OAAO,CAAC3kB,CAAD,CAA3B;EACD;;EACD,WAAO0kB,GAAP;EACD;;EAEDG,EAAAA,IAAI,CAACC,KAAD,EAAQ;EACVA,IAAAA,KAAK,GAAG5N,MAAM,CAACK,WAAP,CAAmBuN,KAAnB,CAAR;EAEA,QAAI9C,CAAC,GAAG,KAAK7L,IAAb;EACA,QAAI8L,CAAC,GAAG,KAAK7L,OAAb;EACA,QAAI+L,CAAC,GAAG2C,KAAK,CAAC1O,OAAd;EAEA,QAAI/S,MAAM,GAAG,IAAI6T,MAAJ,CAAW8K,CAAX,EAAcG,CAAd,CAAb;EAEA,QAAI4C,KAAK,GAAG,IAAIzT,YAAJ,CAAiB2Q,CAAjB,CAAZ;;EACA,SAAK,IAAIvc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyc,CAApB,EAAuBzc,CAAC,EAAxB,EAA4B;EAC1B,WAAK,IAAIgc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGO,CAApB,EAAuBP,CAAC,EAAxB,EAA4B;EAC1BqD,QAAAA,KAAK,CAACrD,CAAD,CAAL,GAAWoD,KAAK,CAACrO,GAAN,CAAUiL,CAAV,EAAahc,CAAb,CAAX;EACD;;EAED,WAAK,IAAI1F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1B,YAAIglB,CAAC,GAAG,CAAR;;EACA,aAAK,IAAItD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGO,CAApB,EAAuBP,CAAC,EAAxB,EAA4B;EAC1BsD,UAAAA,CAAC,IAAI,KAAKvO,GAAL,CAASzW,CAAT,EAAY0hB,CAAZ,IAAiBqD,KAAK,CAACrD,CAAD,CAA3B;EACD;;EAEDre,QAAAA,MAAM,CAACiU,GAAP,CAAWtX,CAAX,EAAc0F,CAAd,EAAiBsf,CAAjB;EACD;EACF;;EACD,WAAO3hB,MAAP;EACD;;EAED4hB,EAAAA,WAAW,CAACH,KAAD,EAAQ;EACjBA,IAAAA,KAAK,GAAG5N,MAAM,CAACK,WAAP,CAAmBuN,KAAnB,CAAR;EACA,QAAIzhB,MAAM,GAAG,IAAI6T,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAb;EACA,UAAMgO,GAAG,GAAG,KAAKzO,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM0O,GAAG,GAAGL,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAM2O,GAAG,GAAG,KAAK3O,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM4O,GAAG,GAAGP,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAM6O,GAAG,GAAG,KAAK7O,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM8O,GAAG,GAAGT,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAM+O,GAAG,GAAG,KAAK/O,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAMgP,GAAG,GAAGX,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ,CAViB;;EAajB,UAAMiP,EAAE,GAAG,CAACR,GAAG,GAAGM,GAAP,KAAeL,GAAG,GAAGM,GAArB,CAAX;EACA,UAAME,EAAE,GAAG,CAACL,GAAG,GAAGE,GAAP,IAAcL,GAAzB;EACA,UAAMS,EAAE,GAAGV,GAAG,IAAIG,GAAG,GAAGI,GAAV,CAAd;EACA,UAAMI,EAAE,GAAGL,GAAG,IAAID,GAAG,GAAGJ,GAAV,CAAd;EACA,UAAMW,EAAE,GAAG,CAACZ,GAAG,GAAGE,GAAP,IAAcK,GAAzB;EACA,UAAMM,EAAE,GAAG,CAACT,GAAG,GAAGJ,GAAP,KAAeC,GAAG,GAAGE,GAArB,CAAX;EACA,UAAMW,EAAE,GAAG,CAACZ,GAAG,GAAGI,GAAP,KAAeD,GAAG,GAAGE,GAArB,CAAX,CAnBiB;;EAsBjB,UAAMQ,GAAG,GAAGP,EAAE,GAAGG,EAAL,GAAUC,EAAV,GAAeE,EAA3B;EACA,UAAME,GAAG,GAAGN,EAAE,GAAGE,EAAjB;EACA,UAAMK,GAAG,GAAGR,EAAE,GAAGE,EAAjB;EACA,UAAMO,GAAG,GAAGV,EAAE,GAAGC,EAAL,GAAUC,EAAV,GAAeG,EAA3B;EAEA1iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB2O,GAAjB;EACA5iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB4O,GAAjB;EACA7iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB6O,GAAjB;EACA9iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB8O,GAAjB;EACA,WAAO/iB,MAAP;EACD;;EAEDgjB,EAAAA,WAAW,CAACvB,KAAD,EAAQ;EACjBA,IAAAA,KAAK,GAAG5N,MAAM,CAACK,WAAP,CAAmBuN,KAAnB,CAAR;EACA,QAAIzhB,MAAM,GAAG,IAAI6T,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAb;EAEA,UAAMoP,GAAG,GAAG,KAAK7P,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM8P,GAAG,GAAG,KAAK9P,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM+P,GAAG,GAAG,KAAK/P,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAMgQ,GAAG,GAAG,KAAKhQ,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAMyO,GAAG,GAAG,KAAKzO,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM2O,GAAG,GAAG,KAAK3O,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAMiQ,GAAG,GAAG,KAAKjQ,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM6O,GAAG,GAAG,KAAK7O,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EACA,UAAM+O,GAAG,GAAG,KAAK/O,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAZ;EAEA,UAAMkQ,GAAG,GAAG7B,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAMmQ,GAAG,GAAG9B,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAMoQ,GAAG,GAAG/B,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAMqQ,GAAG,GAAGhC,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAM0O,GAAG,GAAGL,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAM4O,GAAG,GAAGP,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAMsQ,GAAG,GAAGjC,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAM8O,GAAG,GAAGT,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EACA,UAAMgP,GAAG,GAAGX,KAAK,CAACrO,GAAN,CAAU,CAAV,EAAa,CAAb,CAAZ;EAEA,UAAMiP,EAAE,GAAG,CAACY,GAAG,GAAGC,GAAN,GAAYC,GAAZ,GAAkBC,GAAlB,GAAwBvB,GAAxB,GAA8BI,GAA9B,GAAoCE,GAArC,IAA4CL,GAAvD;EACA,UAAMQ,EAAE,GAAG,CAACW,GAAG,GAAGG,GAAP,KAAe,CAACG,GAAD,GAAOzB,GAAtB,CAAX;EACA,UAAMS,EAAE,GAAGV,GAAG,IAAI,CAACyB,GAAD,GAAOC,GAAP,GAAaE,GAAb,GAAmB3B,GAAnB,GAAyBE,GAAzB,GAA+B0B,GAA/B,GAAqCtB,GAAzC,CAAd;EACA,UAAMI,EAAE,GAAG,CAAC,CAACS,GAAD,GAAOG,GAAP,GAAavB,GAAd,KAAsByB,GAAG,GAAGC,GAAN,GAAYzB,GAAlC,CAAX;EACA,UAAMW,EAAE,GAAG,CAACW,GAAG,GAAGvB,GAAP,KAAe,CAACyB,GAAD,GAAOC,GAAtB,CAAX;EACA,UAAMb,EAAE,GAAGO,GAAG,GAAGK,GAAjB;EACA,UAAMX,EAAE,GAAG,CAAC,CAACM,GAAD,GAAOI,GAAP,GAAapB,GAAd,KAAsBqB,GAAG,GAAGE,GAAN,GAAYxB,GAAlC,CAAX;EACA,UAAM2B,EAAE,GAAG,CAAC,CAACV,GAAD,GAAOI,GAAR,KAAgBG,GAAG,GAAGxB,GAAtB,CAAX;EACA,UAAM4B,EAAE,GAAG,CAACP,GAAG,GAAGpB,GAAP,KAAe,CAACqB,GAAD,GAAOE,GAAtB,CAAX;EACA,UAAMK,GAAG,GAAG,CAACZ,GAAG,GAAGC,GAAN,GAAYC,GAAZ,GAAkBtB,GAAlB,GAAwBE,GAAxB,GAA8BsB,GAA9B,GAAoCpB,GAArC,IAA4CD,GAAxD;EACA,UAAM8B,GAAG,GAAG7B,GAAG,IAAI,CAACqB,GAAD,GAAOE,GAAP,GAAaC,GAAb,GAAmB3B,GAAnB,GAAyBE,GAAzB,GAA+B0B,GAA/B,GAAqCxB,GAAzC,CAAf;EACA,UAAM6B,GAAG,GAAG,CAAC,CAACZ,GAAD,GAAOlB,GAAP,GAAaE,GAAd,KAAsBL,GAAG,GAAG4B,GAAN,GAAYxB,GAAlC,CAAZ;EACA,UAAM8B,GAAG,GAAG,CAACb,GAAG,GAAGhB,GAAP,KAAeL,GAAG,GAAGI,GAArB,CAAZ;EACA,UAAM+B,GAAG,GAAGd,GAAG,GAAGO,GAAlB;EACA,UAAMQ,GAAG,GAAG,CAACjC,GAAG,GAAGE,GAAP,KAAe,CAACuB,GAAD,GAAOxB,GAAtB,CAAZ;EACA,UAAMiC,GAAG,GAAG,CAAC,CAAChB,GAAD,GAAOtB,GAAP,GAAaE,GAAd,KAAsBC,GAAG,GAAG0B,GAAN,GAAYtB,GAAlC,CAAZ;EACA,UAAMgC,GAAG,GAAG,CAACjB,GAAG,GAAGpB,GAAP,KAAeC,GAAG,GAAGI,GAArB,CAAZ;EACA,UAAMiC,GAAG,GAAG,CAACxC,GAAG,GAAGE,GAAP,KAAe,CAAC2B,GAAD,GAAOtB,GAAtB,CAAZ;EACA,UAAMkC,GAAG,GAAGpB,GAAG,GAAGO,GAAlB;EACA,UAAMc,GAAG,GAAGxC,GAAG,GAAGG,GAAlB;EACA,UAAMsC,GAAG,GAAGpB,GAAG,GAAGI,GAAlB;EACA,UAAMiB,GAAG,GAAGpB,GAAG,GAAGE,GAAlB;EACA,UAAMmB,GAAG,GAAGvC,GAAG,GAAGC,GAAlB;EAEA,UAAMQ,GAAG,GAAGF,EAAE,GAAGuB,GAAL,GAAWK,GAAvB;EACA,UAAMzB,GAAG,GAAGR,EAAE,GAAGG,EAAL,GAAUC,EAAV,GAAeC,EAAf,GAAoBqB,GAApB,GAA0BE,GAA1B,GAAgCC,GAA5C;EACA,UAAMS,GAAG,GAAGjC,EAAE,GAAGC,EAAL,GAAUiB,EAAV,GAAeC,GAAf,GAAqBI,GAArB,GAA2BE,GAA3B,GAAiCE,GAA7C;EACA,UAAMvB,GAAG,GAAGR,EAAE,GAAGC,EAAL,GAAUC,EAAV,GAAeE,EAAf,GAAoBuB,GAApB,GAA0BE,GAA1B,GAAgCC,GAA5C;EACA,UAAMrB,GAAG,GAAGT,EAAE,GAAGE,EAAL,GAAUC,EAAV,GAAeC,EAAf,GAAoB6B,GAAhC;EACA,UAAMK,GAAG,GAAGX,GAAG,GAAGE,GAAN,GAAYC,GAAZ,GAAkBC,GAAlB,GAAwBG,GAApC;EACA,UAAMK,GAAG,GAAGnC,EAAE,GAAGC,EAAL,GAAUgB,EAAV,GAAeG,GAAf,GAAqBC,GAArB,GAA2BC,GAA3B,GAAiCC,GAA7C;EACA,UAAMa,GAAG,GAAGf,GAAG,GAAGC,GAAN,GAAYC,GAAZ,GAAkBC,GAAlB,GAAwBO,GAApC;EACA,UAAMM,GAAG,GAAGrC,EAAE,GAAGC,EAAL,GAAUgB,EAAV,GAAeC,EAAf,GAAoBc,GAAhC;EAEA1kB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB2O,GAAjB;EACA5iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB4O,GAAjB;EACA7iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB0Q,GAAjB;EACA3kB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB6O,GAAjB;EACA9iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB8O,GAAjB;EACA/iB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB2Q,GAAjB;EACA5kB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB4Q,GAAjB;EACA7kB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB6Q,GAAjB;EACA9kB,IAAAA,MAAM,CAACiU,GAAP,CAAW,CAAX,EAAc,CAAd,EAAiB8Q,GAAjB;EACA,WAAO/kB,MAAP;EACD;;EAEDglB,EAAAA,YAAY,CAAC9b,CAAD,EAAI;EACdA,IAAAA,CAAC,GAAG2K,MAAM,CAACK,WAAP,CAAmBhL,CAAnB,CAAJ;EACA,QAAID,CAAC,GAAG,KAAKsV,KAAL,EAAR;EACA,QAAI0G,EAAE,GAAGhc,CAAC,CAAC6J,IAAX;EACA,QAAIoS,EAAE,GAAGjc,CAAC,CAAC8J,OAAX;EACA,QAAIoS,EAAE,GAAGjc,CAAC,CAAC4J,IAAX;EACA,QAAIsS,EAAE,GAAGlc,CAAC,CAAC6J,OAAX;;EACA,QAAImS,EAAE,KAAKC,EAAX,EAAe;EACb;EACAE,MAAAA,OAAO,CAACC,IAAR,CACG,eAAcL,EAAG,MAAKC,EAAG,QAAOC,EAAG,MAAKC,EAAG,mCAD9C;EAGD,KAZa;EAed;;;EACA,aAASG,KAAT,CAAeC,GAAf,EAAoB1S,IAApB,EAA0BqI,IAA1B,EAAgC;EAC9B,UAAIrB,CAAC,GAAG0L,GAAG,CAAC1S,IAAZ;EACA,UAAIhG,CAAC,GAAG0Y,GAAG,CAACzS,OAAZ;;EACA,UAAI+G,CAAC,KAAKhH,IAAN,IAAchG,CAAC,KAAKqO,IAAxB,EAA8B;EAC5B,eAAOqK,GAAP;EACD,OAFD,MAEO;EACL,YAAIC,QAAQ,GAAG7R,cAAc,CAAC8I,KAAf,CAAqB5J,IAArB,EAA2BqI,IAA3B,CAAf;EACAsK,QAAAA,QAAQ,GAAGA,QAAQ,CAACzG,YAAT,CAAsBwG,GAAtB,EAA2B,CAA3B,EAA8B,CAA9B,CAAX;EACA,eAAOC,QAAP;EACD;EACF,KA1Ba;EA6Bd;EACA;;;EAEA,QAAI3L,CAAC,GAAGxW,IAAI,CAACiL,GAAL,CAAS0W,EAAT,EAAaE,EAAb,CAAR;EACA,QAAIrY,CAAC,GAAGxJ,IAAI,CAACiL,GAAL,CAAS2W,EAAT,EAAaE,EAAb,CAAR;EACAnc,IAAAA,CAAC,GAAGsc,KAAK,CAACtc,CAAD,EAAI6Q,CAAJ,EAAOhN,CAAP,CAAT;EACA5D,IAAAA,CAAC,GAAGqc,KAAK,CAACrc,CAAD,EAAI4Q,CAAJ,EAAOhN,CAAP,CAAT,CAnCc;;EAsCd,aAAS4Y,SAAT,CAAmB9f,CAAnB,EAAsBmH,CAAtB,EAAyB+F,IAAzB,EAA+BqI,IAA/B,EAAqC;EACnC;EACA,UAAIrI,IAAI,IAAI,GAAR,IAAeqI,IAAI,IAAI,GAA3B,EAAgC;EAC9B,eAAOvV,CAAC,CAAC4b,IAAF,CAAOzU,CAAP,CAAP,CAD8B;EAE/B,OAJkC;;;EAOnC,UAAI+F,IAAI,GAAG,CAAP,KAAa,CAAb,IAAkBqI,IAAI,GAAG,CAAP,KAAa,CAAnC,EAAsC;EACpCvV,QAAAA,CAAC,GAAG2f,KAAK,CAAC3f,CAAD,EAAIkN,IAAI,GAAG,CAAX,EAAcqI,IAAI,GAAG,CAArB,CAAT;EACApO,QAAAA,CAAC,GAAGwY,KAAK,CAACxY,CAAD,EAAI+F,IAAI,GAAG,CAAX,EAAcqI,IAAI,GAAG,CAArB,CAAT;EACD,OAHD,MAGO,IAAIrI,IAAI,GAAG,CAAP,KAAa,CAAjB,EAAoB;EACzBlN,QAAAA,CAAC,GAAG2f,KAAK,CAAC3f,CAAD,EAAIkN,IAAI,GAAG,CAAX,EAAcqI,IAAd,CAAT;EACApO,QAAAA,CAAC,GAAGwY,KAAK,CAACxY,CAAD,EAAI+F,IAAI,GAAG,CAAX,EAAcqI,IAAd,CAAT;EACD,OAHM,MAGA,IAAIA,IAAI,GAAG,CAAP,KAAa,CAAjB,EAAoB;EACzBvV,QAAAA,CAAC,GAAG2f,KAAK,CAAC3f,CAAD,EAAIkN,IAAJ,EAAUqI,IAAI,GAAG,CAAjB,CAAT;EACApO,QAAAA,CAAC,GAAGwY,KAAK,CAACxY,CAAD,EAAI+F,IAAJ,EAAUqI,IAAI,GAAG,CAAjB,CAAT;EACD;;EAED,UAAIwK,QAAQ,GAAGC,QAAQ,CAAChgB,CAAC,CAACkN,IAAF,GAAS,CAAV,EAAa,EAAb,CAAvB;EACA,UAAI+S,QAAQ,GAAGD,QAAQ,CAAChgB,CAAC,CAACmN,OAAF,GAAY,CAAb,EAAgB,EAAhB,CAAvB,CAnBmC;;EAqBnC,UAAI8O,GAAG,GAAGjc,CAAC,CAACkgB,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6B,CAA7B,EAAgCE,QAAQ,GAAG,CAA3C,CAAV;EACA,UAAI/D,GAAG,GAAG/U,CAAC,CAAC+Y,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6B,CAA7B,EAAgCE,QAAQ,GAAG,CAA3C,CAAV;EAEA,UAAI9D,GAAG,GAAGnc,CAAC,CAACkgB,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6BE,QAA7B,EAAuCjgB,CAAC,CAACmN,OAAF,GAAY,CAAnD,CAAV;EACA,UAAIiP,GAAG,GAAGjV,CAAC,CAAC+Y,SAAF,CAAY,CAAZ,EAAeH,QAAQ,GAAG,CAA1B,EAA6BE,QAA7B,EAAuC9Y,CAAC,CAACgG,OAAF,GAAY,CAAnD,CAAV;EAEA,UAAIkP,GAAG,GAAGrc,CAAC,CAACkgB,SAAF,CAAYH,QAAZ,EAAsB/f,CAAC,CAACkN,IAAF,GAAS,CAA/B,EAAkC,CAAlC,EAAqC+S,QAAQ,GAAG,CAAhD,CAAV;EACA,UAAI3D,GAAG,GAAGnV,CAAC,CAAC+Y,SAAF,CAAYH,QAAZ,EAAsB5Y,CAAC,CAAC+F,IAAF,GAAS,CAA/B,EAAkC,CAAlC,EAAqC+S,QAAQ,GAAG,CAAhD,CAAV;EAEA,UAAI1D,GAAG,GAAGvc,CAAC,CAACkgB,SAAF,CAAYH,QAAZ,EAAsB/f,CAAC,CAACkN,IAAF,GAAS,CAA/B,EAAkC+S,QAAlC,EAA4CjgB,CAAC,CAACmN,OAAF,GAAY,CAAxD,CAAV;EACA,UAAIqP,GAAG,GAAGrV,CAAC,CAAC+Y,SAAF,CAAYH,QAAZ,EAAsB5Y,CAAC,CAAC+F,IAAF,GAAS,CAA/B,EAAkC+S,QAAlC,EAA4C9Y,CAAC,CAACgG,OAAF,GAAY,CAAxD,CAAV,CA/BmC;;EAkCnC,UAAIsP,EAAE,GAAGqD,SAAS,CAChB9R,cAAc,CAACE,GAAf,CAAmB+N,GAAnB,EAAwBM,GAAxB,CADgB,EAEhBvO,cAAc,CAACE,GAAf,CAAmBgO,GAAnB,EAAwBM,GAAxB,CAFgB,EAGhBuD,QAHgB,EAIhBE,QAJgB,CAAlB;EAMA,UAAIvD,EAAE,GAAGoD,SAAS,CAAC9R,cAAc,CAACE,GAAf,CAAmBmO,GAAnB,EAAwBE,GAAxB,CAAD,EAA+BL,GAA/B,EAAoC6D,QAApC,EAA8CE,QAA9C,CAAlB;EACA,UAAItD,EAAE,GAAGmD,SAAS,CAAC7D,GAAD,EAAMjO,cAAc,CAACQ,GAAf,CAAmB4N,GAAnB,EAAwBI,GAAxB,CAAN,EAAoCuD,QAApC,EAA8CE,QAA9C,CAAlB;EACA,UAAIrD,EAAE,GAAGkD,SAAS,CAACvD,GAAD,EAAMvO,cAAc,CAACQ,GAAf,CAAmB8N,GAAnB,EAAwBJ,GAAxB,CAAN,EAAoC6D,QAApC,EAA8CE,QAA9C,CAAlB;EACA,UAAIpD,EAAE,GAAGiD,SAAS,CAAC9R,cAAc,CAACE,GAAf,CAAmB+N,GAAnB,EAAwBE,GAAxB,CAAD,EAA+BK,GAA/B,EAAoCuD,QAApC,EAA8CE,QAA9C,CAAlB;EACA,UAAInD,EAAE,GAAGgD,SAAS,CAChB9R,cAAc,CAACQ,GAAf,CAAmB6N,GAAnB,EAAwBJ,GAAxB,CADgB,EAEhBjO,cAAc,CAACE,GAAf,CAAmBgO,GAAnB,EAAwBE,GAAxB,CAFgB,EAGhB2D,QAHgB,EAIhBE,QAJgB,CAAlB;EAMA,UAAIlD,EAAE,GAAG+C,SAAS,CAChB9R,cAAc,CAACQ,GAAf,CAAmB2N,GAAnB,EAAwBI,GAAxB,CADgB,EAEhBvO,cAAc,CAACE,GAAf,CAAmBoO,GAAnB,EAAwBE,GAAxB,CAFgB,EAGhBuD,QAHgB,EAIhBE,QAJgB,CAAlB,CAlDmC;;EA0DnC,UAAI9C,GAAG,GAAGnP,cAAc,CAACE,GAAf,CAAmBuO,EAAnB,EAAuBG,EAAvB,CAAV;EACAO,MAAAA,GAAG,CAAC3O,GAAJ,CAAQqO,EAAR;EACAM,MAAAA,GAAG,CAACjP,GAAJ,CAAQ6O,EAAR;EACA,UAAIiC,GAAG,GAAGhR,cAAc,CAACE,GAAf,CAAmByO,EAAnB,EAAuBE,EAAvB,CAAV;EACA,UAAIqC,GAAG,GAAGlR,cAAc,CAACE,GAAf,CAAmBwO,EAAnB,EAAuBE,EAAvB,CAAV;EACA,UAAIuC,GAAG,GAAGnR,cAAc,CAACQ,GAAf,CAAmBiO,EAAnB,EAAuBC,EAAvB,CAAV;EACAyC,MAAAA,GAAG,CAACjR,GAAJ,CAAQyO,EAAR;EACAwC,MAAAA,GAAG,CAACjR,GAAJ,CAAQ4O,EAAR,EAjEmC;;EAoEnC,UAAI+C,QAAQ,GAAG7R,cAAc,CAAC8I,KAAf,CAAqB,IAAIqG,GAAG,CAACjQ,IAA7B,EAAmC,IAAIiQ,GAAG,CAAChQ,OAA3C,CAAf;EACA0S,MAAAA,QAAQ,GAAGA,QAAQ,CAACzG,YAAT,CAAsB+D,GAAtB,EAA2B,CAA3B,EAA8B,CAA9B,CAAX;EACA0C,MAAAA,QAAQ,GAAGA,QAAQ,CAACzG,YAAT,CAAsB4F,GAAtB,EAA2B7B,GAAG,CAACjQ,IAA/B,EAAqC,CAArC,CAAX;EACA2S,MAAAA,QAAQ,GAAGA,QAAQ,CAACzG,YAAT,CAAsB8F,GAAtB,EAA2B,CAA3B,EAA8B/B,GAAG,CAAChQ,OAAlC,CAAX;EACA0S,MAAAA,QAAQ,GAAGA,QAAQ,CAACzG,YAAT,CAAsB+F,GAAtB,EAA2BhC,GAAG,CAACjQ,IAA/B,EAAqCiQ,GAAG,CAAChQ,OAAzC,CAAX;EACA,aAAO0S,QAAQ,CAACK,SAAT,CAAmB,CAAnB,EAAsBhT,IAAI,GAAG,CAA7B,EAAgC,CAAhC,EAAmCqI,IAAI,GAAG,CAA1C,CAAP;EACD;;EAED,WAAOuK,SAAS,CAACzc,CAAD,EAAIC,CAAJ,EAAO4Q,CAAP,EAAUhN,CAAV,CAAhB;EACD;;EAEDiZ,EAAAA,SAAS,GAAe;EAAA,QAAdzhB,OAAc,uEAAJ,EAAI;;EACtB,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAEsT,MAAAA,GAAG,GAAG,CAAR;EAAWE,MAAAA,GAAG,GAAG;EAAjB,QAAuBjK,OAA7B;EACA,QAAI,CAACnI,MAAM,CAAC6pB,QAAP,CAAgB3X,GAAhB,CAAL,EAA2B,MAAM,IAAItT,SAAJ,CAAc,sBAAd,CAAN;EAC3B,QAAI,CAACoB,MAAM,CAAC6pB,QAAP,CAAgBzX,GAAhB,CAAL,EAA2B,MAAM,IAAIxT,SAAJ,CAAc,sBAAd,CAAN;EAC3B,QAAIsT,GAAG,IAAIE,GAAX,EAAgB,MAAM,IAAIyD,UAAJ,CAAe,8BAAf,CAAN;EAChB,QAAImC,SAAS,GAAG,IAAIN,MAAJ,CAAW,KAAKf,IAAhB,EAAsB,KAAKC,OAA3B,CAAhB;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,YAAMqR,GAAG,GAAG,KAAKkR,MAAL,CAAYviB,CAAZ,CAAZ;;EACA,UAAIqR,GAAG,CAACzV,MAAJ,GAAa,CAAjB,EAAoB;EAClBsZ,QAAAA,OAAO,CAAC7D,GAAD,EAAM;EAAEK,UAAAA,GAAF;EAAOE,UAAAA,GAAP;EAAYlW,UAAAA,MAAM,EAAE2V;EAApB,SAAN,CAAP;EACD;;EACDmG,MAAAA,SAAS,CAACiL,MAAV,CAAiBziB,CAAjB,EAAoBqR,GAApB;EACD;;EACD,WAAOmG,SAAP;EACD;;EAED8R,EAAAA,YAAY,GAAe;EAAA,QAAd3hB,OAAc,uEAAJ,EAAI;;EACzB,QAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAEsT,MAAAA,GAAG,GAAG,CAAR;EAAWE,MAAAA,GAAG,GAAG;EAAjB,QAAuBjK,OAA7B;EACA,QAAI,CAACnI,MAAM,CAAC6pB,QAAP,CAAgB3X,GAAhB,CAAL,EAA2B,MAAM,IAAItT,SAAJ,CAAc,sBAAd,CAAN;EAC3B,QAAI,CAACoB,MAAM,CAAC6pB,QAAP,CAAgBzX,GAAhB,CAAL,EAA2B,MAAM,IAAIxT,SAAJ,CAAc,sBAAd,CAAN;EAC3B,QAAIsT,GAAG,IAAIE,GAAX,EAAgB,MAAM,IAAIyD,UAAJ,CAAe,8BAAf,CAAN;EAChB,QAAImC,SAAS,GAAG,IAAIN,MAAJ,CAAW,KAAKf,IAAhB,EAAsB,KAAKC,OAA3B,CAAhB;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,YAAM+c,MAAM,GAAG,KAAK8F,SAAL,CAAe7iB,CAAf,CAAf;;EACA,UAAI+c,MAAM,CAACnhB,MAAX,EAAmB;EACjBsZ,QAAAA,OAAO,CAAC6H,MAAD,EAAS;EACdrL,UAAAA,GAAG,EAAEA,GADS;EAEdE,UAAAA,GAAG,EAAEA,GAFS;EAGdlW,UAAAA,MAAM,EAAEqhB;EAHM,SAAT,CAAP;EAKD;;EACDvF,MAAAA,SAAS,CAACuL,SAAV,CAAoB/iB,CAApB,EAAuB+c,MAAvB;EACD;;EACD,WAAOvF,SAAP;EACD;;EAED+R,EAAAA,QAAQ,GAAG;EACT,UAAMC,MAAM,GAAG7iB,IAAI,CAACmU,IAAL,CAAU,KAAK1E,OAAL,GAAe,CAAzB,CAAf;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8jB,MAApB,EAA4B9jB,CAAC,EAA7B,EAAiC;EAC/B,YAAI+jB,KAAK,GAAG,KAAKhT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAZ;EACA,YAAIgkB,IAAI,GAAG,KAAKjT,GAAL,CAASzW,CAAT,EAAY,KAAKoW,OAAL,GAAe,CAAf,GAAmB1Q,CAA/B,CAAX;EACA,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAegkB,IAAf;EACA,aAAKpS,GAAL,CAAStX,CAAT,EAAY,KAAKoW,OAAL,GAAe,CAAf,GAAmB1Q,CAA/B,EAAkC+jB,KAAlC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEDE,EAAAA,WAAW,GAAG;EACZ,UAAMH,MAAM,GAAG7iB,IAAI,CAACmU,IAAL,CAAU,KAAK3E,IAAL,GAAY,CAAtB,CAAf;;EACA,SAAK,IAAIzQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrC,WAAK,IAAI1F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwpB,MAApB,EAA4BxpB,CAAC,EAA7B,EAAiC;EAC/B,YAAIypB,KAAK,GAAG,KAAKhT,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAZ;EACA,YAAIgkB,IAAI,GAAG,KAAKjT,GAAL,CAAS,KAAKN,IAAL,GAAY,CAAZ,GAAgBnW,CAAzB,EAA4B0F,CAA5B,CAAX;EACA,aAAK4R,GAAL,CAAStX,CAAT,EAAY0F,CAAZ,EAAegkB,IAAf;EACA,aAAKpS,GAAL,CAAS,KAAKnB,IAAL,GAAY,CAAZ,GAAgBnW,CAAzB,EAA4B0F,CAA5B,EAA+B+jB,KAA/B;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEDG,EAAAA,gBAAgB,CAAC9E,KAAD,EAAQ;EACtBA,IAAAA,KAAK,GAAG5N,MAAM,CAACK,WAAP,CAAmBuN,KAAnB,CAAR;EAEA,QAAI9C,CAAC,GAAG,KAAK7L,IAAb;EACA,QAAI8L,CAAC,GAAG,KAAK7L,OAAb;EACA,QAAI+L,CAAC,GAAG2C,KAAK,CAAC3O,IAAd;EACA,QAAI0T,CAAC,GAAG/E,KAAK,CAAC1O,OAAd;EAEA,QAAI/S,MAAM,GAAG,IAAI6T,MAAJ,CAAW8K,CAAC,GAAGG,CAAf,EAAkBF,CAAC,GAAG4H,CAAtB,CAAb;;EACA,SAAK,IAAI7pB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuc,CAApB,EAAuBvc,CAAC,EAAxB,EAA4B;EAC1B,aAAK,IAAIgc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,CAApB,EAAuBT,CAAC,EAAxB,EAA4B;EAC1B,eAAK,IAAInB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsJ,CAApB,EAAuBtJ,CAAC,EAAxB,EAA4B;EAC1Bld,YAAAA,MAAM,CAACiU,GAAP,CAAW6K,CAAC,GAAGniB,CAAJ,GAAQ0hB,CAAnB,EAAsBmI,CAAC,GAAGnkB,CAAJ,GAAQ6a,CAA9B,EAAiC,KAAK9J,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,IAAiBof,KAAK,CAACrO,GAAN,CAAUiL,CAAV,EAAanB,CAAb,CAAlD;EACD;EACF;EACF;EACF;;EACD,WAAOld,MAAP;EACD;;EAEDymB,EAAAA,YAAY,CAAChF,KAAD,EAAQ;EAClBA,IAAAA,KAAK,GAAG5N,MAAM,CAACK,WAAP,CAAmBuN,KAAnB,CAAR;;EACA,QAAI,CAAC,KAAK1D,QAAL,EAAD,IAAoB,CAAC0D,KAAK,CAAC1D,QAAN,EAAzB,EAA2C;EACzC,YAAM,IAAI9kB,KAAJ,CAAU,yCAAV,CAAN;EACD;;EACD,QAAI0lB,CAAC,GAAG,KAAK7L,IAAb;EACA,QAAI8L,CAAC,GAAG6C,KAAK,CAAC3O,IAAd;EACA,QAAI4T,GAAG,GAAG,KAAKH,gBAAL,CAAsB1S,MAAM,CAACmJ,GAAP,CAAW4B,CAAX,EAAcA,CAAd,CAAtB,CAAV;EACA,QAAI+H,GAAG,GAAG9S,MAAM,CAACmJ,GAAP,CAAW2B,CAAX,EAAcA,CAAd,EAAiB4H,gBAAjB,CAAkC9E,KAAlC,CAAV;EACA,WAAOiF,GAAG,CAAC5S,GAAJ,CAAQ6S,GAAR,CAAP;EACD;;EAEDC,EAAAA,SAAS,GAAG;EACV,QAAI5mB,MAAM,GAAG,IAAI6T,MAAJ,CAAW,KAAKd,OAAhB,EAAyB,KAAKD,IAA9B,CAAb;;EACA,SAAK,IAAInW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0Q,OAAzB,EAAkC1Q,CAAC,EAAnC,EAAuC;EACrCrC,QAAAA,MAAM,CAACiU,GAAP,CAAW5R,CAAX,EAAc1F,CAAd,EAAiB,KAAKyW,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAjB;EACD;EACF;;EACD,WAAOrC,MAAP;EACD;;EAED6mB,EAAAA,QAAQ,GAAmC;EAAA,QAAlCC,eAAkC,uEAAhBC,cAAgB;;EACzC,SAAK,IAAIpqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,WAAKyiB,MAAL,CAAYziB,CAAZ,EAAe,KAAKuiB,MAAL,CAAYviB,CAAZ,EAAeqqB,IAAf,CAAoBF,eAApB,CAAf;EACD;;EACD,WAAO,IAAP;EACD;;EAEDG,EAAAA,WAAW,GAAmC;EAAA,QAAlCH,eAAkC,uEAAhBC,cAAgB;;EAC5C,SAAK,IAAIpqB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC,WAAK+iB,SAAL,CAAe/iB,CAAf,EAAkB,KAAK6iB,SAAL,CAAe7iB,CAAf,EAAkBqqB,IAAlB,CAAuBF,eAAvB,CAAlB;EACD;;EACD,WAAO,IAAP;EACD;;EAEDhB,EAAAA,SAAS,CAAC7L,QAAD,EAAWC,MAAX,EAAmBC,WAAnB,EAAgCC,SAAhC,EAA2C;EAClDJ,IAAAA,UAAU,CAAC,IAAD,EAAOC,QAAP,EAAiBC,MAAjB,EAAyBC,WAAzB,EAAsCC,SAAtC,CAAV;EACA,QAAIjG,SAAS,GAAG,IAAIN,MAAJ,CACdqG,MAAM,GAAGD,QAAT,GAAoB,CADN,EAEdG,SAAS,GAAGD,WAAZ,GAA0B,CAFZ,CAAhB;;EAIA,SAAK,IAAIxd,CAAC,GAAGsd,QAAb,EAAuBtd,CAAC,IAAIud,MAA5B,EAAoCvd,CAAC,EAArC,EAAyC;EACvC,WAAK,IAAI0F,CAAC,GAAG8X,WAAb,EAA0B9X,CAAC,IAAI+X,SAA/B,EAA0C/X,CAAC,EAA3C,EAA+C;EAC7C8R,QAAAA,SAAS,CAACF,GAAV,CAActX,CAAC,GAAGsd,QAAlB,EAA4B5X,CAAC,GAAG8X,WAAhC,EAA6C,KAAK/G,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAA7C;EACD;EACF;;EACD,WAAO8R,SAAP;EACD;;EAED+S,EAAAA,YAAY,CAACC,OAAD,EAAUhN,WAAV,EAAuBC,SAAvB,EAAkC;EAC5C,QAAID,WAAW,KAAK/c,SAApB,EAA+B+c,WAAW,GAAG,CAAd;EAC/B,QAAIC,SAAS,KAAKhd,SAAlB,EAA6Bgd,SAAS,GAAG,KAAKrH,OAAL,GAAe,CAA3B;;EAC7B,QACEoH,WAAW,GAAGC,SAAd,IACAD,WAAW,GAAG,CADd,IAEAA,WAAW,IAAI,KAAKpH,OAFpB,IAGAqH,SAAS,GAAG,CAHZ,IAIAA,SAAS,IAAI,KAAKrH,OALpB,EAME;EACA,YAAM,IAAIf,UAAJ,CAAe,uBAAf,CAAN;EACD;;EAED,QAAImC,SAAS,GAAG,IAAIN,MAAJ,CAAWsT,OAAO,CAAC5uB,MAAnB,EAA2B6hB,SAAS,GAAGD,WAAZ,GAA0B,CAArD,CAAhB;;EACA,SAAK,IAAIxd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwqB,OAAO,CAAC5uB,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC,WAAK,IAAI0F,CAAC,GAAG8X,WAAb,EAA0B9X,CAAC,IAAI+X,SAA/B,EAA0C/X,CAAC,EAA3C,EAA+C;EAC7C,YAAI8kB,OAAO,CAACxqB,CAAD,CAAP,GAAa,CAAb,IAAkBwqB,OAAO,CAACxqB,CAAD,CAAP,IAAc,KAAKmW,IAAzC,EAA+C;EAC7C,gBAAM,IAAId,UAAJ,CAAgB,2BAA0BmV,OAAO,CAACxqB,CAAD,CAAI,EAArD,CAAN;EACD;;EACDwX,QAAAA,SAAS,CAACF,GAAV,CAActX,CAAd,EAAiB0F,CAAC,GAAG8X,WAArB,EAAkC,KAAK/G,GAAL,CAAS+T,OAAO,CAACxqB,CAAD,CAAhB,EAAqB0F,CAArB,CAAlC;EACD;EACF;;EACD,WAAO8R,SAAP;EACD;;EAEDiT,EAAAA,eAAe,CAACD,OAAD,EAAUlN,QAAV,EAAoBC,MAApB,EAA4B;EACzC,QAAID,QAAQ,KAAK7c,SAAjB,EAA4B6c,QAAQ,GAAG,CAAX;EAC5B,QAAIC,MAAM,KAAK9c,SAAf,EAA0B8c,MAAM,GAAG,KAAKpH,IAAL,GAAY,CAArB;;EAC1B,QACEmH,QAAQ,GAAGC,MAAX,IACAD,QAAQ,GAAG,CADX,IAEAA,QAAQ,IAAI,KAAKnH,IAFjB,IAGAoH,MAAM,GAAG,CAHT,IAIAA,MAAM,IAAI,KAAKpH,IALjB,EAME;EACA,YAAM,IAAId,UAAJ,CAAe,uBAAf,CAAN;EACD;;EAED,QAAImC,SAAS,GAAG,IAAIN,MAAJ,CAAWqG,MAAM,GAAGD,QAAT,GAAoB,CAA/B,EAAkCkN,OAAO,CAAC5uB,MAA1C,CAAhB;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwqB,OAAO,CAAC5uB,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC,WAAK,IAAI0F,CAAC,GAAG4X,QAAb,EAAuB5X,CAAC,IAAI6X,MAA5B,EAAoC7X,CAAC,EAArC,EAAyC;EACvC,YAAI8kB,OAAO,CAACxqB,CAAD,CAAP,GAAa,CAAb,IAAkBwqB,OAAO,CAACxqB,CAAD,CAAP,IAAc,KAAKoW,OAAzC,EAAkD;EAChD,gBAAM,IAAIf,UAAJ,CAAgB,8BAA6BmV,OAAO,CAACxqB,CAAD,CAAI,EAAxD,CAAN;EACD;;EACDwX,QAAAA,SAAS,CAACF,GAAV,CAAc5R,CAAC,GAAG4X,QAAlB,EAA4Btd,CAA5B,EAA+B,KAAKyW,GAAL,CAAS/Q,CAAT,EAAY8kB,OAAO,CAACxqB,CAAD,CAAnB,CAA/B;EACD;EACF;;EACD,WAAOwX,SAAP;EACD;;EAED6K,EAAAA,YAAY,CAACvM,MAAD,EAASwH,QAAT,EAAmBE,WAAnB,EAAgC;EAC1C1H,IAAAA,MAAM,GAAGoB,MAAM,CAACK,WAAP,CAAmBzB,MAAnB,CAAT;;EACA,QAAIA,MAAM,CAAC+H,OAAP,EAAJ,EAAsB;EACpB,aAAO,IAAP;EACD;;EACD,QAAIN,MAAM,GAAGD,QAAQ,GAAGxH,MAAM,CAACK,IAAlB,GAAyB,CAAtC;EACA,QAAIsH,SAAS,GAAGD,WAAW,GAAG1H,MAAM,CAACM,OAArB,GAA+B,CAA/C;EACAiH,IAAAA,UAAU,CAAC,IAAD,EAAOC,QAAP,EAAiBC,MAAjB,EAAyBC,WAAzB,EAAsCC,SAAtC,CAAV;;EACA,SAAK,IAAIzd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8V,MAAM,CAACK,IAA3B,EAAiCnW,CAAC,EAAlC,EAAsC;EACpC,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoQ,MAAM,CAACM,OAA3B,EAAoC1Q,CAAC,EAArC,EAAyC;EACvC,aAAK4R,GAAL,CAASgG,QAAQ,GAAGtd,CAApB,EAAuBwd,WAAW,GAAG9X,CAArC,EAAwCoQ,MAAM,CAACW,GAAP,CAAWzW,CAAX,EAAc0F,CAAd,CAAxC;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEDglB,EAAAA,SAAS,CAAC9N,UAAD,EAAaC,aAAb,EAA4B;EACnC,QAAI2N,OAAO,GAAG7N,YAAY,CAAC,IAAD,EAAOC,UAAP,EAAmBC,aAAnB,CAA1B;EACA,QAAIrF,SAAS,GAAG,IAAIN,MAAJ,CAAW0F,UAAU,CAAChhB,MAAtB,EAA8BihB,aAAa,CAACjhB,MAA5C,CAAhB;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwqB,OAAO,CAACnZ,GAAR,CAAYzV,MAAhC,EAAwCoE,CAAC,EAAzC,EAA6C;EAC3C,UAAI2qB,QAAQ,GAAGH,OAAO,CAACnZ,GAAR,CAAYrR,CAAZ,CAAf;;EACA,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8kB,OAAO,CAACzN,MAAR,CAAenhB,MAAnC,EAA2C8J,CAAC,EAA5C,EAAgD;EAC9C,YAAIklB,WAAW,GAAGJ,OAAO,CAACzN,MAAR,CAAerX,CAAf,CAAlB;EACA8R,QAAAA,SAAS,CAACF,GAAV,CAActX,CAAd,EAAiB0F,CAAjB,EAAoB,KAAK+Q,GAAL,CAASkU,QAAT,EAAmBC,WAAnB,CAApB;EACD;EACF;;EACD,WAAOpT,SAAP;EACD;;EAEDqT,EAAAA,KAAK,GAAG;EACN,QAAInZ,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAAS,KAAKyE,IAAd,EAAoB,KAAKC,OAAzB,CAAV;EACA,QAAIyU,KAAK,GAAG,CAAZ;;EACA,SAAK,IAAI7qB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0R,GAApB,EAAyB1R,CAAC,EAA1B,EAA8B;EAC5B6qB,MAAAA,KAAK,IAAI,KAAKpU,GAAL,CAASzW,CAAT,EAAYA,CAAZ,CAAT;EACD;;EACD,WAAO6qB,KAAP;EACD;;EAEDjJ,EAAAA,KAAK,GAAG;EACN,QAAIpK,SAAS,GAAG,IAAIN,MAAJ,CAAW,KAAKf,IAAhB,EAAsB,KAAKC,OAA3B,CAAhB;;EACA,SAAK,IAAI/E,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG,KAAK8E,IAA7B,EAAmC9E,GAAG,EAAtC,EAA0C;EACxC,WAAK,IAAI0L,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,KAAK3G,OAAnC,EAA4C2G,MAAM,EAAlD,EAAsD;EACpDvF,QAAAA,SAAS,CAACF,GAAV,CAAcjG,GAAd,EAAmB0L,MAAnB,EAA2B,KAAKtG,GAAL,CAASpF,GAAT,EAAc0L,MAAd,CAA3B;EACD;EACF;;EACD,WAAOvF,SAAP;EACD;;EAEDuG,EAAAA,GAAG,CAAC+M,EAAD,EAAK;EACN,YAAQA,EAAR;EACE,WAAK,KAAL;EACE,eAAOhN,QAAQ,CAAC,IAAD,CAAf;;EACF,WAAK,QAAL;EACE,eAAOE,WAAW,CAAC,IAAD,CAAlB;;EACF,WAAKvd,SAAL;EACE,eAAOwd,MAAM,CAAC,IAAD,CAAb;;EACF;EACE,cAAM,IAAI3hB,KAAJ,CAAW,mBAAkBwuB,EAAG,EAAhC,CAAN;EARJ;EAUD;;EAEDC,EAAAA,OAAO,CAACD,EAAD,EAAK;EACV,YAAQA,EAAR;EACE,WAAK,KAAL;EACE,eAAO5M,YAAY,CAAC,IAAD,CAAnB;;EACF,WAAK,QAAL;EACE,eAAOC,eAAe,CAAC,IAAD,CAAtB;;EACF,WAAK1d,SAAL;EACE,eAAO2d,UAAU,CAAC,IAAD,CAAjB;;EACF;EACE,cAAM,IAAI9hB,KAAJ,CAAW,mBAAkBwuB,EAAG,EAAhC,CAAN;EARJ;EAUD;;EAEDvM,EAAAA,IAAI,CAACuM,EAAD,EAAK;EACP,UAAM/M,GAAG,GAAG,KAAKA,GAAL,CAAS+M,EAAT,CAAZ;;EACA,YAAQA,EAAR;EACE,WAAK,KAAL;EAAY;EACV,eAAK,IAAI9qB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC+d,YAAAA,GAAG,CAAC/d,CAAD,CAAH,IAAU,KAAKoW,OAAf;EACD;;EACD,iBAAO2H,GAAP;EACD;;EACD,WAAK,QAAL;EAAe;EACb,eAAK,IAAI/d,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKoW,OAAzB,EAAkCpW,CAAC,EAAnC,EAAuC;EACrC+d,YAAAA,GAAG,CAAC/d,CAAD,CAAH,IAAU,KAAKmW,IAAf;EACD;;EACD,iBAAO4H,GAAP;EACD;;EACD,WAAKtd,SAAL;EACE,eAAOsd,GAAG,GAAG,KAAKne,IAAlB;;EACF;EACE,cAAM,IAAItD,KAAJ,CAAW,mBAAkBwuB,EAAG,EAAhC,CAAN;EAhBJ;EAkBD;;EAEDrM,EAAAA,QAAQ,CAACqM,EAAD,EAAmB;EAAA,QAAdnjB,OAAc,uEAAJ,EAAI;;EACzB,QAAI,OAAOmjB,EAAP,KAAc,QAAlB,EAA4B;EAC1BnjB,MAAAA,OAAO,GAAGmjB,EAAV;EACAA,MAAAA,EAAE,GAAGrqB,SAAL;EACD;;EACD,QAAI,OAAOkH,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAEkgB,MAAAA,QAAQ,GAAG,IAAb;EAAmBC,MAAAA,IAAI,GAAG,KAAKA,IAAL,CAAUuM,EAAV;EAA1B,QAA4CnjB,OAAlD;;EACA,QAAI,OAAO2W,QAAP,KAAoB,SAAxB,EAAmC;EACjC,YAAM,IAAIlgB,SAAJ,CAAc,4BAAd,CAAN;EACD;;EACD,YAAQ0sB,EAAR;EACE,WAAK,KAAL;EAAY;EACV,cAAI,CAAC/qB,KAAK,CAACyQ,OAAN,CAAc+N,IAAd,CAAL,EAA0B;EACxB,kBAAM,IAAIngB,SAAJ,CAAc,uBAAd,CAAN;EACD;;EACD,iBAAOigB,aAAa,CAAC,IAAD,EAAOC,QAAP,EAAiBC,IAAjB,CAApB;EACD;;EACD,WAAK,QAAL;EAAe;EACb,cAAI,CAACxe,KAAK,CAACyQ,OAAN,CAAc+N,IAAd,CAAL,EAA0B;EACxB,kBAAM,IAAIngB,SAAJ,CAAc,uBAAd,CAAN;EACD;;EACD,iBAAOwgB,gBAAgB,CAAC,IAAD,EAAON,QAAP,EAAiBC,IAAjB,CAAvB;EACD;;EACD,WAAK9d,SAAL;EAAgB;EACd,cAAI,OAAO8d,IAAP,KAAgB,QAApB,EAA8B;EAC5B,kBAAM,IAAIngB,SAAJ,CAAc,uBAAd,CAAN;EACD;;EACD,iBAAOygB,WAAW,CAAC,IAAD,EAAOP,QAAP,EAAiBC,IAAjB,CAAlB;EACD;;EACD;EACE,cAAM,IAAIjiB,KAAJ,CAAW,mBAAkBwuB,EAAG,EAAhC,CAAN;EApBJ;EAsBD;;EAEDE,EAAAA,iBAAiB,CAACF,EAAD,EAAKnjB,OAAL,EAAc;EAC7B,QAAI,OAAOmjB,EAAP,KAAc,QAAlB,EAA4B;EAC1BnjB,MAAAA,OAAO,GAAGmjB,EAAV;EACAA,MAAAA,EAAE,GAAGrqB,SAAL;EACD;;EACD,UAAMge,QAAQ,GAAG,KAAKA,QAAL,CAAcqM,EAAd,EAAkBnjB,OAAlB,CAAjB;;EACA,QAAImjB,EAAE,KAAKrqB,SAAX,EAAsB;EACpB,aAAOkG,IAAI,CAACkV,IAAL,CAAU4C,QAAV,CAAP;EACD,KAFD,MAEO;EACL,WAAK,IAAIze,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGye,QAAQ,CAAC7iB,MAA7B,EAAqCoE,CAAC,EAAtC,EAA0C;EACxCye,QAAAA,QAAQ,CAACze,CAAD,CAAR,GAAc2G,IAAI,CAACkV,IAAL,CAAU4C,QAAQ,CAACze,CAAD,CAAlB,CAAd;EACD;;EACD,aAAOye,QAAP;EACD;EACF;;EAEDwM,EAAAA,MAAM,CAACH,EAAD,EAAmB;EAAA,QAAdnjB,OAAc,uEAAJ,EAAI;;EACvB,QAAI,OAAOmjB,EAAP,KAAc,QAAlB,EAA4B;EAC1BnjB,MAAAA,OAAO,GAAGmjB,EAAV;EACAA,MAAAA,EAAE,GAAGrqB,SAAL;EACD;;EACD,QAAI,OAAOkH,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,UAAM;EAAE6sB,MAAAA,MAAM,GAAG,KAAK1M,IAAL,CAAUuM,EAAV;EAAX,QAA6BnjB,OAAnC;;EACA,YAAQmjB,EAAR;EACE,WAAK,KAAL;EAAY;EACV,cAAI,CAAC/qB,KAAK,CAACyQ,OAAN,CAAcya,MAAd,CAAL,EAA4B;EAC1B,kBAAM,IAAI7sB,SAAJ,CAAc,yBAAd,CAAN;EACD;;EACD0gB,UAAAA,WAAW,CAAC,IAAD,EAAOmM,MAAP,CAAX;EACA,iBAAO,IAAP;EACD;;EACD,WAAK,QAAL;EAAe;EACb,cAAI,CAAClrB,KAAK,CAACyQ,OAAN,CAAcya,MAAd,CAAL,EAA4B;EAC1B,kBAAM,IAAI7sB,SAAJ,CAAc,yBAAd,CAAN;EACD;;EACD2gB,UAAAA,cAAc,CAAC,IAAD,EAAOkM,MAAP,CAAd;EACA,iBAAO,IAAP;EACD;;EACD,WAAKxqB,SAAL;EAAgB;EACd,cAAI,OAAOwqB,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,kBAAM,IAAI7sB,SAAJ,CAAc,yBAAd,CAAN;EACD;;EACD4gB,UAAAA,SAAS,CAAC,IAAD,EAAOiM,MAAP,CAAT;EACA,iBAAO,IAAP;EACD;;EACD;EACE,cAAM,IAAI3uB,KAAJ,CAAW,mBAAkBwuB,EAAG,EAAhC,CAAN;EAvBJ;EAyBD;;EAED5L,EAAAA,KAAK,CAAC4L,EAAD,EAAmB;EAAA,QAAdnjB,OAAc,uEAAJ,EAAI;;EACtB,QAAI,OAAOmjB,EAAP,KAAc,QAAlB,EAA4B;EAC1BnjB,MAAAA,OAAO,GAAGmjB,EAAV;EACAA,MAAAA,EAAE,GAAGrqB,SAAL;EACD;;EACD,QAAI,OAAOkH,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIvJ,SAAJ,CAAc,2BAAd,CAAN;EACD;;EACD,QAAI8gB,KAAK,GAAGvX,OAAO,CAACuX,KAApB;;EACA,YAAQ4L,EAAR;EACE,WAAK,KAAL;EAAY;EACV,cAAI5L,KAAK,KAAKze,SAAd,EAAyB;EACvBye,YAAAA,KAAK,GAAGD,aAAa,CAAC,IAAD,CAArB;EACD,WAFD,MAEO,IAAI,CAAClf,KAAK,CAACyQ,OAAN,CAAc0O,KAAd,CAAL,EAA2B;EAChC,kBAAM,IAAI9gB,SAAJ,CAAc,wBAAd,CAAN;EACD;;EACD+gB,UAAAA,UAAU,CAAC,IAAD,EAAOD,KAAP,CAAV;EACA,iBAAO,IAAP;EACD;;EACD,WAAK,QAAL;EAAe;EACb,cAAIA,KAAK,KAAKze,SAAd,EAAyB;EACvBye,YAAAA,KAAK,GAAGE,gBAAgB,CAAC,IAAD,CAAxB;EACD,WAFD,MAEO,IAAI,CAACrf,KAAK,CAACyQ,OAAN,CAAc0O,KAAd,CAAL,EAA2B;EAChC,kBAAM,IAAI9gB,SAAJ,CAAc,wBAAd,CAAN;EACD;;EACDihB,UAAAA,aAAa,CAAC,IAAD,EAAOH,KAAP,CAAb;EACA,iBAAO,IAAP;EACD;;EACD,WAAKze,SAAL;EAAgB;EACd,cAAIye,KAAK,KAAKze,SAAd,EAAyB;EACvBye,YAAAA,KAAK,GAAGI,WAAW,CAAC,IAAD,CAAnB;EACD,WAFD,MAEO,IAAI,OAAOJ,KAAP,KAAiB,QAArB,EAA+B;EACpC,kBAAM,IAAI9gB,SAAJ,CAAc,wBAAd,CAAN;EACD;;EACDohB,UAAAA,QAAQ,CAAC,IAAD,EAAON,KAAP,CAAR;EACA,iBAAO,IAAP;EACD;;EACD;EACE,cAAM,IAAI5iB,KAAJ,CAAW,mBAAkBwuB,EAAG,EAAhC,CAAN;EA7BJ;EA+BD;;EAEDvuB,EAAAA,QAAQ,CAACoL,OAAD,EAAU;EAChB,WAAOkO,wBAAwB,CAAC,IAAD,EAAOlO,OAAP,CAA/B;EACD;;EAx4CyB;EA24C5BsP,cAAc,CAAC3N,SAAf,CAAyBqX,KAAzB,GAAiC,QAAjC;;EACA,IAAI,OAAOuK,MAAP,KAAkB,WAAtB,EAAmC;EACjCjU,EAAAA,cAAc,CAAC3N,SAAf,CAAyB4hB,MAAM,CAACC,GAAP,CAAW,4BAAX,CAAzB,IACEvV,aADF;EAED;;EAED,SAASwU,cAAT,CAAwBnhB,CAAxB,EAA2BmH,CAA3B,EAA8B;EAC5B,SAAOnH,CAAC,GAAGmH,CAAX;EACD;;;EAGD6G,cAAc,CAACkJ,MAAf,GAAwBlJ,cAAc,CAACiJ,IAAvC;EACAjJ,cAAc,CAACmU,SAAf,GAA2BnU,cAAc,CAACmJ,OAA1C;EACAnJ,cAAc,CAACoU,QAAf,GAA0BpU,cAAc,CAACqJ,IAAzC;EACArJ,cAAc,CAAC3N,SAAf,CAAyB+hB,QAAzB,GAAoCpU,cAAc,CAAC3N,SAAf,CAAyBgX,IAA7D;EACArJ,cAAc,CAACqU,QAAf,GAA0BrU,cAAc,CAACoJ,GAAzC;EACApJ,cAAc,CAAC3N,SAAf,CAAyBiiB,MAAzB,GAAkCtU,cAAc,CAAC3N,SAAf,CAAyBgZ,GAA3D;EACArL,cAAc,CAAC3N,SAAf,CAAyBkiB,aAAzB,GACEvU,cAAc,CAAC3N,SAAf,CAAyBsgB,gBAD3B;EAGe,MAAM1S,MAAN,SAAqBD,cAArB,CAAoC;EACjD5S,EAAAA,WAAW,CAAConB,KAAD,EAAQC,QAAR,EAAkB;EAC3B;;EACA,QAAIxU,MAAM,CAACwJ,QAAP,CAAgB+K,KAAhB,CAAJ,EAA4B;EAC1B;EACA,aAAOA,KAAK,CAAC7J,KAAN,EAAP;EACD,KAHD,MAGO,IAAIpiB,MAAM,CAACuV,SAAP,CAAiB0W,KAAjB,KAA2BA,KAAK,IAAI,CAAxC,EAA2C;EAChD;EACA,WAAK3qB,IAAL,GAAY,EAAZ;;EACA,UAAItB,MAAM,CAACuV,SAAP,CAAiB2W,QAAjB,KAA8BA,QAAQ,IAAI,CAA9C,EAAiD;EAC/C,aAAK,IAAI1rB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyrB,KAApB,EAA2BzrB,CAAC,EAA5B,EAAgC;EAC9B,eAAKc,IAAL,CAAU9E,IAAV,CAAe,IAAIsV,YAAJ,CAAiBoa,QAAjB,CAAf;EACD;EACF,OAJD,MAIO;EACL,cAAM,IAAIttB,SAAJ,CAAc,qCAAd,CAAN;EACD;EACF,KAVM,MAUA,IAAI2B,KAAK,CAACyQ,OAAN,CAAcib,KAAd,CAAJ,EAA0B;EAC/B;EACA,YAAME,SAAS,GAAGF,KAAlB;EACAA,MAAAA,KAAK,GAAGE,SAAS,CAAC/vB,MAAlB;EACA8vB,MAAAA,QAAQ,GAAGD,KAAK,GAAGE,SAAS,CAAC,CAAD,CAAT,CAAa/vB,MAAhB,GAAyB,CAAzC;;EACA,UAAI,OAAO8vB,QAAP,KAAoB,QAAxB,EAAkC;EAChC,cAAM,IAAIttB,SAAJ,CACJ,mDADI,CAAN;EAGD;;EACD,WAAK0C,IAAL,GAAY,EAAZ;;EACA,WAAK,IAAId,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyrB,KAApB,EAA2BzrB,CAAC,EAA5B,EAAgC;EAC9B,YAAI2rB,SAAS,CAAC3rB,CAAD,CAAT,CAAapE,MAAb,KAAwB8vB,QAA5B,EAAsC;EACpC,gBAAM,IAAIrW,UAAJ,CAAe,+BAAf,CAAN;EACD;;EACD,aAAKvU,IAAL,CAAU9E,IAAV,CAAesV,YAAY,CAACC,IAAb,CAAkBoa,SAAS,CAAC3rB,CAAD,CAA3B,CAAf;EACD;EACF,KAjBM,MAiBA;EACL,YAAM,IAAI5B,SAAJ,CACJ,sDADI,CAAN;EAGD;;EACD,SAAK+X,IAAL,GAAYsV,KAAZ;EACA,SAAKrV,OAAL,GAAesV,QAAf;EACD;;EAEDpU,EAAAA,GAAG,CAACqT,QAAD,EAAWC,WAAX,EAAwB/uB,KAAxB,EAA+B;EAChC,SAAKiF,IAAL,CAAU6pB,QAAV,EAAoBC,WAApB,IAAmC/uB,KAAnC;EACA,WAAO,IAAP;EACD;;EAED4a,EAAAA,GAAG,CAACkU,QAAD,EAAWC,WAAX,EAAwB;EACzB,WAAO,KAAK9pB,IAAL,CAAU6pB,QAAV,EAAoBC,WAApB,CAAP;EACD;;EAEDgB,EAAAA,SAAS,CAACzvB,KAAD,EAAQ;EACfigB,IAAAA,aAAa,CAAC,IAAD,EAAOjgB,KAAP,CAAb;EACA,SAAK2E,IAAL,CAAU+qB,MAAV,CAAiB1vB,KAAjB,EAAwB,CAAxB;EACA,SAAKga,IAAL,IAAa,CAAb;EACA,WAAO,IAAP;EACD;;EAED2V,EAAAA,MAAM,CAAC3vB,KAAD,EAAQD,KAAR,EAAe;EACnB,QAAIA,KAAK,KAAKuE,SAAd,EAAyB;EACvBvE,MAAAA,KAAK,GAAGC,KAAR;EACAA,MAAAA,KAAK,GAAG,KAAKga,IAAb;EACD;;EACDiG,IAAAA,aAAa,CAAC,IAAD,EAAOjgB,KAAP,EAAc,IAAd,CAAb;EACAD,IAAAA,KAAK,GAAGoV,YAAY,CAACC,IAAb,CAAkBgL,cAAc,CAAC,IAAD,EAAOrgB,KAAP,CAAhC,CAAR;EACA,SAAK4E,IAAL,CAAU+qB,MAAV,CAAiB1vB,KAAjB,EAAwB,CAAxB,EAA2BD,KAA3B;EACA,SAAKia,IAAL,IAAa,CAAb;EACA,WAAO,IAAP;EACD;;EAED4V,EAAAA,YAAY,CAAC5vB,KAAD,EAAQ;EAClBmgB,IAAAA,gBAAgB,CAAC,IAAD,EAAOngB,KAAP,CAAhB;;EACA,SAAK,IAAI6D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,YAAMgsB,MAAM,GAAG,IAAI1a,YAAJ,CAAiB,KAAK8E,OAAL,GAAe,CAAhC,CAAf;;EACA,WAAK,IAAI1Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvJ,KAApB,EAA2BuJ,CAAC,EAA5B,EAAgC;EAC9BsmB,QAAAA,MAAM,CAACtmB,CAAD,CAAN,GAAY,KAAK5E,IAAL,CAAUd,CAAV,EAAa0F,CAAb,CAAZ;EACD;;EACD,WAAK,IAAIA,CAAC,GAAGvJ,KAAK,GAAG,CAArB,EAAwBuJ,CAAC,GAAG,KAAK0Q,OAAjC,EAA0C1Q,CAAC,EAA3C,EAA+C;EAC7CsmB,QAAAA,MAAM,CAACtmB,CAAC,GAAG,CAAL,CAAN,GAAgB,KAAK5E,IAAL,CAAUd,CAAV,EAAa0F,CAAb,CAAhB;EACD;;EACD,WAAK5E,IAAL,CAAUd,CAAV,IAAegsB,MAAf;EACD;;EACD,SAAK5V,OAAL,IAAgB,CAAhB;EACA,WAAO,IAAP;EACD;;EAED6V,EAAAA,SAAS,CAAC9vB,KAAD,EAAQD,KAAR,EAAe;EACtB,QAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;EAChCA,MAAAA,KAAK,GAAGC,KAAR;EACAA,MAAAA,KAAK,GAAG,KAAKia,OAAb;EACD;;EACDkG,IAAAA,gBAAgB,CAAC,IAAD,EAAOngB,KAAP,EAAc,IAAd,CAAhB;EACAD,IAAAA,KAAK,GAAGwgB,iBAAiB,CAAC,IAAD,EAAOxgB,KAAP,CAAzB;;EACA,SAAK,IAAI8D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKmW,IAAzB,EAA+BnW,CAAC,EAAhC,EAAoC;EAClC,YAAMgsB,MAAM,GAAG,IAAI1a,YAAJ,CAAiB,KAAK8E,OAAL,GAAe,CAAhC,CAAf;EACA,UAAI1Q,CAAC,GAAG,CAAR;;EACA,aAAOA,CAAC,GAAGvJ,KAAX,EAAkBuJ,CAAC,EAAnB,EAAuB;EACrBsmB,QAAAA,MAAM,CAACtmB,CAAD,CAAN,GAAY,KAAK5E,IAAL,CAAUd,CAAV,EAAa0F,CAAb,CAAZ;EACD;;EACDsmB,MAAAA,MAAM,CAACtmB,CAAC,EAAF,CAAN,GAAcxJ,KAAK,CAAC8D,CAAD,CAAnB;;EACA,aAAO0F,CAAC,GAAG,KAAK0Q,OAAL,GAAe,CAA1B,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChCsmB,QAAAA,MAAM,CAACtmB,CAAD,CAAN,GAAY,KAAK5E,IAAL,CAAUd,CAAV,EAAa0F,CAAC,GAAG,CAAjB,CAAZ;EACD;;EACD,WAAK5E,IAAL,CAAUd,CAAV,IAAegsB,MAAf;EACD;;EACD,SAAK5V,OAAL,IAAgB,CAAhB;EACA,WAAO,IAAP;EACD;;EA3GgD;EA8GnDY,qBAAqB,CAACC,cAAD,EAAiBC,MAAjB,CAArB;;EC7iDe,MAAMgV,eAAN,SAA8BjV,cAA9B,CAA6C;EAC1D5S,EAAAA,WAAW,CAACvD,IAAD,EAAO;EAChB;EACA,SAAKA,IAAL,GAAYA,IAAZ;EACA,SAAKqV,IAAL,GAAYrV,IAAI,CAAClF,MAAjB;EACA,SAAKwa,OAAL,GAAetV,IAAI,CAAC,CAAD,CAAJ,CAAQlF,MAAvB;EACD;;EAED0b,EAAAA,GAAG,CAACqT,QAAD,EAAWC,WAAX,EAAwB/uB,KAAxB,EAA+B;EAChC,SAAKiF,IAAL,CAAU6pB,QAAV,EAAoBC,WAApB,IAAmC/uB,KAAnC;EACA,WAAO,IAAP;EACD;;EAED4a,EAAAA,GAAG,CAACkU,QAAD,EAAWC,WAAX,EAAwB;EACzB,WAAO,KAAK9pB,IAAL,CAAU6pB,QAAV,EAAoBC,WAApB,CAAP;EACD;;EAfyD;;ECC7C,MAAMuB,eAAN,CAAsB;EACnC9nB,EAAAA,WAAW,CAACyR,MAAD,EAAS;EAClBA,IAAAA,MAAM,GAAGoW,eAAe,CAAC3U,WAAhB,CAA4BzB,MAA5B,CAAT;EAEA,QAAIsW,EAAE,GAAGtW,MAAM,CAAC8L,KAAP,EAAT;EACA,QAAIzL,IAAI,GAAGiW,EAAE,CAACjW,IAAd;EACA,QAAIC,OAAO,GAAGgW,EAAE,CAAChW,OAAjB;EACA,QAAIiW,WAAW,GAAG,IAAI/a,YAAJ,CAAiB6E,IAAjB,CAAlB;EACA,QAAImW,SAAS,GAAG,CAAhB;EACA,QAAItsB,CAAJ,EAAO0F,CAAP,EAAUgc,CAAV,EAAaS,CAAb,EAAgB6C,CAAhB,EAAmBuH,CAAnB,EAAsBvpB,CAAtB;EACA,QAAIwpB,MAAJ,EAAYC,IAAZ;;EAEA,SAAKzsB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmW,IAAhB,EAAsBnW,CAAC,EAAvB,EAA2B;EACzBqsB,MAAAA,WAAW,CAACrsB,CAAD,CAAX,GAAiBA,CAAjB;EACD;;EAEDwsB,IAAAA,MAAM,GAAG,IAAIlb,YAAJ,CAAiB6E,IAAjB,CAAT;;EAEA,SAAKzQ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0Q,OAAhB,EAAyB1Q,CAAC,EAA1B,EAA8B;EAC5B,WAAK1F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmW,IAAhB,EAAsBnW,CAAC,EAAvB,EAA2B;EACzBwsB,QAAAA,MAAM,CAACxsB,CAAD,CAAN,GAAYosB,EAAE,CAAC3V,GAAH,CAAOzW,CAAP,EAAU0F,CAAV,CAAZ;EACD;;EAED,WAAK1F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmW,IAAhB,EAAsBnW,CAAC,EAAvB,EAA2B;EACzBysB,QAAAA,IAAI,GAAG9lB,IAAI,CAAC+K,GAAL,CAAS1R,CAAT,EAAY0F,CAAZ,CAAP;EACAsf,QAAAA,CAAC,GAAG,CAAJ;;EACA,aAAKtD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+K,IAAhB,EAAsB/K,CAAC,EAAvB,EAA2B;EACzBsD,UAAAA,CAAC,IAAIoH,EAAE,CAAC3V,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,IAAe8K,MAAM,CAAC9K,CAAD,CAA1B;EACD;;EACD8K,QAAAA,MAAM,CAACxsB,CAAD,CAAN,IAAaglB,CAAb;EACAoH,QAAAA,EAAE,CAAC9U,GAAH,CAAOtX,CAAP,EAAU0F,CAAV,EAAa8mB,MAAM,CAACxsB,CAAD,CAAnB;EACD;;EAEDmiB,MAAAA,CAAC,GAAGzc,CAAJ;;EACA,WAAK1F,CAAC,GAAG0F,CAAC,GAAG,CAAb,EAAgB1F,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,YAAI2G,IAAI,CAACC,GAAL,CAAS4lB,MAAM,CAACxsB,CAAD,CAAf,IAAsB2G,IAAI,CAACC,GAAL,CAAS4lB,MAAM,CAACrK,CAAD,CAAf,CAA1B,EAA+C;EAC7CA,UAAAA,CAAC,GAAGniB,CAAJ;EACD;EACF;;EAED,UAAImiB,CAAC,KAAKzc,CAAV,EAAa;EACX,aAAKgc,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGtL,OAAhB,EAAyBsL,CAAC,EAA1B,EAA8B;EAC5B6K,UAAAA,CAAC,GAAGH,EAAE,CAAC3V,GAAH,CAAO0L,CAAP,EAAUT,CAAV,CAAJ;EACA0K,UAAAA,EAAE,CAAC9U,GAAH,CAAO6K,CAAP,EAAUT,CAAV,EAAa0K,EAAE,CAAC3V,GAAH,CAAO/Q,CAAP,EAAUgc,CAAV,CAAb;EACA0K,UAAAA,EAAE,CAAC9U,GAAH,CAAO5R,CAAP,EAAUgc,CAAV,EAAa6K,CAAb;EACD;;EAEDvpB,QAAAA,CAAC,GAAGqpB,WAAW,CAAClK,CAAD,CAAf;EACAkK,QAAAA,WAAW,CAAClK,CAAD,CAAX,GAAiBkK,WAAW,CAAC3mB,CAAD,CAA5B;EACA2mB,QAAAA,WAAW,CAAC3mB,CAAD,CAAX,GAAiB1C,CAAjB;EAEAspB,QAAAA,SAAS,GAAG,CAACA,SAAb;EACD;;EAED,UAAI5mB,CAAC,GAAGyQ,IAAJ,IAAYiW,EAAE,CAAC3V,GAAH,CAAO/Q,CAAP,EAAUA,CAAV,MAAiB,CAAjC,EAAoC;EAClC,aAAK1F,CAAC,GAAG0F,CAAC,GAAG,CAAb,EAAgB1F,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7BosB,UAAAA,EAAE,CAAC9U,GAAH,CAAOtX,CAAP,EAAU0F,CAAV,EAAa0mB,EAAE,CAAC3V,GAAH,CAAOzW,CAAP,EAAU0F,CAAV,IAAe0mB,EAAE,CAAC3V,GAAH,CAAO/Q,CAAP,EAAUA,CAAV,CAA5B;EACD;EACF;EACF;;EAED,SAAKgnB,EAAL,GAAUN,EAAV;EACA,SAAKC,WAAL,GAAmBA,WAAnB;EACA,SAAKC,SAAL,GAAiBA,SAAjB;EACD;;EAEDK,EAAAA,UAAU,GAAG;EACX,QAAI7rB,IAAI,GAAG,KAAK4rB,EAAhB;EACA,QAAIE,GAAG,GAAG9rB,IAAI,CAACsV,OAAf;;EACA,SAAK,IAAI1Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGknB,GAApB,EAAyBlnB,CAAC,EAA1B,EAA8B;EAC5B,UAAI5E,IAAI,CAAC2V,GAAL,CAAS/Q,CAAT,EAAYA,CAAZ,MAAmB,CAAvB,EAA0B;EACxB,eAAO,IAAP;EACD;EACF;;EACD,WAAO,KAAP;EACD;;EAEDmnB,EAAAA,KAAK,CAAChxB,KAAD,EAAQ;EACXA,IAAAA,KAAK,GAAGqb,MAAM,CAACK,WAAP,CAAmB1b,KAAnB,CAAR;EAEA,QAAIuwB,EAAE,GAAG,KAAKM,EAAd;EACA,QAAIvW,IAAI,GAAGiW,EAAE,CAACjW,IAAd;;EAEA,QAAIA,IAAI,KAAKta,KAAK,CAACsa,IAAnB,EAAyB;EACvB,YAAM,IAAI7Z,KAAJ,CAAU,2BAAV,CAAN;EACD;;EACD,QAAI,KAAKqwB,UAAL,EAAJ,EAAuB;EACrB,YAAM,IAAIrwB,KAAJ,CAAU,uBAAV,CAAN;EACD;;EAED,QAAIwwB,KAAK,GAAGjxB,KAAK,CAACua,OAAlB;EACA,QAAI2W,CAAC,GAAGlxB,KAAK,CAAC0uB,YAAN,CAAmB,KAAK8B,WAAxB,EAAqC,CAArC,EAAwCS,KAAK,GAAG,CAAhD,CAAR;EACA,QAAI1W,OAAO,GAAGgW,EAAE,CAAChW,OAAjB;EACA,QAAIpW,CAAJ,EAAO0F,CAAP,EAAUgc,CAAV;;EAEA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGtL,OAAhB,EAAyBsL,CAAC,EAA1B,EAA8B;EAC5B,WAAK1hB,CAAC,GAAG0hB,CAAC,GAAG,CAAb,EAAgB1hB,CAAC,GAAGoW,OAApB,EAA6BpW,CAAC,EAA9B,EAAkC;EAChC,aAAK0F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGonB,KAAhB,EAAuBpnB,CAAC,EAAxB,EAA4B;EAC1BqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAcqnB,CAAC,CAACtW,GAAF,CAAMiL,CAAN,EAAShc,CAAT,IAAc0mB,EAAE,CAAC3V,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAAxC;EACD;EACF;EACF;;EACD,SAAKA,CAAC,GAAGtL,OAAO,GAAG,CAAnB,EAAsBsL,CAAC,IAAI,CAA3B,EAA8BA,CAAC,EAA/B,EAAmC;EACjC,WAAKhc,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGonB,KAAhB,EAAuBpnB,CAAC,EAAxB,EAA4B;EAC1BqnB,QAAAA,CAAC,CAACzV,GAAF,CAAMoK,CAAN,EAAShc,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMiL,CAAN,EAAShc,CAAT,IAAc0mB,EAAE,CAAC3V,GAAH,CAAOiL,CAAP,EAAUA,CAAV,CAA1B;EACD;;EACD,WAAK1hB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0hB,CAAhB,EAAmB1hB,CAAC,EAApB,EAAwB;EACtB,aAAK0F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGonB,KAAhB,EAAuBpnB,CAAC,EAAxB,EAA4B;EAC1BqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAcqnB,CAAC,CAACtW,GAAF,CAAMiL,CAAN,EAAShc,CAAT,IAAc0mB,EAAE,CAAC3V,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAAxC;EACD;EACF;EACF;;EACD,WAAOqL,CAAP;EACD;;EAEc,MAAXC,WAAW,GAAG;EAChB,QAAIlsB,IAAI,GAAG,KAAK4rB,EAAhB;;EACA,QAAI,CAAC5rB,IAAI,CAACsgB,QAAL,EAAL,EAAsB;EACpB,YAAM,IAAI9kB,KAAJ,CAAU,uBAAV,CAAN;EACD;;EACD,QAAI0wB,WAAW,GAAG,KAAKV,SAAvB;EACA,QAAIM,GAAG,GAAG9rB,IAAI,CAACsV,OAAf;;EACA,SAAK,IAAI1Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGknB,GAApB,EAAyBlnB,CAAC,EAA1B,EAA8B;EAC5BsnB,MAAAA,WAAW,IAAIlsB,IAAI,CAAC2V,GAAL,CAAS/Q,CAAT,EAAYA,CAAZ,CAAf;EACD;;EACD,WAAOsnB,WAAP;EACD;;EAEwB,MAArBC,qBAAqB,GAAG;EAC1B,QAAInsB,IAAI,GAAG,KAAK4rB,EAAhB;EACA,QAAIvW,IAAI,GAAGrV,IAAI,CAACqV,IAAhB;EACA,QAAIC,OAAO,GAAGtV,IAAI,CAACsV,OAAnB;EACA,QAAI2W,CAAC,GAAG,IAAI7V,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAR;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChC,YAAI1F,CAAC,GAAG0F,CAAR,EAAW;EACTqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY5E,IAAI,CAAC2V,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAZ;EACD,SAFD,MAEO,IAAI1F,CAAC,KAAK0F,CAAV,EAAa;EAClBqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY,CAAZ;EACD,SAFM,MAEA;EACLqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY,CAAZ;EACD;EACF;EACF;;EACD,WAAOqnB,CAAP;EACD;;EAEwB,MAArBG,qBAAqB,GAAG;EAC1B,QAAIpsB,IAAI,GAAG,KAAK4rB,EAAhB;EACA,QAAIvW,IAAI,GAAGrV,IAAI,CAACqV,IAAhB;EACA,QAAIC,OAAO,GAAGtV,IAAI,CAACsV,OAAnB;EACA,QAAI2W,CAAC,GAAG,IAAI7V,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAR;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmW,IAApB,EAA0BnW,CAAC,EAA3B,EAA+B;EAC7B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0Q,OAApB,EAA6B1Q,CAAC,EAA9B,EAAkC;EAChC,YAAI1F,CAAC,IAAI0F,CAAT,EAAY;EACVqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY5E,IAAI,CAAC2V,GAAL,CAASzW,CAAT,EAAY0F,CAAZ,CAAZ;EACD,SAFD,MAEO;EACLqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY,CAAZ;EACD;EACF;EACF;;EACD,WAAOqnB,CAAP;EACD;;EAEyB,MAAtBI,sBAAsB,GAAG;EAC3B,WAAOptB,KAAK,CAACwR,IAAN,CAAW,KAAK8a,WAAhB,CAAP;EACD;;EAtKkC;;ECH9B,SAASe,UAAT,CAAoBnkB,CAApB,EAAuBmH,CAAvB,EAA0B;EAC/B,MAAI+M,CAAC,GAAG,CAAR;;EACA,MAAIxW,IAAI,CAACC,GAAL,CAASqC,CAAT,IAActC,IAAI,CAACC,GAAL,CAASwJ,CAAT,CAAlB,EAA+B;EAC7B+M,IAAAA,CAAC,GAAG/M,CAAC,GAAGnH,CAAR;EACA,WAAOtC,IAAI,CAACC,GAAL,CAASqC,CAAT,IAActC,IAAI,CAACkV,IAAL,CAAU,IAAIsB,CAAC,GAAGA,CAAlB,CAArB;EACD;;EACD,MAAI/M,CAAC,KAAK,CAAV,EAAa;EACX+M,IAAAA,CAAC,GAAGlU,CAAC,GAAGmH,CAAR;EACA,WAAOzJ,IAAI,CAACC,GAAL,CAASwJ,CAAT,IAAczJ,IAAI,CAACkV,IAAL,CAAU,IAAIsB,CAAC,GAAGA,CAAlB,CAArB;EACD;;EACD,SAAO,CAAP;EACD;;ECNc,MAAMkQ,eAAN,CAAsB;EACnChpB,EAAAA,WAAW,CAACxI,KAAD,EAAQ;EACjBA,IAAAA,KAAK,GAAGqwB,eAAe,CAAC3U,WAAhB,CAA4B1b,KAA5B,CAAR;EAEA,QAAIyxB,EAAE,GAAGzxB,KAAK,CAAC+lB,KAAN,EAAT;EACA,QAAII,CAAC,GAAGnmB,KAAK,CAACsa,IAAd;EACA,QAAI8L,CAAC,GAAGpmB,KAAK,CAACua,OAAd;EACA,QAAImX,KAAK,GAAG,IAAIjc,YAAJ,CAAiB2Q,CAAjB,CAAZ;EACA,QAAIjiB,CAAJ,EAAO0F,CAAP,EAAUgc,CAAV,EAAasD,CAAb;;EAEA,SAAKtD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGO,CAAhB,EAAmBP,CAAC,EAApB,EAAwB;EACtB,UAAI8L,GAAG,GAAG,CAAV;;EACA,WAAKxtB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGgiB,CAAhB,EAAmBhiB,CAAC,EAApB,EAAwB;EACtBwtB,QAAAA,GAAG,GAAGJ,UAAU,CAACI,GAAD,EAAMF,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAAN,CAAhB;EACD;;EACD,UAAI8L,GAAG,KAAK,CAAZ,EAAe;EACb,YAAIF,EAAE,CAAC7W,GAAH,CAAOiL,CAAP,EAAUA,CAAV,IAAe,CAAnB,EAAsB;EACpB8L,UAAAA,GAAG,GAAG,CAACA,GAAP;EACD;;EACD,aAAKxtB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGgiB,CAAhB,EAAmBhiB,CAAC,EAApB,EAAwB;EACtBstB,UAAAA,EAAE,CAAChW,GAAH,CAAOtX,CAAP,EAAU0hB,CAAV,EAAa4L,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,IAAe8L,GAA5B;EACD;;EACDF,QAAAA,EAAE,CAAChW,GAAH,CAAOoK,CAAP,EAAUA,CAAV,EAAa4L,EAAE,CAAC7W,GAAH,CAAOiL,CAAP,EAAUA,CAAV,IAAe,CAA5B;;EACA,aAAKhc,CAAC,GAAGgc,CAAC,GAAG,CAAb,EAAgBhc,CAAC,GAAGuc,CAApB,EAAuBvc,CAAC,EAAxB,EAA4B;EAC1Bsf,UAAAA,CAAC,GAAG,CAAJ;;EACA,eAAKhlB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGgiB,CAAhB,EAAmBhiB,CAAC,EAApB,EAAwB;EACtBglB,YAAAA,CAAC,IAAIsI,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,IAAe4L,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0F,CAAV,CAApB;EACD;;EACDsf,UAAAA,CAAC,GAAG,CAACA,CAAD,GAAKsI,EAAE,CAAC7W,GAAH,CAAOiL,CAAP,EAAUA,CAAV,CAAT;;EACA,eAAK1hB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGgiB,CAAhB,EAAmBhiB,CAAC,EAApB,EAAwB;EACtBstB,YAAAA,EAAE,CAAChW,GAAH,CAAOtX,CAAP,EAAU0F,CAAV,EAAa4nB,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0F,CAAV,IAAesf,CAAC,GAAGsI,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAAhC;EACD;EACF;EACF;;EACD6L,MAAAA,KAAK,CAAC7L,CAAD,CAAL,GAAW,CAAC8L,GAAZ;EACD;;EAED,SAAKC,EAAL,GAAUH,EAAV;EACA,SAAKI,KAAL,GAAaH,KAAb;EACD;;EAEDV,EAAAA,KAAK,CAAChxB,KAAD,EAAQ;EACXA,IAAAA,KAAK,GAAGqb,MAAM,CAACK,WAAP,CAAmB1b,KAAnB,CAAR;EAEA,QAAIyxB,EAAE,GAAG,KAAKG,EAAd;EACA,QAAIzL,CAAC,GAAGsL,EAAE,CAACnX,IAAX;;EAEA,QAAIta,KAAK,CAACsa,IAAN,KAAe6L,CAAnB,EAAsB;EACpB,YAAM,IAAI1lB,KAAJ,CAAU,kCAAV,CAAN;EACD;;EACD,QAAI,CAAC,KAAKqxB,UAAL,EAAL,EAAwB;EACtB,YAAM,IAAIrxB,KAAJ,CAAU,0BAAV,CAAN;EACD;;EAED,QAAIwwB,KAAK,GAAGjxB,KAAK,CAACua,OAAlB;EACA,QAAI2W,CAAC,GAAGlxB,KAAK,CAAC+lB,KAAN,EAAR;EACA,QAAIK,CAAC,GAAGqL,EAAE,CAAClX,OAAX;EACA,QAAIpW,CAAJ,EAAO0F,CAAP,EAAUgc,CAAV,EAAasD,CAAb;;EAEA,SAAKtD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGO,CAAhB,EAAmBP,CAAC,EAApB,EAAwB;EACtB,WAAKhc,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGonB,KAAhB,EAAuBpnB,CAAC,EAAxB,EAA4B;EAC1Bsf,QAAAA,CAAC,GAAG,CAAJ;;EACA,aAAKhlB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGgiB,CAAhB,EAAmBhiB,CAAC,EAApB,EAAwB;EACtBglB,UAAAA,CAAC,IAAIsI,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,IAAeqL,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAApB;EACD;;EACDsf,QAAAA,CAAC,GAAG,CAACA,CAAD,GAAKsI,EAAE,CAAC7W,GAAH,CAAOiL,CAAP,EAAUA,CAAV,CAAT;;EACA,aAAK1hB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGgiB,CAAhB,EAAmBhiB,CAAC,EAApB,EAAwB;EACtB+sB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAcsf,CAAC,GAAGsI,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAA9B;EACD;EACF;EACF;;EACD,SAAKA,CAAC,GAAGO,CAAC,GAAG,CAAb,EAAgBP,CAAC,IAAI,CAArB,EAAwBA,CAAC,EAAzB,EAA6B;EAC3B,WAAKhc,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGonB,KAAhB,EAAuBpnB,CAAC,EAAxB,EAA4B;EAC1BqnB,QAAAA,CAAC,CAACzV,GAAF,CAAMoK,CAAN,EAAShc,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMiL,CAAN,EAAShc,CAAT,IAAc,KAAKgoB,KAAL,CAAWhM,CAAX,CAA1B;EACD;;EACD,WAAK1hB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0hB,CAAhB,EAAmB1hB,CAAC,EAApB,EAAwB;EACtB,aAAK0F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGonB,KAAhB,EAAuBpnB,CAAC,EAAxB,EAA4B;EAC1BqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAcqnB,CAAC,CAACtW,GAAF,CAAMiL,CAAN,EAAShc,CAAT,IAAc4nB,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAAxC;EACD;EACF;EACF;;EAED,WAAOqL,CAAC,CAAC5D,SAAF,CAAY,CAAZ,EAAelH,CAAC,GAAG,CAAnB,EAAsB,CAAtB,EAAyB6K,KAAK,GAAG,CAAjC,CAAP;EACD;;EAEDa,EAAAA,UAAU,GAAG;EACX,QAAIvX,OAAO,GAAG,KAAKqX,EAAL,CAAQrX,OAAtB;;EACA,SAAK,IAAIpW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoW,OAApB,EAA6BpW,CAAC,EAA9B,EAAkC;EAChC,UAAI,KAAK0tB,KAAL,CAAW1tB,CAAX,MAAkB,CAAtB,EAAyB;EACvB,eAAO,KAAP;EACD;EACF;;EACD,WAAO,IAAP;EACD;;EAEwB,MAArBktB,qBAAqB,GAAG;EAC1B,QAAII,EAAE,GAAG,KAAKG,EAAd;EACA,QAAIxL,CAAC,GAAGqL,EAAE,CAAClX,OAAX;EACA,QAAI2W,CAAC,GAAG,IAAI7V,MAAJ,CAAW+K,CAAX,EAAcA,CAAd,CAAR;EACA,QAAIjiB,CAAJ,EAAO0F,CAAP;;EACA,SAAK1F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiiB,CAAhB,EAAmBjiB,CAAC,EAApB,EAAwB;EACtB,WAAK0F,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuc,CAAhB,EAAmBvc,CAAC,EAApB,EAAwB;EACtB,YAAI1F,CAAC,GAAG0F,CAAR,EAAW;EACTqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY4nB,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0F,CAAV,CAAZ;EACD,SAFD,MAEO,IAAI1F,CAAC,KAAK0F,CAAV,EAAa;EAClBqnB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY,KAAKgoB,KAAL,CAAW1tB,CAAX,CAAZ;EACD,SAFM,MAEA;EACL+sB,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY,CAAZ;EACD;EACF;EACF;;EACD,WAAOqnB,CAAP;EACD;;EAEmB,MAAhBa,gBAAgB,GAAG;EACrB,QAAIN,EAAE,GAAG,KAAKG,EAAd;EACA,QAAItX,IAAI,GAAGmX,EAAE,CAACnX,IAAd;EACA,QAAIC,OAAO,GAAGkX,EAAE,CAAClX,OAAjB;EACA,QAAI2W,CAAC,GAAG,IAAI7V,MAAJ,CAAWf,IAAX,EAAiBC,OAAjB,CAAR;EACA,QAAIpW,CAAJ,EAAO0F,CAAP,EAAUgc,CAAV,EAAasD,CAAb;;EAEA,SAAKtD,CAAC,GAAGtL,OAAO,GAAG,CAAnB,EAAsBsL,CAAC,IAAI,CAA3B,EAA8BA,CAAC,EAA/B,EAAmC;EACjC,WAAK1hB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmW,IAAhB,EAAsBnW,CAAC,EAAvB,EAA2B;EACzB+sB,QAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY,CAAZ;EACD;;EACDqL,MAAAA,CAAC,CAACzV,GAAF,CAAMoK,CAAN,EAASA,CAAT,EAAY,CAAZ;;EACA,WAAKhc,CAAC,GAAGgc,CAAT,EAAYhc,CAAC,GAAG0Q,OAAhB,EAAyB1Q,CAAC,EAA1B,EAA8B;EAC5B,YAAI4nB,EAAE,CAAC7W,GAAH,CAAOiL,CAAP,EAAUA,CAAV,MAAiB,CAArB,EAAwB;EACtBsD,UAAAA,CAAC,GAAG,CAAJ;;EACA,eAAKhlB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGmW,IAAhB,EAAsBnW,CAAC,EAAvB,EAA2B;EACzBglB,YAAAA,CAAC,IAAIsI,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,IAAeqL,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAApB;EACD;;EAEDsf,UAAAA,CAAC,GAAG,CAACA,CAAD,GAAKsI,EAAE,CAAC7W,GAAH,CAAOiL,CAAP,EAAUA,CAAV,CAAT;;EAEA,eAAK1hB,CAAC,GAAG0hB,CAAT,EAAY1hB,CAAC,GAAGmW,IAAhB,EAAsBnW,CAAC,EAAvB,EAA2B;EACzB+sB,YAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYqnB,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAcsf,CAAC,GAAGsI,EAAE,CAAC7W,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,CAA9B;EACD;EACF;EACF;EACF;;EACD,WAAOqL,CAAP;EACD;;EA9IkC;;ECAtB,MAAMc,0BAAN,CAAiC;EAC9CxpB,EAAAA,WAAW,CAACxI,KAAD,EAAsB;EAAA,QAAd8L,OAAc,uEAAJ,EAAI;EAC/B9L,IAAAA,KAAK,GAAGqwB,eAAe,CAAC3U,WAAhB,CAA4B1b,KAA5B,CAAR;;EAEA,QAAIA,KAAK,CAACgiB,OAAN,EAAJ,EAAqB;EACnB,YAAM,IAAIvhB,KAAJ,CAAU,0BAAV,CAAN;EACD;;EAED,QAAI0lB,CAAC,GAAGnmB,KAAK,CAACsa,IAAd;EACA,QAAI8L,CAAC,GAAGpmB,KAAK,CAACua,OAAd;EAEA,UAAM;EACJ0X,MAAAA,0BAA0B,GAAG,IADzB;EAEJC,MAAAA,2BAA2B,GAAG,IAF1B;EAGJC,MAAAA,aAAa,GAAG;EAHZ,QAIFrmB,OAJJ;EAMA,QAAIsmB,KAAK,GAAGC,OAAO,CAACJ,0BAAD,CAAnB;EACA,QAAIK,KAAK,GAAGD,OAAO,CAACH,2BAAD,CAAnB;EAEA,QAAIK,OAAO,GAAG,KAAd;EACA,QAAInlB,CAAJ;;EACA,QAAI+Y,CAAC,GAAGC,CAAR,EAAW;EACT,UAAI,CAAC+L,aAAL,EAAoB;EAClB/kB,QAAAA,CAAC,GAAGpN,KAAK,CAAC+lB,KAAN,EAAJ,CADkB;;EAGlB8G,QAAAA,OAAO,CAACC,IAAR,CACE,wFADF;EAGD,OAND,MAMO;EACL1f,QAAAA,CAAC,GAAGpN,KAAK,CAACouB,SAAN,EAAJ;EACAjI,QAAAA,CAAC,GAAG/Y,CAAC,CAACkN,IAAN;EACA8L,QAAAA,CAAC,GAAGhZ,CAAC,CAACmN,OAAN;EACAgY,QAAAA,OAAO,GAAG,IAAV;EACA,YAAIC,GAAG,GAAGJ,KAAV;EACAA,QAAAA,KAAK,GAAGE,KAAR;EACAA,QAAAA,KAAK,GAAGE,GAAR;EACD;EACF,KAhBD,MAgBO;EACLplB,MAAAA,CAAC,GAAGpN,KAAK,CAAC+lB,KAAN,EAAJ;EACD;;EAED,QAAI0M,EAAE,GAAG3nB,IAAI,CAAC+K,GAAL,CAASsQ,CAAT,EAAYC,CAAZ,CAAT;EACA,QAAIsM,EAAE,GAAG5nB,IAAI,CAAC+K,GAAL,CAASsQ,CAAC,GAAG,CAAb,EAAgBC,CAAhB,CAAT;EACA,QAAI+C,CAAC,GAAG,IAAI1T,YAAJ,CAAiBid,EAAjB,CAAR;EACA,QAAIC,CAAC,GAAG,IAAItX,MAAJ,CAAW8K,CAAX,EAAcsM,EAAd,CAAR;EACA,QAAIG,CAAC,GAAG,IAAIvX,MAAJ,CAAW+K,CAAX,EAAcA,CAAd,CAAR;EAEA,QAAIlS,CAAC,GAAG,IAAIuB,YAAJ,CAAiB2Q,CAAjB,CAAR;EACA,QAAIyM,IAAI,GAAG,IAAIpd,YAAJ,CAAiB0Q,CAAjB,CAAX;EAEA,QAAI2M,EAAE,GAAG,IAAIrd,YAAJ,CAAiBid,EAAjB,CAAT;;EACA,SAAK,IAAIvuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuuB,EAApB,EAAwBvuB,CAAC,EAAzB,EAA6B2uB,EAAE,CAAC3uB,CAAD,CAAF,GAAQA,CAAR;;EAE7B,QAAI4uB,GAAG,GAAGjoB,IAAI,CAAC+K,GAAL,CAASsQ,CAAC,GAAG,CAAb,EAAgBC,CAAhB,CAAV;EACA,QAAI4M,GAAG,GAAGloB,IAAI,CAACiL,GAAL,CAAS,CAAT,EAAYjL,IAAI,CAAC+K,GAAL,CAASuQ,CAAC,GAAG,CAAb,EAAgBD,CAAhB,CAAZ,CAAV;EACA,QAAI8M,GAAG,GAAGnoB,IAAI,CAACiL,GAAL,CAASgd,GAAT,EAAcC,GAAd,CAAV;;EAEA,SAAK,IAAInN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoN,GAApB,EAAyBpN,CAAC,EAA1B,EAA8B;EAC5B,UAAIA,CAAC,GAAGkN,GAAR,EAAa;EACX5J,QAAAA,CAAC,CAACtD,CAAD,CAAD,GAAO,CAAP;;EACA,aAAK,IAAI1hB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BglB,UAAAA,CAAC,CAACtD,CAAD,CAAD,GAAO0L,UAAU,CAACpI,CAAC,CAACtD,CAAD,CAAF,EAAOzY,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAAP,CAAjB;EACD;;EACD,YAAIsD,CAAC,CAACtD,CAAD,CAAD,KAAS,CAAb,EAAgB;EACd,cAAIzY,CAAC,CAACwN,GAAF,CAAMiL,CAAN,EAASA,CAAT,IAAc,CAAlB,EAAqB;EACnBsD,YAAAA,CAAC,CAACtD,CAAD,CAAD,GAAO,CAACsD,CAAC,CAACtD,CAAD,CAAT;EACD;;EACD,eAAK,IAAI1hB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BiJ,YAAAA,CAAC,CAACqO,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAYzY,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,IAAcsD,CAAC,CAACtD,CAAD,CAA3B;EACD;;EACDzY,UAAAA,CAAC,CAACqO,GAAF,CAAMoK,CAAN,EAASA,CAAT,EAAYzY,CAAC,CAACwN,GAAF,CAAMiL,CAAN,EAASA,CAAT,IAAc,CAA1B;EACD;;EACDsD,QAAAA,CAAC,CAACtD,CAAD,CAAD,GAAO,CAACsD,CAAC,CAACtD,CAAD,CAAT;EACD;;EAED,WAAK,IAAIhc,CAAC,GAAGgc,CAAC,GAAG,CAAjB,EAAoBhc,CAAC,GAAGuc,CAAxB,EAA2Bvc,CAAC,EAA5B,EAAgC;EAC9B,YAAIgc,CAAC,GAAGkN,GAAJ,IAAW5J,CAAC,CAACtD,CAAD,CAAD,KAAS,CAAxB,EAA2B;EACzB,cAAI6K,CAAC,GAAG,CAAR;;EACA,eAAK,IAAIvsB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BusB,YAAAA,CAAC,IAAItjB,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,IAAczY,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAnB;EACD;;EACD6mB,UAAAA,CAAC,GAAG,CAACA,CAAD,GAAKtjB,CAAC,CAACwN,GAAF,CAAMiL,CAAN,EAASA,CAAT,CAAT;;EACA,eAAK,IAAI1hB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BiJ,YAAAA,CAAC,CAACqO,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYuD,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAc6mB,CAAC,GAAGtjB,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAA9B;EACD;EACF;;EACD3R,QAAAA,CAAC,CAACrK,CAAD,CAAD,GAAOuD,CAAC,CAACwN,GAAF,CAAMiL,CAAN,EAAShc,CAAT,CAAP;EACD;;EAED,UAAIuoB,KAAK,IAAIvM,CAAC,GAAGkN,GAAjB,EAAsB;EACpB,aAAK,IAAI5uB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BwuB,UAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAYzY,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAAZ;EACD;EACF;;EAED,UAAIA,CAAC,GAAGmN,GAAR,EAAa;EACX9e,QAAAA,CAAC,CAAC2R,CAAD,CAAD,GAAO,CAAP;;EACA,aAAK,IAAI1hB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGiiB,CAAxB,EAA2BjiB,CAAC,EAA5B,EAAgC;EAC9B+P,UAAAA,CAAC,CAAC2R,CAAD,CAAD,GAAO0L,UAAU,CAACrd,CAAC,CAAC2R,CAAD,CAAF,EAAO3R,CAAC,CAAC/P,CAAD,CAAR,CAAjB;EACD;;EACD,YAAI+P,CAAC,CAAC2R,CAAD,CAAD,KAAS,CAAb,EAAgB;EACd,cAAI3R,CAAC,CAAC2R,CAAC,GAAG,CAAL,CAAD,GAAW,CAAf,EAAkB;EAChB3R,YAAAA,CAAC,CAAC2R,CAAD,CAAD,GAAO,IAAI3R,CAAC,CAAC2R,CAAD,CAAZ;EACD;;EACD,eAAK,IAAI1hB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGiiB,CAAxB,EAA2BjiB,CAAC,EAA5B,EAAgC;EAC9B+P,YAAAA,CAAC,CAAC/P,CAAD,CAAD,IAAQ+P,CAAC,CAAC2R,CAAD,CAAT;EACD;;EACD3R,UAAAA,CAAC,CAAC2R,CAAC,GAAG,CAAL,CAAD,IAAY,CAAZ;EACD;;EACD3R,QAAAA,CAAC,CAAC2R,CAAD,CAAD,GAAO,CAAC3R,CAAC,CAAC2R,CAAD,CAAT;;EACA,YAAIA,CAAC,GAAG,CAAJ,GAAQM,CAAR,IAAajS,CAAC,CAAC2R,CAAD,CAAD,KAAS,CAA1B,EAA6B;EAC3B,eAAK,IAAI1hB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGgiB,CAAxB,EAA2BhiB,CAAC,EAA5B,EAAgC;EAC9B0uB,YAAAA,IAAI,CAAC1uB,CAAD,CAAJ,GAAU,CAAV;EACD;;EACD,eAAK,IAAIA,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGgiB,CAAxB,EAA2BhiB,CAAC,EAA5B,EAAgC;EAC9B,iBAAK,IAAI0F,CAAC,GAAGgc,CAAC,GAAG,CAAjB,EAAoBhc,CAAC,GAAGuc,CAAxB,EAA2Bvc,CAAC,EAA5B,EAAgC;EAC9BgpB,cAAAA,IAAI,CAAC1uB,CAAD,CAAJ,IAAW+P,CAAC,CAACrK,CAAD,CAAD,GAAOuD,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAlB;EACD;EACF;;EACD,eAAK,IAAIA,CAAC,GAAGgc,CAAC,GAAG,CAAjB,EAAoBhc,CAAC,GAAGuc,CAAxB,EAA2Bvc,CAAC,EAA5B,EAAgC;EAC9B,gBAAI6mB,CAAC,GAAG,CAACxc,CAAC,CAACrK,CAAD,CAAF,GAAQqK,CAAC,CAAC2R,CAAC,GAAG,CAAL,CAAjB;;EACA,iBAAK,IAAI1hB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGgiB,CAAxB,EAA2BhiB,CAAC,EAA5B,EAAgC;EAC9BiJ,cAAAA,CAAC,CAACqO,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYuD,CAAC,CAACwN,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAc6mB,CAAC,GAAGmC,IAAI,CAAC1uB,CAAD,CAAlC;EACD;EACF;EACF;;EACD,YAAImuB,KAAJ,EAAW;EACT,eAAK,IAAInuB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGiiB,CAAxB,EAA2BjiB,CAAC,EAA5B,EAAgC;EAC9ByuB,YAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY3R,CAAC,CAAC/P,CAAD,CAAb;EACD;EACF;EACF;EACF;;EAED,QAAImiB,CAAC,GAAGxb,IAAI,CAAC+K,GAAL,CAASuQ,CAAT,EAAYD,CAAC,GAAG,CAAhB,CAAR;;EACA,QAAI4M,GAAG,GAAG3M,CAAV,EAAa;EACX+C,MAAAA,CAAC,CAAC4J,GAAD,CAAD,GAAS3lB,CAAC,CAACwN,GAAF,CAAMmY,GAAN,EAAWA,GAAX,CAAT;EACD;;EACD,QAAI5M,CAAC,GAAGG,CAAR,EAAW;EACT6C,MAAAA,CAAC,CAAC7C,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX;EACD;;EACD,QAAI0M,GAAG,GAAG,CAAN,GAAU1M,CAAd,EAAiB;EACfpS,MAAAA,CAAC,CAAC8e,GAAD,CAAD,GAAS5lB,CAAC,CAACwN,GAAF,CAAMoY,GAAN,EAAW1M,CAAC,GAAG,CAAf,CAAT;EACD;;EACDpS,IAAAA,CAAC,CAACoS,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX;;EAEA,QAAI8L,KAAJ,EAAW;EACT,WAAK,IAAIvoB,CAAC,GAAGkpB,GAAb,EAAkBlpB,CAAC,GAAG4oB,EAAtB,EAA0B5oB,CAAC,EAA3B,EAA+B;EAC7B,aAAK,IAAI1F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BwuB,UAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY,CAAZ;EACD;;EACD8oB,QAAAA,CAAC,CAAClX,GAAF,CAAM5R,CAAN,EAASA,CAAT,EAAY,CAAZ;EACD;;EACD,WAAK,IAAIgc,CAAC,GAAGkN,GAAG,GAAG,CAAnB,EAAsBlN,CAAC,IAAI,CAA3B,EAA8BA,CAAC,EAA/B,EAAmC;EACjC,YAAIsD,CAAC,CAACtD,CAAD,CAAD,KAAS,CAAb,EAAgB;EACd,eAAK,IAAIhc,CAAC,GAAGgc,CAAC,GAAG,CAAjB,EAAoBhc,CAAC,GAAG4oB,EAAxB,EAA4B5oB,CAAC,EAA7B,EAAiC;EAC/B,gBAAI6mB,CAAC,GAAG,CAAR;;EACA,iBAAK,IAAIvsB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BusB,cAAAA,CAAC,IAAIiC,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,IAAc8M,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAnB;EACD;;EACD6mB,YAAAA,CAAC,GAAG,CAACA,CAAD,GAAKiC,CAAC,CAAC/X,GAAF,CAAMiL,CAAN,EAASA,CAAT,CAAT;;EACA,iBAAK,IAAI1hB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BwuB,cAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY8oB,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAc6mB,CAAC,GAAGiC,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAA9B;EACD;EACF;;EACD,eAAK,IAAI1hB,CAAC,GAAG0hB,CAAb,EAAgB1hB,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BwuB,YAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY,CAAC8M,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAAb;EACD;;EACD8M,UAAAA,CAAC,CAAClX,GAAF,CAAMoK,CAAN,EAASA,CAAT,EAAY,IAAI8M,CAAC,CAAC/X,GAAF,CAAMiL,CAAN,EAASA,CAAT,CAAhB;;EACA,eAAK,IAAI1hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0hB,CAAC,GAAG,CAAxB,EAA2B1hB,CAAC,EAA5B,EAAgC;EAC9BwuB,YAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY,CAAZ;EACD;EACF,SAlBD,MAkBO;EACL,eAAK,IAAI1hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BwuB,YAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY,CAAZ;EACD;;EACD8M,UAAAA,CAAC,CAAClX,GAAF,CAAMoK,CAAN,EAASA,CAAT,EAAY,CAAZ;EACD;EACF;EACF;;EAED,QAAIyM,KAAJ,EAAW;EACT,WAAK,IAAIzM,CAAC,GAAGO,CAAC,GAAG,CAAjB,EAAoBP,CAAC,IAAI,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;EAC/B,YAAIA,CAAC,GAAGmN,GAAJ,IAAW9e,CAAC,CAAC2R,CAAD,CAAD,KAAS,CAAxB,EAA2B;EACzB,eAAK,IAAIhc,CAAC,GAAGgc,CAAC,GAAG,CAAjB,EAAoBhc,CAAC,GAAGuc,CAAxB,EAA2Bvc,CAAC,EAA5B,EAAgC;EAC9B,gBAAI6mB,CAAC,GAAG,CAAR;;EACA,iBAAK,IAAIvsB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGiiB,CAAxB,EAA2BjiB,CAAC,EAA5B,EAAgC;EAC9BusB,cAAAA,CAAC,IAAIkC,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,IAAc+M,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAnB;EACD;;EACD6mB,YAAAA,CAAC,GAAG,CAACA,CAAD,GAAKkC,CAAC,CAAChY,GAAF,CAAMiL,CAAC,GAAG,CAAV,EAAaA,CAAb,CAAT;;EACA,iBAAK,IAAI1hB,CAAC,GAAG0hB,CAAC,GAAG,CAAjB,EAAoB1hB,CAAC,GAAGiiB,CAAxB,EAA2BjiB,CAAC,EAA5B,EAAgC;EAC9ByuB,cAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY+oB,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAc6mB,CAAC,GAAGkC,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAA9B;EACD;EACF;EACF;;EACD,aAAK,IAAI1hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuBjiB,CAAC,EAAxB,EAA4B;EAC1ByuB,UAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY,CAAZ;EACD;;EACD+M,QAAAA,CAAC,CAACnX,GAAF,CAAMoK,CAAN,EAASA,CAAT,EAAY,CAAZ;EACD;EACF;;EAED,QAAIqN,EAAE,GAAG5M,CAAC,GAAG,CAAb;EAEA,QAAI6M,GAAG,GAAGxvB,MAAM,CAACyvB,OAAjB;;EACA,WAAO9M,CAAC,GAAG,CAAX,EAAc;EACZ,UAAIT,CAAJ,EAAOwN,IAAP;;EACA,WAAKxN,CAAC,GAAGS,CAAC,GAAG,CAAb,EAAgBT,CAAC,IAAI,CAAC,CAAtB,EAAyBA,CAAC,EAA1B,EAA8B;EAC5B,YAAIA,CAAC,KAAK,CAAC,CAAX,EAAc;EACZ;EACD;;EACD,cAAMyN,KAAK,GACT3vB,MAAM,CAAC4vB,SAAP,GAAmBJ,GAAG,GAAGroB,IAAI,CAACC,GAAL,CAASoe,CAAC,CAACtD,CAAD,CAAD,GAAO/a,IAAI,CAACC,GAAL,CAASoe,CAAC,CAACtD,CAAC,GAAG,CAAL,CAAV,CAAhB,CAD3B;;EAEA,YAAI/a,IAAI,CAACC,GAAL,CAASmJ,CAAC,CAAC2R,CAAD,CAAV,KAAkByN,KAAlB,IAA2B3vB,MAAM,CAACqE,KAAP,CAAakM,CAAC,CAAC2R,CAAD,CAAd,CAA/B,EAAmD;EACjD3R,UAAAA,CAAC,CAAC2R,CAAD,CAAD,GAAO,CAAP;EACA;EACD;EACF;;EACD,UAAIA,CAAC,KAAKS,CAAC,GAAG,CAAd,EAAiB;EACf+M,QAAAA,IAAI,GAAG,CAAP;EACD,OAFD,MAEO;EACL,YAAIG,EAAJ;;EACA,aAAKA,EAAE,GAAGlN,CAAC,GAAG,CAAd,EAAiBkN,EAAE,IAAI3N,CAAvB,EAA0B2N,EAAE,EAA5B,EAAgC;EAC9B,cAAIA,EAAE,KAAK3N,CAAX,EAAc;EACZ;EACD;;EACD,cAAI6K,CAAC,GACH,CAAC8C,EAAE,KAAKlN,CAAP,GAAWxb,IAAI,CAACC,GAAL,CAASmJ,CAAC,CAACsf,EAAD,CAAV,CAAX,GAA6B,CAA9B,KACCA,EAAE,KAAK3N,CAAC,GAAG,CAAX,GAAe/a,IAAI,CAACC,GAAL,CAASmJ,CAAC,CAACsf,EAAE,GAAG,CAAN,CAAV,CAAf,GAAqC,CADtC,CADF;;EAGA,cAAI1oB,IAAI,CAACC,GAAL,CAASoe,CAAC,CAACqK,EAAD,CAAV,KAAmBL,GAAG,GAAGzC,CAA7B,EAAgC;EAC9BvH,YAAAA,CAAC,CAACqK,EAAD,CAAD,GAAQ,CAAR;EACA;EACD;EACF;;EACD,YAAIA,EAAE,KAAK3N,CAAX,EAAc;EACZwN,UAAAA,IAAI,GAAG,CAAP;EACD,SAFD,MAEO,IAAIG,EAAE,KAAKlN,CAAC,GAAG,CAAf,EAAkB;EACvB+M,UAAAA,IAAI,GAAG,CAAP;EACD,SAFM,MAEA;EACLA,UAAAA,IAAI,GAAG,CAAP;EACAxN,UAAAA,CAAC,GAAG2N,EAAJ;EACD;EACF;;EAED3N,MAAAA,CAAC;;EAED,cAAQwN,IAAR;EACE,aAAK,CAAL;EAAQ;EACN,gBAAIlf,CAAC,GAAGD,CAAC,CAACoS,CAAC,GAAG,CAAL,CAAT;EACApS,YAAAA,CAAC,CAACoS,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX;;EACA,iBAAK,IAAIzc,CAAC,GAAGyc,CAAC,GAAG,CAAjB,EAAoBzc,CAAC,IAAIgc,CAAzB,EAA4Bhc,CAAC,EAA7B,EAAiC;EAC/B,kBAAI6mB,CAAC,GAAGa,UAAU,CAACpI,CAAC,CAACtf,CAAD,CAAF,EAAOsK,CAAP,CAAlB;EACA,kBAAIsf,EAAE,GAAGtK,CAAC,CAACtf,CAAD,CAAD,GAAO6mB,CAAhB;EACA,kBAAIgD,EAAE,GAAGvf,CAAC,GAAGuc,CAAb;EACAvH,cAAAA,CAAC,CAACtf,CAAD,CAAD,GAAO6mB,CAAP;;EACA,kBAAI7mB,CAAC,KAAKgc,CAAV,EAAa;EACX1R,gBAAAA,CAAC,GAAG,CAACuf,EAAD,GAAMxf,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAX;EACAqK,gBAAAA,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAD,GAAW4pB,EAAE,GAAGvf,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAjB;EACD;;EACD,kBAAIyoB,KAAJ,EAAW;EACT,qBAAK,IAAInuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuBjiB,CAAC,EAAxB,EAA4B;EAC1BusB,kBAAAA,CAAC,GAAG+C,EAAE,GAAGb,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAL,GAAmB6pB,EAAE,GAAGd,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAASmiB,CAAC,GAAG,CAAb,CAA5B;EACAsM,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAASmiB,CAAC,GAAG,CAAb,EAAgB,CAACoN,EAAD,GAAMd,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAN,GAAoB4pB,EAAE,GAAGb,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAASmiB,CAAC,GAAG,CAAb,CAAzC;EACAsM,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY6mB,CAAZ;EACD;EACF;EACF;;EACD;EACD;;EACD,aAAK,CAAL;EAAQ;EACN,gBAAIvc,CAAC,GAAGD,CAAC,CAAC2R,CAAC,GAAG,CAAL,CAAT;EACA3R,YAAAA,CAAC,CAAC2R,CAAC,GAAG,CAAL,CAAD,GAAW,CAAX;;EACA,iBAAK,IAAIhc,CAAC,GAAGgc,CAAb,EAAgBhc,CAAC,GAAGyc,CAApB,EAAuBzc,CAAC,EAAxB,EAA4B;EAC1B,kBAAI6mB,CAAC,GAAGa,UAAU,CAACpI,CAAC,CAACtf,CAAD,CAAF,EAAOsK,CAAP,CAAlB;EACA,kBAAIsf,EAAE,GAAGtK,CAAC,CAACtf,CAAD,CAAD,GAAO6mB,CAAhB;EACA,kBAAIgD,EAAE,GAAGvf,CAAC,GAAGuc,CAAb;EACAvH,cAAAA,CAAC,CAACtf,CAAD,CAAD,GAAO6mB,CAAP;EACAvc,cAAAA,CAAC,GAAG,CAACuf,EAAD,GAAMxf,CAAC,CAACrK,CAAD,CAAX;EACAqK,cAAAA,CAAC,CAACrK,CAAD,CAAD,GAAO4pB,EAAE,GAAGvf,CAAC,CAACrK,CAAD,CAAb;;EACA,kBAAIuoB,KAAJ,EAAW;EACT,qBAAK,IAAIjuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BusB,kBAAAA,CAAC,GAAG+C,EAAE,GAAGd,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAL,GAAmB6pB,EAAE,GAAGf,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAC,GAAG,CAAb,CAA5B;EACA8M,kBAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAC,GAAG,CAAb,EAAgB,CAAC6N,EAAD,GAAMf,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAN,GAAoB4pB,EAAE,GAAGd,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAC,GAAG,CAAb,CAAzC;EACA8M,kBAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY6mB,CAAZ;EACD;EACF;EACF;;EACD;EACD;;EACD,aAAK,CAAL;EAAQ;EACN,kBAAMrN,KAAK,GAAGvY,IAAI,CAACiL,GAAL,CACZjL,IAAI,CAACC,GAAL,CAASoe,CAAC,CAAC7C,CAAC,GAAG,CAAL,CAAV,CADY,EAEZxb,IAAI,CAACC,GAAL,CAASoe,CAAC,CAAC7C,CAAC,GAAG,CAAL,CAAV,CAFY,EAGZxb,IAAI,CAACC,GAAL,CAASmJ,CAAC,CAACoS,CAAC,GAAG,CAAL,CAAV,CAHY,EAIZxb,IAAI,CAACC,GAAL,CAASoe,CAAC,CAACtD,CAAD,CAAV,CAJY,EAKZ/a,IAAI,CAACC,GAAL,CAASmJ,CAAC,CAAC2R,CAAD,CAAV,CALY,CAAd;EAOA,kBAAM8N,EAAE,GAAGxK,CAAC,CAAC7C,CAAC,GAAG,CAAL,CAAD,GAAWjD,KAAtB;EACA,kBAAMuQ,IAAI,GAAGzK,CAAC,CAAC7C,CAAC,GAAG,CAAL,CAAD,GAAWjD,KAAxB;EACA,kBAAMwQ,IAAI,GAAG3f,CAAC,CAACoS,CAAC,GAAG,CAAL,CAAD,GAAWjD,KAAxB;EACA,kBAAMyQ,EAAE,GAAG3K,CAAC,CAACtD,CAAD,CAAD,GAAOxC,KAAlB;EACA,kBAAM0Q,EAAE,GAAG7f,CAAC,CAAC2R,CAAD,CAAD,GAAOxC,KAAlB;EACA,kBAAM9O,CAAC,GAAG,CAAC,CAACqf,IAAI,GAAGD,EAAR,KAAeC,IAAI,GAAGD,EAAtB,IAA4BE,IAAI,GAAGA,IAApC,IAA4C,CAAtD;EACA,kBAAMvf,CAAC,GAAGqf,EAAE,GAAGE,IAAL,IAAaF,EAAE,GAAGE,IAAlB,CAAV;EACA,gBAAIhzB,KAAK,GAAG,CAAZ;;EACA,gBAAI0T,CAAC,KAAK,CAAN,IAAWD,CAAC,KAAK,CAArB,EAAwB;EACtB,kBAAIC,CAAC,GAAG,CAAR,EAAW;EACT1T,gBAAAA,KAAK,GAAG,IAAIiK,IAAI,CAACkV,IAAL,CAAUzL,CAAC,GAAGA,CAAJ,GAAQD,CAAlB,CAAZ;EACD,eAFD,MAEO;EACLzT,gBAAAA,KAAK,GAAGiK,IAAI,CAACkV,IAAL,CAAUzL,CAAC,GAAGA,CAAJ,GAAQD,CAAlB,CAAR;EACD;;EACDzT,cAAAA,KAAK,GAAGyT,CAAC,IAAIC,CAAC,GAAG1T,KAAR,CAAT;EACD;;EACD,gBAAIsT,CAAC,GAAG,CAAC2f,EAAE,GAAGH,EAAN,KAAaG,EAAE,GAAGH,EAAlB,IAAwB9yB,KAAhC;EACA,gBAAIuT,CAAC,GAAG0f,EAAE,GAAGC,EAAb;;EACA,iBAAK,IAAIlqB,CAAC,GAAGgc,CAAb,EAAgBhc,CAAC,GAAGyc,CAAC,GAAG,CAAxB,EAA2Bzc,CAAC,EAA5B,EAAgC;EAC9B,kBAAI6mB,CAAC,GAAGa,UAAU,CAACpd,CAAD,EAAIC,CAAJ,CAAlB;EACA,kBAAIsc,CAAC,KAAK,CAAV,EAAaA,CAAC,GAAG/sB,MAAM,CAAC4vB,SAAX;EACb,kBAAIE,EAAE,GAAGtf,CAAC,GAAGuc,CAAb;EACA,kBAAIgD,EAAE,GAAGtf,CAAC,GAAGsc,CAAb;;EACA,kBAAI7mB,CAAC,KAAKgc,CAAV,EAAa;EACX3R,gBAAAA,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAD,GAAW6mB,CAAX;EACD;;EACDvc,cAAAA,CAAC,GAAGsf,EAAE,GAAGtK,CAAC,CAACtf,CAAD,CAAN,GAAY6pB,EAAE,GAAGxf,CAAC,CAACrK,CAAD,CAAtB;EACAqK,cAAAA,CAAC,CAACrK,CAAD,CAAD,GAAO4pB,EAAE,GAAGvf,CAAC,CAACrK,CAAD,CAAN,GAAY6pB,EAAE,GAAGvK,CAAC,CAACtf,CAAD,CAAzB;EACAuK,cAAAA,CAAC,GAAGsf,EAAE,GAAGvK,CAAC,CAACtf,CAAC,GAAG,CAAL,CAAV;EACAsf,cAAAA,CAAC,CAACtf,CAAC,GAAG,CAAL,CAAD,GAAW4pB,EAAE,GAAGtK,CAAC,CAACtf,CAAC,GAAG,CAAL,CAAjB;;EACA,kBAAIyoB,KAAJ,EAAW;EACT,qBAAK,IAAInuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuBjiB,CAAC,EAAxB,EAA4B;EAC1BusB,kBAAAA,CAAC,GAAG+C,EAAE,GAAGb,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAL,GAAmB6pB,EAAE,GAAGd,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAC,GAAG,CAAb,CAA5B;EACA+oB,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0F,CAAC,GAAG,CAAb,EAAgB,CAAC6pB,EAAD,GAAMd,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAN,GAAoB4pB,EAAE,GAAGb,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAC,GAAG,CAAb,CAAzC;EACA+oB,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY6mB,CAAZ;EACD;EACF;;EACDA,cAAAA,CAAC,GAAGa,UAAU,CAACpd,CAAD,EAAIC,CAAJ,CAAd;EACA,kBAAIsc,CAAC,KAAK,CAAV,EAAaA,CAAC,GAAG/sB,MAAM,CAAC4vB,SAAX;EACbE,cAAAA,EAAE,GAAGtf,CAAC,GAAGuc,CAAT;EACAgD,cAAAA,EAAE,GAAGtf,CAAC,GAAGsc,CAAT;EACAvH,cAAAA,CAAC,CAACtf,CAAD,CAAD,GAAO6mB,CAAP;EACAvc,cAAAA,CAAC,GAAGsf,EAAE,GAAGvf,CAAC,CAACrK,CAAD,CAAN,GAAY6pB,EAAE,GAAGvK,CAAC,CAACtf,CAAC,GAAG,CAAL,CAAtB;EACAsf,cAAAA,CAAC,CAACtf,CAAC,GAAG,CAAL,CAAD,GAAW,CAAC6pB,EAAD,GAAMxf,CAAC,CAACrK,CAAD,CAAP,GAAa4pB,EAAE,GAAGtK,CAAC,CAACtf,CAAC,GAAG,CAAL,CAA9B;EACAuK,cAAAA,CAAC,GAAGsf,EAAE,GAAGxf,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAV;EACAqK,cAAAA,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAD,GAAW4pB,EAAE,GAAGvf,CAAC,CAACrK,CAAC,GAAG,CAAL,CAAjB;;EACA,kBAAIuoB,KAAK,IAAIvoB,CAAC,GAAGsc,CAAC,GAAG,CAArB,EAAwB;EACtB,qBAAK,IAAIhiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BusB,kBAAAA,CAAC,GAAG+C,EAAE,GAAGd,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAL,GAAmB6pB,EAAE,GAAGf,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAC,GAAG,CAAb,CAA5B;EACA8oB,kBAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0F,CAAC,GAAG,CAAb,EAAgB,CAAC6pB,EAAD,GAAMf,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,CAAN,GAAoB4pB,EAAE,GAAGd,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0F,CAAC,GAAG,CAAb,CAAzC;EACA8oB,kBAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY6mB,CAAZ;EACD;EACF;EACF;;EACDxc,YAAAA,CAAC,CAACoS,CAAC,GAAG,CAAL,CAAD,GAAWnS,CAAX;EAEA;EACD;;EACD,aAAK,CAAL;EAAQ;EACN,gBAAIgV,CAAC,CAACtD,CAAD,CAAD,IAAQ,CAAZ,EAAe;EACbsD,cAAAA,CAAC,CAACtD,CAAD,CAAD,GAAOsD,CAAC,CAACtD,CAAD,CAAD,GAAO,CAAP,GAAW,CAACsD,CAAC,CAACtD,CAAD,CAAb,GAAmB,CAA1B;;EACA,kBAAIyM,KAAJ,EAAW;EACT,qBAAK,IAAInuB,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI+uB,EAArB,EAAyB/uB,CAAC,EAA1B,EAA8B;EAC5ByuB,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY,CAAC+M,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAAb;EACD;EACF;EACF;;EACD,mBAAOA,CAAC,GAAGqN,EAAX,EAAe;EACb,kBAAI/J,CAAC,CAACtD,CAAD,CAAD,IAAQsD,CAAC,CAACtD,CAAC,GAAG,CAAL,CAAb,EAAsB;EACpB;EACD;;EACD,kBAAI6K,CAAC,GAAGvH,CAAC,CAACtD,CAAD,CAAT;EACAsD,cAAAA,CAAC,CAACtD,CAAD,CAAD,GAAOsD,CAAC,CAACtD,CAAC,GAAG,CAAL,CAAR;EACAsD,cAAAA,CAAC,CAACtD,CAAC,GAAG,CAAL,CAAD,GAAW6K,CAAX;;EACA,kBAAI4B,KAAK,IAAIzM,CAAC,GAAGO,CAAC,GAAG,CAArB,EAAwB;EACtB,qBAAK,IAAIjiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuBjiB,CAAC,EAAxB,EAA4B;EAC1BusB,kBAAAA,CAAC,GAAGkC,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0hB,CAAC,GAAG,CAAb,CAAJ;EACA+M,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAC,GAAG,CAAb,EAAgB+M,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAAhB;EACA+M,kBAAAA,CAAC,CAACnX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY6K,CAAZ;EACD;EACF;;EACD,kBAAI0B,KAAK,IAAIvM,CAAC,GAAGM,CAAC,GAAG,CAArB,EAAwB;EACtB,qBAAK,IAAIhiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgiB,CAApB,EAAuBhiB,CAAC,EAAxB,EAA4B;EAC1BusB,kBAAAA,CAAC,GAAGiC,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAC,GAAG,CAAb,CAAJ;EACA8M,kBAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAC,GAAG,CAAb,EAAgB8M,CAAC,CAAC/X,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,CAAhB;EACA8M,kBAAAA,CAAC,CAAClX,GAAF,CAAMtX,CAAN,EAAS0hB,CAAT,EAAY6K,CAAZ;EACD;EACF;;EACD7K,cAAAA,CAAC;EACF;EAEDS,YAAAA,CAAC;EACD;EACD;EACD;EAjJF;EAmJD;;EAED,QAAIiM,OAAJ,EAAa;EACX,UAAIzwB,GAAG,GAAG8wB,CAAV;EACAA,MAAAA,CAAC,GAAGD,CAAJ;EACAA,MAAAA,CAAC,GAAG7wB,GAAJ;EACD;;EAED,SAAKqkB,CAAL,GAASA,CAAT;EACA,SAAKC,CAAL,GAASA,CAAT;EACA,SAAK+C,CAAL,GAASA,CAAT;EACA,SAAKwJ,CAAL,GAASA,CAAT;EACA,SAAKC,CAAL,GAASA,CAAT;EACD;;EAED5B,EAAAA,KAAK,CAAChxB,KAAD,EAAQ;EACX,QAAIg0B,CAAC,GAAGh0B,KAAR;EACA,QAAIkU,CAAC,GAAG,KAAK+f,SAAb;EACA,QAAIC,KAAK,GAAG,KAAK/K,CAAL,CAAOppB,MAAnB;EACA,QAAIo0B,EAAE,GAAG9Y,MAAM,CAAC6I,KAAP,CAAagQ,KAAb,EAAoBA,KAApB,CAAT;;EAEA,SAAK,IAAI/vB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+vB,KAApB,EAA2B/vB,CAAC,EAA5B,EAAgC;EAC9B,UAAI2G,IAAI,CAACC,GAAL,CAAS,KAAKoe,CAAL,CAAOhlB,CAAP,CAAT,KAAuB+P,CAA3B,EAA8B;EAC5BigB,QAAAA,EAAE,CAAC1Y,GAAH,CAAOtX,CAAP,EAAUA,CAAV,EAAa,CAAb;EACD,OAFD,MAEO;EACLgwB,QAAAA,EAAE,CAAC1Y,GAAH,CAAOtX,CAAP,EAAUA,CAAV,EAAa,IAAI,KAAKglB,CAAL,CAAOhlB,CAAP,CAAjB;EACD;EACF;;EAED,QAAIwuB,CAAC,GAAG,KAAKA,CAAb;EACA,QAAIC,CAAC,GAAG,KAAKwB,oBAAb;EAEA,QAAIC,EAAE,GAAGzB,CAAC,CAAC5J,IAAF,CAAOmL,EAAP,CAAT;EACA,QAAIG,KAAK,GAAG1B,CAAC,CAACtY,IAAd;EACA,QAAIia,KAAK,GAAG5B,CAAC,CAACrY,IAAd;EACA,QAAIka,GAAG,GAAGnZ,MAAM,CAAC6I,KAAP,CAAaoQ,KAAb,EAAoBC,KAApB,CAAV;;EAEA,SAAK,IAAIpwB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmwB,KAApB,EAA2BnwB,CAAC,EAA5B,EAAgC;EAC9B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0qB,KAApB,EAA2B1qB,CAAC,EAA5B,EAAgC;EAC9B,YAAIqY,GAAG,GAAG,CAAV;;EACA,aAAK,IAAI2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqO,KAApB,EAA2BrO,CAAC,EAA5B,EAAgC;EAC9B3D,UAAAA,GAAG,IAAImS,EAAE,CAACzZ,GAAH,CAAOzW,CAAP,EAAU0hB,CAAV,IAAe8M,CAAC,CAAC/X,GAAF,CAAM/Q,CAAN,EAASgc,CAAT,CAAtB;EACD;;EACD2O,QAAAA,GAAG,CAAC/Y,GAAJ,CAAQtX,CAAR,EAAW0F,CAAX,EAAcqY,GAAd;EACD;EACF;;EAED,WAAOsS,GAAG,CAACxL,IAAJ,CAASgL,CAAT,CAAP;EACD;;EAEDS,EAAAA,gBAAgB,CAACz0B,KAAD,EAAQ;EACtB,WAAO,KAAKgxB,KAAL,CAAW3V,MAAM,CAACoJ,IAAP,CAAYzkB,KAAZ,CAAX,CAAP;EACD;;EAED00B,EAAAA,OAAO,GAAG;EACR,QAAI9B,CAAC,GAAG,KAAKA,CAAb;EACA,QAAI1e,CAAC,GAAG,KAAK+f,SAAb;EACA,QAAIK,KAAK,GAAG1B,CAAC,CAACtY,IAAd;EACA,QAAIqa,KAAK,GAAG/B,CAAC,CAACrY,OAAd;EACA,QAAI2W,CAAC,GAAG,IAAI7V,MAAJ,CAAWiZ,KAAX,EAAkB,KAAKnL,CAAL,CAAOppB,MAAzB,CAAR;;EAEA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmwB,KAApB,EAA2BnwB,CAAC,EAA5B,EAAgC;EAC9B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8qB,KAApB,EAA2B9qB,CAAC,EAA5B,EAAgC;EAC9B,YAAIiB,IAAI,CAACC,GAAL,CAAS,KAAKoe,CAAL,CAAOtf,CAAP,CAAT,IAAsBqK,CAA1B,EAA6B;EAC3Bgd,UAAAA,CAAC,CAACzV,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAY+oB,CAAC,CAAChY,GAAF,CAAMzW,CAAN,EAAS0F,CAAT,IAAc,KAAKsf,CAAL,CAAOtf,CAAP,CAA1B;EACD;EACF;EACF;;EAED,QAAI8oB,CAAC,GAAG,KAAKA,CAAb;EAEA,QAAI4B,KAAK,GAAG5B,CAAC,CAACrY,IAAd;EACA,QAAIsa,KAAK,GAAGjC,CAAC,CAACpY,OAAd;EACA,QAAIyZ,CAAC,GAAG,IAAI3Y,MAAJ,CAAWiZ,KAAX,EAAkBC,KAAlB,CAAR;;EAEA,SAAK,IAAIpwB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmwB,KAApB,EAA2BnwB,CAAC,EAA5B,EAAgC;EAC9B,WAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0qB,KAApB,EAA2B1qB,CAAC,EAA5B,EAAgC;EAC9B,YAAIqY,GAAG,GAAG,CAAV;;EACA,aAAK,IAAI2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+O,KAApB,EAA2B/O,CAAC,EAA5B,EAAgC;EAC9B3D,UAAAA,GAAG,IAAIgP,CAAC,CAACtW,GAAF,CAAMzW,CAAN,EAAS0hB,CAAT,IAAc8M,CAAC,CAAC/X,GAAF,CAAM/Q,CAAN,EAASgc,CAAT,CAArB;EACD;;EACDmO,QAAAA,CAAC,CAACvY,GAAF,CAAMtX,CAAN,EAAS0F,CAAT,EAAYqY,GAAZ;EACD;EACF;;EAED,WAAO8R,CAAP;EACD;;EAEY,MAATa,SAAS,GAAG;EACd,WAAO,KAAK1L,CAAL,CAAO,CAAP,IAAY,KAAKA,CAAL,CAAOre,IAAI,CAAC+K,GAAL,CAAS,KAAKsQ,CAAd,EAAiB,KAAKC,CAAtB,IAA2B,CAAlC,CAAnB;EACD;;EAEQ,MAAL0O,KAAK,GAAG;EACV,WAAO,KAAK3L,CAAL,CAAO,CAAP,CAAP;EACD;;EAEO,MAAJ4L,IAAI,GAAG;EACT,QAAIC,GAAG,GAAGlqB,IAAI,CAACiL,GAAL,CAAS,KAAKoQ,CAAd,EAAiB,KAAKC,CAAtB,IAA2B,KAAK+C,CAAL,CAAO,CAAP,CAA3B,GAAuCxlB,MAAM,CAACyvB,OAAxD;EACA,QAAI9R,CAAC,GAAG,CAAR;EACA,QAAI6H,CAAC,GAAG,KAAKA,CAAb;;EACA,SAAK,IAAIhlB,CAAC,GAAG,CAAR,EAAW8wB,EAAE,GAAG9L,CAAC,CAACppB,MAAvB,EAA+BoE,CAAC,GAAG8wB,EAAnC,EAAuC9wB,CAAC,EAAxC,EAA4C;EAC1C,UAAIglB,CAAC,CAAChlB,CAAD,CAAD,GAAO6wB,GAAX,EAAgB;EACd1T,QAAAA,CAAC;EACF;EACF;;EACD,WAAOA,CAAP;EACD;;EAEW,MAARkO,QAAQ,GAAG;EACb,WAAOtrB,KAAK,CAACwR,IAAN,CAAW,KAAKyT,CAAhB,CAAP;EACD;;EAEY,MAAT8K,SAAS,GAAG;EACd,WAAQtwB,MAAM,CAACyvB,OAAP,GAAiB,CAAlB,GAAuBtoB,IAAI,CAACiL,GAAL,CAAS,KAAKoQ,CAAd,EAAiB,KAAKC,CAAtB,CAAvB,GAAkD,KAAK+C,CAAL,CAAO,CAAP,CAAzD;EACD;;EAEsB,MAAnB+L,mBAAmB,GAAG;EACxB,WAAO,KAAKvC,CAAZ;EACD;;EAEuB,MAApByB,oBAAoB,GAAG;EACzB,WAAO,KAAKxB,CAAZ;EACD;;EAEiB,MAAduC,cAAc,GAAG;EACnB,WAAO9Z,MAAM,CAACoJ,IAAP,CAAY,KAAK0E,CAAjB,CAAP;EACD;;EAxgB6C;;ECCzC,SAASuL,OAAT,CAAiBza,MAAjB,EAAyC;EAAA,MAAhBmb,MAAgB,uEAAP,KAAO;EAC9Cnb,EAAAA,MAAM,GAAGoW,eAAe,CAAC3U,WAAhB,CAA4BzB,MAA5B,CAAT;;EACA,MAAImb,MAAJ,EAAY;EACV,WAAO,IAAIpD,0BAAJ,CAA+B/X,MAA/B,EAAuCya,OAAvC,EAAP;EACD,GAFD,MAEO;EACL,WAAO1D,KAAK,CAAC/W,MAAD,EAASoB,MAAM,CAACmJ,GAAP,CAAWvK,MAAM,CAACK,IAAlB,CAAT,CAAZ;EACD;EACF;EAEM,SAAS0W,KAAT,CAAeqE,YAAf,EAA6BC,aAA7B,EAA4D;EAAA,MAAhBF,MAAgB,uEAAP,KAAO;EACjEC,EAAAA,YAAY,GAAGhF,eAAe,CAAC3U,WAAhB,CAA4B2Z,YAA5B,CAAf;EACAC,EAAAA,aAAa,GAAGjF,eAAe,CAAC3U,WAAhB,CAA4B4Z,aAA5B,CAAhB;;EACA,MAAIF,MAAJ,EAAY;EACV,WAAO,IAAIpD,0BAAJ,CAA+BqD,YAA/B,EAA6CrE,KAA7C,CAAmDsE,aAAnD,CAAP;EACD,GAFD,MAEO;EACL,WAAOD,YAAY,CAAC9P,QAAb,KACH,IAAI+K,eAAJ,CAAoB+E,YAApB,EAAkCrE,KAAlC,CAAwCsE,aAAxC,CADG,GAEH,IAAI9D,eAAJ,CAAoB6D,YAApB,EAAkCrE,KAAlC,CAAwCsE,aAAxC,CAFJ;EAGD;EACF;;ECvBD,SAASC,OAAT,CAAiBC,GAAjB,EAAsB;EACpB;;EAEA,MAAI,OAAOnG,MAAP,KAAkB,UAAlB,IAAgC,OAAOA,MAAM,CAACoG,QAAd,KAA2B,QAA/D,EAAyE;EACvEF,IAAAA,OAAO,GAAG,UAAUC,GAAV,EAAe;EACvB,aAAO,OAAOA,GAAd;EACD,KAFD;EAGD,GAJD,MAIO;EACLD,IAAAA,OAAO,GAAG,UAAUC,GAAV,EAAe;EACvB,aAAOA,GAAG,IAAI,OAAOnG,MAAP,KAAkB,UAAzB,IAAuCmG,GAAG,CAAChtB,WAAJ,KAAoB6mB,MAA3D,IAAqEmG,GAAG,KAAKnG,MAAM,CAAC5hB,SAApF,GAAgG,QAAhG,GAA2G,OAAO+nB,GAAzH;EACD,KAFD;EAGD;;EAED,SAAOD,OAAO,CAACC,GAAD,CAAd;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEA,SAASE,cAAT,GAA0B;EACxB,MAAIhhB,KAAK,GAAGmE,SAAS,CAAC9Y,MAAV,GAAmB,CAAnB,IAAwB8Y,SAAS,CAAC,CAAD,CAAT,KAAiBjU,SAAzC,GAAqDiU,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAhF;EACA,MAAI/M,OAAO,GAAG+M,SAAS,CAAC9Y,MAAV,GAAmB,CAAnB,IAAwB8Y,SAAS,CAAC,CAAD,CAAT,KAAiBjU,SAAzC,GAAqDiU,SAAS,CAAC,CAAD,CAA9D,GAAoE,EAAlF;;EAEA,MAAI0c,OAAO,CAAC7gB,KAAD,CAAP,KAAmB,QAAnB,IAA+B,CAACC,UAAO,CAACD,KAAD,CAA3C,EAAoD;EAClD5I,IAAAA,OAAO,GAAG4I,KAAV;EACAA,IAAAA,KAAK,GAAG,EAAR;EACD;;EAED,MAAI,CAACC,UAAO,CAACD,KAAD,CAAZ,EAAqB;EACnB,UAAM,IAAInS,SAAJ,CAAc,wBAAd,CAAN;EACD;;EAED,MAAIozB,QAAQ,GAAG7pB,OAAf;EAAA,MACI8pB,aAAa,GAAGD,QAAQ,CAACjgB,IAD7B;EAAA,MAEIA,IAAI,GAAGkgB,aAAa,KAAK,KAAK,CAAvB,GAA2B,CAA3B,GAA+BA,aAF1C;EAAA,MAGIC,WAAW,GAAGF,QAAQ,CAACG,EAH3B;EAAA,MAIIA,EAAE,GAAGD,WAAW,KAAK,KAAK,CAArB,GAAyB,EAAzB,GAA8BA,WAJvC;EAAA,MAKIE,aAAa,GAAGJ,QAAQ,CAAC5xB,IAL7B;EAAA,MAMIA,IAAI,GAAGgyB,aAAa,KAAK,KAAK,CAAvB,GAA2BrhB,KAAK,CAAC3U,MAAjC,GAA0Cg2B,aANrD;EAAA,MAOI1wB,IAAI,GAAGswB,QAAQ,CAACtwB,IAPpB;;EASA,MAAItB,IAAI,KAAK,CAAT,IAAcsB,IAAlB,EAAwB;EACtB,UAAM,IAAI5E,KAAJ,CAAU,mCAAV,CAAN;EACD;;EAED,MAAI,CAACsD,IAAL,EAAW;EACT,QAAIsB,IAAJ,EAAU;EACRtB,MAAAA,IAAI,GAAG+G,IAAI,CAACwU,KAAL,CAAW,CAACwW,EAAE,GAAGpgB,IAAN,IAAcrQ,IAAzB,IAAiC,CAAxC;EACD,KAFD,MAEO;EACLtB,MAAAA,IAAI,GAAG+xB,EAAE,GAAGpgB,IAAL,GAAY,CAAnB;EACD;EACF;;EAED,MAAI,CAACrQ,IAAD,IAAStB,IAAb,EAAmB;EACjBsB,IAAAA,IAAI,GAAG,CAACywB,EAAE,GAAGpgB,IAAN,KAAe3R,IAAI,GAAG,CAAtB,CAAP;EACD;;EAED,MAAIG,KAAK,CAACyQ,OAAN,CAAcD,KAAd,CAAJ,EAA0B;EACxB;EACAA,IAAAA,KAAK,CAAC3U,MAAN,GAAe,CAAf;;EAEA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,IAApB,EAA0BI,CAAC,EAA3B,EAA+B;EAC7BuQ,MAAAA,KAAK,CAACvU,IAAN,CAAWuV,IAAX;EACAA,MAAAA,IAAI,IAAIrQ,IAAR;EACD;EACF,GARD,MAQO;EACL,QAAIqP,KAAK,CAAC3U,MAAN,KAAiBgE,IAArB,EAA2B;EACzB,YAAM,IAAItD,KAAJ,CAAU,yDAAV,CAAN;EACD;;EAED,SAAK,IAAIu1B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGjyB,IAAtB,EAA4BiyB,EAAE,EAA9B,EAAkC;EAChCthB,MAAAA,KAAK,CAACshB,EAAD,CAAL,GAAYtgB,IAAZ;EACAA,MAAAA,IAAI,IAAIrQ,IAAR;EACD;EACF;;EAED,SAAOqP,KAAP;EACD;;ECvFD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEe,SAASuhB,aAAT,CAAuBC,EAAvB,EAA2BC,EAA3B,EAA6C;EAAA,MAAdrqB,OAAc,uEAAJ,EAAI;EAC1D,MAAI;EAAEsqB,IAAAA,UAAU,GAAG,CAAf;EAAkBC,IAAAA,UAAU,GAAG,CAA/B;EAAkCC,IAAAA,UAAU,GAAG;EAA/C,MAAqDxqB,OAAzD;;EAEA,MAAIsqB,UAAU,GAAG,CAAb,KAAmB,CAAnB,IAAwBA,UAAU,GAAG,CAArC,IAA0C,CAACzyB,MAAM,CAACuV,SAAP,CAAiBkd,UAAjB,CAA/C,EAA6E;EAC3E,UAAM,IAAI5c,UAAJ,CACJ,mEADI,CAAN;EAGD;;EACD,MAAI4c,UAAU,GAAGF,EAAE,CAACn2B,MAApB,EAA4B;EAC1B,UAAM,IAAIyZ,UAAJ,CACH,8CAA6C4c,UAAW,IAAGF,EAAE,CAACn2B,MAAO,EADlE,CAAN;EAGD;;EACD,MAAIs2B,UAAU,GAAG,CAAb,IAAkB,CAAC1yB,MAAM,CAACuV,SAAP,CAAiBmd,UAAjB,CAAvB,EAAqD;EACnD,UAAM,IAAI7c,UAAJ,CAAe,yCAAf,CAAN;EACD;;EACD,MAAI8c,UAAU,GAAG,CAAb,IAAkB,CAAC3yB,MAAM,CAACuV,SAAP,CAAiBod,UAAjB,CAAvB,EAAqD;EACnD,UAAM,IAAI9c,UAAJ,CAAe,yCAAf,CAAN;EACD;;EACD,MAAI8c,UAAU,IAAI,CAAlB,EAAqB;EACnB;EACAzJ,IAAAA,OAAO,CAACC,IAAR,CACE,iEACE,6FAFJ;EAID;;EAED,MAAIyJ,IAAI,GAAGzrB,IAAI,CAACwU,KAAL,CAAW8W,UAAU,GAAG,CAAxB,CAAX;EACA,MAAII,EAAE,GAAGN,EAAE,CAACn2B,MAAZ;EACA,MAAIsM,GAAG,GAAG,IAAInI,KAAJ,CAAUsyB,EAAV,CAAV;EACA,MAAIC,OAAO,GAAGC,WAAW,CAACN,UAAD,EAAaE,UAAb,EAAyBD,UAAzB,CAAzB;EACA,MAAIM,EAAE,GAAG,CAAT;EACA,MAAIC,SAAS,GAAG,IAAhB;;EACA,MAAI1yB,KAAK,CAACyQ,OAAN,CAAcwhB,EAAd,CAAJ,EAAuB;EACrBS,IAAAA,SAAS,GAAG,KAAZ;EACD,GAFD,MAEO;EACLD,IAAAA,EAAE,GAAG7rB,IAAI,CAACyH,GAAL,CAAS4jB,EAAT,EAAaE,UAAb,CAAL;EACD,GArCyD;;;EAwC1D,OAAK,IAAIlyB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoyB,IAApB,EAA0BpyB,CAAC,EAA3B,EAA+B;EAC7B,QAAI0yB,GAAG,GAAGJ,OAAO,CAACF,IAAI,GAAGpyB,CAAP,GAAW,CAAZ,CAAjB;EACA,QAAI2yB,GAAG,GAAGL,OAAO,CAACF,IAAI,GAAGpyB,CAAP,GAAW,CAAZ,CAAjB;EACA,QAAI4yB,EAAE,GAAG,CAAT;EACA,QAAIC,EAAE,GAAG,CAAT;;EACA,SAAK,IAAItS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0R,UAApB,EAAgC1R,CAAC,EAAjC,EAAqC;EACnCqS,MAAAA,EAAE,IAAIF,GAAG,CAACnS,CAAD,CAAH,GAASwR,EAAE,CAACxR,CAAD,CAAjB;EACAsS,MAAAA,EAAE,IAAIF,GAAG,CAACpS,CAAD,CAAH,GAASwR,EAAE,CAACM,EAAE,GAAGJ,UAAL,GAAkB1R,CAAnB,CAAjB;EACD;;EACD,QAAIkS,SAAJ,EAAe;EACbvqB,MAAAA,GAAG,CAACkqB,IAAI,GAAGpyB,CAAP,GAAW,CAAZ,CAAH,GAAoB4yB,EAAE,GAAGJ,EAAzB;EACAtqB,MAAAA,GAAG,CAACmqB,EAAE,GAAGD,IAAL,GAAYpyB,CAAb,CAAH,GAAqB6yB,EAAE,GAAGL,EAA1B;EACD,KAHD,MAGO;EACLA,MAAAA,EAAE,GAAGM,KAAK,CAACd,EAAD,EAAKI,IAAI,GAAGpyB,CAAP,GAAW,CAAhB,EAAmBoyB,IAAnB,EAAyBF,UAAzB,CAAV;EACAhqB,MAAAA,GAAG,CAACkqB,IAAI,GAAGpyB,CAAP,GAAW,CAAZ,CAAH,GAAoB4yB,EAAE,GAAGJ,EAAzB;EACAA,MAAAA,EAAE,GAAGM,KAAK,CAACd,EAAD,EAAKK,EAAE,GAAGD,IAAL,GAAYpyB,CAAjB,EAAoBoyB,IAApB,EAA0BF,UAA1B,CAAV;EACAhqB,MAAAA,GAAG,CAACmqB,EAAE,GAAGD,IAAL,GAAYpyB,CAAb,CAAH,GAAqB6yB,EAAE,GAAGL,EAA1B;EACD;EACF,GA1DyD;;;EA6D1D,MAAIO,EAAE,GAAGT,OAAO,CAACF,IAAD,CAAhB;;EACA,OAAK,IAAIpyB,CAAC,GAAGiyB,UAAb,EAAyBjyB,CAAC,IAAIqyB,EAA9B,EAAkCryB,CAAC,EAAnC,EAAuC;EACrC,QAAI8P,CAAC,GAAG,CAAR;;EACA,SAAK,IAAIyQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0R,UAApB,EAAgC1R,CAAC,EAAjC,EAAqCzQ,CAAC,IAAIijB,EAAE,CAACxS,CAAD,CAAF,GAAQwR,EAAE,CAACxR,CAAC,GAAGvgB,CAAJ,GAAQiyB,UAAT,CAAf;;EACrC,QAAI,CAACQ,SAAL,EAAgBD,EAAE,GAAGM,KAAK,CAACd,EAAD,EAAKhyB,CAAC,GAAGoyB,IAAJ,GAAW,CAAhB,EAAmBA,IAAnB,EAAyBF,UAAzB,CAAV;EAChBhqB,IAAAA,GAAG,CAAClI,CAAC,GAAGoyB,IAAJ,GAAW,CAAZ,CAAH,GAAoBtiB,CAAC,GAAG0iB,EAAxB;EACD;;EACD,SAAOtqB,GAAP;EACD;;EAED,SAAS4qB,KAAT,CAAe5iB,CAAf,EAAkB+a,MAAlB,EAA0BmH,IAA1B,EAAgCF,UAAhC,EAA4C;EAC1C,MAAIM,EAAE,GAAG,CAAT;EACA,MAAI1F,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI9sB,CAAC,GAAGirB,MAAM,GAAGmH,IAAtB,EAA4BpyB,CAAC,GAAGirB,MAAM,GAAGmH,IAAzC,EAA+CpyB,CAAC,EAAhD,EAAoD;EAClD,QAAIA,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAGkQ,CAAC,CAACtU,MAAF,GAAW,CAA7B,EAAgC;EAC9B42B,MAAAA,EAAE,IAAItiB,CAAC,CAAClQ,CAAC,GAAG,CAAL,CAAD,GAAWkQ,CAAC,CAAClQ,CAAD,CAAlB;EACA8sB,MAAAA,KAAK;EACN;EACF;;EACD,SAAOnmB,IAAI,CAACyH,GAAL,CAASokB,EAAE,GAAG1F,KAAd,EAAqBoF,UAArB,CAAP;EACD;;EAED,SAASc,QAAT,CAAkBhzB,CAAlB,EAAqBgiB,CAArB,EAAwBN,CAAxB,EAA2BsD,CAA3B,EAA8B;EAC5B,MAAIiO,QAAQ,GAAG,CAAf;;EACA,MAAIvR,CAAC,GAAG,CAAR,EAAW;EACTuR,IAAAA,QAAQ,GACL,CAAC,IAAIvR,CAAJ,GAAQ,CAAT,KAAeA,CAAC,IAAI,IAAIM,CAAJ,GAAQN,CAAR,GAAY,CAAhB,CAAhB,CAAD,IACG1hB,CAAC,GAAGgzB,QAAQ,CAAChzB,CAAD,EAAIgiB,CAAJ,EAAON,CAAC,GAAG,CAAX,EAAcsD,CAAd,CAAZ,GAA+BA,CAAC,GAAGgO,QAAQ,CAAChzB,CAAD,EAAIgiB,CAAJ,EAAON,CAAC,GAAG,CAAX,EAAcsD,CAAC,GAAG,CAAlB,CAD9C,IAEE,CAACtD,CAAC,GAAG,CAAL,KAAW,IAAIM,CAAJ,GAAQN,CAAnB,CAAD,IAA2BA,CAAC,IAAI,IAAIM,CAAJ,GAAQN,CAAR,GAAY,CAAhB,CAA5B,CAAD,GACEsR,QAAQ,CAAChzB,CAAD,EAAIgiB,CAAJ,EAAON,CAAC,GAAG,CAAX,EAAcsD,CAAd,CAJZ;EAKD,GAND,MAMO;EACL,QAAItD,CAAC,KAAK,CAAN,IAAWsD,CAAC,KAAK,CAArB,EAAwB;EACtBiO,MAAAA,QAAQ,GAAG,CAAX;EACD,KAFD,MAEO;EACLA,MAAAA,QAAQ,GAAG,CAAX;EACD;EACF;;EACD,SAAOA,QAAP;EACD;;EAED,SAASC,OAAT,CAAiBjqB,CAAjB,EAAoBmH,CAApB,EAAuB;EACrB,MAAI+iB,EAAE,GAAG,CAAT;;EACA,MAAIlqB,CAAC,IAAImH,CAAT,EAAY;EACV,SAAK,IAAI1K,CAAC,GAAGuD,CAAC,GAAGmH,CAAJ,GAAQ,CAArB,EAAwB1K,CAAC,IAAIuD,CAA7B,EAAgCvD,CAAC,EAAjC,EAAqC;EACnCytB,MAAAA,EAAE,IAAIztB,CAAN;EACD;EACF;;EACD,SAAOytB,EAAP;EACD;;EAED,SAASC,MAAT,CAAgBpzB,CAAhB,EAAmBusB,CAAnB,EAAsBvK,CAAtB,EAAyBC,CAAzB,EAA4B+C,CAA5B,EAA+B;EAC7B,MAAIjH,GAAG,GAAG,CAAV;;EACA,OAAK,IAAI2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIO,CAArB,EAAwBP,CAAC,EAAzB,EAA6B;EAC3B;EACA3D,IAAAA,GAAG,IACD,CAAC,IAAI2D,CAAJ,GAAQ,CAAT,KACCwR,OAAO,CAAC,IAAIlR,CAAL,EAAQN,CAAR,CAAP,GAAoBwR,OAAO,CAAC,IAAIlR,CAAJ,GAAQN,CAAR,GAAY,CAAb,EAAgBA,CAAC,GAAG,CAApB,CAD5B,IAEAsR,QAAQ,CAAChzB,CAAD,EAAIgiB,CAAJ,EAAON,CAAP,EAAU,CAAV,CAFR,GAGAsR,QAAQ,CAACzG,CAAD,EAAIvK,CAAJ,EAAON,CAAP,EAAUsD,CAAV,CAJV;EAKD;;EACD,SAAOjH,GAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASwU,WAAT,CAAqBvQ,CAArB,EAAwBC,CAAxB,EAA2B+C,CAA3B,EAA8B;EAC5B,MAAIsN,OAAO,GAAG,IAAIvyB,KAAJ,CAAUiiB,CAAV,CAAd;EACA,MAAIqQ,EAAE,GAAG1rB,IAAI,CAACwU,KAAL,CAAW6G,CAAC,GAAG,CAAf,CAAT;;EACA,OAAK,IAAIuK,CAAC,GAAG,CAAC8F,EAAd,EAAkB9F,CAAC,IAAI8F,EAAvB,EAA2B9F,CAAC,EAA5B,EAAgC;EAC9B+F,IAAAA,OAAO,CAAC/F,CAAC,GAAG8F,EAAL,CAAP,GAAkB,IAAItyB,KAAJ,CAAUiiB,CAAV,CAAlB;;EACA,SAAK,IAAItc,CAAC,GAAG,CAAC2sB,EAAd,EAAkB3sB,CAAC,IAAI2sB,EAAvB,EAA2B3sB,CAAC,EAA5B,EAAgC;EAC9B4sB,MAAAA,OAAO,CAAC/F,CAAC,GAAG8F,EAAL,CAAP,CAAgB3sB,CAAC,GAAG2sB,EAApB,IAA0Be,MAAM,CAAC1tB,CAAD,EAAI6mB,CAAJ,EAAO8F,EAAP,EAAWpQ,CAAX,EAAc+C,CAAd,CAAhC;EACD;EACF;;EACD,SAAOsN,OAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;AACA;AACA;AACA;EACA;EACA;EACA;EACA;EACA;;EC9Ke,SAASe,cAAT,CAAsBvyB,IAAtB,EAA4BwyB,qBAA5B,EAAmD3rB,OAAnD,EAA4D;EACzE,MAAI;EACF4rB,IAAAA,OADE;EAEFC,IAAAA,SAFE;EAGFC,IAAAA,SAHE;EAIFC,IAAAA,aAJE;EAKFpB,IAAAA,OAAO,GAAG,CALR;EAMFqB,IAAAA,OAAO,GAAG,IANR;EAOFC,IAAAA,aAAa,GAAG,EAPd;EAQFC,IAAAA,eAAe,GAAG,CARhB;EASFC,IAAAA,aAAa,GAAG,GATd;EAUFC,IAAAA,cAAc,GAAG,IAVf;EAWFC,IAAAA,iBAAiB,GAAG,KAXlB;EAYFC,IAAAA,kBAAkB,GAAG,KAZnB;EAaFC,IAAAA,oBAAoB,GAAG;EAbrB,MAcAvsB,OAdJ;;EAgBA,MAAIgsB,OAAO,IAAI,CAAf,EAAkB;EAChB,UAAM,IAAIr3B,KAAJ,CAAU,8CAAV,CAAN;EACD,GAFD,MAEO,IAAI,CAACwE,IAAI,CAACwL,CAAN,IAAW,CAACxL,IAAI,CAACyL,CAArB,EAAwB;EAC7B,UAAM,IAAIjQ,KAAJ,CAAU,+CAAV,CAAN;EACD,GAFM,MAEA,IACL,CAACkU,UAAO,CAAC1P,IAAI,CAACwL,CAAN,CAAR,IACAxL,IAAI,CAACwL,CAAL,CAAO1Q,MAAP,GAAgB,CADhB,IAEA,CAAC4U,UAAO,CAAC1P,IAAI,CAACyL,CAAN,CAFR,IAGAzL,IAAI,CAACyL,CAAL,CAAO3Q,MAAP,GAAgB,CAJX,EAKL;EACA,UAAM,IAAIU,KAAJ,CACJ,sEADI,CAAN;EAGD,GATM,MASA,IAAIwE,IAAI,CAACwL,CAAL,CAAO1Q,MAAP,KAAkBkF,IAAI,CAACyL,CAAL,CAAO3Q,MAA7B,EAAqC;EAC1C,UAAM,IAAIU,KAAJ,CAAU,qDAAV,CAAN;EACD;;EAED,MAAI63B,UAAU,GACZT,aAAa,IAAI,IAAI3zB,KAAJ,CAAUuzB,qBAAqB,CAAC13B,MAAhC,EAAwCqkB,IAAxC,CAA6C,CAA7C,CADnB;EAGA,MAAImU,QAAQ,GAAGtzB,IAAI,CAACyL,CAAL,CAAO3Q,MAAtB;EACA,MAAIy4B,MAAM,GAAGF,UAAU,CAACv4B,MAAxB;EACA63B,EAAAA,SAAS,GAAGA,SAAS,IAAI,IAAI1zB,KAAJ,CAAUs0B,MAAV,EAAkBpU,IAAlB,CAAuBzgB,MAAM,CAAC80B,gBAA9B,CAAzB;EACAd,EAAAA,SAAS,GAAGA,SAAS,IAAI,IAAIzzB,KAAJ,CAAUs0B,MAAV,EAAkBpU,IAAlB,CAAuBzgB,MAAM,CAAC+0B,gBAA9B,CAAzB;;EAEA,MAAId,SAAS,CAAC73B,MAAV,KAAqB43B,SAAS,CAAC53B,MAAnC,EAA2C;EACzC,UAAM,IAAIU,KAAJ,CAAU,+CAAV,CAAN;EACD;;EAED,MAAI,CAACkU,UAAO,CAAC2jB,UAAD,CAAZ,EAA0B;EACxB,UAAM,IAAI73B,KAAJ,CAAU,gCAAV,CAAN;EACD;;EAED,MAAI,OAAO23B,kBAAP,KAA8B,QAAlC,EAA4C;EAC1CA,IAAAA,kBAAkB,GAAG,IAAIl0B,KAAJ,CAAUo0B,UAAU,CAACv4B,MAArB,EAA6BqkB,IAA7B,CAAkCgU,kBAAlC,CAArB;EACD,GAFD,MAEO,IAAIzjB,UAAO,CAACyjB,kBAAD,CAAX,EAAiC;EACtC,QAAIA,kBAAkB,CAACr4B,MAAnB,KAA8By4B,MAAlC,EAA0C;EACxCJ,MAAAA,kBAAkB,GAAG,IAAIl0B,KAAJ,CAAUs0B,MAAV,EAAkBpU,IAAlB,CAAuBgU,kBAAkB,CAAC,CAAD,CAAzC,CAArB;EACD;EACF,GAJM,MAIA;EACL,UAAM,IAAI33B,KAAJ,CACJ,8FADI,CAAN;EAGD;;EAED,MAAIk4B,MAAJ;;EACA,MAAI,OAAOlC,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,QAAIz2B,KAAK,GAAG,IAAIy2B,OAAO,IAAI,CAA3B;;EACAkC,IAAAA,MAAM,GAAG,MAAM34B,KAAf;EACD,GAHD,MAGO,IAAI2U,UAAO,CAAC8hB,OAAD,CAAX,EAAsB;EAC3B,QAAIA,OAAO,CAAC12B,MAAR,GAAiBkF,IAAI,CAACwL,CAAL,CAAO1Q,MAA5B,EAAoC;EAClC,UAAIC,KAAK,GAAG,IAAIy2B,OAAO,CAAC,CAAD,CAAP,IAAc,CAA9B;;EACAkC,MAAAA,MAAM,GAAG,MAAM34B,KAAf;EACD,KAHD,MAGO;EACL24B,MAAAA,MAAM,GAAIx0B,CAAD,IAAO,IAAIsyB,OAAO,CAACtyB,CAAD,CAAP,IAAc,CAAlC;EACD;EACF,GAPM,MAOA;EACL,UAAM,IAAI1D,KAAJ,CACJ,oFADI,CAAN;EAGD;;EAED,MAAIm4B,YAAJ;;EACA,MAAIlB,OAAO,KAAK9yB,SAAhB,EAA2B;EACzB,QAAI,OAAO8yB,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,YAAM,IAAIj3B,KAAJ,CAAU,4BAAV,CAAN;EACD;;EACD,QAAIo4B,OAAO,GAAGh6B,IAAI,CAACC,GAAL,KAAa44B,OAAO,GAAG,IAArC;;EACAkB,IAAAA,YAAY,GAAG,MAAM/5B,IAAI,CAACC,GAAL,KAAa+5B,OAAlC;EACD,GAND,MAMO;EACLD,IAAAA,YAAY,GAAG,MAAM,KAArB;EACD;;EAED,MAAIE,YAAY,GAAG,IAAI50B,KAAJ,CAAUe,IAAI,CAACwL,CAAL,CAAO1Q,MAAjB,CAAnB;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo0B,QAApB,EAA8Bp0B,CAAC,EAA/B,EAAmC;EACjC20B,IAAAA,YAAY,CAAC30B,CAAD,CAAZ,GAAkBw0B,MAAM,CAACx0B,CAAD,CAAxB;EACD;;EAED,SAAO;EACLy0B,IAAAA,YADK;EAELjB,IAAAA,SAFK;EAGLC,IAAAA,SAHK;EAILU,IAAAA,UAJK;EAKLQ,IAAAA,YALK;EAMLhB,IAAAA,OANK;EAOLC,IAAAA,aAPK;EAQLC,IAAAA,eARK;EASLC,IAAAA,aATK;EAULC,IAAAA,cAVK;EAWLC,IAAAA,iBAXK;EAYLC,IAAAA,kBAZK;EAaLC,IAAAA;EAbK,GAAP;EAeD;;EChHD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACe,SAASU,gBAAT,CACb9zB,IADa,EAEbqzB,UAFa,EAGbb,qBAHa,EAIbqB,YAJa,EAKb;EACA,MAAIE,KAAK,GAAG,CAAZ;EACA,QAAMC,IAAI,GAAGxB,qBAAqB,CAACa,UAAD,CAAlC;;EACA,OAAK,IAAIn0B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGc,IAAI,CAACwL,CAAL,CAAO1Q,MAA3B,EAAmCoE,CAAC,EAApC,EAAwC;EACtC60B,IAAAA,KAAK,IAAIluB,IAAI,CAACyH,GAAL,CAAStN,IAAI,CAACyL,CAAL,CAAOvM,CAAP,IAAY80B,IAAI,CAACh0B,IAAI,CAACwL,CAAL,CAAOtM,CAAP,CAAD,CAAzB,EAAsC,CAAtC,IAA2C20B,YAAY,CAAC30B,CAAD,CAAhE;EACD;;EAED,SAAO60B,KAAP;EACD;;ECtBD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEe,SAASE,gBAAT,CACbj0B,IADa,EAEbk0B,aAFa,EAGbC,MAHa,EAIbhB,kBAJa,EAKbiB,aALa,EAMblB,iBANa,EAOb;EACA,QAAMmB,QAAQ,GAAGF,MAAM,CAACr5B,MAAxB;EACA,QAAMw4B,QAAQ,GAAGtzB,IAAI,CAACwL,CAAL,CAAO1Q,MAAxB;EACA,MAAIsM,GAAG,GAAGgP,MAAM,CAAC6I,KAAP,CAAaoV,QAAb,EAAuBf,QAAvB,CAAV;EAEA,MAAIzJ,QAAQ,GAAG,CAAf;;EACA,OAAK,IAAIyK,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGD,QAA5B,EAAsCC,KAAK,EAA3C,EAA+C;EAC7C,QAAInB,kBAAkB,CAACmB,KAAD,CAAlB,KAA8B,CAAlC,EAAqC;EACrC,QAAIC,KAAK,GAAGpB,kBAAkB,CAACmB,KAAD,CAA9B;EACA,QAAIE,SAAS,GAAGL,MAAM,CAACvkB,KAAP,EAAhB;EACA4kB,IAAAA,SAAS,CAACF,KAAD,CAAT,IAAoBC,KAApB;EACA,QAAIE,SAAS,GAAGL,aAAa,CAACI,SAAD,CAA7B;;EACA,QAAI,CAACtB,iBAAL,EAAwB;EACtB,WAAK,IAAIwB,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGpB,QAA5B,EAAsCoB,KAAK,EAA3C,EAA+C;EAC7CttB,QAAAA,GAAG,CAACoP,GAAJ,CACEqT,QADF,EAEE6K,KAFF,EAGE,CAACR,aAAa,CAACQ,KAAD,CAAb,GAAuBD,SAAS,CAACz0B,IAAI,CAACwL,CAAL,CAAOkpB,KAAP,CAAD,CAAjC,IAAoDH,KAHtD;EAKD;EACF,KARD,MAQO;EACLC,MAAAA,SAAS,GAAGL,MAAM,CAACvkB,KAAP,EAAZ;EACA4kB,MAAAA,SAAS,CAACF,KAAD,CAAT,IAAoBC,KAApB;EACAA,MAAAA,KAAK,IAAI,CAAT;EACA,UAAII,UAAU,GAAGP,aAAa,CAACI,SAAD,CAA9B;;EACA,WAAK,IAAIE,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGpB,QAA5B,EAAsCoB,KAAK,EAA3C,EAA+C;EAC7CttB,QAAAA,GAAG,CAACoP,GAAJ,CACEqT,QADF,EAEE6K,KAFF,EAGE,CAACC,UAAU,CAAC30B,IAAI,CAACwL,CAAL,CAAOkpB,KAAP,CAAD,CAAV,GAA4BD,SAAS,CAACz0B,IAAI,CAACwL,CAAL,CAAOkpB,KAAP,CAAD,CAAtC,IAAyDH,KAH3D;EAKD;EACF;;EACD1K,IAAAA,QAAQ;EACT;;EAED,SAAOziB,GAAP;EACD;;ECrDD;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,SAASwtB,cAAT,CAAwB50B,IAAxB,EAA8Bk0B,aAA9B,EAA6C;EAC3C,QAAMhT,CAAC,GAAGlhB,IAAI,CAACwL,CAAL,CAAO1Q,MAAjB;EAEA,MAAIsM,GAAG,GAAG,IAAIgP,MAAJ,CAAW8K,CAAX,EAAc,CAAd,CAAV;;EAEA,OAAK,IAAIwT,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGxT,CAA5B,EAA+BwT,KAAK,EAApC,EAAwC;EACtCttB,IAAAA,GAAG,CAACoP,GAAJ,CAAQke,KAAR,EAAe,CAAf,EAAkB10B,IAAI,CAACyL,CAAL,CAAOipB,KAAP,IAAgBR,aAAa,CAACQ,KAAD,CAA/C;EACD;;EACD,SAAOttB,GAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACe,SAAShH,IAAT,CACbJ,IADa,EAEbm0B,MAFa,EAGbtB,OAHa,EAIbM,kBAJa,EAKbX,qBALa,EAMbU,iBANa,EAOb1B,OAPa,EAQb;EACA,MAAIz2B,KAAK,GAAG83B,OAAZ;EACA,MAAIrI,QAAQ,GAAGpU,MAAM,CAACmJ,GAAP,CAAW4U,MAAM,CAACr5B,MAAlB,EAA0Bq5B,MAAM,CAACr5B,MAAjC,EAAyCC,KAAzC,CAAf;EAEA,QAAMi5B,IAAI,GAAGxB,qBAAqB,CAAC2B,MAAD,CAAlC;EAEA,MAAID,aAAa,GAAG,IAAI1jB,YAAJ,CAAiBxQ,IAAI,CAACwL,CAAL,CAAO1Q,MAAxB,CAApB;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGc,IAAI,CAACwL,CAAL,CAAO1Q,MAA3B,EAAmCoE,CAAC,EAApC,EAAwC;EACtCg1B,IAAAA,aAAa,CAACh1B,CAAD,CAAb,GAAmB80B,IAAI,CAACh0B,IAAI,CAACwL,CAAL,CAAOtM,CAAP,CAAD,CAAvB;EACD;;EAED,MAAI21B,YAAY,GAAGZ,gBAAgB,CACjCj0B,IADiC,EAEjCk0B,aAFiC,EAGjCC,MAHiC,EAIjChB,kBAJiC,EAKjCX,qBALiC,EAMjCU,iBANiC,CAAnC;EAQA,MAAI4B,aAAa,GAAGF,cAAc,CAAC50B,IAAD,EAAOk0B,aAAP,CAAlC;EAEA,MAAIa,aAAa,GAAGtF,OAAO,CACzBjF,QAAQ,CAACnU,GAAT,CACEwe,YAAY,CAAC9Q,IAAb,CACE8Q,YAAY,CAAC1L,SAAb,GAAyB/K,KAAzB,CAA+B,KAA/B,EAAsC;EAAEA,IAAAA,KAAK,EAAEoT;EAAT,GAAtC,CADF,CADF,CADyB,CAA3B;EAQA,MAAIwD,2BAA2B,GAAGH,YAAY,CAAC9Q,IAAb,CAChC+Q,aAAa,CAAC1W,KAAd,CAAoB,KAApB,EAA2B;EAAEA,IAAAA,KAAK,EAAEoT;EAAT,GAA3B,CADgC,CAAlC;EAIA,MAAIyD,aAAa,GAAGF,aAAa,CAAChR,IAAd,CAAmBiR,2BAAnB,CAApB;EAEA,SAAO;EACLC,IAAAA,aADK;EAELD,IAAAA;EAFK,GAAP;EAID;;EC5ED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACe,SAASE,kBAAT,CACbl1B,IADa,EAEbwyB,qBAFa,EAIb;EAAA,MADA3rB,OACA,uEADU,EACV;EACA,MAAI;EACF8sB,IAAAA,YADE;EAEFjB,IAAAA,SAFE;EAGFC,IAAAA,SAHE;EAIFU,IAAAA,UAJE;EAKFQ,IAAAA,YALE;EAMFhB,IAAAA,OANE;EAOFC,IAAAA,aAPE;EAQFC,IAAAA,eARE;EASFC,IAAAA,aATE;EAUFC,IAAAA,cAVE;EAWFC,IAAAA,iBAXE;EAYFC,IAAAA,kBAZE;EAaFC,IAAAA;EAbE,MAcAb,cAAY,CAACvyB,IAAD,EAAOwyB,qBAAP,EAA8B3rB,OAA9B,CAdhB;EAgBA,MAAIktB,KAAK,GAAGD,gBAAgB,CAC1B9zB,IAD0B,EAE1BqzB,UAF0B,EAG1Bb,qBAH0B,EAI1BqB,YAJ0B,CAA5B;EAOA,MAAIsB,SAAS,GAAGpB,KAAK,IAAId,cAAzB;EAEA,MAAImC,SAAS,GAAG,CAAhB;;EACA,SAAOA,SAAS,GAAGpC,aAAZ,IAA6B,CAACmC,SAArC,EAAgDC,SAAS,EAAzD,EAA6D;EAC3D,QAAIC,aAAa,GAAGtB,KAApB;EAEA,QAAI;EAAEkB,MAAAA,aAAF;EAAiBD,MAAAA;EAAjB,QAAiD50B,IAAI,CACvDJ,IADuD,EAEvDqzB,UAFuD,EAGvDR,OAHuD,EAIvDM,kBAJuD,EAKvDX,qBALuD,EAMvDU,iBANuD,EAOvDW,YAPuD,CAAzD;;EAUA,SAAK,IAAIjT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyS,UAAU,CAACv4B,MAA/B,EAAuC8lB,CAAC,EAAxC,EAA4C;EAC1CyS,MAAAA,UAAU,CAACzS,CAAD,CAAV,GAAgB/a,IAAI,CAAC+K,GAAL,CACd/K,IAAI,CAACiL,GAAL,CAAS4hB,SAAS,CAAC9R,CAAD,CAAlB,EAAuByS,UAAU,CAACzS,CAAD,CAAV,GAAgBqU,aAAa,CAACtf,GAAd,CAAkBiL,CAAlB,EAAqB,CAArB,CAAvC,CADc,EAEd+R,SAAS,CAAC/R,CAAD,CAFK,CAAhB;EAID;;EAEDmT,IAAAA,KAAK,GAAGD,gBAAgB,CACtB9zB,IADsB,EAEtBqzB,UAFsB,EAGtBb,qBAHsB,EAItBqB,YAJsB,CAAxB;EAOA,QAAI9wB,KAAK,CAACgxB,KAAD,CAAT,EAAkB;EAElB,QAAIuB,iBAAiB,GACnB,CAACD,aAAa,GAAGtB,KAAjB,IACAkB,aAAa,CACV9L,SADH,GAEGpF,IAFH,CAEQkR,aAAa,CAAC/d,IAAd,CAAmB2b,OAAnB,EAA4Bxc,GAA5B,CAAgC2e,2BAAhC,CAFR,EAGGrf,GAHH,CAGO,CAHP,EAGU,CAHV,CAFF;;EAOA,QAAI2f,iBAAiB,GAAGlC,oBAAxB,EAA8C;EAC5CP,MAAAA,OAAO,GAAGhtB,IAAI,CAACiL,GAAL,CAAS+hB,OAAO,GAAGE,eAAnB,EAAoC,IAApC,CAAV;EACD,KAFD,MAEO;EACLgB,MAAAA,KAAK,GAAGsB,aAAR;EACAxC,MAAAA,OAAO,GAAGhtB,IAAI,CAAC+K,GAAL,CAASiiB,OAAO,GAAGC,aAAnB,EAAkC,GAAlC,CAAV;EACD;;EAED,QAAIa,YAAY,EAAhB,EAAoB;EAClB,YAAM,IAAIn4B,KAAJ,CACH,iCAAgCqL,OAAO,CAAC4rB,OAAQ,UAD7C,CAAN;EAGD;;EAED0C,IAAAA,SAAS,GAAGpB,KAAK,IAAId,cAArB;EACD;;EAED,SAAO;EACLsC,IAAAA,eAAe,EAAElC,UADZ;EAELmC,IAAAA,cAAc,EAAEzB,KAFX;EAGL0B,IAAAA,UAAU,EAAEL;EAHP,GAAP;EAKD;;ECjHD;EACA;EACA;EACA;EACA;EACO,SAASM,SAAT,CAAmBt6B,KAAnB,EAA0B;EAC/B,MAAIu6B,QAAQ,GAAGv6B,KAAK,CAACwU,KAAN,EAAf;;EACA,OAAK,IAAI1Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy2B,QAAQ,CAAC76B,MAA7B,EAAqCoE,CAAC,EAAtC,EAA0C;EACxC,QAAIy2B,QAAQ,CAACz2B,CAAD,CAAR,GAAc,CAAlB,EAAqBy2B,QAAQ,CAACz2B,CAAD,CAAR,IAAe,CAAC,CAAhB;EACtB;;EAED,SAAOy2B,QAAP;EACD;;ECTD;EACA;EACA;EACA;EACA;;EACO,SAASC,eAAT,CAAyBx6B,KAAzB,EAAgC;EACrC,SAAOoU,MAAM,CAACkmB,SAAS,CAACt6B,KAAD,CAAV,CAAb;EACD;;ECVD;EACA;EACA;EACA;EACA;EAEO,SAASy6B,iBAAT,CAA2Bz6B,KAA3B,EAAkC06B,MAAlC,EAA0C;EAC/C,MAAIC,GAAG,GAAG,CAAV;EACA,MAAIC,IAAI,GAAG56B,KAAK,CAACN,MAAN,GAAe,CAA1B;EACA,MAAI4tB,MAAM,GAAG,CAAb;;EACA,SAAOsN,IAAI,GAAGD,GAAP,GAAa,CAApB,EAAuB;EACrBrN,IAAAA,MAAM,GAAGqN,GAAG,IAAKC,IAAI,GAAGD,GAAR,IAAgB,CAApB,CAAZ;;EACA,QAAI36B,KAAK,CAACstB,MAAD,CAAL,GAAgBoN,MAApB,EAA4B;EAC1BC,MAAAA,GAAG,GAAGrN,MAAN;EACD,KAFD,MAEO,IAAIttB,KAAK,CAACstB,MAAD,CAAL,GAAgBoN,MAApB,EAA4B;EACjCE,MAAAA,IAAI,GAAGtN,MAAP;EACD,KAFM,MAEA;EACL,aAAOA,MAAP;EACD;EACF;;EAED,MAAIqN,GAAG,GAAG36B,KAAK,CAACN,MAAN,GAAe,CAAzB,EAA4B;EAC1B,QAAI+K,IAAI,CAACC,GAAL,CAASgwB,MAAM,GAAG16B,KAAK,CAAC26B,GAAD,CAAvB,IAAgClwB,IAAI,CAACC,GAAL,CAAS1K,KAAK,CAAC26B,GAAG,GAAG,CAAP,CAAL,GAAiBD,MAA1B,CAApC,EAAuE;EACrE,aAAOC,GAAP;EACD,KAFD,MAEO;EACL,aAAOA,GAAG,GAAG,CAAb;EACD;EACF,GAND,MAMO;EACL,WAAOA,GAAP;EACD;EACF;;EC5BD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASE,eAAT,CAAyBzqB,CAAzB,EAA0C;EAAA,MAAd3E,OAAc,uEAAJ,EAAI;EAC/C,MAAI;EAAEiN,IAAAA,SAAF;EAAaE,IAAAA,OAAb;EAAsBvD,IAAAA,IAAtB;EAA4BogB,IAAAA;EAA5B,MAAmChqB,OAAvC;;EAEA,MAAIiN,SAAS,KAAKnU,SAAlB,EAA6B;EAC3B,QAAI8Q,IAAI,KAAK9Q,SAAb,EAAwB;EACtBmU,MAAAA,SAAS,GAAG+hB,iBAAiB,CAACrqB,CAAD,EAAIiF,IAAJ,CAA7B;EACD,KAFD,MAEO;EACLqD,MAAAA,SAAS,GAAG,CAAZ;EACD;EACF;;EACD,MAAIE,OAAO,KAAKrU,SAAhB,EAA2B;EACzB,QAAIkxB,EAAE,KAAKlxB,SAAX,EAAsB;EACpBqU,MAAAA,OAAO,GAAG6hB,iBAAiB,CAACrqB,CAAD,EAAIqlB,EAAJ,CAA3B;EACD,KAFD,MAEO;EACL7c,MAAAA,OAAO,GAAGxI,CAAC,CAAC1Q,MAAF,GAAW,CAArB;EACD;EACF;;EACD,MAAIgZ,SAAS,GAAGE,OAAhB,EAAyB,CAACF,SAAD,EAAYE,OAAZ,IAAuB,CAACA,OAAD,EAAUF,SAAV,CAAvB;EACzB,SAAO;EAAEA,IAAAA,SAAF;EAAaE,IAAAA;EAAb,GAAP;EACD;;;;;EC/BA,aAAUkiB,MAAV,EAAkBC,OAAlB,EAA2B;EAC1B,IAA+DA,OAAO,CAACl5B,OAAD,CAAtE,CAAA;EAGD,GAJA,EAICm5B,cAJD,EAIO,UAAUn5B,OAAV,EAAmB;;EAEzB,aAASo5B,SAAT,CAAmBluB,CAAnB,EAAsBmH,CAAtB,EAAyB;EACvB,aAAOnH,CAAC,GAAGmH,CAAJ,GAAQ,CAAC,CAAT,GAAanH,CAAC,GAAGmH,CAAJ,GAAQ,CAAR,GAAYnH,CAAC,IAAImH,CAAL,GAAS,CAAT,GAAayT,GAA7C;EACD;;EAED,aAASuT,QAAT,CAAkBC,OAAlB,EAA2B;EACzB,UAAIA,OAAO,CAACz7B,MAAR,KAAmB,CAAvB,EAA0By7B,OAAO,GAAGC,mBAAmB,CAACD,OAAD,CAA7B;EAC1B,aAAO;EACLE,QAAAA,IAAI,EAAE,UAAStuB,CAAT,EAAYqD,CAAZ,EAAekrB,EAAf,EAAmBC,EAAnB,EAAuB;EAC3B,cAAID,EAAE,IAAI,IAAV,EAAgBA,EAAE,GAAG,CAAL;EAChB,cAAIC,EAAE,IAAI,IAAV,EAAgBA,EAAE,GAAGxuB,CAAC,CAACrN,MAAP;;EAChB,iBAAO47B,EAAE,GAAGC,EAAZ,EAAgB;EACd,gBAAIC,GAAG,GAAGF,EAAE,GAAGC,EAAL,KAAY,CAAtB;EACA,gBAAIJ,OAAO,CAACpuB,CAAC,CAACyuB,GAAD,CAAF,EAASprB,CAAT,CAAP,GAAqB,CAAzB,EAA4BkrB,EAAE,GAAGE,GAAG,GAAG,CAAX,CAA5B,KACKD,EAAE,GAAGC,GAAL;EACN;;EACD,iBAAOF,EAAP;EACD,SAVI;EAWLG,QAAAA,KAAK,EAAE,UAAS1uB,CAAT,EAAYqD,CAAZ,EAAekrB,EAAf,EAAmBC,EAAnB,EAAuB;EAC5B,cAAID,EAAE,IAAI,IAAV,EAAgBA,EAAE,GAAG,CAAL;EAChB,cAAIC,EAAE,IAAI,IAAV,EAAgBA,EAAE,GAAGxuB,CAAC,CAACrN,MAAP;;EAChB,iBAAO47B,EAAE,GAAGC,EAAZ,EAAgB;EACd,gBAAIC,GAAG,GAAGF,EAAE,GAAGC,EAAL,KAAY,CAAtB;EACA,gBAAIJ,OAAO,CAACpuB,CAAC,CAACyuB,GAAD,CAAF,EAASprB,CAAT,CAAP,GAAqB,CAAzB,EAA4BmrB,EAAE,GAAGC,GAAL,CAA5B,KACKF,EAAE,GAAGE,GAAG,GAAG,CAAX;EACN;;EACD,iBAAOF,EAAP;EACD;EApBI,OAAP;EAsBD;;EAED,aAASF,mBAAT,CAA6BtnB,CAA7B,EAAgC;EAC9B,aAAO,UAASF,CAAT,EAAYxD,CAAZ,EAAe;EACpB,eAAO6qB,SAAS,CAACnnB,CAAC,CAACF,CAAD,CAAF,EAAOxD,CAAP,CAAhB;EACD,OAFD;EAGD;;EAED,QAAIsrB,eAAe,GAAGR,QAAQ,CAACD,SAAD,CAA9B;EACA,QAAIU,WAAW,GAAGD,eAAe,CAACD,KAAlC;EACA,QAAIG,UAAU,GAAGF,eAAe,CAACL,IAAjC;;EAEA,aAASQ,UAAT,CAAoB9uB,CAApB,EAAuBmH,CAAvB,EAA0B;EACxB,aAAOA,CAAC,GAAGnH,CAAJ,GAAQ,CAAC,CAAT,GAAamH,CAAC,GAAGnH,CAAJ,GAAQ,CAAR,GAAYmH,CAAC,IAAInH,CAAL,GAAS,CAAT,GAAa4a,GAA7C;EACD;;EAED,aAASmU,QAAT,CAAkB1rB,CAAlB,EAAqB;EACnB,aAAOA,CAAC,KAAK,IAAN,GAAauX,GAAb,GAAmB,CAACvX,CAA3B;EACD;;EAED,aAASmS,QAAT,CAAkBviB,KAAlB,EAAyB8T,CAAzB,EAA4B;EAC1B,UAAIiS,CAAC,GAAG/lB,KAAK,CAACN,MAAd;EAAA,UACIomB,CAAC,GAAG,CADR;EAAA,UAEI/Y,CAFJ;EAAA,UAGI6G,CAHJ;EAAA,UAIIkV,CAAC,GAAG,CAJR;EAAA,UAKIhlB,CAAC,GAAG,CAAC,CALT;EAAA,UAMI0F,CAAC,GAAG,CANR;;EAQA,UAAIsK,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB;EACd,cAAI,CAACpe,KAAK,CAACoF,CAAC,GAAG+uB,QAAQ,CAAC97B,KAAK,CAAC8D,CAAD,CAAN,CAAb,CAAV,EAAoC;EAClC8P,YAAAA,CAAC,GAAG7G,CAAC,GAAG+Y,CAAR;EACAA,YAAAA,CAAC,IAAIlS,CAAC,GAAG,EAAEpK,CAAX;EACAsf,YAAAA,CAAC,IAAIlV,CAAC,IAAI7G,CAAC,GAAG+Y,CAAR,CAAN;EACD;EACF;EACF,OARD,MAUK;EACH,eAAO,EAAEhiB,CAAF,GAAMiiB,CAAb,EAAgB;EACd,cAAI,CAACpe,KAAK,CAACoF,CAAC,GAAG+uB,QAAQ,CAAChoB,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAF,CAAb,CAAV,EAAiD;EAC/C4T,YAAAA,CAAC,GAAG7G,CAAC,GAAG+Y,CAAR;EACAA,YAAAA,CAAC,IAAIlS,CAAC,GAAG,EAAEpK,CAAX;EACAsf,YAAAA,CAAC,IAAIlV,CAAC,IAAI7G,CAAC,GAAG+Y,CAAR,CAAN;EACD;EACF;EACF;;EAED,UAAItc,CAAC,GAAG,CAAR,EAAW,OAAOsf,CAAC,IAAItf,CAAC,GAAG,CAAR,CAAR;EACZ;;EAED,aAASuyB,SAAT,CAAmB/7B,KAAnB,EAA0B8T,CAA1B,EAA6B;EAC3B,UAAIhN,CAAC,GAAGyb,QAAQ,CAACviB,KAAD,EAAQ8T,CAAR,CAAhB;EACA,aAAOhN,CAAC,GAAG2D,IAAI,CAACkV,IAAL,CAAU7Y,CAAV,CAAH,GAAkBA,CAA1B;EACD;;EAED,aAASk1B,MAAT,CAAgBh8B,KAAhB,EAAuB8T,CAAvB,EAA0B;EACxB,UAAIhQ,CAAC,GAAG,CAAC,CAAT;EAAA,UACIiiB,CAAC,GAAG/lB,KAAK,CAACN,MADd;EAAA,UAEIqN,CAFJ;EAAA,UAGImH,CAHJ;EAAA,UAIID,CAJJ;;EAMA,UAAIH,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGlU,KAAK,CAAC8D,CAAD,CAAV,KAAkB,IAAlB,IAA0BoQ,CAAC,IAAIA,CAAnC,EAAsC;EAAEnH,UAAAA,CAAC,GAAGkH,CAAC,GAAGC,CAAR;EAAW;EAAQ;;EAC3E,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGlU,KAAK,CAAC8D,CAAD,CAAV,KAAkB,IAAtB,EAA4B;EAC1C,cAAIiJ,CAAC,GAAGmH,CAAR,EAAWnH,CAAC,GAAGmH,CAAJ;EACX,cAAID,CAAC,GAAGC,CAAR,EAAWD,CAAC,GAAGC,CAAJ;EACZ;EACF,OAND,MAQK;EACH,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAN,KAA+B,IAA/B,IAAuCkU,CAAC,IAAIA,CAAhD,EAAmD;EAAEnH,UAAAA,CAAC,GAAGkH,CAAC,GAAGC,CAAR;EAAW;EAAQ;;EACxF,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAN,KAA+B,IAAnC,EAAyC;EACvD,cAAI+M,CAAC,GAAGmH,CAAR,EAAWnH,CAAC,GAAGmH,CAAJ;EACX,cAAID,CAAC,GAAGC,CAAR,EAAWD,CAAC,GAAGC,CAAJ;EACZ;EACF;;EAED,aAAO,CAACnH,CAAD,EAAIkH,CAAJ,CAAP;EACD;;EAED,aAASgoB,QAAT,CAAkB7rB,CAAlB,EAAqB;EACnB,aAAO,YAAW;EAChB,eAAOA,CAAP;EACD,OAFD;EAGD;;EAED,aAASgf,QAAT,CAAkBhf,CAAlB,EAAqB;EACnB,aAAOA,CAAP;EACD;;EAED,aAAS8rB,KAAT,CAAeltB,KAAf,EAAsBmtB,IAAtB,EAA4Bn3B,IAA5B,EAAkC;EAChCgK,MAAAA,KAAK,GAAG,CAACA,KAAT,EAAgBmtB,IAAI,GAAG,CAACA,IAAxB,EAA8Bn3B,IAAI,GAAG,CAAC+gB,CAAC,GAAGvN,SAAS,CAAC9Y,MAAf,IAAyB,CAAzB,IAA8By8B,IAAI,GAAGntB,KAAP,EAAcA,KAAK,GAAG,CAAtB,EAAyB,CAAvD,IAA4D+W,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAY,CAAC/gB,IAA9G;EAEA,UAAIlB,CAAC,GAAG,CAAC,CAAT;EAAA,UACIiiB,CAAC,GAAGtb,IAAI,CAACiL,GAAL,CAAS,CAAT,EAAYjL,IAAI,CAACmU,IAAL,CAAU,CAACud,IAAI,GAAGntB,KAAR,IAAiBhK,IAA3B,CAAZ,IAAgD,CADxD;EAAA,UAEIk3B,KAAK,GAAG,IAAIr4B,KAAJ,CAAUkiB,CAAV,CAFZ;;EAIA,aAAO,EAAEjiB,CAAF,GAAMiiB,CAAb,EAAgB;EACdmW,QAAAA,KAAK,CAACp4B,CAAD,CAAL,GAAWkL,KAAK,GAAGlL,CAAC,GAAGkB,IAAvB;EACD;;EAED,aAAOk3B,KAAP;EACD;;EAED,QAAIE,GAAG,GAAG3xB,IAAI,CAACkV,IAAL,CAAU,EAAV,CAAV;EACA,QAAI0c,EAAE,GAAG5xB,IAAI,CAACkV,IAAL,CAAU,EAAV,CAAT;EACA,QAAI2c,EAAE,GAAG7xB,IAAI,CAACkV,IAAL,CAAU,CAAV,CAAT;;EACA,aAAS4c,KAAT,CAAevtB,KAAf,EAAsBmtB,IAAtB,EAA4BvL,KAA5B,EAAmC;EACjC,UAAI5rB,IAAI,GAAGw3B,QAAQ,CAACxtB,KAAD,EAAQmtB,IAAR,EAAcvL,KAAd,CAAnB;EACA,aAAOsL,KAAK,CACVzxB,IAAI,CAACmU,IAAL,CAAU5P,KAAK,GAAGhK,IAAlB,IAA0BA,IADhB,EAEVyF,IAAI,CAACwU,KAAL,CAAWkd,IAAI,GAAGn3B,IAAlB,IAA0BA,IAA1B,GAAiCA,IAAI,GAAG,CAF9B;EAGVA,MAAAA,IAHU,CAAZ;EAKD;;EAED,aAASw3B,QAAT,CAAkBxtB,KAAlB,EAAyBmtB,IAAzB,EAA+BvL,KAA/B,EAAsC;EACpC,UAAI6L,KAAK,GAAGhyB,IAAI,CAACC,GAAL,CAASyxB,IAAI,GAAGntB,KAAhB,IAAyBvE,IAAI,CAACiL,GAAL,CAAS,CAAT,EAAYkb,KAAZ,CAArC;EAAA,UACI8L,KAAK,GAAGjyB,IAAI,CAACyH,GAAL,CAAS,EAAT,EAAazH,IAAI,CAACwU,KAAL,CAAWxU,IAAI,CAAC0U,GAAL,CAASsd,KAAT,IAAkBhyB,IAAI,CAACkyB,IAAlC,CAAb,CADZ;EAAA,UAEIhE,KAAK,GAAG8D,KAAK,GAAGC,KAFpB;EAGA,UAAI/D,KAAK,IAAIyD,GAAb,EAAkBM,KAAK,IAAI,EAAT,CAAlB,KACK,IAAI/D,KAAK,IAAI0D,EAAb,EAAiBK,KAAK,IAAI,CAAT,CAAjB,KACA,IAAI/D,KAAK,IAAI2D,EAAb,EAAiBI,KAAK,IAAI,CAAT;EACtB,aAAOP,IAAI,GAAGntB,KAAP,GAAe,CAAC0tB,KAAhB,GAAwBA,KAA/B;EACD;;EAED,aAASE,OAAT,CAAiB5pB,MAAjB,EAAyB;EACvB,aAAOvI,IAAI,CAACmU,IAAL,CAAUnU,IAAI,CAAC0U,GAAL,CAASnM,MAAM,CAACtT,MAAhB,IAA0B+K,IAAI,CAACoyB,GAAzC,IAAgD,CAAvD;EACD;;EAED,aAASptB,MAAT,CAAgBW,CAAhB,EAAmB;EACjB,aAAO,CAACA,CAAR;EACD;;EAED,aAAS0sB,SAAT,GAAqB;EACnB,UAAIn9B,KAAK,GAAGyvB,QAAZ;EAAA,UACI2N,MAAM,GAAGf,MADb;EAAA,UAEIpI,SAAS,GAAGgJ,OAFhB;;EAIA,eAASE,SAAT,CAAmBl4B,IAAnB,EAAyB;EACvB,YAAId,CAAJ;EAAA,YACIiiB,CAAC,GAAGnhB,IAAI,CAAClF,MADb;EAAA,YAEI0Q,CAFJ;EAAA,YAGI4C,MAAM,GAAG,IAAInP,KAAJ,CAAUkiB,CAAV,CAHb,CADuB;;EAOvB,aAAKjiB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiiB,CAAhB,EAAmB,EAAEjiB,CAArB,EAAwB;EACtBkP,UAAAA,MAAM,CAAClP,CAAD,CAAN,GAAY,CAACnE,KAAK,CAACiF,IAAI,CAACd,CAAD,CAAL,EAAUA,CAAV,EAAac,IAAb,CAAlB;EACD;;EAED,YAAIo4B,EAAE,GAAGD,MAAM,CAAC/pB,MAAD,CAAf;EAAA,YACI8D,EAAE,GAAG,CAACkmB,EAAE,CAAC,CAAD,CADZ;EAAA,YAEIC,EAAE,GAAG,CAACD,EAAE,CAAC,CAAD,CAFZ;EAAA,YAGIE,EAAE,GAAGtJ,SAAS,CAAC5gB,MAAD,EAAS8D,EAAT,EAAammB,EAAb,CAHlB,CAXuB;;EAiBvB,YAAI,CAACp5B,KAAK,CAACyQ,OAAN,CAAc4oB,EAAd,CAAL,EAAwBA,EAAE,GAAGX,KAAK,CAACzlB,EAAD,EAAKmmB,EAAL,EAAS,CAACC,EAAV,CAAV,CAjBD;;EAoBvB,YAAIpX,CAAC,GAAGoX,EAAE,CAACx9B,MAAX;;EACA,aAAKoE,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgiB,CAAhB,EAAmB,EAAEhiB,CAArB,EAAwBo5B,EAAE,CAACp5B,CAAD,CAAF,GAAQ,CAACo5B,EAAE,CAACp5B,CAAD,CAAX;;EACxB,eAAOo5B,EAAE,CAAC,CAAD,CAAF,IAASpmB,EAAhB,EAAoBomB,EAAE,CAAC18B,KAAH,IAAY,EAAEslB,CAAd;;EACpB,eAAOoX,EAAE,CAACpX,CAAC,GAAG,CAAL,CAAF,IAAamX,EAApB,EAAwBC,EAAE,CAACC,GAAH,IAAU,EAAErX,CAAZ;;EAExB,YAAIsX,IAAI,GAAG,IAAIv5B,KAAJ,CAAUiiB,CAAC,GAAG,CAAd,CAAX;EAAA,YACIuX,GADJ,CAzBuB;;EA6BvB,aAAKv5B,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIgiB,CAAjB,EAAoB,EAAEhiB,CAAtB,EAAyB;EACvBu5B,UAAAA,GAAG,GAAGD,IAAI,CAACt5B,CAAD,CAAJ,GAAU,EAAhB;EACAu5B,UAAAA,GAAG,CAACvmB,EAAJ,GAAShT,CAAC,GAAG,CAAJ,GAAQo5B,EAAE,CAACp5B,CAAC,GAAG,CAAL,CAAV,GAAoBgT,EAA7B;EACAumB,UAAAA,GAAG,CAACJ,EAAJ,GAASn5B,CAAC,GAAGgiB,CAAJ,GAAQoX,EAAE,CAACp5B,CAAD,CAAV,GAAgBm5B,EAAzB;EACD,SAjCsB;;;EAoCvB,aAAKn5B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGiiB,CAAhB,EAAmB,EAAEjiB,CAArB,EAAwB;EACtBsM,UAAAA,CAAC,GAAG4C,MAAM,CAAClP,CAAD,CAAV;;EACA,cAAIgT,EAAE,IAAI1G,CAAN,IAAWA,CAAC,IAAI6sB,EAApB,EAAwB;EACtBG,YAAAA,IAAI,CAACzB,WAAW,CAACuB,EAAD,EAAK9sB,CAAL,EAAQ,CAAR,EAAW0V,CAAX,CAAZ,CAAJ,CAA+BhmB,IAA/B,CAAoC8E,IAAI,CAACd,CAAD,CAAxC;EACD;EACF;;EAED,eAAOs5B,IAAP;EACD;;EAEDN,MAAAA,SAAS,CAACn9B,KAAV,GAAkB,UAAS29B,CAAT,EAAY;EAC5B,eAAO9kB,SAAS,CAAC9Y,MAAV,IAAoBC,KAAK,GAAG,OAAO29B,CAAP,KAAa,UAAb,GAA0BA,CAA1B,GAA8BrB,QAAQ,CAAC,CAACqB,CAAF,CAA9C,EAAoDR,SAAxE,IAAqFn9B,KAA5F;EACD,OAFD;;EAIAm9B,MAAAA,SAAS,CAACC,MAAV,GAAmB,UAASO,CAAT,EAAY;EAC7B,eAAO9kB,SAAS,CAAC9Y,MAAV,IAAoBq9B,MAAM,GAAG,OAAOO,CAAP,KAAa,UAAb,GAA0BA,CAA1B,GAA8BrB,QAAQ,CAAC,CAAC,CAACqB,CAAC,CAAC,CAAD,CAAH,EAAQ,CAACA,CAAC,CAAC,CAAD,CAAV,CAAD,CAA/C,EAAiER,SAArF,IAAkGC,MAAzG;EACD,OAFD;;EAIAD,MAAAA,SAAS,CAACS,UAAV,GAAuB,UAASD,CAAT,EAAY;EACjC,YAAI,CAAC9kB,SAAS,CAAC9Y,MAAf,EAAuB,OAAOk0B,SAAP;EACvBA,QAAAA,SAAS,GAAG,OAAO0J,CAAP,KAAa,UAAb,GAA0BA,CAA1B,GACNz5B,KAAK,CAACyQ,OAAN,CAAcgpB,CAAd,IAAmBrB,QAAQ,CAACp4B,KAAK,CAACuJ,SAAN,CAAgBC,GAAhB,CAAoBzE,IAApB,CAAyB00B,CAAzB,EAA4B7tB,MAA5B,CAAD,CAA3B,GACAwsB,QAAQ,CAAC,CAACqB,CAAF,CAFd;EAGA,eAAOR,SAAP;EACD,OAND;;EAQA,aAAOA,SAAP;EACD;;EAED,aAASU,QAAT,CAAkBx9B,KAAlB,EAAyBimB,CAAzB,EAA4BnS,CAA5B,EAA+B;EAC7B,UAAIA,CAAC,IAAI,IAAT,EAAeA,CAAC,GAAGgoB,QAAJ;EACf,UAAI,EAAE/V,CAAC,GAAG/lB,KAAK,CAACN,MAAZ,CAAJ,EAAyB;EACzB,UAAI,CAACumB,CAAC,GAAG,CAACA,CAAN,KAAY,CAAZ,IAAiBF,CAAC,GAAG,CAAzB,EAA4B,OAAO,CAACjS,CAAC,CAAC9T,KAAK,CAAC,CAAD,CAAN,EAAW,CAAX,EAAcA,KAAd,CAAT;EAC5B,UAAIimB,CAAC,IAAI,CAAT,EAAY,OAAO,CAACnS,CAAC,CAAC9T,KAAK,CAAC+lB,CAAC,GAAG,CAAL,CAAN,EAAeA,CAAC,GAAG,CAAnB,EAAsB/lB,KAAtB,CAAT;EACZ,UAAI+lB,CAAJ;EAAA,UACI/R,CAAC,GAAG,CAAC+R,CAAC,GAAG,CAAL,IAAUE,CADlB;EAAA,UAEIniB,CAAC,GAAG2G,IAAI,CAACwU,KAAL,CAAWjL,CAAX,CAFR;EAAA,UAGIjH,CAAC,GAAG,CAAC+G,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAHV;EAAA,UAIIkU,CAAC,GAAG,CAACJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAC,GAAG,CAAL,CAAN,EAAeA,CAAC,GAAG,CAAnB,EAAsB9D,KAAtB,CAJV;EAKA,aAAO+M,CAAC,GAAG,CAACmH,CAAC,GAAGnH,CAAL,KAAWiH,CAAC,GAAGlQ,CAAf,CAAX;EACD;;EAED,aAAS25B,gBAAT,CAA0BzqB,MAA1B,EAAkCwC,GAAlC,EAAuCE,GAAvC,EAA4C;EAC1C1C,MAAAA,MAAM,CAACmb,IAAP,CAAY8M,SAAZ;EACA,aAAOxwB,IAAI,CAACmU,IAAL,CAAU,CAAClJ,GAAG,GAAGF,GAAP,KAAe,KAAKgoB,QAAQ,CAACxqB,MAAD,EAAS,IAAT,CAAR,GAAyBwqB,QAAQ,CAACxqB,MAAD,EAAS,IAAT,CAAtC,IAAwDvI,IAAI,CAACyH,GAAL,CAASc,MAAM,CAACtT,MAAhB,EAAwB,CAAC,CAAD,GAAK,CAA7B,CAAvE,CAAV,CAAP;EACD;;EAED,aAASg+B,KAAT,CAAe1qB,MAAf,EAAuBwC,GAAvB,EAA4BE,GAA5B,EAAiC;EAC/B,aAAOjL,IAAI,CAACmU,IAAL,CAAU,CAAClJ,GAAG,GAAGF,GAAP,KAAe,MAAMumB,SAAS,CAAC/oB,MAAD,CAAf,GAA0BvI,IAAI,CAACyH,GAAL,CAASc,MAAM,CAACtT,MAAhB,EAAwB,CAAC,CAAD,GAAK,CAA7B,CAAzC,CAAV,CAAP;EACD;;EAED,aAASgW,GAAT,CAAa1V,KAAb,EAAoB8T,CAApB,EAAuB;EACrB,UAAIhQ,CAAC,GAAG,CAAC,CAAT;EAAA,UACIiiB,CAAC,GAAG/lB,KAAK,CAACN,MADd;EAAA,UAEIqN,CAFJ;EAAA,UAGImH,CAHJ;;EAKA,UAAIJ,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGlU,KAAK,CAAC8D,CAAD,CAAV,KAAkB,IAAlB,IAA0BoQ,CAAC,IAAIA,CAAnC,EAAsC;EAAEnH,UAAAA,CAAC,GAAGmH,CAAJ;EAAO;EAAQ;;EACvE,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGlU,KAAK,CAAC8D,CAAD,CAAV,KAAkB,IAAlB,IAA0BoQ,CAAC,GAAGnH,CAAlC,EAAqCA,CAAC,GAAGmH,CAAJ;EACtD,OAHD,MAKK;EACH,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAN,KAA+B,IAA/B,IAAuCkU,CAAC,IAAIA,CAAhD,EAAmD;EAAEnH,UAAAA,CAAC,GAAGmH,CAAJ;EAAO;EAAQ;;EACpF,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAN,KAA+B,IAA/B,IAAuCkU,CAAC,GAAGnH,CAA/C,EAAkDA,CAAC,GAAGmH,CAAJ;EACnE;;EAED,aAAOnH,CAAP;EACD;;EAED,aAASsV,IAAT,CAAcriB,KAAd,EAAqB8T,CAArB,EAAwB;EACtB,UAAIgV,CAAC,GAAG,CAAR;EAAA,UACI/C,CAAC,GAAG/lB,KAAK,CAACN,MADd;EAAA,UAEIqN,CAFJ;EAAA,UAGIjJ,CAAC,GAAG,CAAC,CAHT;EAAA,UAII0F,CAAC,GAAGuc,CAJR;;EAMA,UAAIjS,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAACpe,KAAK,CAACoF,CAAC,GAAG+uB,QAAQ,CAAC97B,KAAK,CAAC8D,CAAD,CAAN,CAAb,CAAV,EAAoCglB,CAAC,IAAI/b,CAAL,CAApC,KAAiD,EAAEvD,CAAF;EAClE,OAFD,MAIK;EACH,eAAO,EAAE1F,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAACpe,KAAK,CAACoF,CAAC,GAAG+uB,QAAQ,CAAChoB,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAF,CAAb,CAAV,EAAiD8oB,CAAC,IAAI/b,CAAL,CAAjD,KAA8D,EAAEvD,CAAF;EAC/E;;EAED,UAAIA,CAAJ,EAAO,OAAOsf,CAAC,GAAGtf,CAAX;EACR;;EAED,aAAS4K,MAAT,CAAgBpU,KAAhB,EAAuB8T,CAAvB,EAA0B;EACxB,UAAIlQ,OAAO,GAAG,EAAd;EAAA,UACImiB,CAAC,GAAG/lB,KAAK,CAACN,MADd;EAAA,UAEIqN,CAFJ;EAAA,UAGIjJ,CAAC,GAAG,CAAC,CAHT;;EAKA,UAAIgQ,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAACpe,KAAK,CAACoF,CAAC,GAAG+uB,QAAQ,CAAC97B,KAAK,CAAC8D,CAAD,CAAN,CAAb,CAAV,EAAoCF,OAAO,CAAC9D,IAAR,CAAaiN,CAAb;EACrD,OAFD,MAIK;EACH,eAAO,EAAEjJ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAACpe,KAAK,CAACoF,CAAC,GAAG+uB,QAAQ,CAAChoB,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAF,CAAb,CAAV,EAAiD4D,OAAO,CAAC9D,IAAR,CAAaiN,CAAb;EAClE;;EAED,aAAOywB,QAAQ,CAAC55B,OAAO,CAACuqB,IAAR,CAAa8M,SAAb,CAAD,EAA0B,GAA1B,CAAf;EACD;;EAED,aAAS0C,KAAT,CAAeC,MAAf,EAAuB;EACrB,UAAI7X,CAAC,GAAG6X,MAAM,CAACl+B,MAAf;EAAA,UACIomB,CADJ;EAAA,UAEIhiB,CAAC,GAAG,CAAC,CAFT;EAAA,UAGI0F,CAAC,GAAG,CAHR;EAAA,UAIIq0B,MAJJ;EAAA,UAKI79B,KALJ;;EAOA,aAAO,EAAE8D,CAAF,GAAMiiB,CAAb,EAAgBvc,CAAC,IAAIo0B,MAAM,CAAC95B,CAAD,CAAN,CAAUpE,MAAf;;EAChBm+B,MAAAA,MAAM,GAAG,IAAIh6B,KAAJ,CAAU2F,CAAV,CAAT;;EAEA,aAAO,EAAEuc,CAAF,IAAO,CAAd,EAAiB;EACf/lB,QAAAA,KAAK,GAAG49B,MAAM,CAAC7X,CAAD,CAAd;EACAD,QAAAA,CAAC,GAAG9lB,KAAK,CAACN,MAAV;;EACA,eAAO,EAAEomB,CAAF,IAAO,CAAd,EAAiB;EACf+X,UAAAA,MAAM,CAAC,EAAEr0B,CAAH,CAAN,GAAcxJ,KAAK,CAAC8lB,CAAD,CAAnB;EACD;EACF;;EAED,aAAO+X,MAAP;EACD;;EAED,aAASroB,GAAT,CAAaxV,KAAb,EAAoB8T,CAApB,EAAuB;EACrB,UAAIhQ,CAAC,GAAG,CAAC,CAAT;EAAA,UACIiiB,CAAC,GAAG/lB,KAAK,CAACN,MADd;EAAA,UAEIqN,CAFJ;EAAA,UAGImH,CAHJ;;EAKA,UAAIJ,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGlU,KAAK,CAAC8D,CAAD,CAAV,KAAkB,IAAlB,IAA0BoQ,CAAC,IAAIA,CAAnC,EAAsC;EAAEnH,UAAAA,CAAC,GAAGmH,CAAJ;EAAO;EAAQ;;EACvE,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGlU,KAAK,CAAC8D,CAAD,CAAV,KAAkB,IAAlB,IAA0BiJ,CAAC,GAAGmH,CAAlC,EAAqCnH,CAAC,GAAGmH,CAAJ;EACtD,OAHD,MAKK;EACH,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAN,KAA+B,IAA/B,IAAuCkU,CAAC,IAAIA,CAAhD,EAAmD;EAAEnH,UAAAA,CAAC,GAAGmH,CAAJ;EAAO;EAAQ;;EACpF,eAAO,EAAEpQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAI,CAAC7R,CAAC,GAAGJ,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAN,KAA+B,IAA/B,IAAuC+M,CAAC,GAAGmH,CAA/C,EAAkDnH,CAAC,GAAGmH,CAAJ;EACnE;;EAED,aAAOnH,CAAP;EACD;;EAED,aAAS+wB,KAAT,CAAe99B,KAAf,EAAsB;EACpB,UAAI8D,CAAC,GAAG,CAAR;EAAA,UAAWiiB,CAAC,GAAG/lB,KAAK,CAACN,MAAN,GAAe,CAA9B;EAAA,UAAiCumB,CAAC,GAAGjmB,KAAK,CAAC,CAAD,CAA1C;EAAA,UAA+C89B,KAAK,GAAG,IAAIj6B,KAAJ,CAAUkiB,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAYA,CAAtB,CAAvD;;EACA,aAAOjiB,CAAC,GAAGiiB,CAAX,EAAc+X,KAAK,CAACh6B,CAAD,CAAL,GAAW,CAACmiB,CAAD,EAAIA,CAAC,GAAGjmB,KAAK,CAAC,EAAE8D,CAAH,CAAb,CAAX;;EACd,aAAOg6B,KAAP;EACD;;EAED,aAASC,OAAT,CAAiB/9B,KAAjB,EAAwBg+B,OAAxB,EAAiC;EAC/B,UAAIl6B,CAAC,GAAGk6B,OAAO,CAACt+B,MAAhB;EAAA,UAAwBu+B,QAAQ,GAAG,IAAIp6B,KAAJ,CAAUC,CAAV,CAAnC;;EACA,aAAOA,CAAC,EAAR,EAAYm6B,QAAQ,CAACn6B,CAAD,CAAR,GAAc9D,KAAK,CAACg+B,OAAO,CAACl6B,CAAD,CAAR,CAAnB;;EACZ,aAAOm6B,QAAP;EACD;;EAED,aAASC,IAAT,CAAcl+B,KAAd,EAAqBm7B,OAArB,EAA8B;EAC5B,UAAI,EAAEpV,CAAC,GAAG/lB,KAAK,CAACN,MAAZ,CAAJ,EAAyB;EACzB,UAAIoE,CAAC,GAAG,CAAR;EAAA,UACIiiB,CADJ;EAAA,UAEIvc,CAAC,GAAG,CAFR;EAAA,UAGI20B,EAHJ;EAAA,UAIIC,EAAE,GAAGp+B,KAAK,CAACwJ,CAAD,CAJd;EAMA,UAAI,CAAC2xB,OAAL,EAAcA,OAAO,GAAGF,SAAV;;EAEd,aAAO,EAAEn3B,CAAF,GAAMiiB,CAAb,EAAgB,IAAIoV,OAAO,CAACgD,EAAE,GAAGn+B,KAAK,CAAC8D,CAAD,CAAX,EAAgBs6B,EAAhB,CAAP,GAA6B,CAA7B,IAAkCjD,OAAO,CAACiD,EAAD,EAAKA,EAAL,CAAP,KAAoB,CAA1D,EAA6DA,EAAE,GAAGD,EAAL,EAAS30B,CAAC,GAAG1F,CAAb;;EAE7E,UAAIq3B,OAAO,CAACiD,EAAD,EAAKA,EAAL,CAAP,KAAoB,CAAxB,EAA2B,OAAO50B,CAAP;EAC5B;;EAED,aAAS60B,OAAT,CAAiBr+B,KAAjB,EAAwBs+B,EAAxB,EAA4BC,EAA5B,EAAgC;EAC9B,UAAIzY,CAAC,GAAG,CAACyY,EAAE,IAAI,IAAN,GAAav+B,KAAK,CAACN,MAAnB,GAA4B6+B,EAA7B,KAAoCD,EAAE,GAAGA,EAAE,IAAI,IAAN,GAAa,CAAb,GAAiB,CAACA,EAA3D,CAAR;EAAA,UACIjO,CADJ;EAAA,UAEIvsB,CAFJ;;EAIA,aAAOgiB,CAAP,EAAU;EACRhiB,QAAAA,CAAC,GAAG2G,IAAI,CAACwZ,MAAL,KAAgB6B,CAAC,EAAjB,GAAsB,CAA1B;EACAuK,QAAAA,CAAC,GAAGrwB,KAAK,CAAC8lB,CAAC,GAAGwY,EAAL,CAAT;EACAt+B,QAAAA,KAAK,CAAC8lB,CAAC,GAAGwY,EAAL,CAAL,GAAgBt+B,KAAK,CAAC8D,CAAC,GAAGw6B,EAAL,CAArB;EACAt+B,QAAAA,KAAK,CAAC8D,CAAC,GAAGw6B,EAAL,CAAL,GAAgBjO,CAAhB;EACD;;EAED,aAAOrwB,KAAP;EACD;;EAED,aAAS6hB,GAAT,CAAa7hB,KAAb,EAAoB8T,CAApB,EAAuB;EACrB,UAAIgV,CAAC,GAAG,CAAR;EAAA,UACI/C,CAAC,GAAG/lB,KAAK,CAACN,MADd;EAAA,UAEIqN,CAFJ;EAAA,UAGIjJ,CAAC,GAAG,CAAC,CAHT;;EAKA,UAAIgQ,CAAC,IAAI,IAAT,EAAe;EACb,eAAO,EAAEhQ,CAAF,GAAMiiB,CAAb,EAAgB,IAAIhZ,CAAC,GAAG,CAAC/M,KAAK,CAAC8D,CAAD,CAAd,EAAmBglB,CAAC,IAAI/b,CAAL,CADtB;;EAEd,OAFD,MAIK;EACH,eAAO,EAAEjJ,CAAF,GAAMiiB,CAAb,EAAgB,IAAIhZ,CAAC,GAAG,CAAC+G,CAAC,CAAC9T,KAAK,CAAC8D,CAAD,CAAN,EAAWA,CAAX,EAAc9D,KAAd,CAAV,EAAgC8oB,CAAC,IAAI/b,CAAL;EACjD;;EAED,aAAO+b,CAAP;EACD;;EAED,aAASiF,SAAT,CAAmBnU,MAAnB,EAA2B;EACzB,UAAI,EAAEmM,CAAC,GAAGnM,MAAM,CAACla,MAAb,CAAJ,EAA0B,OAAO,EAAP;;EAC1B,WAAK,IAAIoE,CAAC,GAAG,CAAC,CAAT,EAAYgiB,CAAC,GAAGtQ,GAAG,CAACoE,MAAD,EAASla,MAAT,CAAnB,EAAqCquB,SAAS,GAAG,IAAIlqB,KAAJ,CAAUiiB,CAAV,CAAtD,EAAoE,EAAEhiB,CAAF,GAAMgiB,CAA1E,GAA8E;EAC5E,aAAK,IAAItc,CAAC,GAAG,CAAC,CAAT,EAAYuc,CAAZ,EAAe5Q,GAAG,GAAG4Y,SAAS,CAACjqB,CAAD,CAAT,GAAe,IAAID,KAAJ,CAAUkiB,CAAV,CAAzC,EAAuD,EAAEvc,CAAF,GAAMuc,CAA7D,GAAiE;EAC/D5Q,UAAAA,GAAG,CAAC3L,CAAD,CAAH,GAASoQ,MAAM,CAACpQ,CAAD,CAAN,CAAU1F,CAAV,CAAT;EACD;EACF;;EACD,aAAOiqB,SAAP;EACD;;EAED,aAASruB,MAAT,CAAgBkU,CAAhB,EAAmB;EACjB,aAAOA,CAAC,CAAClU,MAAT;EACD;;EAED,aAAS8+B,GAAT,GAAe;EACb,aAAOzQ,SAAS,CAACvV,SAAD,CAAhB;EACD;;EAED,QAAI9W,OAAO,GAAG,OAAd;EAEAG,IAAAA,OAAO,CAACH,OAAR,GAAkBA,OAAlB;EACAG,IAAAA,OAAO,CAAC48B,MAAR,GAAiB9C,WAAjB;EACA95B,IAAAA,OAAO,CAAC85B,WAAR,GAAsBA,WAAtB;EACA95B,IAAAA,OAAO,CAAC+5B,UAAR,GAAqBA,UAArB;EACA/5B,IAAAA,OAAO,CAACo5B,SAAR,GAAoBA,SAApB;EACAp5B,IAAAA,OAAO,CAACq5B,QAAR,GAAmBA,QAAnB;EACAr5B,IAAAA,OAAO,CAACg6B,UAAR,GAAqBA,UAArB;EACAh6B,IAAAA,OAAO,CAACk6B,SAAR,GAAoBA,SAApB;EACAl6B,IAAAA,OAAO,CAACm6B,MAAR,GAAiBA,MAAjB;EACAn6B,IAAAA,OAAO,CAACi7B,SAAR,GAAoBA,SAApB;EACAj7B,IAAAA,OAAO,CAAC68B,yBAAR,GAAoCjB,gBAApC;EACA57B,IAAAA,OAAO,CAAC88B,cAAR,GAAyBjB,KAAzB;EACA77B,IAAAA,OAAO,CAAC+8B,gBAAR,GAA2BhC,OAA3B;EACA/6B,IAAAA,OAAO,CAAC6T,GAAR,GAAcA,GAAd;EACA7T,IAAAA,OAAO,CAACwgB,IAAR,GAAeA,IAAf;EACAxgB,IAAAA,OAAO,CAACuS,MAAR,GAAiBA,MAAjB;EACAvS,IAAAA,OAAO,CAAC87B,KAAR,GAAgBA,KAAhB;EACA97B,IAAAA,OAAO,CAAC2T,GAAR,GAAcA,GAAd;EACA3T,IAAAA,OAAO,CAACi8B,KAAR,GAAgBA,KAAhB;EACAj8B,IAAAA,OAAO,CAACk8B,OAAR,GAAkBA,OAAlB;EACAl8B,IAAAA,OAAO,CAAC27B,QAAR,GAAmBA,QAAnB;EACA37B,IAAAA,OAAO,CAACq6B,KAAR,GAAgBA,KAAhB;EACAr6B,IAAAA,OAAO,CAACq8B,IAAR,GAAeA,IAAf;EACAr8B,IAAAA,OAAO,CAACw8B,OAAR,GAAkBA,OAAlB;EACAx8B,IAAAA,OAAO,CAACggB,GAAR,GAAcA,GAAd;EACAhgB,IAAAA,OAAO,CAAC06B,KAAR,GAAgBA,KAAhB;EACA16B,IAAAA,OAAO,CAAC26B,QAAR,GAAmBA,QAAnB;EACA36B,IAAAA,OAAO,CAACksB,SAAR,GAAoBA,SAApB;EACAlsB,IAAAA,OAAO,CAAC0gB,QAAR,GAAmBA,QAAnB;EACA1gB,IAAAA,OAAO,CAAC28B,GAAR,GAAcA,GAAd;EAED,GApdA,CAAD;;;ECAA,MAAM;EAAC7C,EAAAA;EAAD,IAAgB/4B,eAAtB;;EAEA,MAAMi8B,QAAQ,GAAG,CAACC,CAAD,EAAIh4B,CAAJ,EAAO4F,CAAP,EAAUihB,CAAV,KAAgB;EAC/B,QAAM5H,CAAC,GAAG+Y,CAAC,CAACp/B,MAAF,GAAW,CAArB;EAEAo/B,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAO,CAAP;EACAh4B,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAO,CAAP;EACA4F,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAO,CAAP;EACA5F,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAD,GAAOg4B,CAAC,CAAC,CAAD,CAAf;EACApyB,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAD,GAAOoyB,CAAC,CAAC,CAAD,CAAf;;EACA,OAAK,IAAIh7B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1Bg7B,IAAAA,CAAC,CAACh7B,CAAD,CAAD,GAAOg7B,CAAC,CAACh7B,CAAD,CAAD,GAAOg7B,CAAC,CAACh7B,CAAC,GAAG,CAAL,CAAD,GAAW4I,CAAC,CAAC5I,CAAC,GAAG,CAAL,CAAZ,GAAsB4I,CAAC,CAAC5I,CAAC,GAAG,CAAL,CAA9B,GAAwCg7B,CAAC,CAACh7B,CAAC,GAAG,CAAL,CAAD,GAAWgD,CAAC,CAAChD,CAAC,GAAG,CAAL,CAAZ,GAAsBgD,CAAC,CAAChD,CAAC,GAAG,CAAL,CAAtE;EACAgD,IAAAA,CAAC,CAAChD,CAAD,CAAD,GAAO,CAACgD,CAAC,CAAChD,CAAD,CAAD,GAAOg7B,CAAC,CAACh7B,CAAC,GAAG,CAAL,CAAD,GAAWgD,CAAC,CAAChD,CAAC,GAAG,CAAL,CAAZ,GAAsB4I,CAAC,CAAC5I,CAAC,GAAG,CAAL,CAA/B,IAA0Cg7B,CAAC,CAACh7B,CAAD,CAAlD;EACA4I,IAAAA,CAAC,CAAC5I,CAAD,CAAD,GAAO4I,CAAC,CAAC5I,CAAD,CAAD,GAAOg7B,CAAC,CAACh7B,CAAD,CAAf;EACD;;EAED,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1B6pB,IAAAA,CAAC,CAAC7pB,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAD,CAAD,GAAOgD,CAAC,CAAChD,CAAC,GAAG,CAAL,CAAD,GAAW6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAnB,GAA6B4I,CAAC,CAAC5I,CAAC,GAAG,CAAL,CAAD,GAAW6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAhD;EACD;;EACD,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1B6pB,IAAAA,CAAC,CAAC7pB,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAD,CAAD,GAAOg7B,CAAC,CAACh7B,CAAD,CAAf;EACD;;EAED6pB,EAAAA,CAAC,CAAC5H,CAAC,GAAG,CAAL,CAAD,GAAW4H,CAAC,CAAC5H,CAAC,GAAG,CAAL,CAAD,GAAWjf,CAAC,CAACif,CAAC,GAAG,CAAL,CAAD,GAAW4H,CAAC,CAAC5H,CAAC,GAAG,CAAL,CAAlC;;EACA,OAAK,IAAIjiB,CAAC,GAAGiiB,CAAC,GAAG,CAAjB,EAAoBjiB,CAAC,GAAG,CAAxB,EAA2B,EAAEA,CAA7B,EAAgC;EAC9B6pB,IAAAA,CAAC,CAAC7pB,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAD,CAAD,GAAOgD,CAAC,CAAChD,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAf,GAAyB4I,CAAC,CAAC5I,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAxC;EACD;EACF,CAzBD;;EA2BA,MAAMi7B,eAAe,GAAG,CAAC3uB,CAAD,EAAIC,CAAJ,EAAO2uB,KAAP,EAAcC,MAAd,KAAyB;EAC/C,QAAMlZ,CAAC,GAAG3V,CAAC,CAAC1Q,MAAF,GAAW,CAArB;EACA,QAAMsU,CAAC,GAAG,IAAInQ,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAM9E,CAAC,GAAG,IAAIpd,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAMjS,CAAC,GAAG,IAAIjQ,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAME,CAAC,GAAG,IAAIpiB,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAM4H,CAAC,GAAG,IAAI9pB,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAM+Y,CAAC,GAAG,IAAIj7B,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAMjf,CAAC,GAAG,IAAIjD,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAMrZ,CAAC,GAAG,IAAI7I,KAAJ,CAAUkiB,CAAC,GAAG,CAAd,CAAV;EACA,QAAMgT,MAAM,GAAG3oB,CAAC,CAAC/C,GAAF,CAAM,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAZ,CAAf;EACA0rB,EAAAA,MAAM,CAACoE,GAAP;EAEA,QAAM+B,EAAE,GAAG,KAAK,IAAID,MAAT,KAAoB,IAAIA,MAAxB,CAAX;;EACA,OAAK,IAAIn7B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1BkQ,IAAAA,CAAC,CAAClQ,CAAD,CAAD,GAAOsM,CAAC,CAACtM,CAAC,GAAG,CAAL,CAAD,GAAWsM,CAAC,CAACtM,CAAD,CAAnB;EACAmd,IAAAA,CAAC,CAACnd,CAAD,CAAD,GAAO,IAAIkQ,CAAC,CAAClQ,CAAD,CAAZ;EACD;;EACD6pB,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAO,CAAP;;EACA,OAAK,IAAI7pB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1BgQ,IAAAA,CAAC,CAAChQ,CAAD,CAAD,GAAO,EAAEmd,CAAC,CAACnd,CAAC,GAAG,CAAL,CAAD,GAAWmd,CAAC,CAACnd,CAAD,CAAd,CAAP;EACAmiB,IAAAA,CAAC,CAACniB,CAAD,CAAD,GAAO,KAAKsM,CAAC,CAACtM,CAAC,GAAG,CAAL,CAAD,GAAWsM,CAAC,CAACtM,CAAC,GAAG,CAAL,CAAjB,CAAP;EACA6pB,IAAAA,CAAC,CAAC7pB,CAAD,CAAD,GAAO,KAAKuM,CAAC,CAACvM,CAAC,GAAG,CAAL,CAAD,GAAWuM,CAAC,CAACvM,CAAD,CAAjB,IAAwBkQ,CAAC,CAAClQ,CAAD,CAAzB,GAA+B,KAAKuM,CAAC,CAACvM,CAAD,CAAD,GAAOuM,CAAC,CAACvM,CAAC,GAAG,CAAL,CAAb,IAAwBkQ,CAAC,CAAClQ,CAAC,GAAG,CAAL,CAA/D;EACD;;EACD6pB,EAAAA,CAAC,CAAC5H,CAAD,CAAD,GAAO,CAAP;;EAEA,OAAK,IAAIjiB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1Bg7B,IAAAA,CAAC,CAACh7B,CAAD,CAAD,GAAOmd,CAAC,CAACnd,CAAC,GAAG,CAAL,CAAD,GAAWmd,CAAC,CAACnd,CAAC,GAAG,CAAL,CAAZ,GAAsBk7B,KAAK,CAACl7B,CAAC,GAAG,CAAL,CAA3B,GAAqCgQ,CAAC,CAAChQ,CAAD,CAAD,GAAOgQ,CAAC,CAAChQ,CAAD,CAAR,GAAck7B,KAAK,CAACl7B,CAAD,CAAxD,GAA8Dmd,CAAC,CAACnd,CAAD,CAAD,GAAOmd,CAAC,CAACnd,CAAD,CAAR,GAAck7B,KAAK,CAACl7B,CAAC,GAAG,CAAL,CAAxF;EACAg7B,IAAAA,CAAC,CAACh7B,CAAD,CAAD,GAAOo7B,EAAE,GAAGJ,CAAC,CAACh7B,CAAD,CAAN,GAAYmiB,CAAC,CAACniB,CAAD,CAApB;EACD;;EACD,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAAC,GAAG,CAAxB,EAA2B,EAAEjiB,CAA7B,EAAgC;EAC9BgD,IAAAA,CAAC,CAAChD,CAAD,CAAD,GAAOgQ,CAAC,CAAChQ,CAAD,CAAD,GAAOmd,CAAC,CAACnd,CAAD,CAAR,GAAck7B,KAAK,CAACl7B,CAAD,CAAnB,GAAyBmd,CAAC,CAACnd,CAAD,CAAD,GAAOgQ,CAAC,CAAChQ,CAAC,GAAG,CAAL,CAAR,GAAkBk7B,KAAK,CAACl7B,CAAC,GAAG,CAAL,CAAvD;EACAgD,IAAAA,CAAC,CAAChD,CAAD,CAAD,GAAOo7B,EAAE,GAAGp4B,CAAC,CAAChD,CAAD,CAAN,GAAYkQ,CAAC,CAAClQ,CAAD,CAApB;EACD;;EACD,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAAC,GAAG,CAAxB,EAA2B,EAAEjiB,CAA7B,EAAgC;EAC9B4I,IAAAA,CAAC,CAAC5I,CAAD,CAAD,GAAOo7B,EAAE,GAAGje,CAAC,CAACnd,CAAD,CAAN,GAAYmd,CAAC,CAACnd,CAAC,GAAG,CAAL,CAAb,GAAuBk7B,KAAK,CAACl7B,CAAC,GAAG,CAAL,CAAnC;EACD;;EAED+6B,EAAAA,QAAQ,CAACC,CAAD,EAAIh4B,CAAJ,EAAO4F,CAAP,EAAUihB,CAAV,CAAR;EAEAoL,EAAAA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAe1oB,CAAC,CAAC,CAAD,CAAD,GAAO6uB,EAAE,GAAGje,CAAC,CAAC,CAAD,CAAN,GAAY0M,CAAC,CAAC,CAAD,CAAb,GAAmBqR,KAAK,CAAC,CAAD,CAA9C;EACAjG,EAAAA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAe1oB,CAAC,CAAC,CAAD,CAAD,GAAO6uB,EAAE,IAAIprB,CAAC,CAAC,CAAD,CAAD,GAAO6Z,CAAC,CAAC,CAAD,CAAR,GAAc1M,CAAC,CAAC,CAAD,CAAD,GAAO0M,CAAC,CAAC,CAAD,CAA1B,CAAF,GAAmCqR,KAAK,CAAC,CAAD,CAA9D;EACAjG,EAAAA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAepL,CAAC,CAAC,CAAD,CAAD,IAAQ,IAAI3Z,CAAC,CAAC,CAAD,CAAb,CAAf;EACA+kB,EAAAA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAe,CAAf;EACAA,EAAAA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAe,CAACA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAeA,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,CAAhB,IAAgC/kB,CAAC,CAAC,CAAD,CAAjC,GAAuC2Z,CAAC,CAAC,CAAD,CAAD,GAAO3Z,CAAC,CAAC,CAAD,CAAR,GAAc,CAApE;EACAiN,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAO,CAAP;;EACA,OAAK,IAAInd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiiB,CAApB,EAAuB,EAAEjiB,CAAzB,EAA4B;EAC1Bi1B,IAAAA,MAAM,CAACj1B,CAAD,CAAN,CAAU,CAAV,IAAe,CAAC6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAD,GAAW6pB,CAAC,CAAC7pB,CAAD,CAAb,KAAqB,IAAIkQ,CAAC,CAAClQ,CAAD,CAA1B,CAAf;EACAi1B,IAAAA,MAAM,CAACj1B,CAAD,CAAN,CAAU,CAAV,IAAe6pB,CAAC,CAAC7pB,CAAD,CAAhB;EACAi1B,IAAAA,MAAM,CAACj1B,CAAD,CAAN,CAAU,CAAV,IAAe,CAAC6pB,CAAC,CAAC7pB,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAT,IAAoBkQ,CAAC,CAAClQ,CAAC,GAAG,CAAL,CAArB,GAA+Bi1B,MAAM,CAACj1B,CAAC,GAAG,CAAL,CAAN,CAAc,CAAd,CAA9C;EACAi1B,IAAAA,MAAM,CAACj1B,CAAD,CAAN,CAAU,CAAV,IAAemd,CAAC,CAACnd,CAAC,GAAG,CAAL,CAAD,GAAW6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAAZ,GAAsBgQ,CAAC,CAAChQ,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAD,CAA9B,GAAoCmd,CAAC,CAACnd,CAAD,CAAD,GAAO6pB,CAAC,CAAC7pB,CAAC,GAAG,CAAL,CAA3D;EACAi1B,IAAAA,MAAM,CAACj1B,CAAD,CAAN,CAAU,CAAV,IAAeuM,CAAC,CAACvM,CAAD,CAAD,GAAOo7B,EAAE,GAAGnG,MAAM,CAACj1B,CAAD,CAAN,CAAU,CAAV,CAAL,GAAoBk7B,KAAK,CAACl7B,CAAD,CAA/C;EACD;;EACD,SAAOi1B,MAAP;EACD,CAtDD;;EAwDA,MAAMoG,kBAAN,CAAyB;EACvBh3B,EAAAA,WAAW,CAAEi3B,GAAF,EAAOC,GAAP,EAAwB;EAAA,QAAZJ,MAAY,uEAAH,CAAG;EACjC,UAAM3Q,OAAO,GAAG8Q,GAAG,CAAC/xB,GAAJ,CAAQ,CAACiwB,CAAD,EAAIx5B,CAAJ,KAAUA,CAAlB,CAAhB;EACAwqB,IAAAA,OAAO,CAACH,IAAR,CAAa,CAACrqB,CAAD,EAAI0F,CAAJ,KAAU41B,GAAG,CAACt7B,CAAD,CAAH,GAASs7B,GAAG,CAAC51B,CAAD,CAAnC;EACA,UAAM4G,CAAC,GAAGke,OAAO,CAACjhB,GAAR,CAAavJ,CAAD,IAAOs7B,GAAG,CAACt7B,CAAD,CAAtB,CAAV;EACA,UAAMuM,CAAC,GAAGie,OAAO,CAACjhB,GAAR,CAAavJ,CAAD,IAAOu7B,GAAG,CAACv7B,CAAD,CAAtB,CAAV;EACA,UAAMiiB,CAAC,GAAGuI,OAAO,CAAC5uB,MAAlB;EACA,UAAMs/B,KAAK,GAAG1Q,OAAO,CAACjhB,GAAR,CAAY,MAAM,CAAlB,CAAd;EACA,SAAK0Y,CAAL,GAASA,CAAT;EACA,SAAK3V,CAAL,GAASA,CAAT;EACA,SAAKC,CAAL,GAASA,CAAT;EACA,SAAK0oB,MAAL,GAAcgG,eAAe,CAAC3uB,CAAD,EAAIC,CAAJ,EAAO2uB,KAAP,EAAcC,MAAd,CAA7B;EACD;;EAEDK,EAAAA,WAAW,CAAEx4B,CAAF,EAAK;EACd,QAAIA,CAAC,KAAK,KAAKsJ,CAAL,CAAO,KAAK2V,CAAL,GAAS,CAAhB,CAAV,EAA8B;EAC5B,aAAO,KAAK1V,CAAL,CAAO,KAAK0V,CAAL,GAAS,CAAhB,CAAP;EACD;;EACD,UAAMjiB,CAAC,GAAG2G,IAAI,CAAC+K,GAAL,CAAS/K,IAAI,CAACiL,GAAL,CAAS,CAAT,EAAYimB,WAAW,CAAC,KAAKvrB,CAAN,EAAStJ,CAAT,CAAX,GAAyB,CAArC,CAAT,EAAkD,KAAKif,CAAL,GAAS,CAA3D,CAAV;EACA,UAAM,CAAChZ,CAAD,EAAImH,CAAJ,EAAOD,CAAP,EAAUL,CAAV,IAAe,KAAKmlB,MAAL,CAAYj1B,CAAZ,CAArB;EACAgD,IAAAA,CAAC,GAAGA,CAAC,GAAG,KAAKsJ,CAAL,CAAOtM,CAAP,CAAR;EACA,WAAOiJ,CAAC,GAAGjG,CAAJ,GAAQA,CAAR,GAAYA,CAAZ,GAAgBoN,CAAC,GAAGpN,CAAJ,GAAQA,CAAxB,GAA4BmN,CAAC,GAAGnN,CAAhC,GAAoC8M,CAA3C;EACD;;EAED8B,EAAAA,GAAG,GAAc;EAAA,QAAZ1Q,IAAY,uEAAL,GAAK;EACf,UAAMu6B,MAAM,GAAG,KAAKnvB,CAAL,CAAO,CAAP,CAAf;EACA,UAAMovB,KAAK,GAAG,KAAKpvB,CAAL,CAAO,KAAK2V,CAAL,GAAS,CAAhB,CAAd;EACA,UAAMoT,KAAK,GAAG,CAACqG,KAAK,GAAGD,MAAT,IAAmBv6B,IAAjC;EACA,QAAI8T,QAAQ,GAAG,CAAC2mB,QAAhB;;EACA,SAAK,IAAI37B,CAAC,GAAG,CAAR,EAAWsM,CAAC,GAAGmvB,MAApB,EAA4Bz7B,CAAC,GAAGkB,IAAhC,EAAsC,EAAElB,CAAF,EAAKsM,CAAC,IAAI+oB,KAAhD,EAAuD;EACrD,YAAM9oB,CAAC,GAAG,KAAKivB,WAAL,CAAiBlvB,CAAjB,CAAV;;EACA,UAAIC,CAAC,GAAGyI,QAAR,EAAkB;EAChBA,QAAAA,QAAQ,GAAGzI,CAAX;EACD;EACF;;EACD,WAAOyI,QAAP;EACD;;EAEDtD,EAAAA,GAAG,GAAc;EAAA,QAAZxQ,IAAY,uEAAL,GAAK;EACf,UAAMu6B,MAAM,GAAG,KAAKnvB,CAAL,CAAO,CAAP,CAAf;EACA,UAAMovB,KAAK,GAAG,KAAKpvB,CAAL,CAAO,KAAK2V,CAAL,GAAS,CAAhB,CAAd;EACA,UAAMoT,KAAK,GAAG,CAACqG,KAAK,GAAGD,MAAT,IAAmBv6B,IAAjC;EACA,QAAI+T,QAAQ,GAAG0mB,QAAf;;EACA,SAAK,IAAI37B,CAAC,GAAG,CAAR,EAAWsM,CAAC,GAAGmvB,MAApB,EAA4Bz7B,CAAC,GAAGkB,IAAhC,EAAsC,EAAElB,CAAF,EAAKsM,CAAC,IAAI+oB,KAAhD,EAAuD;EACrD,YAAM9oB,CAAC,GAAG,KAAKivB,WAAL,CAAiBlvB,CAAjB,CAAV;;EACA,UAAIC,CAAC,GAAG0I,QAAR,EAAkB;EAChBA,QAAAA,QAAQ,GAAG1I,CAAX;EACD;EACF;;EACD,WAAO0I,QAAP;EACD;;EAEDgkB,EAAAA,MAAM,GAAI;EACR,WAAO,CAAC,KAAK3sB,CAAL,CAAO,CAAP,CAAD,EAAY,KAAKA,CAAL,CAAO,KAAKA,CAAL,CAAO1Q,MAAP,GAAgB,CAAvB,CAAZ,CAAP;EACD;;EAEDw8B,EAAAA,KAAK,GAAI;EACP,WAAO,CAAC,KAAK1mB,GAAL,EAAD,EAAa,KAAKE,GAAL,EAAb,CAAP;EACD;;EAEDgqB,EAAAA,KAAK,CAAEC,SAAF,EAA4B;EAAA,QAAf5C,MAAe,uEAAN,IAAM;EAC/BA,IAAAA,MAAM,GAAGA,MAAM,IAAI,KAAKA,MAAL,EAAnB;EACA,UAAM5D,KAAK,GAAG,CAAC4D,MAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAnB,KAA2B4C,SAAS,GAAG,CAAvC,CAAd;EACA,UAAMC,IAAI,GAAG,IAAI/7B,KAAJ,CAAU87B,SAAV,CAAb;;EACA,SAAK,IAAI77B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG67B,SAApB,EAA+B,EAAE77B,CAAjC,EAAoC;EAClC,YAAMsM,CAAC,GAAG+oB,KAAK,GAAGr1B,CAAR,GAAYi5B,MAAM,CAAC,CAAD,CAA5B;EACA6C,MAAAA,IAAI,CAAC97B,CAAD,CAAJ,GAAU,CAACsM,CAAD,EAAI,KAAKkvB,WAAL,CAAiBlvB,CAAjB,CAAJ,CAAV;EACD;;EACD,WAAOwvB,IAAP;EACD;;EArEsB;;MAwEzBC,kBAAc,GAAGV;;;EC7JjB;;EAEA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AACA;EACA;AACA;EACA;AACA;EACA;AACA;EACA;EACA;EAEA;EACA,MAAMW,EAAE,GAAG,yBAAX;EACA,MAAMC,EAAE,GAAG,CACT,CAAC,yBADQ,EACmB,yBADnB,EAET,yBAFS,EAEkB,CAAC,yBAFnB,EAGT,CAAC,yBAHQ,EAGmB,yBAHnB,EAIT,CAAC,yBAJQ,EAImB,CAAC,yBAJpB,CAAX;EAMA,MAAMC,EAAE,GAAG,CACT,yBADS,EACkB,CAAC,yBADnB,EAET,yBAFS,EAEkB,CAAC,yBAFnB,EAGT,CAAC,wBAHQ,EAGkB,yBAHlB,EAG6C,sBAH7C,EAIT,CAAC,sBAJQ,EAIgB,CAAC,yBAJjB,EAI4C,CAJ5C,CAAX;;EAQA,MAAMC,EAAE,GAAG,iBAAX;EACA,MAAMC,EAAE,GAAG,CACT,CAAC,sBADQ,EACgB,wBADhB,EAC0C,uBAD1C,EAET,CAAC,wBAFQ,EAEkB,CAAC,wBAFnB,EAGT,wBAHS,EAGiB,sBAHjB,EAGyC,yBAHzC,EAIT,CAAC,yBAJQ,CAAX;EAMA,MAAMC,EAAE,GAAG,CACT,sBADS,EACe,CAAC,wBADhB,EAC0C,wBAD1C,EAET,wBAFS,EAEiB,CAAC,wBAFlB,EAGT,CAAC,wBAHQ,EAGkB,qBAHlB,EAGyC,sBAHzC,EAGiE,CAHjE,CAAX;;EAOA,MAAMC,EAAE,GAAG,mBAAX;EACA,MAAMC,EAAE,GAAG,CACT,CAAC,0BADQ,EACoB,yBADpB,EAET,CAAC,yBAFQ,EAEmB,yBAFnB,EAGT,yBAHS,EAGkB,yBAHlB,EAIT,yBAJS,EAIkB,yBAJlB,EAKT,yBALS,EAKkB,CAAC,yBALnB,EAMT,CAAC,yBANQ,CAAX;EAQA,MAAMC,EAAE,GAAG,CACT,uBADS,EACgB,yBADhB,EAC2C,yBAD3C,EAET,sBAFS,EAEe,sBAFf,EAEuC,sBAFvC,EAGT,sBAHS,EAGe,CAHf,CAAX;EAMA,MAAMC,EAAE,GAAG,wBAAX;EACA,MAAMC,EAAE,GAAG,CACT,0BADS,EACmB,CAAC,0BADpB,EAET,yBAFS,EAEkB,yBAFlB,EAGT,yBAHS,EAGkB,yBAHlB,EAIT,yBAJS,EAIkB,CAAC,yBAJnB,EAKT,CAAC,yBALQ,CAAX;EAOA,MAAMC,EAAE,GAAG,CACT,yBADS,EACkB,yBADlB,EAET,yBAFS,EAEkB,yBAFlB,EAGT,yBAHS,EAGkB,qBAHlB,EAGyC,CAHzC,CAAX;EAMA,MAAMC,EAAE,GAAG,wBAAX;EACA,MAAMC,EAAE,GAAG,CACT,yBADS,EACkB,CAAC,0BADnB,EAET,yBAFS,EAEkB,yBAFlB,EAGT,yBAHS,EAGkB,yBAHlB,EAIT,yBAJS,EAIkB,CAAC,yBAJnB,EAKT,CAAC,yBALQ,CAAX;EAOA,MAAMC,EAAE,GAAG,CACT,yBADS,EACkB,yBADlB,EAET,yBAFS,EAEkB,yBAFlB,EAGT,yBAHS,EAGkB,yBAHlB,EAG6C,CAH7C,CAAX;;EAMA,SAASC,OAAT,CAAiB5sB,CAAjB,EAAoB7D,CAApB,EAAuB;EACrB,MAAI6V,CAAC,GAAG,CAAR;;EACA,OAAK,MAAM6a,IAAX,IAAmB7sB,CAAnB,EAAsB;EACpBgS,IAAAA,CAAC,GAAGA,CAAC,GAAG7V,CAAJ,GAAQ0wB,IAAZ;EACD;;EACD,SAAO7a,CAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAAS8a,IAAT,CAAc3wB,CAAd,EAAiBtJ,CAAjB,EAAoBk6B,CAApB,EAAuBC,CAAvB,EAA0BtN,CAA1B,EAA6B;EAC3B,QAAM7K,CAAC,GAAG1Y,CAAC,GAAGtJ,CAAd;EACA,QAAMma,CAAC,GAAG4f,OAAO,CAACG,CAAD,EAAIlY,CAAJ,CAAP,GAAgB+X,OAAO,CAACI,CAAD,EAAInY,CAAJ,CAAjC;EACA,SAAO6K,CAAC,GAAGvjB,CAAJ,GAAQ6Q,CAAC,GAAG7Q,CAAnB;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACe,SAAS8wB,OAAT,CAAiB9wB,CAAjB,EAAoB;EACjC,MAAIoP,IAAI,GAAG,KAAX;EACA,MAAI/W,GAAJ;EACA,MAAIklB,CAAJ;EACA,MAAI5Z,CAAJ;EACA,MAAIkN,CAAJ,CALiC;EASjC;;EACA,MAAI3d,MAAM,CAACqE,KAAP,CAAayI,CAAb,CAAJ,EAAqB;EACnB,WAAOuX,GAAP;EACD,GAZgC;;;EAcjC,MAAIvX,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,CAAjB,EAAoB;EAClB,UAAM,IAAI+I,UAAJ,CACH,oFAAmF/I,CAAE,KADlF,CAAN;EAGD;;EACD,MAAIA,CAAC,KAAK,CAAV,EAAa;EACX,WAAO9M,MAAM,CAAC69B,iBAAd;EACD;;EACD,MAAI/wB,CAAC,KAAK,CAAV,EAAa;EACX,WAAO9M,MAAM,CAAC89B,iBAAd;EACD;;EACD,MAAIhxB,CAAC,KAAK,CAAV,EAAa;EACX,WAAO,CAAP;EACD,GA3BgC;;;EA6BjC,MAAIA,CAAC,GAAG,CAAR,EAAW;EACTud,IAAAA,CAAC,GAAG,IAAIvd,CAAR;EACAA,IAAAA,CAAC,GAAG,IAAIud,CAAR;EACAnO,IAAAA,IAAI,GAAG,IAAP;EACD,GAJD,MAIO;EACLmO,IAAAA,CAAC,GAAGvd,CAAJ;EACAA,IAAAA,CAAC,GAAG,IAAIA,CAAR;EACD,GApCgC;;;EAsCjC,MAAIA,CAAC,IAAI,GAAT,EAAc;EACZ2D,IAAAA,CAAC,GAAG3D,CAAC,IAAIA,CAAC,GAAG,EAAR,CAAL;EACA6Q,IAAAA,CAAC,GAAG4f,OAAO,CAACd,EAAD,EAAK3vB,CAAL,CAAP,GAAiBywB,OAAO,CAACb,EAAD,EAAK5vB,CAAL,CAA5B;EACA3H,IAAAA,GAAG,GAAGsL,CAAC,GAAG+rB,EAAJ,GAAS/rB,CAAC,GAAGkN,CAAnB;EACA,WAAOzB,IAAI,GAAG,CAAC/W,GAAJ,GAAUA,GAArB;EACD,GA3CgC;;;EA8CjC,MAAIklB,CAAC,IAAI,IAAT,EAAe;EACb5Z,IAAAA,CAAC,GAAGtJ,IAAI,CAACkV,IAAL,CAAU,CAAC,CAAD,GAAKlV,IAAI,CAAC0U,GAAL,CAASwO,CAAT,CAAf,CAAJ;EACAA,IAAAA,CAAC,GAAGA,CAAC,GAAG,IAAR;EACA1M,IAAAA,CAAC,GAAG4f,OAAO,CAACX,EAAD,EAAKvS,CAAL,CAAP,GAAiBkT,OAAO,CAACV,EAAD,EAAKxS,CAAL,CAA5B;EACAllB,IAAAA,GAAG,GAAGsL,CAAC,IAAIksB,EAAE,GAAGhf,CAAT,CAAP;EACA,WAAOzB,IAAI,GAAG,CAAC/W,GAAJ,GAAUA,GAArB;EACD;;EACDklB,EAAAA,CAAC,GAAGljB,IAAI,CAACkV,IAAL,CAAU,CAAClV,IAAI,CAAC0U,GAAL,CAASwO,CAAT,CAAX,CAAJ,CArDiC;;EAwDjC,MAAIA,CAAC,GAAG,CAAR,EAAW;EACT,WAAOoT,IAAI,CAACpT,CAAD,EAAI,KAAJ,EAAW0S,EAAX,EAAeC,EAAf,EAAmBF,EAAnB,CAAX;EACD,GA1DgC;;;EA4DjC,MAAIzS,CAAC,GAAG,CAAR,EAAW;EACT,WAAOoT,IAAI,CAACpT,CAAD,EAAI,CAAJ,EAAO6S,EAAP,EAAWC,EAAX,EAAeF,EAAf,CAAX;EACD,GA9DgC;;;EAgEjC,SAAOQ,IAAI,CAACpT,CAAD,EAAI,CAAJ,EAAOgT,EAAP,EAAWC,EAAX,EAAeF,EAAf,CAAX,CAhEiC;EAmElC;;ECjNc,SAASW,WAAT,CAAqBjxB,CAArB,EAAmC;EAAA,MAAX4uB,KAAW,uEAAH,CAAG;;EAChD,MAAI5uB,CAAC,GAAG,CAAR,EAAW;EACT,WAAO,CAAP;EACD;;EACD,SAAO,CAAC3F,IAAI,CAACuU,KAAL,CAAW,CAACvU,IAAI,CAACyH,GAAL,CAAS9B,CAAT,EAAY,CAAZ,CAAD,IAAmB,IAAI3F,IAAI,CAACyH,GAAL,CAAS8sB,KAAT,EAAgB,CAAhB,CAAvB,CAAX,CAAR;EACD;;ECCD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASsC,aAAT,CAAuB18B,IAAvB,EAA2C;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EAChD,QAAM;EACJ81B,IAAAA,IADI;EAEJC,IAAAA,MAFI;EAGJC,IAAAA,MAAM,GAAG,IAHL;EAIJC,IAAAA,aAAa,GAAG,KAJZ;EAKJC,IAAAA,WAAW,GAAG,CALV;EAMJC,IAAAA,SAAS,GAAG,CANR;EAOJC,IAAAA,SAAS,GAAG;EAPR,MAQFp2B,OARJ;EAUA,MAAI4I,KAAJ;;EACA,MAAIxQ,KAAK,CAACyQ,OAAN,CAAcitB,IAAd,KAAuBA,IAAI,CAAC7hC,MAAL,KAAgBkF,IAAI,CAAClF,MAAhD,EAAwD;EACtD2U,IAAAA,KAAK,GAAG,IAAIe,YAAJ,CAAiBxQ,IAAI,CAACk9B,MAAL,CAAY,CAACC,EAAD,EAAKj+B,CAAL,KAAW,CAACy9B,IAAI,CAACz9B,CAAD,CAA5B,CAAjB,CAAR;EACD,GAFD,MAEO;EACLuQ,IAAAA,KAAK,GAAG,IAAIe,YAAJ,CAAiBxQ,IAAjB,CAAR;EACD;;EAED,MAAI+8B,WAAW,GAAG,CAAlB,EAAqB;EACnB,SAAK,IAAI79B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuQ,KAAK,CAAC3U,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrCuQ,MAAAA,KAAK,CAACvQ,CAAD,CAAL,IAAY69B,WAAZ;EACD;EACF;;EACDttB,EAAAA,KAAK,GAAGA,KAAK,CAAC8Z,IAAN,GAAalZ,OAAb,EAAR;;EAEA,MAAI4sB,SAAS,IAAI,CAACH,aAAlB,EAAiC;EAC/B,QAAIM,WAAW,GAAGv3B,IAAI,CAACwU,KAAL,CAAW5K,KAAK,CAAC3U,MAAN,GAAe,CAA1B,CAAlB;EACA,QAAI0U,MAAM,GAAG,OAAOC,KAAK,CAAC2tB,WAAD,CAAL,GAAqB3tB,KAAK,CAAC2tB,WAAW,GAAG,CAAf,CAAjC,CAAb;;EACA,SAAK,IAAIl+B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuQ,KAAK,CAAC3U,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrCuQ,MAAAA,KAAK,CAACvQ,CAAD,CAAL,IAAYsQ,MAAZ;EACD;EACF;;EAED,MAAI6tB,uBAAuB,GACzB5tB,KAAK,CAACA,KAAK,CAAC3U,MAAN,GAAe,CAAhB,CAAL,IAA2B,CAA3B,GAA+B2U,KAAK,CAAC3U,MAArC,GAA8C2U,KAAK,CAAC6tB,SAAN,CAAiBruB,CAAD,IAAOA,CAAC,GAAG,CAA3B,CADhD;EAEA,MAAIsuB,sBAAsB,GAAGF,uBAAuB,GAAG,CAAvD;;EACA,OAAK,IAAIn+B,CAAC,GAAGq+B,sBAAb,EAAqCr+B,CAAC,IAAI,CAA1C,EAA6CA,CAAC,EAA9C,EAAkD;EAChD,QAAIuQ,KAAK,CAACvQ,CAAD,CAAL,GAAW,CAAf,EAAkB;EAChBq+B,MAAAA,sBAAsB,GAAGr+B,CAAzB;EACA;EACD;EACF;;EAED,MAAIs+B,YAAY,GAAG/tB,KAAK,CAACG,KAAN,CAAY,CAAZ,EAAe2tB,sBAAsB,GAAG,CAAxC,CAAnB;EACA,MAAIE,YAAY,GAAGhuB,KAAK,CAACG,KAAN,CAAYytB,uBAAZ,CAAnB;EAEA,MAAIK,UAAU,GAAGd,MAAM,IAAIe,eAAe,CAACH,YAAD,EAAe;EAAEV,IAAAA;EAAF,GAAf,CAA1C;EAEA,MAAIc,MAAM,GAAG/3B,IAAI,CAACwU,KAAL,CAAWmjB,YAAY,CAAC1iC,MAAb,GAAsB4iC,UAAjC,CAAb;EACA,MAAIG,yBAAyB,GAAGL,YAAY,CAACI,MAAD,CAA5C;EAEA,MAAIE,QAAQ,GAAGN,YAAY,CAAC,CAAD,CAA3B;EAEA,MAAIO,yBAAJ;;EACA,MAAIN,YAAY,CAAC3iC,MAAb,GAAsB,CAA1B,EAA6B;EAC3B,QAAIkjC,MAAM,GAAGn4B,IAAI,CAACwU,KAAL,CAAWojB,YAAY,CAAC3iC,MAAb,IAAuB,IAAI4iC,UAA3B,CAAX,CAAb;EACAK,IAAAA,yBAAyB,GAAG,CAAC,CAAD,GAAKN,YAAY,CAACO,MAAD,CAA7C;EACD,GAHD,MAGO;EACLD,IAAAA,yBAAyB,GAAG,CAA5B;EACD;;EAED,MAAIE,kBAAkB,GAAGJ,yBAAzB;EACA,MAAIK,kBAAkB,GAAGH,yBAAzB;EACA,MAAII,iBAAiB,GAAGX,YAAY,CAAC5tB,KAAb,EAAxB;EACA,MAAIwuB,iBAAiB,GAAGX,YAAY,CAAC7tB,KAAb,EAAxB;EAEA,MAAIyuB,sBAAsB,GAAG,CAA7B;EACA,MAAIC,qBAAqB,GAAG,CAA5B;;EACA,MAAIzB,MAAJ,EAAY;EACV,QAAI0B,aAAa,GAAGN,kBAAkB,GAAGjB,SAAzC;EACAqB,IAAAA,sBAAsB,GAAGb,YAAY,CAACF,SAAb,CAAwBruB,CAAD,IAAOA,CAAC,GAAGsvB,aAAlC,CAAzB;;EAEA,QAAIF,sBAAsB,GAAG,CAAC,CAA9B,EAAiC;EAC/BF,MAAAA,iBAAiB,GAAGX,YAAY,CAAC5tB,KAAb,CAAmByuB,sBAAnB,CAApB;EACAJ,MAAAA,kBAAkB,GAChBE,iBAAiB,CAACt4B,IAAI,CAACwU,KAAL,CAAW8jB,iBAAiB,CAACrjC,MAAlB,GAA2B4iC,UAAtC,CAAD,CADnB;EAED;;EAEDa,IAAAA,aAAa,GAAGL,kBAAkB,GAAGlB,SAArC;EACAsB,IAAAA,qBAAqB,GAAGb,YAAY,CAACH,SAAb,CAAwBruB,CAAD,IAAOA,CAAC,GAAGsvB,aAAlC,CAAxB;;EACA,QAAID,qBAAqB,GAAG,CAAC,CAA7B,EAAgC;EAC9BF,MAAAA,iBAAiB,GAAGX,YAAY,CAAC7tB,KAAb,CAAmB0uB,qBAAnB,CAApB;EACAJ,MAAAA,kBAAkB,GAChBC,iBAAiB,CACft4B,IAAI,CAACwU,KAAL,CAAW+jB,iBAAiB,CAACtjC,MAAlB,IAA4B,IAAI4iC,UAAhC,CAAX,CADe,CADnB;EAID;EACF;;EACD,MAAIc,gBAAgB,GAAG,CAACC,aAAa,CAACf,UAAU,GAAG,CAAd,EAAiB;EAAEZ,IAAAA;EAAF,GAAjB,CAArC;EACAe,EAAAA,yBAAyB,GAAGA,yBAAyB,GAAGW,gBAAxD;EACAT,EAAAA,yBAAyB,GAAGA,yBAAyB,GAAGS,gBAAxD;EAEA,MAAIE,mBAAJ,EAAyBC,uBAAzB;;EAEA,MAAI9B,MAAM,IAAIwB,sBAAsB,GAAG,CAAC,CAAxC,EAA2C;EACzCK,IAAAA,mBAAmB,GACjB,CAAChB,UAAU,GAAGS,iBAAiB,CAACrjC,MAA/B,GAAwCujC,sBAAzC,KACCF,iBAAiB,CAACrjC,MAAlB,GAA2BujC,sBAD5B,CADF;EAGAM,IAAAA,uBAAuB,GACrB,CAAC,CAAD,GAAKF,aAAa,CAACC,mBAAmB,GAAG,CAAvB,EAA0B;EAAE5B,MAAAA;EAAF,KAA1B,CADpB;EAGAmB,IAAAA,kBAAkB,IAAIU,uBAAtB;;EAEA,QAAIL,qBAAqB,GAAG,CAAC,CAA7B,EAAgC;EAC9BI,MAAAA,mBAAmB,GACjB,CAAChB,UAAU,GAAGU,iBAAiB,CAACtjC,MAA/B,GAAwCwjC,qBAAzC,KACCF,iBAAiB,CAACtjC,MAAlB,GAA2BwjC,qBAD5B,CADF;EAGAK,MAAAA,uBAAuB,GACrB,CAAC,CAAD,GAAKF,aAAa,CAACC,mBAAmB,GAAG,CAAvB,EAA0B;EAAE5B,QAAAA;EAAF,OAA1B,CADpB;;EAEA,UAAIoB,kBAAkB,KAAK,CAA3B,EAA8B;EAC5BA,QAAAA,kBAAkB,IAAIS,uBAAtB;EACD;EACF;EACF,GAnBD,MAmBO;EACLV,IAAAA,kBAAkB,IAAIO,gBAAtB;EACAN,IAAAA,kBAAkB,IAAIM,gBAAtB;EACD;;EAED,SAAO;EACLI,IAAAA,QAAQ,EAAEX,kBADL;EAELY,IAAAA,QAAQ,EAAEX,kBAFL;EAGLY,IAAAA,GAAG,EAAEhB,QAAQ,GAAGG,kBAHX;EAILc,IAAAA,OAAO,EAAEC,eAAe,CAACvvB,KAAD,EAAQ;EAC9BwvB,MAAAA,MAAM,EAAE;EACNL,QAAAA,QAAQ,EAAE;EAAEnuB,UAAAA,IAAI,EAAE,CAAR;EAAWogB,UAAAA,EAAE,EAAE0M;EAAf,SADJ;EAENsB,QAAAA,QAAQ,EAAE;EAAEpuB,UAAAA,IAAI,EAAE4sB,uBAAR;EAAiCxM,UAAAA,EAAE,EAAEphB,KAAK,CAAC3U;EAA3C;EAFJ;EADsB,KAAR;EAJnB,GAAP;EAWD;;EAED,SAAS6iC,eAAT,CAAyBH,YAAzB,EAAqD;EAAA,MAAd32B,OAAc,uEAAJ,EAAI;EACnD,MAAI;EACFi2B,IAAAA,aAAa,GAAG,KADd;EAEFoC,IAAAA,YAAY,GAAG;EAAEzuB,MAAAA,IAAI,EAAE,GAAR;EAAarQ,MAAAA,IAAI,EAAE,GAAnB;EAAwBywB,MAAAA,EAAE,EAAE;EAA5B;EAFb,MAGAhqB,OAHJ,CADmD;;EAMnD,MAAI+1B,MAAM,GAAG,EAAb;EACA,MAAIuC,QAAQ,GAAG3B,YAAY,CAAC1iC,MAAb,GAAsB,CAArC;;EACA,OAAK,IAAIoE,CAAC,GAAG,IAAb,EAAmBA,CAAC,IAAI,IAAxB,EAA8BA,CAAC,IAAI,IAAnC,EAAyC;EACvC,QAAI7D,KAAK,GAAGwK,IAAI,CAAC8U,KAAL,CAAWwkB,QAAQ,GAAGjgC,CAAtB,CAAZ;EACA,QAAInE,KAAK,GACP,CAACyiC,YAAY,CAACniC,KAAD,CAAb,GAAuBojC,aAAa,CAAC,CAACv/B,CAAC,GAAG,CAAL,CAAD,EAAU;EAAE49B,MAAAA;EAAF,KAAV,CADtC;EAEAF,IAAAA,MAAM,CAAC1hC,IAAP,CAAY,CAACgE,CAAD,EAAInE,KAAJ,CAAZ;EACD;;EAED,MAAIqkC,KAAK,GAAG1gC,MAAM,CAAC80B,gBAAnB;EACA,MAAI;EAAE/iB,IAAAA,IAAF;EAAQogB,IAAAA,EAAR;EAAYzwB,IAAAA;EAAZ,MAAqB8+B,YAAzB;EACA,MAAI3K,KAAK,GAAGn0B,IAAI,GAAG,CAAnB;EACA,MAAIi/B,cAAc,GAAG,GAArB;;EACA,OAAK,IAAIngC,CAAC,GAAGuR,IAAb,EAAmBvR,CAAC,IAAI2xB,EAAxB,EAA4B3xB,CAAC,IAAIkB,IAAjC,EAAuC;EACrC,QAAIia,KAAK,GAAGnb,CAAC,GAAGq1B,KAAhB;EACA,QAAI+K,GAAG,GAAGpgC,CAAC,GAAGq1B,KAAd;EACA,QAAIgL,gBAAgB,GAAG3C,MAAM,CAACM,MAAP,CAAejuB,CAAD,IAAOA,CAAC,CAAC,CAAD,CAAD,GAAOqwB,GAAP,IAAcrwB,CAAC,CAAC,CAAD,CAAD,GAAOoL,KAA1C,CAAvB;EACA,QAAImlB,YAAY,GAAGD,gBAAgB,CAACE,MAAjB,CAAwB,CAACt3B,CAAD,EAAImH,CAAJ,KAAUnH,CAAC,GAAGtC,IAAI,CAACC,GAAL,CAASwJ,CAAC,CAAC,CAAD,CAAV,CAAtC,EAAsD,CAAtD,CAAnB;EACA,QAAIowB,MAAM,GAAG,CAAb;;EACA,SAAK,IAAI96B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG26B,gBAAgB,CAACzkC,MAArC,EAA6C8J,CAAC,EAA9C,EAAkD;EAChD86B,MAAAA,MAAM,IAAI75B,IAAI,CAACyH,GAAL,CAASiyB,gBAAgB,CAAC36B,CAAD,CAAhB,CAAoB,CAApB,IAAyB46B,YAAlC,EAAgD,CAAhD,CAAV;EACD;;EAED,QAAIE,MAAM,GAAGN,KAAb,EAAoB;EAClBA,MAAAA,KAAK,GAAGM,MAAR;EACAL,MAAAA,cAAc,GAAGngC,CAAjB;EACD;EACF;;EAED,SAAOmgC,cAAP;EACD;;EAED,SAASZ,aAAT,CAAuBz+B,IAAvB,EAA2C;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACzC,QAAM;EAAEi2B,IAAAA,aAAa,GAAG;EAAlB,MAA4Bj2B,OAAlC;EAEA,MAAI,CAAC5H,KAAK,CAACyQ,OAAN,CAAc1P,IAAd,CAAL,EAA0BA,IAAI,GAAG,CAACA,IAAD,CAAP;EAE1B,MAAIyQ,IAAI,GAAG,CAAX;EACA,MAAIogB,EAAE,GAAG,CAAT;EACA,MAAIzwB,IAAI,GAAG,IAAX;EACA,MAAIu/B,SAAS,GAAGC,WAAW,CAACnvB,IAAD,EAAOogB,EAAP,EAAWzwB,IAAX,CAA3B;EAEA,MAAImC,MAAM,GAAG,IAAIiO,YAAJ,CAAiBxQ,IAAI,CAAClF,MAAtB,CAAb;EACA,MAAI+kC,SAAS,GAAG,IAAIrvB,YAAJ,CAAiBmvB,SAAS,CAAC7kC,MAA3B,CAAhB;;EACA,MAAIgiC,aAAJ,EAAmB;EACjB,QAAI/pB,MAAM,GAAG,CAAb;;EACA,SAAK,IAAI7T,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2gC,SAAS,CAAC/kC,MAA9B,EAAsCoE,CAAC,EAAvC,EAA2C;EACzC,UAAI4gC,UAAU,GAAGH,SAAS,CAACzgC,CAAD,CAAT,GAAe6T,MAAhC;EACA8sB,MAAAA,SAAS,CAAC3gC,CAAD,CAAT,GAAe,IAAIu9B,WAAW,CAACqD,UAAD,CAA9B;EACD;;EACD,QAAIC,MAAM,GAAG,IAAIxF,oBAAJ,CAAuBoF,SAAvB,EAAkCE,SAAlC,CAAb;;EACA,SAAK,IAAI3gC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqD,MAAM,CAACzH,MAA3B,EAAmCoE,CAAC,EAApC,EAAwC;EACtC,UAAI8gC,MAAM,GAAG,IAAIhgC,IAAI,CAACd,CAAD,CAArB;EACAqD,MAAAA,MAAM,CAACrD,CAAD,CAAN,GAAY,CAAC,CAAD,GAAK6gC,MAAM,CAACrF,WAAP,CAAmBsF,MAAnB,CAAjB;EACD;EACF,GAXD,MAWO;EACL,SAAK,IAAI9gC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqD,MAAM,CAACzH,MAA3B,EAAmCoE,CAAC,EAApC,EAAwC;EACtCqD,MAAAA,MAAM,CAACrD,CAAD,CAAN,GAAY,CAAC,CAAD,GAAK2G,IAAI,CAACo6B,KAAV,GAAkB3D,OAAO,CAAC,IAAIt8B,IAAI,CAACd,CAAD,CAAT,CAArC;EACD;EACF;;EACD,SAAOqD,MAAM,CAACzH,MAAP,KAAkB,CAAlB,GAAsByH,MAAM,CAAC,CAAD,CAA5B,GAAkCA,MAAzC;EACD;;EAED,SAASq9B,WAAT,CAAqBnvB,IAArB,EAA2BogB,EAA3B,EAA+BzwB,IAA/B,EAAqC;EACnC,MAAImC,MAAM,GAAG,IAAItD,KAAJ,CAAU4G,IAAI,CAACC,GAAL,CAAS,CAAC2K,IAAI,GAAGogB,EAAR,IAAczwB,IAAd,GAAqB,CAA9B,CAAV,CAAb;;EACA,OAAK,IAAIlB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqD,MAAM,CAACzH,MAA3B,EAAmCoE,CAAC,EAApC,EAAwC;EACtCqD,IAAAA,MAAM,CAACrD,CAAD,CAAN,GAAYuR,IAAI,GAAGvR,CAAC,GAAGkB,IAAvB;EACD;;EACD,SAAOmC,MAAP;EACD;;EAED,SAASy8B,eAAT,CAAyB5jC,KAAzB,EAA8C;EAAA,MAAdyL,OAAc,uEAAJ,EAAI;EAC5C,QAAM;EAAEo4B,IAAAA,MAAF;EAAUiB,IAAAA,QAAQ,GAAG;EAArB,MAA2Br5B,OAAjC;EAEA,MAAIk4B,OAAO,GAAG,EAAd;;EACA,OAAK,IAAI9wB,GAAT,IAAgBgxB,MAAhB,EAAwB;EACtB,QAAI;EAAExuB,MAAAA,IAAF;EAAQogB,MAAAA;EAAR,QAAeoO,MAAM,CAAChxB,GAAD,CAAzB;EACA8wB,IAAAA,OAAO,CAAC9wB,GAAD,CAAP,GACEwC,IAAI,KAAKogB,EAAT,GACIzS,KAAK,CAAChjB,KAAK,CAACwU,KAAN,CAAYa,IAAZ,EAAkBogB,EAAlB,CAAD,EAAwB;EAC3BqP,MAAAA;EAD2B,KAAxB,CADT,GAII;EAAE10B,MAAAA,CAAC,EAAE,EAAL;EAASC,MAAAA,CAAC,EAAE;EAAZ,KALN;;EAMA,QAAIwC,GAAG,KAAK,UAAZ,EAAwB;EACtB8wB,MAAAA,OAAO,CAAC9wB,GAAD,CAAP,CAAaxC,CAAb,CAAe4E,OAAf;EACD;EACF;;EACD,SAAO0uB,OAAP;EACD;;EAED,SAAS3gB,KAAT,CAAehjB,KAAf,EAAoC;EAAA,MAAdyL,OAAc,uEAAJ,EAAI;EAClC,QAAM;EAAE4T,IAAAA,KAAF;EAAS3U,IAAAA;EAAT,MAAiBD,IAAvB;EACA,QAAM;EAAEq6B,IAAAA;EAAF,MAAer5B,OAArB;;EACA,MAAIq5B,QAAJ,EAAc;EACZ9kC,IAAAA,KAAK,GAAGA,KAAK,CAACwU,KAAN,EAAR;EACA,UAAMuwB,SAAS,GAAG1lB,KAAK,CAACylB,QAAD,CAAvB;;EACA,SAAK,IAAIhhC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9D,KAAK,CAACN,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC9D,MAAAA,KAAK,CAAC8D,CAAD,CAAL,GAAWub,KAAK,CAAC3U,GAAG,CAAC1K,KAAK,CAAC8D,CAAD,CAAN,CAAJ,CAAL,GAAuBihC,SAAlC;EACD;EACF;;EAED,QAAMC,KAAK,GAAGjhB,cAAI,CAAC;EACjB1O,IAAAA,IAAI,EAAE,CADW;EAEjBogB,IAAAA,EAAE,EAAEz1B,KAAK,CAACN,MAAN,GAAe,CAFF;EAGjBgE,IAAAA,IAAI,EAAE1D,KAAK,CAACN;EAHK,GAAD,CAAlB;EAMA,SAAO;EAAE0Q,IAAAA,CAAC,EAAE40B,KAAL;EAAY30B,IAAAA,CAAC,EAAErQ;EAAf,GAAP;EACD;;ECtQD;EACA;EACA;EACA;;EACO,SAASilC,OAAT,GAA4B;EAAA,MAAXrgC,IAAW,uEAAJ,EAAI;;EACjC,MAAI,CAAC6O,UAAU,CAAC7O,IAAI,CAACwL,CAAN,CAAX,IAAuB,CAACqD,UAAU,CAAC7O,IAAI,CAACyL,CAAN,CAAtC,EAAgD;EAC9C,UAAM,IAAIjQ,KAAJ,CAAU,0CAAV,CAAN;EACD;;EACD,MAAIwE,IAAI,CAACwL,CAAL,CAAO1Q,MAAP,KAAkBkF,IAAI,CAACyL,CAAL,CAAO3Q,MAA7B,EAAqC;EACnC,UAAM,IAAIU,KAAJ,CAAU,8CAAV,CAAN;EACD;EACF;;ECbD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEO,SAAS8kC,cAAT,GAAkD;EAAA,MAA1BC,KAA0B,uEAAlB,EAAkB;EAAA,MAAd15B,OAAc,uEAAJ,EAAI;EACvD,MAAI05B,KAAK,CAACzlC,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP;EACxBylC,EAAAA,KAAK,GAAG59B,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAe09B,KAAf,CAAX,EAAkC93B,GAAlC,CAAuC+3B,IAAD,IAC5CA,IAAI,CAAC/vB,IAAL,GAAY+vB,IAAI,CAAC3P,EAAjB,GAAsB;EAAEpgB,IAAAA,IAAI,EAAE+vB,IAAI,CAAC3P,EAAb;EAAiBA,IAAAA,EAAE,EAAE2P,IAAI,CAAC/vB;EAA1B,GAAtB,GAAyD+vB,IADnD,CAAR;EAGA,MAAI;EAAE/vB,IAAAA,IAAI,GAAG/R,MAAM,CAAC89B,iBAAhB;EAAmC3L,IAAAA,EAAE,GAAGnyB,MAAM,CAAC69B;EAA/C,MACF11B,OADF;;EAEA,MAAI4J,IAAI,GAAGogB,EAAX,EAAe;EACb,KAACpgB,IAAD,EAAOogB,EAAP,IAAa,CAACA,EAAD,EAAKpgB,IAAL,CAAb;EACD;;EAED8vB,EAAAA,KAAK,GAAGA,KAAK,CAAChX,IAAN,CAAW,CAACphB,CAAD,EAAImH,CAAJ,KAAU;EAC3B,QAAInH,CAAC,CAACsI,IAAF,KAAWnB,CAAC,CAACmB,IAAjB,EAAuB,OAAOtI,CAAC,CAACsI,IAAF,GAASnB,CAAC,CAACmB,IAAlB;EACvB,WAAOtI,CAAC,CAAC0oB,EAAF,GAAOvhB,CAAC,CAACuhB,EAAhB;EACD,GAHO,CAAR;EAKA0P,EAAAA,KAAK,CAAC9xB,OAAN,CAAe+xB,IAAD,IAAU;EACtB,QAAI/vB,IAAI,GAAG+vB,IAAI,CAAC/vB,IAAhB,EAAsB+vB,IAAI,CAAC/vB,IAAL,GAAYA,IAAZ;EACtB,QAAIogB,EAAE,GAAG2P,IAAI,CAAC3P,EAAd,EAAkB2P,IAAI,CAAC3P,EAAL,GAAUA,EAAV;EACnB,GAHD;EAKA0P,EAAAA,KAAK,GAAGA,KAAK,CAACrD,MAAN,CAAcsD,IAAD,IAAUA,IAAI,CAAC/vB,IAAL,IAAa+vB,IAAI,CAAC3P,EAAzC,CAAR;EACA,MAAI0P,KAAK,CAACzlC,MAAN,KAAiB,CAArB,EAAwB,OAAO,EAAP;EAExB,MAAI2lC,WAAW,GAAGF,KAAK,CAAC,CAAD,CAAvB;EACA,MAAIh+B,MAAM,GAAG,CAACk+B,WAAD,CAAb;;EACA,OAAK,IAAID,IAAT,IAAiBD,KAAjB,EAAwB;EACtB,QAAIC,IAAI,CAAC/vB,IAAL,IAAagwB,WAAW,CAAC5P,EAA7B,EAAiC;EAC/B4P,MAAAA,WAAW,CAAC5P,EAAZ,GAAiB2P,IAAI,CAAC3P,EAAtB;EACD,KAFD,MAEO;EACL4P,MAAAA,WAAW,GAAGD,IAAd;EACAj+B,MAAAA,MAAM,CAACrH,IAAP,CAAYulC,WAAZ;EACD;EACF;;EACD,SAAOl+B,MAAP;EACD;;ECzCD;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASm+B,SAAT,GAA4C;EAAA,MAAzB1gC,IAAyB,uEAAlB,EAAkB;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACjDw5B,EAAAA,OAAO,CAACrgC,IAAD,CAAP;EACA,QAAM;EAAEwL,IAAAA,CAAF;EAAKC,IAAAA;EAAL,MAAWzL,IAAjB;EACA,MAAI;EAAEugC,IAAAA;EAAF,MAAY15B,OAAhB;EAEA05B,EAAAA,KAAK,GAAGD,cAAc,CAACC,KAAD,CAAtB;EAEA,MAAI,CAACthC,KAAK,CAACyQ,OAAN,CAAc6wB,KAAd,CAAD,IAAyBA,KAAK,CAACzlC,MAAN,KAAiB,CAA9C,EAAiD,OAAOkF,IAAP;EAEjD,MAAI2gC,IAAI,GAAG,EAAX;EACA,MAAIC,IAAI,GAAG,EAAX;EAEA,MAAIH,WAAW,GAAGF,KAAK,CAAC,CAAD,CAAvB;EACA,MAAIM,QAAQ,GAAG,CAAf;;EACAC,EAAAA,IAAI,EAAE,KAAK,IAAI5hC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsM,CAAC,CAAC1Q,MAAtB,EAA8BoE,CAAC,EAA/B,EAAmC;EACvC,WAAOuhC,WAAW,CAAC5P,EAAZ,GAAiBrlB,CAAC,CAACtM,CAAD,CAAzB,EAA8B;EAC5B2hC,MAAAA,QAAQ;EACRJ,MAAAA,WAAW,GAAGF,KAAK,CAACM,QAAD,CAAnB;;EACA,UAAI,CAACJ,WAAL,EAAkB;EAChBvhC,QAAAA,CAAC,GAAGsM,CAAC,CAAC1Q,MAAN;EACA,cAAMgmC,IAAN;EACD;EACF;;EACD,QAAIt1B,CAAC,CAACtM,CAAD,CAAD,IAAQuhC,WAAW,CAAChwB,IAAxB,EAA8B;EAC5BkwB,MAAAA,IAAI,CAACzlC,IAAL,CAAUsQ,CAAC,CAACtM,CAAD,CAAX;EACA0hC,MAAAA,IAAI,CAAC1lC,IAAL,CAAUuQ,CAAC,CAACvM,CAAD,CAAX;EACD;EACF;;EACD,SAAO;EAAEsM,IAAAA,CAAC,EAAEm1B,IAAL;EAAWl1B,IAAAA,CAAC,EAAEm1B;EAAd,GAAP;EACD;;ECrCD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASG,aAAT,GAAgD;EAAA,MAAzB/gC,IAAyB,uEAAlB,EAAkB;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACrDw5B,EAAAA,OAAO,CAACrgC,IAAD,CAAP;EACA,QAAM;EAAEwL,IAAAA,CAAF;EAAKC,IAAAA;EAAL,MAAWzL,IAAjB;EACA,MAAIwL,CAAC,CAAC1Q,MAAF,GAAW,CAAf,EAAkB,OAAO,CAAP;EAClB,QAAM;EAAEgZ,IAAAA,SAAF;EAAaE,IAAAA;EAAb,MAAyBiiB,eAAe,CAACzqB,CAAD,EAAI3E,OAAJ,CAA9C;EACA,MAAIm6B,oBAAoB,GAAG,CAA3B;;EACA,OAAK,IAAI9hC,CAAC,GAAG4U,SAAb,EAAwB5U,CAAC,GAAG8U,OAA5B,EAAqC9U,CAAC,EAAtC,EAA0C;EACxC8hC,IAAAA,oBAAoB,IAAK,CAACx1B,CAAC,CAACtM,CAAC,GAAG,CAAL,CAAD,GAAWsM,CAAC,CAACtM,CAAD,CAAb,KAAqBuM,CAAC,CAACvM,CAAC,GAAG,CAAL,CAAD,GAAWuM,CAAC,CAACvM,CAAD,CAAjC,CAAD,GAA0C,CAAlE;EACD;;EAED,SAAO8hC,oBAAP;EACD;;;;;;;;;;;ECjBD,MAAMvlC,UAAQ,GAAGoS,MAAM,CAACrF,SAAP,CAAiB/M,QAAlC;EACA,MAAMwlC,YAAY,GAAGpzB,MAAM,CAACrF,SAAP,CAAiB04B,oBAAtC;EACA,MAAMC,UAAU,GAAGtzB,MAAM,CAACuzB,qBAA1B;;MAEAC,eAAc,GAAG,UAACvL,MAAD,EAAqB;EACpC,MAAI,CAACwL,UAAQ,CAACxL,MAAD,CAAb,EAAuB;EACrB,UAAM,IAAIx4B,SAAJ,CAAc,6CAAd,CAAN;EACD;;EAHmC,oCAATikC,IAAS;EAATA,IAAAA,IAAS;EAAA;;EAKpC,MAAIA,IAAI,CAACzmC,MAAL,KAAgB,CAAhB,IAAqB,OAAOsvB,MAAP,KAAkB,UAAvC,IAAqD,OAAO+W,UAAP,KAAsB,UAA/E,EAA2F;EACzF,WAAOrL,MAAP;EACD;;EAED,OAAK,IAAI0L,GAAT,IAAgBD,IAAhB,EAAsB;EACpB,QAAIE,KAAK,GAAGN,UAAU,CAACK,GAAD,CAAtB;;EAEA,SAAK,IAAIvzB,GAAT,IAAgBwzB,KAAhB,EAAuB;EACrB,UAAIR,YAAY,CAACj9B,IAAb,CAAkBw9B,GAAlB,EAAuBvzB,GAAvB,CAAJ,EAAiC;EAC/B6nB,QAAAA,MAAM,CAAC7nB,GAAD,CAAN,GAAcuzB,GAAG,CAACvzB,GAAD,CAAjB;EACD;EACF;EACF;;EACD,SAAO6nB,MAAP;EACD;;EAED,SAASwL,UAAT,CAAkBz9B,GAAlB,EAAuB;EACrB,SAAO,OAAOA,GAAP,KAAe,UAAf,IAA6BpI,UAAQ,CAACuI,IAAT,CAAcH,GAAd,MAAuB,iBAApD,IAAyE5E,KAAK,CAACyQ,OAAN,CAAc7L,GAAd,CAAhF;;;;;;;;;;EC1BF,MAAMpI,QAAQ,GAAGoS,MAAM,CAACrF,SAAP,CAAiB/M,QAAlC;EACA,MAAM4lC,aAAa,GAAGrjC,eAAtB;;EAEA,MAAM0jC,UAAU,GAAGzzB,GAAG,IAAI;EACxB,SAAOA,GAAG,KAAK,WAAR,IAAuBA,GAAG,KAAK,aAA/B,IAAgDA,GAAG,KAAK,WAA/D;EACD,CAFD;;EAIA,MAAM0zB,MAAM,GAAGC,oBAAA,GAAiB,UAAC9L,MAAD,EAAqB;EACnD,MAAI52B,CAAC,GAAG,CAAR;;EADmD,oCAATqiC,IAAS;EAATA,IAAAA,IAAS;EAAA;;EAEnD,MAAIM,WAAW,CAAC/L,MAAD,CAAf,EAAyBA,MAAM,GAAGyL,IAAI,CAACriC,CAAC,EAAF,CAAb;EACzB,MAAI,CAAC42B,MAAL,EAAaA,MAAM,GAAG,EAAT;;EACb,SAAO52B,CAAC,GAAGqiC,IAAI,CAACzmC,MAAhB,EAAwBoE,CAAC,EAAzB,EAA6B;EAC3B,QAAIoiC,QAAQ,CAACC,IAAI,CAACriC,CAAD,CAAL,CAAZ,EAAuB;EACrB,WAAK,MAAM+O,GAAX,IAAkBJ,MAAM,CAACC,IAAP,CAAYyzB,IAAI,CAACriC,CAAD,CAAhB,CAAlB,EAAwC;EACtC,YAAIwiC,UAAU,CAACzzB,GAAD,CAAd,EAAqB;EACnB,cAAIqzB,QAAQ,CAACxL,MAAM,CAAC7nB,GAAD,CAAP,CAAR,IAAyBqzB,QAAQ,CAACC,IAAI,CAACriC,CAAD,CAAJ,CAAQ+O,GAAR,CAAD,CAArC,EAAqD;EACnD0zB,YAAAA,MAAM,CAAC7L,MAAM,CAAC7nB,GAAD,CAAP,EAAcszB,IAAI,CAACriC,CAAD,CAAJ,CAAQ+O,GAAR,CAAd,CAAN;EACD,WAFD,MAEO;EACL6nB,YAAAA,MAAM,CAAC7nB,GAAD,CAAN,GAAcszB,IAAI,CAACriC,CAAD,CAAJ,CAAQ+O,GAAR,CAAd;EACD;EACF;EACF;;EACDozB,MAAAA,aAAa,CAACvL,MAAD,EAASyL,IAAI,CAACriC,CAAD,CAAb,CAAb;EACD;EACF;;EACD,SAAO42B,MAAP;EACD,CAnBD;;EAqBA,SAASwL,QAAT,CAAkBz9B,GAAlB,EAAuB;EACrB,SAAO,OAAOA,GAAP,KAAe,UAAf,IAA6BpI,QAAQ,CAACuI,IAAT,CAAcH,GAAd,MAAuB,iBAA3D;EACD;;EAED,SAASg+B,WAAT,CAAqBh+B,GAArB,EAA0B;EACxB,SAAO,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAAG,KAAK,IAAlC,GAAyC,OAAOA,GAAP,KAAe,UAA/D;;;;;ECxCa,SAASi+B,iBAAT,CAA2BC,WAA3B,EAAwC;EACrD;EAEA,OAAK,IAAIC,KAAT,IAAkBD,WAAlB,EAA+B;EAC7B,QAAIE,gBAAgB,GAAG,CAAvB;EACA,QAAIC,cAAc,GAAG,CAArB;;EACA,SAAK,IAAI52B,QAAT,IAAqB02B,KAAK,CAAC/2B,OAA3B,EAAoC;EAClC,UAAI+2B,KAAK,CAACG,OAAN,IAAiBH,KAAK,CAACG,OAAN,CAAcrmC,MAAnC,EAA2C;EACzC,YAAI,CAACmmC,gBAAD,IAAqB32B,QAAQ,CAAC22B,gBAAlC,EAAoD;EAClDA,UAAAA,gBAAgB,GAAG32B,QAAQ,CAAC22B,gBAA5B;EACD;;EACD,YAAI,CAACC,cAAD,IAAmB52B,QAAQ,CAAC42B,cAAhC,EAAgD;EAC9CA,UAAAA,cAAc,GAAG52B,QAAQ,CAAC42B,cAA1B;EACD;EACF,OAPD,MAOO;EACLD,QAAAA,gBAAgB,GAAG32B,QAAQ,CAAC22B,gBAA5B;EACAC,QAAAA,cAAc,GAAG52B,QAAQ,CAAC42B,cAA1B;EACD;;EAED,UAAID,gBAAJ,EAAsB;EACpB,YAAI32B,QAAQ,CAAC82B,MAAT,IAAmB92B,QAAQ,CAAC82B,MAAT,CAAgB1mC,WAAhB,GAA8BoP,QAA9B,CAAuC,IAAvC,CAAvB,EAAqE;EACnEQ,UAAAA,QAAQ,CAAC82B,MAAT,GAAkB,KAAlB;EACA92B,UAAAA,QAAQ,CAACgD,OAAT,GAAmBhD,QAAQ,CAACgD,OAAT,GAAmB2zB,gBAAtC;EACA32B,UAAAA,QAAQ,CAACe,MAAT,GAAkBf,QAAQ,CAACe,MAAT,GAAkB41B,gBAApC;EACA32B,UAAAA,QAAQ,CAAC6E,KAAT,GAAiB7E,QAAQ,CAAC6E,KAAT,GAAiB8xB,gBAAlC;EACA32B,UAAAA,QAAQ,CAACW,MAAT,GAAkBX,QAAQ,CAACW,MAAT,GAAkBg2B,gBAApC;;EACA,eAAK,IAAI/iC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoM,QAAQ,CAACtL,IAAT,CAAcwL,CAAd,CAAgB1Q,MAApC,EAA4CoE,CAAC,EAA7C,EAAiD;EAC/CoM,YAAAA,QAAQ,CAACtL,IAAT,CAAcwL,CAAd,CAAgBtM,CAAhB,KAAsB+iC,gBAAtB;EACD;EACF;EACF;;EACD,UAAIC,cAAJ,EAAoB;EAClB,YAAItmC,KAAK,GAAG0P,QAAQ,CAACe,MAAT,GAAkB61B,cAA9B;EACA52B,QAAAA,QAAQ,CAACe,MAAT,GAAkBf,QAAQ,CAACe,MAAT,GAAkBzQ,KAApC;EACA0P,QAAAA,QAAQ,CAAC6E,KAAT,GAAiB7E,QAAQ,CAAC6E,KAAT,GAAiBvU,KAAlC;;EACA,aAAK,IAAIsD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoM,QAAQ,CAACtL,IAAT,CAAcwL,CAAd,CAAgB1Q,MAApC,EAA4CoE,CAAC,EAA7C,EAAiD;EAC/CoM,UAAAA,QAAQ,CAACtL,IAAT,CAAcwL,CAAd,CAAgBtM,CAAhB,KAAsBtD,KAAtB;EACD;EACF,OAhCiC;;;EAmClC,UAAIomC,KAAK,CAACG,OAAN,IAAiBH,KAAK,CAACG,OAAN,CAAcE,OAA/B,IAA0CL,KAAK,CAACG,OAAN,CAAcrmC,MAA5D,EAAoE;EAClE,aAAK,IAAIoD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8iC,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBvnC,MAA1C,EAAkDoE,CAAC,EAAnD,EAAuD;EACrD,cAAIpD,MAAM,GAAGkmC,KAAK,CAACG,OAAN,CAAcrmC,MAAd,CAAqBoD,CAArB,CAAb;EACA,cAAImjC,OAAO,GAAGL,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBnjC,CAAtB,CAAd;;EACA,cAAIpD,MAAM,CAACwmC,UAAP,CAAkB,GAAlB,KAA0B,CAACD,OAA/B,EAAwC;EACtC,gBAAIvmC,MAAM,KAAK,IAAf,EAAqB;EACnB;EACA,kBAAIkmC,KAAK,CAACnlC,GAAN,CAAU0lC,KAAd,EAAqB;EACnBP,gBAAAA,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBnjC,CAAtB,IAA2B8iC,KAAK,CAACnlC,GAAN,CAAU0lC,KAArC;EACD,eAFD,MAEO;EACL,oBAAIC,OAAO,GAAGR,KAAK,CAACG,OAAN,CAAcrmC,MAAd,CAAqB4N,OAArB,CAA6B,IAA7B,CAAd;;EACA,oBAAI84B,OAAO,IAAIR,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBG,OAAtB,CAAf,EAA+C;EAC7CR,kBAAAA,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBnjC,CAAtB,IAA2B8iC,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBG,OAAtB,CAA3B;EACD;EACF;EACF;;EACD,gBAAI1mC,MAAM,KAAK,IAAf,EAAqBkmC,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsBnjC,CAAtB,IAA2B8iC,KAAK,CAACnlC,GAAN,CAAU4lC,KAArC;EACtB;;EACD,cAAI3mC,MAAM,KAAK,IAAf,EAAqB;EACnBkmC,YAAAA,KAAK,CAACU,KAAN,GAAcV,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsB,CAAtB,CAAd;EACD;EACF;EACF;;EAED,UACEJ,gBAAgB,IAChBD,KAAK,CAACG,OADN,IAEAH,KAAK,CAACG,OAAN,CAAcrmC,MAFd,IAGAkmC,KAAK,CAACG,OAAN,CAAcE,OAJhB,EAKE;EACA,YAAIM,IAAI,GAAG,EAAX;EACA,YAAIC,eAAe,GAAGZ,KAAK,CAACG,OAAN,CAAcrmC,MAAd,CAAqB4N,OAArB,CAA6B4B,QAAQ,CAACu3B,UAAtC,CAAtB;;EACA,YAAIb,KAAK,CAACG,OAAN,CAAcW,KAAd,IAAuBd,KAAK,CAACG,OAAN,CAAcW,KAAd,CAAoBF,eAApB,CAA3B,EAAiE;EAC/DD,UAAAA,IAAI,GAAGX,KAAK,CAACG,OAAN,CAAcW,KAAd,CAAoBF,eAApB,CAAP;EACD;;EACD,YAAID,IAAI,KAAK,KAAb,EAAoB;EAClB,cAAIC,eAAe,KAAK,CAAxB,EAA2B;EACzB,kBAAMpnC,KAAK,CAAC,oCAAD,CAAX;EACD;;EAED,cAAIunC,MAAM,GAAGC,iBAAiB,CAAChB,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsB,CAAtB,CAAD,CAA9B;EACA,cAAIY,MAAM,GAAGD,iBAAiB,CAAChB,KAAK,CAACG,OAAN,CAAcE,OAAd,CAAsB,CAAtB,CAAD,CAA9B;;EACA,cAAI,CAACU,MAAD,IAAW,CAACE,MAAhB,EAAwB;EACtB,kBAAMznC,KAAK,CAAC,kDAAD,CAAX;EACD;;EACD,cAAI0nC,KAAK,GAAIH,MAAM,GAAGE,MAAV,GAAoBhB,gBAAhC;EACA32B,UAAAA,QAAQ,CAACC,SAAT,IAAsB23B,KAAtB;EACD;EACF;EACF;EACF;EACF;;EC9Fc,SAASC,SAAT,CAAmB5gC,MAAnB,EAA2B6gC,MAA3B,EAAmCv8B,OAAnC,EAA4C;EACzD,MAAItE,MAAM,CAAC4gC,SAAX,EAAsB;EACpB5gC,IAAAA,MAAM,CAAC4gC,SAAP,CAAiBjoC,IAAjB,CAAsB;EACpBkoC,MAAAA,MADoB;EAEpB9+B,MAAAA,IAAI,EAAE1K,IAAI,CAACC,GAAL,KAAagN,OAAO,CAACuD;EAFP,KAAtB;EAID;EACF;;ECPc,SAASi5B,kBAAT,CAA4B9gC,MAA5B,EAAoC;EACjD,MAAIvC,IAAI,GAAGuC,MAAM,CAAC0I,OAAP,CAAe,CAAf,EAAkBjL,IAA7B;EACAuC,EAAAA,MAAM,CAAC2I,YAAP,GAAsB;EACpBrG,IAAAA,KAAK,EAAE7E,IAAI,CAACwL,CAAL,CAAOoE,KAAP,EADa;EAEpB9K,IAAAA,MAAM,EAAE;EACNw+B,MAAAA,SAAS,EAAE;EACT9gC,QAAAA,SAAS,EAAE,CADF;EAETxC,QAAAA,IAAI,EAAEA,IAAI,CAACyL,CAAL,CAAOmE,KAAP;EAFG;EADL;EAFY,GAAtB;EASD;;ECLc,SAAS2zB,cAAT,CAAwBxB,WAAxB,EAAqCx/B,MAArC,EAA6CsE,OAA7C,EAAsD;EACnE;EACAi7B,EAAAA,iBAAiB,CAACC,WAAD,CAAjB;;EAEA,OAAK,IAAIC,KAAT,IAAkBD,WAAlB,EAA+B;EAC7B,QAAIl0B,MAAM,CAACC,IAAP,CAAYk0B,KAAK,CAACG,OAAlB,EAA2BrnC,MAA3B,GAAoC,CAAxC,EAA2C;EACzC,UAAI0oC,UAAU,GAAG,EAAjB;EACA,UAAI11B,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYk0B,KAAK,CAACG,OAAlB,CAAX;;EACA,WAAK,IAAIjjC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4O,IAAI,CAAChT,MAAzB,EAAiCoE,CAAC,EAAlC,EAAsC;EACpC,YAAI+O,GAAG,GAAGH,IAAI,CAAC5O,CAAD,CAAd;EACA,YAAIkP,MAAM,GAAG4zB,KAAK,CAACG,OAAN,CAAcl0B,GAAd,CAAb;;EACA,aAAK,IAAIrJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwJ,MAAM,CAACtT,MAA3B,EAAmC8J,CAAC,EAApC,EAAwC;EACtC,cAAI,CAAC4+B,UAAU,CAAC5+B,CAAD,CAAf,EAAoB4+B,UAAU,CAAC5+B,CAAD,CAAV,GAAgB,EAAhB;EACpB4+B,UAAAA,UAAU,CAAC5+B,CAAD,CAAV,CAAcqJ,GAAd,IAAqBG,MAAM,CAACxJ,CAAD,CAA3B;EACD;EACF;;EACDo9B,MAAAA,KAAK,CAACG,OAAN,GAAgBqB,UAAhB;EACD;;EAED,QAAIxB,KAAK,CAACyB,IAAN,IAAc58B,OAAO,CAAC68B,MAA1B,EAAkC;EAChClwB,MAAAA,KAAK,CAACwuB,KAAD,EAAQn7B,OAAR,CAAL;EAEAs8B,MAAAA,SAAS,CAAC5gC,MAAD,EAAS,oCAAT,EAA+CsE,OAA/C,CAAT;;EAEA,UAAI,CAACA,OAAO,CAAC88B,WAAb,EAA0B;EACxB,eAAO3B,KAAK,CAAC/2B,OAAb;EACD;EACF,KAvB4B;;;EA0B7B,QAAIpE,OAAO,CAACqE,YAAZ,EAA0B;EACxB,UAAI82B,KAAK,CAAC/2B,OAAN,CAAcnQ,MAAd,GAAuB,CAA3B,EAA8B;EAC5BkQ,QAAAA,mBAAmB,CAACg3B,KAAD,CAAnB;EACD,OAFD,MAEO;EACLqB,QAAAA,kBAAkB,CAACrB,KAAD,CAAlB;EACD;;EACDmB,MAAAA,SAAS,CAAC5gC,MAAD,EAAS,mCAAT,EAA8CsE,OAA9C,CAAT;EACD;;EAED,WAAOm7B,KAAK,CAACnlC,GAAb;EACD;EACF;;EC/Cc,SAAS+mC,uBAAT,CAAiCC,YAAjC,EAA+Cv4B,QAA/C,EAAyDw4B,IAAzD,EAA+D;EAC5E,MAAIC,MAAM,GAAG,CAAC,CAAd;EACA,MAAIC,MAAM,GAAG,CAAC,CAAd;EACA,MAAIC,aAAa,GAAG,EAApB;EACA,MAAIC,cAAc,GAAG,EAArB;;EACA,MAAIJ,IAAI,CAACp6B,OAAL,CAAa,IAAb,IAAqB,CAAzB,EAA4B;EAC1Bu6B,IAAAA,aAAa,GAAGH,IAAI,CAACr+B,OAAL,CAAa,0BAAb,EAAyC,IAAzC,CAAhB;EACAy+B,IAAAA,cAAc,GAAGJ,IAAI,CAACr+B,OAAL,CAAa,wBAAb,EAAuC,IAAvC,CAAjB;EACD,GAHD,MAGO;EACLq+B,IAAAA,IAAI,GAAGA,IAAI,CAACr+B,OAAL,CAAa,YAAb,EAA2B,EAA3B,CAAP;EACAw+B,IAAAA,aAAa,GAAGH,IAAI,CAACK,MAAL,CAAY,CAAZ,CAAhB;EACAD,IAAAA,cAAc,GAAGJ,IAAI,CAACK,MAAL,CAAY,CAAZ,CAAjB;EACA74B,IAAAA,QAAQ,CAAC/J,SAAT,GAAqB,EAArB;;EACA,SAAK,IAAIzF,MAAT,IAAmBgoC,IAAnB,EAAyB;EACvB,UAAIM,eAAe,GAAGtoC,MAAM,CAAC8O,WAAP,EAAtB;EACA,UAAIvP,KAAK,GAAGwoC,YAAY,CAAC1B,OAAb,CAAqBrmC,MAArB,CAA4B4N,OAA5B,CAAoC5N,MAApC,CAAZ;EACA,UAAIT,KAAK,KAAK,CAAC,CAAf,EAAkB,MAAMG,KAAK,CAAE,qBAAoBM,MAAO,EAA7B,CAAX;EAClBwP,MAAAA,QAAQ,CAAC/J,SAAT,CAAmB6iC,eAAnB,IAAsC,EAAtC;;EACA,WAAK,IAAIn2B,GAAT,IAAgB41B,YAAY,CAAC1B,OAA7B,EAAsC;EACpC,YAAI0B,YAAY,CAAC1B,OAAb,CAAqBl0B,GAArB,EAA0B5S,KAA1B,CAAJ,EAAsC;EACpCiQ,UAAAA,QAAQ,CAAC/J,SAAT,CAAmB6iC,eAAnB,EAAoCn2B,GAAG,CAACxI,OAAJ,CAAY,MAAZ,EAAoB,EAApB,CAApC,IACEo+B,YAAY,CAAC1B,OAAb,CAAqBl0B,GAArB,EAA0B5S,KAA1B,CADF;EAED;EACF;EACF;EACF;;EACD0oC,EAAAA,MAAM,GAAGF,YAAY,CAAC1B,OAAb,CAAqBrmC,MAArB,CAA4B4N,OAA5B,CAAoCu6B,aAApC,CAAT;EACAD,EAAAA,MAAM,GAAGH,YAAY,CAAC1B,OAAb,CAAqBrmC,MAArB,CAA4B4N,OAA5B,CAAoCw6B,cAApC,CAAT;EAEA,MAAIH,MAAM,KAAK,CAAC,CAAhB,EAAmBA,MAAM,GAAG,CAAT;EACnB,MAAIC,MAAM,KAAK,CAAC,CAAhB,EAAmBA,MAAM,GAAG,CAAT;;EAEnB,MAAIH,YAAY,CAAC1B,OAAb,CAAqBxZ,KAAzB,EAAgC;EAC9B,QAAIkb,YAAY,CAAC1B,OAAb,CAAqBxZ,KAArB,CAA2B7tB,MAA3B,GAAoCipC,MAAxC,EAAgD;EAC9Cz4B,MAAAA,QAAQ,CAACe,MAAT,GAAkBw3B,YAAY,CAAC1B,OAAb,CAAqBxZ,KAArB,CAA2Bob,MAA3B,CAAlB;EACD;;EACD,QAAIF,YAAY,CAAC1B,OAAb,CAAqBxZ,KAArB,CAA2B7tB,MAA3B,GAAoCkpC,MAAxC,EAAgD;EAC9C14B,MAAAA,QAAQ,CAACiB,MAAT,GAAkBs3B,YAAY,CAAC1B,OAAb,CAAqBxZ,KAArB,CAA2Bqb,MAA3B,CAAlB;EACD;EACF;;EACD,MAAIH,YAAY,CAAC1B,OAAb,CAAqBvZ,IAAzB,EAA+B;EAC7B,QAAIib,YAAY,CAAC1B,OAAb,CAAqBvZ,IAArB,CAA0B9tB,MAA1B,GAAmCipC,MAAvC,EAA+C;EAC7Cz4B,MAAAA,QAAQ,CAAC6E,KAAT,GAAiB0zB,YAAY,CAAC1B,OAAb,CAAqBvZ,IAArB,CAA0Bmb,MAA1B,CAAjB;EACD;;EACD,QAAIF,YAAY,CAAC1B,OAAb,CAAqBvZ,IAArB,CAA0B9tB,MAA1B,GAAmCkpC,MAAvC,EAA+C;EAC7C14B,MAAAA,QAAQ,CAAC8E,KAAT,GAAiByzB,YAAY,CAAC1B,OAAb,CAAqBvZ,IAArB,CAA0Bob,MAA1B,CAAjB;EACD;EACF;;EACD,MACEH,YAAY,CAAC1B,OAAb,CAAqBkC,MAArB,IACAR,YAAY,CAAC1B,OAAb,CAAqBkC,MAArB,CAA4BvpC,MAA5B,GAAqCipC,MAFvC,EAGE;EACAz4B,IAAAA,QAAQ,CAACgoB,QAAT,GAAoBuQ,YAAY,CAAC1B,OAAb,CAAqBkC,MAArB,CAA4BN,MAA5B,CAApB;EACD;;EACD,MAAIF,YAAY,CAAC1B,OAAb,CAAqBpvB,MAAzB,EAAiC;EAC/B,QAAI8wB,YAAY,CAAC1B,OAAb,CAAqBpvB,MAArB,CAA4BjY,MAA5B,GAAqCipC,MAAzC,EAAiD;EAC/Cz4B,MAAAA,QAAQ,CAACgD,OAAT,GAAmBu1B,YAAY,CAAC1B,OAAb,CAAqBpvB,MAArB,CAA4BgxB,MAA5B,CAAnB;EACD;;EACD,QAAIF,YAAY,CAAC1B,OAAb,CAAqBpvB,MAArB,CAA4BjY,MAA5B,GAAqCkpC,MAAzC,EAAiD;EAC/C14B,MAAAA,QAAQ,CAACU,OAAT,GAAmB63B,YAAY,CAAC1B,OAAb,CAAqBpvB,MAArB,CAA4BixB,MAA5B,CAAnB;EACD;EACF;;EACD,MAAIH,YAAY,CAAC1B,OAAb,CAAqBW,KAAzB,EAAgC;EAC9B,QAAIe,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,CAA2BhoC,MAA3B,GAAoCipC,MAAxC,EAAgD;EAC9C,UACEF,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,IACAT,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,CAA6BP,MAA7B,CAFF,EAGE;EACAz4B,QAAAA,QAAQ,CAAC82B,MAAT,GAAmB,GAAEyB,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,CAA6BP,MAA7B,CAAqC,KAAIF,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,CAA2BiB,MAA3B,CAAmC,GAAjG;EACD,OALD,MAKO;EACLz4B,QAAAA,QAAQ,CAAC82B,MAAT,GAAkByB,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,CAA2BiB,MAA3B,CAAlB;EACD;EACF;;EACD,QAAIF,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,CAA2BhoC,MAA3B,GAAoCkpC,MAAxC,EAAgD;EAC9C,UACEH,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,IACAT,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,CAA6BN,MAA7B,CAFF,EAGE;EACA14B,QAAAA,QAAQ,CAACi5B,MAAT,GAAmB,GAAEV,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,CAA6BN,MAA7B,CAAqC,KAAIH,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,CAA2BkB,MAA3B,CAAmC,GAAjG;EACD,OALD,MAKO;EACL14B,QAAAA,QAAQ,CAACi5B,MAAT,GAAkBV,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,CAA2BkB,MAA3B,CAAlB;EACD;EACF;EACF;EACF;;ECpFc,SAASQ,eAAT,CAAyBl5B,QAAzB,EAAmC;EAChD,MAAI,CAACA,QAAQ,CAACgD,OAAd,EAAuBhD,QAAQ,CAACgD,OAAT,GAAmB,CAAnB;EACvB,MAAI,CAAChD,QAAQ,CAACU,OAAd,EAAuBV,QAAQ,CAACU,OAAT,GAAmB,CAAnB;EACxB;;ECWD,MAAMy4B,sBAAsB,GAAG,eAA/B;;EAEA,MAAMC,QAAN,CAAe;;EAEf,MAAMC,gBAAc,GAAG;EACrBC,EAAAA,iBAAiB,EAAE,IADE;EAErBC,EAAAA,iBAAiB,EAAE,IAFE;EAGrBC,EAAAA,qBAAqB,EAAE,KAHF;EAIrBC,EAAAA,aAAa,EAAE,IAJM;EAKrBC,EAAAA,SAAS,EAAE,KALU;EAMrB95B,EAAAA,YAAY,EAAE,KANO;EAOrBy4B,EAAAA,WAAW,EAAE,KAPQ;EAQrBlwB,EAAAA,SAAS,EAAE,KARU;EASrBhB,EAAAA,eAAe,EAAE,CATI;EAUrBO,EAAAA,eAAe,EAAE,CAVI;EAWrBmwB,EAAAA,SAAS,EAAE;EAXU,CAAvB;EAcA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAAS8B,OAAT,CAAiBC,KAAjB,EAAsC;EAAA,MAAdr+B,OAAc,uEAAJ,EAAI;EAC3Cq+B,EAAAA,KAAK,GAAGC,YAAY,CAACD,KAAD,CAApB;EACAr+B,EAAAA,OAAO,GAAG,EAAE,GAAG89B,gBAAL;EAAqB,OAAG99B;EAAxB,GAAV;EACAA,EAAAA,OAAO,CAAC68B,MAAR,GAAiB,CAAC78B,OAAO,CAACm+B,SAA1B;EACAn+B,EAAAA,OAAO,CAACuD,KAAR,GAAgBxQ,IAAI,CAACC,GAAL,EAAhB;EAEA,MAAIkoC,WAAW,GAAG,EAAlB;EAEA,MAAIx/B,MAAM,GAAG;EACX4gC,IAAAA,SAAS,EAAEt8B,OAAO,CAACs8B,SAAR,GAAoB,EAApB,GAAyB,KADzB;EAEX50B,IAAAA,IAAI,EAAE,EAFK;EAGX62B,IAAAA,OAAO,EAAE;EAHE,GAAb;EAMA,MAAIC,SAAS,GAAG;EAAEC,IAAAA,QAAQ,EAAE;EAAZ,GAAhB;EACA,MAAIzB,YAAY,GAAGwB,SAAnB;EACA,MAAIE,YAAY,GAAG,EAAnB;EAEA,MAAIj6B,QAAQ,GAAG,IAAIo5B,QAAJ,EAAf;;EAEA,MAAI,OAAOQ,KAAP,KAAiB,QAArB,EAA+B;EAC7B,UAAM,IAAI5nC,SAAJ,CAAc,8BAAd,CAAN;EACD;;EAED6lC,EAAAA,SAAS,CAAC5gC,MAAD,EAAS,sBAAT,EAAiCsE,OAAjC,CAAT;EAEA,MAAI2+B,IAAI,GAAGN,KAAK,CAACz/B,OAAN,CAAc,YAAd,EAA4B,MAA5B,EAAoC0I,KAApC,CAA0C,MAA1C,CAAX;EAEAg1B,EAAAA,SAAS,CAAC5gC,MAAD,EAAS,eAAT,EAA0BsE,OAA1B,CAAT;EAEA,MAAI2+B,IAAI,CAAC,CAAD,CAAR,EAAaA,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAAJ,CAAQ//B,OAAR,CAAgB,aAAhB,EAA+B,EAA/B,CAAV;;EAEb,OAAK,IAAIggC,GAAT,IAAgBD,IAAhB,EAAsB;EACpB;EACA,QAAI3E,QAAQ,GAAG4E,GAAG,CAAC/7B,OAAJ,CAAY,GAAZ,CAAf;EACA,QAAIg8B,SAAS,GAAG7E,QAAQ,GAAG,CAAX,GAAe4E,GAAG,CAAC7lC,SAAJ,CAAc,CAAd,EAAiBihC,QAAjB,CAAf,GAA4C4E,GAA5D;EACA,QAAIE,SAAS,GAAG9E,QAAQ,GAAG,CAAX,GAAe4E,GAAG,CAAC7lC,SAAJ,CAAcihC,QAAQ,GAAG,CAAzB,EAA4BxyB,IAA5B,EAAf,GAAoD,EAApE;EAEA,QAAI1C,gBAAgB,GAAG+5B,SAAS,CAACjgC,OAAV,CAAkB,QAAlB,EAA4B,EAA5B,EAAgC/J,WAAhC,EAAvB;;EAEA,QAAIiQ,gBAAgB,KAAK,WAAzB,EAAsC;EACpC,UAAIa,OAAO,GAAGm5B,SAAS,CAACj8B,OAAV,CAAkB,IAAlB,CAAd;EACA,UAAI8C,OAAO,KAAK,CAAC,CAAjB,EAAoBA,OAAO,GAAGm5B,SAAS,CAACj8B,OAAV,CAAkB,IAAlB,CAAV;;EACpB,UAAI8C,OAAO,GAAG,CAAd,EAAiB;EACf;EACA;EAEA,YAAIo5B,KAAK,GAAGD,SAAS,CAAC/lC,SAAV,CAAoB,CAApB,EAAuB4M,OAAvB,EAAgC2B,KAAhC,CAAsC,UAAtC,CAAZ;EACAy1B,QAAAA,uBAAuB,CAACC,YAAD,EAAev4B,QAAf,EAAyBs6B,KAAK,CAAC,CAAD,CAA9B,CAAvB;EAEAt6B,QAAAA,QAAQ,CAACu6B,SAAT,GAAqBD,KAAK,CAAC,CAAD,CAA1B;;EACA,YAAIA,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAL,CAASl8B,OAAT,CAAiB,OAAjB,IAA4B,CAAC,CAA7C,EAAgD;EAC9CiC,UAAAA,gBAAgB,GAAG,WAAnB;EACD,SAFD,MAEO,IACLi6B,KAAK,CAAC,CAAD,CAAL,KACCA,KAAK,CAAC,CAAD,CAAL,CAASl8B,OAAT,CAAiB,QAAjB,KAA8Bk8B,KAAK,CAAC,CAAD,CAAL,CAASl8B,OAAT,CAAiB,IAAjB,IAAyB,CADxD,CADK,EAGL;EACAiC,UAAAA,gBAAgB,GAAG,QAAnB;EACAL,UAAAA,QAAQ,CAACW,MAAT,GACE,CAACX,QAAQ,CAAC6E,KAAT,GAAiB7E,QAAQ,CAACe,MAA3B,KAAsCf,QAAQ,CAACgoB,QAAT,GAAoB,CAA1D,CADF;EAED;EACF;EACF;;EAED,QAAI3nB,gBAAgB,KAAK,QAAzB,EAAmC;EACjC,UAAI9E,OAAO,CAAC68B,MAAZ,EAAoB;EAClBc,QAAAA,eAAe,CAACl5B,QAAD,CAAf,CADkB;;EAGlB,YAAIq6B,SAAS,CAACngC,KAAV,CAAgB,UAAhB,CAAJ,EAAiC;EAC/B;EACA8F,UAAAA,QAAQ,CAACW,MAAT,GACE,CAACX,QAAQ,CAAC6E,KAAT,GAAiB7E,QAAQ,CAACe,MAA3B,KAAsCf,QAAQ,CAACgoB,QAAT,GAAoB,CAA1D,CADF;EAGAvnB,UAAAA,eAAe,CAACT,QAAD,EAAWq6B,SAAX,CAAf;EACD,SAND,MAMO;EACLh4B,UAAAA,cAAc,CAACrC,QAAD,EAAWq6B,SAAX,EAAsBpjC,MAAtB,CAAd;EACD;;EACDshC,QAAAA,YAAY,CAAC54B,OAAb,CAAqB/P,IAArB,CAA0BoQ,QAA1B;EACAA,QAAAA,QAAQ,GAAG,IAAIo5B,QAAJ,EAAX;EACD;;EACD;EACD,KAjBD,MAiBO,IAAI/4B,gBAAgB,KAAK,WAAzB,EAAsC;EAC3C,UAAI9E,OAAO,CAAC68B,MAAZ,EAAoB;EAClBc,QAAAA,eAAe,CAACl5B,QAAD,CAAf;EACAqC,QAAAA,cAAc,CAACrC,QAAD,EAAWq6B,SAAX,EAAsBpjC,MAAtB,CAAd;EACAshC,QAAAA,YAAY,CAAC54B,OAAb,CAAqB/P,IAArB,CAA0BoQ,QAA1B;EACAA,QAAAA,QAAQ,GAAG,IAAIo5B,QAAJ,EAAX;EACD;;EACD;EACD;;EACD,QAAI/4B,gBAAgB,KAAK,iBAAzB,EAA4C;EAC1C,UAAI9E,OAAO,CAAC68B,MAAZ,EAAoB;EAClB,YAAIiC,SAAS,CAACngC,KAAV,CAAgB,WAAhB,CAAJ,EAAkC;EAChC;EACAkJ,UAAAA,QAAQ,CAACpD,QAAD,EAAWq6B,SAAX,CAAR;EACD;;EACD9B,QAAAA,YAAY,CAAC54B,OAAb,CAAqB/P,IAArB,CAA0BoQ,QAA1B;EACAA,QAAAA,QAAQ,GAAG,IAAIo5B,QAAJ,EAAX;EACD;;EACD;EACD;;EAED,QAAI/4B,gBAAgB,KAAK,OAAzB,EAAkC;EAChC,UAAIm6B,WAAW,GAAGjC,YAAlB;;EACA,UAAI,CAACiC,WAAW,CAACR,QAAjB,EAA2B;EACzBQ,QAAAA,WAAW,CAACR,QAAZ,GAAuB,EAAvB;EACD;;EACDzB,MAAAA,YAAY,GAAG;EACb54B,QAAAA,OAAO,EAAE,EADI;EAEbk3B,QAAAA,OAAO,EAAE,EAFI;EAGb4D,QAAAA,IAAI,EAAE,EAHO;EAIb1+B,QAAAA,IAAI,EAAE,EAJO;EAKbxK,QAAAA,GAAG,EAAE,EALQ;;EAAA,OAAf;EAOAipC,MAAAA,WAAW,CAACR,QAAZ,CAAqBpqC,IAArB,CAA0B2oC,YAA1B;EACA0B,MAAAA,YAAY,CAACrqC,IAAb,CAAkB4qC,WAAlB;EACA/D,MAAAA,WAAW,CAAC7mC,IAAZ,CAAiB2oC,YAAjB;EACAA,MAAAA,YAAY,CAACzpC,KAAb,GAAqBurC,SAArB;EACD,KAhBD,MAgBO,IAAIh6B,gBAAgB,KAAK,UAAzB,EAAqC;EAC1Ck4B,MAAAA,YAAY,CAACmC,QAAb,GAAwBL,SAAxB;;EACA,UAAIA,SAAS,CAACngC,KAAV,CAAgB,eAAhB,CAAJ,EAAsC;EACpCq+B,QAAAA,YAAY,CAACJ,IAAb,GAAoB,IAApB;EACD;EACF,KALM,MAKA,IAAI93B,gBAAgB,KAAK,SAAzB,EAAoC;EACzC,UAAIg6B,SAAS,CAACngC,KAAV,CAAgB,eAAhB,CAAJ,EAAsC;EACpCq+B,QAAAA,YAAY,CAACJ,IAAb,GAAoB,IAApB;EACD;EACF,KAJM,MAIA,IAAI93B,gBAAgB,KAAK,WAAzB,EAAsC;EAC3Ck4B,MAAAA,YAAY,CAACoC,SAAb,GAAyBN,SAAzB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCL,MAAAA,QAAQ,CAAC82B,MAAT,GAAkBuD,SAAlB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCL,MAAAA,QAAQ,CAACi5B,MAAT,GAAkBoB,SAAlB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCL,MAAAA,QAAQ,CAACe,MAAT,GAAkB3N,MAAM,CAACinC,SAAD,CAAxB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,OAAzB,EAAkC;EACvCL,MAAAA,QAAQ,CAAC6E,KAAT,GAAiBzR,MAAM,CAACinC,SAAD,CAAvB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCL,MAAAA,QAAQ,CAACiB,MAAT,GAAkB7N,MAAM,CAACinC,SAAD,CAAxB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,OAAzB,EAAkC;EACvCL,MAAAA,QAAQ,CAAC8E,KAAT,GAAiB1R,MAAM,CAACinC,SAAD,CAAvB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,SAAzB,EAAoC;EACzCL,MAAAA,QAAQ,CAACgoB,QAAT,GAAoB50B,MAAM,CAACinC,SAAD,CAA1B;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,SAAzB,EAAoC;EACzCL,MAAAA,QAAQ,CAACgD,OAAT,GAAmB5P,MAAM,CAACinC,SAAD,CAAzB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,SAAzB,EAAoC;EACzCL,MAAAA,QAAQ,CAACU,OAAT,GAAmBtN,MAAM,CAACinC,SAAD,CAAzB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,MAAzB,EAAiC;EACtCL,MAAAA,QAAQ,CAACuF,IAAT,GAAgBnS,MAAM,CAACinC,SAAD,CAAtB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,MAAzB,EAAiC;EACtCL,MAAAA,QAAQ,CAACqF,IAAT,GAAgBjS,MAAM,CAACinC,SAAD,CAAtB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,MAAzB,EAAiC;EACtCL,MAAAA,QAAQ,CAAC0F,IAAT,GAAgBtS,MAAM,CAACinC,SAAD,CAAtB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,MAAzB,EAAiC;EACtCL,MAAAA,QAAQ,CAACyF,IAAT,GAAgBrS,MAAM,CAACinC,SAAD,CAAtB;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCL,MAAAA,QAAQ,CAACW,MAAT,GAAkBvN,MAAM,CAACinC,SAAD,CAAxB;EACD,KAFM,MAEA,IACLh6B,gBAAgB,KAAK,mBAArB,IACAA,gBAAgB,KAAK,OAFhB,EAGL;EACA,UAAI,CAACL,QAAQ,CAAC22B,gBAAd,EAAgC;EAC9B32B,QAAAA,QAAQ,CAAC22B,gBAAT,GAA4BvjC,MAAM,CAACinC,SAAD,CAAlC;EACD;EACF,KAPM,MAOA,IAAIh6B,gBAAgB,KAAK,iBAAzB,EAA4C;EACjD,UAAI,CAACL,QAAQ,CAAC46B,KAAd,EAAqB;EACnBrC,QAAAA,YAAY,CAACqC,KAAb,GAAqBP,SAAS,CAAClgC,OAAV,CAAkB,eAAlB,EAAmC,EAAnC,CAArB;EACD;EACF,KAJM,MAIA,IAAIkG,gBAAgB,KAAK,SAAzB,EAAoC;EACzC;EACAk4B,MAAAA,YAAY,CAACsC,cAAb,GAA8B,CAA9B;;EACA,UAAI,CAAC76B,QAAQ,CAAC42B,cAAd,EAA8B;EAC5B52B,QAAAA,QAAQ,CAAC42B,cAAT,GAA0BxjC,MAAM,CAACinC,SAAD,CAAhC;EACD;EACF,KANM,MAMA,IAAIh6B,gBAAgB,KAAK,iBAAzB,EAA4C,CAA5C,MAOA,IAAIA,gBAAgB,KAAK,SAAzB,EAAoC;EACzCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBmC,OAArB,GAA+BqB,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAA/B;EACD,KAFM,MAEA,IAAI94B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBrmC,MAArB,GAA8B6pC,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAA9B;EACD,KAFM,MAEA,IAAI94B,gBAAgB,KAAK,SAAzB,EAAoC;EACzCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBiE,OAArB,GAA+BT,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAA/B;EACD,KAFM,MAEA,IAAI94B,gBAAgB,KAAK,SAAzB,EAAoC;EACzCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBkE,OAArB,GAA+BV,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAA/B;EACD,KAFM,MAEA,IAAI94B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBkC,MAArB,GAA8Bz4B,mBAAmB,CAC/C+5B,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAD+C,CAAjD;EAGD,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,OAAzB,EAAkC;EACvCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBW,KAArB,GAA6B6C,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAA7B;EACD,KAFM,MAEA,IAAI94B,gBAAgB,KAAK,QAAzB,EAAmC;EACxCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBpvB,MAArB,GAA8BnH,mBAAmB,CAC/C+5B,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAD+C,CAAjD;EAGD,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,OAAzB,EAAkC;EACvCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBxZ,KAArB,GAA6B/c,mBAAmB,CAC9C+5B,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAD8C,CAAhD;EAGD,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,MAAzB,EAAiC;EACtCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBvZ,IAArB,GAA4Bhd,mBAAmB,CAC7C+5B,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAD6C,CAA/C;EAGD,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,KAAzB,EAAgC;EACrCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBvxB,GAArB,GAA2BhF,mBAAmB,CAC5C+5B,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAD4C,CAA9C;EAGD,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,KAAzB,EAAgC;EACrCk4B,MAAAA,YAAY,CAAC1B,OAAb,CAAqBrxB,GAArB,GAA2BlF,mBAAmB,CAC5C+5B,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAD4C,CAA9C;EAGD,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,UAAzB,EAAqC;EAC1C,UAAIk4B,YAAY,CAAC1B,OAAjB,EAA0B;EACxB0B,QAAAA,YAAY,CAAC1B,OAAb,CAAqBE,OAArB,GAA+BsD,SAAS,CAACx3B,KAAV,CAAgBs2B,sBAAhB,CAA/B;EACD;EACF,KAJM,MAIA,IAAI94B,gBAAgB,KAAK,MAAzB,EAAiC;EACtCL,MAAAA,QAAQ,CAACg7B,IAAT,GAAgBX,SAAS,CAACt3B,IAAV,EAAhB;EACA/C,MAAAA,QAAQ,CAACC,SAAT,GAAqB7M,MAAM,CAACinC,SAAS,CAAClgC,OAAV,CAAkB,MAAlB,EAA0B,EAA1B,CAAD,CAA3B;EACA6F,MAAAA,QAAQ,CAACu3B,UAAT,GAAsBv3B,QAAQ,CAACg7B,IAAT,CAAc7gC,OAAd,CAAsB,OAAtB,EAA+B,EAA/B,CAAtB;EACD,KAJM,MAIA,IAAIkG,gBAAgB,KAAK,eAAzB,EAA0C;EAC/CL,MAAAA,QAAQ,CAACC,SAAT,GAAqB7M,MAAM,CAACinC,SAAD,CAA3B;EACD,KAFM,MAEA,IAAIj6B,SAAS,CAACC,gBAAD,CAAb,EAAiC;EACtCL,MAAAA,QAAQ,CAACD,qBAAqB,CAACM,gBAAD,CAAtB,CAAR,GAAoDg6B,SAApD;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,KAAK,mBAAzB,EAA8C;EACnDL,MAAAA,QAAQ,CAACi7B,iBAAT,GAA6BZ,SAA7B;EACD,KAFM,MAEA,IAAIh6B,gBAAgB,CAAC22B,UAAjB,CAA4B,MAA5B,CAAJ,EAAyC;EAC9C,UAAI,CAACuB,YAAY,CAAChnC,GAAb,CAAiB8O,gBAAjB,CAAD,IAAuC,CAACg6B,SAAS,CAAC76B,QAAV,CAAmB,KAAnB,CAA5C,EAAuE;EACrE+4B,QAAAA,YAAY,CAAChnC,GAAb,CAAiB8O,gBAAjB,IAAqCg6B,SAAS,CAAClgC,OAAV,CAAkB,OAAlB,EAA2B,EAA3B,CAArC;EACD;EACF,KAJM,MAIA,IAAIkG,gBAAgB,KAAK,KAAzB,EAAgC;EACrCk4B,MAAAA,YAAY,GAAG0B,YAAY,CAAChN,GAAb,EAAf;EACD;;EAED,QACEsL,YAAY,IACZA,YAAY,CAACkC,IADb,IAEAlC,YAAY,CAACx8B,IAFb,IAGAsE,gBAAgB,CAACnG,KAAjB,CAAuBqB,OAAO,CAAC+9B,iBAA/B,CAJF,EAKE;EACA,UAAI7pC,KAAK,GAAG4qC,SAAS,CAACt3B,IAAV,EAAZ;EACA,UAAIynB,MAAJ,EAAY1qB,KAAZ;;EACA,UAAIs6B,SAAS,CAACpD,UAAV,CAAqB,GAArB,CAAJ,EAA+B;EAC7Bl3B,QAAAA,KAAK,GAAGvE,OAAO,CAACi+B,qBAAR,GACJn5B,gBAAgB,CAAC/L,SAAjB,CAA2B,CAA3B,CADI,GAEJ8lC,SAAS,CAAC9lC,SAAV,CAAoB,CAApB,CAFJ;EAGAk2B,QAAAA,MAAM,GAAG+N,YAAY,CAACx8B,IAAtB;EACD,OALD,MAKO;EACL+D,QAAAA,KAAK,GAAGvE,OAAO,CAACg+B,iBAAR,GAA4Bl5B,gBAA5B,GAA+C+5B,SAAvD;EACA5P,QAAAA,MAAM,GAAG+N,YAAY,CAACkC,IAAtB;EACD;;EAED,UAAIl/B,OAAO,CAACk+B,aAAZ,EAA2B;EACzBhqC,QAAAA,KAAK,GAAG2P,WAAW,CAAC3P,KAAD,CAAnB;EACD;;EACD,UAAI+6B,MAAM,CAAC1qB,KAAD,CAAV,EAAmB;EACjB,YAAI,CAACnM,KAAK,CAACyQ,OAAN,CAAcomB,MAAM,CAAC1qB,KAAD,CAApB,CAAL,EAAmC;EACjC0qB,UAAAA,MAAM,CAAC1qB,KAAD,CAAN,GAAgB,CAAC0qB,MAAM,CAAC1qB,KAAD,CAAP,CAAhB;EACD;;EACD0qB,QAAAA,MAAM,CAAC1qB,KAAD,CAAN,CAAclQ,IAAd,CAAmBH,KAAnB;EACD,OALD,MAKO;EACL+6B,QAAAA,MAAM,CAAC1qB,KAAD,CAAN,GAAgBrQ,KAAhB;EACD;EACF;EACF;;EAEDooC,EAAAA,SAAS,CAAC5gC,MAAD,EAAS,kBAAT,EAA6BsE,OAA7B,CAAT;EAEA08B,EAAAA,cAAc,CAACxB,WAAD,EAAcx/B,MAAd,EAAsBsE,OAAtB,CAAd;EAEAs8B,EAAAA,SAAS,CAAC5gC,MAAD,EAAS,YAAT,EAAuBsE,OAAvB,CAAT;EAEA;EACF;EACA;EACA;EACA;;EACEtE,EAAAA,MAAM,CAAC6iC,OAAP,GAAiBC,SAAS,CAACC,QAA3B;EACA/iC,EAAAA,MAAM,CAACikC,OAAP,GAAiBzE,WAAjB;EAEA,SAAOx/B,MAAP;EACD;;EC3UD,MAAMkkC,MAAM,GAAG,EAAf;AACA,aAAeA,MAAf;;EACAA,MAAM,CAACC,WAAP,GAAqB,SAASA,WAAT,CAAqBC,QAArB,EAA+B;EAClD,MAAIC,IAAI,GAAGD,QAAQ,CAAClhC,OAAT,CAAiB,MAAjB,EAAyB,EAAzB,CAAX;EACA,SAAOmhC,IAAI,CAACnhC,OAAL,CAAa,WAAb,EAA0B,EAA1B,CAAP;EACD,CAHD;;EAKAghC,MAAM,CAACI,YAAP,GAAsB,SAASA,YAAT,CAAsBF,QAAtB,EAAgC;EACpD,MAAIG,SAAS,GAAGL,MAAM,CAACC,WAAP,CAAmBC,QAAnB,CAAhB;EACA,SAAOG,SAAS,CAACrhC,OAAV,CAAkB,MAAlB,EAA0B,EAA1B,EAA8BmF,WAA9B,EAAP;EACD,CAHD;;EAKA67B,MAAM,CAACM,WAAP,GAAqB,SAASA,WAAT,CAAqBC,SAArB,EAAgC;EACnD,MAAIl5B,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYk5B,SAAZ,CAAX;;EACA,OAAK,IAAI9nC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4O,IAAI,CAAChT,MAAzB,EAAiCoE,CAAC,EAAlC,EAAsC;EACpC,QAAI8nC,SAAS,CAACl5B,IAAI,CAAC5O,CAAD,CAAL,CAAT,IAAsB8nC,SAAS,CAACl5B,IAAI,CAAC5O,CAAD,CAAL,CAAT,CAAmBynC,QAA7C,EAAuD;EACrD,aAAOK,SAAS,CAACl5B,IAAI,CAAC5O,CAAD,CAAL,CAAT,CAAmBynC,QAA1B;EACD;EACF;;EACD,SAAOhnC,SAAP;EACD,CARD;;EAUA8mC,MAAM,CAACQ,YAAP,GAAsB,SAASA,YAAT,CAAsBC,WAAtB,EAAmCP,QAAnC,EAA6C;EACjE,MAAIQ,SAAS,GAAGV,MAAM,CAACC,WAAP,CAAmBC,QAAnB,CAAhB;EAEA,SAAOO,WAAW,CAACtjC,IAAZ,CAAkBojC,SAAD,IAAe;EACrC,WAAOP,MAAM,CAACC,WAAP,CAAmBD,MAAM,CAACM,WAAP,CAAmBC,SAAnB,CAAnB,MAAsDG,SAA7D;EACD,GAFM,CAAP;EAGD,CAND;;EAQAV,MAAM,CAACW,iBAAP,GAA2B,SAASA,iBAAT,CAA2BT,QAA3B,EAAqC;EAC9D,UAAQF,MAAM,CAACI,YAAP,CAAoBF,QAApB,CAAR;EACE,SAAK,KAAL;EACA,SAAK,IAAL;EACA,SAAK,OAAL;EACE,aAAO,OAAP;;EACF,SAAK,KAAL;EACA,SAAK,KAAL;EACA,SAAK,MAAL;EACA,SAAK,KAAL;EACA,SAAK,MAAL;EACA,SAAK,KAAL;EACE,aAAO,OAAP;;EACF,SAAK,KAAL;EACA,SAAK,KAAL;EACA,SAAK,KAAL;EACA,SAAK,KAAL;EACE,aAAO,OAAP;;EACF,SAAK,KAAL;EACE,aAAO,KAAP;;EACF,SAAK,KAAL;EACE,aAAO,KAAP;;EACF,SAAK,KAAL;EACA,SAAK,MAAL;EACA,SAAK,OAAL;EACA,SAAK,QAAL;EACE,aAAO,KAAP;;EACF,SAAK,KAAL;EACA,SAAK,IAAL;EACA,SAAK,QAAL;EACE,aAAO,KAAP;;EACF,SAAK,KAAL;EACE,aAAO,KAAP;;EACF,SAAK,KAAL;EACA,SAAK,MAAL;EACA,SAAK,KAAL;EACA,SAAK,KAAL;EACE,aAAO,MAAP;;EACF,SAAK,KAAL;EACA,SAAK,IAAL;EACE,aAAO,SAAP;;EACF;EACE,aAAO,MAAP;EAzCJ;EA2CD,CA5CD;;EA8CAF,MAAM,CAACY,UAAP,GAAoB,SAASA,UAAT,CAAoBC,OAApB,EAA6BxR,MAA7B,EAAqC;EACvD,UAAQA,MAAR;EACE,SAAK,MAAL;EACA,SAAK,KAAL;EACA,SAAK,KAAL;EACA,SAAK,OAAL;EACA,SAAK,KAAL;EACA,SAAK,SAAL;EACE,aAAO2Q,MAAM,CAACc,cAAP,CAAsBD,OAAtB,CAAP;;EACF;EACE,aAAOb,MAAM,CAACe,gBAAP,CAAwBF,OAAxB,CAAP;EATJ;EAWD,CAZD;;EAcAb,MAAM,CAACc,cAAP,GAAwB,SAASA,cAAT,CAAwBD,OAAxB,EAAiC;EACvD,UAAQA,OAAO,CAACG,QAAhB;EACE,SAAK,QAAL;EACE,aAAO7+B,IAAI,CAAC0+B,OAAO,CAACA,OAAT,CAAX;;EACF;EACE,aAAOA,OAAO,CAACA,OAAf;EAJJ;EAMD,CAPD;;EASAb,MAAM,CAACe,gBAAP,GAA0B,SAASA,gBAAT,CAA0BF,OAA1B,EAAmC;EAC3D,UAAQA,OAAO,CAACG,QAAhB;EACE,SAAK,QAAL;EACE,aAAOz+B,aAAW,CAACs+B,OAAO,CAACA,OAAT,CAAlB;;EACF;EACE,aAAOA,OAAO,CAACA,OAAf;EAJJ;EAMD,CAPD;;EASAb,MAAM,CAACiB,gBAAP,GAA0B,SAASA,gBAAT,CAA0Bf,QAA1B,EAAoCW,OAApC,EAA6C;EACrE,QAAMR,SAAS,GAAGL,MAAM,CAACI,YAAP,CAAoBF,QAApB,CAAlB;EACA,MAAIgB,QAAQ,GAAG,EAAf;;EACA,MAAIb,SAAS,KAAK,KAAd,IAAuBA,SAAS,KAAK,IAArC,IAA6CA,SAAS,KAAK,OAA/D,EAAwE;EACtE,QAAIc,WAAW,GAAGnB,MAAM,CAACc,cAAP,CAAsBD,OAAtB,CAAlB;EACA,QAAIO,MAAM,GAAG5C,OAAO,CAAC2C,WAAD,EAAc;EAChC5C,MAAAA,SAAS,EAAE,IADqB;EAEhCJ,MAAAA,iBAAiB,EAAE;EAFa,KAAd,CAAP,CAGV4B,OAHU,CAGF,CAHE,CAAb;;EAIA,QAAIqB,MAAM,IAAIA,MAAM,CAACxgC,IAAjB,IAAyBwgC,MAAM,CAACxgC,IAAP,CAAYygC,QAAzC,EAAmD;EACjD,UAAI;EACF,YAAIA,QAAQ,GAAGnlC,IAAI,CAACC,KAAL,CAAWilC,MAAM,CAACxgC,IAAP,CAAYygC,QAAvB,CAAf;;EACA,YAAIA,QAAQ,CAACzgC,IAAb,EAAmB;EACjB,iBAAOygC,QAAQ,CAACzgC,IAAhB;EACD;EACF,OALD,CAKE,OAAO4H,CAAP,EAAU;EACV;EACA2Y,QAAAA,OAAO,CAACmC,KAAR,CAAc9a,CAAd;EACD;EACF;EACF;;EACD,SAAO04B,QAAP;EACD,CAtBD;;EC5GA,SAASpuC,OAAT,CAAiBotC,QAAjB,EAA2BW,OAA3B,EAAoC;EAClC,QAAMR,SAAS,GAAGL,IAAM,CAACI,YAAP,CAAoBF,QAApB,CAAlB;EACA,MAAIgB,QAAQ,GAAG,EAAf;;EACA,MAAIb,SAAS,KAAK,KAAd,IAAuBA,SAAS,KAAK,QAAzC,EAAmD;EACjD,QAAIiB,aAAa,GAAGtB,IAAM,CAACe,gBAAP,CAAwBF,OAAxB,CAApB;EACA,QAAIO,MAAM,GAAGG,WAAW,CAACD,aAAD,EAAgB;EAAE1gC,MAAAA,IAAI,EAAE;EAAR,KAAhB,CAAxB;;EACA,QAAIwgC,MAAM,CAAC/iC,MAAP,CAAchK,MAAd,KAAyB,CAA7B,EAAgC;EAC9B6sC,MAAAA,QAAQ,CAACriC,QAAT,GAAoBuiC,MAAM,CAAC/iC,MAAP,CAAc,CAAd,EAAiBhH,IAArC;EACD;EACF;;EACD,SAAO6pC,QAAP;EACD;;AAED,2BAAe;EACbluC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,cAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA;EAJa,CAAf;;ACfA,gCAAe;EACbE,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,mBAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,mDAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,sCAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,8CAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,iCAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,kBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,8BAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,mBAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;MCAAQ,MAAc,GAAG,CACf,KADe,EAEf,KAFe,EAGf,KAHe,EAIf,KAJe,EAKf,KALe,EAMf,KANe,EAOf,KAPe,EAQf,KARe,EASf,KATe,EAUf,KAVe,EAWf,KAXe,EAYf,KAZe;;;;ECGjB,MAAMC,MAAM,GAAGnqC,MAAf;;EAEA,SAASoqC,aAAT,CAAuBC,QAAvB,EAAiC;EAC/B,MAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC;EAChC,UAAM,IAAI/qC,SAAJ,CAAc,wBAAd,CAAN;EACD;;EAED,MAAIgrC,YAAY,GAAG,EAAnB;EACA,MAAI/lC,MAAJ;EACA,MAAIgmC,kBAAJ,CAP+B;;EAU/B,MAAIC,oBAAoB,GAAG;;;EAGzBC,IAAAA,SAAS,EAAE,OAHc;EAIzBC,IAAAA,cAAc,EAAE,YAJS;;;EAOzBC,IAAAA,aAAa,EAAE,WAPU;;;;;;EAazBC,IAAAA,WAAW,EAAE,SAbY;EAczBC,IAAAA,YAAY,EAAE,UAdW;;;EAiBzBC,IAAAA,UAAU,EAAE,QAjBa;EAkBzBC,IAAAA,YAAY,EAAE,UAlBW;EAmBzBC,IAAAA,aAAa,EAAE,WAnBU;EAoBzBC,IAAAA,WAAW,EAAE,SApBY;EAqBzBC,IAAAA,cAAc,EAAE,SArBS;EAsBzBC,IAAAA,SAAS,EAAE,OAtBc;;EAwBzBC,IAAAA,WAAW,EAAE,SAxBY;EAyBzBC,IAAAA,UAAU,EAAE,QAzBa;EA0BzBC,IAAAA,UAAU,EAAE,QA1Ba;EA2BzBC,IAAAA,YAAY,EAAE,UA3BW;EA4BzBC,IAAAA,cAAc,EAAE,YA5BS;;EA8BzBC,IAAAA,UAAU,EAAE,QA9Ba;EA+BzBC,IAAAA,gBAAgB,EAAE;EA/BO,GAA3B,CAV+B;;;;;;;;;;;;;;;;;;;;EAgE/B,MAAIx7B,KAAK,GAAGm6B,QAAQ,CAACl6B,KAAT,CAAe,OAAf,CAAZ;EACA,MAAIw7B,SAAJ;EACA,MAAIC,YAAJ;EACA,MAAIC,0BAAJ;EACA,MAAIC,sBAAJ;EACA,MAAIC,mBAAJ;EAEA,MAAIC,aAAa,GAAG,KAApB;;EAEA,OAAK,IAAIv0B,IAAT,IAAiBvH,KAAjB,EAAwB;EACtB,QAAIuH,IAAI,KAAK,IAAb,EAAmB;EACnB,QAAIw0B,aAAa,GAAGC,gBAAgB,CAACz0B,IAAD,CAApC;EACA,QAAI5R,GAAG,GAAGsmC,UAAU,CAAC10B,IAAD,CAApB;EACA,QAAI20B,QAAQ,GAAGC,YAAY,CAAC50B,IAAD,CAA3B;EACA,QAAI60B,KAAK,GAAGC,SAAS,CAAC90B,IAAD,CAArB;;EAEA,QAAIw0B,aAAa,KAAKzB,oBAAoB,CAACkB,gBAAvC,IAA2DY,KAA/D,EAAsE;EACpEX,MAAAA,SAAS,GAAGM,aAAZ;EACAL,MAAAA,YAAY,GAAG,IAAf;EACD,KAHD,MAGO,IAAIQ,QAAJ,EAAc;EACnBR,MAAAA,YAAY,GAAGK,aAAf;EACD,KAZqB;;;EActB,QAAIx0B,IAAI,CAACpH,IAAL,OAAgB,EAAhB,IAAsB47B,aAAa,KAAK,GAA5C,EAAiD;EAC/C;EACD;;EAED,QAAI,CAACD,aAAD,IAAkBL,SAAS,KAAKnB,oBAAoB,CAACC,SAAzD,EAAoE;;EAElE;EACD;;EAED,YAAQkB,SAAR;EACE,WAAKnB,oBAAoB,CAACC,SAA1B;EACEuB,QAAAA,aAAa,GAAG,IAAhB;EACAQ,QAAAA,UAAU,CAAC/0B,IAAD,CAAV;EACA;;EACF,WAAK+yB,oBAAoB,CAACe,YAA1B;EACEkB,QAAAA,aAAa,CAACh1B,IAAD,EAAOw0B,aAAP,EAAsBpmC,GAAtB,CAAb;EACA;;EACF,WAAK2kC,oBAAoB,CAACiB,UAA1B;EACEiB,QAAAA,WAAW,CAACj1B,IAAD,EAAOw0B,aAAP,CAAX;EACA;;EACF,WAAKzB,oBAAoB,CAACE,cAA1B;EACA,WAAKF,oBAAoB,CAACG,aAA1B;EACA,WAAKH,oBAAoB,CAACI,WAA1B;EACA,WAAKJ,oBAAoB,CAACK,YAA1B;EACE8B,QAAAA,mBAAmB,CAAChB,SAAD,EAAYl0B,IAAZ,EAAkBk0B,SAAS,CAAC/+B,WAAV,EAAlB,CAAnB;EACA;;EACF,WAAK49B,oBAAoB,CAACM,UAA1B;EACE,YAAIc,YAAY,KAAKpB,oBAAoB,CAACO,YAA1C,EAAwD;EACtD4B,UAAAA,mBAAmB,CAACf,YAAD,EAAen0B,IAAf,EAAqB,UAArB,CAAnB;EACD,SAFD,MAEO;EACLk1B,UAAAA,mBAAmB,CAACV,aAAD,EAAgBx0B,IAAhB,EAAsB,QAAtB,CAAnB;EACD;;EACD;;EACF,WAAK+yB,oBAAoB,CAACQ,aAA1B;EACE,YAAIiB,aAAa,KAAKzB,oBAAoB,CAACQ,aAA3C,EAA0D;EACxD,gBAAM4B,GAAG,GAAGroC,MAAM,CAACsoC,UAAP,IAAqB,EAAjC;EACAtoC,UAAAA,MAAM,CAACsoC,UAAP,GAAoBD,GAApB;EACAA,UAAAA,GAAG,CAAC1vC,IAAJ,CAAS,EAAT;EACD;;EACD4vC,QAAAA,cAAc,CAACr1B,IAAD,EAAOm0B,YAAP,CAAd;EACA;;EACF,WAAKpB,oBAAoB,CAACkB,gBAA1B;EACEqB,QAAAA,MAAM;EACN;EAlCJ;EAuCD,GAvI8B;;;EA0I/B,MAAIzC,YAAY,CAACA,YAAY,CAACxtC,MAAb,GAAsB,CAAvB,CAAZ,KAA0CyH,MAA9C,EAAsD;;;EAGpDwoC,IAAAA,MAAM;EACP;;EACD,SAAOzC,YAAP;;EAEA,WAASyC,MAAT,GAAkB;;EAEhBC,IAAAA,iBAAiB,GAFD;;EAIhB1C,IAAAA,YAAY,CAACptC,IAAb,CAAkBqH,MAAlB;EACD;;EAED,WAAS0oC,iBAAT,GAA6B;EAC3B,WAAO1oC,MAAM,CAAC2oC,QAAP,CAAgB3oC,MAAM,CAAC2oC,QAAP,CAAgBpwC,MAAhB,GAAyB,CAAzC,CAAP;EACD;;EAED,WAASkwC,iBAAT,GAA6B;EAC3B,QAAIzoC,MAAM,IAAIA,MAAM,CAAC2oC,QAArB,EAA+B;EAC7B,WAAK,IAAIhsC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqD,MAAM,CAAC2oC,QAAP,CAAgBpwC,MAApC,EAA4CoE,CAAC,EAA7C,EAAiD;EAC/CqD,QAAAA,MAAM,CAAC2oC,QAAP,CAAgBhsC,CAAhB,IAAqBisC,yBAAyB,CAAC5oC,MAAM,CAAC2oC,QAAP,CAAgBhsC,CAAhB,CAAD,CAA9C;EACD;EACF;EACF;;EAED,WAASwrC,WAAT,CAAqBj1B,IAArB,EAA2BxH,GAA3B,EAAgC;EAC9B,QAAIA,GAAG,KAAKu6B,oBAAoB,CAACiB,UAAjC,EAA6C;EAC3C,UAAI/8B,OAAO,GAAG+I,IAAI,CAAChQ,OAAL,CAAa,cAAb,EAA6B,EAA7B,CAAd;EACAlD,MAAAA,MAAM,CAAC8lC,QAAP,IAAmB37B,OAAnB;EACD;EACF;;EAED,WAAS89B,UAAT,CAAoB/0B,IAApB,EAA0B;EACxBlT,IAAAA,MAAM,GAAG;EACP2oC,MAAAA,QAAQ,EAAE,EADH;EAEPptC,MAAAA,IAAI,EAAE,mBAFC;EAGPuqC,MAAAA,QAAQ,EAAE,EAHH;EAIPwC,MAAAA,UAAU,EAAE;EAJL,KAAT;EAMAp1B,IAAAA,IAAI,GAAG21B,eAAe,CAAC5C,oBAAoB,CAACC,SAAtB,EAAiChzB,IAAjC,CAAtB;EACA,UAAMyL,CAAC,GAAGzL,IAAI,CAACjQ,KAAL,CACR,sEADQ,CAAV;EAGA,QAAI6lC,SAAS,GAAGnqB,CAAC,CAAC,CAAD,CAAjB;EACA,QAAIpiB,IAAI,GAAG,CAACoiB,CAAC,CAAC,CAAD,CAAb;EACA,QAAIoqB,YAAY,GAAGpqB,CAAC,CAAC,CAAD,CAApB;EACA,QAAIqqB,QAAQ,GAAGrqB,CAAC,CAAC,CAAD,CAAD,KAAS,UAAxB;EACA,UAAMsqB,GAAG,GAAGjpC,MAAZ;EACA,QAAIkpC,OAAO,GAAG,EAAd;;EACA,QAAI,CAACvqB,CAAC,CAAC,CAAD,CAAN,EAAW;EACTuqB,MAAAA,OAAO,GAAGvqB,CAAC,CAAC,CAAD,CAAX;EACD,KAFD,MAEO;EACLsqB,MAAAA,GAAG,CAACE,eAAJ,GAAsBxqB,CAAC,CAAC,CAAD,CAAvB;EACAuqB,MAAAA,OAAO,GAAGvqB,CAAC,CAAC,CAAD,CAAX;EACD;;EACDsqB,IAAAA,GAAG,CAACD,QAAJ,GAAeA,QAAf;EACAC,IAAAA,GAAG,CAACF,YAAJ,GAAmBA,YAAnB;EACA,UAAMK,SAAS,GAAGF,OAAO,CAACjmC,KAAR,CAAc,0BAAd,CAAlB;EACA,UAAM7L,IAAI,GAAG,IAAIC,IAAJ,EAAb;EACAD,IAAAA,IAAI,CAACiyC,WAAL,CAAiB,CAACD,SAAS,CAAC,CAAD,CAA3B;EACAhyC,IAAAA,IAAI,CAACkyC,WAAL,CAAiB1D,MAAM,CAACz+B,OAAP,CAAeiiC,SAAS,CAAC,CAAD,CAAT,CAAajwC,WAAb,EAAf,CAAjB;EACA/B,IAAAA,IAAI,CAACmyC,OAAL,CAAa,CAACH,SAAS,CAAC,CAAD,CAAvB;EACAhyC,IAAAA,IAAI,CAACoyC,WAAL,CAAiB,EAAjB;EACApyC,IAAAA,IAAI,CAACqyC,UAAL,CAAgB,CAAhB;EACAryC,IAAAA,IAAI,CAACsyC,UAAL,CAAgB,CAAhB;EACAtyC,IAAAA,IAAI,CAACuyC,eAAL,CAAqB,CAArB;EACAV,IAAAA,GAAG,CAAC7xC,IAAJ,GAAWA,IAAI,CAACwyC,WAAL,EAAX;EACAX,IAAAA,GAAG,CAAC1tC,IAAJ,GAAWutC,SAAX;EACAG,IAAAA,GAAG,CAAC1sC,IAAJ,GAAWA,IAAX;EACD;;EAED,WAASssC,eAAT,CAAyBgB,KAAzB,EAAgC32B,IAAhC,EAAsC;EACpCA,IAAAA,IAAI,GAAGA,IAAI,CAAChQ,OAAL,CAAa,MAAb,EAAqB,EAArB,CAAP;;EACA,QAAIgQ,IAAI,CAAC/L,OAAL,CAAa0iC,KAAb,MAAwB,CAA5B,EAA+B;EAC7B32B,MAAAA,IAAI,GAAGA,IAAI,CAAChQ,OAAL,CAAa2mC,KAAb,EAAoB,EAApB,CAAP;EACD;;EACD,WAAO32B,IAAI,CAACpH,IAAL,EAAP;EACD;;EAED,WAASy8B,cAAT,CAAwBr1B,IAAxB,EAA8B42B,OAA9B,EAAuC;EACrC,UAAMC,IAAI,GAAG/pC,MAAM,CAACsoC,UAApB;EACA,QAAI0B,OAAO,GAAGD,IAAI,CAACA,IAAI,CAACxxC,MAAL,GAAc,CAAf,CAAlB;;EACA,QAAI,CAACuxC,OAAL,EAAc;EACZ1B,MAAAA,mBAAmB,CACjBnC,oBAAoB,CAACQ,aADJ,EAEjBvzB,IAFiB,EAGjB,aAHiB,EAIjB82B,OAJiB,CAAnB;EAMD,KAPD,MAOO;EACL5B,MAAAA,mBAAmB,CAAC0B,OAAD,EAAU52B,IAAV,EAAgB42B,OAAO,CAACzhC,WAAR,EAAhB,EAAuC2hC,OAAvC,CAAnB;EACD;EACF;;EAED,WAAS9B,aAAT,CAAuBh1B,IAAvB,EAA6BxH,GAA7B,EAAkCpK,GAAlC,EAAuC;EACrC,QAAI2oC,MAAJ,CADqC;;EAGrC,QAAIv+B,GAAG,KAAKu6B,oBAAoB,CAACe,YAAjC,EAA+C;EAC7CO,MAAAA,sBAAsB,GAAG,IAAzB;EACA;EACD;;EAED,QAAIA,sBAAJ,EAA4B;;EAE1BD,MAAAA,0BAA0B,GAAG4C,yCAAyC,CACpEh3B,IADoE,CAAtE,CAF0B;;EAM1Bq0B,MAAAA,sBAAsB,GAAG,KAAzB;EACD,KAfoC;;;EAkBrC,QAAI4C,kBAAkB,CAACj3B,IAAD,EAAOo0B,0BAAP,CAAtB,EAA0D;;EAExD,UAAIE,mBAAJ,EAAyB;;EAEvB4C,QAAAA,oBAAoB,CAACl3B,IAAI,CAACpH,IAAL,EAAD,CAApB;EACA07B,QAAAA,mBAAmB,GAAG,IAAtB;EACD,OAJD,MAIO;;EAEL,YAAIxB,kBAAJ,EAAwB;;EAEtBA,UAAAA,kBAAkB,CAChBA,kBAAkB,CAACztC,MAAnB,GAA4B,CADZ,CAAlB,IAEK2a,IAAI,CAACpH,IAAL,GAAY5I,OAAZ,CAAoB,IAApB,EAA0B,EAA1B,CAFL;EAGD;;EACDskC,QAAAA,mBAAmB,GAAG,KAAtB;EACD;EACF,KAhBD,MAgBO;;EAEL,UAAI6C,MAAM,CAACn3B,IAAD,CAAV,EAAkB;;;;EAIhB,YAAIw1B,iBAAiB,EAArB,EAAyB;EACvB4B,UAAAA,gBAAgB,CAACp3B,IAAD,CAAhB;EACAs0B,UAAAA,mBAAmB,GAAG,KAAtB;EACD;EACF,OARD,MAQO;;EAEL,YAAIlmC,GAAG,CAAC2B,KAAJ,CAAU,aAAV,CAAJ,EAA8B;EAC5BgnC,UAAAA,MAAM,GAAG,CAAC,CAAV;EACD,SAFD,MAEO;EACLA,UAAAA,MAAM,GAAG,CAAT;EACD;;EAEDM,QAAAA,UAAU;EACV,YAAIC,IAAI,GAAG9B,iBAAiB,EAA5B;EACA8B,QAAAA,IAAI,CAACtuC,IAAL,GAAYwP,GAAZ;EACA8+B,QAAAA,IAAI,CAACP,MAAL,GAAcA,MAAd;EAEAG,QAAAA,oBAAoB,CAAC9oC,GAAD,CAApB;EACAkmC,QAAAA,mBAAmB,GAAG,IAAtB;EACD;EACF;EACF;;EAED,WAAS+C,UAAT,GAAsB;EACpBvqC,IAAAA,MAAM,CAAC2oC,QAAP,CAAgBhwC,IAAhB,CAAqB;EACnB8xC,MAAAA,KAAK,EAAE;EADY,KAArB;EAGD;;EAED,WAASJ,MAAT,CAAgBn3B,IAAhB,EAAsB;EACpB,QAAIw3B,IAAI,GAAG,KAAX;;EAEJ;EACA;;EACI,QAAIx3B,IAAI,CAACpH,IAAL,GAAY81B,MAAZ,CAAmB,CAAnB,EAAsB3+B,KAAtB,CAA4B,IAA5B,CAAJ,EAAuC;;EAErCynC,MAAAA,IAAI,GAAG,IAAP;EACD,KAHD,MAGO,IAAIx3B,IAAI,CAACjQ,KAAL,CAAW,qBAAX,CAAJ,EAAuC;;EAE5CynC,MAAAA,IAAI,GAAG,IAAP;EACD;;EACD,WAAOA,IAAP;EACD;;EAED,WAASN,oBAAT,CAA8BO,MAA9B,EAAsC;EACpCA,IAAAA,MAAM,GAAGA,MAAM,CAAC7+B,IAAP,EAAT;EACA,QAAI8+B,MAAM,GAAG,EAAb;EACAD,IAAAA,MAAM,CAACznC,OAAP,CAAe,QAAf,EAAyB,UAAU9K,MAAV,EAAkB6K,KAAlB,EAAyB;EAChD2nC,MAAAA,MAAM,CAACjyC,IAAP,CAAYsK,KAAZ;EACD,KAFD;EAGA,QAAIunC,IAAI,GAAG9B,iBAAiB,EAA5B;EACA8B,IAAAA,IAAI,CAAC3iC,KAAL,GAAa,CAAC+iC,MAAM,CAAC,CAAD,CAApB;EACAJ,IAAAA,IAAI,CAAC1iC,GAAL,GAAW8iC,MAAM,CAAC,CAAD,CAAN,KAAcxtC,SAAd,GAA0B,CAACwtC,MAAM,CAAC,CAAD,CAAjC,GAAuC,CAACA,MAAM,CAAC,CAAD,CAAzD;EACD;;EAED,WAASN,gBAAT,CAA0Bp3B,IAA1B,EAAgC;EAC9B,QAAI/I,OAAJ,EAAa0gC,OAAb;EAEA1gC,IAAAA,OAAO,GAAG+I,IAAI,CAACpH,IAAL,EAAV;EACA3B,IAAAA,OAAO,GAAGA,OAAO,CAACjH,OAAR,CAAgB,SAAhB,EAA2B,EAA3B,CAAV;EACA2nC,IAAAA,OAAO,GAAG1gC,OAAO,CAACyB,KAAR,CAAc,MAAd,CAAV;EAEA,QAAItK,GAAG,GAAGupC,OAAO,CAAC,CAAD,CAAjB;;EAEA,QAAIvpC,GAAJ,EAAS;EACPA,MAAAA,GAAG,GAAGA,GAAG,CAAC4B,OAAJ,CAAY,KAAZ,EAAmB,GAAnB,CAAN;;EAEA,UAAIgQ,IAAI,CAACjQ,KAAL,CAAW,KAAX,CAAJ,EAAuB;EACrB3B,QAAAA,GAAG,GAAGA,GAAG,CAAC4B,OAAJ,CAAY,MAAZ,EAAoB,EAApB,CAAN;EACD,OAFD,MAEO,IAAI5B,GAAG,CAAC2B,KAAJ,CAAU,QAAV,CAAJ,EAAyB;EAC9B3B,QAAAA,GAAG,GAAG,CAACA,GAAP;EACD;EACF;;EACD,QAAIoK,GAAG,GAAGm/B,OAAO,CAAC,CAAD,CAAjB;EACA,QAAIC,YAAY,GAAGpC,iBAAiB,GAAG+B,KAAvC;;EACA,QAAIK,YAAY,CAACp/B,GAAD,CAAhB,EAAuB;;EAErBo/B,MAAAA,YAAY,CAACp/B,GAAD,CAAZ,CAAkB/S,IAAlB,CAAuB2I,GAAvB;EACD,KAHD,MAGO;;EAELwpC,MAAAA,YAAY,CAACp/B,GAAD,CAAZ,GAAoB,CAACpK,GAAD,CAApB;EACD;;EACD0kC,IAAAA,kBAAkB,GAAG8E,YAAY,CAACp/B,GAAD,CAAjC;EACD;;EAED,WAASi8B,gBAAT,CAA0Bz0B,IAA1B,EAAgC;EAC9B,QAAI3L,GAAJ;EACA2L,IAAAA,IAAI,GAAGA,IAAI,CAACpH,IAAL,EAAP;EAEAvE,IAAAA,GAAG,GAAG2L,IAAI,CAACtH,KAAL,CAAW,OAAX,CAAN;EAEA,WAAOrE,GAAG,CAAC,CAAD,CAAV;EACD;;EAED,WAAS6gC,mBAAT,CAA6ByB,KAA7B,EAAoC32B,IAApC,EAA0C63B,SAA1C,EAAqDjxB,CAArD,EAAwD;EACtDA,IAAAA,CAAC,GAAGA,CAAC,IAAI9Z,MAAT;EACA,QAAIgrC,UAAU,GAAGnC,eAAe,CAACgB,KAAD,EAAQ32B,IAAR,CAAhC;EACA4G,IAAAA,CAAC,CAACixB,SAAD,CAAD,GAAejxB,CAAC,CAACixB,SAAD,CAAD,GAAgB,GAAEjxB,CAAC,CAACixB,SAAD,CAAY,GAA/B,GAAoC,EAAnD;EACAjxB,IAAAA,CAAC,CAACixB,SAAD,CAAD,IAAgBC,UAAhB;EACD;;EAED,WAASpD,UAAT,CAAoB10B,IAApB,EAA0B;EACxB,QAAI3L,GAAJ;;EAEA,QAAI2L,IAAI,CAAC/L,OAAL,CAAa,GAAb,IAAoB,CAAxB,EAA2B;EACzB+L,MAAAA,IAAI,GAAGA,IAAI,CAAChQ,OAAL,CAAa,yBAAb,EAAwC,EAAxC,CAAP;EACAgQ,MAAAA,IAAI,GAAGA,IAAI,CAACpH,IAAL,EAAP;EACA,aAAOoH,IAAP;EACD,KAJD,MAIO;EACL3L,MAAAA,GAAG,GAAG2L,IAAI,CAACtH,KAAL,CAAW,GAAX,CAAN;EACA,aAAOrE,GAAG,CAAC,CAAD,CAAV;EACD;EACF;;EAED,WAASygC,SAAT,CAAmB90B,IAAnB,EAAyB;EACvB,QAAI60B,KAAK,GAAG,KAAZ;;EACA,QAAI70B,IAAI,CAAC+3B,MAAL,CAAY,CAAZ,EAAe,EAAf,EAAmBhoC,KAAnB,CAAyB,QAAzB,CAAJ,EAAwC;EACtC8kC,MAAAA,KAAK,GAAG,IAAR;EACD;;EACD,WAAOA,KAAP;EACD;;EAED,WAASD,YAAT,CAAsB50B,IAAtB,EAA4B;EAC1B,QAAI20B,QAAQ,GAAG,KAAf;;EACA,QAAI30B,IAAI,CAAC+3B,MAAL,CAAY,CAAZ,EAAe,EAAf,EAAmBhoC,KAAnB,CAAyB,aAAzB,CAAJ,EAA6C;EAC3C4kC,MAAAA,QAAQ,GAAG,IAAX;EACD;;EACD,WAAOA,QAAP;EACD;;EAED,WAASe,yBAAT,CAAmC4B,IAAnC,EAAyC;EACvC,QAAIA,IAAI,CAACC,KAAL,CAAW5hC,KAAf,EAAsB;EACpB2hC,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAW5hC,KAAX,CAAiB,CAAjB,CAAZ;EACD,KAFD,MAEO,IAAI2hC,IAAI,CAACC,KAAL,CAAWS,IAAf,EAAqB;EAC1BV,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAWS,IAAX,CAAgB,CAAhB,CAAZ;EACD,KAFM,MAEA,IAAIV,IAAI,CAACC,KAAL,CAAWU,aAAf,EAA8B;EACnCX,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAWU,aAAX,CAAyB,CAAzB,CAAZ;EACD,KAFM,MAEA,IAAIX,IAAI,CAACC,KAAL,CAAWlvC,IAAf,EAAqB;EAC1BivC,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAWlvC,IAAX,CAAgB,CAAhB,CAAZ;EACD,KAFM,MAEA,IAAIivC,IAAI,CAACC,KAAL,CAAWW,QAAf,EAAyB;EAC9BZ,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAWW,QAAX,CAAoB,CAApB,CAAZ;EACD,KAFM,MAEA,IAAIZ,IAAI,CAACC,KAAL,CAAWY,SAAf,EAA0B;EAC/Bb,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAWY,SAAX,CAAqB,CAArB,CAAZ;EACD,KAFM,MAEA,IAAIb,IAAI,CAACC,KAAL,CAAWa,IAAf,EAAqB;EAC1Bd,MAAAA,IAAI,CAACjvC,IAAL,GAAYivC,IAAI,CAACC,KAAL,CAAWa,IAAX,CAAgB,CAAhB,CAAZ;EACD,KAFM,MAEA;EACLd,MAAAA,IAAI,CAACjvC,IAAL,GAAY,kBAAZ;EACD;;EACDivC,IAAAA,IAAI,CAACjvC,IAAL,GAAY,OAAOivC,IAAI,CAACjvC,IAAZ,KAAqB,QAArB,GAAgCivC,IAAI,CAACjvC,IAArC,GAA4CtD,MAAM,CAACuyC,IAAI,CAACjvC,IAAN,CAA9D;EACA,WAAOivC,IAAP;EACD;EACF;;EAED,SAASL,kBAAT,CAA4Bj3B,IAA5B,EAAkCo0B,0BAAlC,EAA8D;EAC5D,MAAIiE,iBAAiB,GAAGrB,yCAAyC,CAACh3B,IAAD,CAAjE;;EACA,MAAIo0B,0BAA0B,KAAKiE,iBAAnC,EAAsD;;;;;;;EAOpD,WAAO,KAAP,CAPoD;EAQrD;;EAED,MAAIC,OAAO,GAAGt4B,IAAI,CAACpH,IAAL,EAAd;;EACA,MAAI0/B,OAAO,CAAC5J,MAAR,CAAe,CAAf,EAAkB3+B,KAAlB,CAAwB,IAAxB,CAAJ,EAAmC;;EAEjC,WAAO,KAAP,CAFiC;EAGlC,GAhB2D;;;EAkB5D,SAAO,IAAP,CAlB4D;;;;;;;;;;;;;;;;EAmC7D;;EAED,SAASinC,yCAAT,CAAmD9xC,MAAnD,EAA2D;EACzD,MAAI6K,KAAK,GAAG,OAAOwoC,IAAP,CAAYrzC,MAAZ,CAAZ;;EACA,MAAI6K,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAOA,KAAK,CAAC,CAAD,CAAL,CAAS1K,MAAhB;EACD,GAFD,MAEO;EACL,WAAO,CAAP;EACD;EACF;;MAEDqJ,GAAc,GAAGikC;;;AC3djB,sBAAe;EACbxkC,EAAAA,IAAI,CAACqqC,OAAD,EAAUtH,QAAV,EAAoB;EACtB,QAAIQ,SAAS,GAAGV,IAAM,CAACC,WAAP,CAAmBC,QAAnB,CAAhB;EAEA,WAAOsH,OAAO,CAACrqC,IAAR,CAAcqqC,OAAD,IAAa;EAC/B,aAAOxH,IAAM,CAACC,WAAP,CAAmBD,IAAM,CAACM,WAAP,CAAmBkH,OAAnB,CAAnB,MAAoD9G,SAA3D;EACD,KAFM,CAAP;EAGD,GAPY;;EASbc,EAAAA,WAAW,CAACtB,QAAD,EAAW;EACpB,WAAOF,IAAM,CAACW,iBAAP,CAAyBT,QAAzB,CAAP;EACD,GAXY;;EAabptC,EAAAA,OAAO,CAACotC,QAAD,EAAWW,OAAX,EAAoB;EACzB,QAAIM,WAAW,GAAGnB,IAAM,CAACc,cAAP,CAAsBD,OAAtB,CAAlB;EACA,QAAI4G,QAAJ;EACA,UAAMrG,MAAM,GAAGsG,aAAa,CAACvG,WAAD,CAA5B;EACAsG,IAAAA,QAAQ,GAAG;EACT1C,MAAAA,GAAG,EAAE3D,MAAM,CAACp/B,GAAP,CAAY4Y,CAAD,IAAOA,CAAC,CAAC+sB,cAApB;EADI,KAAX;EAGA,WAAOF,QAAP;EACD,GArBY;;EAuBbz0C,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,SAAZ;EAvBM,CAAf;;ACJA,sBAAe;EACbA,EAAAA,KAAK,EAAE,CAAC,SAAD,CADM;;EAEbD,EAAAA,QAAQ,GAAG;EACT,WAAO;EACL60C,MAAAA,WAAW,EAAE,EADR;EAELj0C,MAAAA,KAAK,EAAE,EAFF;EAGL0D,MAAAA,IAAI,EAAE,EAHD;EAILwwC,MAAAA,EAAE,EAAE,EAJC;EAKLC,MAAAA,OAAO,EAAE,EALJ;EAMLC,MAAAA,EAAE,EAAE,CANC;EAOLC,MAAAA,OAAO,EAAE,EAPJ;EAQLpnC,MAAAA,IAAI,EAAE,EARD;EASLghC,MAAAA,QAAQ,EAAE,EATL;EAULvE,MAAAA,IAAI,EAAE;EAVD,KAAP;EAYD;;EAfY,CAAf;;ACEA,4BAAe;EACbrqC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,eAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,kBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,oBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,OAAD,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW;EAHP,CAAf;;ACAA,iBAAe;EACb3tC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,IAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,uBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,UAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,iBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,IAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,mBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,MAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ECFA;EACO,MAAMgH,UAAU,GAAG;EACxBC,EAAAA,KAAK,EAAE;EACLC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADA;EASLozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,IAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATJ;EAiBLqzC,IAAAA,GAAG,EAAE,CACH;EACEJ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,IAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CAjBA;EAyBLszC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAzBR;EAiCLuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjCJ;EAyCLwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAzCT;EAiDLyzC,IAAAA,OAAO,EAAE,CACP;EACER,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjDJ;EAyDL,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CAzDjB;EAiEL,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAjEtB;EA+EL0zC,IAAAA,IAAI,EAAE,CACJ;EACET,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADI,EAOJ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPI,EAaJ;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbI,EAmBJ;EACEizC,MAAAA,MAAM,EAAE,WADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAnBI,CA/ED;EAyGL2zC,IAAAA,UAAU,EAAE,CACV;EACEV,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,CAzGP;EAiHL4zC,IAAAA,WAAW,EAAE,CACX;EACEX,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAjHR;EAyHL,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CAzHjB;EAiIL6zC,IAAAA,eAAe,EAAE,CACf;EACEZ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAjIZ;EAyIL8zC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CAzIV;EAuJL+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAvJJ;EA2KL,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CA3KlB;EAyLLg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAzLd;EA6MLi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CA7Md;EAiOLk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CAjOf;EAyOLm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAzOJ;EAiPLo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAjPJ;EAqQLq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CArQV;EAyRLs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CAzRhB;EA6SLu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CA7SZ;EAqTL,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,MAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CArTP;EAmUL,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CAnUP;EAiVLw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CAjVF;EAyVLy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,CAzVL;EAuWL00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAvWT;EA+WL,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,EAOX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPW,CA/WR;EA6XL,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CA7XT;EA2YL20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CA3YL;EA+ZL40C,IAAAA,gBAAgB,EAAE,CAChB;EACE3B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADgB,CA/Zb;EAuaL60C,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CAvaZ;EAqbL80C,IAAAA,OAAO,EAAE,CACP;EACE7B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,SADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CArbJ;EAycL+0C,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EAzcV,GADiB;EAydxB,cAAY;EACVgzC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADK;EASVozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATC;EAiBVqzC,IAAAA,GAAG,EAAE,CACH;EACEJ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CAjBK;EAyBVszC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAzBH;EAiCVuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjCC;EAyCVwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAzCJ;EAiDVyzC,IAAAA,OAAO,EAAE,CACP;EACER,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjDC;EAyDV,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CAzDZ;EAiEV,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAjEjB;EA+EV0zC,IAAAA,IAAI,EAAE,CACJ;EACET,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADI,EAOJ;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPI,EAaJ;EACEizC,MAAAA,MAAM,EAAE,WADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbI,CA/EI;EAmGV2zC,IAAAA,UAAU,EAAE,CACV;EACEV,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,CAnGF;EA2GV4zC,IAAAA,WAAW,EAAE,CACX;EACEX,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CA3GH;EAmHV,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CAnHZ;EA2HV6zC,IAAAA,eAAe,EAAE,CACf;EACEZ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CA3HP;EAmIV8zC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CAnIL;EAiJV+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAjJC;EAqKV,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CArKb;EAmLVg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAnLT;EAuMVi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAvMT;EA2NVk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CA3NV;EAmOVm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAnOC;EA2OVo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA3OC;EA+PVq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CA/PL;EAmRVs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CAnRX;EAuSVu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAvSP;EA+SV,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,MAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CA/SF;EA6TV,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CA7TF;EA2UVw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CA3UG;EAmVVy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,CAnVA;EAiWV00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAjWJ;EAyWV,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,EAOX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPW,CAzWH;EAuXV,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CAvXJ;EAqYV20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CArYA;EAyZV40C,IAAAA,gBAAgB,EAAE,CAChB;EACE3B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADgB,CAzZR;EAiaV60C,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CAjaP;EA+aV80C,IAAAA,OAAO,EAAE,CACP;EACE7B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,SADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA/aC;EAmcV+0C,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EAncL,GAzdY;EA26BxBg1C,EAAAA,IAAI,EAAE;EACJhC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADD;EASJozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,OAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATL;EAiBJqzC,IAAAA,GAAG,EAAE,CACH;EACEJ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CAjBD;EAyBJszC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAzBT;EAiCJuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjCL;EAyCJwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAzCV;EAiDJyzC,IAAAA,OAAO,EAAE,CACP;EACER,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjDL;EAyDJ,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,EAOpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPoB,CAzDlB;EAuEJ,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAvEvB;EAqFJ0zC,IAAAA,IAAI,EAAE,CACJ;EACET,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADI,EAOJ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPI,EAaJ;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbI,EAmBJ;EACEizC,MAAAA,MAAM,EAAE,WADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAnBI,CArFF;EA+GJ2zC,IAAAA,UAAU,EAAE,CACV;EACEV,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,CA/GR;EAuHJ4zC,IAAAA,WAAW,EAAE,CACX;EACEX,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAvHT;EA+HJ,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CA/HlB;EAuIJ6zC,IAAAA,eAAe,EAAE,CACf;EACEZ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAvIb;EA+IJ8zC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CA/IX;EA6JJ+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA7JL;EAiLJ,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CAjLnB;EA+LJg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CA/Lf;EAmNJi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAnNf;EAuOJk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CAvOhB;EA+OJm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CA/OL;EAuPJo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAvPL;EA2QJq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CA3QX;EA+RJs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CA/RjB;EAmTJu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAnTb;EA2TJ,gBAAY,EA3TR;EA4TJ,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CA5TR;EA0UJw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CA1UH;EAkVJy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,CAlVN;EAgWJ00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAhWV;EAwWJ,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,EAOX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPW,CAxWT;EAsXJ,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CAtXV;EAoYJ20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CApYN;EAwZJ40C,IAAAA,gBAAgB,EAAE,EAxZd;EAyZJC,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CAzZb;EAuaJ80C,IAAAA,OAAO,EAAE,CACP;EACE7B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,SADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAvaL;EA2bJ+0C,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EA3bX,GA36BkB;EAq3CxBi1C,EAAAA,IAAI,EAAE;EACJjC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADD;EASJozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATL;EAiBJqzC,IAAAA,GAAG,EAAE,CACH;EACEJ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CAjBD;EAyBJszC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAzBT;EAiCJuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjCL;EAyCJwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAzCV;EAiDJyzC,IAAAA,OAAO,EAAE,CACP;EACER,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjDL;EAyDJ,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,EAOpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPoB,CAzDlB;EAuEJ,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAvEvB;EAqFJ0zC,IAAAA,IAAI,EAAE,CACJ;EACET,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADI,EAOJ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPI,EAaJ;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbI,EAmBJ;EACEizC,MAAAA,MAAM,EAAE,WADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAnBI,CArFF;EA+GJ2zC,IAAAA,UAAU,EAAE,CACV;EACEV,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,CA/GR;EAuHJ4zC,IAAAA,WAAW,EAAE,CACX;EACEX,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAvHT;EA+HJ,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CA/HlB;EAuIJ6zC,IAAAA,eAAe,EAAE,CACf;EACEZ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAvIb;EA+IJ8zC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CA/IX;EA6JJ+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA7JL;EAiLJ,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CAjLnB;EA+LJg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CA/Lf;EAmNJi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAnNf;EAuOJk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CAvOhB;EA+OJm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CA/OL;EAuPJo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,CAvPL;EAqQJq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CArQX;EAyRJs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CAzRjB;EA6SJu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CA7Sb;EAqTJ,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,MAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CArTR;EAmUJ,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CAnUR;EAiVJw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CAjVH;EAyVJy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,CAzVN;EAiWJ00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAjWV;EAyWJ,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,EAOX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPW,CAzWT;EAuXJ,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CAvXV;EAqYJ20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CArYN;EAyZJ40C,IAAAA,gBAAgB,EAAE,CAChB;EACE3B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADgB,CAzZd;EAiaJ60C,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CAjab;EA+aJ80C,IAAAA,OAAO,EAAE,CACP;EACE7B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,SADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA/aL;EAmcJ+0C,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EAncX,GAr3CkB;EAu0DxBk1C,EAAAA,KAAK,EAAE;EACLlC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADA;EASLozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATJ;EAiBLqzC,IAAAA,GAAG,EAAE,CACH;EACEJ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CAjBA;EAyBLszC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAzBR;EAiCLuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjCJ;EAyCLwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAzCT;EAiDLyzC,IAAAA,OAAO,EAAE,CACP;EACER,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjDJ;EAyDL,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,EAOpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPoB,CAzDjB;EAuEL,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAvEtB;EAqFL0zC,IAAAA,IAAI,EAAE,CACJ;EACET,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADI,EAOJ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPI,EAaJ;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbI,EAmBJ;EACEizC,MAAAA,MAAM,EAAE,WADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAnBI,CArFD;EA+GL2zC,IAAAA,UAAU,EAAE,CACV;EACEV,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,CA/GP;EAuHL4zC,IAAAA,WAAW,EAAE,CACX;EACEX,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAvHR;EA+HL,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CA/HjB;EAuIL6zC,IAAAA,eAAe,EAAE,CACf;EACEZ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAvIZ;EA+IL8zC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CA/IV;EA6JL+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA7JJ;EAiLL,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CAjLlB;EA+LLg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CA/Ld;EAmNLi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAnNd;EAuOLk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CAvOf;EA+OLm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CA/OJ;EAuPLo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAvPJ;EA2QLq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CA3QV;EA+RLs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CA/RhB;EAmTLu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAnTZ;EA2TL,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,MAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CA3TP;EAyUL,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CAzUP;EAuVLw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CAvVF;EA+VLy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,CA/VL;EA6WL00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CA7WT;EAqXL,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,EAOX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPW,CArXR;EAmYL,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CAnYT;EAiZL20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CAjZL;EAqaL40C,IAAAA,gBAAgB,EAAE,CAChB;EACE3B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADgB,CArab;EA6aL60C,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CA7aZ;EA2bL80C,IAAAA,OAAO,EAAE,CACP;EACE7B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,SADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CA3bJ;EA+cL+0C,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EA/cV,GAv0DiB;EAqyExBm1C,EAAAA,KAAK,EAAE;EACLnC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADA;EASLozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATJ;EAiBLqzC,IAAAA,GAAG,EAAE,CACH;EACEJ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CAjBA;EAyBLszC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAzBR;EAiCLuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjCJ;EAyCLwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAzCT;EAiDLyzC,IAAAA,OAAO,EAAE,CACP;EACER,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAjDJ;EAyDL,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CAzDjB;EAiEL,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAjEtB;EA+EL0zC,IAAAA,IAAI,EAAE,CACJ;EACET,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADI,EAOJ;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPI,EAaJ;EACEizC,MAAAA,MAAM,EAAE,WADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbI,CA/ED;EAmGL2zC,IAAAA,UAAU,EAAE,CACV;EACEV,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,CAnGP;EA2GL4zC,IAAAA,WAAW,EAAE,CACX;EACEX,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CA3GR;EAmHL,0BAAsB,CACpB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CAnHjB;EA2HL6zC,IAAAA,eAAe,EAAE,CACf;EACEZ,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CA3HZ;EAmIL8zC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CAnIV;EAiJL+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAjJJ;EAqKL,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CArKlB;EAmLLg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAnLd;EAuMLi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAvMd;EA2NLk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CA3Nf;EAmOLm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAnOJ;EA2OLo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,CA3OJ;EAyPLq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CAzPV;EA6QLs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CA7QhB;EAiSLu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CAjSZ;EAySL,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,MAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CAzSP;EAuTL,gBAAY,CACV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADU,EAOV;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPU,CAvTP;EAqULw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CArUF;EA6ULy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,CA7UL;EAqVL00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CArVT;EA6VL,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,EAOX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPW,CA7VR;EA2WL,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CA3WT;EAyXL20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CAzXL;EA6YL40C,IAAAA,gBAAgB,EAAE,CAChB;EACE3B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADgB,CA7Yb;EAqZL60C,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CArZZ;EAmaL80C,IAAAA,OAAO,EAAE,CACP;EACE7B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,SADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CAnaJ;EAubL+0C,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EAvbV,GAryEiB;EA2uFxBo1C,EAAAA,GAAG,EAAE;EACHpC,IAAAA,GAAG,EAAE,CACH;EACEC,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADG,CADF;EASHozC,IAAAA,OAAO,EAAE,CACP;EACEH,MAAAA,MAAM,EAAE,GADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,EAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CATN;EAiBHqzC,IAAAA,GAAG,EAAE,EAjBF;EAkBHC,IAAAA,WAAW,EAAE,CACX;EACEL,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAlBV;EA0BHuzC,IAAAA,OAAO,EAAE,CACP;EACEN,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CA1BN;EAkCHwzC,IAAAA,YAAY,EAAE,CACZ;EACEP,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CAlCX;EA0CHyzC,IAAAA,OAAO,EAAE,EA1CN;EA2CH,0BAAsB,CACpB;EACER,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADoB,CA3CnB;EAmDH,+BAA2B,CACzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADyB,EAOzB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPyB,CAnDxB;EAiEH0zC,IAAAA,IAAI,EAAE,EAjEH;EAkEHC,IAAAA,UAAU,EAAE,EAlET;EAmEHC,IAAAA,WAAW,EAAE,EAnEV;EAoEH,0BAAsB,EApEnB;EAqEHC,IAAAA,eAAe,EAAE,EArEd;EAsEHC,IAAAA,aAAa,EAAE,CACb;EACEb,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,CAtEZ;EAoFH+zC,IAAAA,OAAO,EAAE,CACP;EACEd,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,EAaP;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbO,CApFN;EAwGH,2BAAuB,CACrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADqB,EAOrB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPqB,CAxGpB;EAsHHg0C,IAAAA,iBAAiB,EAAE,CACjB;EACEf,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CAtHhB;EA0IHi0C,IAAAA,iBAAiB,EAAE,CACjB;EACEhB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADiB,EAOjB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPiB,EAajB;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbiB,CA1IhB;EA8JHk0C,IAAAA,kBAAkB,EAAE,CAClB;EACEjB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADkB,CA9JjB;EAsKHm0C,IAAAA,OAAO,EAAE,CACP;EACElB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,CAtKN;EA8KHo0C,IAAAA,OAAO,EAAE,CACP;EACEnB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADO,EAOP;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPO,CA9KN;EA4LHq0C,IAAAA,aAAa,EAAE,CACb;EACEpB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa,EAab;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAba,CA5LZ;EAgNHs0C,IAAAA,mBAAmB,EAAE,CACnB;EACErB,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADmB,EAOnB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPmB,EAanB;EACEizC,MAAAA,MAAM,EAAE,QADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbmB,CAhNlB;EAoOHu0C,IAAAA,eAAe,EAAE,CACf;EACEtB,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,CApOd;EA4OH,gBAAY,EA5OT;EA6OH,gBAAY,EA7OT;EA8OHw0C,IAAAA,KAAK,EAAE,CACL;EACEvB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,GAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADK,CA9OJ;EAsPHy0C,IAAAA,QAAQ,EAAE,CACR;EACExB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,CAtPP;EA8PH00C,IAAAA,YAAY,EAAE,CACZ;EACEzB,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,CA9PX;EAsQH,iBAAa,CACX;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADW,CAtQV;EA8QH,kBAAc,CACZ;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADY,EAOZ;EACEizC,MAAAA,MAAM,EAAE,IADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,KAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPY,CA9QX;EA4RH20C,IAAAA,QAAQ,EAAE,CACR;EACE1B,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADQ,EAOR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPQ,EAaR;EACEizC,MAAAA,MAAM,EAAE,OADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAbQ,CA5RP;EAgTH40C,IAAAA,gBAAgB,EAAE,EAhTf;EAiTHC,IAAAA,eAAe,EAAE,CACf;EACE5B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADe,EAOf;EACEizC,MAAAA,MAAM,EAAE,MADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPe,CAjTd;EA+TH80C,IAAAA,OAAO,EAAE,EA/TN;EAgUHC,IAAAA,aAAa,EAAE,CACb;EACE9B,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KADa,EAOb;EACEizC,MAAAA,MAAM,EAAE,KADV;EAEEC,MAAAA,QAAQ,EAAE,CAFZ;EAGEC,MAAAA,YAAY,EAAE,GAHhB;EAIEnzC,MAAAA,KAAK,EAAE;EAJT,KAPa;EAhUZ;EA3uFmB,CAAnB;;ECCP,MAAMq1C,OAAO,GAAG,CAAC,SAAD,EAAY,KAAZ,EAAmB,KAAnB,CAAhB;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASC,qBAAT,CAA+BC,QAA/B,EAAuD;EAAA,MAAdtqC,OAAc,uEAAJ,EAAI;EAC5D,MAAI;EAAEmoC,IAAAA,OAAO,GAAG,EAAZ;EAAgBjb,IAAAA,KAAK,GAAG,KAAxB;EAA+Bqd,IAAAA,MAAM,GAAG;EAAxC,MAAkDvqC,OAAtD;EACAmoC,EAAAA,OAAO,GAAGA,OAAO,CAACpkC,WAAR,EAAV;EACA,MAAIokC,OAAO,KAAK,UAAhB,EAA4BA,OAAO,GAAG,MAAV;EAC5B,MAAIA,OAAO,KAAK,MAAhB,EAAwBA,OAAO,GAAG,OAAV;EACxB,MAAIqC,iBAAiB,GAAG3C,UAAU,CAACM,OAAD,CAAlC;;EACA,MAAIqC,iBAAJ,EAAuB;EACrB,SAAK,IAAIC,QAAT,IAAqBL,OAArB,EAA8B;EAC5B,UAAInzC,IAAI,GAAGwzC,QAAQ,CAAC1mC,WAAT,EAAX;EACA,UAAI2mC,cAAc,GAAGF,iBAAiB,CAACvzC,IAAD,CAAtC;EACA0zC,MAAAA,aAAa,CAACL,QAAD,EAAWI,cAAX,EAA2B;EACtCxd,QAAAA,KADsC;EAEtCqd,QAAAA,MAFsC;EAGtCtzC,QAAAA;EAHsC,OAA3B,CAAb;EAKD;EACF;;EACD,SAAOqzC,QAAP;EACD;;EAED,SAASK,aAAT,CAAuBL,QAAvB,EAAiCG,QAAjC,EAA2CzqC,OAA3C,EAAoD;EAClD,MAAI;EAAE/I,IAAAA,IAAF;EAAQi2B,IAAAA,KAAR;EAAeqd,IAAAA;EAAf,MAA0BvqC,OAA9B;EACA,MAAIjC,CAAJ,EAAO6sC,SAAP,EAAkBC,UAAlB;EACA,MAAIxyC,CAAC,GAAGoyC,QAAQ,CAACx2C,MAAjB;;EACA,SAAOoE,CAAC,EAAR,EAAY;EACV0F,IAAAA,CAAC,GAAGusC,QAAQ,CAACr2C,MAAb;;EACA,WAAO8J,CAAC,EAAR,EAAY;EACV,UAAI,CAACusC,QAAQ,CAACvsC,CAAD,CAAR,CAAY+sC,UAAjB,EAA6B;EAC3BF,QAAAA,SAAS,GAAG1d,KAAK,GAAGod,QAAQ,CAACvsC,CAAD,CAAR,CAAYzE,KAAhC;EACAuxC,QAAAA,UAAU,GAAG7rC,IAAI,CAACC,GAAL,CAASwrC,QAAQ,CAACpyC,CAAD,CAAR,CAAYtD,KAAZ,GAAoBu1C,QAAQ,CAACvsC,CAAD,CAAR,CAAY4G,CAAzC,CAAb;;EACA,YAAIkmC,UAAU,GAAGD,SAAjB,EAA4B;EAC1B;EACA,cAAIL,MAAJ,EAAY;EACVD,YAAAA,QAAQ,CAACpmB,MAAT,CAAgBnmB,CAAhB,EAAmB,CAAnB;EACD,WAFD,MAEO;EACLusC,YAAAA,QAAQ,CAACvsC,CAAD,CAAR,CAAYk/B,IAAZ,GAAmBhmC,IAAnB;EACD;EACF;EACF;EACF;EACF;EACF;;ECrDM,MAAM8zC,qBAAmB,GAAG,CAAC,CAAD,GAAK,IAAI,CAAC,GAAtC;EACA,MAAMC,kBAAgB,GAAG,IAAI,CAAC,IAAL,CAAU,IAAI,CAAC,EAAL,GAAU,IAAI,CAAC,GAAzB,CAAzB;EACA,MAAMC,YAAU,GAAG,IAAI,CAAC,IAAL,CAAU,CAAV,CAAnB;EACA,MAAMC,WAAS,GAAG,IAAI,CAAC,IAAL,CAAU,IAAI,IAAI,CAAC,GAAnB,CAAlB;EACA,MAAMC,qBAAmB,GAAG,IAAI,CAAC,IAAL,CAAU,IAAI,IAAI,CAAC,GAAnB,IAA0B,CAAtD;;ECJP;EACA;EAEA;EAEc,SAAUC,QAAV,CAAiB,CAAjB,EAA0B;EACtC,MAAI,CAAC,GAAG,KAAR;EACA,MAAI,CAAC,KAAK,CAAV,EAAa,OAAO,CAAP;EACb,MAAI,aAAa,GAAG,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAG,CAAjB,CAApB;EACA,MAAI,aAAa,GAAG,aAAa,GAAG,CAAhB,GAAoB,KAAK,IAAI,CAAC,EAAL,GAAU,CAAf,CAAxC;EACA,MAAI,SAAS,GAAG,IAAI,CAAC,IAAL,CAAU,aAAa,IAAI,CAAjB,GAAqB,aAAa,GAAG,CAA/C,CAAhB;EACA,MAAI,UAAU,GAAG,IAAI,CAAC,IAAL,CAAU,SAAS,GAAG,aAAtB,CAAjB;EACA,SAAO,UAAU,IAAI,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAY,CAAC,CAAjB,CAAjB;EACD;;ECRK,MAAgB,OAAhB,CAAuB;;ECmDvB,MAAOC,UAAP,SAAwB,OAAxB,CAA+B;EAWnC,EAAA,WAAA,GAAqD;EAAA,QAAlC,OAAkC,uEAAF,EAAE;EACnD;EACA,UAAM;EAAE,MAAA,IAAI,GAAG,GAAT;EAAc,MAAA,EAAd;EAAkB,MAAA;EAAlB,QAA6B,OAAnC;EAEA,SAAK,IAAL,GAAY,EAAE,GAAGC,aAAW,CAAC,IAAI,EAAL,CAAd,GAAyB,IAAvC;EACA,SAAK,MAAL,GACE,MAAM,KAAK,SAAX,GACI,IAAI,CAAC,IAAL,CAAU,CAACP,qBAAD,GAAuB,IAAI,CAAC,EAAtC,IAA4C,KAAK,IADrD,GAEI,MAHN;EAID;;EAEM,EAAA,WAAW,GAAiB;EAAA,QAAhB,IAAgB,uEAAT,KAAK,IAAI;EACjC,WAAOQ,aAAW,CAAC,IAAD,CAAlB;EACD;;EAEM,EAAA,WAAW,CAAC,KAAD,EAAc;EAC9B,WAAOD,aAAW,CAAC,KAAD,CAAlB;EACD;;EAEM,EAAA,GAAG,CAAC,CAAD,EAAU;EAClB,WAAOE,KAAG,CAAC,CAAD,EAAI,KAAK,IAAT,CAAV;EACD;;EAEM,EAAA,OAAO,GAAA;EACZ,WAAOC,SAAO,CAAC;EAAE,MAAA,IAAI,EAAE,KAAK,IAAb;EAAmB,MAAA,MAAM,EAAE,KAAK;EAAhC,KAAD,CAAd;EACD;;EAEM,EAAA,SAAS,CAAC,IAAD,EAAc;EAC5B,WAAOC,WAAS,CAAC,IAAD,CAAhB;EACD;;EAEM,EAAA,OAAO,GAA6B;EAAA,QAA5B,OAA4B,uEAAF,EAAE;EACzC,UAAM;EAAE,MAAA,MAAF;EAAU,MAAA;EAAV,QAAqB,OAA3B;EACA,WAAOC,SAAO,CAAC;EAAE,MAAA,IAAI,EAAE,KAAK,IAAb;EAAmB,MAAA,MAAM,EAAE,KAAK,MAAhC;EAAwC,MAAA,MAAxC;EAAgD,MAAA;EAAhD,KAAD,CAAd;EACD;;EA7CkC;EA+CrC;;;EAGG;;EACG,SAAUH,KAAV,CAAc,CAAd,EAAyB,IAAzB,EAAqC;EACzC,SAAO,IAAI,CAAC,GAAL,CAAST,qBAAmB,GAAG,IAAI,CAAC,GAAL,CAAS,CAAC,GAAG,IAAb,EAAmB,CAAnB,CAA/B,CAAP;EACD;EAED;;;;EAIG;;EACG,SAAUO,aAAV,CAAsB,KAAtB,EAAmC;EACvC,SAAO,KAAK,GAAGJ,WAAf;EACD;EAED;;;;;EAKG;;EACG,SAAUK,aAAV,CAAsB,IAAtB,EAAkC;EACtC,SAAO,IAAI,GAAGL,WAAd;EACD;EAED;;;EAGG;;EAEG,SAAUO,SAAV,CAAkB,OAAlB,EAAyC;EAC7C,MAAI;EAAE,IAAA,IAAF;EAAQ,IAAA,EAAR;EAAY,IAAA,MAAM,GAAG;EAArB,MAA2B,OAA/B;EAEA,MAAI,EAAJ,EAAQ,IAAI,GAAGH,aAAW,CAAC,IAAI,EAAL,CAAlB;;EAER,MAAI,IAAI,KAAK,SAAb,EAAwB;EACtB,UAAM,IAAI,KAAJ,CAAU,mCAAV,CAAN;EACD;;EAED,SAAQ,MAAM,GAAGN,kBAAT,GAA4B,IAA7B,GAAqC,CAA5C;EACD;EAED;;;;EAIG;;EACG,SAAUU,WAAV,GAAiC;EAAA,MAAb,IAAa,uEAAN,MAAM;EACrC,SAAO,IAAI,CAAC,IAAL,CAAU,CAAV,IAAeN,QAAM,CAAC,IAAD,CAA5B;EACD;EAED;;;EAGG;;EAEG,SAAUO,SAAV,GAA8C;EAAA,MAA5B,OAA4B,uEAAF,EAAE;EAClD,MAAI;EAAE,IAAA,MAAF;EAAU,IAAA,MAAM,GAAGD,WAAS,EAA5B;EAAgC,IAAA,IAAI,GAAG,GAAvC;EAA4C,IAAA,EAA5C;EAAgD,IAAA;EAAhD,MAA2D,OAA/D;EACA,MAAI,EAAJ,EAAQ,IAAI,GAAGJ,aAAW,CAAC,IAAI,EAAL,CAAlB;;EAER,MAAI,CAAC,MAAL,EAAa;EACX,IAAA,MAAM,GAAG,IAAI,CAAC,IAAL,CAAU,CAACP,qBAAD,GAAuB,IAAI,CAAC,EAAtC,IAA4C,IAArD;EACD;;EAED,MAAI,CAAC,MAAL,EAAa;EACX,IAAA,MAAM,GAAG,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,IAAL,CAAU,IAAI,GAAG,MAAjB,CAAT,EAAmC,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,EAAZ,IAAkB,CAArD,CAAT;EACA,QAAI,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsB,MAAM;EAC7B;;EAED,QAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAV,IAAe,CAA9B;EACA,QAAM,IAAI,GAAG,IAAI,YAAJ,CAAiB,MAAjB,CAAb;;EACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,IAAI,MAArB,EAA6B,CAAC,EAA9B,EAAkC;EAChC,IAAA,IAAI,CAAC,CAAD,CAAJ,GAAUS,KAAG,CAAC,CAAC,GAAG,MAAL,EAAa,IAAb,CAAH,GAAwB,MAAlC;EACA,IAAA,IAAI,CAAC,MAAM,GAAG,CAAT,GAAa,CAAd,CAAJ,GAAuB,IAAI,CAAC,CAAD,CAA3B;EACD;;EAED,SAAO,IAAP;EACD;;EC7IK,MAAOI,YAAP,SAA0B,OAA1B,CAAiC;EAWrC,EAAA,WAAA,GAAuD;EAAA,QAApC,OAAoC,uEAAF,EAAE;EACrD;EACA,UAAM;EAAE,MAAA,IAAI,GAAG,GAAT;EAAc,MAAA;EAAd,QAAyB,OAA/B;EAEA,SAAK,IAAL,GAAY,IAAZ;EACA,SAAK,MAAL,GAAc,MAAM,KAAK,SAAX,GAAuB,IAAI,IAAI,CAAC,EAAT,GAAc,IAArC,GAA4C,MAA1D;EACD;;EAEM,EAAA,WAAW,GAAiB;EAAA,QAAhB,IAAgB,uEAAT,KAAK,IAAI;EACjC,WAAOL,aAAW,CAAC,IAAD,CAAlB;EACD;;EAEM,EAAA,WAAW,CAAC,KAAD,EAAc;EAC9B,WAAOD,aAAW,CAAC,KAAD,CAAlB;EACD;;EAEM,EAAA,GAAG,CAAC,CAAD,EAAU;EAClB,WAAOE,KAAG,CAAC,CAAD,EAAI,KAAK,IAAT,CAAV;EACD;;EAEM,EAAA,OAAO,GAAA;EACZ,WAAOC,SAAO,CAAC;EAAE,MAAA,IAAI,EAAE,KAAK,IAAb;EAAmB,MAAA,MAAM,EAAE,KAAK;EAAhC,KAAD,CAAd;EACD;;EAEM,EAAA,SAAS,CAAC,IAAD,EAAc;EAC5B,WAAOC,WAAS,CAAC,IAAD,CAAhB;EACD;;EAEM,EAAA,OAAO,GAA6B;EAAA,QAA5B,OAA4B,uEAAF,EAAE;EACzC,UAAM;EAAE,MAAA,MAAF;EAAU,MAAA;EAAV,QAAqB,OAA3B;EACA,WAAOC,SAAO,CAAC;EAAE,MAAA,IAAI,EAAE,KAAK,IAAb;EAAmB,MAAA,MAAM,EAAE,KAAK,MAAhC;EAAwC,MAAA,MAAxC;EAAgD,MAAA;EAAhD,KAAD,CAAd;EACD;;EA1CoC;EA6CvC;;;;;EAKG;;EACG,SAAUH,KAAV,CAAc,CAAd,EAAyB,IAAzB,EAAqC;EACzC,SAAO,IAAI,CAAC,GAAL,CAAS,IAAT,EAAe,CAAf,KAAqB,IAAI,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,CAAZ,CAAJ,GAAqB,IAAI,CAAC,GAAL,CAAS,IAAT,EAAe,CAAf,CAA1C,CAAP;EACD;EAED;;;;;EAKG;;EACG,SAAUF,aAAV,CAAsB,KAAtB,EAAmC;EACvC,SAAO,KAAK,GAAGL,YAAf;EACD;EAED;;;;;EAKG;;EACG,SAAUM,aAAV,CAAsB,IAAtB,EAAkC;EACtC,SAAO,IAAI,GAAGN,YAAd;EACD;EAED;;;EAGG;;EAEG,SAAUQ,SAAV,CAAkB,OAAlB,EAAyC;EAC7C,QAAM;EAAE,IAAA,IAAF;EAAQ,IAAA,MAAM,GAAG;EAAjB,MAAuB,OAA7B;;EAEA,MAAI,IAAI,KAAK,SAAb,EAAwB;EACtB,UAAM,IAAI,KAAJ,CAAU,mCAAV,CAAN;EACD;;EAED,SAAQ,MAAM,GAAG,IAAI,CAAC,EAAd,GAAmB,IAApB,GAA4B,CAAnC;EACD;EAED;;;;EAIG;;EACG,SAAUC,WAAV,GAAiC;EAAA,MAAb,IAAa,uEAAN,MAAM;EACrC,SAAO,IAAI,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,EAAL,IAAW,IAAI,GAAG,GAAlB,CAAT,CAAX;EACD;EAED;;;EAGG;;EAEG,SAAUC,SAAV,GAA8C;EAAA,MAA5B,OAA4B,uEAAF,EAAE;EAClD,MAAI;EAAE,IAAA,MAAF;EAAU,IAAA,MAAM,GAAGD,WAAS,EAA5B;EAAgC,IAAA,IAAI,GAAG,GAAvC;EAA4C,IAAA;EAA5C,MAAuD,OAA3D;;EAEA,MAAI,CAAC,MAAL,EAAa;EACX,IAAA,MAAM,GAAG,IAAI,IAAI,CAAC,EAAT,GAAc,IAAvB;EACD;;EAED,MAAI,CAAC,MAAL,EAAa;EACX,IAAA,MAAM,GAAG,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,IAAL,CAAU,IAAI,GAAG,MAAjB,CAAT,EAAmC,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,EAAZ,IAAkB,CAArD,CAAT;EACA,QAAI,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsB,MAAM;EAC7B;;EAED,QAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAV,IAAe,CAA9B;EACA,QAAM,IAAI,GAAG,IAAI,YAAJ,CAAiB,MAAjB,CAAb;;EACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,IAAI,MAArB,EAA6B,CAAC,EAA9B,EAAkC;EAChC,IAAA,IAAI,CAAC,CAAD,CAAJ,GAAUF,KAAG,CAAC,CAAC,GAAG,MAAL,EAAa,IAAb,CAAH,GAAwB,MAAlC;EACA,IAAA,IAAI,CAAC,MAAM,GAAG,CAAT,GAAa,CAAd,CAAJ,GAAuB,IAAI,CAAC,CAAD,CAA3B;EACD;;EAED,SAAO,IAAP;EACD;;ECtGK,MAAOK,aAAP,SAA2B,OAA3B,CAAkC;EAgBtC,EAAA,WAAA,GAAwD;EAAA,QAArC,OAAqC,uEAAF,EAAE;EACtD;EACA,UAAM;EAAE,MAAA,IAAI,GAAG,GAAT;EAAc,MAAA,MAAd;EAAsB,MAAA,EAAE,GAAG;EAA3B,QAAmC,OAAzC;EAEA,SAAK,EAAL,GAAU,EAAV;EACA,SAAK,IAAL,GAAY,IAAZ;EACA,SAAK,MAAL,GACE,MAAM,KAAK,SAAX,GACI,KACE,EAAE,GAAG,IAAI,CAAC,IAAL,CAAU,CAACd,qBAAD,GAAuB,IAAI,CAAC,EAAtC,CAAN,GAAmD,IAAnD,GACE,CAAC,IAAI,EAAL,IAAW,IAAX,GAAkB,IAAI,CAAC,EAAxB,GAA8B,CAFhC,CADJ,GAII,MALN;EAMD;;EAEM,EAAA,WAAW,GAA+B;EAAA,QAA9B,IAA8B,uEAAvB,KAAK,IAAkB;EAAA,QAAZ,EAAY,uEAAP,KAAK,EAAE;EAC/C,WAAO,WAAW,CAAC,IAAD,EAAO,EAAP,CAAlB;EACD;;EAEM,EAAA,WAAW,CAAC,KAAD,EAAoC;EAAA,QAApB,EAAoB,uEAAP,KAAK,EAAE;EACpD,WAAO,WAAW,CAAC,KAAD,EAAQ,EAAR,CAAlB;EACD;;EAEM,EAAA,GAAG,CAAC,CAAD,EAAU;EAClB,WAAO,GAAG,CAAC,CAAD,EAAI,KAAK,IAAT,EAAe,KAAK,EAApB,CAAV;EACD;;EAEM,EAAA,OAAO,GAAA;EACZ,WAAOU,SAAO,CAAC;EAAE,MAAA,IAAI,EAAE,KAAK,IAAb;EAAmB,MAAA,MAAM,EAAE,KAAK,MAAhC;EAAwC,MAAA,EAAE,EAAE,KAAK;EAAjD,KAAD,CAAd;EACD;;EAEM,EAAA,SAAS,CAAC,IAAD,EAAc;EAC5B,WAAO,SAAS,CAAC,IAAD,CAAhB;EACD;;EAEM,EAAA,OAAO,GAA6B;EAAA,QAA5B,OAA4B,uEAAF,EAAE;EACzC,UAAM;EAAE,MAAA,MAAF;EAAU,MAAA;EAAV,QAAqB,OAA3B;EACA,WAAO,OAAO,CAAC;EACb,MAAA,IAAI,EAAE,KAAK,IADE;EAEb,MAAA,MAAM,EAAE,KAAK,MAFA;EAGb,MAAA,EAAE,EAAE,KAAK,EAHI;EAIb,MAAA,MAJa;EAKb,MAAA;EALa,KAAD,CAAd;EAOD;;EA3DqC;EA8DxC;;;;;EAKG;;EACG,SAAU,GAAV,CAAc,CAAd,EAAyB,IAAzB,EAAuC,EAAvC,EAAiD;EACrD,SAAO,CAAC,IAAI,EAAL,IAAWK,KAAU,CAAC,CAAD,EAAI,IAAJ,CAArB,GAAiC,EAAE,GAAGC,KAAQ,CAAC,CAAD,EAAI,IAAJ,CAArD;EACD;EAED;;;;;EAKG;;EACG,SAAU,WAAV,CAAsB,KAAtB,EAA6C;EAAA,MAAR,EAAQ,uEAAH,GAAG;EACjD,SAAO,KAAK,IAAI,EAAE,GAAGZ,qBAAL,GAA2B,CAA/B,CAAZ;EACD;EAED;;;;;EAKG;;EACG,SAAU,WAAV,CAAsB,IAAtB,EAA4C;EAAA,MAAR,EAAQ,uEAAH,GAAG;EAChD,SAAO,IAAI,IAAI,EAAE,GAAGA,qBAAL,GAA2B,CAA/B,CAAX;EACD;EAED;;;EAGG;;EAEG,SAAUM,SAAV,CAAkB,OAAlB,EAAyC;EAC7C,QAAM;EAAE,IAAA,IAAF;EAAQ,IAAA,MAAM,GAAG,CAAjB;EAAoB,IAAA,EAAE,GAAG;EAAzB,MAAiC,OAAvC;;EACA,MAAI,IAAI,KAAK,SAAb,EAAwB;EACtB,UAAM,IAAI,KAAJ,CAAU,mCAAV,CAAN;EACD;;EAED,SAAQ,IAAI,GAAG,MAAP,IAAiB,EAAE,GAAGT,kBAAL,GAAwB,CAAC,IAAI,EAAL,IAAW,IAAI,CAAC,EAAzD,CAAD,GAAiE,CAAxE;EACD;EAED;;;;EAIG;;EACG,SAAU,SAAV,GAA2C;EAAA,MAAvB,IAAuB,uEAAhB,MAAgB;EAAA,MAAR,EAAQ,uEAAH,GAAG;EAC/C,SAAO,EAAE,GAAG,CAAL,GAASgB,WAAmB,CAAC,IAAD,CAA5B,GAAqCC,WAAiB,CAAC,IAAD,CAA7D;EACD;EAED;;;EAGG;;EAEG,SAAU,OAAV,GAA8C;EAAA,MAA5B,OAA4B,uEAAF,EAAE;EAClD,MAAI;EAAE,IAAA,MAAF;EAAU,IAAA,MAAM,GAAG,SAAS,EAA5B;EAAgC,IAAA,IAAI,GAAG,GAAvC;EAA4C,IAAA,MAA5C;EAAoD,IAAA,EAAE,GAAG;EAAzD,MAAiE,OAArE;;EAEA,MAAI,CAAC,MAAL,EAAa;EACX,IAAA,MAAM,GACJ,KACE,EAAE,GAAG,IAAI,CAAC,IAAL,CAAU,CAAClB,qBAAD,GAAuB,IAAI,CAAC,EAAtC,CAAN,GAAmD,IAAnD,GACE,CAAC,IAAI,EAAL,IAAW,IAAX,GAAkB,IAAI,CAAC,EAAxB,GAA8B,CAFhC,CADF;EAID;;EAED,MAAI,CAAC,MAAL,EAAa;EACX,IAAA,MAAM,GAAG,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,IAAL,CAAU,IAAI,GAAG,MAAjB,CAAT,EAAmC,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,EAAZ,IAAkB,CAArD,CAAT;EACA,QAAI,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsB,MAAM;EAC7B;;EAED,QAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAV,IAAe,CAA9B;EACA,QAAM,IAAI,GAAG,IAAI,YAAJ,CAAiB,MAAjB,CAAb;;EACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,IAAI,MAArB,EAA6B,CAAC,EAA9B,EAAkC;EAChC,IAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,GAAG,CAAC,CAAC,GAAG,MAAL,EAAa,IAAb,EAAmB,EAAnB,CAAH,GAA4B,MAAtC;EACA,IAAA,IAAI,CAAC,MAAM,GAAG,CAAT,GAAa,CAAd,CAAJ,GAAuB,IAAI,CAAC,CAAD,CAA3B;EACD;;EAED,SAAO,IAAP;EACD;;ECrMD;;EAEG;;EACG,SAAU,UAAV,CAAqB,IAArB,EAAuD;EAAA,MAAjB,YAAiB,uEAAF,EAAE;;EAC3D,UAAQ,IAAR;EACE,SAAK,UAAL;EACE,aAAO,IAAIM,UAAJ,CAAa,YAAb,CAAP;;EACF,SAAK,YAAL;EACE,aAAO,IAAIO,YAAJ,CAAe,YAAf,CAAP;;EACF,SAAK,aAAL;EACE,aAAO,IAAIC,aAAJ,CAAgB,YAAhB,CAAP;;EACF;EAAS;EACP,cAAM,SAAS,GAAU,IAAzB,CADO;;EAGP,cAAM,KAAK,CAAC,wBAAwB,SAAS,EAAlC,CAAX;EACD;EAXH;EAaD;;ECvBD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASK,GAAT,CAAa/yC,IAAb,EAAiC;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACtC,MAAI;EACFmsC,IAAAA,UADE;EAEFC,IAAAA,SAAS,GAAG;EACV9hB,MAAAA,UAAU,EAAE,CADF;EAEVE,MAAAA,UAAU,EAAE;EAFF,KAFV;EAMF6hB,IAAAA,KAAK,GAAG,EANN;EAOFC,IAAAA,OAAO,GAAG,IAPR;EAQFC,IAAAA,YAAY,GAAG,CARb;EASFC,IAAAA,UAAU,GAAG,GATX;EAUFC,IAAAA,WAAW,GAAG,IAVZ;EAWFC,IAAAA,WAAW,GAAG,OAXZ;EAYFC,IAAAA,mBAAmB,GAAG,CAAC,CAZrB;EAaFC,IAAAA,gBAAgB,GAAG;EAbjB,MAcA5sC,OAdJ;EAgBA,MAAI;EAAE4E,IAAAA,CAAC,EAAEgvB,GAAL;EAAUjvB,IAAAA;EAAV,MAAgBxL,IAApB;EAEA,QAAMyL,CAAC,GAAGgvB,GAAG,CAAC7qB,KAAJ,EAAV;EACA,MAAI8jC,WAAW,GAAGC,aAAa,CAACnoC,CAAD,CAA/B;;EAEA,MAAI8nC,WAAW,KAAK,KAApB,EAA2B;EACzB,SAAK,IAAIp0C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,CAAC,CAAC3Q,MAAtB,EAA8BoE,CAAC,EAA/B,EAAmC;EACjCuM,MAAAA,CAAC,CAACvM,CAAD,CAAD,IAAQ,CAAC,CAAT;EACD;EACF;;EAED,MAAI8zC,UAAU,KAAKrzC,SAAnB,EAA8B;EAC5BqzC,IAAAA,UAAU,GAAGU,WAAW,GAAGE,aAAa,CAACnoC,CAAD,CAAhB,GAAsB,CAA9C;EACD;;EACD,OAAK,IAAIvM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,CAAC,CAAC3Q,MAAtB,EAA8BoE,CAAC,EAA/B,EAAmC;EACjCuM,IAAAA,CAAC,CAACvM,CAAD,CAAD,IAAQ8zC,UAAR;EACD;;EACD,OAAK,IAAI9zC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuM,CAAC,CAAC3Q,MAAtB,EAA8BoE,CAAC,EAA/B,EAAmC;EACjC,QAAIuM,CAAC,CAACvM,CAAD,CAAD,GAAO,CAAX,EAAc;EACZuM,MAAAA,CAAC,CAACvM,CAAD,CAAD,GAAO,CAAP;EACD;EACF,GAtCqC;EAwCtC;;;EACA,MAAI20C,KAAK,GAAGpoC,CAAZ;EACA,MAAIqoC,EAAJ,EAAQC,GAAR;EACA,QAAM;EAAE5iB,IAAAA,UAAF;EAAcE,IAAAA;EAAd,MAA6B4hB,SAAnC;;EAEA,MAAIS,WAAJ,EAAiB;EACf,QAAIP,OAAJ,EAAa;EACXU,MAAAA,KAAK,GAAGG,aAAE,CAACvoC,CAAD,EAAID,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAZ,EAAiB;EACzB2lB,QAAAA,UADyB;EAEzBE,QAAAA,UAFyB;EAGzBD,QAAAA,UAAU,EAAE;EAHa,OAAjB,CAAV;EAKD;;EACD0iB,IAAAA,EAAE,GAAGE,aAAE,CAACvoC,CAAD,EAAID,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAZ,EAAiB;EACtB2lB,MAAAA,UADsB;EAEtBE,MAAAA,UAFsB;EAGtBD,MAAAA,UAAU,EAAE;EAHU,KAAjB,CAAP;EAKA2iB,IAAAA,GAAG,GAAGC,aAAE,CAACvoC,CAAD,EAAID,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAZ,EAAiB;EACvB2lB,MAAAA,UADuB;EAEvBE,MAAAA,UAFuB;EAGvBD,MAAAA,UAAU,EAAE;EAHW,KAAjB,CAAR;EAKD,GAlBD,MAkBO;EACL,QAAI+hB,OAAJ,EAAa;EACXU,MAAAA,KAAK,GAAGG,aAAE,CAACvoC,CAAD,EAAID,CAAJ,EAAO;EACf2lB,QAAAA,UADe;EAEfE,QAAAA,UAFe;EAGfD,QAAAA,UAAU,EAAE;EAHG,OAAP,CAAV;EAKD;;EACD0iB,IAAAA,EAAE,GAAGE,aAAE,CAACvoC,CAAD,EAAID,CAAJ,EAAO;EACZ2lB,MAAAA,UADY;EAEZE,MAAAA,UAFY;EAGZD,MAAAA,UAAU,EAAE;EAHA,KAAP,CAAP;EAKA2iB,IAAAA,GAAG,GAAGC,aAAE,CAACvoC,CAAD,EAAID,CAAJ,EAAO;EACb2lB,MAAAA,UADa;EAEbE,MAAAA,UAFa;EAGbD,MAAAA,UAAU,EAAE;EAHC,KAAP,CAAR;EAKD;;EAED,QAAM6iB,KAAK,GAAGzoC,CAAd;EACA,QAAM0oC,EAAE,GAAG1oC,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAnB;EACA,MAAI2oC,MAAM,GAAG,CAAb;EACA,MAAInjC,IAAI,GAAG,CAAX;;EACA,OAAK,IAAI9R,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG20C,KAAK,CAAC/4C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC,QAAI2G,IAAI,CAACC,GAAL,CAASiuC,GAAG,CAAC70C,CAAD,CAAZ,IAAmBi1C,MAAvB,EAA+B;EAC7BA,MAAAA,MAAM,GAAGtuC,IAAI,CAACC,GAAL,CAASiuC,GAAG,CAAC70C,CAAD,CAAZ,CAAT;EACD;;EACD,QAAI2G,IAAI,CAACC,GAAL,CAAS+tC,KAAK,CAAC30C,CAAD,CAAd,IAAqB8R,IAAzB,EAA+B;EAC7BA,MAAAA,IAAI,GAAGnL,IAAI,CAACC,GAAL,CAAS+tC,KAAK,CAAC30C,CAAD,CAAd,CAAP;EACD;EACF;;EAED,MAAIk1C,OAAO,GAAG,IAAd;EACA,MAAIC,OAAO,GAAG,IAAd;EACA,MAAIC,MAAM,GAAG,EAAb;EACA,MAAIC,SAAS,GAAG,EAAhB;EACA,MAAIC,SAAS,GAAG,EAAhB;EACA,MAAIC,SAAS,GAAG,EAAhB,CArGsC;;EAwGtC,OAAK,IAAIv1C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG20C,KAAK,CAAC/4C,MAAN,GAAe,CAAnC,EAAsC,EAAEoE,CAAxC,EAA2C;EACzC;EACA,QAAI2G,IAAI,CAACC,GAAL,CAASguC,EAAE,CAAC50C,CAAD,CAAX,IAAkBs0C,mBAAtB,EAA2C;EACzC;EACA,UACGM,EAAE,CAAC50C,CAAD,CAAF,GAAQ40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAAV,IAAqB40C,EAAE,CAAC50C,CAAD,CAAF,IAAS40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAAjC,IACC40C,EAAE,CAAC50C,CAAD,CAAF,IAAS40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAAX,IAAsB40C,EAAE,CAAC50C,CAAD,CAAF,GAAQ40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAFnC,EAGE;EACAm1C,QAAAA,OAAO,GAAG;EACR7oC,UAAAA,CAAC,EAAEyoC,KAAK,CAAC/0C,CAAD,CADA;EAER7D,UAAAA,KAAK,EAAE6D;EAFC,SAAV;;EAIA,YAAIg1C,EAAE,GAAG,CAAL,IAAUE,OAAO,KAAK,IAA1B,EAAgC;EAC9BG,UAAAA,SAAS,CAACr5C,IAAV,CAAek5C,OAAf;EACAI,UAAAA,SAAS,CAACt5C,IAAV,CAAem5C,OAAf;EACD;EACF,OAdwC;;;EAiBzC,UACGP,EAAE,CAAC50C,CAAD,CAAF,IAAS40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAAX,IAAsB40C,EAAE,CAAC50C,CAAD,CAAF,GAAQ40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAAjC,IACC40C,EAAE,CAAC50C,CAAD,CAAF,GAAQ40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAAV,IAAqB40C,EAAE,CAAC50C,CAAD,CAAF,IAAS40C,EAAE,CAAC50C,CAAC,GAAG,CAAL,CAFnC,EAGE;EACAk1C,QAAAA,OAAO,GAAG;EACR5oC,UAAAA,CAAC,EAAEyoC,KAAK,CAAC/0C,CAAD,CADA;EAER7D,UAAAA,KAAK,EAAE6D;EAFC,SAAV;;EAIA,YAAIg1C,EAAE,GAAG,CAAL,IAAUG,OAAO,KAAK,IAA1B,EAAgC;EAC9BE,UAAAA,SAAS,CAACr5C,IAAV,CAAek5C,OAAf;EACAI,UAAAA,SAAS,CAACt5C,IAAV,CAAem5C,OAAf;EACD;EACF;EACF,KAhCwC;;;EAmCzC,QAAIN,GAAG,CAAC70C,CAAD,CAAH,GAAS60C,GAAG,CAAC70C,CAAC,GAAG,CAAL,CAAZ,IAAuB60C,GAAG,CAAC70C,CAAD,CAAH,GAAS60C,GAAG,CAAC70C,CAAC,GAAG,CAAL,CAAvC,EAAgD;EAC9Co1C,MAAAA,MAAM,CAACp5C,IAAP,CAAYgE,CAAZ;EACAu1C,MAAAA,SAAS,CAACv5C,IAAV,CAAe2K,IAAI,CAACC,GAAL,CAASiuC,GAAG,CAAC70C,CAAD,CAAZ,KAAoBm0C,UAAU,GAAGc,MAAhD;EACD;EACF;;EAED,MAAIO,cAAc,GAAGxB,KAAK,CAACpP,IAAN,GACjB6Q,UAAU,CAACzB,KAAK,CAACpP,IAAP,EAAaoP,KAAK,CAACrsC,OAAnB,CAAV,CAAsCsrC,WADrB,GAEhB3mC,CAAD,IAAOA,CAFX;EAIA,MAAIopC,OAAO,GAAG,EAAd;EACA,MAAIC,KAAK,GAAG,CAAC,CAAb;EACA,MAAIC,QAAJ,EAAcC,SAAd,EAAyBC,SAAzB,EAAoCC,WAApC,EAAiDC,aAAjD;;EACA,OAAK,IAAItwC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0vC,MAAM,CAACx5C,MAA3B,EAAmC,EAAE8J,CAArC,EAAwC;EACtCmwC,IAAAA,SAAS,GAAGd,KAAK,CAACK,MAAM,CAAC1vC,CAAD,CAAP,CAAjB;EACAkwC,IAAAA,QAAQ,GAAG,CAAC,CAAZ;EACA,QAAIl0B,CAAC,GAAGi0B,KAAK,GAAG,CAAhB;EACAI,IAAAA,WAAW,GAAGv2C,MAAM,CAACy2C,SAArB;EACAH,IAAAA,SAAS,GAAG,CAAZ;EACAE,IAAAA,aAAa,GAAG,IAAhB;;EACA,WAAOJ,QAAQ,KAAK,CAAC,CAAd,IAAmBl0B,CAAC,GAAG2zB,SAAS,CAACz5C,MAAjC,IAA2Co6C,aAAlD,EAAiE;EAC/DF,MAAAA,SAAS,GAAGnvC,IAAI,CAACC,GAAL,CAASivC,SAAS,GAAG,CAACR,SAAS,CAAC3zB,CAAD,CAAT,CAAapV,CAAb,GAAiBgpC,SAAS,CAAC5zB,CAAD,CAAT,CAAapV,CAA/B,IAAoC,CAAzD,CAAZ,CAD+D;;EAI/D,UAAIwpC,SAAS,GAAGC,WAAhB,EAA6B;EAC3BA,QAAAA,WAAW,GAAGD,SAAd;EACD,OAFD,MAEO;EACLE,QAAAA,aAAa,GAAG,KAAhB;EACD;;EACD,UAAIF,SAAS,GAAGnvC,IAAI,CAACC,GAAL,CAASyuC,SAAS,CAAC3zB,CAAD,CAAT,CAAapV,CAAb,GAAiBgpC,SAAS,CAAC5zB,CAAD,CAAT,CAAapV,CAAvC,IAA4C,CAA5D,EAA+D;EAC7DspC,QAAAA,QAAQ,GAAGl0B,CAAX;EACAi0B,QAAAA,KAAK,GAAGj0B,CAAR;EACD;;EACD,QAAEA,CAAF;EACD;;EAED,QAAIk0B,QAAQ,KAAK,CAAC,CAAlB,EAAqB;EACnB,UAAIjvC,IAAI,CAACC,GAAL,CAAS+tC,KAAK,CAACS,MAAM,CAAC1vC,CAAD,CAAP,CAAd,IAA6B2uC,WAAW,GAAGviC,IAA/C,EAAqD;EACnD,YAAI7Q,KAAK,GAAG0F,IAAI,CAACC,GAAL,CAAS0uC,SAAS,CAACM,QAAD,CAAT,CAAoBtpC,CAApB,GAAwB+oC,SAAS,CAACO,QAAD,CAAT,CAAoBtpC,CAArD,CAAZ;EACAopC,QAAAA,OAAO,CAAC15C,IAAR,CAAa;EACXG,UAAAA,KAAK,EAAEi5C,MAAM,CAAC1vC,CAAD,CADF;EAEX4G,UAAAA,CAAC,EAAEupC,SAFQ;EAGXtpC,UAAAA,CAAC,EAAE6nC,WAAW,GACVO,KAAK,CAACS,MAAM,CAAC1vC,CAAD,CAAP,CAAL,GAAmBouC,UADT,GAEV,CAACa,KAAK,CAACS,MAAM,CAAC1vC,CAAD,CAAP,CAAN,GAAoBouC,UALb;EAMX7yC,UAAAA,KAAK,EAAEu0C,cAAc,CAACv0C,KAAD,CANV;EAOXi1C,UAAAA,IAAI,EAAEX,SAAS,CAAC7vC,CAAD;EAPJ,SAAb;EAUAgwC,QAAAA,OAAO,CAACA,OAAO,CAAC95C,MAAR,GAAiB,CAAlB,CAAP,CAA4B27B,IAA5B,GAAmC8d,SAAS,CAACO,QAAD,CAA5C;EACAF,QAAAA,OAAO,CAACA,OAAO,CAAC95C,MAAR,GAAiB,CAAlB,CAAP,CAA4B+7B,KAA5B,GAAoC2d,SAAS,CAACM,QAAD,CAA7C;;EAEA,YAAI1B,YAAJ,EAAkB;EAChB,cAAIiC,KAAK,GAAGxB,KAAK,CAACU,SAAS,CAACO,QAAD,CAAT,CAAoBz5C,KAArB,CAAjB;EACA,cAAIi6C,MAAM,GAAGzB,KAAK,CAACW,SAAS,CAACM,QAAD,CAAT,CAAoBz5C,KAArB,CAAlB;EACAu5C,UAAAA,OAAO,CAACA,OAAO,CAAC95C,MAAR,GAAiB,CAAlB,CAAP,CAA4By6C,MAA5B,GACEnC,YAAY,IACXwB,OAAO,CAACA,OAAO,CAAC95C,MAAR,GAAiB,CAAlB,CAAP,CAA4B2Q,CAA5B,GAAgC,CAAC4pC,KAAK,GAAGC,MAAT,IAAmB,CADxC,CADd;EAGD;EACF;EACF;EACF;;EAED,MAAI7B,gBAAJ,EAAsB;EACpB+B,IAAAA,gBAAgB,CAACZ,OAAD,EAAUX,KAAV,EAAiBJ,KAAjB,CAAhB;EACD,GA5MqC;;;EA+MtC,OAAK,IAAIjvC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgwC,OAAO,CAAC95C,MAA5B,EAAoC8J,CAAC,EAArC,EAAyC;EACvCgwC,IAAAA,OAAO,CAAChwC,CAAD,CAAP,CAAWgiC,IAAX,GAAkBoM,UAAlB;EACD;;EAED4B,EAAAA,OAAO,CAACrrB,IAAR,CAAa,CAACphB,CAAD,EAAImH,CAAJ,KAAU;EACrB,WAAOnH,CAAC,CAACqD,CAAF,GAAM8D,CAAC,CAAC9D,CAAf;EACD,GAFD;EAIA,SAAOopC,OAAP;EACD;;EAED,MAAMjB,aAAa,GAAInoC,CAAD,IAAO;EAC3B,MAAI3O,GAAJ;EACA,MAAI44C,KAAK,GAAG,CAAZ;EACA,MAAIC,KAAK,GAAGh3C,MAAM,CAAC80B,gBAAnB;;EACA,OAAK,IAAIt0B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsM,CAAC,CAAC1Q,MAAF,GAAW,CAA/B,EAAkC,EAAEoE,CAApC,EAAuC;EACrCrC,IAAAA,GAAG,GAAGgJ,IAAI,CAACC,GAAL,CAAS0F,CAAC,CAACtM,CAAC,GAAG,CAAL,CAAD,GAAWsM,CAAC,CAACtM,CAAD,CAArB,CAAN;;EACA,QAAIrC,GAAG,GAAG64C,KAAV,EAAiB;EACfA,MAAAA,KAAK,GAAG74C,GAAR;EACD;;EACD,QAAIA,GAAG,GAAG44C,KAAV,EAAiB;EACfA,MAAAA,KAAK,GAAG54C,GAAR;EACD;EACF;;EACD,SAAO,CAAC44C,KAAK,GAAGC,KAAT,IAAkBD,KAAlB,GAA0B,IAAjC;EACD,CAdD;;EAgBA,MAAM7B,aAAa,GAAInoC,CAAD,IAAO;EAC3B,MAAIgS,IAAI,GAAG,CAAX;EAEA,MAAIk4B,MAAM,GAAG,CAAb;EACA,MAAI76C,MAAM,GAAG2Q,CAAC,CAAC3Q,MAAf;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpE,MAApB,EAA4B,EAAEoE,CAA9B,EAAiC;EAC/Bue,IAAAA,IAAI,IAAIhS,CAAC,CAACvM,CAAD,CAAT;EACD;;EACDue,EAAAA,IAAI,IAAI3iB,MAAR;EACA,MAAI86C,iBAAiB,GAAG,IAAI32C,KAAJ,CAAUnE,MAAV,CAAxB;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpE,MAApB,EAA4B,EAAEoE,CAA9B,EAAiC;EAC/B02C,IAAAA,iBAAiB,CAAC12C,CAAD,CAAjB,GAAuB2G,IAAI,CAACC,GAAL,CAAS2F,CAAC,CAACvM,CAAD,CAAD,GAAOue,IAAhB,CAAvB;EACD;;EACDm4B,EAAAA,iBAAiB,CAACrsB,IAAlB,CAAuB,CAACphB,CAAD,EAAImH,CAAJ,KAAUnH,CAAC,GAAGmH,CAArC;;EACA,MAAIxU,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsB;EACpB66C,IAAAA,MAAM,GAAGC,iBAAiB,CAAC,CAAC96C,MAAM,GAAG,CAAV,IAAe,CAAhB,CAAjB,GAAsC,MAA/C;EACD,GAFD,MAEO;EACL66C,IAAAA,MAAM,GACH,OACEC,iBAAiB,CAAC96C,MAAM,GAAG,CAAV,CAAjB,GAAgC86C,iBAAiB,CAAC96C,MAAM,GAAG,CAAT,GAAa,CAAd,CADnD,CAAD,GAEA,MAHF;EAID;;EAED,SAAO66C,MAAP;EACD,CAxBD;;EA0BA,MAAMH,gBAAgB,GAAG,CAACrE,QAAD,EAAW3lC,CAAX,EAAcC,CAAd,KAAoB;EAC3C,MAAI4iB,KAAJ,EAAWwnB,IAAX,EAAiBC,KAAjB,EAAwBz0B,CAAxB,EAA2B00B,YAA3B;;EACA,OAAK,IAAInxC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGusC,QAAQ,CAACr2C,MAA7B,EAAqC8J,CAAC,EAAtC,EAA0C;EACxCmxC,IAAAA,YAAY,GAAG5E,QAAQ,CAACvsC,CAAD,CAAR,CAAYvJ,KAA3B,CADwC;EAExC;;EACA,QACEoQ,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAxB,IACAtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAD,CAF1B,EAGE;EACAA,MAAAA,YAAY;EACb,KALD,MAKO;EACL,UACEtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAD,CAAxB,IACAtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAF1B,EAGE;EACAA,QAAAA,YAAY;EACb,OALD,MAKO;EACL,YACEtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAxB,IACAtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAF1B,EAGE;EACAA,UAAAA,YAAY,IAAI,CAAhB;EACD,SALD,MAKO;EACL,cACEtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAxB,IACAtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,IAAuBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAF1B,EAGE;EACAA,YAAAA,YAAY,IAAI,CAAhB;EACD;EACF;EACF;EACF,KA7BuC;;;EA+BxC,QACEtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,GAAsB,CAAtB,IACAtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,GAAsB,CADtB,IAEAtqC,CAAC,CAACsqC,YAAD,CAAD,IAAmBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAFpB,IAGAtqC,CAAC,CAACsqC,YAAD,CAAD,IAAmBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAHpB,KAICtqC,CAAC,CAACsqC,YAAD,CAAD,KAAoBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAArB,IACCtqC,CAAC,CAACsqC,YAAD,CAAD,KAAoBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CALvB,CADF,EAOE;EACA1nB,MAAAA,KAAK,GAAG,KAAKxoB,IAAI,CAAC4U,KAAL,CAAWhP,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAZ,CAAb;EACAF,MAAAA,IAAI,GAAG,KAAKhwC,IAAI,CAAC4U,KAAL,CAAWhP,CAAC,CAACsqC,YAAD,CAAZ,CAAZ;EACAD,MAAAA,KAAK,GAAG,KAAKjwC,IAAI,CAAC4U,KAAL,CAAWhP,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAZ,CAAb;EACA10B,MAAAA,CAAC,GAAI,OAAOgN,KAAK,GAAGynB,KAAf,CAAD,IAA2BznB,KAAK,GAAG,IAAIwnB,IAAZ,GAAmBC,KAA9C,CAAJ,CAJA;EAMA;;EACA3E,MAAAA,QAAQ,CAACvsC,CAAD,CAAR,CAAY4G,CAAZ,GACEA,CAAC,CAACuqC,YAAD,CAAD,GAAkB,CAACvqC,CAAC,CAACuqC,YAAD,CAAD,GAAkBvqC,CAAC,CAACuqC,YAAY,GAAG,CAAhB,CAApB,IAA0C10B,CAD9D;EAEA8vB,MAAAA,QAAQ,CAACvsC,CAAD,CAAR,CAAY6G,CAAZ,GACEA,CAAC,CAACsqC,YAAD,CAAD,GACA,QAAQtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAAD,GAAsBtqC,CAAC,CAACsqC,YAAY,GAAG,CAAhB,CAA/B,IAAqD10B,CAFvD;EAGD;EACF;EACF,CAtDD;;EC/RO,MAAMuwB,mBAAmB,GAAG,CAAC,CAAD,GAAK/rC,IAAI,CAACoyB,GAAtC;EACA,MAAM4Z,gBAAgB,GAAGhsC,IAAI,CAACkV,IAAL,CAAUlV,IAAI,CAACmwC,EAAL,GAAUnwC,IAAI,CAACoyB,GAAzB,CAAzB;EACA,MAAM6Z,UAAU,GAAGjsC,IAAI,CAACkV,IAAL,CAAU,CAAV,CAAnB;EACA,MAAMg3B,SAAS,GAAGlsC,IAAI,CAACkV,IAAL,CAAU,IAAIlV,IAAI,CAACoyB,GAAnB,CAAlB;EACA,MAAM+Z,mBAAmB,GAAGnsC,IAAI,CAACkV,IAAL,CAAU,IAAIlV,IAAI,CAACoyB,GAAnB,IAA0B,CAAtD;;ECJP;EACA;EAEA;EAEe,SAASga,MAAT,CAAgBzmC,CAAhB,EAAmB;EAChC,MAAIrD,CAAC,GAAG,KAAR;EACA,MAAIqD,CAAC,KAAK,CAAV,EAAa,OAAO,CAAP;EACb,MAAIyqC,aAAa,GAAGpwC,IAAI,CAAC0U,GAAL,CAAS,IAAI/O,CAAC,GAAGA,CAAjB,CAApB;EACA,MAAI0qC,aAAa,GAAGD,aAAa,GAAG,CAAhB,GAAoB,KAAKpwC,IAAI,CAACmwC,EAAL,GAAU7tC,CAAf,CAAxC;EACA,MAAIguC,SAAS,GAAGtwC,IAAI,CAACkV,IAAL,CAAUm7B,aAAa,IAAI,CAAjB,GAAqBD,aAAa,GAAG9tC,CAA/C,CAAhB;EACA,MAAIiuC,UAAU,GAAGvwC,IAAI,CAACkV,IAAL,CAAUo7B,SAAS,GAAGD,aAAtB,CAAjB;EACA,SAAOE,UAAU,IAAI5qC,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAY,CAAC,CAAjB,CAAjB;EACD;;ECNM,MAAM0mC,QAAN,CAAe;EACpB;EACF;EACA;EACA;EACA;EACA;EACE3uC,EAAAA,WAAW,GAAe;EAAA,QAAdsD,OAAc,uEAAJ,EAAI;EACxB,SAAKwvC,IAAL,GAAYxvC,OAAO,CAACyvC,EAAR,GACRpE,QAAQ,CAACC,WAAT,CAAqB,IAAItrC,OAAO,CAACyvC,EAAjC,CADQ,GAERzvC,OAAO,CAACwvC,IAAR,GACAxvC,OAAO,CAACwvC,IADR,GAEA,GAJJ;EAKA,SAAKd,MAAL,GACE1uC,OAAO,CAAC0uC,MAAR,KAAmB51C,SAAnB,GACIkG,IAAI,CAACkV,IAAL,CAAU,CAAC62B,mBAAD,GAAuB/rC,IAAI,CAACmwC,EAAtC,IAA4C,KAAKK,IADrD,GAEIxvC,OAAO,CAAC0uC,MAHd;EAID;EACD;EACF;EACA;EACA;EACA;EACA;EACA;;;EAEE/C,EAAAA,OAAO,GAAe;EAAA,QAAd3rC,OAAc,uEAAJ,EAAI;EACpB,QAAI;EAAE/L,MAAAA,MAAF;EAAUiY,MAAAA,MAAM,GAAG,KAAKw/B,SAAL;EAAnB,QAAwC1rC,OAA5C;;EAEA,QAAI,CAAC/L,MAAL,EAAa;EACXA,MAAAA,MAAM,GAAG+K,IAAI,CAAC+K,GAAL,CAAS/K,IAAI,CAACmU,IAAL,CAAU,KAAKq8B,IAAL,GAAYtjC,MAAtB,CAAT,EAAwClN,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY,EAAZ,IAAkB,CAA1D,CAAT;EACA,UAAIxS,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsBA,MAAM;EAC7B;;EAED,UAAMqvB,MAAM,GAAG,CAACrvB,MAAM,GAAG,CAAV,IAAe,CAA9B;EACA,UAAMkF,IAAI,GAAG,IAAIwQ,YAAJ,CAAiB1V,MAAjB,CAAb;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIirB,MAArB,EAA6BjrB,CAAC,EAA9B,EAAkC;EAChCc,MAAAA,IAAI,CAACd,CAAD,CAAJ,GAAU,KAAKmzC,GAAL,CAASnzC,CAAC,GAAGirB,MAAb,IAAuB,KAAKorB,MAAtC;EACAv1C,MAAAA,IAAI,CAAClF,MAAM,GAAG,CAAT,GAAaoE,CAAd,CAAJ,GAAuBc,IAAI,CAACd,CAAD,CAA3B;EACD;;EAED,WAAOc,IAAP;EACD;EAED;EACF;EACA;EACA;EACA;;;EACEqyC,EAAAA,GAAG,CAAC7mC,CAAD,EAAI;EACL,WAAO0mC,QAAQ,CAACG,GAAT,CAAa7mC,CAAb,EAAgB,KAAK6qC,IAArB,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;;;EACE9D,EAAAA,SAAS,GAAgB;EAAA,QAAfgE,IAAe,uEAAR,MAAQ;EACvB,WAAOrE,QAAQ,CAACK,SAAT,CAAmBgE,IAAnB,CAAP;EACD;EAED;EACF;EACA;EACA;;;EAEEjE,EAAAA,OAAO,GAAG;EACR,WAAOJ,QAAQ,CAACI,OAAT,CAAiB,KAAK+D,IAAtB,EAA4B;EAAEd,MAAAA,MAAM,EAAE,KAAKA;EAAf,KAA5B,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;EACA;;;EACEpD,EAAAA,WAAW,CAAChyC,KAAD,EAAQ;EACjB;EACA,WAAO+xC,QAAQ,CAACC,WAAT,CAAqBhyC,KAArB,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;EACA;;;EACEiyC,EAAAA,WAAW,GAAmB;EAAA,QAAlBiE,IAAkB,uEAAX,KAAKA,IAAM;EAC5B,WAAOnE,QAAQ,CAACE,WAAT,CAAqBiE,IAArB,CAAP;EACD;EAED;EACF;EACA;EACA;;;EACEG,EAAAA,OAAO,CAACH,IAAD,EAAO;EACZ,SAAKA,IAAL,GAAYA,IAAZ;EACD;EAED;EACF;EACA;EACA;;;EACEI,EAAAA,SAAS,CAAClB,MAAD,EAAS;EAChB,SAAKA,MAAL,GAAcA,MAAd;EACD;;EA1GmB;EA6GtB;EACA;EACA;EACA;EACA;EACA;;EACArD,QAAQ,CAACG,GAAT,GAAe,SAASA,GAAT,CAAa7mC,CAAb,EAA4B;EAAA,MAAZ6qC,IAAY,uEAAL,GAAK;EACzC,SAAOxwC,IAAI,CAACoN,GAAL,CAAS2+B,mBAAmB,GAAG/rC,IAAI,CAACyH,GAAL,CAAS9B,CAAC,GAAG6qC,IAAb,EAAmB,CAAnB,CAA/B,CAAP;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;;;EACAnE,QAAQ,CAACC,WAAT,GAAuB,SAASA,WAAT,CAAqBhyC,KAArB,EAA4B;EACjD,SAAOA,KAAK,GAAG4xC,SAAf;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;;;EACAG,QAAQ,CAACE,WAAT,GAAuB,SAASA,WAAT,CAAqBiE,IAArB,EAA2B;EAChD,SAAOA,IAAI,GAAGtE,SAAd;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAEAG,QAAQ,CAACI,OAAT,GAAmB,SAASA,OAAT,CAAiB+D,IAAjB,EAAqC;EAAA,MAAdxvC,OAAc,uEAAJ,EAAI;EACtD,MAAI;EAAE0uC,IAAAA,MAAM,GAAG;EAAX,MAAiB1uC,OAArB;EACA,SAAQ0uC,MAAM,GAAG1D,gBAAT,GAA4BwE,IAA7B,GAAqC,CAA5C;EACD,CAHD;EAKA;EACA;EACA;EACA;EACA;;;EACAnE,QAAQ,CAACK,SAAT,GAAqB,SAASA,SAAT,GAAkC;EAAA,MAAfgE,IAAe,uEAAR,MAAQ;EACrD,SAAO1wC,IAAI,CAACkV,IAAL,CAAU,CAAV,IAAek3B,MAAM,CAACsE,IAAD,CAA5B;EACD,CAFD;;EClKO,MAAM9D,UAAN,CAAiB;EACtB;EACF;EACA;EACA;EACA;EACA;EACElvC,EAAAA,WAAW,GAAe;EAAA,QAAdsD,OAAc,uEAAJ,EAAI;EACxB,SAAKwvC,IAAL,GAAYxvC,OAAO,CAACwvC,IAAR,KAAiB12C,SAAjB,GAA6B,GAA7B,GAAmCkH,OAAO,CAACwvC,IAAvD;EACA,SAAKd,MAAL,GACE1uC,OAAO,CAAC0uC,MAAR,KAAmB51C,SAAnB,GAA+B,IAAIkG,IAAI,CAACmwC,EAAT,GAAc,KAAKK,IAAlD,GAAyDxvC,OAAO,CAAC0uC,MADnE;EAED;EACD;EACF;EACA;EACA;EACA;EACA;EACA;;;EACE/C,EAAAA,OAAO,GAAe;EAAA,QAAd3rC,OAAc,uEAAJ,EAAI;EACpB,QAAI;EAAE/L,MAAAA,MAAF;EAAUiY,MAAAA,MAAM,GAAG,KAAKw/B,SAAL;EAAnB,QAAwC1rC,OAA5C;;EAEA,QAAI,CAAC/L,MAAL,EAAa;EACXA,MAAAA,MAAM,GAAG+K,IAAI,CAAC+K,GAAL,CAAS/K,IAAI,CAACmU,IAAL,CAAU,KAAKq8B,IAAL,GAAYtjC,MAAtB,CAAT,EAAwClN,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY,EAAZ,IAAkB,CAA1D,CAAT;EACA,UAAIxS,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsBA,MAAM;EAC7B;;EAED,UAAMqvB,MAAM,GAAG,CAACrvB,MAAM,GAAG,CAAV,IAAe,CAA9B;EACA,UAAMkF,IAAI,GAAG,IAAIwQ,YAAJ,CAAiB1V,MAAjB,CAAb;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIirB,MAArB,EAA6BjrB,CAAC,EAA9B,EAAkC;EAChCc,MAAAA,IAAI,CAACd,CAAD,CAAJ,GAAU,KAAKmzC,GAAL,CAASnzC,CAAC,GAAGirB,MAAb,IAAuB,KAAKorB,MAAtC;EACAv1C,MAAAA,IAAI,CAAClF,MAAM,GAAG,CAAT,GAAaoE,CAAd,CAAJ,GAAuBc,IAAI,CAACd,CAAD,CAA3B;EACD;;EACD,WAAOc,IAAP;EACD;EAED;EACF;EACA;EACA;EACA;;;EACEqyC,EAAAA,GAAG,CAAC7mC,CAAD,EAAI;EACL,WAAOinC,UAAU,CAACJ,GAAX,CAAe7mC,CAAf,EAAkB,KAAK6qC,IAAvB,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;;;EACE9D,EAAAA,SAAS,GAAgB;EAAA,QAAfgE,IAAe,uEAAR,MAAQ;EACvB,WAAO9D,UAAU,CAACF,SAAX,CAAqBgE,IAArB,CAAP;EACD;EAED;EACF;EACA;EACA;;;EAEEjE,EAAAA,OAAO,GAAG;EACR,WAAOG,UAAU,CAACH,OAAX,CAAmB,KAAK+D,IAAxB,EAA8B;EAAEd,MAAAA,MAAM,EAAE,KAAKA;EAAf,KAA9B,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;EACA;;;EACEnD,EAAAA,WAAW,GAAmB;EAAA,QAAlBiE,IAAkB,uEAAX,KAAKA,IAAM;EAC5B,WAAO5D,UAAU,CAACL,WAAX,CAAuBiE,IAAvB,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;EACA;;;EACElE,EAAAA,WAAW,CAAChyC,KAAD,EAAQ;EACjB,WAAOsyC,UAAU,CAACN,WAAX,CAAuBhyC,KAAvB,CAAP;EACD;EACD;EACF;EACA;EACA;;;EACEq2C,EAAAA,OAAO,CAACH,IAAD,EAAO;EACZ,SAAKA,IAAL,GAAYA,IAAZ;EACD;EAED;EACF;EACA;EACA;;;EACEI,EAAAA,SAAS,CAAClB,MAAD,EAAS;EAChB,SAAKA,MAAL,GAAcA,MAAd;EACD;;EAhGqB;EAmGxB;EACA;EACA;EACA;EACA;EACA;;EACA9C,UAAU,CAACJ,GAAX,GAAiB,SAASA,GAAT,CAAa7mC,CAAb,EAAgB6qC,IAAhB,EAAsB;EACrC,QAAMK,UAAU,GAAGL,IAAI,GAAGA,IAA1B;EACA,SAAOK,UAAU,IAAI,IAAI7wC,IAAI,CAACyH,GAAL,CAAS9B,CAAT,EAAY,CAAZ,CAAJ,GAAqBkrC,UAAzB,CAAjB;EACD,CAHD;EAKA;EACA;EACA;EACA;EACA;EACA;;;EACAjE,UAAU,CAACL,WAAX,GAAyB,SAASA,WAAT,CAAqBiE,IAArB,EAA2B;EAClD,SAAOA,IAAI,GAAGvE,UAAd;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;;;EACAW,UAAU,CAACN,WAAX,GAAyB,SAASA,WAAT,CAAqBhyC,KAArB,EAA4B;EACnD,SAAOA,KAAK,GAAG2xC,UAAf;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACAW,UAAU,CAACH,OAAX,GAAqB,SAASA,OAAT,CAAiB+D,IAAjB,EAAqC;EAAA,MAAdxvC,OAAc,uEAAJ,EAAI;EACxD,MAAI;EAAE0uC,IAAAA,MAAM,GAAG;EAAX,MAAiB1uC,OAArB;EAEA,SAAQ0uC,MAAM,GAAG1vC,IAAI,CAACmwC,EAAd,GAAmBK,IAApB,GAA4B,CAAnC;EACD,CAJD;EAMA;EACA;EACA;EACA;EACA;;;EACA5D,UAAU,CAACF,SAAX,GAAuB,SAASA,SAAT,GAAkC;EAAA,MAAfgE,IAAe,uEAAR,MAAQ;EACvD,SAAO,IAAI1wC,IAAI,CAACmV,GAAL,CAASnV,IAAI,CAACmwC,EAAL,IAAWO,IAAI,GAAG,GAAlB,CAAT,CAAX;EACD,CAFD;;EC7IO,MAAM7D,WAAN,CAAkB;EACvB;EACF;EACA;EACA;EACA;EACA;EAEEnvC,EAAAA,WAAW,GAAe;EAAA,QAAdsD,OAAc,uEAAJ,EAAI;EACxB,SAAKyzB,EAAL,GAAUzzB,OAAO,CAACyzB,EAAR,KAAe36B,SAAf,GAA2B,GAA3B,GAAiCkH,OAAO,CAACyzB,EAAnD;EACA,SAAK+b,IAAL,GAAYxvC,OAAO,CAACwvC,IAAR,KAAiB12C,SAAjB,GAA6B,GAA7B,GAAmCkH,OAAO,CAACwvC,IAAvD;EACA,SAAKd,MAAL,GACE1uC,OAAO,CAAC0uC,MAAR,KAAmB51C,SAAnB,GACI,KACE,KAAK26B,EAAL,GAAUz0B,IAAI,CAACkV,IAAL,CAAU,CAAC62B,mBAAD,GAAuB/rC,IAAI,CAACmwC,EAAtC,CAAX,GAAwD,KAAKK,IAA7D,GACE,CAAC,IAAI,KAAK/b,EAAV,IAAgB,KAAK+b,IAArB,GAA4BxwC,IAAI,CAACmwC,EAAlC,GAAwC,CAF1C,CADJ,GAIInvC,OAAO,CAAC0uC,MALd;EAMD;EAED;EACF;EACA;EACA;EACA;EACA;EACA;;;EAEE/C,EAAAA,OAAO,GAAe;EAAA,QAAd3rC,OAAc,uEAAJ,EAAI;EACpB,QAAI;EAAE/L,MAAAA,MAAF;EAAUiY,MAAAA,MAAM,GAAG,KAAKw/B,SAAL;EAAnB,QAAwC1rC,OAA5C;;EACA,QAAI,CAAC/L,MAAL,EAAa;EACXA,MAAAA,MAAM,GAAG+K,IAAI,CAACmU,IAAL,CAAU,KAAKq8B,IAAL,GAAYtjC,MAAtB,CAAT;EACA,UAAIjY,MAAM,GAAG,CAAT,KAAe,CAAnB,EAAsBA,MAAM;EAC7B;;EAED,UAAMqvB,MAAM,GAAG,CAACrvB,MAAM,GAAG,CAAV,IAAe,CAA9B;EAEA,QAAIkF,IAAI,GAAG,IAAIwQ,YAAJ,CAAiB1V,MAAjB,CAAX;;EACA,SAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIirB,MAArB,EAA6BjrB,CAAC,EAA9B,EAAkC;EAChCc,MAAAA,IAAI,CAACd,CAAD,CAAJ,GAAU,KAAKmzC,GAAL,CAASnzC,CAAC,GAAGirB,MAAb,IAAuB,KAAKorB,MAAtC;EACAv1C,MAAAA,IAAI,CAAClF,MAAM,GAAG,CAAT,GAAaoE,CAAd,CAAJ,GAAuBc,IAAI,CAACd,CAAD,CAA3B;EACD;;EAED,WAAOc,IAAP;EACD;EAED;EACF;EACA;EACA;EACA;;;EAEEqyC,EAAAA,GAAG,CAAC7mC,CAAD,EAAI;EACL,WAAOknC,WAAW,CAACL,GAAZ,CAAgB7mC,CAAhB,EAAmB,KAAK6qC,IAAxB,EAA8B,KAAK/b,EAAnC,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;EACA;;;EACEiY,EAAAA,SAAS,GAA8B;EAAA,QAA7BgE,IAA6B,uEAAtB,MAAsB;EAAA,QAAdjc,EAAc,uEAAT,KAAKA,EAAI;EACrC,WAAOoY,WAAW,CAACH,SAAZ,CAAsBgE,IAAtB,EAA4Bjc,EAA5B,CAAP;EACD;EAED;EACF;EACA;EACA;;;EACEgY,EAAAA,OAAO,GAAG;EACR,WAAOI,WAAW,CAACJ,OAAZ,CAAoB,KAAK+D,IAAzB,EAA+B;EAAEd,MAAAA,MAAM,EAAE,KAAKA,MAAf;EAAuBjb,MAAAA,EAAE,EAAE,KAAKA;EAAhC,KAA/B,CAAP;EACD;EAED;EACF;EACA;EACA;EACA;EACA;;;EACE6X,EAAAA,WAAW,CAAChyC,KAAD,EAAQm6B,EAAR,EAAY;EACrB,WAAOoY,WAAW,CAACP,WAAZ,CAAwBhyC,KAAxB,EAA+Bm6B,EAA/B,CAAP;EACD;EACD;EACF;EACA;EACA;EACA;EACA;;;EACE8X,EAAAA,WAAW,GAAiC;EAAA,QAAhCiE,IAAgC,uEAAzB,KAAKA,IAAoB;EAAA,QAAd/b,EAAc,uEAAT,KAAKA,EAAI;EAC1C,WAAOoY,WAAW,CAACN,WAAZ,CAAwBiE,IAAxB,EAA8B/b,EAA9B,CAAP;EACD;EAED;EACF;EACA;EACA;;;EACEkc,EAAAA,OAAO,CAACH,IAAD,EAAO;EACZ,SAAKA,IAAL,GAAYA,IAAZ;EACD;EAED;EACF;EACA;EACA;;;EACEI,EAAAA,SAAS,CAAClB,MAAD,EAAS;EAChB,SAAKA,MAAL,GAAcA,MAAd;EACD;EAED;EACF;EACA;EACA;;;EACEoB,EAAAA,KAAK,CAACrc,EAAD,EAAK;EACR,SAAKA,EAAL,GAAUA,EAAV;EACD;;EAlHsB;EAqHzB;EACA;EACA;EACA;EACA;EACA;EACA;;EACAoY,WAAW,CAACL,GAAZ,GAAkB,SAASA,GAAT,CAAa7mC,CAAb,EAAgB6qC,IAAhB,EAAgC;EAAA,MAAV/b,EAAU,uEAAL,GAAK;EAChD,SAAO,CAAC,IAAIA,EAAL,IAAWmY,UAAU,CAACJ,GAAX,CAAe7mC,CAAf,EAAkB6qC,IAAlB,CAAX,GAAqC/b,EAAE,GAAG4X,QAAQ,CAACG,GAAT,CAAa7mC,CAAb,EAAgB6qC,IAAhB,CAAjD;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;;;EACA3D,WAAW,CAACP,WAAZ,GAA0B,SAASA,WAAT,CAAqBhyC,KAArB,EAAsC;EAAA,MAAVm6B,EAAU,uEAAL,GAAK;EAC9D,SAAOn6B,KAAK,IAAIm6B,EAAE,GAAG0X,mBAAL,GAA2B,CAA/B,CAAZ;EACD,CAFD;EAGA;EACA;EACA;EACA;EACA;EACA;;;EACAU,WAAW,CAACN,WAAZ,GAA0B,SAASA,WAAT,CAAqBiE,IAArB,EAAqC;EAAA,MAAV/b,EAAU,uEAAL,GAAK;EAC7D,SAAO+b,IAAI,IAAI/b,EAAE,GAAG0X,mBAAL,GAA2B,CAA/B,CAAX;EACD,CAFD;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACAU,WAAW,CAACJ,OAAZ,GAAsB,SAASA,OAAT,CAAiB+D,IAAjB,EAAqC;EAAA,MAAdxvC,OAAc,uEAAJ,EAAI;EACzD,MAAI;EAAE0uC,IAAAA,MAAM,GAAG,CAAX;EAAcjb,IAAAA,EAAE,GAAG;EAAnB,MAA2BzzB,OAA/B;EACA,SAAQwvC,IAAI,GAAGd,MAAP,IAAiBjb,EAAE,GAAGuX,gBAAL,GAAwB,CAAC,IAAIvX,EAAL,IAAWz0B,IAAI,CAACmwC,EAAzD,CAAD,GAAiE,CAAxE;EACD,CAHD;EAKA;EACA;EACA;EACA;EACA;EACA;;;EACAtD,WAAW,CAACH,SAAZ,GAAwB,SAASA,SAAT,GAA4C;EAAA,MAAzBgE,IAAyB,uEAAlB,MAAkB;EAAA,MAAVjc,EAAU,uEAAL,GAAK;EAClE,SAAOA,EAAE,GAAG,CAAL,GAASmY,UAAU,CAACF,SAAX,CAAqBgE,IAArB,CAAT,GAAsCrE,QAAQ,CAACK,SAAT,CAAmBgE,IAAnB,CAA7C;EACD,CAFD;;EC7KA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASK,wBAAT,CAAkCv1B,CAAlC,EAAqC;EAC1C,SAAO,UAAUoK,CAAV,EAAa;EAClB,QAAIorB,EAAE,GAAGx1B,CAAC,CAACvmB,MAAF,GAAW,CAApB;EACA,QAAIyH,MAAM,GAAG,CAAb;;EACA,SAAK,IAAIrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG23C,EAApB,EAAwB33C,CAAC,EAAzB,EAA6B;EAC3BqD,MAAAA,MAAM,IACJ8e,CAAC,CAACniB,CAAC,GAAG23C,EAAL,CAAD,GAAYnE,WAAW,CAACL,GAAZ,CAAgB5mB,CAAC,GAAGpK,CAAC,CAACniB,CAAD,CAArB,EAA0BmiB,CAAC,CAACniB,CAAC,GAAG23C,EAAE,GAAG,CAAV,CAA3B,EAAyCx1B,CAAC,CAACniB,CAAC,GAAG23C,EAAE,GAAG,CAAV,CAA1C,CADd;EAED;;EACD,WAAOt0C,MAAP;EACD,GARD;EASD;;ECnBD;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASu0C,cAAT,CAAwBz1B,CAAxB,EAA2B;EAChC,SAAO,UAAUoK,CAAV,EAAa;EAClB,QAAIorB,EAAE,GAAGx1B,CAAC,CAACvmB,MAAF,GAAW,CAApB;EACA,QAAIyH,MAAM,GAAG,CAAb;;EACA,SAAK,IAAIrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG23C,EAApB,EAAwB33C,CAAC,EAAzB,EAA6B;EAC3BqD,MAAAA,MAAM,IAAI8e,CAAC,CAACniB,CAAC,GAAG23C,EAAL,CAAD,GAAY3E,QAAQ,CAACG,GAAT,CAAa5mB,CAAC,GAAGpK,CAAC,CAACniB,CAAD,CAAlB,EAAuBmiB,CAAC,CAACniB,CAAC,GAAG23C,EAAE,GAAG,CAAV,CAAxB,CAAtB;EACD;;EACD,WAAOt0C,MAAP;EACD,GAPD;EAQD;;EChBD;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASw0C,gBAAT,CAA0B11B,CAA1B,EAA6B;EAClC,SAAO,UAAUoK,CAAV,EAAa;EAClB,QAAIorB,EAAE,GAAGx1B,CAAC,CAACvmB,MAAF,GAAW,CAApB;EACA,QAAIyH,MAAM,GAAG,CAAb;;EACA,SAAK,IAAIrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG23C,EAApB,EAAwB33C,CAAC,EAAzB,EAA6B;EAC3BqD,MAAAA,MAAM,IAAI8e,CAAC,CAACniB,CAAC,GAAG23C,EAAL,CAAD,GAAYpE,UAAU,CAACJ,GAAX,CAAe5mB,CAAC,GAAGpK,CAAC,CAACniB,CAAD,CAApB,EAAyBmiB,CAAC,CAACniB,CAAC,GAAG23C,EAAE,GAAG,CAAV,CAA1B,CAAtB;EACD;;EACD,WAAOt0C,MAAP;EACD,GAPD;EAQD;;ECZM,SAASy0C,UAAT,CAAoBh3C,IAApB,EAA0Bi3C,KAA1B,EAAiCpwC,OAAjC,EAA0C;EAC/C,MAAI;EACFqsC,IAAAA,KAAK,GAAG;EAAEpP,MAAAA,IAAI,EAAE;EAAR,KADN;EAEFoT,IAAAA,YAAY,GAAG;EACbpT,MAAAA,IAAI,EAAE;EADO;EAFb,MAKAj9B,OALJ;;EAOA,MAAI,OAAOqsC,KAAK,CAACpP,IAAb,KAAsB,QAA1B,EAAoC;EAClC,UAAM,IAAItoC,KAAJ,CAAU,yBAAV,CAAN;EACD;;EAED,MAAIsoC,IAAI,GAAGoP,KAAK,CAACpP,IAAN,CAAWl5B,WAAX,GAAyBnF,OAAzB,CAAiC,SAAjC,EAA4C,EAA5C,CAAX;EAEA,MAAI0xC,UAAJ;EACA,MAAIC,iBAAJ;;EACA,UAAQtT,IAAR;EACE,SAAK,UAAL;EACEqT,MAAAA,UAAU,GAAGL,cAAb;EACAM,MAAAA,iBAAiB,GAAG;EAClB5rC,QAAAA,CAAC,EAAE;EACD6rC,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAAC9rC,CADpB;EAEDsF,UAAAA,GAAG,EAAGwmC,IAAD,IAAUA,IAAI,CAAC9rC,CAAL,GAAS8rC,IAAI,CAACn3C,KAAL,GAAa,CAFpC;EAGDyQ,UAAAA,GAAG,EAAG0mC,IAAD,IAAUA,IAAI,CAAC9rC,CAAL,GAAS8rC,IAAI,CAACn3C,KAAL,GAAa,CAHpC;EAIDgzB,UAAAA,kBAAkB,EAAGmkB,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa;EAJ1C,SADe;EAOlBsL,QAAAA,CAAC,EAAE;EACD4rC,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAAC7rC,CADpB;EAEDqF,UAAAA,GAAG,EAAE,MAAM,GAFV;EAGDF,UAAAA,GAAG,EAAE,MAAM,CAHV;EAIDuiB,UAAAA,kBAAkB,EAAE,MAAM;EAJzB,SAPe;EAalBhzB,QAAAA,KAAK,EAAE;EACLk3C,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAACn3C,KADhB;EAEL2Q,UAAAA,GAAG,EAAGwmC,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa,CAFvB;EAGLyQ,UAAAA,GAAG,EAAG0mC,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa,IAHvB;EAILgzB,UAAAA,kBAAkB,EAAGmkB,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa;EAJtC;EAbW,OAApB;EAoBA;;EACF,SAAK,YAAL;EACEg3C,MAAAA,UAAU,GAAGJ,gBAAb;EACAK,MAAAA,iBAAiB,GAAG;EAClB5rC,QAAAA,CAAC,EAAE;EACD6rC,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAAC9rC,CADpB;EAEDsF,UAAAA,GAAG,EAAGwmC,IAAD,IAAUA,IAAI,CAAC9rC,CAAL,GAAS8rC,IAAI,CAACn3C,KAAL,GAAa,CAFpC;EAGDyQ,UAAAA,GAAG,EAAG0mC,IAAD,IAAUA,IAAI,CAAC9rC,CAAL,GAAS8rC,IAAI,CAACn3C,KAAL,GAAa,CAHpC;EAIDgzB,UAAAA,kBAAkB,EAAGmkB,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa;EAJ1C,SADe;EAOlBsL,QAAAA,CAAC,EAAE;EACD4rC,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAAC7rC,CADpB;EAEDqF,UAAAA,GAAG,EAAE,MAAM,GAFV;EAGDF,UAAAA,GAAG,EAAE,MAAM,CAHV;EAIDuiB,UAAAA,kBAAkB,EAAE,MAAM;EAJzB,SAPe;EAalBhzB,QAAAA,KAAK,EAAE;EACLk3C,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAACn3C,KADhB;EAEL2Q,UAAAA,GAAG,EAAGwmC,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa,CAFvB;EAGLyQ,UAAAA,GAAG,EAAG0mC,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa,IAHvB;EAILgzB,UAAAA,kBAAkB,EAAGmkB,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa;EAJtC;EAbW,OAApB;EAoBA;;EACF,SAAK,aAAL;EACEg3C,MAAAA,UAAU,GAAGP,wBAAb;EACAQ,MAAAA,iBAAiB,GAAG;EAClB5rC,QAAAA,CAAC,EAAE;EACD6rC,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAAC9rC,CADpB;EAEDsF,UAAAA,GAAG,EAAGwmC,IAAD,IAAUA,IAAI,CAAC9rC,CAAL,GAAS8rC,IAAI,CAACn3C,KAAL,GAAa,CAFpC;EAGDyQ,UAAAA,GAAG,EAAG0mC,IAAD,IAAUA,IAAI,CAAC9rC,CAAL,GAAS8rC,IAAI,CAACn3C,KAAL,GAAa,CAHpC;EAIDgzB,UAAAA,kBAAkB,EAAGmkB,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa;EAJ1C,SADe;EAOlBsL,QAAAA,CAAC,EAAE;EACD4rC,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAAC7rC,CADpB;EAEDqF,UAAAA,GAAG,EAAE,MAAM,GAFV;EAGDF,UAAAA,GAAG,EAAE,MAAM,CAHV;EAIDuiB,UAAAA,kBAAkB,EAAE,MAAM;EAJzB,SAPe;EAalBhzB,QAAAA,KAAK,EAAE;EACLk3C,UAAAA,IAAI,EAAGC,IAAD,IAAUA,IAAI,CAACn3C,KADhB;EAEL2Q,UAAAA,GAAG,EAAGwmC,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa,CAFvB;EAGLyQ,UAAAA,GAAG,EAAG0mC,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa,IAHvB;EAILgzB,UAAAA,kBAAkB,EAAGmkB,IAAD,IAAUA,IAAI,CAACn3C,KAAL,GAAa;EAJtC,SAbW;EAmBlBm6B,QAAAA,EAAE,EAAE;EACF+c,UAAAA,IAAI,EAAGC,IAAD,IAAWA,IAAI,CAAChd,EAAL,KAAY36B,SAAZ,GAAwB23C,IAAI,CAAChd,EAA7B,GAAkC,GADjD;EAEF1pB,UAAAA,GAAG,EAAE,MAAM,CAFT;EAGFE,UAAAA,GAAG,EAAE,MAAM,CAHT;EAIFqiB,UAAAA,kBAAkB,EAAE,MAAM;EAJxB;EAnBc,OAApB;EA0BA;;EACF;EACE,YAAM,IAAI33B,KAAJ,CAAU,gCAAV,CAAN;EA7EJ;;EAgFA,MAAIgQ,CAAC,GAAGxL,IAAI,CAACwL,CAAb;EACA,MAAIwF,IAAI,GAAGumC,GAAW,CAACv3C,IAAI,CAACyL,CAAN,CAAtB;EACA,MAAIA,CAAC,GAAG,IAAIxM,KAAJ,CAAUuM,CAAC,CAAC1Q,MAAZ,CAAR;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsM,CAAC,CAAC1Q,MAAtB,EAA8BoE,CAAC,EAA/B,EAAmC;EACjCuM,IAAAA,CAAC,CAACvM,CAAD,CAAD,GAAOc,IAAI,CAACyL,CAAL,CAAOvM,CAAP,IAAY8R,IAAnB;EACD;;EAED,OAAK,IAAI9R,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC+3C,IAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASuM,CAAT,IAAcuF,IAAd;EACD;;EAED,MAAIqiB,UAAU,GAAGmkB,UAAU,CAAC,EAAD,EAAKN,YAAY,CAAC7jB,UAAlB,EAA8B+jB,iBAA9B,CAA3B;;EAEA,OAAK,IAAInpC,GAAT,IAAgBolB,UAAhB,EAA4B;EAC1B,SAAK,IAAIokB,GAAT,IAAgBpkB,UAAU,CAACplB,GAAD,CAA1B,EAAiC;EAC/B,UAAI,CAAChP,KAAK,CAACyQ,OAAN,CAAc2jB,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,CAAd,CAAL,EAA0C;EACxCpkB,QAAAA,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,IAAuB,CAACpkB,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,CAAD,CAAvB;EACD;;EACD,UACEpkB,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,EAAqB38C,MAArB,KAAgC,CAAhC,IACAu4B,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,EAAqB38C,MAArB,KAAgCm8C,KAAK,CAACn8C,MAFxC,EAGE;EACA,cAAM,IAAIU,KAAJ,CAAW,iBAAgByS,GAAI,IAAGwpC,GAAI,iBAAtC,CAAN;EACD;;EACD,WAAK,IAAIp8C,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGg4B,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,EAAqB38C,MAAjD,EAAyDO,KAAK,EAA9D,EAAkE;EAChE,YAAI,OAAOg4B,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,EAAqBp8C,KAArB,CAAP,KAAuC,QAA3C,EAAqD;EACnD,cAAIN,KAAK,GAAGs4B,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,EAAqBp8C,KAArB,CAAZ;;EACAg4B,UAAAA,UAAU,CAACplB,GAAD,CAAV,CAAgBwpC,GAAhB,EAAqBp8C,KAArB,IAA8B,MAAMN,KAApC;EACD;EACF;EACF;EACF;;EAEDm8C,EAAAA,YAAY,CAAC7jB,UAAb,GAA0BA,UAA1B;EAEA,SAAO;EACL5nB,IAAAA,CADK;EAELD,IAAAA,CAFK;EAGLwF,IAAAA,IAHK;EAILimC,IAAAA,KAJK;EAKLE,IAAAA,UALK;EAMLD,IAAAA;EANK,GAAP;EAQD;;EChJD,MAAMQ,mBAAmB,GAAG,CAA5B;EAEO,SAASC,YAAT,GAAgD;EAAA,MAA1BC,mBAA0B,uEAAJ,EAAI;EACrD,MAAI;EAAE9T,IAAAA,IAAF;EAAQj9B,IAAAA;EAAR,MAAoB+wC,mBAAxB;EACA9T,EAAAA,IAAI,GAAG+T,OAAO,CAAC/T,IAAD,CAAd;;EACA,UAAQA,IAAR;EACE,SAAK4T,mBAAL;EACE,aAAO;EACLI,QAAAA,SAAS,EAAEC,kBADN;EAELH,QAAAA,mBAAmB,EAAErlB,YAAY,CAACuR,IAAD,EAAOj9B,OAAP;EAF5B,OAAP;;EAIF;EACE,YAAM,IAAIrL,KAAJ,CAAW,wBAAX,CAAN;EAPJ;EASD;;EAED,SAAS+2B,YAAT,CAAsBuR,IAAtB,EAA0C;EAAA,MAAdj9B,OAAc,uEAAJ,EAAI;;EACxC;EACA,UAAQi9B,IAAR;EACE,SAAK4T,mBAAL;EACE,aAAO7pC,MAAM,CAAC8zB,MAAP,CAAc,EAAd,EAAkBqW,SAAlB,EAA6BnxC,OAA7B,CAAP;EAFJ;EAID;;EAED,SAASgxC,OAAT,CAAiB/T,IAAjB,EAAuB;EACrB,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B,OAAOA,IAAP;;EAC9B,UAAQA,IAAI,CAACl5B,WAAL,GAAmBnF,OAAnB,CAA2B,SAA3B,EAAsC,EAAtC,CAAR;EACE,SAAK,IAAL;EACA,SAAK,oBAAL;EACE,aAAOiyC,mBAAP;;EACF;EACE,YAAM,IAAIl8C,KAAJ,CAAW,wBAAX,CAAN;EALJ;EAOD;;EAED,MAAMw8C,SAAS,GAAG;EAChBnlB,EAAAA,OAAO,EAAE,GADO;EAEhBG,EAAAA,aAAa,EAAE,GAFC;EAGhBC,EAAAA,cAAc,EAAE;EAHA,CAAlB;;ECjCA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASglB,QAAT,CAAkBj4C,IAAlB,EAAwBmxC,QAAxB,EAAgD;EAAA,MAAdtqC,OAAc,uEAAJ,EAAI;EACrD,QAAM;EAAE4E,IAAAA,CAAF;EAAKD,IAAAA,CAAL;EAAQwF,IAAAA,IAAR;EAAcimC,IAAAA,KAAd;EAAqBE,IAAAA,UAArB;EAAiCD,IAAAA;EAAjC,MAAkDF,UAAU,CAChEh3C,IADgE,EAEhEmxC,QAFgE,EAGhEtqC,OAHgE,CAAlE;EAMA,MAAIwsB,UAAU,GAAG6jB,YAAY,CAAC7jB,UAA9B;EAEA,MAAI6kB,QAAQ,GAAGjB,KAAK,CAACn8C,MAArB;EACA,MAAIq9C,YAAY,GAAGtqC,MAAM,CAACC,IAAP,CAAYulB,UAAZ,CAAnB;EACA,MAAIgB,QAAQ,GAAG6jB,QAAQ,GAAGC,YAAY,CAACr9C,MAAvC;EACA,MAAIs9C,IAAI,GAAG,IAAI5nC,YAAJ,CAAiB6jB,QAAjB,CAAX;EACA,MAAIgkB,IAAI,GAAG,IAAI7nC,YAAJ,CAAiB6jB,QAAjB,CAAX;EACA,MAAIikB,KAAK,GAAG,IAAI9nC,YAAJ,CAAiB6jB,QAAjB,CAAZ;EACA,MAAIlB,kBAAkB,GAAG,IAAI3iB,YAAJ,CAAiB6jB,QAAjB,CAAzB;;EAEA,OAAK,IAAIn1B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGg5C,QAApB,EAA8Bh5C,CAAC,EAA/B,EAAmC;EACjC,QAAIo4C,IAAI,GAAGL,KAAK,CAAC/3C,CAAD,CAAhB;;EACA,SAAK,IAAI0hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu3B,YAAY,CAACr9C,MAAjC,EAAyC8lB,CAAC,EAA1C,EAA8C;EAC5C,UAAI3S,GAAG,GAAGkqC,YAAY,CAACv3B,CAAD,CAAtB;EACA,UAAIy2B,IAAI,GAAGhkB,UAAU,CAACplB,GAAD,CAAV,CAAgBopC,IAA3B;EACA,UAAIzmC,GAAG,GAAGyiB,UAAU,CAACplB,GAAD,CAAV,CAAgB2C,GAA1B;EACA,UAAIE,GAAG,GAAGuiB,UAAU,CAACplB,GAAD,CAAV,CAAgB6C,GAA1B;EACA,UAAIynC,uBAAuB,GAAGllB,UAAU,CAACplB,GAAD,CAAV,CAAgBklB,kBAA9C;EACAmlB,MAAAA,KAAK,CAACp5C,CAAC,GAAG0hB,CAAC,GAAGs3B,QAAT,CAAL,GAA0Bb,IAAI,CAACn4C,CAAC,GAAGm4C,IAAI,CAACv8C,MAAV,CAAJ,CAAsBw8C,IAAtB,CAA1B;EACAc,MAAAA,IAAI,CAACl5C,CAAC,GAAG0hB,CAAC,GAAGs3B,QAAT,CAAJ,GAAyBtnC,GAAG,CAAC1R,CAAC,GAAG0R,GAAG,CAAC9V,MAAT,CAAH,CAAoBw8C,IAApB,CAAzB;EACAe,MAAAA,IAAI,CAACn5C,CAAC,GAAG0hB,CAAC,GAAGs3B,QAAT,CAAJ,GAAyBpnC,GAAG,CAAC5R,CAAC,GAAG4R,GAAG,CAAChW,MAAT,CAAH,CAAoBw8C,IAApB,CAAzB;EACAnkB,MAAAA,kBAAkB,CAACj0B,CAAC,GAAG0hB,CAAC,GAAGs3B,QAAT,CAAlB,GAAuCK,uBAAuB,CAC5Dr5C,CAAC,GAAGq5C,uBAAuB,CAACz9C,MADgC,CAAvB,CAErCw8C,IAFqC,CAAvC;EAGD;EACF;;EAED,MAAI;EAAEQ,IAAAA,SAAF;EAAaF,IAAAA;EAAb,MAAqCD,YAAY,CAACT,YAAD,CAArD;EAEAU,EAAAA,mBAAmB,CAACllB,SAApB,GAAgC0lB,IAAhC;EACAR,EAAAA,mBAAmB,CAACjlB,SAApB,GAAgC0lB,IAAhC;EACAT,EAAAA,mBAAmB,CAAChlB,aAApB,GAAoC0lB,KAApC;EACAV,EAAAA,mBAAmB,CAACzkB,kBAApB,GAAyCA,kBAAzC;EAEA,MAAIqlB,IAAI,GAAGV,SAAS,CAAC;EAAEtsC,IAAAA,CAAF;EAAKC,IAAAA;EAAL,GAAD,EAAW0rC,UAAX,EAAuBS,mBAAvB,CAApB;EAEA,MAAI;EAAEpiB,IAAAA,cAAc,EAAEzB,KAAlB;EAAyB0B,IAAAA;EAAzB,MAAwC+iB,IAA5C;EACA,MAAIj2C,MAAM,GAAG;EAAEwxB,IAAAA,KAAF;EAAS0B,IAAAA,UAAT;EAAqBwhB,IAAAA;EAArB,GAAb;;EACA,OAAK,IAAI/3C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGg5C,QAApB,EAA8Bh5C,CAAC,EAA/B,EAAmC;EACjCs5C,IAAAA,IAAI,CAACjjB,eAAL,CAAqBr2B,CAAC,GAAGg5C,QAAzB,KAAsClnC,IAAtC;;EACA,SAAK,IAAI4P,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGu3B,YAAY,CAACr9C,MAAjC,EAAyC8lB,CAAC,EAA1C,EAA8C;EAC5C;EACAq2B,MAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASi5C,YAAY,CAACv3B,CAAD,CAArB,IAA4B43B,IAAI,CAACjjB,eAAL,CAAqBr2B,CAAC,GAAG0hB,CAAC,GAAGs3B,QAA7B,CAA5B;EACD;EACF;;EAED,SAAO31C,MAAP;EACD;;ECjGD;EACA;EACA;EACA;EACA;EAEO,SAASk2C,UAAT,CAAoBtH,QAApB,EAA0C;EAAA,MAAZp+B,MAAY,uEAAH,CAAG;EAC/C,MAAIo+B,QAAQ,CAACr2C,MAAT,KAAoB,CAAxB,EAA2B,OAAO,EAAP;EAC3B,MAAIm8C,KAAK,GAAG9F,QAAQ,CAAC5nB,IAAT,CAAc,CAACphB,CAAD,EAAImH,CAAJ,KAAUnH,CAAC,CAACqD,CAAF,GAAM8D,CAAC,CAAC9D,CAAhC,CAAZ;EAEA,MAAIktC,YAAY,GAAG;EAAEltC,IAAAA,CAAC,EAAE9M,MAAM,CAAC89B,iBAAZ;EAA+Br8B,IAAAA,KAAK,EAAE;EAAtC,GAAnB;EACA,MAAIw4C,YAAY,GAAG,CAACD,YAAD,CAAnB;EACA,MAAIE,MAAM,GAAG,EAAb;;EAEA,OAAK,IAAItB,IAAT,IAAiBL,KAAjB,EAAwB;EACtB,QACE,CAACK,IAAI,CAAC9rC,CAAL,GAASktC,YAAY,CAACltC,CAAvB,KAA6B8rC,IAAI,CAACn3C,KAAL,GAAau4C,YAAY,CAACv4C,KAAvD,KACA4S,MAAM,GAAG,CAFX,EAGE;EACA4lC,MAAAA,YAAY,CAACz9C,IAAb,CAAkBo8C,IAAlB;EACD,KALD,MAKO;EACLqB,MAAAA,YAAY,GAAG,CAACrB,IAAD,CAAf;EACAsB,MAAAA,MAAM,CAAC19C,IAAP,CAAYy9C,YAAZ;EACD;;EACDrB,IAAAA,IAAI,CAACuB,KAAL,GAAaD,MAAM,CAAC99C,MAAP,GAAgB,CAA7B;EACA49C,IAAAA,YAAY,GAAGpB,IAAf;EACD;;EAED,SAAOsB,MAAP;EACD;;ECxBD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASE,aAAT,CAAuB94C,IAAvB,EAA6BmxC,QAA7B,EAAqD;EAAA,MAAdtqC,OAAc,uEAAJ,EAAI;EAC1D,QAAM;EACJkyC,IAAAA,WAAW,GAAG,CADV;EAEJC,IAAAA,YAAY,GAAG,CAFX;EAGJ9F,IAAAA,KAAK,GAAG;EACNpP,MAAAA,IAAI,EAAE;EADA,KAHJ;EAMJoT,IAAAA,YAAY,GAAG;EACbpT,MAAAA,IAAI,EAAE,IADO;EAEbj9B,MAAAA,OAAO,EAAE;EACP4rB,QAAAA,OAAO,EAAE;EADF;EAFI;EANX,MAYF5rB,OAZJ;;EAcA,MAAI7G,IAAI,CAACwL,CAAL,CAAO,CAAP,IAAYxL,IAAI,CAACwL,CAAL,CAAO,CAAP,CAAhB,EAA2B;EACzBxL,IAAAA,IAAI,CAACwL,CAAL,CAAO6E,OAAP;EACArQ,IAAAA,IAAI,CAACyL,CAAL,CAAO4E,OAAP;EACD;;EAED,MAAIuoC,MAAM,GAAGH,UAAU,CAACtH,QAAD,EAAW4H,WAAX,CAAvB;EAEA,MAAIE,OAAO,GAAG,EAAd;;EACA,OAAK,MAAMhC,KAAX,IAAoB2B,MAApB,EAA4B;EAC1B,UAAMM,SAAS,GAAGjC,KAAK,CAAC,CAAD,CAAvB;EACA,UAAMkC,QAAQ,GAAGlC,KAAK,CAACA,KAAK,CAACn8C,MAAN,GAAe,CAAhB,CAAtB;EAEA,UAAM2V,IAAI,GAAGyoC,SAAS,CAAC1tC,CAAV,GAAc0tC,SAAS,CAAC/4C,KAAV,GAAkB64C,YAA7C;EACA,UAAMnoB,EAAE,GAAGsoB,QAAQ,CAAC3tC,CAAT,GAAa2tC,QAAQ,CAACh5C,KAAT,GAAiB64C,YAAzC;EACA,UAAM;EAAEllC,MAAAA,SAAF;EAAaE,MAAAA;EAAb,QAAyBiiB,eAAe,CAACj2B,IAAI,CAACwL,CAAN,EAAS;EAAEiF,MAAAA,IAAF;EAAQogB,MAAAA;EAAR,KAAT,CAA9C,CAN0B;;EAQ1B,UAAMuoB,YAAY,GAAG;EACnB5tC,MAAAA,CAAC,EAAExL,IAAI,CAACwL,CAAL,CAAOoE,KAAP,CAAakE,SAAb,EAAwBE,OAAxB,CADgB;EAEnBvI,MAAAA,CAAC,EAAEzL,IAAI,CAACyL,CAAL,CAAOmE,KAAP,CAAakE,SAAb,EAAwBE,OAAxB;EAFgB,KAArB;;EAIA,QAAIolC,YAAY,CAAC5tC,CAAb,CAAe1Q,MAAf,GAAwB,CAA5B,EAA+B;EAC7B,UAAI;EAAEm8C,QAAAA,KAAK,EAAEoC;EAAT,UAA4BpB,QAAQ,CAACmB,YAAD,EAAenC,KAAf,EAAsB;EAC5D/D,QAAAA,KAD4D;EAE5DgE,QAAAA;EAF4D,OAAtB,CAAxC;EAIA+B,MAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CAAeD,cAAf,CAAV;EACD,KAND,MAMO;EACLJ,MAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CAAerC,KAAf,CAAV;EACD;EACF;;EACD,SAAOgC,OAAP;EACD;;EClED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAASM,cAAT,CAAwBpI,QAAxB,EAAgD;EAAA,MAAdtqC,OAAc,uEAAJ,EAAI;EACrD,MAAI;EACF1G,IAAAA,KAAK,GAAG,IADN;EAEF+yC,IAAAA,KAAK,GAAG;EAAEpP,MAAAA,IAAI,EAAE;EAAR,KAFN;EAGFoT,IAAAA,YAAY,GAAG;EAAEpT,MAAAA,IAAI,EAAE,IAAR;EAAcrR,MAAAA,OAAO,EAAE;EAAvB;EAHb,MAIA5rB,OAJJ;EAKA,MAAI2yC,UAAU,GAAG,EAAjB,CANqD;;EAQrD,MAAI1oC,GAAG,GAAG,CAAV;EAEA,MAAIyE,IAAI,GAAG,CAAX;EAEA,MAAIyW,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI9sB,CAAC,GAAGiyC,QAAQ,CAACr2C,MAAT,GAAkB,CAA/B,EAAkCoE,CAAC,IAAI,CAAvC,EAA0CA,CAAC,EAA3C,EAA+C;EAC7C,QAAIiyC,QAAQ,CAACjyC,CAAD,CAAR,CAAYk2C,IAAhB,EAAsB;EACpBoE,MAAAA,UAAU,CAACt+C,IAAX,CAAgBi2C,QAAQ,CAACpmB,MAAT,CAAgB7rB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,CAAhB;EACD;EACF,GAjBoD;;;EAmBrDs6C,EAAAA,UAAU,CAACt+C,IAAX,CAAgB;EAAEsQ,IAAAA,CAAC,EAAE9M,MAAM,CAACy2C;EAAZ,GAAhB;EAEA,MAAIsE,UAAU,GAAG;EAAEjuC,IAAAA,CAAC,EAAE,CAACguC,UAAU,CAAC,CAAD,CAAV,CAAchuC,CAAf,CAAL;EAAwBC,IAAAA,CAAC,EAAE,CAAC+tC,UAAU,CAAC,CAAD,CAAV,CAAc/tC,CAAf;EAA3B,GAAjB;EACA,MAAI2tB,OAAO,GAAG,CAAC,CAAD,CAAd;;EACA,OAAK,IAAIl6B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGs6C,UAAU,CAAC1+C,MAA/B,EAAuCoE,CAAC,EAAxC,EAA4C;EAC1C,QAAI2G,IAAI,CAACC,GAAL,CAAS0zC,UAAU,CAACt6C,CAAC,GAAG,CAAL,CAAV,CAAkBsM,CAAlB,GAAsBguC,UAAU,CAACt6C,CAAD,CAAV,CAAcsM,CAA7C,IAAkDrL,KAAtD,EAA6D;EAC3Ds5C,MAAAA,UAAU,CAACjuC,CAAX,CAAatQ,IAAb,CAAkBs+C,UAAU,CAACt6C,CAAD,CAAV,CAAcsM,CAAhC;EACAiuC,MAAAA,UAAU,CAAChuC,CAAX,CAAavQ,IAAb,CAAkBs+C,UAAU,CAACt6C,CAAD,CAAV,CAAcuM,CAAhC;;EACA,UAAI+tC,UAAU,CAACt6C,CAAD,CAAV,CAAcuM,CAAd,GAAkBqF,GAAtB,EAA2B;EACzBA,QAAAA,GAAG,GAAG0oC,UAAU,CAACt6C,CAAD,CAAV,CAAcuM,CAApB;EACA8J,QAAAA,IAAI,GAAGrW,CAAP;EACD;;EACDk6B,MAAAA,OAAO,CAACl+B,IAAR,CAAagE,CAAb;EACA8sB,MAAAA,KAAK;EACN,KATD,MASO;EACL,UAAIA,KAAK,GAAG,CAAZ,EAAe;EACb,YAAI0tB,MAAM,GAAGzB,QAAQ,CACnBwB,UADmB,EAEnB,CACE;EACEjuC,UAAAA,CAAC,EAAEguC,UAAU,CAACjkC,IAAD,CAAV,CAAiB/J,CADtB;EAEEC,UAAAA,CAAC,EAAEqF,GAFL;EAGE3Q,UAAAA,KAAK,EAAE0F,IAAI,CAACC,GAAL,CACL2zC,UAAU,CAACjuC,CAAX,CAAa,CAAb,IAAkBiuC,UAAU,CAACjuC,CAAX,CAAaiuC,UAAU,CAACjuC,CAAX,CAAa1Q,MAAb,GAAsB,CAAnC,CADb;EAHT,SADF,CAFmB,EAWnB;EAAEo4C,UAAAA,KAAF;EAASgE,UAAAA;EAAT,SAXmB,CAArB;EAaA,YAAI;EAAED,UAAAA,KAAK,EAAEK;EAAT,YAAkBoC,MAAtB;EACApC,QAAAA,IAAI,CAAC,CAAD,CAAJ,CAAQj8C,KAAR,GAAgBwK,IAAI,CAACwU,KAAL,CACd+e,OAAO,CAACqG,MAAR,CAAe,CAACt3B,CAAD,EAAImH,CAAJ,KAAUnH,CAAC,GAAGmH,CAA7B,EAAgC,CAAhC,IAAqC8pB,OAAO,CAACt+B,MAD/B,CAAhB;EAGAw8C,QAAAA,IAAI,CAAC,CAAD,CAAJ,CAAQlC,IAAR,GAAe,KAAf;EACAjE,QAAAA,QAAQ,CAACj2C,IAAT,CAAco8C,IAAI,CAAC,CAAD,CAAlB;EACD,OApBD,MAoBO;EACL;EACAle,QAAAA,OAAO,CAAC3qB,OAAR,CAAiBpT,KAAD,IAAW;EACzB81C,UAAAA,QAAQ,CAACj2C,IAAT,CAAcs+C,UAAU,CAACn+C,KAAD,CAAxB;EACD,SAFD;EAGD;;EACDo+C,MAAAA,UAAU,GAAG;EAAEjuC,QAAAA,CAAC,EAAE,CAACguC,UAAU,CAACt6C,CAAD,CAAV,CAAcsM,CAAf,CAAL;EAAwBC,QAAAA,CAAC,EAAE,CAAC+tC,UAAU,CAACt6C,CAAD,CAAV,CAAcuM,CAAf;EAA3B,OAAb;EACA2tB,MAAAA,OAAO,GAAG,CAACl6B,CAAD,CAAV;EACA4R,MAAAA,GAAG,GAAG0oC,UAAU,CAACt6C,CAAD,CAAV,CAAcuM,CAApB;EACA8J,MAAAA,IAAI,GAAGrW,CAAP;EACA8sB,MAAAA,KAAK,GAAG,CAAR;EACD;EACF;;EACDmlB,EAAAA,QAAQ,CAAC5nB,IAAT,CAAc,CAACphB,CAAD,EAAImH,CAAJ,KAAU;EACtB,WAAOnH,CAAC,CAACqD,CAAF,GAAM8D,CAAC,CAAC9D,CAAf;EACD,GAFD;EAIA,SAAO2lC,QAAP;EACD;;EChFD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASwI,kBAAT,CAA4B35C,IAA5B,EAAgD;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACrD,QAAM;EACJ4J,IAAAA,IADI;EAEJogB,IAAAA,EAFI;EAGJmiB,IAAAA,UAHI;EAIJ4G,IAAAA,eAAe,GAAG,CAJd;EAKJrG,IAAAA,WAAW,GAAG,IALV;EAMJF,IAAAA,UAAU,GAAG,OANT;EAOJwG,IAAAA,UAAU,GAAG,KAPT;EAQJ1G,IAAAA,OAAO,GAAG,IARN;EASJ8E,IAAAA,QAAQ,GAAG,KATP;EAUJc,IAAAA,WAAW,GAAG,CAVV;EAWJtF,IAAAA,gBAAgB,GAAG,IAXf;EAYJP,IAAAA,KAAK,GAAG;EAAEpP,MAAAA,IAAI,EAAE;EAAR,KAZJ;EAaJoT,IAAAA,YAAY,GAAG;EAAEpT,MAAAA,IAAI,EAAE;EAAR,KAbX;EAcJgW,IAAAA,UAAU,GAAG,IAdT;EAeJC,IAAAA,YAAY,GAAG,KAfX;EAgBJ9G,IAAAA,SAAS,GAAG;EAAE9hB,MAAAA,UAAU,EAAE,CAAd;EAAiBE,MAAAA,UAAU,EAAE;EAA7B;EAhBR,MAiBFxqB,OAjBJ;;EAmBA,MAAI4J,IAAI,KAAK9Q,SAAT,IAAsBkxB,EAAE,KAAKlxB,SAAjC,EAA4C;EAC1CK,IAAAA,IAAI,GAAG0gC,SAAS,CAAC1gC,IAAD,EAAO,CAAC;EAAEyQ,MAAAA,IAAF;EAAQogB,MAAAA;EAAR,KAAD,CAAP,CAAhB;EACD;;EAED,QAAM+L,MAAM,GAAGod,SAAS,CAACh6C,IAAI,CAACyL,CAAN,EAAS;EAAEunC,IAAAA,UAAF;EAAc6G,IAAAA,UAAd;EAA0BD,IAAAA;EAA1B,GAAT,CAAxB;EAEA,MAAIK,cAAc,GAAG;EACnB/G,IAAAA,KADmB;EAEnB4G,IAAAA,UAFmB;EAGnB7B,IAAAA,QAHmB;EAInBc,IAAAA,WAJmB;EAKnB9F,IAAAA,SALmB;EAMnBM,IAAAA,WANmB;EAOnBF,IAAAA,UAPmB;EAQnBL,IAAAA,UAAU,EAAEpW,MAAM,CAACgC,QARA;EASnBuU,IAAAA,OATmB;EAUnB+D,IAAAA,YAVmB;EAWnBzD,IAAAA;EAXmB,GAArB;EAcA,MAAIwD,KAAK,GAAGiD,WAAW,CAACl6C,IAAD,EAAOi6C,cAAP,CAAvB;;EAEA,MAAIF,YAAJ,EAAkB;EAChBE,IAAAA,cAAc,CAACjH,UAAf,GAA4BpW,MAAM,CAACiC,QAAnC;EACAoY,IAAAA,KAAK,CAAC/7C,IAAN,CAAW,GAAGi/C,gBAAgB,CAACn6C,IAAD,EAAOi6C,cAAP,CAA9B;EACD;;EAED,SAAOhD,KAAP;EACD;;EAED,SAASiD,WAAT,CAAqBl6C,IAArB,EAA2B6G,OAA3B,EAAoC;EAClC,QAAM;EACJqsC,IAAAA,KADI;EAEJ4G,IAAAA,UAFI;EAGJ7B,IAAAA,QAHI;EAIJc,IAAAA,WAJI;EAKJ9F,IAAAA,SALI;EAMJM,IAAAA,WANI;EAOJF,IAAAA,UAPI;EAQJL,IAAAA,UARI;EASJG,IAAAA,OATI;EAUJ+D,IAAAA,YAVI;EAWJzD,IAAAA;EAXI,MAYF5sC,OAZJ;EAcA,MAAIsqC,QAAQ,GAAG4B,GAAG,CAAC/yC,IAAD,EAAO;EACvBizC,IAAAA,SADuB;EAEvBM,IAAAA,WAFuB;EAGvBF,IAAAA,UAHuB;EAIvBL,IAAAA,UAJuB;EAKvBG,IAAAA,OALuB;EAMvBM,IAAAA;EANuB,GAAP,CAAlB;;EASA,MAAIqG,UAAJ,EAAgB;EACd3I,IAAAA,QAAQ,GAAGoI,cAAc,CAACpI,QAAD,EAAW;EAClChxC,MAAAA,KAAK,EAAE25C,UAD2B;EAElC5G,MAAAA,KAFkC;EAGlCgE,MAAAA;EAHkC,KAAX,CAAzB;EAKD;;EAED,MAAIe,QAAJ,EAAc;EACZ9G,IAAAA,QAAQ,GAAG2H,aAAa,CAAC94C,IAAD,EAAOmxC,QAAP,EAAiB;EACvC+B,MAAAA,KADuC;EAEvC6F,MAAAA,WAFuC;EAGvC7B,MAAAA;EAHuC,KAAjB,CAAxB;EAKD;;EAED,SAAO/F,QAAP;EACD;;EAED,SAASgJ,gBAAT,CAA0Bn6C,IAA1B,EAAgC6G,OAAhC,EAAyC;EACvC,MAAI;EAAE2E,IAAAA,CAAF;EAAKC,IAAAA;EAAL,MAAWzL,IAAf;EACA,MAAIo6C,aAAa,GAAG,IAAI5pC,YAAJ,CAAiBxQ,IAAI,CAACyL,CAAL,CAAO3Q,MAAxB,CAApB;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGk7C,aAAa,CAACt/C,MAAlC,EAA0CoE,CAAC,EAA3C,EAA+C;EAC7Ck7C,IAAAA,aAAa,CAACl7C,CAAD,CAAb,GAAmB,CAAC,CAAD,GAAKuM,CAAC,CAACvM,CAAD,CAAzB;EACD;;EAED,MAAIiyC,QAAQ,GAAG+I,WAAW,CAAC;EAAE1uC,IAAAA,CAAF;EAAKC,IAAAA,CAAC,EAAE2uC;EAAR,GAAD,EAA0BvzC,OAA1B,CAA1B;;EAEA,OAAK,IAAI3H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiyC,QAAQ,CAACr2C,MAA7B,EAAqCoE,CAAC,EAAtC,EAA0C;EACxCiyC,IAAAA,QAAQ,CAACjyC,CAAD,CAAR,CAAYuM,CAAZ,IAAiB,CAAC,CAAlB;EACD;;EACD,SAAO0lC,QAAP;EACD;;EAED,SAAS6I,SAAT,CAAmBh6C,IAAnB,EAAuC;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACrC,QAAM;EAAEmsC,IAAAA,UAAF;EAAc6G,IAAAA,UAAd;EAA0BD,IAAAA;EAA1B,MAA8C/yC,OAApD;;EAEA,QAAMwzC,YAAY,GAAIrH,UAAD,IACnB,OAAOA,UAAP,KAAsB,QAAtB,GACI;EAAEpU,IAAAA,QAAQ,EAAEoU,UAAZ;EAAwBnU,IAAAA,QAAQ,EAAE,CAACmU;EAAnC,GADJ,GAEIA,UAHN;;EAKA,MAAIA,UAAJ,EAAgB;EACd,WAAOqH,YAAY,CAACrH,UAAD,CAAnB;EACD,GAFD,MAEO;EACL,WAAO6G,UAAU,GACbnd,aAAa,CAAC18B,IAAD,EAAO;EAAEg9B,MAAAA,SAAS,EAAE4c;EAAb,KAAP,CADA,GAEbS,YAAY,CAACzkB,eAAe,CAAC51B,IAAD,CAAf,GAAwB45C,eAAzB,CAFhB;EAGD;EACF;;ECxJD;EACA;EACA;EACA;EACA,MAAMU,QAAQ,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,OAArB,EAA8B,GAA9B,EAAmC,MAAnC,EAA2C,GAA3C,EAAgD,GAAhD,CAAjB;EACA,IAAIC,QAAQ,GAAG,GAAf;EACA,IAAIC,aAAa,GAAG,GAApB;;EACA,IAAIC,aAAa,GAAG,CAApB;;EACA,IAAIC,SAAS,GAAG;EAAEC,EAAAA,KAAK,EAAE,GAAT;EAAcrX,EAAAA,SAAS,EAAE;EAAzB,CAAhB;AAEA,kBAAe;EACb;EACF;EACA;EACA;EACA;EACA;EACEsX,EAAAA,cAAc,EAAE,UAAUC,MAAV,EAAgC;EAAA,QAAdh0C,OAAc,uEAAJ,EAAI;EAC9C,QAAI;EAAEi0C,MAAAA,QAAQ,GAAGJ;EAAb,QAA2B7zC,OAA/B;EACAg0C,IAAAA,MAAM,CAAC9L,YAAP,GAAsB,GAAtB,CAF8C;EAI9C;EACA;;EACA8L,IAAAA,MAAM,CAACE,OAAP,GAAiBC,oBAAoB,CAACH,MAAD,EAAS;EAC5CI,MAAAA,QAAQ,EAAET,aADkC;EAE5CplB,MAAAA,SAAS,EAAE,CAFiC;EAG5C0lB,MAAAA;EAH4C,KAAT,CAArC;EAKAD,IAAAA,MAAM,CAAClJ,UAAP,GAAoB,IAApB,CAX8C;;EAa9C,QAAIkJ,MAAM,CAACE,OAAP,IAAkB,IAAlB,IAA0BF,MAAM,CAACK,SAAP,CAAiBpgD,MAAjB,GAA0B,EAAxD,EAA4D;EAC1D+/C,MAAAA,MAAM,CAAClJ,UAAP,GAAoB,KAApB;EACA,UAAIxW,EAAJ,EAAQggB,EAAR,EAAYC,UAAZ;EACA,UAAIx6B,CAAC,GAAG,CAAR;EACA,UAAIy6B,EAAE,GAAG,EAAT,CAJ0D;;EAO1D,WAAK,IAAIl6B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;EAC1B;EACA,YAAI81B,KAAK,GAAGqE,SAAS,CAACT,MAAD,EAAS15B,CAAT,CAArB,CAF0B;;EAI1B,YAAIo6B,YAAY,GAAG,KAAnB,CAJ0B;EAK1B;;EACA,YAAItE,KAAK,CAACn8C,MAAN,KAAiB,CAAjB,IAAsBqmB,CAAC,KAAK,CAAhC,EAAmC;EACjCo6B,UAAAA,YAAY,GAAG,IAAf;EACD,SAFD,MAEO;EACL,cAAItE,KAAK,CAACn8C,MAAN,IAAgB,CAApB,EAAuB;EACrB;EACD;EACF,SAZyB;;;EAc1B,YAAI0gD,MAAM,GAAGC,SAAS,CAACxE,KAAD,CAAtB;EACAkE,QAAAA,EAAE,GAAGt1C,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY6T,CAAZ,CAAL,CAf0B;;EAkB1B,YAAIu6B,OAAO,GAAG,IAAd;EACA,YAAI7gD,OAAO,GAAG,CAAd;;EACA,eACE,CAAC0gD,YAAD,IACA,CAACG,OAAO,GAAGC,kBAAkB,CAACH,MAAD,EAASL,EAAT,CAA7B,MAA+C,IAD/C,IAEAtgD,OAAO,GAAG,GAHZ,EAIE;EACA;EACA;EACA,cAAI+gD,SAAS,GAAG,IAAI38C,KAAJ,CAAUy8C,OAAO,CAAC5gD,MAAlB,CAAhB;EACA8lB,UAAAA,CAAC,GAAG,CAAJ;;EACA,eAAK,IAAI1hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGw8C,OAAO,CAAC5gD,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC08C,YAAAA,SAAS,CAAC18C,CAAD,CAAT,GAAe,IAAID,KAAJ,CAAUy8C,OAAO,CAACx8C,CAAD,CAAjB,CAAf;;EACA,iBAAK,IAAI0F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG82C,OAAO,CAACx8C,CAAD,CAA3B,EAAgC0F,CAAC,EAAjC,EAAqC;EACnCg3C,cAAAA,SAAS,CAAC18C,CAAD,CAAT,CAAa0F,CAAb,IAAkBgc,CAAC,EAAnB;EACD;EACF;;EAEDy6B,UAAAA,EAAE,GAAG,EAAL,CAZA;EAaA;;EACA,cAAIz2C,CAAC,GAAG,CAAR;EACAy2C,UAAAA,EAAE,CAACngD,IAAH,CAAQ+7C,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAAT,GAAayrC,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAA9B;EACA2vB,UAAAA,EAAE,GAAG8b,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAAd;EACAowC,UAAAA,SAAS,CAAC,CAAD,CAAT,CAAa7wB,MAAb,CAAoB,CAApB,EAAuB,CAAvB,EAjBA;;EAkBA6wB,UAAAA,SAAS,CAAC,CAAD,CAAT,CAAa7wB,MAAb,CAAoB,CAApB,EAAuB,CAAvB,EAlBA;;EAmBAnK,UAAAA,CAAC,GAAG,CAAJ;EACA,cAAIi7B,QAAQ,GAAG,CAAf;EACAT,UAAAA,UAAU,GAAGv1C,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY6T,CAAZ,IAAiB,CAA9B;;EACA,iBAAOk6B,EAAE,CAACvgD,MAAH,GAAYqmB,CAAZ,IAAiB06B,QAAQ,GAAGT,UAA5B,IAA0Cx6B,CAAC,GAAGq2B,KAAK,CAACn8C,MAA3D,EAAmE;EACjED,YAAAA,OAAO,IAAI,CAAX,CADiE;;EAGjE+J,YAAAA,CAAC;;EACD,mBAAOgc,CAAC,GAAGq2B,KAAK,CAACn8C,MAAV,IAAoB8gD,SAAS,CAACh7B,CAAD,CAAT,CAAa9lB,MAAb,KAAwB,CAAnD,EAAsD;EACpD8lB,cAAAA,CAAC;EACF;;EACD,gBAAIA,CAAC,GAAGq2B,KAAK,CAACn8C,MAAd,EAAsB;EACpB;EACAugD,cAAAA,EAAE,CAACngD,IAAH,CAAQ+7C,KAAK,CAACr2B,CAAD,CAAL,CAASpV,CAAT,GAAayrC,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAA9B,EAFoB;;EAIpBowC,cAAAA,SAAS,CAACh7B,CAAD,CAAT,CAAamK,MAAb,CAAoB,CAApB,EAAuB,CAAvB,EAJoB;;EAKpB8wB,cAAAA,QAAQ,GALY;;EAOpB,mBAAK,IAAI3hB,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIt1B,CAArB,EAAwBs1B,CAAC,EAAzB,EAA6B;EAC3B,oBAAI4hB,IAAI,GAAG,CAAX;;EACA,qBAAK,IAAI58C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGg7B,CAApB,EAAuBh7B,CAAC,EAAxB,EAA4B;EAC1B48C,kBAAAA,IAAI,IAAIT,EAAE,CAACn8C,CAAD,CAAV;EACD;;EACD,qBAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG08C,SAAS,CAAC9gD,MAA9B,EAAsCoE,CAAC,EAAvC,EAA2C;EACzC;EACA,sBAAI2G,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,IAAc2vB,EAAE,GAAG2gB,IAAnB,CAAT,IAAqC,IAAzC,EAA+C;EAC7CF,oBAAAA,SAAS,CAAC18C,CAAD,CAAT,CAAa6rB,MAAb,CAAoB,CAApB,EAAuB,CAAvB,EAD6C;;EAE7C8wB,oBAAAA,QAAQ;EACR;EACD;EACF;EACF;EACF;EACF,WAnDD;;;EAqDA,cAAIE,OAAO,GAAGC,YAAY,CAACX,EAAD,CAA1B,CArDA;EAuDA;;EACAE,UAAAA,YAAY,GAAG,IAAf;;EACA,eAAK,IAAIr8C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG68C,OAAO,CAACjhD,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC,gBAAI68C,OAAO,CAAC78C,CAAD,CAAP,CAAWokC,SAAX,KAAyBoY,OAAO,CAACx8C,CAAD,CAApC,EAAyC;EACvCq8C,cAAAA,YAAY,GAAG,KAAf;EACD;EACF;EACF,SAtFyB;;;EAwF1B,YAAIA,YAAJ,EAAkB;EAChBU,UAAAA,YAAY,CAACpB,MAAD,EAASQ,EAAT,CAAZ;EACD;EACF;EACF,KAhH6C;;;EAkH9C,SAAK,IAAIn8C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG27C,MAAM,CAACK,SAAP,CAAiBpgD,MAArC,EAA6CoE,CAAC,EAA9C,EAAkD;EAChD27C,MAAAA,MAAM,CAACK,SAAP,CAAiBh8C,CAAjB,EAAoBsM,CAApB,IAAyBqvC,MAAM,CAACqB,OAAhC;EACD;EACF;EA5HY,CAAf;EA+HA;EACA;EACA;EACA;EACA;EACA;;EACA,SAASD,YAAT,CAAsBpB,MAAtB,EAA8BQ,EAA9B,EAAkC;EAChC;EACA,MAAIpE,KAAK,GAAG4D,MAAM,CAACK,SAAnB,CAFgC;;EAGhC,MAAIiB,OAAO,GAAGlF,KAAK,CAACn8C,MAApB;EACA+/C,EAAAA,MAAM,CAACuB,MAAP,GAAgBnF,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAAT,GAAaqvC,MAAM,CAACqB,OAApB,GAA8BjF,KAAK,CAAC,CAAD,CAAL,CAAS92C,KAAvD;EACA06C,EAAAA,MAAM,CAACwB,KAAP,GACEpF,KAAK,CAACkF,OAAO,GAAG,CAAX,CAAL,CAAmB3wC,CAAnB,GAAuBqvC,MAAM,CAACqB,OAA9B,GAAwCjF,KAAK,CAACkF,OAAO,GAAG,CAAX,CAAL,CAAmBh8C,KAD7D;EAEA06C,EAAAA,MAAM,CAACyB,YAAP,CAAoB7rC,IAApB,GAA2BwmC,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAAT,GAAaqvC,MAAM,CAACqB,OAApB,GAA8BjF,KAAK,CAAC,CAAD,CAAL,CAAS92C,KAAT,GAAiB,CAA1E;EACA06C,EAAAA,MAAM,CAACyB,YAAP,CAAoBzrB,EAApB,GACEomB,KAAK,CAACkF,OAAO,GAAG,CAAX,CAAL,CAAmB3wC,CAAnB,GAAuBqvC,MAAM,CAACqB,OAA9B,GAAwCjF,KAAK,CAACkF,OAAO,GAAG,CAAX,CAAL,CAAmBh8C,KAAnB,GAA2B,CADrE,CARgC;;EAWhC06C,EAAAA,MAAM,CAAC0B,WAAP,GAAqB1B,MAAM,CAAC2B,KAA5B;EACA3B,EAAAA,MAAM,CAAC9L,YAAP,GAAsB0N,eAAe,CAAC5B,MAAD,EAASQ,EAAT,CAArC;EACAR,EAAAA,MAAM,CAACkB,OAAP,GAAiBlB,MAAM,CAAC9L,YAAxB,CAbgC;EAcjC;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAAS0N,eAAT,CAAyB5B,MAAzB,EAAiCQ,EAAjC,EAAqC;EACnC,MAAItrB,GAAG,GAAG,IAAV;EACA,MAAIgsB,OAAO,GAAG,EAAd;EACA,MAAIW,IAAI,GAAG,CAAX;EACA,MAAIC,QAAQ,GAAG,EAAf;;EAEA,MAAItB,EAAE,IAAIA,EAAE,CAACvgD,MAAH,GAAY,CAAtB,EAAyB;EACvBugD,IAAAA,EAAE,CAAC9xB,IAAH,CAAQ,UAAUphB,CAAV,EAAamH,CAAb,EAAgB;EACtB,aAAOA,CAAC,GAAGnH,CAAX;EACD,KAFD;;EAIA,SAAK,IAAIjJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm8C,EAAE,CAACvgD,MAAH,GAAY,CAAhC,EAAmCoE,CAAC,EAApC,EAAwC;EACtC,UAAI2G,IAAI,CAACC,GAAL,CAASu1C,EAAE,CAACn8C,CAAD,CAAF,GAAQm8C,EAAE,CAACn8C,CAAC,GAAG,CAAL,CAAnB,IAA8B6wB,GAAlC,EAAuC;EACrC2sB,QAAAA,IAAI;EACL,OAFD,MAEO;EACLC,QAAAA,QAAQ,CAACzhD,IAAT,CAAc;EACZ4zC,UAAAA,QAAQ,EAAEjpC,IAAI,CAACC,GAAL,CAASu1C,EAAE,CAACn8C,CAAD,CAAX,CADE;EAEZ6vC,UAAAA,YAAY,EAAEuL,QAAQ,CAACoC,IAAD;EAFV,SAAd;EAIAX,QAAAA,OAAO,IAAIzB,QAAQ,CAACoC,IAAD,CAAnB;EACAA,QAAAA,IAAI,GAAG,CAAP;EACD;EACF;;EACD,QAAIrhD,KAAK,GAAGggD,EAAE,CAACvgD,MAAH,GAAY,CAAxB;EACA6hD,IAAAA,QAAQ,CAACzhD,IAAT,CAAc;EACZ4zC,MAAAA,QAAQ,EAAEjpC,IAAI,CAACC,GAAL,CAASu1C,EAAE,CAAChgD,KAAD,CAAX,CADE;EAEZ0zC,MAAAA,YAAY,EAAEuL,QAAQ,CAACoC,IAAD;EAFV,KAAd;EAIAX,IAAAA,OAAO,IAAIzB,QAAQ,CAACoC,IAAD,CAAnB;EACA7B,IAAAA,MAAM,CAAC+B,KAAP,GAAeD,QAAf;EACD,GAxBD,MAwBO;EACLZ,IAAAA,OAAO,GAAG,GAAV;;EACA,QAAIl2C,IAAI,CAACC,GAAL,CAAS+0C,MAAM,CAACuB,MAAP,GAAgBvB,MAAM,CAACwB,KAAhC,IAAyCxB,MAAM,CAACqB,OAAhD,GAA0D,EAA9D,EAAkE;EAChEH,MAAAA,OAAO,GAAG,MAAV;EACD;EACF;;EACD,SAAOA,OAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASC,YAAT,CAAsBX,EAAtB,EAA0B;EACxB,MAAIwB,IAAI,GAAGh3C,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY+tC,EAAE,CAACvgD,MAAf,CAAX;EACA,MAAIihD,OAAO,GAAG,CAAC;EAAEvwC,IAAAA,CAAC,EAAE,CAAL;EAAQ83B,IAAAA,SAAS,EAAEuZ;EAAnB,GAAD,CAAd,CAFwB;;EAIxB,OAAK,IAAI39C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm8C,EAAE,CAACvgD,MAAvB,EAA+BoE,CAAC,EAAhC,EAAoC;EAClC,SAAK,IAAI0F,CAAC,GAAGm3C,OAAO,CAACjhD,MAAR,GAAiB,CAA9B,EAAiC8J,CAAC,IAAI,CAAtC,EAAyCA,CAAC,EAA1C,EAA8C;EAC5Cm3C,MAAAA,OAAO,CAAC7gD,IAAR,CAAa;EACXsQ,QAAAA,CAAC,EAAEuwC,OAAO,CAACn3C,CAAD,CAAP,CAAW4G,CAAX,GAAe6vC,EAAE,CAACn8C,CAAD,CAAF,GAAQ,CADf;EAEXokC,QAAAA,SAAS,EAAEyY,OAAO,CAACn3C,CAAD,CAAP,CAAW0+B,SAAX,GAAuB;EAFvB,OAAb;EAIAyY,MAAAA,OAAO,CAACn3C,CAAD,CAAP,CAAW4G,CAAX,GAAeuwC,OAAO,CAACn3C,CAAD,CAAP,CAAW4G,CAAX,GAAe6vC,EAAE,CAACn8C,CAAD,CAAF,GAAQ,CAAtC;EACA68C,MAAAA,OAAO,CAACn3C,CAAD,CAAP,CAAW0+B,SAAX,GAAuByY,OAAO,CAACn3C,CAAD,CAAP,CAAW0+B,SAAX,GAAuB,CAA9C;EACD;EACF,GAbuB;;;EAexByY,EAAAA,OAAO,CAACxyB,IAAR,CAAa,SAASgN,OAAT,CAAiBpuB,CAAjB,EAAoBmH,CAApB,EAAuB;EAClC,WAAOnH,CAAC,CAACqD,CAAF,GAAM8D,CAAC,CAAC9D,CAAf;EACD,GAFD;;EAGA,OAAK,IAAI5G,CAAC,GAAGm3C,OAAO,CAACjhD,MAAR,GAAiB,CAA9B,EAAiC8J,CAAC,IAAI,CAAtC,EAAyCA,CAAC,EAA1C,EAA8C;EAC5C,QAAIiB,IAAI,CAACC,GAAL,CAASi2C,OAAO,CAACn3C,CAAD,CAAP,CAAW4G,CAAX,GAAeuwC,OAAO,CAACn3C,CAAC,GAAG,CAAL,CAAP,CAAe4G,CAAvC,IAA4C,GAAhD,EAAqD;EACnDuwC,MAAAA,OAAO,CAACn3C,CAAD,CAAP,CAAW0+B,SAAX,IAAwByY,OAAO,CAACn3C,CAAC,GAAG,CAAL,CAAP,CAAe0+B,SAAvC;EACAyY,MAAAA,OAAO,CAAChxB,MAAR,CAAenmB,CAAC,GAAG,CAAnB,EAAsB,CAAtB;EACD;EACF;;EACD,SAAOm3C,OAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASJ,kBAAT,CAA4BH,MAA5B,EAAoCzgD,KAApC,EAA2C;EACzC,MAAIu2B,IAAI,GAAGzrB,IAAI,CAACmU,IAAL,CAAUwhC,MAAM,CAACptC,MAAP,CAActT,MAAd,GAAuB,GAAjC,CAAX;EACA,MAAIgiD,GAAG,GAAGtB,MAAM,CAACptC,MAAP,CAActT,MAAxB;EACA,MAAImiB,GAAG,GAAG,CAAV;EACA,MAAI8/B,EAAJ;;EACA,SAAO9/B,GAAG,KAAKliB,KAAf,EAAsB;EACpB;EACAgiD,IAAAA,EAAE,GAAG,KAAL;;EACA,WAAO,CAACA,EAAR,EAAY;EACVA,MAAAA,EAAE,GAAG,IAAL;EACAvB,MAAAA,MAAM,CAACwB,YAAP,CAAoBxB,MAAM,CAACyB,MAA3B;;EACA,UACEzB,MAAM,CAACwB,YAAP,CAAoBxB,MAAM,CAACyB,MAA3B,KACAzB,MAAM,CAACptC,MAAP,CAAcotC,MAAM,CAACyB,MAArB,EAA6BniD,MAF/B,EAGE;EACA;EACA,YAAI0gD,MAAM,CAACyB,MAAP,GAAgB,CAAhB,KAAsB3rB,IAA1B,EAAgC;EAC9B,iBAAO,IAAP;EACD,SAFD,MAEO;EACL;EACAkqB,UAAAA,MAAM,CAACwB,YAAP,CAAoBxB,MAAM,CAACyB,MAA3B,IAAqC,CAArC;EACAF,UAAAA,EAAE,GAAG,KAAL;EACAvB,UAAAA,MAAM,CAACyB,MAAP;EACD;EACF,OAbD,MAaO;EACLzB,QAAAA,MAAM,CAACyB,MAAP,GAAgB,CAAhB;EACD;EACF,KAtBmB;;;EAwBpBhgC,IAAAA,GAAG,GAAG,CAAN;;EACA,SAAK,IAAI/d,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoyB,IAApB,EAA0BpyB,CAAC,EAA3B,EAA+B;EAC7B+d,MAAAA,GAAG,IAAIu+B,MAAM,CAACptC,MAAP,CAAclP,CAAd,EAAiBs8C,MAAM,CAACwB,YAAP,CAAoB99C,CAApB,CAAjB,IAA2C,CAAlD;EACD;;EACD,QAAIs8C,MAAM,CAACptC,MAAP,CAActT,MAAd,GAAuB,CAAvB,KAA6B,CAAjC,EAAoC;EAClCmiB,MAAAA,GAAG,IAAIu+B,MAAM,CAACptC,MAAP,CAAckjB,IAAI,GAAG,CAArB,EAAwBkqB,MAAM,CAACwB,YAAP,CAAoB1rB,IAAI,GAAG,CAA3B,CAAxB,CAAP;EACD;EACF,GApCwC;;;EAsCzC,MAAIrU,GAAG,KAAKliB,KAAZ,EAAmB;EACjB,QAAI2gD,OAAO,GAAG,IAAIz8C,KAAJ,CAAU69C,GAAV,CAAd;;EACA,SAAK,IAAI59C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoyB,IAApB,EAA0BpyB,CAAC,EAA3B,EAA+B;EAC7Bw8C,MAAAA,OAAO,CAACx8C,CAAD,CAAP,GAAas8C,MAAM,CAACptC,MAAP,CAAclP,CAAd,EAAiBs8C,MAAM,CAACwB,YAAP,CAAoB99C,CAApB,CAAjB,CAAb;EACAw8C,MAAAA,OAAO,CAACoB,GAAG,GAAG59C,CAAN,GAAU,CAAX,CAAP,GAAuBs8C,MAAM,CAACptC,MAAP,CAAclP,CAAd,EAAiBs8C,MAAM,CAACwB,YAAP,CAAoB99C,CAApB,CAAjB,CAAvB;EACD;;EACD,WAAOw8C,OAAP;EACD;;EACD,SAAO,IAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASD,SAAT,CAAmBxE,KAAnB,EAA0B;EACxB,MAAIuE,MAAM,GAAG,IAAIv8C,KAAJ,CAAUg4C,KAAK,CAACn8C,MAAhB,CAAb;EACA,MAAIkiD,YAAY,GAAG,IAAI/9C,KAAJ,CAAUg4C,KAAK,CAACn8C,MAAhB,CAAnB;EACA,MAAI8V,GAAJ,EAASE,GAAT;EACA0qC,EAAAA,MAAM,CAAC,CAAD,CAAN,GAAY,CAAC,CAAD,CAAZ;EACAA,EAAAA,MAAM,CAACvE,KAAK,CAACn8C,MAAN,GAAe,CAAhB,CAAN,GAA2B,CAAC,CAAD,CAA3B;EACAkiD,EAAAA,YAAY,CAAC,CAAD,CAAZ,GAAkB,CAAC,CAAnB;EACAA,EAAAA,YAAY,CAAC/F,KAAK,CAACn8C,MAAN,GAAe,CAAhB,CAAZ,GAAiC,CAAjC;;EACA,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAAN,GAAe,CAAnC,EAAsCoE,CAAC,EAAvC,EAA2C;EACzC0R,IAAAA,GAAG,GAAG/K,IAAI,CAAC8U,KAAL,CAAWs8B,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,GAAqB,IAAhC,CAAN;EACAxyB,IAAAA,GAAG,GAAGjL,IAAI,CAAC8U,KAAL,CAAWs8B,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,GAAqB,IAAhC,CAAN;EACAkY,IAAAA,MAAM,CAACt8C,CAAD,CAAN,GAAY,EAAZ;;EACA,SAAK,IAAI0F,CAAC,GAAGgM,GAAb,EAAkBhM,CAAC,IAAIkM,GAAvB,EAA4BlM,CAAC,EAA7B,EAAiC;EAC/B42C,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAUhE,IAAV,CAAe0J,CAAf;EACD;;EACDo4C,IAAAA,YAAY,CAAC99C,CAAD,CAAZ,GAAkB,CAAlB;EACD;;EACD,SAAO;EAAEkP,IAAAA,MAAM,EAAEotC,MAAV;EAAkBwB,IAAAA,YAAY,EAAEA,YAAhC;EAA8CC,IAAAA,MAAM,EAAE;EAAtD,GAAP;EACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASjC,oBAAT,CAA8BH,MAA9B,EAAoD;EAAA,MAAdh0C,OAAc,uEAAJ,EAAI;EAClD,MAAI;EAAEo0C,IAAAA,QAAF;EAAY7lB,IAAAA,SAAZ;EAAuB0lB,IAAAA,QAAQ,GAAGJ;EAAlC,MAAgD7zC,OAApD;EACA,MAAIq2C,QAAQ,GAAGC,UAAU,CAACtC,MAAD,EAASI,QAAT,EAAmB7lB,SAAnB,EAA8B0lB,QAA9B,CAAzB;EACA,MAAIsC,QAAQ,GAAGvC,MAAM,CAACK,SAAtB;EACA,MAAImC,OAAO,GAAGxC,MAAM,CAACle,IAArB;EACA,MAAInO,EAAE,GAAGqsB,MAAM,CAACyC,MAAhB;EACAzC,EAAAA,MAAM,CAACyC,MAAP,GACE,CAACzC,MAAM,CAAC5D,KAAP,CAAa,CAAb,EAAgBzrC,CAAhB,GAAoBqvC,MAAM,CAAC5D,KAAP,CAAa4D,MAAM,CAAC5D,KAAP,CAAan8C,MAAb,GAAsB,CAAnC,EAAsC0Q,CAA3D,IAAgE,CADlE;EAEA,MAAI+xC,QAAQ,GAAGJ,UAAU,CAACtC,MAAD,EAASI,QAAT,EAAmB7lB,SAAnB,EAA8B0lB,QAA9B,CAAzB;;EACA,MAAID,MAAM,CAACK,SAAP,CAAiBpgD,MAAjB,GAA0BsiD,QAAQ,CAACtiD,MAAvC,EAA+C;EAC7C,WAAOyiD,QAAP;EACD,GAFD,MAEO;EACL1C,IAAAA,MAAM,CAACyC,MAAP,GAAgB9uB,EAAhB;EACAqsB,IAAAA,MAAM,CAACK,SAAP,GAAmBkC,QAAnB;EACAvC,IAAAA,MAAM,CAACle,IAAP,GAAc0gB,OAAd;EACA,WAAOH,QAAP;EACD;EACF;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASC,UAAT,CAAoBtC,MAApB,EAA4BI,QAA5B,EAAsC7lB,SAAtC,EAAiDnnB,GAAjD,EAAsD;EACpD,MAAI;EAAE0sC,IAAAA,KAAF;EAASrX,IAAAA;EAAT,MAAuBr1B,GAA3B,CADoD;;EAGpD,MAAI6C,GAAJ,EAASF,GAAT,EAAc4sC,GAAd,EAAmBta,KAAnB,EAA0Bua,QAA1B;EACA,MAAIxG,KAAK,GAAG,IAAIh4C,KAAJ,CAAU47C,MAAM,CAAC5D,KAAP,CAAan8C,MAAvB,CAAZ,CAJoD;;EAMpD,OAAK,IAAIoE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC+3C,IAAAA,KAAK,CAAC/3C,CAAD,CAAL,GAAW;EACTsM,MAAAA,CAAC,EAAEqvC,MAAM,CAAC5D,KAAP,CAAa/3C,CAAb,EAAgBy7C,KAAhB,IAAyBE,MAAM,CAACqB,OAD1B;EAET5Y,MAAAA,SAAS,EAAEuX,MAAM,CAAC5D,KAAP,CAAa/3C,CAAb,EAAgBokC,SAAhB,CAFF;EAGTnjC,MAAAA,KAAK,EAAE06C,MAAM,CAAC5D,KAAP,CAAa/3C,CAAb,EAAgBiB;EAHd,KAAX;EAKD,GAZmD;;;EAcpD,OAAK,IAAIjB,CAAC,GAAG+3C,KAAK,CAACn8C,MAAN,GAAe,CAA5B,EAA+BoE,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;EAC1C,QAAI2G,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GAAayrC,KAAK,CAAC/3C,CAAC,GAAG,CAAL,CAAL,CAAasM,CAAnC,IAAwC,IAA5C,EAAkD;EAChDyrC,MAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GACEyrC,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GAAayrC,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAtB,GACA2T,KAAK,CAAC/3C,CAAC,GAAG,CAAL,CAAL,CAAasM,CAAb,GAAiByrC,KAAK,CAAC/3C,CAAC,GAAG,CAAL,CAAL,CAAaokC,SAFhC;EAGA2T,MAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,GAAqB2T,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,GAAqB2T,KAAK,CAAC/3C,CAAC,GAAG,CAAL,CAAL,CAAaokC,SAAvD;EACA2T,MAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,IAAcyrC,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAvB;EACA2T,MAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,IAAsB,CAAtB;EACA2T,MAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASiB,KAAT,IAAkB82C,KAAK,CAAC/3C,CAAC,GAAG,CAAL,CAAL,CAAaiB,KAA/B;EACA82C,MAAAA,KAAK,CAAClsB,MAAN,CAAa7rB,CAAC,GAAG,CAAjB,EAAoB,CAApB;EACD;EACF;;EACD27C,EAAAA,MAAM,CAACK,SAAP,GAAmBjE,KAAnB;EACA,MAAIkF,OAAO,GAAGlF,KAAK,CAACn8C,MAApB;EACA,MAAI6hC,IAAI,GAAG,IAAI19B,KAAJ,CAAUk9C,OAAV,CAAX;EACAtB,EAAAA,MAAM,CAACle,IAAP,GAAcA,IAAd;EACA,MAAIlG,IAAI,GAAG,CAAX;EACA,MAAII,KAAK,GAAGogB,KAAK,CAACn8C,MAAN,GAAe,CAA3B;EACA,MAAI0zB,EAAE,GAAGqsB,MAAM,CAACyC,MAAP,GAAgBzC,MAAM,CAACqB,OAAhC;EACA,MAAIxzB,MAAM,GAAG,CAAC,CAACuuB,KAAK,CAAC,CAAD,CAAL,CAASzrC,CAAT,GAAayrC,KAAK,CAACkF,OAAO,GAAG,CAAX,CAAL,CAAmB3wC,CAAjC,IAAsC,CAAvC,EAA0C,CAA1C,CAAb;EACAyvC,EAAAA,QAAQ,GAAGlnB,KAAK,CAACluB,IAAI,CAACC,GAAL,CAAS0oB,EAAE,GAAG9F,MAAM,CAAC,CAAD,CAApB,CAAD,CAAhB;EACA,MAAIg1B,SAAS,GAAG,CAAhB,CAnCoD;EAqCpD;;EACA,OAAK,IAAIx+C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi9C,OAApB,EAA6Bj9C,CAAC,EAA9B,EAAkC;EAChCy9B,IAAAA,IAAI,CAACz9B,CAAD,CAAJ,GAAU,IAAV,CADgC;;EAGhCw+C,IAAAA,SAAS,IAAIzG,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAtB;EACD;;EAED,SAAO7M,IAAI,IAAII,KAAf,EAAsB;EACpB8F,IAAAA,IAAI,CAAClG,IAAD,CAAJ,GAAa,IAAb;EACAkG,IAAAA,IAAI,CAAC9F,KAAD,CAAJ,GAAc,IAAd;;EACA,QAAIJ,IAAI,KAAKI,KAAb,EAAoB;EAClB,UAAIslB,OAAO,GAAG,CAAV,IAAet2C,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAACxgB,IAAD,CAAL,CAAYjrB,CAAZ,GAAgBgjB,EAAzB,IAA+BysB,QAAlD,EAA4D;EAC1Dte,QAAAA,IAAI,CAAClG,IAAD,CAAJ,GAAa,KAAb;EACD;EACF,KAJD,MAIO;EACL3lB,MAAAA,GAAG,GAAGjL,IAAI,CAACiL,GAAL,CAASmmC,KAAK,CAACxgB,IAAD,CAAL,CAAY6M,SAArB,EAAgC2T,KAAK,CAACpgB,KAAD,CAAL,CAAayM,SAA7C,CAAN;EACA1yB,MAAAA,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAASqmC,KAAK,CAACxgB,IAAD,CAAL,CAAY6M,SAArB,EAAgC2T,KAAK,CAACpgB,KAAD,CAAL,CAAayM,SAA7C,CAAN;EACAJ,MAAAA,KAAK,GAAGpyB,GAAG,GAAGF,GAAd;;EACA,UAAIsyB,KAAK,GAAGqX,QAAZ,EAAsB;EACpB,YAAItD,KAAK,CAACxgB,IAAD,CAAL,CAAY6M,SAAZ,KAA0B1yB,GAA9B,EAAmC;EACjC+rB,UAAAA,IAAI,CAAClG,IAAD,CAAJ,GAAa,KAAb;EACAI,UAAAA,KAAK;EACN,SAHD,MAGO;EACL8F,UAAAA,IAAI,CAAC9F,KAAD,CAAJ,GAAc,KAAd;EACAJ,UAAAA,IAAI;EACL;EACF,OARD,MAQO;EACL,YAAIknB,KAAK,GAAG93C,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAACxgB,IAAD,CAAL,CAAYjrB,CAAZ,GAAgBgjB,EAAzB,CAAZ;EACA,YAAIovB,KAAK,GAAG/3C,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAACpgB,KAAD,CAAL,CAAarrB,CAAb,GAAiBgjB,EAA1B,CAAZ;;EAEA,YAAI3oB,IAAI,CAACC,GAAL,CAAS63C,KAAK,GAAGC,KAAjB,IAA0B3C,QAA9B,EAAwC;EACtCuC,UAAAA,GAAG,GAAG33C,IAAI,CAAC+K,GAAL,CAASqmC,KAAK,CAACxgB,IAAD,CAAL,CAAY6M,SAArB,EAAgC2T,KAAK,CAACpgB,KAAD,CAAL,CAAayM,SAA7C,CAAN;EACAma,UAAAA,QAAQ,GAAG53C,IAAI,CAAC+K,GAAL,CAASqmC,KAAK,CAACxgB,IAAD,CAAL,CAAYt2B,KAArB,EAA4B82C,KAAK,CAACpgB,KAAD,CAAL,CAAa12B,KAAzC,CAAX;EACA82C,UAAAA,KAAK,CAACxgB,IAAD,CAAL,CAAY6M,SAAZ,GAAwB2T,KAAK,CAACpgB,KAAD,CAAL,CAAayM,SAAb,GAAyBka,GAAjD;EACAvG,UAAAA,KAAK,CAACxgB,IAAD,CAAL,CAAYt2B,KAAZ,GAAoB82C,KAAK,CAACpgB,KAAD,CAAL,CAAa12B,KAAb,GAAqBs9C,QAAzC;EACA/0B,UAAAA,MAAM,GAAG,CACPA,MAAM,CAAC,CAAD,CAAN,GAAY,CAACuuB,KAAK,CAACpgB,KAAD,CAAL,CAAarrB,CAAb,GAAiByrC,KAAK,CAACxgB,IAAD,CAAL,CAAYjrB,CAA9B,IAAmC,CADxC,EAEPkd,MAAM,CAAC,CAAD,CAAN,GAAY,CAFL,CAAT;EAID,SATD,MASO;EACL,cAAI7iB,IAAI,CAACiL,GAAL,CAAS6sC,KAAT,EAAgBC,KAAhB,MAA2BA,KAA/B,EAAsC;EACpCjhB,YAAAA,IAAI,CAAC9F,KAAD,CAAJ,GAAc,KAAd;EACAJ,YAAAA,IAAI;EACL,WAHD,MAGO;EACLkG,YAAAA,IAAI,CAAClG,IAAD,CAAJ,GAAa,KAAb;EACAI,YAAAA,KAAK;EACN;EACF;EACF;EACF;;EACDJ,IAAAA,IAAI;EACJI,IAAAA,KAAK,GA5Ce;;EA8CpB,QAAIzB,SAAS,KAAK,CAAlB,EAAqB;EACnB5G,MAAAA,EAAE,GAAGqvB,aAAa,CAAC5G,KAAD,EAAQta,IAAR,CAAlB,CADmB;;EAGnB,UAAI55B,KAAK,CAACyrB,EAAD,CAAT,EAAe;EACb,eAAO,CAAP;EACD;EACF;;EACDysB,IAAAA,QAAQ,GAAGlnB,KAAK,CAACluB,IAAI,CAACC,GAAL,CAAS0oB,EAAE,GAAG9F,MAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAAhC,CAAD,CAAhB;EACD,GAlGmD;;;EAoGpD,OAAK,IAAIxpB,CAAC,GAAGi9C,OAAO,GAAG,CAAvB,EAA0Bj9C,CAAC,IAAI,CAA/B,EAAkCA,CAAC,EAAnC,EAAuC;EACrC,QAAIy9B,IAAI,CAACz9B,CAAD,CAAJ,KAAY,KAAhB,EAAuB;EACrB+3C,MAAAA,KAAK,CAAClsB,MAAN,CAAa7rB,CAAb,EAAgB,CAAhB;EACD;EACF;;EACDsvB,EAAAA,EAAE,GAAGqvB,aAAa,CAAC5G,KAAD,CAAlB;;EACA,MAAIl0C,KAAK,CAACyrB,EAAD,CAAT,EAAe;EACb,WAAO,CAAP;EACD;;EACDqsB,EAAAA,MAAM,CAACyC,MAAP,GAAgB9uB,EAAE,GAAGqsB,MAAM,CAACqB,OAA5B,CA7GoD;;EA+GpD,MAAI4B,SAAS,GAAG,CAAhB;EACA,MAAIC,MAAM,GAAG,CAAb;;EACA,MAAI9G,KAAK,CAACn8C,MAAN,GAAe,CAAnB,EAAsB;EACpB,SAAK,IAAIoE,CAAC,GAAG2G,IAAI,CAACmU,IAAL,CAAUi9B,KAAK,CAACn8C,MAAN,GAAe,CAAzB,IAA8B,CAA3C,EAA8CoE,CAAC,IAAI,CAAnD,EAAsDA,CAAC,EAAvD,EAA2D;EACzD4+C,MAAAA,SAAS,IACN,CAAC,IACAj4C,IAAI,CAAC+K,GAAL,CACE/K,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GAAagjB,EAAtB,CADF,EAEE3oB,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAACA,KAAK,CAACn8C,MAAN,GAAe,CAAf,GAAmBoE,CAApB,CAAL,CAA4BsM,CAA5B,GAAgCgjB,EAAzC,CAFF,CADD,KAKE,IACC3oB,IAAI,CAACiL,GAAL,CACEjL,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GAAagjB,EAAtB,CADF,EAEE3oB,IAAI,CAACC,GAAL,CAASmxC,KAAK,CAACA,KAAK,CAACn8C,MAAN,GAAe,CAAf,GAAmBoE,CAApB,CAAL,CAA4BsM,CAA5B,GAAgCgjB,EAAzC,CAFF,CANH,CAAD,GAUAyoB,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAXX;EAYAya,MAAAA,MAAM,IAAI9G,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAnB;EACD;;EACDwa,IAAAA,SAAS,IAAIC,MAAb;EACD,GAjBD,MAiBO;EACL,QAAI9G,KAAK,CAACn8C,MAAN,KAAiB,CAArB,EAAwB;EACtBgjD,MAAAA,SAAS,GAAG,CAAZ;EACD;EACF;;EACD,MAAIE,aAAa,GAAG,CAApB;;EACA,OAAK,IAAI9+C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC8+C,IAAAA,aAAa,IAAI/G,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAA1B;EACD;;EACDwa,EAAAA,SAAS,IAAK,CAACJ,SAAS,GAAGM,aAAb,IAA8BN,SAA/B,GAA4C,IAAzD,CA3IoD;EA4IpD;;EACA,MAAII,SAAS,GAAG,GAAZ,IAAmBA,SAAS,GAAG,IAA/B,IAAuC1oB,SAAS,GAAG,CAAvD,EAA0D;EACxD,WAAO+nB,UAAU,CAACtC,MAAD,EAASJ,aAAT,EAAwB,CAAxB,EAA2BxsC,GAA3B,CAAjB;EACD,GAFD,MAEO;EACL;EACA,QAAIgpC,KAAK,CAACn8C,MAAN,GAAe,CAAnB,EAAsB;EACpB,UAAImjD,GAAJ;;EACA,WAAK,IAAI/+C,CAAC,GAAG2G,IAAI,CAACmU,IAAL,CAAUi9B,KAAK,CAACn8C,MAAN,GAAe,CAAzB,IAA8B,CAA3C,EAA8CoE,CAAC,IAAI,CAAnD,EAAsDA,CAAC,EAAvD,EAA2D;EACzD++C,QAAAA,GAAG,GAAG,CAAChH,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GAAayrC,KAAK,CAACA,KAAK,CAACn8C,MAAN,GAAe,CAAf,GAAmBoE,CAApB,CAAL,CAA4BsM,CAA1C,IAA+C,GAArD;EACAyrC,QAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAT,GAAagjB,EAAE,GAAGyvB,GAAlB;EACAhH,QAAAA,KAAK,CAACA,KAAK,CAACn8C,MAAN,GAAe,CAAf,GAAmBoE,CAApB,CAAL,CAA4BsM,CAA5B,GAAgCgjB,EAAE,GAAGyvB,GAArC;EACD;EACF;EACF;;EACD,SAAOH,SAAP;EACD;EACD;EACA;EACA;EACA;EACA;EACA;;;EACA,SAAS/pB,KAAT,CAAeh5B,KAAf,EAAsB;EACpB,MAAIkgD,QAAQ,GAAGlgD,KAAK,GAAG,GAAvB;;EACA,MAAIkgD,QAAQ,GAAG,IAAf,EAAqB;EACnBA,IAAAA,QAAQ,GAAG,IAAX;EACD;;EACD,MAAIA,QAAQ,GAAG,CAAf,EAAkB;EAChBA,IAAAA,QAAQ,GAAG,CAAX;EACD;;EACD,SAAOA,QAAP;EACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASK,SAAT,CAAmBT,MAAnB,EAA2B15B,CAA3B,EAA8B;EAC5B;EACA,MAAI81B,KAAK,GAAGt0C,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeg4C,MAAM,CAACK,SAAtB,CAAX,CAAZ;EACA,MAAIx3B,IAAI,GAAG,CAAX;EACA,MAAImM,KAAK,GAAG,CAAZ;;EACA,OAAK,IAAI3wB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrCwkB,IAAAA,IAAI,IAAIuzB,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAjB;EACD;;EACD5f,EAAAA,IAAI,GAAG7d,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY6T,CAAZ,IAAiBuC,IAAxB;EACAm3B,EAAAA,MAAM,CAAC2B,KAAP,GAAe75C,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeg4C,MAAM,CAACle,IAAtB,CAAX,CAAf;EAEA,MAAIthC,KAAK,GAAGw/C,MAAM,CAAC2B,KAAP,CAAa1hD,MAAb,GAAsB,CAAlC;;EACA,OAAK,IAAIoE,CAAC,GAAG+3C,KAAK,CAACn8C,MAAN,GAAe,CAA5B,EAA+BoE,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;EAC1C+3C,IAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,IAAsB5f,IAAtB;;EACA,WAAOroB,KAAK,IAAI,CAAT,IAAcw/C,MAAM,CAAC2B,KAAP,CAAanhD,KAAb,MAAwB,KAA7C,EAAoD;EAClDA,MAAAA,KAAK;EACN;;EACD,QAAI47C,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,GAAqB,IAAzB,EAA+B;EAC7B2T,MAAAA,KAAK,CAAClsB,MAAN,CAAa7rB,CAAb,EAAgB,CAAhB;EACA27C,MAAAA,MAAM,CAAC2B,KAAP,CAAanhD,KAAb,IAAsB,KAAtB;EACD,KAHD,MAGO;EACLw0B,MAAAA,KAAK,IAAIonB,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAlB;EACD;;EACDjoC,IAAAA,KAAK;EACN;;EACDw0B,EAAAA,KAAK,GAAGhqB,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAY6T,CAAZ,IAAiB0O,KAAzB;;EACA,OAAK,IAAI3wB,CAAC,GAAG+3C,KAAK,CAACn8C,MAAN,GAAe,CAA5B,EAA+BoE,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;EAC1C+3C,IAAAA,KAAK,CAAC/3C,CAAD,CAAL,CAASokC,SAAT,IAAsBzT,KAAtB;EACD;;EACD,SAAOonB,KAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAAS4G,aAAT,CAAuB5G,KAAvB,EAA8Bta,IAA9B,EAAoC;EAClC,MAAI1f,GAAG,GAAG,CAAV;EACA,MAAIuR,EAAE,GAAG,CAAT;EACA,MAAI+nB,IAAJ;;EACA,MAAI5Z,IAAJ,EAAU;EACR,SAAK,IAAIz9B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC,UAAIy9B,IAAI,CAACz9B,CAAD,CAAJ,KAAY,IAAhB,EAAsB;EACpBq3C,QAAAA,IAAI,GAAGjE,OAAO,CAAC2E,KAAK,CAAC/3C,CAAD,CAAN,CAAd;EACA+d,QAAAA,GAAG,IAAIs5B,IAAP;EACA/nB,QAAAA,EAAE,IAAI+nB,IAAI,GAAGU,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAtB;EACD;EACF;EACF,GARD,MAQO;EACL,SAAK,IAAItM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+3C,KAAK,CAACn8C,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrCq3C,MAAAA,IAAI,GAAGjE,OAAO,CAAC2E,KAAK,CAAC/3C,CAAD,CAAN,CAAd;EACA+d,MAAAA,GAAG,IAAIs5B,IAAP;EACA/nB,MAAAA,EAAE,IAAI+nB,IAAI,GAAGU,KAAK,CAAC/3C,CAAD,CAAL,CAASsM,CAAtB;EACD;EACF;;EACD,SAAOgjB,EAAE,GAAGvR,GAAZ;EACD;EAED;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASq1B,OAAT,CAAiBgF,IAAjB,EAAuB;EACrB,SAAOzxC,IAAI,CAACC,GAAL,CAASwxC,IAAI,CAAChU,SAAL,GAAiBgU,IAAI,CAACn3C,KAAtB,GAA8B,IAAvC,CAAP,CADqB;EAEtB;;EC/lBM,SAAS+9C,UAAT,CAAoB1C,MAApB,EAA4B;EACjCA,EAAAA,MAAM,CAACjyB,IAAP,CAAY,CAACphB,CAAD,EAAImH,CAAJ,KAAUnH,CAAC,CAACsI,IAAF,GAASnB,CAAC,CAACmB,IAAjC;;EACA,OAAK,IAAIvR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGs8C,MAAM,CAAC1gD,MAAP,GAAgB,CAApC,EAAuCoE,CAAC,EAAxC,EAA4C;EAC1C,QAAIs8C,MAAM,CAACt8C,CAAD,CAAN,CAAU2xB,EAAV,GAAe2qB,MAAM,CAACt8C,CAAC,GAAG,CAAL,CAAN,CAAcuR,IAAjC,EAAuC;EACrC+qC,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAU2xB,EAAV,GAAehrB,IAAI,CAACiL,GAAL,CAAS0qC,MAAM,CAACt8C,CAAC,GAAG,CAAL,CAAN,CAAc2xB,EAAvB,EAA2B2qB,MAAM,CAACt8C,CAAD,CAAN,CAAU2xB,EAArC,CAAf;EACA2qB,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAU27C,MAAV,GAAmBW,MAAM,CAACt8C,CAAD,CAAN,CAAU27C,MAAV,CAAiBvB,MAAjB,CAAwBkC,MAAM,CAACt8C,CAAC,GAAG,CAAL,CAAN,CAAc27C,MAAtC,CAAnB;EACAW,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAUi/C,QAAV,IAAsB3C,MAAM,CAACt8C,CAAC,GAAG,CAAL,CAAN,CAAci/C,QAApC;EACA3C,MAAAA,MAAM,CAACzwB,MAAP,CAAc7rB,CAAC,GAAG,CAAlB,EAAqB,CAArB;EACAA,MAAAA,CAAC;EACF;EACF;;EACD,SAAOs8C,MAAP;EACD;;ECZD;EAMA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAAS4C,aAAT,CAAuBp+C,IAAvB,EAA6BmxC,QAA7B,EAAqD;EAAA,MAAdtqC,OAAc,uEAAJ,EAAI;EAC1D,MAAI;EACFw3C,IAAAA,cAAc,GAAG,GADf;EAEFC,IAAAA,iBAAiB,GAAG,IAFlB;EAGFC,IAAAA,KAAK,GAAG,GAHN;EAIFC,IAAAA,OAAO,GAAG,IAJR;EAKFC,IAAAA,YAAY,GAAG,KALb;EAMF1J,IAAAA,SAAS,GAAG,GANV;EAOF2J,IAAAA,gBAAgB,GAAG,EAPjB;EAQFC,IAAAA,SAAS,GAAG,KARV;EASFtc,IAAAA,OAAO,GAAG;EATR,MAUAx7B,OAVJ;EAYA,MAAI+3C,aAAa,GAAG;EAClBP,IAAAA,cADkB;EAElBI,IAAAA,YAFkB;EAGlBC,IAAAA,gBAHkB;EAIlB3J,IAAAA,SAJkB;EAKlB1S,IAAAA;EALkB,GAApB;;EAQA,MAAIriC,IAAI,CAACwL,CAAL,CAAO,CAAP,IAAYxL,IAAI,CAACwL,CAAL,CAAO,CAAP,CAAhB,EAA2B;EACzBxL,IAAAA,IAAI,CAACwL,CAAL,GAASxL,IAAI,CAACwL,CAAL,CAAO6E,OAAP,EAAT;EACArQ,IAAAA,IAAI,CAACyL,CAAL,GAASzL,IAAI,CAACyL,CAAL,CAAO4E,OAAP,EAAT;EACD;;EAED,MAAIukC,OAAO,GAAGiK,aAAa,CAAC7+C,IAAD,EAAOmxC,QAAP,EAAiByN,aAAjB,CAA3B;;EACA,MAAIL,KAAJ,EAAW;EACT,SAAK,IAAIr/C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC,UAAI2G,IAAI,CAACC,GAAL,CAAS8uC,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAAX,CAAwBvhD,KAAjC,IAA0CwjD,KAA9C,EAAqD;EACnD3J,QAAAA,OAAO,CAAC7pB,MAAR,CAAe7rB,CAAf,EAAkB,CAAlB;EACD;EACF;EACF;;EAED,MAAIs/C,OAAJ,EAAa;EACX,QAAIM,GAAJ,EAAS7hC,GAAT;;EACA,SAAK,IAAI/d,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC6/C,MAAAA,SAAS,CAACnE,cAAV,CAAyBhG,OAAO,CAAC11C,CAAD,CAAhC;;EAEA,UACE01C,OAAO,CAAC11C,CAAD,CAAP,CAAWq9C,WAAX,IACA3H,OAAO,CAAC11C,CAAD,CAAP,CAAW6vC,YAAX,KAA4B,GAD5B,IAEA6F,OAAO,CAAC11C,CAAD,CAAP,CAAW6vC,YAAX,KAA4B,EAH9B,EAIE;EACA;EACA+P,QAAAA,GAAG,GAAG,CAAN;EACA7hC,QAAAA,GAAG,GAAG,CAAN;EACA,YAAI+hC,MAAM,GAAG,EAAb;;EACA,aAAK,IAAIp6C,CAAC,GAAGgwC,OAAO,CAAC11C,CAAD,CAAP,CAAWq9C,WAAX,CAAuBzhD,MAAvB,GAAgC,CAA7C,EAAgD8J,CAAC,IAAI,CAArD,EAAwDA,CAAC,EAAzD,EAA6D;EAC3DqY,UAAAA,GAAG,IAAIgiC,WAAW,CAACrK,OAAO,CAAC11C,CAAD,CAAP,CAAW+3C,KAAX,CAAiBryC,CAAjB,CAAD,CAAlB;;EACA,cAAIgwC,OAAO,CAAC11C,CAAD,CAAP,CAAWq9C,WAAX,CAAuB33C,CAAvB,MAA8B,KAAlC,EAAyC;EACvC,gBAAIs6C,KAAK,GAAGtK,OAAO,CAAC11C,CAAD,CAAP,CAAW+3C,KAAX,CAAiBlsB,MAAjB,CAAwBnmB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,CAAZ;EACAo6C,YAAAA,MAAM,CAAC9jD,IAAP,CAAY;EAAEsQ,cAAAA,CAAC,EAAE0zC,KAAK,CAAC1zC,CAAX;EAAcC,cAAAA,CAAC,EAAEyzC,KAAK,CAAC5b,SAAvB;EAAkCnjC,cAAAA,KAAK,EAAE++C,KAAK,CAAC/+C;EAA/C,aAAZ;EACAy0C,YAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWy9B,IAAX,CAAgB5R,MAAhB,CAAuBnmB,CAAvB,EAA0B,CAA1B;EACAgwC,YAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWs9C,KAAX,CAAiBzxB,MAAjB,CAAwBnmB,CAAxB,EAA2B,CAA3B;EACAgwC,YAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWq9C,WAAX,CAAuBxxB,MAAvB,CAA8BnmB,CAA9B,EAAiC,CAAjC;EACAgwC,YAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWi9C,OAAX;EACA2C,YAAAA,GAAG,IAAIG,WAAW,CAACC,KAAD,CAAlB;EACD;EACF;;EACD,YAAIF,MAAM,CAAClkD,MAAP,GAAgB,CAApB,EAAuB;EACrBgkD,UAAAA,GAAG,GAAIA,GAAG,GAAGlK,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAAX,CAAwBvhD,KAA/B,GAAwCkiB,GAA9C;EACA23B,UAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAAX,CAAwBvhD,KAAxB,IAAiC+jD,GAAjC;EACA,cAAIK,MAAM,GAAG,EAAb;;EACA,eAAK,IAAIv6C,CAAC,GAAGo6C,MAAM,CAAClkD,MAAP,GAAgB,CAA7B,EAAgC8J,CAAC,IAAI,CAArC,EAAwCA,CAAC,EAAzC,EAA6C;EAC3Cu6C,YAAAA,MAAM,CAACjkD,IAAP,CAAY8jD,MAAM,CAACp6C,CAAD,CAAlB;EACD;;EACDg6C,UAAAA,aAAa,CAACP,cAAd,GAA+Bx4C,IAAI,CAACC,GAAL,CAASg5C,GAAT,CAA/B;EACA,cAAItD,MAAM,GAAGqD,aAAa,CAAC7+C,IAAD,EAAOm/C,MAAP,EAAeP,aAAf,CAA1B;;EAEA,eAAK,IAAIh6C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG42C,MAAM,CAAC1gD,MAA3B,EAAmC8J,CAAC,EAApC,EAAwC;EACtCgwC,YAAAA,OAAO,CAAC15C,IAAR,CAAasgD,MAAM,CAAC52C,CAAD,CAAnB;EACD;EACF;EACF;EACF,KAzCU;;;EA2CX,QAAIw6C,WAAW,GAAG,CAAlB;EACA,QAAIC,WAAW,GAAG,CAAlB;;EACA,SAAK,IAAIngD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvCmgD,MAAAA,WAAW,IAAIx5C,IAAI,CAACC,GAAL,CAASD,IAAI,CAAC8U,KAAL,CAAWi6B,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAAX,CAAwBvhD,KAAnC,CAAT,CAAf;EACD;;EACD,QAAIskD,WAAW,KAAKhB,cAApB,EAAoC;EAClCe,MAAAA,WAAW,GAAGf,cAAc,GAAGgB,WAA/B;;EACA,WAAK,IAAIngD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC01C,QAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAAX,CAAwBvhD,KAAxB,IAAiCqkD,WAAjC;EACD;EACF;EACF;;EAEDxK,EAAAA,OAAO,CAACrrB,IAAR,CAAa,CAACphB,CAAD,EAAImH,CAAJ,KAAU;EACrB,WAAOA,CAAC,CAACguC,MAAF,GAAWn1C,CAAC,CAACm1C,MAApB;EACD,GAFD;;EAIA,MAAIiB,KAAJ,EAAW;EACT,SAAK,IAAIr/C,CAAC,GAAG01C,OAAO,CAAC95C,MAAR,GAAiB,CAA9B,EAAiCoE,CAAC,IAAI,CAAtC,EAAyCA,CAAC,EAA1C,EAA8C;EAC5C,UAAI2G,IAAI,CAACC,GAAL,CAAS8uC,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAAX,CAAwBvhD,KAAjC,IAA0CwjD,KAA9C,EAAqD;EACnD3J,QAAAA,OAAO,CAAC7pB,MAAR,CAAe7rB,CAAf,EAAkB,CAAlB;EACD;EACF;EACF;;EAED,MAAIs8C,MAAM,GAAG,EAAb,CAvG0D;;EAwG1D,OAAK,IAAIt8C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC,QAAI27C,MAAM,GAAGjG,OAAO,CAAC11C,CAAD,CAApB;EACAs8C,IAAAA,MAAM,CAACt8C,CAAD,CAAN,GAAY;EACVuR,MAAAA,IAAI,EAAEoqC,MAAM,CAACyB,YAAP,CAAoB7rC,IADhB;EAEVogB,MAAAA,EAAE,EAAEgqB,MAAM,CAACyB,YAAP,CAAoBzrB,EAFd;EAGVstB,MAAAA,QAAQ,EAAEtD,MAAM,CAACyB,YAAP,CAAoBvhD,KAHpB;EAIV8/C,MAAAA,MAAM,EAAE,CACN;EACE/W,QAAAA,IAAI,EAAE+W,MAAM,CAAC/W,IAAP,IAAe,QADvB;EAEEiL,QAAAA,YAAY,EAAE8L,MAAM,CAAC9L;EAFvB,OADM;EAJE,KAAZ;;EAWA,QAAI4P,SAAJ,EAAe;EACbnD,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAU27C,MAAV,CAAiB,CAAjB,EAAoBvD,IAApB,GAA2BuD,MAAM,CAAC5D,KAAlC;EACD;;EACD,QAAI4D,MAAM,CAAC+B,KAAX,EAAkB;EAChBpB,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAU27C,MAAV,CAAiB,CAAjB,EAAoBj2C,CAApB,GAAwBi2C,MAAM,CAAC+B,KAA/B;EACD;;EACD,QAAI,CAAC/B,MAAM,CAAClJ,UAAR,IAAsBkJ,MAAM,CAAC9L,YAAP,KAAwB,GAAlD,EAAuD;EACrDyM,MAAAA,MAAM,CAACt8C,CAAD,CAAN,CAAU27C,MAAV,CAAiB,CAAjB,EAAoBtmB,KAApB,GAA4BsmB,MAAM,CAACyC,MAAnC;EACD;EACF;;EAED,MAAIgB,iBAAJ,EAAuB9C,MAAM,GAAG0C,UAAU,CAAC1C,MAAD,CAAnB,CAhImC;;EAkI1D,SAAOA,MAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACA,SAASqD,aAAT,CAAuB7+C,IAAvB,EAA6BmxC,QAA7B,EAAqD;EAAA,MAAdtqC,OAAc,uEAAJ,EAAI;EACnD,MAAI;EACFw3C,IAAAA,cAAc,GAAG,GADf;EAEFI,IAAAA,YAAY,GAAG,KAFb;EAGFC,IAAAA,gBAAgB,GAAG,EAHjB;EAIF3J,IAAAA,SAAS,GAAG,GAJV;EAKF1S,IAAAA,OAAO,GAAG;EALR,MAMAx7B,OANJ;EAQA,MAAIy4C,QAAJ,EAAcrI,KAAd;EACA,MAAIrC,OAAO,GAAG,EAAd;EACA,MAAI2K,QAAQ,GAAG;EAAE/zC,IAAAA,CAAC,EAAE;EAAL,GAAf;EACA,MAAIg0C,gBAAgB,GAAG,CAAvB;EACAd,EAAAA,gBAAgB,IAAI3J,SAApB;;EACA,OAAK,IAAI71C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiyC,QAAQ,CAACr2C,MAA7B,EAAqCoE,CAAC,EAAtC,EAA0C;EACxC,QAAI2G,IAAI,CAACC,GAAL,CAASqrC,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB+zC,QAAQ,CAAC/zC,CAAlC,IAAuCkzC,gBAA3C,EAA6D;EAC3DY,MAAAA,QAAQ,GAAG;EACTnD,QAAAA,OAAO,EAAE,CADA;EAETrZ,QAAAA,KAAK,EAAE,KAFE;EAGTsZ,QAAAA,MAAM,EAAEjL,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAH3B;EAITk8C,QAAAA,KAAK,EAAElL,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAJ1B;EAKT4uC,QAAAA,YAAY,EAAE,EALL;EAMTgN,QAAAA,OAAO,EAAE,EANA;EAOTG,QAAAA,OAAO,EAAEnH,SAPA;EAQT1S,QAAAA,OARS;EASTia,QAAAA,YAAY,EAAE;EACZ7rC,UAAAA,IAAI,EAAE0gC,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAAZ,GAAoB,CAD9B;EAEZ0wB,UAAAA,EAAE,EAAEsgB,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAAZ,GAAoB;EAF5B,SATL;EAaT82C,QAAAA,KAAK,EAAE,CACL;EACEzrC,UAAAA,CAAC,EAAE2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CADjB;EAEE83B,UAAAA,SAAS,EAAE6N,QAAQ,CAACjyC,CAAD,CAAR,CAAYuM,CAFzB;EAGEtL,UAAAA,KAAK,EAAEgxC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB;EAHrB,SADK;EAbE,OAAX;EAqBA,UAAIgxC,QAAQ,CAACjyC,CAAD,CAAR,CAAY4kC,IAAhB,EAAsBwb,QAAQ,CAACxb,IAAT,GAAgBqN,QAAQ,CAACjyC,CAAD,CAAR,CAAY4kC,IAA5B;EACtB8Q,MAAAA,OAAO,CAAC15C,IAAR,CAAaokD,QAAb;EACD,KAxBD,MAwBO;EACL,UAAIziD,GAAG,GAAGs0C,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAAtC;EACAm/C,MAAAA,QAAQ,CAACjD,KAAT,GAAiBx2C,IAAI,CAACiL,GAAL,CAASwuC,QAAQ,CAACjD,KAAlB,EAAyBx/C,GAAzB,CAAjB;EACAyiD,MAAAA,QAAQ,CAAClD,MAAT,GAAkBv2C,IAAI,CAAC+K,GAAL,CAAS0uC,QAAQ,CAAClD,MAAlB,EAA0Bv/C,GAA1B,CAAlB;EACAyiD,MAAAA,QAAQ,CAACnD,OAAT;EACAmD,MAAAA,QAAQ,CAACrI,KAAT,CAAe/7C,IAAf,CAAoB;EAClBsQ,QAAAA,CAAC,EAAE2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CADG;EAElB83B,QAAAA,SAAS,EAAE6N,QAAQ,CAACjyC,CAAD,CAAR,CAAYuM,CAFL;EAGlBtL,QAAAA,KAAK,EAAEgxC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB;EAHD,OAApB;EAKAm/C,MAAAA,QAAQ,CAAChD,YAAT,CAAsB7rC,IAAtB,GAA6B5K,IAAI,CAAC+K,GAAL,CAC3B0uC,QAAQ,CAAChD,YAAT,CAAsB7rC,IADK,EAE3B0gC,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAAZ,GAAoB,CAFT,CAA7B;EAIAm/C,MAAAA,QAAQ,CAAChD,YAAT,CAAsBzrB,EAAtB,GAA2BhrB,IAAI,CAACiL,GAAL,CACzBwuC,QAAQ,CAAChD,YAAT,CAAsBzrB,EADG,EAEzBsgB,QAAQ,CAACjyC,CAAD,CAAR,CAAYsM,CAAZ,GAAgB2lC,QAAQ,CAACjyC,CAAD,CAAR,CAAYiB,KAAZ,GAAoB,CAFX,CAA3B;EAIA,UAAIgxC,QAAQ,CAACjyC,CAAD,CAAR,CAAY4kC,IAAhB,EAAsBwb,QAAQ,CAACxb,IAAT,GAAgBqN,QAAQ,CAACjyC,CAAD,CAAR,CAAY4kC,IAA5B;EACvB;;EACDyb,IAAAA,QAAQ,GAAGpO,QAAQ,CAACjyC,CAAD,CAAnB;EACD;;EAED,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC+3C,IAAAA,KAAK,GAAGrC,OAAO,CAAC11C,CAAD,CAAP,CAAW+3C,KAAnB;EACA,QAAIkH,QAAQ,GAAGvJ,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAA1B;EACA,QAAIuB,aAAa,GAAG,CAApB;EACA,QAAI4B,aAAa,GAAG,CAApB;;EAEA,SAAK,IAAI76C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqyC,KAAK,CAACn8C,MAA1B,EAAkC8J,CAAC,EAAnC,EAAuC;EACrC,UAAI2xC,IAAI,GAAG0I,WAAW,CAAChI,KAAK,CAACryC,CAAD,CAAN,CAAtB;EACAi5C,MAAAA,aAAa,IAAI5G,KAAK,CAACryC,CAAD,CAAL,CAAS4G,CAAT,GAAa+qC,IAA9B;EACAkJ,MAAAA,aAAa,IAAIlJ,IAAjB;EACD;;EACD3B,IAAAA,OAAO,CAAC11C,CAAD,CAAP,CAAWo+C,MAAX,GAAoBO,aAAa,GAAG4B,aAApC;;EAEA,QAAIhB,YAAY,KAAK,KAArB,EAA4B;EAC1BN,MAAAA,QAAQ,CAACpjD,KAAT,GAAiBgmC,aAAa,CAAC/gC,IAAD,EAAO;EACnCyQ,QAAAA,IAAI,EAAE0tC,QAAQ,CAAC1tC,IADoB;EAEnCogB,QAAAA,EAAE,EAAEstB,QAAQ,CAACttB;EAFsB,OAAP,CAA9B;EAID,KALD,MAKO;EACLstB,MAAAA,QAAQ,CAACpjD,KAAT,GAAiB0kD,aAAjB;EACD;;EACDD,IAAAA,gBAAgB,IAAIrB,QAAQ,CAACpjD,KAA7B;EACD;;EAED,MAAIsjD,cAAc,GAAG,CAArB,EAAwB;EACtB,QAAIqB,cAAc,GAAGrB,cAAc,GAAGmB,gBAAtC;;EACA,SAAK,IAAItgD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG01C,OAAO,CAAC95C,MAA5B,EAAoCoE,CAAC,EAArC,EAAyC;EACvC,UAAIi/C,QAAQ,GAAGvJ,OAAO,CAAC11C,CAAD,CAAP,CAAWo9C,YAA1B;EACA6B,MAAAA,QAAQ,CAACpjD,KAAT,IAAkB2kD,cAAlB;EACD;EACF;;EAED,SAAO9K,OAAP;EACD;EAED;EACA;EACA;EACA;EACA;EACA;;;EACA,SAASqK,WAAT,CAAqB3H,IAArB,EAA2B;EACzB,SAAOzxC,IAAI,CAACC,GAAL,CAASwxC,IAAI,CAAChU,SAAL,GAAiBgU,IAAI,CAACn3C,KAAtB,GAA8B,IAAvC,CAAP,CADyB;EAE1B;;EC7QD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEO,SAASw/C,mBAAT,CAA6B3/C,IAA7B,EAAiD;EAAA,MAAd6G,OAAc,uEAAJ,EAAI;EACtD,MAAIowC,KAAK,GAAG0C,kBAAkB,CAAC35C,IAAD,EAAO6G,OAAO,CAAC+4C,WAAf,CAA9B;EACA3I,EAAAA,KAAK,GAAG/F,qBAAqB,CAAC+F,KAAD,EAAQpwC,OAAO,CAAC6nC,UAAhB,CAA7B;EACA,SAAO0P,aAAa,CAACp+C,IAAD,EAAOi3C,KAAP,EAAcpwC,OAAO,CAAC20C,MAAtB,CAApB;EACD;;EC1CD;EACA;EACA;EACA;EACA;EACA;EAEO,SAASqE,0BAAT,CAAoCC,UAApC,EAAgD;EACrD,MAAI,OAAOA,UAAP,KAAsB,QAA1B,EAAoC;EAClC,WAAO,EAAP;EACD;;EACDA,EAAAA,UAAU,GAAGA,UAAU,CAACl1C,WAAX,EAAb;;EACA,MAAIk1C,UAAU,CAACh1C,QAAX,CAAoB,MAApB,CAAJ,EAAiC;EAC/B,WAAO,CAAC,IAAD,CAAP;EACD;;EACD,MAAIg1C,UAAU,CAACh1C,QAAX,CAAoB,MAApB,KAA+Bg1C,UAAU,CAACh1C,QAAX,CAAoB,MAApB,CAAnC,EAAgE;EAC9D,WAAO,CAAC,IAAD,EAAO,KAAP,CAAP;EACD;;EACD,SAAO,CAAC,IAAD,EAAO,IAAP,CAAP;EACD;;ECnBD;EACA;EACA;EACA;EACA;EACO,SAASi1C,eAAT,GAA+C;EAAA,MAAtB14C,IAAsB,uEAAf,EAAe;EAAA,MAAX0+B,IAAW,uEAAJ,EAAI;EACpD,MAAI1+B,IAAI,KAAK,IAAb,EAAmBA,IAAI,GAAG,EAAP;;EACnB,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;EAC5BA,IAAAA,IAAI,GAAG;EAAE24C,MAAAA,KAAK,EAAE34C;EAAT,KAAP;EACD;;EAED,MAAI44C,OAAJ;;EACA,MAAIhhD,KAAK,CAACyQ,OAAN,CAAcq2B,IAAI,CAACma,QAAnB,CAAJ,EAAkC;EAChCD,IAAAA,OAAO,GAAG,CAACla,IAAI,CAACma,QAAL,CAAc,CAAd,KAAoB,EAArB,EAAyBz6C,OAAzB,CAAiC,UAAjC,EAA6C,IAA7C,EAAmDmF,WAAnD,EAAV;EACD,GAFD,MAEO;EACLq1C,IAAAA,OAAO,GAAG,CAACla,IAAI,CAACma,QAAL,IAAiB,EAAlB,EAAsBz6C,OAAtB,CAA8B,UAA9B,EAA0C,IAA1C,EAAgDmF,WAAhD,EAAV;EACD;;EAED,MAAIq1C,OAAJ,EAAa,OAAOA,OAAP;EAEb,MAAID,KAAK,GAAG34C,IAAI,CAAC24C,KAAjB;;EACA,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7B,WAAO,EAAP;EACD;;EAEDA,EAAAA,KAAK,GAAGA,KAAK,CAACp1C,WAAN,EAAR;;EACA,MAAIo1C,KAAK,CAACl1C,QAAN,CAAe,IAAf,CAAJ,EAA0B;EACxB,WAAO,IAAP;EACD;;EAED,MACEk1C,KAAK,CAACl1C,QAAN,CAAe,OAAf,KACCk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,MAA2Bk1C,KAAK,CAACl1C,QAAN,CAAe,IAAf,KAAwBk1C,KAAK,CAACl1C,QAAN,CAAe,IAAf,CAAnD,CAFH,EAGE;EACA,WAAO,WAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,KAA0Bk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,CAA9B,EAAsD;EACpD,WAAO,MAAP;EACD;;EAED,MACEk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,KACCk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,KAA0Bk1C,KAAK,CAACl1C,QAAN,CAAe,IAAf,CAF7B,EAGE;EACA,WAAO,MAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,CAAJ,EAA4B;EAC1B,WAAO,MAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,CAAJ,EAA4B;EAC1B,WAAO,MAAP;EACD;;EAED,MACEk1C,KAAK,CAACl1C,QAAN,CAAe,OAAf,KACAk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,CADA,IAEAk1C,KAAK,CAACl1C,QAAN,CAAe,OAAf,CAHF,EAIE;EACA,WAAO,OAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,OAAf,CAAJ,EAA6B;EAC3B,WAAO,OAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,OAAf,CAAJ,EAA6B;EAC3B,WAAO,OAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,CAAJ,EAA4B;EAC1B,WAAO,MAAP;EACD;;EAED,MAAIk1C,KAAK,CAACl1C,QAAN,CAAe,MAAf,KAA0Bk1C,KAAK,CAACl1C,QAAN,CAAe,KAAf,CAA9B,EAAqD;EACnD,WAAO,SAAP;EACD;;EAED,SAAO,EAAP;EACD;;EC9EM,SAASq1C,WAAT,CAAqBpa,IAArB,EAA2B1+B,IAA3B,EAAiC;EACtC,QAAM+4C,QAAQ,GAAG;EACf59C,IAAAA,SAAS,EAAE,CADI;EAEf6/B,IAAAA,OAAO,EAAE,EAFM;EAGfge,IAAAA,KAAK,EAAE,KAHQ;EAIfC,IAAAA,IAAI,EAAE,KAJS;EAKfC,IAAAA,SAAS,EAAE;EALI,GAAjB;EAQAC,EAAAA,QAAQ,CAACJ,QAAD,EAAW,OAAX,EAAoBra,IAAI,CAAC0a,KAAzB,CAAR;EACAD,EAAAA,QAAQ,CAACJ,QAAD,EAAW,SAAX,EAAsBra,IAAI,CAAC,cAAD,CAA1B,CAAR;EACAya,EAAAA,QAAQ,CACNJ,QADM,EAEN,OAFM,EAGNra,IAAI,CAAC,gBAAD,CAAJ,IAA0BA,IAAI,CAAC,UAAD,CAA9B,IAA8C1+B,IAAI,CAACq5C,OAH7C,CAAR;EAKAF,EAAAA,QAAQ,CAACJ,QAAD,EAAW,YAAX,EAAyBL,eAAe,CAACK,QAAD,EAAWra,IAAX,CAAxC,CAAR;EACAya,EAAAA,QAAQ,CAACJ,QAAD,EAAW,aAAX,EAA0BO,UAAU,CAACt5C,IAAI,CAACu5C,EAAL,IAAW7a,IAAI,CAAC,KAAD,CAAhB,CAApC,CAAR;EACAya,EAAAA,QAAQ,CAACJ,QAAD,EAAW,WAAX,EAAwBO,UAAU,CAAC5a,IAAI,CAAC,mBAAD,CAAL,CAAlC,CAAR;EACAya,EAAAA,QAAQ,CAACJ,QAAD,EAAW,MAAX,EAAmBra,IAAI,CAAC8a,QAAxB,CAAR;EACAL,EAAAA,QAAQ,CAACJ,QAAD,EAAW,OAAX,EAAoB/4C,IAAI,CAACy5C,MAAzB,CAAR;;EACA,MAAIz5C,IAAI,CAAC05C,MAAL,KAAgBphD,SAApB,EAA+B;EAC7B6gD,IAAAA,QAAQ,CAACJ,QAAD,EAAW,iBAAX,EAA8Bj4B,QAAQ,CAAC9gB,IAAI,CAAC05C,MAAN,EAAc,EAAd,CAAtC,CAAR;EACD;;EACDP,EAAAA,QAAQ,CAACJ,QAAD,EAAW,OAAX,EAAoBj4B,QAAQ,CAAC9gB,IAAI,CAAC25C,KAAN,EAAa,EAAb,CAA5B,CAAR;;EACA,MAAIZ,QAAQ,CAAC3hD,IAAb,EAAmB;EACjB,QAAI2hD,QAAQ,CAAC3hD,IAAT,CAAc/C,WAAd,GAA4BgO,OAA5B,CAAoC,KAApC,KAA8C,CAAlD,EAAqD;EACnD02C,MAAAA,QAAQ,CAACC,KAAT,GAAiB,IAAjB;EACD,KAFD,MAEO,IAAID,QAAQ,CAAC3hD,IAAT,CAAc/C,WAAd,GAA4BgO,OAA5B,CAAoC,UAApC,KAAmD,CAAvD,EAA0D;EAC/D02C,MAAAA,QAAQ,CAACE,IAAT,GAAgB,IAAhB;EACD;EACF;;EAED,MAAIva,IAAI,CAAC,UAAD,CAAR,EAAsB;EACpBqa,IAAAA,QAAQ,CAAC/d,OAAT,GAAmB0D,IAAI,CAAC,UAAD,CAAJ,CAAiB53B,KAAjB,CAAuB,GAAvB,EAA4B1F,GAA5B,CAAiCw4C,GAAD,IAASA,GAAG,CAAC5yC,IAAJ,EAAzC,CAAnB;EACD,GAFD,MAEO,IAAI03B,IAAI,CAAC,iBAAD,CAAR,EAA6B;EAClCqa,IAAAA,QAAQ,CAAC/d,OAAT,GAAmB,CAAC0D,IAAI,CAAC,iBAAD,CAAJ,CAAwBtgC,OAAxB,CAAgC,eAAhC,EAAiD,EAAjD,CAAD,CAAnB;EACD,GAFM,MAEA;EACL26C,IAAAA,QAAQ,CAAC/d,OAAT,GAAmBwd,0BAA0B,CAACO,QAAQ,CAACN,UAAV,CAA7C;EACD;;EAEDM,EAAAA,QAAQ,CAAC59C,SAAT,GAAqB49C,QAAQ,CAAC/d,OAAT,CAAiBvnC,MAAtC;;EAEA,MAAIirC,IAAI,CAACmb,MAAT,EAAiB;EACf,QAAIC,OAAO,GAAGpb,IAAI,CAACmb,MAAL,CAAY/yC,KAAZ,CAAkB,OAAlB,CAAd;;EACA,QAAIgzC,OAAO,CAACr2C,QAAR,CAAiB,GAAjB,KAAyBq2C,OAAO,CAACr2C,QAAR,CAAiB,GAAjB,CAA7B,EAAoD;EAClDs1C,MAAAA,QAAQ,CAACG,SAAT,GAAqB,IAArB;EACD;EACF;;EAED,MAAIl5C,IAAI,CAAC+5C,IAAT,EAAe;EACbhB,IAAAA,QAAQ,CAACzmD,IAAT,GAAgB,IAAIC,IAAJ,CAASyN,IAAI,CAAC+5C,IAAL,GAAY,IAArB,EAA2BjV,WAA3B,EAAhB;EACD;;EACD,SAAOiU,QAAP;EACD;;EAED,SAASI,QAAT,CAAkBjwB,GAAlB,EAAuBzyB,IAAvB,EAA6B/C,KAA7B,EAAoC;EAClC,MAAIA,KAAK,KAAK4E,SAAd,EAAyB;EACvB,QAAI,OAAO5E,KAAP,KAAiB,QAArB,EAA+B;EAC7B,UAAIA,KAAK,CAACunC,UAAN,CAAiB,GAAjB,KAAyBvnC,KAAK,CAACgU,QAAN,CAAe,GAAf,CAA7B,EAAkD;EAChDhU,QAAAA,KAAK,GAAGA,KAAK,CAAC6E,SAAN,CAAgB,CAAhB,EAAmB7E,KAAK,CAACD,MAAN,GAAe,CAAlC,CAAR;EACD;;EACDy1B,MAAAA,GAAG,CAACzyB,IAAD,CAAH,GAAY/C,KAAK,CAACsT,IAAN,EAAZ;EACD,KALD,MAKO;EACLkiB,MAAAA,GAAG,CAACzyB,IAAD,CAAH,GAAY/C,KAAZ;EACD;EACF;EACF;;EC/DD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,MAAM4pC,cAAc,GAAG;EACrB0c,EAAAA,aAAa,EAAE;EADM,CAAvB;EAIA,MAAMC,oBAAoB,GAAG;EAC3BjD,EAAAA,cAAc,EAAE,GADW;EAE3BE,EAAAA,KAAK,EAAE,GAFoB;EAG3BC,EAAAA,OAAO,EAAE,IAHkB;EAI3BC,EAAAA,YAAY,EAAE;EAJa,CAA7B;EAOA,MAAM8C,mBAAmB,GAAG;EAC1B3H,EAAAA,eAAe,EAAE;EADS,CAA5B;EAIA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EACO,SAAS4H,SAAT,CAAmBC,SAAnB,EAA4C;EAAA,MAAd56C,OAAc,uEAAJ,EAAI;EACjDA,EAAAA,OAAO,GAAG,EACR,GAAG89B,cADK;EAER,OAAG99B;EAFK,GAAV;EAKA,QAAM66C,WAAW,GAAGzc,OAAO,CAACwc,SAAD,EAAY;EACrC7c,IAAAA,iBAAiB,EAAE,IADkB;EAErCE,IAAAA,qBAAqB,EAAE,IAFc;EAGrCE,IAAAA,SAAS,EAAE;EAH0B,GAAZ,CAAP,CAIjBwB,OAJiB,CAIT,CAJS,CAApB;EAMA,MAAI4Z,QAAQ,GAAGD,WAAW,CAACuB,WAAW,CAAC3b,IAAb,EAAmB2b,WAAW,CAACr6C,IAA/B,CAA1B;;EAEA,MACER,OAAO,CAACw6C,aAAR,IACAjB,QAAQ,CAACE,IADT,IAEAF,QAAQ,CAAC59C,SAAT,KAAuB,CAFvB,IAGA49C,QAAQ,CAAC/d,OAAT,CAAiB,CAAjB,MAAwB,IAJ1B,EAKE;EACA,QAAI;EAAEmZ,MAAAA,MAAM,GAAG,EAAX;EAAe9M,MAAAA,UAAU,GAAG,EAA5B;EAAgCkR,MAAAA,WAAW,GAAG;EAA9C,QAAqD/4C,OAAzD;EAEA,UAAM86C,aAAa,GAAG,EAAE,GAAGL,oBAAL;EAA2B,SAAG9F;EAA9B,KAAtB;EACA,UAAMoG,YAAY,GAAG,EAAE,GAAGL,mBAAL;EAA0B,SAAG3B;EAA7B,KAArB;;EAEA,QAAIQ,QAAQ,CAACpR,OAAb,EAAsB;EACpBN,MAAAA,UAAU,CAACM,OAAX,GAAqBoR,QAAQ,CAACpR,OAA9B;EACD;;EAEDoR,IAAAA,QAAQ,CAAC9oB,KAAT,GAAiBqoB,mBAAmB,CAAC+B,WAAW,CAACz2C,OAAZ,CAAoB,CAApB,EAAuBjL,IAAxB,EAA8B;EAChE0uC,MAAAA,UADgE;EAEhE8M,MAAAA,MAAM,EAAEmG,aAFwD;EAGhE/B,MAAAA,WAAW,EAAEgC;EAHmD,KAA9B,CAApC;EAKD;;EAED,SAAOxB,QAAP;EACD;;EClFD,MAAMC,KAAK,GAAG,kBAAd;EACA,MAAMwB,UAAU,GAAG,mBAAnB;AACA,kBAAe;EACbj+C,EAAAA,IAAI,EAAE,CAACk+C,GAAD,EAAMnb,QAAN,KAAmB;EACvB,QAAIQ,SAAS,GAAG4a,YAAY,CAACpb,QAAD,CAA5B;EAEA,WAAOmb,GAAG,CAACl+C,IAAJ,CAAUk+C,GAAD,IAAS;EACvB,aAAOC,YAAY,CAACtb,IAAM,CAACM,WAAP,CAAmB+a,GAAnB,CAAD,CAAZ,KAA0C3a,SAAjD;EACD,KAFM,CAAP;EAGD,GAPY;EASbc,EAAAA,WAAW,EAAGtB,QAAD,IAAc;EACzB,UAAMG,SAAS,GAAGL,IAAM,CAACI,YAAP,CAAoBF,QAApB,CAAlB;;EACA,QAAIG,SAAS,KAAK,KAAd,IAAuBA,SAAS,KAAK,IAArC,IAA6CA,SAAS,KAAK,OAA/D,EAAwE;EACtE,UAAIuZ,KAAK,CAAC2B,IAAN,CAAWrb,QAAX,CAAJ,EAA0B;EACxB,eAAO,UAAP;EACD;EACF;;EACD,WAAOF,IAAM,CAACW,iBAAP,CAAyBT,QAAzB,CAAP;EACD,GAjBY;EAmBbptC,EAAAA,OAAO,EAAE,CAACotC,QAAD,EAAWW,OAAX,KAAuB;EAC9B,UAAMR,SAAS,GAAGL,IAAM,CAACI,YAAP,CAAoBF,QAApB,CAAlB;EACA,QAAIgB,QAAQ,GAAG,EAAf;;EACA,QAAIb,SAAS,KAAK,KAAd,IAAuBA,SAAS,KAAK,IAArC,IAA6CA,SAAS,KAAK,OAA/D,EAAwE;EACtE,UAAIc,WAAW,GAAGnB,IAAM,CAACc,cAAP,CAAsBD,OAAtB,CAAlB;EACAK,MAAAA,QAAQ,GAAG6Z,SAAS,CAAC5Z,WAAD,CAApB;EACD;;EACD,WAAOD,QAAP;EACD,GA3BY;EA6BbluC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ;EA7BM,CAAf;EAgCA,MAAMwoD,IAAI,GAAG,YAAb;;EAEA,SAASF,YAAT,CAAsBpb,QAAtB,EAAgC;EAC9B,MAAI,OAAOA,QAAP,KAAoB,WAAxB,EAAqC,OAAOhnC,SAAP;EAErC,MAAIwnC,SAAS,GAAGV,IAAM,CAACC,WAAP,CAAmBC,QAAnB,CAAhB;EACAQ,EAAAA,SAAS,GAAGA,SAAS,CAAC1hC,OAAV,CAAkBw8C,IAAlB,EAAwB,IAAxB,CAAZ;;EAEA,MAAI5B,KAAK,CAAC2B,IAAN,CAAWrb,QAAX,CAAJ,EAA0B;EACxBQ,IAAAA,SAAS,GAAGA,SAAS,CAAC1hC,OAAV,CAAkBo8C,UAAlB,EAA8B,EAA9B,CAAZ;EACD;;EACD,SAAO1a,SAAP;EACD;;AChDD,kBAAe;EACb1tC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,6BAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,gBAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACFA,uBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,UAAD,CADM;;EAEbD,EAAAA,QAAQ,GAAG;EACT,WAAO,EAAP;EACD;;EAJY,CAAf;;ACEA,oBAAe;EACbC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,OAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,wCAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,2BAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,iBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,IAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,oBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,OAAD,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW;EAHP,CAAf;;ACAA,yBAAe;EACb3tC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,YAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,kBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,mBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,MAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,kBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ACAA,kBAAe;EACbjuC,EAAAA,KAAK,EAAE,CAAC,SAAD,EAAY,KAAZ,CADM;EAEbmK,EAAAA,IAAI,EAAE6iC,IAAM,CAACQ,YAFA;EAGbgB,EAAAA,WAAW,EAAExB,IAAM,CAACW,iBAHP;EAIb7tC,EAAAA,OAAO,EAAEktC,IAAM,CAACiB;EAJH,CAAf;;ECFA,MAAMwa,GAAG,GAAG,EAAZ;EACAA,GAAG,CAAC,UAAD,CAAH,GAAkB,EAAlB;EAEAA,GAAG,CAAC,UAAD,CAAH,CAAgB,SAAhB,IAA6BC,eAA7B;EAEAD,GAAG,CAAC,QAAD,CAAH,GAAgB,EAAhB;EAEAA,GAAG,CAAC,QAAD,CAAH,CAAc,cAAd,IAAgCE,kBAAhC;EAGAF,GAAG,CAAC,QAAD,CAAH,CAAc,mBAAd,IAAqCG,uBAArC;EAGAH,GAAG,CAAC,QAAD,CAAH,CAAc,sCAAd,IAAwDI,0CAAxD;EAGAJ,GAAG,CAAC,QAAD,CAAH,CAAc,iCAAd,IAAmDK,qCAAnD;EAGAL,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuBM,SAAvB;EAGAN,GAAG,CAAC,QAAD,CAAH,CAAc,iBAAd,IAAmCO,qBAAnC;EAGAP,GAAG,CAAC,QAAD,CAAH,CAAc,SAAd,IAA2BQ,aAA3B;EAGAR,GAAG,CAAC,QAAD,CAAH,CAAc,SAAd,IAA2BS,aAA3B;EAGAT,GAAG,CAAC,QAAD,CAAH,CAAc,eAAd,IAAiCU,mBAAjC;EAGAV,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuBW,SAAvB;EAGAX,GAAG,CAAC,QAAD,CAAH,CAAc,OAAd,IAAyBY,WAAzB;EAGAZ,GAAG,CAAC,QAAD,CAAH,CAAc,IAAd,IAAsBa,QAAtB;EAGAb,GAAG,CAAC,QAAD,CAAH,CAAc,UAAd,IAA4Bc,cAA5B;EAGAd,GAAG,CAAC,QAAD,CAAH,CAAc,IAAd,IAAsBe,QAAtB;EAGAf,GAAG,CAAC,QAAD,CAAH,CAAc,MAAd,IAAwBgB,UAAxB;EAGAhB,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuBiB,SAAvB;EAGAjB,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuBkB,SAAvB;EAGAlB,GAAG,CAAC,QAAD,CAAH,CAAc,gBAAd,IAAkCmB,oBAAlC;EAGAnB,GAAG,CAAC,QAAD,CAAH,CAAc,UAAd,IAA4BoB,cAA5B;EAGApB,GAAG,CAAC,QAAD,CAAH,CAAc,OAAd,IAAyBqB,WAAzB;EAGArB,GAAG,CAAC,QAAD,CAAH,CAAc,2BAAd,IAA6CsB,+BAA7C;EAGAtB,GAAG,CAAC,QAAD,CAAH,CAAc,IAAd,IAAsBuB,QAAtB;EAGAvB,GAAG,CAAC,QAAD,CAAH,CAAc,OAAd,IAAyBwB,WAAzB;EAGAxB,GAAG,CAAC,QAAD,CAAH,CAAc,YAAd,IAA8ByB,gBAA9B;EAGAzB,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuB0B,SAAvB;EAGA1B,GAAG,CAAC,QAAD,CAAH,CAAc,MAAd,IAAwB2B,UAAxB;EAGA3B,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuB4B,SAAvB;EAGA5B,GAAG,CAAC,QAAD,CAAH,CAAc,KAAd,IAAuB6B,SAAvB;AAEA,cAAe7B,GAAf;;ECvFO,SAAS8B,OAAT,CAAiBvlD,IAAjB,EAAuBqlC,IAAvB,EAA6BmgB,MAA7B,EAAqC;EAC1C,MAAIngB,IAAJ,EAAU;EACR,QAAIoe,KAAG,CAACpe,IAAD,CAAH,CAAUrlC,IAAV,CAAJ,EAAqB;EACnB,aAAOoP,MAAM,CAAC8zB,MAAP,CAAc,EAAd,EAAkBuiB,WAAlB,EAA+BhC,KAAG,CAACpe,IAAD,CAAH,CAAUrlC,IAAV,CAA/B,EAAgDwlD,MAAhD,CAAP;EACD;EACF,GAJD,MAIO;EACL,SAAKngB,IAAL,IAAaoe,KAAb,EAAkB;EAChB,UAAIA,KAAG,CAACpe,IAAD,CAAH,CAAUrlC,IAAV,CAAJ,EAAqB;EACnB,eAAOoP,MAAM,CAAC8zB,MAAP,CACL,EADK,EAELuiB,WAFK,EAGLhC,KAAG,CAACpe,IAAD,CAAH,CAAUqgB,OAHL,EAILjC,KAAG,CAACpe,IAAD,CAAH,CAAUrlC,IAAV,CAJK,EAKLwlD,MALK,CAAP;EAOD;EACF;EACF;;EAED,SAAOp2C,MAAM,CAAC8zB,MAAP,CAAc,EAAd,EAAkBuiB,WAAlB,CAAP;EACD;EAEM,SAASE,WAAT,CAAqBtgB,IAArB,EAA2BmgB,MAA3B,EAAmC;EACxC,MAAII,GAAG,GAAG,EAAV;;EAEA,OAAK,IAAI5lD,IAAT,IAAiByjD,KAAG,CAACpe,IAAD,CAApB,EAA4B;EAC1B,QAAIrlC,IAAI,KAAK,SAAb,EAAwB;EACtB4lD,MAAAA,GAAG,CAACnpD,IAAJ,CAAS8oD,OAAO,CAACvlD,IAAD,EAAOqlC,IAAP,EAAamgB,MAAb,CAAhB;EACD;EACF;;EACD,SAAOI,GAAP;EACD;;EClCD;EACA;EACA;EACA;;EAEA;EAEA,IAAIC,MAAM,GAAGz2C,MAAM,CAACrF,SAAP,CAAiB+7C,cAA9B;EACA,IAAIC,KAAK,GAAG32C,MAAM,CAACrF,SAAP,CAAiB/M,QAA7B;;EAEA,IAAIiU,OAAO,GAAG,SAASA,OAAT,CAAiB5F,GAAjB,EAAsB;EAClC,MAAI,OAAO7K,KAAK,CAACyQ,OAAb,KAAyB,UAA7B,EAAyC;EACvC,WAAOzQ,KAAK,CAACyQ,OAAN,CAAc5F,GAAd,CAAP;EACD;;EAED,SAAO06C,KAAK,CAACxgD,IAAN,CAAW8F,GAAX,MAAoB,gBAA3B;EACD,CAND;;EAQA,IAAI26C,aAAa,GAAG,SAASA,aAAT,CAAuBl0B,GAAvB,EAA4B;EAC9C,MAAI,CAACA,GAAD,IAAQi0B,KAAK,CAACxgD,IAAN,CAAWusB,GAAX,MAAoB,iBAAhC,EAAmD;EACjD,WAAO,KAAP;EACD;;EAED,MAAIm0B,iBAAiB,GAAGJ,MAAM,CAACtgD,IAAP,CAAYusB,GAAZ,EAAiB,aAAjB,CAAxB;EACA,MAAIo0B,gBAAgB,GAClBp0B,GAAG,CAAChtB,WAAJ,IACAgtB,GAAG,CAAChtB,WAAJ,CAAgBiF,SADhB,IAEA87C,MAAM,CAACtgD,IAAP,CAAYusB,GAAG,CAAChtB,WAAJ,CAAgBiF,SAA5B,EAAuC,eAAvC,CAHF,CAN8C;;EAW9C,MAAI+nB,GAAG,CAAChtB,WAAJ,IAAmB,CAACmhD,iBAApB,IAAyC,CAACC,gBAA9C,EAAgE;EAC9D,WAAO,KAAP;EACD,GAb6C;EAgB9C;;;EACA,MAAI12C,GAAJ;;EACA,OAAKA,GAAL,IAAYsiB,GAAZ,EAAiB;EACf;EACD;;EAED,SAAO,OAAOtiB,GAAP,KAAe,WAAf,IAA8Bq2C,MAAM,CAACtgD,IAAP,CAAYusB,GAAZ,EAAiBtiB,GAAjB,CAArC;EACD,CAvBD;;EAwBe,SAAS22C,QAAT,GAAoB;EACjC,MAAI/9C,OAAJ,EAAa/I,IAAb,EAAmBqG,GAAnB,EAAwB8b,IAAxB,EAA8B4kC,WAA9B,EAA2C/jC,KAA3C;EACA,MAAIgV,MAAM,GAAGliB,SAAS,CAAC,CAAD,CAAtB;EACA,MAAI1U,CAAC,GAAG,CAAR;EACA,MAAIpE,MAAM,GAAG8Y,SAAS,CAAC9Y,MAAvB;EACA,MAAIgqD,IAAI,GAAG,KAAX,CALiC;;EAQjC,MAAI,OAAOhvB,MAAP,KAAkB,SAAtB,EAAiC;EAC/BgvB,IAAAA,IAAI,GAAGhvB,MAAP;EACAA,IAAAA,MAAM,GAAGliB,SAAS,CAAC,CAAD,CAAT,IAAgB,EAAzB,CAF+B;;EAI/B1U,IAAAA,CAAC,GAAG,CAAJ;EACD,GALD,MAKO,IACJ,OAAO42B,MAAP,KAAkB,QAAlB,IAA8B,OAAOA,MAAP,KAAkB,UAAjD,IACAA,MAAM,IAAI,IAFL,EAGL;EACAA,IAAAA,MAAM,GAAG,EAAT;EACD;;EAED,SAAO52B,CAAC,GAAGpE,MAAX,EAAmB,EAAEoE,CAArB,EAAwB;EACtB2H,IAAAA,OAAO,GAAG+M,SAAS,CAAC1U,CAAD,CAAnB,CADsB;;EAGtB,QAAI2H,OAAO,IAAI,IAAf,EAAqB;EACnB;EACA,WAAK/I,IAAL,IAAa+I,OAAb,EAAsB;EACpB1C,QAAAA,GAAG,GAAG2xB,MAAM,CAACh4B,IAAD,CAAZ;EACAmiB,QAAAA,IAAI,GAAGpZ,OAAO,CAAC/I,IAAD,CAAd,CAFoB;;EAKpB,YAAIg4B,MAAM,KAAK7V,IAAf,EAAqB;EACnB;EACA,cACE6kC,IAAI,IACJ7kC,IADA,KAECwkC,aAAa,CAACxkC,IAAD,CAAb,KAAwB4kC,WAAW,GAAGn1C,OAAO,CAACuQ,IAAD,CAA7C,CAFD,CADF,EAIE;EACA,gBAAI4kC,WAAJ,EAAiB;EACfA,cAAAA,WAAW,GAAG,KAAd;EACA/jC,cAAAA,KAAK,GAAG3c,GAAG,IAAIuL,OAAO,CAACvL,GAAD,CAAd,GAAsBA,GAAtB,GAA4B,EAApC;EACD,aAHD,MAGO;EACL2c,cAAAA,KAAK,GAAG3c,GAAG,IAAIsgD,aAAa,CAACtgD,GAAD,CAApB,GAA4BA,GAA5B,GAAkC,EAA1C;EACD,aAND;;;EASA,gBAAI,OAAO2xB,MAAM,CAACh4B,IAAD,CAAb,KAAwB,WAA5B,EAAyC;EACvCg4B,cAAAA,MAAM,CAACh4B,IAAD,CAAN,GAAe8mD,QAAQ,CAACE,IAAD,EAAOhkC,KAAP,EAAcb,IAAd,CAAvB;EACD,aAFD,MAEO;EACL2kC,cAAAA,QAAQ,CAACE,IAAD,EAAOhkC,KAAP,EAAcb,IAAd,CAAR;EACD,aAbD;;EAgBD,WApBD,MAoBO,IAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;EACtC,gBAAI,OAAO6V,MAAM,CAACh4B,IAAD,CAAb,KAAwB,WAA5B,EAAyC;EACvCg4B,cAAAA,MAAM,CAACh4B,IAAD,CAAN,GAAemiB,IAAf;EACD;EACF;EACF;EACF;EACF;EACF,GA5DgC;;;EA+DjC,SAAO6V,MAAP;EACD;;QCtGKivB,SAAS,GAAG;EAChBC,EAAAA,IADgB;;EAEhB;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACEzrD,EAAAA,OAAO,CAACkF,IAAD,EAAOwmD,GAAP,EAAY3d,OAAZ,EAAqB4d,cAArB,EAAmD;EAAA,QAAdr+C,OAAc,uEAAJ,EAAI;EACxD,QAAI8/B,QAAQ,GAAGW,OAAO,CAACX,QAAvB;EACA,UAAMwe,aAAa,GAAGnB,OAAO,CAACvlD,IAAD,CAA7B;EACA,UAAMqL,GAAG,GAAGs7C,eAAe,CAACH,GAAD,EAAME,aAAN,CAA3B;EACA,UAAMnjB,KAAK,GAAGmjB,aAAa,CAACvhD,IAAd,CAAmBkG,GAAnB,EAAwB68B,QAAxB,CAAd;EACA,UAAM0e,QAAQ,GAAGF,aAAa,CAACld,WAAd,CAA0BtB,QAA1B,EAAoCW,OAApC,CAAjB;;EACA,QAAI+d,QAAQ,KAAK1lD,SAAjB,EAA4B;EAC1B,YAAM,IAAInE,KAAJ,CAAW,6BAA4BmrC,QAAS,UAASloC,IAAK,EAA9D,CAAN;EACD;;EACD,UAAM2hD,QAAQ,GAAG+E,aAAa,CAAC5rD,OAAd,CAAsBotC,QAAtB,EAAgCW,OAAhC,CAAjB;EAEA8Y,IAAAA,QAAQ,CAACiF,QAAD,CAAR,GAAqB;EACnB1e,MAAAA,QAAQ,EAAEoe,SAAS,CAAChe,WAAV,CAAsBtoC,IAAtB,EAA4B6oC,OAAO,CAACX,QAApC;EADS,KAArB;;EAIA,QAAI9/B,OAAO,CAACy+C,WAAZ,EAAyB;EACvBlF,MAAAA,QAAQ,CAACiF,QAAD,CAAR,CAAmBrlD,IAAnB,GAA0BglD,IAAI,CAAC3d,UAAL,CAAgBC,OAAhB,EAAyB+d,QAAzB,CAA1B;EACD;;EAED,QAAIrjB,KAAJ,EAAW;EACTn0B,MAAAA,MAAM,CAAC8zB,MAAP,CAAcK,KAAd,EAAqBoe,QAArB,EAA+B8E,cAA/B;EACD,KAFD,MAEO;EACLr3C,MAAAA,MAAM,CAAC8zB,MAAP,CAAcye,QAAd,EAAwB8E,cAAxB;EACAp7C,MAAAA,GAAG,CAAC5O,IAAJ,CAASklD,QAAT;EACD;;EAED,WAAO6E,GAAP;EACD,GAtCe;;EAwChBjB,EAAAA,OAAO,CAACvlD,IAAD,EAAOwmD,GAAP,EAAYnhB,IAAZ,EAAkB;EACvB,UAAMqhB,aAAa,GAAGnB,OAAO,CAACvlD,IAAD,EAAOqlC,IAAP,CAA7B;EACA,WAAOyhB,YAAY,CAACN,GAAD,EAAME,aAAN,CAAnB;EACD,GA3Ce;;EA6ChBpe,EAAAA,WAAW,CAACtoC,IAAD,EAAOkoC,QAAP,EAAiB;EAC1B,QAAInhC,KAAK,GAAG,SAASwoC,IAAT,CAAcrH,QAAd,CAAZ;EACA,QAAInhC,KAAJ,EAAWmhC,QAAQ,GAAGnhC,KAAK,CAAC,CAAD,CAAhB;EACX,UAAM2/C,aAAa,GAAGnB,OAAO,CAACvlD,IAAD,CAA7B;EACA,UAAMhF,KAAK,GAAG0rD,aAAa,CAAC1rD,KAA5B;EACA,QAAI,CAACA,KAAL,EAAY,MAAM,IAAI+B,KAAJ,CAAU,0BAAV,CAAN;EACZ,WAAO/B,KAAK,CAAC6/C,MAAN,CAAa3S,QAAb,EAAuB3jC,IAAvB,CAA4B,GAA5B,CAAP;EACD,GApDe;;EAsDhBxJ,EAAAA,QAAQ,CAACsqC,IAAD,EAAOwD,OAAP,EAAgB;EACtB,UAAMke,cAAc,GAAGpB,WAAW,CAACtgB,IAAD,CAAlC;EACA,QAAI,CAACwD,OAAL,EAAcA,OAAO,GAAG,EAAV;;EACd,SAAK,IAAIpoC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsmD,cAAc,CAAC1qD,MAAnC,EAA2CoE,CAAC,EAA5C,EAAgD;EAC9CkmD,MAAAA,eAAe,CAAC9d,OAAD,EAAUke,cAAc,CAACtmD,CAAD,CAAxB,CAAf;EACD;;EAED,WAAOooC,OAAP;EACD,GA9De;;EAgEhBsd,EAAAA,QAAQ,CAAC9gB,IAAD,EAAOwD,OAAP,EAAgB;EACtB,QAAIme,KAAK,GAAGV,SAAS,CAACvrD,QAAV,CAAmBsqC,IAAnB,CAAZ;EACA8gB,IAAAA,QAAQ,CAAC,IAAD,EAAOtd,OAAP,EAAgBme,KAAhB,CAAR;EACA,WAAOne,OAAP;EACD;;EApEe;;EAuElB,SAAS8d,eAAT,CAAyBH,GAAzB,EAA8BE,aAA9B,EAA6C;EAC3C,QAAM1rD,KAAK,GAAG0rD,aAAa,CAAC1rD,KAA5B;;EACA,MAAI,CAACA,KAAL,EAAY;EACV,UAAM,IAAI+B,KAAJ,CAAU,2CAAV,CAAN;EACD;;EACD,OAAK,IAAI0D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzF,KAAK,CAACqB,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC,QAAI+lD,GAAG,CAACxrD,KAAK,CAACyF,CAAD,CAAN,CAAH,KAAkBS,SAAtB,EAAiC;EAC/B,UAAIT,CAAC,KAAKzF,KAAK,CAACqB,MAAN,GAAe,CAAzB,EAA4B;EAC1BmqD,QAAAA,GAAG,CAACxrD,KAAK,CAACyF,CAAD,CAAN,CAAH,GAAgB,EAAhB;EACD,OAFD,MAEO;EACL+lD,QAAAA,GAAG,CAACxrD,KAAK,CAACyF,CAAD,CAAN,CAAH,GAAgBimD,aAAa,CAAC3rD,QAAd,EAAhB;EACD;EACF;;EACDyrD,IAAAA,GAAG,GAAGA,GAAG,CAACxrD,KAAK,CAACyF,CAAD,CAAN,CAAT;EACD;;EACD,MAAIzF,KAAK,CAACqB,MAAN,KAAiB,CAArB,EAAwB;EACtBmqD,IAAAA,GAAG,GAAGp3C,MAAM,CAAC8zB,MAAP,CAAcsjB,GAAd,EAAmBE,aAAa,CAAC3rD,QAAd,EAAnB,CAAN;EACD;;EACD,SAAOyrD,GAAP;EACD;;EAED,SAASM,YAAT,CAAsBN,GAAtB,EAA2BE,aAA3B,EAA0C;EACxC,MAAI,CAACF,GAAL,EAAU,OAAOtlD,SAAP;EACV,QAAMlG,KAAK,GAAG0rD,aAAa,CAAC1rD,KAA5B;EACA,MAAI,CAACA,KAAL,EAAY,MAAM,IAAI+B,KAAJ,CAAU,wCAAV,CAAN;;EACZ,OAAK,IAAI0D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGzF,KAAK,CAACqB,MAA1B,EAAkCoE,CAAC,EAAnC,EAAuC;EACrC,QAAI+lD,GAAG,CAACxrD,KAAK,CAACyF,CAAD,CAAN,CAAH,KAAkBS,SAAtB,EAAiC;EAC/B,aAAOA,SAAP;EACD;;EACDslD,IAAAA,GAAG,GAAGA,GAAG,CAACxrD,KAAK,CAACyF,CAAD,CAAN,CAAT;EACD;;EACD,SAAO+lD,GAAP;EACD;;;;;;;;"}