{"version":3,"file":"js/4061.68514b6bde0c99f1888e.chunk.js","mappings":"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","sources":["webpack://ti_west/./node_modules/fast-fuzzy/lib/fuzzy.js","webpack://ti_west/./node_modules/graphemesplit/index.js","webpack://ti_west/./node_modules/graphemesplit/types.js","webpack://ti_west/./node_modules/js-base64/base64.js","webpack://ti_west/./node_modules/tiny-inflate/index.js","webpack://ti_west/./node_modules/unicode-trie/index.js","webpack://ti_west/./node_modules/unicode-trie/swap.js"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar split = _interopDefault(require('graphemesplit'));\n\nconst splitUnicode = str => str.normalize(\"NFKD\").split(\"\");\n\nconst whitespaceRegex = /^\\s+$/;\nconst nonWordRegex = /^[`~!@#$%^&*()\\-=_+{}[\\]\\|\\\\;':\",./<>?]+$/;\nconst sortKind = {\n insertOrder: \"insertOrder\",\n bestMatch: \"bestMatch\"\n}; // the default options, which will be used for any unset option\n\nconst defaultOptions = {\n keySelector: s => s,\n threshold: .6,\n ignoreCase: true,\n ignoreSymbols: true,\n normalizeWhitespace: true,\n returnMatchData: false,\n useDamerau: true,\n useSellers: true,\n useSeparatedUnicode: false,\n sortBy: sortKind.bestMatch\n};\n\nconst noop = () => {};\n\nconst arrayWrap = item => item instanceof Array ? item : [item]; // return normalized string, with map included\n\n\nfunction normalize(string, options) {\n const lower = options.ignoreCase ? string.toLocaleLowerCase() : string; // track transformations\n\n const normal = [];\n const map = [];\n let lastWasWhitespace = true;\n let length = 0;\n const graphemeList = options.useSeparatedUnicode ? splitUnicode(lower) : split(lower);\n\n for (const grapheme of graphemeList) {\n whitespaceRegex.lastIndex = 0;\n nonWordRegex.lastIndex = 0;\n\n if (options.normalizeWhitespace && whitespaceRegex.test(grapheme)) {\n if (!lastWasWhitespace) {\n normal.push(\" \");\n map.push(length);\n lastWasWhitespace = true;\n }\n } else if (!(options.ignoreSymbols && nonWordRegex.test(grapheme))) {\n if (options.useSeparatedUnicode) {\n normal.push(grapheme);\n } else {\n normal.push(grapheme.normalize());\n }\n\n map.push(length);\n lastWasWhitespace = false;\n }\n\n length += grapheme.length;\n } // add the end of the string\n\n\n map.push(string.length);\n\n while (normal[normal.length - 1] === \" \") {\n normal.pop();\n map.pop();\n }\n\n return {\n original: string,\n normal,\n map\n };\n} // translates a match to the original string\n\n\nfunction denormalizeMatchPosition(match, map) {\n return {\n index: map[match.start],\n length: map[match.end + 1] - map[match.start]\n };\n} // walks back up the matrix to find the match index and length\n\n\nfunction walkBack(rows, scoreIndex) {\n if (scoreIndex === 0) {\n return {\n index: 0,\n length: 0\n };\n }\n\n let start = scoreIndex;\n\n for (let i = rows.length - 2; i > 0 && start > 1; i--) {\n const row = rows[i];\n start = row[start] < row[start - 1] ? start : start - 1;\n }\n\n return {\n start: start - 1,\n end: scoreIndex - 1\n };\n} // walkback is a noop for non-sellers, but should still return an object\n\n\nfunction noopWalkback() {\n return {\n start: 0,\n end: 0\n };\n}\n\nconst levUpdateScore = () => true;\n\nconst sellersUpdateScore = (cur, min) => cur < min;\n\nfunction getLevScore(rows, length) {\n const lastRow = rows[rows.length - 1];\n const lastCell = lastRow[length - 1];\n const scoreLength = Math.max(rows.length, length);\n return {\n score: 1 - lastCell / (scoreLength - 1),\n scoreIndex: length - 1\n };\n}\n\nfunction getSellersScore(rows, length) {\n // search term was empty string, return perfect score\n if (rows.length === 1) {\n return {\n score: 1,\n scoreIndex: 0\n };\n }\n\n const lastRow = rows[rows.length - 1];\n let minValue = lastRow[0];\n let minIndex = 0;\n\n for (let i = 1; i < length; i++) {\n const val = lastRow[i];\n\n if (val < minValue) {\n minValue = val;\n minIndex = i;\n }\n }\n\n return {\n score: 1 - minValue / (rows.length - 1),\n scoreIndex: minIndex\n };\n}\n\nfunction initLevRows(rowCount, columnCount) {\n const rows = new Array(rowCount);\n\n for (let i = 0; i < rowCount; i++) {\n rows[i] = new Array(columnCount);\n rows[i][0] = i;\n }\n\n for (let i = 0; i < columnCount; i++) {\n rows[0][i] = i;\n }\n\n return rows;\n}\n\nfunction initSellersRows(rowCount, columnCount) {\n const rows = new Array(rowCount);\n rows[0] = new Array(columnCount).fill(0);\n\n for (let i = 1; i < rowCount; i++) {\n rows[i] = new Array(columnCount);\n rows[i][0] = i;\n }\n\n return rows;\n} // the content of the innermost loop of levenshtein\n\n\nfunction levCore(term, candidate, rows, i, j) {\n const rowA = rows[i];\n const rowB = rows[i + 1];\n const cost = term[i] === candidate[j] ? 0 : 1;\n let m;\n let min = rowB[j] + 1; // insertion\n\n if ((m = rowA[j + 1] + 1) < min) min = m; // deletion\n\n if ((m = rowA[j] + cost) < min) min = m; // substitution\n\n rowB[j + 1] = min;\n} // runtime complexity: O(mn) where m and n are the lengths of term and candidate, respectively\n// Note: this method only runs on a single column\n\n\nfunction levenshtein(term, candidate, rows, j) {\n for (let i = 0; i < term.length; i++) {\n levCore(term, candidate, rows, i, j);\n }\n} // has all the runtime characteristics of the above, but punishes transpositions less,\n// resulting in better tolerance to those types of typos\n// Note: this method only runs on a single column\n\n\nfunction damerauLevenshtein(term, candidate, rows, j) {\n // if j === 0, we can't check for transpositions,\n // so use normal levenshtein instead\n if (j === 0) {\n levenshtein(term, candidate, rows, j);\n return;\n } // for i === 0, we also can't check for transpositions, so calculate\n // the first row using normal levenshtein as well\n\n\n if (term.length > 0) {\n levCore(term, candidate, rows, 0, j);\n }\n\n for (let i = 1; i < term.length; i++) {\n const rowA = rows[i - 1];\n const rowB = rows[i];\n const rowC = rows[i + 1];\n const cost = term[i] === candidate[j] ? 0 : 1;\n let m; // insertion\n\n let min = rowC[j] + 1; // deletion\n\n if ((m = rowB[j + 1] + 1) < min) min = m; // substitution\n\n if ((m = rowB[j] + cost) < min) min = m; // transposition\n\n if (term[i] === candidate[j - 1] && term[i - 1] === candidate[j] && (m = rowA[j - 1] + cost) < min) min = m;\n rowC[j + 1] = min;\n }\n} // method for creating a trie from search candidates\n// using a trie can significantly improve search time\n\n\nfunction trieInsert(trie, string, item) {\n let walker = trie;\n\n for (let i = 0; i < string.length; i++) {\n const char = string[i]; // add child node if not already present\n\n if (walker.children[char] == null) {\n walker.children[char] = {\n children: {},\n candidates: [],\n depth: 0\n };\n } // log max depth of this subtree\n\n\n walker.depth = Math.max(walker.depth, string.length - i); // step into child node\n\n walker = walker.children[char];\n }\n\n walker.candidates.push(item);\n} // transforms a list of candidates into objects with normalized search keys,\n// and inserts them into a trie\n// the keySelector is used to pick strings from an object to search by\n\n\nfunction createSearchTrie(trie, index, items, options) {\n for (const item of items) {\n const candidates = arrayWrap(options.keySelector(item)).map((key, keyIndex) => ({\n index,\n keyIndex,\n item,\n normalized: normalize(key, options)\n }));\n index++;\n\n for (const candidate of candidates) {\n trieInsert(trie, candidate.normalized.normal, candidate);\n }\n }\n} // scored item comparator\n\n\nfunction compareItemsBestScore(a, b) {\n // highest priority is raw levenshtein score\n const scoreDiff = b.score - a.score;\n\n if (scoreDiff !== 0) {\n return scoreDiff;\n } // ties are broken by earlier match positions\n\n\n const matchPosDiff = a.match.start - b.match.start;\n\n if (matchPosDiff !== 0) {\n return matchPosDiff;\n } // prioritize earlier keys\n\n\n const keyIndexDiff = a.keyIndex - b.keyIndex;\n\n if (keyIndexDiff !== 0) {\n return keyIndexDiff;\n } // lastly, break ties by preferring the closer length match\n\n\n const lengthDiff = a.lengthDiff - b.lengthDiff;\n\n if (lengthDiff !== 0) {\n return lengthDiff;\n } // if all else fails, resort to insertion order\n\n\n return compareItemsInsertOrder(a, b);\n}\n\nfunction compareItemsInsertOrder(a, b) {\n return a.index - b.index;\n}\n\nfunction getCompareFunc(sortBy) {\n switch (sortBy) {\n case sortKind.bestMatch:\n return compareItemsBestScore;\n\n case sortKind.insertOrder:\n return compareItemsInsertOrder;\n\n default:\n throw new Error(`unknown sortBy method ${sortBy}`);\n }\n} // dedupes and adds results to the results list/map\n\n\nfunction addResult(results, resultMap, candidate, score, match, lengthDiff, compareItems) {\n const scoredItem = {\n item: candidate.item,\n normalized: candidate.normalized,\n score,\n match,\n index: candidate.index,\n keyIndex: candidate.keyIndex,\n lengthDiff\n };\n\n if (resultMap[candidate.index] == null) {\n resultMap[candidate.index] = results.length;\n results.push(scoredItem);\n } else if (compareItems(scoredItem, results[resultMap[candidate.index]]) < 0) {\n results[resultMap[candidate.index]] = scoredItem;\n }\n}\n\nconst getLevLength = Math.max;\n\nconst getSellersLength = termLength => termLength; // skip any subtrees for which it is impossible to score >= threshold\n\n\nfunction levShouldContinue(node, pos, term, threshold, sValue) {\n // earliest point (length) at which sValue could return to 0\n const p1 = pos + sValue; // point (length) at which string lengths would match\n\n const p2 = Math.min(term.length, pos + node.depth + 1); // the best score possible is the string which minimizes the value\n // max(sValue, strLenDiff), which is always halfway between p1 and p2\n\n const length = Math.ceil((p1 + p2) / 2);\n const bestPossibleValue = length - p2;\n return 1 - bestPossibleValue / length >= threshold;\n}\n\nfunction sellersShouldContinue(node, _, term, threshold, sValue, lastValue) {\n const bestPossibleValue = Math.min(sValue, lastValue - (node.depth + 1));\n return 1 - bestPossibleValue / term.length >= threshold;\n} // (pseudo) recursively walk the trie\n\n\nfunction searchRecurse(trie, term, scoreMethods, rows, results, resultMap, options) {\n const stack = [];\n\n for (const key in trie.children) {\n const node = trie.children[key];\n stack.push([node, 1, key, 0, term.length]);\n }\n\n const acc = new Array(trie.depth);\n\n while (stack.length !== 0) {\n const [node, len, char, si, sv] = stack.pop();\n acc[len - 1] = char; // build rows\n\n scoreMethods.score(term, acc, rows, len - 1); // track best score and position\n\n const lastIndex = len;\n const lastValue = rows[rows.length - 1][lastIndex];\n let sIndex = si,\n sValue = sv;\n\n if (scoreMethods.shouldUpdateScore(lastValue, sv)) {\n sIndex = lastIndex;\n sValue = lastValue;\n } // insert results\n\n\n if (node.candidates.length > 0) {\n const length = scoreMethods.getLength(term.length, len);\n const score = 1 - sValue / length;\n\n if (score >= options.threshold) {\n const match = walkBack(rows, sIndex);\n const lengthDiff = Math.abs(len - term.length);\n\n for (const candidate of node.candidates) {\n addResult(results, resultMap, candidate, score, match, lengthDiff, scoreMethods.compareItems);\n }\n }\n } // recurse for children\n\n\n for (const key in node.children) {\n const child = node.children[key];\n\n if (scoreMethods.shouldContinue(child, len, term, options.threshold, sValue, lastValue)) {\n stack.push([child, len + 1, key, sIndex, sValue]);\n }\n }\n }\n} // the core match finder: returns a sorted, filtered list of matches\n// this does not normalize input, requiring users to normalize themselves\n\n\nfunction searchCore(term, trie, options) {\n const initMethod = options.useSellers ? initSellersRows : initLevRows;\n const scoreMethods = {\n score: options.useDamerau ? damerauLevenshtein : levenshtein,\n getLength: options.useSellers ? getSellersLength : getLevLength,\n shouldUpdateScore: options.useSellers ? sellersUpdateScore : levUpdateScore,\n shouldContinue: options.useSellers ? sellersShouldContinue : levShouldContinue,\n walkBack: options.useSellers ? walkBack : noopWalkback,\n compareItems: getCompareFunc(options.sortBy)\n }; // walk the trie, scoring and storing the candidates\n\n const resultMap = {};\n const results = [];\n const rows = initMethod(term.length + 1, trie.depth + 1);\n\n if (options.threshold <= 0 || term.length === 0) {\n for (const candidate of trie.candidates) {\n addResult(results, resultMap, candidate, 0, {\n index: 0,\n length: 0\n }, term.length, scoreMethods.compareItems);\n }\n }\n\n searchRecurse(trie, term, scoreMethods, rows, results, resultMap, options);\n const sorted = results.sort(scoreMethods.compareItems);\n\n if (options.returnMatchData) {\n const denormalize = options.useSellers ? denormalizeMatchPosition : noop;\n return sorted.map(candidate => ({\n item: candidate.item,\n original: candidate.normalized.original,\n key: candidate.normalized.normal.join(\"\"),\n score: candidate.score,\n match: denormalize(candidate.match, candidate.normalized.map)\n }));\n }\n\n return sorted.map(candidate => candidate.item);\n} // wrapper for exporting sellers while allowing options to be passed in\n\n\nfunction fuzzy(term, candidate, options) {\n options = { ...defaultOptions,\n ...options\n };\n const initMethod = options.useSellers ? initSellersRows : initLevRows;\n const scoreMethod = options.useDamerau ? damerauLevenshtein : levenshtein;\n const getScore = options.useSellers ? getSellersScore : getLevScore;\n term = normalize(term, options).normal;\n const normalized = normalize(candidate, options);\n const rows = initMethod(term.length + 1, normalized.normal.length + 1);\n\n for (let j = 0; j < normalized.normal.length; j++) {\n scoreMethod(term, normalized.normal, rows, j);\n }\n\n const scoreResult = getScore(rows, normalized.normal.length + 1);\n return options.returnMatchData ? {\n item: candidate,\n original: normalized.original,\n key: normalized.normal.join(\"\"),\n score: scoreResult.score,\n match: options.useSellers ? denormalizeMatchPosition(walkBack(rows, scoreResult.scoreIndex), normalized.map) : noop()\n } : scoreResult.score;\n} // simple one-off search. Useful if you don't expect to use the same candidate list again\n\nfunction search(term, candidates, options) {\n options = { ...defaultOptions,\n ...options\n };\n const trie = {\n children: {},\n candidates: [],\n depth: 0\n };\n createSearchTrie(trie, 0, candidates, options);\n return searchCore(normalize(term, options).normal, trie, options);\n} // class that improves performance of searching the same set multiple times\n// normalizes the strings and caches the result for future calls\n\nclass Searcher {\n constructor(candidates, options) {\n this.options = Object.assign({}, defaultOptions, options);\n this.trie = {\n children: {},\n candidates: [],\n depth: 0\n };\n createSearchTrie(this.trie, 0, candidates, this.options);\n this.count = candidates.length;\n }\n\n add(...candidates) {\n createSearchTrie(this.trie, this.count, candidates, this.options);\n this.count += candidates.length;\n }\n\n search(term, options) {\n options = Object.assign({}, this.options, options);\n return searchCore(normalize(term, this.options).normal, this.trie, options);\n }\n\n}\n\nexports.Searcher = Searcher;\nexports.fuzzy = fuzzy;\nexports.search = search;\nexports.sortKind = sortKind;\n","const types = require(\"./types\");\nconst typeTrieData = require(\"./typeTrie.json\").data;\nconst extPictData = require(\"./extPict.json\").data;\n\nconst UnicodeTrie = require(\"unicode-trie\");\nconst Base64 = require(\"js-base64\").Base64;\n\nconst typeTrie = new UnicodeTrie(Base64.toUint8Array(typeTrieData));\nconst extPict = new UnicodeTrie(Base64.toUint8Array(extPictData));\n\nfunction is(type, bit) {\n return (type & bit) !== 0;\n}\n\nconst GB11State = {\n Initial: 0,\n ExtendOrZWJ: 1,\n NotBoundary: 2,\n};\n\nfunction nextGraphemeClusterSize(ts, start) {\n const L = ts.length;\n\n let ri = 0;\n let gb11State = GB11State.Initial;\n\n // GB1: sot ÷ Any\n for (let i = start; i + 1 < L; i++) {\n const curr = ts[i + 0];\n const next = ts[i + 1];\n\n // for GB12, GB13\n if (!is(curr, types.Regional_Indicator)) {\n ri = 0;\n }\n\n // for GB11: \\p{Extended_Pictographic} Extend* ZWJ x \\p{Extended_Pictographic}\n switch (gb11State) {\n case GB11State.NotBoundary:\n case GB11State.Initial:\n if (is(curr, types.Extended_Pictographic)) {\n gb11State = GB11State.ExtendOrZWJ;\n } else {\n gb11State = GB11State.Initial;\n }\n break;\n case GB11State.ExtendOrZWJ:\n if (is(curr, types.Extend)) {\n gb11State = GB11State.ExtendOrZWJ;\n } else if (\n is(curr, types.ZWJ) &&\n is(next, types.Extended_Pictographic)\n ) {\n gb11State = GB11State.NotBoundary;\n } else {\n gb11State = GB11State.Initial;\n }\n break;\n }\n\n // GB3: CR x LF\n if (is(curr, types.CR) && is(next, types.LF)) {\n continue;\n }\n // GB4: (Control | CR | LF) ÷\n if (is(curr, types.Control | types.CR | types.LF)) {\n return i + 1 - start;\n }\n // GB5: ÷ (Control | CR | LF)\n if (is(next, types.Control | types.CR | types.LF)) {\n return i + 1 - start;\n }\n // GB6: L x (L | V | LV | LVT)\n if (\n is(curr, types.L) &&\n is(next, types.L | types.V | types.LV | types.LVT)\n ) {\n continue;\n }\n // GB7: (LV | V) x (V | T)\n if (is(curr, types.LV | types.V) && is(next, types.V | types.T)) {\n continue;\n }\n // GB8: (LVT | T) x T\n if (is(curr, types.LVT | types.T) && is(next, types.T)) {\n continue;\n }\n // GB9: x (Extend | ZWJ)\n if (is(next, types.Extend | types.ZWJ)) {\n continue;\n }\n // GB9a: x SpacingMark\n if (is(next, types.SpacingMark)) {\n continue;\n }\n // GB9b: Prepend x\n if (is(curr, types.Prepend)) {\n continue;\n }\n // GB11: \\p{Extended_Pictographic} Extend* ZWJ x \\p{Extended_Pictographic}\n if (gb11State === GB11State.NotBoundary) {\n continue;\n }\n // GB12: sot (RI RI)* RI x RI\n // GB13: [^RI] (RI RI)* RI x RI\n if (\n is(curr, types.Regional_Indicator) &&\n is(next, types.Regional_Indicator) &&\n ri % 2 === 0\n ) {\n ri++;\n continue;\n }\n // GB999: Any ÷ Any\n return i + 1 - start;\n }\n // GB2: Any ÷ eot\n return L - start;\n}\n\nmodule.exports = function split(str) {\n const graphemeClusters = [];\n\n const map = [0];\n const ts = [];\n for (let i = 0; i < str.length; ) {\n const code = str.codePointAt(i);\n ts.push(typeTrie.get(code) | extPict.get(code));\n i += code > 65535 ? 2 : 1;\n map.push(i);\n }\n\n for (let offset = 0; offset < ts.length; ) {\n const size = nextGraphemeClusterSize(ts, offset);\n const start = map[offset];\n const end = map[offset + size];\n graphemeClusters.push(str.slice(start, end));\n offset += size;\n }\n\n return graphemeClusters;\n};\n","module.exports = {\n Other: 0,\n CR: 1 << 0,\n LF: 1 << 1,\n Control: 1 << 2,\n Extend: 1 << 3,\n ZWJ: 1 << 4,\n Regional_Indicator: 1 << 5,\n Prepend: 1 << 6,\n SpacingMark: 1 << 7,\n L: 1 << 8,\n V: 1 << 9,\n T: 1 << 10,\n LV: 1 << 11,\n LVT: 1 << 12,\n Extended_Pictographic: 1 << 13,\n};\n","//\n// THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT BY HAND!\n//\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? module.exports = factory()\n : typeof define === 'function' && define.amd\n ? define(factory) :\n // cf. https://github.com/dankogai/js-base64/issues/119\n (function () {\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var gBase64 = factory();\n gBase64.noConflict = function () {\n global.Base64 = _Base64;\n return gBase64;\n };\n if (global.Meteor) { // Meteor.js\n Base64 = gBase64;\n }\n global.Base64 = gBase64;\n })();\n}((typeof self !== 'undefined' ? self\n : typeof window !== 'undefined' ? window\n : typeof global !== 'undefined' ? global\n : this), function () {\n 'use strict';\n /**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\n var version = '3.7.5';\n /**\n * @deprecated use lowercase `version`.\n */\n var VERSION = version;\n var _hasatob = typeof atob === 'function';\n var _hasbtoa = typeof btoa === 'function';\n var _hasBuffer = typeof Buffer === 'function';\n var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\n var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\n var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var b64chs = Array.prototype.slice.call(b64ch);\n var b64tab = (function (a) {\n var tab = {};\n a.forEach(function (c, i) { return tab[c] = i; });\n return tab;\n })(b64chs);\n var b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var _fromCC = String.fromCharCode.bind(String);\n var _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : function (it) { return new Uint8Array(Array.prototype.slice.call(it, 0)); };\n var _mkUriSafe = function (src) { return src\n .replace(/=/g, '').replace(/[+\\/]/g, function (m0) { return m0 == '+' ? '-' : '_'; }); };\n var _tidyB64 = function (s) { return s.replace(/[^A-Za-z0-9\\+\\/]/g, ''); };\n /**\n * polyfill version of `btoa`\n */\n var btoaPolyfill = function (bin) {\n // console.log('polyfilled');\n var u32, c0, c1, c2, asc = '';\n var pad = bin.length % 3;\n for (var i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n };\n /**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\n var _btoa = _hasbtoa ? function (bin) { return btoa(bin); }\n : _hasBuffer ? function (bin) { return Buffer.from(bin, 'binary').toString('base64'); }\n : btoaPolyfill;\n var _fromUint8Array = _hasBuffer\n ? function (u8a) { return Buffer.from(u8a).toString('base64'); }\n : function (u8a) {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n var maxargs = 0x1000;\n var strs = [];\n for (var i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n /**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\n var fromUint8Array = function (u8a, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const utob = (src: string) => unescape(encodeURIComponent(src));\n // reverting good old fationed regexp\n var cb_utob = function (c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\n var utob = function (u) { return u.replace(re_utob, cb_utob); };\n //\n var _encode = _hasBuffer\n ? function (s) { return Buffer.from(s, 'utf8').toString('base64'); }\n : _TE\n ? function (s) { return _fromUint8Array(_TE.encode(s)); }\n : function (s) { return _btoa(utob(s)); };\n /**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\n var encode = function (src, urlsafe) {\n if (urlsafe === void 0) { urlsafe = false; }\n return urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n };\n /**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\n var encodeURI = function (src) { return encode(src, true); };\n // This trick is found broken https://github.com/dankogai/js-base64/issues/130\n // const btou = (src: string) => decodeURIComponent(escape(src));\n // reverting good old fationed regexp\n var re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var cb_btou = function (cccc) {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n };\n /**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\n var btou = function (b) { return b.replace(re_btou, cb_btou); };\n /**\n * polyfill version of `atob`\n */\n var atobPolyfill = function (asc) {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n var u24, bin = '', r1, r2;\n for (var i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n };\n /**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\n var _atob = _hasatob ? function (asc) { return atob(_tidyB64(asc)); }\n : _hasBuffer ? function (asc) { return Buffer.from(asc, 'base64').toString('binary'); }\n : atobPolyfill;\n //\n var _toUint8Array = _hasBuffer\n ? function (a) { return _U8Afrom(Buffer.from(a, 'base64')); }\n : function (a) { return _U8Afrom(_atob(a).split('').map(function (c) { return c.charCodeAt(0); })); };\n /**\n * converts a Base64 string to a Uint8Array.\n */\n var toUint8Array = function (a) { return _toUint8Array(_unURI(a)); };\n //\n var _decode = _hasBuffer\n ? function (a) { return Buffer.from(a, 'base64').toString('utf8'); }\n : _TD\n ? function (a) { return _TD.decode(_toUint8Array(a)); }\n : function (a) { return btou(_atob(a)); };\n var _unURI = function (a) { return _tidyB64(a.replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/'; })); };\n /**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\n var decode = function (src) { return _decode(_unURI(src)); };\n /**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\n var isValid = function (src) {\n if (typeof src !== 'string')\n return false;\n var s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n };\n //\n var _noEnum = function (v) {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n };\n /**\n * extend String.prototype with relevant methods\n */\n var extendString = function () {\n var _add = function (name, body) { return Object.defineProperty(String.prototype, name, _noEnum(body)); };\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n };\n /**\n * extend Uint8Array.prototype with relevant methods\n */\n var extendUint8Array = function () {\n var _add = function (name, body) { return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); };\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n };\n /**\n * extend Builtin prototypes with relevant methods\n */\n var extendBuiltins = function () {\n extendString();\n extendUint8Array();\n };\n var gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n };\n //\n // export Base64 to the namespace\n //\n // ES5 is yet to have Object.assign() that may make transpilers unhappy.\n // gBase64.Base64 = Object.assign({}, gBase64);\n gBase64.Base64 = {};\n Object.keys(gBase64).forEach(function (k) { return gBase64.Base64[k] = gBase64[k]; });\n return gBase64;\n}));\n","var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n"],"names":["Object","defineProperty","exports","value","ex","split","splitUnicode","str","normalize","whitespaceRegex","nonWordRegex","sortKind","insertOrder","bestMatch","defaultOptions","keySelector","s","threshold","ignoreCase","ignoreSymbols","normalizeWhitespace","returnMatchData","useDamerau","useSellers","useSeparatedUnicode","sortBy","noop","arrayWrap","item","Array","string","options","lower","toLocaleLowerCase","normal","map","lastWasWhitespace","length","graphemeList","grapheme","lastIndex","test","push","pop","original","denormalizeMatchPosition","match","index","start","end","walkBack","rows","scoreIndex","i","row","noopWalkback","levUpdateScore","sellersUpdateScore","cur","min","getLevScore","score","Math","max","getSellersScore","lastRow","minValue","minIndex","val","initLevRows","rowCount","columnCount","initSellersRows","fill","levCore","term","candidate","j","rowA","rowB","cost","m","levenshtein","damerauLevenshtein","rowC","trieInsert","trie","walker","char","children","candidates","depth","createSearchTrie","items","key","keyIndex","normalized","compareItemsBestScore","a","b","scoreDiff","matchPosDiff","keyIndexDiff","lengthDiff","compareItemsInsertOrder","getCompareFunc","Error","addResult","results","resultMap","compareItems","scoredItem","getLevLength","getSellersLength","termLength","levShouldContinue","node","pos","sValue","p1","p2","ceil","sellersShouldContinue","_","lastValue","searchCore","initMethod","scoreMethods","getLength","shouldUpdateScore","shouldContinue","stack","acc","len","si","sv","sIndex","abs","child","searchRecurse","sorted","sort","denormalize","join","Searcher","constructor","this","assign","count","add","search","fuzzy","scoreMethod","getScore","scoreResult","types","typeTrieData","extPictData","UnicodeTrie","Base64","typeTrie","toUint8Array","extPict","is","type","bit","nextGraphemeClusterSize","ts","L","ri","gb11State","curr","next","Regional_Indicator","Extended_Pictographic","Extend","ZWJ","CR","LF","Control","V","LV","LVT","T","SpacingMark","Prepend","module","graphemeClusters","code","codePointAt","get","offset","size","slice","Other","self","window","g","tab","version","VERSION","_hasatob","atob","_hasbtoa","btoa","_hasBuffer","Buffer","_TD","TextDecoder","undefined","_TE","TextEncoder","b64chs","prototype","call","b64tab","forEach","c","b64re","_fromCC","String","fromCharCode","bind","_U8Afrom","Uint8Array","from","it","_mkUriSafe","src","replace","m0","_tidyB64","btoaPolyfill","bin","u32","c0","c1","c2","asc","pad","charCodeAt","TypeError","substring","_btoa","toString","_fromUint8Array","u8a","strs","l","apply","subarray","fromUint8Array","urlsafe","cb_utob","cc","re_utob","utob","u","_encode","encode","encodeURI","re_btou","cb_btou","cccc","btou","atobPolyfill","u24","r1","r2","charAt","_atob","_toUint8Array","_unURI","_decode","decode","_noEnum","v","enumerable","writable","configurable","extendString","_add","name","body","extendUint8Array","gBase64","fromBase64","toBase64","encodeURL","isValid","extendBuiltins","keys","k","factory","Tree","table","Uint16Array","trans","Data","source","dest","sourceIndex","tag","bitcount","destLen","ltree","dtree","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","code_tree","lengths","tinf_build_bits_base","bits","base","delta","first","sum","offs","tinf_build_tree","t","off","num","tinf_getbit","d","tinf_read_bits","tinf_decode_symbol","tinf_decode_trees","lt","dt","hlit","hdist","hclen","clen","sym","prev","tinf_inflate_block_data","dist","tinf_inflate_uncompressed_block","tinf_build_fixed_trees","bfinal","res","inflate","swap32LE","data","isBuffer","readUInt32BE","uncompressedLength","highStart","readUInt32LE","errorValue","view","DataView","buffer","getUint32","Uint32Array","codePoint","DATA_BLOCK_LENGTH","INDEX_2_BLOCK_LENGTH","isBigEndian","swap","n","array","swap32"],"sourceRoot":""}