@sheetxl/sdk
Version:
SDK - A high-performance, embeddable spreadsheet engine.
983 lines • 1.09 MB
JavaScript
/**
* @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.6.4
*
* (C) 2025-present SheetXL Inc. & Michael T. Ford
* License: The license can be found at https://www.sheetxl.com/license.
*/
import { ScalarType as t, IRange as e, FormulaError as n, Observable as r } from "@sheetxl/primitives";
export * from "@sheetxl/primitives";
import { CommonUtils as o, UndoManager as s, ChainedError as i, TypesUtils as a, RangeOrientation as l, CoordUtils as c, Direction as h, OutOfBoundsError as d, NullNotAllowedError as u, RangeOrientations as g, NotImplementedError as m, TypedObject as f, AnchorLocation as p, JSONStableStringify as _, BufferUtils as S, ImageUtils as w, MimeType as y, PartialError as E, TypedError as C, CommonMessages as b } from "@sheetxl/utils";
export * from "@sheetxl/utils";
import { LRUCache as v } from "lru-cache";
import { parseFontFamily as x, parseFont as I } from "css-font-parser";
import { openSync as R } from "fontkit";
import A from "linebreak";
const M = (t2, e2) => {
const n2 = /* @__PURE__ */ new Map();
return t2.forEach((t3, r2) => {
e2.get(r2) !== t3 && n2.set(r2, t3);
}), n2;
};
let N = false;
class T {
constructor(t2) {
this._record = t2;
}
getId() {
return this._record.id;
}
getDescription() {
return this._record.description;
}
getMeta() {
return Object.freeze(this._record.meta);
}
getAuthor() {
return this._record.author;
}
getTimestamp() {
return this._record.timestamp;
}
getOperation() {
return this._record.operation;
}
}
class k {
constructor(t2) {
this._listeners = /* @__PURE__ */ new Set(), this._listenersState = /* @__PURE__ */ new Map(), this._commits = /* @__PURE__ */ new Map(), this._locked = false, this._current = null, this._pending = null, this._isSync = t2?.sync ?? N, this._isTransient = t2?.transient ?? false, this._author = t2?.author;
const e2 = { id: "0", description: "initial", meta: {}, author: this._author, timestamp: Date.now(), states: /* @__PURE__ */ new Map(), version: 0, previousId: null }, n2 = { record: e2, commit: new T(e2) };
this._current = n2, this._cacheModel = null, this._cacheState = null, this._states = e2.states, this._transactionStack = [], this._transactionOpen = false;
const r2 = /* @__PURE__ */ new Map();
r2.set(e2.id, n2), this._commits = r2;
}
static {
this.setDefaultSync = (t2) => {
N = t2;
};
}
getLog(t2, e2 = 100) {
const n2 = [];
let r2 = t2;
do {
const t3 = this._commits.get(r2);
if (!t3) throw new Error(`Invalid commit id: '${r2}'`);
if (n2.push(t3.commit), r2 = t3.record.previousId, !r2) return n2;
} while (n2.length < e2);
}
getCommitCount() {
return this._commits.size;
}
isOpenTransaction() {
return this._transactionStack.length > 0 || this._transactionOpen;
}
getPendingView() {
const t2 = this._transactionStack;
return t2.length > 0 ? t2[0].getView() : null;
}
getState(t2) {
const e2 = this._transactionStack;
if (0 === e2.length) {
if (this._cacheModel === t2) return this._cacheState;
const e3 = this._states.get(t2);
return this._cacheModel = t2, this._cacheState = e3, e3;
}
return e2[e2.length - 1].getState(t2);
}
getCurrentCommit() {
return this._pending?.commit ?? this._current.commit;
}
restore(t2, e2) {
const n2 = this._getCommitContainer(t2, e2);
if (this._current.commit.getId() === n2.commit.getId()) return n2.commit;
let r2;
e2?.viewId && "custom" !== e2?.viewId || (r2 = n2.record.viewAfter);
const o2 = M(n2.record.states, this._current.record.states);
this._notifyStates("onBeforeCommitStart", this._current, o2, r2, true, false), this._current = n2, this._states = this._current.record.states, this._cacheModel = null, this._cacheState = null, this._notifyStates("onAfterStateChange", n2, o2, r2, false, true, true), this._notify("onCommitChange", n2.commit, true), this._transactionOpen = true;
try {
this._notifyStates("onRestoreOrRevert", n2, n2.record.states, r2, false, true);
} finally {
this._transactionOpen = false;
}
return n2.commit;
}
revert(t2, e2) {
const n2 = this._getCommitContainer(t2, e2), r2 = this._commits.get(n2.record.previousId);
if (!r2) throw new Error(`Invalid commit id: '${n2.record.previousId}'`);
let o2;
e2?.viewId && " custom" !== e2?.viewId || (o2 = n2.record.viewBefore ?? n2.record.viewAfter);
const s2 = M(r2.record.states, this._current.record.states);
this._notifyStates("onBeforeCommitStart", this._current, s2, o2, true, false), this._current = r2, this._states = this._current.record.states, this._cacheModel = null, this._cacheState = null, this._notifyStates("onAfterStateChange", r2, s2, o2, true, false, true), this._notify("onCommitChange", r2.commit, true), this._transactionOpen = true;
try {
this._notifyStates("onRestoreOrRevert", r2, r2.record.states, o2, true, true);
} finally {
this._transactionOpen = false;
}
return r2.commit;
}
_getCommitContainer(t2, e2) {
const n2 = this._commits.get(t2);
if (!n2) throw new Error(`Invalid commit id: '${t2}'`);
if (this._isTransient) throw new Error("Cannot revert transient store");
if (e2?.force && this._transactionStack.length > 0 && this._transactionStack[0].rollback(), 0 !== this._transactionStack.length) throw new Error("Open transactions.");
return n2;
}
_pruneForwards(t2) {
}
beginCommit(t2, e2) {
const n2 = this._transactionStack, r2 = n2.length;
if (this._locked) throw console.warn("TransactionStore locked", n2), new Error(`TransactionStore is locked by '${n2[r2 - 1].getDescription()}`);
const s2 = t2?.preventFurtherTransactions, i2 = this, a2 = (t3, n3, o2) => {
const a3 = i2._transactionStack;
r2 !== a3.length - 1 && console.warn("Transaction stack out of sync", r2, a3.length, a3), s2 && (this._locked = false), a3.pop(), e2?.(t3, n3, o2), 0 === a3.length && (i2._pending = null);
};
let l2;
if (0 === n2.length) {
const e3 = this._current.record, n3 = { states: /* @__PURE__ */ new Map(), id: o.uuidV4(), description: "string" == typeof t2 ? t2 : t2?.description ?? null, meta: {}, timestamp: Date.now(), author: null, version: e3.version + 1, previousId: e3.id, viewBefore: null, viewAfter: {}, operation: t2?.operation }, r3 = { record: n3, commit: new T(n3) };
this._pending = r3, this._notify("onCommitStart", r3.commit), l2 = new O(this, r3, e3?.states, t2, a2);
} else {
l2 = n2[n2.length - 1].beginTransaction(t2, a2);
}
return s2 && (this._locked = true), this._transactionStack.push(l2), l2;
}
doBatch(t2, e2, n2) {
let r2;
const o2 = this.beginCommit(e2, n2), s2 = this.getCurrentCommit();
try {
r2 = t2?.(s2);
const n3 = () => {
o2.commit(e2);
};
if (!!r2 && "function" == typeof r2.then) return new Promise((t3, e3) => {
r2.then((r3) => {
try {
n3(), t3(r3);
} catch (t4) {
e3(t4);
}
}).catch((t4) => {
o2.rollback(), e3(t4);
});
});
n3();
} catch (t3) {
throw o2.rollback(), t3;
}
return r2;
}
remove(t2) {
return !!t2;
}
addListener(t2) {
const e2 = this._listeners;
return e2.add(t2), () => {
e2.delete(t2);
};
}
addStateListener(t2, e2) {
if (!t2) throw new Error("Model is required");
if (!e2) throw new Error("Listener is required");
let n2 = this._listenersState.get(t2);
n2 || (n2 = /* @__PURE__ */ new Set(), this._listenersState.set(t2, n2));
return n2.add(e2), () => {
n2.delete(e2), 0 === n2.size && this._listenersState.delete(t2);
};
}
dispatchEvents(t2, e2 = false) {
!e2 || this._isSync ? t2() : setTimeout(t2, 0);
}
_commitRecord(t2, e2, n2) {
let r2 = t2.record, o2 = t2.commit;
if (!this._isTransient) {
if (n2) {
const e3 = this._commits.get(r2.previousId);
if (e3) {
r2.previousId = e3.record.id;
const n3 = e3.record, s2 = n3.states;
if (s2) {
r2.states.forEach((t3, e4) => {
s2.set(e4, t3);
});
}
n3.viewAfter = { ...n3.viewAfter, ...r2.viewAfter }, n3.meta = { ...n3.meta, ...r2.meta }, n3.timestamp = r2.timestamp, r2 = n3, o2 = e3.commit, t2 = { record: r2, commit: o2 };
}
}
this._commits.set(r2.id, t2);
}
this._current = t2, this._states = this._current.record.states, this._cacheModel = null, this._cacheState = null, n2 || this._notify("onCommitChange", o2), this._notifyStates("onAfterStateChange", t2, e2, t2.record.viewAfter, false, false, true), n2 || this._notify("onCommitEnd", o2, true);
}
_notifyStates(t2, e2, n2, r2, o2 = false, s2 = false, i2 = false) {
const a2 = e2.commit, l2 = this._listenersState;
n2.forEach((e3, n3) => {
const c2 = l2.get(n3);
c2 && this.dispatchEvents(() => {
c2.forEach((n4) => {
n4[t2]?.(e3, r2, a2, o2, s2);
});
}, i2);
});
}
_notify(t2, e2, n2 = false) {
this.dispatchEvents(() => {
this._listeners.forEach((n3) => {
n3[t2]?.(e2);
});
}, n2);
}
}
class F {
constructor(t2, e2) {
this._children = /* @__PURE__ */ new Set(), this._depth = 0, this._container = null, this._closed = false, this._container = t2, e2 = "string" == typeof e2 ? { description: e2 } : e2, this._description = e2?.description ?? "", void 0 !== e2?.viewBefore && (t2.record.viewBefore = t2.record.viewBefore && e2.viewBefore ? { ...t2.record.viewBefore, ...e2.viewBefore } : e2.viewBefore), void 0 !== e2?.viewAfter && (t2.record.viewAfter = t2.record.viewAfter && e2.viewAfter ? { ...t2.record.viewAfter, ...e2.viewAfter } : e2.viewAfter);
}
getView() {
return this._container.record.viewAfter ?? this._container.record.viewBefore;
}
getDepth() {
return this._depth;
}
getDescription() {
return this._description;
}
getStates() {
return this._states;
}
beginTransaction(t2, e2) {
this._ensureOpen();
const n2 = new D(this, this._container, "string" == typeof t2 ? { description: t2 } : t2, e2);
return this._children || this._children, this._children.add(n2), n2;
}
updateState(t2, e2) {
this._ensureOpen();
const n2 = this.getState(t2), r2 = "function" == typeof e2 ? e2(n2) : void 0 === e2 ? n2 : { ...n2, ...e2 };
if (r2) {
let e3 = this._states;
e3 || (e3 = /* @__PURE__ */ new Map(), this._states = e3), e3.set(t2, r2);
}
return r2;
}
commit(t2) {
if (this._ensureOpen(), "string" == typeof t2 && (t2 = { description: t2 }), t2) {
if (t2.description && (this._description = t2.description), t2.meta && (this._meta = o.mergeContentful(t2.meta, this._meta)), void 0 !== t2.viewAfter) {
const e2 = this._container.record;
let n2 = t2.viewAfter;
if (null === n2) e2.viewAfter = null;
else {
const t3 = e2.viewAfter;
"function" == typeof n2 && (n2 = n2(t3)), e2.viewAfter = { ...t3, ...n2 };
}
}
if (void 0 !== t2.viewBefore) {
const e2 = this._container.record;
let n2 = t2.viewBefore;
if (null === n2) e2.viewAfter = null;
else {
const t3 = e2.viewBefore;
"function" == typeof n2 && (n2 = n2(t3)), e2.viewBefore = { ...t3, ...n2 };
}
}
}
return this._children && this._children.forEach((e2) => {
e2.commit(t2);
}), this;
}
isClose() {
return this._closed;
}
_ensureOpen() {
if (this._closed) throw this._descriptions && console.warn(`stack: [${this._descriptions.join(",")}]`), new Error("Transaction already closed");
}
_removeChild(t2) {
this._children.delete(t2), this._mergeStates(t2._states);
}
_mergeStates(t2) {
if (!t2 || 0 === t2.size) return;
let e2 = this._states;
return e2 ? (t2.forEach((t3, n2) => {
const r2 = this.updateState(n2, t3);
e2.set(n2, r2);
}), e2) : (this._states = t2, t2);
}
}
class O extends F {
constructor(t2, e2, n2, r2, o2) {
super(e2, r2), this._store = t2, this._prevStates = n2, this._onClose = o2, this._states = /* @__PURE__ */ new Map(), this._meta = e2.record.meta;
}
getId() {
return this._container.commit.getId();
}
getParent() {
return this;
}
commit(t2) {
const e2 = this._states, n2 = this._container, r2 = n2.record.viewAfter;
this._store._notifyStates("onBeforeCommitStart", n2, e2, r2, false, false), super.commit(t2), this._store._notifyStates("onBeforeCommitEnd", n2, e2, r2, false, false);
const o2 = new Map(this._prevStates);
return this._states.forEach((t3, e3) => {
null === t3 ? o2.delete(e3) : o2.set(e3, t3);
}), this._states = o2, this._description && (n2.record.description = this._description), this._meta && (n2.record.meta = this._meta), n2.record.states = o2, this._closed = true, this._onClose?.(this, false, t2), this._store._commitRecord(n2, e2, t2?.forceAmend ?? false), this;
}
rollback() {
return this._ensureOpen(), this._children && this._children.forEach((t2) => {
t2.rollback();
}), this._closed = true, this._onClose?.(this, true, null), this;
}
updateState(t2, e2) {
const n2 = super.updateState(t2, e2);
return this._states.set(t2, n2), n2;
}
getState(t2) {
let e2 = this._states.get(t2);
return e2 || (e2 = this._prevStates.get(t2)), e2;
}
_mergeStates(t2) {
if (!t2 || 0 === t2.size) return /* @__PURE__ */ new Map();
return super._mergeStates(t2);
}
}
class D extends F {
constructor(t2, e2, n2, r2) {
if (super(e2, n2), !t2) throw new Error("Parent transaction required");
this._parent = t2, this._depth = this._parent.getDepth() + 1, this._onClose = r2;
}
getId() {
return this._parent.getId();
}
getParent() {
return this._parent;
}
getState(t2) {
const e2 = this._states ? this._states.get(t2) : void 0;
if (void 0 !== e2) return e2;
return this._parent.getState(t2);
}
commit(t2) {
return super.commit(t2), this._parent._removeChild(this), this._closed = true, this._onClose?.(this, false, t2), this._parent ?? this;
}
rollback() {
return this._ensureOpen(), this._children && this._children.forEach((t2) => {
t2.rollback();
}), this._parent._removeChild(this), this._closed = true, this._onClose?.(this, true, null), this._parent ?? this;
}
}
class L extends s {
constructor(t2, e2 = 50) {
super(e2), this._transactions = t2;
const n2 = this;
t2?.addListener({ onCommitEnd: (e3) => {
e3.getDescription() && n2.addUndoOperation({ description: e3.getDescription(), undo: () => (t2.revert(e3.getId()), () => {
t2.restore(e3.getId());
}) });
} });
}
clear() {
super.clear();
}
close() {
this._removeLister();
}
}
const B = () => {
try {
return "0.6.4";
} catch (t2) {
return "";
}
}, P = Object.freeze(Object.defineProperty({ __proto__: null, getBuildDate: () => {
try {
return "Thu Aug 21 2025";
} catch (t2) {
return "";
}
}, getBuildVersion: B }, Symbol.toStringTag, { value: "Module" })), z = "\n███████╗██╗ ██╗███████╗███████╗████████╗ ██╗ ██╗██╗\n██╔════╝██║ ██║██╔════╝██╔════╝╚══██╔══╝ ╚██╗██╔╝██║\n███████╗███████║█████╗ █████╗ ██║ ╚███╔╝ ██║\n╚════██║██╔══██║██╔══╝ ██╔══╝ ██║ ██╔██╗ ██║\n███████║██║ ██║███████╗███████╗ ██║ ██╔╝ ██╗███████╗\n╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝", W = `
https://www.sheetxl.com ${B()}`, H = "#1976d2", j = "#FFA726", V = Object.freeze(Object.defineProperty({ __proto__: null, generateNodeId: async () => {
if (!o.isNode()) return null;
const t2 = await import(
/* @vite-ignore */
/* webpackIgnore: true */
"os"
), e2 = await import(
/* @vite-ignore */
/* webpackIgnore: true */
"crypto"
), n2 = { arch: t2.arch(), hostname: t2.hostname(), platform: t2.platform() };
return e2.createHash("sha256").update(JSON.stringify(n2)).digest("hex");
}, getKey: async () => new (0, (await import(
/* @vite-ignore */
/* webpackIgnore: true */
"configstore"
)).default)("sheetxl").get("licenseKey"), printBanner: async (t2) => {
try {
const t3 = (await import(
/* webpackIgnore: true */
/* @vite-ignore */
"chalk"
)).default;
t3.level = 2;
const e2 = t3.hex(H), n2 = t3.hex(j);
return console.log(e2(z) + n2(W));
} catch (t3) {
return console.log(z + "\n" + W + "\n");
}
}, printDetails: async (t2, e2 = false, n2 = false, r2 = false) => {
let o2;
const s2 = (await import(
/* webpackIgnore: true */
/* @vite-ignore */
"chalk"
)).default;
s2.level = 2;
const i2 = s2.red, a2 = s2.hex(H), l2 = s2.hex(j);
if (t2.isEval() ? (o2 = "Evaluation Only", console.log(i2(o2)), o2 = "Please visit https://my.sheetxl.com to register.", console.log(a2(o2))) : (o2 = `Licensee: ${t2.licensee() ?? "Invalid License"}
`, o2 += `Expires: ${t2.expiration()?.toLocaleDateString() ?? "Never"}`, t2.domains() && t2.domains().length > 0 && (o2 += `
Domains: ${t2.domains().join(", ")}`), t2.cpuCount() > 0 && (o2 += `
Cpus: ${t2.cpuCount()}`), console.log(a2(o2))), !r2 && t2.exceptions().length > 0) {
o2 = "\nExceptions:\n";
for (let e3 = 0; e3 < t2.exceptions().length; e3++) o2 += ` ${t2.exceptions()[e3]}
`;
console.log(i2(o2));
}
return n2 && (o2 += `
KeyFrom: '${t2.keyFrom()}'`, console.log(l2(o2))), Promise.resolve();
}, setKey: async (t2, e2 = false) => {
try {
const n2 = await import(
/* @vite-ignore */
/* webpackIgnore: true */
"configstore"
), r2 = new (0, n2.default)("sheetxl"), o2 = r2.get("licenseKey");
if (o2 && !e2) return void console.warn(`License key already exists: ${o2}`);
r2.set("licenseKey", t2);
} catch (t3) {
console.warn("Unable to save license key to config store.");
}
} }, Symbol.toStringTag, { value: "Module" })), $ = (t2, e2, n2 = 126) => ((t3, e3, n3 = 126) => {
let r2 = t3.split("");
for (let t4 = 0; t4 < r2.length; t4++) r2[t4].charCodeAt(0) <= n3 && (r2[t4] = String.fromCharCode((r2[t4].charCodeAt(0) + e3) % n3));
return r2.join("");
})(t2, n2 - e2), G = (t2) => "object" == typeof window ? window.atob(t2) : Buffer.from(t2, "base64").toString("ascii");
function U() {
const t2 = ["WPldGepcM8ovoYdcJSkTpCkMWQC", "WO3cHvZcN8kBtG", "sL16WRG/mSkvW7tdOYBdN8keW49g", "W6zqW7Dxb8oK", "FNbrWPGzc8kT", "W7tcQ8oLj2FcUG", "oKLbWOvSWPlcPCkstMW3W4jcgsLeuMLQW7K", "W5BcOmk0F8odwq", "i8k6s2ddK8oUWQxdISofW7f3F3K", "WOTOW4BdVrRdUW", "WRb+W6rjWRKSih3dGmoMW43cR8kAW6lcOsm", "WQ3cQCkhmW", "ENVcU3rOWPBcQ8oSfSkhtCofEmoF", "WQK/WPzovSkPrMi", "xqPIwG", "WOpcJSolW7ZcV8o8WPWJW5jsW7PRCq", "fujwWPb1WONcPmob", "mqFcV8kLW4LrCq", "wgtdNxj3WRmK", "WPVdOttcNmoYWPNcV8o+", "fCo1dSkYjCo3cmowhG", "WPJdQItcJmonW5JdRmk4W7W", "k28fcXRcPG", "wmoPow7cUeO", "bZ7cMsvwWOGkWPLnWOW", "WO8sg058W5CqEmkPWPaiFaC", "W4jszmogWPTKW6HbiG", "WOLLW6fa", "mSo8WPZdGSoGW5CZ", "W5xcQSkHC8olrq", "qN7dIMDUWQK", "q30cWPJdSdfIWPegELyyWOq5", "DSoAWOijWPKwlKXHW6ldRg8", "a1vyWOLPWOJcPa", "WObFkwxcJsa", "WRVcHMVcGmkuvNm0W5G5wrm", "m8oDW60LWRvFCNpcR8k9mXO", "bd7cNYPjWO4YWR1WWR8", "yYhcTSk7W6DhlxrLW5ej", "WReXW6zUymkBW40", "cLBcR3vKW7S", "WRVcM8onW4hcUmoLWR0", "WP1YW5hdMq/dUKpdN1Ll", "WOpcOCojW6FcVSo8WRCzW7K", "xw/dHxrVWRi", "gCkHWQyMymooeYhcO3XXm8k8W5pcHCkbw2VdNmki", "a1vEWOP0WRNcOmoCtgaM", "jSoSdmk/omo6bSom", "WR4sWOWbuSkWFLRcICorz8kFqmk5", "rrmfW5jnWQNcI8odBgq", "WPtcHhdcH8ko", "W4vxkdhcNmkB", "W6rgW4b+eCoUkG", "c2iTW64", "eflcRwD1W5xcVa", "qwJcRh1TWP3cUSo9aq", "iSo4WOhdG8oPW5mgW5v4WRZcH3yX", "WOtcTKvgWP4E", "sebKWRq/kG", "hevDWOfJWO8", "WOKwaufWW4KZ", "W4eqixq", "WQyUW6DMFq", "WO3cHCkWW67cNSov", "xIVdPmouWR/cUM8+W4emfvddRSkieG", "sHyhW5e1W47cTCovAfidW64", "W7XvpZ3cImkk", "jSoiW7JdPmksWQrhCmoxW4S", "WRNcHSojW7ZcO8oX", "cgm/W7qGFmoohf4b", "WPlcKmkYW6dcNG", "uCkabMFcQG", "WQGEbvrGW6qYEmkHWOC", "v3dcU3bOWPdcV8kPamkRt8orF8of", "FMzdWQBdRsfqWPybDW", "W4/cVt3cPCoVWRpcSCo0", "WRdcQmkRkaS3", "a8khWPucwmo/o17cG1Xre8kCW7pcPCo+E0VdVa", "s8oxWQnr", "WQRdLuxcSmoojGJcJ8kDpCk7WQ5w", "W4tcKG/dRmoKoGpcPSkyoa", "cMzYwmoyW5Cy", "WRVcM8onW5hcTmo8WRKVW4Pa", "D23cG35GWPW", "W5O/WOFcMeNdNeddMw5IWRK", "reTcWRWHoSkf", "WOtcMmk9W6ZcMSojWOK3WR/cVW", "iwFdPSkSW5Pud0L6", "WOJdRJZcMSoaWRBcVq", "bZXRFhmWWOJdT8kiW4ZdISkcEG", "umkjhuRcRCkQpLClWO8wW5BcK8owEW", "gqeJW65/bSk1W77dRGJdJW", "CcddPSo3WQBcUMD6W5SabeBdQCkugCkvWPWXmSoJjCo7c8omW4dcLKy", "nCkKt2JdKCoZWOxcJ8ouW6HUENJdPcLYWPNcRq", "vCo1gMdcTueZ", "WRVcHMVcGmkuvG", "WRi7W79nFmkCW5iQdCogWOFdKq", "uGtdSsqHWQhdVmksWQ43umoNWOZdUW", "kYRdUsHwWQ3cQCoCf8kw", "WP3cKmkwpSo3rSoqWRrsW5j9WQe", "W5FcT8kLtSoquw0", "W4nuurdcHe4QlmoQWQzVWQiTW4FcOq", "W6ngW5DFf8oP", "orqICq", "WQtcRuvdWODFWQjczComfsTftNWHwZa", "WP4hffjTW5yxy8k0WPy", "qvf3WRGJimkeW5RdIda", "cMzQvSoqW5S", "W4RcTSkSiNBcH8oVW6FdLmoNWQOm", "c8oiW6SiWR5FuxVcRCkG", "W4hcKGFdR8kryhRdNCkolmkHWPnqWPa", "xuP7WRaKimke", "lSoeW6/dOmkvWRTrA8oaW5TbWR/dRCkO", "gWKKWOW1i8ktW5ldUa", "vw/dN3jYWRyZWRHXWOr2eCkBAa", "W6H4WOHS", "WOuCbLr3W4qTBW", "BZ3cTrnwdmo+DZ3cGetdVq", "WQ/cISoyW6FcPCo7WO8VW5jB", "evlcSKjIW7RcPmorWQWJ", "adJcNd0RW7rWW4yY", "W6/cOSkJC8oxseOpheBdImoo", "lSoMg8k/jCo/gSoYcCkiW5GKECkf", "xmkUvMZdJSk6WO/dGmofWRbZCN7dPJu7", "c2uXW6S9Fmo8", "WOBcHCkWW6ZcMmoCWPq9WP/cO8k5WPmrW78", "owZcSwb/W6FcPCo6WPy", "WRKXW6W", "bSoiW7JdPmksWQrhg8oxW4PFWQldUSkPW7Pzj27cOW", "w8kfcM3cTSkWn1y", "W7Lind7cM8kiW799na84", "WRxcVSkaor4Z", "la81AGCPWOldTq", "wCoxWRPrW51CW5fM", "gW3dQ8kOW4LEz29yWObsW5tdJqLsksxcOwi", "W7xcPmkWDSkzCgenf0BdNSozW5y0A0u", "WRyUW75mzSkaW5a6", "amoiW7eRWQ9d", "W6LclHtcM8kmW4LNkbGweSo5", "l8ozW7JdPmkmWQnlvmoCW4e", "bhbqDSoN", "nLfwWOH1WPRcTCoBtwT0W5DjgculxsX2WQ/cVmkYyCoYW4m", "W5zoot3cNmkCW4KPnriPv8o2W7RcOt8IySoKEu/cNSoFE1OFW50Oja", "EJFcVXHspmoYBdlcMG", "WR/dGSoOW6DnaCkeW6LrAt40", "jGFcV8kiW4LEz29yWOa5W4hdHG", "W7TmW7vxamoGkW3cICowuSkBCSkFmMPmza", "W6xcSSkKigVcP8oRW6FdKa", "W4dcOmk+D8oqt20", "jqGYFd4ZWPpdLSoWWPm", "WQvQW7hcHCo3mGtdIJdcSa", "WOOwawjSW4WSBSkeWP8iFa", "EmoVkdXsWOhdSSkeWPK", "jGRcRSkHW5rfBG", "WR0BWO1GeCoNespcOq", "WPP/W7XBWROPiqRdH8o9W4hcHmk8W5xdThyPWO/dTa", "BZ3cSXblo8o+", "i8k8wgxdLmo+WOddM8ou", "eKhcQhn8", "W5qtm3a", "rL1TWPS/pmkm", "W4RdJSocBSklfW", "WQ5MW6BcOSoSka3dPrhcQmopWOC", "osatW6xcQcT0WPepAJa", "WQhdVYlcHSolWOq", "jCkXFMqpW5JcPmofWQNdKSkEWPyLxW", "AmkAcgtcSCkNm0C4", "yxDmWRpdRtO", "W4D9WOLTCSkE", "W7TbvZVcN1m", "buzBWPfLWR3cTW", "e3OdkrhcQW", "W4nuurBcLfmNiCoqWRa", "DIVcVmkWW6nXjxvLW4C", "vCknb2BcVCkXaKe0WOqqW4dcNG", "xsVdPmo3WQpcV3akW6uacvFdOSkd", "W57cOCkXlwVcR8o5", "pgnfvCoDW5ODW6mh", "fsH2EG", "b3CsbWdcQNtdJXpcLHpdQ8oFWRNdO8ogW6i1W6S", "WPtcG2RcGq", "W48HWQj5WQ01nH7dUW", "vaFdUgTzW4lcICo2WRG", "F2xcI3D0WRCHWOfTWP44fSkoACogF3mMu1W", "WP1ZW4ddMWNdRgFdHx1rWQtcKH0", "W6CjlxvIW5m7WRP1", "tavZuW", "fJHXwxm7", "W5xdQruEW4nhWQvfCmoxCW", "usddVbHAomoYCt3cNuhdOCoT", "WOpcGCkWW6FcJ8opWRaQWRJcOSkPWPm8", "lmoXcSk7nSo2", "WO4Agq51W500B8kLWPyp", "WRdcM8oxW7lcPCoG", "W5ydjg10W5G", "i8kvsxVdKSoUWO7dSmoU", "sv1GWRWKp8ksW4hdNYddLCkvW6ng", "W6HgW418bSo1jGhcOCoe", "WOxcHCkQW6JcG8orWPmiWQpcPCkZWOi9W78", "W58XWOJcNJ/dOvVdULXh", "dc5azhCU", "jSoMaCk5omo7", "WRNcKmop", "dc5tC3ORWRW", "wH1Twf/cUbRcTWPUW6RcP0C", "ztRcRmk8W6CL", "xSkvWQSuWQLnzLNcRq"];
return (U = function() {
return t2;
})();
}
function q(t2, e2) {
const n2 = U();
return q = function(e3, r2) {
let o2 = n2[e3 -= 466];
if (void 0 === q.SNvjyU) {
const e4 = function(t3, e5) {
let n3, r3, o3 = [], s3 = 0, i3 = "";
for (t3 = function(t4) {
let e6 = "", n4 = "";
for (let n5, r4, o4 = 0, s4 = 0; r4 = t4.charAt(s4++); ~r4 && (n5 = o4 % 4 ? 64 * n5 + r4 : r4, o4++ % 4) ? e6 += String.fromCharCode(255 & n5 >> (-2 * o4 & 6)) : 0) r4 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r4);
for (let t5 = 0, r4 = e6.length; t5 < r4; t5++) n4 += "%" + ("00" + e6.charCodeAt(t5).toString(16)).slice(-2);
return decodeURIComponent(n4);
}(t3), r3 = 0; r3 < 256; r3++) o3[r3] = r3;
for (r3 = 0; r3 < 256; r3++) s3 = (s3 + o3[r3] + e5.charCodeAt(r3 % e5.length)) % 256, n3 = o3[r3], o3[r3] = o3[s3], o3[s3] = n3;
r3 = 0, s3 = 0;
for (let e6 = 0; e6 < t3.length; e6++) r3 = (r3 + 1) % 256, s3 = (s3 + o3[r3]) % 256, n3 = o3[r3], o3[r3] = o3[s3], o3[s3] = n3, i3 += String.fromCharCode(t3.charCodeAt(e6) ^ o3[(o3[r3] + o3[s3]) % 256]);
return i3;
};
q.kHWGoo = e4, t2 = arguments, q.SNvjyU = true;
}
const s2 = e3 + n2[0], i2 = t2[s2];
return i2 ? o2 = i2 : (void 0 === q.CWzrYc && (q.CWzrYc = true), o2 = q.kHWGoo(o2, r2), t2[s2] = o2), o2;
}, q(t2, e2);
}
function J(t2, e2, n2, r2, o2) {
return q(t2 - -904, n2);
}
function K(t2, e2, n2, r2, o2) {
return q(o2 - 141, r2);
}
!function() {
const t2 = "d$Kf", e2 = 691, n2 = 91, r2 = "2868", o2 = 569, s2 = "7jbf", i2 = 968, a2 = 650, l2 = 623, c2 = "LA*E", h2 = 117, d2 = 532, u2 = 24, g2 = 74;
function m2(t3, e3, n3, r3, o3) {
return q(r3 - -407, n3);
}
function f2(t3, e3, n3, r3, o3) {
return q(r3 - -1e3, t3);
}
function p2(t3, e3, n3, r3, o3) {
return q(r3 - g2, e3);
}
function _2(t3, e3, n3, r3, o3) {
return q(n3 - u2, r3);
}
function S2(t3, e3, n3, r3, o3) {
return q(o3 - 326, t3);
}
const w2 = U();
for (; ; ) try {
if (829276 === -parseInt(p2(0, "uXkR", 0, 583)) / 1 * (parseInt(p2(0, t2, 0, e2)) / 2) + -parseInt(m2(0, 0, "^qeP", n2)) / 3 * (parseInt(p2(0, r2, 0, o2)) / 4) + -parseInt(m2(0, 0, "6i2C", 103)) / 5 + parseInt(S2(s2, 0, 0, 0, i2)) / 6 * (parseInt(f2("2868", 0, 0, -390)) / 7) + -parseInt(p2(0, "C6R)", 0, a2)) / 8 + -parseInt(_2(0, 0, l2, c2)) / 9 * (parseInt(m2(0, 0, "##Gq", h2)) / 10) + -parseInt(_2(0, 0, d2, "QlI0")) / 11 * (-parseInt(f2("!A7N", 0, 0, -514)) / 12)) break;
w2.push(w2.shift());
} catch (t3) {
w2.push(w2.shift());
}
}();
const X = () => {
const t2 = 1354, e2 = 1395, n2 = "1I)J", r2 = ")qFJ";
if (typeof window === s2(1286, 1161, "OmU7", 1190, 1200)) return window[s2(t2, 1365, "qI2G", 1349, e2)][i2(-139, -62, n2)];
function s2(t3, e3, n3, r3, o2) {
return q(o2 - 730, n3);
}
function i2(t3, e3, n3, r3, o2) {
return q(t3 - -666, n3);
}
return o[i2(-115, 0, r2)]();
}, Y = () => {
const t2 = 1344;
return X()[e2 = "!A7N", n2 = 794, q(n2 - 157, e2)](q(t2 - 781, "C6R)")) || X() === q(415 - -116, "7jbf");
var e2, n2;
};
function Q(t2, e2, n2, r2, o2) {
return q(e2 - 253, t2);
}
const Z = (t2) => {
const e2 = "nOdw", n2 = 629, r2 = "A!0W", s2 = "nCNx", i2 = 516, a2 = "OmU7", l2 = 1219, c2 = "JOf5", h2 = 586, d2 = 667;
let u2 = o[p2(630, "1I)J")];
function g2(t3, e3, n3, r3, o2) {
return q(t3 - 5, e3);
}
if (Y() || o[p2(665, ")qFJ")]()) {
const t3 = P[g2(623, e2)](), o2 = new Date(t3), c3 = /* @__PURE__ */ new Date(), h3 = 864e5;
Math[p2(n2, r2)]((c3[p2(806, s2)]() - o2[g2(i2, "p]Yg")]()) / h3) >= 120 && (u2 = [(m2 = a2, f2 = l2, q(f2 - d2, m2))]);
} else u2 = [];
var m2, f2;
function p2(t3, e3, n3, r3, o2) {
return q(t3 - 147, e3);
}
function _2(t3, e3, n3, r3, o2) {
return q(t3 - h2, r3);
}
return { licensee: () => _2(1101, 0, 0, "LA*E"), expiration: () => null, domains: () => [X()], developerCount: () => 1, cpuCount: () => 0, type: () => g2(477, "9VZb"), isEval: () => true, exceptions: () => u2, isValidFor: () => 0 === u2[_2(1060, 0, 0, "NbSG")], isValid: () => false, features: () => Object[_2(1188, 0, 0, "qI2G")]({}), keyFrom: () => t2, getBuildVersion: P[g2(480, c2)], getBuildDate: P[_2(1148, 0, 0, "1I)J")] };
}, tt = { promise: null, details: null, bannerPrinted: false, detailsPrinted: false, licenseKey: null, keyFrom: null };
function et(t2, e2, n2, r2, o2) {
return q(n2 - -756, t2);
}
let nt = false, rt = false;
const ot = at("1I)J", 1356, 1339, 1352, 1432)[Q("NbSG", 734)]("")[at("9VZb", 1391, 1333, 1356, 1434)]((t2, e2) => e2 + t2, "");
class st {
constructor() {
const t2 = "!A7N", e2 = 467;
var n2, r2, o2, s2, i2, a2, l2;
this[i2 = 134, a2 = 64, l2 = "Wn[A", at(l2, i2 - 292, a2 - 320, l2 - 173, i2 - -1301)][n2 = -132, r2 = t2, o2 = -245, s2 = -171, at(r2, n2 - e2, r2 - 449, o2 - 244, s2 - -1499)] = null;
}
async [K(0, 0, 0, "z(dt", 690)](t2, e2 = false) {
const n2 = 36, r2 = "1I)J", s2 = 887, i2 = 814, a2 = "LA*E", l2 = 776, c2 = "wvfQ", h2 = 727, d2 = "QlI0", u2 = 795, g2 = "2868", m2 = "esxO", f2 = 49, p2 = "yK&N", _2 = 48, S2 = "A!0W", w2 = 67, y2 = "VOEF", E2 = "WWj8", C2 = 87, b2 = "dRzh", v2 = 802, x2 = "kBqj", I2 = 878, R2 = "CJpR", A2 = "tdMk", M2 = "!A7N", N2 = "OmU7", T2 = 114, k2 = 45;
function F2(t3, e3, n3, r3, o2) {
return K(0, 0, 0, n3, e3 - -842);
}
if (!t2 || t2[B2("nCNx", -60, -54)](B2("^qeP", n2, 33)) || t2[O2(856, 844, r2, s2, i2)](P2(-79, a2, -35, -4)) || t2[O2(l2, 745, c2, h2, 783)](B2(d2, 87, -14)) || t2[D2(u2, 954, g2, 875)](B2(m2, 138, f2))) return nt = true, await this[B2(")qFJ", 88, 5)](true);
function O2(t3, e3, n3, r3, o2) {
return Q(n3, o2 - k2);
}
function D2(t3, e3, n3, r3, o2) {
return Q(n3, r3 - -38);
}
if (nt = false, !e2 && tt[P2(14, p2, 22, _2)]) {
const t3 = await this[P2(30, S2, 50, w2)]();
if (t3[D2(0, 0, ")qFJ", 707)]() && !t3[D2(0, 0, "kBqj", 834)]()) return t3;
}
tt[D2(0, 0, y2, 775)] = t2, tt[B2(E2, 53, C2)] = O2(0, 0, b2, 0, 854), tt[D2(0, 0, "(@by", v2)] = null, tt[D2(0, 0, "p]Yg", 774)] = null;
const L2 = await this[B2("uXkR", -23, -117)]();
if (!L2[F2(0, -87, "tdMk")]()) throw await this[P2(-41, x2, -57, 4)](true), new Error(D2(0, 0, "VYKu", I2));
function B2(t3, e3, n3, r3, o2) {
return K(0, 0, 0, t3, n3 - -724);
}
function P2(t3, e3, n3, r3, o2) {
return at(e3, e3 - T2, n3 - 311, r3 - 468, t3 - -1376);
}
if (o[B2(R2, 0, 58)]()) {
await V[F2(0, -103, A2)](t2, e2);
if (!(await this[P2(21, "Wn[A", -59, -42)]())[P2(-51, "##Gq", 9, -16)]()) throw await this[F2(0, -126, M2)](true), new Error(F2(0, -77, N2));
}
return L2;
}
async [et("qI2G", 0, -118)](t2 = false) {
const e2 = 151, n2 = "OmU7", r2 = 251, s2 = 96, i2 = 155, a2 = "QlI0", l2 = 141, c2 = 420, h2 = 490, d2 = "OmU7", u2 = 460, g2 = 526, m2 = "##Gq", f2 = 339, p2 = 269, _2 = 453, S2 = "8Srj", w2 = "##Gq", y2 = "#ra[", E2 = 295, C2 = "p]Yg", b2 = 363, v2 = 480, x2 = 525, I2 = 552, R2 = "nCNx", A2 = "VYKu", M2 = 410, N2 = "dRzh", T2 = "VaPF", k2 = 282, F2 = 444, O2 = 274, D2 = "z(dt", L2 = "7jbf", B2 = 340, z2 = 351, W2 = 290, H2 = 366, j2 = "wvfQ", U2 = "Gy]v", st2 = 446, it2 = "d$Kf", lt2 = 240, ct2 = 331, ht2 = 466, dt2 = "[^tn", ut2 = "(J]Y", gt2 = 254, mt2 = 75, ft2 = "NbSG", pt2 = 426, _t2 = 242, St2 = "WWj8", wt2 = 458, yt2 = 400, Et2 = 327, Ct2 = 448, bt2 = 711, vt2 = 761, xt2 = 411, It2 = 3;
if (tt[Nt2(64, 103, "QMwf", 196, 139)]) return tt[Nt2(e2, 333, n2, r2, 255)];
function Rt2(t3, e3, n3, r3, o2) {
return at(r3, e3 - 182, n3 - xt2, r3 - It2, t3 - -990);
}
function At2(t3, e3, n3, r3, o2) {
return J(r3 - 721, 0, t3);
}
if (!this[Nt2(s2, i2, a2, 52, l2)][Rt2(c2, h2, 515, d2)] && (this[Nt2(223, 182, "nCNx", 177, 265)][Ft2(u2, 541, g2, 464, "QlI0")] = new Error("FV")), tt[At2(m2, 0, 0, f2)]) return tt[Ft2(355, p2, _2, 262, "8Srj")];
let Mt2 = null;
function Nt2(t3, e3, n3, r3, o2) {
return Q(n3, o2 - -649);
}
tt[At2(S2, 0, 0, 384)] = new Promise((t3) => {
Mt2 = t3;
});
let Tt2, kt2 = null;
function Ft2(t3, e3, n3, r3, o2) {
return K(0, 0, 0, o2, t3 - -353);
}
const Ot2 = async (t3, e3) => {
function n3(t4, e4, n4, r3, o2) {
return Ft2(n4 - 369, 0, 0, 0, r3);
}
try {
const r3 = ((t4) => {
let e4 = t4;
const n4 = e4[e4.length - 1], r4 = n4.charCodeAt(0) - 52;
if (e4 = e4.substring(0, e4.length - 1), e4 = e4.split("").reverse().join(""), e4 = G(e4), e4 = e4.trim(), e4[e4.length - 1] !== n4) throw new Error();
e4 = e4.substring(0, e4.length - 1), e4 = $(e4, r4);
try {
e4.startsWith("{") || (e4 = "{" + e4);
const t5 = JSON.parse(e4), n5 = { licensee: t5.l, domains: t5.d, nodeId: t5.n, expiry: t5.e, developerCount: t5.dc, cpuCount: t5.cc, type: t5.t };
return t5.f && (n5.features = t5.f), n5;
} catch (t5) {
throw new Error("Invalid license key.");
}
})(e3), s3 = ((t4, e4, n4) => {
const r4 = 376, o2 = 126;
function s4(t5, e5, n5, r5, o3) {
return q(o3 - 1e3, n5);
}
function i3(t5, e5, n5, r5, o3) {
return q(o3 - -998, t5);
}
function a3(t5, e5, n5, r5, o3) {
return q(r5 - -131, n5);
}
return { licensee: () => t4[i3("A!0W", 0, 0, 0, -458)], expiration: () => new Date(t4[a3(0, 0, "##Gq", 338)]), domains: () => t4[a3(0, 0, "CJpR", 374)] ?? [], developerCount: () => t4[s4(0, 0, "uXkR", 0, 1630)] ?? 1, cpuCount: () => t4[i3("RbIb", 0, 0, 0, -451)] ?? 0, type: () => t4[s4(0, 0, "esxO", 0, 1597)] ?? i3("9VZb", 0, 0, 0, -402), exceptions: () => e4, isValidFor: (t5) => {
return !(e4?.[n5 = o2, r5 = "Gy]v", s4(0, 0, r5, 0, n5 - -1416)] > 0);
var n5, r5;
}, isValid: () => true, isEval: () => false, features: () => Object[a3(0, 0, "z(dt", 346)](t4[s4(0, 0, "hYmg", 0, 1544)] ?? {}), keyFrom: () => n4, getBuildVersion: P[s4(0, 0, "A!0W", 0, 1501)], getBuildDate: P[a3(0, 0, "RbIb", r4)] };
})(r3, await (async (t4) => {
const e4 = 1040, n4 = 1505, r4 = 1406, s4 = "6i2C", i3 = 982, a3 = 1444, l3 = "9VZb", c3 = 206, h3 = "#ra[", d3 = 1417, u3 = 237, g3 = "WWj8", m3 = "VOEF", f3 = 1397, p3 = 1414, _3 = "kBqj", S3 = 308, w3 = "#vX3", y3 = 214, E3 = "Wn[A", C3 = "QlI0", b3 = 274, v3 = "KfOy", x3 = 223, I3 = "uXkR", R3 = 393, A3 = 878, M3 = 844, N3 = t4[O3(-23, -4, -57, 66, "RbIb")], T3 = t4[O3(-201, -290, -154, -128, "nCNx")] ? new Date(t4[L3(1090, "p]Yg", e4)]) : null, k3 = t4[F3(n4, r4, 1363, 1416, s4)];
function F3(t5, e5, n5, r5, o2) {
return q(r5 - M3, o2);
}
function O3(t5, e5, n5, r5, o2) {
return q(t5 - -680, o2);
}
function D3(t5, e5, n5, r5, o2) {
return q(o2 - A3, t5);
}
function L3(t5, e5, n5, r5, o2) {
return q(n5 - R3, e5);
}
function B3(t5, e5, n5, r5, o2) {
return q(e5 - -320, o2);
}
const P2 = [];
if (T3 ? isNaN(T3) ? P2[O3(-110, 0, 0, 0, l3)](O3(-176, 0, 0, 0, "Wn[A")) : T3 < /* @__PURE__ */ new Date() && P2[B3(0, c3, 0, 0, "4uM7")](D3(h3, 0, 0, 0, d3) + T3[B3(0, u3, 0, 0, g3)]()) : P2[L3(0, "tdMk", i3)](F3(0, 0, 0, a3, "8Srj")), o[L3(0, "uXkR", 887)]()) {
if (!k3) return P2[O3(-166, 0, 0, 0, m3)](F3(0, 0, 0, f3, "z(dt")), P2;
const t5 = await V[D3("NbSG", 0, 0, 0, p3)]();
t5 !== k3 && P2[F3(0, 0, 0, 1435, _3)](B3(0, S3, 0, 0, w3) + k3 + B3(0, y3, 0, 0, E3) + t5);
} else {
if (Y()) return P2;
if (N3 && 0 !== N3[L3(0, C3, 1051)]) {
let t5 = false;
const e5 = X();
for (let n5 = 0; !t5 && n5 < N3[B3(0, 332, 0, 0, v3)]; n5++) t5 = e5[B3(0, x3, 0, 0, m3)](N3[n5]);
!t5 && P2[D3(w3, 0, 0, 0, 1523)](D3(I3, 0, 0, 0, 1362));
} else P2[O3(-9, 0, 0, 0, "QMwf")](B3(0, b3, 0, 0, "7jbf"));
}
return P2;
})(r3), t3);
return s3[n3(0, 0, bt2, "8Srj")]()[n3(0, 0, vt2, "nCNx")] > 0 && (Tt2 = s3), s3;
} catch (e4) {
Tt2 = ((t4) => {
function e5(t5, e6, n5, r4, o3) {
return q(e6 - -620, r4);
}
function n4(t5, e6, n5, r4, o3) {
return q(t5 - 453, o3);
}
return { licensee: () => null, expiration: () => null, domains: () => [], developerCount: () => 0, cpuCount: () => 0, type: () => n4(1089, 0, 0, 0, "7jbf"), exceptions: () => {
return [(e6 = "JOf5", r4 = 859, n4(r4 - -97, 0, 0, 0, e6) + t4 + "'")];
var e6, r4;
}, isValidFor: (t5) => false, isValid: () => false, isEval: () => false, features: () => Object[e5(0, 5, 0, "p]Yg")]({}), keyFrom: () => t4, getBuildVersion: P[e5(0, -108, 0, "[^tn")], getBuildDate: P[r3 = "yK&N", o2 = -302, q(o2 - -875, r3)] };
var r3, o2;
})(t3);
}
};
function Dt2(t3, e3, n3, r3, o2) {
return et(t3, 0, o2 - Ct2);
}
tt[Rt2(356, 383, 360, m2)] && (kt2 = await Ot2(tt[Ft2(359, 0, 0, 0, w2)], tt[At2(y2, 0, 0, E2)]));
let Lt2 = false;
if (nt && (Lt2 = true, kt2 = Z(At2(C2, 0, 0, b2))), !kt2) {
if (o[Rt2(v2, x2, I2, "CJpR")]()) {
if (!kt2) {
const t3 = process[Rt2(452, 530, 393, R2)], e3 = t3[At2(A2, 0, 0, 305)] || t3[Ft2(M2, 0, 0, 0, "##Gq")] || t3[At2(N2, 0, 0, 381)] || t3[Dt2(T2, 0, 0, 0, k2)];
e3 && (kt2 = await Ot2(At2("2868", 0, 0, F2), e3));
}
if (!kt2) {
const t3 = await V[Dt2(T2, 0, 0, 0, O2)]();
t3 && (kt2 = await Ot2(Nt2(0, 0, D2, 0, 145), t3));
}
!kt2 && (Lt2 = true);
} else {
if (!kt2) try {
const t3 = await fetch("./" + ot);
let e3 = null;
if (200 === t3[Dt2(L2, 0, 0, 0, B2)]) {
const n3 = (await t3[Rt2(328, 373, z2, "hYmg")]())[At2("RbIb", 0, 0, W2)]("\n");
for (let t4 = 0; !e3 && t4 < n3[Ft2(H2, 0, 0, 0, j2)]; t4++) {
const r3 = n3[t4][At2(U2, 0, 0, st2)]();
r3[Nt2(0, 0, "QMwf", 0, 84)]("#") || 0 === r3[Dt2(it2, 0, 0, 0, lt2)] || (e3 = r3);
}
}
if (e3) {
const t4 = Dt2("!A7N", 0, 0, 0, ct2) + ot + "')";
kt2 = await Ot2(t4, e3);
}
} catch (t3) {
}
!kt2 && Y() && (Lt2 = true);
}
}
if (!kt2 && Lt2 && (kt2 = Z(At2("wvfQ", 0, 0, ht2))), !kt2 && Tt2 && (kt2 = Tt2), !kt2 && (kt2 = { licensee: () => null, expiration: () => null, domains: () => [], developerCount: () => 0, cpuCount: () => 0, type: () => null, isEval: () => false, exceptions: () => [Ft2(333, 0, 0, 0, "dRzh")], isValidFor: (t3) => false, isValid: () => false, features: () => Object[Rt2(441, 438, 374, "qI2G")]({}), keyFrom: () => Dt2("(@by", 0, 0, 0, 315), getBuildVersion: P[Rt2(351, 408, 334, dt2)], getBuildDate: P[Nt2(0, 0, ut2, 0, gt2)] }), tt[Nt2(0, 0, "1I)J", 0, mt2)] = kt2, Mt2(kt2), t2) {
if (!(tt[Ft2(389, 0, 0, 0, ft2)] && tt[At2("NbSG", 0, 0, pt2)]) && (Lt2 || kt2[Dt2("#ra[", 0, 0, 0, _t2)]()[Rt2(352, 266, 378, St2)] > 0 || kt2[Rt2(473, wt2, yt2, "OmU7")]()?.pb)) {
if (rt) return void setTimeout(() => {
var t3, e3, n3;
this[t3 = "[^tn", e3 = 283, n3 = 198, Rt2(n3 - -221, e3 - 142, n3 - 73, t3)](false, false);
}, 8e3);
await this[Dt2("4uM7", 0, 0, 0, 271)](false, false);
}
}
return tt[Dt2("dRzh", 0, 0, 0, Et2)];
}
async [Q("Bo3R", 808)](t2) {
const e2 = "WWj8", n2 = "OmU7", r2 = 1096, o2 = "^qeP", s2 = "qI2G", i2 = 921, a2 = 473, l2 = 10, c2 = 77, h2 = 257;
function d2(t3, e3, n3, r3, o3) {
return K(0, 0, 0, r3, t3 - -748);
}
var u2, g2;
tt[u2 = 776, g2 = "lEu#", et(g2, 0, u2 - 1065)] = true;
const m2 = await this[f2 = e2, p2 = 325, et(f2, 0, p2 - a2)]();
var f2, p2, _2, S2, w2, y2;
function E2(t3, e3, n3, r3, o3) {
return J(e3 - i2, 0, t3);
}
return await V[_2 = n2, S2 = 1005, w2 = 1182, y2 = r2, at(_2, S2 - l2, w2 - c2, y2 - h2, y2 - -397)](t2), !tt[d2(-82, 0, 0, "7jbf")] && (m2[d2(-120, 0, 0, "Gy]v")]() || m2[E2(o2, 601)]()[E2(s2, 629)] > 0) && await this[E2("Wn[A", 643)](t2), Promise[E2("lEu#", 663)]();
}
async [J(-271, 0, "nCNx")](t2 = false, e2 = false, n2 = false) {
const r2 = 495, o2 = 522, s2 = "[^tn", i2 = "tdMk", a2 = 1123, l2 = 1381, c2 = "NbSG", h2 = 1546, d2 = 1598, u2 = "7jbf", g2 = "p]Yg", m2 = 1044, f2 = 575, p2 = 803, _2 = 1416;
tt[w2(624, 474, 525, "JOf5")] = true;
const S2 = await this[w2(517, r2, o2, s2)]();
function w2(t3, e3, n3, r3, o3) {
return at(r3, e3 - 447, n3 - 479, r3 - 97, n3 - -890);
}
function y2(t3, e3, n3, r3, o3) {
return J(o3 - _2, 0, t3);
}
function E2(t3, e3, n3, r3, o3) {
return et(o3, 0, e3 - p2);
}
function C2(t3, e3, n3, r3, o3) {
return et(o3, 0, t3 - 1720);
}
tt[E2(0, 632, 0, 0, "A!0W")] || !(S2[y2(i2, 0, 0, 0, a2)]() || S2[C2(1461, 1526, 1543, l2, c2)]()[C2(1626, h2, 1589, d2, u2)] > 0) ? await V[E2(0, f2, 0, 0, "8Srj")](S2, t2, e2, n2) : await this[y2(g2, 0, 0, 0, m2)](t2);
}
async [Q("z(dt", 922)](t2, e2) {
const n2 = 121, r2 = 211, s2 = "qI2G", i2 = "1I)J", a2 = 1482, l2 = 822, c2 = 1306, h2 = 1345, d2 = 1251, u2 = "Wn[A", g2 = 1119, m2 = 118, f2 = 50, p2 = 386, _2 = 331;
if (!t2 && (tt[w2(1557, "esxO", 1439, 1621, 1521)] || tt[y2(n2, 109, r2, s2)])) return;
function S2(t3, e3, n3, r3, o2) {
return at(e3, e3 - 117, n3 - _2, r3 - 12, r3 - -144);
}
function w2(t3, e3, n3, r3, o2) {
return at(e3, e3 - m2, n3 - f2, r3 - p2, o2 - 77);
}
function y2(t3, e3, n3, r3, o2) {
return Q(r3, t3 - -665);
}
function E2(t3, e3, n3, r3, o2) {
return J(t3 - g2, 0, e3);
}
tt[w2(0, i2, 1562, a2, 1549)] = true, tt[E2(l2, "##Gq")] = true, await this[y2(241, 0, 0, "kBqj")](t2);
const C2 = o[S2(0, "WWj8", 1235, c2)](), b2 = t2 || C2 ? console[E2(753, "RbIb")] : o[S2(0, "#vX3", h2, d2)];
C2 && b2(""), await this[E2(841, u2)](t2, e2), b2("");
}
[J(-384, 0, "d$Kf")]() {
return this[t2 = 1417, e2 = "(@by", et(e2, 0, t2 - 1615)]();
var t2, e2;
}
[K(0, 0, 0, "kBqj", 809)](t2) {
return this[e2 = 355, n2 = "VaPF", Q(n2, e2 - -538)](true, t2);
var e2, n2;
}
[K(0, 0, 0, "QlI0", 671)]() {
return tt[n2 = "tdMk", r2 = 716, J(r2 - 1120, 0, n2)] || tt[t2 = "#ra[", e2 = -278, J(e2 - 103, 0, t2)];
var t2, e2, n2, r2;
}
[J(-309, 0, "2868")](t2) {
rt = true;
}
async [K(0, 0, 0, "^qeP", 797)]() {
return this[t2 = 15, e2 = "d$Kf", et(e2, 0, t2 - 117)](true);
var t2, e2;
}
async [et("(@by", 0, -237)](t2, e2) {
const n2 = "nCNx", r2 = 123, o2 = 120;
function s2(t3, e3, n3, r3, o3) {
return J(r3 - 534, 0, n3);
}
const i2 = await this[s2(0, 0, n2, r2)]();
return await this[s2(0, 0, "nOdw", o2)](true, t2, e2), i2;
}
async [K(0, 0, 0, "&fYW", 785)]() {
var t2, e2;
return await V[t2 = 313, e2 = "##Gq", K(0, 0, 0, e2, t2 - -448)]();
}
}
const it = new st();
function at(t2, e2, n2, r2, o2) {
return q(o2 - 829, t2);
}
const lt = (t2, e2) => {
const n2 = [];
for (let r2 = 0; r2 < t2.length; r2++) {
const o2 = t2[r2];
n2.push({ x: o2.x + e2.x, y: o2.y + e2.y });
}
return n2;
}, ct = (t2, e2) => {
if (!t2) return { ...e2 };
if (!e2) return { ...t2 };
let n2 = Math.min(t2.x, e2.x), r2 = Math.min(t2.y, e2.y);
return { x: n2, y: r2, width: Math.max(t2.width + t2.x, e2.width + e2.x) - n2, height: Math.max(t2.height + t2.y, e2.height + e2.y) - r2 };
}, ht = (t2) => [{ x: t2.x, y: t2.y }, { x: t2.x + t2.width, y: t2.y }, { x: t2.x + t2.width, y: t2.y + t2.height }, { x: t2.x, y: t2.y + t2.height }], dt = (t2) => {
let e2 = Number.MAX_SAFE_INTEGER, n2 = Number.MAX_SAFE_INTEGER, r2 = Number.MIN_SAFE_INTEGER, o2 = Number.MIN_SAFE_INTEGER;
for (let s2 = 0; s2 < t2.length; s2++) {
let i2 = t2[s2];
e2 = Math.min(e2, i2.x), n2 = Math.min(n2, i2.y), r2 = Math.max(r2, i2.x), o2 = Math.max(o2, i2.y);
}
return { x: e2, y: n2, width: r2 - e2, height: o2 - n2 };
}, ut = (t2, e2, n2) => {
if (!n2) {
const e3 = dt(t2);
n2 = { x: e3.x + e3.width / 2, y: e3.y + e3.height / 2 };
}
t2 = lt(t2, { x: -n2.x, y: -n2.y });
const r2 = e2 * Math.PI / 180, o2 = Math.sin(r2), s2 = Math.cos(r2), i2 = [];
for (let e3 = 0; e3 < t2.length; e3++) {
const n3 = t2[e3], r3 = s2 * n3.x - o2 * n3.y, a2 = o2 * n3.x + s2 * n3.y;
i2.push({ x: r3, y: a2 });
}
return t2 = lt(i2, { x: n2.x, y: n2.y });
}, gt = (t2, e2, n2, r2, o2, s2, i2, a2, l2 = true) => {
if (t2 === n2 && e2 === r2 || o2 === i2 && s2 === a2) return false;
let c2 = (a2 - s2) * (n2 - t2) - (i2 - o2) * (r2 - e2);
if (0 === c2) return false;
let h2 = ((i2 - o2) * (e2 - s2) - (a2 - s2) * (t2 - o2)) / c2, d2 = ((n2 - t2) * (e2 - s2) - (r2 - e2) * (t2 - o2)) / c2;
return (!l2 || !(h2 < 0 || h2 > 1 || d2 < 0 || d2 > 1)) && { x: t2 + h2 * (n2 - t2), y: e2 + h2 * (r2 - e2) };
}, mt = (t2, e2, n2 = true) => gt(t2.p1.x, t2.p1.y, t2.p2.x, t2.p2.y, e2.p1.x, e2.p1.y, e2.p2.x, e2.p2.y, n2), ft = (t2) => ({ top: { p1: t2[0], p2: t2[1] }, left: { p1: t2[3], p2: t2[0] }, right: { p1: t2[1], p2: t2[2] }, bottom: { p1: t2[2], p2: t2[3] } }), pt = (t2, e2, n2) => {
let r2 = n2 * Math.PI / 180, o2 = Math.sin(r2), s2 = Math.cos(r2);
return { x: t2 * s2 - e2 * o2, y: t2 * o2 + e2 * s2 };
}, _t = (t2, e2) => {
let n2 = t2.p2.x - e2.x, r2 = t2.p2.y - e2.y;
const o2 = pt(n2, r2, 90);
n2 = o2.x + e2.x, r2 = o2.y + e2.y;
let s2 = t2.p1.x - e2.x, i2 = t2.p1.y - e2.y;
const a2 = pt(s2, i2, 90);
return s2 = a2.x + e2.x, i2 = a2.y + e2.y, { p1: { x: s2, y: i2 }, p2: { x: n2, y: r2 } };
}, St = Object.freeze(Object.defineProperty({ __proto__: null, angleToPoints: (t2, e2) => {
const n2 = (180 - t2) / 180 * Math.PI, r2 = Math.abs(e2.width * Math.sin(n2)) + Math.abs(e2.height * Math.cos(n2)), o2 = Math.sin(n2) * r2 / 2, s2 = Math.cos(n2) * r2 / 2, i2 = e2.width / 2, a2 = e2.height / 2;
return { x1: i2 - o2, y1: a2 - s2, x2: i2 + o2, y2: a2 + s2 };
}, boundsToPoints: ht, centerPoint: (t2) => ({ x: t2.width / 2 + t2.x, y: t2.height / 2 + t2.y }), clipToOuterRect: (t2, e2, n2 = 0) => {
if (n2 < 0 && (n2 += 360), n2 > 90 && n2 <= 180 ? n2 += 180 : n2 > 180 && n2 <= 270 && (n2 -= 180), 0 === n2 || 180 === n2) return { height: e2.height, width: e2.width };
if (90 === n2 || 270 === n2) return { height: e2.width, width: e2.height };
let r2 = ht({ ...e2, x: 0, y: 0 }), o2 = ht({ ...t2, x: 0, y: 0 });
o2 = lt(o2, { x: e2.width / 2 - t2.width / 2, y: e2.height / 2 - t2.height / 2 }), o2 = ut(o2, n2);
let s2 = ft(o2), i2 = ft(r2);
if (n2 > 90) {
const t3 = mt(s2.top, i2.top);
if (t3) {
const e4 = t3, n3 = mt(s2.bottom, i2.bottom, false) || o2[3];
o2[0] = mt(s2.top, _t(s2.bottom, n3), false) || o2[0], o2[1] = e4, o2[3] = n3, o2[2] = mt(s2.bottom, _t(s2.top, e4), false) || o2[2], s2 = ft(o2);
}
const e3 = mt(s2.top, i2.left);
if (e3) {
const t4 = e3, n3 = mt(s2.bottom, i2.right, false) || o2[2];
o2[0] = t4, o2[1] = mt(s2.top, _t(s2.bottom, n3), false) || o2[1], o2[3] = mt(s2.bottom, _t(s2.top, t4), false) || o2[3], o2[2] = n3;
}
} else if (n2 < 90) {
const t3 = mt(s2.top, i2.top);
if (t3) {
const e4 = t3, n3 = mt(s2.bottom, i2.bottom, false) || o2[2];
o2[0] = e4, o2[1] = mt(s2.top, _t(s2.bottom, n3), false) || o2[1], o2[3] = mt(s2.bottom, _t(s2.top, e4), false) || o2[3], o2[2] = n3, s2 = ft(o2);
}
const e3 = mt(s2.top, i2.right);
if (e3) {
const t4 = e3, n3 = mt(s2.bottom, i2.left, false) || o2[3];
o2[0] = mt(s2.top, _t(s2.bottom, n3), false) || o2[0], o2[1] = t4, o2[3] = n3, o2[2] = mt(s2.bottom, _t(s2.top, t4), false) || o2[2];
}
}
o2 = ut(o2, -n2);
const a2 = dt(o2);
return { width: a2.width, height: a2.height };
}, findIntersectMath: (t2, e2, n2, r2) => {
let o2 = gt(t2.x, t2.y, e2.x, e2.y, 5e4, 0, -5e4, 0);
return o2 && (n2 = Math.min(n2, o2.x), r2 = Math.max(r2, o2.x)), { min: n2, max: r2 };
}, leastSquaresSlopeAndIntercept: (t2) => {
let e2 = 0, n2 = 0, r2 = 0, o2 = 0, s2 = 0, i2 = 0, a2 = 0, l2 = t2.length;
if (0 === l2) return { m: 0, b: 0 };
if (1 === l2) return { m: 1, b: t2[0] };
for (let c3 = 0; c3 < l2; c3++) i2 = c3 + 1, a2 = t2[c3], null == a2 || isNaN(a2) || (e2 += i2, n2 += a2, o2 += i2 * i2, r2 += i2 * a2, s2++);
const c2 = (s2 * r2 - e2 * n2) / (s2 * o2 - e2 * e2);
return { m: c2, b: n2 / s2 - c2 * e2 / s2 };
}, minBoundingRect: dt, rotatePoints: ut, unionBounds: ct }, Symbol.toStringTag, { value: "Module" }));
class wt {
constructor(t2, e2, n2) {
this._root = xt, this._size = 0, this._maxNodeSize = n2 >= 4 ? Math.min(n2, 256) : 32, this._compare = e2 || wt.defaultComparator, t2 && this.setPairs(t2);
}
get size() {
return this._size;
}
get length() {
return this._size;
}
get isEmpty() {
return 0 === this._size;
}
clear() {
this._root = xt, this._size = 0;
}
forEach(t2, e2) {
return void 0 !== e2 && (t2 = t2.bind(e2)), this.forEachPair((e3, n2) => t2(n2, e3, this));
}
forEachPair(t2, e2) {
const n2 = this.minKey(), r2 = this.maxKey();
return this.forRange(n2, r2, true, t2, e2);
}
get(t2, e2) {
return this._root.get(t2, e2, this);
}
set(t2, e2, n2) {
this._root.isShared && (this._root = this._root.clone());
const r2 = this._root.set(t2, e2, n2, this);
return true === r2 || false === r2 ? r2 : (this._root = new Ct([this._root, r2]), true);
}
has(t2) {
return 0 !== this.forRange(t2, t2, true, void 0);
}
delete(t2) {
return 0 !== this.editRange(t2, t2, true, wt.DeleteRange);
}
with(t2, e2, n2) {
const r2 = this.clone();
return r2.set(t2, e2, n2) || n2 ? r2 : this;
}
withPairs(t2, e2) {
const n2 = this.clone();
return 0 !== n2.setPairs(t2, e2) || e2 ? n2 : this;
}
withKeys(t2, e2) {
const n2 = this.clone();
let r2 = false;
for (let e3 = 0; e3 < t2.length; e3++) r2 = n2.set(t2[e3], void 0, false) || r2;
return e2 && !r2 ? this : n2;
}
without(t2, e2) {
return this.withoutRange(t2, t2, true, e2);
}
withoutKeys(t2, e2) {
const n2 = this.clone();
return n2.deleteKeys(t2) || !e2