UNPKG

@sheetxl/sdk

Version:

SDK - A high-performance, embeddable spreadsheet engine.

2,459 lines 158 kB
/**
 * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.7.27
 *
 * (C) 2025-present SheetXL Inc. & Michael T. Ford
 * License: The license can be found at https://www.sheetxl.com/license.
 */
import { FormulaError as n, ScalarType as t, IRange as e } from "@sheetxl/primitives";
import { CommonUtils as r } from "@sheetxl/utils";
import { F as u, T as o } from "./index.mjs";
import a from "bessel";
import i from "jstat";
import { bahttext as l } from "bahttext";
const s = Object.freeze(Object.defineProperty({ __proto__: null, CUBEKPIMEMBER: function(n2, t2, e2, r2) {
}, CUBEMEMBER: function(n2, t2, e2) {
}, CUBEMEMBERPROPERTY: function(n2, t2, e2) {
}, CUBERANKEDMEMBER: function(n2, t2, e2, r2) {
}, CUBESET: function(n2, t2, e2, r2, u2) {
}, CUBESETCOUNT: function(n2) {
}, CUBEVALUE: function(n2, ...t2) {
} }, Symbol.toStringTag, { value: "Module" }));
const f = Object.freeze(Object.defineProperty({ __proto__: null, DAVERAGE: function(n2, t2, e2) {
}, DCOUNT: function(n2, t2, e2) {
}, DCOUNTA: function(n2, t2, e2) {
}, DGET: function(n2, t2, e2) {
}, DMAX: function(n2, t2, e2) {
}, DMIN: function(n2, t2, e2) {
}, DPRODUCT: function(n2, t2, e2) {
}, DSTDEV: function(n2, t2, e2) {
}, DSTDEVP: function(n2, t2, e2) {
}, DSUM: function(n2, t2, e2) {
}, DVAR: function(n2, t2, e2) {
}, DVARP: function(n2, t2, e2) {
} }, Symbol.toStringTag, { value: "Module" })), c = { NUMBER: 0, ARRAY: 1, BOOLEAN: 2, STRING: 3, RANGE_REF: 4, CELL_REF: 5, NUMBER_NO_BOOLEAN: 10 };
const m = new class {
  constructor() {
    this.Types = c, this.type2Number = { number: c.NUMBER, boolean: c.BOOLEAN, string: c.STRING, object: -1 };
  }
  flattenDeep(n2) {
    return Array.isArray(n2) || (console.log("flattenDeep invalid arg", n2), n2 = [n2]), n2.reduce((n3, t2) => Array.isArray(t2) ? n3.concat(this.flattenDeep(t2)) : n3.concat(t2), []);
  }
  acceptNumber(t2, e2 = true, r2 = true) {
    if (t2 instanceof n.Known) return t2;
    let u2;
    if ("number" == typeof t2) u2 = t2;
    else if ("boolean" == typeof t2) {
      if (!r2) throw n.BuiltIn.Value;
      u2 = Number(t2);
    } else if ("string" == typeof t2) {
      if (0 === t2.length) throw n.BuiltIn.Value;
      if (u2 = Number(t2), u2 != u2) throw n.BuiltIn.Value;
    } else if (t2?.isIRange) {
      const r3 = t2;
      if (e2) u2 = this.acceptNumber(r3.getValueAt(0, 0) ?? 0);
      else {
        if (1 !== r3.size) throw n.BuiltIn.Value;
        u2 = this.acceptNumber(r3.getValueAt(0, 0) ?? 0);
      }
    } else {
      if (!Array.isArray(t2)) throw new n.Value("Unknown type in FormulaHelpers.acceptNumber");
      if (e2) u2 = this.acceptNumber(t2[0][0]);
      else {
        if (1 !== t2[0].length) throw n.BuiltIn.Value;
        u2 = this.acceptNumber(t2[0][0]);
      }
    }
    return u2;
  }
  flattenParams(t2, e2, r2, u2, o2 = null, a2 = 1) {
    if (t2.length < a2) throw new n.NA(`Argument type ${e2} is missing.`);
    null == o2 && (o2 = e2 === c.NUMBER ? 0 : null == e2 ? null : ""), t2.forEach((n2) => {
      const { isCellRef: t3, isRangeRef: r3, isArray: a3 } = n2;
      let i2 = n2.value;
      const l2 = false, s2 = !(t3 || r3 || a3), f2 = { isLiteral: s2, isCellRef: t3, isRangeRef: r3, isArray: a3, isUnion: l2 };
      i2?.isIRange && (i2 = i2.getValues(), t3 && (i2 = i2[0][0])), s2 ? (n2 = n2.omitted ? o2 : this.accept(n2, e2, o2), u2(n2, f2)) : t3 ? u2(i2, f2) : (r3 || a3) && (n2 = this.flattenDeep(i2)).forEach((n3) => {
        u2(n3, f2);
      });
    });
  }
  accept(t2, e2 = null, r2 = void 0, u2 = true, o2 = false) {
    let a2 = false;
    if (t2 && (t2.isIRange || t2.value?.isIRange)) {
      const n2 = t2.value ?? t2;
      1 === n2.size || e2 !== c.ARRAY ? t2 = n2.getValueAt(0, 0) : (t2 = n2.getValueAt(), a2 = true);
    } else t2?.value && (a2 = t2.isArray, t2 = t2.value);
    if (Array.isArray(e2) && (e2 = e2[0]), null == t2) {
      if (void 0 === r2) throw new n.NA(`Argument type ${e2} is missing.`);
      return r2;
    }
    if (null == e2) return t2;
    if (t2 instanceof n.Known) throw t2;
    if (e2 === c.ARRAY) {
      if (Array.isArray(t2)) return u2 ? this.flattenDeep(t2) : t2;
      if (Array.isArray(t2.value)) for (let n2 = 0; n2 < t2.value.length; n2++) {
        null === t2.value[n2] && (t2.value[n2] = r2);
      }
      else {
        if (o2) return u2 ? [t2] : [[t2]];
        if (null === t2.value) return u2 ? [r2] : [[r2]];
      }
      throw n.BuiltIn.Value;
    }
    a2 && (t2 = t2[0][0]);
    const i2 = this.type(t2);
    if (e2 === c.STRING) t2 = i2 === c.BOOLEAN ? t2 ? "TRUE" : "FALSE" : `${t2}`;
    else if (e2 === c.BOOLEAN) {
      if (i2 === c.STRING) throw n.BuiltIn.Value;
      i2 === c.NUMBER && (t2 = Boolean(t2));
    } else if (e2 === c.NUMBER) t2 = this.acceptNumber(t2, false);
    else {
      if (e2 !== c.NUMBER_NO_BOOLEAN) throw n.BuiltIn.Value;
      t2 = this.acceptNumber(t2, false, false);
    }
    return t2;
  }
  type(n2) {
    if (n2.isIRange) return c.RANGE_REF;
    let t2 = this.type2Number[typeof n2];
    return -1 === t2 && (Array.isArray(n2) ? t2 = c.ARRAY : n2.ref && (t2 = n2.ref.from ? c.RANGE_REF : c.CELL_REF)), t2;
  }
}(), p = 864e5, N = new Date(Date.UTC(1900, 0, 1)), h = [void 0, 0, 1, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, 1, 2, 3, 4, 5, 6, 0], E = [void 0, [1, 2, 3, 4, 5, 6, 7], [7, 1, 2, 3, 4, 5, 6], [6, 0, 1, 2, 3, 4, 5], void 0, void 0, void 0, void 0, void 0, void 0, void 0, [7, 1, 2, 3, 4, 5, 6], [6, 7, 1, 2, 3, 4, 5], [5, 6, 7, 1, 2, 3, 4], [4, 5, 6, 7, 1, 2, 3], [3, 4, 5, 6, 7, 1, 2], [2, 3, 4, 5, 6, 7, 1], [1, 2, 3, 4, 5, 6, 7]], g = [void 0, [6, 0], [0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], void 0, void 0, void 0, [0], [1], [2], [3], [4], [5], [6]], I = /^\s*(\d\d?)\s*(:\s*\d\d?)?\s*(:\s*\d\d?)?\s*(pm|am)?\s*$/i, T = /^\s*((\d\d?)\s*([-/])\s*(\d\d?))([\d:.apm\s]*)$/i, d = /^\s*((\d\d?)\s*([-/])\s*(jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*))([\d:.apm\s]*)$/i, b = /^\s*((jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*)\s*([-/])\s*(\d\d?))([\d:.apm\s]*)$/i;
function M(n2) {
  let t2 = n2.getTime?.() ?? n2;
  const e2 = t2 > -22038912e5 ? 2 : 1;
  return Math.floor((t2 - N.getTime()) / 864e5) + e2;
}
function S(t2) {
  if (t2 instanceof Date) return { date: t2 };
  let e2, r2 = true;
  return isNaN(t2) ? (e2 = (function(n2) {
    const t3 = n2.match(I);
    if (!t3) return;
    const e3 = t3[2] ? t3[2] : ":00", r3 = t3[3] ? t3[3] : ":00", u2 = t3[4] ? " " + t3[4] : "", o2 = new Date(Date.parse(`1/1/1900 ${t3[1] + e3 + r3 + u2} UTC`));
    let a2 = /* @__PURE__ */ new Date();
    return a2 = new Date(Date.UTC(a2.getFullYear(), a2.getMonth(), a2.getDate(), a2.getHours(), a2.getMinutes(), a2.getSeconds(), a2.getMilliseconds())), new Date(Date.UTC(a2.getUTCFullYear(), a2.getUTCMonth(), a2.getUTCDate(), o2.getUTCHours(), o2.getUTCMinutes(), o2.getUTCSeconds(), o2.getUTCMilliseconds()));
  })(t2), e2 ? r2 = false : e2 = (function(n2) {
    const t3 = n2.match(T), e3 = n2.match(d), r3 = n2.match(b);
    return t3 ? n2 = t3[1] + t3[3] + (/* @__PURE__ */ new Date()).getFullYear() + t3[5] : e3 ? n2 = e3[1] + e3[3] + (/* @__PURE__ */ new Date()).getFullYear() + e3[5] : r3 && (n2 = r3[1] + r3[3] + (/* @__PURE__ */ new Date()).getFullYear() + r3[5]), new Date(Date.parse(`${n2} UTC`));
  })(t2)) : e2 = (function(t3) {
    if (t3 < 0) throw n.BuiltIn.Value;
    return t3 <= 60 ? new Date(N.getTime() + 864e5 * (t3 - 1)) : new Date(N.getTime() + 864e5 * (t3 - 2));
  })(t2 = Number(t2)), { date: e2, isDateGiven: r2 };
}
function A(n2) {
  return S(n2).date;
}
function R(n2, t2) {
  return n2.getUTCFullYear() === t2.getUTCFullYear() && n2.getUTCMonth() === t2.getUTCMonth() && n2.getUTCDate() === t2.getUTCDate();
}
function C(n2, t2, e2) {
  const r2 = u.fromOADate(n2), o2 = u.fromOADate(t2);
  if (e2 = e2.toLowerCase(), n2 > t2) return Number.NaN;
  const a2 = o2.getUTCFullYear() - r2.getUTCFullYear(), i2 = o2.getUTCMonth() - r2.getUTCMonth(), l2 = o2.getUTCDate() - r2.getUTCDate();
  let s2;
  switch (e2) {
    case "y":
      return s2 = i2 < 0 || 0 === i2 && l2 < 0 ? -1 : 0, s2 + a2;
    case "m":
      return s2 = l2 < 0 ? -1 : 0, 12 * a2 + i2 + s2;
    case "d":
      return Math.floor(o2.getTime() - r2.getTime()) / p;
    case "md":
      return r2.setUTCFullYear(o2.getUTCFullYear()), l2 < 0 ? r2.setUTCMonth(o2.getUTCMonth() - 1) : r2.setUTCMonth(o2.getUTCMonth()), Math.floor(o2.getTime() - r2.getTime()) / p;
    case "ym":
      return s2 = l2 < 0 ? -1 : 0, (s2 + 12 * a2 + i2) % 12;
    case "yd":
      return i2 < 0 || 0 === i2 && l2 < 0 ? r2.setUTCFullYear(o2.getUTCFullYear() - 1) : r2.setUTCFullYear(o2.getUTCFullYear()), Math.floor(o2.getTime() - r2.getTime()) / p;
  }
}
function O(n2, t2) {
  return Math.trunc(n2) - Math.trunc(t2);
}
function D(n2, t2, e2 = false) {
  const r2 = u.fromOADate(n2), o2 = u.fromOADate(t2);
  31 === r2.getUTCDate() && r2.setUTCDate(30), !e2 && r2.getUTCDate() < 30 && o2.getUTCDate() > 30 ? o2.setUTCMonth(o2.getUTCMonth() + 1, 1) : 31 === o2.getUTCDate() && o2.setUTCDate(30);
  const a2 = o2.getUTCFullYear() - r2.getUTCFullYear();
  return 30 * (o2.getUTCMonth() - r2.getUTCMonth()) + (o2.getUTCDate() - r2.getUTCDate()) + 12 * a2 * 30;
}
function y(n2) {
  const t2 = A(n2), e2 = new Date(Date.UTC(t2.getFullYear(), t2.getMonth(), t2.getDate())), r2 = e2.getUTCDay();
  e2.setUTCDate(e2.getUTCDate() + 4 - r2);
  const u2 = new Date(Date.UTC(e2.getUTCFullYear(), 0, 1));
  return Math.ceil(((e2.getTime() - u2.getTime()) / 864e5 + 1) / 7);
}
function w(t2, e2, r2 = 1, u2 = null) {
  if (t2 = A(t2), "1111111" === r2) throw n.BuiltIn.Value;
  if ("string" == typeof r2 && Number(r2).toString() !== r2) {
    if (7 !== r2.length) throw n.BuiltIn.Value;
    r2 = r2.charAt(6) + r2.slice(0, 6);
    const t3 = [];
    for (let n2 = 0; n2 < r2.length; n2++) "1" === r2.charAt(n2) && t3.push(n2);
    r2 = t3;
  } else {
    if ("number" != typeof r2) throw n.BuiltIn.Value;
    if (null == (r2 = g[r2])) throw n.BuiltIn.Num;
  }
  const o2 = [];
  null != u2 && m.flattenParams([u2], c.NUMBER, false, (n2) => {
    o2.push(A(n2));
  }), t2.setUTCDate(t2.getUTCDate() + 1);
  let a2 = 0;
  for (; a2 < e2; ) {
    let n2 = false;
    for (let e3 = 0; e3 < r2.length; e3++) if (r2[e3] === t2.getUTCDay()) {
      n2 = true;
      break;
    }
    if (!n2) {
      let n3 = false;
      for (let e3 = 0; e3 < o2.length; e3++) if (R(t2, o2[e3])) {
        n3 = true;
        break;
      }
      n3 || a2++;
    }
    t2.setUTCDate(t2.getUTCDate() + 1);
  }
  return M(t2) - 1;
}
function B(t2, e2, r2 = 0) {
  let o2 = u.fromOADate(t2), a2 = u.fromOADate(e2);
  if (o2 > a2) {
    const n2 = o2;
    o2 = a2, a2 = n2;
    const r3 = t2;
    t2 = e2, e2 = r3;
  }
  if ((r2 = Math.trunc(r2)) < 0 || r2 > 4) throw n.BuiltIn.Value;
  let i2 = o2.getUTCDate();
  const l2 = o2.getUTCMonth() + 1, s2 = o2.getUTCFullYear();
  let f2 = a2.getUTCDate();
  const c2 = a2.getUTCMonth() + 1, m2 = a2.getUTCFullYear();
  switch (r2) {
    case 0:
      return 31 === i2 && 31 === f2 ? (i2 = 30, f2 = 30) : 31 === i2 ? i2 = 30 : 30 === i2 && 31 === f2 && (f2 = 30), Math.abs(f2 + 30 * c2 + 360 * m2 - (i2 + 30 * l2 + 360 * s2)) / 360;
    case 1:
      if (m2 - s2 < 2) {
        const n2 = 1900 !== (p2 = s2) && 1 !== new Date(p2, 1, 29).getMonth() || 1900 === s2 ? 365 : 366;
        return O(e2, t2) / n2;
      }
      {
        const n2 = m2 - s2 + 1, r3 = new Date(m2 + 1, 0, 1), u2 = new Date(s2, 0, 1), o3 = (r3.getTime() - u2.getTime()) / 1e3 / 60 / 60 / 24 / n2;
        return O(e2, t2) / o3;
      }
    case 2:
      return Math.abs(O(e2, t2) / 360);
    case 3:
      return Math.abs(O(e2, t2) / 365);
    case 4:
      return Math.abs(f2 + 30 * c2 + 360 * m2 - (i2 + 30 * l2 + 360 * s2)) / 360;
  }
  var p2;
}
const U = Object.freeze(Object.defineProperty({ __proto__: null, DATE: function(n2, t2, e2) {
  return n2 < 0 || n2 >= 1e4 ? Number.NaN : (n2 < 1900 && (n2 += 1900), u.formatResults("Short Date"), u.toOADate(new Date(n2, t2 - 1, e2)));
}, DATEDIF: C, DATESTRING: function(t2) {
  return n.BuiltIn.NA;
}, DATEVALUE: function(t2) {
  try {
    const e2 = u.parseAsDateTime(t2);
    if (!e2) throw n.BuiltIn.Value;
    return Math.floor(e2);
  } catch (t3) {
    throw n.BuiltIn.Value;
  }
}, DAY: function(n2) {
  return A(n2).getUTCDate();
}, DAYS: O, DAYS360: D, EDATE: function(n2, t2) {
  return n2.setUTCMonth(n2.getUTCMonth() + t2), M(n2);
}, EOMONTH: function(n2, t2) {
  return n2.setUTCMonth(n2.getUTCMonth() + t2 + 1, 0), M(n2);
}, HOUR: function(n2) {
  return A(n2).getUTCHours();
}, ISOWEEKNUM: y, MINUTE: function(n2) {
  return A(n2).getUTCMinutes();
}, MONTH: function(n2) {
  return A(n2).getUTCMonth() + 1;
}, NETWORKDAYS: function(n2, t2, e2 = null) {
  let r2 = 1;
  if (n2 > t2) {
    r2 = -1;
    const e3 = n2;
    n2 = t2, t2 = e3;
  }
  const u2 = [];
  null !== e2 && m.flattenParams([e2], c.NUMBER, false, (n3) => {
    u2.push(A(n3));
  });
  let o2 = 0;
  for (; n2 <= t2; ) {
    if (0 !== n2.getUTCDay() && 6 !== n2.getUTCDay()) {
      let t3 = false;
      for (let e3 = 0; e3 < u2.length; e3++) if (R(n2, u2[e3])) {
        t3 = true;
        break;
      }
      t3 || o2++;
    }
    n2.setUTCDate(n2.getUTCDate() + 1);
  }
  return r2 * o2;
}, NETWORKDAYS_INTL: function(t2, e2, r2 = 1, u2 = null) {
  let o2 = 1;
  if ((t2 = A(t2)) > (e2 = A(e2))) {
    o2 = -1;
    const n2 = t2;
    t2 = e2, e2 = n2;
  }
  if ("1111111" === r2) return 0;
  if ("string" == typeof r2 && Number(r2).toString() !== r2) {
    if (7 !== r2.length) throw n.BuiltIn.Value;
    r2 = r2.charAt(6) + r2.slice(0, 6);
    const t3 = [];
    for (let n2 = 0; n2 < r2.length; n2++) "1" === r2.charAt(n2) && t3.push(n2);
    r2 = t3;
  } else {
    if ("number" != typeof r2) throw n.BuiltIn.Value;
    r2 = g[r2];
  }
  const a2 = [];
  null != u2 && m.flattenParams([u2], c.NUMBER, false, (n2) => {
    a2.push(A(n2));
  });
  let i2 = 0;
  for (; t2 <= e2; ) {
    let n2 = false;
    for (let e3 = 0; e3 < r2.length; e3++) if (r2[e3] === t2.getUTCDay()) {
      n2 = true;
      break;
    }
    if (!n2) {
      let n3 = false;
      for (let e3 = 0; e3 < a2.length; e3++) if (R(t2, a2[e3])) {
        n3 = true;
        break;
      }
      n3 || i2++;
    }
    t2.setUTCDate(t2.getUTCDate() + 1);
  }
  return o2 * i2;
}, NOW: function() {
  const n2 = /* @__PURE__ */ new Date(), t2 = M(Date.UTC(n2.getFullYear(), n2.getMonth(), n2.getDate(), n2.getHours(), n2.getMinutes(), n2.getSeconds(), n2.getMilliseconds())) + (3600 * n2.getHours() + 60 * n2.getMinutes() + n2.getSeconds()) / 86400;
  return u.markVolatile(), u.formatResults("Short Date Short Time"), t2;
}, SECOND: function(n2) {
  return A(n2).getUTCSeconds();
}, TIME: function(n2, t2, e2) {
  return n2 < 0 || n2 > 32767 || t2 < 0 || t2 > 32767 || e2 < 0 || e2 > 32767 ? Number.NaN : (u.formatResults("Medium Time"), (3600 * n2 + 60 * t2 + e2) / 86400);
}, TIMEVALUE: function(n2) {
  const t2 = A(n2);
  return (3600 * t2.getUTCHours() + 60 * t2.getUTCMinutes() + t2.getUTCSeconds()) / 86400;
}, TODAY: function() {
  u.formatResults("Short Date");
  const n2 = /* @__PURE__ */ new Date();
  return u.toOADate(new Date(n2.getFullYear(), n2.getMonth(), n2.getDate()));
}, WEEKDAY: function(t2, e2 = 1) {
  const r2 = A(t2).getUTCDay(), u2 = E[e2];
  if (!u2) throw n.BuiltIn.Num;
  return u2[r2];
}, WEEKNUM: function(n2, t2 = 1) {
  const e2 = A(n2);
  if (21 === t2) return y(n2);
  const r2 = h[t2], u2 = new Date(Date.UTC(e2.getUTCFullYear(), 0, 1)), o2 = u2.getUTCDay() < r2 ? 1 : 0;
  return Math.ceil(((e2.getTime() - u2.getTime()) / 864e5 + 1) / 7) + o2;
}, WORKDAY: function(n2, t2, e2 = null) {
  return w(n2, t2, 1, e2);
}, WORKDAY_INTL: w, YEAR: function(n2) {
  return A(n2).getUTCFullYear();
}, YEARFRAC: B }, Symbol.toStringTag, { value: "Module" }));
const L = Object.freeze(Object.defineProperty({ __proto__: null, BESSELI: function(n2, t2) {
  return (t2 = Math.trunc(t2)) < 0 ? Number.NaN : a.besseli(n2, t2);
}, BESSELJ: function(n2, t2) {
  return (t2 = Math.trunc(t2)) < 0 ? Number.NaN : a.besselj(n2, t2);
}, BESSELK: function(n2, t2) {
  return (t2 = Math.trunc(t2)) < 0 ? Number.NaN : a.besselk(n2, t2);
}, BESSELY: function(n2, t2) {
  return (t2 = Math.trunc(t2)) < 0 ? Number.NaN : a.bessely(n2, t2);
} }, Symbol.toStringTag, { value: "Module" })), _ = -512, v = (t2) => {
  const e2 = typeof t2;
  if ("boolean" === e2) return t2 ? 1 : 0;
  if ("number" === e2) {
    if (t2 < 0 || t2 > 281474976710655 || Math.floor(t2) !== t2) throw n.BuiltIn.Num;
    return t2;
  }
  if ("string" === e2) {
    let n2 = 0;
    try {
      n2 = 1 * t2;
    } catch (n3) {
    }
    if (Number.isFinite(n2)) return n2;
  }
  throw n.BuiltIn.Value;
};
function V(n2, t2) {
  if (n2 = v(n2), t2 = Math.trunc(t2), Math.abs(t2) > 53) return Number.NaN;
  const e2 = t2 >= 0 ? n2 * 2 ** t2 : Math.trunc(n2 / 2 ** -t2);
  return e2 > 281474976710655 ? Number.NaN : e2;
}
function P(t2, e2) {
  if (t2 < -549755813888 || t2 > 549755813888) throw n.BuiltIn.Num;
  if (t2 < 0) return (1099511627776 + t2).toString(16).toUpperCase();
  const r2 = parseInt(t2, 10).toString(16);
  if (void 0 === e2) return r2.toUpperCase();
  if ((e2 = Math.trunc(e2)) <= 0) throw n.BuiltIn.Num;
  if (e2 < r2.length) throw n.BuiltIn.Num;
  return "0".repeat(e2 - r2.length) + r2.toUpperCase();
}
function F(t2, e2) {
  if (t2 < -536870912 || t2 > 536870912) throw n.BuiltIn.Num;
  if (t2 < 0) return (t2 + 1073741824).toString(8);
  const r2 = parseInt(t2, 10).toString(8);
  if (void 0 === e2) return r2.toUpperCase();
  if ((e2 = Math.trunc(e2)) <= 0) throw n.BuiltIn.Num;
  if (e2 < r2.length) throw n.BuiltIn.Num;
  return "0".repeat(e2 - r2.length) + r2;
}
function x(n2) {
  if (!/^[0-9A-Fa-f]{1,10}$/.test(n2)) return Number.NaN;
  const t2 = parseInt(n2, 16);
  return t2 >= 549755813888 ? t2 - 1099511627776 : t2;
}
function H(t2) {
  if (t2.length > 10) throw n.BuiltIn.Num;
  for (const e3 of t2) if (e3 < "0" || e3 > "7") throw n.BuiltIn.Num;
  const e2 = parseInt(t2, 8);
  return e2 >= 536870912 ? e2 - 1073741824 : e2;
}
const G = Object.freeze(Object.defineProperty({ __proto__: null, BIN2DEC: function(n2) {
  const t2 = n2.toString();
  return t2.length > 10 ? Number.NaN : 10 === t2.length && "1" === t2.substring(0, 1) ? parseInt(t2.substring(1), 2) + _ : parseInt(t2, 2);
}, BIN2HEX: function(t2, e2) {
  const r2 = t2.toString();
  if (r2.length > 10) throw n.BuiltIn.Num;
  if (10 === r2.length && "1" === r2.substring(0, 1)) return (parseInt(r2.substring(1), 2) + 1099511627264).toString(16).toUpperCase();
  const u2 = parseInt(t2, 2).toString(16);
  if (void 0 === e2) return u2.toUpperCase();
  if (e2 < 0) throw n.BuiltIn.Num;
  if ((e2 = Math.trunc(e2)) >= u2.length) return ("0".repeat(e2 - u2.length) + u2).toUpperCase();
  throw n.BuiltIn.Num;
}, BIN2OCT: function(t2, e2) {
  let r2 = t2.toString();
  if (r2.length > 10) throw n.BuiltIn.Num;
  if (10 === r2.length && "1" === r2.substring(0, 1)) return (parseInt(r2.substring(1), 2) + 1073741312).toString(8);
  const u2 = parseInt(t2, 2).toString(8);
  if (void 0 === e2) return u2.toUpperCase();
  if (e2 < 0) throw n.BuiltIn.Num;
  if ((e2 = Math.trunc(e2)) >= u2.length) return "0".repeat(e2 - u2.length) + u2;
  throw n.BuiltIn.Num;
}, BITAND: function(n2, t2) {
  return (n2 = v(n2)) & (t2 = v(t2));
}, BITLSHIFT: V, BITOR: function(n2, t2) {
  return (n2 = v(n2)) | (t2 = v(t2));
}, BITRSHIFT: function(n2, t2) {
  return V(n2 = v(n2), -t2);
}, BITXOR: function(n2, t2) {
  return (n2 = v(n2)) ^ (t2 = v(t2));
}, DEC2BIN: function(t2, e2) {
  if (t2 < _ || t2 > 511) throw n.BuiltIn.Num;
  if (t2 < 0) return "1" + "0".repeat(9 - (512 + t2).toString(2).length) + (512 + t2).toString(2);
  const r2 = parseInt(t2, 10).toString(2);
  if (void 0 === e2) return r2;
  if ((e2 = Math.trunc(e2)) <= 0) throw n.BuiltIn.Num;
  if (e2 < r2.length) throw n.BuiltIn.Num;
  return "0".repeat(e2 - r2.length) + r2;
}, DEC2HEX: P, DEC2OCT: F, HEX2BIN: function(n2, t2) {
  if (n2.length > 10 || !/^[0-9a-fA-F]*$/.test(n2)) return Number.NaN;
  const e2 = 10 === n2.length && "f" === n2.substring(0, 1).toLowerCase(), r2 = e2 ? parseInt(n2, 16) - 1099511627776 : parseInt(n2, 16);
  if (r2 < _ || r2 > 511) return Number.NaN;
  if (e2) return "1" + "0".repeat(9 - (r2 + 512).toString(2).length) + (r2 + 512).toString(2);
  const u2 = r2.toString(2);
  return void 0 === t2 ? u2 : (t2 = Math.trunc(t2)) <= 0 || t2 < u2.length ? Number.NaN : "0".repeat(t2 - u2.length) + u2;
}, HEX2DEC: x, HEX2OCT: function(t2, e2) {
  if (t2.length > 10 || !/^[0-9a-fA-F]*$/.test(t2)) throw n.BuiltIn.Num;
  const r2 = x(t2);
  if (r2 > 536870911 || r2 < -536870912) throw n.BuiltIn.Num;
  return F(r2, e2);
}, OCT2BIN: function(t2, e2) {
  if (t2.length > 10) throw n.BuiltIn.Num;
  if (e2 > 10) throw n.BuiltIn.Num;
  if (void 0 !== e2 && e2 < 0) throw n.BuiltIn.Num;
  e2 = Math.trunc(e2);
  const r2 = 10 === t2.length && "7" === t2.substring(0, 1), u2 = H(t2);
  if (u2 < _ || u2 > 511) throw n.BuiltIn.Num;
  if (r2) return "1" + "0".repeat(9 - (512 + u2).toString(2).length) + (512 + u2).toString(2);
  const o2 = u2.toString(2);
  if (0 === e2) return o2;
  if (e2 < o2.length) throw n.BuiltIn.Num;
  return "0".repeat(e2 - o2.length) + o2;
}, OCT2DEC: H, OCT2HEX: function(n2, t2) {
  if (n2.length > 10) return Number.NaN;
  for (const t3 of n2) if (t3 < "0" || t3 > "7") return Number.NaN;
  if ((t2 = Math.trunc(t2)) < 0 || t2 > 10) return Number.NaN;
  const e2 = P(H(n2));
  return 0 === t2 ? e2 : t2 < e2.length ? Number.NaN : "0".repeat(t2 - e2.length) + e2;
} }, Symbol.toStringTag, { value: "Module" }));
const X = Object.freeze(Object.defineProperty({ __proto__: null, CONVERT: function(t2, e2, r2) {
  const u2 = [["a.u. of action", "?", null, "action", false, false, 105457168181818e-48], ["a.u. of charge", "e", null, "electric_charge", false, false, 160217653141414e-33], ["a.u. of energy", "Eh", null, "energy", false, false, 435974417757576e-32], ["a.u. of length", "a?", null, "length", false, false, 529177210818182e-25], ["a.u. of mass", "m?", null, "mass", false, false, 910938261616162e-45], ["a.u. of time", "?/Eh", null, "time", false, false, 241888432650516e-31], ["admiralty knot", "admkn", null, "speed", false, true, 0.514773333], ["ampere", "A", null, "electric_current", true, false, 1], ["ampere per meter", "A/m", null, "magnetic_field_intensity", true, false, 1], ["ångström", "Å", ["ang"], "length", false, true, 1e-10], ["are", "ar", null, "area", false, true, 100], ["astronomical unit", "ua", null, "length", false, false, 149597870691667e-25], ["bar", "bar", null, "pressure", false, false, 1e5], ["barn", "b", null, "area", false, false, 1e-28], ["becquerel", "Bq", null, "radioactivity", true, false, 1], ["bit", "bit", ["b"], "information", false, true, 1], ["btu", "BTU", ["btu"], "energy", false, true, 1055.05585262], ["byte", "byte", null, "information", false, true, 8], ["candela", "cd", null, "luminous_intensity", true, false, 1], ["candela per square metre", "cd/m?", null, "luminance", true, false, 1], ["coulomb", "C", null, "electric_charge", true, false, 1], ["cubic ångström", "ang3", ["ang^3"], "volume", false, true, 1e-30], ["cubic foot", "ft3", ["ft^3"], "volume", false, true, 0.028316846592], ["cubic inch", "in3", ["in^3"], "volume", false, true, 16387064e-12], ["cubic light-year", "ly3", ["ly^3"], "volume", false, true, 846786664623715e-61], ["cubic metre", "m3", ["m^3"], "volume", true, true, 1], ["cubic mile", "mi3", ["mi^3"], "volume", false, true, 416818182544058e-5], ["cubic nautical mile", "Nmi3", ["Nmi^3"], "volume", false, true, 6352182208], ["cubic Pica", "Pica3", ["Picapt3", "Pica^3", "Picapt^3"], "volume", false, true, 758660370370369e-22], ["cubic yard", "yd3", ["yd^3"], "volume", false, true, 0.764554857984], ["cup", "cup", null, "volume", false, true, 2365882365e-13], ["dalton", "Da", ["u"], "mass", false, false, 166053886282828e-41], ["day", "d", ["day"], "time", false, true, 86400], ["degree", "°", null, "angle", false, false, 0.0174532925199433], ["degrees Rankine", "Rank", null, "temperature", false, true, 0.555555555555556], ["dyne", "dyn", ["dy"], "force", false, true, 1e-5], ["electronvolt", "eV", ["ev"], "energy", false, true, 1.60217656514141], ["ell", "ell", null, "length", false, true, 1.143], ["erg", "erg", ["e"], "energy", false, true, 1e-7], ["farad", "F", null, "electric_capacitance", true, false, 1], ["fluid ounce", "oz", null, "volume", false, true, 295735295625e-16], ["foot", "ft", null, "length", false, true, 0.3048], ["foot-pound", "flb", null, "energy", false, true, 1.3558179483314], ["gal", "Gal", null, "acceleration", false, false, 0.01], ["gallon", "gal", null, "volume", false, true, 0.003785411784], ["gauss", "G", ["ga"], "magnetic_flux_density", false, true, 1], ["grain", "grain", null, "mass", false, true, 647989e-10], ["gram", "g", null, "mass", false, true, 1e-3], ["gray", "Gy", null, "absorbed_dose", true, false, 1], ["gross registered ton", "GRT", ["regton"], "volume", false, true, 2.8316846592], ["hectare", "ha", null, "area", false, true, 1e4], ["henry", "H", null, "inductance", true, false, 1], ["hertz", "Hz", null, "frequency", true, false, 1], ["horsepower", "HP", ["h"], "power", false, true, 745.69987158227], ["horsepower-hour", "HPh", ["hh", "hph"], "energy", false, true, 2684519538e-3], ["hour", "h", ["hr"], "time", false, true, 3600], ["imperial gallon (U.K.)", "uk_gal", null, "volume", false, true, 454609e-8], ["imperial hundredweight", "lcwt", ["uk_cwt", "hweight"], "mass", false, true, 50.802345], ["imperial quart (U.K)", "uk_qt", null, "volume", false, true, 0.0011365225], ["imperial ton", "brton", ["uk_ton", "LTON"], "mass", false, true, 1016.046909], ["inch", "in", null, "length", false, true, 0.0254], ["international acre", "uk_acre", null, "area", false, true, 4046.8564224], ["IT calorie", "cal", null, "energy", false, true, 4.1868], ["joule", "J", null, "energy", true, true, 1], ["katal", "kat", null, "catalytic_activity", true, false, 1], ["kelvin", "K", ["kel"], "temperature", true, true, 1], ["kilogram", "kg", null, "mass", true, true, 1], ["knot", "kn", null, "speed", false, true, 0.514444444444444], ["light-year", "ly", null, "length", false, true, 9460730472580800], ["litre", "L", ["l", "lt"], "volume", false, true, 1e-3], ["lumen", "lm", null, "luminous_flux", true, false, 1], ["lux", "lx", null, "illuminance", true, false, 1], ["maxwell", "Mx", null, "magnetic_flux", false, false, 1e-18], ["measurement ton", "MTON", null, "volume", false, true, 1.13267386368], ["meter per hour", "m/h", ["m/hr"], "speed", false, true, 27777777777778e-17], ["meter per second", "m/s", ["m/sec"], "speed", true, true, 1], ["meter per second squared", "m?s??", null, "acceleration", true, false, 1], ["parsec", "pc", ["parsec"], "length", false, true, 30856775814671900], ["meter squared per second", "m?/s", null, "kinematic_viscosity", true, false, 1], ["metre", "m", null, "length", true, true, 1], ["miles per hour", "mph", null, "speed", false, true, 0.44704], ["millimetre of mercury", "mmHg", null, "pressure", false, false, 133.322], ["minute", "?", null, "angle", false, false, 290888208665722e-18], ["minute", "min", ["mn"], "time", false, true, 60], ["modern teaspoon", "tspm", null, "volume", false, true, 5e-6], ["mole", "mol", null, "amount_of_substance", true, false, 1], ["morgen", "Morgen", null, "area", false, true, 2500], ["n.u. of action", "?", null, "action", false, false, 105457168181818e-48], ["n.u. of mass", "m?", null, "mass", false, false, 910938261616162e-45], ["n.u. of speed", "c?", null, "speed", false, false, 299792458], ["n.u. of time", "?/(me?c??)", null, "time", false, false, 128808866778687e-35], ["nautical mile", "M", ["Nmi"], "length", false, true, 1852], ["newton", "N", null, "force", true, true, 1], ["œrsted", "Oe ", null, "magnetic_field_intensity", false, false, 79.5774715459477], ["ohm", "Ω", null, "electric_resistance", true, false, 1], ["ounce mass", "ozm", null, "mass", false, true, 0.028349523125], ["pascal", "Pa", null, "pressure", true, false, 1], ["pascal second", "Pa?s", null, "dynamic_viscosity", true, false, 1], ["pferdestärke", "PS", null, "power", false, true, 735.49875], ["phot", "ph", null, "illuminance", false, false, 1e-4], ["pica (1/6 inch)", "pica", null, "length", false, true, 35277777777778e-17], ["pica (1/72 inch)", "Pica", ["Picapt"], "length", false, true, 0.00423333333333333], ["poise", "P", null, "dynamic_viscosity", false, false, 0.1], ["pond", "pond", null, "force", false, true, 980665e-8], ["pound force", "lbf", null, "force", false, true, 4.4482216152605], ["pound mass", "lbm", null, "mass", false, true, 0.45359237], ["quart", "qt", null, "volume", false, true, 946352946e-12], ["radian", "rad", null, "angle", true, false, 1], ["second", "?", null, "angle", false, false, 484813681109536e-20], ["second", "s", ["sec"], "time", true, true, 1], ["short hundredweight", "cwt", ["shweight"], "mass", false, true, 45.359237], ["siemens", "S", null, "electrical_conductance", true, false, 1], ["sievert", "Sv", null, "equivalent_dose", true, false, 1], ["slug", "sg", null, "mass", false, true, 14.59390294], ["square ångström", "ang2", ["ang^2"], "area", false, true, 1e-20], ["square foot", "ft2", ["ft^2"], "area", false, true, 0.09290304], ["square inch", "in2", ["in^2"], "area", false, true, 64516e-8], ["square light-year", "ly2", ["ly^2"], "area", false, true, 895054210748189e17], ["square meter", "m?", null, "area", true, true, 1], ["square mile", "mi2", ["mi^2"], "area", false, true, 2589988110336e-6], ["square nautical mile", "Nmi2", ["Nmi^2"], "area", false, true, 3429904], ["square Pica", "Pica2", ["Picapt2", "Pica^2", "Picapt^2"], "area", false, true, 1792111111111e-17], ["square yard", "yd2", ["yd^2"], "area", false, true, 0.83612736], ["statute mile", "mi", null, "length", false, true, 1609.344], ["steradian", "sr", null, "solid_angle", true, false, 1], ["stilb", "sb", null, "luminance", false, false, 1e-4], ["stokes", "St", null, "kinematic_viscosity", false, false, 1e-4], ["stone", "stone", null, "mass", false, true, 6.35029318], ["tablespoon", "tbs", null, "volume", false, true, 147868e-10], ["teaspoon", "tsp", null, "volume", false, true, 492892e-11], ["tesla", "T", null, "magnetic_flux_density", true, true, 1], ["thermodynamic calorie", "c", null, "energy", false, true, 4.184], ["ton", "ton", null, "mass", false, true, 907.18474], ["tonne", "t", null, "mass", false, false, 1e3], ["U.K. pint", "uk_pt", null, "volume", false, true, 56826125e-11], ["U.S. bushel", "bushel", null, "volume", false, true, 0.03523907], ["U.S. oil barrel", "barrel", null, "volume", false, true, 0.158987295], ["U.S. pint", "pt", ["us_pt"], "volume", false, true, 473176473e-12], ["U.S. survey mile", "survey_mi", null, "length", false, true, 1609.347219], ["U.S. survey/statute acre", "us_acre", null, "area", false, true, 4046.87261], ["volt", "V", null, "voltage", true, false, 1], ["watt", "W", null, "power", true, true, 1], ["watt-hour", "Wh", ["wh"], "energy", false, true, 3600], ["weber", "Wb", null, "magnetic_flux", true, false, 1], ["yard", "yd", null, "length", false, true, 0.9144], ["year", "yr", null, "time", false, true, 31557600]], o2 = { Yi: ["yobi", 80, 12089258196146292e8, "Yi", "yotta"], Zi: ["zebi", 70, 11805916207174113e5, "Zi", "zetta"], Ei: ["exbi", 60, 1152921504606847e3, "Ei", "exa"], Pi: ["pebi", 50, 1125899906842624, "Pi", "peta"], Ti: ["tebi", 40, 1099511627776, "Ti", "tera"], Gi: ["gibi", 30, 1073741824, "Gi", "giga"], Mi: ["mebi", 20, 1048576, "Mi", "mega"], ki: ["kibi", 10, 1024, "ki", "kilo"] }, a2 = { Y: ["yotta", 1e24, "Y"], Z: ["zetta", 1e21, "Z"], E: ["exa", 1e18, "E"], P: ["peta", 1e15, "P"], T: ["tera", 1e12, "T"], G: ["giga", 1e9, "G"], M: ["mega", 1e6, "M"], k: ["kilo", 1e3, "k"], h: ["hecto", 100, "h"], e: ["dekao", 10, "e"], d: ["deci", 0.1, "d"], c: ["centi", 0.01, "c"], m: ["milli", 1e-3, "m"], u: ["micro", 1e-6, "u"], n: ["nano", 1e-9, "n"], p: ["pico", 1e-12, "p"], f: ["femto", 1e-15, "f"], a: ["atto", 1e-18, "a"], z: ["zepto", 1e-21, "z"], y: ["yocto", 1e-24, "y"] };
  let i2, l2 = null, s2 = null, f2 = e2, c2 = r2, m2 = 1, p2 = 1;
  for (let n2 = 0; n2 < u2.length; n2++) i2 = null === u2[n2][2] ? [] : u2[n2][2], (u2[n2][1] === f2 || i2.indexOf(f2) >= 0) && (l2 = u2[n2]), (u2[n2][1] === c2 || i2.indexOf(c2) >= 0) && (s2 = u2[n2]);
  if (null === l2) {
    const n2 = o2[e2.substring(0, 2)];
    let t3 = a2[e2.substring(0, 1)];
    "da" === e2.substring(0, 2) && (t3 = ["dekao", 10, "da"]), n2 ? (m2 = n2[2], f2 = e2.substring(2)) : t3 && (m2 = t3[1], f2 = e2.substring(t3[2].length));
    for (let n3 = 0; n3 < u2.length; n3++) i2 = null === u2[n3][2] ? [] : u2[n3][2], (u2[n3][1] === f2 || i2.indexOf(f2) >= 0) && (l2 = u2[n3]);
  }
  if (null === s2) {
    const n2 = o2[r2.substring(0, 2)];
    let t3 = a2[r2.substring(0, 1)];
    "da" === r2.substring(0, 2) && (t3 = ["dekao", 10, "da"]), n2 ? (p2 = n2[2], c2 = r2.substring(2)) : t3 && (p2 = t3[1], c2 = r2.substring(t3[2].length));
    for (let n3 = 0; n3 < u2.length; n3++) i2 = null === u2[n3][2] ? [] : u2[n3][2], (u2[n3][1] === c2 || i2.indexOf(c2) >= 0) && (s2 = u2[n3]);
  }
  if (null === l2 || null === s2) throw n.BuiltIn.NA;
  if (l2[3] !== s2[3]) throw n.BuiltIn.NA;
  return t2 * l2[6] * m2 / (s2[6] * p2);
} }, Symbol.toStringTag, { value: "Module" }));
const Y = Object.freeze(Object.defineProperty({ __proto__: null, DELTA: function(n2, t2 = 0) {
  return n2 === t2 ? 1 : 0;
}, GESTEP: function(n2, t2 = 0) {
  return n2 >= t2 ? 1 : 0;
} }, Symbol.toStringTag, { value: "Module" }));
const k = Object.freeze(Object.defineProperty({ __proto__: null, ERF: function(n2, t2 = 0) {
  return i.erf(n2);
}, ERFC: function(n2) {
  return i.erfc(n2);
}, ERF_PRECISE: function(n2) {
  return i.erf(n2);
} }, Symbol.toStringTag, { value: "Module" })), z = /^\s?[+-]?\s?[0-9]+[.]?[0-9]*([eE][+-][0-9]+)?\s?$/, j = /^\s?([+-]?\s?([0-9]+[.]?[0-9]*([eE][+-][0-9]+)?)?)\s?[ij]\s?$/, W = /^\s?([+-]?\s?[0-9]+[.]?[0-9]*([eE][+-][0-9]+)?)\s?([+-]?\s?([0-9]+[.]?[0-9]*([eE][+-][0-9]+)?)?)\s?[ij]\s?$/, K = /^\s?[+-]?\s?$/;
function $(t2) {
  let e2 = 0, r2 = 0, u2 = "i";
  if ("number" == typeof t2) return { real: t2, im: r2, unit: u2 };
  if ("boolean" == typeof t2) throw n.BuiltIn.Value;
  let o2 = t2.match(z);
  if (o2) return e2 = Number(o2[0]), { real: e2, im: r2, unit: u2 };
  if (o2 = t2.match(j), o2) return r2 = Number(K.test(o2[1]) ? o2[1] + "1" : o2[1]), u2 = o2[0].slice(-1), { real: e2, im: r2, unit: u2 };
  if (o2 = t2.match(W), o2) return e2 = Number(o2[1]), r2 = Number(K.test(o2[3]) ? o2[3] + "1" : o2[3]), u2 = o2[0].slice(-1), { real: e2, im: r2, unit: u2 };
  throw n.BuiltIn.Num;
}
function q(t2, e2, r2 = "i") {
  if ("i" !== r2 && "j" !== r2) throw n.BuiltIn.Value;
  if (0 === t2 && 0 === e2) return 0;
  if (0 === t2) return 1 === e2 ? r2 : -1 === e2 ? "-" + r2 : e2.toString() + r2;
  if (0 === e2) return t2.toString();
  let u2 = e2 > 0 ? "+" : "";
  return 1 === e2 ? t2.toString() + u2 + r2 : -1 === e2 ? t2.toString() + u2 + "-" + r2 : t2.toString() + u2 + e2.toString() + r2;
}
function Q(n2) {
  const { real: t2, im: e2 } = $(n2);
  return Math.sqrt(Math.pow(t2, 2) + Math.pow(e2, 2));
}
function Z(n2) {
  const { real: t2, im: e2 } = $(n2);
  return 0 === t2 && 0 === e2 ? 1 / 0 : 0 === t2 && e2 > 0 ? Math.PI / 2 : 0 === t2 && e2 < 0 ? -Math.PI / 2 : t2 < 0 && 0 === e2 ? Math.PI : t2 > 0 && 0 === e2 ? 0 : t2 > 0 ? Math.atan(e2 / t2) : t2 < 0 && e2 > 0 ? Math.atan(e2 / t2) + Math.PI : Math.atan(e2 / t2) - Math.PI;
}
function J(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.cos(t2) * (Math.exp(e2) + Math.exp(-e2)) / 2, -Math.sin(t2) * (Math.exp(e2) - Math.exp(-e2)) / 2, r2);
}
function nn(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.cos(e2) * (Math.exp(t2) + Math.exp(-t2)) / 2, -(-Math.sin(e2) * (Math.exp(t2) - Math.exp(-t2)) / 2), r2);
}
function tn(t2, e2) {
  const r2 = $(t2), u2 = r2.real, o2 = r2.im, a2 = r2.unit, i2 = $(e2), l2 = i2.real, s2 = i2.im, f2 = i2.unit;
  if (0 === l2 && 0 === s2 || a2 !== f2) throw n.BuiltIn.Num;
  const c2 = a2, m2 = Math.pow(l2, 2) + Math.pow(s2, 2);
  return q((u2 * l2 + o2 * s2) / m2, (o2 * l2 - u2 * s2) / m2, c2);
}
function en(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.sin(t2) * (Math.exp(e2) + Math.exp(-e2)) / 2, Math.cos(t2) * (Math.exp(e2) - Math.exp(-e2)) / 2, r2);
}
function rn(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.cos(e2) * (Math.exp(t2) - Math.exp(-t2)) / 2, Math.sin(e2) * (Math.exp(t2) + Math.exp(-t2)) / 2, r2);
}
const un = Object.freeze(Object.defineProperty({ __proto__: null, COMPLEX: q, IMABS: Q, IMAGINARY: function(n2) {
  return $(n2).im;
}, IMARGUMENT: Z, IMCONJUGATE: function(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return 0 !== e2 ? q(t2, -e2, r2) : "" + t2;
}, IMCOS: J, IMCOSH: nn, IMCOT: function(n2) {
  return tn(J(n2), en(n2));
}, IMCSC: function(n2) {
  return tn("1", en(n2));
}, IMCSCH: function(n2) {
  return tn("1", rn(n2));
}, IMDIV: tn, IMEXP: function(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2), u2 = Math.exp(t2);
  return q(u2 * Math.cos(e2), u2 * Math.sin(e2), r2);
}, IMLN: function(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.log(Math.sqrt(Math.pow(t2, 2) + Math.pow(e2, 2))), Math.atan(e2 / t2), r2);
}, IMLOG10: function(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.log(Math.sqrt(Math.pow(t2, 2) + Math.pow(e2, 2))) / Math.log(10), Math.atan(e2 / t2) / Math.log(10), r2);
}, IMLOG2: function(n2) {
  const { real: t2, im: e2, unit: r2 } = $(n2);
  return q(Math.log(Math.sqrt(Math.pow(t2, 2) + Math.pow(e2, 2))) / Math.log(2), Math.atan(e2 / t2) / Math.log(2), r2);
}, IMPOWER: function(n2, t2) {
  const { unit: e2 } = $(n2), r2 = Math.pow(Q(n2), t2), u2 = Z(n2);
  return q(r2 * Math.cos(t2 * u2), r2 * Math.sin(t2 * u2), e2);
}, IMPRODUCT: function(...t2) {
  const e2 = t2.length;
  if (0 === e2) return 0;
  let r2 = t2[0];
  $(r2);
  for (let u2 = 1; u2 < e2; u2++) {
    const e3 = t2[u2], o2 = $(r2), a2 = $(e3);
    if (o2.unit !== a2.unit) throw n.BuiltIn.Value;
    const i2 = o2.real, l2 = o2.im, s2 = a2.real, f2 = a2.im;
    r2 = q(i2 * s2 - l2 * f2, i2 * f2 + l2 * s2);
  }
  return r2;
}, IMREAL: function(n2) {
  return $(n2).real;
}, IMSEC: function(n2) {
  return tn("1", J(n2));
}, IMSECH: function(n2) {
  return tn("1", nn(n2));
}, IMSIN: en, IMSINH: rn, IMSQRT: function(n2) {
  const { unit: t2 } = $(n2), e2 = Math.sqrt(Q(n2)), r2 = Z(n2);
  return q(e2 * Math.cos(r2 / 2), e2 * Math.sin(r2 / 2), t2);
}, IMSUB: function(t2, e2) {
  const r2 = $(t2), u2 = r2.real, o2 = r2.im, a2 = r2.unit, i2 = $(e2), l2 = i2.real, s2 = i2.im;
  if (a2 !== i2.unit) throw n.BuiltIn.Value;
  return q(u2 - l2, o2 - s2, a2);
}, IMSUM: function(...t2) {
  let e2, r2 = 0, u2 = 0;
  const o2 = t2.length;
  for (let a2 = 0; a2 < o2; a2++) {
    const o3 = t2[a2], { real: i2, im: l2, unit: s2 } = $(o3);
    if (e2 || (e2 = s2), e2 !== s2) throw n.BuiltIn.Value;
    r2 += i2, u2 += l2;
  }
  return q(r2, u2, e2);
}, IMTAN: function(n2) {
  return tn(en(n2), J(n2));
} }, Symbol.toStringTag, { value: "Module" })), on = 1e-7, an = (n2) => {
  const t2 = n2.getCurrencySymbol(), e2 = n2.getNumberGroupSeparator(), r2 = n2.getNumberDecimalSeparator();
  return `${t2}#${e2}##0${r2}00_);[Red](${t2}#${e2}##0${r2}00)`;
}, ln = (n2, t2) => {
  const e2 = t2.getFullYear() - n2.getFullYear();
  if (e2 > 1) return true;
  if (e2 < 1) return false;
  const r2 = t2.getMonth() - n2.getMonth();
  if (r2 > 0) return true;
  if (r2 < 0) return false;
  return t2.getDate() - n2.getDate() > 0;
};
function sn(n2) {
  return !(n2 < 1 || n2 > 4 || 3 === n2);
}
function fn(n2) {
  return !(n2 < 0 || n2 >= 2958466);
}
function cn(n2) {
  return !(n2 < 0 || n2 > 4);
}
function mn(n2, t2, e2, r2 = 0, o2 = 0) {
  let a2;
  if (0 === n2) a2 = r2 + e2 * t2;
  else {
    const u2 = Math.pow(1 + n2, t2);
    a2 = 1 === o2 ? r2 * u2 + e2 * (1 + n2) * (u2 - 1) / n2 : r2 * u2 + e2 * (u2 - 1) / n2;
  }
  return u.formatResults(an(u.getRuntime())), -a2;
}
function pn(t2, ...e2) {
  if (e2.length > 254) throw n.BuiltIn.Value;
  let r2 = 0;
  for (let n2 = e2.length - 1; n2 >= 0; n2--) {
    if (r2 += e2[n2], -1 === t2) {
      if (0 === r2) continue;
      return 1 / 0;
    }
    r2 /= 1 + t2;
  }
  return r2;
}
function Nn(n2, t2, e2, r2 = 0, o2 = 0) {
  if (0 === n2) return (-e2 - r2) / t2;
  o2 = o2 ? 1 : 0;
  const a2 = Math.pow(1 + n2, t2);
  return u.formatResults(an(u.getRuntime())), (r2 * n2 + e2 * n2 * a2) * (o2 ? 1 / (1 + n2) : 1) / (1 - a2);
}
const hn = Object.freeze(Object.defineProperty({ __proto__: null, ACCRINT: function(n2, t2, e2, r2, u2, o2, a2 = 0, i2 = true) {
  return fn(n2) && fn(t2) && fn(e2) && sn(o2) && !cn(a2) ? u2 * r2 * B(n2, e2, a2) : Number.NaN;
}, ACCRINTM: function(n2, t2, e2, r2, u2 = 0) {
}, AMORLINC: function(n2, t2, e2, r2, u2, o2, a2 = 0) {
}, COUPDAYBS: function(n2, t2, e2, r2 = 0) {
}, COUPDAYS: function(n2, t2, e2, r2 = 0) {
  if (1 === r2) {
    const r3 = (function(n3, t3, e3) {
      const r4 = new Date(t3);
      if (r4.setFullYear(n3.getFullYear()), r4 > n3) for (; r4 > n3; ) r4.setMonth(r4.getMonth() - Math.round(12 / e3));
      else {
        const t4 = new Date(r4);
        for (t4.setMonth(t4.getMonth() + Math.round(12 / e3)); t4 <= n3; ) r4.setTime(t4.getTime()), t4.setMonth(t4.getMonth() + Math.round(12 / e3));
      }
      return r4;
    })(u.fromOADate(n2), u.fromOADate(t2), e2), o3 = new Date(r3);
    return o3.setMonth(o3.getMonth() + Math.round(12 / e2)), C(u.toOADate(r3), u.toOADate(o3), "D");
  }
  let o2;
  switch (r2) {
    case 0:
    case 2:
    case 4:
      o2 = 360;
      break;
    case 3:
      o2 = 365;
      break;
    default:
      return Number.NaN;
  }
  return o2 / e2;
}, COUPNCD: function(n2, t2, e2, r2 = 0) {
}, COUPNUM: function(n2, t2, e2, r2 = 0) {
}, COUPPCD: function(n2, t2, e2, r2 = 0) {
}, CUMIPMT: function(n2, t2, e2, r2, u2, o2) {
  if (!fn(r2) || !fn(u2)) return Number.NaN;
  if (n2 <= 0 || t2 <= 0 || e2 <= 0) return Number.NaN;
  if (r2 < 1 || u2 < 1 || r2 > u2) return Number.NaN;
  if (0 !== o2 && 1 !== o2) return Number.NaN;
  const a2 = Nn(n2, t2, e2, 0, o2);
  let i2 = 0;
  1 === r2 && (0 === o2 && (i2 = -e2), r2++);
  for (let t3 = r2; t3 <= u2; t3++) i2 += 1 === o2 ? mn(n2, t3 - 2, a2, e2, 1) - a2 : mn(n2, t3 - 1, a2, e2, 0);
  return i2 *= n2, i2;
}, CUMPRINC: function(n2, t2, e2, r2, u2, o2) {
  if (!fn(r2) || !fn(u2)) return Number.NaN;
  if (r2 > u2) return Number.NaN;
  if (n2 <= 0 || t2 <= 0 || e2 <= 0) return Number.NaN;
  if (r2 < 1 || u2 < 1 || r2 > u2) return Number.NaN;
  if (0 !== o2 && 1 !== o2) return Number.NaN;
  const a2 = Nn(n2, t2, e2, 0, o2);
  let i2 = 0;
  1 === r2 && (i2 = 0 === o2 ? a2 + e2 * n2 : a2, r2++);
  for (let t3 = r2; t3 <= u2; t3++) i2 += o2 > 0 ? a2 - (mn(n2, t3 - 2, a2, e2, 1) - a2) * n2 : a2 - mn(n2, t3 - 1, a2, e2, 0) * n2;
  return i2;
}, DB: function(n2, t2, e2, r2, o2 = 12) {
  if (n2 < 0 || t2 < 0 || e2 < 0 || r2 < 0) return Number.NaN;
  if (o2 < 1 || o2 > 12) return Number.NaN;
  if (r2 > e2) return Number.NaN;
  if (t2 >= n2) return 0;
  const a2 = 1 - Math.pow(t2 / n2, 1 / e2), i2 = Math.round(1e3 * a2) / 1e3;
  if (u.formatResults(an(u.getRuntime())), 1 === r2) return n2 * i2 * o2 / 12;
  let l2 = n2 * i2 * o2 / 12;
  for (let u2 = 2; u2 <= r2; u2++) {
    if (u2 === r2 && r2 === e2) return Math.max(0, n2 - l2 - t2);
    const o3 = (n2 - l2) * i2;
    if (u2 === r2) return o3;
    l2 += o3;
  }
  return 0;
}, DDB: function(n2, t2, e2, r2, u2 = 2) {
  if (n2 < 0 || t2 < 0 || e2 < 0 || r2 < 0 || u2 <= 0) return Number.NaN;
  if (r2 > e2) return Number.NaN;
  if (t2 >= n2) return 0;
  let o2 = 0, a2 = 0;
  for (let i2 = 1; i2 <= r2; i2++) a2 = Math.min(u2 / e2 * (n2 - o2), n2 - t2 - o2), o2 += a2;
  return a2;
}, DISC: function(t2, e2, r2, u2, o2 = 0) {
  if (!fn(t2) || !fn(e2) || !cn(o2)) return Number.NaN;
  if (r2 <= 0 || u2 <= 0) return Number.NaN;
  if (t2 >= e2) throw n.BuiltIn.Value;
  let a2, i2;
  switch (o2) {
    case 0:
      a2 = 360, i2 = D(t2, e2, false);
      break;
    case 1:
    case 3:
      a2 = 365, i2 = C(t2, e2, "D");
      break;
    case 2:
      a2 = 360, i2 = C(t2, e2, "D");
      break;
    case 4:
      a2 = 360, i2 = D(t2, e2, true);
      break;
    default:
      return Number.NaN;
  }
  return (u2 - r2) / u2 * a2 / i2;
}, DOLLARDE: function(n2, t2) {
  if ((t2 = Math.trunc(t2)) < 0) return Number.NaN;
  if (t2 < 1) return 1 / 0;
  let e2 = n2;
  e2 += n2 % 1 * Math.pow(10, Math.ceil(Math.log(t2) / Math.LN10)) / t2;
  const r2 = Math.pow(10, Math.ceil(Math.log(t2) / Math.LN2) + 1);
  return e2 = Math.round(e2 * r2) / r2, e2;
}, DOLLARFR: function(n2, t2) {
  if ((t2 = Math.trunc(t2)) < 0) return Number.NaN;
  if (t2 < 1) return 1 / 0;
  let e2 = n2;
  return e2 += n2 % 1 * Math.pow(10, -Math.ceil(Math.log(t2) / Math.LN10)) * t2, e2;
}, DURATION: function(n2, t2, e2, r2, u2, o2 = 0) {
  if (!fn(n2) || !fn(t2) || !cn(o2)) return Number.NaN;
}, EFFECT: function(n2, t2) {
  return t2 = Math.trunc(t2), Math.pow(1 + n2 / t2, t2) - 1;
}, FV: mn, FVSCHEDULE: function(t2, e2) {
  let r2 = t2;
  for (const t3 of e2.values({ includeMistyped: true })) {
    if ("number" != typeof t3) throw n.BuiltIn.Value;
    r2 *= 1 + t3;
  }
  return r2;
}, INTRATE: function(n2, t2, e2, r2, o2 = 2) {
  return fn(n2) && fn(t2) && cn(o2) ? e2 <= 0 || r2 <= 0 || n2 >= t2 ? Number.NaN : e2 >= r2 ? 1 / 0 : ln(u.fromOADate(n2), u.fromOADate(t2)) ? Number.NaN : void 0 : Number.NaN;
}, IPMT: function(n2, t2, e2, r2, u2 = 0, o2 = 0) {
  const a2 = Nn(n2, e2, r2, u2, o2);
  return 1 === t2 ? n2 * (o2 ? 0 : -r2) : n2 * (o2 ? mn(n2, t2 - 2, a2, r2, o2) - a2 : mn(n2, t2 - 1, a2, r2, o2));
}, IRR: function(n2, t2 = 0.1) {
}, ISPMT: function(n2, t2, e2, r2) {
  return 0 === e2 ? 1 / 0 : r2 * n2 * (t2 / e2 - 1);
}, MDURATION: function(n2, t2, e2, r2, u2, o2 = 2) {
  if (!(fn(n2) && fn(t2) && sn(u2) && cn(o2))) return Number.NaN;
}, MIRR: function(n2, t2, e2) {
  let r2 = false, u2 = false;
  const o2 = [], a2 = [];
  for (const t3 of n2) t3 > 0 ? (r2 = true, o2.push(t3), a2.push(0)) : t3 < 0 ? (u2 = true, a2.push(t3), o2.push(0)) : (a2.push(0), o2.push(0));
  if (!r2 || !u2) return 1 / 0;
  const i2 = pn(e2, ...o2);
  if (i2 === 1 / 0) return i2;
  const l2 = pn(t2, ...a2);
  if (l2 === 1 / 0) return i2;
  const s2 = n2.length;
  return Math.pow(-i2 * Math.pow(1 + e2, s2) / l2 / (1 + t2), 1 / (s2 - 1)) - 1;
}, NOMINAL: function(n2, t2) {
  return t2 = Math.trunc(t2), (Math.pow(n2 + 1, 1 / t2) - 1) * t2;
}, NPER: function(n2, t2, e2, r2 = 0, u2 = 0) {
  return 0 === n2 ? 0 === t2 ? 1 / 0 : (-e2 - r2) / t2 : (u2 && (t2 *= 1 + n2), Math.log((t2 - r2 * n2) / (e2 * n2 + t2)) / Math.log(1 + n2));
}, NPV: pn, ODDFPRICE: function(n2, t2, e2, r2, u2, o2, a2, i2 = 0) {
  if (!(fn(n2) && fn(t2) && fn(e2) && fn(r2) && sn(a2) && cn(i2))) return Number.NaN;
}, ODDFYIELD: function(n2, t2, e2, r2, u2, o2, a2, i2 = 0) {
  if (!(fn(n2) && fn(t2) && fn(e2) && fn(r2) && sn(a2) && cn(i2))) return Number.NaN;
}, ODDLPRICE: function(n2, t2, e2, r2, u2, o2, a2, i2 = 0) {
  if (!(fn(n2) && fn(t2) && fn(e2) && sn(a2) && cn(i2))) return Number.NaN;
}, ODDLYIELD: function(n2, t2, e2, r2, u2, o2, a2, i2 = 0) {
  if (!(fn(n2) && fn(t2) && fn(e2) && sn(a2) && cn(i2))) return Number.NaN;
}, PDURATION: function(n2, t2, e2) {
  return (Math.log(e2) - Math.log(t2)) / Math.log(1 + n2);
}, PMT: Nn, PRICE: function(n2, t2, e2, r2, u2, o2, a2 = 0) {
  if (!(fn(n2) && fn(t2) && sn(o2) && cn(a2))) return Number.NaN;
}, PRICEDISC: function(t2, e2, r2, u2, o2 = 0) {
  if (!fn(t2) || !fn(e2) || !cn(o2)) return Number.NaN;
  if (r2 <= 0 || u2 <= 0) return Number.NaN;
  if (t2 >= e2) throw n.BuiltIn.Value;
  let a2, i2;
  switch (o2) {
    case 0:
      a2 = 360, i2 = D(t2, e2, false);
      break;
    case 1:
    case 3:
      a2 = 365, i2 = C(t2, e2, "D");
      break;
    case 2:
      a2 = 360, i2 = C(t2, e2, "D");
      break;
    case 4:
      a2 = 360, i2 = D(t2, e2, true);
      break;
    default:
      return Number.NaN;
  }
  return u2 - r2 * u2 * i2 / a2;
}, PRICEMAT: function(n2, t2, e2, r2, u2, o2 = 0) {
  if (!(fn(n2) && fn(t2) && fn(e2) && cn(o2))) return Number.NaN;
}, PV: function(n2, t2, e2, r2 = 0, o2 = 0) {
  return o2 = o2 ? 1 : 0, -1 === n2 ? 0 === t2 ? Number.NaN : 1 / 0 : (u.formatResults(an(u.getRuntime())), 0 === n2 ? -e2 * t2 - r2 : ((1 - Math.pow(1 + n2, t2)) * e2 * (1 + n2 * o2) / n2 - r2) / Math.pow(1 + n2, t2));
}, RATE: function(t2, e2, r2, u2 = 0, o2 = 0, a2 = 0.1) {
  if (a2 <= -1) throw n.BuiltIn.Value;
  o2 = o2 ? 1 : 0;
  let i2 = a2;
  0.1 === i2 && Math.abs(e2) > Math.abs(r2) / 10 && (i2 = 0.2);
  for (let n2 = 0; n2 < 20; n2++) {
    if (i2 <= -1) return Number.NaN;
    let n3 = 0;
    if (Math.abs(i2) < on) n3 = r2 * (1 + t2 * i2) + e2 * (1 + i2 * o2) * t2 + u2;
    else {
      const a4 = Math.pow(1 + i2, t2);
      n3 = r2 * a4 + e2 * (1 / i2 + o2) * (a4 - 1) + u2;
    }
    if (Math.abs(n3) < on) return i2;
    let a3 = 0;
    if (Math.abs(i2) < on) a3 = r2 * t2 + e2 * o2 * t2;
    else {
      const n4 = Math.pow(1 + i2, t2), u3 = t2 * Math.pow(1 + i2, t2 - 1);
      a3 = r2 * u3 + e2 * (1 / i2 + o2) * u3 + e2 * (-1 / (i2 * i2)) * (n4 - 1);
    }
    i2 -= n3 / a3;
  }
  return Number.NaN;
}, RECEIVED: function(n2, t2, e2, r2, u2 = 0) {
  if (!fn(n2) || !fn(t2) || !cn(u2)) return Number.NaN;
}, RRI: function(n2, t2, e2) {
  return 0 === t2 || e2 < 0 && t2 > 0 || e2 > 0 && t2 < 0 ? Number.NaN : Math.pow(e2 / e2, 1 / n2) - 1;
}, SLN: function(n2, t2, e2) {
  return (n2 - t2) / e2;
}, STOCKHISTORY: function(t2, e2, r2, u2 = 0, o2 = 1, a2 = [0, 1, 2, 3, 4]) {
  if (!fn(e2) || !fn(r2)) throw n.BuiltIn.Num;
}, SYD: function(n2, t2, e2, r2) {
  return r2 > e2 ? Number.NaN : (n2 - t2) * (e2 - r2 + 1) * 2 / (e2 * (e2 + 1));
}, TBILLEQ: function(n2, t2, e2) {
  if (!fn(n2) || !fn(t2)) return Number.NaN;
  if ((n2 = Math.round(n2)) >= (t2 = Math.round(t2)) || ln(u.fromOADate(n2), u.fromOADate(t2))) return Number.NaN;
  const r2 = 360 - e2 * (t2 - n2);
  return 0 === r2 ? 0 : r2 < 0 ? Number.NaN : 365 * e2 / r2;
}, TBILLPRICE: function(n2, t2, e2) {
  if (!fn(n2) || !fn(t2)) return Number.NaN;
  if ((n2 = Math.round(n2)) >= (t2 = Math.round(t2)) || ln(u.fromOADate(n2), u.fromOADate(t2))) return Number.NaN;
  const r2 = 360 - e2 * (t2 - n2);
  return 0 === r2 ? 0 : r2 < 0 ? Number.NaN : 100 * (1 - e2 * (t2 - n2) / 360);
}, TBILLYIELD: function(n2, t2, e2) {
  return fn(n2) && fn(t2) ? (n2 = Math.round(n2)) >= (t2 = Math.round(t2)) || ln(u.fromOADate(n2), u.fromOADate(t2)) ? Number.NaN : 360 * (100 - e2) / (e2 * (t2 - n2)) : Number.NaN;
}, VDB: function(n2, t2, e2, r2, u2, o2 = 2, a2 = false) {
  if (!fn(r2) || !fn(u2)) return Number.NaN;
}, XIRR: function(n2, t2, e2 = 0.1) {
}, XNPV: function(n2, t2, e2) {
  let r2 = 0;
  const u2 = t2.length;
  for (let o2 = 0; o2 < u2; o2++) r2 += t2[o2] / Math.pow(1 + n2, O(e2[o2], e2[0]) / 365);
  return r2;
}, YIELD: function(n2, t2, e2, r2, u2, o2, a2 = 0) {
  if (!(fn(n2) && fn(t2) && sn(o2) && cn(a2))) return Number.NaN;
}, YIELDDISC: function(n2, t2, e2, r2, u2, o2 = 0) {
  if (!(fn(n2) && fn(t2) && sn(u2) && cn(o2))) return Number.NaN;
}, YIELDMAT: function(n2, t2, e2, r2, u2, o2 = 0) {
  if (!fn(n2) || !fn(t2) || !cn(o2)) return Number.NaN;
} }, Symbol.toStringTag, { value: "Module" }));
const En = Object.freeze(Object.defineProperty({ __proto__: null, CELL: function(t2, e2) {
  let r2 = null;
  switch (t2) {
    case "address":
      const t3 = e2.getCoords();
      r2 = u.getAddress({ colIndex: t3.colStart, $colIndex: true, rowIndex: t3.rowStart, $rowIndex: true });
      break;
    case "col":
    case "row":
      r2 = e2.getCoords().colStart + 1;
      break;
    case "contents":
      r2 = e2.getValueAt(0, 0);
      break;
    case "type":
      const o2 = e2.getValueAt(0, 0);
      r2 = null === o2 ? "b" : "string" == typeof o2 ? "l" : "v";
      break;
    default:
      r2 = n.BuiltIn.Value;
  }
  return u.markVolatile(), r2;
}, ERROR_TYPE: function(t2) {
  return t2.map((t3) => t3 instanceof n.Known ? t3.getCode() : n.BuiltIn.NA).fillEmpty(true);
}, INFO: function(t2) {
  if ("DIRECTORY" === (t2 = t2.toUpperCase())) {
    try {
      return u.markVolatile(), u.getRuntime().getLocation();
    } catch (n2) {
    }
    return "..";
  }
  if ("NUMFILE" === t2) return "1";
  if ("ORIGIN" === t2) return "$A$1";
  if ("RECALC" === t2) return "1";
  if ("RELEASE" === t2) return u.getRuntime().getVersion();
  if ("OSVERSION" === t2) return "1";
  if ("SYSTEM" === t2) return u.getRuntime().getOS();
  if ("USER" === t2) {
    const n2 = u.getRuntime().getUser();
    return n2 || (u.formatResults("@[Red]"), "Unidentified");
  }
  throw n.BuiltIn.Value;
}, ISBLANK: function(n2) {
  return n2.map(() => false).fillEmpty(true);
}, ISERR: function(t2) {
  return t2.map((t3) => t3 instanceof n.Known && !(t3 instanceof n.NA)).fillEmpty(false);
}, ISERROR: function(t2) {
  return t2.map((t3) => t3 instanceof n.Known).fillEmpty(false);
}, ISEVEN: function(n2) {
  return n2.map((n3) => "number" == typeof n3 && Math.trunc(n3) % 2 == 0).fillEmpty(false);
}, ISFORMULA: function(n2) {
  return n2.map((n3, t2) => null !== u.getFormulaAt(t2.rowIndex, t2.colIndex)).fillEmpty(false);
}, ISLOGICAL: function(n2) {
  return n2.map((n3) => "boolean" == typeof n3).fillEmpty(false);
}, ISNA: function(t2) {
  return t2.map((t3) => t3 instanceof n.NA).fillEmpty(false);
}, ISNONTEXT: function(n2) {
  return n2.map((n3) => "string" != typeof n3).fillEmpty(false);
}, ISNUMBER: function(n2) {
  return n2.map((n3) => "number" == typeof n3).fillEmpty(false);
}, ISODD: function(n2) {
  return n2.map((n3) => "number" == typeof n3 && Math.trunc(n3) % 2 != 0).fillEmpty(false);
}, ISOMITTED: function(n2) {
  return void 0 === n2;
}, ISREF: function(n2) {
  return n2?.isIReferenceRange ?? false;
}, ISTEXT: function(n2) {
  return n2.map((n3) => "string" == typeof n3).fillEmpty(false);
}, N: function(t2) {
  const e2 = t2.getValueAt(0, 0), r2 = typeof e2;
  if ("number" === r2) return e2;
  if ("boolean" === r2) return Number(e2);
  if (e2 instanceof n.Known) throw e2;
  return 0;
}, NA: function() {
  return n.BuiltIn.NA;
}, SHEET: function(t2) {
  const e2 = u.getSheetIndex(t2);
  return e2 >= 0 ? e2 + 1 : n.BuiltIn.NA;
}, SHEETS: function(n2) {
  return n2 ? 1 : u.getSheetCount();
}, TYPE: function(t2) {
  if (t2.getWidth() > 1 || t2.getHeight() > 1) return 64;
  const e2 = t2.getValueAt(0, 0), r2 = typeof e2;
  return "string" === r2 ? 2 : "boolean" === r2 ? 4 : e2 instanceof n.Known ? 16 : 1;
} }, Symbol.toStringTag, { value: "Module" }));
const gn = { mismatchFill: n.BuiltIn.NA }, In = { type: t.Boolean, coerce: true };
const Tn = Object.freeze(Object.defineProperty({ __proto__: null, AND: function(...e2) {
  let r2 = false;
  for (const n2 of e2) for (const e3 of n2.values({ type: t.Boolean, coerce: true })) if (r2 = true, !e3) return false;
  return !!r2 || n.BuiltIn.Value;
}, BYCOL: function(n2, t2) {
}, BYROW: function(n2, t2) {
}, FALSE: function() {
  return false;
}, IF: function(r2, u2, o2) {
  if (1 === r2.size) {
    return r2.getValueAt(0, 0, In) ? u2 : o2 ?? r2.empty().replace([[false]]);
  }
  const a2 = r2.getWidth(), i2 = r2.getHeight();
  if (1 === a2 || 1 === i2) {
    const l3 = 1 === a2 ? e.Orientation.Column : e.Orientation.Row, s3 = 1 === i2, f3 = s3 ? u2.getHeight() : u2.getWidth(), c2 = 1 === (s3 ? u2.getWidth() : u2.getHeight());
    if (!o2) {
      const n2 = 1 === i2, t2 = n2 ? u2.getHeight() : u2.getWidth();
      o2 = r2.empty().fill(false, { colStart: 0, rowStart: 0, colEnd: (n2 ? 1 : t2) - 1, rowEnd: (n2 ? t2 : 1) - 1 });
    }
    const m2 = s3 ? o2.getHeight() : o2.getWidth(), p2 = 1 === (s3 ? o2.getWidth() : o2.getHeight()), N2 = Math.max(f3, m2), h2 = r2.empty().fill(n.BuiltIn.Value, { colStart: 0, rowStart: 0, colEnd: (s3 ? o2.getWidth() : N2) - 1, rowEnd: (s3 ? N2 : o2.getHeight()) - 1 }), E2 = [];
    let g2 = r2.empty();
    r2.forEach((t2, e2) => {
      const r3 = true === t2;
      let a3 = r3 ? u2 : o2;
      t2 instanceof n.Known && (a3 = h2);
      let i3 = 0;
      (r3 && !c2 || !r3 && !p2) && (i3 = s3 ? e2.colIndex : e2.rowIndex);
      const l4 = s3 ? { colStart: i3, colEnd: i3 } : { rowStart: i3, rowEnd: i3 };
      a3 = a3.slice(l4), g2 = g2.replace(a3, e2);
      const f4 = s3 ? a3.getHeight() : a3.getWidth();
      f4 < N2 && (s3 ? (l4.rowStart = f4, l4.rowEnd = N2 - 1) : (l4.colStart = f4, l4.colEnd = N2 - 1), E2.push(l4));
    }, { orientation: l3, type: t.Boolean, coerce: true, includeEmpty: true });
    for (let t2 = 0; t2 < E2.length; t2++) g2 = g2.fill(n.BuiltIn.NA, E2[t2]);
    return g2;
  }
  const l2 = a2 - 1, s2 = i2 - 1;
  let f2 = u2.broadcast(o2, (t2, e2, u3) => {
    let o3 = u3.colIndex, a3 = u3.rowIndex;
    if (o3 > l2 || a3 > s2) return n.BuiltIn.NA;
    return r2.getValueAt(u3.rowIndex, u3.colIndex, In) ? t2 : e2;
  }, gn);
  return f2 = f2.fillEmpty(n.BuiltIn.NA, Math.max(u2.getWidth(), o2.getWidth()), Math.max(u2.getHeight(), o2.getHeight())), f2;
}, IFERROR: function(t2, e2) {
  return t2.broadcast(e2, (t3 = null, e3 = null) => t3 instanceof n.Known ? e3 : t3, { mismatchFill: null });
}, IFNA: function(t2, e2) {
  return t2.broadcast(e2, (t3 = null, e3 = null) => n.BuiltIn.NA.equals(t3) ? e3 : t3, { mismatchFill: null });
}, IFS: function(t2, e2, ...r2) {
  if (r2 && r2.length % 2 != 0) throw new n.NA("IFS expects all arguments after position 0 to be in pairs.");
  const u2 = [t2, e2, ...r2];
  for (let n2 = 0; n2 < u2.length / 2; n2++) {
    const t3 = m.accept(u2[2 * n2], c.BOOLEAN), e3 = m.accept(u2[2 * n2 + 1]);
    if (t3) return e3;
  }
  throw n.BuiltIn.NA;
}, LAMDA: function(...n2) {
}, LET: function(n2, t2, e2, ...r2) {
}, MAKEARRAY: function(n2, t2, e2) {
}, MAP: function(n2, ...t2) {
}, NOT: function(t2) {
  return t2.map((t3) => "boolean" == typeof t3 ? !t3 : "number" == typeof t3 ? 0 === t3 : n.BuiltIn.Value).fillEmpty(true);
}, OR: function(...e2) {
  let r2 = false;
  for (const n2 of e2) for (const e3 of n2.values({ type: t.Boolean, coerce: true })) if (r2 = true, true === e3) return true;
  return !r2 && n.BuiltIn.Value;
}, REDUCE: function(n2, t2, e2) {
}, SCAN: function(n2, t2, e2) {
}, SWITCH: function(n2, t2, ...e2) {
}, TRUE: function() {
  return false;
}, XOR: function(...e2) {
  let r2 = false, u2 = 0;
  for (const n2 of e2) for (const e3 of n2.values({ type: t.Boolean, coerce: true })) r2 = true, true === e3 && u2++;
  return r2 ? u2 % 2 == 1 : n.BuiltIn.Value;
} }, Symbol.toStringTag, { value: "Module" })), dn = (n2) => "string" == typeof n2 && /[*?]/.test(n2), bn = (n2, t2) => RegExp(n2.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/([^~]??)[?]/g, "$1.").replace(/([^~]??)[*]/g, "$1.*").replace(/~([?*])/g, "$1"), t2);
const Mn = Object.freeze(Object.defineProperty({ __proto__: null, ADDRESS: function(t2, e2, r2 = 1, o2 = true, a2 = "") {
  if (t2 < 1 || e2 < 1 || r2 < 1 || r2 > 4) throw n.BuiltIn.Value;
  const i2 = { $colIndex: 1 === r2 || 3 === r2, colIndex: e2 - 1, $rowIndex: 1 === r2 || 2 === r2, rowIndex: t2 - 1, sheetName: a2 };
  return u.getAddress(i2, !o2);
}, AREAS: function(...n2) {
  return n2.length;
}, CHOOSE: function(t2, e2, ...r2) {
  if (1 === t2) return e2;
  if (t2 < 1 || t2 > r2.length + 1) throw n.BuiltIn.Value;
  return r2[t2 - 2];
}, CHOOSECOLS: function(t2, e2, ...r2) {
  const u2 = t2.getValues(), o2 = [e2, ...r2].map((t3) => {
    if (t3 <= 0) throw n.BuiltIn.Value;
    if (t3 > u2[0].length) throw n.BuiltIn.Ref;
    return Math.floor(t3 - 1);
  }), a2 = [];
  for (let n2 = 0; n2 < u2.length; n2++) a2[n2] = o2.map((t3) => u2[n2][t3]);
  return a2;
}, CHOOSEROWS: function(t2, e2, ...r2) {
  const u2 = t2.getValues();
  return [e2, ...r2].map((t3) => {
    if (t3 <= 0) throw n.BuiltIn.Value;
    if (t3 > u2.length) throw n.BuiltIn.Ref;
    return Math.floor(t3 - 1);
  }).map((n2) => [...u2[n2]]);
}, COLUMN: function(n2) {
  if (!n2) return [u.getPosition().colIndex + 1];
  const t2 = [], e2 = n2.getCoords(), r2 = e2.colStart, o2 = e2.colEnd;
  for (let n3 = r2; n3 <= o2; n3++) t2.push(n3 + 1);
  return t2;
}, COLUMNS: function(n2) {
  return n2.getWidth();
}, DROP: function(n2, t2, e2 = 0) {
}, EXPAND: function(t2, e2, r2 = 0, u2 = n.BuiltIn.NA) {
}, FIELDVALUE: function(n2, t2) {
}, FILTER: function(n2, t2, e2) {
}, FORMULATEXT: function(t2) {
  const e2 = t2.getCoords(), r2 = u.getFormulaAt(e2.rowStart, e2.colStart);
  if (null === r2) throw n.BuiltIn.NA;
  return "=" + r2;
}, GETPIVOTDATA: function(n2, t2, e2, r2) {
}, GROUPBY: function(n2, t2, e2, r2 = null, u2 = 2, o2 = null, a2 = null, i2 = 0) {
}, HLOOKUP: function(t2, e2, r2, u2 = true) {
  if (r2 < 1) return n.BuiltIn.Value;
  if (r2 > e2.getHeight()) return n.BuiltIn.Ref;
  if (1 === e2.size) return n.BuiltIn.NA;
  const o2 = e2.getValues(), a2 = typeof t2, i2 = "string" == typeof t2 ? t2 : String(t2), l2 = dn(i2), s2 = l2 ? bn(i2, "i") : null;
  if (u2) {
    let e3 = a2 === typeof o2[0][0] ? o2[0][0] : null;
    const u3 = o2[0].length;
    for (let i3 = 1; i3 < u3; i3++) {
      const u4 = o2[0][i3];
      if (typeof u4 === a2) {
        if (e3 > t2 && u4 > t2) throw n.BuiltIn.NA;
        if (u4 === t2) return o2[r2 - 1][i3];
        if (null != e3 && u4 > t2 && e3 <= t2) return o2[r2 - 1][i3 - 1];
        e3 = u4;
      }
    }
    if (null === e3) throw n.BuiltIn.NA;
    return 1 === o2[0].length ? o2[r2 - 1][0] : e3;
  }
  {
    let e3 = -1;
    if (e3 = l2 ? o2[0].findIndex((n2) => {
      const t3 = "string" == typeof n2 ? n2 : String(n2);
      return s2.test(t3);
    }) : o2[0].findIndex((n2) => n2 === t2), -1 === e3) throw n.BuiltIn.NA;
    return o2[r2 - 1][e3];
  }
}, HSTACK: function(n2, ...t2) {
}, HYPERLINK: function(n2, t2) {
}, IMAGE: function(n2, t2, e2, r2, u2) {
}, INDEX: function(t2, e2 = 0, r2 = 0, u2 = 1) {
  if (e2 < 0 || r2 < 0 || u2 < 0) return n.BuiltIn.Value;
  if (u2 > t2.length) return n.BuiltIn.Ref;
  const o2 = t2[u2 - 1];
  if (0 === e2 && 0 === r2) return o2;
  if (0 !== e2 && 0 !== r2) return o2.getValueAt(e2 - 1, r2 - 1);
  const a2 = o2.getHeight(), i2 = o2.getWidth();
  if (e2 > a2 || r2 > i2) return n.BuiltIn.Ref;
  if (0 === e2) {
    const n2 = r2 - 1;
    return o2.slice({ colStart: n2, rowStart: 0, colEnd: n2, rowEnd: a2 - 1 });
  }
  {
    const n2 = e2 - 1;
    return o2.slice({ colStart: 0, rowStart: n2, colEnd: i2 - 1, rowEnd: n2 });
  }
}, INDIRECT: function(n2, t2 = true) {
  return u.getReference(n2, !t2);
}, LOOKUP: function(n2, t2, e2) {
}, MATCH: function(n2, t2, e2) {
}, OFFSET: function(t2, e2, r2, o2, a2) {
  if (o2 = o2 ?? t2.getHeight(), (a2 = a2 ?? t2.getWidth()) < 0) throw n.BuiltIn.Ref;
  if (o2 < 0) throw n.BuiltIn.Ref;
  const i2 = t2.getCoords(), l2 = { rowStart: i2.rowStart + e2, colStart: i2.colStart + r2, rowEnd: i2.rowStart + e2 + o2 - 1, colEnd: i2.colStart + r2 + a2 - 1 };
  return u.getReference(l2);
}, PIVOTBY: function(n2, t2, e2, r2, u2 = null, o2 = 2, a2 = null, i2 = 2, l2 = null, s2 = null, f2 = 0) {
}, ROW: function(n2) {
  if (!n2) return [u.getPosition().rowIndex + 1];
  const t2 = [], e2 = n2.getCoords(), r2 = e2.rowStart, o2 = e2.rowEnd;
  for (let n3 = r2; n3 <= o2; n3++) t2.push([n3 + 1]);
  return t2;
}, ROWS: function(n2) {
  return n2.getHeight();
}, RTD: function(n2, t2, ...e2) {
}, SORT: function(n2, t2, e2, r2 = false) {
}, SORTBY: function(n2, t2, e2) {
}, TAKE: function(n2, t2, e2 = 0) {
}, TOCOL: function(n2, t2 = 0, e2 = false) {
}, TOROW: function(n2, t2 = 0, e2 = false) {
}, TRANSPOSE: function(n2) {
  return n2.transpose();
}, TRIMRANGE: function(t2, r2 = 3, o2 = 3) {
  let a2 = 0, i2 = t2.getHeight() - 1, l2 = 0, s2 = t2.getWidth() - 1;
  const f2 = t2.isIReferenceRange;
  if (f2) {
    const n2 = t2.getCoords();
    a2 = n2.rowStart, i2 = n2.rowEnd, l2 = n2.colStart, s2 = n2.colEnd;
  } else a2 = 0, i2 = t2.getHeight() - 1, l2 = 0, s2 = t2.getWidth() - 1;
  if (1 === r2 || 3 === r2) {
    const r3 = t2.entries({ orientation: e.Orientation.Row }).next().value;
    if (!r3) return n.BuiltIn.Ref;
    a2 = r3.coords.rowIndex;
  }
  if (2 === r2 || 3 === r2) {
    const r3 = t2.entries({ reverse: true, orientation: e.Orientation.Row }).next().value;
    if (!r3) return n.BuiltIn.Ref;
    i2 = r3.coords.rowIndex;
  }
  if (1 === o2 || 3 === o2) {
    const r3 = t2.entries({ orientation: e.Orientation.Column }).next().value;
    if (!r3) return n.BuiltIn.Ref;
    l2 = r3.coords.colIndex;
  }
  if (2 === o2 || 3 === o2) {
    const r3 = t2.entries({ reverse: true, orientation: e.Orientation.Column }).next().value;
    if (!r3) return n.BuiltIn.Ref;
    s2 = r3.coords.colIndex;
  }
  let c2;
  return f2 ? u.getReference({ colStart: l2, rowStart: a2, colEnd: s2, rowEnd: i2 }) : (c2 = t2.slice({ colStart: l2, rowStart: a2, rowEnd: i2, colEnd: s2 }), c2);
}, UNIQUE: function(n2, t2 = false, e2 = false) {
}, VLOOKUP: function(t2, e2, r2, u2 = true) {
  if (r2 < 1) return n.BuiltIn.Value;
  if (r2 > e2.getWidth()) return n.BuiltIn.Ref;
  if (1 === e2.size) return n.BuiltIn.NA;
  const o2 = e2.getValues(), a2 = typeof t2, i2 = "string" == typeof t2 ? t2 : String(t2), l2 = dn(i2), s2 = l2 ? bn(i2, "i") : null;
  if (u2) {
    let e3 = a2 === typeof o2[0][0] ? o2[0][0] : null;
    const u3 = o2.length;
    for (let i3 = 1; i3 < u3; i3++) {
      const u4 = o2[i3], l3 = o2[i3][0];
      if (typeof l3 === a2) {
        if (e3 > t2 && l3 > t2) throw n.BuiltIn.NA;
        if (l3 === t2) return u4[r2 - 1];
        if (null != e3 && l3 > t2 && e3 <= t2) return o2[i3 - 1][r2 - 1];
        e3 = l3;
      }
    }
    if (null === e3) throw n.BuiltIn.NA;
    return 1 === o2.length ? o2[0][r2 - 1] : e3;
  }
  {
    let e3 = -1;
    if (e3 = l2 ? o2.findIndex((n2) => s2.test(n2[0])) : o2.findIndex((n2) => n2[0] === t2), -1 === e3) throw n.BuiltIn.NA;
    return o2[e3][r2 - 1];
  }
}, VSTACK: function(n2, ...t2) {
}, WRAPCOLS: function(t2, e2, r2 = n.BuiltIn.NA) {
}, WRAPROWS: function(t2, e2, r2 = n.BuiltIn.NA) {
}, XLOOKUP: function(n2, t2, e2, r2, u2 = true, o2, a2 = true) {
}, XMATCH: function(n2, t2, e2, r2 = true) {
} }, Symbol.toStringTag, { value: "Module" })), Sn = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368e3, 20922789888e3, 355687428096e3, 6402373705728e3, 121645100408832e3, 243290200817664e4, 5109094217170944e4, 11240007277776077e5, 2585201673888498e7, 6204484017332394e8, 15511210043330986e9, 40329146112660565e10, 10888869450418352e12, 30488834461171387e13, 8841761993739702e15, 26525285981219107e16, 8222838654177922e18, 2631308369336935e20, 8683317618811886e21, 29523279903960416e22, 10333147966386145e24, 37199332678990125e25, 13763753091226346e27, 5230226174666011e29, 20397882081197444e30, 8159152832478977e32, 3345252661316381e34, 140500611775288e37, 6041526306337383e37, 2658271574788449e39, 11962222086548019e40, 5502622159812089e42, 25862324151116818e43, 12413915592536073e45, 6082818640342675e47, 30414093201713376e48, 15511187532873822e50, 8065817517094388e52, 42748832840600255e53, 2308436973392414e56, 12696403353658276e57, 7109985878048635e59, 40526919504877214e60, 23505613312828785e62, 13868311854568984e64, 832098711274139e67, 5075802138772248e68, 3146997326038794e70, 198260831540444e73, 12688693218588417e73, 8247650592082472e75, 5443449390774431e77, 3647111091818868e79, 24800355424368305e80, 1711224524281413e83, 11978571669969892e84, 8504785885678623e86, 61234458376886085e87, 44701154615126844e89, 3307885441519386e92, 248091408113954e95, 18854947016660504e95, 14518309202828587e97, 11324281178206297e99, 8946182130782976e101, 7156945704626381e103, 5797126020747368e105, 4753643337012842e107, 3945523969720659e109, 3314240134565353e111, 281710411438055e114, 24227095383672734e114, 2107757298379528e117, 18548264225739844e118, 1650795516090846e121, 14857159644817615e122, 1352001527678403e125, 12438414054641308e126, 11567725070816416e128, 1087366156656743e131, 1032997848823906e133, 9916779348709496e134, 9619275968248212e136, 9426890448883248e138, 9332621544394415e140, 9332621544394415e142], An = [], Rn = [];
function Cn(n2) {
  return Math.abs(n2) < 99e-14 ? 0 : n2;
}
function On(n2) {
  return n2 <= 100 ? Sn[n2] : An[n2] > 0 ? An[n2] : An[n2] = On(n2 - 1) * n2;
}
function Dn(n2) {
  return 1 === n2 || 0 === n2 ? 1 : 2 === n2 ? 2 : Rn[n2] > 0 ? Rn[n2] : Rn[n2] = Dn(n2 - 2) * n2;
}
function yn(n2) {
  const t2 = [], e2 = n2.length;
  for (let r2 = 0; r2 < e2; r2++) {
    const e3 = n2[r2], u2 = e3.length;
    for (let n3 = 0; n3 < u2; n3++) t2.push(e3[n3]);
  }
  return t2;
}
const wn = (t2, e2, r2) => {
  const u2 = yn(t2), o2 = yn(e2);
  let a2 = 0;
  if (u2.length !== o2.length) throw n.BuiltIn.NA;
  const i2 = u2.length;
  for (let n2 = 0; n2 < i2; n2++) "number" == typeof u2[n2] && "number" == typeof o2[n2] && (a2 = Cn(a2 + r2(u2[n2], o2[n2])));
  return a2;
};
function Bn(n2, t2 = void 0) {
  if (0 === t2) return 0;
  if (n2 / t2 % 1 == 0) return n2;
  const e2 = Math.abs(t2), r2 = Math.floor(Math.abs(n2) / e2);
  if (n2 < 0) {
    return t2 < 0 ? -e2 * (r2 + 1) : -e2 * r2;
  }
  return (r2 + 1) * e2;
}
function Un(n2, t2 = 1) {
  return 0 === t2 ? 0 : Bn(n2, Math.abs(t2));
}
function Ln(n2, t2) {
  if (n2 < 0 || t2 < 0 || n2 < t2) return Number.NaN;
  return _n(n2) / _n(t2) / _n(n2 - t2);
}
function _n(n2) {
  return (n2 = Math.trunc(n2)) > 170 || n2 < 0 ? Number.NaN : n2 <= 100 ? Sn[n2] : On(n2);
}
function vn(n2, t2 = void 0) {
  if (0 === n2) return 0;
  if (0 === t2) return 1 / 0;
  if (t2 = t2 ?? (n2 > 0 ? 1 : -1), n2 > 0 && t2 < 0) return Number.NaN;
  if (n2 / t2 % 1 == 0) return n2;
  const e2 = Math.abs(t2), r2 = Math.floor(Math.abs(n2) / e2);
  if (n2 < 0) {
    return t2 < 0 ? -e2 * r2 : -e2 * (r2 + 1);
  }
  return r2 * e2;
}
function Vn(n2) {
  return Math.floor(n2);
}
const Pn = Object.freeze(Object.defineProperty({ __proto__: null, ABS: function(n2) {
  return Math.abs(n2);
}, AGGREGATE: function(n2, t2, e2, r2) {
}, ARABIC: function(t2) {
  if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(t2)) throw new n.Value("Invalid roman numeral in ARABIC evaluation.");
  let e2 = 0;
  return t2.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, (n2) => {
    e2 += { M: 1e3, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }[n2];
  }), e2;
}, BASE: function(n2, t2, e2 = 0) {
  if (n2 < 0 || n2 >= 2 ** 53) return Number.NaN;
  if (t2 < 2 || t2 > 36) return Number.NaN;
  if (e2 < 0) return Number.NaN;
  const r2 = n2.toString(t2).toUpperCase();
  return new Array(Math.max(e2 + 1 - r2.length, 0)).join("0") + r2;
}, CEILING: Bn, CEILING_MATH: function(n2, t2 = void 0, e2 = 0) {
  if (0 === (t2 = t2 ?? (n2 > 0 ? 1 : -1))) return 0;
  if (n2 >= 0) return Bn(n2, t2);
  const r2 = e2 ? t2 : 0;
  return Bn(n2, t2) - r2;
}, CEILING_PRECISE: Un, COMBIN: Ln, COMBINA: function(n2, t2) {
  return 0 !== n2 && 1 !== n2 || 0 !== t2 ? n2 < 0 || t2 < 0 ? Number.NaN : Ln(n2 + t2 - 1, n2 - 1) : 1;
}, DECIMAL: function(n2, t2) {
  return (t2 = Math.trunc(t2)) < 2 || t2 > 36 ? Number.NaN : parseInt(n2, t2);
}, DEGREES: function(n2) {
  return n2 * (180 / Math.PI);
}, EVEN: function(n2) {
  return Bn(n2, -2);
}, EXP: function(n2) {
  return Math.exp(n2);
}, FACT: _n, FACTDOUBLE: function(n2) {
  return (n2 = Math.trunc(n2)) < -1 ? Number.NaN : -1 === n2 ? 1 : Dn(n2);
}, FLOOR: vn, FLOOR_MATH: function(n2, t2 = void 0, e2 = 0) {
  return 0 === (t2 = t2 ?? (n2 > 0 ? 1 : -1)) ? 0 : 0 === e2 || n2 >= 0 ? vn(n2, Math.abs(t2)) : vn(n2, t2) + t2;
}, FLOOR_PRECISE: function(n2, t2 = 1) {
  return 0 === t2 ? 0 : vn(n2, Math.abs(t2));
}, GCD: function(...n2) {
  let t2, e2 = n2[0];
  if (e2 < 0 || e2 > 9007199254740990) return Number.NaN;
  e2 = Math.abs(Math.abs(Math.trunc(e2)));
  const r2 = n2.length;
  for (let u2 = 1; u2 < r2; u2++) {
    if (t2 = n2[u2], t2 < 0 || t2 > 9007199254740990) return Number.NaN;
    for (t2 = Math.abs(Math.trunc(t2)); e2 && t2; ) e2 > t2 ? e2 %= t2 : t2 %= e2;
    e2 += t2;
  }
  return e2;
}, INT: Vn, ISO_CEILING: function(n2, t2 = void 0) {
  return Un(n2, t2);
}, LCM: function(...n2) {
  let t2, e2, r2 = n2[0];
  if (r2 < 0 || r2 > 9007199254740990) return Number.NaN;
  r2 = Math.abs(Math.trunc(r2));
  const u2 = n2.length;
  for (let o2 = 1; o2 < u2; o2++) {
    const u3 = n2[o2];
    if (u3 < 0 || u3 > 9007199254740990) return Number.NaN;
    for (t2 = Math.abs(Math.trunc(u3)), e2 = r2; r2 && t2; ) r2 > t2 ? r2 %= t2 : t2 %= r2;
    r2 = Math.abs(e2 * u3) / (r2 + t2);
  }
  return r2;
}, LN: function(n2) {
  return Math.log(n2);
}, LOG: function(n2, t2 = 10) {
  return Math.log(n2) / Math.log(t2);
}, LOG10: function(n2) {
  return Math.log10(n2);
}, MDETERM: function(t2) {
  if (t2[0].length !== t2.length) throw n.BuiltIn.Value;
  const e2 = t2.length, r2 = t2[0].length;
  let u2, o2, a2 = 0;
  if (1 === e2) return t2[0][0];
  if (2 === e2) return t2[0][0] * t2[1][1] - t2[0][1] * t2[1][0];
  for (let n2 = 0; n2 < r2; n2++) {
    u2 = t2[0][n2], o2 = t2[0][n2];
    for (let a3 = 1; a3 < e2; a3++) o2 *= t2[a3][((n2 + a3) % r2 + r2) % r2], u2 *= t2[a3][((n2 - a3) % r2 + r2) % r2];
    a2 += o2 - u2;
  }
  return a2;
}, MINVERSE: function(n2) {
}, MMULT: function(t2, e2) {
  const r2 = t2.length, u2 = t2[0].length, o2 = e2.length, a2 = e2[0].length;
  if (u2 !== o2) throw n.BuiltIn.Value;
  const i2 = new Array(r2);
  for (let o3 = 0; o3 < r2; o3++) {
    i2[o3] = new Array(a2);
    for (let r3 = 0; r3 < a2; r3++) {
      i2[o3][r3] = 0;
      for (let a3 = 0; a3 < u2; a3++) {
        const u3 = t2[o3][a3], l2 = e2[a3][r3];
        if ("number" != typeof u3 || "number" != typeof l2) throw n.BuiltIn.Value;
        i2[o3][r3] += t2[o3][a3] * e2[a3][r3];
      }
    }
  }
  return i2;
}, MOD: function(n2, t2) {
  return 0 === t2 ? 1 / 0 : n2 - t2 * Vn(n2 / t2);
}, MROUND: function(n2, t2) {
  return 0 === t2 ? 0 : n2 > 0 && t2 < 0 || n2 < 0 && t2 > 0 ? Number.NaN : n2 / t2 % 1 == 0 ? n2 : Math.round(n2 / t2) * t2;
}, MULTINOMIAL: function(...n2) {
  let t2 = 0, e2 = 1;
  const r2 = n2.length;
  for (let u2 = 0; u2 < r2; u2++) {
    const r3 = n2[u2];
    if (r3 < 0) return Number.NaN;
    t2 += r3, e2 *= On(r3);
  }
  return On(t2) / e2;
}, MUNIT: function(n2) {
  const t2 = [];
  for (let e2 = 0; e2 < n2; e2++) {
    const r2 = [];
    for (let t3 = 0; t3 < n2; t3++) e2 === t3 ? r2.push(1) : r2.push(0);
    t2.push(r2);
  }
  return t2;
}, ODD: function(n2) {
  if (0 === n2) return 1;
  let t2 = Math.ceil(Math.abs(n2));
  return t2 = 1 & t2 ? t2 : t2 + 1, n2 > 0 ? t2 : -t2;
}, PI: function() {
  return Math.PI;
}, POWER: function(n2, t2) {
  return n2 ** t2;
}, PRODUCT: function(...n2) {
  let t2 = 1;
  for (const e2 of n2) for (const n3 of e2.values()) t2 *= n3;
  return t2;
}, QUOTIENT: function(n2, t2) {
  return Math.trunc(n2 / t2);
}, RADIANS: function(n2) {
  return n2 / 180 * Math.PI;
}, RAND: function() {
  return u.markVolatile(), Math.random();
}, RANDARRAY: function(t2 = 1, e2 = 1, r2 = 0, o2 = 1, a2 = false) {
  if (0 === t2 || 0 === e2) throw n.BuiltIn.Calc;
  if (t2 < 0 || e2 < 0) throw n.BuiltIn.Value;
  const i2 = u.getEntireCoords();
  if (t2 + 1 > i2.rowEnd || e2 + 1 > i2.colEnd) throw n.BuiltIn.Value;
  if (r2 > o2) throw Number.NaN;
  const l2 = Math.floor(t2), s2 = Math.floor(e2), f2 = new Array(l2);
  for (let n2 = 0; n2 < l2; n2++) {
    const t3 = new Array(s2);
    for (let n3 = 0; n3 < s2; n3++) {
      let e3 = r2 + Math.random() * (o2 - r2);
      a2 && (e3 = Math.floor(e3), e3 > o2 && (e3 = o2)), t3[n3] = e3;
    }
    f2[n2] = t3;
  }
  return u.markVolatile(), f2;
}, RANDBETWEEN: function(n2, t2) {
  return u.markVolatile(), Math.floor(Math.random() * (t2 - n2 + 1) + n2);
}, ROMAN: function(n2, t2 = 0) {
  if (0 !== t2) throw Error("ROMAN: only allows form=0 (classic form).");
  const e2 = String(n2).split(""), r2 = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
  let u2 = "", o2 = 3;
  for (; o2--; ) u2 = (r2[+e2.pop() + 10 * o2] || "") + u2;
  return new Array(+e2.join("") + 1).join("M") + u2;
}, ROUND: function(n2, t2) {
  const e2 = Math.pow(10, Math.abs(t2)), r2 = n2 > 0 ? 1 : -1;
  return t2 > 0 ? r2 * Math.round(Math.abs(n2) * e2) / e2 : 0 === t2 ? r2 * Math.round(Math.abs(n2)) : r2 * Math.round(Math.abs(n2) / e2) * e2;
}, ROUNDDOWN: function(n2, t2) {
  const e2 = Math.pow(10, Math.abs(t2)), r2 = n2 > 0 ? 1 : -1;
  if (t2 > 0) {
    const t3 = 1 / e2 * 0.5;
    return r2 * Math.round((Math.abs(n2) - t3) * e2) / e2;
  }
  if (0 === t2) {
    const t3 = 0.5;
    return r2 * Math.round(Math.abs(n2) - t3);
  }
  {
    const t3 = 0.5 * e2;
    return r2 * Math.round((Math.abs(n2) - t3) / e2) * e2;
  }
}, ROUNDUP: function(n2, t2) {
  const e2 = Math.pow(10, Math.abs(t2)), r2 = n2 > 0 ? 1 : -1;
  if (t2 > 0) {
    const t3 = 1 / e2 * 0.5;
    return r2 * Math.round((Math.abs(n2) + t3) * e2) / e2;
  }
  if (0 === t2) {
    const t3 = 0.5;
    return r2 * Math.round(Math.abs(n2) + t3);
  }
  {
    const t3 = 0.5 * e2;
    return r2 * Math.round((Math.abs(n2) + t3) / e2) * e2;
  }
}, SEQUENCE: function(t2, e2 = 1, r2 = 1, o2 = 1) {
  if (0 === t2 || 0 === e2) throw n.BuiltIn.Calc;
  if (t2 < 0 || e2 < 0) throw n.BuiltIn.Value;
  const a2 = u.getEntireCoords();
  if (t2 + 1 > a2.rowEnd || e2 + 1 > a2.colEnd) throw n.BuiltIn.Value;
  const i2 = Math.floor(t2), l2 = Math.floor(e2);
  let s2 = r2;
  const f2 = new Array(i2);
  for (let n2 = 0; n2 < i2; n2++) {
    const t3 = new Array(l2);
    for (let n3 = 0; n3 < l2; n3++) t3[n3] = s2, s2 += o2;
    f2[n2] = t3;
  }
  return f2;
}, SERIESSUM: function(t2, e2, r2, ...u2) {
  let o2;
  const a2 = u2.length;
  for (let i2 = 0; i2 < a2; i2++) {
    const a3 = u2[i2];
    if ("number" != typeof a3) throw n.BuiltIn.Value;
    0 === i2 ? o2 = a3 * Math.pow(t2, e2) : o2 += a3 * Math.pow(t2, e2 + i2 * r2);
  }
  return o2;
}, SIGN: function(n2) {
  return n2 > 0 ? 1 : 0 === n2 ? 0 : -1;
}, SQRT: function(n2) {
  return Math.sqrt(n2);
}, SQRTPI: function(n2) {
  return n2 < 0 ? Number.NaN : Math.sqrt(n2 * Math.PI);
}, SUBTOTAL: function(n2, ...t2) {
}, SUM: function(...n2) {
  let t2 = 0;
  for (const e2 of n2) for (const n3 of e2.values()) t2 = Cn(t2 + n3);
  return t2;
}, SUMIF: function(n2, t2, e2) {
}, SUMIFS: function(n2, t2, e2) {
}, SUMPRODUCT: function(t2, ...e2) {
  e2.forEach((e3) => {
    if (t2[0].length !== e3[0].length || t2.length !== e3.length) throw n.BuiltIn.Value;
    const r3 = t2.length;
    for (let n2 = 0; n2 < r3; n2++) for (let r4 = 0; r4 < t2[0].length; r4++) "number" != typeof t2[n2][r4] && (t2[n2][r4] = 0), "number" != typeof e3[n2][r4] && (e3[n2][r4] = 0), t2[n2][r4] *= e3[n2][r4];
  });
  let r2 = 0;
  return t2.forEach((n2) => {
    n2.forEach((n3) => {
      r2 = Cn(r2 + n3);
    });
  }), r2;
}, SUMSQ: function(...n2) {
  let e2 = 0;
  for (const r2 of n2) for (const n3 of r2.values({ type: t.Number, includeBoolean: true })) e2 = Cn(e2 + n3 ** 2);
  return e2;
}, SUMX2MY2: function(n2, t2) {
  return wn(n2, t2, (n3, t3) => n3 ** 2 - t3 ** 2);
}, SUMX2PY2: function(n2, t2) {
  return wn(n2, t2, (n3, t3) => n3 ** 2 + t3 ** 2);
}, SUMXMY2: function(n2, t2) {
  return wn(n2, t2, (n3, t3) => (n3 - t3) ** 2);
}, TRUNC: function(n2, t2 = 0) {
  return Math.trunc(n2);
} }, Symbol.toStringTag, { value: "Module" })), Fn = 2 ** 27 - 1;
const xn = Object.freeze(Object.defineProperty({ __proto__: null, ACOS: function(n2) {
  return n2 > 1 || n2 < -1 ? Number.NaN : Math.acos(n2);
}, ACOSH: function(n2) {
  return n2 < 1 ? Number.NaN : Math.acosh(n2);
}, ACOT: function(n2) {
  return Math.PI / 2 - Math.atan(n2);
}, ACOTH: function(n2) {
  return Math.abs(n2) <= 1 ? Number.NaN : Math.atanh(1 / n2);
}, ASIN: function(n2) {
  return n2 > 1 || n2 < -1 ? Number.NaN : Math.asin(n2);
}, ASINH: function(n2) {
  return Math.asinh(n2);
}, ATAN: function(n2) {
  return Math.atan(n2);
}, ATAN2: function(n2, t2) {
  return 0 === t2 && 0 === n2 ? 1 / 0 : Math.atan2(t2, n2);
}, ATANH: function(n2) {
  return Math.abs(n2) > 1 ? Number.NaN : Math.atanh(n2);
}, COS: function(n2) {
  if (Math.abs(n2) > Fn) return Number.NaN;
  const t2 = Math.cos(n2);
  return isFinite(t2) ? t2 : Number.NaN;
}, COSH: function(n2) {
  const t2 = Math.cosh(n2);
  return isFinite(t2) ? t2 : Number.NaN;
}, COT: function(n2) {
  return Math.abs(n2) > Fn ? Number.NaN : 0 === n2 ? 1 / 0 : 1 / Math.tan(n2);
}, COTH: function(n2) {
  return 0 === n2 ? 1 / 0 : 1 / Math.tanh(n2);
}, CSC: function(n2) {
  return Math.abs(n2) > Fn ? Number.NaN : 1 / Math.sin(n2);
}, CSCH: function(n2) {
  return 0 === n2 ? 1 / 0 : 1 / Math.sinh(n2);
}, SEC: function(n2) {
  return Math.abs(n2) > Fn ? Number.NaN : 1 / Math.cos(n2);
}, SECH: function(n2) {
  return 1 / Math.cosh(n2);
}, SIN: function(n2) {
  return Math.abs(n2) > Fn ? Number.NaN : Math.sin(n2);
}, SINH: function(n2) {
  const t2 = Math.sinh(n2);
  return isFinite(t2) ? t2 : Number.NaN;
}, TAN: function(n2) {
  return Math.abs(n2) > Fn ? Number.NaN : Math.tan(n2);
}, TANH: function(n2) {
  return Math.tanh(n2);
} }, Symbol.toStringTag, { value: "Module" }));
function Hn(n2, ...t2) {
  for (const e2 of t2) {
    const t3 = e2.isLiteral();
    for (const r2 of e2.values({ coerce: false, includeMistyped: true })) {
      const e3 = typeof r2;
      if ("number" !== e3) if ("string" !== e3) if ("boolean" !== e3) {
        if (r2.isFormulaError) throw r2;
      } else {
        if (t3) continue;
        n2(r2);
      }
      else n2(r2);
      else n2(r2);
    }
  }
}
function Gn(...t2) {
  let e2 = 0, r2 = 0;
  for (const n2 of t2) for (const t3 of n2.values()) e2 += t3, r2++;
  if (0 === r2) throw n.BuiltIn.Div0;
  return e2 / r2;
}
function Xn(...n2) {
  let t2 = 0, e2 = 0;
  for (const r2 of n2) {
    const n3 = r2.isLiteral();
    for (const u2 of r2.values({ coerce: false, includeMistyped: true })) {
      const r3 = typeof u2;
      if ("number" !== r3) if ("string" !== r3) if ("boolean" !== r3) {
        if (u2.isFormulaError) return u2;
      } else {
        if (n3) continue;
        t2 += u2 ? 1 : 0, e2++;
      }
      else e2++;
      else t2 += u2, e2++;
    }
  }
  return t2 / e2;
}
const Yn = Object.freeze(Object.defineProperty({ __proto__: null, AVEDEV: function(...n2) {
  let t2 = 0;
  const e2 = [];
  for (const r3 of n2) for (const n3 of r3.values()) t2 += n3, e2.push(n3);
  const r2 = e2.length, u2 = t2 / r2;
  t2 = 0;
  for (let n3 = 0; n3 < r2; n3++) t2 += Math.abs(e2[n3] - u2);
  return t2 / r2;
}, AVERAGE: Gn, AVERAGEA: Xn, AVERAGEIF: function(n2, t2, e2) {
}, AVERAGEIFS: function(n2, t2, ...e2) {
}, COUNT: function(...n2) {
  let t2 = 0;
  for (const e2 of n2) for (const n3 of e2.values()) t2++;
  return t2;
}, COUNTA: function(...n2) {
  let t2 = 0;
  for (const e2 of n2) {
    const n3 = e2.isLiteral();
    for (const r2 of e2.values({ coerce: false, includeMistyped: true })) {
      const e3 = typeof r2;
      if ("number" !== e3) if ("string" !== e3) if ("boolean" !== e3) {
        if (r2.isFormulaError) return r2;
      } else {
        if (n3) continue;
        t2++;
      }
      else t2++;
      else t2++;
    }
  }
  return t2;
}, COUNTBLANK: function(n2) {
  return n2.size;
}, COUNTIF: function(n2, t2) {
}, COUNTIFS: function(n2, t2) {
}, LARGE: function(n2, t2) {
  if ((t2 = Math.floor(t2)) < 1) return Number.NaN;
  const e2 = [];
  for (const t3 of n2.values()) e2.push(t3);
  return 0 === e2.length || t2 > e2.length ? Number.NaN : (e2.sort((n3, t3) => t3 - n3), e2[t2 - 1]);
}, MAX: function(...n2) {
  let t2 = Number.MIN_SAFE_INTEGER;
  for (const e2 of n2) for (const n3 of e2.values()) t2 = Math.max(t2, n3);
  return t2 === Number.MIN_SAFE_INTEGER ? 0 : t2;
}, MAXA: function(...n2) {
  let t2 = 0;
  return Hn((n3) => {
    t2 = Math.min(t2, n3);
  }, ...n2), t2;
}, MAXIFS: function(n2, t2, ...e2) {
}, MEDIAN: function(...n2) {
  const t2 = [];
  for (const e3 of n2) for (const n3 of e3.values()) t2.push(n3);
  t2.sort((n3, t3) => n3 - t3);
  const e2 = t2.length;
  if (e2 % 2 == 0) {
    const n3 = e2 / 2;
    return (t2[n3 - 1] + t2[n3]) / 2;
  }
  return t2[Math.floor(e2 / 2)];
}, MIN: function(...n2) {
  let t2 = Number.MAX_SAFE_INTEGER;
  for (const e2 of n2) for (const n3 of e2.values()) t2 = Math.min(t2, n3);
  return t2 === Number.MAX_SAFE_INTEGER ? 0 : t2;
}, MINA: function(...n2) {
  let t2 = 0;
  return Hn((n3) => {
    t2 = Math.min(t2, n3);
  }, ...n2), t2;
}, MINIFS: function(n2, t2, ...e2) {
}, PERMUT: function(n2, t2) {
}, PERMUTATIONA: function(n2, t2) {
}, SMALL: function(n2, t2) {
  if ((t2 = Math.floor(t2)) < 1) return Number.NaN;
  const e2 = [];
  for (const t3 of n2.values()) e2.push(t3);
  return 0 === e2.length || t2 > e2.length ? Number.NaN : (e2.sort((n3, t3) => n3 - t3), e2[t2 - 1]);
} }, Symbol.toStringTag, { value: "Module" }));
function kn(t2, e2 = null) {
  const r2 = t2.size, u2 = new Array(r2);
  let o2 = new Array(r2), a2 = 0;
  if (e2) {
    if (e2.size !== r2) throw n.BuiltIn.Ref;
    for (const t3 of e2.values({ includeEmpty: true })) {
      if ("number" != typeof t3) throw n.BuiltIn.Value;
      o2[a2++] = t3;
    }
  } else for (let n2 = 0; n2 < r2; n2++) o2[n2] = n2 + 1;
  a2 = 0;
  for (const e3 of t2.values()) {
    if ("number" != typeof e3) throw n.BuiltIn.Value;
    u2[a2++] = e3;
  }
  return [u2, o2];
}
function zn(n2, t2, e2, r2, u2 = 0, o2 = 1) {
  return t2 <= 0 || e2 <= 0 || n2 < u2 || n2 > o2 || u2 === o2 ? Number.NaN : (n2 = (n2 - u2) / (o2 - u2), r2 ? i.beta.cdf(n2, t2, e2) : i.beta.pdf(n2, t2, e2) / (o2 - u2));
}
function jn(n2, t2, e2, r2 = 0, u2 = 1) {
  return t2 <= 0 || e2 <= 0 || n2 <= 0 || n2 > 1 ? Number.NaN : i.beta.inv(n2, t2, e2) * (u2 - r2) + r2;
}
function Wn(n2, t2, e2, r2) {
  return t2 < 0 || e2 < 0 || e2 > 1 || n2 < 0 || n2 > t2 ? Number.NaN : r2 ? i.binomial.cdf(n2, t2, e2) : i.binomial.pdf(n2, t2, e2);
}
function Kn(n2, t2, e2 = false) {
  return n2 < 0 || t2 < 1 || t2 > 10 ** 10 ? Number.NaN : e2 ? i.chisquare.cdf(n2, t2) : i.chisquare.pdf(n2, t2);
}
function $n(n2, t2) {
  return t2 = Math.trunc(t2), n2 < 0 || n2 > 1 || t2 < 1 || t2 > 10 ** 10 ? Number.NaN : i.chisquare.inv(n2, t2);
}
function qn(t2, e2) {
  if (t2.length !== e2.length || t2[0].length !== e2[0].length || 1 === t2.length && 1 === t2[0].length) throw n.BuiltIn.NA;
  const r2 = t2.length, u2 = t2[0].length;
  let o2 = (r2 - 1) * (u2 - 1);
  o2 = 1 === r2 ? u2 - 1 : r2 - 1;
  let a2 = 0;
  for (let n2 = 0; n2 < r2; n2++) for (let r3 = 0; r3 < u2; r3++) if ("number" == typeof t2[n2][r3] && "number" == typeof e2[n2][r3]) {
    if (0 === e2[n2][r3]) return 1 / 0;
    a2 += Math.pow(t2[n2][r3] - e2[n2][r3], 2) / e2[n2][r3];
  }
  let i2 = Math.exp(-0.5 * a2);
  o2 % 2 == 1 && (i2 *= Math.sqrt(2 * a2 / Math.PI));
  let l2 = o2;
  for (; l2 >= 2; ) i2 = i2 * a2 / l2, l2 -= 2;
  let s2 = i2, f2 = o2;
  for (; s2 > 1e-15 * i2; ) f2 += 2, s2 = s2 * a2 / f2, i2 += s2;
  return 1 - i2;
}
function Qn(t2, e2) {
  if (t2.length !== e2.length) throw n.BuiltIn.NA;
  const r2 = [], u2 = [];
  for (let n2 = 0; n2 < t2.length; n2++) "number" == typeof t2[n2] && "number" == typeof e2[n2] && (r2.push(t2[n2]), u2.push(e2[n2]));
  const o2 = i.mean(r2), a2 = i.mean(u2);
  let l2 = 0;
  for (let n2 = 0; n2 < r2.length; n2++) l2 += (r2[n2] - o2) * (u2[n2] - a2);
  return l2 / r2.length;
}
function Zn(n2, t2, e2) {
  return n2 < 0 || t2 <= 0 ? Number.NaN : e2 ? i.exponential.cdf(n2, t2) : i.exponential.pdf(n2, t2);
}
function Jn(n2, t2, e2, r2) {
  return n2 < 0 || t2 < 1 || e2 < 1 ? Number.NaN : (t2 = Math.trunc(t2), e2 = Math.trunc(e2), r2 ? i.centralF.cdf(n2, t2, e2) : i.centralF.pdf(n2, t2, e2));
}
function nt(n2, t2, e2) {
  return n2 < 0 || n2 > 1 || t2 < 1 || e2 < 1 ? Number.NaN : (t2 = Math.trunc(t2), e2 = Math.trunc(e2), i.centralF.inv(n2, t2, e2));
}
function tt(n2, t2) {
  const e2 = [], r2 = [];
  let u2 = 0, o2 = 0;
  for (let a3 = 0; a3 < Math.max(n2.length, t2.length); a3++) "number" == typeof n2[a3] && (e2.push(n2[a3]), u2 += n2[a3]), "number" == typeof t2[a3] && (r2.push(t2[a3]), o2 += t2[a3]);
  if (e2.length <= 1 || r2.length <= 1) return 1 / 0;
  u2 /= e2.length, o2 /= r2.length;
  let a2 = 0, l2 = 0;
  for (let n3 = 0; n3 < e2.length; n3++) a2 += (u2 - e2[n3]) ** 2;
  a2 /= e2.length - 1;
  for (let n3 = 0; n3 < r2.length; n3++) l2 += (o2 - r2[n3]) ** 2;
  return l2 /= r2.length - 1, 2 * i.centralF.cdf(a2 / l2, e2.length - 1, r2.length - 1);
}
function et(t2, e2 = null, r2 = null) {
  const u2 = e2.length;
  if (r2.length !== u2) throw n.BuiltIn.NA;
  const o2 = [], a2 = [];
  let l2 = true;
  for (let n2 = 0; n2 < u2; n2++) "number" == typeof e2[n2] && "number" == typeof r2[n2] && (o2.push(e2[n2]), a2.push(r2[n2]), r2[n2] !== r2[0] && (l2 = false));
  if (l2) return 1 / 0;
  const s2 = i.mean(o2), f2 = i.mean(a2);
  let c2 = 0, m2 = 0;
  const p2 = o2.length;
  for (let n2 = 0; n2 < p2; n2++) c2 += (a2[n2] - f2) * (o2[n2] - s2), m2 += (a2[n2] - f2) ** 2;
  const N2 = c2 / m2;
  return s2 - N2 * f2 + N2 * t2;
}
function rt(n2, t2 = void 0) {
  let e2 = [];
  for (let r2 = 0; r2 < n2.length; r2++) {
    const u2 = n2[r2];
    for (let n3 = 0; n3 < u2.length; n3++) {
      let r3 = u2[n3];
      null == r3 && (r3 = t2), e2.push(r3);
    }
  }
  return e2;
}
function ut(n2, t2 = null, e2 = true, r2 = false) {
  const u2 = n2.size, [o2, a2] = kn(n2, t2), l2 = i.mean(o2), s2 = i.mean(a2);
  let f2 = 0, c2 = 0;
  for (let n3 = 0; n3 < u2; n3++) f2 += (a2[n3] - s2) * (o2[n3] - l2), c2 += Math.pow(a2[n3] - s2, 2);
  const m2 = f2 / c2;
  return [m2, l2 - m2 * s2];
}
function ot(n2, t2) {
  return t2 ? i.normal.cdf(n2, 0, 1) : i.normal.pdf(n2, 0, 1);
}
function at(...n2) {
  const t2 = it(...n2);
  return Math.sqrt(t2);
}
function it(...n2) {
  let e2 = 0, r2 = 0;
  const u2 = Gn(...n2);
  for (const o2 of n2) for (const n3 of o2.values({ type: t.Number, includeMistyped: true })) "number" == typeof n3 && (e2 += Math.pow(n3 - u2, 2)), r2++;
  return e2 / (r2 - 1);
}
const lt = Object.freeze(Object.defineProperty({ __proto__: null, BETADIST: function(n2, t2, e2, r2, u2 = 0, o2 = 1) {
  return zn(n2, t2, e2, true, u2, o2);
}, BETAINV: function(n2, t2, e2, r2 = 0, u2 = 1) {
  return jn(n2, t2, e2, r2, u2);
}, BETA_DIST: zn, BETA_INV: jn, BINOMDIST: function(n2, t2, e2, r2) {
  return Wn(n2, t2, e2, r2);
}, BINOM_DIST: Wn, BINOM_DIST_RANGE: function(n2, t2, e2, r2 = e2) {
  if (n2 < 0 || t2 < 0 || t2 > 1 || e2 < 0 || e2 > n2 || r2 < e2 || r2 > n2) return Number.NaN;
  let u2 = 0;
  for (let o2 = e2; o2 <= r2; o2++) u2 += Ln(n2, o2) * Math.pow(t2, o2) * Math.pow(1 - t2, n2 - o2);
  return u2;
}, BINOM_INV: function(n2, t2, e2) {
  if (n2 < 0 || t2 < 0 || t2 > 1 || e2 < 0 || e2 > 1) return Number.NaN;
  let r2 = 0;
  for (; r2 <= n2; ) {
    if (i.binomial.cdf(r2, n2, t2) >= e2) return r2;
    r2++;
  }
}, CHIDIST: function(n2, t2) {
  return Kn(n2, t2);
}, CHIINV: function(n2, t2) {
  return $n(n2, t2);
}, CHISQ_DIST: Kn, CHISQ_DIST_RT: function(n2, t2) {
  return t2 = Math.trunc(t2), n2 < 0 || t2 < 1 || t2 > 10 ** 10 ? Number.NaN : 1 - i.chisquare.cdf(n2, t2);
}, CHISQ_INV: $n, CHISQ_INV_RT: function(n2, t2) {
  return t2 = Math.trunc(t2), n2 < 0 || n2 > 1 || t2 < 1 || t2 > 10 ** 10 ? Number.NaN : i.chisquare.inv(1 - n2, t2);
}, CHISQ_TEST: qn, CHITEST: function(n2, t2) {
  return qn(n2, t2);
}, CONFIDENCE: function(n2, t2, e2, r2) {
  return r2 = Math.trunc(r2), n2 <= 0 || n2 >= 1 || t2 <= 0 || r2 < 1 ? Number.NaN : i.normalci(e2, n2, t2, r2)[1] - 1;
}, CONFIDENCE_NORM: function(n2, t2, e2) {
  return e2 = Math.trunc(e2), n2 <= 0 || n2 >= 1 || t2 <= 0 || e2 < 1 ? Number.NaN : i.normalci(1, n2, t2, e2)[1] - 1;
}, CONFIDENCE_T: function(n2, t2, e2) {
  return e2 = Math.trunc(e2), n2 <= 0 || n2 >= 1 || t2 <= 0 || e2 < 1 ? Number.NaN : i.tci(1, n2, t2, e2)[1] - 1;
}, CORREL: function(t2, e2) {
  if (t2.length !== e2.length) throw n.BuiltIn.NA;
  const r2 = [], u2 = [];
  for (let n2 = 0; n2 < t2.length; n2++) "number" == typeof t2[n2] && "number" == typeof e2[n2] && (r2.push(t2[n2]), u2.push(e2[n2]));
  return r2.length <= 1 ? 1 / 0 : i.corrcoeff(r2, u2);
}, COVARIANCE: function(n2, t2) {
  return Qn(n2, t2);
}, COVARIANCE_P: Qn, COVARIANCE_S: function(t2, e2) {
  if (t2.length !== e2.length) throw n.BuiltIn.NA;
  const r2 = [], u2 = [];
  for (let n2 = 0; n2 < t2.length; n2++) "number" == typeof t2[n2] && "number" == typeof e2[n2] && (r2.push(t2[n2]), u2.push(e2[n2]));
  return r2.length <= 1 ? 1 / 0 : i.covariance(r2, u2);
}, CRITBINOM: function(n2, t2, e2) {
}, DEVSQ: function(...n2) {
  let t2 = 0, e2 = [];
  for (const r3 of n2) for (const n3 of r3.values()) t2 += n3, e2.push(n3);
  const r2 = e2.length, u2 = t2 / r2;
  t2 = 0;
  for (let n3 = 0; n3 < r2; n3++) t2 += (e2[n3] - u2) ** 2;
  return t2;
}, EXPONDIST: function(n2, t2, e2) {
  return Zn(n2, t2, e2);
}, EXPON_DIST: Zn, FDIST: function(n2, t2, e2) {
  return Jn(n2, t2, e2, true);
}, FINV: function(n2, t2, e2) {
  return nt(n2, t2, e2);
}, FISHER: function(n2) {
  return n2 <= -1 || n2 >= 1 ? Number.NaN : Math.log((1 + n2) / (1 - n2)) / 2;
}, FISHERINV: function(n2) {
  const t2 = Math.exp(2 * n2);
  return (t2 - 1) / (t2 + 1);
}, FORECAST: et, FORECAST_ETS: function(n2, t2, e2, r2 = 0.95, u2 = 1, o2 = 1) {
}, FORECAST_ETS_CONFINT: function(n2, t2, e2, r2 = 0.95, u2 = 0.95, o2 = 1, a2 = 1) {
}, FORECAST_ETS_SEASONALITY: function(n2, t2, e2 = 1, r2 = 1) {
}, FORECAST_ETS_STAT: function(n2, t2, e2, r2 = 1, u2 = 1, o2 = 1) {
}, FORECAST_LINEAR: function(n2, t2, e2 = null) {
  return et(n2, t2, e2);
}, FREQUENCY: function(n2, t2) {
  let e2 = rt(n2), r2 = rt(t2);
  const u2 = [];
  for (let n3 = 0; n3 < r2.length; n3++) "number" == typeof r2[n3] && u2.push(r2[n3]);
  u2.sort(), u2.push(1 / 0);
  const o2 = [];
  for (let n3 = 0; n3 < u2.length; n3++) {
    o2[n3] = [], o2[n3][0] = 0;
    for (let t3 = 0; t3 < e2.length; t3++) {
      if ("number" != typeof e2[t3]) continue;
      e2[t3] <= u2[n3] && (o2[n3][0]++, e2[t3] = null);
    }
  }
  return o2;
}, FTEST: function(n2, t2) {
  return tt(n2, t2);
}, F_DIST: Jn, F_DIST_RT: function(n2, t2, e2) {
  return n2 < 0 || t2 < 1 || e2 < 1 ? Number.NaN : (t2 = Math.trunc(t2), e2 = Math.trunc(e2), 1 - i.centralF.cdf(n2, t2, e2));
}, F_INV: nt, F_INV_RT: function(n2, t2, e2) {
  return n2 < 0 || n2 > 1 || t2 < 1 || t2 >= Math.pow(10, 10) || e2 < 1 || e2 >= Math.pow(10, 10) ? Number.NaN : (t2 = Math.trunc(t2), e2 = Math.trunc(e2), i.centralF.inv(1 - n2, t2, e2));
}, F_TEST: tt, GAMMA: function(n2) {
  return 0 === n2 || n2 < 0 && n2 === Math.trunc(n2) ? Number.NaN : i.gammafn(n2);
}, GAMMALN: function(n2) {
  return n2 <= 0 ? Number.NaN : i.gammaln(n2);
}, GAMMALN_PRECISE: function(n2) {
  return n2 <= 0 ? Number.NaN : i.gammaln(n2);
}, GAMMA_DIST: function(n2, t2, e2, r2 = false) {
  return n2 < 0 || t2 <= 0 || e2 <= 0 ? Number.NaN : r2 ? i.gamma.cdf(n2, t2, e2, true) : i.gamma.pdf(n2, t2, e2, false);
}, GAMMA_INV: function(n2, t2, e2) {
  return n2 < 0 || n2 > 1 || t2 <= 0 || e2 <= 0 ? Number.NaN : i.gamma.inv(n2, t2, e2);
}, GAUSS: function(n2) {
  return i.normal.cdf(n2, 0, 1) - 0.5;
}, GEOMEAN: function(...n2) {
  const t2 = [];
  for (const e2 of n2) for (const n3 of e2.values()) t2.push(n3);
  return i.geomean(t2);
}, GROWTH: function(t2, e2 = null, r2 = null, u2 = true) {
  const o2 = t2.length;
  for (let e3 = 0; e3 < o2; e3++) if ("number" != typeof t2[e3]) throw n.BuiltIn.Value;
  const a2 = null === e2;
  if (null === e2) {
    e2 = [];
    for (let n2 = 1; n2 <= o2; n2++) e2.push(n2);
  } else {
    const t3 = e2.length;
    if (t3 !== o2) throw n.BuiltIn.Ref;
    for (let r3 = 0; r3 < t3; r3++) if ("number" != typeof e2[r3]) throw n.BuiltIn.Value;
  }
  if (null === r2 && a2) {
    r2 = [];
    for (let n2 = 1; n2 <= o2; n2++) r2.push(n2);
    r2 = [r2];
  } else null === r2 && (r2 = Array.isArray(e2[0]) ? e2 : [e2]);
  let i2, l2, s2 = 0, f2 = 0, c2 = 0, m2 = 0;
  for (let n2 = 0; n2 < o2; n2++) {
    const r3 = e2[n2], u3 = Math.log(t2[n2]);
    s2 += r3, f2 += u3, c2 += r3 * u3, m2 += r3 * r3;
  }
  s2 /= o2, f2 /= o2, c2 /= o2, m2 /= o2, u2 ? (i2 = (c2 - s2 * f2) / (m2 - s2 * s2), l2 = f2 - i2 * s2) : (i2 = c2 / m2, l2 = 0);
  const p2 = [], N2 = r2.length;
  for (let t3 = 0; t3 < N2; t3++) {
    p2[t3] = [];
    for (let e3 = 0; e3 < r2[0].length; e3++) {
      if ("number" != typeof r2[t3][e3]) throw n.BuiltIn.Value;
      p2[t3][e3] = Math.exp(l2 + i2 * r2[t3][e3]);
    }
  }
  return p2;
}, HARMEAN: function(...n2) {
  let t2 = 0, e2 = 0;
  for (const r2 of n2) for (const n3 of r2.values()) e2 += 1 / n3, t2++;
  return t2 / e2;
}, HYPGEOM_DIST: function(n2, t2, e2, r2, u2) {
  if (n2 = Math.trunc(n2), t2 = Math.trunc(t2), e2 = Math.trunc(e2), (r2 = Math.trunc(r2)) <= 0 || n2 < 0 || t2 <= 0 || e2 <= 0) return Number.NaN;
  if (t2 > r2) return Number.NaN;
  if (e2 > r2) return Number.NaN;
  if (t2 < n2 || e2 < n2) return Number.NaN;
  if (n2 < t2 - r2 + e2) return Number.NaN;
  function o2(n3, t3, e3, r3) {
    return Ln(e3, n3) * Ln(r3 - e3, t3 - n3) / Ln(r3, t3);
  }
  return u2 ? (function(n3, t3, e3, r3) {
    let u3 = 0;
    for (let a2 = 0; a2 <= n3; a2++) u3 += o2(a2, t3, e3, r3);
    return u3;
  })(n2, t2, e2, r2) : o2(n2, t2, e2, r2);
}, INTERCEPT: function(t2, e2) {
  if (e2.length !== t2.length) throw n.BuiltIn.NA;
  const r2 = [], u2 = [];
  for (let n2 = 0; n2 < t2.length; n2++) "number" == typeof t2[n2] && "number" == typeof e2[n2] && (r2.push(t2[n2]), u2.push(e2[n2]));
  if (r2.length <= 1) return 1 / 0;
  const o2 = i.mean(r2), a2 = i.mean(u2);
  let l2 = 0, s2 = 0;
  for (let n2 = 0; n2 < r2.length; n2++) l2 += (u2[n2] - a2) * (r2[n2] - o2), s2 += (u2[n2] - a2) ** 2;
  return o2 - l2 / s2 * a2;
}, KURT: function(...n2) {
  let t2 = 0;
  const e2 = [];
  for (const r3 of n2) for (const n3 of r3.values()) t2 += n3, e2.push(n3);
  const r2 = e2.length;
  t2 /= r2;
  let u2 = 0;
  for (let n3 = 0; n3 < r2; n3++) u2 += Math.pow(e2[n3] - t2, 4);
  return u2 /= Math.pow(i.stdev(e2, true), 4), r2 * (r2 + 1) / ((r2 - 1) * (r2 - 2) * (r2 - 3)) * u2 - 3 * (r2 - 1) * (r2 - 1) / ((r2 - 2) * (r2 - 3));
}, LINEST: ut, LOGEST: function(n2, t2 = null, e2 = true, r2 = false) {
}, LOGNORM_DIST: function(n2, t2, e2, r2) {
  return n2 <= 0 || e2 <= 0 ? Number.NaN : r2 ? i.lognormal.cdf(n2, t2, e2) : i.lognormal.pdf(n2, t2, e2);
}, LOGNORM_INV: function(n2, t2, e2) {
  return n2 <= 0 || n2 >= 1 || e2 <= 0 ? Number.NaN : i.lognormal.inv(n2, t2, e2);
}, MODE_MULT: function(...n2) {
}, MODE_SNGL: function(...n2) {
}, NEGBINOM_DIST: function(n2, t2, e2, r2) {
  return n2 = Math.trunc(n2), t2 = Math.trunc(t2), e2 < 0 || e2 > 1 || n2 < 0 || t2 < 1 ? Number.NaN : r2 ? i.negbin.cdf(n2, t2, e2) : i.negbin.pdf(n2, t2, e2);
}, NORM_DIST: function(n2, t2, e2, r2) {
  return e2 <= 0 ? Number.NaN : r2 ? i.normal.cdf(n2, t2, e2) : i.normal.pdf(n2, t2, e2);
}, NORM_INV: function(n2, t2, e2) {
  return n2 <= 0 || n2 >= 1 || e2 <= 0 ? Number.NaN : i.normal.inv(n2, t2, e2);
}, NORM_S_DIST: ot, NORM_S_INV: function(n2) {
  return n2 <= 0 || n2 >= 1 ? Number.NaN : i.normal.inv(n2, 0, 1);
}, PEARSON: function(n2, t2) {
  const e2 = n2.size, [r2, u2] = kn(n2, t2), o2 = i.mean(r2), a2 = i.mean(u2);
  let l2 = 0, s2 = 0, f2 = 0;
  for (let n3 = 0; n3 < e2; n3++) l2 += (r2[n3] - o2) * (u2[n3] - a2), s2 += Math.pow(r2[n3] - o2, 2), f2 += Math.pow(u2[n3] - a2, 2);
  return l2 / Math.sqrt(s2 * f2);
}, PERCENTILE_EXC: function(n2, t2) {
}, PERCENTILE_INC: function(n2, t2) {
}, PERCENTRANK_EXC: function(n2, t2, e2 = 3) {
}, PERCENTRANK_INC: function(n2, t2, e2 = 3) {
}, PHI: function(n2) {
  return Math.exp(-0.5 * n2 * n2) / 2.5066282746310002;
}, POISSON_DIST: function(n2, t2, e2) {
  return n2 < 0 || t2 < 0 ? Number.NaN : (n2 = Math.trunc(n2), e2 ? i.poisson.cdf(n2, t2) : i.poisson.pdf(n2, t2));
}, PROB: function(n2, t2, e2, r2) {
}, QUARTILE_EXC: function(n2, t2) {
}, QUARTILE_INC: function(n2, t2) {
}, RANK_AVG: function(n2, t2, e2 = 0) {
}, RANK_EQ: function(n2, t2, e2 = 0) {
}, RSQ: function(n2, t2) {
}, SKEW: function(...n2) {
}, SKEW_P: function(...n2) {
}, SLOPE: function(n2, t2) {
  return ut(n2, t2)[0];
}, STANDARDIZE: function(n2, t2, e2) {
  return e2 <= 0 ? Number.NaN : (n2 - t2) / e2;
}, STDEVA: function(...n2) {
}, STDEVPA: function(...n2) {
}, STDEV_P: function(...n2) {
}, STDEV_S: at, STEYX: function(n2, t2) {
}, TREND: function(n2, t2 = null, e2 = null, r2 = true) {
}, TRIMMEAN: function(n2, t2) {
}, T_DIST: function(n2, t2, e2) {
  return t2 < 1 ? Number.NaN : e2 ? i.studentt.cdf(n2, t2) : i.studentt.pdf(n2, t2);
}, T_DIST_2T: function(n2, t2) {
  return t2 < 1 || n2 < 0 ? Number.NaN : 2 * (1 - i.studentt.cdf(n2, t2));
}, T_DIST_RT: function(n2, t2) {
  return t2 < 1 ? Number.NaN : 1 - i.studentt.cdf(n2, t2);
}, T_INV: function(n2, t2) {
  return n2 <= 0 || n2 > 1 || t2 < 1 ? Number.NaN : (t2 = t2 % 1 == 0 ? t2 : Math.trunc(t2), i.studentt.inv(n2, t2));
}, T_INV_2T: function(n2, t2) {
  return n2 <= 0 || n2 > 1 || t2 < 1 ? Number.NaN : (t2 = t2 % 1 == 0 ? t2 : Math.trunc(t2), Math.abs(i.studentt.inv(n2 / 2, t2)));
}, T_TEST: function(n2, t2, e2, r2) {
}, VARA: function(...n2) {
  let t2 = 0, e2 = 0;
  const r2 = Xn(...n2);
  for (const u2 of n2) for (const n3 of u2.values()) t2 += "number" == typeof n3 ? Math.pow(n3 - r2, 2) : true === n3 ? Math.pow(1 - r2, 2) : Math.pow(0 - r2, 2), e2++;
  return t2 / (e2 - 1);
}, VARPA: function(...n2) {
  const t2 = Xn(...n2);
  let e2 = 0, r2 = 0;
  for (const u2 of n2) for (const n3 of u2.values()) r2++, e2 += "number" == typeof n3 ? Math.pow(n3 - t2, 2) : true === n3 ? Math.pow(1 - t2, 2) : Math.pow(0 - t2, 2);
  return e2 / r2;
}, VAR_P: function(...t2) {
  let e2 = 0, r2 = 0;
  const u2 = Gn(...t2);
  for (const n2 of t2) for (const t3 of n2.values()) e2 += Math.pow(t3 - u2, 2), r2++;
  const o2 = e2 / r2;
  return isNaN(o2) ? n.BuiltIn.Num : o2;
}, VAR_S: it, WEIBULL_DIST: function(n2, t2, e2, r2) {
  return n2 < 0 || t2 <= 0 || e2 <= 0 ? Number.NaN : r2 ? 1 - Math.exp(-Math.pow(n2 / e2, t2)) : Math.pow(n2, t2 - 1) * Math.exp(-Math.pow(n2 / e2, t2)) * t2 / Math.pow(e2, t2);
}, Z_TEST: function(n2, t2, e2 = 0) {
  e2 = e2 || at(n2);
  const r2 = n2.size;
  return 1 - ot((Gn(n2) - t2) / (e2 / Math.sqrt(r2)), true);
} }, Symbol.toStringTag, { value: "Module" }));
globalThis.debugEventTarget ??= new EventTarget();
const st = globalThis.debugEventTarget, ft = /* @__PURE__ */ new Map();
function ct(n2) {
  const { inbox: t2, waiters: e2 } = (function(n3) {
    if (ft.has(n3)) return ft.get(n3);
    const t3 = { inbox: [], waiters: [] };
    return st.addEventListener(n3, (n4) => {
      t3.waiters.length ? t3.waiters.shift()(n4.detail) : t3.inbox.push(n4.detail);
    }), ft.set(n3, t3), t3;
  })(n2);
  return t2.length ? Promise.resolve(t2.shift()) : new Promise((n3) => e2.push(n3));
}
const mt = Object.freeze(Object.defineProperty({ __proto__: null, DELAY: async function(n2, t2, e2 = "No label") {
  return new Promise((e3) => {
    setTimeout(() => {
      e3(t2);
    }, n2);
  });
}, WAIT: async function(n2, t2) {
  const e2 = await ct(n2);
  let r2 = t2?.getValueAt(0, 0) ?? "", u2 = `event["${n2}"`;
  return void 0 !== e2 && (u2 += `, payload: ${e2}`), "" !== r2 && (u2 += `, input: ${r2}`), u2 += "]", console.log(u2), "" + e2 + r2;
} }, Symbol.toStringTag, { value: "Module" }));
const pt = Object.freeze(Object.defineProperty({ __proto__: null, BAHTTEXT: function(n2) {
  try {
    return l(n2);
  } catch (n3) {
    throw Error(`Error in https://github.com/jojoee/bahttext 
${n3.toString()}`);
  }
} }, Symbol.toStringTag, { value: "Module" })), Nt = { latin: { halfRE: /[!-~]/g, fullRE: /[!-~]/g, delta: 65248 }, hangul1: { halfRE: /[ᄀ-ᄒ]/g, fullRE: /[ᆨ-ᇂ]/g, delta: -60921 }, hangul2: { halfRE: /[ᅡ-ᅵ]/g, fullRE: /[ᅡ-ᅵ]/g, delta: -61025 }, kana: { delta: 0, half: "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚", full: "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜" }, extras: { delta: 0, half: "¢£¬¯¦¥₩ |←↑→↓■°", full: "¢£¬ ̄¦¥₩ │←↑→↓■○" } }, ht = (n2, t2) => n2[t2 + "RE"] || new RegExp("[" + n2[t2] + "]", "g"), Et = Object.keys(Nt).map((n2) => Nt[n2]), gt = (n2) => Et.reduce((n3, t2) => n3.replace(ht(t2, "half"), /* @__PURE__ */ ((n4) => (t3) => n4.delta ? String.fromCharCode(t3.charCodeAt(0) + n4.delta) : [...n4.full][[...n4.half].indexOf(t3)])(t2)), n2), It = (n2) => Et.reduce((n3, t2) => n3.replace(ht(t2, "full"), /* @__PURE__ */ ((n4) => (t3) => n4.delta ? String.fromCharCode(t3.charCodeAt(0) - n4.delta) : [...n4.half][[...n4.full].indexOf(t3)])(t2)), n2);
function Tt(t2) {
  if (0 === t2.length) throw n.BuiltIn.Value;
  return t2.charCodeAt(0);
}
function dt(t2, e2, r2 = 1) {
  if (r2 < 1 || r2 > e2.length) throw n.BuiltIn.Value;
  const u2 = e2.indexOf(t2, r2 - 1);
  if (-1 === u2) throw n.BuiltIn.Value;
  return u2 + 1;
}
function bt(t2, e2 = 1) {
  if (e2 < 0) throw n.BuiltIn.Value;
  return e2 > t2.length ? t2 : t2.slice(0, e2);
}
function Mt(t2, e2, r2) {
  if (e2 > t2.length) return "";
  if (e2 < 1 || r2 < 1) throw n.BuiltIn.Value;
  return t2.slice(e2 - 1, e2 + r2 - 1);
}
function St(n2, t2, e2, r2) {
  let u2 = n2.split("");
  return u2.splice(t2 - 1, e2, r2), u2.join("");
}
function At(t2, e2 = 1) {
  if (e2 < 0) throw n.BuiltIn.Value;
  const r2 = t2.length;
  return e2 > r2 ? t2 : t2.slice(r2 - e2);
}
function Rt(t2, e2, r2 = 1) {
  if (r2 < 1 || r2 > e2.length) throw n.BuiltIn.Value;
  let u2 = dn(t2) ? bn(t2, "i") : t2;
  const o2 = e2.slice(r2 - 1).search(u2);
  if (-1 === o2) throw n.BuiltIn.Value;
  return o2 + r2;
}
function Ct(t2, e2 = 0) {
  if (0 !== (e2 = Math.floor(e2)) && 1 !== e2) throw n.BuiltIn.Value;
  return null !== t2 ? "string" == typeof t2 ? 1 === e2 ? '"' + t2 + '"' : t2 : "boolean" == typeof t2 ? t2 ? "TRUE" : "FALSE" : t2.toString() : "";
}
const Ot = Object.freeze(Object.defineProperty({ __proto__: null, ARRAYTOTEXT: function(t2, r2 = 0) {
  if (0 !== (r2 = Math.floor(r2)) && 1 !== r2) throw n.BuiltIn.Value;
  const u2 = 1 === r2;
  let o2 = null;
  if (!u2) {
    for (const n2 of t2.values({ orientation: e.Orientation.Row })) o2 = null === o2 ? "" : o2 + ", ", o2 += Ct(n2, r2);
    return o2;
  }
  const a2 = t2.getValues();
  o2 = "{";
  for (let n2 = 0; n2 < a2.length; n2++) {
    const t3 = a2[n2];
    for (let n3 = 0; n3 < t3.length; n3++) o2 += Ct(t3[n3], r2), n3 < t3.length - 1 && (o2 += ",");
    n2 < a2.length - 1 && (o2 += ";");
  }
  return u2 && (o2 += "}"), o2;
}, ASC: function(n2) {
  return It(n2);
}, CHAR: function(t2) {
  if (t2 > 255 || t2 < 1) throw n.BuiltIn.Value;
  return String.fromCharCode(t2);
}, CLEAN: function(n2) {
  return n2.replace(/[\x00-\x1F]/g, "");
}, CODE: Tt, CONCAT: function(...r2) {
  let u2 = "", o2 = 0;
  for (const a2 of r2) for (const r3 of a2.values({ type: t.String, coerce: true, orientation: e.Orientation.Row })) {
    if (o2++ > 254) throw n.Value;
    u2 += r3;
  }
  return u2;
}, CONCATENATE: function(...e2) {
  let r2 = "", u2 = 0;
  for (const o2 of e2) {
    const e3 = o2.getValueAt(0, 0, { type: t.String, coerce: true });
    if (u2++ > 254) throw n.Value;
    r2 += e3;
  }
  return r2;
}, DBCS: function(n2) {
  return gt(n2);
}, DETECTLANGUAGE: function(n2) {
}, DOLLAR: function(n2, t2 = 2) {
  const e2 = Array(t2).fill("0").join(""), r2 = u.getRuntime(), o2 = r2.getCurrencySymbol(), a2 = r2.getNumberGroupSeparator(), i2 = r2.getNumberDecimalSeparator(), l2 = `${o2}#${a2}##0${i2}${e2}_);(${o2}#${a2}##0${i2}${e2})`;
  return u.getNumberFormat(l2, n2).trim();
}, EXACT: function(n2, t2) {
  return n2 === t2;
}, FIND: dt, FINDB: function(n2, t2, e2 = 1) {
  return dt(n2, t2, e2);
}, FIXED: function(n2, t2 = 2, e2 = false) {
  const r2 = Array(t2).fill("0").join(""), o2 = u.getRuntime(), a2 = o2.getNumberGroupSeparator(), i2 = o2.getNumberDecimalSeparator(), l2 = e2 ? "" : `#${a2}`, s2 = `${l2}##0${i2}${r2}_);(${l2}##0${i2}${r2})`;
  return u.getNumberFormat(s2, n2).trim();
}, LEFT: bt, LEFTB: function(n2, t2 = 1) {
  return bt(n2, t2);
}, LEN: function(n2) {
  return n2.length;
}, LENB: function(n2) {
  return n2.length;
}, LOWER: function(n2) {
  return n2.toLowerCase();
}, MID: Mt, MIDB: function(n2, t2, e2) {
  return Mt(n2, t2, e2);
}, NUMBERVALUE: function(t2, e2 = ".", r2 = ",") {
  if (0 === t2.length) return 0;
  if (0 === e2.length || 0 === r2.length) throw n.BuiltIn.Value;
  if ((e2 = e2[0]) === (r2 = r2[0]) || t2.indexOf(e2) < t2.lastIndexOf(r2)) throw n.BuiltIn.Value;
  const u2 = t2.replace(r2, "").replace(e2, ".").replace(/[^\-0-9.%()]/g, "").match(/([(-]*)([0-9]*[.]*[0-9]+)([)]?)([%]*)/);
  if (!u2) throw n.BuiltIn.Value;
  const o2 = u2[1].length, a2 = u2[3].length, i2 = u2[4].length;
  let l2 = Number(u2[2]);
  if (o2 > 1 || o2 && !a2 || !o2 && a2 || isNaN(l2)) throw n.BuiltIn.Value;
  return l2 /= 100 ** i2, o2 ? -l2 : l2;
}, PERCENTOF: function(n2, t2) {
}, PHONETIC: function(n2) {
}, PROPER: function(n2) {
  return (n2 = (n2 = n2.toLowerCase()).charAt(0).toUpperCase() + n2.slice(1)).replace(/(?:[^a-zA-Z])([a-zA-Z])/g, (n3) => n3.toUpperCase());
}, REGEXEXTRACT: function(n2, t2, e2 = 0, r2 = false) {
}, REGEXREPLACE: function(n2, t2, e2, r2 = 0, u2 = false) {
}, REGEXTEST: function(n2, t2, e2 = false) {
}, REPLACE: St, REPLACEB: function(n2, t2, e2, r2) {
  return St(n2, t2, e2, r2);
}, REPT: function(n2, t2) {
  let e2 = "";
  for (let r2 = 0; r2 < t2; r2++) e2 += n2;
  return e2;
}, RIGHT: At, RIGHTB: function(n2, t2 = 1) {
  return At(n2, t2);
}, SEARCH: Rt, SEARCHB: function(n2, t2, e2 = 1) {
  return Rt(n2, t2, e2);
}, SUBSTITUTE: function(t2, e2, r2, u2) {
  if (!t2 || !e2) return t2;
  if (void 0 === u2) u2 = -1;
  else if ((u2 = Math.floor(u2)) <= 0) throw new n.Value();
  let o2 = t2, a2 = 0, i2 = 0;
  for (; -1 !== (a2 = o2.indexOf(e2, a2)); ) ++i2, i2 !== u2 && -1 !== u2 || (o2 = o2.substring(0, a2) + r2 + o2.substring(a2 + e2.length)), a2 += e2.length;
  return o2;
}, T: function(n2) {
  return "string" == typeof n2 ? n2 : "";
}, TEXT: function(t2, e2) {
  try {
    return u.getNumberFormat(e2, t2);
  } catch (t3) {
    throw n.BuiltIn.Value;
  }
}, TEXTAFTER: function(t2, e2, r2 = 1, u2 = 0, o2 = 0, a2 = void 0) {
  if (!t2 || !e2) return n.BuiltIn.Value;
  if ((r2 = Math.floor(r2)) <= 0) throw n.BuiltIn.Value;
  let i2 = t2, l2 = e2;
  1 === u2 && (i2 = t2.toLowerCase(), l2 = e2.toLowerCase());
  let s2 = -1, f2 = 0;
  for (; f2 < r2; ) {
    if (s2 = i2.indexOf(l2, s2 + 1), -1 === s2) return a2 ?? n.BuiltIn.NA;
    f2++;
  }
  const c2 = t2.substring(s2 + e2.length);
  return 1 === o2 && 0 === c2.length ? "" : c2;
}, TEXTBEFORE: function(t2, e2, r2 = 1, u2 = 0, o2 = 0, a2 = void 0) {
  if (!t2 || !e2) return n.BuiltIn.Value;
  if ((r2 = Math.floor(r2)) <= 0) throw n.BuiltIn.Value;
  let i2 = t2, l2 = e2;
  1 === u2 && (i2 = t2.toLowerCase(), l2 = e2.toLowerCase());
  let s2 = -1, f2 = 0;
  for (; f2 < r2; ) {
    if (s2 = i2.indexOf(l2, s2 + 1), -1 === s2) return a2 ?? n.BuiltIn.NA;
    f2++;
  }
  const c2 = t2.substring(0, s2);
  return 1 === o2 && 0 === c2.length ? "" : c2;
}, TEXTJOIN: function(n2, r2, ...u2) {
  let o2 = "";
  for (const a2 of u2) for (const u3 of a2.values({ type: t.String, coerce: true, orientation: e.Orientation.Row, includeEmpty: !r2 })) 0 === u3.length && r2 || (o2.length > 0 && (o2 += n2), o2 += u3);
  return o2;
}, TEXTSPLIT: function(t2, e2, r2 = null, u2 = false, o2 = 0, a2 = void 0) {
  if (!t2) return [[""]];
  if (0 !== o2 && 1 !== o2) throw n.BuiltIn.Value;
  const i2 = (n2, t3, e3) => {
    if (0 === t3.length) return [n2];
    const r3 = new RegExp(t3.map((n3) => n3.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"), e3 ? "gi" : "g");
    return n2.split(r3);
  };
  let l2 = [t2];
  if (r2 && (l2 = i2(t2, r2, 1 === o2)), u2) {
    const n2 = [];
    for (let t3 = 0; t3 < l2.length; t3++) {
      const e3 = l2[t3];
      e3.length > 0 && n2.push(e3);
    }
    l2 = n2;
  }
  const s2 = [];
  let f2 = 0, c2 = Number.MAX_SAFE_INTEGER;
  for (let n2 = 0; n2 < l2.length; n2++) {
    let t3 = i2(l2[n2], e2, 1 === o2);
    if (u2) {
      const n3 = [];
      for (let e3 = 0; e3 < t3.length; e3++) {
        const r3 = t3[e3];
        r3.length > 0 && n3.push(r3);
      }
      t3 = n3;
    }
    (t3.length > 0 || !u2) && (s2.push(t3), f2 = Math.max(f2, t3.length), c2 = Math.min(c2, t3.length));
  }
  if (s2.length > 0 && c2 !== f2) {
    const t3 = a2 || n.BuiltIn.NA;
    for (let n2 = 0; n2 < s2.length; n2++) {
      const e3 = s2[n2];
      for (; e3.length < f2; ) e3.push(t3);
    }
  }
  return s2.length > 0 ? s2 : [[""]];
}, TRANSLATE: function(n2, t2, e2) {
}, TRIM: function(n2) {
  return n2.replace(/^\s+|\s+$/g, "");
}, UNICHAR: function(t2) {
  if (t2 <= 0) throw n.BuiltIn.Value;
  return String.fromCharCode(t2);
}, UNICODE: function(n2) {
  return Tt(n2);
}, UPPER: function(n2) {
  return n2.toUpperCase();
}, VALUE: function(t2) {
  const e2 = Number(t2);
  if (isNaN(e2)) throw n.BuiltIn.Value;
  return e2;
}, VALUETOTEXT: Ct }, Symbol.toStringTag, { value: "Module" }));
let Dt = null, yt = null, wt = false;
const Bt = Object.freeze(Object.defineProperty({ __proto__: null, FILTERXML: async function(t2, e2) {
  if (wt) throw n.BuiltIn.Blocked;
  if (!DOMParser || !yt) try {
    console.log("Falling back to ESM CDN for XML libraries");
    const n2 = "https://esm.sh/fontoxpath@3.33.2", t3 = "https://esm.sh/@xmldom/xmldom@0.8.11", [e3, r2] = await Promise.all([import(
      /* webpackIgnore: true */
      /* @vite-ignore */
      n2
    ), import(
      /* webpackIgnore: true */
      /* @vite-ignore */
      t3
    )]);
    yt = e3, DOMParser = r2.DOMParser, Dt = new DOMParser();
  } catch (n2) {
    throw console.error("Error loading XML libraries from CDN:", n2), new Error("Failed to load XML libraries");
  }
  if (!Dt) throw wt = true, console.warn("Unable to load XML libraries"), n.BuiltIn.Blocked;
  try {
    const n2 = Dt.parseFromString(t2, "text/xml");
    return yt.evaluateXPathToString(e2, n2, null, {});
  } catch (t3) {
    throw n.BuiltIn.Value;
  }
} }, Symbol.toStringTag, { value: "Module" }));
const Ut = Object.freeze(Object.defineProperty({ __proto__: null, ENCODEURL: function(n2) {
  return encodeURIComponent(n2);
}, WEBSERVICE: async function(t2) {
  try {
    const n2 = await fetch(t2, { method: "GET", headers: { Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "User-Agent": "SheetXL-Formula-Function-WEBSERVICE" } });
    if (!n2.ok) throw new Error(`HTTP error: ${n2.status}`);
    return await n2.text();
  } catch (t3) {
    throw n.BuiltIn.Value;
  }
} }, Symbol.toStringTag, { value: "Module" })), Lt = { CUBEKPIMEMBER: { p: [{ n: "connection", s: "s" }, { n: "kpiName", s: "s" }, { n: "kpiProperty" }, { n: "caption", s: "s", m: "?" }] }, CUBEMEMBER: { p: [{ n: "connection", s: "s" }, { n: "memberExpression", s: "s" }, { n: "caption", s: "s", m: "?" }] }, CUBEMEMBERPROPERTY: { p: [{ n: "connection", s: "s" }, { n: "memberExpression", s: "s" }, { n: "kpiProperty" }] }, CUBERANKEDMEMBER: { p: [{ n: "connection", s: "s" }, { n: "setExpression", s: "s" }, { n: "rank" }, { n: "caption", s: "s", m: "?" }] }, CUBESET: { p: [{ n: "connection", s: "s" }, { n: "setExpression", s: "s" }, { n: "caption", s: "s", m: "?" }, { n: "sortOrder", m: "?" }, { n: "sortBy", s: "s", m: "?" }] }, CUBESETCOUNT: { p: [{ n: "set", s: "s" }] }, CUBEVALUE: { p: [{ n: "connection", s: "s" }, { n: "memberExpression", s: "s", d: 1, m: "..." }] } }, _t = { DAVERAGE: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DCOUNT: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DCOUNTA: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DGET: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DMAX: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DMIN: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DPRODUCT: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DSTDEV: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DSTDEVP: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DSUM: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DVAR: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] }, DVARP: { p: [{ n: "database", r: "l" }, { n: "field", s: "s" }, { n: "criteria", s: "s", r: "l" }] } }, vt = { DATE: { p: [{ n: "year" }, { n: "month" }, { n: "day" }] }, DATEDIF: { p: [{ n: "startDate" }, { n: "endDate" }, { n: "unit", s: "s" }] }, DATESTRING: { p: [{ n: "number" }] }, DATEVALUE: { p: [{ n: "dateText", s: "s" }] }, DAY: { p: [{ n: "serialOrString", s: "*" }] }, DAYS: { p: [{ n: "endDate" }, { n: "startDate" }] }, DAYS360: { p: [{ n: "startDate" }, { n: "endDate" }, { n: "method", s: "b", m: "?" }] }, EDATE: { p: [{ n: "startDate", s: "Date" }, { n: "months" }] }, EOMONTH: { p: [{ n: "startDate", s: "Date" }, { n: "months" }] }, HOUR: { p: [{ n: "serialOrString", s: "*" }] }, ISOWEEKNUM: { p: [{ n: "serialOrString", s: "*" }] }, MINUTE: { p: [{ n: "serialOrString", s: "s" }] }, MONTH: { p: [{ n: "serialOrString", s: "s" }] }, NETWORKDAYS: { p: [{ n: "startDate", s: "Date" }, { n: "endDate", s: "Date" }, { n: "holidays", d: 1, m: "?" }] }, "NETWORKDAYS.INTL": { fn: "NETWORKDAYS_INTL", p: [{ n: "startDate", s: "Date" }, { n: "endDate", s: "Date" }, { n: "weekend", s: "z", m: "?" }, { n: "holidays", d: 1, m: "?" }] }, NOW: {}, SECOND: { p: [{ n: "serialOrString", s: "*" }] }, TIME: { p: [{ n: "hour" }, { n: "minute" }, { n: "second" }] }, TIMEVALUE: { p: [{ n: "timeText", s: "s" }] }, TODAY: {}, WEEKDAY: { p: [{ n: "serialOrString", s: "*" }, { n: "returnType", m: "?" }] }, WEEKNUM: { p: [{ n: "serialOrString", s: "z" }, { n: "returnType", m: "?" }] }, WORKDAY: { p: [{ n: "startDate", s: "Date" }, { n: "days" }, { n: "holidays", d: 1, m: "?" }] }, "WORKDAY.INTL": { fn: "WORKDAY_INTL", p: [{ n: "startDate", s: "Date" }, { n: "days" }, { n: "weekend", s: "z", m: "?" }, { n: "holidays", d: 1, m: "?" }] }, YEAR: { p: [{ n: "serialOrString", s: "*" }] }, YEARFRAC: { p: [{ n: "startDate" }, { n: "endDate" }, { n: "basis", m: "?" }] } }, Vt = { BESSELI: { p: [{ n: "x" }, { n: "n" }] }, BESSELJ: { p: [{ n: "x" }, { n: "n" }] }, BESSELK: { p: [{ n: "x" }, { n: "n" }] }, BESSELY: { p: [{ n: "x" }, { n: "n" }] } }, Pt = { BIN2DEC: { p: [{ n: "number" }] }, BIN2HEX: { p: [{ n: "number" }, { n: "places", m: "?" }] }, BIN2OCT: { p: [{ n: "number" }, { n: "places", m: "?" }] }, BITAND: { p: [{ n: "number1", s: "*" }, { n: "number2", s: "*" }] }, BITLSHIFT: { p: [{ n: "number", s: "*" }, { n: "shiftAmount" }] }, BITOR: { p: [{ n: "number1", s: "*" }, { n: "number2", s: "*" }] }, BITRSHIFT: { p: [{ n: "number", s: "*" }, { n: "shiftAmount" }] }, BITXOR: { p: [{ n: "number1", s: "*" }, { n: "number2", s: "*" }] }, DEC2BIN: { p: [{ n: "number" }, { n: "places", m: "?" }] }, DEC2HEX: { p: [{ n: "number" }, { n: "places", m: "?" }] }, DEC2OCT: { p: [{ n: "number" }, { n: "places", m: "?" }] }, HEX2BIN: { p: [{ n: "number", s: "s" }, { n: "places", m: "?" }] }, HEX2DEC: { p: [{ n: "number", s: "s" }] }, HEX2OCT: { p: [{ n: "number", s: "s" }, { n: "places", m: "?" }] }, OCT2BIN: { p: [{ n: "number", s: "s" }, { n: "places", m: "?" }] }, OCT2DEC: { p: [{ n: "number", s: "s" }] }, OCT2HEX: { p: [{ n: "number", s: "s" }, { n: "places", m: "?" }] } }, Ft = { CONVERT: { p: [{ n: "number" }, { n: "fromUnit", s: "s" }, { n: "toUnit", s: "s" }] } }, xt = { DELTA: { p: [{ n: "number1" }, { n: "number2", m: "?" }] }, GESTEP: { p: [{ n: "number" }, { n: "step", m: "?" }] } }, Ht = { ERF: { p: [{ n: "lowerLimit" }, { n: "upperLimit", m: "?" }] }, "ERF.PRECISE": { fn: "ERF_PRECISE", p: [{ n: "x" }] }, ERFC: { p: [{ n: "x" }] } }, Gt = { COMPLEX: { p: [{ n: "realNum" }, { n: "iNum" }, { n: "suffix", s: "s", m: "?" }] }, IMABS: { p: [{ n: "inumber", s: "*" }] }, IMAGINARY: { p: [{ n: "inumber", s: "*" }] }, IMARGUMENT: { p: [{ n: "inumber", s: "*" }] }, IMCONJUGATE: { p: [{ n: "inumber", s: "*" }] }, IMCOS: { p: [{ n: "inumber", s: "*" }] }, IMCOSH: { p: [{ n: "inumber", s: "*" }] }, IMCOT: { p: [{ n: "inumber", s: "*" }] }, IMCSC: { p: [{ n: "inumber", s: "*" }] }, IMCSCH: { p: [{ n: "inumber", s: "*" }] }, IMDIV: { p: [{ n: "inumber1", s: "*" }, { n: "inumber2", s: "*" }] }, IMEXP: { p: [{ n: "inumber", s: "*" }] }, IMLN: { p: [{ n: "inumber", s: "*" }] }, IMLOG10: { p: [{ n: "inumber", s: "*" }] }, IMLOG2: { p: [{ n: "inumber", s: "*" }] }, IMPOWER: { p: [{ n: "inumber", s: "*" }, { n: "number" }] }, IMPRODUCT: { p: [{ n: "inumber", s: "*", d: 1, m: "..." }] }, IMREAL: { p: [{ n: "inumber", s: "*" }] }, IMSEC: { p: [{ n: "inumber", s: "*" }] }, IMSECH: { p: [{ n: "inumber", s: "*" }] }, IMSIN: { p: [{ n: "inumber", s: "*" }] }, IMSINH: { p: [{ n: "inumber", s: "*" }] }, IMSQRT: { p: [{ n: "inumber", s: "*" }] }, IMSUB: { p: [{ n: "inumber1", s: "*" }, { n: "inumber2", s: "*" }] }, IMSUM: { p: [{ n: "inumber", s: "*", d: 1, m: "..." }] }, IMTAN: { p: [{ n: "inumber", s: "*" }] } }, Xt = { ACCRINT: { p: [{ n: "issue" }, { n: "firstInterest" }, { n: "settlement" }, { n: "rate" }, { n: "par" }, { n: "frequency" }, { n: "basis", m: "?" }, { n: "calcMethod", s: "b", m: "?" }] }, ACCRINTM: { p: [{ n: "issue" }, { n: "settlement" }, { n: "rate" }, { n: "par" }, { n: "basis", m: "?" }] }, AMORLINC: { p: [{ n: "cost" }, { n: "datePurchased" }, { n: "firstPeriod" }, { n: "salvarge" }, { n: "period" }, { n: "rate" }, { n: "basis", m: "?" }] }, COUPDAYBS: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "frequency" }, { n: "basis", m: "?" }] }, COUPDAYS: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "frequency" }, { n: "basis", m: "?" }] }, COUPNCD: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "frequency" }, { n: "basis", m: "?" }] }, COUPNUM: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "frequency" }, { n: "basis", m: "?" }] }, COUPPCD: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "frequency" }, { n: "basis", m: "?" }] }, CUMIPMT: { p: [{ n: "rate" }, { n: "nper" }, { n: "pv" }, { n: "startPeriod" }, { n: "endPeriod" }, { n: "type" }] }, CUMPRINC: { p: [{ n: "rate" }, { n: "nper" }, { n: "pv" }, { n: "startPeriod" }, { n: "endPeriod" }, { n: "type" }] }, DB: { p: [{ n: "cost" }, { n: "salvage" }, { n: "life" }, { n: "period" }, { n: "month", m: "?" }] }, DDB: { p: [{ n: "cost" }, { n: "salvage" }, { n: "life" }, { n: "period" }, { n: "factor", m: "?" }] }, DISC: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "pr" }, { n: "redemption" }, { n: "basis", m: "?" }] }, DOLLARDE: { p: [{ n: "fractionalDollar" }, { n: "fraction" }] }, DOLLARFR: { p: [{ n: "decimalDollar" }, { n: "fraction" }] }, DURATION: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "coupon" }, { n: "yld" }, { n: "frequency" }, { n: "basis", m: "?" }] }, EFFECT: { p: [{ n: "nominalRate" }, { n: "npery" }] }, FV: { p: [{ n: "rate" }, { n: "nper" }, { n: "pmt" }, { n: "pv", m: "?" }, { n: "type", m: "?", e: ["0", "1"] }] }, FVSCHEDULE: { p: [{ n: "principal" }, { n: "schedule", s: "n", r: "l" }] }, INTRATE: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "investment" }, { n: "redemption" }, { n: "basis", m: "?" }] }, IPMT: { p: [{ n: "rate" }, { n: "per" }, { n: "nper" }, { n: "pv" }, { n: "fv", m: "?" }, { n: "type", m: "?" }] }, IRR: { p: [{ n: "values", s: "n", r: "l" }, { n: "guess", m: "?" }] }, ISPMT: { p: [{ n: "rate" }, { n: "per" }, { n: "nper" }, { n: "pv" }] }, MDURATION: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "coupon" }, { n: "yld" }, { n: "frequency" }, { n: "basis", m: "?" }] }, MIRR: { p: [{ n: "values", d: 1 }, { n: "financeRate" }, { n: "reinvestRate" }] }, NOMINAL: { p: [{ n: "effectiveRate" }, { n: "npery" }] }, NPER: { p: [{ n: "rate" }, { n: "pmt" }, { n: "pv" }, { n: "fv", m: "?" }, { n: "type", m: "?" }] }, NPV: { p: [{ n: "rate" }, { n: "value", d: 1, m: "..." }] }, ODDFPRICE: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "issue" }, { n: "firstCoupon" }, { n: "yld" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, ODDFYIELD: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "issue" }, { n: "firstCoupon" }, { n: "yld" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, ODDLPRICE: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "lastInterest" }, { n: "rate" }, { n: "yld" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, ODDLYIELD: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "lastInterest" }, { n: "rate" }, { n: "pr" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, PDURATION: { p: [{ n: "rate" }, { n: "pv" }, { n: "fv" }] }, PMT: { p: [{ n: "rate" }, { n: "nper" }, { n: "pv" }, { n: "fv", m: "?" }, { n: "type", m: "?" }] }, PRICE: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "rate" }, { n: "yld" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, PRICEDISC: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "discount" }, { n: "redemption" }, { n: "basis", m: "?" }] }, PRICEMAT: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "issue" }, { n: "rate" }, { n: "yld" }, { n: "basis", m: "?" }] }, PV: { p: [{ n: "rate" }, { n: "nper" }, { n: "pmt" }, { n: "fv", m: "?" }, { n: "type", m: "?" }] }, RATE: { p: [{ n: "nper" }, { n: "pmt" }, { n: "pv" }, { n: "fv", m: "?" }, { n: "type", m: "?" }, { n: "guess", m: "?" }] }, RECEIVED: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "investment" }, { n: "discount" }, { n: "basis", m: "?" }] }, RRI: { p: [{ n: "nper" }, { n: "pv" }, { n: "fv" }] }, SLN: { p: [{ n: "cost" }, { n: "salvage" }, { n: "life" }] }, STOCKHISTORY: { p: [{ n: "stock", s: "s" }, { n: "startDate" }, { n: "endDate" }, { n: "interval", m: "?" }, { n: "headers", m: "?" }, { n: "properties", d: 1, m: "?" }] }, SYD: { p: [{ n: "cost" }, { n: "salvage" }, { n: "life" }, { n: "per" }] }, TBILLEQ: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "discount" }] }, TBILLPRICE: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "discount" }] }, TBILLYIELD: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "pr" }] }, VDB: { p: [{ n: "cost" }, { n: "salvage" }, { n: "life" }, { n: "startPeriod" }, { n: "endPeriod" }, { n: "factor", m: "?" }, { n: "noSwitch", s: "b", m: "?" }] }, XIRR: { p: [{ n: "values", s: "n", r: "l", d: 1 }, { n: "dates", s: "n", r: "l", d: 1 }, { n: "guess", m: "?" }] }, XNPV: { p: [{ n: "rate" }, { n: "values", d: 1 }, { n: "dates", d: 1 }] }, YIELD: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "rate" }, { n: "pr" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, YIELDDISC: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "pr" }, { n: "redemption" }, { n: "frequency" }, { n: "basis", m: "?" }] }, YIELDMAT: { p: [{ n: "settlement" }, { n: "maturity" }, { n: "issue" }, { n: "rate" }, { n: "pr" }, { n: "basis", m: "?" }] } }, Yt = { CELL: { p: [{ n: "infoType", s: "s", e: ["address", "col", "contents", "row", "type"] }, { n: "reference", r: "r" }] }, "ERROR.TYPE": { fn: "ERROR_TYPE", p: [{ n: "errorVal", r: "l" }] }, INFO: { p: [{ n: "typeText", s: "s", e: ["DIRECTORY", "NUMFILE", "ORIGIN", "OSVERSION", "RECALC", "RELEASE", "SYSTEM", "USER"] }] }, ISBLANK: { p: [{ n: "value", r: "l" }] }, ISERR: { p: [{ n: "value", r: "l" }] }, ISERROR: { p: [{ n: "value", r: "l" }] }, ISEVEN: { p: [{ n: "number", s: "n", r: "l" }] }, ISFORMULA: { p: [{ n: "reference", r: "r" }] }, ISLOGICAL: { p: [{ n: "value", r: "l" }] }, ISNA: { p: [{ n: "value", r: "l" }] }, ISNONTEXT: { p: [{ n: "value", r: "l" }] }, ISNUMBER: { p: [{ n: "value", r: "l" }] }, ISODD: { p: [{ n: "number", s: "n", r: "l" }] }, ISOMITTED: { p: [{ n: "argument", s: "z" }] }, ISREF: { p: [{ n: "value", r: "l" }] }, ISTEXT: { p: [{ n: "value", r: "l" }] }, N: { p: [{ n: "value", r: "l" }] }, NA: {}, SHEET: { p: [{ n: "value", s: "s", m: "?" }] }, SHEETS: { p: [{ n: "reference", r: "r", m: "?" }] }, TYPE: { p: [{ n: "value", r: "l" }] } }, kt = { AND: { p: [{ n: "logical", r: "l", d: 1, m: "..." }] }, BYCOL: { p: [{ n: "array", r: "l" }, { n: "fn", s: "z" }] }, BYROW: { p: [{ n: "array", r: "l" }, { n: "fn", s: "z" }] }, FALSE: {}, IF: { p: [{ n: "logicalTest", r: "l" }, { n: "valueIfTrue", r: "l" }, { n: "valueIfFalse", r: "l", m: "?" }] }, IFERROR: { p: [{ n: "value", r: "l" }, { n: "valueIfError", r: "l" }] }, IFNA: { p: [{ n: "value", r: "l" }, { n: "valueIfError", r: "l" }] }, IFS: { p: [{ n: "logicalTest", r: "l" }, { n: "logicalTrue", r: "l" }, { n: "rest", r: "l", d: 1, m: "..." }] }, LAMDA: { p: [{ n: "parameterOrCalculation", r: "l", d: 1, m: "..." }] }, LET: { p: [{ n: "name", s: "s" }, { n: "nameOrValue", r: "l" }, { n: "calculationOrName", r: "l" }, { n: "rest", r: "l", d: 1, m: "..." }] }, MAKEARRAY: { p: [{ n: "rows" }, { n: "columns" }, { n: "fn", r: "l" }] }, MAP: { p: [{ n: "array", r: "l" }, { n: "lamdaOrArray", r: "l", d: 1, m: "..." }] }, NOT: { p: [{ n: "logical", r: "l" }] }, OR: { p: [{ n: "logical", r: "l", d: 1, m: "..." }] }, REDUCE: { p: [{ n: "initialValue", r: "l" }, { n: "array", r: "l" }, { n: "fn", r: "l" }] }, SCAN: { p: [{ n: "initialValue", r: "l" }, { n: "array", r: "l" }, { n: "fn", r: "l" }] }, SWITCH: { p: [{ n: "expression", r: "l" }, { n: "value", r: "l" }, { n: "results", r: "l", d: 1, m: "..." }] }, TRUE: {}, XOR: { p: [{ n: "logical", r: "l", d: 1, m: "..." }] } }, zt = { ADDRESS: { p: [{ n: "rowNum" }, { n: "columnNum" }, { n: "absNum", m: "?" }, { n: "a1", s: "b", m: "?" }, { n: "sheetText", s: "s", m: "?" }] }, AREAS: { p: [{ n: "references", r: "l", d: 1, m: "..." }] }, CHOOSE: { p: [{ n: "indexNum" }, { n: "value1", r: "l" }, { n: "value", r: "l", d: 1, m: "..." }] }, CHOOSECOLS: { p: [{ n: "array", r: "l" }, { n: "colNum1" }, { n: "colNum", d: 1, m: "..." }] }, CHOOSEROWS: { p: [{ n: "array", r: "l" }, { n: "rowNum1" }, { n: "rowNum", d: 1, m: "..." }] }, COLUMN: { p: [{ n: "reference", r: "r", m: "?" }] }, COLUMNS: { p: [{ n: "array", r: "l" }] }, DROP: { p: [{ n: "array", r: "l" }, { n: "row" }, { n: "columns", m: "?" }] }, EXPAND: { p: [{ n: "array", r: "l" }, { n: "row" }, { n: "columns", m: "?" }, { n: "padWidth", s: "*", m: "?" }] }, FIELDVALUE: { p: [{ n: "value", s: "*" }, { n: "fieldName", s: "s" }] }, FILTER: { p: [{ n: "array", r: "l" }, { n: "include", r: "l" }, { n: "ifEmpty", r: "l" }] }, FORMULATEXT: { p: [{ n: "reference", r: "r" }] }, GETPIVOTDATA: { p: [{ n: "dataField", s: "s" }, { n: "pivotTable", s: "s" }, { n: "field1", s: "s" }, { n: "item1", r: "l" }] }, GROUPBY: { p: [{ n: "rowFields", r: "r" }, { n: "values", r: "l" }, { n: "fn", s: "z", d: 1 }, { n: "fieldHeaders", m: "?" }, { n: "totalDepth", m: "?" }, { n: "sortOrder", s: "z", d: 1, m: "?" }, { n: "filterArray", s: "b", d: 1, m: "?" }, { n: "fieldRelationship", m: "?" }] }, HLOOKUP: { p: [{ n: "lookupValue", s: "*" }, { n: "tableArray", r: "l" }, { n: "rowIndexNum" }, { n: "rangeLookup", s: "b", m: "?" }] }, HSTACK: { p: [{ n: "array1", r: "l" }, { n: "array", r: "l", d: 1, m: "..." }] }, HYPERLINK: { p: [{ n: "linkLocation", s: "s" }, { n: "friendlyName", s: "s", m: "?" }] }, IMAGE: { p: [{ n: "source", s: "s" }, { n: "alternateText", s: "s" }, { n: "sizing" }, { n: "height" }, { n: "width" }] }, INDEX: { p: [{ n: "array", r: "l", d: 1 }, { n: "rowNum", m: "?" }, { n: "colNum", m: "?" }, { n: "areaNum", m: "?" }] }, INDIRECT: { p: [{ n: "refText", s: "s" }, { n: "a1", s: "b", m: "?" }] }, LOOKUP: { p: [{ n: "lookupValue", s: "*" }, { n: "lookupVector", r: "l" }, { n: "resultVector", r: "l" }] }, MATCH: { p: [{ n: "lookupValue", s: "*" }, { n: "lookupArray", d: 2 }, { n: "matchType" }] }, OFFSET: { p: [{ n: "reference", r: "r" }, { n: "rows" }, { n: "cols" }, { n: "height", m: "?" }, { n: "width", m: "?" }] }, PIVOTBY: { p: [{ n: "rowFields", r: "r" }, { n: "colFields", r: "r" }, { n: "values", r: "l", d: 1 }, { n: "fn", s: "z", d: 1 }, { n: "fieldHeaders", m: "?" }, { n: "rowTotalDepth", m: "?" }, { n: "rowSortOrder", s: "z", d: 1, m: "?" }, { n: "colTotalDepth", m: "?" }, { n: "colSortOrder", s: "z", d: 1, m: "?" }, { n: "filterArray", s: "b", d: 1, m: "?" }, { n: "relativeTo", m: "?" }] }, ROW: { p: [{ n: "reference", r: "r", m: "?" }] }, ROWS: { p: [{ n: "array", r: "l" }] }, RTD: { p: [{ n: "progId", s: "s" }, { n: "server", s: "s", m: "?" }, { n: "topic", s: "s", d: 1, m: "..." }] }, SORT: { p: [{ n: "array", r: "l" }, { n: "sortIndex", d: 1, m: "?" }, { n: "sortOrder", d: 1, m: "?" }, { n: "byCol", s: "b", m: "?" }] }, SORTBY: { p: [{ n: "array", r: "l" }, { n: "byArray1", r: "l" }, { n: "sortOrder", d: 1, m: "?" }] }, TAKE: { p: [{ n: "array", r: "l" }, { n: "rows" }, { n: "columns", m: "?" }] }, TOCOL: { p: [{ n: "array", r: "l" }, { n: "ignore", m: "?", e: ["0 - Keep all values", "1 - Ignore Blanks", "2 - Ignore Errors", "3 - Ignore Blanks and Errors"] }, { n: "scanByColumn", s: "b", m: "?" }] }, TOROW: { p: [{ n: "array", r: "l" }, { n: "ignore", m: "?", e: ["0 - Keep all values", "1 - Ignore Blanks", "2 - Ignore Errors", "3 - Ignore Blanks and Errors"] }, { n: "scanByColumn", s: "b", m: "?" }] }, TRANSPOSE: { p: [{ n: "array", r: "l" }] }, TRIMRANGE: { p: [{ n: "range", r: "l" }, { n: "rowTrimMode", m: "?" }, { n: "colTrimMode", m: "?" }] }, UNIQUE: { p: [{ n: "array", r: "l" }, { n: "byCol", s: "b", m: "?" }, { n: "exactlyOnce", s: "b", m: "?" }] }, VLOOKUP: { p: [{ n: "lookupValue", s: "*" }, { n: "tableArray", r: "l" }, { n: "colIndexNum" }, { n: "rangeLookup", s: "b", m: "?" }] }, VSTACK: { p: [{ n: "array1", r: "l" }, { n: "array", r: "l", d: 1, m: "..." }] }, WRAPCOLS: { p: [{ n: "vector", r: "l" }, { n: "wrapCount" }, { n: "padWith", s: "*", m: "?" }] }, WRAPROWS: { p: [{ n: "vector", r: "l" }, { n: "wrapCount" }, { n: "padWith", s: "*", m: "?" }] }, XLOOKUP: { p: [{ n: "lookupValue", s: "*" }, { n: "lookupArray", r: "l" }, { n: "returnArray", r: "l" }, { n: "ifNotFound", s: "*" }, { n: "rangeLookup", s: "b", m: "?" }, { n: "matchMode", s: "b" }, { n: "searchMode", s: "b", m: "?" }] }, XMATCH: { p: [{ n: "lookupValue", s: "*" }, { n: "lookupArray", r: "l" }, { n: "matchMode", s: "b" }, { n: "searchMode", s: "b", m: "?" }] } }, jt = { ABS: { p: [{ n: "number" }] }, AGGREGATE: { p: [{ n: "functionNum" }, { n: "options" }, { n: "array", r: "l" }, { n: "K" }] }, ARABIC: { p: [{ n: "text", s: "s" }] }, BASE: { p: [{ n: "number" }, { n: "radix" }, { n: "minLength", m: "?" }] }, CEILING: { p: [{ n: "number" }, { n: "significance", m: "?" }] }, "CEILING.MATH": { fn: "CEILING_MATH", p: [{ n: "number" }, { n: "significance", m: "?" }, { n: "mode", m: "?" }] }, "CEILING.PRECISE": { fn: "CEILING_PRECISE", p: [{ n: "number" }, { n: "significance", m: "?" }] }, COMBIN: { p: [{ n: "number" }, { n: "numberChosen" }] }, COMBINA: { p: [{ n: "number" }, { n: "numberChosen" }] }, DECIMAL: { p: [{ n: "number", s: "s" }, { n: "radix" }] }, DEGREES: { p: [{ n: "angle" }] }, EVEN: { p: [{ n: "number" }] }, EXP: { p: [{ n: "number" }] }, FACT: { p: [{ n: "number" }] }, FACTDOUBLE: { p: [{ n: "number" }] }, FLOOR: { p: [{ n: "number" }, { n: "significance", m: "?" }] }, "FLOOR.MATH": { fn: "FLOOR_MATH", p: [{ n: "number" }, { n: "significance", m: "?" }, { n: "mode", m: "?" }] }, "FLOOR.PRECISE": { fn: "FLOOR_PRECISE", p: [{ n: "number" }, { n: "significance", m: "?" }] }, GCD: { p: [{ n: "number", d: 1, m: "..." }] }, INT: { p: [{ n: "number" }] }, "ISO.CEILING": { fn: "ISO_CEILING", p: [{ n: "number" }, { n: "significance", m: "?" }] }, LCM: { p: [{ n: "number", d: 1, m: "..." }] }, LN: { p: [{ n: "number" }] }, LOG: { p: [{ n: "number" }, { n: "base", m: "?" }] }, LOG10: { p: [{ n: "number" }] }, MDETERM: { p: [{ n: "array", d: 2 }] }, MINVERSE: { p: [{ n: "array", d: 2 }] }, MMULT: { p: [{ n: "array1", s: "z", d: 2 }, { n: "array2", s: "z", d: 2 }] }, MOD: { p: [{ n: "number" }, { n: "divisor" }] }, MROUND: { p: [{ n: "number" }, { n: "multiple" }] }, MULTINOMIAL: { p: [{ n: "number", d: 1, m: "..." }] }, MUNIT: { p: [{ n: "dimension" }] }, ODD: { p: [{ n: "number" }] }, PI: {}, POWER: { p: [{ n: "number" }, { n: "power" }] }, PRODUCT: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, QUOTIENT: { p: [{ n: "numerator" }, { n: "denominator" }] }, RADIANS: { p: [{ n: "angle" }] }, RAND: {}, RANDARRAY: { p: [{ n: "rows", m: "?" }, { n: "columns", m: "?" }, { n: "min", m: "?" }, { n: "max", m: "?" }, { n: "integer", s: "b", m: "?" }] }, RANDBETWEEN: { p: [{ n: "bottom" }, { n: "top" }] }, ROMAN: { p: [{ n: "number" }, { n: "form", m: "?" }] }, ROUND: { p: [{ n: "number" }, { n: "numDigits" }] }, ROUNDDOWN: { p: [{ n: "number" }, { n: "numDigits" }] }, ROUNDUP: { p: [{ n: "number" }, { n: "numDigits" }] }, SEQUENCE: { p: [{ n: "rows" }, { n: "columns", m: "?" }, { n: "start", m: "?" }, { n: "step", m: "?" }] }, SERIESSUM: { p: [{ n: "x" }, { n: "n" }, { n: "m" }, { n: "coefficients", d: 1, m: "..." }] }, SIGN: { p: [{ n: "number" }] }, SQRT: { p: [{ n: "number" }] }, SQRTPI: { p: [{ n: "number" }] }, SUBTOTAL: { p: [{ n: "functionNum" }, { n: "ref", r: "l", d: 1, m: "..." }] }, SUM: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, SUMIF: { p: [{ n: "range", r: "l" }, { n: "criteria", r: "l" }, { n: "sumRange", r: "r", m: "?" }] }, SUMIFS: { p: [{ n: "sumRange", r: "l" }, { n: "criteriaRange", r: "r" }, { n: "criteria", r: "l" }] }, SUMPRODUCT: { p: [{ n: "array1", s: "z", d: 2 }, { n: "rest", s: "z", d: 3, m: "..." }] }, SUMSQ: { p: [{ n: "number", r: "l", d: 1, m: "..." }] }, SUMX2MY2: { p: [{ n: "arrayX", s: "z", d: 2 }, { n: "arrayY", s: "z", d: 2 }] }, SUMX2PY2: { p: [{ n: "arrayX", s: "z", d: 2 }, { n: "arrayY", s: "z", d: 2 }] }, SUMXMY2: { p: [{ n: "arrayX", s: "z", d: 2 }, { n: "arrayY", s: "z", d: 2 }] }, TRUNC: { p: [{ n: "number" }, { n: "numDigits", m: "?" }] } }, Wt = { ACOS: { p: [{ n: "number" }] }, ACOSH: { p: [{ n: "number" }] }, ACOT: { p: [{ n: "number" }] }, ACOTH: { p: [{ n: "number" }] }, ASIN: { p: [{ n: "number" }] }, ASINH: { p: [{ n: "number" }] }, ATAN: { p: [{ n: "number" }] }, ATAN2: { p: [{ n: "x" }, { n: "y" }] }, ATANH: { p: [{ n: "number" }] }, COS: { p: [{ n: "number" }] }, COSH: { p: [{ n: "number" }] }, COT: { p: [{ n: "number" }] }, COTH: { p: [{ n: "number" }] }, CSC: { p: [{ n: "number" }] }, CSCH: { p: [{ n: "number" }] }, SEC: { p: [{ n: "number" }] }, SECH: { p: [{ n: "number" }] }, SIN: { p: [{ n: "number" }] }, SINH: { p: [{ n: "number" }] }, TAN: { p: [{ n: "number" }] }, TANH: { p: [{ n: "number" }] } }, Kt = { "BETA.DIST": { fn: "BETA_DIST", p: [{ n: "x" }, { n: "alpha" }, { n: "beta" }, { n: "cumulative", s: "b" }, { n: "a", m: "?" }, { n: "b", m: "?" }] }, BETADIST: { p: [{ n: "x" }, { n: "alpha" }, { n: "beta" }, { n: "cumulative", s: "b" }, { n: "a", m: "?" }, { n: "b", m: "?" }] }, "BETA.INV": { fn: "BETA_INV", p: [{ n: "probability" }, { n: "alpha" }, { n: "beta" }, { n: "a", m: "?" }, { n: "b", m: "?" }] }, BETAINV: { p: [{ n: "probability" }, { n: "alpha" }, { n: "beta" }, { n: "a", m: "?" }, { n: "b", m: "?" }] }, "BINOM.DIST": { fn: "BINOM_DIST", p: [{ n: "numberS" }, { n: "trials" }, { n: "probabilityS" }, { n: "cumulative", s: "b" }] }, BINOMDIST: { p: [{ n: "numberS" }, { n: "trials" }, { n: "probabilityS" }, { n: "cumulative", s: "b" }] }, "BINOM.DIST.RANGE": { fn: "BINOM_DIST_RANGE", p: [{ n: "trials" }, { n: "probabilityS" }, { n: "numberS" }, { n: "numberS2", m: "?" }] }, "BINOM.INV": { fn: "BINOM_INV", p: [{ n: "trials" }, { n: "probabilityS" }, { n: "alpha" }] }, "CHISQ.DIST": { fn: "CHISQ_DIST", p: [{ n: "x" }, { n: "degFreedom" }, { n: "cumulative", s: "b", m: "?" }] }, CHIDIST: { p: [{ n: "x" }, { n: "degFreedom" }] }, "CHISQ.DIST.RT": { fn: "CHISQ_DIST_RT", p: [{ n: "x" }, { n: "degFreedom" }] }, "CHISQ.INV": { fn: "CHISQ_INV", p: [{ n: "probability" }, { n: "degFreedom" }] }, CHIINV: { p: [{ n: "probability" }, { n: "degFreedom" }] }, "CHISQ.INV.RT": { fn: "CHISQ_INV_RT", p: [{ n: "probability" }, { n: "degFreedom" }] }, "CHISQ.TEST": { fn: "CHISQ_TEST", p: [{ n: "actualRange", s: "z", d: 2 }, { n: "expectedRange", s: "z", d: 2 }] }, CHITEST: { p: [{ n: "actualRange", s: "z", d: 2 }, { n: "expectedRange", s: "z", d: 2 }] }, "CONFIDENCE.NORM": { fn: "CONFIDENCE_NORM", p: [{ n: "alpha" }, { n: "standardDev" }, { n: "size" }] }, CONFIDENCE: { p: [{ n: "alpha" }, { n: "std" }, { n: "dev" }, { n: "size" }] }, "CONFIDENCE.T": { fn: "CONFIDENCE_T", p: [{ n: "alpha" }, { n: "standardDev" }, { n: "size" }] }, CORREL: { p: [{ n: "array1", s: "z", d: 1 }, { n: "array2", s: "z", d: 1 }] }, "COVARIANCE.P": { fn: "COVARIANCE_P", p: [{ n: "array1", s: "z", d: 1 }, { n: "array2", s: "z", d: 1 }] }, COVARIANCE: { p: [{ n: "array1", s: "z", d: 1 }, { n: "array2", s: "z", d: 1 }] }, "COVARIANCE.S": { fn: "COVARIANCE_S", p: [{ n: "array1", s: "z", d: 1 }, { n: "array2", s: "z", d: 1 }] }, CRITBINOM: { p: [{ n: "trails", s: "z", d: 2 }, { n: "probabilityS" }, { n: "alpha" }] }, DEVSQ: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, "EXPON.DIST": { fn: "EXPON_DIST", p: [{ n: "x" }, { n: "lambda" }, { n: "cumulative", s: "b" }] }, EXPONDIST: { p: [{ n: "x" }, { n: "lambda" }, { n: "cumulative", s: "b" }] }, "F.DIST": { fn: "F_DIST", p: [{ n: "x" }, { n: "degFreedom1" }, { n: "degFreedom2" }, { n: "cumulative", s: "b" }] }, FDIST: { p: [{ n: "x" }, { n: "degFreedom1" }, { n: "degFreedom2" }] }, "F.DIST.RT": { fn: "F_DIST_RT", p: [{ n: "x" }, { n: "degFreedom1" }, { n: "degFreedom2" }] }, "F.INV": { fn: "F_INV", p: [{ n: "probability" }, { n: "degFreedom1" }, { n: "degFreedom2" }] }, FINV: { p: [{ n: "probability" }, { n: "degFreedom1" }, { n: "degFreedom2" }] }, "F.INV.RT": { fn: "F_INV_RT", p: [{ n: "probability" }, { n: "degFreedom1" }, { n: "degFreedom2" }] }, "F.TEST": { fn: "F_TEST", p: [{ n: "array1", s: "z", d: 1 }, { n: "array2", s: "z", d: 1 }] }, FTEST: { p: [{ n: "array1", s: "z", d: 1 }, { n: "array2", s: "z", d: 1 }] }, FISHER: { p: [{ n: "x" }] }, FISHERINV: { p: [{ n: "y" }] }, FORECAST: { p: [{ n: "x" }, { n: "knownYs", s: "z", d: 1, m: "?" }, { n: "knownXs", s: "z", d: 1, m: "?" }] }, "FORECAST.ETS": { fn: "FORECAST_ETS", p: [{ n: "targetDate" }, { n: "values", r: "l" }, { n: "timeline", r: "l" }, { n: "seasonality", m: "?" }, { n: "dataCompletion", m: "?" }, { n: "aggregation", m: "?" }] }, "FORECAST.ETS.CONFINT": { fn: "FORECAST_ETS_CONFINT", p: [{ n: "targetDate" }, { n: "values", r: "l" }, { n: "timeline", r: "l" }, { n: "confiedenceLevel", m: "?" }, { n: "seasonality", m: "?" }, { n: "dataCompletion", m: "?" }, { n: "aggregation", m: "?" }] }, "FORECAST.ETS.SEASONALITY": { fn: "FORECAST_ETS_SEASONALITY", p: [{ n: "values", r: "l" }, { n: "timeline", r: "l" }, { n: "dataCompletion", m: "?" }, { n: "aggregation", m: "?" }] }, "FORECAST.ETS.STAT": { fn: "FORECAST_ETS_STAT", p: [{ n: "values", r: "l" }, { n: "timeline", r: "l" }, { n: "statisticType" }, { n: "seasonality", m: "?" }, { n: "dataCompletion", m: "?" }, { n: "aggregation", m: "?" }] }, "FORECAST.LINEAR": { fn: "FORECAST_LINEAR", p: [{ n: "x" }, { n: "knownYs", s: "z", d: 1 }, { n: "knownXs", s: "z", d: 1, m: "?" }] }, FREQUENCY: { p: [{ n: "dataArray", s: "z", d: 2 }, { n: "binsArray", s: "z", d: 2 }] }, GAMMA: { p: [{ n: "x" }] }, "GAMMA.DIST": { fn: "GAMMA_DIST", p: [{ n: "x" }, { n: "alpha" }, { n: "beta" }, { n: "cumulative", s: "b", m: "?" }] }, "GAMMA.INV": { fn: "GAMMA_INV", p: [{ n: "probability" }, { n: "alpha" }, { n: "beta" }] }, GAMMALN: { p: [{ n: "x" }] }, "GAMMALN.PRECISE": { fn: "GAMMALN_PRECISE", p: [{ n: "x" }] }, GAUSS: { p: [{ n: "x" }] }, GEOMEAN: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, GROWTH: { p: [{ n: "knownYs", s: "z", d: 1 }, { n: "knownXs", s: "z", d: 1, m: "?" }, { n: "newXs", s: "z", d: 2, m: "?" }, { n: "useConst", s: "b", m: "?" }] }, HARMEAN: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, "HYPGEOM.DIST": { fn: "HYPGEOM_DIST", p: [{ n: "sampleS" }, { n: "numberSample" }, { n: "populationS" }, { n: "numberPop" }, { n: "cumulative", s: "b" }] }, INTERCEPT: { p: [{ n: "knownYs", s: "z", d: 1 }, { n: "knownXs", s: "z", d: 1 }] }, KURT: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, LINEST: { p: [{ n: "knownYs", r: "l" }, { n: "knownXs", r: "l", m: "?" }, { n: "constant", s: "b", m: "?" }, { n: "stats", s: "b", m: "?" }] }, LOGEST: { p: [{ n: "knownYs", r: "l" }, { n: "knownXs", r: "l", m: "?" }, { n: "constant", s: "b", m: "?" }, { n: "stats", s: "b", m: "?" }] }, "LOGNORM.DIST": { fn: "LOGNORM_DIST", p: [{ n: "x" }, { n: "mean" }, { n: "standardDev" }, { n: "cumulative", s: "b" }] }, "LOGNORM.INV": { fn: "LOGNORM_INV", p: [{ n: "probability" }, { n: "mean" }, { n: "standardDev" }] }, "MODE.MULT": { fn: "MODE_MULT", p: [{ n: "number", r: "l", d: 1, m: "..." }] }, "MODE.SNGL": { fn: "MODE_SNGL", p: [{ n: "number", r: "l", d: 1, m: "..." }] }, "NEGBINOM.DIST": { fn: "NEGBINOM_DIST", p: [{ n: "numberF" }, { n: "numberS" }, { n: "probabilityS" }, { n: "cumulative", s: "b" }] }, "NORM.DIST": { fn: "NORM_DIST", p: [{ n: "x" }, { n: "mean" }, { n: "standardDev" }, { n: "cumulative", s: "b" }] }, "NORM.INV": { fn: "NORM_INV", p: [{ n: "probability" }, { n: "mean" }, { n: "standardDev" }] }, "NORM.S.DIST": { fn: "NORM_S_DIST", p: [{ n: "z" }, { n: "cumulative", s: "b" }] }, "NORM.S.INV": { fn: "NORM_S_INV", p: [{ n: "probability" }] }, PEARSON: { p: [{ n: "array1", r: "l" }, { n: "array2", r: "l" }] }, "PERCENTILE.EXC": { fn: "PERCENTILE_EXC", p: [{ n: "array", r: "l" }, { n: "k" }] }, "PERCENTILE.INC": { fn: "PERCENTILE_INC", p: [{ n: "array", r: "l" }, { n: "k" }] }, "PERCENTRANK.EXC": { fn: "PERCENTRANK_EXC", p: [{ n: "array", r: "l" }, { n: "x" }, { n: "significance", m: "?" }] }, "PERCENTRANK.INC": { fn: "PERCENTRANK_INC", p: [{ n: "array", r: "l" }, { n: "x" }, { n: "significance", m: "?" }] }, PHI: { p: [{ n: "x" }] }, "POISSON.DIST": { fn: "POISSON_DIST", p: [{ n: "x" }, { n: "mean" }, { n: "cumulative", s: "b" }] }, PROB: { p: [{ n: "xRange", r: "l" }, { n: "probRange", r: "l" }, { n: "lowerLimit" }, { n: "upperLimit", m: "?" }] }, "QUARTILE.EXC": { fn: "QUARTILE_EXC", p: [{ n: "array", r: "l" }, { n: "quart" }] }, "QUARTILE.INC": { fn: "QUARTILE_INC", p: [{ n: "array", r: "l" }, { n: "quart" }] }, "RANK.AVG": { fn: "RANK_AVG", p: [{ n: "number" }, { n: "ref", r: "l" }, { n: "order", m: "?" }] }, "RANK.EQ": { fn: "RANK_EQ", p: [{ n: "number" }, { n: "ref", r: "l" }, { n: "order", m: "?" }] }, RSQ: { p: [{ n: "knownYs", s: "z", d: 1 }, { n: "knownXs", s: "z", d: 1 }] }, SKEW: { p: [{ n: "number", r: "l", d: 1, m: "..." }] }, "SKEW.P": { fn: "SKEW_P", p: [{ n: "number", r: "l", d: 1, m: "..." }] }, SLOPE: { p: [{ n: "knownYs", r: "l" }, { n: "knownXs", r: "l" }] }, STANDARDIZE: { p: [{ n: "x" }, { n: "mean" }, { n: "standardDev" }] }, "STDEV.P": { fn: "STDEV_P", p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, "STDEV.S": { fn: "STDEV_S", p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, STDEVA: { p: [{ n: "value", r: "l", d: 1, m: "..." }] }, STDEVPA: { p: [{ n: "value", r: "l", d: 1, m: "..." }] }, STEYX: { p: [{ n: "knownYs", s: "z", d: 1 }, { n: "knownXs", s: "z", d: 1 }] }, "T.DIST": { fn: "T_DIST", p: [{ n: "x" }, { n: "degFreedom" }, { n: "cumulative", s: "b" }] }, "T.DIST.2T": { fn: "T_DIST_2T", p: [{ n: "x" }, { n: "degFreedom" }] }, "T.DIST.RT": { fn: "T_DIST_RT", p: [{ n: "x" }, { n: "degFreedom" }] }, "T.INV": { fn: "T_INV", p: [{ n: "probability" }, { n: "degFreedom" }] }, "T.INV.2T": { fn: "T_INV_2T", p: [{ n: "probability" }, { n: "degFreedom" }] }, "T.TEST": { fn: "T_TEST", p: [{ n: "array1", r: "l" }, { n: "array2", r: "l" }, { n: "tails" }, { n: "type" }] }, TREND: { p: [{ n: "knownYs", s: "z", d: 1 }, { n: "knownXs", s: "z", d: 1, m: "?" }, { n: "newXs", s: "z", d: 1, m: "?" }, { n: "consts", s: "b", m: "?" }] }, TRIMMEAN: { p: [{ n: "array", r: "l" }, { n: "percent", r: "l" }] }, "VAR.P": { fn: "VAR_P", p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, "VAR.S": { fn: "VAR_S", p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, VARA: { p: [{ n: "value", r: "l", d: 1, m: "..." }] }, VARPA: { p: [{ n: "value", r: "l", d: 1, m: "..." }] }, "WEIBULL.DIST": { fn: "WEIBULL_DIST", p: [{ n: "x" }, { n: "alpha" }, { n: "beta" }, { n: "cumulative", s: "b" }] }, "Z.TEST": { fn: "Z_TEST", p: [{ n: "array", r: "l" }, { n: "x" }, { n: "sigma", m: "?" }] } }, $t = { AVEDEV: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, AVERAGE: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, AVERAGEA: { p: [{ n: "value", s: "n", r: "l", d: 1, m: "..." }] }, AVERAGEIF: { p: [{ n: "range", r: "l" }, { n: "criteria", r: "l" }, { n: "averageRange", r: "r", m: "?" }] }, AVERAGEIFS: { p: [{ n: "averageRange", r: "l" }, { n: "criteriaRange", r: "l" }, { n: "criteria", r: "l", d: 1, m: "..." }] }, COUNT: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, COUNTA: { p: [{ n: "value", s: "n", r: "l", d: 1, m: "..." }] }, COUNTBLANK: { p: [{ n: "range", r: "l" }] }, COUNTIF: { p: [{ n: "range", r: "l" }, { n: "criteria", r: "l" }] }, COUNTIFS: { p: [{ n: "criteriaRange", r: "l" }, { n: "criteria", r: "l" }] }, LARGE: { p: [{ n: "array", s: "n", r: "l" }, { n: "k" }] }, MAX: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, MAXA: { p: [{ n: "value", r: "l", d: 1, m: "..." }] }, MAXIFS: { p: [{ n: "maxRange", r: "l" }, { n: "criteriaRange", r: "l" }, { n: "criteria", r: "l", d: 1, m: "..." }] }, MEDIAN: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, MIN: { p: [{ n: "number", s: "n", r: "l", d: 1, m: "..." }] }, MINA: { p: [{ n: "value", r: "l", d: 1, m: "..." }] }, MINIFS: { p: [{ n: "maxRange", r: "l" }, { n: "criteriaRange", r: "l" }, { n: "criteria", r: "l", d: 1, m: "..." }] }, PERMUT: { p: [{ n: "number" }, { n: "numberChoosen" }] }, PERMUTATIONA: { p: [{ n: "number" }, { n: "numberChoosen" }] }, SMALL: { p: [{ n: "array", s: "n", r: "l" }, { n: "k" }] } }, qt = { DELAY: { p: [{ n: "time" }, { n: "input", s: "*" }, { n: "label", s: "s", m: "?" }] }, WAIT: { p: [{ n: "type", s: "s" }, { n: "input", r: "l", m: "?" }] } }, Qt = { BAHTTEXT: { p: [{ n: "number" }] } }, Zt = { ASC: { p: [{ n: "text", s: "s" }] }, ARRAYTOTEXT: { p: [{ n: "array", r: "l" }, { n: "format", m: "?" }] }, CHAR: { p: [{ n: "number" }] }, CLEAN: { p: [{ n: "text", s: "s" }] }, CODE: { p: [{ n: "text", s: "s" }] }, CONCAT: { p: [{ n: "text", r: "l", d: 1, m: "..." }] }, CONCATENATE: { p: [{ n: "text", r: "l", d: 1, m: "..." }] }, DETECTLANGUAGE: { p: [{ n: "text", s: "s" }] }, DBCS: { p: [{ n: "text", s: "s" }] }, DOLLAR: { p: [{ n: "number" }, { n: "decimals", m: "?" }] }, EXACT: { p: [{ n: "text1", s: "s" }, { n: "text2", s: "s" }] }, FIND: { p: [{ n: "findText", s: "s" }, { n: "withinText", s: "s" }, { n: "startNum", m: "?" }] }, FINDB: { p: [{ n: "findText", s: "s" }, { n: "withinText", s: "s" }, { n: "startNum", m: "?" }] }, FIXED: { p: [{ n: "number" }, { n: "decimals", m: "?" }, { n: "noCommas", s: "b", m: "?" }] }, LEFT: { p: [{ n: "text", s: "s" }, { n: "numChars", m: "?" }] }, LEFTB: { p: [{ n: "text", s: "s" }, { n: "numBytes", m: "?" }] }, LEN: { p: [{ n: "text", s: "s" }] }, LENB: { p: [{ n: "text", s: "s" }] }, LOWER: { p: [{ n: "text", s: "s" }] }, MID: { p: [{ n: "text", s: "s" }, { n: "startNum" }, { n: "numChars" }] }, MIDB: { p: [{ n: "text", s: "s" }, { n: "startNum" }, { n: "numBytes" }] }, NUMBERVALUE: { p: [{ n: "text", s: "s" }, { n: "decimalSeparator", s: "s", m: "?" }, { n: "groupSeparator", s: "s", m: "?" }] }, PERCENTOF: { p: [{ n: "dataSubset", r: "l" }, { n: "dataAll", r: "l" }] }, PHONETIC: { p: [{ n: "reference", r: "r" }] }, PROPER: { p: [{ n: "text", s: "s" }] }, REGEXEXTRACT: { p: [{ n: "text", s: "s" }, { n: "pattern", s: "s" }, { n: "returnMode", m: "?" }, { n: "caseSensitivity", s: "b", m: "?" }] }, REGEXREPLACE: { p: [{ n: "text", s: "s" }, { n: "pattern", s: "s" }, { n: "replacement", s: "s" }, { n: "occurrence", m: "?" }, { n: "caseSensitivity", s: "b", m: "?" }] }, REGEXTEST: { p: [{ n: "text", s: "s" }, { n: "pattern", s: "s" }, { n: "caseSensitivity", s: "b", m: "?" }] }, REPLACE: { p: [{ n: "oldText", s: "s" }, { n: "startNum" }, { n: "numChars" }, { n: "newText", s: "s" }] }, REPLACEB: { p: [{ n: "oldText", s: "s" }, { n: "startNum" }, { n: "numBytes" }, { n: "newText", s: "s" }] }, REPT: { p: [{ n: "text", s: "s" }, { n: "numberTimes" }] }, RIGHT: { p: [{ n: "text", s: "s" }, { n: "numChars", m: "?" }] }, RIGHTB: { p: [{ n: "text", s: "s" }, { n: "numBytes", m: "?" }] }, SEARCH: { p: [{ n: "findText", s: "s" }, { n: "withinText", s: "s" }, { n: "startNum", m: "?" }] }, SEARCHB: { p: [{ n: "findText", s: "s" }, { n: "withinText", s: "s" }, { n: "startBytes", m: "?" }] }, SUBSTITUTE: { p: [{ n: "text", s: "s" }, { n: "oldText", s: "s" }, { n: "newText", s: "s" }, { n: "instanceNum", m: "?" }] }, T: { p: [{ n: "value", s: "*" }] }, TEXT: { p: [{ n: "value", s: "*" }, { n: "formatText", s: "s" }] }, TEXTAFTER: { p: [{ n: "text", s: "s" }, { n: "delimiter", s: "s" }, { n: "instanceNum", m: "?" }, { n: "matchMode", m: "?" }, { n: "matchEnd", m: "?" }, { n: "ifNotFound", s: "s", m: "?" }] }, TEXTJOIN: { p: [{ n: "delimiter", s: "s" }, { n: "ignoreEmpty", s: "b" }, { n: "text", r: "l", d: 1, m: "..." }] }, TEXTSPLIT: { p: [{ n: "text", s: "s" }, { n: "colDelimiter", s: "s", d: 1 }, { n: "rowDelimiter", s: "s", d: 1, m: "?" }, { n: "ignoreEmpty", s: "b", m: "?" }, { n: "matchMode", m: "?" }, { n: "padWith", s: "s", m: "?" }] }, TEXTBEFORE: { p: [{ n: "text", s: "s" }, { n: "delimiter", s: "s" }, { n: "instanceNum", m: "?" }, { n: "matchMode", m: "?" }, { n: "matchEnd", m: "?" }, { n: "ifNotFound", s: "s", m: "?" }] }, TRANSLATE: { p: [{ n: "text", s: "s" }, { n: "sourceLanguage", s: "s" }, { n: "targetLanguage", s: "s" }] }, TRIM: { p: [{ n: "text", s: "s" }] }, UNICHAR: { p: [{ n: "number" }] }, UNICODE: { p: [{ n: "text", s: "s" }] }, UPPER: { p: [{ n: "text", s: "s" }] }, VALUE: { p: [{ n: "text", s: "s" }] }, VALUETOTEXT: { p: [{ n: "value", s: "*" }, { n: "format", m: "?" }] } }, Jt = { FILTERXML: { p: [{ n: "xml", s: "s" }, { n: "xpath", s: "s" }] } }, ne = { ENCODEURL: { p: [{ n: "text", s: "s" }] }, WEBSERVICE: { p: [{ n: "url", s: "s" }] } }, te = () => import("./a_LQ18tLbXq3N9hu.mjs"), ee = () => import("./C__wCYJcwKkBqp8t.mjs"), re = () => import("./BpvIVwL4NNRKuaD7.mjs"), ue = () => import("./D7tUJDQqPM4e3FEC.mjs"), oe = () => import("./Bzw2Xms8ZtifZcAF.mjs"), ae = () => import("./Dx0TIy0V5EVTNOEZ.mjs"), ie = () => import("./DwfM2tfEPAzMl86c.mjs"), le = () => import("./8Cdp6eg5fQM4U0CD.mjs"), se = () => import("./Cou0jxSdkKrqQBPA.mjs"), fe = () => import("./Cv3hTIkdeILrJGYc.mjs"), ce = () => import("./hXx5ZKLpc4RvmCjH.mjs"), me = () => import("./PjtmxdNFMVskYmPB.mjs"), pe = () => import("./F5A4vdvxqRt8hFAs.mjs"), Ne = () => import("./Dvg1Ay14DLNhMgmD.mjs"), he = () => import("./CUqge0vhYI_M8Hpg.mjs"), Ee = () => import("./CtlHMovXY4x1NgI6.mjs"), ge = () => import("./CQXqHgLFDd57bQSy.mjs"), Ie = () => import("./C9ojFSLlGrdG3EDE.mjs"), Te = () => import("./NGg21AIVBhRCHoOh.mjs"), de = () => import("./7QlvuodPxz-B25P9.mjs"), be = () => import("./DTlPJulnTLqG3WSw.mjs"), Me = () => import("./Ctol2MswJyCxIJcQ.mjs");
function Se(n2) {
  return (function(n3, t2) {
    const e2 = /* @__PURE__ */ new Map();
    return t2(e2, n3, s, Lt, te, "Cube"), t2(e2, n3, f, _t, ee, "Database"), t2(e2, n3, U, vt, re, "Date & Time"), t2(e2, n3, L, Vt, ue, "Engineering"), t2(e2, n3, G, Pt, oe, "Engineering"), t2(e2, n3, X, Ft, ae, "Engineering"), t2(e2, n3, Y, xt, ie, "Engineering"), t2(e2, n3, k, Ht, le, "Engineering"), t2(e2, n3, un, Gt, se, "Engineering"), t2(e2, n3, hn, Xt, fe, "Financial"), t2(e2, n3, En, Yt, ce, "Information"), t2(e2, n3, Tn, kt, me, "Logical"), t2(e2, n3, Mn, zt, pe, "Lookup & Reference"), t2(e2, n3, Pn, jt, Ne, "Math & Trig"), t2(e2, n3, xn, Wt, he, "Math & Trig"), t2(e2, n3, lt, Kt, Ee, "Statistical"), t2(e2, n3, Yn, $t, ge, "Statistical"), t2(e2, n3, mt, qt, Ie, "Testing"), t2(e2, n3, pt, Qt, Te, "Text"), t2(e2, n3, Ot, Zt, de, "Text"), t2(e2, n3, Bt, Jt, be, "Web"), t2(e2, n3, Ut, ne, Me, "Web"), e2;
  })(n2, Ae);
}
const Ae = (n2, e2, u2, a2, i2, l2) => {
  const s2 = Object.keys(a2);
  for (const f2 of s2) {
    const s3 = a2[f2], c2 = f2, m2 = [], p2 = s3.p;
    if (p2) for (let n3 = 0; n3 < p2.length; n3++) {
      const e3 = p2[n3];
      let u3 = null;
      e3.s ? u3 = e3.s : e3.r || (u3 = t.Number);
      const o2 = { name: e3.n, scalar: u3, range: e3.r ?? null, arrayDepth: e3.d ?? 0, optional: "?" === e3.m, rest: "..." === e3.m, enums: e3.e ?? r.EmptyArray };
      delete o2.dim, m2.push(o2);
    }
    const N2 = { name: c2, parameters: m2, returnType: null, context: s3.c ? "calculation" : null, behavior: null }, h2 = u2[s3.fn ?? c2];
    let E2;
    const g2 = new o(N2, h2, e2, async (n3) => {
      if (!i2) return null;
      let t2;
      if (!E2) {
        t2 = (await i2()).default, E2 = t2;
      }
      const e3 = t2?.[c2];
      if (!e3) return console.warn(`No descriptor found for built-in function: ${c2}`), null;
      const u3 = e3.p;
      let o2 = u3 ? { ...u3 } : r.EmptyObject;
      const a3 = Object.keys(o2);
      if (a3.length > 0) for (let n4 = 0; n4 < a3.length; n4++) {
        const t3 = a3[n4], e4 = u3[t3], r2 = { description: e4.d ?? "", example: e4.e, defaultValue: e4.v };
        o2[t3] = r2;
      }
      return { name: c2, summary: e3.s ?? "", category: e3.c ?? l2 ?? null, parameters: o2, hidden: e3.h ?? false, links: e3.l ?? r.EmptyArray };
    }, true);
    n2.set(c2, g2);
  }
};
export {
  Se as initializeBuiltIns
};