PageSourceSearch

https://diks.net/_next/static/chunks/1o3iclqfzbz9g.js

js diks.net collected 2026-09-24 10:28:00 UTC 84,619 bytes, 1,715 lines download raw bytes

1;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="c33f45a8-6572-5961-cce8-44b371d30081")}catch(e){}}();
2(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push([typeof document === "object" ? document.currentScript : undefined,
3561534, ((__turbopack_context__) => {
4"use strict";
5
6/**
7 * Fuse.js v7.5.0 - Lightweight fuzzy-search (http://fusejs.io)
8 *
9 * Copyright (c) 2026 Kiro Risk (http://kiro.me)
10 * All Rights Reserved. Apache Software License 2.0
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 */ //#region src/helpers/typeGuards.ts
14function isArray(value) {
15    return !Array.isArray ? getTag(value) === "[object Array]" : Array.isArray(value);
16}
17function baseToString(value) {
18    if (typeof value == "string") return value;
19    if (typeof value === "bigint") return value.toString();
20    const result = value + "";
21    return result == "0" && 1 / value == -Infinity ? "-0" : result;
22}
23function toString(value) {
24    return value == null ? "" : baseToString(value);
25}
26function isString(value) {
27    return typeof value === "string";
28}
29function isNumber(value) {
30    return typeof value === "number";
31}
32function isBoolean(value) {
33    return value === true || value === false || isObjectLike(value) && getTag(value) == "[object Boolean]";
34}
35function isObject(value) {
36    return typeof value === "object";
37}
38function isObjectLike(value) {
39    return isObject(value) && value !== null;
40}
41function isDefined(value) {
42    return value !== void 0 && value !== null;
43}
44function isBlank(value) {
45    return !value.trim().length;
46}
47function getTag(value) {
48    return value == null ? value === void 0 ? "[object Undefined]" : "[object Null]" : Object.prototype.toString.call(value);
49}
50//#endregion
51//#region src/core/errorMessages.ts
52const INCORRECT_INDEX_TYPE = "Incorrect 'index' type";
53const INVALID_DOC_INDEX = "Invalid doc index: must be a non-negative integer within the bounds of the docs array";
54const LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key)=>"Invalid value for key ".concat(key);
55const PATTERN_LENGTH_TOO_LARGE = (max)=>"Pattern length exceeds max of ".concat(max, ".");
56const MISSING_KEY_PROPERTY = (name)=>"Missing ".concat(name, " property in key");
57const INVALID_KEY_WEIGHT_VALUE = (key)=>"Property 'weight' in key '".concat(key, "' must be a positive integer");
58const FUSE_MATCH_TOKEN_SEARCH_UNSUPPORTED = "Fuse.match does not support useTokenSearch: token search requires corpus-level statistics (df, fieldCount) that a one-off string comparison does not have. Use new Fuse(...).search(...) instead.";
59//#endregion
60//#region src/tools/KeyStore.ts
61const hasOwn = Object.prototype.hasOwnProperty;
62var KeyStore = class {
63    get(keyId) {
64        return this._keyMap[keyId];
65    }
66    keys() {
67        return this._keys;
68    }
69    toJSON() {
70        return JSON.stringify(this._keys);
71    }
72    constructor(keys){
73        this._keys = [];
74        this._keyMap = {};
75        let totalWeight = 0;
76        keys.forEach((key)=>{
77            const obj = createKey(key);
78            this._keys.push(obj);
79            this._keyMap[obj.id] = obj;
80            totalWeight += obj.weight;
81        });
82        this._keys.forEach((key)=>{
83            key.weight /= totalWeight;
84        });
85    }
86};
87function createKey(key) {
88    let path = null;
89    let id = null;
90    let src = null;
91    let weight = 1;
92    let getFn = null;
93    if (isString(key) || isArray(key)) {
94        src = key;
95        path = createKeyPath(key);
96        id = createKeyId(key);
97    } else {
98        var _key_getFn;
99        if (!hasOwn.call(key, "name")) throw new Error(MISSING_KEY_PROPERTY("name"));
100        const name = key.name;
101        src = name;
102        if (hasOwn.call(key, "weight") && key.weight !== void 0) {
103            weight = key.weight;
104            if (weight <= 0) throw new Error(INVALID_KEY_WEIGHT_VALUE(createKeyId(name)));
105        }
106        path = createKeyPath(name);
107        id = createKeyId(name);
108        getFn = (_key_getFn = key.getFn) !== null && _key_getFn !== void 0 ? _key_getFn : null;
109    }
110    return {
111        path,
112        id,
113        weight,
114        src,
115        getFn
116    };
117}
118function createKeyPath(key) {
119    return isArray(key) ? key : key.split(".");
120}
121function createKeyId(key) {
122    return isArray(key) ? key.join(".") : key;
123}
124//#endregion
125//#region src/helpers/get.ts
126function get(obj, path) {
127    const list = [];
128    let arr = false;
vendor: 6,122 bytes, lines 129-305
129    const deepGet = (obj, path, index, arrayIndex)=>{
130        if (!isDefined(obj)) return;
131        if (!path[index]) list.push(arrayIndex !== void 0 ? {
132            v: obj,
133            i: arrayIndex
134        } : obj);
135        else {
136            const value = obj[path[index]];
137            if (!isDefined(value)) return;
138            if (index === path.length - 1 && (isString(value) || isNumber(value) || isBoolean(value) || typeof value === "bigint")) list.push(arrayIndex !== void 0 ? {
139                v: toString(value),
140                i: arrayIndex
141            } : toString(value));
142            else if (isArray(value)) {
143                arr = true;
144                for(let i = 0, len = value.length; i < len; i += 1)deepGet(value[i], path, index + 1, i);
145            } else if (path.length) deepGet(value, path, index + 1, arrayIndex);
146        }
147    };
148    deepGet(obj, isString(path) ? path.split(".") : path, 0);
149    return arr ? list : list[0];
150}
151//#endregion
152//#region src/core/config.ts
153const MatchOptions = {
154    includeMatches: false,
155    findAllMatches: false,
156    minMatchCharLength: 1
157};
158const BasicOptions = {
159    isCaseSensitive: false,
160    ignoreDiacritics: false,
161    includeScore: false,
162    keys: [],
163    shouldSort: true,
164    sortFn: (a, b)=>a.score === b.score ? a.idx < b.idx ? -1 : 1 : a.score < b.score ? -1 : 1
165};
166const FuzzyOptions = {
167    location: 0,
168    threshold: .6,
169    distance: 100
170};
171const AdvancedOptions = {
172    useExtendedSearch: false,
173    useTokenSearch: false,
174    tokenize: void 0,
175    tokenMatch: "any",
176    getFn: get,
177    ignoreLocation: false,
178    ignoreFieldNorm: false,
179    fieldNormWeight: 1
180};
181const Config = Object.freeze({
182    ...BasicOptions,
183    ...MatchOptions,
184    ...FuzzyOptions,
185    ...AdvancedOptions
186});
187//#endregion
188//#region src/tools/fieldNorm.ts
189function isWordSeparator(code) {
190    return code >= 9 && code <= 13 || code === 32 || code === 160;
191}
192function norm() {
193    let weight = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1, mantissa = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 3;
194    const cache = /* @__PURE__ */ new Map();
195    const m = Math.pow(10, mantissa);
196    return {
197        get (value) {
198            let numTokens = 0;
199            let inWord = false;
200            for(let i = 0; i < value.length; i++)if (!isWordSeparator(value.charCodeAt(i))) {
201                if (!inWord) {
202                    numTokens++;
203                    inWord = true;
204                }
205            } else inWord = false;
206            if (numTokens === 0) numTokens = 1;
207            if (cache.has(numTokens)) return cache.get(numTokens);
208            const n = Math.round(m / Math.pow(numTokens, .5 * weight)) / m;
209            cache.set(numTokens, n);
210            return n;
211        },
212        clear () {
213            cache.clear();
214        }
215    };
216}
217//#endregion
218//#region src/tools/FuseIndex.ts
219var FuseIndex = class {
220    setSources() {
221        let docs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
222        this.docs = docs;
223    }
224    setIndexRecords() {
225        let records = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
226        this.records = records;
227    }
228    setKeys() {
229        let keys = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
230        this.keys = keys;
231        this._keysMap = {};
232        keys.forEach((key, idx)=>{
233            this._keysMap[key.id] = idx;
234        });
235    }
236    create() {
237        if (this.isCreated || !this.docs.length) return;
238        this.isCreated = true;
239        const len = this.docs.length;
240        this.records = new Array(len);
241        let recordCount = 0;
242        if (isString(this.docs[0])) for(let i = 0; i < len; i++){
243            const record = this._createStringRecord(this.docs[i], i);
244            if (record) this.records[recordCount++] = record;
245        }
246        else for(let i = 0; i < len; i++)this.records[recordCount++] = this._createObjectRecord(this.docs[i], i);
247        this.records.length = recordCount;
248        this.norm.clear();
249    }
250    add(doc, docIndex) {
251        if (!Number.isInteger(docIndex) || docIndex < 0) throw new Error(INVALID_DOC_INDEX);
252        if (isString(doc)) {
253            const record = this._createStringRecord(doc, docIndex);
254            if (record) this.records.push(record);
255            return record;
256        }
257        const record = this._createObjectRecord(doc, docIndex);
258        this.records.push(record);
259        return record;
260    }
261    removeAt(idx) {
262        if (!Number.isInteger(idx) || idx < 0) throw new Error(INVALID_DOC_INDEX);
263        for(let i = 0, len = this.records.length; i < len; i += 1)if (this.records[i].i === idx) {
264            this.records.splice(i, 1);
265            break;
266        }
267        for(let i = 0, len = this.records.length; i < len; i += 1)if (this.records[i].i > idx) this.records[i].i -= 1;
268    }
269    removeAll(indices) {
270        const toRemove = /* @__PURE__ */ new Set();
271        for (const v of indices)if (Number.isInteger(v) && v >= 0) toRemove.add(v);
272        if (toRemove.size === 0) return;
273        this.records = this.records.filter((r)=>!toRemove.has(r.i));
274        const sorted = Array.from(toRemove).sort((a, b)=>a - b);
275        for (const record of this.records){
276            let lo = 0;
277            let hi = sorted.length;
278            while(lo < hi){
279                const mid = lo + hi >>> 1;
280                if (sorted[mid] < record.i) lo = mid + 1;
281                else hi = mid;
282            }
283            record.i -= lo;
284        }
285    }
286    getValueForItemAtKeyId(item, keyId) {
287        return item[this._keysMap[keyId]];
288    }
289    size() {
290        return this.records.length;
291    }
292    _createStringRecord(doc, docIndex) {
293        if (!isDefined(doc) || isBlank(doc)) return null;
294        return {
295            v: doc,
296            i: docIndex,
297            n: this.norm.get(doc)
298        };
299    }
300    _createObjectRecord(doc, docIndex) {
301        const record = {
302            i: docIndex,
303            $: {}
304        };
305        for(let keyIndex = 0, keyLen = this.keys.length; keyIndex < keyLen; keyIndex++){
306            const key = this.keys[keyIndex];
307            const value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);
308            if (!isDefined(value)) continue;
309            if (isArray(value)) {
310                const subRecords = [];
311                for(let i = 0, len = value.length; i < len; i += 1){
312                    const item = value[i];
313                    if (!isDefined(item)) continue;
314                    if (isString(item)) {
315                        if (!isBlank(item)) {
316                            const subRecord = {
317                                v: item,
318                                i,
319                                n: this.norm.get(item)
320                            };
321                            subRecords.push(subRecord);
322                        }
323                    } else if (isDefined(item.v)) {
324                        const text = isString(item.v) ? item.v : toString(item.v);
325                        if (!isBlank(text)) {
326                            const subRecord = {
327                                v: text,
328                                i: item.i,
329                                n: this.norm.get(text)
330                            };
331                            subRecords.push(subRecord);
332                        }
333                    }
334                }
335                record.$[keyIndex] = subRecords;
336            } else if (isString(value) && !isBlank(value)) {
337                const subRecord = {
338                    v: value,
339                    n: this.norm.get(value)
340                };
341                record.$[keyIndex] = subRecord;
342            }
343        }
344        return record;
345    }
346    toJSON() {
347        return {
348            keys: this.keys.map((param)=>{
349                let { getFn, ...key } = param;
350                return key;
351            }),
352            records: this.records
353        };
354    }
355    constructor({ getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}){
356        this.norm = norm(fieldNormWeight, 3);
357        this.getFn = getFn;
358        this.isCreated = false;
359        this.docs = [];
360        this.keys = [];
361        this._keysMap = {};
362        this.setIndexRecords();
363    }
364};
365function createIndex(keys, docs) {
366    let { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
367    const myIndex = new FuseIndex({
368        getFn,
369        fieldNormWeight
370    });
371    myIndex.setKeys(keys.map(createKey));
372    myIndex.setSources(docs);
373    myIndex.create();
374    return myIndex;
375}
376function parseIndex(data) {
377    let { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
378    const { keys, records } = data;
379    const myIndex = new FuseIndex({
380        getFn,
381        fieldNormWeight
382    });
383    myIndex.setKeys(keys);
384    myIndex.setIndexRecords(records);
385    return myIndex;
386}
387//#endregion
388//#region src/search/bitap/convertMaskToIndices.ts
389function convertMaskToIndices() {
390    let matchmask = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], minMatchCharLength = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Config.minMatchCharLength;
391    const indices = [];
392    let start = -1;
393    let end = -1;
394    let i = 0;
395    for(let len = matchmask.length; i < len; i += 1){
396        const match = matchmask[i];
397        if (match && start === -1) start = i;
398        else if (!match && start !== -1) {
399            end = i - 1;
400            if (end - start + 1 >= minMatchCharLength) indices.push([
401                start,
402                end
403            ]);
404            start = -1;
405        }
406    }
407    if (matchmask[i - 1] && i - start >= minMatchCharLength) indices.push([
408        start,
409        i - 1
410    ]);
411    return indices;
412}
413//#endregion
414//#region src/search/bitap/search.ts
415function search(text, pattern, patternAlphabet) {
416    let { location = Config.location, distance = Config.distance, threshold = Config.threshold, findAllMatches = Config.findAllMatches, minMatchCharLength = Config.minMatchCharLength, includeMatches = Config.includeMatches, ignoreLocation = Config.ignoreLocation } = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
417    if (pattern.length > 32) throw new Error(PATTERN_LENGTH_TOO_LARGE(32));
418    const patternLen = pattern.length;
419    const textLen = text.length;
420    const expectedLocation = Math.max(0, Math.min(location, textLen));
vendor: 25,373 bytes, lines 421-1038
421    let currentThreshold = threshold;
422    let bestLocation = expectedLocation;
423    const calcScore = (errors, currentLocation)=>{
424        const accuracy = errors / patternLen;
425        if (ignoreLocation) return accuracy;
426        const proximity = Math.abs(expectedLocation - currentLocation);
427        if (!distance) return proximity ? 1 : accuracy;
428        return accuracy + proximity / distance;
429    };
430    const computeMatches = minMatchCharLength > 1 || includeMatches;
431    const matchMask = computeMatches ? Array(textLen) : [];
432    let index;
433    while((index = text.indexOf(pattern, bestLocation)) > -1){
434        const score = calcScore(0, index);
435        currentThreshold = Math.min(score, currentThreshold);
436        bestLocation = index + patternLen;
437        if (computeMatches) {
438            let i = 0;
439            while(i < patternLen){
440                matchMask[index + i] = 1;
441                i += 1;
442            }
443        }
444    }
445    bestLocation = -1;
446    let lastBitArr = [];
447    let finalScore = 1;
448    let bestErrors = 0;
449    let binMax = patternLen + textLen;
450    const mask = 1 << patternLen - 1;
451    for(let i = 0; i < patternLen; i += 1){
452        let binMin = 0;
453        let binMid = binMax;
454        while(binMin < binMid){
455            if (calcScore(i, expectedLocation + binMid) <= currentThreshold) binMin = binMid;
456            else binMax = binMid;
457            binMid = Math.floor((binMax - binMin) / 2 + binMin);
458        }
459        binMax = binMid;
460        let start = Math.max(1, expectedLocation - binMid + 1);
461        const finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen;
462        const bitArr = Array(finish + 2);
463        bitArr[finish + 1] = (1 << i) - 1;
464        for(let j = finish; j >= start; j -= 1){
465            const currentLocation = j - 1;
466            const charMatch = patternAlphabet[text[currentLocation]];
467            bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch;
468            if (i) bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];
469            if (bitArr[j] & mask) {
470                finalScore = calcScore(i, currentLocation);
471                if (finalScore <= currentThreshold) {
472                    currentThreshold = finalScore;
473                    bestLocation = currentLocation;
474                    bestErrors = i;
475                    if (bestLocation <= expectedLocation) break;
476                    start = Math.max(1, 2 * expectedLocation - bestLocation);
477                }
478            }
479        }
480        if (calcScore(i + 1, expectedLocation) > currentThreshold) break;
481        lastBitArr = bitArr;
482    }
483    if (computeMatches && bestLocation >= 0) {
484        const matchEnd = Math.min(textLen - 1, bestLocation + patternLen - 1 + bestErrors);
485        for(let k = bestLocation; k <= matchEnd; k += 1)if (patternAlphabet[text[k]]) matchMask[k] = 1;
486    }
487    const result = {
488        isMatch: bestLocation >= 0,
489        score: Math.max(.001, finalScore)
490    };
491    if (computeMatches) {
492        const indices = convertMaskToIndices(matchMask, minMatchCharLength);
493        if (!indices.length) result.isMatch = false;
494        else if (includeMatches) result.indices = indices;
495    }
496    return result;
497}
498//#endregion
499//#region src/search/bitap/createPatternAlphabet.ts
500function createPatternAlphabet(pattern) {
501    const mask = {};
502    for(let i = 0, len = pattern.length; i < len; i += 1){
503        const char = pattern.charAt(i);
504        mask[char] = (mask[char] || 0) | 1 << len - i - 1;
505    }
506    return mask;
507}
508//#endregion
509//#region src/helpers/mergeIndices.ts
510function mergeIndices(indices) {
511    if (indices.length <= 1) return indices;
512    indices.sort((a, b)=>a[0] - b[0] || a[1] - b[1]);
513    const merged = [
514        indices[0]
515    ];
516    for(let i = 1, len = indices.length; i < len; i += 1){
517        const last = merged[merged.length - 1];
518        const curr = indices[i];
519        if (curr[0] <= last[1] + 1) last[1] = Math.max(last[1], curr[1]);
520        else merged.push(curr);
521    }
522    return merged;
523}
524//#endregion
525//#region src/helpers/diacritics.ts
526const NON_DECOMPOSABLE_MAP = {
527    "ł": "l",
528    "Ł": "L",
529    "đ": "d",
530    "Đ": "D",
531    "ø": "o",
532    "Ø": "O",
533    "ħ": "h",
534    "Ħ": "H",
535    "ŧ": "t",
536    "Ŧ": "T",
537    "ı": "i",
538    "ß": "ss"
539};
540const NON_DECOMPOSABLE_RE = new RegExp("[" + Object.keys(NON_DECOMPOSABLE_MAP).join("") + "]", "g");
541const stripDiacritics = typeof String.prototype.normalize === "function" ? (str)=>str.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g, "").replace(NON_DECOMPOSABLE_RE, (ch)=>NON_DECOMPOSABLE_MAP[ch]) : (str)=>str;
542//#endregion
543//#region src/search/bitap/index.ts
544var BitapSearch = class {
545    searchIn(text) {
546        const { isCaseSensitive, ignoreDiacritics, includeMatches } = this.options;
547        text = isCaseSensitive ? text : text.toLowerCase();
548        text = ignoreDiacritics ? stripDiacritics(text) : text;
549        if (this.pattern === text) {
550            if (text.length < this.options.minMatchCharLength) return {
551                isMatch: false,
552                score: 1
553            };
554            const result = {
555                isMatch: true,
556                score: 0
557            };
558            if (includeMatches) result.indices = [
559                [
560                    0,
561                    text.length - 1
562                ]
563            ];
564            return result;
565        }
566        const { location, distance, threshold, findAllMatches, minMatchCharLength, ignoreLocation } = this.options;
567        const allIndices = [];
568        let totalScore = 0;
569        let hasMatches = false;
570        this.chunks.forEach((param)=>{
571            let { pattern, alphabet, startIndex } = param;
572            const { isMatch, score, indices } = search(text, pattern, alphabet, {
573                location: location + startIndex,
574                distance,
575                threshold,
576                findAllMatches,
577                minMatchCharLength,
578                includeMatches,
579                ignoreLocation
580            });
581            if (isMatch) hasMatches = true;
582            totalScore += score;
583            if (isMatch && indices) allIndices.push(...indices);
584        });
585        const result = {
586            isMatch: hasMatches,
587            score: hasMatches ? totalScore / this.chunks.length : 1
588        };
589        if (hasMatches && includeMatches) result.indices = mergeIndices(allIndices);
590        return result;
591    }
592    constructor(pattern, { location = Config.location, threshold = Config.threshold, distance = Config.distance, includeMatches = Config.includeMatches, findAllMatches = Config.findAllMatches, minMatchCharLength = Config.minMatchCharLength, isCaseSensitive = Config.isCaseSensitive, ignoreDiacritics = Config.ignoreDiacritics, ignoreLocation = Config.ignoreLocation } = {}){
593        this.options = {
594            location,
595            threshold,
596            distance,
597            includeMatches,
598            findAllMatches,
599            minMatchCharLength,
600            isCaseSensitive,
601            ignoreDiacritics,
602            ignoreLocation
603        };
604        pattern = isCaseSensitive ? pattern : pattern.toLowerCase();
605        pattern = ignoreDiacritics ? stripDiacritics(pattern) : pattern;
606        this.pattern = pattern;
607        this.chunks = [];
608        if (!this.pattern.length) return;
609        const addChunk = (pattern, startIndex)=>{
610            this.chunks.push({
611                pattern,
612                alphabet: createPatternAlphabet(pattern),
613                startIndex
614            });
615        };
616        const len = this.pattern.length;
617        if (len > 32) {
618            let i = 0;
619            const remainder = len % 32;
620            const end = len - remainder;
621            while(i < end){
622                addChunk(this.pattern.substr(i, 32), i);
623                i += 32;
624            }
625            if (remainder) {
626                const startIndex = len - 32;
627                addChunk(this.pattern.substr(startIndex), startIndex);
628            }
629        } else addChunk(this.pattern, 0);
630    }
631};
632//#endregion
633//#region src/search/extended/matchers.ts
634const MULTI_MATCH_TYPES = new Set([
635    "fuzzy",
636    "include"
637]);
638function isInverse(type) {
639    return type.startsWith("inverse");
640}
641const matchers = [
642    {
643        type: "exact",
644        multiRegex: /^="(.*)"$/,
645        singleRegex: /^=(.*)$/,
646        create: (pattern)=>({
647                type: "exact",
648                search (text) {
649                    const isMatch = text === pattern;
650                    return {
651                        isMatch,
652                        score: isMatch ? 0 : 1,
653                        indices: [
654                            0,
655                            pattern.length - 1
656                        ]
657                    };
658                }
659            })
660    },
661    {
662        type: "include",
663        multiRegex: /^'"(.*)"$/,
664        singleRegex: /^'(.*)$/,
665        create: (pattern)=>({
666                type: "include",
667                search (text) {
668                    let location = 0;
669                    let index;
670                    const indices = [];
671                    const patternLen = pattern.length;
672                    while((index = text.indexOf(pattern, location)) > -1){
673                        location = index + patternLen;
674                        indices.push([
675                            index,
676                            location - 1
677                        ]);
678                    }
679                    const isMatch = !!indices.length;
680                    return {
681                        isMatch,
682                        score: isMatch ? 0 : 1,
683                        indices
684                    };
685                }
686            })
687    },
688    {
689        type: "prefix-exact",
690        multiRegex: /^\^"(.*)"$/,
691        singleRegex: /^\^(.*)$/,
692        create: (pattern)=>({
693                type: "prefix-exact",
694                search (text) {
695                    const isMatch = text.startsWith(pattern);
696                    return {
697                        isMatch,
698                        score: isMatch ? 0 : 1,
699                        indices: [
700                            0,
701                            pattern.length - 1
702                        ]
703                    };
704                }
705            })
706    },
707    {
708        type: "inverse-prefix-exact",
709        multiRegex: /^!\^"(.*)"$/,
710        singleRegex: /^!\^(.*)$/,
711        create: (pattern)=>({
712                type: "inverse-prefix-exact",
713                search (text) {
714                    const isMatch = !text.startsWith(pattern);
715                    return {
716                        isMatch,
717                        score: isMatch ? 0 : 1,
718                        indices: [
719                            0,
720                            text.length - 1
721                        ]
722                    };
723                }
724            })
725    },
726    {
727        type: "inverse-suffix-exact",
728        multiRegex: /^!"(.*)"\$$/,
729        singleRegex: /^!(.*)\$$/,
730        create: (pattern)=>({
731                type: "inverse-suffix-exact",
732                search (text) {
733                    const isMatch = !text.endsWith(pattern);
734                    return {
735                        isMatch,
736                        score: isMatch ? 0 : 1,
737                        indices: [
738                            0,
739                            text.length - 1
740                        ]
741                    };
742                }
743            })
744    },
745    {
746        type: "suffix-exact",
747        multiRegex: /^"(.*)"\$$/,
748        singleRegex: /^(.*)\$$/,
749        create: (pattern)=>({
750                type: "suffix-exact",
751                search (text) {
752                    const isMatch = text.endsWith(pattern);
753                    return {
754                        isMatch,
755                        score: isMatch ? 0 : 1,
756                        indices: [
757                            text.length - pattern.length,
758                            text.length - 1
759                        ]
760                    };
761                }
762            })
763    },
764    {
765        type: "inverse-exact",
766        multiRegex: /^!"(.*)"$/,
767        singleRegex: /^!(.*)$/,
768        create: (pattern)=>({
769                type: "inverse-exact",
770                search (text) {
771                    const isMatch = text.indexOf(pattern) === -1;
772                    return {
773                        isMatch,
774                        score: isMatch ? 0 : 1,
775                        indices: [
776                            0,
777                            text.length - 1
778                        ]
779                    };
780                }
781            })
782    },
783    {
784        type: "fuzzy",
785        multiRegex: /^"(.*)"$/,
786        singleRegex: /^(.*)$/,
787        create: function(pattern) {
788            let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
789            var _options_location, _options_threshold, _options_distance, _options_includeMatches, _options_findAllMatches, _options_minMatchCharLength, _options_isCaseSensitive, _options_ignoreDiacritics, _options_ignoreLocation;
790            const bitap = new BitapSearch(pattern, {
791                location: (_options_location = options.location) !== null && _options_location !== void 0 ? _options_location : Config.location,
792                threshold: (_options_threshold = options.threshold) !== null && _options_threshold !== void 0 ? _options_threshold : Config.threshold,
793                distance: (_options_distance = options.distance) !== null && _options_distance !== void 0 ? _options_distance : Config.distance,
794                includeMatches: (_options_includeMatches = options.includeMatches) !== null && _options_includeMatches !== void 0 ? _options_includeMatches : Config.includeMatches,
795                findAllMatches: (_options_findAllMatches = options.findAllMatches) !== null && _options_findAllMatches !== void 0 ? _options_findAllMatches : Config.findAllMatches,
796                minMatchCharLength: (_options_minMatchCharLength = options.minMatchCharLength) !== null && _options_minMatchCharLength !== void 0 ? _options_minMatchCharLength : Config.minMatchCharLength,
797                isCaseSensitive: (_options_isCaseSensitive = options.isCaseSensitive) !== null && _options_isCaseSensitive !== void 0 ? _options_isCaseSensitive : Config.isCaseSensitive,
798                ignoreDiacritics: (_options_ignoreDiacritics = options.ignoreDiacritics) !== null && _options_ignoreDiacritics !== void 0 ? _options_ignoreDiacritics : Config.ignoreDiacritics,
799                ignoreLocation: (_options_ignoreLocation = options.ignoreLocation) !== null && _options_ignoreLocation !== void 0 ? _options_ignoreLocation : Config.ignoreLocation
800            });
801            return {
802                type: "fuzzy",
803                search (text) {
804                    return bitap.searchIn(text);
805                }
806            };
807        }
808    }
809];
810//#endregion
811//#region src/search/extended/parseQuery.ts
812const matchersLen = matchers.length;
813const ESCAPED_PIPE = "\0";
814const OR_TOKEN = "|";
815function tokenize(pattern) {
816    const tokens = [];
817    const len = pattern.length;
818    let i = 0;
819    while(i < len){
820        while(i < len && pattern[i] === " ")i++;
821        if (i >= len) break;
822        let j = i;
823        while(j < len && pattern[j] !== " " && pattern[j] !== "\"")j++;
824        if (j < len && pattern[j] === "\"") {
825            j++;
826            while(j < len){
827                if (pattern[j] === "\"") {
828                    const next = j + 1;
829                    if (next >= len || pattern[next] === " ") {
830                        j++;
831                        break;
832                    }
833                    if (pattern[next] === "$" && (next + 1 >= len || pattern[next + 1] === " ")) {
834                        j += 2;
835                        break;
836                    }
837                }
838                j++;
839            }
840            tokens.push(pattern.substring(i, j));
841            i = j;
842        } else {
843            while(j < len && pattern[j] !== " ")j++;
844            tokens.push(pattern.substring(i, j));
845            i = j;
846        }
847    }
848    return tokens;
849}
850function getMatch(pattern, exp) {
851    const matches = pattern.match(exp);
852    return matches ? matches[1] : null;
853}
854function parseQuery(pattern) {
855    let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
856    return pattern.replace(/\\\|/g, ESCAPED_PIPE).split(OR_TOKEN).map((item)=>{
857        const query = tokenize(item.replace(/\u0000/g, "|").trim()).filter((item)=>item && !!item.trim());
858        const results = [];
859        for(let i = 0, len = query.length; i < len; i += 1){
860            const queryItem = query[i];
861            let found = false;
862            let idx = -1;
863            while(!found && ++idx < matchersLen){
864                const def = matchers[idx];
865                const token = getMatch(queryItem, def.multiRegex);
866                if (token) {
867                    results.push(def.create(token, options));
868                    found = true;
869                }
870            }
871            if (found) continue;
872            idx = -1;
873            while(++idx < matchersLen){
874                const def = matchers[idx];
875                const token = getMatch(queryItem, def.singleRegex);
876                if (token) {
877                    results.push(def.create(token, options));
878                    break;
879                }
880            }
881        }
882        return results;
883    });
884}
885//#endregion
886//#region src/search/extended/index.ts
887var ExtendedSearch = class {
888    static condition(_, options) {
889        return options.useExtendedSearch;
890    }
891    searchIn(text) {
892        const query = this.query;
893        if (!query) return {
894            isMatch: false,
895            score: 1
896        };
897        const { includeMatches, isCaseSensitive, ignoreDiacritics } = this.options;
898        text = isCaseSensitive ? text : text.toLowerCase();
899        text = ignoreDiacritics ? stripDiacritics(text) : text;
900        let numMatches = 0;
901        const allIndices = [];
902        let totalScore = 0;
903        let hasInverse = false;
904        for(let i = 0, qLen = query.length; i < qLen; i += 1){
905            const searchers = query[i];
906            allIndices.length = 0;
907            numMatches = 0;
908            hasInverse = false;
909            for(let j = 0, pLen = searchers.length; j < pLen; j += 1){
910                const matcher = searchers[j];
911                const { isMatch, indices, score } = matcher.search(text);
912                if (isMatch) {
913                    numMatches += 1;
914                    totalScore += score;
915                    if (isInverse(matcher.type)) hasInverse = true;
916                    if (includeMatches) if (MULTI_MATCH_TYPES.has(matcher.type)) allIndices.push(...indices);
917                    else allIndices.push(indices);
918                } else {
919                    totalScore = 0;
920                    numMatches = 0;
921                    allIndices.length = 0;
922                    hasInverse = false;
923                    break;
924                }
925            }
926            if (numMatches) {
927                const result = {
928                    isMatch: true,
929                    score: totalScore / numMatches
930                };
931                if (hasInverse) result.hasInverse = true;
932                if (includeMatches) result.indices = mergeIndices(allIndices);
933                return result;
934            }
935        }
936        return {
937            isMatch: false,
938            score: 1
939        };
940    }
941    constructor(pattern, { isCaseSensitive = Config.isCaseSensitive, ignoreDiacritics = Config.ignoreDiacritics, includeMatches = Config.includeMatches, minMatchCharLength = Config.minMatchCharLength, ignoreLocation = Config.ignoreLocation, findAllMatches = Config.findAllMatches, location = Config.location, threshold = Config.threshold, distance = Config.distance } = {}){
942        this.query = null;
943        this.options = {
944            isCaseSensitive,
945            ignoreDiacritics,
946            includeMatches,
947            minMatchCharLength,
948            findAllMatches,
949            ignoreLocation,
950            location,
951            threshold,
952            distance
953        };
954        pattern = isCaseSensitive ? pattern : pattern.toLowerCase();
955        pattern = ignoreDiacritics ? stripDiacritics(pattern) : pattern;
956        this.pattern = pattern;
957        this.query = parseQuery(this.pattern, this.options);
958    }
959};
960//#endregion
961//#region src/core/register.ts
962const registeredSearchers = [];
963function register() {
964    for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
965        args[_key] = arguments[_key];
966    }
967    registeredSearchers.push(...args);
968}
969function createSearcher(pattern, options) {
970    for(let i = 0, len = registeredSearchers.length; i < len; i += 1){
971        const searcherClass = registeredSearchers[i];
972        if (searcherClass.condition(pattern, options)) return new searcherClass(pattern, options);
973    }
974    return new BitapSearch(pattern, options);
975}
976//#endregion
977//#region src/core/queryParser.ts
978const LogicalOperator = {
979    AND: "$and",
980    OR: "$or"
981};
982const KeyType = {
983    PATH: "$path",
984    PATTERN: "$val"
985};
986const isExpression = (query)=>!!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);
987const isPath = (query)=>!!query[KeyType.PATH];
988const isLeaf = (query)=>!isArray(query) && isObject(query) && !isExpression(query);
989const convertToExplicit = (query)=>({
990        [LogicalOperator.AND]: Object.keys(query).map((key)=>({
991                [key]: query[key]
992            }))
993    });
994function parse(query, options) {
995    let { auto = true } = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
996    const next = (query)=>{
997        if (isString(query)) {
998            const obj = {
999                keyId: null,
1000                pattern: query
1001            };
1002            if (auto) obj.searcher = createSearcher(query, options);
1003            return obj;
1004        }
1005        const keys = Object.keys(query);
1006        const isQueryPath = isPath(query);
1007        if (!isQueryPath && keys.length > 1 && !isExpression(query)) return next(convertToExplicit(query));
1008        if (isLeaf(query)) {
1009            const key = isQueryPath ? query[KeyType.PATH] : keys[0];
1010            const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];
1011            if (!isString(pattern)) throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key));
1012            const obj = {
1013                keyId: createKeyId(key),
1014                pattern
1015            };
1016            if (auto) obj.searcher = createSearcher(pattern, options);
1017            return obj;
1018        }
1019        const node = {
1020            children: [],
1021            operator: keys[0]
1022        };
1023        keys.forEach((key)=>{
1024            const value = query[key];
1025            if (isArray(value)) value.forEach((item)=>{
1026                node.children.push(next(item));
1027            });
1028        });
1029        return node;
1030    };
1031    if (!isExpression(query)) query = convertToExplicit(query);
1032    return next(query);
1033}
1034//#endregion
1035//#region src/core/computeScore.ts
1036function computeScoreSingle(matches, param) {
1037    let { ignoreFieldNorm = Config.ignoreFieldNorm } = param;
1038    let totalScore = 1;
1039    matches.forEach((param)=>{
1040        let { key, norm, score } = param;
1041        const weight = key ? key.weight : null;
1042        totalScore *= Math.pow(score === 0 && weight ? Number.EPSILON : score, (weight || 1) * (ignoreFieldNorm ? 1 : norm));
1043    });
1044    return totalScore;
1045}
1046function computeScore(results, param) {
1047    let { ignoreFieldNorm = Config.ignoreFieldNorm } = param;
1048    results.forEach((result)=>{
1049        result.score = computeScoreSingle(result.matches, {
1050            ignoreFieldNorm
1051        });
1052    });
1053}
1054//#endregion
1055//#region src/tools/MaxHeap.ts
1056var MaxHeap = class {
1057    get size() {
1058        return this.heap.length;
1059    }
1060    insert(item) {
1061        if (this.size < this.limit) {
1062            this.heap.push(item);
1063            this._bubbleUp(this.size - 1);
1064        } else if (this.comparator(item, this.heap[0]) < 0) {
1065            this.heap[0] = item;
1066            this._sinkDown(0);
1067        }
1068    }
1069    extractSorted() {
1070        return this.heap.sort(this.comparator);
1071    }
1072    _bubbleUp(i) {
1073        const heap = this.heap;
1074        while(i > 0){
1075            const parent = i - 1 >> 1;
1076            if (this.comparator(heap[i], heap[parent]) <= 0) break;
1077            const tmp = heap[i];
1078            heap[i] = heap[parent];
1079            heap[parent] = tmp;
1080            i = parent;
1081        }
1082    }
1083    _sinkDown(i) {
1084        const heap = this.heap;
1085        const len = heap.length;
1086        let largest = i;
1087        do {
1088            i = largest;
1089            const left = 2 * i + 1;
1090            const right = 2 * i + 2;
1091            if (left < len && this.comparator(heap[left], heap[largest]) > 0) largest = left;
1092            if (right < len && this.comparator(heap[right], heap[largest]) > 0) largest = right;
1093            if (largest !== i) {
1094                const tmp = heap[i];
1095                heap[i] = heap[largest];
1096                heap[largest] = tmp;
1097            }
1098        }while (largest !== i)
1099    }
1100    constructor(limit, comparator){
1101        this.limit = limit;
1102        this.heap = [];
1103        this.comparator = comparator;
1104    }
1105};
1106//#endregion
1107//#region src/core/formatMatches.ts
1108function formatMatches(result) {
1109    const matches = [];
1110    result.matches.forEach((match)=>{
1111        if (!isDefined(match.indices) || !match.indices.length) return;
1112        const obj = {
1113            indices: match.indices,
1114            value: match.value
1115        };
1116        if (match.key) obj.key = match.key.id;
1117        if (match.idx > -1) obj.refIndex = match.idx;
1118        matches.push(obj);
1119    });
1120    return matches;
1121}
1122//#endregion
1123//#region src/core/format.ts
1124function format(results, docs) {
1125    let { includeMatches = Config.includeMatches, includeScore = Config.includeScore } = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
1126    return results.map((result)=>{
1127        const { idx } = result;
1128        const data = {
1129            item: docs[idx],
1130            refIndex: idx
1131        };
1132        if (includeMatches) data.matches = formatMatches(result);
1133        if (includeScore) data.score = result.score;
1134        return data;
1135    });
1136}
1137//#endregion
1138//#region src/search/token/analyzer.ts
1139const DEFAULT_TOKEN = RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376-\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4-\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088F\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u
11390B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5C-\\u0C5D\\u0C60-\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDC-\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E81-\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183-\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3006\\u3031-\\u3035\\u303B-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7DC\\uA7F1-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD-\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}-\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{1031F}\\u{1032D}-\\u{10340}\\u{10342}-\\u{10349}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{103A0}-\\u{103C3}\\u{103C8}-\\u{103CF}\\u{10400}-\\u{1049D}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{10570}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}-\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}-\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}-\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10860}-\\u{10876}\\u{10880}-\\u{1089E}\\u{108E0}-\\u{108F2}\\u{108F4}-\\u{108F5}\\u{10900}-\\u{10915}\\u{10920}-\\u{10939}\\u{10940}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BE}-\\u{109BF}\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A60}-\\u{10A7C}\\u{10A80}-\\u{10A9C}\\u{10AC0}-\\u{10AC7}\\u{10AC9}-\\u{10AE4}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B60}-\\u{10B72}\\u{10B80}-\\u{10B91}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10D00}-\\u{10D23}\\u{10D4A}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10E80}-\\u{10EA9}\\u{10EB0}-\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F1C}\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F70}-\\u{10F81}\\u{10FB0}-\\u{10FC4}\\u{10FE0}-\\u{10FF6}\\u{11003}-\\u{11037}\\u{11071}-\\u{11072}\\u{11075}\\u{11083}-\\u{110AF}\\u{110D0}-\\u{110E8}\\u{11103}-\\u{11126}\\u{11144}\\u{11147}\\u{11150}-\\u{11172}\\u{11176}\\u{11183}-\\u{111B2}\\u{111C1}-\\u{111C4}\\u{111DA}\\u{111DC}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122B}\\u{1123F}-\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A8}\\u{112B0}-\\u{112DE}\\u{11305}-\\u{1130C}\\u{1130F}-\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}-\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}\\u{11350}\\u{1135D}-\\u{11361}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}\\u{113D1}\\u{113D3}\\u{11400}-\\u{11434}\\u{11447}-\\u{1144A}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114AF}\\u{114C4}-\\u{114C5}\\u{114C7}\\u{11580}-\\u{115AE}\\u{115D8}-\\u{115DB}\\u{11600}-\\u{1162F}\\u{11644}\\u{11680}-\\u{116AA}\\u{116B8}\\u{11700}-\\u{1171A}\\u{11740}-\\u{11746}\\u{11800}-\\u{1182B}
1139\\u{118A0}-\\u{118DF}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}-\\u{11916}\\u{11918}-\\u{1192F}\\u{1193F}\\u{11941}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D0}\\u{119E1}\\u{119E3}\\u{11A00}\\u{11A0B}-\\u{11A32}\\u{11A3A}\\u{11A50}\\u{11A5C}-\\u{11A89}\\u{11A9D}\\u{11AB0}-\\u{11AF8}\\u{11BC0}-\\u{11BE0}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2E}\\u{11C40}\\u{11C72}-\\u{11C8F}\\u{11D00}-\\u{11D06}\\u{11D08}-\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D60}-\\u{11D65}\\u{11D67}-\\u{11D68}\\u{11D6A}-\\u{11D89}\\u{11D98}\\u{11DB0}-\\u{11DDB}\\u{11EE0}-\\u{11EF2}\\u{11F02}\\u{11F04}-\\u{11F10}\\u{11F12}-\\u{11F33}\\u{11FB0}\\u{12000}-\\u{12399}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF0}\\u{13000}-\\u{1342F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A70}-\\u{16ABE}\\u{16AD0}-\\u{16AED}\\u{16B00}-\\u{16B2F}\\u{16B40}-\\u{16B43}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D6C}\\u{16E40}-\\u{16E7F}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F50}\\u{16F93}-\\u{16F9F}\\u{16FE0}-\\u{16FE1}\\u{16FE3}\\u{16FF2}-\\u{16FF3}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}-\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}-\\u{1D49F}\\u{1D4A2}\\u{1D4A5}-\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E14E}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E4D0}-\\u{1E4EB}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}-\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}-\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}-\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E800}-\\u{1E8C4}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}-\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}-\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}-\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4-\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962-\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7-\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2-\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47-\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70-\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2-\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47-\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62-\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u
11390C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55-\\u0C56\\u0C62-\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5-\\u0CD6\\u0CE2-\\u0CE3\\u0CF3\\u0D00-\\u0D03\\u0D3B-\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62-\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2-\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18-\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F3F\\u0F71-\\u0F84\\u0F86-\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885-\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099-\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E-\\uA69F\\uA6F0-\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880-\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C-\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7-\\uAAB8\\uAABE-\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5-\\uAAF6\\uABE3-\\uABEA\\uABEC-\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}-\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}-\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}-\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}-\\u{11074}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11145}-\\u{11146}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111C9}-\\u{111CC}\\u{111CE}-\\u{111CF}\\u{1122C}-\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133B}-\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113B8}-\\u{113C0}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}-\\u{113D0}\\u{113D2}\\u{113E1}-\\u{113E2}\\u{11435}-\\u{11446}\\u{1145E}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}-\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{1182C}-\\u{1183A}\\u{11930}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193B}-\\u{1193E}\\u{11940}\\u{11942}-\\u{11943}\\u{119D1}-\\u{119D7}\\u{119DA}-\\u{119E0}\\u{119E4}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11B60}-\\u{11B67}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}-\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D8A}-\\u{11D8E}\\u{11D90}-\\u{11D91}\\u{11D93}-\\u{11D97}\\u{11EF3}-\\u{11EF6}\\u{11F00}-\\u{11F01}\\u{11F03}\\u{11F34}-\\u{11F3A}\\u{11F3E}-\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F51}-\\u{16F87}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{16FF0}-\\u{16FF1}\\u{1BC9D}-\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}-\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}-\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}-\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}
1139\\u0030-\\u0039\\u00B2-\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\\u{10107}-\\u{10133}\\u{10140}-\\u{10178}\\u{1018A}-\\u{1018B}\\u{102E1}-\\u{102FB}\\u{10320}-\\u{10323}\\u{10341}\\u{1034A}\\u{103D1}-\\u{103D5}\\u{104A0}-\\u{104A9}\\u{10858}-\\u{1085F}\\u{10879}-\\u{1087F}\\u{108A7}-\\u{108AF}\\u{108FB}-\\u{108FF}\\u{10916}-\\u{1091B}\\u{109BC}-\\u{109BD}\\u{109C0}-\\u{109CF}\\u{109D2}-\\u{109FF}\\u{10A40}-\\u{10A48}\\u{10A7D}-\\u{10A7E}\\u{10A9D}-\\u{10A9F}\\u{10AEB}-\\u{10AEF}\\u{10B58}-\\u{10B5F}\\u{10B78}-\\u{10B7F}\\u{10BA9}-\\u{10BAF}\\u{10CFA}-\\u{10CFF}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D49}\\u{10E60}-\\u{10E7E}\\u{10F1D}-\\u{10F26}\\u{10F51}-\\u{10F54}\\u{10FC5}-\\u{10FCB}\\u{11052}-\\u{1106F}\\u{110F0}-\\u{110F9}\\u{11136}-\\u{1113F}\\u{111D0}-\\u{111D9}\\u{111E1}-\\u{111F4}\\u{112F0}-\\u{112F9}\\u{11450}-\\u{11459}\\u{114D0}-\\u{114D9}\\u{11650}-\\u{11659}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11730}-\\u{1173B}\\u{118E0}-\\u{118F2}\\u{11950}-\\u{11959}\\u{11BF0}-\\u{11BF9}\\u{11C50}-\\u{11C6C}\\u{11D50}-\\u{11D59}\\u{11DA0}-\\u{11DA9}\\u{11DE0}-\\u{11DE9}\\u{11F50}-\\u{11F59}\\u{11FC0}-\\u{11FD4}\\u{12400}-\\u{1246E}\\u{16130}-\\u{16139}\\u{16A60}-\\u{16A69}\\u{16AC0}-\\u{16AC9}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16D70}-\\u{16D79}\\u{16E80}-\\u{16E96}\\u{16FF4}-\\u{16FF6}\\u{1CCF0}-\\u{1CCF9}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D7CE}-\\u{1D7FF}\\u{1E140}-\\u{1E149}\\u{1E2F0}-\\u{1E2F9}\\u{1E4F0}-\\u{1E4F9}\\u{1E5F1}-\\u{1E5FA}\\u{1E8C7}-\\u{1E8CF}\\u{1E950}-\\u{1E959}\\u{1EC71}-\\u{1ECAB}\\u{1ECAD}-\\u{1ECAF}\\u{1ECB1}-\\u{1ECB4}\\u{1ED01}-\\u{1ED2D}\\u{1ED2F}-\\u{1ED3D}\\u{1F100}-\\u{1F10C}\\u{1FBF0}-\\u{1FBF9}_]+", "gu");
1140const warned = /* @__PURE__ */ new WeakSet();
1141function warnNonGlobal(regex) {
1142    if (!warned.has(regex)) {
1143        warned.add(regex);
1144        console.warn("[Fuse] tokenize regex ".concat(regex, " lacks the global flag; only the first match per text will be returned. Add the 'g' flag."));
1145    }
1146}
1147function resolveTokenize(tokenize) {
1148    if (typeof tokenize === "function") {
1149        let validated = false;
1150        return (text)=>{
1151            const result = tokenize(text);
1152            if (!validated) {
1153                validated = true;
1154                if (!Array.isArray(result) || result.some((t)=>typeof t !== "string")) throw new Error("[Fuse] tokenize function must return string[]; received ".concat(Array.isArray(result) ? "array containing non-strings" : typeof result, "."));
1155            }
1156            return result;
1157        };
1158    }
1159    if (tokenize instanceof RegExp) {
1160        if (!tokenize.global) warnNonGlobal(tokenize);
1161        return (text)=>text.match(tokenize) || [];
1162    }
1163    return (text)=>text.match(DEFAULT_TOKEN) || [];
1164}
1165function createAnalyzer() {
1166    let { isCaseSensitive = false, ignoreDiacritics = false, tokenize } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
1167    const tokenizeFn = resolveTokenize(tokenize);
1168    return {
1169        tokenize (text) {
1170            if (!isCaseSensitive) text = text.toLowerCase();
1171            if (ignoreDiacritics) text = stripDiacritics(text);
1172            return tokenizeFn(text);
1173        }
1174    };
1175}
1176//#endregion
1177//#region src/search/token/index.ts
vendor: 13,233 bytes, lines 1178-1503
1178const MAX_MASK_TERMS = 31;
1179var TokenSearch = class {
1180    static condition(_, options) {
1181        return options.useTokenSearch;
1182    }
1183    searchIn(text) {
1184        if (!this.termSearchers.length) return {
1185            isMatch: false,
1186            score: 1
1187        };
1188        const allIndices = [];
1189        let weightedScore = 0;
1190        let maxPossibleScore = 0;
1191        let matchedCount = 0;
1192        let matchedMask = 0;
1193        const matchedTerms = this.combineAll && !this.useMask ? /* @__PURE__ */ new Set() : null;
1194        for(let i = 0; i < this.termSearchers.length; i++){
1195            const result = this.termSearchers[i].searchIn(text);
1196            const idf = this.idfWeights[i];
1197            maxPossibleScore += idf;
1198            if (result.isMatch) {
1199                matchedCount++;
1200                weightedScore += idf * (1 - result.score);
1201                if (result.indices) allIndices.push(...result.indices);
1202                if (this.combineAll) if (this.useMask) matchedMask |= 1 << i;
1203                else matchedTerms.add(i);
1204            }
1205        }
1206        if (matchedCount === 0) return {
1207            isMatch: false,
1208            score: 1
1209        };
1210        const normalized = maxPossibleScore > 0 ? 1 - weightedScore / maxPossibleScore : 0;
1211        const searchResult = {
1212            isMatch: true,
1213            score: Math.max(.001, normalized)
1214        };
1215        if (this.options.includeMatches && allIndices.length) searchResult.indices = mergeIndices(allIndices);
1216        if (this.combineAll) {
1217            if (this.useMask) searchResult.matchedMask = matchedMask;
1218            else searchResult.matchedTerms = matchedTerms;
1219            searchResult.termCount = this.numTerms;
1220        }
1221        return searchResult;
1222    }
1223    constructor(pattern, options){
1224        this.options = options;
1225        this.analyzer = createAnalyzer({
1226            isCaseSensitive: options.isCaseSensitive,
1227            ignoreDiacritics: options.ignoreDiacritics,
1228            tokenize: options.tokenize
1229        });
1230        const queryTerms = this.analyzer.tokenize(pattern);
1231        const { df, fieldCount } = options._invertedIndex;
1232        this.termSearchers = [];
1233        this.idfWeights = [];
1234        for (const term of queryTerms){
1235            this.termSearchers.push(new BitapSearch(term, {
1236                location: options.location,
1237                threshold: options.threshold,
1238                distance: options.distance,
1239                includeMatches: options.includeMatches,
1240                findAllMatches: options.findAllMatches,
1241                minMatchCharLength: options.minMatchCharLength,
1242                isCaseSensitive: options.isCaseSensitive,
1243                ignoreDiacritics: options.ignoreDiacritics,
1244                ignoreLocation: true
1245            }));
1246            const docFreq = df.get(term) || 0;
1247            const idf = Math.log(1 + (fieldCount - docFreq + .5) / (docFreq + .5));
1248            this.idfWeights.push(idf);
1249        }
1250        this.combineAll = options.tokenMatch === "all";
1251        this.numTerms = this.termSearchers.length;
1252        this.useMask = this.numTerms <= 31;
1253    }
1254};
1255//#endregion
1256//#region src/search/token/InvertedIndex.ts
1257function addField(index, text, docIdx, analyzer) {
1258    const tokens = analyzer.tokenize(text);
1259    if (!tokens.length) return;
1260    index.fieldCount++;
1261    index.docFieldCount.set(docIdx, (index.docFieldCount.get(docIdx) || 0) + 1);
1262    const distinctTerms = new Set(tokens);
1263    let perDocTerms = index.docTermFieldHits.get(docIdx);
1264    if (!perDocTerms) {
1265        perDocTerms = /* @__PURE__ */ new Map();
1266        index.docTermFieldHits.set(docIdx, perDocTerms);
1267    }
1268    for (const term of distinctTerms){
1269        perDocTerms.set(term, (perDocTerms.get(term) || 0) + 1);
1270        index.df.set(term, (index.df.get(term) || 0) + 1);
1271    }
1272}
1273function ingestRecord(index, record, keyCount, analyzer) {
1274    const { i: docIdx, v, $: fields } = record;
1275    if (v !== void 0) {
1276        addField(index, v, docIdx, analyzer);
1277        return;
1278    }
1279    if (!fields) return;
1280    for(let keyIdx = 0; keyIdx < keyCount; keyIdx++){
1281        const value = fields[keyIdx];
1282        if (!value) continue;
1283        if (Array.isArray(value)) for (const sub of value)addField(index, sub.v, docIdx, analyzer);
1284        else addField(index, value.v, docIdx, analyzer);
1285    }
1286}
1287function buildInvertedIndex(records, keyCount, analyzer) {
1288    const index = {
1289        fieldCount: 0,
1290        df: /* @__PURE__ */ new Map(),
1291        docFieldCount: /* @__PURE__ */ new Map(),
1292        docTermFieldHits: /* @__PURE__ */ new Map()
1293    };
1294    for (const record of records)ingestRecord(index, record, keyCount, analyzer);
1295    return index;
1296}
1297function addToInvertedIndex(index, record, keyCount, analyzer) {
1298    ingestRecord(index, record, keyCount, analyzer);
1299}
1300function removeFromInvertedIndex(index, docIdx) {
1301    const fieldCount = index.docFieldCount.get(docIdx);
1302    if (fieldCount === void 0) return;
1303    index.fieldCount -= fieldCount;
1304    index.docFieldCount.delete(docIdx);
1305    const perDocTerms = index.docTermFieldHits.get(docIdx);
1306    if (!perDocTerms) return;
1307    for (const [term, hits] of perDocTerms){
1308        const next = (index.df.get(term) || 0) - hits;
1309        if (next <= 0) index.df.delete(term);
1310        else index.df.set(term, next);
1311    }
1312    index.docTermFieldHits.delete(docIdx);
1313}
1314function removeAndShiftInvertedIndex(index, removedIndices) {
1315    if (removedIndices.length === 0) return;
1316    const sorted = Array.from(new Set(removedIndices)).sort((a, b)=>a - b);
1317    for (const idx of sorted)removeFromInvertedIndex(index, idx);
1318    const shift = (oldIdx)=>{
1319        let lo = 0;
1320        let hi = sorted.length;
1321        while(lo < hi){
1322            const mid = lo + hi >>> 1;
1323            if (sorted[mid] < oldIdx) lo = mid + 1;
1324            else hi = mid;
1325        }
1326        return oldIdx - lo;
1327    };
1328    const firstRemoved = sorted[0];
1329    const shiftedDocFieldCount = /* @__PURE__ */ new Map();
1330    for (const [oldKey, count] of index.docFieldCount)shiftedDocFieldCount.set(oldKey > firstRemoved ? shift(oldKey) : oldKey, count);
1331    index.docFieldCount = shiftedDocFieldCount;
1332    const shiftedDocTermFieldHits = /* @__PURE__ */ new Map();
1333    for (const [oldKey, terms] of index.docTermFieldHits)shiftedDocTermFieldHits.set(oldKey > firstRemoved ? shift(oldKey) : oldKey, terms);
1334    index.docTermFieldHits = shiftedDocTermFieldHits;
1335}
1336//#endregion
1337//#region src/core/index.ts
1338var Fuse = class {
1339    _getSearcher(query) {
1340        if (this._lastQuery === query) return this._lastSearcher;
1341        const searcher = createSearcher(query, this._invertedIndex ? {
1342            ...this.options,
1343            _invertedIndex: this._invertedIndex
1344        } : this.options);
1345        this._lastQuery = query;
1346        this._lastSearcher = searcher;
1347        return searcher;
1348    }
1349    setCollection(docs, index) {
1350        this._docs = docs;
1351        if (index && !(index instanceof FuseIndex)) throw new Error(INCORRECT_INDEX_TYPE);
1352        this._myIndex = index || createIndex(this.options.keys, this._docs, {
1353            getFn: this.options.getFn,
1354            fieldNormWeight: this.options.fieldNormWeight
1355        });
1356        if (this.options.useTokenSearch) {
1357            const analyzer = createAnalyzer({
1358                isCaseSensitive: this.options.isCaseSensitive,
1359                ignoreDiacritics: this.options.ignoreDiacritics,
1360                tokenize: this.options.tokenize
1361            });
1362            this._invertedIndex = buildInvertedIndex(this._myIndex.records, this._myIndex.keys.length, analyzer);
1363        }
1364        this._invalidateSearcherCache();
1365    }
1366    add(doc) {
1367        if (!isDefined(doc)) return;
1368        this._docs.push(doc);
1369        const record = this._myIndex.add(doc, this._docs.length - 1);
1370        if (this._invertedIndex && record) {
1371            const analyzer = createAnalyzer({
1372                isCaseSensitive: this.options.isCaseSensitive,
1373                ignoreDiacritics: this.options.ignoreDiacritics,
1374                tokenize: this.options.tokenize
1375            });
1376            addToInvertedIndex(this._invertedIndex, record, this._myIndex.keys.length, analyzer);
1377        }
1378        this._invalidateSearcherCache();
1379    }
1380    remove() {
1381        let predicate = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ()=>false;
1382        const results = [];
1383        const indicesToRemove = [];
1384        for(let i = 0, len = this._docs.length; i < len; i += 1)if (predicate(this._docs[i], i)) {
1385            results.push(this._docs[i]);
1386            indicesToRemove.push(i);
1387        }
1388        if (indicesToRemove.length) {
1389            if (this._invertedIndex) removeAndShiftInvertedIndex(this._invertedIndex, indicesToRemove);
1390            const toRemove = new Set(indicesToRemove);
1391            this._docs = this._docs.filter((_, i)=>!toRemove.has(i));
1392            this._myIndex.removeAll(indicesToRemove);
1393            this._invalidateSearcherCache();
1394        }
1395        return results;
1396    }
1397    removeAt(idx) {
1398        if (!Number.isInteger(idx) || idx < 0 || idx >= this._docs.length) throw new Error(INVALID_DOC_INDEX);
1399        if (this._invertedIndex) removeAndShiftInvertedIndex(this._invertedIndex, [
1400            idx
1401        ]);
1402        const doc = this._docs.splice(idx, 1)[0];
1403        this._myIndex.removeAt(idx);
1404        this._invalidateSearcherCache();
1405        return doc;
1406    }
1407    _invalidateSearcherCache() {
1408        this._lastQuery = null;
1409        this._lastSearcher = null;
1410    }
1411    getIndex() {
1412        return this._myIndex;
1413    }
1414    _normalizedKeys() {
1415        return this._myIndex.keys.map((key)=>this._keyStore.get(key.id) || key);
1416    }
1417    search(query, options) {
1418        const { limit = -1 } = options || {};
1419        const { includeMatches, includeScore, shouldSort, sortFn, ignoreFieldNorm } = this.options;
1420        if (isString(query) && !query.trim()) {
1421            let docs = this._docs.map((item, idx)=>({
1422                    item,
1423                    refIndex: idx
1424                }));
1425            if (isNumber(limit) && limit > -1) docs = docs.slice(0, limit);
1426            return docs;
1427        }
1428        const useHeap = shouldSort && isNumber(limit) && limit > 0 && isString(query);
1429        const comparator = sortFn;
1430        const stable = (a, b)=>comparator(a, b) || a.idx - b.idx;
1431        let results;
1432        if (useHeap) {
1433            const heap = new MaxHeap(limit, stable);
1434            if (isString(this._docs[0])) this._searchStringList(query, {
1435                heap,
1436                ignoreFieldNorm
1437            });
1438            else this._searchObjectList(query, {
1439                heap,
1440                ignoreFieldNorm
1441            });
1442            results = heap.extractSorted();
1443        } else {
1444            results = isString(query) ? isString(this._docs[0]) ? this._searchStringList(query) : this._searchObjectList(query) : this._searchLogical(query);
1445            computeScore(results, {
1446                ignoreFieldNorm
1447            });
1448            if (shouldSort) results.sort(isString(query) ? stable : comparator);
1449            if (isNumber(limit) && limit > -1) results = results.slice(0, limit);
1450        }
1451        return format(results, this._docs, {
1452            includeMatches,
1453            includeScore
1454        });
1455    }
1456    _searchStringList(query) {
1457        let { heap, ignoreFieldNorm } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1458        const searcher = this._getSearcher(query);
1459        const requireAllTokens = this.options.useTokenSearch && this.options.tokenMatch === "all";
1460        const { records } = this._myIndex;
1461        const results = heap ? null : [];
1462        records.forEach((param)=>{
1463            let { v: text, i: idx, n: norm } = param;
1464            if (!isDefined(text)) return;
1465            const searchResult = searcher.searchIn(text);
1466            if (searchResult.isMatch) {
1467                const match = {
1468                    score: searchResult.score,
1469                    value: text,
1470                    norm,
1471                    indices: searchResult.indices
1472                };
1473                if (requireAllTokens) {
1474                    match.matchedMask = searchResult.matchedMask;
1475                    match.matchedTerms = searchResult.matchedTerms;
1476                    match.termCount = searchResult.termCount;
1477                }
1478                const matches = [
1479                    match
1480                ];
1481                if (!requireAllTokens || this._coversAllTokens(matches)) {
1482                    const result = {
1483                        item: text,
1484                        idx,
1485                        matches
1486                    };
1487                    if (heap) {
1488                        result.score = computeScoreSingle(result.matches, {
1489                            ignoreFieldNorm
1490                        });
1491                        heap.insert(result);
1492                    } else results.push(result);
1493                }
1494            }
1495        });
1496        return results;
1497    }
1498    _searchLogical(query) {
1499        const expression = parse(query, this.options);
1500        const keys = this._normalizedKeys();
1501        const evaluate = (node, item, idx)=>{
1502            if (!("children" in node)) {
1503                const { keyId, searcher }
1503 = node;
1504                let matches;
1505                if (keyId === null) {
1506                    matches = [];
1507                    keys.forEach((key, keyIndex)=>{
1508                        matches.push(...this._findMatches({
1509                            key,
1510                            value: item[keyIndex],
1511                            searcher
1512                        }));
1513                    });
1514                } else matches = this._findMatches({
1515                    key: this._keyStore.get(keyId),
1516                    value: this._myIndex.getValueForItemAtKeyId(item, keyId),
1517                    searcher
1518                });
1519                if (matches && matches.length) return [
1520                    {
1521                        idx,
1522                        item,
1523                        matches
1524                    }
1525                ];
1526                return [];
1527            }
1528            const { children, operator } = node;
1529            const res = [];
1530            for(let i = 0, len = children.length; i < len; i += 1){
1531                const child = children[i];
1532                const result = evaluate(child, item, idx);
1533                if (result.length) res.push(...result);
1534                else if (operator === LogicalOperator.AND) return [];
1535            }
1536            return res;
1537        };
1538        const records = this._myIndex.records;
1539        const resultMap = /* @__PURE__ */ new Map();
1540        const results = [];
1541        records.forEach((param)=>{
1542            let { $: item, i: idx } = param;
1543            if (isDefined(item)) {
1544                const expResults = evaluate(expression, item, idx);
1545                if (expResults.length) {
1546                    if (!resultMap.has(idx)) {
1547                        resultMap.set(idx, {
1548                            idx,
1549                            item,
1550                            matches: []
1551                        });
1552                        results.push(resultMap.get(idx));
1553                    }
1554                    expResults.forEach((param)=>{
1555                        let { matches } = param;
1556                        resultMap.get(idx).matches.push(...matches);
1557                    });
1558                }
1559            }
1560        });
1561        return results;
1562    }
1563    _searchObjectList(query) {
1564        let { heap, ignoreFieldNorm } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1565        const searcher = this._getSearcher(query);
1566        const requireAllTokens = this.options.useTokenSearch && this.options.tokenMatch === "all";
1567        const { records } = this._myIndex;
1568        const keys = this._normalizedKeys();
1569        const results = heap ? null : [];
1570        records.forEach((param)=>{
1571            let { $: item, i: idx } = param;
1572            if (!isDefined(item)) return;
1573            const matches = [];
1574            let anyKeyFailed = false;
1575            let hasInverse = false;
1576            keys.forEach((key, keyIndex)=>{
1577                const keyMatches = this._findMatches({
1578                    key,
1579                    value: item[keyIndex],
1580                    searcher
1581                });
1582                if (keyMatches.length) {
1583                    matches.push(...keyMatches);
1584                    if (keyMatches[0].hasInverse) hasInverse = true;
1585                } else anyKeyFailed = true;
1586            });
1587            if (hasInverse && anyKeyFailed) return;
1588            if (matches.length && (!requireAllTokens || this._coversAllTokens(matches))) {
1589                const result = {
1590                    idx,
1591                    item,
1592                    matches
1593                };
1594                if (heap) {
1595                    result.score = computeScoreSingle(result.matches, {
1596                        ignoreFieldNorm
1597                    });
1598                    heap.insert(result);
1599                } else results.push(result);
1600            }
1601        });
1602        return results;
1603    }
1604    _findMatches(param) {
1605        let { key, value, searcher }
vendor: 3,763 bytes, lines 1605-1715
1605 = param;
1606        if (!isDefined(value)) return [];
1607        const matches = [];
1608        if (isArray(value)) value.forEach((param)=>{
1609            let { v: text, i: idx, n: norm } = param;
1610            if (!isDefined(text)) return;
1611            const searchResult = searcher.searchIn(text);
1612            if (searchResult.isMatch) {
1613                const match = {
1614                    score: searchResult.score,
1615                    key,
1616                    value: text,
1617                    idx,
1618                    norm,
1619                    indices: searchResult.indices,
1620                    hasInverse: searchResult.hasInverse
1621                };
1622                if (searchResult.termCount !== void 0) {
1623                    match.matchedMask = searchResult.matchedMask;
1624                    match.matchedTerms = searchResult.matchedTerms;
1625                    match.termCount = searchResult.termCount;
1626                }
1627                matches.push(match);
1628            }
1629        });
1630        else {
1631            const { v: text, n: norm } = value;
1632            const searchResult = searcher.searchIn(text);
1633            if (searchResult.isMatch) {
1634                const match = {
1635                    score: searchResult.score,
1636                    key,
1637                    value: text,
1638                    norm,
1639                    indices: searchResult.indices,
1640                    hasInverse: searchResult.hasInverse
1641                };
1642                if (searchResult.termCount !== void 0) {
1643                    match.matchedMask = searchResult.matchedMask;
1644                    match.matchedTerms = searchResult.matchedTerms;
1645                    match.termCount = searchResult.termCount;
1646                }
1647                matches.push(match);
1648            }
1649        }
1650        return matches;
1651    }
1652    _coversAllTokens(matches) {
1653        const termCount = matches.length ? matches[0].termCount : void 0;
1654        if (termCount === void 0) return true;
1655        if (termCount <= 31) {
1656            let coverage = 0;
1657            for(let i = 0; i < matches.length; i++)coverage |= matches[i].matchedMask || 0;
1658            return coverage === 2 ** termCount - 1;
1659        }
1660        const coverage = /* @__PURE__ */ new Set();
1661        for(let i = 0; i < matches.length; i++){
1662            const terms = matches[i].matchedTerms;
1663            if (terms) for (const t of terms)coverage.add(t);
1664        }
1665        return coverage.size === termCount;
1666    }
1667    constructor(docs, options, index){
1668        this.options = {
1669            ...Config,
1670            ...options
1671        };
1672        if (this.options.useExtendedSearch && false) ;
1673        if (this.options.useTokenSearch && false) ;
1674        this._keyStore = new KeyStore(this.options.keys);
1675        this._docs = docs;
1676        this._myIndex = null;
1677        this._invertedIndex = null;
1678        this.setCollection(docs, index);
1679        this._lastQuery = null;
1680        this._lastSearcher = null;
1681    }
1682};
1683//#endregion
1684//#region src/entry.ts
1685Fuse.version = "7.5.0";
1686Fuse.createIndex = createIndex;
1687Fuse.parseIndex = parseIndex;
1688Fuse.config = Config;
1689Fuse.match = function(pattern, text, options) {
1690    if (options && options.useTokenSearch) throw new Error(FUSE_MATCH_TOKEN_SEARCH_UNSUPPORTED);
1691    return createSearcher(pattern, {
1692        ...Config,
1693        ...options
1694    }).searchIn(text);
1695};
1696Fuse.parseQuery = parse;
1697register(ExtendedSearch);
1698register(TokenSearch);
1699Fuse.use = function() {
1700    for(var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++){
1701        plugins[_key] = arguments[_key];
1702    }
1703    plugins.forEach((plugin)=>register(plugin));
1704};
1705var entry_default = Fuse;
1706;
1707__turbopack_context__.s([
1708    "default",
1709    0,
1710    entry_default
1711]);
1712}),
1713]);
1714
1715//# debugId=c33f45a8-6572-5961-cce8-44b371d30081

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.