import { g as gg, c as zt } from "./chunk-CGD3Ka0J.js";
import { s as OCA, e as _l, n as VCA } from "./chunk-BlwB2yOK.js";
function XCA(A, u) {
  for (var e = 0; e < u.length; e++) {
    const C = u[e];
    if (typeof C != "string" && !Array.isArray(C)) {
      for (const B in C)
        if (B !== "default" && !(B in A)) {
          const g = Object.getOwnPropertyDescriptor(C, B);
          g && Object.defineProperty(A, B, g.get ? g : {
            enumerable: !0,
            get: () => C[B]
          });
        }
    }
  }
  return Object.freeze(Object.defineProperty(A, Symbol.toStringTag, { value: "Module" }));
}
var Tc = { exports: {} }, fo = {}, zc = { exports: {} }, lu = {};
/**
 * @license React
 * react.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var Oh;
function _CA() {
  if (Oh) return lu;
  Oh = 1;
  var A = Symbol.for("react.element"), u = Symbol.for("react.portal"), e = Symbol.for("react.fragment"), C = Symbol.for("react.strict_mode"), B = Symbol.for("react.profiler"), g = Symbol.for("react.provider"), t = Symbol.for("react.context"), i = Symbol.for("react.forward_ref"), I = Symbol.for("react.suspense"), o = Symbol.for("react.memo"), E = Symbol.for("react.lazy"), Q = Symbol.iterator;
  function s(T) {
    return T === null || typeof T != "object" ? null : (T = Q && T[Q] || T["@@iterator"], typeof T == "function" ? T : null);
  }
  var l = { isMounted: function() {
    return !1;
  }, enqueueForceUpdate: function() {
  }, enqueueReplaceState: function() {
  }, enqueueSetState: function() {
  } }, c = Object.assign, D = {};
  function h(T, gA, GA) {
    this.props = T, this.context = gA, this.refs = D, this.updater = GA || l;
  }
  h.prototype.isReactComponent = {}, h.prototype.setState = function(T, gA) {
    if (typeof T != "object" && typeof T != "function" && T != null) throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
    this.updater.enqueueSetState(this, T, gA, "setState");
  }, h.prototype.forceUpdate = function(T) {
    this.updater.enqueueForceUpdate(this, T, "forceUpdate");
  };
  function F() {
  }
  F.prototype = h.prototype;
  function m(T, gA, GA) {
    this.props = T, this.context = gA, this.refs = D, this.updater = GA || l;
  }
  var p = m.prototype = new F();
  p.constructor = m, c(p, h.prototype), p.isPureReactComponent = !0;
  var k = Array.isArray, b = Object.prototype.hasOwnProperty, f = { current: null }, L = { key: !0, ref: !0, __self: !0, __source: !0 };
  function N(T, gA, GA) {
    var fA, qA = {}, JA = null, mA = null;
    if (gA != null) for (fA in gA.ref !== void 0 && (mA = gA.ref), gA.key !== void 0 && (JA = "" + gA.key), gA) b.call(gA, fA) && !L.hasOwnProperty(fA) && (qA[fA] = gA[fA]);
    var FA = arguments.length - 2;
    if (FA === 1) qA.children = GA;
    else if (1 < FA) {
      for (var TA = Array(FA), WA = 0; WA < FA; WA++) TA[WA] = arguments[WA + 2];
      qA.children = TA;
    }
    if (T && T.defaultProps) for (fA in FA = T.defaultProps, FA) qA[fA] === void 0 && (qA[fA] = FA[fA]);
    return { $$typeof: A, type: T, key: JA, ref: mA, props: qA, _owner: f.current };
  }
  function M(T, gA) {
    return { $$typeof: A, type: T.type, key: gA, ref: T.ref, props: T.props, _owner: T._owner };
  }
  function v(T) {
    return typeof T == "object" && T !== null && T.$$typeof === A;
  }
  function K(T) {
    var gA = { "=": "=0", ":": "=2" };
    return "$" + T.replace(/[=:]/g, function(GA) {
      return gA[GA];
    });
  }
  var q = /\/+/g;
  function j(T, gA) {
    return typeof T == "object" && T !== null && T.key != null ? K("" + T.key) : gA.toString(36);
  }
  function uA(T, gA, GA, fA, qA) {
    var JA = typeof T;
    (JA === "undefined" || JA === "boolean") && (T = null);
    var mA = !1;
    if (T === null) mA = !0;
    else switch (JA) {
      case "string":
      case "number":
        mA = !0;
        break;
      case "object":
        switch (T.$$typeof) {
          case A:
          case u:
            mA = !0;
        }
    }
    if (mA) return mA = T, qA = qA(mA), T = fA === "" ? "." + j(mA, 0) : fA, k(qA) ? (GA = "", T != null && (GA = T.replace(q, "$&/") + "/"), uA(qA, gA, GA, "", function(WA) {
      return WA;
    })) : qA != null && (v(qA) && (qA = M(qA, GA + (!qA.key || mA && mA.key === qA.key ? "" : ("" + qA.key).replace(q, "$&/") + "/") + T)), gA.push(qA)), 1;
    if (mA = 0, fA = fA === "" ? "." : fA + ":", k(T)) for (var FA = 0; FA < T.length; FA++) {
      JA = T[FA];
      var TA = fA + j(JA, FA);
      mA += uA(JA, gA, GA, TA, qA);
    }
    else if (TA = s(T), typeof TA == "function") for (T = TA.call(T), FA = 0; !(JA = T.next()).done; ) JA = JA.value, TA = fA + j(JA, FA++), mA += uA(JA, gA, GA, TA, qA);
    else if (JA === "object") throw gA = String(T), Error("Objects are not valid as a React child (found: " + (gA === "[object Object]" ? "object with keys {" + Object.keys(T).join(", ") + "}" : gA) + "). If you meant to render a collection of children, use an array instead.");
    return mA;
  }
  function O(T, gA, GA) {
    if (T == null) return T;
    var fA = [], qA = 0;
    return uA(T, fA, "", "", function(JA) {
      return gA.call(GA, JA, qA++);
    }), fA;
  }
  function $(T) {
    if (T._status === -1) {
      var gA = T._result;
      gA = gA(), gA.then(function(GA) {
        (T._status === 0 || T._status === -1) && (T._status = 1, T._result = GA);
      }, function(GA) {
        (T._status === 0 || T._status === -1) && (T._status = 2, T._result = GA);
      }), T._status === -1 && (T._status = 0, T._result = gA);
    }
    if (T._status === 1) return T._result.default;
    throw T._result;
  }
  var X = { current: null }, P = { transition: null }, _ = { ReactCurrentDispatcher: X, ReactCurrentBatchConfig: P, ReactCurrentOwner: f };
  function CA() {
    throw Error("act(...) is not supported in production builds of React.");
  }
  return lu.Children = { map: O, forEach: function(T, gA, GA) {
    O(T, function() {
      gA.apply(this, arguments);
    }, GA);
  }, count: function(T) {
    var gA = 0;
    return O(T, function() {
      gA++;
    }), gA;
  }, toArray: function(T) {
    return O(T, function(gA) {
      return gA;
    }) || [];
  }, only: function(T) {
    if (!v(T)) throw Error("React.Children.only expected to receive a single React element child.");
    return T;
  } }, lu.Component = h, lu.Fragment = e, lu.Profiler = B, lu.PureComponent = m, lu.StrictMode = C, lu.Suspense = I, lu.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _, lu.act = CA, lu.cloneElement = function(T, gA, GA) {
    if (T == null) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + T + ".");
    var fA = c({}, T.props), qA = T.key, JA = T.ref, mA = T._owner;
    if (gA != null) {
      if (gA.ref !== void 0 && (JA = gA.ref, mA = f.current), gA.key !== void 0 && (qA = "" + gA.key), T.type && T.type.defaultProps) var FA = T.type.defaultProps;
      for (TA in gA) b.call(gA, TA) && !L.hasOwnProperty(TA) && (fA[TA] = gA[TA] === void 0 && FA !== void 0 ? FA[TA] : gA[TA]);
    }
    var TA = arguments.length - 2;
    if (TA === 1) fA.children = GA;
    else if (1 < TA) {
      FA = Array(TA);
      for (var WA = 0; WA < TA; WA++) FA[WA] = arguments[WA + 2];
      fA.children = FA;
    }
    return { $$typeof: A, type: T.type, key: qA, ref: JA, props: fA, _owner: mA };
  }, lu.createContext = function(T) {
    return T = { $$typeof: t, _currentValue: T, _currentValue2: T, _threadCount: 0, Provider: null, Consumer: null, _defaultValue: null, _globalName: null }, T.Provider = { $$typeof: g, _context: T }, T.Consumer = T;
  }, lu.createElement = N, lu.createFactory = function(T) {
    var gA = N.bind(null, T);
    return gA.type = T, gA;
  }, lu.createRef = function() {
    return { current: null };
  }, lu.forwardRef = function(T) {
    return { $$typeof: i, render: T };
  }, lu.isValidElement = v, lu.lazy = function(T) {
    return { $$typeof: E, _payload: { _status: -1, _result: T }, _init: $ };
  }, lu.memo = function(T, gA) {
    return { $$typeof: o, type: T, compare: gA === void 0 ? null : gA };
  }, lu.startTransition = function(T) {
    var gA = P.transition;
    P.transition = {};
    try {
      T();
    } finally {
      P.transition = gA;
    }
  }, lu.unstable_act = CA, lu.useCallback = function(T, gA) {
    return X.current.useCallback(T, gA);
  }, lu.useContext = function(T) {
    return X.current.useContext(T);
  }, lu.useDebugValue = function() {
  }, lu.useDeferredValue = function(T) {
    return X.current.useDeferredValue(T);
  }, lu.useEffect = function(T, gA) {
    return X.current.useEffect(T, gA);
  }, lu.useId = function() {
    return X.current.useId();
  }, lu.useImperativeHandle = function(T, gA, GA) {
    return X.current.useImperativeHandle(T, gA, GA);
  }, lu.useInsertionEffect = function(T, gA) {
    return X.current.useInsertionEffect(T, gA);
  }, lu.useLayoutEffect = function(T, gA) {
    return X.current.useLayoutEffect(T, gA);
  }, lu.useMemo = function(T, gA) {
    return X.current.useMemo(T, gA);
  }, lu.useReducer = function(T, gA, GA) {
    return X.current.useReducer(T, gA, GA);
  }, lu.useRef = function(T) {
    return X.current.useRef(T);
  }, lu.useState = function(T) {
    return X.current.useState(T);
  }, lu.useSyncExternalStore = function(T, gA, GA) {
    return X.current.useSyncExternalStore(T, gA, GA);
  }, lu.useTransition = function() {
    return X.current.useTransition();
  }, lu.version = "18.3.1", lu;
}
var Vh;
function tn() {
  return Vh || (Vh = 1, zc.exports = _CA()), zc.exports;
}
/**
 * @license React
 * react-jsx-runtime.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var Xh;
function $CA() {
  if (Xh) return fo;
  Xh = 1;
  var A = tn(), u = Symbol.for("react.element"), e = Symbol.for("react.fragment"), C = Object.prototype.hasOwnProperty, B = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, g = { key: !0, ref: !0, __self: !0, __source: !0 };
  function t(i, I, o) {
    var E, Q = {}, s = null, l = null;
    o !== void 0 && (s = "" + o), I.key !== void 0 && (s = "" + I.key), I.ref !== void 0 && (l = I.ref);
    for (E in I) C.call(I, E) && !g.hasOwnProperty(E) && (Q[E] = I[E]);
    if (i && i.defaultProps) for (E in I = i.defaultProps, I) Q[E] === void 0 && (Q[E] = I[E]);
    return { $$typeof: u, type: i, key: s, ref: l, props: Q, _owner: B.current };
  }
  return fo.Fragment = e, fo.jsx = t, fo.jsxs = t, fo;
}
var _h;
function ABA() {
  return _h || (_h = 1, Tc.exports = $CA()), Tc.exports;
}
var r = ABA(), Pc = { exports: {} }, Ke = {}, Oc = { exports: {} }, Vc = {};
/**
 * @license React
 * scheduler.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var $h;
function uBA() {
  return $h || ($h = 1, (function(A) {
    function u(P, _) {
      var CA = P.length;
      P.push(_);
      A: for (; 0 < CA; ) {
        var T = CA - 1 >>> 1, gA = P[T];
        if (0 < B(gA, _)) P[T] = _, P[CA] = gA, CA = T;
        else break A;
      }
    }
    function e(P) {
      return P.length === 0 ? null : P[0];
    }
    function C(P) {
      if (P.length === 0) return null;
      var _ = P[0], CA = P.pop();
      if (CA !== _) {
        P[0] = CA;
        A: for (var T = 0, gA = P.length, GA = gA >>> 1; T < GA; ) {
          var fA = 2 * (T + 1) - 1, qA = P[fA], JA = fA + 1, mA = P[JA];
          if (0 > B(qA, CA)) JA < gA && 0 > B(mA, qA) ? (P[T] = mA, P[JA] = CA, T = JA) : (P[T] = qA, P[fA] = CA, T = fA);
          else if (JA < gA && 0 > B(mA, CA)) P[T] = mA, P[JA] = CA, T = JA;
          else break A;
        }
      }
      return _;
    }
    function B(P, _) {
      var CA = P.sortIndex - _.sortIndex;
      return CA !== 0 ? CA : P.id - _.id;
    }
    if (typeof performance == "object" && typeof performance.now == "function") {
      var g = performance;
      A.unstable_now = function() {
        return g.now();
      };
    } else {
      var t = Date, i = t.now();
      A.unstable_now = function() {
        return t.now() - i;
      };
    }
    var I = [], o = [], E = 1, Q = null, s = 3, l = !1, c = !1, D = !1, h = typeof setTimeout == "function" ? setTimeout : null, F = typeof clearTimeout == "function" ? clearTimeout : null, m = typeof setImmediate < "u" ? setImmediate : null;
    typeof navigator < "u" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 && navigator.scheduling.isInputPending.bind(navigator.scheduling);
    function p(P) {
      for (var _ = e(o); _ !== null; ) {
        if (_.callback === null) C(o);
        else if (_.startTime <= P) C(o), _.sortIndex = _.expirationTime, u(I, _);
        else break;
        _ = e(o);
      }
    }
    function k(P) {
      if (D = !1, p(P), !c) if (e(I) !== null) c = !0, $(b);
      else {
        var _ = e(o);
        _ !== null && X(k, _.startTime - P);
      }
    }
    function b(P, _) {
      c = !1, D && (D = !1, F(N), N = -1), l = !0;
      var CA = s;
      try {
        for (p(_), Q = e(I); Q !== null && (!(Q.expirationTime > _) || P && !K()); ) {
          var T = Q.callback;
          if (typeof T == "function") {
            Q.callback = null, s = Q.priorityLevel;
            var gA = T(Q.expirationTime <= _);
            _ = A.unstable_now(), typeof gA == "function" ? Q.callback = gA : Q === e(I) && C(I), p(_);
          } else C(I);
          Q = e(I);
        }
        if (Q !== null) var GA = !0;
        else {
          var fA = e(o);
          fA !== null && X(k, fA.startTime - _), GA = !1;
        }
        return GA;
      } finally {
        Q = null, s = CA, l = !1;
      }
    }
    var f = !1, L = null, N = -1, M = 5, v = -1;
    function K() {
      return !(A.unstable_now() - v < M);
    }
    function q() {
      if (L !== null) {
        var P = A.unstable_now();
        v = P;
        var _ = !0;
        try {
          _ = L(!0, P);
        } finally {
          _ ? j() : (f = !1, L = null);
        }
      } else f = !1;
    }
    var j;
    if (typeof m == "function") j = function() {
      m(q);
    };
    else if (typeof MessageChannel < "u") {
      var uA = new MessageChannel(), O = uA.port2;
      uA.port1.onmessage = q, j = function() {
        O.postMessage(null);
      };
    } else j = function() {
      h(q, 0);
    };
    function $(P) {
      L = P, f || (f = !0, j());
    }
    function X(P, _) {
      N = h(function() {
        P(A.unstable_now());
      }, _);
    }
    A.unstable_IdlePriority = 5, A.unstable_ImmediatePriority = 1, A.unstable_LowPriority = 4, A.unstable_NormalPriority = 3, A.unstable_Profiling = null, A.unstable_UserBlockingPriority = 2, A.unstable_cancelCallback = function(P) {
      P.callback = null;
    }, A.unstable_continueExecution = function() {
      c || l || (c = !0, $(b));
    }, A.unstable_forceFrameRate = function(P) {
      0 > P || 125 < P ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : M = 0 < P ? Math.floor(1e3 / P) : 5;
    }, A.unstable_getCurrentPriorityLevel = function() {
      return s;
    }, A.unstable_getFirstCallbackNode = function() {
      return e(I);
    }, A.unstable_next = function(P) {
      switch (s) {
        case 1:
        case 2:
        case 3:
          var _ = 3;
          break;
        default:
          _ = s;
      }
      var CA = s;
      s = _;
      try {
        return P();
      } finally {
        s = CA;
      }
    }, A.unstable_pauseExecution = function() {
    }, A.unstable_requestPaint = function() {
    }, A.unstable_runWithPriority = function(P, _) {
      switch (P) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
          break;
        default:
          P = 3;
      }
      var CA = s;
      s = P;
      try {
        return _();
      } finally {
        s = CA;
      }
    }, A.unstable_scheduleCallback = function(P, _, CA) {
      var T = A.unstable_now();
      switch (typeof CA == "object" && CA !== null ? (CA = CA.delay, CA = typeof CA == "number" && 0 < CA ? T + CA : T) : CA = T, P) {
        case 1:
          var gA = -1;
          break;
        case 2:
          gA = 250;
          break;
        case 5:
          gA = 1073741823;
          break;
        case 4:
          gA = 1e4;
          break;
        default:
          gA = 5e3;
      }
      return gA = CA + gA, P = { id: E++, callback: _, priorityLevel: P, startTime: CA, expirationTime: gA, sortIndex: -1 }, CA > T ? (P.sortIndex = CA, u(o, P), e(I) === null && P === e(o) && (D ? (F(N), N = -1) : D = !0, X(k, CA - T))) : (P.sortIndex = gA, u(I, P), c || l || (c = !0, $(b))), P;
    }, A.unstable_shouldYield = K, A.unstable_wrapCallback = function(P) {
      var _ = s;
      return function() {
        var CA = s;
        s = _;
        try {
          return P.apply(this, arguments);
        } finally {
          s = CA;
        }
      };
    };
  })(Vc)), Vc;
}
var Aw;
function eBA() {
  return Aw || (Aw = 1, Oc.exports = uBA()), Oc.exports;
}
/**
 * @license React
 * react-dom.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var uw;
function CBA() {
  if (uw) return Ke;
  uw = 1;
  var A = tn(), u = eBA();
  function e(a) {
    for (var n = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, d = 1; d < arguments.length; d++) n += "&args[]=" + encodeURIComponent(arguments[d]);
    return "Minified React error #" + a + "; visit " + n + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
  }
  var C = /* @__PURE__ */ new Set(), B = {};
  function g(a, n) {
    t(a, n), t(a + "Capture", n);
  }
  function t(a, n) {
    for (B[a] = n, a = 0; a < n.length; a++) C.add(n[a]);
  }
  var i = !(typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u"), I = Object.prototype.hasOwnProperty, o = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, E = {}, Q = {};
  function s(a) {
    return I.call(Q, a) ? !0 : I.call(E, a) ? !1 : o.test(a) ? Q[a] = !0 : (E[a] = !0, !1);
  }
  function l(a, n, d, w) {
    if (d !== null && d.type === 0) return !1;
    switch (typeof n) {
      case "function":
      case "symbol":
        return !0;
      case "boolean":
        return w ? !1 : d !== null ? !d.acceptsBooleans : (a = a.toLowerCase().slice(0, 5), a !== "data-" && a !== "aria-");
      default:
        return !1;
    }
  }
  function c(a, n, d, w) {
    if (n === null || typeof n > "u" || l(a, n, d, w)) return !0;
    if (w) return !1;
    if (d !== null) switch (d.type) {
      case 3:
        return !n;
      case 4:
        return n === !1;
      case 5:
        return isNaN(n);
      case 6:
        return isNaN(n) || 1 > n;
    }
    return !1;
  }
  function D(a, n, d, w, y, G, H) {
    this.acceptsBooleans = n === 2 || n === 3 || n === 4, this.attributeName = w, this.attributeNamespace = y, this.mustUseProperty = d, this.propertyName = a, this.type = n, this.sanitizeURL = G, this.removeEmptyString = H;
  }
  var h = {};
  "children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a) {
    h[a] = new D(a, 0, !1, a, null, !1, !1);
  }), [["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(a) {
    var n = a[0];
    h[n] = new D(n, 1, !1, a[1], null, !1, !1);
  }), ["contentEditable", "draggable", "spellCheck", "value"].forEach(function(a) {
    h[a] = new D(a, 2, !1, a.toLowerCase(), null, !1, !1);
  }), ["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(a) {
    h[a] = new D(a, 2, !1, a, null, !1, !1);
  }), "allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a) {
    h[a] = new D(a, 3, !1, a.toLowerCase(), null, !1, !1);
  }), ["checked", "multiple", "muted", "selected"].forEach(function(a) {
    h[a] = new D(a, 3, !0, a, null, !1, !1);
  }), ["capture", "download"].forEach(function(a) {
    h[a] = new D(a, 4, !1, a, null, !1, !1);
  }), ["cols", "rows", "size", "span"].forEach(function(a) {
    h[a] = new D(a, 6, !1, a, null, !1, !1);
  }), ["rowSpan", "start"].forEach(function(a) {
    h[a] = new D(a, 5, !1, a.toLowerCase(), null, !1, !1);
  });
  var F = /[\-:]([a-z])/g;
  function m(a) {
    return a[1].toUpperCase();
  }
  "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a) {
    var n = a.replace(
      F,
      m
    );
    h[n] = new D(n, 1, !1, a, null, !1, !1);
  }), "xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a) {
    var n = a.replace(F, m);
    h[n] = new D(n, 1, !1, a, "http://www.w3.org/1999/xlink", !1, !1);
  }), ["xml:base", "xml:lang", "xml:space"].forEach(function(a) {
    var n = a.replace(F, m);
    h[n] = new D(n, 1, !1, a, "http://www.w3.org/XML/1998/namespace", !1, !1);
  }), ["tabIndex", "crossOrigin"].forEach(function(a) {
    h[a] = new D(a, 1, !1, a.toLowerCase(), null, !1, !1);
  }), h.xlinkHref = new D("xlinkHref", 1, !1, "xlink:href", "http://www.w3.org/1999/xlink", !0, !1), ["src", "href", "action", "formAction"].forEach(function(a) {
    h[a] = new D(a, 1, !1, a.toLowerCase(), null, !0, !0);
  });
  function p(a, n, d, w) {
    var y = h.hasOwnProperty(n) ? h[n] : null;
    (y !== null ? y.type !== 0 : w || !(2 < n.length) || n[0] !== "o" && n[0] !== "O" || n[1] !== "n" && n[1] !== "N") && (c(n, d, y, w) && (d = null), w || y === null ? s(n) && (d === null ? a.removeAttribute(n) : a.setAttribute(n, "" + d)) : y.mustUseProperty ? a[y.propertyName] = d === null ? y.type === 3 ? !1 : "" : d : (n = y.attributeName, w = y.attributeNamespace, d === null ? a.removeAttribute(n) : (y = y.type, d = y === 3 || y === 4 && d === !0 ? "" : "" + d, w ? a.setAttributeNS(w, n, d) : a.setAttribute(n, d))));
  }
  var k = A.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, b = Symbol.for("react.element"), f = Symbol.for("react.portal"), L = Symbol.for("react.fragment"), N = Symbol.for("react.strict_mode"), M = Symbol.for("react.profiler"), v = Symbol.for("react.provider"), K = Symbol.for("react.context"), q = Symbol.for("react.forward_ref"), j = Symbol.for("react.suspense"), uA = Symbol.for("react.suspense_list"), O = Symbol.for("react.memo"), $ = Symbol.for("react.lazy"), X = Symbol.for("react.offscreen"), P = Symbol.iterator;
  function _(a) {
    return a === null || typeof a != "object" ? null : (a = P && a[P] || a["@@iterator"], typeof a == "function" ? a : null);
  }
  var CA = Object.assign, T;
  function gA(a) {
    if (T === void 0) try {
      throw Error();
    } catch (d) {
      var n = d.stack.trim().match(/\n( *(at )?)/);
      T = n && n[1] || "";
    }
    return `
` + T + a;
  }
  var GA = !1;
  function fA(a, n) {
    if (!a || GA) return "";
    GA = !0;
    var d = Error.prepareStackTrace;
    Error.prepareStackTrace = void 0;
    try {
      if (n) if (n = function() {
        throw Error();
      }, Object.defineProperty(n.prototype, "props", { set: function() {
        throw Error();
      } }), typeof Reflect == "object" && Reflect.construct) {
        try {
          Reflect.construct(n, []);
        } catch (IA) {
          var w = IA;
        }
        Reflect.construct(a, [], n);
      } else {
        try {
          n.call();
        } catch (IA) {
          w = IA;
        }
        a.call(n.prototype);
      }
      else {
        try {
          throw Error();
        } catch (IA) {
          w = IA;
        }
        a();
      }
    } catch (IA) {
      if (IA && w && typeof IA.stack == "string") {
        for (var y = IA.stack.split(`
`), G = w.stack.split(`
`), H = y.length - 1, W = G.length - 1; 1 <= H && 0 <= W && y[H] !== G[W]; ) W--;
        for (; 1 <= H && 0 <= W; H--, W--) if (y[H] !== G[W]) {
          if (H !== 1 || W !== 1)
            do
              if (H--, W--, 0 > W || y[H] !== G[W]) {
                var V = `
` + y[H].replace(" at new ", " at ");
                return a.displayName && V.includes("<anonymous>") && (V = V.replace("<anonymous>", a.displayName)), V;
              }
            while (1 <= H && 0 <= W);
          break;
        }
      }
    } finally {
      GA = !1, Error.prepareStackTrace = d;
    }
    return (a = a ? a.displayName || a.name : "") ? gA(a) : "";
  }
  function qA(a) {
    switch (a.tag) {
      case 5:
        return gA(a.type);
      case 16:
        return gA("Lazy");
      case 13:
        return gA("Suspense");
      case 19:
        return gA("SuspenseList");
      case 0:
      case 2:
      case 15:
        return a = fA(a.type, !1), a;
      case 11:
        return a = fA(a.type.render, !1), a;
      case 1:
        return a = fA(a.type, !0), a;
      default:
        return "";
    }
  }
  function JA(a) {
    if (a == null) return null;
    if (typeof a == "function") return a.displayName || a.name || null;
    if (typeof a == "string") return a;
    switch (a) {
      case L:
        return "Fragment";
      case f:
        return "Portal";
      case M:
        return "Profiler";
      case N:
        return "StrictMode";
      case j:
        return "Suspense";
      case uA:
        return "SuspenseList";
    }
    if (typeof a == "object") switch (a.$$typeof) {
      case K:
        return (a.displayName || "Context") + ".Consumer";
      case v:
        return (a._context.displayName || "Context") + ".Provider";
      case q:
        var n = a.render;
        return a = a.displayName, a || (a = n.displayName || n.name || "", a = a !== "" ? "ForwardRef(" + a + ")" : "ForwardRef"), a;
      case O:
        return n = a.displayName || null, n !== null ? n : JA(a.type) || "Memo";
      case $:
        n = a._payload, a = a._init;
        try {
          return JA(a(n));
        } catch {
        }
    }
    return null;
  }
  function mA(a) {
    var n = a.type;
    switch (a.tag) {
      case 24:
        return "Cache";
      case 9:
        return (n.displayName || "Context") + ".Consumer";
      case 10:
        return (n._context.displayName || "Context") + ".Provider";
      case 18:
        return "DehydratedFragment";
      case 11:
        return a = n.render, a = a.displayName || a.name || "", n.displayName || (a !== "" ? "ForwardRef(" + a + ")" : "ForwardRef");
      case 7:
        return "Fragment";
      case 5:
        return n;
      case 4:
        return "Portal";
      case 3:
        return "Root";
      case 6:
        return "Text";
      case 16:
        return JA(n);
      case 8:
        return n === N ? "StrictMode" : "Mode";
      case 22:
        return "Offscreen";
      case 12:
        return "Profiler";
      case 21:
        return "Scope";
      case 13:
        return "Suspense";
      case 19:
        return "SuspenseList";
      case 25:
        return "TracingMarker";
      case 1:
      case 0:
      case 17:
      case 2:
      case 14:
      case 15:
        if (typeof n == "function") return n.displayName || n.name || null;
        if (typeof n == "string") return n;
    }
    return null;
  }
  function FA(a) {
    switch (typeof a) {
      case "boolean":
      case "number":
      case "string":
      case "undefined":
        return a;
      case "object":
        return a;
      default:
        return "";
    }
  }
  function TA(a) {
    var n = a.type;
    return (a = a.nodeName) && a.toLowerCase() === "input" && (n === "checkbox" || n === "radio");
  }
  function WA(a) {
    var n = TA(a) ? "checked" : "value", d = Object.getOwnPropertyDescriptor(a.constructor.prototype, n), w = "" + a[n];
    if (!a.hasOwnProperty(n) && typeof d < "u" && typeof d.get == "function" && typeof d.set == "function") {
      var y = d.get, G = d.set;
      return Object.defineProperty(a, n, { configurable: !0, get: function() {
        return y.call(this);
      }, set: function(H) {
        w = "" + H, G.call(this, H);
      } }), Object.defineProperty(a, n, { enumerable: d.enumerable }), { getValue: function() {
        return w;
      }, setValue: function(H) {
        w = "" + H;
      }, stopTracking: function() {
        a._valueTracker = null, delete a[n];
      } };
    }
  }
  function ru(a) {
    a._valueTracker || (a._valueTracker = WA(a));
  }
  function _u(a) {
    if (!a) return !1;
    var n = a._valueTracker;
    if (!n) return !0;
    var d = n.getValue(), w = "";
    return a && (w = TA(a) ? a.checked ? "true" : "false" : a.value), a = w, a !== d ? (n.setValue(a), !0) : !1;
  }
  function N0(a) {
    if (a = a || (typeof document < "u" ? document : void 0), typeof a > "u") return null;
    try {
      return a.activeElement || a.body;
    } catch {
      return a.body;
    }
  }
  function HC(a, n) {
    var d = n.checked;
    return CA({}, n, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: d ?? a._wrapperState.initialChecked });
  }
  function kB(a, n) {
    var d = n.defaultValue == null ? "" : n.defaultValue, w = n.checked != null ? n.checked : n.defaultChecked;
    d = FA(n.value != null ? n.value : d), a._wrapperState = { initialChecked: w, initialValue: d, controlled: n.type === "checkbox" || n.type === "radio" ? n.checked != null : n.value != null };
  }
  function pe(a, n) {
    n = n.checked, n != null && p(a, "checked", n, !1);
  }
  function Ig(a, n) {
    pe(a, n);
    var d = FA(n.value), w = n.type;
    if (d != null) w === "number" ? (d === 0 && a.value === "" || a.value != d) && (a.value = "" + d) : a.value !== "" + d && (a.value = "" + d);
    else if (w === "submit" || w === "reset") {
      a.removeAttribute("value");
      return;
    }
    n.hasOwnProperty("value") ? yB(a, n.type, d) : n.hasOwnProperty("defaultValue") && yB(a, n.type, FA(n.defaultValue)), n.checked == null && n.defaultChecked != null && (a.defaultChecked = !!n.defaultChecked);
  }
  function SI(a, n, d) {
    if (n.hasOwnProperty("value") || n.hasOwnProperty("defaultValue")) {
      var w = n.type;
      if (!(w !== "submit" && w !== "reset" || n.value !== void 0 && n.value !== null)) return;
      n = "" + a._wrapperState.initialValue, d || n === a.value || (a.value = n), a.defaultValue = n;
    }
    d = a.name, d !== "" && (a.name = ""), a.defaultChecked = !!a._wrapperState.initialChecked, d !== "" && (a.name = d);
  }
  function yB(a, n, d) {
    (n !== "number" || N0(a.ownerDocument) !== a) && (d == null ? a.defaultValue = "" + a._wrapperState.initialValue : a.defaultValue !== "" + d && (a.defaultValue = "" + d));
  }
  var it = Array.isArray;
  function p0(a, n, d, w) {
    if (a = a.options, n) {
      n = {};
      for (var y = 0; y < d.length; y++) n["$" + d[y]] = !0;
      for (d = 0; d < a.length; d++) y = n.hasOwnProperty("$" + a[d].value), a[d].selected !== y && (a[d].selected = y), y && w && (a[d].defaultSelected = !0);
    } else {
      for (d = "" + FA(d), n = null, y = 0; y < a.length; y++) {
        if (a[y].value === d) {
          a[y].selected = !0, w && (a[y].defaultSelected = !0);
          return;
        }
        n !== null || a[y].disabled || (n = a[y]);
      }
      n !== null && (n.selected = !0);
    }
  }
  function Et(a, n) {
    if (n.dangerouslySetInnerHTML != null) throw Error(e(91));
    return CA({}, n, { value: void 0, defaultValue: void 0, children: "" + a._wrapperState.initialValue });
  }
  function NI(a, n) {
    var d = n.value;
    if (d == null) {
      if (d = n.children, n = n.defaultValue, d != null) {
        if (n != null) throw Error(e(92));
        if (it(d)) {
          if (1 < d.length) throw Error(e(93));
          d = d[0];
        }
        n = d;
      }
      n == null && (n = ""), d = n;
    }
    a._wrapperState = { initialValue: FA(d) };
  }
  function RI(a, n) {
    var d = FA(n.value), w = FA(n.defaultValue);
    d != null && (d = "" + d, d !== a.value && (a.value = d), n.defaultValue == null && a.defaultValue !== d && (a.defaultValue = d)), w != null && (a.defaultValue = "" + w);
  }
  function Gn(a) {
    var n = a.textContent;
    n === a._wrapperState.initialValue && n !== "" && n !== null && (a.value = n);
  }
  function MI(a) {
    switch (a) {
      case "svg":
        return "http://www.w3.org/2000/svg";
      case "math":
        return "http://www.w3.org/1998/Math/MathML";
      default:
        return "http://www.w3.org/1999/xhtml";
    }
  }
  function Gu(a, n) {
    return a == null || a === "http://www.w3.org/1999/xhtml" ? MI(n) : a === "http://www.w3.org/2000/svg" && n === "foreignObject" ? "http://www.w3.org/1999/xhtml" : a;
  }
  var fu, fn = (function(a) {
    return typeof MSApp < "u" && MSApp.execUnsafeLocalFunction ? function(n, d, w, y) {
      MSApp.execUnsafeLocalFunction(function() {
        return a(n, d, w, y);
      });
    } : a;
  })(function(a, n) {
    if (a.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in a) a.innerHTML = n;
    else {
      for (fu = fu || document.createElement("div"), fu.innerHTML = "<svg>" + n.valueOf().toString() + "</svg>", n = fu.firstChild; a.firstChild; ) a.removeChild(a.firstChild);
      for (; n.firstChild; ) a.appendChild(n.firstChild);
    }
  });
  function di(a, n) {
    if (n) {
      var d = a.firstChild;
      if (d && d === a.lastChild && d.nodeType === 3) {
        d.nodeValue = n;
        return;
      }
    }
    a.textContent = n;
  }
  var Di = {
    animationIterationCount: !0,
    aspectRatio: !0,
    borderImageOutset: !0,
    borderImageSlice: !0,
    borderImageWidth: !0,
    boxFlex: !0,
    boxFlexGroup: !0,
    boxOrdinalGroup: !0,
    columnCount: !0,
    columns: !0,
    flex: !0,
    flexGrow: !0,
    flexPositive: !0,
    flexShrink: !0,
    flexNegative: !0,
    flexOrder: !0,
    gridArea: !0,
    gridRow: !0,
    gridRowEnd: !0,
    gridRowSpan: !0,
    gridRowStart: !0,
    gridColumn: !0,
    gridColumnEnd: !0,
    gridColumnSpan: !0,
    gridColumnStart: !0,
    fontWeight: !0,
    lineClamp: !0,
    lineHeight: !0,
    opacity: !0,
    order: !0,
    orphans: !0,
    tabSize: !0,
    widows: !0,
    zIndex: !0,
    zoom: !0,
    fillOpacity: !0,
    floodOpacity: !0,
    stopOpacity: !0,
    strokeDasharray: !0,
    strokeDashoffset: !0,
    strokeMiterlimit: !0,
    strokeOpacity: !0,
    strokeWidth: !0
  }, X4 = ["Webkit", "ms", "Moz", "O"];
  Object.keys(Di).forEach(function(a) {
    X4.forEach(function(n) {
      n = n + a.charAt(0).toUpperCase() + a.substring(1), Di[n] = Di[a];
    });
  });
  function Ln(a, n, d) {
    return n == null || typeof n == "boolean" || n === "" ? "" : d || typeof n != "number" || n === 0 || Di.hasOwnProperty(a) && Di[a] ? ("" + n).trim() : n + "px";
  }
  function xn(a, n) {
    a = a.style;
    for (var d in n) if (n.hasOwnProperty(d)) {
      var w = d.indexOf("--") === 0, y = Ln(d, n[d], w);
      d === "float" && (d = "cssFloat"), w ? a.setProperty(d, y) : a[d] = y;
    }
  }
  var _4 = CA({ menuitem: !0 }, { area: !0, base: !0, br: !0, col: !0, embed: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0 });
  function KC(a, n) {
    if (n) {
      if (_4[a] && (n.children != null || n.dangerouslySetInnerHTML != null)) throw Error(e(137, a));
      if (n.dangerouslySetInnerHTML != null) {
        if (n.children != null) throw Error(e(60));
        if (typeof n.dangerouslySetInnerHTML != "object" || !("__html" in n.dangerouslySetInnerHTML)) throw Error(e(61));
      }
      if (n.style != null && typeof n.style != "object") throw Error(e(62));
    }
  }
  function JC(a, n) {
    if (a.indexOf("-") === -1) return typeof n.is == "string";
    switch (a) {
      case "annotation-xml":
      case "color-profile":
      case "font-face":
      case "font-face-src":
      case "font-face-uri":
      case "font-face-format":
      case "font-face-name":
      case "missing-glyph":
        return !1;
      default:
        return !0;
    }
  }
  var og = null;
  function Qg(a) {
    return a = a.target || a.srcElement || window, a.correspondingUseElement && (a = a.correspondingUseElement), a.nodeType === 3 ? a.parentNode : a;
  }
  var YI = null, at = null, lA = null;
  function m0(a) {
    if (a = ro(a)) {
      if (typeof YI != "function") throw Error(e(280));
      var n = a.stateNode;
      n && (n = Er(n), YI(a.stateNode, a.type, n));
    }
  }
  function vI(a) {
    at ? lA ? lA.push(a) : lA = [a] : at = a;
  }
  function HI() {
    if (at) {
      var a = at, n = lA;
      if (lA = at = null, m0(a), n) for (a = 0; a < n.length; a++) m0(n[a]);
    }
  }
  function ZC(a, n) {
    return a(n);
  }
  function KI() {
  }
  var JI = !1;
  function Sn(a, n, d) {
    if (JI) return a(n, d);
    JI = !0;
    try {
      return ZC(a, n, d);
    } finally {
      JI = !1, (at !== null || lA !== null) && (KI(), HI());
    }
  }
  function hi(a, n) {
    var d = a.stateNode;
    if (d === null) return null;
    var w = Er(d);
    if (w === null) return null;
    d = w[n];
    A: switch (n) {
      case "onClick":
      case "onClickCapture":
      case "onDoubleClick":
      case "onDoubleClickCapture":
      case "onMouseDown":
      case "onMouseDownCapture":
      case "onMouseMove":
      case "onMouseMoveCapture":
      case "onMouseUp":
      case "onMouseUpCapture":
      case "onMouseEnter":
        (w = !w.disabled) || (a = a.type, w = !(a === "button" || a === "input" || a === "select" || a === "textarea")), a = !w;
        break A;
      default:
        a = !1;
    }
    if (a) return null;
    if (d && typeof d != "function") throw Error(e(231, n, typeof d));
    return d;
  }
  var ZI = !1;
  if (i) try {
    var wi = {};
    Object.defineProperty(wi, "passive", { get: function() {
      ZI = !0;
    } }), window.addEventListener("test", wi, wi), window.removeEventListener("test", wi, wi);
  } catch {
    ZI = !1;
  }
  function $4(a, n, d, w, y, G, H, W, V) {
    var IA = Array.prototype.slice.call(arguments, 3);
    try {
      n.apply(d, IA);
    } catch (DA) {
      this.onError(DA);
    }
  }
  var Fi = !1, qE = null, WE = !1, qI = null, A3 = { onError: function(a) {
    Fi = !0, qE = a;
  } };
  function AC(a, n, d, w, y, G, H, W, V) {
    Fi = !1, qE = null, $4.apply(A3, arguments);
  }
  function u3(a, n, d, w, y, G, H, W, V) {
    if (AC.apply(this, arguments), Fi) {
      if (Fi) {
        var IA = qE;
        Fi = !1, qE = null;
      } else throw Error(e(198));
      WE || (WE = !0, qI = IA);
    }
  }
  function ng(a) {
    var n = a, d = a;
    if (a.alternate) for (; n.return; ) n = n.return;
    else {
      a = n;
      do
        n = a, (n.flags & 4098) !== 0 && (d = n.return), a = n.return;
      while (a);
    }
    return n.tag === 3 ? d : null;
  }
  function Nn(a) {
    if (a.tag === 13) {
      var n = a.memoizedState;
      if (n === null && (a = a.alternate, a !== null && (n = a.memoizedState)), n !== null) return n.dehydrated;
    }
    return null;
  }
  function Rn(a) {
    if (ng(a) !== a) throw Error(e(188));
  }
  function e3(a) {
    var n = a.alternate;
    if (!n) {
      if (n = ng(a), n === null) throw Error(e(188));
      return n !== a ? null : a;
    }
    for (var d = a, w = n; ; ) {
      var y = d.return;
      if (y === null) break;
      var G = y.alternate;
      if (G === null) {
        if (w = y.return, w !== null) {
          d = w;
          continue;
        }
        break;
      }
      if (y.child === G.child) {
        for (G = y.child; G; ) {
          if (G === d) return Rn(y), a;
          if (G === w) return Rn(y), n;
          G = G.sibling;
        }
        throw Error(e(188));
      }
      if (d.return !== w.return) d = y, w = G;
      else {
        for (var H = !1, W = y.child; W; ) {
          if (W === d) {
            H = !0, d = y, w = G;
            break;
          }
          if (W === w) {
            H = !0, w = y, d = G;
            break;
          }
          W = W.sibling;
        }
        if (!H) {
          for (W = G.child; W; ) {
            if (W === d) {
              H = !0, d = G, w = y;
              break;
            }
            if (W === w) {
              H = !0, w = G, d = y;
              break;
            }
            W = W.sibling;
          }
          if (!H) throw Error(e(189));
        }
      }
      if (d.alternate !== w) throw Error(e(190));
    }
    if (d.tag !== 3) throw Error(e(188));
    return d.stateNode.current === d ? a : n;
  }
  function Mn(a) {
    return a = e3(a), a !== null ? Yn(a) : null;
  }
  function Yn(a) {
    if (a.tag === 5 || a.tag === 6) return a;
    for (a = a.child; a !== null; ) {
      var n = Yn(a);
      if (n !== null) return n;
      a = a.sibling;
    }
    return null;
  }
  var jE = u.unstable_scheduleCallback, vn = u.unstable_cancelCallback, Hn = u.unstable_shouldYield, me = u.unstable_requestPaint, Ku = u.unstable_now, rg = u.unstable_getCurrentPriorityLevel, It = u.unstable_ImmediatePriority, Kn = u.unstable_UserBlockingPriority, TE = u.unstable_NormalPriority, WI = u.unstable_LowPriority, zE = u.unstable_IdlePriority, ot = null, Ae = null;
  function Fu(a) {
    if (Ae && typeof Ae.onCommitFiberRoot == "function") try {
      Ae.onCommitFiberRoot(ot, a, void 0, (a.current.flags & 128) === 128);
    } catch {
    }
  }
  var Se = Math.clz32 ? Math.clz32 : qC, PE = Math.log, Qt = Math.LN2;
  function qC(a) {
    return a >>>= 0, a === 0 ? 32 : 31 - (PE(a) / Qt | 0) | 0;
  }
  var OE = 64, VE = 4194304;
  function pi(a) {
    switch (a & -a) {
      case 1:
        return 1;
      case 2:
        return 2;
      case 4:
        return 4;
      case 8:
        return 8;
      case 16:
        return 16;
      case 32:
        return 32;
      case 64:
      case 128:
      case 256:
      case 512:
      case 1024:
      case 2048:
      case 4096:
      case 8192:
      case 16384:
      case 32768:
      case 65536:
      case 131072:
      case 262144:
      case 524288:
      case 1048576:
      case 2097152:
        return a & 4194240;
      case 4194304:
      case 8388608:
      case 16777216:
      case 33554432:
      case 67108864:
        return a & 130023424;
      case 134217728:
        return 134217728;
      case 268435456:
        return 268435456;
      case 536870912:
        return 536870912;
      case 1073741824:
        return 1073741824;
      default:
        return a;
    }
  }
  function nt(a, n) {
    var d = a.pendingLanes;
    if (d === 0) return 0;
    var w = 0, y = a.suspendedLanes, G = a.pingedLanes, H = d & 268435455;
    if (H !== 0) {
      var W = H & ~y;
      W !== 0 ? w = pi(W) : (G &= H, G !== 0 && (w = pi(G)));
    } else H = d & ~y, H !== 0 ? w = pi(H) : G !== 0 && (w = pi(G));
    if (w === 0) return 0;
    if (n !== 0 && n !== w && (n & y) === 0 && (y = w & -w, G = n & -n, y >= G || y === 16 && (G & 4194240) !== 0)) return n;
    if ((w & 4) !== 0 && (w |= d & 16), n = a.entangledLanes, n !== 0) for (a = a.entanglements, n &= w; 0 < n; ) d = 31 - Se(n), y = 1 << d, w |= a[d], n &= ~y;
    return w;
  }
  function jI(a, n) {
    switch (a) {
      case 1:
      case 2:
      case 4:
        return n + 250;
      case 8:
      case 16:
      case 32:
      case 64:
      case 128:
      case 256:
      case 512:
      case 1024:
      case 2048:
      case 4096:
      case 8192:
      case 16384:
      case 32768:
      case 65536:
      case 131072:
      case 262144:
      case 524288:
      case 1048576:
      case 2097152:
        return n + 5e3;
      case 4194304:
      case 8388608:
      case 16777216:
      case 33554432:
      case 67108864:
        return -1;
      case 134217728:
      case 268435456:
      case 536870912:
      case 1073741824:
        return -1;
      default:
        return -1;
    }
  }
  function Jn(a, n) {
    for (var d = a.suspendedLanes, w = a.pingedLanes, y = a.expirationTimes, G = a.pendingLanes; 0 < G; ) {
      var H = 31 - Se(G), W = 1 << H, V = y[H];
      V === -1 ? ((W & d) === 0 || (W & w) !== 0) && (y[H] = jI(W, n)) : V <= n && (a.expiredLanes |= W), G &= ~W;
    }
  }
  function TI(a) {
    return a = a.pendingLanes & -1073741825, a !== 0 ? a : a & 1073741824 ? 1073741824 : 0;
  }
  function zI() {
    var a = OE;
    return OE <<= 1, (OE & 4194240) === 0 && (OE = 64), a;
  }
  function sg(a) {
    for (var n = [], d = 0; 31 > d; d++) n.push(a);
    return n;
  }
  function mi(a, n, d) {
    a.pendingLanes |= n, n !== 536870912 && (a.suspendedLanes = 0, a.pingedLanes = 0), a = a.eventTimes, n = 31 - Se(n), a[n] = d;
  }
  function C3(a, n) {
    var d = a.pendingLanes & ~n;
    a.pendingLanes = n, a.suspendedLanes = 0, a.pingedLanes = 0, a.expiredLanes &= n, a.mutableReadLanes &= n, a.entangledLanes &= n, n = a.entanglements;
    var w = a.eventTimes;
    for (a = a.expirationTimes; 0 < d; ) {
      var y = 31 - Se(d), G = 1 << y;
      n[y] = 0, w[y] = -1, a[y] = -1, d &= ~G;
    }
  }
  function PI(a, n) {
    var d = a.entangledLanes |= n;
    for (a = a.entanglements; d; ) {
      var w = 31 - Se(d), y = 1 << w;
      y & n | a[w] & n && (a[w] |= n), d &= ~y;
    }
  }
  var du = 0;
  function rt(a) {
    return a &= -a, 1 < a ? 4 < a ? (a & 268435455) !== 0 ? 16 : 536870912 : 4 : 1;
  }
  var XE, OI, Zn, WC, VI, _E = !1, ki = [], bB = null, lC = null, UB = null, yi = /* @__PURE__ */ new Map(), bi = /* @__PURE__ */ new Map(), uC = [], B3 = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");
  function qn(a, n) {
    switch (a) {
      case "focusin":
      case "focusout":
        bB = null;
        break;
      case "dragenter":
      case "dragleave":
        lC = null;
        break;
      case "mouseover":
      case "mouseout":
        UB = null;
        break;
      case "pointerover":
      case "pointerout":
        yi.delete(n.pointerId);
        break;
      case "gotpointercapture":
      case "lostpointercapture":
        bi.delete(n.pointerId);
    }
  }
  function Ui(a, n, d, w, y, G) {
    return a === null || a.nativeEvent !== G ? (a = { blockedOn: n, domEventName: d, eventSystemFlags: w, nativeEvent: G, targetContainers: [y] }, n !== null && (n = ro(n), n !== null && OI(n)), a) : (a.eventSystemFlags |= w, n = a.targetContainers, y !== null && n.indexOf(y) === -1 && n.push(y), a);
  }
  function Wn(a, n, d, w, y) {
    switch (n) {
      case "focusin":
        return bB = Ui(bB, a, n, d, w, y), !0;
      case "dragenter":
        return lC = Ui(lC, a, n, d, w, y), !0;
      case "mouseover":
        return UB = Ui(UB, a, n, d, w, y), !0;
      case "pointerover":
        var G = y.pointerId;
        return yi.set(G, Ui(yi.get(G) || null, a, n, d, w, y)), !0;
      case "gotpointercapture":
        return G = y.pointerId, bi.set(G, Ui(bi.get(G) || null, a, n, d, w, y)), !0;
    }
    return !1;
  }
  function jn(a) {
    var n = Ki(a.target);
    if (n !== null) {
      var d = ng(n);
      if (d !== null) {
        if (n = d.tag, n === 13) {
          if (n = Nn(d), n !== null) {
            a.blockedOn = n, VI(a.priority, function() {
              Zn(d);
            });
            return;
          }
        } else if (n === 3 && d.stateNode.current.memoizedState.isDehydrated) {
          a.blockedOn = d.tag === 3 ? d.stateNode.containerInfo : null;
          return;
        }
      }
    }
    a.blockedOn = null;
  }
  function $E(a) {
    if (a.blockedOn !== null) return !1;
    for (var n = a.targetContainers; 0 < n.length; ) {
      var d = TC(a.domEventName, a.eventSystemFlags, n[0], a.nativeEvent);
      if (d === null) {
        d = a.nativeEvent;
        var w = new d.constructor(d.type, d);
        og = w, d.target.dispatchEvent(w), og = null;
      } else return n = ro(d), n !== null && OI(n), a.blockedOn = d, !1;
      n.shift();
    }
    return !0;
  }
  function Tn(a, n, d) {
    $E(a) && d.delete(n);
  }
  function g3() {
    _E = !1, bB !== null && $E(bB) && (bB = null), lC !== null && $E(lC) && (lC = null), UB !== null && $E(UB) && (UB = null), yi.forEach(Tn), bi.forEach(Tn);
  }
  function jC(a, n) {
    a.blockedOn === n && (a.blockedOn = null, _E || (_E = !0, u.unstable_scheduleCallback(u.unstable_NormalPriority, g3)));
  }
  function Gi(a) {
    function n(y) {
      return jC(y, a);
    }
    if (0 < ki.length) {
      jC(ki[0], a);
      for (var d = 1; d < ki.length; d++) {
        var w = ki[d];
        w.blockedOn === a && (w.blockedOn = null);
      }
    }
    for (bB !== null && jC(bB, a), lC !== null && jC(lC, a), UB !== null && jC(UB, a), yi.forEach(n), bi.forEach(n), d = 0; d < uC.length; d++) w = uC[d], w.blockedOn === a && (w.blockedOn = null);
    for (; 0 < uC.length && (d = uC[0], d.blockedOn === null); ) jn(d), d.blockedOn === null && uC.shift();
  }
  var st = k.ReactCurrentBatchConfig, lg = !0;
  function t3(a, n, d, w) {
    var y = du, G = st.transition;
    st.transition = null;
    try {
      du = 1, eC(a, n, d, w);
    } finally {
      du = y, st.transition = G;
    }
  }
  function i3(a, n, d, w) {
    var y = du, G = st.transition;
    st.transition = null;
    try {
      du = 4, eC(a, n, d, w);
    } finally {
      du = y, st.transition = G;
    }
  }
  function eC(a, n, d, w) {
    if (lg) {
      var y = TC(a, n, d, w);
      if (y === null) M3(a, n, w, fi, d), qn(a, w);
      else if (Wn(y, a, n, d, w)) w.stopPropagation();
      else if (qn(a, w), n & 4 && -1 < B3.indexOf(a)) {
        for (; y !== null; ) {
          var G = ro(y);
          if (G !== null && XE(G), G = TC(a, n, d, w), G === null && M3(a, n, w, fi, d), G === y) break;
          y = G;
        }
        y !== null && w.stopPropagation();
      } else M3(a, n, w, null, d);
    }
  }
  var fi = null;
  function TC(a, n, d, w) {
    if (fi = null, a = Qg(w), a = Ki(a), a !== null) if (n = ng(a), n === null) a = null;
    else if (d = n.tag, d === 13) {
      if (a = Nn(n), a !== null) return a;
      a = null;
    } else if (d === 3) {
      if (n.stateNode.current.memoizedState.isDehydrated) return n.tag === 3 ? n.stateNode.containerInfo : null;
      a = null;
    } else n !== a && (a = null);
    return fi = a, null;
  }
  function XI(a) {
    switch (a) {
      case "cancel":
      case "click":
      case "close":
      case "contextmenu":
      case "copy":
      case "cut":
      case "auxclick":
      case "dblclick":
      case "dragend":
      case "dragstart":
      case "drop":
      case "focusin":
      case "focusout":
      case "input":
      case "invalid":
      case "keydown":
      case "keypress":
      case "keyup":
      case "mousedown":
      case "mouseup":
      case "paste":
      case "pause":
      case "play":
      case "pointercancel":
      case "pointerdown":
      case "pointerup":
      case "ratechange":
      case "reset":
      case "resize":
      case "seeked":
      case "submit":
      case "touchcancel":
      case "touchend":
      case "touchstart":
      case "volumechange":
      case "change":
      case "selectionchange":
      case "textInput":
      case "compositionstart":
      case "compositionend":
      case "compositionupdate":
      case "beforeblur":
      case "afterblur":
      case "beforeinput":
      case "blur":
      case "fullscreenchange":
      case "focus":
      case "hashchange":
      case "popstate":
      case "select":
      case "selectstart":
        return 1;
      case "drag":
      case "dragenter":
      case "dragexit":
      case "dragleave":
      case "dragover":
      case "mousemove":
      case "mouseout":
      case "mouseover":
      case "pointermove":
      case "pointerout":
      case "pointerover":
      case "scroll":
      case "toggle":
      case "touchmove":
      case "wheel":
      case "mouseenter":
      case "mouseleave":
      case "pointerenter":
      case "pointerleave":
        return 4;
      case "message":
        switch (rg()) {
          case It:
            return 1;
          case Kn:
            return 4;
          case TE:
          case WI:
            return 16;
          case zE:
            return 536870912;
          default:
            return 16;
        }
      default:
        return 16;
    }
  }
  var zC = null, lt = null, Aa = null;
  function ua() {
    if (Aa) return Aa;
    var a, n = lt, d = n.length, w, y = "value" in zC ? zC.value : zC.textContent, G = y.length;
    for (a = 0; a < d && n[a] === y[a]; a++) ;
    var H = d - a;
    for (w = 1; w <= H && n[d - w] === y[G - w]; w++) ;
    return Aa = y.slice(a, 1 < w ? 1 - w : void 0);
  }
  function Li(a) {
    var n = a.keyCode;
    return "charCode" in a ? (a = a.charCode, a === 0 && n === 13 && (a = 13)) : a = n, a === 10 && (a = 13), 32 <= a || a === 13 ? a : 0;
  }
  function ea() {
    return !0;
  }
  function zn() {
    return !1;
  }
  function ae(a) {
    function n(d, w, y, G, H) {
      this._reactName = d, this._targetInst = y, this.type = w, this.nativeEvent = G, this.target = H, this.currentTarget = null;
      for (var W in a) a.hasOwnProperty(W) && (d = a[W], this[W] = d ? d(G) : G[W]);
      return this.isDefaultPrevented = (G.defaultPrevented != null ? G.defaultPrevented : G.returnValue === !1) ? ea : zn, this.isPropagationStopped = zn, this;
    }
    return CA(n.prototype, { preventDefault: function() {
      this.defaultPrevented = !0;
      var d = this.nativeEvent;
      d && (d.preventDefault ? d.preventDefault() : typeof d.returnValue != "unknown" && (d.returnValue = !1), this.isDefaultPrevented = ea);
    }, stopPropagation: function() {
      var d = this.nativeEvent;
      d && (d.stopPropagation ? d.stopPropagation() : typeof d.cancelBubble != "unknown" && (d.cancelBubble = !0), this.isPropagationStopped = ea);
    }, persist: function() {
    }, isPersistent: ea }), n;
  }
  var ct = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function(a) {
    return a.timeStamp || Date.now();
  }, defaultPrevented: 0, isTrusted: 0 }, xi = ae(ct), ue = CA({}, ct, { view: 0, detail: 0 }), Pn = ae(ue), _I, $I, Si, dt = CA({}, ue, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: Ca, button: 0, buttons: 0, relatedTarget: function(a) {
    return a.relatedTarget === void 0 ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget;
  }, movementX: function(a) {
    return "movementX" in a ? a.movementX : (a !== Si && (Si && a.type === "mousemove" ? (_I = a.screenX - Si.screenX, $I = a.screenY - Si.screenY) : $I = _I = 0, Si = a), _I);
  }, movementY: function(a) {
    return "movementY" in a ? a.movementY : $I;
  } }), On = ae(dt), Dt = CA({}, dt, { dataTransfer: 0 }), E3 = ae(Dt), a3 = CA({}, ue, { relatedTarget: 0 }), Ao = ae(a3), I3 = CA({}, ct, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), o3 = ae(I3), Q3 = CA({}, ct, { clipboardData: function(a) {
    return "clipboardData" in a ? a.clipboardData : window.clipboardData;
  } }), n3 = ae(Q3), r3 = CA({}, ct, { data: 0 }), Vn = ae(r3), s3 = {
    Esc: "Escape",
    Spacebar: " ",
    Left: "ArrowLeft",
    Up: "ArrowUp",
    Right: "ArrowRight",
    Down: "ArrowDown",
    Del: "Delete",
    Win: "OS",
    Menu: "ContextMenu",
    Apps: "ContextMenu",
    Scroll: "ScrollLock",
    MozPrintableKey: "Unidentified"
  }, l3 = {
    8: "Backspace",
    9: "Tab",
    12: "Clear",
    13: "Enter",
    16: "Shift",
    17: "Control",
    18: "Alt",
    19: "Pause",
    20: "CapsLock",
    27: "Escape",
    32: " ",
    33: "PageUp",
    34: "PageDown",
    35: "End",
    36: "Home",
    37: "ArrowLeft",
    38: "ArrowUp",
    39: "ArrowRight",
    40: "ArrowDown",
    45: "Insert",
    46: "Delete",
    112: "F1",
    113: "F2",
    114: "F3",
    115: "F4",
    116: "F5",
    117: "F6",
    118: "F7",
    119: "F8",
    120: "F9",
    121: "F10",
    122: "F11",
    123: "F12",
    144: "NumLock",
    145: "ScrollLock",
    224: "Meta"
  }, c3 = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" };
  function d3(a) {
    var n = this.nativeEvent;
    return n.getModifierState ? n.getModifierState(a) : (a = c3[a]) ? !!n[a] : !1;
  }
  function Ca() {
    return d3;
  }
  var D3 = CA({}, ue, { key: function(a) {
    if (a.key) {
      var n = s3[a.key] || a.key;
      if (n !== "Unidentified") return n;
    }
    return a.type === "keypress" ? (a = Li(a), a === 13 ? "Enter" : String.fromCharCode(a)) : a.type === "keydown" || a.type === "keyup" ? l3[a.keyCode] || "Unidentified" : "";
  }, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: Ca, charCode: function(a) {
    return a.type === "keypress" ? Li(a) : 0;
  }, keyCode: function(a) {
    return a.type === "keydown" || a.type === "keyup" ? a.keyCode : 0;
  }, which: function(a) {
    return a.type === "keypress" ? Li(a) : a.type === "keydown" || a.type === "keyup" ? a.keyCode : 0;
  } }), h3 = ae(D3), w3 = CA({}, dt, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Xn = ae(w3), F3 = CA({}, ue, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: Ca }), p3 = ae(F3), m3 = CA({}, ct, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), k3 = ae(m3), y3 = CA({}, dt, {
    deltaX: function(a) {
      return "deltaX" in a ? a.deltaX : "wheelDeltaX" in a ? -a.wheelDeltaX : 0;
    },
    deltaY: function(a) {
      return "deltaY" in a ? a.deltaY : "wheelDeltaY" in a ? -a.wheelDeltaY : "wheelDelta" in a ? -a.wheelDelta : 0;
    },
    deltaZ: 0,
    deltaMode: 0
  }), b3 = ae(y3), U3 = [9, 13, 27, 32], uo = i && "CompositionEvent" in window, Ni = null;
  i && "documentMode" in document && (Ni = document.documentMode);
  var G3 = i && "TextEvent" in window && !Ni, _n = i && (!uo || Ni && 8 < Ni && 11 >= Ni), $n = " ", Ar = !1;
  function ur(a, n) {
    switch (a) {
      case "keyup":
        return U3.indexOf(n.keyCode) !== -1;
      case "keydown":
        return n.keyCode !== 229;
      case "keypress":
      case "mousedown":
      case "focusout":
        return !0;
      default:
        return !1;
    }
  }
  function er(a) {
    return a = a.detail, typeof a == "object" && "data" in a ? a.data : null;
  }
  var ht = !1;
  function f3(a, n) {
    switch (a) {
      case "compositionend":
        return er(n);
      case "keypress":
        return n.which !== 32 ? null : (Ar = !0, $n);
      case "textInput":
        return a = n.data, a === $n && Ar ? null : a;
      default:
        return null;
    }
  }
  function L3(a, n) {
    if (ht) return a === "compositionend" || !uo && ur(a, n) ? (a = ua(), Aa = lt = zC = null, ht = !1, a) : null;
    switch (a) {
      case "paste":
        return null;
      case "keypress":
        if (!(n.ctrlKey || n.altKey || n.metaKey) || n.ctrlKey && n.altKey) {
          if (n.char && 1 < n.char.length) return n.char;
          if (n.which) return String.fromCharCode(n.which);
        }
        return null;
      case "compositionend":
        return _n && n.locale !== "ko" ? null : n.data;
      default:
        return null;
    }
  }
  var eo = { color: !0, date: !0, datetime: !0, "datetime-local": !0, email: !0, month: !0, number: !0, password: !0, range: !0, search: !0, tel: !0, text: !0, time: !0, url: !0, week: !0 };
  function Co(a) {
    var n = a && a.nodeName && a.nodeName.toLowerCase();
    return n === "input" ? !!eo[a.type] : n === "textarea";
  }
  function Ba(a, n, d, w) {
    vI(w), n = gr(n, "onChange"), 0 < n.length && (d = new xi("onChange", "change", null, d, w), a.push({ event: d, listeners: n }));
  }
  var Ri = null, ee = null;
  function Mi(a) {
    o6(a, 0);
  }
  function ga(a) {
    var n = aa(a);
    if (_u(n)) return a;
  }
  function Bo(a, n) {
    if (a === "change") return n;
  }
  var go = !1;
  if (i) {
    var Yi;
    if (i) {
      var cg = "oninput" in document;
      if (!cg) {
        var to = document.createElement("div");
        to.setAttribute("oninput", "return;"), cg = typeof to.oninput == "function";
      }
      Yi = cg;
    } else Yi = !1;
    go = Yi && (!document.documentMode || 9 < document.documentMode);
  }
  function ta() {
    Ri && (Ri.detachEvent("onpropertychange", Cr), ee = Ri = null);
  }
  function Cr(a) {
    if (a.propertyName === "value" && ga(ee)) {
      var n = [];
      Ba(n, ee, a, Qg(a)), Sn(Mi, n);
    }
  }
  function x3(a, n, d) {
    a === "focusin" ? (ta(), Ri = n, ee = d, Ri.attachEvent("onpropertychange", Cr)) : a === "focusout" && ta();
  }
  function R(a) {
    if (a === "selectionchange" || a === "keyup" || a === "keydown") return ga(ee);
  }
  function Y(a, n) {
    if (a === "click") return ga(n);
  }
  function z(a, n) {
    if (a === "input" || a === "change") return ga(n);
  }
  function BA(a, n) {
    return a === n && (a !== 0 || 1 / a === 1 / n) || a !== a && n !== n;
  }
  var oA = typeof Object.is == "function" ? Object.is : BA;
  function sA(a, n) {
    if (oA(a, n)) return !0;
    if (typeof a != "object" || a === null || typeof n != "object" || n === null) return !1;
    var d = Object.keys(a), w = Object.keys(n);
    if (d.length !== w.length) return !1;
    for (w = 0; w < d.length; w++) {
      var y = d[w];
      if (!I.call(n, y) || !oA(a[y], n[y])) return !1;
    }
    return !0;
  }
  function cA(a) {
    for (; a && a.firstChild; ) a = a.firstChild;
    return a;
  }
  function rA(a, n) {
    var d = cA(a);
    a = 0;
    for (var w; d; ) {
      if (d.nodeType === 3) {
        if (w = a + d.textContent.length, a <= n && w >= n) return { node: d, offset: n - a };
        a = w;
      }
      A: {
        for (; d; ) {
          if (d.nextSibling) {
            d = d.nextSibling;
            break A;
          }
          d = d.parentNode;
        }
        d = void 0;
      }
      d = cA(d);
    }
  }
  function wA(a, n) {
    return a && n ? a === n ? !0 : a && a.nodeType === 3 ? !1 : n && n.nodeType === 3 ? wA(a, n.parentNode) : "contains" in a ? a.contains(n) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(n) & 16) : !1 : !1;
  }
  function YA() {
    for (var a = window, n = N0(); n instanceof a.HTMLIFrameElement; ) {
      try {
        var d = typeof n.contentWindow.location.href == "string";
      } catch {
        d = !1;
      }
      if (d) a = n.contentWindow;
      else break;
      n = N0(a.document);
    }
    return n;
  }
  function au(a) {
    var n = a && a.nodeName && a.nodeName.toLowerCase();
    return n && (n === "input" && (a.type === "text" || a.type === "search" || a.type === "tel" || a.type === "url" || a.type === "password") || n === "textarea" || a.contentEditable === "true");
  }
  function eu(a) {
    var n = YA(), d = a.focusedElem, w = a.selectionRange;
    if (n !== d && d && d.ownerDocument && wA(d.ownerDocument.documentElement, d)) {
      if (w !== null && au(d)) {
        if (n = w.start, a = w.end, a === void 0 && (a = n), "selectionStart" in d) d.selectionStart = n, d.selectionEnd = Math.min(a, d.value.length);
        else if (a = (n = d.ownerDocument || document) && n.defaultView || window, a.getSelection) {
          a = a.getSelection();
          var y = d.textContent.length, G = Math.min(w.start, y);
          w = w.end === void 0 ? G : Math.min(w.end, y), !a.extend && G > w && (y = w, w = G, G = y), y = rA(d, G);
          var H = rA(
            d,
            w
          );
          y && H && (a.rangeCount !== 1 || a.anchorNode !== y.node || a.anchorOffset !== y.offset || a.focusNode !== H.node || a.focusOffset !== H.offset) && (n = n.createRange(), n.setStart(y.node, y.offset), a.removeAllRanges(), G > w ? (a.addRange(n), a.extend(H.node, H.offset)) : (n.setEnd(H.node, H.offset), a.addRange(n)));
        }
      }
      for (n = [], a = d; a = a.parentNode; ) a.nodeType === 1 && n.push({ element: a, left: a.scrollLeft, top: a.scrollTop });
      for (typeof d.focus == "function" && d.focus(), d = 0; d < n.length; d++) a = n[d], a.element.scrollLeft = a.left, a.element.scrollTop = a.top;
    }
  }
  var Du = i && "documentMode" in document && 11 >= document.documentMode, ju = null, Ne = null, Ce = null, vi = !1;
  function PC(a, n, d) {
    var w = d.window === d ? d.document : d.nodeType === 9 ? d : d.ownerDocument;
    vi || ju == null || ju !== N0(w) || (w = ju, "selectionStart" in w && au(w) ? w = { start: w.selectionStart, end: w.selectionEnd } : (w = (w.ownerDocument && w.ownerDocument.defaultView || window).getSelection(), w = { anchorNode: w.anchorNode, anchorOffset: w.anchorOffset, focusNode: w.focusNode, focusOffset: w.focusOffset }), Ce && sA(Ce, w) || (Ce = w, w = gr(Ne, "onSelect"), 0 < w.length && (n = new xi("onSelect", "select", null, n, d), a.push({ event: n, listeners: w }), n.target = ju)));
  }
  function wt(a, n) {
    var d = {};
    return d[a.toLowerCase()] = n.toLowerCase(), d["Webkit" + a] = "webkit" + n, d["Moz" + a] = "moz" + n, d;
  }
  var CC = { animationend: wt("Animation", "AnimationEnd"), animationiteration: wt("Animation", "AnimationIteration"), animationstart: wt("Animation", "AnimationStart"), transitionend: wt("Transition", "TransitionEnd") }, io = {}, Eo = {};
  i && (Eo = document.createElement("div").style, "AnimationEvent" in window || (delete CC.animationend.animation, delete CC.animationiteration.animation, delete CC.animationstart.animation), "TransitionEvent" in window || delete CC.transitionend.transition);
  function Hi(a) {
    if (io[a]) return io[a];
    if (!CC[a]) return a;
    var n = CC[a], d;
    for (d in n) if (n.hasOwnProperty(d) && d in Eo) return io[a] = n[d];
    return a;
  }
  var ao = Hi("animationend"), g6 = Hi("animationiteration"), t6 = Hi("animationstart"), i6 = Hi("transitionend"), E6 = /* @__PURE__ */ new Map(), a6 = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");
  function Ft(a, n) {
    E6.set(a, n), g(n, [a]);
  }
  for (var S3 = 0; S3 < a6.length; S3++) {
    var N3 = a6[S3], BCA = N3.toLowerCase(), gCA = N3[0].toUpperCase() + N3.slice(1);
    Ft(BCA, "on" + gCA);
  }
  Ft(ao, "onAnimationEnd"), Ft(g6, "onAnimationIteration"), Ft(t6, "onAnimationStart"), Ft("dblclick", "onDoubleClick"), Ft("focusin", "onFocus"), Ft("focusout", "onBlur"), Ft(i6, "onTransitionEnd"), t("onMouseEnter", ["mouseout", "mouseover"]), t("onMouseLeave", ["mouseout", "mouseover"]), t("onPointerEnter", ["pointerout", "pointerover"]), t("onPointerLeave", ["pointerout", "pointerover"]), g("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")), g("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")), g("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]), g("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")), g("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")), g("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" "));
  var Io = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), tCA = new Set("cancel close invalid load scroll toggle".split(" ").concat(Io));
  function I6(a, n, d) {
    var w = a.type || "unknown-event";
    a.currentTarget = d, u3(w, n, void 0, a), a.currentTarget = null;
  }
  function o6(a, n) {
    n = (n & 4) !== 0;
    for (var d = 0; d < a.length; d++) {
      var w = a[d], y = w.event;
      w = w.listeners;
      A: {
        var G = void 0;
        if (n) for (var H = w.length - 1; 0 <= H; H--) {
          var W = w[H], V = W.instance, IA = W.currentTarget;
          if (W = W.listener, V !== G && y.isPropagationStopped()) break A;
          I6(y, W, IA), G = V;
        }
        else for (H = 0; H < w.length; H++) {
          if (W = w[H], V = W.instance, IA = W.currentTarget, W = W.listener, V !== G && y.isPropagationStopped()) break A;
          I6(y, W, IA), G = V;
        }
      }
    }
    if (WE) throw a = qI, WE = !1, qI = null, a;
  }
  function $u(a, n) {
    var d = n[Z3];
    d === void 0 && (d = n[Z3] = /* @__PURE__ */ new Set());
    var w = a + "__bubble";
    d.has(w) || (Q6(n, a, 2, !1), d.add(w));
  }
  function R3(a, n, d) {
    var w = 0;
    n && (w |= 4), Q6(d, a, w, n);
  }
  var Br = "_reactListening" + Math.random().toString(36).slice(2);
  function oo(a) {
    if (!a[Br]) {
      a[Br] = !0, C.forEach(function(d) {
        d !== "selectionchange" && (tCA.has(d) || R3(d, !1, a), R3(d, !0, a));
      });
      var n = a.nodeType === 9 ? a : a.ownerDocument;
      n === null || n[Br] || (n[Br] = !0, R3("selectionchange", !1, n));
    }
  }
  function Q6(a, n, d, w) {
    switch (XI(n)) {
      case 1:
        var y = t3;
        break;
      case 4:
        y = i3;
        break;
      default:
        y = eC;
    }
    d = y.bind(null, n, d, a), y = void 0, !ZI || n !== "touchstart" && n !== "touchmove" && n !== "wheel" || (y = !0), w ? y !== void 0 ? a.addEventListener(n, d, { capture: !0, passive: y }) : a.addEventListener(n, d, !0) : y !== void 0 ? a.addEventListener(n, d, { passive: y }) : a.addEventListener(n, d, !1);
  }
  function M3(a, n, d, w, y) {
    var G = w;
    if ((n & 1) === 0 && (n & 2) === 0 && w !== null) A: for (; ; ) {
      if (w === null) return;
      var H = w.tag;
      if (H === 3 || H === 4) {
        var W = w.stateNode.containerInfo;
        if (W === y || W.nodeType === 8 && W.parentNode === y) break;
        if (H === 4) for (H = w.return; H !== null; ) {
          var V = H.tag;
          if ((V === 3 || V === 4) && (V = H.stateNode.containerInfo, V === y || V.nodeType === 8 && V.parentNode === y)) return;
          H = H.return;
        }
        for (; W !== null; ) {
          if (H = Ki(W), H === null) return;
          if (V = H.tag, V === 5 || V === 6) {
            w = G = H;
            continue A;
          }
          W = W.parentNode;
        }
      }
      w = w.return;
    }
    Sn(function() {
      var IA = G, DA = Qg(d), hA = [];
      A: {
        var dA = E6.get(a);
        if (dA !== void 0) {
          var RA = xi, HA = a;
          switch (a) {
            case "keypress":
              if (Li(d) === 0) break A;
            case "keydown":
            case "keyup":
              RA = h3;
              break;
            case "focusin":
              HA = "focus", RA = Ao;
              break;
            case "focusout":
              HA = "blur", RA = Ao;
              break;
            case "beforeblur":
            case "afterblur":
              RA = Ao;
              break;
            case "click":
              if (d.button === 2) break A;
            case "auxclick":
            case "dblclick":
            case "mousedown":
            case "mousemove":
            case "mouseup":
            case "mouseout":
            case "mouseover":
            case "contextmenu":
              RA = On;
              break;
            case "drag":
            case "dragend":
            case "dragenter":
            case "dragexit":
            case "dragleave":
            case "dragover":
            case "dragstart":
            case "drop":
              RA = E3;
              break;
            case "touchcancel":
            case "touchend":
            case "touchmove":
            case "touchstart":
              RA = p3;
              break;
            case ao:
            case g6:
            case t6:
              RA = o3;
              break;
            case i6:
              RA = k3;
              break;
            case "scroll":
              RA = Pn;
              break;
            case "wheel":
              RA = b3;
              break;
            case "copy":
            case "cut":
            case "paste":
              RA = n3;
              break;
            case "gotpointercapture":
            case "lostpointercapture":
            case "pointercancel":
            case "pointerdown":
            case "pointermove":
            case "pointerout":
            case "pointerover":
            case "pointerup":
              RA = Xn;
          }
          var ZA = (n & 4) !== 0, k0 = !ZA && a === "scroll", tA = ZA ? dA !== null ? dA + "Capture" : null : dA;
          ZA = [];
          for (var AA = IA, iA; AA !== null; ) {
            iA = AA;
            var yA = iA.stateNode;
            if (iA.tag === 5 && yA !== null && (iA = yA, tA !== null && (yA = hi(AA, tA), yA != null && ZA.push(Qo(AA, yA, iA)))), k0) break;
            AA = AA.return;
          }
          0 < ZA.length && (dA = new RA(dA, HA, null, d, DA), hA.push({ event: dA, listeners: ZA }));
        }
      }
      if ((n & 7) === 0) {
        A: {
          if (dA = a === "mouseover" || a === "pointerover", RA = a === "mouseout" || a === "pointerout", dA && d !== og && (HA = d.relatedTarget || d.fromElement) && (Ki(HA) || HA[dg])) break A;
          if ((RA || dA) && (dA = DA.window === DA ? DA : (dA = DA.ownerDocument) ? dA.defaultView || dA.parentWindow : window, RA ? (HA = d.relatedTarget || d.toElement, RA = IA, HA = HA ? Ki(HA) : null, HA !== null && (k0 = ng(HA), HA !== k0 || HA.tag !== 5 && HA.tag !== 6) && (HA = null)) : (RA = null, HA = IA), RA !== HA)) {
            if (ZA = On, yA = "onMouseLeave", tA = "onMouseEnter", AA = "mouse", (a === "pointerout" || a === "pointerover") && (ZA = Xn, yA = "onPointerLeave", tA = "onPointerEnter", AA = "pointer"), k0 = RA == null ? dA : aa(RA), iA = HA == null ? dA : aa(HA), dA = new ZA(yA, AA + "leave", RA, d, DA), dA.target = k0, dA.relatedTarget = iA, yA = null, Ki(DA) === IA && (ZA = new ZA(tA, AA + "enter", HA, d, DA), ZA.target = iA, ZA.relatedTarget = k0, yA = ZA), k0 = yA, RA && HA) u: {
              for (ZA = RA, tA = HA, AA = 0, iA = ZA; iA; iA = ia(iA)) AA++;
              for (iA = 0, yA = tA; yA; yA = ia(yA)) iA++;
              for (; 0 < AA - iA; ) ZA = ia(ZA), AA--;
              for (; 0 < iA - AA; ) tA = ia(tA), iA--;
              for (; AA--; ) {
                if (ZA === tA || tA !== null && ZA === tA.alternate) break u;
                ZA = ia(ZA), tA = ia(tA);
              }
              ZA = null;
            }
            else ZA = null;
            RA !== null && n6(hA, dA, RA, ZA, !1), HA !== null && k0 !== null && n6(hA, k0, HA, ZA, !0);
          }
        }
        A: {
          if (dA = IA ? aa(IA) : window, RA = dA.nodeName && dA.nodeName.toLowerCase(), RA === "select" || RA === "input" && dA.type === "file") var jA = Bo;
          else if (Co(dA)) if (go) jA = z;
          else {
            jA = R;
            var VA = x3;
          }
          else (RA = dA.nodeName) && RA.toLowerCase() === "input" && (dA.type === "checkbox" || dA.type === "radio") && (jA = Y);
          if (jA && (jA = jA(a, IA))) {
            Ba(hA, jA, d, DA);
            break A;
          }
          VA && VA(a, dA, IA), a === "focusout" && (VA = dA._wrapperState) && VA.controlled && dA.type === "number" && yB(dA, "number", dA.value);
        }
        switch (VA = IA ? aa(IA) : window, a) {
          case "focusin":
            (Co(VA) || VA.contentEditable === "true") && (ju = VA, Ne = IA, Ce = null);
            break;
          case "focusout":
            Ce = Ne = ju = null;
            break;
          case "mousedown":
            vi = !0;
            break;
          case "contextmenu":
          case "mouseup":
          case "dragend":
            vi = !1, PC(hA, d, DA);
            break;
          case "selectionchange":
            if (Du) break;
          case "keydown":
          case "keyup":
            PC(hA, d, DA);
        }
        var XA;
        if (uo) A: {
          switch (a) {
            case "compositionstart":
              var Cu = "onCompositionStart";
              break A;
            case "compositionend":
              Cu = "onCompositionEnd";
              break A;
            case "compositionupdate":
              Cu = "onCompositionUpdate";
              break A;
          }
          Cu = void 0;
        }
        else ht ? ur(a, d) && (Cu = "onCompositionEnd") : a === "keydown" && d.keyCode === 229 && (Cu = "onCompositionStart");
        Cu && (_n && d.locale !== "ko" && (ht || Cu !== "onCompositionStart" ? Cu === "onCompositionEnd" && ht && (XA = ua()) : (zC = DA, lt = "value" in zC ? zC.value : zC.textContent, ht = !0)), VA = gr(IA, Cu), 0 < VA.length && (Cu = new Vn(Cu, a, null, d, DA), hA.push({ event: Cu, listeners: VA }), XA ? Cu.data = XA : (XA = er(d), XA !== null && (Cu.data = XA)))), (XA = G3 ? f3(a, d) : L3(a, d)) && (IA = gr(IA, "onBeforeInput"), 0 < IA.length && (DA = new Vn("onBeforeInput", "beforeinput", null, d, DA), hA.push({ event: DA, listeners: IA }), DA.data = XA));
      }
      o6(hA, n);
    });
  }
  function Qo(a, n, d) {
    return { instance: a, listener: n, currentTarget: d };
  }
  function gr(a, n) {
    for (var d = n + "Capture", w = []; a !== null; ) {
      var y = a, G = y.stateNode;
      y.tag === 5 && G !== null && (y = G, G = hi(a, d), G != null && w.unshift(Qo(a, G, y)), G = hi(a, n), G != null && w.push(Qo(a, G, y))), a = a.return;
    }
    return w;
  }
  function ia(a) {
    if (a === null) return null;
    do
      a = a.return;
    while (a && a.tag !== 5);
    return a || null;
  }
  function n6(a, n, d, w, y) {
    for (var G = n._reactName, H = []; d !== null && d !== w; ) {
      var W = d, V = W.alternate, IA = W.stateNode;
      if (V !== null && V === w) break;
      W.tag === 5 && IA !== null && (W = IA, y ? (V = hi(d, G), V != null && H.unshift(Qo(d, V, W))) : y || (V = hi(d, G), V != null && H.push(Qo(d, V, W)))), d = d.return;
    }
    H.length !== 0 && a.push({ event: n, listeners: H });
  }
  var iCA = /\r\n?/g, ECA = /\u0000|\uFFFD/g;
  function r6(a) {
    return (typeof a == "string" ? a : "" + a).replace(iCA, `
`).replace(ECA, "");
  }
  function tr(a, n, d) {
    if (n = r6(n), r6(a) !== n && d) throw Error(e(425));
  }
  function ir() {
  }
  var Y3 = null, v3 = null;
  function H3(a, n) {
    return a === "textarea" || a === "noscript" || typeof n.children == "string" || typeof n.children == "number" || typeof n.dangerouslySetInnerHTML == "object" && n.dangerouslySetInnerHTML !== null && n.dangerouslySetInnerHTML.__html != null;
  }
  var K3 = typeof setTimeout == "function" ? setTimeout : void 0, aCA = typeof clearTimeout == "function" ? clearTimeout : void 0, s6 = typeof Promise == "function" ? Promise : void 0, ICA = typeof queueMicrotask == "function" ? queueMicrotask : typeof s6 < "u" ? function(a) {
    return s6.resolve(null).then(a).catch(oCA);
  } : K3;
  function oCA(a) {
    setTimeout(function() {
      throw a;
    });
  }
  function J3(a, n) {
    var d = n, w = 0;
    do {
      var y = d.nextSibling;
      if (a.removeChild(d), y && y.nodeType === 8) if (d = y.data, d === "/$") {
        if (w === 0) {
          a.removeChild(y), Gi(n);
          return;
        }
        w--;
      } else d !== "$" && d !== "$?" && d !== "$!" || w++;
      d = y;
    } while (d);
    Gi(n);
  }
  function pt(a) {
    for (; a != null; a = a.nextSibling) {
      var n = a.nodeType;
      if (n === 1 || n === 3) break;
      if (n === 8) {
        if (n = a.data, n === "$" || n === "$!" || n === "$?") break;
        if (n === "/$") return null;
      }
    }
    return a;
  }
  function l6(a) {
    a = a.previousSibling;
    for (var n = 0; a; ) {
      if (a.nodeType === 8) {
        var d = a.data;
        if (d === "$" || d === "$!" || d === "$?") {
          if (n === 0) return a;
          n--;
        } else d === "/$" && n++;
      }
      a = a.previousSibling;
    }
    return null;
  }
  var Ea = Math.random().toString(36).slice(2), GB = "__reactFiber$" + Ea, no = "__reactProps$" + Ea, dg = "__reactContainer$" + Ea, Z3 = "__reactEvents$" + Ea, QCA = "__reactListeners$" + Ea, nCA = "__reactHandles$" + Ea;
  function Ki(a) {
    var n = a[GB];
    if (n) return n;
    for (var d = a.parentNode; d; ) {
      if (n = d[dg] || d[GB]) {
        if (d = n.alternate, n.child !== null || d !== null && d.child !== null) for (a = l6(a); a !== null; ) {
          if (d = a[GB]) return d;
          a = l6(a);
        }
        return n;
      }
      a = d, d = a.parentNode;
    }
    return null;
  }
  function ro(a) {
    return a = a[GB] || a[dg], !a || a.tag !== 5 && a.tag !== 6 && a.tag !== 13 && a.tag !== 3 ? null : a;
  }
  function aa(a) {
    if (a.tag === 5 || a.tag === 6) return a.stateNode;
    throw Error(e(33));
  }
  function Er(a) {
    return a[no] || null;
  }
  var q3 = [], Ia = -1;
  function mt(a) {
    return { current: a };
  }
  function A0(a) {
    0 > Ia || (a.current = q3[Ia], q3[Ia] = null, Ia--);
  }
  function Pu(a, n) {
    Ia++, q3[Ia] = a.current, a.current = n;
  }
  var kt = {}, Ie = mt(kt), Re = mt(!1), Ji = kt;
  function oa(a, n) {
    var d = a.type.contextTypes;
    if (!d) return kt;
    var w = a.stateNode;
    if (w && w.__reactInternalMemoizedUnmaskedChildContext === n) return w.__reactInternalMemoizedMaskedChildContext;
    var y = {}, G;
    for (G in d) y[G] = n[G];
    return w && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = n, a.__reactInternalMemoizedMaskedChildContext = y), y;
  }
  function Me(a) {
    return a = a.childContextTypes, a != null;
  }
  function ar() {
    A0(Re), A0(Ie);
  }
  function c6(a, n, d) {
    if (Ie.current !== kt) throw Error(e(168));
    Pu(Ie, n), Pu(Re, d);
  }
  function d6(a, n, d) {
    var w = a.stateNode;
    if (n = n.childContextTypes, typeof w.getChildContext != "function") return d;
    w = w.getChildContext();
    for (var y in w) if (!(y in n)) throw Error(e(108, mA(a) || "Unknown", y));
    return CA({}, d, w);
  }
  function Ir(a) {
    return a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || kt, Ji = Ie.current, Pu(Ie, a), Pu(Re, Re.current), !0;
  }
  function D6(a, n, d) {
    var w = a.stateNode;
    if (!w) throw Error(e(169));
    d ? (a = d6(a, n, Ji), w.__reactInternalMemoizedMergedChildContext = a, A0(Re), A0(Ie), Pu(Ie, a)) : A0(Re), Pu(Re, d);
  }
  var Dg = null, or = !1, W3 = !1;
  function h6(a) {
    Dg === null ? Dg = [a] : Dg.push(a);
  }
  function rCA(a) {
    or = !0, h6(a);
  }
  function yt() {
    if (!W3 && Dg !== null) {
      W3 = !0;
      var a = 0, n = du;
      try {
        var d = Dg;
        for (du = 1; a < d.length; a++) {
          var w = d[a];
          do
            w = w(!0);
          while (w !== null);
        }
        Dg = null, or = !1;
      } catch (y) {
        throw Dg !== null && (Dg = Dg.slice(a + 1)), jE(It, yt), y;
      } finally {
        du = n, W3 = !1;
      }
    }
    return null;
  }
  var Qa = [], na = 0, Qr = null, nr = 0, cC = [], dC = 0, Zi = null, hg = 1, wg = "";
  function qi(a, n) {
    Qa[na++] = nr, Qa[na++] = Qr, Qr = a, nr = n;
  }
  function w6(a, n, d) {
    cC[dC++] = hg, cC[dC++] = wg, cC[dC++] = Zi, Zi = a;
    var w = hg;
    a = wg;
    var y = 32 - Se(w) - 1;
    w &= ~(1 << y), d += 1;
    var G = 32 - Se(n) + y;
    if (30 < G) {
      var H = y - y % 5;
      G = (w & (1 << H) - 1).toString(32), w >>= H, y -= H, hg = 1 << 32 - Se(n) + y | d << y | w, wg = G + a;
    } else hg = 1 << G | d << y | w, wg = a;
  }
  function j3(a) {
    a.return !== null && (qi(a, 1), w6(a, 1, 0));
  }
  function T3(a) {
    for (; a === Qr; ) Qr = Qa[--na], Qa[na] = null, nr = Qa[--na], Qa[na] = null;
    for (; a === Zi; ) Zi = cC[--dC], cC[dC] = null, wg = cC[--dC], cC[dC] = null, hg = cC[--dC], cC[dC] = null;
  }
  var BC = null, gC = null, e0 = !1, OC = null;
  function F6(a, n) {
    var d = FC(5, null, null, 0);
    d.elementType = "DELETED", d.stateNode = n, d.return = a, n = a.deletions, n === null ? (a.deletions = [d], a.flags |= 16) : n.push(d);
  }
  function p6(a, n) {
    switch (a.tag) {
      case 5:
        var d = a.type;
        return n = n.nodeType !== 1 || d.toLowerCase() !== n.nodeName.toLowerCase() ? null : n, n !== null ? (a.stateNode = n, BC = a, gC = pt(n.firstChild), !0) : !1;
      case 6:
        return n = a.pendingProps === "" || n.nodeType !== 3 ? null : n, n !== null ? (a.stateNode = n, BC = a, gC = null, !0) : !1;
      case 13:
        return n = n.nodeType !== 8 ? null : n, n !== null ? (d = Zi !== null ? { id: hg, overflow: wg } : null, a.memoizedState = { dehydrated: n, treeContext: d, retryLane: 1073741824 }, d = FC(18, null, null, 0), d.stateNode = n, d.return = a, a.child = d, BC = a, gC = null, !0) : !1;
      default:
        return !1;
    }
  }
  function z3(a) {
    return (a.mode & 1) !== 0 && (a.flags & 128) === 0;
  }
  function P3(a) {
    if (e0) {
      var n = gC;
      if (n) {
        var d = n;
        if (!p6(a, n)) {
          if (z3(a)) throw Error(e(418));
          n = pt(d.nextSibling);
          var w = BC;
          n && p6(a, n) ? F6(w, d) : (a.flags = a.flags & -4097 | 2, e0 = !1, BC = a);
        }
      } else {
        if (z3(a)) throw Error(e(418));
        a.flags = a.flags & -4097 | 2, e0 = !1, BC = a;
      }
    }
  }
  function m6(a) {
    for (a = a.return; a !== null && a.tag !== 5 && a.tag !== 3 && a.tag !== 13; ) a = a.return;
    BC = a;
  }
  function rr(a) {
    if (a !== BC) return !1;
    if (!e0) return m6(a), e0 = !0, !1;
    var n;
    if ((n = a.tag !== 3) && !(n = a.tag !== 5) && (n = a.type, n = n !== "head" && n !== "body" && !H3(a.type, a.memoizedProps)), n && (n = gC)) {
      if (z3(a)) throw k6(), Error(e(418));
      for (; n; ) F6(a, n), n = pt(n.nextSibling);
    }
    if (m6(a), a.tag === 13) {
      if (a = a.memoizedState, a = a !== null ? a.dehydrated : null, !a) throw Error(e(317));
      A: {
        for (a = a.nextSibling, n = 0; a; ) {
          if (a.nodeType === 8) {
            var d = a.data;
            if (d === "/$") {
              if (n === 0) {
                gC = pt(a.nextSibling);
                break A;
              }
              n--;
            } else d !== "$" && d !== "$!" && d !== "$?" || n++;
          }
          a = a.nextSibling;
        }
        gC = null;
      }
    } else gC = BC ? pt(a.stateNode.nextSibling) : null;
    return !0;
  }
  function k6() {
    for (var a = gC; a; ) a = pt(a.nextSibling);
  }
  function ra() {
    gC = BC = null, e0 = !1;
  }
  function O3(a) {
    OC === null ? OC = [a] : OC.push(a);
  }
  var sCA = k.ReactCurrentBatchConfig;
  function so(a, n, d) {
    if (a = d.ref, a !== null && typeof a != "function" && typeof a != "object") {
      if (d._owner) {
        if (d = d._owner, d) {
          if (d.tag !== 1) throw Error(e(309));
          var w = d.stateNode;
        }
        if (!w) throw Error(e(147, a));
        var y = w, G = "" + a;
        return n !== null && n.ref !== null && typeof n.ref == "function" && n.ref._stringRef === G ? n.ref : (n = function(H) {
          var W = y.refs;
          H === null ? delete W[G] : W[G] = H;
        }, n._stringRef = G, n);
      }
      if (typeof a != "string") throw Error(e(284));
      if (!d._owner) throw Error(e(290, a));
    }
    return a;
  }
  function sr(a, n) {
    throw a = Object.prototype.toString.call(n), Error(e(31, a === "[object Object]" ? "object with keys {" + Object.keys(n).join(", ") + "}" : a));
  }
  function y6(a) {
    var n = a._init;
    return n(a._payload);
  }
  function b6(a) {
    function n(tA, AA) {
      if (a) {
        var iA = tA.deletions;
        iA === null ? (tA.deletions = [AA], tA.flags |= 16) : iA.push(AA);
      }
    }
    function d(tA, AA) {
      if (!a) return null;
      for (; AA !== null; ) n(tA, AA), AA = AA.sibling;
      return null;
    }
    function w(tA, AA) {
      for (tA = /* @__PURE__ */ new Map(); AA !== null; ) AA.key !== null ? tA.set(AA.key, AA) : tA.set(AA.index, AA), AA = AA.sibling;
      return tA;
    }
    function y(tA, AA) {
      return tA = Nt(tA, AA), tA.index = 0, tA.sibling = null, tA;
    }
    function G(tA, AA, iA) {
      return tA.index = iA, a ? (iA = tA.alternate, iA !== null ? (iA = iA.index, iA < AA ? (tA.flags |= 2, AA) : iA) : (tA.flags |= 2, AA)) : (tA.flags |= 1048576, AA);
    }
    function H(tA) {
      return a && tA.alternate === null && (tA.flags |= 2), tA;
    }
    function W(tA, AA, iA, yA) {
      return AA === null || AA.tag !== 6 ? (AA = Kc(iA, tA.mode, yA), AA.return = tA, AA) : (AA = y(AA, iA), AA.return = tA, AA);
    }
    function V(tA, AA, iA, yA) {
      var jA = iA.type;
      return jA === L ? DA(tA, AA, iA.props.children, yA, iA.key) : AA !== null && (AA.elementType === jA || typeof jA == "object" && jA !== null && jA.$$typeof === $ && y6(jA) === AA.type) ? (yA = y(AA, iA.props), yA.ref = so(tA, AA, iA), yA.return = tA, yA) : (yA = Hr(iA.type, iA.key, iA.props, null, tA.mode, yA), yA.ref = so(tA, AA, iA), yA.return = tA, yA);
    }
    function IA(tA, AA, iA, yA) {
      return AA === null || AA.tag !== 4 || AA.stateNode.containerInfo !== iA.containerInfo || AA.stateNode.implementation !== iA.implementation ? (AA = Jc(iA, tA.mode, yA), AA.return = tA, AA) : (AA = y(AA, iA.children || []), AA.return = tA, AA);
    }
    function DA(tA, AA, iA, yA, jA) {
      return AA === null || AA.tag !== 7 ? (AA = Xi(iA, tA.mode, yA, jA), AA.return = tA, AA) : (AA = y(AA, iA), AA.return = tA, AA);
    }
    function hA(tA, AA, iA) {
      if (typeof AA == "string" && AA !== "" || typeof AA == "number") return AA = Kc("" + AA, tA.mode, iA), AA.return = tA, AA;
      if (typeof AA == "object" && AA !== null) {
        switch (AA.$$typeof) {
          case b:
            return iA = Hr(AA.type, AA.key, AA.props, null, tA.mode, iA), iA.ref = so(tA, null, AA), iA.return = tA, iA;
          case f:
            return AA = Jc(AA, tA.mode, iA), AA.return = tA, AA;
          case $:
            var yA = AA._init;
            return hA(tA, yA(AA._payload), iA);
        }
        if (it(AA) || _(AA)) return AA = Xi(AA, tA.mode, iA, null), AA.return = tA, AA;
        sr(tA, AA);
      }
      return null;
    }
    function dA(tA, AA, iA, yA) {
      var jA = AA !== null ? AA.key : null;
      if (typeof iA == "string" && iA !== "" || typeof iA == "number") return jA !== null ? null : W(tA, AA, "" + iA, yA);
      if (typeof iA == "object" && iA !== null) {
        switch (iA.$$typeof) {
          case b:
            return iA.key === jA ? V(tA, AA, iA, yA) : null;
          case f:
            return iA.key === jA ? IA(tA, AA, iA, yA) : null;
          case $:
            return jA = iA._init, dA(
              tA,
              AA,
              jA(iA._payload),
              yA
            );
        }
        if (it(iA) || _(iA)) return jA !== null ? null : DA(tA, AA, iA, yA, null);
        sr(tA, iA);
      }
      return null;
    }
    function RA(tA, AA, iA, yA, jA) {
      if (typeof yA == "string" && yA !== "" || typeof yA == "number") return tA = tA.get(iA) || null, W(AA, tA, "" + yA, jA);
      if (typeof yA == "object" && yA !== null) {
        switch (yA.$$typeof) {
          case b:
            return tA = tA.get(yA.key === null ? iA : yA.key) || null, V(AA, tA, yA, jA);
          case f:
            return tA = tA.get(yA.key === null ? iA : yA.key) || null, IA(AA, tA, yA, jA);
          case $:
            var VA = yA._init;
            return RA(tA, AA, iA, VA(yA._payload), jA);
        }
        if (it(yA) || _(yA)) return tA = tA.get(iA) || null, DA(AA, tA, yA, jA, null);
        sr(AA, yA);
      }
      return null;
    }
    function HA(tA, AA, iA, yA) {
      for (var jA = null, VA = null, XA = AA, Cu = AA = 0, j0 = null; XA !== null && Cu < iA.length; Cu++) {
        XA.index > Cu ? (j0 = XA, XA = null) : j0 = XA.sibling;
        var Lu = dA(tA, XA, iA[Cu], yA);
        if (Lu === null) {
          XA === null && (XA = j0);
          break;
        }
        a && XA && Lu.alternate === null && n(tA, XA), AA = G(Lu, AA, Cu), VA === null ? jA = Lu : VA.sibling = Lu, VA = Lu, XA = j0;
      }
      if (Cu === iA.length) return d(tA, XA), e0 && qi(tA, Cu), jA;
      if (XA === null) {
        for (; Cu < iA.length; Cu++) XA = hA(tA, iA[Cu], yA), XA !== null && (AA = G(XA, AA, Cu), VA === null ? jA = XA : VA.sibling = XA, VA = XA);
        return e0 && qi(tA, Cu), jA;
      }
      for (XA = w(tA, XA); Cu < iA.length; Cu++) j0 = RA(XA, tA, Cu, iA[Cu], yA), j0 !== null && (a && j0.alternate !== null && XA.delete(j0.key === null ? Cu : j0.key), AA = G(j0, AA, Cu), VA === null ? jA = j0 : VA.sibling = j0, VA = j0);
      return a && XA.forEach(function(Rt) {
        return n(tA, Rt);
      }), e0 && qi(tA, Cu), jA;
    }
    function ZA(tA, AA, iA, yA) {
      var jA = _(iA);
      if (typeof jA != "function") throw Error(e(150));
      if (iA = jA.call(iA), iA == null) throw Error(e(151));
      for (var VA = jA = null, XA = AA, Cu = AA = 0, j0 = null, Lu = iA.next(); XA !== null && !Lu.done; Cu++, Lu = iA.next()) {
        XA.index > Cu ? (j0 = XA, XA = null) : j0 = XA.sibling;
        var Rt = dA(tA, XA, Lu.value, yA);
        if (Rt === null) {
          XA === null && (XA = j0);
          break;
        }
        a && XA && Rt.alternate === null && n(tA, XA), AA = G(Rt, AA, Cu), VA === null ? jA = Rt : VA.sibling = Rt, VA = Rt, XA = j0;
      }
      if (Lu.done) return d(
        tA,
        XA
      ), e0 && qi(tA, Cu), jA;
      if (XA === null) {
        for (; !Lu.done; Cu++, Lu = iA.next()) Lu = hA(tA, Lu.value, yA), Lu !== null && (AA = G(Lu, AA, Cu), VA === null ? jA = Lu : VA.sibling = Lu, VA = Lu);
        return e0 && qi(tA, Cu), jA;
      }
      for (XA = w(tA, XA); !Lu.done; Cu++, Lu = iA.next()) Lu = RA(XA, tA, Cu, Lu.value, yA), Lu !== null && (a && Lu.alternate !== null && XA.delete(Lu.key === null ? Cu : Lu.key), AA = G(Lu, AA, Cu), VA === null ? jA = Lu : VA.sibling = Lu, VA = Lu);
      return a && XA.forEach(function(PCA) {
        return n(tA, PCA);
      }), e0 && qi(tA, Cu), jA;
    }
    function k0(tA, AA, iA, yA) {
      if (typeof iA == "object" && iA !== null && iA.type === L && iA.key === null && (iA = iA.props.children), typeof iA == "object" && iA !== null) {
        switch (iA.$$typeof) {
          case b:
            A: {
              for (var jA = iA.key, VA = AA; VA !== null; ) {
                if (VA.key === jA) {
                  if (jA = iA.type, jA === L) {
                    if (VA.tag === 7) {
                      d(tA, VA.sibling), AA = y(VA, iA.props.children), AA.return = tA, tA = AA;
                      break A;
                    }
                  } else if (VA.elementType === jA || typeof jA == "object" && jA !== null && jA.$$typeof === $ && y6(jA) === VA.type) {
                    d(tA, VA.sibling), AA = y(VA, iA.props), AA.ref = so(tA, VA, iA), AA.return = tA, tA = AA;
                    break A;
                  }
                  d(tA, VA);
                  break;
                } else n(tA, VA);
                VA = VA.sibling;
              }
              iA.type === L ? (AA = Xi(iA.props.children, tA.mode, yA, iA.key), AA.return = tA, tA = AA) : (yA = Hr(iA.type, iA.key, iA.props, null, tA.mode, yA), yA.ref = so(tA, AA, iA), yA.return = tA, tA = yA);
            }
            return H(tA);
          case f:
            A: {
              for (VA = iA.key; AA !== null; ) {
                if (AA.key === VA) if (AA.tag === 4 && AA.stateNode.containerInfo === iA.containerInfo && AA.stateNode.implementation === iA.implementation) {
                  d(tA, AA.sibling), AA = y(AA, iA.children || []), AA.return = tA, tA = AA;
                  break A;
                } else {
                  d(tA, AA);
                  break;
                }
                else n(tA, AA);
                AA = AA.sibling;
              }
              AA = Jc(iA, tA.mode, yA), AA.return = tA, tA = AA;
            }
            return H(tA);
          case $:
            return VA = iA._init, k0(tA, AA, VA(iA._payload), yA);
        }
        if (it(iA)) return HA(tA, AA, iA, yA);
        if (_(iA)) return ZA(tA, AA, iA, yA);
        sr(tA, iA);
      }
      return typeof iA == "string" && iA !== "" || typeof iA == "number" ? (iA = "" + iA, AA !== null && AA.tag === 6 ? (d(tA, AA.sibling), AA = y(AA, iA), AA.return = tA, tA = AA) : (d(tA, AA), AA = Kc(iA, tA.mode, yA), AA.return = tA, tA = AA), H(tA)) : d(tA, AA);
    }
    return k0;
  }
  var sa = b6(!0), U6 = b6(!1), lr = mt(null), cr = null, la = null, V3 = null;
  function X3() {
    V3 = la = cr = null;
  }
  function _3(a) {
    var n = lr.current;
    A0(lr), a._currentValue = n;
  }
  function $3(a, n, d) {
    for (; a !== null; ) {
      var w = a.alternate;
      if ((a.childLanes & n) !== n ? (a.childLanes |= n, w !== null && (w.childLanes |= n)) : w !== null && (w.childLanes & n) !== n && (w.childLanes |= n), a === d) break;
      a = a.return;
    }
  }
  function ca(a, n) {
    cr = a, V3 = la = null, a = a.dependencies, a !== null && a.firstContext !== null && ((a.lanes & n) !== 0 && (Ye = !0), a.firstContext = null);
  }
  function DC(a) {
    var n = a._currentValue;
    if (V3 !== a) if (a = { context: a, memoizedValue: n, next: null }, la === null) {
      if (cr === null) throw Error(e(308));
      la = a, cr.dependencies = { lanes: 0, firstContext: a };
    } else la = la.next = a;
    return n;
  }
  var Wi = null;
  function Ac(a) {
    Wi === null ? Wi = [a] : Wi.push(a);
  }
  function G6(a, n, d, w) {
    var y = n.interleaved;
    return y === null ? (d.next = d, Ac(n)) : (d.next = y.next, y.next = d), n.interleaved = d, Fg(a, w);
  }
  function Fg(a, n) {
    a.lanes |= n;
    var d = a.alternate;
    for (d !== null && (d.lanes |= n), d = a, a = a.return; a !== null; ) a.childLanes |= n, d = a.alternate, d !== null && (d.childLanes |= n), d = a, a = a.return;
    return d.tag === 3 ? d.stateNode : null;
  }
  var bt = !1;
  function uc(a) {
    a.updateQueue = { baseState: a.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null };
  }
  function f6(a, n) {
    a = a.updateQueue, n.updateQueue === a && (n.updateQueue = { baseState: a.baseState, firstBaseUpdate: a.firstBaseUpdate, lastBaseUpdate: a.lastBaseUpdate, shared: a.shared, effects: a.effects });
  }
  function pg(a, n) {
    return { eventTime: a, lane: n, tag: 0, payload: null, callback: null, next: null };
  }
  function Ut(a, n, d) {
    var w = a.updateQueue;
    if (w === null) return null;
    if (w = w.shared, (mu & 2) !== 0) {
      var y = w.pending;
      return y === null ? n.next = n : (n.next = y.next, y.next = n), w.pending = n, Fg(a, d);
    }
    return y = w.interleaved, y === null ? (n.next = n, Ac(w)) : (n.next = y.next, y.next = n), w.interleaved = n, Fg(a, d);
  }
  function dr(a, n, d) {
    if (n = n.updateQueue, n !== null && (n = n.shared, (d & 4194240) !== 0)) {
      var w = n.lanes;
      w &= a.pendingLanes, d |= w, n.lanes = d, PI(a, d);
    }
  }
  function L6(a, n) {
    var d = a.updateQueue, w = a.alternate;
    if (w !== null && (w = w.updateQueue, d === w)) {
      var y = null, G = null;
      if (d = d.firstBaseUpdate, d !== null) {
        do {
          var H = { eventTime: d.eventTime, lane: d.lane, tag: d.tag, payload: d.payload, callback: d.callback, next: null };
          G === null ? y = G = H : G = G.next = H, d = d.next;
        } while (d !== null);
        G === null ? y = G = n : G = G.next = n;
      } else y = G = n;
      d = { baseState: w.baseState, firstBaseUpdate: y, lastBaseUpdate: G, shared: w.shared, effects: w.effects }, a.updateQueue = d;
      return;
    }
    a = d.lastBaseUpdate, a === null ? d.firstBaseUpdate = n : a.next = n, d.lastBaseUpdate = n;
  }
  function Dr(a, n, d, w) {
    var y = a.updateQueue;
    bt = !1;
    var G = y.firstBaseUpdate, H = y.lastBaseUpdate, W = y.shared.pending;
    if (W !== null) {
      y.shared.pending = null;
      var V = W, IA = V.next;
      V.next = null, H === null ? G = IA : H.next = IA, H = V;
      var DA = a.alternate;
      DA !== null && (DA = DA.updateQueue, W = DA.lastBaseUpdate, W !== H && (W === null ? DA.firstBaseUpdate = IA : W.next = IA, DA.lastBaseUpdate = V));
    }
    if (G !== null) {
      var hA = y.baseState;
      H = 0, DA = IA = V = null, W = G;
      do {
        var dA = W.lane, RA = W.eventTime;
        if ((w & dA) === dA) {
          DA !== null && (DA = DA.next = {
            eventTime: RA,
            lane: 0,
            tag: W.tag,
            payload: W.payload,
            callback: W.callback,
            next: null
          });
          A: {
            var HA = a, ZA = W;
            switch (dA = n, RA = d, ZA.tag) {
              case 1:
                if (HA = ZA.payload, typeof HA == "function") {
                  hA = HA.call(RA, hA, dA);
                  break A;
                }
                hA = HA;
                break A;
              case 3:
                HA.flags = HA.flags & -65537 | 128;
              case 0:
                if (HA = ZA.payload, dA = typeof HA == "function" ? HA.call(RA, hA, dA) : HA, dA == null) break A;
                hA = CA({}, hA, dA);
                break A;
              case 2:
                bt = !0;
            }
          }
          W.callback !== null && W.lane !== 0 && (a.flags |= 64, dA = y.effects, dA === null ? y.effects = [W] : dA.push(W));
        } else RA = { eventTime: RA, lane: dA, tag: W.tag, payload: W.payload, callback: W.callback, next: null }, DA === null ? (IA = DA = RA, V = hA) : DA = DA.next = RA, H |= dA;
        if (W = W.next, W === null) {
          if (W = y.shared.pending, W === null) break;
          dA = W, W = dA.next, dA.next = null, y.lastBaseUpdate = dA, y.shared.pending = null;
        }
      } while (!0);
      if (DA === null && (V = hA), y.baseState = V, y.firstBaseUpdate = IA, y.lastBaseUpdate = DA, n = y.shared.interleaved, n !== null) {
        y = n;
        do
          H |= y.lane, y = y.next;
        while (y !== n);
      } else G === null && (y.shared.lanes = 0);
      zi |= H, a.lanes = H, a.memoizedState = hA;
    }
  }
  function x6(a, n, d) {
    if (a = n.effects, n.effects = null, a !== null) for (n = 0; n < a.length; n++) {
      var w = a[n], y = w.callback;
      if (y !== null) {
        if (w.callback = null, w = d, typeof y != "function") throw Error(e(191, y));
        y.call(w);
      }
    }
  }
  var lo = {}, fB = mt(lo), co = mt(lo), Do = mt(lo);
  function ji(a) {
    if (a === lo) throw Error(e(174));
    return a;
  }
  function ec(a, n) {
    switch (Pu(Do, n), Pu(co, a), Pu(fB, lo), a = n.nodeType, a) {
      case 9:
      case 11:
        n = (n = n.documentElement) ? n.namespaceURI : Gu(null, "");
        break;
      default:
        a = a === 8 ? n.parentNode : n, n = a.namespaceURI || null, a = a.tagName, n = Gu(n, a);
    }
    A0(fB), Pu(fB, n);
  }
  function da() {
    A0(fB), A0(co), A0(Do);
  }
  function S6(a) {
    ji(Do.current);
    var n = ji(fB.current), d = Gu(n, a.type);
    n !== d && (Pu(co, a), Pu(fB, d));
  }
  function Cc(a) {
    co.current === a && (A0(fB), A0(co));
  }
  var I0 = mt(0);
  function hr(a) {
    for (var n = a; n !== null; ) {
      if (n.tag === 13) {
        var d = n.memoizedState;
        if (d !== null && (d = d.dehydrated, d === null || d.data === "$?" || d.data === "$!")) return n;
      } else if (n.tag === 19 && n.memoizedProps.revealOrder !== void 0) {
        if ((n.flags & 128) !== 0) return n;
      } else if (n.child !== null) {
        n.child.return = n, n = n.child;
        continue;
      }
      if (n === a) break;
      for (; n.sibling === null; ) {
        if (n.return === null || n.return === a) return null;
        n = n.return;
      }
      n.sibling.return = n.return, n = n.sibling;
    }
    return null;
  }
  var Bc = [];
  function gc() {
    for (var a = 0; a < Bc.length; a++) Bc[a]._workInProgressVersionPrimary = null;
    Bc.length = 0;
  }
  var wr = k.ReactCurrentDispatcher, tc = k.ReactCurrentBatchConfig, Ti = 0, o0 = null, R0 = null, q0 = null, Fr = !1, ho = !1, wo = 0, lCA = 0;
  function oe() {
    throw Error(e(321));
  }
  function ic(a, n) {
    if (n === null) return !1;
    for (var d = 0; d < n.length && d < a.length; d++) if (!oA(a[d], n[d])) return !1;
    return !0;
  }
  function Ec(a, n, d, w, y, G) {
    if (Ti = G, o0 = n, n.memoizedState = null, n.updateQueue = null, n.lanes = 0, wr.current = a === null || a.memoizedState === null ? hCA : wCA, a = d(w, y), ho) {
      G = 0;
      do {
        if (ho = !1, wo = 0, 25 <= G) throw Error(e(301));
        G += 1, q0 = R0 = null, n.updateQueue = null, wr.current = FCA, a = d(w, y);
      } while (ho);
    }
    if (wr.current = kr, n = R0 !== null && R0.next !== null, Ti = 0, q0 = R0 = o0 = null, Fr = !1, n) throw Error(e(300));
    return a;
  }
  function ac() {
    var a = wo !== 0;
    return wo = 0, a;
  }
  function LB() {
    var a = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null };
    return q0 === null ? o0.memoizedState = q0 = a : q0 = q0.next = a, q0;
  }
  function hC() {
    if (R0 === null) {
      var a = o0.alternate;
      a = a !== null ? a.memoizedState : null;
    } else a = R0.next;
    var n = q0 === null ? o0.memoizedState : q0.next;
    if (n !== null) q0 = n, R0 = a;
    else {
      if (a === null) throw Error(e(310));
      R0 = a, a = { memoizedState: R0.memoizedState, baseState: R0.baseState, baseQueue: R0.baseQueue, queue: R0.queue, next: null }, q0 === null ? o0.memoizedState = q0 = a : q0 = q0.next = a;
    }
    return q0;
  }
  function Fo(a, n) {
    return typeof n == "function" ? n(a) : n;
  }
  function Ic(a) {
    var n = hC(), d = n.queue;
    if (d === null) throw Error(e(311));
    d.lastRenderedReducer = a;
    var w = R0, y = w.baseQueue, G = d.pending;
    if (G !== null) {
      if (y !== null) {
        var H = y.next;
        y.next = G.next, G.next = H;
      }
      w.baseQueue = y = G, d.pending = null;
    }
    if (y !== null) {
      G = y.next, w = w.baseState;
      var W = H = null, V = null, IA = G;
      do {
        var DA = IA.lane;
        if ((Ti & DA) === DA) V !== null && (V = V.next = { lane: 0, action: IA.action, hasEagerState: IA.hasEagerState, eagerState: IA.eagerState, next: null }), w = IA.hasEagerState ? IA.eagerState : a(w, IA.action);
        else {
          var hA = {
            lane: DA,
            action: IA.action,
            hasEagerState: IA.hasEagerState,
            eagerState: IA.eagerState,
            next: null
          };
          V === null ? (W = V = hA, H = w) : V = V.next = hA, o0.lanes |= DA, zi |= DA;
        }
        IA = IA.next;
      } while (IA !== null && IA !== G);
      V === null ? H = w : V.next = W, oA(w, n.memoizedState) || (Ye = !0), n.memoizedState = w, n.baseState = H, n.baseQueue = V, d.lastRenderedState = w;
    }
    if (a = d.interleaved, a !== null) {
      y = a;
      do
        G = y.lane, o0.lanes |= G, zi |= G, y = y.next;
      while (y !== a);
    } else y === null && (d.lanes = 0);
    return [n.memoizedState, d.dispatch];
  }
  function oc(a) {
    var n = hC(), d = n.queue;
    if (d === null) throw Error(e(311));
    d.lastRenderedReducer = a;
    var w = d.dispatch, y = d.pending, G = n.memoizedState;
    if (y !== null) {
      d.pending = null;
      var H = y = y.next;
      do
        G = a(G, H.action), H = H.next;
      while (H !== y);
      oA(G, n.memoizedState) || (Ye = !0), n.memoizedState = G, n.baseQueue === null && (n.baseState = G), d.lastRenderedState = G;
    }
    return [G, w];
  }
  function N6() {
  }
  function R6(a, n) {
    var d = o0, w = hC(), y = n(), G = !oA(w.memoizedState, y);
    if (G && (w.memoizedState = y, Ye = !0), w = w.queue, Qc(v6.bind(null, d, w, a), [a]), w.getSnapshot !== n || G || q0 !== null && q0.memoizedState.tag & 1) {
      if (d.flags |= 2048, po(9, Y6.bind(null, d, w, y, n), void 0, null), W0 === null) throw Error(e(349));
      (Ti & 30) !== 0 || M6(d, n, y);
    }
    return y;
  }
  function M6(a, n, d) {
    a.flags |= 16384, a = { getSnapshot: n, value: d }, n = o0.updateQueue, n === null ? (n = { lastEffect: null, stores: null }, o0.updateQueue = n, n.stores = [a]) : (d = n.stores, d === null ? n.stores = [a] : d.push(a));
  }
  function Y6(a, n, d, w) {
    n.value = d, n.getSnapshot = w, H6(n) && K6(a);
  }
  function v6(a, n, d) {
    return d(function() {
      H6(n) && K6(a);
    });
  }
  function H6(a) {
    var n = a.getSnapshot;
    a = a.value;
    try {
      var d = n();
      return !oA(a, d);
    } catch {
      return !0;
    }
  }
  function K6(a) {
    var n = Fg(a, 1);
    n !== null && $C(n, a, 1, -1);
  }
  function J6(a) {
    var n = LB();
    return typeof a == "function" && (a = a()), n.memoizedState = n.baseState = a, a = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: Fo, lastRenderedState: a }, n.queue = a, a = a.dispatch = DCA.bind(null, o0, a), [n.memoizedState, a];
  }
  function po(a, n, d, w) {
    return a = { tag: a, create: n, destroy: d, deps: w, next: null }, n = o0.updateQueue, n === null ? (n = { lastEffect: null, stores: null }, o0.updateQueue = n, n.lastEffect = a.next = a) : (d = n.lastEffect, d === null ? n.lastEffect = a.next = a : (w = d.next, d.next = a, a.next = w, n.lastEffect = a)), a;
  }
  function Z6() {
    return hC().memoizedState;
  }
  function pr(a, n, d, w) {
    var y = LB();
    o0.flags |= a, y.memoizedState = po(1 | n, d, void 0, w === void 0 ? null : w);
  }
  function mr(a, n, d, w) {
    var y = hC();
    w = w === void 0 ? null : w;
    var G = void 0;
    if (R0 !== null) {
      var H = R0.memoizedState;
      if (G = H.destroy, w !== null && ic(w, H.deps)) {
        y.memoizedState = po(n, d, G, w);
        return;
      }
    }
    o0.flags |= a, y.memoizedState = po(1 | n, d, G, w);
  }
  function q6(a, n) {
    return pr(8390656, 8, a, n);
  }
  function Qc(a, n) {
    return mr(2048, 8, a, n);
  }
  function W6(a, n) {
    return mr(4, 2, a, n);
  }
  function j6(a, n) {
    return mr(4, 4, a, n);
  }
  function T6(a, n) {
    if (typeof n == "function") return a = a(), n(a), function() {
      n(null);
    };
    if (n != null) return a = a(), n.current = a, function() {
      n.current = null;
    };
  }
  function z6(a, n, d) {
    return d = d != null ? d.concat([a]) : null, mr(4, 4, T6.bind(null, n, a), d);
  }
  function nc() {
  }
  function P6(a, n) {
    var d = hC();
    n = n === void 0 ? null : n;
    var w = d.memoizedState;
    return w !== null && n !== null && ic(n, w[1]) ? w[0] : (d.memoizedState = [a, n], a);
  }
  function O6(a, n) {
    var d = hC();
    n = n === void 0 ? null : n;
    var w = d.memoizedState;
    return w !== null && n !== null && ic(n, w[1]) ? w[0] : (a = a(), d.memoizedState = [a, n], a);
  }
  function V6(a, n, d) {
    return (Ti & 21) === 0 ? (a.baseState && (a.baseState = !1, Ye = !0), a.memoizedState = d) : (oA(d, n) || (d = zI(), o0.lanes |= d, zi |= d, a.baseState = !0), n);
  }
  function cCA(a, n) {
    var d = du;
    du = d !== 0 && 4 > d ? d : 4, a(!0);
    var w = tc.transition;
    tc.transition = {};
    try {
      a(!1), n();
    } finally {
      du = d, tc.transition = w;
    }
  }
  function X6() {
    return hC().memoizedState;
  }
  function dCA(a, n, d) {
    var w = xt(a);
    if (d = { lane: w, action: d, hasEagerState: !1, eagerState: null, next: null }, _6(a)) $6(n, d);
    else if (d = G6(a, n, d, w), d !== null) {
      var y = ye();
      $C(d, a, w, y), Ah(d, n, w);
    }
  }
  function DCA(a, n, d) {
    var w = xt(a), y = { lane: w, action: d, hasEagerState: !1, eagerState: null, next: null };
    if (_6(a)) $6(n, y);
    else {
      var G = a.alternate;
      if (a.lanes === 0 && (G === null || G.lanes === 0) && (G = n.lastRenderedReducer, G !== null)) try {
        var H = n.lastRenderedState, W = G(H, d);
        if (y.hasEagerState = !0, y.eagerState = W, oA(W, H)) {
          var V = n.interleaved;
          V === null ? (y.next = y, Ac(n)) : (y.next = V.next, V.next = y), n.interleaved = y;
          return;
        }
      } catch {
      } finally {
      }
      d = G6(a, n, y, w), d !== null && (y = ye(), $C(d, a, w, y), Ah(d, n, w));
    }
  }
  function _6(a) {
    var n = a.alternate;
    return a === o0 || n !== null && n === o0;
  }
  function $6(a, n) {
    ho = Fr = !0;
    var d = a.pending;
    d === null ? n.next = n : (n.next = d.next, d.next = n), a.pending = n;
  }
  function Ah(a, n, d) {
    if ((d & 4194240) !== 0) {
      var w = n.lanes;
      w &= a.pendingLanes, d |= w, n.lanes = d, PI(a, d);
    }
  }
  var kr = { readContext: DC, useCallback: oe, useContext: oe, useEffect: oe, useImperativeHandle: oe, useInsertionEffect: oe, useLayoutEffect: oe, useMemo: oe, useReducer: oe, useRef: oe, useState: oe, useDebugValue: oe, useDeferredValue: oe, useTransition: oe, useMutableSource: oe, useSyncExternalStore: oe, useId: oe, unstable_isNewReconciler: !1 }, hCA = { readContext: DC, useCallback: function(a, n) {
    return LB().memoizedState = [a, n === void 0 ? null : n], a;
  }, useContext: DC, useEffect: q6, useImperativeHandle: function(a, n, d) {
    return d = d != null ? d.concat([a]) : null, pr(
      4194308,
      4,
      T6.bind(null, n, a),
      d
    );
  }, useLayoutEffect: function(a, n) {
    return pr(4194308, 4, a, n);
  }, useInsertionEffect: function(a, n) {
    return pr(4, 2, a, n);
  }, useMemo: function(a, n) {
    var d = LB();
    return n = n === void 0 ? null : n, a = a(), d.memoizedState = [a, n], a;
  }, useReducer: function(a, n, d) {
    var w = LB();
    return n = d !== void 0 ? d(n) : n, w.memoizedState = w.baseState = n, a = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: a, lastRenderedState: n }, w.queue = a, a = a.dispatch = dCA.bind(null, o0, a), [w.memoizedState, a];
  }, useRef: function(a) {
    var n = LB();
    return a = { current: a }, n.memoizedState = a;
  }, useState: J6, useDebugValue: nc, useDeferredValue: function(a) {
    return LB().memoizedState = a;
  }, useTransition: function() {
    var a = J6(!1), n = a[0];
    return a = cCA.bind(null, a[1]), LB().memoizedState = a, [n, a];
  }, useMutableSource: function() {
  }, useSyncExternalStore: function(a, n, d) {
    var w = o0, y = LB();
    if (e0) {
      if (d === void 0) throw Error(e(407));
      d = d();
    } else {
      if (d = n(), W0 === null) throw Error(e(349));
      (Ti & 30) !== 0 || M6(w, n, d);
    }
    y.memoizedState = d;
    var G = { value: d, getSnapshot: n };
    return y.queue = G, q6(v6.bind(
      null,
      w,
      G,
      a
    ), [a]), w.flags |= 2048, po(9, Y6.bind(null, w, G, d, n), void 0, null), d;
  }, useId: function() {
    var a = LB(), n = W0.identifierPrefix;
    if (e0) {
      var d = wg, w = hg;
      d = (w & ~(1 << 32 - Se(w) - 1)).toString(32) + d, n = ":" + n + "R" + d, d = wo++, 0 < d && (n += "H" + d.toString(32)), n += ":";
    } else d = lCA++, n = ":" + n + "r" + d.toString(32) + ":";
    return a.memoizedState = n;
  }, unstable_isNewReconciler: !1 }, wCA = {
    readContext: DC,
    useCallback: P6,
    useContext: DC,
    useEffect: Qc,
    useImperativeHandle: z6,
    useInsertionEffect: W6,
    useLayoutEffect: j6,
    useMemo: O6,
    useReducer: Ic,
    useRef: Z6,
    useState: function() {
      return Ic(Fo);
    },
    useDebugValue: nc,
    useDeferredValue: function(a) {
      var n = hC();
      return V6(n, R0.memoizedState, a);
    },
    useTransition: function() {
      var a = Ic(Fo)[0], n = hC().memoizedState;
      return [a, n];
    },
    useMutableSource: N6,
    useSyncExternalStore: R6,
    useId: X6,
    unstable_isNewReconciler: !1
  }, FCA = { readContext: DC, useCallback: P6, useContext: DC, useEffect: Qc, useImperativeHandle: z6, useInsertionEffect: W6, useLayoutEffect: j6, useMemo: O6, useReducer: oc, useRef: Z6, useState: function() {
    return oc(Fo);
  }, useDebugValue: nc, useDeferredValue: function(a) {
    var n = hC();
    return R0 === null ? n.memoizedState = a : V6(n, R0.memoizedState, a);
  }, useTransition: function() {
    var a = oc(Fo)[0], n = hC().memoizedState;
    return [a, n];
  }, useMutableSource: N6, useSyncExternalStore: R6, useId: X6, unstable_isNewReconciler: !1 };
  function VC(a, n) {
    if (a && a.defaultProps) {
      n = CA({}, n), a = a.defaultProps;
      for (var d in a) n[d] === void 0 && (n[d] = a[d]);
      return n;
    }
    return n;
  }
  function rc(a, n, d, w) {
    n = a.memoizedState, d = d(w, n), d = d == null ? n : CA({}, n, d), a.memoizedState = d, a.lanes === 0 && (a.updateQueue.baseState = d);
  }
  var yr = { isMounted: function(a) {
    return (a = a._reactInternals) ? ng(a) === a : !1;
  }, enqueueSetState: function(a, n, d) {
    a = a._reactInternals;
    var w = ye(), y = xt(a), G = pg(w, y);
    G.payload = n, d != null && (G.callback = d), n = Ut(a, G, y), n !== null && ($C(n, a, y, w), dr(n, a, y));
  }, enqueueReplaceState: function(a, n, d) {
    a = a._reactInternals;
    var w = ye(), y = xt(a), G = pg(w, y);
    G.tag = 1, G.payload = n, d != null && (G.callback = d), n = Ut(a, G, y), n !== null && ($C(n, a, y, w), dr(n, a, y));
  }, enqueueForceUpdate: function(a, n) {
    a = a._reactInternals;
    var d = ye(), w = xt(a), y = pg(d, w);
    y.tag = 2, n != null && (y.callback = n), n = Ut(a, y, w), n !== null && ($C(n, a, w, d), dr(n, a, w));
  } };
  function uh(a, n, d, w, y, G, H) {
    return a = a.stateNode, typeof a.shouldComponentUpdate == "function" ? a.shouldComponentUpdate(w, G, H) : n.prototype && n.prototype.isPureReactComponent ? !sA(d, w) || !sA(y, G) : !0;
  }
  function eh(a, n, d) {
    var w = !1, y = kt, G = n.contextType;
    return typeof G == "object" && G !== null ? G = DC(G) : (y = Me(n) ? Ji : Ie.current, w = n.contextTypes, G = (w = w != null) ? oa(a, y) : kt), n = new n(d, G), a.memoizedState = n.state !== null && n.state !== void 0 ? n.state : null, n.updater = yr, a.stateNode = n, n._reactInternals = a, w && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = y, a.__reactInternalMemoizedMaskedChildContext = G), n;
  }
  function Ch(a, n, d, w) {
    a = n.state, typeof n.componentWillReceiveProps == "function" && n.componentWillReceiveProps(d, w), typeof n.UNSAFE_componentWillReceiveProps == "function" && n.UNSAFE_componentWillReceiveProps(d, w), n.state !== a && yr.enqueueReplaceState(n, n.state, null);
  }
  function sc(a, n, d, w) {
    var y = a.stateNode;
    y.props = d, y.state = a.memoizedState, y.refs = {}, uc(a);
    var G = n.contextType;
    typeof G == "object" && G !== null ? y.context = DC(G) : (G = Me(n) ? Ji : Ie.current, y.context = oa(a, G)), y.state = a.memoizedState, G = n.getDerivedStateFromProps, typeof G == "function" && (rc(a, n, G, d), y.state = a.memoizedState), typeof n.getDerivedStateFromProps == "function" || typeof y.getSnapshotBeforeUpdate == "function" || typeof y.UNSAFE_componentWillMount != "function" && typeof y.componentWillMount != "function" || (n = y.state, typeof y.componentWillMount == "function" && y.componentWillMount(), typeof y.UNSAFE_componentWillMount == "function" && y.UNSAFE_componentWillMount(), n !== y.state && yr.enqueueReplaceState(y, y.state, null), Dr(a, d, y, w), y.state = a.memoizedState), typeof y.componentDidMount == "function" && (a.flags |= 4194308);
  }
  function Da(a, n) {
    try {
      var d = "", w = n;
      do
        d += qA(w), w = w.return;
      while (w);
      var y = d;
    } catch (G) {
      y = `
Error generating stack: ` + G.message + `
` + G.stack;
    }
    return { value: a, source: n, stack: y, digest: null };
  }
  function lc(a, n, d) {
    return { value: a, source: null, stack: d ?? null, digest: n ?? null };
  }
  function cc(a, n) {
    try {
      console.error(n.value);
    } catch (d) {
      setTimeout(function() {
        throw d;
      });
    }
  }
  var pCA = typeof WeakMap == "function" ? WeakMap : Map;
  function Bh(a, n, d) {
    d = pg(-1, d), d.tag = 3, d.payload = { element: null };
    var w = n.value;
    return d.callback = function() {
      Sr || (Sr = !0, xc = w), cc(a, n);
    }, d;
  }
  function gh(a, n, d) {
    d = pg(-1, d), d.tag = 3;
    var w = a.type.getDerivedStateFromError;
    if (typeof w == "function") {
      var y = n.value;
      d.payload = function() {
        return w(y);
      }, d.callback = function() {
        cc(a, n);
      };
    }
    var G = a.stateNode;
    return G !== null && typeof G.componentDidCatch == "function" && (d.callback = function() {
      cc(a, n), typeof w != "function" && (ft === null ? ft = /* @__PURE__ */ new Set([this]) : ft.add(this));
      var H = n.stack;
      this.componentDidCatch(n.value, { componentStack: H !== null ? H : "" });
    }), d;
  }
  function th(a, n, d) {
    var w = a.pingCache;
    if (w === null) {
      w = a.pingCache = new pCA();
      var y = /* @__PURE__ */ new Set();
      w.set(n, y);
    } else y = w.get(n), y === void 0 && (y = /* @__PURE__ */ new Set(), w.set(n, y));
    y.has(d) || (y.add(d), a = YCA.bind(null, a, n, d), n.then(a, a));
  }
  function ih(a) {
    do {
      var n;
      if ((n = a.tag === 13) && (n = a.memoizedState, n = n !== null ? n.dehydrated !== null : !0), n) return a;
      a = a.return;
    } while (a !== null);
    return null;
  }
  function Eh(a, n, d, w, y) {
    return (a.mode & 1) === 0 ? (a === n ? a.flags |= 65536 : (a.flags |= 128, d.flags |= 131072, d.flags &= -52805, d.tag === 1 && (d.alternate === null ? d.tag = 17 : (n = pg(-1, 1), n.tag = 2, Ut(d, n, 1))), d.lanes |= 1), a) : (a.flags |= 65536, a.lanes = y, a);
  }
  var mCA = k.ReactCurrentOwner, Ye = !1;
  function ke(a, n, d, w) {
    n.child = a === null ? U6(n, null, d, w) : sa(n, a.child, d, w);
  }
  function ah(a, n, d, w, y) {
    d = d.render;
    var G = n.ref;
    return ca(n, y), w = Ec(a, n, d, w, G, y), d = ac(), a !== null && !Ye ? (n.updateQueue = a.updateQueue, n.flags &= -2053, a.lanes &= ~y, mg(a, n, y)) : (e0 && d && j3(n), n.flags |= 1, ke(a, n, w, y), n.child);
  }
  function Ih(a, n, d, w, y) {
    if (a === null) {
      var G = d.type;
      return typeof G == "function" && !Hc(G) && G.defaultProps === void 0 && d.compare === null && d.defaultProps === void 0 ? (n.tag = 15, n.type = G, oh(a, n, G, w, y)) : (a = Hr(d.type, null, w, n, n.mode, y), a.ref = n.ref, a.return = n, n.child = a);
    }
    if (G = a.child, (a.lanes & y) === 0) {
      var H = G.memoizedProps;
      if (d = d.compare, d = d !== null ? d : sA, d(H, w) && a.ref === n.ref) return mg(a, n, y);
    }
    return n.flags |= 1, a = Nt(G, w), a.ref = n.ref, a.return = n, n.child = a;
  }
  function oh(a, n, d, w, y) {
    if (a !== null) {
      var G = a.memoizedProps;
      if (sA(G, w) && a.ref === n.ref) if (Ye = !1, n.pendingProps = w = G, (a.lanes & y) !== 0) (a.flags & 131072) !== 0 && (Ye = !0);
      else return n.lanes = a.lanes, mg(a, n, y);
    }
    return dc(a, n, d, w, y);
  }
  function Qh(a, n, d) {
    var w = n.pendingProps, y = w.children, G = a !== null ? a.memoizedState : null;
    if (w.mode === "hidden") if ((n.mode & 1) === 0) n.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, Pu(wa, tC), tC |= d;
    else {
      if ((d & 1073741824) === 0) return a = G !== null ? G.baseLanes | d : d, n.lanes = n.childLanes = 1073741824, n.memoizedState = { baseLanes: a, cachePool: null, transitions: null }, n.updateQueue = null, Pu(wa, tC), tC |= a, null;
      n.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, w = G !== null ? G.baseLanes : d, Pu(wa, tC), tC |= w;
    }
    else G !== null ? (w = G.baseLanes | d, n.memoizedState = null) : w = d, Pu(wa, tC), tC |= w;
    return ke(a, n, y, d), n.child;
  }
  function nh(a, n) {
    var d = n.ref;
    (a === null && d !== null || a !== null && a.ref !== d) && (n.flags |= 512, n.flags |= 2097152);
  }
  function dc(a, n, d, w, y) {
    var G = Me(d) ? Ji : Ie.current;
    return G = oa(n, G), ca(n, y), d = Ec(a, n, d, w, G, y), w = ac(), a !== null && !Ye ? (n.updateQueue = a.updateQueue, n.flags &= -2053, a.lanes &= ~y, mg(a, n, y)) : (e0 && w && j3(n), n.flags |= 1, ke(a, n, d, y), n.child);
  }
  function rh(a, n, d, w, y) {
    if (Me(d)) {
      var G = !0;
      Ir(n);
    } else G = !1;
    if (ca(n, y), n.stateNode === null) Ur(a, n), eh(n, d, w), sc(n, d, w, y), w = !0;
    else if (a === null) {
      var H = n.stateNode, W = n.memoizedProps;
      H.props = W;
      var V = H.context, IA = d.contextType;
      typeof IA == "object" && IA !== null ? IA = DC(IA) : (IA = Me(d) ? Ji : Ie.current, IA = oa(n, IA));
      var DA = d.getDerivedStateFromProps, hA = typeof DA == "function" || typeof H.getSnapshotBeforeUpdate == "function";
      hA || typeof H.UNSAFE_componentWillReceiveProps != "function" && typeof H.componentWillReceiveProps != "function" || (W !== w || V !== IA) && Ch(n, H, w, IA), bt = !1;
      var dA = n.memoizedState;
      H.state = dA, Dr(n, w, H, y), V = n.memoizedState, W !== w || dA !== V || Re.current || bt ? (typeof DA == "function" && (rc(n, d, DA, w), V = n.memoizedState), (W = bt || uh(n, d, W, w, dA, V, IA)) ? (hA || typeof H.UNSAFE_componentWillMount != "function" && typeof H.componentWillMount != "function" || (typeof H.componentWillMount == "function" && H.componentWillMount(), typeof H.UNSAFE_componentWillMount == "function" && H.UNSAFE_componentWillMount()), typeof H.componentDidMount == "function" && (n.flags |= 4194308)) : (typeof H.componentDidMount == "function" && (n.flags |= 4194308), n.memoizedProps = w, n.memoizedState = V), H.props = w, H.state = V, H.context = IA, w = W) : (typeof H.componentDidMount == "function" && (n.flags |= 4194308), w = !1);
    } else {
      H = n.stateNode, f6(a, n), W = n.memoizedProps, IA = n.type === n.elementType ? W : VC(n.type, W), H.props = IA, hA = n.pendingProps, dA = H.context, V = d.contextType, typeof V == "object" && V !== null ? V = DC(V) : (V = Me(d) ? Ji : Ie.current, V = oa(n, V));
      var RA = d.getDerivedStateFromProps;
      (DA = typeof RA == "function" || typeof H.getSnapshotBeforeUpdate == "function") || typeof H.UNSAFE_componentWillReceiveProps != "function" && typeof H.componentWillReceiveProps != "function" || (W !== hA || dA !== V) && Ch(n, H, w, V), bt = !1, dA = n.memoizedState, H.state = dA, Dr(n, w, H, y);
      var HA = n.memoizedState;
      W !== hA || dA !== HA || Re.current || bt ? (typeof RA == "function" && (rc(n, d, RA, w), HA = n.memoizedState), (IA = bt || uh(n, d, IA, w, dA, HA, V) || !1) ? (DA || typeof H.UNSAFE_componentWillUpdate != "function" && typeof H.componentWillUpdate != "function" || (typeof H.componentWillUpdate == "function" && H.componentWillUpdate(w, HA, V), typeof H.UNSAFE_componentWillUpdate == "function" && H.UNSAFE_componentWillUpdate(w, HA, V)), typeof H.componentDidUpdate == "function" && (n.flags |= 4), typeof H.getSnapshotBeforeUpdate == "function" && (n.flags |= 1024)) : (typeof H.componentDidUpdate != "function" || W === a.memoizedProps && dA === a.memoizedState || (n.flags |= 4), typeof H.getSnapshotBeforeUpdate != "function" || W === a.memoizedProps && dA === a.memoizedState || (n.flags |= 1024), n.memoizedProps = w, n.memoizedState = HA), H.props = w, H.state = HA, H.context = V, w = IA) : (typeof H.componentDidUpdate != "function" || W === a.memoizedProps && dA === a.memoizedState || (n.flags |= 4), typeof H.getSnapshotBeforeUpdate != "function" || W === a.memoizedProps && dA === a.memoizedState || (n.flags |= 1024), w = !1);
    }
    return Dc(a, n, d, w, G, y);
  }
  function Dc(a, n, d, w, y, G) {
    nh(a, n);
    var H = (n.flags & 128) !== 0;
    if (!w && !H) return y && D6(n, d, !1), mg(a, n, G);
    w = n.stateNode, mCA.current = n;
    var W = H && typeof d.getDerivedStateFromError != "function" ? null : w.render();
    return n.flags |= 1, a !== null && H ? (n.child = sa(n, a.child, null, G), n.child = sa(n, null, W, G)) : ke(a, n, W, G), n.memoizedState = w.state, y && D6(n, d, !0), n.child;
  }
  function sh(a) {
    var n = a.stateNode;
    n.pendingContext ? c6(a, n.pendingContext, n.pendingContext !== n.context) : n.context && c6(a, n.context, !1), ec(a, n.containerInfo);
  }
  function lh(a, n, d, w, y) {
    return ra(), O3(y), n.flags |= 256, ke(a, n, d, w), n.child;
  }
  var hc = { dehydrated: null, treeContext: null, retryLane: 0 };
  function wc(a) {
    return { baseLanes: a, cachePool: null, transitions: null };
  }
  function ch(a, n, d) {
    var w = n.pendingProps, y = I0.current, G = !1, H = (n.flags & 128) !== 0, W;
    if ((W = H) || (W = a !== null && a.memoizedState === null ? !1 : (y & 2) !== 0), W ? (G = !0, n.flags &= -129) : (a === null || a.memoizedState !== null) && (y |= 1), Pu(I0, y & 1), a === null)
      return P3(n), a = n.memoizedState, a !== null && (a = a.dehydrated, a !== null) ? ((n.mode & 1) === 0 ? n.lanes = 1 : a.data === "$!" ? n.lanes = 8 : n.lanes = 1073741824, null) : (H = w.children, a = w.fallback, G ? (w = n.mode, G = n.child, H = { mode: "hidden", children: H }, (w & 1) === 0 && G !== null ? (G.childLanes = 0, G.pendingProps = H) : G = Kr(H, w, 0, null), a = Xi(a, w, d, null), G.return = n, a.return = n, G.sibling = a, n.child = G, n.child.memoizedState = wc(d), n.memoizedState = hc, a) : Fc(n, H));
    if (y = a.memoizedState, y !== null && (W = y.dehydrated, W !== null)) return kCA(a, n, H, w, W, y, d);
    if (G) {
      G = w.fallback, H = n.mode, y = a.child, W = y.sibling;
      var V = { mode: "hidden", children: w.children };
      return (H & 1) === 0 && n.child !== y ? (w = n.child, w.childLanes = 0, w.pendingProps = V, n.deletions = null) : (w = Nt(y, V), w.subtreeFlags = y.subtreeFlags & 14680064), W !== null ? G = Nt(W, G) : (G = Xi(G, H, d, null), G.flags |= 2), G.return = n, w.return = n, w.sibling = G, n.child = w, w = G, G = n.child, H = a.child.memoizedState, H = H === null ? wc(d) : { baseLanes: H.baseLanes | d, cachePool: null, transitions: H.transitions }, G.memoizedState = H, G.childLanes = a.childLanes & ~d, n.memoizedState = hc, w;
    }
    return G = a.child, a = G.sibling, w = Nt(G, { mode: "visible", children: w.children }), (n.mode & 1) === 0 && (w.lanes = d), w.return = n, w.sibling = null, a !== null && (d = n.deletions, d === null ? (n.deletions = [a], n.flags |= 16) : d.push(a)), n.child = w, n.memoizedState = null, w;
  }
  function Fc(a, n) {
    return n = Kr({ mode: "visible", children: n }, a.mode, 0, null), n.return = a, a.child = n;
  }
  function br(a, n, d, w) {
    return w !== null && O3(w), sa(n, a.child, null, d), a = Fc(n, n.pendingProps.children), a.flags |= 2, n.memoizedState = null, a;
  }
  function kCA(a, n, d, w, y, G, H) {
    if (d)
      return n.flags & 256 ? (n.flags &= -257, w = lc(Error(e(422))), br(a, n, H, w)) : n.memoizedState !== null ? (n.child = a.child, n.flags |= 128, null) : (G = w.fallback, y = n.mode, w = Kr({ mode: "visible", children: w.children }, y, 0, null), G = Xi(G, y, H, null), G.flags |= 2, w.return = n, G.return = n, w.sibling = G, n.child = w, (n.mode & 1) !== 0 && sa(n, a.child, null, H), n.child.memoizedState = wc(H), n.memoizedState = hc, G);
    if ((n.mode & 1) === 0) return br(a, n, H, null);
    if (y.data === "$!") {
      if (w = y.nextSibling && y.nextSibling.dataset, w) var W = w.dgst;
      return w = W, G = Error(e(419)), w = lc(G, w, void 0), br(a, n, H, w);
    }
    if (W = (H & a.childLanes) !== 0, Ye || W) {
      if (w = W0, w !== null) {
        switch (H & -H) {
          case 4:
            y = 2;
            break;
          case 16:
            y = 8;
            break;
          case 64:
          case 128:
          case 256:
          case 512:
          case 1024:
          case 2048:
          case 4096:
          case 8192:
          case 16384:
          case 32768:
          case 65536:
          case 131072:
          case 262144:
          case 524288:
          case 1048576:
          case 2097152:
          case 4194304:
          case 8388608:
          case 16777216:
          case 33554432:
          case 67108864:
            y = 32;
            break;
          case 536870912:
            y = 268435456;
            break;
          default:
            y = 0;
        }
        y = (y & (w.suspendedLanes | H)) !== 0 ? 0 : y, y !== 0 && y !== G.retryLane && (G.retryLane = y, Fg(a, y), $C(w, a, y, -1));
      }
      return vc(), w = lc(Error(e(421))), br(a, n, H, w);
    }
    return y.data === "$?" ? (n.flags |= 128, n.child = a.child, n = vCA.bind(null, a), y._reactRetry = n, null) : (a = G.treeContext, gC = pt(y.nextSibling), BC = n, e0 = !0, OC = null, a !== null && (cC[dC++] = hg, cC[dC++] = wg, cC[dC++] = Zi, hg = a.id, wg = a.overflow, Zi = n), n = Fc(n, w.children), n.flags |= 4096, n);
  }
  function dh(a, n, d) {
    a.lanes |= n;
    var w = a.alternate;
    w !== null && (w.lanes |= n), $3(a.return, n, d);
  }
  function pc(a, n, d, w, y) {
    var G = a.memoizedState;
    G === null ? a.memoizedState = { isBackwards: n, rendering: null, renderingStartTime: 0, last: w, tail: d, tailMode: y } : (G.isBackwards = n, G.rendering = null, G.renderingStartTime = 0, G.last = w, G.tail = d, G.tailMode = y);
  }
  function Dh(a, n, d) {
    var w = n.pendingProps, y = w.revealOrder, G = w.tail;
    if (ke(a, n, w.children, d), w = I0.current, (w & 2) !== 0) w = w & 1 | 2, n.flags |= 128;
    else {
      if (a !== null && (a.flags & 128) !== 0) A: for (a = n.child; a !== null; ) {
        if (a.tag === 13) a.memoizedState !== null && dh(a, d, n);
        else if (a.tag === 19) dh(a, d, n);
        else if (a.child !== null) {
          a.child.return = a, a = a.child;
          continue;
        }
        if (a === n) break A;
        for (; a.sibling === null; ) {
          if (a.return === null || a.return === n) break A;
          a = a.return;
        }
        a.sibling.return = a.return, a = a.sibling;
      }
      w &= 1;
    }
    if (Pu(I0, w), (n.mode & 1) === 0) n.memoizedState = null;
    else switch (y) {
      case "forwards":
        for (d = n.child, y = null; d !== null; ) a = d.alternate, a !== null && hr(a) === null && (y = d), d = d.sibling;
        d = y, d === null ? (y = n.child, n.child = null) : (y = d.sibling, d.sibling = null), pc(n, !1, y, d, G);
        break;
      case "backwards":
        for (d = null, y = n.child, n.child = null; y !== null; ) {
          if (a = y.alternate, a !== null && hr(a) === null) {
            n.child = y;
            break;
          }
          a = y.sibling, y.sibling = d, d = y, y = a;
        }
        pc(n, !0, d, null, G);
        break;
      case "together":
        pc(n, !1, null, null, void 0);
        break;
      default:
        n.memoizedState = null;
    }
    return n.child;
  }
  function Ur(a, n) {
    (n.mode & 1) === 0 && a !== null && (a.alternate = null, n.alternate = null, n.flags |= 2);
  }
  function mg(a, n, d) {
    if (a !== null && (n.dependencies = a.dependencies), zi |= n.lanes, (d & n.childLanes) === 0) return null;
    if (a !== null && n.child !== a.child) throw Error(e(153));
    if (n.child !== null) {
      for (a = n.child, d = Nt(a, a.pendingProps), n.child = d, d.return = n; a.sibling !== null; ) a = a.sibling, d = d.sibling = Nt(a, a.pendingProps), d.return = n;
      d.sibling = null;
    }
    return n.child;
  }
  function yCA(a, n, d) {
    switch (n.tag) {
      case 3:
        sh(n), ra();
        break;
      case 5:
        S6(n);
        break;
      case 1:
        Me(n.type) && Ir(n);
        break;
      case 4:
        ec(n, n.stateNode.containerInfo);
        break;
      case 10:
        var w = n.type._context, y = n.memoizedProps.value;
        Pu(lr, w._currentValue), w._currentValue = y;
        break;
      case 13:
        if (w = n.memoizedState, w !== null)
          return w.dehydrated !== null ? (Pu(I0, I0.current & 1), n.flags |= 128, null) : (d & n.child.childLanes) !== 0 ? ch(a, n, d) : (Pu(I0, I0.current & 1), a = mg(a, n, d), a !== null ? a.sibling : null);
        Pu(I0, I0.current & 1);
        break;
      case 19:
        if (w = (d & n.childLanes) !== 0, (a.flags & 128) !== 0) {
          if (w) return Dh(a, n, d);
          n.flags |= 128;
        }
        if (y = n.memoizedState, y !== null && (y.rendering = null, y.tail = null, y.lastEffect = null), Pu(I0, I0.current), w) break;
        return null;
      case 22:
      case 23:
        return n.lanes = 0, Qh(a, n, d);
    }
    return mg(a, n, d);
  }
  var hh, mc, wh, Fh;
  hh = function(a, n) {
    for (var d = n.child; d !== null; ) {
      if (d.tag === 5 || d.tag === 6) a.appendChild(d.stateNode);
      else if (d.tag !== 4 && d.child !== null) {
        d.child.return = d, d = d.child;
        continue;
      }
      if (d === n) break;
      for (; d.sibling === null; ) {
        if (d.return === null || d.return === n) return;
        d = d.return;
      }
      d.sibling.return = d.return, d = d.sibling;
    }
  }, mc = function() {
  }, wh = function(a, n, d, w) {
    var y = a.memoizedProps;
    if (y !== w) {
      a = n.stateNode, ji(fB.current);
      var G = null;
      switch (d) {
        case "input":
          y = HC(a, y), w = HC(a, w), G = [];
          break;
        case "select":
          y = CA({}, y, { value: void 0 }), w = CA({}, w, { value: void 0 }), G = [];
          break;
        case "textarea":
          y = Et(a, y), w = Et(a, w), G = [];
          break;
        default:
          typeof y.onClick != "function" && typeof w.onClick == "function" && (a.onclick = ir);
      }
      KC(d, w);
      var H;
      d = null;
      for (IA in y) if (!w.hasOwnProperty(IA) && y.hasOwnProperty(IA) && y[IA] != null) if (IA === "style") {
        var W = y[IA];
        for (H in W) W.hasOwnProperty(H) && (d || (d = {}), d[H] = "");
      } else IA !== "dangerouslySetInnerHTML" && IA !== "children" && IA !== "suppressContentEditableWarning" && IA !== "suppressHydrationWarning" && IA !== "autoFocus" && (B.hasOwnProperty(IA) ? G || (G = []) : (G = G || []).push(IA, null));
      for (IA in w) {
        var V = w[IA];
        if (W = y?.[IA], w.hasOwnProperty(IA) && V !== W && (V != null || W != null)) if (IA === "style") if (W) {
          for (H in W) !W.hasOwnProperty(H) || V && V.hasOwnProperty(H) || (d || (d = {}), d[H] = "");
          for (H in V) V.hasOwnProperty(H) && W[H] !== V[H] && (d || (d = {}), d[H] = V[H]);
        } else d || (G || (G = []), G.push(
          IA,
          d
        )), d = V;
        else IA === "dangerouslySetInnerHTML" ? (V = V ? V.__html : void 0, W = W ? W.__html : void 0, V != null && W !== V && (G = G || []).push(IA, V)) : IA === "children" ? typeof V != "string" && typeof V != "number" || (G = G || []).push(IA, "" + V) : IA !== "suppressContentEditableWarning" && IA !== "suppressHydrationWarning" && (B.hasOwnProperty(IA) ? (V != null && IA === "onScroll" && $u("scroll", a), G || W === V || (G = [])) : (G = G || []).push(IA, V));
      }
      d && (G = G || []).push("style", d);
      var IA = G;
      (n.updateQueue = IA) && (n.flags |= 4);
    }
  }, Fh = function(a, n, d, w) {
    d !== w && (n.flags |= 4);
  };
  function mo(a, n) {
    if (!e0) switch (a.tailMode) {
      case "hidden":
        n = a.tail;
        for (var d = null; n !== null; ) n.alternate !== null && (d = n), n = n.sibling;
        d === null ? a.tail = null : d.sibling = null;
        break;
      case "collapsed":
        d = a.tail;
        for (var w = null; d !== null; ) d.alternate !== null && (w = d), d = d.sibling;
        w === null ? n || a.tail === null ? a.tail = null : a.tail.sibling = null : w.sibling = null;
    }
  }
  function Qe(a) {
    var n = a.alternate !== null && a.alternate.child === a.child, d = 0, w = 0;
    if (n) for (var y = a.child; y !== null; ) d |= y.lanes | y.childLanes, w |= y.subtreeFlags & 14680064, w |= y.flags & 14680064, y.return = a, y = y.sibling;
    else for (y = a.child; y !== null; ) d |= y.lanes | y.childLanes, w |= y.subtreeFlags, w |= y.flags, y.return = a, y = y.sibling;
    return a.subtreeFlags |= w, a.childLanes = d, n;
  }
  function bCA(a, n, d) {
    var w = n.pendingProps;
    switch (T3(n), n.tag) {
      case 2:
      case 16:
      case 15:
      case 0:
      case 11:
      case 7:
      case 8:
      case 12:
      case 9:
      case 14:
        return Qe(n), null;
      case 1:
        return Me(n.type) && ar(), Qe(n), null;
      case 3:
        return w = n.stateNode, da(), A0(Re), A0(Ie), gc(), w.pendingContext && (w.context = w.pendingContext, w.pendingContext = null), (a === null || a.child === null) && (rr(n) ? n.flags |= 4 : a === null || a.memoizedState.isDehydrated && (n.flags & 256) === 0 || (n.flags |= 1024, OC !== null && (Rc(OC), OC = null))), mc(a, n), Qe(n), null;
      case 5:
        Cc(n);
        var y = ji(Do.current);
        if (d = n.type, a !== null && n.stateNode != null) wh(a, n, d, w, y), a.ref !== n.ref && (n.flags |= 512, n.flags |= 2097152);
        else {
          if (!w) {
            if (n.stateNode === null) throw Error(e(166));
            return Qe(n), null;
          }
          if (a = ji(fB.current), rr(n)) {
            w = n.stateNode, d = n.type;
            var G = n.memoizedProps;
            switch (w[GB] = n, w[no] = G, a = (n.mode & 1) !== 0, d) {
              case "dialog":
                $u("cancel", w), $u("close", w);
                break;
              case "iframe":
              case "object":
              case "embed":
                $u("load", w);
                break;
              case "video":
              case "audio":
                for (y = 0; y < Io.length; y++) $u(Io[y], w);
                break;
              case "source":
                $u("error", w);
                break;
              case "img":
              case "image":
              case "link":
                $u(
                  "error",
                  w
                ), $u("load", w);
                break;
              case "details":
                $u("toggle", w);
                break;
              case "input":
                kB(w, G), $u("invalid", w);
                break;
              case "select":
                w._wrapperState = { wasMultiple: !!G.multiple }, $u("invalid", w);
                break;
              case "textarea":
                NI(w, G), $u("invalid", w);
            }
            KC(d, G), y = null;
            for (var H in G) if (G.hasOwnProperty(H)) {
              var W = G[H];
              H === "children" ? typeof W == "string" ? w.textContent !== W && (G.suppressHydrationWarning !== !0 && tr(w.textContent, W, a), y = ["children", W]) : typeof W == "number" && w.textContent !== "" + W && (G.suppressHydrationWarning !== !0 && tr(
                w.textContent,
                W,
                a
              ), y = ["children", "" + W]) : B.hasOwnProperty(H) && W != null && H === "onScroll" && $u("scroll", w);
            }
            switch (d) {
              case "input":
                ru(w), SI(w, G, !0);
                break;
              case "textarea":
                ru(w), Gn(w);
                break;
              case "select":
              case "option":
                break;
              default:
                typeof G.onClick == "function" && (w.onclick = ir);
            }
            w = y, n.updateQueue = w, w !== null && (n.flags |= 4);
          } else {
            H = y.nodeType === 9 ? y : y.ownerDocument, a === "http://www.w3.org/1999/xhtml" && (a = MI(d)), a === "http://www.w3.org/1999/xhtml" ? d === "script" ? (a = H.createElement("div"), a.innerHTML = "<script><\/script>", a = a.removeChild(a.firstChild)) : typeof w.is == "string" ? a = H.createElement(d, { is: w.is }) : (a = H.createElement(d), d === "select" && (H = a, w.multiple ? H.multiple = !0 : w.size && (H.size = w.size))) : a = H.createElementNS(a, d), a[GB] = n, a[no] = w, hh(a, n, !1, !1), n.stateNode = a;
            A: {
              switch (H = JC(d, w), d) {
                case "dialog":
                  $u("cancel", a), $u("close", a), y = w;
                  break;
                case "iframe":
                case "object":
                case "embed":
                  $u("load", a), y = w;
                  break;
                case "video":
                case "audio":
                  for (y = 0; y < Io.length; y++) $u(Io[y], a);
                  y = w;
                  break;
                case "source":
                  $u("error", a), y = w;
                  break;
                case "img":
                case "image":
                case "link":
                  $u(
                    "error",
                    a
                  ), $u("load", a), y = w;
                  break;
                case "details":
                  $u("toggle", a), y = w;
                  break;
                case "input":
                  kB(a, w), y = HC(a, w), $u("invalid", a);
                  break;
                case "option":
                  y = w;
                  break;
                case "select":
                  a._wrapperState = { wasMultiple: !!w.multiple }, y = CA({}, w, { value: void 0 }), $u("invalid", a);
                  break;
                case "textarea":
                  NI(a, w), y = Et(a, w), $u("invalid", a);
                  break;
                default:
                  y = w;
              }
              KC(d, y), W = y;
              for (G in W) if (W.hasOwnProperty(G)) {
                var V = W[G];
                G === "style" ? xn(a, V) : G === "dangerouslySetInnerHTML" ? (V = V ? V.__html : void 0, V != null && fn(a, V)) : G === "children" ? typeof V == "string" ? (d !== "textarea" || V !== "") && di(a, V) : typeof V == "number" && di(a, "" + V) : G !== "suppressContentEditableWarning" && G !== "suppressHydrationWarning" && G !== "autoFocus" && (B.hasOwnProperty(G) ? V != null && G === "onScroll" && $u("scroll", a) : V != null && p(a, G, V, H));
              }
              switch (d) {
                case "input":
                  ru(a), SI(a, w, !1);
                  break;
                case "textarea":
                  ru(a), Gn(a);
                  break;
                case "option":
                  w.value != null && a.setAttribute("value", "" + FA(w.value));
                  break;
                case "select":
                  a.multiple = !!w.multiple, G = w.value, G != null ? p0(a, !!w.multiple, G, !1) : w.defaultValue != null && p0(
                    a,
                    !!w.multiple,
                    w.defaultValue,
                    !0
                  );
                  break;
                default:
                  typeof y.onClick == "function" && (a.onclick = ir);
              }
              switch (d) {
                case "button":
                case "input":
                case "select":
                case "textarea":
                  w = !!w.autoFocus;
                  break A;
                case "img":
                  w = !0;
                  break A;
                default:
                  w = !1;
              }
            }
            w && (n.flags |= 4);
          }
          n.ref !== null && (n.flags |= 512, n.flags |= 2097152);
        }
        return Qe(n), null;
      case 6:
        if (a && n.stateNode != null) Fh(a, n, a.memoizedProps, w);
        else {
          if (typeof w != "string" && n.stateNode === null) throw Error(e(166));
          if (d = ji(Do.current), ji(fB.current), rr(n)) {
            if (w = n.stateNode, d = n.memoizedProps, w[GB] = n, (G = w.nodeValue !== d) && (a = BC, a !== null)) switch (a.tag) {
              case 3:
                tr(w.nodeValue, d, (a.mode & 1) !== 0);
                break;
              case 5:
                a.memoizedProps.suppressHydrationWarning !== !0 && tr(w.nodeValue, d, (a.mode & 1) !== 0);
            }
            G && (n.flags |= 4);
          } else w = (d.nodeType === 9 ? d : d.ownerDocument).createTextNode(w), w[GB] = n, n.stateNode = w;
        }
        return Qe(n), null;
      case 13:
        if (A0(I0), w = n.memoizedState, a === null || a.memoizedState !== null && a.memoizedState.dehydrated !== null) {
          if (e0 && gC !== null && (n.mode & 1) !== 0 && (n.flags & 128) === 0) k6(), ra(), n.flags |= 98560, G = !1;
          else if (G = rr(n), w !== null && w.dehydrated !== null) {
            if (a === null) {
              if (!G) throw Error(e(318));
              if (G = n.memoizedState, G = G !== null ? G.dehydrated : null, !G) throw Error(e(317));
              G[GB] = n;
            } else ra(), (n.flags & 128) === 0 && (n.memoizedState = null), n.flags |= 4;
            Qe(n), G = !1;
          } else OC !== null && (Rc(OC), OC = null), G = !0;
          if (!G) return n.flags & 65536 ? n : null;
        }
        return (n.flags & 128) !== 0 ? (n.lanes = d, n) : (w = w !== null, w !== (a !== null && a.memoizedState !== null) && w && (n.child.flags |= 8192, (n.mode & 1) !== 0 && (a === null || (I0.current & 1) !== 0 ? M0 === 0 && (M0 = 3) : vc())), n.updateQueue !== null && (n.flags |= 4), Qe(n), null);
      case 4:
        return da(), mc(a, n), a === null && oo(n.stateNode.containerInfo), Qe(n), null;
      case 10:
        return _3(n.type._context), Qe(n), null;
      case 17:
        return Me(n.type) && ar(), Qe(n), null;
      case 19:
        if (A0(I0), G = n.memoizedState, G === null) return Qe(n), null;
        if (w = (n.flags & 128) !== 0, H = G.rendering, H === null) if (w) mo(G, !1);
        else {
          if (M0 !== 0 || a !== null && (a.flags & 128) !== 0) for (a = n.child; a !== null; ) {
            if (H = hr(a), H !== null) {
              for (n.flags |= 128, mo(G, !1), w = H.updateQueue, w !== null && (n.updateQueue = w, n.flags |= 4), n.subtreeFlags = 0, w = d, d = n.child; d !== null; ) G = d, a = w, G.flags &= 14680066, H = G.alternate, H === null ? (G.childLanes = 0, G.lanes = a, G.child = null, G.subtreeFlags = 0, G.memoizedProps = null, G.memoizedState = null, G.updateQueue = null, G.dependencies = null, G.stateNode = null) : (G.childLanes = H.childLanes, G.lanes = H.lanes, G.child = H.child, G.subtreeFlags = 0, G.deletions = null, G.memoizedProps = H.memoizedProps, G.memoizedState = H.memoizedState, G.updateQueue = H.updateQueue, G.type = H.type, a = H.dependencies, G.dependencies = a === null ? null : { lanes: a.lanes, firstContext: a.firstContext }), d = d.sibling;
              return Pu(I0, I0.current & 1 | 2), n.child;
            }
            a = a.sibling;
          }
          G.tail !== null && Ku() > Fa && (n.flags |= 128, w = !0, mo(G, !1), n.lanes = 4194304);
        }
        else {
          if (!w) if (a = hr(H), a !== null) {
            if (n.flags |= 128, w = !0, d = a.updateQueue, d !== null && (n.updateQueue = d, n.flags |= 4), mo(G, !0), G.tail === null && G.tailMode === "hidden" && !H.alternate && !e0) return Qe(n), null;
          } else 2 * Ku() - G.renderingStartTime > Fa && d !== 1073741824 && (n.flags |= 128, w = !0, mo(G, !1), n.lanes = 4194304);
          G.isBackwards ? (H.sibling = n.child, n.child = H) : (d = G.last, d !== null ? d.sibling = H : n.child = H, G.last = H);
        }
        return G.tail !== null ? (n = G.tail, G.rendering = n, G.tail = n.sibling, G.renderingStartTime = Ku(), n.sibling = null, d = I0.current, Pu(I0, w ? d & 1 | 2 : d & 1), n) : (Qe(n), null);
      case 22:
      case 23:
        return Yc(), w = n.memoizedState !== null, a !== null && a.memoizedState !== null !== w && (n.flags |= 8192), w && (n.mode & 1) !== 0 ? (tC & 1073741824) !== 0 && (Qe(n), n.subtreeFlags & 6 && (n.flags |= 8192)) : Qe(n), null;
      case 24:
        return null;
      case 25:
        return null;
    }
    throw Error(e(156, n.tag));
  }
  function UCA(a, n) {
    switch (T3(n), n.tag) {
      case 1:
        return Me(n.type) && ar(), a = n.flags, a & 65536 ? (n.flags = a & -65537 | 128, n) : null;
      case 3:
        return da(), A0(Re), A0(Ie), gc(), a = n.flags, (a & 65536) !== 0 && (a & 128) === 0 ? (n.flags = a & -65537 | 128, n) : null;
      case 5:
        return Cc(n), null;
      case 13:
        if (A0(I0), a = n.memoizedState, a !== null && a.dehydrated !== null) {
          if (n.alternate === null) throw Error(e(340));
          ra();
        }
        return a = n.flags, a & 65536 ? (n.flags = a & -65537 | 128, n) : null;
      case 19:
        return A0(I0), null;
      case 4:
        return da(), null;
      case 10:
        return _3(n.type._context), null;
      case 22:
      case 23:
        return Yc(), null;
      case 24:
        return null;
      default:
        return null;
    }
  }
  var Gr = !1, ne = !1, GCA = typeof WeakSet == "function" ? WeakSet : Set, MA = null;
  function ha(a, n) {
    var d = a.ref;
    if (d !== null) if (typeof d == "function") try {
      d(null);
    } catch (w) {
      d0(a, n, w);
    }
    else d.current = null;
  }
  function kc(a, n, d) {
    try {
      d();
    } catch (w) {
      d0(a, n, w);
    }
  }
  var ph = !1;
  function fCA(a, n) {
    if (Y3 = lg, a = YA(), au(a)) {
      if ("selectionStart" in a) var d = { start: a.selectionStart, end: a.selectionEnd };
      else A: {
        d = (d = a.ownerDocument) && d.defaultView || window;
        var w = d.getSelection && d.getSelection();
        if (w && w.rangeCount !== 0) {
          d = w.anchorNode;
          var y = w.anchorOffset, G = w.focusNode;
          w = w.focusOffset;
          try {
            d.nodeType, G.nodeType;
          } catch {
            d = null;
            break A;
          }
          var H = 0, W = -1, V = -1, IA = 0, DA = 0, hA = a, dA = null;
          u: for (; ; ) {
            for (var RA; hA !== d || y !== 0 && hA.nodeType !== 3 || (W = H + y), hA !== G || w !== 0 && hA.nodeType !== 3 || (V = H + w), hA.nodeType === 3 && (H += hA.nodeValue.length), (RA = hA.firstChild) !== null; )
              dA = hA, hA = RA;
            for (; ; ) {
              if (hA === a) break u;
              if (dA === d && ++IA === y && (W = H), dA === G && ++DA === w && (V = H), (RA = hA.nextSibling) !== null) break;
              hA = dA, dA = hA.parentNode;
            }
            hA = RA;
          }
          d = W === -1 || V === -1 ? null : { start: W, end: V };
        } else d = null;
      }
      d = d || { start: 0, end: 0 };
    } else d = null;
    for (v3 = { focusedElem: a, selectionRange: d }, lg = !1, MA = n; MA !== null; ) if (n = MA, a = n.child, (n.subtreeFlags & 1028) !== 0 && a !== null) a.return = n, MA = a;
    else for (; MA !== null; ) {
      n = MA;
      try {
        var HA = n.alternate;
        if ((n.flags & 1024) !== 0) switch (n.tag) {
          case 0:
          case 11:
          case 15:
            break;
          case 1:
            if (HA !== null) {
              var ZA = HA.memoizedProps, k0 = HA.memoizedState, tA = n.stateNode, AA = tA.getSnapshotBeforeUpdate(n.elementType === n.type ? ZA : VC(n.type, ZA), k0);
              tA.__reactInternalSnapshotBeforeUpdate = AA;
            }
            break;
          case 3:
            var iA = n.stateNode.containerInfo;
            iA.nodeType === 1 ? iA.textContent = "" : iA.nodeType === 9 && iA.documentElement && iA.removeChild(iA.documentElement);
            break;
          case 5:
          case 6:
          case 4:
          case 17:
            break;
          default:
            throw Error(e(163));
        }
      } catch (yA) {
        d0(n, n.return, yA);
      }
      if (a = n.sibling, a !== null) {
        a.return = n.return, MA = a;
        break;
      }
      MA = n.return;
    }
    return HA = ph, ph = !1, HA;
  }
  function ko(a, n, d) {
    var w = n.updateQueue;
    if (w = w !== null ? w.lastEffect : null, w !== null) {
      var y = w = w.next;
      do {
        if ((y.tag & a) === a) {
          var G = y.destroy;
          y.destroy = void 0, G !== void 0 && kc(n, d, G);
        }
        y = y.next;
      } while (y !== w);
    }
  }
  function fr(a, n) {
    if (n = n.updateQueue, n = n !== null ? n.lastEffect : null, n !== null) {
      var d = n = n.next;
      do {
        if ((d.tag & a) === a) {
          var w = d.create;
          d.destroy = w();
        }
        d = d.next;
      } while (d !== n);
    }
  }
  function yc(a) {
    var n = a.ref;
    if (n !== null) {
      var d = a.stateNode;
      switch (a.tag) {
        case 5:
          a = d;
          break;
        default:
          a = d;
      }
      typeof n == "function" ? n(a) : n.current = a;
    }
  }
  function mh(a) {
    var n = a.alternate;
    n !== null && (a.alternate = null, mh(n)), a.child = null, a.deletions = null, a.sibling = null, a.tag === 5 && (n = a.stateNode, n !== null && (delete n[GB], delete n[no], delete n[Z3], delete n[QCA], delete n[nCA])), a.stateNode = null, a.return = null, a.dependencies = null, a.memoizedProps = null, a.memoizedState = null, a.pendingProps = null, a.stateNode = null, a.updateQueue = null;
  }
  function kh(a) {
    return a.tag === 5 || a.tag === 3 || a.tag === 4;
  }
  function yh(a) {
    A: for (; ; ) {
      for (; a.sibling === null; ) {
        if (a.return === null || kh(a.return)) return null;
        a = a.return;
      }
      for (a.sibling.return = a.return, a = a.sibling; a.tag !== 5 && a.tag !== 6 && a.tag !== 18; ) {
        if (a.flags & 2 || a.child === null || a.tag === 4) continue A;
        a.child.return = a, a = a.child;
      }
      if (!(a.flags & 2)) return a.stateNode;
    }
  }
  function bc(a, n, d) {
    var w = a.tag;
    if (w === 5 || w === 6) a = a.stateNode, n ? d.nodeType === 8 ? d.parentNode.insertBefore(a, n) : d.insertBefore(a, n) : (d.nodeType === 8 ? (n = d.parentNode, n.insertBefore(a, d)) : (n = d, n.appendChild(a)), d = d._reactRootContainer, d != null || n.onclick !== null || (n.onclick = ir));
    else if (w !== 4 && (a = a.child, a !== null)) for (bc(a, n, d), a = a.sibling; a !== null; ) bc(a, n, d), a = a.sibling;
  }
  function Uc(a, n, d) {
    var w = a.tag;
    if (w === 5 || w === 6) a = a.stateNode, n ? d.insertBefore(a, n) : d.appendChild(a);
    else if (w !== 4 && (a = a.child, a !== null)) for (Uc(a, n, d), a = a.sibling; a !== null; ) Uc(a, n, d), a = a.sibling;
  }
  var Be = null, XC = !1;
  function Gt(a, n, d) {
    for (d = d.child; d !== null; ) bh(a, n, d), d = d.sibling;
  }
  function bh(a, n, d) {
    if (Ae && typeof Ae.onCommitFiberUnmount == "function") try {
      Ae.onCommitFiberUnmount(ot, d);
    } catch {
    }
    switch (d.tag) {
      case 5:
        ne || ha(d, n);
      case 6:
        var w = Be, y = XC;
        Be = null, Gt(a, n, d), Be = w, XC = y, Be !== null && (XC ? (a = Be, d = d.stateNode, a.nodeType === 8 ? a.parentNode.removeChild(d) : a.removeChild(d)) : Be.removeChild(d.stateNode));
        break;
      case 18:
        Be !== null && (XC ? (a = Be, d = d.stateNode, a.nodeType === 8 ? J3(a.parentNode, d) : a.nodeType === 1 && J3(a, d), Gi(a)) : J3(Be, d.stateNode));
        break;
      case 4:
        w = Be, y = XC, Be = d.stateNode.containerInfo, XC = !0, Gt(a, n, d), Be = w, XC = y;
        break;
      case 0:
      case 11:
      case 14:
      case 15:
        if (!ne && (w = d.updateQueue, w !== null && (w = w.lastEffect, w !== null))) {
          y = w = w.next;
          do {
            var G = y, H = G.destroy;
            G = G.tag, H !== void 0 && ((G & 2) !== 0 || (G & 4) !== 0) && kc(d, n, H), y = y.next;
          } while (y !== w);
        }
        Gt(a, n, d);
        break;
      case 1:
        if (!ne && (ha(d, n), w = d.stateNode, typeof w.componentWillUnmount == "function")) try {
          w.props = d.memoizedProps, w.state = d.memoizedState, w.componentWillUnmount();
        } catch (W) {
          d0(d, n, W);
        }
        Gt(a, n, d);
        break;
      case 21:
        Gt(a, n, d);
        break;
      case 22:
        d.mode & 1 ? (ne = (w = ne) || d.memoizedState !== null, Gt(a, n, d), ne = w) : Gt(a, n, d);
        break;
      default:
        Gt(a, n, d);
    }
  }
  function Uh(a) {
    var n = a.updateQueue;
    if (n !== null) {
      a.updateQueue = null;
      var d = a.stateNode;
      d === null && (d = a.stateNode = new GCA()), n.forEach(function(w) {
        var y = HCA.bind(null, a, w);
        d.has(w) || (d.add(w), w.then(y, y));
      });
    }
  }
  function _C(a, n) {
    var d = n.deletions;
    if (d !== null) for (var w = 0; w < d.length; w++) {
      var y = d[w];
      try {
        var G = a, H = n, W = H;
        A: for (; W !== null; ) {
          switch (W.tag) {
            case 5:
              Be = W.stateNode, XC = !1;
              break A;
            case 3:
              Be = W.stateNode.containerInfo, XC = !0;
              break A;
            case 4:
              Be = W.stateNode.containerInfo, XC = !0;
              break A;
          }
          W = W.return;
        }
        if (Be === null) throw Error(e(160));
        bh(G, H, y), Be = null, XC = !1;
        var V = y.alternate;
        V !== null && (V.return = null), y.return = null;
      } catch (IA) {
        d0(y, n, IA);
      }
    }
    if (n.subtreeFlags & 12854) for (n = n.child; n !== null; ) Gh(n, a), n = n.sibling;
  }
  function Gh(a, n) {
    var d = a.alternate, w = a.flags;
    switch (a.tag) {
      case 0:
      case 11:
      case 14:
      case 15:
        if (_C(n, a), xB(a), w & 4) {
          try {
            ko(3, a, a.return), fr(3, a);
          } catch (ZA) {
            d0(a, a.return, ZA);
          }
          try {
            ko(5, a, a.return);
          } catch (ZA) {
            d0(a, a.return, ZA);
          }
        }
        break;
      case 1:
        _C(n, a), xB(a), w & 512 && d !== null && ha(d, d.return);
        break;
      case 5:
        if (_C(n, a), xB(a), w & 512 && d !== null && ha(d, d.return), a.flags & 32) {
          var y = a.stateNode;
          try {
            di(y, "");
          } catch (ZA) {
            d0(a, a.return, ZA);
          }
        }
        if (w & 4 && (y = a.stateNode, y != null)) {
          var G = a.memoizedProps, H = d !== null ? d.memoizedProps : G, W = a.type, V = a.updateQueue;
          if (a.updateQueue = null, V !== null) try {
            W === "input" && G.type === "radio" && G.name != null && pe(y, G), JC(W, H);
            var IA = JC(W, G);
            for (H = 0; H < V.length; H += 2) {
              var DA = V[H], hA = V[H + 1];
              DA === "style" ? xn(y, hA) : DA === "dangerouslySetInnerHTML" ? fn(y, hA) : DA === "children" ? di(y, hA) : p(y, DA, hA, IA);
            }
            switch (W) {
              case "input":
                Ig(y, G);
                break;
              case "textarea":
                RI(y, G);
                break;
              case "select":
                var dA = y._wrapperState.wasMultiple;
                y._wrapperState.wasMultiple = !!G.multiple;
                var RA = G.value;
                RA != null ? p0(y, !!G.multiple, RA, !1) : dA !== !!G.multiple && (G.defaultValue != null ? p0(
                  y,
                  !!G.multiple,
                  G.defaultValue,
                  !0
                ) : p0(y, !!G.multiple, G.multiple ? [] : "", !1));
            }
            y[no] = G;
          } catch (ZA) {
            d0(a, a.return, ZA);
          }
        }
        break;
      case 6:
        if (_C(n, a), xB(a), w & 4) {
          if (a.stateNode === null) throw Error(e(162));
          y = a.stateNode, G = a.memoizedProps;
          try {
            y.nodeValue = G;
          } catch (ZA) {
            d0(a, a.return, ZA);
          }
        }
        break;
      case 3:
        if (_C(n, a), xB(a), w & 4 && d !== null && d.memoizedState.isDehydrated) try {
          Gi(n.containerInfo);
        } catch (ZA) {
          d0(a, a.return, ZA);
        }
        break;
      case 4:
        _C(n, a), xB(a);
        break;
      case 13:
        _C(n, a), xB(a), y = a.child, y.flags & 8192 && (G = y.memoizedState !== null, y.stateNode.isHidden = G, !G || y.alternate !== null && y.alternate.memoizedState !== null || (Lc = Ku())), w & 4 && Uh(a);
        break;
      case 22:
        if (DA = d !== null && d.memoizedState !== null, a.mode & 1 ? (ne = (IA = ne) || DA, _C(n, a), ne = IA) : _C(n, a), xB(a), w & 8192) {
          if (IA = a.memoizedState !== null, (a.stateNode.isHidden = IA) && !DA && (a.mode & 1) !== 0) for (MA = a, DA = a.child; DA !== null; ) {
            for (hA = MA = DA; MA !== null; ) {
              switch (dA = MA, RA = dA.child, dA.tag) {
                case 0:
                case 11:
                case 14:
                case 15:
                  ko(4, dA, dA.return);
                  break;
                case 1:
                  ha(dA, dA.return);
                  var HA = dA.stateNode;
                  if (typeof HA.componentWillUnmount == "function") {
                    w = dA, d = dA.return;
                    try {
                      n = w, HA.props = n.memoizedProps, HA.state = n.memoizedState, HA.componentWillUnmount();
                    } catch (ZA) {
                      d0(w, d, ZA);
                    }
                  }
                  break;
                case 5:
                  ha(dA, dA.return);
                  break;
                case 22:
                  if (dA.memoizedState !== null) {
                    xh(hA);
                    continue;
                  }
              }
              RA !== null ? (RA.return = dA, MA = RA) : xh(hA);
            }
            DA = DA.sibling;
          }
          A: for (DA = null, hA = a; ; ) {
            if (hA.tag === 5) {
              if (DA === null) {
                DA = hA;
                try {
                  y = hA.stateNode, IA ? (G = y.style, typeof G.setProperty == "function" ? G.setProperty("display", "none", "important") : G.display = "none") : (W = hA.stateNode, V = hA.memoizedProps.style, H = V != null && V.hasOwnProperty("display") ? V.display : null, W.style.display = Ln("display", H));
                } catch (ZA) {
                  d0(a, a.return, ZA);
                }
              }
            } else if (hA.tag === 6) {
              if (DA === null) try {
                hA.stateNode.nodeValue = IA ? "" : hA.memoizedProps;
              } catch (ZA) {
                d0(a, a.return, ZA);
              }
            } else if ((hA.tag !== 22 && hA.tag !== 23 || hA.memoizedState === null || hA === a) && hA.child !== null) {
              hA.child.return = hA, hA = hA.child;
              continue;
            }
            if (hA === a) break A;
            for (; hA.sibling === null; ) {
              if (hA.return === null || hA.return === a) break A;
              DA === hA && (DA = null), hA = hA.return;
            }
            DA === hA && (DA = null), hA.sibling.return = hA.return, hA = hA.sibling;
          }
        }
        break;
      case 19:
        _C(n, a), xB(a), w & 4 && Uh(a);
        break;
      case 21:
        break;
      default:
        _C(
          n,
          a
        ), xB(a);
    }
  }
  function xB(a) {
    var n = a.flags;
    if (n & 2) {
      try {
        A: {
          for (var d = a.return; d !== null; ) {
            if (kh(d)) {
              var w = d;
              break A;
            }
            d = d.return;
          }
          throw Error(e(160));
        }
        switch (w.tag) {
          case 5:
            var y = w.stateNode;
            w.flags & 32 && (di(y, ""), w.flags &= -33);
            var G = yh(a);
            Uc(a, G, y);
            break;
          case 3:
          case 4:
            var H = w.stateNode.containerInfo, W = yh(a);
            bc(a, W, H);
            break;
          default:
            throw Error(e(161));
        }
      } catch (V) {
        d0(a, a.return, V);
      }
      a.flags &= -3;
    }
    n & 4096 && (a.flags &= -4097);
  }
  function LCA(a, n, d) {
    MA = a, fh(a);
  }
  function fh(a, n, d) {
    for (var w = (a.mode & 1) !== 0; MA !== null; ) {
      var y = MA, G = y.child;
      if (y.tag === 22 && w) {
        var H = y.memoizedState !== null || Gr;
        if (!H) {
          var W = y.alternate, V = W !== null && W.memoizedState !== null || ne;
          W = Gr;
          var IA = ne;
          if (Gr = H, (ne = V) && !IA) for (MA = y; MA !== null; ) H = MA, V = H.child, H.tag === 22 && H.memoizedState !== null ? Sh(y) : V !== null ? (V.return = H, MA = V) : Sh(y);
          for (; G !== null; ) MA = G, fh(G), G = G.sibling;
          MA = y, Gr = W, ne = IA;
        }
        Lh(a);
      } else (y.subtreeFlags & 8772) !== 0 && G !== null ? (G.return = y, MA = G) : Lh(a);
    }
  }
  function Lh(a) {
    for (; MA !== null; ) {
      var n = MA;
      if ((n.flags & 8772) !== 0) {
        var d = n.alternate;
        try {
          if ((n.flags & 8772) !== 0) switch (n.tag) {
            case 0:
            case 11:
            case 15:
              ne || fr(5, n);
              break;
            case 1:
              var w = n.stateNode;
              if (n.flags & 4 && !ne) if (d === null) w.componentDidMount();
              else {
                var y = n.elementType === n.type ? d.memoizedProps : VC(n.type, d.memoizedProps);
                w.componentDidUpdate(y, d.memoizedState, w.__reactInternalSnapshotBeforeUpdate);
              }
              var G = n.updateQueue;
              G !== null && x6(n, G, w);
              break;
            case 3:
              var H = n.updateQueue;
              if (H !== null) {
                if (d = null, n.child !== null) switch (n.child.tag) {
                  case 5:
                    d = n.child.stateNode;
                    break;
                  case 1:
                    d = n.child.stateNode;
                }
                x6(n, H, d);
              }
              break;
            case 5:
              var W = n.stateNode;
              if (d === null && n.flags & 4) {
                d = W;
                var V = n.memoizedProps;
                switch (n.type) {
                  case "button":
                  case "input":
                  case "select":
                  case "textarea":
                    V.autoFocus && d.focus();
                    break;
                  case "img":
                    V.src && (d.src = V.src);
                }
              }
              break;
            case 6:
              break;
            case 4:
              break;
            case 12:
              break;
            case 13:
              if (n.memoizedState === null) {
                var IA = n.alternate;
                if (IA !== null) {
                  var DA = IA.memoizedState;
                  if (DA !== null) {
                    var hA = DA.dehydrated;
                    hA !== null && Gi(hA);
                  }
                }
              }
              break;
            case 19:
            case 17:
            case 21:
            case 22:
            case 23:
            case 25:
              break;
            default:
              throw Error(e(163));
          }
          ne || n.flags & 512 && yc(n);
        } catch (dA) {
          d0(n, n.return, dA);
        }
      }
      if (n === a) {
        MA = null;
        break;
      }
      if (d = n.sibling, d !== null) {
        d.return = n.return, MA = d;
        break;
      }
      MA = n.return;
    }
  }
  function xh(a) {
    for (; MA !== null; ) {
      var n = MA;
      if (n === a) {
        MA = null;
        break;
      }
      var d = n.sibling;
      if (d !== null) {
        d.return = n.return, MA = d;
        break;
      }
      MA = n.return;
    }
  }
  function Sh(a) {
    for (; MA !== null; ) {
      var n = MA;
      try {
        switch (n.tag) {
          case 0:
          case 11:
          case 15:
            var d = n.return;
            try {
              fr(4, n);
            } catch (V) {
              d0(n, d, V);
            }
            break;
          case 1:
            var w = n.stateNode;
            if (typeof w.componentDidMount == "function") {
              var y = n.return;
              try {
                w.componentDidMount();
              } catch (V) {
                d0(n, y, V);
              }
            }
            var G = n.return;
            try {
              yc(n);
            } catch (V) {
              d0(n, G, V);
            }
            break;
          case 5:
            var H = n.return;
            try {
              yc(n);
            } catch (V) {
              d0(n, H, V);
            }
        }
      } catch (V) {
        d0(n, n.return, V);
      }
      if (n === a) {
        MA = null;
        break;
      }
      var W = n.sibling;
      if (W !== null) {
        W.return = n.return, MA = W;
        break;
      }
      MA = n.return;
    }
  }
  var xCA = Math.ceil, Lr = k.ReactCurrentDispatcher, Gc = k.ReactCurrentOwner, wC = k.ReactCurrentBatchConfig, mu = 0, W0 = null, U0 = null, ge = 0, tC = 0, wa = mt(0), M0 = 0, yo = null, zi = 0, xr = 0, fc = 0, bo = null, ve = null, Lc = 0, Fa = 1 / 0, kg = null, Sr = !1, xc = null, ft = null, Nr = !1, Lt = null, Rr = 0, Uo = 0, Sc = null, Mr = -1, Yr = 0;
  function ye() {
    return (mu & 6) !== 0 ? Ku() : Mr !== -1 ? Mr : Mr = Ku();
  }
  function xt(a) {
    return (a.mode & 1) === 0 ? 1 : (mu & 2) !== 0 && ge !== 0 ? ge & -ge : sCA.transition !== null ? (Yr === 0 && (Yr = zI()), Yr) : (a = du, a !== 0 || (a = window.event, a = a === void 0 ? 16 : XI(a.type)), a);
  }
  function $C(a, n, d, w) {
    if (50 < Uo) throw Uo = 0, Sc = null, Error(e(185));
    mi(a, d, w), ((mu & 2) === 0 || a !== W0) && (a === W0 && ((mu & 2) === 0 && (xr |= d), M0 === 4 && St(a, ge)), He(a, w), d === 1 && mu === 0 && (n.mode & 1) === 0 && (Fa = Ku() + 500, or && yt()));
  }
  function He(a, n) {
    var d = a.callbackNode;
    Jn(a, n);
    var w = nt(a, a === W0 ? ge : 0);
    if (w === 0) d !== null && vn(d), a.callbackNode = null, a.callbackPriority = 0;
    else if (n = w & -w, a.callbackPriority !== n) {
      if (d != null && vn(d), n === 1) a.tag === 0 ? rCA(Rh.bind(null, a)) : h6(Rh.bind(null, a)), ICA(function() {
        (mu & 6) === 0 && yt();
      }), d = null;
      else {
        switch (rt(w)) {
          case 1:
            d = It;
            break;
          case 4:
            d = Kn;
            break;
          case 16:
            d = TE;
            break;
          case 536870912:
            d = zE;
            break;
          default:
            d = TE;
        }
        d = qh(d, Nh.bind(null, a));
      }
      a.callbackPriority = n, a.callbackNode = d;
    }
  }
  function Nh(a, n) {
    if (Mr = -1, Yr = 0, (mu & 6) !== 0) throw Error(e(327));
    var d = a.callbackNode;
    if (pa() && a.callbackNode !== d) return null;
    var w = nt(a, a === W0 ? ge : 0);
    if (w === 0) return null;
    if ((w & 30) !== 0 || (w & a.expiredLanes) !== 0 || n) n = vr(a, w);
    else {
      n = w;
      var y = mu;
      mu |= 2;
      var G = Yh();
      (W0 !== a || ge !== n) && (kg = null, Fa = Ku() + 500, Oi(a, n));
      do
        try {
          RCA();
          break;
        } catch (W) {
          Mh(a, W);
        }
      while (!0);
      X3(), Lr.current = G, mu = y, U0 !== null ? n = 0 : (W0 = null, ge = 0, n = M0);
    }
    if (n !== 0) {
      if (n === 2 && (y = TI(a), y !== 0 && (w = y, n = Nc(a, y))), n === 1) throw d = yo, Oi(a, 0), St(a, w), He(a, Ku()), d;
      if (n === 6) St(a, w);
      else {
        if (y = a.current.alternate, (w & 30) === 0 && !SCA(y) && (n = vr(a, w), n === 2 && (G = TI(a), G !== 0 && (w = G, n = Nc(a, G))), n === 1)) throw d = yo, Oi(a, 0), St(a, w), He(a, Ku()), d;
        switch (a.finishedWork = y, a.finishedLanes = w, n) {
          case 0:
          case 1:
            throw Error(e(345));
          case 2:
            Vi(a, ve, kg);
            break;
          case 3:
            if (St(a, w), (w & 130023424) === w && (n = Lc + 500 - Ku(), 10 < n)) {
              if (nt(a, 0) !== 0) break;
              if (y = a.suspendedLanes, (y & w) !== w) {
                ye(), a.pingedLanes |= a.suspendedLanes & y;
                break;
              }
              a.timeoutHandle = K3(Vi.bind(null, a, ve, kg), n);
              break;
            }
            Vi(a, ve, kg);
            break;
          case 4:
            if (St(a, w), (w & 4194240) === w) break;
            for (n = a.eventTimes, y = -1; 0 < w; ) {
              var H = 31 - Se(w);
              G = 1 << H, H = n[H], H > y && (y = H), w &= ~G;
            }
            if (w = y, w = Ku() - w, w = (120 > w ? 120 : 480 > w ? 480 : 1080 > w ? 1080 : 1920 > w ? 1920 : 3e3 > w ? 3e3 : 4320 > w ? 4320 : 1960 * xCA(w / 1960)) - w, 10 < w) {
              a.timeoutHandle = K3(Vi.bind(null, a, ve, kg), w);
              break;
            }
            Vi(a, ve, kg);
            break;
          case 5:
            Vi(a, ve, kg);
            break;
          default:
            throw Error(e(329));
        }
      }
    }
    return He(a, Ku()), a.callbackNode === d ? Nh.bind(null, a) : null;
  }
  function Nc(a, n) {
    var d = bo;
    return a.current.memoizedState.isDehydrated && (Oi(a, n).flags |= 256), a = vr(a, n), a !== 2 && (n = ve, ve = d, n !== null && Rc(n)), a;
  }
  function Rc(a) {
    ve === null ? ve = a : ve.push.apply(ve, a);
  }
  function SCA(a) {
    for (var n = a; ; ) {
      if (n.flags & 16384) {
        var d = n.updateQueue;
        if (d !== null && (d = d.stores, d !== null)) for (var w = 0; w < d.length; w++) {
          var y = d[w], G = y.getSnapshot;
          y = y.value;
          try {
            if (!oA(G(), y)) return !1;
          } catch {
            return !1;
          }
        }
      }
      if (d = n.child, n.subtreeFlags & 16384 && d !== null) d.return = n, n = d;
      else {
        if (n === a) break;
        for (; n.sibling === null; ) {
          if (n.return === null || n.return === a) return !0;
          n = n.return;
        }
        n.sibling.return = n.return, n = n.sibling;
      }
    }
    return !0;
  }
  function St(a, n) {
    for (n &= ~fc, n &= ~xr, a.suspendedLanes |= n, a.pingedLanes &= ~n, a = a.expirationTimes; 0 < n; ) {
      var d = 31 - Se(n), w = 1 << d;
      a[d] = -1, n &= ~w;
    }
  }
  function Rh(a) {
    if ((mu & 6) !== 0) throw Error(e(327));
    pa();
    var n = nt(a, 0);
    if ((n & 1) === 0) return He(a, Ku()), null;
    var d = vr(a, n);
    if (a.tag !== 0 && d === 2) {
      var w = TI(a);
      w !== 0 && (n = w, d = Nc(a, w));
    }
    if (d === 1) throw d = yo, Oi(a, 0), St(a, n), He(a, Ku()), d;
    if (d === 6) throw Error(e(345));
    return a.finishedWork = a.current.alternate, a.finishedLanes = n, Vi(a, ve, kg), He(a, Ku()), null;
  }
  function Mc(a, n) {
    var d = mu;
    mu |= 1;
    try {
      return a(n);
    } finally {
      mu = d, mu === 0 && (Fa = Ku() + 500, or && yt());
    }
  }
  function Pi(a) {
    Lt !== null && Lt.tag === 0 && (mu & 6) === 0 && pa();
    var n = mu;
    mu |= 1;
    var d = wC.transition, w = du;
    try {
      if (wC.transition = null, du = 1, a) return a();
    } finally {
      du = w, wC.transition = d, mu = n, (mu & 6) === 0 && yt();
    }
  }
  function Yc() {
    tC = wa.current, A0(wa);
  }
  function Oi(a, n) {
    a.finishedWork = null, a.finishedLanes = 0;
    var d = a.timeoutHandle;
    if (d !== -1 && (a.timeoutHandle = -1, aCA(d)), U0 !== null) for (d = U0.return; d !== null; ) {
      var w = d;
      switch (T3(w), w.tag) {
        case 1:
          w = w.type.childContextTypes, w != null && ar();
          break;
        case 3:
          da(), A0(Re), A0(Ie), gc();
          break;
        case 5:
          Cc(w);
          break;
        case 4:
          da();
          break;
        case 13:
          A0(I0);
          break;
        case 19:
          A0(I0);
          break;
        case 10:
          _3(w.type._context);
          break;
        case 22:
        case 23:
          Yc();
      }
      d = d.return;
    }
    if (W0 = a, U0 = a = Nt(a.current, null), ge = tC = n, M0 = 0, yo = null, fc = xr = zi = 0, ve = bo = null, Wi !== null) {
      for (n = 0; n < Wi.length; n++) if (d = Wi[n], w = d.interleaved, w !== null) {
        d.interleaved = null;
        var y = w.next, G = d.pending;
        if (G !== null) {
          var H = G.next;
          G.next = y, w.next = H;
        }
        d.pending = w;
      }
      Wi = null;
    }
    return a;
  }
  function Mh(a, n) {
    do {
      var d = U0;
      try {
        if (X3(), wr.current = kr, Fr) {
          for (var w = o0.memoizedState; w !== null; ) {
            var y = w.queue;
            y !== null && (y.pending = null), w = w.next;
          }
          Fr = !1;
        }
        if (Ti = 0, q0 = R0 = o0 = null, ho = !1, wo = 0, Gc.current = null, d === null || d.return === null) {
          M0 = 1, yo = n, U0 = null;
          break;
        }
        A: {
          var G = a, H = d.return, W = d, V = n;
          if (n = ge, W.flags |= 32768, V !== null && typeof V == "object" && typeof V.then == "function") {
            var IA = V, DA = W, hA = DA.tag;
            if ((DA.mode & 1) === 0 && (hA === 0 || hA === 11 || hA === 15)) {
              var dA = DA.alternate;
              dA ? (DA.updateQueue = dA.updateQueue, DA.memoizedState = dA.memoizedState, DA.lanes = dA.lanes) : (DA.updateQueue = null, DA.memoizedState = null);
            }
            var RA = ih(H);
            if (RA !== null) {
              RA.flags &= -257, Eh(RA, H, W, G, n), RA.mode & 1 && th(G, IA, n), n = RA, V = IA;
              var HA = n.updateQueue;
              if (HA === null) {
                var ZA = /* @__PURE__ */ new Set();
                ZA.add(V), n.updateQueue = ZA;
              } else HA.add(V);
              break A;
            } else {
              if ((n & 1) === 0) {
                th(G, IA, n), vc();
                break A;
              }
              V = Error(e(426));
            }
          } else if (e0 && W.mode & 1) {
            var k0 = ih(H);
            if (k0 !== null) {
              (k0.flags & 65536) === 0 && (k0.flags |= 256), Eh(k0, H, W, G, n), O3(Da(V, W));
              break A;
            }
          }
          G = V = Da(V, W), M0 !== 4 && (M0 = 2), bo === null ? bo = [G] : bo.push(G), G = H;
          do {
            switch (G.tag) {
              case 3:
                G.flags |= 65536, n &= -n, G.lanes |= n;
                var tA = Bh(G, V, n);
                L6(G, tA);
                break A;
              case 1:
                W = V;
                var AA = G.type, iA = G.stateNode;
                if ((G.flags & 128) === 0 && (typeof AA.getDerivedStateFromError == "function" || iA !== null && typeof iA.componentDidCatch == "function" && (ft === null || !ft.has(iA)))) {
                  G.flags |= 65536, n &= -n, G.lanes |= n;
                  var yA = gh(G, W, n);
                  L6(G, yA);
                  break A;
                }
            }
            G = G.return;
          } while (G !== null);
        }
        Hh(d);
      } catch (jA) {
        n = jA, U0 === d && d !== null && (U0 = d = d.return);
        continue;
      }
      break;
    } while (!0);
  }
  function Yh() {
    var a = Lr.current;
    return Lr.current = kr, a === null ? kr : a;
  }
  function vc() {
    (M0 === 0 || M0 === 3 || M0 === 2) && (M0 = 4), W0 === null || (zi & 268435455) === 0 && (xr & 268435455) === 0 || St(W0, ge);
  }
  function vr(a, n) {
    var d = mu;
    mu |= 2;
    var w = Yh();
    (W0 !== a || ge !== n) && (kg = null, Oi(a, n));
    do
      try {
        NCA();
        break;
      } catch (y) {
        Mh(a, y);
      }
    while (!0);
    if (X3(), mu = d, Lr.current = w, U0 !== null) throw Error(e(261));
    return W0 = null, ge = 0, M0;
  }
  function NCA() {
    for (; U0 !== null; ) vh(U0);
  }
  function RCA() {
    for (; U0 !== null && !Hn(); ) vh(U0);
  }
  function vh(a) {
    var n = Zh(a.alternate, a, tC);
    a.memoizedProps = a.pendingProps, n === null ? Hh(a) : U0 = n, Gc.current = null;
  }
  function Hh(a) {
    var n = a;
    do {
      var d = n.alternate;
      if (a = n.return, (n.flags & 32768) === 0) {
        if (d = bCA(d, n, tC), d !== null) {
          U0 = d;
          return;
        }
      } else {
        if (d = UCA(d, n), d !== null) {
          d.flags &= 32767, U0 = d;
          return;
        }
        if (a !== null) a.flags |= 32768, a.subtreeFlags = 0, a.deletions = null;
        else {
          M0 = 6, U0 = null;
          return;
        }
      }
      if (n = n.sibling, n !== null) {
        U0 = n;
        return;
      }
      U0 = n = a;
    } while (n !== null);
    M0 === 0 && (M0 = 5);
  }
  function Vi(a, n, d) {
    var w = du, y = wC.transition;
    try {
      wC.transition = null, du = 1, MCA(a, n, d, w);
    } finally {
      wC.transition = y, du = w;
    }
    return null;
  }
  function MCA(a, n, d, w) {
    do
      pa();
    while (Lt !== null);
    if ((mu & 6) !== 0) throw Error(e(327));
    d = a.finishedWork;
    var y = a.finishedLanes;
    if (d === null) return null;
    if (a.finishedWork = null, a.finishedLanes = 0, d === a.current) throw Error(e(177));
    a.callbackNode = null, a.callbackPriority = 0;
    var G = d.lanes | d.childLanes;
    if (C3(a, G), a === W0 && (U0 = W0 = null, ge = 0), (d.subtreeFlags & 2064) === 0 && (d.flags & 2064) === 0 || Nr || (Nr = !0, qh(TE, function() {
      return pa(), null;
    })), G = (d.flags & 15990) !== 0, (d.subtreeFlags & 15990) !== 0 || G) {
      G = wC.transition, wC.transition = null;
      var H = du;
      du = 1;
      var W = mu;
      mu |= 4, Gc.current = null, fCA(a, d), Gh(d, a), eu(v3), lg = !!Y3, v3 = Y3 = null, a.current = d, LCA(d), me(), mu = W, du = H, wC.transition = G;
    } else a.current = d;
    if (Nr && (Nr = !1, Lt = a, Rr = y), G = a.pendingLanes, G === 0 && (ft = null), Fu(d.stateNode), He(a, Ku()), n !== null) for (w = a.onRecoverableError, d = 0; d < n.length; d++) y = n[d], w(y.value, { componentStack: y.stack, digest: y.digest });
    if (Sr) throw Sr = !1, a = xc, xc = null, a;
    return (Rr & 1) !== 0 && a.tag !== 0 && pa(), G = a.pendingLanes, (G & 1) !== 0 ? a === Sc ? Uo++ : (Uo = 0, Sc = a) : Uo = 0, yt(), null;
  }
  function pa() {
    if (Lt !== null) {
      var a = rt(Rr), n = wC.transition, d = du;
      try {
        if (wC.transition = null, du = 16 > a ? 16 : a, Lt === null) var w = !1;
        else {
          if (a = Lt, Lt = null, Rr = 0, (mu & 6) !== 0) throw Error(e(331));
          var y = mu;
          for (mu |= 4, MA = a.current; MA !== null; ) {
            var G = MA, H = G.child;
            if ((MA.flags & 16) !== 0) {
              var W = G.deletions;
              if (W !== null) {
                for (var V = 0; V < W.length; V++) {
                  var IA = W[V];
                  for (MA = IA; MA !== null; ) {
                    var DA = MA;
                    switch (DA.tag) {
                      case 0:
                      case 11:
                      case 15:
                        ko(8, DA, G);
                    }
                    var hA = DA.child;
                    if (hA !== null) hA.return = DA, MA = hA;
                    else for (; MA !== null; ) {
                      DA = MA;
                      var dA = DA.sibling, RA = DA.return;
                      if (mh(DA), DA === IA) {
                        MA = null;
                        break;
                      }
                      if (dA !== null) {
                        dA.return = RA, MA = dA;
                        break;
                      }
                      MA = RA;
                    }
                  }
                }
                var HA = G.alternate;
                if (HA !== null) {
                  var ZA = HA.child;
                  if (ZA !== null) {
                    HA.child = null;
                    do {
                      var k0 = ZA.sibling;
                      ZA.sibling = null, ZA = k0;
                    } while (ZA !== null);
                  }
                }
                MA = G;
              }
            }
            if ((G.subtreeFlags & 2064) !== 0 && H !== null) H.return = G, MA = H;
            else A: for (; MA !== null; ) {
              if (G = MA, (G.flags & 2048) !== 0) switch (G.tag) {
                case 0:
                case 11:
                case 15:
                  ko(9, G, G.return);
              }
              var tA = G.sibling;
              if (tA !== null) {
                tA.return = G.return, MA = tA;
                break A;
              }
              MA = G.return;
            }
          }
          var AA = a.current;
          for (MA = AA; MA !== null; ) {
            H = MA;
            var iA = H.child;
            if ((H.subtreeFlags & 2064) !== 0 && iA !== null) iA.return = H, MA = iA;
            else A: for (H = AA; MA !== null; ) {
              if (W = MA, (W.flags & 2048) !== 0) try {
                switch (W.tag) {
                  case 0:
                  case 11:
                  case 15:
                    fr(9, W);
                }
              } catch (jA) {
                d0(W, W.return, jA);
              }
              if (W === H) {
                MA = null;
                break A;
              }
              var yA = W.sibling;
              if (yA !== null) {
                yA.return = W.return, MA = yA;
                break A;
              }
              MA = W.return;
            }
          }
          if (mu = y, yt(), Ae && typeof Ae.onPostCommitFiberRoot == "function") try {
            Ae.onPostCommitFiberRoot(ot, a);
          } catch {
          }
          w = !0;
        }
        return w;
      } finally {
        du = d, wC.transition = n;
      }
    }
    return !1;
  }
  function Kh(a, n, d) {
    n = Da(d, n), n = Bh(a, n, 1), a = Ut(a, n, 1), n = ye(), a !== null && (mi(a, 1, n), He(a, n));
  }
  function d0(a, n, d) {
    if (a.tag === 3) Kh(a, a, d);
    else for (; n !== null; ) {
      if (n.tag === 3) {
        Kh(n, a, d);
        break;
      } else if (n.tag === 1) {
        var w = n.stateNode;
        if (typeof n.type.getDerivedStateFromError == "function" || typeof w.componentDidCatch == "function" && (ft === null || !ft.has(w))) {
          a = Da(d, a), a = gh(n, a, 1), n = Ut(n, a, 1), a = ye(), n !== null && (mi(n, 1, a), He(n, a));
          break;
        }
      }
      n = n.return;
    }
  }
  function YCA(a, n, d) {
    var w = a.pingCache;
    w !== null && w.delete(n), n = ye(), a.pingedLanes |= a.suspendedLanes & d, W0 === a && (ge & d) === d && (M0 === 4 || M0 === 3 && (ge & 130023424) === ge && 500 > Ku() - Lc ? Oi(a, 0) : fc |= d), He(a, n);
  }
  function Jh(a, n) {
    n === 0 && ((a.mode & 1) === 0 ? n = 1 : (n = VE, VE <<= 1, (VE & 130023424) === 0 && (VE = 4194304)));
    var d = ye();
    a = Fg(a, n), a !== null && (mi(a, n, d), He(a, d));
  }
  function vCA(a) {
    var n = a.memoizedState, d = 0;
    n !== null && (d = n.retryLane), Jh(a, d);
  }
  function HCA(a, n) {
    var d = 0;
    switch (a.tag) {
      case 13:
        var w = a.stateNode, y = a.memoizedState;
        y !== null && (d = y.retryLane);
        break;
      case 19:
        w = a.stateNode;
        break;
      default:
        throw Error(e(314));
    }
    w !== null && w.delete(n), Jh(a, d);
  }
  var Zh;
  Zh = function(a, n, d) {
    if (a !== null) if (a.memoizedProps !== n.pendingProps || Re.current) Ye = !0;
    else {
      if ((a.lanes & d) === 0 && (n.flags & 128) === 0) return Ye = !1, yCA(a, n, d);
      Ye = (a.flags & 131072) !== 0;
    }
    else Ye = !1, e0 && (n.flags & 1048576) !== 0 && w6(n, nr, n.index);
    switch (n.lanes = 0, n.tag) {
      case 2:
        var w = n.type;
        Ur(a, n), a = n.pendingProps;
        var y = oa(n, Ie.current);
        ca(n, d), y = Ec(null, n, w, a, y, d);
        var G = ac();
        return n.flags |= 1, typeof y == "object" && y !== null && typeof y.render == "function" && y.$$typeof === void 0 ? (n.tag = 1, n.memoizedState = null, n.updateQueue = null, Me(w) ? (G = !0, Ir(n)) : G = !1, n.memoizedState = y.state !== null && y.state !== void 0 ? y.state : null, uc(n), y.updater = yr, n.stateNode = y, y._reactInternals = n, sc(n, w, a, d), n = Dc(null, n, w, !0, G, d)) : (n.tag = 0, e0 && G && j3(n), ke(null, n, y, d), n = n.child), n;
      case 16:
        w = n.elementType;
        A: {
          switch (Ur(a, n), a = n.pendingProps, y = w._init, w = y(w._payload), n.type = w, y = n.tag = JCA(w), a = VC(w, a), y) {
            case 0:
              n = dc(null, n, w, a, d);
              break A;
            case 1:
              n = rh(null, n, w, a, d);
              break A;
            case 11:
              n = ah(null, n, w, a, d);
              break A;
            case 14:
              n = Ih(null, n, w, VC(w.type, a), d);
              break A;
          }
          throw Error(e(
            306,
            w,
            ""
          ));
        }
        return n;
      case 0:
        return w = n.type, y = n.pendingProps, y = n.elementType === w ? y : VC(w, y), dc(a, n, w, y, d);
      case 1:
        return w = n.type, y = n.pendingProps, y = n.elementType === w ? y : VC(w, y), rh(a, n, w, y, d);
      case 3:
        A: {
          if (sh(n), a === null) throw Error(e(387));
          w = n.pendingProps, G = n.memoizedState, y = G.element, f6(a, n), Dr(n, w, null, d);
          var H = n.memoizedState;
          if (w = H.element, G.isDehydrated) if (G = { element: w, isDehydrated: !1, cache: H.cache, pendingSuspenseBoundaries: H.pendingSuspenseBoundaries, transitions: H.transitions }, n.updateQueue.baseState = G, n.memoizedState = G, n.flags & 256) {
            y = Da(Error(e(423)), n), n = lh(a, n, w, d, y);
            break A;
          } else if (w !== y) {
            y = Da(Error(e(424)), n), n = lh(a, n, w, d, y);
            break A;
          } else for (gC = pt(n.stateNode.containerInfo.firstChild), BC = n, e0 = !0, OC = null, d = U6(n, null, w, d), n.child = d; d; ) d.flags = d.flags & -3 | 4096, d = d.sibling;
          else {
            if (ra(), w === y) {
              n = mg(a, n, d);
              break A;
            }
            ke(a, n, w, d);
          }
          n = n.child;
        }
        return n;
      case 5:
        return S6(n), a === null && P3(n), w = n.type, y = n.pendingProps, G = a !== null ? a.memoizedProps : null, H = y.children, H3(w, y) ? H = null : G !== null && H3(w, G) && (n.flags |= 32), nh(a, n), ke(a, n, H, d), n.child;
      case 6:
        return a === null && P3(n), null;
      case 13:
        return ch(a, n, d);
      case 4:
        return ec(n, n.stateNode.containerInfo), w = n.pendingProps, a === null ? n.child = sa(n, null, w, d) : ke(a, n, w, d), n.child;
      case 11:
        return w = n.type, y = n.pendingProps, y = n.elementType === w ? y : VC(w, y), ah(a, n, w, y, d);
      case 7:
        return ke(a, n, n.pendingProps, d), n.child;
      case 8:
        return ke(a, n, n.pendingProps.children, d), n.child;
      case 12:
        return ke(a, n, n.pendingProps.children, d), n.child;
      case 10:
        A: {
          if (w = n.type._context, y = n.pendingProps, G = n.memoizedProps, H = y.value, Pu(lr, w._currentValue), w._currentValue = H, G !== null) if (oA(G.value, H)) {
            if (G.children === y.children && !Re.current) {
              n = mg(a, n, d);
              break A;
            }
          } else for (G = n.child, G !== null && (G.return = n); G !== null; ) {
            var W = G.dependencies;
            if (W !== null) {
              H = G.child;
              for (var V = W.firstContext; V !== null; ) {
                if (V.context === w) {
                  if (G.tag === 1) {
                    V = pg(-1, d & -d), V.tag = 2;
                    var IA = G.updateQueue;
                    if (IA !== null) {
                      IA = IA.shared;
                      var DA = IA.pending;
                      DA === null ? V.next = V : (V.next = DA.next, DA.next = V), IA.pending = V;
                    }
                  }
                  G.lanes |= d, V = G.alternate, V !== null && (V.lanes |= d), $3(
                    G.return,
                    d,
                    n
                  ), W.lanes |= d;
                  break;
                }
                V = V.next;
              }
            } else if (G.tag === 10) H = G.type === n.type ? null : G.child;
            else if (G.tag === 18) {
              if (H = G.return, H === null) throw Error(e(341));
              H.lanes |= d, W = H.alternate, W !== null && (W.lanes |= d), $3(H, d, n), H = G.sibling;
            } else H = G.child;
            if (H !== null) H.return = G;
            else for (H = G; H !== null; ) {
              if (H === n) {
                H = null;
                break;
              }
              if (G = H.sibling, G !== null) {
                G.return = H.return, H = G;
                break;
              }
              H = H.return;
            }
            G = H;
          }
          ke(a, n, y.children, d), n = n.child;
        }
        return n;
      case 9:
        return y = n.type, w = n.pendingProps.children, ca(n, d), y = DC(y), w = w(y), n.flags |= 1, ke(a, n, w, d), n.child;
      case 14:
        return w = n.type, y = VC(w, n.pendingProps), y = VC(w.type, y), Ih(a, n, w, y, d);
      case 15:
        return oh(a, n, n.type, n.pendingProps, d);
      case 17:
        return w = n.type, y = n.pendingProps, y = n.elementType === w ? y : VC(w, y), Ur(a, n), n.tag = 1, Me(w) ? (a = !0, Ir(n)) : a = !1, ca(n, d), eh(n, w, y), sc(n, w, y, d), Dc(null, n, w, !0, a, d);
      case 19:
        return Dh(a, n, d);
      case 22:
        return Qh(a, n, d);
    }
    throw Error(e(156, n.tag));
  };
  function qh(a, n) {
    return jE(a, n);
  }
  function KCA(a, n, d, w) {
    this.tag = a, this.key = d, this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null, this.index = 0, this.ref = null, this.pendingProps = n, this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null, this.mode = w, this.subtreeFlags = this.flags = 0, this.deletions = null, this.childLanes = this.lanes = 0, this.alternate = null;
  }
  function FC(a, n, d, w) {
    return new KCA(a, n, d, w);
  }
  function Hc(a) {
    return a = a.prototype, !(!a || !a.isReactComponent);
  }
  function JCA(a) {
    if (typeof a == "function") return Hc(a) ? 1 : 0;
    if (a != null) {
      if (a = a.$$typeof, a === q) return 11;
      if (a === O) return 14;
    }
    return 2;
  }
  function Nt(a, n) {
    var d = a.alternate;
    return d === null ? (d = FC(a.tag, n, a.key, a.mode), d.elementType = a.elementType, d.type = a.type, d.stateNode = a.stateNode, d.alternate = a, a.alternate = d) : (d.pendingProps = n, d.type = a.type, d.flags = 0, d.subtreeFlags = 0, d.deletions = null), d.flags = a.flags & 14680064, d.childLanes = a.childLanes, d.lanes = a.lanes, d.child = a.child, d.memoizedProps = a.memoizedProps, d.memoizedState = a.memoizedState, d.updateQueue = a.updateQueue, n = a.dependencies, d.dependencies = n === null ? null : { lanes: n.lanes, firstContext: n.firstContext }, d.sibling = a.sibling, d.index = a.index, d.ref = a.ref, d;
  }
  function Hr(a, n, d, w, y, G) {
    var H = 2;
    if (w = a, typeof a == "function") Hc(a) && (H = 1);
    else if (typeof a == "string") H = 5;
    else A: switch (a) {
      case L:
        return Xi(d.children, y, G, n);
      case N:
        H = 8, y |= 8;
        break;
      case M:
        return a = FC(12, d, n, y | 2), a.elementType = M, a.lanes = G, a;
      case j:
        return a = FC(13, d, n, y), a.elementType = j, a.lanes = G, a;
      case uA:
        return a = FC(19, d, n, y), a.elementType = uA, a.lanes = G, a;
      case X:
        return Kr(d, y, G, n);
      default:
        if (typeof a == "object" && a !== null) switch (a.$$typeof) {
          case v:
            H = 10;
            break A;
          case K:
            H = 9;
            break A;
          case q:
            H = 11;
            break A;
          case O:
            H = 14;
            break A;
          case $:
            H = 16, w = null;
            break A;
        }
        throw Error(e(130, a == null ? a : typeof a, ""));
    }
    return n = FC(H, d, n, y), n.elementType = a, n.type = w, n.lanes = G, n;
  }
  function Xi(a, n, d, w) {
    return a = FC(7, a, w, n), a.lanes = d, a;
  }
  function Kr(a, n, d, w) {
    return a = FC(22, a, w, n), a.elementType = X, a.lanes = d, a.stateNode = { isHidden: !1 }, a;
  }
  function Kc(a, n, d) {
    return a = FC(6, a, null, n), a.lanes = d, a;
  }
  function Jc(a, n, d) {
    return n = FC(4, a.children !== null ? a.children : [], a.key, n), n.lanes = d, n.stateNode = { containerInfo: a.containerInfo, pendingChildren: null, implementation: a.implementation }, n;
  }
  function ZCA(a, n, d, w, y) {
    this.tag = n, this.containerInfo = a, this.finishedWork = this.pingCache = this.current = this.pendingChildren = null, this.timeoutHandle = -1, this.callbackNode = this.pendingContext = this.context = null, this.callbackPriority = 0, this.eventTimes = sg(0), this.expirationTimes = sg(-1), this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0, this.entanglements = sg(0), this.identifierPrefix = w, this.onRecoverableError = y, this.mutableSourceEagerHydrationData = null;
  }
  function Zc(a, n, d, w, y, G, H, W, V) {
    return a = new ZCA(a, n, d, W, V), n === 1 ? (n = 1, G === !0 && (n |= 8)) : n = 0, G = FC(3, null, null, n), a.current = G, G.stateNode = a, G.memoizedState = { element: w, isDehydrated: d, cache: null, transitions: null, pendingSuspenseBoundaries: null }, uc(G), a;
  }
  function qCA(a, n, d) {
    var w = 3 < arguments.length && arguments[3] !== void 0 ? arguments[3] : null;
    return { $$typeof: f, key: w == null ? null : "" + w, children: a, containerInfo: n, implementation: d };
  }
  function Wh(a) {
    if (!a) return kt;
    a = a._reactInternals;
    A: {
      if (ng(a) !== a || a.tag !== 1) throw Error(e(170));
      var n = a;
      do {
        switch (n.tag) {
          case 3:
            n = n.stateNode.context;
            break A;
          case 1:
            if (Me(n.type)) {
              n = n.stateNode.__reactInternalMemoizedMergedChildContext;
              break A;
            }
        }
        n = n.return;
      } while (n !== null);
      throw Error(e(171));
    }
    if (a.tag === 1) {
      var d = a.type;
      if (Me(d)) return d6(a, d, n);
    }
    return n;
  }
  function jh(a, n, d, w, y, G, H, W, V) {
    return a = Zc(d, w, !0, a, y, G, H, W, V), a.context = Wh(null), d = a.current, w = ye(), y = xt(d), G = pg(w, y), G.callback = n ?? null, Ut(d, G, y), a.current.lanes = y, mi(a, y, w), He(a, w), a;
  }
  function Jr(a, n, d, w) {
    var y = n.current, G = ye(), H = xt(y);
    return d = Wh(d), n.context === null ? n.context = d : n.pendingContext = d, n = pg(G, H), n.payload = { element: a }, w = w === void 0 ? null : w, w !== null && (n.callback = w), a = Ut(y, n, H), a !== null && ($C(a, y, H, G), dr(a, y, H)), H;
  }
  function Zr(a) {
    if (a = a.current, !a.child) return null;
    switch (a.child.tag) {
      case 5:
        return a.child.stateNode;
      default:
        return a.child.stateNode;
    }
  }
  function Th(a, n) {
    if (a = a.memoizedState, a !== null && a.dehydrated !== null) {
      var d = a.retryLane;
      a.retryLane = d !== 0 && d < n ? d : n;
    }
  }
  function qc(a, n) {
    Th(a, n), (a = a.alternate) && Th(a, n);
  }
  function WCA() {
    return null;
  }
  var zh = typeof reportError == "function" ? reportError : function(a) {
    console.error(a);
  };
  function Wc(a) {
    this._internalRoot = a;
  }
  qr.prototype.render = Wc.prototype.render = function(a) {
    var n = this._internalRoot;
    if (n === null) throw Error(e(409));
    Jr(a, n, null, null);
  }, qr.prototype.unmount = Wc.prototype.unmount = function() {
    var a = this._internalRoot;
    if (a !== null) {
      this._internalRoot = null;
      var n = a.containerInfo;
      Pi(function() {
        Jr(null, a, null, null);
      }), n[dg] = null;
    }
  };
  function qr(a) {
    this._internalRoot = a;
  }
  qr.prototype.unstable_scheduleHydration = function(a) {
    if (a) {
      var n = WC();
      a = { blockedOn: null, target: a, priority: n };
      for (var d = 0; d < uC.length && n !== 0 && n < uC[d].priority; d++) ;
      uC.splice(d, 0, a), d === 0 && jn(a);
    }
  };
  function jc(a) {
    return !(!a || a.nodeType !== 1 && a.nodeType !== 9 && a.nodeType !== 11);
  }
  function Wr(a) {
    return !(!a || a.nodeType !== 1 && a.nodeType !== 9 && a.nodeType !== 11 && (a.nodeType !== 8 || a.nodeValue !== " react-mount-point-unstable "));
  }
  function Ph() {
  }
  function jCA(a, n, d, w, y) {
    if (y) {
      if (typeof w == "function") {
        var G = w;
        w = function() {
          var IA = Zr(H);
          G.call(IA);
        };
      }
      var H = jh(n, w, a, 0, null, !1, !1, "", Ph);
      return a._reactRootContainer = H, a[dg] = H.current, oo(a.nodeType === 8 ? a.parentNode : a), Pi(), H;
    }
    for (; y = a.lastChild; ) a.removeChild(y);
    if (typeof w == "function") {
      var W = w;
      w = function() {
        var IA = Zr(V);
        W.call(IA);
      };
    }
    var V = Zc(a, 0, !1, null, null, !1, !1, "", Ph);
    return a._reactRootContainer = V, a[dg] = V.current, oo(a.nodeType === 8 ? a.parentNode : a), Pi(function() {
      Jr(n, V, d, w);
    }), V;
  }
  function jr(a, n, d, w, y) {
    var G = d._reactRootContainer;
    if (G) {
      var H = G;
      if (typeof y == "function") {
        var W = y;
        y = function() {
          var V = Zr(H);
          W.call(V);
        };
      }
      Jr(n, H, a, y);
    } else H = jCA(d, n, a, y, w);
    return Zr(H);
  }
  XE = function(a) {
    switch (a.tag) {
      case 3:
        var n = a.stateNode;
        if (n.current.memoizedState.isDehydrated) {
          var d = pi(n.pendingLanes);
          d !== 0 && (PI(n, d | 1), He(n, Ku()), (mu & 6) === 0 && (Fa = Ku() + 500, yt()));
        }
        break;
      case 13:
        Pi(function() {
          var w = Fg(a, 1);
          if (w !== null) {
            var y = ye();
            $C(w, a, 1, y);
          }
        }), qc(a, 1);
    }
  }, OI = function(a) {
    if (a.tag === 13) {
      var n = Fg(a, 134217728);
      if (n !== null) {
        var d = ye();
        $C(n, a, 134217728, d);
      }
      qc(a, 134217728);
    }
  }, Zn = function(a) {
    if (a.tag === 13) {
      var n = xt(a), d = Fg(a, n);
      if (d !== null) {
        var w = ye();
        $C(d, a, n, w);
      }
      qc(a, n);
    }
  }, WC = function() {
    return du;
  }, VI = function(a, n) {
    var d = du;
    try {
      return du = a, n();
    } finally {
      du = d;
    }
  }, YI = function(a, n, d) {
    switch (n) {
      case "input":
        if (Ig(a, d), n = d.name, d.type === "radio" && n != null) {
          for (d = a; d.parentNode; ) d = d.parentNode;
          for (d = d.querySelectorAll("input[name=" + JSON.stringify("" + n) + '][type="radio"]'), n = 0; n < d.length; n++) {
            var w = d[n];
            if (w !== a && w.form === a.form) {
              var y = Er(w);
              if (!y) throw Error(e(90));
              _u(w), Ig(w, y);
            }
          }
        }
        break;
      case "textarea":
        RI(a, d);
        break;
      case "select":
        n = d.value, n != null && p0(a, !!d.multiple, n, !1);
    }
  }, ZC = Mc, KI = Pi;
  var TCA = { usingClientEntryPoint: !1, Events: [ro, aa, Er, vI, HI, Mc] }, Go = { findFiberByHostInstance: Ki, bundleType: 0, version: "18.3.1", rendererPackageName: "react-dom" }, zCA = { bundleType: Go.bundleType, version: Go.version, rendererPackageName: Go.rendererPackageName, rendererConfig: Go.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, overrideProps: null, overridePropsDeletePath: null, overridePropsRenamePath: null, setErrorHandler: null, setSuspenseHandler: null, scheduleUpdate: null, currentDispatcherRef: k.ReactCurrentDispatcher, findHostInstanceByFiber: function(a) {
    return a = Mn(a), a === null ? null : a.stateNode;
  }, findFiberByHostInstance: Go.findFiberByHostInstance || WCA, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, reconcilerVersion: "18.3.1-next-f1338f8080-20240426" };
  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u") {
    var Tr = __REACT_DEVTOOLS_GLOBAL_HOOK__;
    if (!Tr.isDisabled && Tr.supportsFiber) try {
      ot = Tr.inject(zCA), Ae = Tr;
    } catch {
    }
  }
  return Ke.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = TCA, Ke.createPortal = function(a, n) {
    var d = 2 < arguments.length && arguments[2] !== void 0 ? arguments[2] : null;
    if (!jc(n)) throw Error(e(200));
    return qCA(a, n, null, d);
  }, Ke.createRoot = function(a, n) {
    if (!jc(a)) throw Error(e(299));
    var d = !1, w = "", y = zh;
    return n != null && (n.unstable_strictMode === !0 && (d = !0), n.identifierPrefix !== void 0 && (w = n.identifierPrefix), n.onRecoverableError !== void 0 && (y = n.onRecoverableError)), n = Zc(a, 1, !1, null, null, d, !1, w, y), a[dg] = n.current, oo(a.nodeType === 8 ? a.parentNode : a), new Wc(n);
  }, Ke.findDOMNode = function(a) {
    if (a == null) return null;
    if (a.nodeType === 1) return a;
    var n = a._reactInternals;
    if (n === void 0)
      throw typeof a.render == "function" ? Error(e(188)) : (a = Object.keys(a).join(","), Error(e(268, a)));
    return a = Mn(n), a = a === null ? null : a.stateNode, a;
  }, Ke.flushSync = function(a) {
    return Pi(a);
  }, Ke.hydrate = function(a, n, d) {
    if (!Wr(n)) throw Error(e(200));
    return jr(null, a, n, !0, d);
  }, Ke.hydrateRoot = function(a, n, d) {
    if (!jc(a)) throw Error(e(405));
    var w = d != null && d.hydratedSources || null, y = !1, G = "", H = zh;
    if (d != null && (d.unstable_strictMode === !0 && (y = !0), d.identifierPrefix !== void 0 && (G = d.identifierPrefix), d.onRecoverableError !== void 0 && (H = d.onRecoverableError)), n = jh(n, null, a, 1, d ?? null, y, !1, G, H), a[dg] = n.current, oo(a), w) for (a = 0; a < w.length; a++) d = w[a], y = d._getVersion, y = y(d._source), n.mutableSourceEagerHydrationData == null ? n.mutableSourceEagerHydrationData = [d, y] : n.mutableSourceEagerHydrationData.push(
      d,
      y
    );
    return new qr(n);
  }, Ke.render = function(a, n, d) {
    if (!Wr(n)) throw Error(e(200));
    return jr(null, a, n, !1, d);
  }, Ke.unmountComponentAtNode = function(a) {
    if (!Wr(a)) throw Error(e(40));
    return a._reactRootContainer ? (Pi(function() {
      jr(null, null, a, !1, function() {
        a._reactRootContainer = null, a[dg] = null;
      });
    }), !0) : !1;
  }, Ke.unstable_batchedUpdates = Mc, Ke.unstable_renderSubtreeIntoContainer = function(a, n, d, w) {
    if (!Wr(d)) throw Error(e(200));
    if (a == null || a._reactInternals === void 0) throw Error(e(38));
    return jr(a, n, d, !1, w);
  }, Ke.version = "18.3.1-next-f1338f8080-20240426", Ke;
}
var ew;
function BBA() {
  if (ew) return Pc.exports;
  ew = 1;
  function A() {
    if (!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ > "u" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE != "function"))
      try {
        __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(A);
      } catch (u) {
        console.error(u);
      }
  }
  return A(), Pc.exports = CBA(), Pc.exports;
}
var x = tn();
const kA = /* @__PURE__ */ gg(x), E7 = /* @__PURE__ */ XCA({
  __proto__: null,
  default: kA
}, [x]);
var tu = { VITE_APP_BACKEND_V2_GET_URL: "https://json.excalidraw.com/api/v2/", VITE_APP_BACKEND_V2_POST_URL: "https://json.excalidraw.com/api/v2/post/", VITE_APP_LIBRARY_URL: "https://libraries.excalidraw.com", VITE_APP_LIBRARY_BACKEND: "https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries", VITE_APP_PLUS_LP: "https://plus.excalidraw.com", VITE_APP_PLUS_APP: "https://app.excalidraw.com", VITE_APP_AI_BACKEND: "https://oss-ai.excalidraw.com", VITE_APP_WS_SERVER_URL: "https://oss-collab.excalidraw.com", VITE_APP_FIREBASE_CONFIG: '{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","authDomain":"excalidraw-room-persistence.firebaseapp.com","databaseURL":"https://excalidraw-room-persistence.firebaseio.com","projectId":"excalidraw-room-persistence","storageBucket":"excalidraw-room-persistence.appspot.com","messagingSenderId":"654800341332","appId":"1:654800341332:web:4a692de832b55bd57ce0c1"}', VITE_APP_ENABLE_TRACKING: "false", VITE_APP_PLUS_EXPORT_PUBLIC_KEY: `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApQ0jM9Qz8TdFLzcuAZZX
/WvuKSOJxiw6AR/ZcE3eFQWM/mbFdhQgyK8eHGkKQifKzH1xUZjCxyXcxW6ZO02t
kPOPxhz+nxUrIoWCD/V4NGmUA1lxwHuO21HN1gzKrN3xHg5EGjyouR9vibT9VDGF
gq6+4Ic/kJX+AD2MM7Yre2+FsOdysrmuW2Fu3ahuC1uQE7pOe1j0k7auNP0y1q53
PrB8Ts2LUpepWC1l7zIXFm4ViDULuyWXTEpUcHSsEH8vpd1tckjypxCwkipfZsXx
iPszy0o0Dx2iArPfWMXlFAI9mvyFCyFC3+nSvfyAUb2C4uZgCwAuyFh/ydPF4DEE
PQIDAQAB`, VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: "false", VITE_APP_COLLAPSE_OVERLAY: "false", VITE_APP_ENABLE_ESLINT: "false", PKG_NAME: "@excalidraw/excalidraw", PKG_VERSION: "0.18.0", PROD: !0 }, a7 = Object.defineProperty, gBA = (A, u, e) => u in A ? a7(A, u, { enumerable: !0, configurable: !0, writable: !0, value: e }) : A[u] = e, Cw = ((A) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(A, { get: (u, e) => (typeof require < "u" ? require : u)[e] }) : A)(function(A) {
  if (typeof require < "u") return require.apply(this, arguments);
  throw Error('Dynamic require of "' + A + '" is not supported');
}), tBA = (A) => (u) => {
  var e = A[u];
  if (e) return e();
  throw new Error("Module not found in bundle: " + u);
}, I7 = (A, u) => {
  for (var e in u) a7(A, e, { get: u[e], enumerable: !0 });
}, J = (A, u, e) => (gBA(A, typeof u != "symbol" ? u + "" : u, e), e), Xc = {}, Bw;
function o7() {
  return Bw || (Bw = 1, (function(A) {
    (function(u) {
      u(typeof DO_NOT_EXPORT_CRC > "u" ? A : {});
    })(function(u) {
      u.version = "0.3.0";
      function e() {
        for (var o = 0, E = new Array(256), Q = 0; Q != 256; ++Q)
          o = Q, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, o = o & 1 ? -306674912 ^ o >>> 1 : o >>> 1, E[Q] = o;
        return typeof Int32Array < "u" ? new Int32Array(E) : E;
      }
      var C = e(), B = typeof Buffer < "u";
      function g(o) {
        if (o.length > 32768 && B) return i(new Buffer(o));
        for (var E = -1, Q = o.length - 1, s = 0; s < Q; )
          E = C[(E ^ o.charCodeAt(s++)) & 255] ^ E >>> 8, E = C[(E ^ o.charCodeAt(s++)) & 255] ^ E >>> 8;
        return s === Q && (E = E >>> 8 ^ C[(E ^ o.charCodeAt(s)) & 255]), E ^ -1;
      }
      function t(o) {
        if (o.length > 1e4) return i(o);
        for (var E = -1, Q = 0, s = o.length - 3; Q < s; )
          E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255];
        for (; Q < s + 3; ) E = E >>> 8 ^ C[(E ^ o[Q++]) & 255];
        return E ^ -1;
      }
      function i(o) {
        for (var E = -1, Q = 0, s = o.length - 7; Q < s; )
          E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255], E = E >>> 8 ^ C[(E ^ o[Q++]) & 255];
        for (; Q < s + 7; ) E = E >>> 8 ^ C[(E ^ o[Q++]) & 255];
        return E ^ -1;
      }
      function I(o) {
        for (var E = -1, Q = 0, s = o.length, l, c; Q < s; )
          l = o.charCodeAt(Q++), l < 128 ? E = E >>> 8 ^ C[(E ^ l) & 255] : l < 2048 ? (E = E >>> 8 ^ C[(E ^ (192 | l >> 6 & 31)) & 255], E = E >>> 8 ^ C[(E ^ (128 | l & 63)) & 255]) : l >= 55296 && l < 57344 ? (l = (l & 1023) + 64, c = o.charCodeAt(Q++) & 1023, E = E >>> 8 ^ C[(E ^ (240 | l >> 8 & 7)) & 255], E = E >>> 8 ^ C[(E ^ (128 | l >> 2 & 63)) & 255], E = E >>> 8 ^ C[(E ^ (128 | c >> 6 & 15 | l & 3)) & 255], E = E >>> 8 ^ C[(E ^ (128 | c & 63)) & 255]) : (E = E >>> 8 ^ C[(E ^ (224 | l >> 12 & 15)) & 255], E = E >>> 8 ^ C[(E ^ (128 | l >> 6 & 63)) & 255], E = E >>> 8 ^ C[(E ^ (128 | l & 63)) & 255]);
        return E ^ -1;
      }
      u.table = C, u.bstr = g, u.buf = t, u.str = I;
    });
  })(Xc)), Xc;
}
var _c, gw;
function iBA() {
  if (gw) return _c;
  gw = 1;
  var A = o7();
  _c = B;
  var u = new Uint8Array(4), e = new Int32Array(u.buffer), C = new Uint32Array(u.buffer);
  function B(g) {
    if (g[0] !== 137) throw new Error("Invalid .png file header");
    if (g[1] !== 80) throw new Error("Invalid .png file header");
    if (g[2] !== 78) throw new Error("Invalid .png file header");
    if (g[3] !== 71) throw new Error("Invalid .png file header");
    if (g[4] !== 13) throw new Error("Invalid .png file header: possibly caused by DOS-Unix line ending conversion?");
    if (g[5] !== 10) throw new Error("Invalid .png file header: possibly caused by DOS-Unix line ending conversion?");
    if (g[6] !== 26) throw new Error("Invalid .png file header");
    if (g[7] !== 10) throw new Error("Invalid .png file header: possibly caused by DOS-Unix line ending conversion?");
    for (var t = !1, i = [], I = 8; I < g.length; ) {
      u[3] = g[I++], u[2] = g[I++], u[1] = g[I++], u[0] = g[I++];
      var o = C[0] + 4, E = new Uint8Array(o);
      E[0] = g[I++], E[1] = g[I++], E[2] = g[I++], E[3] = g[I++];
      var Q = String.fromCharCode(E[0]) + String.fromCharCode(E[1]) + String.fromCharCode(E[2]) + String.fromCharCode(E[3]);
      if (!i.length && Q !== "IHDR")
        throw new Error("IHDR header missing");
      if (Q === "IEND") {
        t = !0, i.push({
          name: Q,
          data: new Uint8Array(0)
        });
        break;
      }
      for (var s = 4; s < o; s++)
        E[s] = g[I++];
      u[3] = g[I++], u[2] = g[I++], u[1] = g[I++], u[0] = g[I++];
      var l = e[0], c = A.buf(E);
      if (c !== l)
        throw new Error(
          "CRC values for " + Q + " header do not match, PNG file is likely corrupted"
        );
      var D = new Uint8Array(E.buffer.slice(4));
      i.push({
        name: Q,
        data: D
      });
    }
    if (!t)
      throw new Error(".png file ended prematurely: no IEND header was found");
    return i;
  }
  return _c;
}
var EBA = iBA();
const Q7 = /* @__PURE__ */ gg(EBA);
var zr = {}, $c, tw;
function aBA() {
  if (tw) return $c;
  tw = 1, $c = A;
  function A(u, e) {
    if (u = String(u), e = String(e), !/^[\x00-\xFF]+$/.test(u) || !/^[\x00-\xFF]+$/.test(e))
      throw new Error("Only Latin-1 characters are permitted in PNG tEXt chunks. You might want to consider base64 encoding and/or zEXt compression");
    if (u.length >= 80)
      throw new Error('Keyword "' + u + '" is longer than the 79-character limit imposed by the PNG specification');
    for (var C = u.length + e.length + 1, B = new Uint8Array(C), g = 0, t, i = 0; i < u.length; i++) {
      if (!(t = u.charCodeAt(i)))
        throw new Error("0x00 character is not permitted in tEXt keywords");
      B[g++] = t;
    }
    B[g++] = 0;
    for (var I = 0; I < e.length; I++) {
      if (!(t = e.charCodeAt(I)))
        throw new Error("0x00 character is not permitted in tEXt content");
      B[g++] = t;
    }
    return {
      name: "tEXt",
      data: B
    };
  }
  return $c;
}
var Ad, iw;
function IBA() {
  if (iw) return Ad;
  iw = 1, Ad = A;
  function A(u) {
    u.data && u.name && (u = u.data);
    for (var e = !0, C = "", B = "", g = 0; g < u.length; g++) {
      var t = u[g];
      if (e)
        t ? B += String.fromCharCode(t) : e = !1;
      else if (t)
        C += String.fromCharCode(t);
      else
        throw new Error("Invalid NULL character found. 0x00 character is not permitted in tEXt content");
    }
    return {
      keyword: B,
      text: C
    };
  }
  return Ad;
}
var Ew;
function oBA() {
  return Ew || (Ew = 1, zr.encode = aBA(), zr.decode = IBA()), zr;
}
var QBA = oBA();
const n7 = /* @__PURE__ */ gg(QBA);
var ud, aw;
function nBA() {
  return aw || (aw = 1, ud = function(A, u, e) {
    var C = [], B = A.length;
    if (B === 0) return C;
    var g = u < 0 ? Math.max(0, u + B) : u || 0;
    for (e !== void 0 && (B = e < 0 ? e + B : e); B-- > g; )
      C[B - g] = A[B];
    return C;
  }), ud;
}
var ed, Iw;
function rBA() {
  if (Iw) return ed;
  Iw = 1;
  var A = nBA(), u = o7();
  ed = g;
  var e = new Uint8Array(4), C = new Int32Array(e.buffer), B = new Uint32Array(e.buffer);
  function g(t) {
    var i = 8, I = i, o;
    for (o = 0; o < t.length; o++)
      i += t[o].data.length, i += 12;
    var E = new Uint8Array(i);
    for (E[0] = 137, E[1] = 80, E[2] = 78, E[3] = 71, E[4] = 13, E[5] = 10, E[6] = 26, E[7] = 10, o = 0; o < t.length; o++) {
      var Q = t[o], s = Q.name, l = Q.data, c = l.length, D = [
        s.charCodeAt(0),
        s.charCodeAt(1),
        s.charCodeAt(2),
        s.charCodeAt(3)
      ];
      B[0] = c, E[I++] = e[3], E[I++] = e[2], E[I++] = e[1], E[I++] = e[0], E[I++] = D[0], E[I++] = D[1], E[I++] = D[2], E[I++] = D[3];
      for (var h = 0; h < c; )
        E[I++] = l[h++];
      var F = D.concat(A(l)), m = u.buf(F);
      C[0] = m, E[I++] = e[3], E[I++] = e[2], E[I++] = e[1], E[I++] = e[0];
    }
    return E;
  }
  return ed;
}
var sBA = rBA();
const lBA = /* @__PURE__ */ gg(sBA);
/*! pako 2.0.3 https://github.com/nodeca/pako @license (MIT AND Zlib) */
const cBA = 4, ow = 0, Qw = 1, dBA = 2;
function wI(A) {
  let u = A.length;
  for (; --u >= 0; )
    A[u] = 0;
}
const DBA = 0, r7 = 1, hBA = 2, wBA = 3, FBA = 258, z1 = 29, En = 256, GQ = En + 1 + z1, Va = 30, P1 = 19, s7 = 2 * GQ + 1, IE = 15, Cd = 16, pBA = 7, O1 = 256, l7 = 16, c7 = 17, d7 = 18, kD = (
  /* extra bits for each length code */
  new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0])
), Fs = (
  /* extra bits for each distance code */
  new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13])
), mBA = (
  /* extra bits for each bit length code */
  new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7])
), D7 = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), kBA = 512, xg = new Array((GQ + 2) * 2);
wI(xg);
const oQ = new Array(Va * 2);
wI(oQ);
const fQ = new Array(kBA);
wI(fQ);
const LQ = new Array(FBA - wBA + 1);
wI(LQ);
const V1 = new Array(z1);
wI(V1);
const Al = new Array(Va);
wI(Al);
function Bd(A, u, e, C, B) {
  this.static_tree = A, this.extra_bits = u, this.extra_base = e, this.elems = C, this.max_length = B, this.has_stree = A && A.length;
}
let h7, w7, F7;
function gd(A, u) {
  this.dyn_tree = A, this.max_code = 0, this.stat_desc = u;
}
const p7 = (A) => A < 256 ? fQ[A] : fQ[256 + (A >>> 7)], xQ = (A, u) => {
  A.pending_buf[A.pending++] = u & 255, A.pending_buf[A.pending++] = u >>> 8 & 255;
}, Pe = (A, u, e) => {
  A.bi_valid > Cd - e ? (A.bi_buf |= u << A.bi_valid & 65535, xQ(A, A.bi_buf), A.bi_buf = u >> Cd - A.bi_valid, A.bi_valid += e - Cd) : (A.bi_buf |= u << A.bi_valid & 65535, A.bi_valid += e);
}, WB = (A, u, e) => {
  Pe(
    A,
    e[u * 2],
    e[u * 2 + 1]
    /*.Len*/
  );
}, m7 = (A, u) => {
  let e = 0;
  do
    e |= A & 1, A >>>= 1, e <<= 1;
  while (--u > 0);
  return e >>> 1;
}, yBA = (A) => {
  A.bi_valid === 16 ? (xQ(A, A.bi_buf), A.bi_buf = 0, A.bi_valid = 0) : A.bi_valid >= 8 && (A.pending_buf[A.pending++] = A.bi_buf & 255, A.bi_buf >>= 8, A.bi_valid -= 8);
}, bBA = (A, u) => {
  const e = u.dyn_tree, C = u.max_code, B = u.stat_desc.static_tree, g = u.stat_desc.has_stree, t = u.stat_desc.extra_bits, i = u.stat_desc.extra_base, I = u.stat_desc.max_length;
  let o, E, Q, s, l, c, D = 0;
  for (s = 0; s <= IE; s++)
    A.bl_count[s] = 0;
  for (e[A.heap[A.heap_max] * 2 + 1] = 0, o = A.heap_max + 1; o < s7; o++)
    E = A.heap[o], s = e[e[E * 2 + 1] * 2 + 1] + 1, s > I && (s = I, D++), e[E * 2 + 1] = s, !(E > C) && (A.bl_count[s]++, l = 0, E >= i && (l = t[E - i]), c = e[E * 2], A.opt_len += c * (s + l), g && (A.static_len += c * (B[E * 2 + 1] + l)));
  if (D !== 0) {
    do {
      for (s = I - 1; A.bl_count[s] === 0; )
        s--;
      A.bl_count[s]--, A.bl_count[s + 1] += 2, A.bl_count[I]--, D -= 2;
    } while (D > 0);
    for (s = I; s !== 0; s--)
      for (E = A.bl_count[s]; E !== 0; )
        Q = A.heap[--o], !(Q > C) && (e[Q * 2 + 1] !== s && (A.opt_len += (s - e[Q * 2 + 1]) * e[Q * 2], e[Q * 2 + 1] = s), E--);
  }
}, k7 = (A, u, e) => {
  const C = new Array(IE + 1);
  let B = 0, g, t;
  for (g = 1; g <= IE; g++)
    C[g] = B = B + e[g - 1] << 1;
  for (t = 0; t <= u; t++) {
    let i = A[t * 2 + 1];
    i !== 0 && (A[t * 2] = m7(C[i]++, i));
  }
}, UBA = () => {
  let A, u, e, C, B;
  const g = new Array(IE + 1);
  for (e = 0, C = 0; C < z1 - 1; C++)
    for (V1[C] = e, A = 0; A < 1 << kD[C]; A++)
      LQ[e++] = C;
  for (LQ[e - 1] = C, B = 0, C = 0; C < 16; C++)
    for (Al[C] = B, A = 0; A < 1 << Fs[C]; A++)
      fQ[B++] = C;
  for (B >>= 7; C < Va; C++)
    for (Al[C] = B << 7, A = 0; A < 1 << Fs[C] - 7; A++)
      fQ[256 + B++] = C;
  for (u = 0; u <= IE; u++)
    g[u] = 0;
  for (A = 0; A <= 143; )
    xg[A * 2 + 1] = 8, A++, g[8]++;
  for (; A <= 255; )
    xg[A * 2 + 1] = 9, A++, g[9]++;
  for (; A <= 279; )
    xg[A * 2 + 1] = 7, A++, g[7]++;
  for (; A <= 287; )
    xg[A * 2 + 1] = 8, A++, g[8]++;
  for (k7(xg, GQ + 1, g), A = 0; A < Va; A++)
    oQ[A * 2 + 1] = 5, oQ[A * 2] = m7(A, 5);
  h7 = new Bd(xg, kD, En + 1, GQ, IE), w7 = new Bd(oQ, Fs, 0, Va, IE), F7 = new Bd(new Array(0), mBA, 0, P1, pBA);
}, y7 = (A) => {
  let u;
  for (u = 0; u < GQ; u++)
    A.dyn_ltree[u * 2] = 0;
  for (u = 0; u < Va; u++)
    A.dyn_dtree[u * 2] = 0;
  for (u = 0; u < P1; u++)
    A.bl_tree[u * 2] = 0;
  A.dyn_ltree[O1 * 2] = 1, A.opt_len = A.static_len = 0, A.last_lit = A.matches = 0;
}, b7 = (A) => {
  A.bi_valid > 8 ? xQ(A, A.bi_buf) : A.bi_valid > 0 && (A.pending_buf[A.pending++] = A.bi_buf), A.bi_buf = 0, A.bi_valid = 0;
}, GBA = (A, u, e, C) => {
  b7(A), xQ(A, e), xQ(A, ~e), A.pending_buf.set(A.window.subarray(u, u + e), A.pending), A.pending += e;
}, nw = (A, u, e, C) => {
  const B = u * 2, g = e * 2;
  return A[B] < A[g] || A[B] === A[g] && C[u] <= C[e];
}, td = (A, u, e) => {
  const C = A.heap[e];
  let B = e << 1;
  for (; B <= A.heap_len && (B < A.heap_len && nw(u, A.heap[B + 1], A.heap[B], A.depth) && B++, !nw(u, C, A.heap[B], A.depth)); )
    A.heap[e] = A.heap[B], e = B, B <<= 1;
  A.heap[e] = C;
}, rw = (A, u, e) => {
  let C, B, g = 0, t, i;
  if (A.last_lit !== 0)
    do
      C = A.pending_buf[A.d_buf + g * 2] << 8 | A.pending_buf[A.d_buf + g * 2 + 1], B = A.pending_buf[A.l_buf + g], g++, C === 0 ? WB(A, B, u) : (t = LQ[B], WB(A, t + En + 1, u), i = kD[t], i !== 0 && (B -= V1[t], Pe(A, B, i)), C--, t = p7(C), WB(A, t, e), i = Fs[t], i !== 0 && (C -= Al[t], Pe(A, C, i)));
    while (g < A.last_lit);
  WB(A, O1, u);
}, yD = (A, u) => {
  const e = u.dyn_tree, C = u.stat_desc.static_tree, B = u.stat_desc.has_stree, g = u.stat_desc.elems;
  let t, i, I = -1, o;
  for (A.heap_len = 0, A.heap_max = s7, t = 0; t < g; t++)
    e[t * 2] !== 0 ? (A.heap[++A.heap_len] = I = t, A.depth[t] = 0) : e[t * 2 + 1] = 0;
  for (; A.heap_len < 2; )
    o = A.heap[++A.heap_len] = I < 2 ? ++I : 0, e[o * 2] = 1, A.depth[o] = 0, A.opt_len--, B && (A.static_len -= C[o * 2 + 1]);
  for (u.max_code = I, t = A.heap_len >> 1; t >= 1; t--)
    td(A, e, t);
  o = g;
  do
    t = A.heap[
      1
      /*SMALLEST*/
    ], A.heap[
      1
      /*SMALLEST*/
    ] = A.heap[A.heap_len--], td(
      A,
      e,
      1
      /*SMALLEST*/
    ), i = A.heap[
      1
      /*SMALLEST*/
    ], A.heap[--A.heap_max] = t, A.heap[--A.heap_max] = i, e[o * 2] = e[t * 2] + e[i * 2], A.depth[o] = (A.depth[t] >= A.depth[i] ? A.depth[t] : A.depth[i]) + 1, e[t * 2 + 1] = e[i * 2 + 1] = o, A.heap[
      1
      /*SMALLEST*/
    ] = o++, td(
      A,
      e,
      1
      /*SMALLEST*/
    );
  while (A.heap_len >= 2);
  A.heap[--A.heap_max] = A.heap[
    1
    /*SMALLEST*/
  ], bBA(A, u), k7(e, I, A.bl_count);
}, sw = (A, u, e) => {
  let C, B = -1, g, t = u[1], i = 0, I = 7, o = 4;
  for (t === 0 && (I = 138, o = 3), u[(e + 1) * 2 + 1] = 65535, C = 0; C <= e; C++)
    g = t, t = u[(C + 1) * 2 + 1], !(++i < I && g === t) && (i < o ? A.bl_tree[g * 2] += i : g !== 0 ? (g !== B && A.bl_tree[g * 2]++, A.bl_tree[l7 * 2]++) : i <= 10 ? A.bl_tree[c7 * 2]++ : A.bl_tree[d7 * 2]++, i = 0, B = g, t === 0 ? (I = 138, o = 3) : g === t ? (I = 6, o = 3) : (I = 7, o = 4));
}, lw = (A, u, e) => {
  let C, B = -1, g, t = u[1], i = 0, I = 7, o = 4;
  for (t === 0 && (I = 138, o = 3), C = 0; C <= e; C++)
    if (g = t, t = u[(C + 1) * 2 + 1], !(++i < I && g === t)) {
      if (i < o)
        do
          WB(A, g, A.bl_tree);
        while (--i !== 0);
      else g !== 0 ? (g !== B && (WB(A, g, A.bl_tree), i--), WB(A, l7, A.bl_tree), Pe(A, i - 3, 2)) : i <= 10 ? (WB(A, c7, A.bl_tree), Pe(A, i - 3, 3)) : (WB(A, d7, A.bl_tree), Pe(A, i - 11, 7));
      i = 0, B = g, t === 0 ? (I = 138, o = 3) : g === t ? (I = 6, o = 3) : (I = 7, o = 4);
    }
}, fBA = (A) => {
  let u;
  for (sw(A, A.dyn_ltree, A.l_desc.max_code), sw(A, A.dyn_dtree, A.d_desc.max_code), yD(A, A.bl_desc), u = P1 - 1; u >= 3 && A.bl_tree[D7[u] * 2 + 1] === 0; u--)
    ;
  return A.opt_len += 3 * (u + 1) + 5 + 5 + 4, u;
}, LBA = (A, u, e, C) => {
  let B;
  for (Pe(A, u - 257, 5), Pe(A, e - 1, 5), Pe(A, C - 4, 4), B = 0; B < C; B++)
    Pe(A, A.bl_tree[D7[B] * 2 + 1], 3);
  lw(A, A.dyn_ltree, u - 1), lw(A, A.dyn_dtree, e - 1);
}, xBA = (A) => {
  let u = 4093624447, e;
  for (e = 0; e <= 31; e++, u >>>= 1)
    if (u & 1 && A.dyn_ltree[e * 2] !== 0)
      return ow;
  if (A.dyn_ltree[18] !== 0 || A.dyn_ltree[20] !== 0 || A.dyn_ltree[26] !== 0)
    return Qw;
  for (e = 32; e < En; e++)
    if (A.dyn_ltree[e * 2] !== 0)
      return Qw;
  return ow;
};
let cw = !1;
const SBA = (A) => {
  cw || (UBA(), cw = !0), A.l_desc = new gd(A.dyn_ltree, h7), A.d_desc = new gd(A.dyn_dtree, w7), A.bl_desc = new gd(A.bl_tree, F7), A.bi_buf = 0, A.bi_valid = 0, y7(A);
}, U7 = (A, u, e, C) => {
  Pe(A, (DBA << 1) + (C ? 1 : 0), 3), GBA(A, u, e);
}, NBA = (A) => {
  Pe(A, r7 << 1, 3), WB(A, O1, xg), yBA(A);
}, RBA = (A, u, e, C) => {
  let B, g, t = 0;
  A.level > 0 ? (A.strm.data_type === dBA && (A.strm.data_type = xBA(A)), yD(A, A.l_desc), yD(A, A.d_desc), t = fBA(A), B = A.opt_len + 3 + 7 >>> 3, g = A.static_len + 3 + 7 >>> 3, g <= B && (B = g)) : B = g = e + 5, e + 4 <= B && u !== -1 ? U7(A, u, e, C) : A.strategy === cBA || g === B ? (Pe(A, (r7 << 1) + (C ? 1 : 0), 3), rw(A, xg, oQ)) : (Pe(A, (hBA << 1) + (C ? 1 : 0), 3), LBA(A, A.l_desc.max_code + 1, A.d_desc.max_code + 1, t + 1), rw(A, A.dyn_ltree, A.dyn_dtree)), y7(A), C && b7(A);
}, MBA = (A, u, e) => (A.pending_buf[A.d_buf + A.last_lit * 2] = u >>> 8 & 255, A.pending_buf[A.d_buf + A.last_lit * 2 + 1] = u & 255, A.pending_buf[A.l_buf + A.last_lit] = e & 255, A.last_lit++, u === 0 ? A.dyn_ltree[e * 2]++ : (A.matches++, u--, A.dyn_ltree[(LQ[e] + En + 1) * 2]++, A.dyn_dtree[p7(u) * 2]++), A.last_lit === A.lit_bufsize - 1);
var YBA = SBA, vBA = U7, HBA = RBA, KBA = MBA, JBA = NBA, ZBA = {
  _tr_init: YBA,
  _tr_stored_block: vBA,
  _tr_flush_block: HBA,
  _tr_tally: KBA,
  _tr_align: JBA
};
const qBA = (A, u, e, C) => {
  let B = A & 65535 | 0, g = A >>> 16 & 65535 | 0, t = 0;
  for (; e !== 0; ) {
    t = e > 2e3 ? 2e3 : e, e -= t;
    do
      B = B + u[C++] | 0, g = g + B | 0;
    while (--t);
    B %= 65521, g %= 65521;
  }
  return B | g << 16 | 0;
};
var SQ = qBA;
const WBA = () => {
  let A, u = [];
  for (var e = 0; e < 256; e++) {
    A = e;
    for (var C = 0; C < 8; C++)
      A = A & 1 ? 3988292384 ^ A >>> 1 : A >>> 1;
    u[e] = A;
  }
  return u;
}, jBA = new Uint32Array(WBA()), TBA = (A, u, e, C) => {
  const B = jBA, g = C + e;
  A ^= -1;
  for (let t = C; t < g; t++)
    A = A >>> 8 ^ B[(A ^ u[t]) & 255];
  return A ^ -1;
};
var z0 = TBA, mE = {
  2: "need dictionary",
  /* Z_NEED_DICT       2  */
  1: "stream end",
  /* Z_STREAM_END      1  */
  0: "",
  /* Z_OK              0  */
  "-1": "file error",
  /* Z_ERRNO         (-1) */
  "-2": "stream error",
  /* Z_STREAM_ERROR  (-2) */
  "-3": "data error",
  /* Z_DATA_ERROR    (-3) */
  "-4": "insufficient memory",
  /* Z_MEM_ERROR     (-4) */
  "-5": "buffer error",
  /* Z_BUF_ERROR     (-5) */
  "-6": "incompatible version"
  /* Z_VERSION_ERROR (-6) */
}, $l = {
  /* Allowed flush values; see deflate() and inflate() below for details */
  Z_NO_FLUSH: 0,
  Z_PARTIAL_FLUSH: 1,
  Z_SYNC_FLUSH: 2,
  Z_FULL_FLUSH: 3,
  Z_FINISH: 4,
  Z_BLOCK: 5,
  Z_TREES: 6,
  /* Return codes for the compression/decompression functions. Negative values
  * are errors, positive values are used for special but normal events.
  */
  Z_OK: 0,
  Z_STREAM_END: 1,
  Z_NEED_DICT: 2,
  Z_STREAM_ERROR: -2,
  Z_DATA_ERROR: -3,
  Z_MEM_ERROR: -4,
  Z_BUF_ERROR: -5,
  Z_DEFAULT_COMPRESSION: -1,
  Z_FILTERED: 1,
  Z_HUFFMAN_ONLY: 2,
  Z_RLE: 3,
  Z_FIXED: 4,
  Z_DEFAULT_STRATEGY: 0,
  //Z_ASCII:                1, // = Z_TEXT (deprecated)
  Z_UNKNOWN: 2,
  /* The deflate compression method */
  Z_DEFLATED: 8
  //Z_NULL:                 null // Use -1 or null inline, depending on var type
};
const { _tr_init: zBA, _tr_stored_block: PBA, _tr_flush_block: OBA, _tr_tally: $t, _tr_align: VBA } = ZBA, {
  Z_NO_FLUSH: KE,
  Z_PARTIAL_FLUSH: XBA,
  Z_FULL_FLUSH: _BA,
  Z_FINISH: Ai,
  Z_BLOCK: dw,
  Z_OK: jB,
  Z_STREAM_END: Dw,
  Z_STREAM_ERROR: fC,
  Z_DATA_ERROR: $BA,
  Z_BUF_ERROR: id,
  Z_DEFAULT_COMPRESSION: AgA,
  Z_FILTERED: ugA,
  Z_HUFFMAN_ONLY: Pr,
  Z_RLE: egA,
  Z_FIXED: CgA,
  Z_DEFAULT_STRATEGY: BgA,
  Z_UNKNOWN: ggA,
  Z_DEFLATED: A4
} = $l, tgA = 9, igA = 15, EgA = 8, agA = 29, IgA = 256, bD = IgA + 1 + agA, ogA = 30, QgA = 19, ngA = 2 * bD + 1, rgA = 15, hu = 3, Pt = 258, nB = Pt + hu + 1, sgA = 32, u4 = 42, UD = 69, ps = 73, ms = 91, ks = 103, oE = 113, Xo = 666, K0 = 1, an = 2, kE = 3, FI = 4, lgA = 3, Ot = (A, u) => (A.msg = mE[u], u), hw = (A) => (A << 1) - (A > 4 ? 9 : 0), Tt = (A) => {
  let u = A.length;
  for (; --u >= 0; )
    A[u] = 0;
};
let cgA = (A, u, e) => (u << A.hash_shift ^ e) & A.hash_mask, ui = cgA;
const Kt = (A) => {
  const u = A.state;
  let e = u.pending;
  e > A.avail_out && (e = A.avail_out), e !== 0 && (A.output.set(u.pending_buf.subarray(u.pending_out, u.pending_out + e), A.next_out), A.next_out += e, u.pending_out += e, A.total_out += e, A.avail_out -= e, u.pending -= e, u.pending === 0 && (u.pending_out = 0));
}, ie = (A, u) => {
  OBA(A, A.block_start >= 0 ? A.block_start : -1, A.strstart - A.block_start, u), A.block_start = A.strstart, Kt(A.strm);
}, xu = (A, u) => {
  A.pending_buf[A.pending++] = u;
}, Lo = (A, u) => {
  A.pending_buf[A.pending++] = u >>> 8 & 255, A.pending_buf[A.pending++] = u & 255;
}, dgA = (A, u, e, C) => {
  let B = A.avail_in;
  return B > C && (B = C), B === 0 ? 0 : (A.avail_in -= B, u.set(A.input.subarray(A.next_in, A.next_in + B), e), A.state.wrap === 1 ? A.adler = SQ(A.adler, u, B, e) : A.state.wrap === 2 && (A.adler = z0(A.adler, u, B, e)), A.next_in += B, A.total_in += B, B);
}, G7 = (A, u) => {
  let e = A.max_chain_length, C = A.strstart, B, g, t = A.prev_length, i = A.nice_match;
  const I = A.strstart > A.w_size - nB ? A.strstart - (A.w_size - nB) : 0, o = A.window, E = A.w_mask, Q = A.prev, s = A.strstart + Pt;
  let l = o[C + t - 1], c = o[C + t];
  A.prev_length >= A.good_match && (e >>= 2), i > A.lookahead && (i = A.lookahead);
  do
    if (B = u, !(o[B + t] !== c || o[B + t - 1] !== l || o[B] !== o[C] || o[++B] !== o[C + 1])) {
      C += 2, B++;
      do
        ;
      while (o[++C] === o[++B] && o[++C] === o[++B] && o[++C] === o[++B] && o[++C] === o[++B] && o[++C] === o[++B] && o[++C] === o[++B] && o[++C] === o[++B] && o[++C] === o[++B] && C < s);
      if (g = Pt - (s - C), C = s - Pt, g > t) {
        if (A.match_start = u, t = g, g >= i)
          break;
        l = o[C + t - 1], c = o[C + t];
      }
    }
  while ((u = Q[u & E]) > I && --e !== 0);
  return t <= A.lookahead ? t : A.lookahead;
}, yE = (A) => {
  const u = A.w_size;
  let e, C, B, g, t;
  do {
    if (g = A.window_size - A.lookahead - A.strstart, A.strstart >= u + (u - nB)) {
      A.window.set(A.window.subarray(u, u + u), 0), A.match_start -= u, A.strstart -= u, A.block_start -= u, C = A.hash_size, e = C;
      do
        B = A.head[--e], A.head[e] = B >= u ? B - u : 0;
      while (--C);
      C = u, e = C;
      do
        B = A.prev[--e], A.prev[e] = B >= u ? B - u : 0;
      while (--C);
      g += u;
    }
    if (A.strm.avail_in === 0)
      break;
    if (C = dgA(A.strm, A.window, A.strstart + A.lookahead, g), A.lookahead += C, A.lookahead + A.insert >= hu)
      for (t = A.strstart - A.insert, A.ins_h = A.window[t], A.ins_h = ui(A, A.ins_h, A.window[t + 1]); A.insert && (A.ins_h = ui(A, A.ins_h, A.window[t + hu - 1]), A.prev[t & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = t, t++, A.insert--, !(A.lookahead + A.insert < hu)); )
        ;
  } while (A.lookahead < nB && A.strm.avail_in !== 0);
}, DgA = (A, u) => {
  let e = 65535;
  for (e > A.pending_buf_size - 5 && (e = A.pending_buf_size - 5); ; ) {
    if (A.lookahead <= 1) {
      if (yE(A), A.lookahead === 0 && u === KE)
        return K0;
      if (A.lookahead === 0)
        break;
    }
    A.strstart += A.lookahead, A.lookahead = 0;
    const C = A.block_start + e;
    if ((A.strstart === 0 || A.strstart >= C) && (A.lookahead = A.strstart - C, A.strstart = C, ie(A, !1), A.strm.avail_out === 0) || A.strstart - A.block_start >= A.w_size - nB && (ie(A, !1), A.strm.avail_out === 0))
      return K0;
  }
  return A.insert = 0, u === Ai ? (ie(A, !0), A.strm.avail_out === 0 ? kE : FI) : (A.strstart > A.block_start && (ie(A, !1), A.strm.avail_out === 0), K0);
}, Ed = (A, u) => {
  let e, C;
  for (; ; ) {
    if (A.lookahead < nB) {
      if (yE(A), A.lookahead < nB && u === KE)
        return K0;
      if (A.lookahead === 0)
        break;
    }
    if (e = 0, A.lookahead >= hu && (A.ins_h = ui(A, A.ins_h, A.window[A.strstart + hu - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart), e !== 0 && A.strstart - e <= A.w_size - nB && (A.match_length = G7(A, e)), A.match_length >= hu)
      if (C = $t(A, A.strstart - A.match_start, A.match_length - hu), A.lookahead -= A.match_length, A.match_length <= A.max_lazy_match && A.lookahead >= hu) {
        A.match_length--;
        do
          A.strstart++, A.ins_h = ui(A, A.ins_h, A.window[A.strstart + hu - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart;
        while (--A.match_length !== 0);
        A.strstart++;
      } else
        A.strstart += A.match_length, A.match_length = 0, A.ins_h = A.window[A.strstart], A.ins_h = ui(A, A.ins_h, A.window[A.strstart + 1]);
    else
      C = $t(A, 0, A.window[A.strstart]), A.lookahead--, A.strstart++;
    if (C && (ie(A, !1), A.strm.avail_out === 0))
      return K0;
  }
  return A.insert = A.strstart < hu - 1 ? A.strstart : hu - 1, u === Ai ? (ie(A, !0), A.strm.avail_out === 0 ? kE : FI) : A.last_lit && (ie(A, !1), A.strm.avail_out === 0) ? K0 : an;
}, ma = (A, u) => {
  let e, C, B;
  for (; ; ) {
    if (A.lookahead < nB) {
      if (yE(A), A.lookahead < nB && u === KE)
        return K0;
      if (A.lookahead === 0)
        break;
    }
    if (e = 0, A.lookahead >= hu && (A.ins_h = ui(A, A.ins_h, A.window[A.strstart + hu - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart), A.prev_length = A.match_length, A.prev_match = A.match_start, A.match_length = hu - 1, e !== 0 && A.prev_length < A.max_lazy_match && A.strstart - e <= A.w_size - nB && (A.match_length = G7(A, e), A.match_length <= 5 && (A.strategy === ugA || A.match_length === hu && A.strstart - A.match_start > 4096) && (A.match_length = hu - 1)), A.prev_length >= hu && A.match_length <= A.prev_length) {
      B = A.strstart + A.lookahead - hu, C = $t(A, A.strstart - 1 - A.prev_match, A.prev_length - hu), A.lookahead -= A.prev_length - 1, A.prev_length -= 2;
      do
        ++A.strstart <= B && (A.ins_h = ui(A, A.ins_h, A.window[A.strstart + hu - 1]), e = A.prev[A.strstart & A.w_mask] = A.head[A.ins_h], A.head[A.ins_h] = A.strstart);
      while (--A.prev_length !== 0);
      if (A.match_available = 0, A.match_length = hu - 1, A.strstart++, C && (ie(A, !1), A.strm.avail_out === 0))
        return K0;
    } else if (A.match_available) {
      if (C = $t(A, 0, A.window[A.strstart - 1]), C && ie(A, !1), A.strstart++, A.lookahead--, A.strm.avail_out === 0)
        return K0;
    } else
      A.match_available = 1, A.strstart++, A.lookahead--;
  }
  return A.match_available && (C = $t(A, 0, A.window[A.strstart - 1]), A.match_available = 0), A.insert = A.strstart < hu - 1 ? A.strstart : hu - 1, u === Ai ? (ie(A, !0), A.strm.avail_out === 0 ? kE : FI) : A.last_lit && (ie(A, !1), A.strm.avail_out === 0) ? K0 : an;
}, hgA = (A, u) => {
  let e, C, B, g;
  const t = A.window;
  for (; ; ) {
    if (A.lookahead <= Pt) {
      if (yE(A), A.lookahead <= Pt && u === KE)
        return K0;
      if (A.lookahead === 0)
        break;
    }
    if (A.match_length = 0, A.lookahead >= hu && A.strstart > 0 && (B = A.strstart - 1, C = t[B], C === t[++B] && C === t[++B] && C === t[++B])) {
      g = A.strstart + Pt;
      do
        ;
      while (C === t[++B] && C === t[++B] && C === t[++B] && C === t[++B] && C === t[++B] && C === t[++B] && C === t[++B] && C === t[++B] && B < g);
      A.match_length = Pt - (g - B), A.match_length > A.lookahead && (A.match_length = A.lookahead);
    }
    if (A.match_length >= hu ? (e = $t(A, 1, A.match_length - hu), A.lookahead -= A.match_length, A.strstart += A.match_length, A.match_length = 0) : (e = $t(A, 0, A.window[A.strstart]), A.lookahead--, A.strstart++), e && (ie(A, !1), A.strm.avail_out === 0))
      return K0;
  }
  return A.insert = 0, u === Ai ? (ie(A, !0), A.strm.avail_out === 0 ? kE : FI) : A.last_lit && (ie(A, !1), A.strm.avail_out === 0) ? K0 : an;
}, wgA = (A, u) => {
  let e;
  for (; ; ) {
    if (A.lookahead === 0 && (yE(A), A.lookahead === 0)) {
      if (u === KE)
        return K0;
      break;
    }
    if (A.match_length = 0, e = $t(A, 0, A.window[A.strstart]), A.lookahead--, A.strstart++, e && (ie(A, !1), A.strm.avail_out === 0))
      return K0;
  }
  return A.insert = 0, u === Ai ? (ie(A, !0), A.strm.avail_out === 0 ? kE : FI) : A.last_lit && (ie(A, !1), A.strm.avail_out === 0) ? K0 : an;
};
function SB(A, u, e, C, B) {
  this.good_length = A, this.max_lazy = u, this.nice_length = e, this.max_chain = C, this.func = B;
}
const _o = [
  /*      good lazy nice chain */
  new SB(0, 0, 0, 0, DgA),
  /* 0 store only */
  new SB(4, 4, 8, 4, Ed),
  /* 1 max speed, no lazy matches */
  new SB(4, 5, 16, 8, Ed),
  /* 2 */
  new SB(4, 6, 32, 32, Ed),
  /* 3 */
  new SB(4, 4, 16, 16, ma),
  /* 4 lazy matches */
  new SB(8, 16, 32, 32, ma),
  /* 5 */
  new SB(8, 16, 128, 128, ma),
  /* 6 */
  new SB(8, 32, 128, 256, ma),
  /* 7 */
  new SB(32, 128, 258, 1024, ma),
  /* 8 */
  new SB(32, 258, 258, 4096, ma)
  /* 9 max compression */
], FgA = (A) => {
  A.window_size = 2 * A.w_size, Tt(A.head), A.max_lazy_match = _o[A.level].max_lazy, A.good_match = _o[A.level].good_length, A.nice_match = _o[A.level].nice_length, A.max_chain_length = _o[A.level].max_chain, A.strstart = 0, A.block_start = 0, A.lookahead = 0, A.insert = 0, A.match_length = A.prev_length = hu - 1, A.match_available = 0, A.ins_h = 0;
};
function pgA() {
  this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = A4, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(ngA * 2), this.dyn_dtree = new Uint16Array((2 * ogA + 1) * 2), this.bl_tree = new Uint16Array((2 * QgA + 1) * 2), Tt(this.dyn_ltree), Tt(this.dyn_dtree), Tt(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(rgA + 1), this.heap = new Uint16Array(2 * bD + 1), Tt(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(2 * bD + 1), Tt(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0;
}
const f7 = (A) => {
  if (!A || !A.state)
    return Ot(A, fC);
  A.total_in = A.total_out = 0, A.data_type = ggA;
  const u = A.state;
  return u.pending = 0, u.pending_out = 0, u.wrap < 0 && (u.wrap = -u.wrap), u.status = u.wrap ? u4 : oE, A.adler = u.wrap === 2 ? 0 : 1, u.last_flush = KE, zBA(u), jB;
}, L7 = (A) => {
  const u = f7(A);
  return u === jB && FgA(A.state), u;
}, mgA = (A, u) => !A || !A.state || A.state.wrap !== 2 ? fC : (A.state.gzhead = u, jB), x7 = (A, u, e, C, B, g) => {
  if (!A)
    return fC;
  let t = 1;
  if (u === AgA && (u = 6), C < 0 ? (t = 0, C = -C) : C > 15 && (t = 2, C -= 16), B < 1 || B > tgA || e !== A4 || C < 8 || C > 15 || u < 0 || u > 9 || g < 0 || g > CgA)
    return Ot(A, fC);
  C === 8 && (C = 9);
  const i = new pgA();
  return A.state = i, i.strm = A, i.wrap = t, i.gzhead = null, i.w_bits = C, i.w_size = 1 << i.w_bits, i.w_mask = i.w_size - 1, i.hash_bits = B + 7, i.hash_size = 1 << i.hash_bits, i.hash_mask = i.hash_size - 1, i.hash_shift = ~~((i.hash_bits + hu - 1) / hu), i.window = new Uint8Array(i.w_size * 2), i.head = new Uint16Array(i.hash_size), i.prev = new Uint16Array(i.w_size), i.lit_bufsize = 1 << B + 6, i.pending_buf_size = i.lit_bufsize * 4, i.pending_buf = new Uint8Array(i.pending_buf_size), i.d_buf = 1 * i.lit_bufsize, i.l_buf = 3 * i.lit_bufsize, i.level = u, i.strategy = g, i.method = e, L7(A);
}, kgA = (A, u) => x7(A, u, A4, igA, EgA, BgA), ygA = (A, u) => {
  let e, C;
  if (!A || !A.state || u > dw || u < 0)
    return A ? Ot(A, fC) : fC;
  const B = A.state;
  if (!A.output || !A.input && A.avail_in !== 0 || B.status === Xo && u !== Ai)
    return Ot(A, A.avail_out === 0 ? id : fC);
  B.strm = A;
  const g = B.last_flush;
  if (B.last_flush = u, B.status === u4)
    if (B.wrap === 2)
      A.adler = 0, xu(B, 31), xu(B, 139), xu(B, 8), B.gzhead ? (xu(
        B,
        (B.gzhead.text ? 1 : 0) + (B.gzhead.hcrc ? 2 : 0) + (B.gzhead.extra ? 4 : 0) + (B.gzhead.name ? 8 : 0) + (B.gzhead.comment ? 16 : 0)
      ), xu(B, B.gzhead.time & 255), xu(B, B.gzhead.time >> 8 & 255), xu(B, B.gzhead.time >> 16 & 255), xu(B, B.gzhead.time >> 24 & 255), xu(B, B.level === 9 ? 2 : B.strategy >= Pr || B.level < 2 ? 4 : 0), xu(B, B.gzhead.os & 255), B.gzhead.extra && B.gzhead.extra.length && (xu(B, B.gzhead.extra.length & 255), xu(B, B.gzhead.extra.length >> 8 & 255)), B.gzhead.hcrc && (A.adler = z0(A.adler, B.pending_buf, B.pending, 0)), B.gzindex = 0, B.status = UD) : (xu(B, 0), xu(B, 0), xu(B, 0), xu(B, 0), xu(B, 0), xu(B, B.level === 9 ? 2 : B.strategy >= Pr || B.level < 2 ? 4 : 0), xu(B, lgA), B.status = oE);
    else {
      let t = A4 + (B.w_bits - 8 << 4) << 8, i = -1;
      B.strategy >= Pr || B.level < 2 ? i = 0 : B.level < 6 ? i = 1 : B.level === 6 ? i = 2 : i = 3, t |= i << 6, B.strstart !== 0 && (t |= sgA), t += 31 - t % 31, B.status = oE, Lo(B, t), B.strstart !== 0 && (Lo(B, A.adler >>> 16), Lo(B, A.adler & 65535)), A.adler = 1;
    }
  if (B.status === UD)
    if (B.gzhead.extra) {
      for (e = B.pending; B.gzindex < (B.gzhead.extra.length & 65535) && !(B.pending === B.pending_buf_size && (B.gzhead.hcrc && B.pending > e && (A.adler = z0(A.adler, B.pending_buf, B.pending - e, e)), Kt(A), e = B.pending, B.pending === B.pending_buf_size)); )
        xu(B, B.gzhead.extra[B.gzindex] & 255), B.gzindex++;
      B.gzhead.hcrc && B.pending > e && (A.adler = z0(A.adler, B.pending_buf, B.pending - e, e)), B.gzindex === B.gzhead.extra.length && (B.gzindex = 0, B.status = ps);
    } else
      B.status = ps;
  if (B.status === ps)
    if (B.gzhead.name) {
      e = B.pending;
      do {
        if (B.pending === B.pending_buf_size && (B.gzhead.hcrc && B.pending > e && (A.adler = z0(A.adler, B.pending_buf, B.pending - e, e)), Kt(A), e = B.pending, B.pending === B.pending_buf_size)) {
          C = 1;
          break;
        }
        B.gzindex < B.gzhead.name.length ? C = B.gzhead.name.charCodeAt(B.gzindex++) & 255 : C = 0, xu(B, C);
      } while (C !== 0);
      B.gzhead.hcrc && B.pending > e && (A.adler = z0(A.adler, B.pending_buf, B.pending - e, e)), C === 0 && (B.gzindex = 0, B.status = ms);
    } else
      B.status = ms;
  if (B.status === ms)
    if (B.gzhead.comment) {
      e = B.pending;
      do {
        if (B.pending === B.pending_buf_size && (B.gzhead.hcrc && B.pending > e && (A.adler = z0(A.adler, B.pending_buf, B.pending - e, e)), Kt(A), e = B.pending, B.pending === B.pending_buf_size)) {
          C = 1;
          break;
        }
        B.gzindex < B.gzhead.comment.length ? C = B.gzhead.comment.charCodeAt(B.gzindex++) & 255 : C = 0, xu(B, C);
      } while (C !== 0);
      B.gzhead.hcrc && B.pending > e && (A.adler = z0(A.adler, B.pending_buf, B.pending - e, e)), C === 0 && (B.status = ks);
    } else
      B.status = ks;
  if (B.status === ks && (B.gzhead.hcrc ? (B.pending + 2 > B.pending_buf_size && Kt(A), B.pending + 2 <= B.pending_buf_size && (xu(B, A.adler & 255), xu(B, A.adler >> 8 & 255), A.adler = 0, B.status = oE)) : B.status = oE), B.pending !== 0) {
    if (Kt(A), A.avail_out === 0)
      return B.last_flush = -1, jB;
  } else if (A.avail_in === 0 && hw(u) <= hw(g) && u !== Ai)
    return Ot(A, id);
  if (B.status === Xo && A.avail_in !== 0)
    return Ot(A, id);
  if (A.avail_in !== 0 || B.lookahead !== 0 || u !== KE && B.status !== Xo) {
    let t = B.strategy === Pr ? wgA(B, u) : B.strategy === egA ? hgA(B, u) : _o[B.level].func(B, u);
    if ((t === kE || t === FI) && (B.status = Xo), t === K0 || t === kE)
      return A.avail_out === 0 && (B.last_flush = -1), jB;
    if (t === an && (u === XBA ? VBA(B) : u !== dw && (PBA(B, 0, 0, !1), u === _BA && (Tt(B.head), B.lookahead === 0 && (B.strstart = 0, B.block_start = 0, B.insert = 0))), Kt(A), A.avail_out === 0))
      return B.last_flush = -1, jB;
  }
  return u !== Ai ? jB : B.wrap <= 0 ? Dw : (B.wrap === 2 ? (xu(B, A.adler & 255), xu(B, A.adler >> 8 & 255), xu(B, A.adler >> 16 & 255), xu(B, A.adler >> 24 & 255), xu(B, A.total_in & 255), xu(B, A.total_in >> 8 & 255), xu(B, A.total_in >> 16 & 255), xu(B, A.total_in >> 24 & 255)) : (Lo(B, A.adler >>> 16), Lo(B, A.adler & 65535)), Kt(A), B.wrap > 0 && (B.wrap = -B.wrap), B.pending !== 0 ? jB : Dw);
}, bgA = (A) => {
  if (!A || !A.state)
    return fC;
  const u = A.state.status;
  return u !== u4 && u !== UD && u !== ps && u !== ms && u !== ks && u !== oE && u !== Xo ? Ot(A, fC) : (A.state = null, u === oE ? Ot(A, $BA) : jB);
}, UgA = (A, u) => {
  let e = u.length;
  if (!A || !A.state)
    return fC;
  const C = A.state, B = C.wrap;
  if (B === 2 || B === 1 && C.status !== u4 || C.lookahead)
    return fC;
  if (B === 1 && (A.adler = SQ(A.adler, u, e, 0)), C.wrap = 0, e >= C.w_size) {
    B === 0 && (Tt(C.head), C.strstart = 0, C.block_start = 0, C.insert = 0);
    let I = new Uint8Array(C.w_size);
    I.set(u.subarray(e - C.w_size, e), 0), u = I, e = C.w_size;
  }
  const g = A.avail_in, t = A.next_in, i = A.input;
  for (A.avail_in = e, A.next_in = 0, A.input = u, yE(C); C.lookahead >= hu; ) {
    let I = C.strstart, o = C.lookahead - (hu - 1);
    do
      C.ins_h = ui(C, C.ins_h, C.window[I + hu - 1]), C.prev[I & C.w_mask] = C.head[C.ins_h], C.head[C.ins_h] = I, I++;
    while (--o);
    C.strstart = I, C.lookahead = hu - 1, yE(C);
  }
  return C.strstart += C.lookahead, C.block_start = C.strstart, C.insert = C.lookahead, C.lookahead = 0, C.match_length = C.prev_length = hu - 1, C.match_available = 0, A.next_in = t, A.input = i, A.avail_in = g, C.wrap = B, jB;
};
var GgA = kgA, fgA = x7, LgA = L7, xgA = f7, SgA = mgA, NgA = ygA, RgA = bgA, MgA = UgA, YgA = "pako deflate (from Nodeca project)", QQ = {
  deflateInit: GgA,
  deflateInit2: fgA,
  deflateReset: LgA,
  deflateResetKeep: xgA,
  deflateSetHeader: SgA,
  deflate: NgA,
  deflateEnd: RgA,
  deflateSetDictionary: MgA,
  deflateInfo: YgA
};
const vgA = (A, u) => Object.prototype.hasOwnProperty.call(A, u);
var HgA = function(A) {
  const u = Array.prototype.slice.call(arguments, 1);
  for (; u.length; ) {
    const e = u.shift();
    if (e) {
      if (typeof e != "object")
        throw new TypeError(e + "must be non-object");
      for (const C in e)
        vgA(e, C) && (A[C] = e[C]);
    }
  }
  return A;
}, KgA = (A) => {
  let u = 0;
  for (let C = 0, B = A.length; C < B; C++)
    u += A[C].length;
  const e = new Uint8Array(u);
  for (let C = 0, B = 0, g = A.length; C < g; C++) {
    let t = A[C];
    e.set(t, B), B += t.length;
  }
  return e;
}, e4 = {
  assign: HgA,
  flattenChunks: KgA
};
let S7 = !0;
try {
  String.fromCharCode.apply(null, new Uint8Array(1));
} catch {
  S7 = !1;
}
const NQ = new Uint8Array(256);
for (let A = 0; A < 256; A++)
  NQ[A] = A >= 252 ? 6 : A >= 248 ? 5 : A >= 240 ? 4 : A >= 224 ? 3 : A >= 192 ? 2 : 1;
NQ[254] = NQ[254] = 1;
var JgA = (A) => {
  let u, e, C, B, g, t = A.length, i = 0;
  for (B = 0; B < t; B++)
    e = A.charCodeAt(B), (e & 64512) === 55296 && B + 1 < t && (C = A.charCodeAt(B + 1), (C & 64512) === 56320 && (e = 65536 + (e - 55296 << 10) + (C - 56320), B++)), i += e < 128 ? 1 : e < 2048 ? 2 : e < 65536 ? 3 : 4;
  for (u = new Uint8Array(i), g = 0, B = 0; g < i; B++)
    e = A.charCodeAt(B), (e & 64512) === 55296 && B + 1 < t && (C = A.charCodeAt(B + 1), (C & 64512) === 56320 && (e = 65536 + (e - 55296 << 10) + (C - 56320), B++)), e < 128 ? u[g++] = e : e < 2048 ? (u[g++] = 192 | e >>> 6, u[g++] = 128 | e & 63) : e < 65536 ? (u[g++] = 224 | e >>> 12, u[g++] = 128 | e >>> 6 & 63, u[g++] = 128 | e & 63) : (u[g++] = 240 | e >>> 18, u[g++] = 128 | e >>> 12 & 63, u[g++] = 128 | e >>> 6 & 63, u[g++] = 128 | e & 63);
  return u;
};
const ZgA = (A, u) => {
  if (u < 65534 && A.subarray && S7)
    return String.fromCharCode.apply(null, A.length === u ? A : A.subarray(0, u));
  let e = "";
  for (let C = 0; C < u; C++)
    e += String.fromCharCode(A[C]);
  return e;
};
var qgA = (A, u) => {
  let e, C;
  const B = u || A.length, g = new Array(B * 2);
  for (C = 0, e = 0; e < B; ) {
    let t = A[e++];
    if (t < 128) {
      g[C++] = t;
      continue;
    }
    let i = NQ[t];
    if (i > 4) {
      g[C++] = 65533, e += i - 1;
      continue;
    }
    for (t &= i === 2 ? 31 : i === 3 ? 15 : 7; i > 1 && e < B; )
      t = t << 6 | A[e++] & 63, i--;
    if (i > 1) {
      g[C++] = 65533;
      continue;
    }
    t < 65536 ? g[C++] = t : (t -= 65536, g[C++] = 55296 | t >> 10 & 1023, g[C++] = 56320 | t & 1023);
  }
  return ZgA(g, C);
}, WgA = (A, u) => {
  u = u || A.length, u > A.length && (u = A.length);
  let e = u - 1;
  for (; e >= 0 && (A[e] & 192) === 128; )
    e--;
  return e < 0 || e === 0 ? u : e + NQ[A[e]] > u ? e : u;
}, RQ = {
  string2buf: JgA,
  buf2string: qgA,
  utf8border: WgA
};
function jgA() {
  this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0;
}
var N7 = jgA;
const R7 = Object.prototype.toString, {
  Z_NO_FLUSH: TgA,
  Z_SYNC_FLUSH: zgA,
  Z_FULL_FLUSH: PgA,
  Z_FINISH: OgA,
  Z_OK: ul,
  Z_STREAM_END: VgA,
  Z_DEFAULT_COMPRESSION: XgA,
  Z_DEFAULT_STRATEGY: _gA,
  Z_DEFLATED: $gA
} = $l;
function C4(A) {
  this.options = e4.assign({
    level: XgA,
    method: $gA,
    chunkSize: 16384,
    windowBits: 15,
    memLevel: 8,
    strategy: _gA
  }, A || {});
  let u = this.options;
  u.raw && u.windowBits > 0 ? u.windowBits = -u.windowBits : u.gzip && u.windowBits > 0 && u.windowBits < 16 && (u.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new N7(), this.strm.avail_out = 0;
  let e = QQ.deflateInit2(
    this.strm,
    u.level,
    u.method,
    u.windowBits,
    u.memLevel,
    u.strategy
  );
  if (e !== ul)
    throw new Error(mE[e]);
  if (u.header && QQ.deflateSetHeader(this.strm, u.header), u.dictionary) {
    let C;
    if (typeof u.dictionary == "string" ? C = RQ.string2buf(u.dictionary) : R7.call(u.dictionary) === "[object ArrayBuffer]" ? C = new Uint8Array(u.dictionary) : C = u.dictionary, e = QQ.deflateSetDictionary(this.strm, C), e !== ul)
      throw new Error(mE[e]);
    this._dict_set = !0;
  }
}
C4.prototype.push = function(A, u) {
  const e = this.strm, C = this.options.chunkSize;
  let B, g;
  if (this.ended)
    return !1;
  for (u === ~~u ? g = u : g = u === !0 ? OgA : TgA, typeof A == "string" ? e.input = RQ.string2buf(A) : R7.call(A) === "[object ArrayBuffer]" ? e.input = new Uint8Array(A) : e.input = A, e.next_in = 0, e.avail_in = e.input.length; ; ) {
    if (e.avail_out === 0 && (e.output = new Uint8Array(C), e.next_out = 0, e.avail_out = C), (g === zgA || g === PgA) && e.avail_out <= 6) {
      this.onData(e.output.subarray(0, e.next_out)), e.avail_out = 0;
      continue;
    }
    if (B = QQ.deflate(e, g), B === VgA)
      return e.next_out > 0 && this.onData(e.output.subarray(0, e.next_out)), B = QQ.deflateEnd(this.strm), this.onEnd(B), this.ended = !0, B === ul;
    if (e.avail_out === 0) {
      this.onData(e.output);
      continue;
    }
    if (g > 0 && e.next_out > 0) {
      this.onData(e.output.subarray(0, e.next_out)), e.avail_out = 0;
      continue;
    }
    if (e.avail_in === 0) break;
  }
  return !0;
};
C4.prototype.onData = function(A) {
  this.chunks.push(A);
};
C4.prototype.onEnd = function(A) {
  A === ul && (this.result = e4.flattenChunks(this.chunks)), this.chunks = [], this.err = A, this.msg = this.strm.msg;
};
function AtA(A, u) {
  const e = new C4(u);
  if (e.push(A, !0), e.err)
    throw e.msg || mE[e.err];
  return e.result;
}
var utA = AtA, etA = {
  deflate: utA
};
const Or = 30, CtA = 12;
var BtA = function(u, e) {
  let C, B, g, t, i, I, o, E, Q, s, l, c, D, h, F, m, p, k, b, f, L, N, M, v;
  const K = u.state;
  C = u.next_in, M = u.input, B = C + (u.avail_in - 5), g = u.next_out, v = u.output, t = g - (e - u.avail_out), i = g + (u.avail_out - 257), I = K.dmax, o = K.wsize, E = K.whave, Q = K.wnext, s = K.window, l = K.hold, c = K.bits, D = K.lencode, h = K.distcode, F = (1 << K.lenbits) - 1, m = (1 << K.distbits) - 1;
  A:
    do {
      c < 15 && (l += M[C++] << c, c += 8, l += M[C++] << c, c += 8), p = D[l & F];
      u:
        for (; ; ) {
          if (k = p >>> 24, l >>>= k, c -= k, k = p >>> 16 & 255, k === 0)
            v[g++] = p & 65535;
          else if (k & 16) {
            b = p & 65535, k &= 15, k && (c < k && (l += M[C++] << c, c += 8), b += l & (1 << k) - 1, l >>>= k, c -= k), c < 15 && (l += M[C++] << c, c += 8, l += M[C++] << c, c += 8), p = h[l & m];
            e:
              for (; ; ) {
                if (k = p >>> 24, l >>>= k, c -= k, k = p >>> 16 & 255, k & 16) {
                  if (f = p & 65535, k &= 15, c < k && (l += M[C++] << c, c += 8, c < k && (l += M[C++] << c, c += 8)), f += l & (1 << k) - 1, f > I) {
                    u.msg = "invalid distance too far back", K.mode = Or;
                    break A;
                  }
                  if (l >>>= k, c -= k, k = g - t, f > k) {
                    if (k = f - k, k > E && K.sane) {
                      u.msg = "invalid distance too far back", K.mode = Or;
                      break A;
                    }
                    if (L = 0, N = s, Q === 0) {
                      if (L += o - k, k < b) {
                        b -= k;
                        do
                          v[g++] = s[L++];
                        while (--k);
                        L = g - f, N = v;
                      }
                    } else if (Q < k) {
                      if (L += o + Q - k, k -= Q, k < b) {
                        b -= k;
                        do
                          v[g++] = s[L++];
                        while (--k);
                        if (L = 0, Q < b) {
                          k = Q, b -= k;
                          do
                            v[g++] = s[L++];
                          while (--k);
                          L = g - f, N = v;
                        }
                      }
                    } else if (L += Q - k, k < b) {
                      b -= k;
                      do
                        v[g++] = s[L++];
                      while (--k);
                      L = g - f, N = v;
                    }
                    for (; b > 2; )
                      v[g++] = N[L++], v[g++] = N[L++], v[g++] = N[L++], b -= 3;
                    b && (v[g++] = N[L++], b > 1 && (v[g++] = N[L++]));
                  } else {
                    L = g - f;
                    do
                      v[g++] = v[L++], v[g++] = v[L++], v[g++] = v[L++], b -= 3;
                    while (b > 2);
                    b && (v[g++] = v[L++], b > 1 && (v[g++] = v[L++]));
                  }
                } else if ((k & 64) === 0) {
                  p = h[(p & 65535) + (l & (1 << k) - 1)];
                  continue e;
                } else {
                  u.msg = "invalid distance code", K.mode = Or;
                  break A;
                }
                break;
              }
          } else if ((k & 64) === 0) {
            p = D[(p & 65535) + (l & (1 << k) - 1)];
            continue u;
          } else if (k & 32) {
            K.mode = CtA;
            break A;
          } else {
            u.msg = "invalid literal/length code", K.mode = Or;
            break A;
          }
          break;
        }
    } while (C < B && g < i);
  b = c >> 3, C -= b, c -= b << 3, l &= (1 << c) - 1, u.next_in = C, u.next_out = g, u.avail_in = C < B ? 5 + (B - C) : 5 - (C - B), u.avail_out = g < i ? 257 + (i - g) : 257 - (g - i), K.hold = l, K.bits = c;
};
const ka = 15, ww = 852, Fw = 592, pw = 0, ad = 1, mw = 2, gtA = new Uint16Array([
  /* Length codes 257..285 base */
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  13,
  15,
  17,
  19,
  23,
  27,
  31,
  35,
  43,
  51,
  59,
  67,
  83,
  99,
  115,
  131,
  163,
  195,
  227,
  258,
  0,
  0
]), ttA = new Uint8Array([
  /* Length codes 257..285 extra */
  16,
  16,
  16,
  16,
  16,
  16,
  16,
  16,
  17,
  17,
  17,
  17,
  18,
  18,
  18,
  18,
  19,
  19,
  19,
  19,
  20,
  20,
  20,
  20,
  21,
  21,
  21,
  21,
  16,
  72,
  78
]), itA = new Uint16Array([
  /* Distance codes 0..29 base */
  1,
  2,
  3,
  4,
  5,
  7,
  9,
  13,
  17,
  25,
  33,
  49,
  65,
  97,
  129,
  193,
  257,
  385,
  513,
  769,
  1025,
  1537,
  2049,
  3073,
  4097,
  6145,
  8193,
  12289,
  16385,
  24577,
  0,
  0
]), EtA = new Uint8Array([
  /* Distance codes 0..29 extra */
  16,
  16,
  16,
  16,
  17,
  17,
  18,
  18,
  19,
  19,
  20,
  20,
  21,
  21,
  22,
  22,
  23,
  23,
  24,
  24,
  25,
  25,
  26,
  26,
  27,
  27,
  28,
  28,
  29,
  29,
  64,
  64
]), atA = (A, u, e, C, B, g, t, i) => {
  const I = i.bits;
  let o = 0, E = 0, Q = 0, s = 0, l = 0, c = 0, D = 0, h = 0, F = 0, m = 0, p, k, b, f, L, N = null, M = 0, v;
  const K = new Uint16Array(ka + 1), q = new Uint16Array(ka + 1);
  let j = null, uA = 0, O, $, X;
  for (o = 0; o <= ka; o++)
    K[o] = 0;
  for (E = 0; E < C; E++)
    K[u[e + E]]++;
  for (l = I, s = ka; s >= 1 && K[s] === 0; s--)
    ;
  if (l > s && (l = s), s === 0)
    return B[g++] = 1 << 24 | 64 << 16 | 0, B[g++] = 1 << 24 | 64 << 16 | 0, i.bits = 1, 0;
  for (Q = 1; Q < s && K[Q] === 0; Q++)
    ;
  for (l < Q && (l = Q), h = 1, o = 1; o <= ka; o++)
    if (h <<= 1, h -= K[o], h < 0)
      return -1;
  if (h > 0 && (A === pw || s !== 1))
    return -1;
  for (q[1] = 0, o = 1; o < ka; o++)
    q[o + 1] = q[o] + K[o];
  for (E = 0; E < C; E++)
    u[e + E] !== 0 && (t[q[u[e + E]]++] = E);
  if (A === pw ? (N = j = t, v = 19) : A === ad ? (N = gtA, M -= 257, j = ttA, uA -= 257, v = 256) : (N = itA, j = EtA, v = -1), m = 0, E = 0, o = Q, L = g, c = l, D = 0, b = -1, F = 1 << l, f = F - 1, A === ad && F > ww || A === mw && F > Fw)
    return 1;
  for (; ; ) {
    O = o - D, t[E] < v ? ($ = 0, X = t[E]) : t[E] > v ? ($ = j[uA + t[E]], X = N[M + t[E]]) : ($ = 96, X = 0), p = 1 << o - D, k = 1 << c, Q = k;
    do
      k -= p, B[L + (m >> D) + k] = O << 24 | $ << 16 | X | 0;
    while (k !== 0);
    for (p = 1 << o - 1; m & p; )
      p >>= 1;
    if (p !== 0 ? (m &= p - 1, m += p) : m = 0, E++, --K[o] === 0) {
      if (o === s)
        break;
      o = u[e + t[E]];
    }
    if (o > l && (m & f) !== b) {
      for (D === 0 && (D = l), L += Q, c = o - D, h = 1 << c; c + D < s && (h -= K[c + D], !(h <= 0)); )
        c++, h <<= 1;
      if (F += 1 << c, A === ad && F > ww || A === mw && F > Fw)
        return 1;
      b = m & f, B[b] = l << 24 | c << 16 | L - g | 0;
    }
  }
  return m !== 0 && (B[L + m] = o - D << 24 | 64 << 16 | 0), i.bits = l, 0;
};
var nQ = atA;
const ItA = 0, M7 = 1, Y7 = 2, {
  Z_FINISH: kw,
  Z_BLOCK: otA,
  Z_TREES: Vr,
  Z_OK: bE,
  Z_STREAM_END: QtA,
  Z_NEED_DICT: ntA,
  Z_STREAM_ERROR: SC,
  Z_DATA_ERROR: v7,
  Z_MEM_ERROR: H7,
  Z_BUF_ERROR: rtA,
  Z_DEFLATED: yw
} = $l, K7 = 1, bw = 2, Uw = 3, Gw = 4, fw = 5, Lw = 6, xw = 7, Sw = 8, Nw = 9, Rw = 10, el = 11, yg = 12, Id = 13, Mw = 14, od = 15, Yw = 16, vw = 17, Hw = 18, Kw = 19, Xr = 20, _r = 21, Jw = 22, Zw = 23, qw = 24, Ww = 25, jw = 26, Qd = 27, Tw = 28, zw = 29, C0 = 30, J7 = 31, stA = 32, ltA = 852, ctA = 592, dtA = 15, DtA = dtA, Pw = (A) => (A >>> 24 & 255) + (A >>> 8 & 65280) + ((A & 65280) << 8) + ((A & 255) << 24);
function htA() {
  this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0;
}
const Z7 = (A) => {
  if (!A || !A.state)
    return SC;
  const u = A.state;
  return A.total_in = A.total_out = u.total = 0, A.msg = "", u.wrap && (A.adler = u.wrap & 1), u.mode = K7, u.last = 0, u.havedict = 0, u.dmax = 32768, u.head = null, u.hold = 0, u.bits = 0, u.lencode = u.lendyn = new Int32Array(ltA), u.distcode = u.distdyn = new Int32Array(ctA), u.sane = 1, u.back = -1, bE;
}, q7 = (A) => {
  if (!A || !A.state)
    return SC;
  const u = A.state;
  return u.wsize = 0, u.whave = 0, u.wnext = 0, Z7(A);
}, W7 = (A, u) => {
  let e;
  if (!A || !A.state)
    return SC;
  const C = A.state;
  return u < 0 ? (e = 0, u = -u) : (e = (u >> 4) + 1, u < 48 && (u &= 15)), u && (u < 8 || u > 15) ? SC : (C.window !== null && C.wbits !== u && (C.window = null), C.wrap = e, C.wbits = u, q7(A));
}, j7 = (A, u) => {
  if (!A)
    return SC;
  const e = new htA();
  A.state = e, e.window = null;
  const C = W7(A, u);
  return C !== bE && (A.state = null), C;
}, wtA = (A) => j7(A, DtA);
let Ow = !0, nd, rd;
const FtA = (A) => {
  if (Ow) {
    nd = new Int32Array(512), rd = new Int32Array(32);
    let u = 0;
    for (; u < 144; )
      A.lens[u++] = 8;
    for (; u < 256; )
      A.lens[u++] = 9;
    for (; u < 280; )
      A.lens[u++] = 7;
    for (; u < 288; )
      A.lens[u++] = 8;
    for (nQ(M7, A.lens, 0, 288, nd, 0, A.work, { bits: 9 }), u = 0; u < 32; )
      A.lens[u++] = 5;
    nQ(Y7, A.lens, 0, 32, rd, 0, A.work, { bits: 5 }), Ow = !1;
  }
  A.lencode = nd, A.lenbits = 9, A.distcode = rd, A.distbits = 5;
}, T7 = (A, u, e, C) => {
  let B;
  const g = A.state;
  return g.window === null && (g.wsize = 1 << g.wbits, g.wnext = 0, g.whave = 0, g.window = new Uint8Array(g.wsize)), C >= g.wsize ? (g.window.set(u.subarray(e - g.wsize, e), 0), g.wnext = 0, g.whave = g.wsize) : (B = g.wsize - g.wnext, B > C && (B = C), g.window.set(u.subarray(e - C, e - C + B), g.wnext), C -= B, C ? (g.window.set(u.subarray(e - C, e), 0), g.wnext = C, g.whave = g.wsize) : (g.wnext += B, g.wnext === g.wsize && (g.wnext = 0), g.whave < g.wsize && (g.whave += B))), 0;
}, ptA = (A, u) => {
  let e, C, B, g, t, i, I, o, E, Q, s, l, c, D, h = 0, F, m, p, k, b, f, L, N;
  const M = new Uint8Array(4);
  let v, K;
  const q = (
    /* permutation of code lengths */
    new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15])
  );
  if (!A || !A.state || !A.output || !A.input && A.avail_in !== 0)
    return SC;
  e = A.state, e.mode === yg && (e.mode = Id), t = A.next_out, B = A.output, I = A.avail_out, g = A.next_in, C = A.input, i = A.avail_in, o = e.hold, E = e.bits, Q = i, s = I, N = bE;
  A:
    for (; ; )
      switch (e.mode) {
        case K7:
          if (e.wrap === 0) {
            e.mode = Id;
            break;
          }
          for (; E < 16; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          if (e.wrap & 2 && o === 35615) {
            e.check = 0, M[0] = o & 255, M[1] = o >>> 8 & 255, e.check = z0(e.check, M, 2, 0), o = 0, E = 0, e.mode = bw;
            break;
          }
          if (e.flags = 0, e.head && (e.head.done = !1), !(e.wrap & 1) || /* check if zlib header allowed */
          (((o & 255) << 8) + (o >> 8)) % 31) {
            A.msg = "incorrect header check", e.mode = C0;
            break;
          }
          if ((o & 15) !== yw) {
            A.msg = "unknown compression method", e.mode = C0;
            break;
          }
          if (o >>>= 4, E -= 4, L = (o & 15) + 8, e.wbits === 0)
            e.wbits = L;
          else if (L > e.wbits) {
            A.msg = "invalid window size", e.mode = C0;
            break;
          }
          e.dmax = 1 << e.wbits, A.adler = e.check = 1, e.mode = o & 512 ? Rw : yg, o = 0, E = 0;
          break;
        case bw:
          for (; E < 16; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          if (e.flags = o, (e.flags & 255) !== yw) {
            A.msg = "unknown compression method", e.mode = C0;
            break;
          }
          if (e.flags & 57344) {
            A.msg = "unknown header flags set", e.mode = C0;
            break;
          }
          e.head && (e.head.text = o >> 8 & 1), e.flags & 512 && (M[0] = o & 255, M[1] = o >>> 8 & 255, e.check = z0(e.check, M, 2, 0)), o = 0, E = 0, e.mode = Uw;
        /* falls through */
        case Uw:
          for (; E < 32; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          e.head && (e.head.time = o), e.flags & 512 && (M[0] = o & 255, M[1] = o >>> 8 & 255, M[2] = o >>> 16 & 255, M[3] = o >>> 24 & 255, e.check = z0(e.check, M, 4, 0)), o = 0, E = 0, e.mode = Gw;
        /* falls through */
        case Gw:
          for (; E < 16; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          e.head && (e.head.xflags = o & 255, e.head.os = o >> 8), e.flags & 512 && (M[0] = o & 255, M[1] = o >>> 8 & 255, e.check = z0(e.check, M, 2, 0)), o = 0, E = 0, e.mode = fw;
        /* falls through */
        case fw:
          if (e.flags & 1024) {
            for (; E < 16; ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            e.length = o, e.head && (e.head.extra_len = o), e.flags & 512 && (M[0] = o & 255, M[1] = o >>> 8 & 255, e.check = z0(e.check, M, 2, 0)), o = 0, E = 0;
          } else e.head && (e.head.extra = null);
          e.mode = Lw;
        /* falls through */
        case Lw:
          if (e.flags & 1024 && (l = e.length, l > i && (l = i), l && (e.head && (L = e.head.extra_len - e.length, e.head.extra || (e.head.extra = new Uint8Array(e.head.extra_len)), e.head.extra.set(
            C.subarray(
              g,
              // extra field is limited to 65536 bytes
              // - no need for additional size check
              g + l
            ),
            /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
            L
          )), e.flags & 512 && (e.check = z0(e.check, C, l, g)), i -= l, g += l, e.length -= l), e.length))
            break A;
          e.length = 0, e.mode = xw;
        /* falls through */
        case xw:
          if (e.flags & 2048) {
            if (i === 0)
              break A;
            l = 0;
            do
              L = C[g + l++], e.head && L && e.length < 65536 && (e.head.name += String.fromCharCode(L));
            while (L && l < i);
            if (e.flags & 512 && (e.check = z0(e.check, C, l, g)), i -= l, g += l, L)
              break A;
          } else e.head && (e.head.name = null);
          e.length = 0, e.mode = Sw;
        /* falls through */
        case Sw:
          if (e.flags & 4096) {
            if (i === 0)
              break A;
            l = 0;
            do
              L = C[g + l++], e.head && L && e.length < 65536 && (e.head.comment += String.fromCharCode(L));
            while (L && l < i);
            if (e.flags & 512 && (e.check = z0(e.check, C, l, g)), i -= l, g += l, L)
              break A;
          } else e.head && (e.head.comment = null);
          e.mode = Nw;
        /* falls through */
        case Nw:
          if (e.flags & 512) {
            for (; E < 16; ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            if (o !== (e.check & 65535)) {
              A.msg = "header crc mismatch", e.mode = C0;
              break;
            }
            o = 0, E = 0;
          }
          e.head && (e.head.hcrc = e.flags >> 9 & 1, e.head.done = !0), A.adler = e.check = 0, e.mode = yg;
          break;
        case Rw:
          for (; E < 32; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          A.adler = e.check = Pw(o), o = 0, E = 0, e.mode = el;
        /* falls through */
        case el:
          if (e.havedict === 0)
            return A.next_out = t, A.avail_out = I, A.next_in = g, A.avail_in = i, e.hold = o, e.bits = E, ntA;
          A.adler = e.check = 1, e.mode = yg;
        /* falls through */
        case yg:
          if (u === otA || u === Vr)
            break A;
        /* falls through */
        case Id:
          if (e.last) {
            o >>>= E & 7, E -= E & 7, e.mode = Qd;
            break;
          }
          for (; E < 3; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          switch (e.last = o & 1, o >>>= 1, E -= 1, o & 3) {
            case 0:
              e.mode = Mw;
              break;
            case 1:
              if (FtA(e), e.mode = Xr, u === Vr) {
                o >>>= 2, E -= 2;
                break A;
              }
              break;
            case 2:
              e.mode = vw;
              break;
            case 3:
              A.msg = "invalid block type", e.mode = C0;
          }
          o >>>= 2, E -= 2;
          break;
        case Mw:
          for (o >>>= E & 7, E -= E & 7; E < 32; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          if ((o & 65535) !== (o >>> 16 ^ 65535)) {
            A.msg = "invalid stored block lengths", e.mode = C0;
            break;
          }
          if (e.length = o & 65535, o = 0, E = 0, e.mode = od, u === Vr)
            break A;
        /* falls through */
        case od:
          e.mode = Yw;
        /* falls through */
        case Yw:
          if (l = e.length, l) {
            if (l > i && (l = i), l > I && (l = I), l === 0)
              break A;
            B.set(C.subarray(g, g + l), t), i -= l, g += l, I -= l, t += l, e.length -= l;
            break;
          }
          e.mode = yg;
          break;
        case vw:
          for (; E < 14; ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          if (e.nlen = (o & 31) + 257, o >>>= 5, E -= 5, e.ndist = (o & 31) + 1, o >>>= 5, E -= 5, e.ncode = (o & 15) + 4, o >>>= 4, E -= 4, e.nlen > 286 || e.ndist > 30) {
            A.msg = "too many length or distance symbols", e.mode = C0;
            break;
          }
          e.have = 0, e.mode = Hw;
        /* falls through */
        case Hw:
          for (; e.have < e.ncode; ) {
            for (; E < 3; ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            e.lens[q[e.have++]] = o & 7, o >>>= 3, E -= 3;
          }
          for (; e.have < 19; )
            e.lens[q[e.have++]] = 0;
          if (e.lencode = e.lendyn, e.lenbits = 7, v = { bits: e.lenbits }, N = nQ(ItA, e.lens, 0, 19, e.lencode, 0, e.work, v), e.lenbits = v.bits, N) {
            A.msg = "invalid code lengths set", e.mode = C0;
            break;
          }
          e.have = 0, e.mode = Kw;
        /* falls through */
        case Kw:
          for (; e.have < e.nlen + e.ndist; ) {
            for (; h = e.lencode[o & (1 << e.lenbits) - 1], F = h >>> 24, m = h >>> 16 & 255, p = h & 65535, !(F <= E); ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            if (p < 16)
              o >>>= F, E -= F, e.lens[e.have++] = p;
            else {
              if (p === 16) {
                for (K = F + 2; E < K; ) {
                  if (i === 0)
                    break A;
                  i--, o += C[g++] << E, E += 8;
                }
                if (o >>>= F, E -= F, e.have === 0) {
                  A.msg = "invalid bit length repeat", e.mode = C0;
                  break;
                }
                L = e.lens[e.have - 1], l = 3 + (o & 3), o >>>= 2, E -= 2;
              } else if (p === 17) {
                for (K = F + 3; E < K; ) {
                  if (i === 0)
                    break A;
                  i--, o += C[g++] << E, E += 8;
                }
                o >>>= F, E -= F, L = 0, l = 3 + (o & 7), o >>>= 3, E -= 3;
              } else {
                for (K = F + 7; E < K; ) {
                  if (i === 0)
                    break A;
                  i--, o += C[g++] << E, E += 8;
                }
                o >>>= F, E -= F, L = 0, l = 11 + (o & 127), o >>>= 7, E -= 7;
              }
              if (e.have + l > e.nlen + e.ndist) {
                A.msg = "invalid bit length repeat", e.mode = C0;
                break;
              }
              for (; l--; )
                e.lens[e.have++] = L;
            }
          }
          if (e.mode === C0)
            break;
          if (e.lens[256] === 0) {
            A.msg = "invalid code -- missing end-of-block", e.mode = C0;
            break;
          }
          if (e.lenbits = 9, v = { bits: e.lenbits }, N = nQ(M7, e.lens, 0, e.nlen, e.lencode, 0, e.work, v), e.lenbits = v.bits, N) {
            A.msg = "invalid literal/lengths set", e.mode = C0;
            break;
          }
          if (e.distbits = 6, e.distcode = e.distdyn, v = { bits: e.distbits }, N = nQ(Y7, e.lens, e.nlen, e.ndist, e.distcode, 0, e.work, v), e.distbits = v.bits, N) {
            A.msg = "invalid distances set", e.mode = C0;
            break;
          }
          if (e.mode = Xr, u === Vr)
            break A;
        /* falls through */
        case Xr:
          e.mode = _r;
        /* falls through */
        case _r:
          if (i >= 6 && I >= 258) {
            A.next_out = t, A.avail_out = I, A.next_in = g, A.avail_in = i, e.hold = o, e.bits = E, BtA(A, s), t = A.next_out, B = A.output, I = A.avail_out, g = A.next_in, C = A.input, i = A.avail_in, o = e.hold, E = e.bits, e.mode === yg && (e.back = -1);
            break;
          }
          for (e.back = 0; h = e.lencode[o & (1 << e.lenbits) - 1], F = h >>> 24, m = h >>> 16 & 255, p = h & 65535, !(F <= E); ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          if (m && (m & 240) === 0) {
            for (k = F, b = m, f = p; h = e.lencode[f + ((o & (1 << k + b) - 1) >> k)], F = h >>> 24, m = h >>> 16 & 255, p = h & 65535, !(k + F <= E); ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            o >>>= k, E -= k, e.back += k;
          }
          if (o >>>= F, E -= F, e.back += F, e.length = p, m === 0) {
            e.mode = jw;
            break;
          }
          if (m & 32) {
            e.back = -1, e.mode = yg;
            break;
          }
          if (m & 64) {
            A.msg = "invalid literal/length code", e.mode = C0;
            break;
          }
          e.extra = m & 15, e.mode = Jw;
        /* falls through */
        case Jw:
          if (e.extra) {
            for (K = e.extra; E < K; ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            e.length += o & (1 << e.extra) - 1, o >>>= e.extra, E -= e.extra, e.back += e.extra;
          }
          e.was = e.length, e.mode = Zw;
        /* falls through */
        case Zw:
          for (; h = e.distcode[o & (1 << e.distbits) - 1], F = h >>> 24, m = h >>> 16 & 255, p = h & 65535, !(F <= E); ) {
            if (i === 0)
              break A;
            i--, o += C[g++] << E, E += 8;
          }
          if ((m & 240) === 0) {
            for (k = F, b = m, f = p; h = e.distcode[f + ((o & (1 << k + b) - 1) >> k)], F = h >>> 24, m = h >>> 16 & 255, p = h & 65535, !(k + F <= E); ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            o >>>= k, E -= k, e.back += k;
          }
          if (o >>>= F, E -= F, e.back += F, m & 64) {
            A.msg = "invalid distance code", e.mode = C0;
            break;
          }
          e.offset = p, e.extra = m & 15, e.mode = qw;
        /* falls through */
        case qw:
          if (e.extra) {
            for (K = e.extra; E < K; ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            e.offset += o & (1 << e.extra) - 1, o >>>= e.extra, E -= e.extra, e.back += e.extra;
          }
          if (e.offset > e.dmax) {
            A.msg = "invalid distance too far back", e.mode = C0;
            break;
          }
          e.mode = Ww;
        /* falls through */
        case Ww:
          if (I === 0)
            break A;
          if (l = s - I, e.offset > l) {
            if (l = e.offset - l, l > e.whave && e.sane) {
              A.msg = "invalid distance too far back", e.mode = C0;
              break;
            }
            l > e.wnext ? (l -= e.wnext, c = e.wsize - l) : c = e.wnext - l, l > e.length && (l = e.length), D = e.window;
          } else
            D = B, c = t - e.offset, l = e.length;
          l > I && (l = I), I -= l, e.length -= l;
          do
            B[t++] = D[c++];
          while (--l);
          e.length === 0 && (e.mode = _r);
          break;
        case jw:
          if (I === 0)
            break A;
          B[t++] = e.length, I--, e.mode = _r;
          break;
        case Qd:
          if (e.wrap) {
            for (; E < 32; ) {
              if (i === 0)
                break A;
              i--, o |= C[g++] << E, E += 8;
            }
            if (s -= I, A.total_out += s, e.total += s, s && (A.adler = e.check = /*UPDATE(state.check, put - _out, _out);*/
            e.flags ? z0(e.check, B, s, t - s) : SQ(e.check, B, s, t - s)), s = I, (e.flags ? o : Pw(o)) !== e.check) {
              A.msg = "incorrect data check", e.mode = C0;
              break;
            }
            o = 0, E = 0;
          }
          e.mode = Tw;
        /* falls through */
        case Tw:
          if (e.wrap && e.flags) {
            for (; E < 32; ) {
              if (i === 0)
                break A;
              i--, o += C[g++] << E, E += 8;
            }
            if (o !== (e.total & 4294967295)) {
              A.msg = "incorrect length check", e.mode = C0;
              break;
            }
            o = 0, E = 0;
          }
          e.mode = zw;
        /* falls through */
        case zw:
          N = QtA;
          break A;
        case C0:
          N = v7;
          break A;
        case J7:
          return H7;
        case stA:
        /* falls through */
        default:
          return SC;
      }
  return A.next_out = t, A.avail_out = I, A.next_in = g, A.avail_in = i, e.hold = o, e.bits = E, (e.wsize || s !== A.avail_out && e.mode < C0 && (e.mode < Qd || u !== kw)) && T7(A, A.output, A.next_out, s - A.avail_out), Q -= A.avail_in, s -= A.avail_out, A.total_in += Q, A.total_out += s, e.total += s, e.wrap && s && (A.adler = e.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
  e.flags ? z0(e.check, B, s, A.next_out - s) : SQ(e.check, B, s, A.next_out - s)), A.data_type = e.bits + (e.last ? 64 : 0) + (e.mode === yg ? 128 : 0) + (e.mode === Xr || e.mode === od ? 256 : 0), (Q === 0 && s === 0 || u === kw) && N === bE && (N = rtA), N;
}, mtA = (A) => {
  if (!A || !A.state)
    return SC;
  let u = A.state;
  return u.window && (u.window = null), A.state = null, bE;
}, ktA = (A, u) => {
  if (!A || !A.state)
    return SC;
  const e = A.state;
  return (e.wrap & 2) === 0 ? SC : (e.head = u, u.done = !1, bE);
}, ytA = (A, u) => {
  const e = u.length;
  let C, B, g;
  return !A || !A.state || (C = A.state, C.wrap !== 0 && C.mode !== el) ? SC : C.mode === el && (B = 1, B = SQ(B, u, e, 0), B !== C.check) ? v7 : (g = T7(A, u, e, e), g ? (C.mode = J7, H7) : (C.havedict = 1, bE));
};
var btA = q7, UtA = W7, GtA = Z7, ftA = wtA, LtA = j7, xtA = ptA, StA = mtA, NtA = ktA, RtA = ytA, MtA = "pako inflate (from Nodeca project)", Sg = {
  inflateReset: btA,
  inflateReset2: UtA,
  inflateResetKeep: GtA,
  inflateInit: ftA,
  inflateInit2: LtA,
  inflate: xtA,
  inflateEnd: StA,
  inflateGetHeader: NtA,
  inflateSetDictionary: RtA,
  inflateInfo: MtA
};
function YtA() {
  this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1;
}
var vtA = YtA;
const z7 = Object.prototype.toString, {
  Z_NO_FLUSH: HtA,
  Z_FINISH: KtA,
  Z_OK: MQ,
  Z_STREAM_END: sd,
  Z_NEED_DICT: ld,
  Z_STREAM_ERROR: JtA,
  Z_DATA_ERROR: Vw,
  Z_MEM_ERROR: ZtA
} = $l;
function B4(A) {
  this.options = e4.assign({
    chunkSize: 1024 * 64,
    windowBits: 15,
    to: ""
  }, A || {});
  const u = this.options;
  u.raw && u.windowBits >= 0 && u.windowBits < 16 && (u.windowBits = -u.windowBits, u.windowBits === 0 && (u.windowBits = -15)), u.windowBits >= 0 && u.windowBits < 16 && !(A && A.windowBits) && (u.windowBits += 32), u.windowBits > 15 && u.windowBits < 48 && (u.windowBits & 15) === 0 && (u.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new N7(), this.strm.avail_out = 0;
  let e = Sg.inflateInit2(
    this.strm,
    u.windowBits
  );
  if (e !== MQ)
    throw new Error(mE[e]);
  if (this.header = new vtA(), Sg.inflateGetHeader(this.strm, this.header), u.dictionary && (typeof u.dictionary == "string" ? u.dictionary = RQ.string2buf(u.dictionary) : z7.call(u.dictionary) === "[object ArrayBuffer]" && (u.dictionary = new Uint8Array(u.dictionary)), u.raw && (e = Sg.inflateSetDictionary(this.strm, u.dictionary), e !== MQ)))
    throw new Error(mE[e]);
}
B4.prototype.push = function(A, u) {
  const e = this.strm, C = this.options.chunkSize, B = this.options.dictionary;
  let g, t, i;
  if (this.ended) return !1;
  for (u === ~~u ? t = u : t = u === !0 ? KtA : HtA, z7.call(A) === "[object ArrayBuffer]" ? e.input = new Uint8Array(A) : e.input = A, e.next_in = 0, e.avail_in = e.input.length; ; ) {
    for (e.avail_out === 0 && (e.output = new Uint8Array(C), e.next_out = 0, e.avail_out = C), g = Sg.inflate(e, t), g === ld && B && (g = Sg.inflateSetDictionary(e, B), g === MQ ? g = Sg.inflate(e, t) : g === Vw && (g = ld)); e.avail_in > 0 && g === sd && e.state.wrap > 0 && A[e.next_in] !== 0; )
      Sg.inflateReset(e), g = Sg.inflate(e, t);
    switch (g) {
      case JtA:
      case Vw:
      case ld:
      case ZtA:
        return this.onEnd(g), this.ended = !0, !1;
    }
    if (i = e.avail_out, e.next_out && (e.avail_out === 0 || g === sd))
      if (this.options.to === "string") {
        let I = RQ.utf8border(e.output, e.next_out), o = e.next_out - I, E = RQ.buf2string(e.output, I);
        e.next_out = o, e.avail_out = C - o, o && e.output.set(e.output.subarray(I, I + o), 0), this.onData(E);
      } else
        this.onData(e.output.length === e.next_out ? e.output : e.output.subarray(0, e.next_out));
    if (!(g === MQ && i === 0)) {
      if (g === sd)
        return g = Sg.inflateEnd(this.strm), this.onEnd(g), this.ended = !0, !0;
      if (e.avail_in === 0) break;
    }
  }
  return !0;
};
B4.prototype.onData = function(A) {
  this.chunks.push(A);
};
B4.prototype.onEnd = function(A) {
  A === MQ && (this.options.to === "string" ? this.result = this.chunks.join("") : this.result = e4.flattenChunks(this.chunks)), this.chunks = [], this.err = A, this.msg = this.strm.msg;
};
function qtA(A, u) {
  const e = new B4(u);
  if (e.push(A), e.err) throw e.msg || mE[e.err];
  return e.result;
}
var WtA = qtA, jtA = {
  inflate: WtA
};
const { deflate: TtA } = etA, { inflate: ztA } = jtA;
var PtA = TtA, OtA = ztA;
const VtA = "#ffffff", XtA = "#000000", _tA = ["#f8f9fa", "#f1f3f5", "#e9ecef", "#dee2e6", "#ced4da", "#adb5bd", "#868e96", "#495057", "#343a40", "#212529"], $tA = ["#fff5f5", "#ffe3e3", "#ffc9c9", "#ffa8a8", "#ff8787", "#ff6b6b", "#fa5252", "#f03e3e", "#e03131", "#c92a2a"], AiA = ["#fff0f6", "#ffdeeb", "#fcc2d7", "#faa2c1", "#f783ac", "#f06595", "#e64980", "#d6336c", "#c2255c", "#a61e4d"], uiA = ["#f8f0fc", "#f3d9fa", "#eebefa", "#e599f7", "#da77f2", "#cc5de8", "#be4bdb", "#ae3ec9", "#9c36b5", "#862e9c"], eiA = ["#f3f0ff", "#e5dbff", "#d0bfff", "#b197fc", "#9775fa", "#845ef7", "#7950f2", "#7048e8", "#6741d9", "#5f3dc4"], CiA = ["#edf2ff", "#dbe4ff", "#bac8ff", "#91a7ff", "#748ffc", "#5c7cfa", "#4c6ef5", "#4263eb", "#3b5bdb", "#364fc7"], BiA = ["#e7f5ff", "#d0ebff", "#a5d8ff", "#74c0fc", "#4dabf7", "#339af0", "#228be6", "#1c7ed6", "#1971c2", "#1864ab"], giA = ["#e3fafc", "#c5f6fa", "#99e9f2", "#66d9e8", "#3bc9db", "#22b8cf", "#15aabf", "#1098ad", "#0c8599", "#0b7285"], tiA = ["#e6fcf5", "#c3fae8", "#96f2d7", "#63e6be", "#38d9a9", "#20c997", "#12b886", "#0ca678", "#099268", "#087f5b"], iiA = ["#ebfbee", "#d3f9d8", "#b2f2bb", "#8ce99a", "#69db7c", "#51cf66", "#40c057", "#37b24d", "#2f9e44", "#2b8a3e"], EiA = ["#f4fce3", "#e9fac8", "#d8f5a2", "#c0eb75", "#a9e34b", "#94d82d", "#82c91e", "#74b816", "#66a80f", "#5c940d"], aiA = ["#fff9db", "#fff3bf", "#ffec99", "#ffe066", "#ffd43b", "#fcc419", "#fab005", "#f59f00", "#f08c00", "#e67700"], IiA = ["#fff4e6", "#ffe8cc", "#ffd8a8", "#ffc078", "#ffa94d", "#ff922b", "#fd7e14", "#f76707", "#e8590c", "#d9480f"], X0 = {
  white: VtA,
  black: XtA,
  gray: _tA,
  red: $tA,
  pink: AiA,
  grape: uiA,
  violet: eiA,
  indigo: CiA,
  blue: BiA,
  cyan: giA,
  teal: tiA,
  green: iiA,
  lime: EiA,
  yellow: aiA,
  orange: IiA
};
let Cl = (A = 21) => crypto.getRandomValues(new Uint8Array(A)).reduce((u, e) => (e &= 63, e < 36 ? u += e.toString(36) : e < 62 ? u += (e - 26).toString(36).toUpperCase() : e > 62 ? u += "-" : u += "_", u), "");
var cd, Xw;
function oiA() {
  if (Xw) return cd;
  Xw = 1;
  var A = "Expected a function", u = NaN, e = "[object Symbol]", C = /^\s+|\s+$/g, B = /^[-+]0x[0-9a-f]+$/i, g = /^0b[01]+$/i, t = /^0o[0-7]+$/i, i = parseInt, I = typeof zt == "object" && zt && zt.Object === Object && zt, o = typeof self == "object" && self && self.Object === Object && self, E = I || o || Function("return this")(), Q = Object.prototype, s = Q.toString, l = Math.max, c = Math.min, D = function() {
    return E.Date.now();
  };
  function h(f, L, N) {
    var M, v, K, q, j, uA, O = 0, $ = !1, X = !1, P = !0;
    if (typeof f != "function")
      throw new TypeError(A);
    L = b(L) || 0, m(N) && ($ = !!N.leading, X = "maxWait" in N, K = X ? l(b(N.maxWait) || 0, L) : K, P = "trailing" in N ? !!N.trailing : P);
    function _(FA) {
      var TA = M, WA = v;
      return M = v = void 0, O = FA, q = f.apply(WA, TA), q;
    }
    function CA(FA) {
      return O = FA, j = setTimeout(GA, L), $ ? _(FA) : q;
    }
    function T(FA) {
      var TA = FA - uA, WA = FA - O, ru = L - TA;
      return X ? c(ru, K - WA) : ru;
    }
    function gA(FA) {
      var TA = FA - uA, WA = FA - O;
      return uA === void 0 || TA >= L || TA < 0 || X && WA >= K;
    }
    function GA() {
      var FA = D();
      if (gA(FA))
        return fA(FA);
      j = setTimeout(GA, T(FA));
    }
    function fA(FA) {
      return j = void 0, P && M ? _(FA) : (M = v = void 0, q);
    }
    function qA() {
      j !== void 0 && clearTimeout(j), O = 0, M = uA = v = j = void 0;
    }
    function JA() {
      return j === void 0 ? q : fA(D());
    }
    function mA() {
      var FA = D(), TA = gA(FA);
      if (M = arguments, v = this, uA = FA, TA) {
        if (j === void 0)
          return CA(uA);
        if (X)
          return j = setTimeout(GA, L), _(uA);
      }
      return j === void 0 && (j = setTimeout(GA, L)), q;
    }
    return mA.cancel = qA, mA.flush = JA, mA;
  }
  function F(f, L, N) {
    var M = !0, v = !0;
    if (typeof f != "function")
      throw new TypeError(A);
    return m(N) && (M = "leading" in N ? !!N.leading : M, v = "trailing" in N ? !!N.trailing : v), h(f, L, {
      leading: M,
      maxWait: L,
      trailing: v
    });
  }
  function m(f) {
    var L = typeof f;
    return !!f && (L == "object" || L == "function");
  }
  function p(f) {
    return !!f && typeof f == "object";
  }
  function k(f) {
    return typeof f == "symbol" || p(f) && s.call(f) == e;
  }
  function b(f) {
    if (typeof f == "number")
      return f;
    if (k(f))
      return u;
    if (m(f)) {
      var L = typeof f.valueOf == "function" ? f.valueOf() : f;
      f = m(L) ? L + "" : L;
    }
    if (typeof f != "string")
      return f === 0 ? f : +f;
    f = f.replace(C, "");
    var N = g.test(f);
    return N || t.test(f) ? i(f.slice(2), N ? 2 : 8) : B.test(f) ? u : +f;
  }
  return cd = F, cd;
}
var QiA = oiA();
const In = /* @__PURE__ */ gg(QiA);
var ys = { exports: {} }, niA = ys.exports, _w;
function riA() {
  return _w || (_w = 1, (function(A, u) {
    (function(e, C) {
      A.exports = C();
    })(niA, function() {
      var e = function() {
        this._listeners = {};
      };
      e.prototype.addEventListener = function(o, E) {
        this._listeners[o] = this._listeners[o] || [], this._listeners[o].indexOf(E) < 0 && this._listeners[o].push(E);
      }, e.prototype.removeEventListener = function(o, E) {
        if (this._listeners[o]) {
          var Q = this._listeners[o].indexOf(E);
          Q >= 0 && this._listeners[o].splice(Q, 1);
        }
      }, e.prototype.dispatchEvent = function(o) {
        if (this._listeners[o.type] && this._listeners[o.type].length)
          for (var E = this._listeners[o.type].slice(), Q = 0, s = E.length; Q < s; ++Q)
            E[Q].call(this, o);
      };
      var C = function(o) {
        return typeof o.constructor == "function" && o.constructor.name === "GeneratorFunction";
      }, B = function(o) {
        return {
          next: function() {
            var E = o();
            return E ? { value: E } : { done: !0 };
          }
        };
      }, g = function(o) {
        var E = !1;
        return {
          next: function() {
            return E ? { done: !0 } : (E = !0, { value: o });
          }
        };
      }, t = function(o, E) {
        var Q = typeof o;
        if (Q === "object") {
          if (typeof o.next == "function")
            return o;
          if (typeof o.then == "function")
            return g(o);
        }
        return Q === "function" ? C(o) ? o() : B(o) : g(E.resolve(o));
      }, i = function(o, E, Q) {
        this.target = o, this.type = E, this.data = Q;
      }, I = function(o, E, Q) {
        if (e.call(this), typeof E != "number" || Math.floor(E) !== E || E < 1)
          throw new Error("Invalid concurrency");
        this._concurrency = E, this._options = Q || {}, this._options.promise = this._options.promise || Promise, this._iterator = t(o, this._options.promise), this._done = !1, this._size = 0, this._promise = null, this._callbacks = null;
      };
      return I.prototype = new e(), I.prototype.constructor = I, I.prototype.concurrency = function(o) {
        return typeof o < "u" && (this._concurrency = o, this.active() && this._proceed()), this._concurrency;
      }, I.prototype.size = function() {
        return this._size;
      }, I.prototype.active = function() {
        return !!this._promise;
      }, I.prototype.promise = function() {
        return this._promise;
      }, I.prototype.start = function() {
        var o = this, E = this._options.promise;
        return this._promise = new E(function(Q, s) {
          o._callbacks = {
            reject: s,
            resolve: Q
          }, o._proceed();
        }), this._promise;
      }, I.prototype._fireEvent = function(o, E) {
        this.dispatchEvent(new i(this, o, E));
      }, I.prototype._settle = function(o) {
        o ? this._callbacks.reject(o) : this._callbacks.resolve(), this._promise = null, this._callbacks = null;
      }, I.prototype._onPooledPromiseFulfilled = function(o, E) {
        this._size--, this.active() && (this._fireEvent("fulfilled", {
          promise: o,
          result: E
        }), this._proceed());
      }, I.prototype._onPooledPromiseRejected = function(o, E) {
        this._size--, this.active() && (this._fireEvent("rejected", {
          promise: o,
          error: E
        }), this._settle(E || new Error("Unknown error")));
      }, I.prototype._trackPromise = function(o) {
        var E = this;
        o.then(function(Q) {
          E._onPooledPromiseFulfilled(o, Q);
        }, function(Q) {
          E._onPooledPromiseRejected(o, Q);
        }).catch(function(Q) {
          E._settle(new Error("Promise processing failed: " + Q));
        });
      }, I.prototype._proceed = function() {
        if (!this._done) {
          for (var o = { done: !1 }; this._size < this._concurrency && !(o = this._iterator.next()).done; )
            this._size++, this._trackPromise(o.value);
          this._done = o === null || !!o.done;
        }
        this._done && this._size === 0 && this._settle();
      }, I.PromisePoolEvent = i, I.PromisePool = I, I;
    });
  })(ys)), ys.exports;
}
var siA = riA();
const liA = /* @__PURE__ */ gg(siA);
function GD(A, u, e) {
  if (A && A.length) {
    const [C, B] = u, g = Math.PI / 180 * e, t = Math.cos(g), i = Math.sin(g);
    for (const I of A) {
      const [o, E] = I;
      I[0] = (o - C) * t - (E - B) * i + C, I[1] = (o - C) * i + (E - B) * t + B;
    }
  }
}
function ciA(A, u, e) {
  const C = [];
  A.forEach((B) => C.push(...B)), GD(C, u, e);
}
function diA(A, u) {
  return A[0] === u[0] && A[1] === u[1];
}
function DiA(A, u, e, C = 1) {
  const B = e, g = Math.max(u, 0.1), t = A[0] && A[0][0] && typeof A[0][0] == "number" ? [A] : A, i = [0, 0];
  if (B)
    for (const o of t)
      GD(o, i, B);
  const I = hiA(t, g, C);
  if (B) {
    for (const o of t)
      GD(o, i, -B);
    ciA(I, i, -B);
  }
  return I;
}
function hiA(A, u, e) {
  const C = [];
  for (const o of A) {
    const E = [...o];
    diA(E[0], E[E.length - 1]) || E.push([E[0][0], E[0][1]]), E.length > 2 && C.push(E);
  }
  const B = [];
  u = Math.max(u, 0.1);
  const g = [];
  for (const o of C)
    for (let E = 0; E < o.length - 1; E++) {
      const Q = o[E], s = o[E + 1];
      if (Q[1] !== s[1]) {
        const l = Math.min(Q[1], s[1]);
        g.push({
          ymin: l,
          ymax: Math.max(Q[1], s[1]),
          x: l === Q[1] ? Q[0] : s[0],
          islope: (s[0] - Q[0]) / (s[1] - Q[1])
        });
      }
    }
  if (g.sort((o, E) => o.ymin < E.ymin ? -1 : o.ymin > E.ymin ? 1 : o.x < E.x ? -1 : o.x > E.x ? 1 : o.ymax === E.ymax ? 0 : (o.ymax - E.ymax) / Math.abs(o.ymax - E.ymax)), !g.length)
    return B;
  let t = [], i = g[0].ymin, I = 0;
  for (; t.length || g.length; ) {
    if (g.length) {
      let o = -1;
      for (let Q = 0; Q < g.length && !(g[Q].ymin > i); Q++)
        o = Q;
      g.splice(0, o + 1).forEach((Q) => {
        t.push({ s: i, edge: Q });
      });
    }
    if (t = t.filter((o) => !(o.edge.ymax <= i)), t.sort((o, E) => o.edge.x === E.edge.x ? 0 : (o.edge.x - E.edge.x) / Math.abs(o.edge.x - E.edge.x)), (e !== 1 || I % u === 0) && t.length > 1)
      for (let o = 0; o < t.length; o = o + 2) {
        const E = o + 1;
        if (E >= t.length)
          break;
        const Q = t[o].edge, s = t[E].edge;
        B.push([
          [Math.round(Q.x), i],
          [Math.round(s.x), i]
        ]);
      }
    i += e, t.forEach((o) => {
      o.edge.x = o.edge.x + e * o.edge.islope;
    }), I++;
  }
  return B;
}
function on(A, u) {
  var e;
  const C = u.hachureAngle + 90;
  let B = u.hachureGap;
  B < 0 && (B = u.strokeWidth * 4), B = Math.max(B, 0.1);
  let g = 1;
  return u.roughness >= 1 && (((e = u.randomizer) === null || e === void 0 ? void 0 : e.next()) || Math.random()) > 0.7 && (g = B), DiA(A, B, C, g || 1);
}
class X1 {
  constructor(u) {
    this.helper = u;
  }
  fillPolygons(u, e) {
    return this._fillPolygons(u, e);
  }
  _fillPolygons(u, e) {
    const C = on(u, e);
    return { type: "fillSketch", ops: this.renderLines(C, e) };
  }
  renderLines(u, e) {
    const C = [];
    for (const B of u)
      C.push(...this.helper.doubleLineOps(B[0][0], B[0][1], B[1][0], B[1][1], e));
    return C;
  }
}
function g4(A) {
  const u = A[0], e = A[1];
  return Math.sqrt(Math.pow(u[0] - e[0], 2) + Math.pow(u[1] - e[1], 2));
}
class wiA extends X1 {
  fillPolygons(u, e) {
    let C = e.hachureGap;
    C < 0 && (C = e.strokeWidth * 4), C = Math.max(C, 0.1);
    const B = Object.assign({}, e, { hachureGap: C }), g = on(u, B), t = Math.PI / 180 * e.hachureAngle, i = [], I = C * 0.5 * Math.cos(t), o = C * 0.5 * Math.sin(t);
    for (const [Q, s] of g)
      g4([Q, s]) && i.push([
        [Q[0] - I, Q[1] + o],
        [...s]
      ], [
        [Q[0] + I, Q[1] - o],
        [...s]
      ]);
    return { type: "fillSketch", ops: this.renderLines(i, e) };
  }
}
class FiA extends X1 {
  fillPolygons(u, e) {
    const C = this._fillPolygons(u, e), B = Object.assign({}, e, { hachureAngle: e.hachureAngle + 90 }), g = this._fillPolygons(u, B);
    return C.ops = C.ops.concat(g.ops), C;
  }
}
class piA {
  constructor(u) {
    this.helper = u;
  }
  fillPolygons(u, e) {
    e = Object.assign({}, e, { hachureAngle: 0 });
    const C = on(u, e);
    return this.dotsOnLines(C, e);
  }
  dotsOnLines(u, e) {
    const C = [];
    let B = e.hachureGap;
    B < 0 && (B = e.strokeWidth * 4), B = Math.max(B, 0.1);
    let g = e.fillWeight;
    g < 0 && (g = e.strokeWidth / 2);
    const t = B / 4;
    for (const i of u) {
      const I = g4(i), o = I / B, E = Math.ceil(o) - 1, Q = I - E * B, s = (i[0][0] + i[1][0]) / 2 - B / 4, l = Math.min(i[0][1], i[1][1]);
      for (let c = 0; c < E; c++) {
        const D = l + Q + c * B, h = s - t + Math.random() * 2 * t, F = D - t + Math.random() * 2 * t, m = this.helper.ellipse(h, F, g, g, e);
        C.push(...m.ops);
      }
    }
    return { type: "fillSketch", ops: C };
  }
}
class miA {
  constructor(u) {
    this.helper = u;
  }
  fillPolygons(u, e) {
    const C = on(u, e);
    return { type: "fillSketch", ops: this.dashedLine(C, e) };
  }
  dashedLine(u, e) {
    const C = e.dashOffset < 0 ? e.hachureGap < 0 ? e.strokeWidth * 4 : e.hachureGap : e.dashOffset, B = e.dashGap < 0 ? e.hachureGap < 0 ? e.strokeWidth * 4 : e.hachureGap : e.dashGap, g = [];
    return u.forEach((t) => {
      const i = g4(t), I = Math.floor(i / (C + B)), o = (i + B - I * (C + B)) / 2;
      let E = t[0], Q = t[1];
      E[0] > Q[0] && (E = t[1], Q = t[0]);
      const s = Math.atan((Q[1] - E[1]) / (Q[0] - E[0]));
      for (let l = 0; l < I; l++) {
        const c = l * (C + B), D = c + C, h = [E[0] + c * Math.cos(s) + o * Math.cos(s), E[1] + c * Math.sin(s) + o * Math.sin(s)], F = [E[0] + D * Math.cos(s) + o * Math.cos(s), E[1] + D * Math.sin(s) + o * Math.sin(s)];
        g.push(...this.helper.doubleLineOps(h[0], h[1], F[0], F[1], e));
      }
    }), g;
  }
}
class kiA {
  constructor(u) {
    this.helper = u;
  }
  fillPolygons(u, e) {
    const C = e.hachureGap < 0 ? e.strokeWidth * 4 : e.hachureGap, B = e.zigzagOffset < 0 ? C : e.zigzagOffset;
    e = Object.assign({}, e, { hachureGap: C + B });
    const g = on(u, e);
    return { type: "fillSketch", ops: this.zigzagLines(g, B, e) };
  }
  zigzagLines(u, e, C) {
    const B = [];
    return u.forEach((g) => {
      const t = g4(g), i = Math.round(t / (2 * e));
      let I = g[0], o = g[1];
      I[0] > o[0] && (I = g[1], o = g[0]);
      const E = Math.atan((o[1] - I[1]) / (o[0] - I[0]));
      for (let Q = 0; Q < i; Q++) {
        const s = Q * 2 * e, l = (Q + 1) * 2 * e, c = Math.sqrt(2 * Math.pow(e, 2)), D = [I[0] + s * Math.cos(E), I[1] + s * Math.sin(E)], h = [I[0] + l * Math.cos(E), I[1] + l * Math.sin(E)], F = [D[0] + c * Math.cos(E + Math.PI / 4), D[1] + c * Math.sin(E + Math.PI / 4)];
        B.push(...this.helper.doubleLineOps(D[0], D[1], F[0], F[1], C), ...this.helper.doubleLineOps(F[0], F[1], h[0], h[1], C));
      }
    }), B;
  }
}
const Je = {};
function yiA(A, u) {
  let e = A.fillStyle || "hachure";
  if (!Je[e])
    switch (e) {
      case "zigzag":
        Je[e] || (Je[e] = new wiA(u));
        break;
      case "cross-hatch":
        Je[e] || (Je[e] = new FiA(u));
        break;
      case "dots":
        Je[e] || (Je[e] = new piA(u));
        break;
      case "dashed":
        Je[e] || (Je[e] = new miA(u));
        break;
      case "zigzag-line":
        Je[e] || (Je[e] = new kiA(u));
        break;
      case "hachure":
      default:
        e = "hachure", Je[e] || (Je[e] = new X1(u));
        break;
    }
  return Je[e];
}
function biA() {
  return Math.floor(Math.random() * 2 ** 31);
}
class P7 {
  constructor(u) {
    this.seed = u;
  }
  next() {
    return this.seed ? (2 ** 31 - 1 & (this.seed = Math.imul(48271, this.seed))) / 2 ** 31 : Math.random();
  }
}
const UiA = 0, fD = 1, O7 = 2, $r = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 };
function GiA(A) {
  const u = new Array();
  for (; A !== ""; )
    if (A.match(/^([ \t\r\n,]+)/))
      A = A.substr(RegExp.$1.length);
    else if (A.match(/^([aAcChHlLmMqQsStTvVzZ])/))
      u[u.length] = { type: UiA, text: RegExp.$1 }, A = A.substr(RegExp.$1.length);
    else if (A.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))
      u[u.length] = { type: fD, text: `${parseFloat(RegExp.$1)}` }, A = A.substr(RegExp.$1.length);
    else
      return [];
  return u[u.length] = { type: O7, text: "" }, u;
}
function dd(A, u) {
  return A.type === u;
}
function _1(A) {
  const u = [], e = GiA(A);
  let C = "BOD", B = 0, g = e[B];
  for (; !dd(g, O7); ) {
    let t = 0;
    const i = [];
    if (C === "BOD")
      if (g.text === "M" || g.text === "m")
        B++, t = $r[g.text], C = g.text;
      else
        return _1("M0,0" + A);
    else dd(g, fD) ? t = $r[C] : (B++, t = $r[g.text], C = g.text);
    if (B + t < e.length) {
      for (let I = B; I < B + t; I++) {
        const o = e[I];
        if (dd(o, fD))
          i[i.length] = +o.text;
        else
          throw new Error("Param not a number: " + C + "," + o.text);
      }
      if (typeof $r[C] == "number") {
        const I = { key: C, data: i };
        u.push(I), B += t, g = e[B], C === "M" && (C = "L"), C === "m" && (C = "l");
      } else
        throw new Error("Bad segment: " + C);
    } else
      throw new Error("Path data ended short");
  }
  return u;
}
function V7(A) {
  let u = 0, e = 0, C = 0, B = 0;
  const g = [];
  for (const { key: t, data: i } of A)
    switch (t) {
      case "M":
        g.push({ key: "M", data: [...i] }), [u, e] = i, [C, B] = i;
        break;
      case "m":
        u += i[0], e += i[1], g.push({ key: "M", data: [u, e] }), C = u, B = e;
        break;
      case "L":
        g.push({ key: "L", data: [...i] }), [u, e] = i;
        break;
      case "l":
        u += i[0], e += i[1], g.push({ key: "L", data: [u, e] });
        break;
      case "C":
        g.push({ key: "C", data: [...i] }), u = i[4], e = i[5];
        break;
      case "c": {
        const I = i.map((o, E) => E % 2 ? o + e : o + u);
        g.push({ key: "C", data: I }), u = I[4], e = I[5];
        break;
      }
      case "Q":
        g.push({ key: "Q", data: [...i] }), u = i[2], e = i[3];
        break;
      case "q": {
        const I = i.map((o, E) => E % 2 ? o + e : o + u);
        g.push({ key: "Q", data: I }), u = I[2], e = I[3];
        break;
      }
      case "A":
        g.push({ key: "A", data: [...i] }), u = i[5], e = i[6];
        break;
      case "a":
        u += i[5], e += i[6], g.push({ key: "A", data: [i[0], i[1], i[2], i[3], i[4], u, e] });
        break;
      case "H":
        g.push({ key: "H", data: [...i] }), u = i[0];
        break;
      case "h":
        u += i[0], g.push({ key: "H", data: [u] });
        break;
      case "V":
        g.push({ key: "V", data: [...i] }), e = i[0];
        break;
      case "v":
        e += i[0], g.push({ key: "V", data: [e] });
        break;
      case "S":
        g.push({ key: "S", data: [...i] }), u = i[2], e = i[3];
        break;
      case "s": {
        const I = i.map((o, E) => E % 2 ? o + e : o + u);
        g.push({ key: "S", data: I }), u = I[2], e = I[3];
        break;
      }
      case "T":
        g.push({ key: "T", data: [...i] }), u = i[0], e = i[1];
        break;
      case "t":
        u += i[0], e += i[1], g.push({ key: "T", data: [u, e] });
        break;
      case "Z":
      case "z":
        g.push({ key: "Z", data: [] }), u = C, e = B;
        break;
    }
  return g;
}
function X7(A) {
  const u = [];
  let e = "", C = 0, B = 0, g = 0, t = 0, i = 0, I = 0;
  for (const { key: o, data: E } of A) {
    switch (o) {
      case "M":
        u.push({ key: "M", data: [...E] }), [C, B] = E, [g, t] = E;
        break;
      case "C":
        u.push({ key: "C", data: [...E] }), C = E[4], B = E[5], i = E[2], I = E[3];
        break;
      case "L":
        u.push({ key: "L", data: [...E] }), [C, B] = E;
        break;
      case "H":
        C = E[0], u.push({ key: "L", data: [C, B] });
        break;
      case "V":
        B = E[0], u.push({ key: "L", data: [C, B] });
        break;
      case "S": {
        let Q = 0, s = 0;
        e === "C" || e === "S" ? (Q = C + (C - i), s = B + (B - I)) : (Q = C, s = B), u.push({ key: "C", data: [Q, s, ...E] }), i = E[0], I = E[1], C = E[2], B = E[3];
        break;
      }
      case "T": {
        const [Q, s] = E;
        let l = 0, c = 0;
        e === "Q" || e === "T" ? (l = C + (C - i), c = B + (B - I)) : (l = C, c = B);
        const D = C + 2 * (l - C) / 3, h = B + 2 * (c - B) / 3, F = Q + 2 * (l - Q) / 3, m = s + 2 * (c - s) / 3;
        u.push({ key: "C", data: [D, h, F, m, Q, s] }), i = l, I = c, C = Q, B = s;
        break;
      }
      case "Q": {
        const [Q, s, l, c] = E, D = C + 2 * (Q - C) / 3, h = B + 2 * (s - B) / 3, F = l + 2 * (Q - l) / 3, m = c + 2 * (s - c) / 3;
        u.push({ key: "C", data: [D, h, F, m, l, c] }), i = Q, I = s, C = l, B = c;
        break;
      }
      case "A": {
        const Q = Math.abs(E[0]), s = Math.abs(E[1]), l = E[2], c = E[3], D = E[4], h = E[5], F = E[6];
        Q === 0 || s === 0 ? (u.push({ key: "C", data: [C, B, h, F, h, F] }), C = h, B = F) : (C !== h || B !== F) && (_7(C, B, h, F, Q, s, l, c, D).forEach(function(p) {
          u.push({ key: "C", data: p });
        }), C = h, B = F);
        break;
      }
      case "Z":
        u.push({ key: "Z", data: [] }), C = g, B = t;
        break;
    }
    e = o;
  }
  return u;
}
function fiA(A) {
  return Math.PI * A / 180;
}
function xo(A, u, e) {
  const C = A * Math.cos(e) - u * Math.sin(e), B = A * Math.sin(e) + u * Math.cos(e);
  return [C, B];
}
function _7(A, u, e, C, B, g, t, i, I, o) {
  const E = fiA(t);
  let Q = [], s = 0, l = 0, c = 0, D = 0;
  if (o)
    [s, l, c, D] = o;
  else {
    [A, u] = xo(A, u, -E), [e, C] = xo(e, C, -E);
    const q = (A - e) / 2, j = (u - C) / 2;
    let uA = q * q / (B * B) + j * j / (g * g);
    uA > 1 && (uA = Math.sqrt(uA), B = uA * B, g = uA * g);
    const O = i === I ? -1 : 1, $ = B * B, X = g * g, P = $ * X - $ * j * j - X * q * q, _ = $ * j * j + X * q * q, CA = O * Math.sqrt(Math.abs(P / _));
    c = CA * B * j / g + (A + e) / 2, D = CA * -g * q / B + (u + C) / 2, s = Math.asin(parseFloat(((u - D) / g).toFixed(9))), l = Math.asin(parseFloat(((C - D) / g).toFixed(9))), A < c && (s = Math.PI - s), e < c && (l = Math.PI - l), s < 0 && (s = Math.PI * 2 + s), l < 0 && (l = Math.PI * 2 + l), I && s > l && (s = s - Math.PI * 2), !I && l > s && (l = l - Math.PI * 2);
  }
  let h = l - s;
  if (Math.abs(h) > Math.PI * 120 / 180) {
    const q = l, j = e, uA = C;
    I && l > s ? l = s + Math.PI * 120 / 180 * 1 : l = s + Math.PI * 120 / 180 * -1, e = c + B * Math.cos(l), C = D + g * Math.sin(l), Q = _7(e, C, j, uA, B, g, t, 0, I, [l, q, c, D]);
  }
  h = l - s;
  const F = Math.cos(s), m = Math.sin(s), p = Math.cos(l), k = Math.sin(l), b = Math.tan(h / 4), f = 4 / 3 * B * b, L = 4 / 3 * g * b, N = [A, u], M = [A + f * m, u - L * F], v = [e + f * k, C - L * p], K = [e, C];
  if (M[0] = 2 * N[0] - M[0], M[1] = 2 * N[1] - M[1], o)
    return [M, v, K].concat(Q);
  {
    Q = [M, v, K].concat(Q);
    const q = [];
    for (let j = 0; j < Q.length; j += 3) {
      const uA = xo(Q[j][0], Q[j][1], E), O = xo(Q[j + 1][0], Q[j + 1][1], E), $ = xo(Q[j + 2][0], Q[j + 2][1], E);
      q.push([uA[0], uA[1], O[0], O[1], $[0], $[1]]);
    }
    return q;
  }
}
const LiA = {
  randOffset: MiA,
  randOffsetWithRange: YiA,
  ellipse: NiA,
  doubleLineOps: viA
};
function $7(A, u, e, C, B) {
  return { type: "path", ops: Zg(A, u, e, C, B) };
}
function bs(A, u, e) {
  const C = (A || []).length;
  if (C > 2) {
    const B = [];
    for (let g = 0; g < C - 1; g++)
      B.push(...Zg(A[g][0], A[g][1], A[g + 1][0], A[g + 1][1], e));
    return u && B.push(...Zg(A[C - 1][0], A[C - 1][1], A[0][0], A[0][1], e)), { type: "path", ops: B };
  } else if (C === 2)
    return $7(A[0][0], A[0][1], A[1][0], A[1][1], e);
  return { type: "path", ops: [] };
}
function xiA(A, u) {
  return bs(A, !0, u);
}
function SiA(A, u, e, C, B) {
  const g = [
    [A, u],
    [A + e, u],
    [A + e, u + C],
    [A, u + C]
  ];
  return xiA(g, B);
}
function $w(A, u) {
  let e = CF(A, 1 * (1 + u.roughness * 0.2), u);
  if (!u.disableMultiStroke) {
    const C = CF(A, 1.5 * (1 + u.roughness * 0.22), HiA(u));
    e = e.concat(C);
  }
  return { type: "path", ops: e };
}
function NiA(A, u, e, C, B) {
  const g = A8(e, C, B);
  return LD(A, u, B, g).opset;
}
function A8(A, u, e) {
  const C = Math.sqrt(Math.PI * 2 * Math.sqrt((Math.pow(A / 2, 2) + Math.pow(u / 2, 2)) / 2)), B = Math.ceil(Math.max(e.curveStepCount, e.curveStepCount / Math.sqrt(200) * C)), g = Math.PI * 2 / B;
  let t = Math.abs(A / 2), i = Math.abs(u / 2);
  const I = 1 - e.curveFitting;
  return t += _A(t * I, e), i += _A(i * I, e), { increment: g, rx: t, ry: i };
}
function LD(A, u, e, C) {
  const [B, g] = BF(C.increment, A, u, C.rx, C.ry, 1, C.increment * Bl(0.1, Bl(0.4, 1, e), e), e);
  let t = gl(B, null, e);
  if (!e.disableMultiStroke && e.roughness !== 0) {
    const [i] = BF(C.increment, A, u, C.rx, C.ry, 1.5, 0, e), I = gl(i, null, e);
    t = t.concat(I);
  }
  return {
    estimatedPoints: g,
    opset: { type: "path", ops: t }
  };
}
function AF(A, u, e, C, B, g, t, i, I) {
  const o = A, E = u;
  let Q = Math.abs(e / 2), s = Math.abs(C / 2);
  Q += _A(Q * 0.01, I), s += _A(s * 0.01, I);
  let l = B, c = g;
  for (; l < 0; )
    l += Math.PI * 2, c += Math.PI * 2;
  c - l > Math.PI * 2 && (l = 0, c = Math.PI * 2);
  const D = Math.PI * 2 / I.curveStepCount, h = Math.min(D / 2, (c - l) / 2), F = gF(h, o, E, Q, s, l, c, 1, I);
  if (!I.disableMultiStroke) {
    const m = gF(h, o, E, Q, s, l, c, 1.5, I);
    F.push(...m);
  }
  return t && (i ? F.push(...Zg(o, E, o + Q * Math.cos(l), E + s * Math.sin(l), I), ...Zg(o, E, o + Q * Math.cos(c), E + s * Math.sin(c), I)) : F.push({ op: "lineTo", data: [o, E] }, { op: "lineTo", data: [o + Q * Math.cos(l), E + s * Math.sin(l)] })), { type: "path", ops: F };
}
function uF(A, u) {
  const e = X7(V7(_1(A))), C = [];
  let B = [0, 0], g = [0, 0];
  for (const { key: t, data: i } of e)
    switch (t) {
      case "M": {
        g = [i[0], i[1]], B = [i[0], i[1]];
        break;
      }
      case "L":
        C.push(...Zg(g[0], g[1], i[0], i[1], u)), g = [i[0], i[1]];
        break;
      case "C": {
        const [I, o, E, Q, s, l] = i;
        C.push(...KiA(I, o, E, Q, s, l, g, u)), g = [s, l];
        break;
      }
      case "Z":
        C.push(...Zg(g[0], g[1], B[0], B[1], u)), g = [B[0], B[1]];
        break;
    }
  return { type: "path", ops: C };
}
function Dd(A, u) {
  const e = [];
  for (const C of A)
    if (C.length) {
      const B = u.maxRandomnessOffset || 0, g = C.length;
      if (g > 2) {
        e.push({ op: "move", data: [C[0][0] + _A(B, u), C[0][1] + _A(B, u)] });
        for (let t = 1; t < g; t++)
          e.push({ op: "lineTo", data: [C[t][0] + _A(B, u), C[t][1] + _A(B, u)] });
      }
    }
  return { type: "fillPath", ops: e };
}
function Ya(A, u) {
  return yiA(u, LiA).fillPolygons(A, u);
}
function RiA(A, u, e, C, B, g, t) {
  const i = A, I = u;
  let o = Math.abs(e / 2), E = Math.abs(C / 2);
  o += _A(o * 0.01, t), E += _A(E * 0.01, t);
  let Q = B, s = g;
  for (; Q < 0; )
    Q += Math.PI * 2, s += Math.PI * 2;
  s - Q > Math.PI * 2 && (Q = 0, s = Math.PI * 2);
  const l = (s - Q) / t.curveStepCount, c = [];
  for (let D = Q; D <= s; D = D + l)
    c.push([i + o * Math.cos(D), I + E * Math.sin(D)]);
  return c.push([i + o * Math.cos(s), I + E * Math.sin(s)]), c.push([i, I]), Ya([c], t);
}
function MiA(A, u) {
  return _A(A, u);
}
function YiA(A, u, e) {
  return Bl(A, u, e);
}
function viA(A, u, e, C, B) {
  return Zg(A, u, e, C, B, !0);
}
function HiA(A) {
  const u = Object.assign({}, A);
  return u.randomizer = void 0, A.seed && (u.seed = A.seed + 1), u;
}
function u8(A) {
  return A.randomizer || (A.randomizer = new P7(A.seed || 0)), A.randomizer.next();
}
function Bl(A, u, e, C = 1) {
  return e.roughness * C * (u8(e) * (u - A) + A);
}
function _A(A, u, e = 1) {
  return Bl(-A, A, u, e);
}
function Zg(A, u, e, C, B, g = !1) {
  const t = g ? B.disableMultiStrokeFill : B.disableMultiStroke, i = eF(A, u, e, C, B, !0, !1);
  if (t)
    return i;
  const I = eF(A, u, e, C, B, !0, !0);
  return i.concat(I);
}
function eF(A, u, e, C, B, g, t) {
  const i = Math.pow(A - e, 2) + Math.pow(u - C, 2), I = Math.sqrt(i);
  let o = 1;
  I < 200 ? o = 1 : I > 500 ? o = 0.4 : o = -16668e-7 * I + 1.233334;
  let E = B.maxRandomnessOffset || 0;
  E * E * 100 > i && (E = I / 10);
  const Q = E / 2, s = 0.2 + u8(B) * 0.2;
  let l = B.bowing * B.maxRandomnessOffset * (C - u) / 200, c = B.bowing * B.maxRandomnessOffset * (A - e) / 200;
  l = _A(l, B, o), c = _A(c, B, o);
  const D = [], h = () => _A(Q, B, o), F = () => _A(E, B, o), m = B.preserveVertices;
  return t ? D.push({
    op: "move",
    data: [
      A + (m ? 0 : h()),
      u + (m ? 0 : h())
    ]
  }) : D.push({
    op: "move",
    data: [
      A + (m ? 0 : _A(E, B, o)),
      u + (m ? 0 : _A(E, B, o))
    ]
  }), t ? D.push({
    op: "bcurveTo",
    data: [
      l + A + (e - A) * s + h(),
      c + u + (C - u) * s + h(),
      l + A + 2 * (e - A) * s + h(),
      c + u + 2 * (C - u) * s + h(),
      e + (m ? 0 : h()),
      C + (m ? 0 : h())
    ]
  }) : D.push({
    op: "bcurveTo",
    data: [
      l + A + (e - A) * s + F(),
      c + u + (C - u) * s + F(),
      l + A + 2 * (e - A) * s + F(),
      c + u + 2 * (C - u) * s + F(),
      e + (m ? 0 : F()),
      C + (m ? 0 : F())
    ]
  }), D;
}
function CF(A, u, e) {
  const C = [];
  C.push([
    A[0][0] + _A(u, e),
    A[0][1] + _A(u, e)
  ]), C.push([
    A[0][0] + _A(u, e),
    A[0][1] + _A(u, e)
  ]);
  for (let B = 1; B < A.length; B++)
    C.push([
      A[B][0] + _A(u, e),
      A[B][1] + _A(u, e)
    ]), B === A.length - 1 && C.push([
      A[B][0] + _A(u, e),
      A[B][1] + _A(u, e)
    ]);
  return gl(C, null, e);
}
function gl(A, u, e) {
  const C = A.length, B = [];
  if (C > 3) {
    const g = [], t = 1 - e.curveTightness;
    B.push({ op: "move", data: [A[1][0], A[1][1]] });
    for (let i = 1; i + 2 < C; i++) {
      const I = A[i];
      g[0] = [I[0], I[1]], g[1] = [I[0] + (t * A[i + 1][0] - t * A[i - 1][0]) / 6, I[1] + (t * A[i + 1][1] - t * A[i - 1][1]) / 6], g[2] = [A[i + 1][0] + (t * A[i][0] - t * A[i + 2][0]) / 6, A[i + 1][1] + (t * A[i][1] - t * A[i + 2][1]) / 6], g[3] = [A[i + 1][0], A[i + 1][1]], B.push({ op: "bcurveTo", data: [g[1][0], g[1][1], g[2][0], g[2][1], g[3][0], g[3][1]] });
    }
  } else C === 3 ? (B.push({ op: "move", data: [A[1][0], A[1][1]] }), B.push({
    op: "bcurveTo",
    data: [
      A[1][0],
      A[1][1],
      A[2][0],
      A[2][1],
      A[2][0],
      A[2][1]
    ]
  })) : C === 2 && B.push(...Zg(A[0][0], A[0][1], A[1][0], A[1][1], e));
  return B;
}
function BF(A, u, e, C, B, g, t, i) {
  const I = i.roughness === 0, o = [], E = [];
  if (I) {
    A = A / 4, E.push([
      u + C * Math.cos(-A),
      e + B * Math.sin(-A)
    ]);
    for (let Q = 0; Q <= Math.PI * 2; Q = Q + A) {
      const s = [
        u + C * Math.cos(Q),
        e + B * Math.sin(Q)
      ];
      o.push(s), E.push(s);
    }
    E.push([
      u + C * Math.cos(0),
      e + B * Math.sin(0)
    ]), E.push([
      u + C * Math.cos(A),
      e + B * Math.sin(A)
    ]);
  } else {
    const Q = _A(0.5, i) - Math.PI / 2;
    E.push([
      _A(g, i) + u + 0.9 * C * Math.cos(Q - A),
      _A(g, i) + e + 0.9 * B * Math.sin(Q - A)
    ]);
    const s = Math.PI * 2 + Q - 0.01;
    for (let l = Q; l < s; l = l + A) {
      const c = [
        _A(g, i) + u + C * Math.cos(l),
        _A(g, i) + e + B * Math.sin(l)
      ];
      o.push(c), E.push(c);
    }
    E.push([
      _A(g, i) + u + C * Math.cos(Q + Math.PI * 2 + t * 0.5),
      _A(g, i) + e + B * Math.sin(Q + Math.PI * 2 + t * 0.5)
    ]), E.push([
      _A(g, i) + u + 0.98 * C * Math.cos(Q + t),
      _A(g, i) + e + 0.98 * B * Math.sin(Q + t)
    ]), E.push([
      _A(g, i) + u + 0.9 * C * Math.cos(Q + t * 0.5),
      _A(g, i) + e + 0.9 * B * Math.sin(Q + t * 0.5)
    ]);
  }
  return [E, o];
}
function gF(A, u, e, C, B, g, t, i, I) {
  const o = g + _A(0.1, I), E = [];
  E.push([
    _A(i, I) + u + 0.9 * C * Math.cos(o - A),
    _A(i, I) + e + 0.9 * B * Math.sin(o - A)
  ]);
  for (let Q = o; Q <= t; Q = Q + A)
    E.push([
      _A(i, I) + u + C * Math.cos(Q),
      _A(i, I) + e + B * Math.sin(Q)
    ]);
  return E.push([
    u + C * Math.cos(t),
    e + B * Math.sin(t)
  ]), E.push([
    u + C * Math.cos(t),
    e + B * Math.sin(t)
  ]), gl(E, null, I);
}
function KiA(A, u, e, C, B, g, t, i) {
  const I = [], o = [i.maxRandomnessOffset || 1, (i.maxRandomnessOffset || 1) + 0.3];
  let E = [0, 0];
  const Q = i.disableMultiStroke ? 1 : 2, s = i.preserveVertices;
  for (let l = 0; l < Q; l++)
    l === 0 ? I.push({ op: "move", data: [t[0], t[1]] }) : I.push({ op: "move", data: [t[0] + (s ? 0 : _A(o[0], i)), t[1] + (s ? 0 : _A(o[0], i))] }), E = s ? [B, g] : [B + _A(o[l], i), g + _A(o[l], i)], I.push({
      op: "bcurveTo",
      data: [
        A + _A(o[l], i),
        u + _A(o[l], i),
        e + _A(o[l], i),
        C + _A(o[l], i),
        E[0],
        E[1]
      ]
    });
  return I;
}
function So(A) {
  return [...A];
}
function JiA(A, u = 0) {
  const e = A.length;
  if (e < 3)
    throw new Error("A curve must have at least three points.");
  const C = [];
  if (e === 3)
    C.push(So(A[0]), So(A[1]), So(A[2]), So(A[2]));
  else {
    const B = [];
    B.push(A[0], A[0]);
    for (let i = 1; i < A.length; i++)
      B.push(A[i]), i === A.length - 1 && B.push(A[i]);
    const g = [], t = 1 - u;
    C.push(So(B[0]));
    for (let i = 1; i + 2 < B.length; i++) {
      const I = B[i];
      g[0] = [I[0], I[1]], g[1] = [I[0] + (t * B[i + 1][0] - t * B[i - 1][0]) / 6, I[1] + (t * B[i + 1][1] - t * B[i - 1][1]) / 6], g[2] = [B[i + 1][0] + (t * B[i][0] - t * B[i + 2][0]) / 6, B[i + 1][1] + (t * B[i][1] - t * B[i + 2][1]) / 6], g[3] = [B[i + 1][0], B[i + 1][1]], C.push(g[1], g[2], g[3]);
    }
  }
  return C;
}
function ZiA(A, u) {
  return Math.sqrt(Us(A, u));
}
function Us(A, u) {
  return Math.pow(A[0] - u[0], 2) + Math.pow(A[1] - u[1], 2);
}
function qiA(A, u, e) {
  const C = Us(u, e);
  if (C === 0)
    return Us(A, u);
  let B = ((A[0] - u[0]) * (e[0] - u[0]) + (A[1] - u[1]) * (e[1] - u[1])) / C;
  return B = Math.max(0, Math.min(1, B)), Us(A, eE(u, e, B));
}
function eE(A, u, e) {
  return [
    A[0] + (u[0] - A[0]) * e,
    A[1] + (u[1] - A[1]) * e
  ];
}
function WiA(A, u) {
  const e = A[u + 0], C = A[u + 1], B = A[u + 2], g = A[u + 3];
  let t = 3 * C[0] - 2 * e[0] - g[0];
  t *= t;
  let i = 3 * C[1] - 2 * e[1] - g[1];
  i *= i;
  let I = 3 * B[0] - 2 * g[0] - e[0];
  I *= I;
  let o = 3 * B[1] - 2 * g[1] - e[1];
  return o *= o, t < I && (t = I), i < o && (i = o), t + i;
}
function xD(A, u, e, C) {
  const B = C || [];
  if (WiA(A, u) < e) {
    const g = A[u + 0];
    B.length ? ZiA(B[B.length - 1], g) > 1 && B.push(g) : B.push(g), B.push(A[u + 3]);
  } else {
    const t = A[u + 0], i = A[u + 1], I = A[u + 2], o = A[u + 3], E = eE(t, i, 0.5), Q = eE(i, I, 0.5), s = eE(I, o, 0.5), l = eE(E, Q, 0.5), c = eE(Q, s, 0.5), D = eE(l, c, 0.5);
    xD([t, E, l, D], 0, e, B), xD([D, c, s, o], 0, e, B);
  }
  return B;
}
function jiA(A, u) {
  return tl(A, 0, A.length, u);
}
function tl(A, u, e, C, B) {
  const g = B || [], t = A[u], i = A[e - 1];
  let I = 0, o = 1;
  for (let E = u + 1; E < e - 1; ++E) {
    const Q = qiA(A[E], t, i);
    Q > I && (I = Q, o = E);
  }
  return Math.sqrt(I) > C ? (tl(A, u, o + 1, C, g), tl(A, o, e, C, g)) : (g.length || g.push(t), g.push(i)), g;
}
function e8(A, u = 0.15, e) {
  const C = [], B = (A.length - 1) / 3;
  for (let g = 0; g < B; g++) {
    const t = g * 3;
    xD(A, t, u, C);
  }
  return e && e > 0 ? tl(C, 0, C.length, e) : C;
}
function TiA(A, u, e) {
  const C = _1(A), B = X7(V7(C)), g = [];
  let t = [], i = [0, 0], I = [];
  const o = () => {
    I.length >= 4 && t.push(...e8(I, u)), I = [];
  }, E = () => {
    o(), t.length && (g.push(t), t = []);
  };
  for (const { key: s, data: l } of B)
    switch (s) {
      case "M":
        E(), i = [l[0], l[1]], t.push(i);
        break;
      case "L":
        o(), t.push([l[0], l[1]]);
        break;
      case "C":
        if (!I.length) {
          const c = t.length ? t[t.length - 1] : i;
          I.push([c[0], c[1]]);
        }
        I.push([l[0], l[1]]), I.push([l[2], l[3]]), I.push([l[4], l[5]]);
        break;
      case "Z":
        o(), t.push([i[0], i[1]]);
        break;
    }
  if (E(), !e)
    return g;
  const Q = [];
  for (const s of g) {
    const l = jiA(s, e);
    l.length && Q.push(l);
  }
  return Q;
}
const iC = "none";
class YQ {
  constructor(u) {
    this.defaultOptions = {
      maxRandomnessOffset: 2,
      roughness: 1,
      bowing: 1,
      stroke: "#000",
      strokeWidth: 1,
      curveTightness: 0,
      curveFitting: 0.95,
      curveStepCount: 9,
      fillStyle: "hachure",
      fillWeight: -1,
      hachureAngle: -41,
      hachureGap: -1,
      dashOffset: -1,
      dashGap: -1,
      zigzagOffset: -1,
      seed: 0,
      disableMultiStroke: !1,
      disableMultiStrokeFill: !1,
      preserveVertices: !1,
      fillShapeRoughnessGain: 0.8
    }, this.config = u || {}, this.config.options && (this.defaultOptions = this._o(this.config.options));
  }
  static newSeed() {
    return biA();
  }
  _o(u) {
    return u ? Object.assign({}, this.defaultOptions, u) : this.defaultOptions;
  }
  _d(u, e, C) {
    return { shape: u, sets: e || [], options: C || this.defaultOptions };
  }
  line(u, e, C, B, g) {
    const t = this._o(g);
    return this._d("line", [$7(u, e, C, B, t)], t);
  }
  rectangle(u, e, C, B, g) {
    const t = this._o(g), i = [], I = SiA(u, e, C, B, t);
    if (t.fill) {
      const o = [[u, e], [u + C, e], [u + C, e + B], [u, e + B]];
      t.fillStyle === "solid" ? i.push(Dd([o], t)) : i.push(Ya([o], t));
    }
    return t.stroke !== iC && i.push(I), this._d("rectangle", i, t);
  }
  ellipse(u, e, C, B, g) {
    const t = this._o(g), i = [], I = A8(C, B, t), o = LD(u, e, t, I);
    if (t.fill)
      if (t.fillStyle === "solid") {
        const E = LD(u, e, t, I).opset;
        E.type = "fillPath", i.push(E);
      } else
        i.push(Ya([o.estimatedPoints], t));
    return t.stroke !== iC && i.push(o.opset), this._d("ellipse", i, t);
  }
  circle(u, e, C, B) {
    const g = this.ellipse(u, e, C, C, B);
    return g.shape = "circle", g;
  }
  linearPath(u, e) {
    const C = this._o(e);
    return this._d("linearPath", [bs(u, !1, C)], C);
  }
  arc(u, e, C, B, g, t, i = !1, I) {
    const o = this._o(I), E = [], Q = AF(u, e, C, B, g, t, i, !0, o);
    if (i && o.fill)
      if (o.fillStyle === "solid") {
        const s = Object.assign({}, o);
        s.disableMultiStroke = !0;
        const l = AF(u, e, C, B, g, t, !0, !1, s);
        l.type = "fillPath", E.push(l);
      } else
        E.push(RiA(u, e, C, B, g, t, o));
    return o.stroke !== iC && E.push(Q), this._d("arc", E, o);
  }
  curve(u, e) {
    const C = this._o(e), B = [], g = $w(u, C);
    if (C.fill && C.fill !== iC && u.length >= 3)
      if (C.fillStyle === "solid") {
        const t = $w(u, Object.assign(Object.assign({}, C), { disableMultiStroke: !0, roughness: C.roughness ? C.roughness + C.fillShapeRoughnessGain : 0 }));
        B.push({
          type: "fillPath",
          ops: this._mergedShape(t.ops)
        });
      } else {
        const t = JiA(u), i = e8(t, 10, (1 + C.roughness) / 2);
        B.push(Ya([i], C));
      }
    return C.stroke !== iC && B.push(g), this._d("curve", B, C);
  }
  polygon(u, e) {
    const C = this._o(e), B = [], g = bs(u, !0, C);
    return C.fill && (C.fillStyle === "solid" ? B.push(Dd([u], C)) : B.push(Ya([u], C))), C.stroke !== iC && B.push(g), this._d("polygon", B, C);
  }
  path(u, e) {
    const C = this._o(e), B = [];
    if (!u)
      return this._d("path", B, C);
    u = (u || "").replace(/\n/g, " ").replace(/(-\s)/g, "-").replace("/(ss)/g", " ");
    const g = C.fill && C.fill !== "transparent" && C.fill !== iC, t = C.stroke !== iC, i = !!(C.simplification && C.simplification < 1), I = i ? 4 - 4 * (C.simplification || 1) : (1 + C.roughness) / 2, o = TiA(u, 1, I), E = uF(u, C);
    if (g)
      if (C.fillStyle === "solid")
        if (o.length === 1) {
          const Q = uF(u, Object.assign(Object.assign({}, C), { disableMultiStroke: !0, roughness: C.roughness ? C.roughness + C.fillShapeRoughnessGain : 0 }));
          B.push({
            type: "fillPath",
            ops: this._mergedShape(Q.ops)
          });
        } else
          B.push(Dd(o, C));
      else
        B.push(Ya(o, C));
    return t && (i ? o.forEach((Q) => {
      B.push(bs(Q, !1, C));
    }) : B.push(E)), this._d("path", B, C);
  }
  opsToPath(u, e) {
    let C = "";
    for (const B of u.ops) {
      const g = typeof e == "number" && e >= 0 ? B.data.map((t) => +t.toFixed(e)) : B.data;
      switch (B.op) {
        case "move":
          C += `M${g[0]} ${g[1]} `;
          break;
        case "bcurveTo":
          C += `C${g[0]} ${g[1]}, ${g[2]} ${g[3]}, ${g[4]} ${g[5]} `;
          break;
        case "lineTo":
          C += `L${g[0]} ${g[1]} `;
          break;
      }
    }
    return C.trim();
  }
  toPaths(u) {
    const e = u.sets || [], C = u.options || this.defaultOptions, B = [];
    for (const g of e) {
      let t = null;
      switch (g.type) {
        case "path":
          t = {
            d: this.opsToPath(g),
            stroke: C.stroke,
            strokeWidth: C.strokeWidth,
            fill: iC
          };
          break;
        case "fillPath":
          t = {
            d: this.opsToPath(g),
            stroke: iC,
            strokeWidth: 0,
            fill: C.fill || iC
          };
          break;
        case "fillSketch":
          t = this.fillSketch(g, C);
          break;
      }
      t && B.push(t);
    }
    return B;
  }
  fillSketch(u, e) {
    let C = e.fillWeight;
    return C < 0 && (C = e.strokeWidth / 2), {
      d: this.opsToPath(u),
      stroke: e.fill || iC,
      strokeWidth: C,
      fill: iC
    };
  }
  _mergedShape(u) {
    return u.filter((e, C) => C === 0 ? !0 : e.op !== "move");
  }
}
class ziA {
  constructor(u, e) {
    this.canvas = u, this.ctx = this.canvas.getContext("2d"), this.gen = new YQ(e);
  }
  draw(u) {
    const e = u.sets || [], C = u.options || this.getDefaultOptions(), B = this.ctx, g = u.options.fixedDecimalPlaceDigits;
    for (const t of e)
      switch (t.type) {
        case "path":
          B.save(), B.strokeStyle = C.stroke === "none" ? "transparent" : C.stroke, B.lineWidth = C.strokeWidth, C.strokeLineDash && B.setLineDash(C.strokeLineDash), C.strokeLineDashOffset && (B.lineDashOffset = C.strokeLineDashOffset), this._drawToContext(B, t, g), B.restore();
          break;
        case "fillPath": {
          B.save(), B.fillStyle = C.fill || "";
          const i = u.shape === "curve" || u.shape === "polygon" || u.shape === "path" ? "evenodd" : "nonzero";
          this._drawToContext(B, t, g, i), B.restore();
          break;
        }
        case "fillSketch":
          this.fillSketch(B, t, C);
          break;
      }
  }
  fillSketch(u, e, C) {
    let B = C.fillWeight;
    B < 0 && (B = C.strokeWidth / 2), u.save(), C.fillLineDash && u.setLineDash(C.fillLineDash), C.fillLineDashOffset && (u.lineDashOffset = C.fillLineDashOffset), u.strokeStyle = C.fill || "", u.lineWidth = B, this._drawToContext(u, e, C.fixedDecimalPlaceDigits), u.restore();
  }
  _drawToContext(u, e, C, B = "nonzero") {
    u.beginPath();
    for (const g of e.ops) {
      const t = typeof C == "number" && C >= 0 ? g.data.map((i) => +i.toFixed(C)) : g.data;
      switch (g.op) {
        case "move":
          u.moveTo(t[0], t[1]);
          break;
        case "bcurveTo":
          u.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]);
          break;
        case "lineTo":
          u.lineTo(t[0], t[1]);
          break;
      }
    }
    e.type === "fillPath" ? u.fill(B) : u.stroke();
  }
  get generator() {
    return this.gen;
  }
  getDefaultOptions() {
    return this.gen.defaultOptions;
  }
  line(u, e, C, B, g) {
    const t = this.gen.line(u, e, C, B, g);
    return this.draw(t), t;
  }
  rectangle(u, e, C, B, g) {
    const t = this.gen.rectangle(u, e, C, B, g);
    return this.draw(t), t;
  }
  ellipse(u, e, C, B, g) {
    const t = this.gen.ellipse(u, e, C, B, g);
    return this.draw(t), t;
  }
  circle(u, e, C, B) {
    const g = this.gen.circle(u, e, C, B);
    return this.draw(g), g;
  }
  linearPath(u, e) {
    const C = this.gen.linearPath(u, e);
    return this.draw(C), C;
  }
  polygon(u, e) {
    const C = this.gen.polygon(u, e);
    return this.draw(C), C;
  }
  arc(u, e, C, B, g, t, i = !1, I) {
    const o = this.gen.arc(u, e, C, B, g, t, i, I);
    return this.draw(o), o;
  }
  curve(u, e) {
    const C = this.gen.curve(u, e);
    return this.draw(C), C;
  }
  path(u, e) {
    const C = this.gen.path(u, e);
    return this.draw(C), C;
  }
}
const As = "http://www.w3.org/2000/svg";
class PiA {
  constructor(u, e) {
    this.svg = u, this.gen = new YQ(e);
  }
  draw(u) {
    const e = u.sets || [], C = u.options || this.getDefaultOptions(), B = this.svg.ownerDocument || window.document, g = B.createElementNS(As, "g"), t = u.options.fixedDecimalPlaceDigits;
    for (const i of e) {
      let I = null;
      switch (i.type) {
        case "path": {
          I = B.createElementNS(As, "path"), I.setAttribute("d", this.opsToPath(i, t)), I.setAttribute("stroke", C.stroke), I.setAttribute("stroke-width", C.strokeWidth + ""), I.setAttribute("fill", "none"), C.strokeLineDash && I.setAttribute("stroke-dasharray", C.strokeLineDash.join(" ").trim()), C.strokeLineDashOffset && I.setAttribute("stroke-dashoffset", `${C.strokeLineDashOffset}`);
          break;
        }
        case "fillPath": {
          I = B.createElementNS(As, "path"), I.setAttribute("d", this.opsToPath(i, t)), I.setAttribute("stroke", "none"), I.setAttribute("stroke-width", "0"), I.setAttribute("fill", C.fill || ""), (u.shape === "curve" || u.shape === "polygon") && I.setAttribute("fill-rule", "evenodd");
          break;
        }
        case "fillSketch": {
          I = this.fillSketch(B, i, C);
          break;
        }
      }
      I && g.appendChild(I);
    }
    return g;
  }
  fillSketch(u, e, C) {
    let B = C.fillWeight;
    B < 0 && (B = C.strokeWidth / 2);
    const g = u.createElementNS(As, "path");
    return g.setAttribute("d", this.opsToPath(e, C.fixedDecimalPlaceDigits)), g.setAttribute("stroke", C.fill || ""), g.setAttribute("stroke-width", B + ""), g.setAttribute("fill", "none"), C.fillLineDash && g.setAttribute("stroke-dasharray", C.fillLineDash.join(" ").trim()), C.fillLineDashOffset && g.setAttribute("stroke-dashoffset", `${C.fillLineDashOffset}`), g;
  }
  get generator() {
    return this.gen;
  }
  getDefaultOptions() {
    return this.gen.defaultOptions;
  }
  opsToPath(u, e) {
    return this.gen.opsToPath(u, e);
  }
  line(u, e, C, B, g) {
    const t = this.gen.line(u, e, C, B, g);
    return this.draw(t);
  }
  rectangle(u, e, C, B, g) {
    const t = this.gen.rectangle(u, e, C, B, g);
    return this.draw(t);
  }
  ellipse(u, e, C, B, g) {
    const t = this.gen.ellipse(u, e, C, B, g);
    return this.draw(t);
  }
  circle(u, e, C, B) {
    const g = this.gen.circle(u, e, C, B);
    return this.draw(g);
  }
  linearPath(u, e) {
    const C = this.gen.linearPath(u, e);
    return this.draw(C);
  }
  polygon(u, e) {
    const C = this.gen.polygon(u, e);
    return this.draw(C);
  }
  arc(u, e, C, B, g, t, i = !1, I) {
    const o = this.gen.arc(u, e, C, B, g, t, i, I);
    return this.draw(o);
  }
  curve(u, e) {
    const C = this.gen.curve(u, e);
    return this.draw(C);
  }
  path(u, e) {
    const C = this.gen.path(u, e);
    return this.draw(C);
  }
}
const ni = {
  canvas(A, u) {
    return new ziA(A, u);
  },
  svg(A, u) {
    return new PiA(A, u);
  },
  generator(A) {
    return new YQ(A);
  },
  newSeed() {
    return YQ.newSeed();
  }
};
function tF(A, u, e, C = (B) => B) {
  return A * C(0.5 - u * (0.5 - e));
}
function OiA(A) {
  return [-A[0], -A[1]];
}
function gB(A, u) {
  return [A[0] + u[0], A[1] + u[1]];
}
function kC(A, u) {
  return [A[0] - u[0], A[1] - u[1]];
}
function CB(A, u) {
  return [A[0] * u, A[1] * u];
}
function ViA(A, u) {
  return [A[0] / u, A[1] / u];
}
function No(A) {
  return [A[1], -A[0]];
}
function iF(A, u) {
  return A[0] * u[0] + A[1] * u[1];
}
function XiA(A, u) {
  return A[0] === u[0] && A[1] === u[1];
}
function _iA(A) {
  return Math.hypot(A[0], A[1]);
}
function $iA(A) {
  return A[0] * A[0] + A[1] * A[1];
}
function EF(A, u) {
  return $iA(kC(A, u));
}
function C8(A) {
  return ViA(A, _iA(A));
}
function AEA(A, u) {
  return Math.hypot(A[1] - u[1], A[0] - u[0]);
}
function Ro(A, u, e) {
  let C = Math.sin(e), B = Math.cos(e), g = A[0] - u[0], t = A[1] - u[1], i = g * B - t * C, I = g * C + t * B;
  return [i + u[0], I + u[1]];
}
function SD(A, u, e) {
  return gB(A, CB(kC(u, A), e));
}
function aF(A, u, e) {
  return gB(A, CB(u, e));
}
var { min: ya, PI: uEA } = Math, IF = 0.275, Mo = uEA + 1e-4;
function eEA(A, u = {}) {
  let { size: e = 16, smoothing: C = 0.5, thinning: B = 0.5, simulatePressure: g = !0, easing: t = (X) => X, start: i = {}, end: I = {}, last: o = !1 } = u, { cap: E = !0, easing: Q = (X) => X * (2 - X) } = i, { cap: s = !0, easing: l = (X) => --X * X * X + 1 } = I;
  if (A.length === 0 || e <= 0) return [];
  let c = A[A.length - 1].runningLength, D = i.taper === !1 ? 0 : i.taper === !0 ? Math.max(e, c) : i.taper, h = I.taper === !1 ? 0 : I.taper === !0 ? Math.max(e, c) : I.taper, F = Math.pow(e * C, 2), m = [], p = [], k = A.slice(0, 10).reduce((X, P) => {
    let _ = P.pressure;
    if (g) {
      let CA = ya(1, P.distance / e), T = ya(1, 1 - CA);
      _ = ya(1, X + (T - X) * (CA * IF));
    }
    return (X + _) / 2;
  }, A[0].pressure), b = tF(e, B, A[A.length - 1].pressure, t), f, L = A[0].vector, N = A[0].point, M = N, v = N, K = M, q = !1;
  for (let X = 0; X < A.length; X++) {
    let { pressure: P } = A[X], { point: _, vector: CA, distance: T, runningLength: gA } = A[X];
    if (X < A.length - 1 && c - gA < 3) continue;
    if (B) {
      if (g) {
        let WA = ya(1, T / e), ru = ya(1, 1 - WA);
        P = ya(1, k + (ru - k) * (WA * IF));
      }
      b = tF(e, B, P, t);
    } else b = e / 2;
    f === void 0 && (f = b);
    let GA = gA < D ? Q(gA / D) : 1, fA = c - gA < h ? l((c - gA) / h) : 1;
    b = Math.max(0.01, b * Math.min(GA, fA));
    let qA = (X < A.length - 1 ? A[X + 1] : A[X]).vector, JA = X < A.length - 1 ? iF(CA, qA) : 1, mA = iF(CA, L) < 0 && !q, FA = JA !== null && JA < 0;
    if (mA || FA) {
      let WA = CB(No(L), b);
      for (let ru = 1 / 13, _u = 0; _u <= 1; _u += ru) v = Ro(kC(_, WA), _, Mo * _u), m.push(v), K = Ro(gB(_, WA), _, Mo * -_u), p.push(K);
      N = v, M = K, FA && (q = !0);
      continue;
    }
    if (q = !1, X === A.length - 1) {
      let WA = CB(No(CA), b);
      m.push(kC(_, WA)), p.push(gB(_, WA));
      continue;
    }
    let TA = CB(No(SD(qA, CA, JA)), b);
    v = kC(_, TA), (X <= 1 || EF(N, v) > F) && (m.push(v), N = v), K = gB(_, TA), (X <= 1 || EF(M, K) > F) && (p.push(K), M = K), k = P, L = CA;
  }
  let j = A[0].point.slice(0, 2), uA = A.length > 1 ? A[A.length - 1].point.slice(0, 2) : gB(A[0].point, [1, 1]), O = [], $ = [];
  if (A.length === 1) {
    if (!(D || h) || o) {
      let X = aF(j, C8(No(kC(j, uA))), -(f || b)), P = [];
      for (let _ = 1 / 13, CA = _; CA <= 1; CA += _) P.push(Ro(X, j, Mo * 2 * CA));
      return P;
    }
  } else {
    if (!(D || h && A.length === 1)) if (E) for (let P = 1 / 13, _ = P; _ <= 1; _ += P) {
      let CA = Ro(p[0], j, Mo * _);
      O.push(CA);
    }
    else {
      let P = kC(m[0], p[0]), _ = CB(P, 0.5), CA = CB(P, 0.51);
      O.push(kC(j, _), kC(j, CA), gB(j, CA), gB(j, _));
    }
    let X = No(OiA(A[A.length - 1].vector));
    if (h || D && A.length === 1) $.push(uA);
    else if (s) {
      let P = aF(uA, X, b);
      for (let _ = 1 / 29, CA = _; CA < 1; CA += _) $.push(Ro(P, uA, Mo * 3 * CA));
    } else $.push(gB(uA, CB(X, b)), gB(uA, CB(X, b * 0.99)), kC(uA, CB(X, b * 0.99)), kC(uA, CB(X, b)));
  }
  return m.concat($, p.reverse(), O);
}
function CEA(A, u = {}) {
  var e;
  let { streamline: C = 0.5, size: B = 16, last: g = !1 } = u;
  if (A.length === 0) return [];
  let t = 0.15 + (1 - C) * 0.85, i = Array.isArray(A[0]) ? A : A.map(({ x: l, y: c, pressure: D = 0.5 }) => [l, c, D]);
  if (i.length === 2) {
    let l = i[1];
    i = i.slice(0, -1);
    for (let c = 1; c < 5; c++) i.push(SD(i[0], l, c / 4));
  }
  i.length === 1 && (i = [...i, [...gB(i[0], [1, 1]), ...i[0].slice(2)]]);
  let I = [{ point: [i[0][0], i[0][1]], pressure: i[0][2] >= 0 ? i[0][2] : 0.25, vector: [1, 1], distance: 0, runningLength: 0 }], o = !1, E = 0, Q = I[0], s = i.length - 1;
  for (let l = 1; l < i.length; l++) {
    let c = g && l === s ? i[l].slice(0, 2) : SD(Q.point, i[l], t);
    if (XiA(Q.point, c)) continue;
    let D = AEA(c, Q.point);
    if (E += D, l < s && !o) {
      if (E < B) continue;
      o = !0;
    }
    Q = { point: c, pressure: i[l][2] >= 0 ? i[l][2] : 0.5, vector: C8(kC(Q.point, c)), distance: D, runningLength: E }, I.push(Q);
  }
  return I[0].vector = ((e = I[1]) == null ? void 0 : e.vector) || [0, 0], I;
}
function BEA(A, u = {}) {
  return eEA(CEA(A, u), u);
}
function B8(A) {
  var u, e, C = "";
  if (typeof A == "string" || typeof A == "number")
    C += A;
  else if (typeof A == "object")
    if (Array.isArray(A))
      for (u = 0; u < A.length; u++)
        A[u] && (e = B8(A[u])) && (C && (C += " "), C += e);
    else
      for (u in A)
        A[u] && (C && (C += " "), C += u);
  return C;
}
function NA() {
  for (var A = 0, u, e, C = ""; A < arguments.length; )
    (u = arguments[A++]) && (e = B8(u)) && (C && (C += " "), C += e);
  return C;
}
function gEA(A, u) {
  return Math.sqrt(Gs(A, u));
}
function Gs(A, u) {
  return Math.pow(A[0] - u[0], 2) + Math.pow(A[1] - u[1], 2);
}
function tEA(A, u, e) {
  const C = Gs(u, e);
  if (C === 0)
    return Gs(A, u);
  let B = ((A[0] - u[0]) * (e[0] - u[0]) + (A[1] - u[1]) * (e[1] - u[1])) / C;
  return B = Math.max(0, Math.min(1, B)), Gs(A, CE(u, e, B));
}
function CE(A, u, e) {
  return [
    A[0] + (u[0] - A[0]) * e,
    A[1] + (u[1] - A[1]) * e
  ];
}
function iEA(A, u) {
  const e = A[u + 0], C = A[u + 1], B = A[u + 2], g = A[u + 3];
  let t = 3 * C[0] - 2 * e[0] - g[0];
  t *= t;
  let i = 3 * C[1] - 2 * e[1] - g[1];
  i *= i;
  let I = 3 * B[0] - 2 * g[0] - e[0];
  I *= I;
  let o = 3 * B[1] - 2 * g[1] - e[1];
  return o *= o, t < I && (t = I), i < o && (i = o), t + i;
}
function ND(A, u, e, C) {
  const B = C || [];
  if (iEA(A, u) < e) {
    const g = A[u + 0];
    B.length ? gEA(B[B.length - 1], g) > 1 && B.push(g) : B.push(g), B.push(A[u + 3]);
  } else {
    const t = A[u + 0], i = A[u + 1], I = A[u + 2], o = A[u + 3], E = CE(t, i, 0.5), Q = CE(i, I, 0.5), s = CE(I, o, 0.5), l = CE(E, Q, 0.5), c = CE(Q, s, 0.5), D = CE(l, c, 0.5);
    ND([t, E, l, D], 0, e, B), ND([D, c, s, o], 0, e, B);
  }
  return B;
}
function EEA(A, u) {
  return il(A, 0, A.length, u);
}
function il(A, u, e, C, B) {
  const g = B || [], t = A[u], i = A[e - 1];
  let I = 0, o = 1;
  for (let E = u + 1; E < e - 1; ++E) {
    const Q = tEA(A[E], t, i);
    Q > I && (I = Q, o = E);
  }
  return Math.sqrt(I) > C ? (il(A, u, o + 1, C, g), il(A, o, e, C, g)) : (g.length || g.push(t), g.push(i)), g;
}
function aEA(A, u = 0.15, e) {
  const C = [], B = (A.length - 1) / 3;
  for (let g = 0; g < B; g++) {
    const t = g * 3;
    ND(A, t, u, C);
  }
  return il(C, 0, C.length, e);
}
var Yo = {}, oF;
function IEA() {
  if (oF) return Yo;
  oF = 1, Object.defineProperty(Yo, "__esModule", { value: !0 }), Yo.sanitizeUrl = void 0;
  var A = /^([^\w]*)(javascript|data|vbscript)/im, u = /&#(\w+)(^\w|;)?/g, e = /&(newline|tab);/gi, C = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim, B = /^.+(:|&colon;)/gim, g = [".", "/"];
  function t(o) {
    return g.indexOf(o[0]) > -1;
  }
  function i(o) {
    return o.replace(u, function(E, Q) {
      return String.fromCharCode(Q);
    });
  }
  function I(o) {
    var E = i(o || "").replace(e, "").replace(C, "").trim();
    if (!E)
      return "about:blank";
    if (t(E))
      return E;
    var Q = E.match(B);
    if (!Q)
      return E;
    var s = Q[0];
    return A.test(s) ? "about:blank" : E;
  }
  return Yo.sanitizeUrl = I, Yo;
}
var oEA = IEA();
const g8 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
function Ka(A, u, e) {
  const C = e[0];
  if (u != null && A >= u)
    throw new Error(A + " >= " + u);
  if (A.slice(-1) === C || u && u.slice(-1) === C)
    throw new Error("trailing zero");
  if (u) {
    let t = 0;
    for (; (A[t] || C) === u[t]; )
      t++;
    if (t > 0)
      return u.slice(0, t) + Ka(A.slice(t), u.slice(t), e);
  }
  const B = A ? e.indexOf(A[0]) : 0, g = u != null ? e.indexOf(u[0]) : e.length;
  if (g - B > 1) {
    const t = Math.round(0.5 * (B + g));
    return e[t];
  } else
    return u && u.length > 1 ? u.slice(0, 1) : e[B] + Ka(A.slice(1), null, e);
}
function t8(A) {
  if (A.length !== i8(A[0]))
    throw new Error("invalid integer part of order key: " + A);
}
function i8(A) {
  if (A >= "a" && A <= "z")
    return A.charCodeAt(0) - 97 + 2;
  if (A >= "A" && A <= "Z")
    return 90 - A.charCodeAt(0) + 2;
  throw new Error("invalid order key head: " + A);
}
function $o(A) {
  const u = i8(A[0]);
  if (u > A.length)
    throw new Error("invalid order key: " + A);
  return A.slice(0, u);
}
function QF(A, u) {
  if (A === "A" + u[0].repeat(26))
    throw new Error("invalid order key: " + A);
  const e = $o(A);
  if (A.slice(e.length).slice(-1) === u[0])
    throw new Error("invalid order key: " + A);
}
function nF(A, u) {
  t8(A);
  const [e, ...C] = A.split("");
  let B = !0;
  for (let g = C.length - 1; B && g >= 0; g--) {
    const t = u.indexOf(C[g]) + 1;
    t === u.length ? C[g] = u[0] : (C[g] = u[t], B = !1);
  }
  if (B) {
    if (e === "Z")
      return "a" + u[0];
    if (e === "z")
      return null;
    const g = String.fromCharCode(e.charCodeAt(0) + 1);
    return g > "a" ? C.push(u[0]) : C.pop(), g + C.join("");
  } else
    return e + C.join("");
}
function QEA(A, u) {
  t8(A);
  const [e, ...C] = A.split("");
  let B = !0;
  for (let g = C.length - 1; B && g >= 0; g--) {
    const t = u.indexOf(C[g]) - 1;
    t === -1 ? C[g] = u.slice(-1) : (C[g] = u[t], B = !1);
  }
  if (B) {
    if (e === "a")
      return "Z" + u.slice(-1);
    if (e === "A")
      return null;
    const g = String.fromCharCode(e.charCodeAt(0) - 1);
    return g < "Z" ? C.push(u.slice(-1)) : C.pop(), g + C.join("");
  } else
    return e + C.join("");
}
function ba(A, u, e = g8) {
  if (A != null && QF(A, e), u != null && QF(u, e), A != null && u != null && A >= u)
    throw new Error(A + " >= " + u);
  if (A == null) {
    if (u == null)
      return "a" + e[0];
    const I = $o(u), o = u.slice(I.length);
    if (I === "A" + e[0].repeat(26))
      return I + Ka("", o, e);
    if (I < u)
      return I;
    const E = QEA(I, e);
    if (E == null)
      throw new Error("cannot decrement any more");
    return E;
  }
  if (u == null) {
    const I = $o(A), o = A.slice(I.length), E = nF(I, e);
    return E ?? I + Ka(o, null, e);
  }
  const C = $o(A), B = A.slice(C.length), g = $o(u), t = u.slice(g.length);
  if (C === g)
    return C + Ka(B, t, e);
  const i = nF(C, e);
  if (i == null)
    throw new Error("cannot increment any more");
  return i < u ? i : C + Ka(B, null, e);
}
function RD(A, u, e, C = g8) {
  if (e === 0)
    return [];
  if (e === 1)
    return [ba(A, u, C)];
  if (u == null) {
    let t = ba(A, u, C);
    const i = [t];
    for (let I = 0; I < e - 1; I++)
      t = ba(t, u, C), i.push(t);
    return i;
  }
  if (A == null) {
    let t = ba(A, u, C);
    const i = [t];
    for (let I = 0; I < e - 1; I++)
      t = ba(A, t, C), i.push(t);
    return i.reverse(), i;
  }
  const B = Math.floor(e / 2), g = ba(A, u, C);
  return [
    ...RD(A, g, B, C),
    g,
    ...RD(g, u, e - B - 1, C)
  ];
}
var nEA = (A, u) => u.reduce((e, C) => (C in A && (e[C] = A[C]), e), {}), rEA = 5, va = 5, sEA = 4, AQ = 4, uQ = 1, AB = [0, 2, 4, 6, 8], uB = (A, u) => u.map((e) => X0[A][e]), ou = { transparent: "transparent", black: "#1e1e1e", white: "#ffffff", gray: uB("gray", AB), red: uB("red", AB), pink: uB("pink", AB), grape: uB("grape", AB), violet: uB("violet", AB), blue: uB("blue", AB), cyan: uB("cyan", AB), teal: uB("teal", AB), green: uB("green", AB), yellow: uB("yellow", AB), orange: uB("orange", AB), bronze: ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"] }, E8 = nEA(ou, ["cyan", "blue", "violet", "grape", "pink", "green", "teal", "yellow", "orange", "red"]), a8 = [ou.black, ou.red[AQ], ou.green[AQ], ou.blue[AQ], ou.yellow[AQ]], I8 = [ou.transparent, ou.red[uQ], ou.green[uQ], ou.blue[uQ], ou.yellow[uQ]], o8 = [ou.white, "#f8f9fa", "#f5faff", "#fffce8", "#fdf8f6"], lEA = { transparent: ou.transparent, white: ou.white, gray: ou.gray, black: ou.black, bronze: ou.bronze, ...E8 }, cEA = { transparent: ou.transparent, white: ou.white, gray: ou.gray, black: ou.black, bronze: ou.bronze, ...E8 }, dEA = (A) => [ou.cyan[A], ou.blue[A], ou.violet[A], ou.grape[A], ou.pink[A], ou.green[A], ou.teal[A], ou.yellow[A], ou.orange[A], ou.red[A]], DEA = (A, u, e) => `#${((1 << 24) + (A << 16) + (u << 8) + e).toString(16).slice(1)}`, _B = /Mac|iPod|iPhone|iPad/.test(navigator.platform), Q8 = /^Win/.test(navigator.platform), hEA = /\b(android)\b/i.test(navigator.userAgent), vQ = "netscape" in window && navigator.userAgent.indexOf("rv:") > 1 && navigator.userAgent.indexOf("Gecko") > 1, wEA = navigator.userAgent.indexOf("Chrome") !== -1, FEA = !wEA && navigator.userAgent.indexOf("Safari") !== -1, n8 = /iPad|iPhone/.test(navigator.platform) || navigator.userAgent.includes("Mac") && "ontouchend" in document, pEA = () => navigator.brave?.isBrave?.name === "isBrave", MD = typeof window < "u" && "ResizeObserver" in window, YD = "Excalidraw", mEA = 36, BE = 10, fs = 8, kEA = 5, rF = 1, yEA = 30, gi = Math.PI / 12, bEA = "red", Ru = { TEXT: "text", CROSSHAIR: "crosshair", GRABBING: "grabbing", GRAB: "grab", POINTER: "pointer", MOVE: "move", AUTO: "" }, Jt = { MAIN: 0, WHEEL: 1, SECONDARY: 2, TOUCH: -1, ERASER: 5 }, Ua = { enabled: "all", disabled: "none" }, us = { UNSTARTED: -1, ENDED: 0, PLAYING: 1, PAUSED: 2, BUFFERING: 3, CUED: 5 }, Oe = { TEST: "test" }, CI = { SHAPE_ACTIONS_MENU: "App-menu__left", ZOOM_ACTIONS: "zoom-actions", SEARCH_MENU_INPUT_WRAPPER: "layer-ui__search-inputWrapper" }, Ja = "Xiaolai", HQ = "Segoe UI Emoji", t0 = { Virgil: 1, Helvetica: 2, Cascadia: 3, Excalifont: 5, Nunito: 6, "Lilita One": 7, "Comic Shanns": 8, "Liberation Sans": 9 }, Za = { [Ja]: 100, [HQ]: 1e3 }, r8 = (A) => {
  switch (A) {
    case t0.Excalifont:
      return [Ja, HQ];
    default:
      return [HQ];
  }
}, su = { LIGHT: "light", DARK: "dark" }, i0 = { strokeColor: "#bbb", strokeWidth: 2, strokeStyle: "solid", fillStyle: "solid", roughness: 0, roundness: null, backgroundColor: "transparent", radius: 8, nameOffsetY: 3, nameColorLightTheme: "#999999", nameColorDarkTheme: "#7a7a7a", nameFontSize: 14, nameLineHeight: 1.25 }, $1 = 1, ut = 20, ri = t0.Excalifont, Qn = "left", El = "top", UE = 2, al = 2 * UE, UEA = 1e-5, GEA = 2 * al - UEA, es = "#ffffff", fEA = "#1e1e1e", LEA = "#a2f1a6", Il = 20, s8 = 5, KQ = { svg: "image/svg+xml", png: "image/png", jpg: "image/jpeg", gif: "image/gif", webp: "image/webp", bmp: "image/bmp", ico: "image/x-icon", avif: "image/avif", jfif: "image/jfif" }, zA = { text: "text/plain", html: "text/html", json: "application/json", excalidraw: "application/vnd.excalidraw+json", excalidrawlib: "application/vnd.excalidrawlib+json", "excalidraw.svg": "image/svg+xml", "excalidraw.png": "image/png", binary: "application/octet-stream", ...KQ }, xEA = [zA.text, zA.html, ...Object.values(KQ)], hd = { png: "png", svg: "svg", clipboard: "clipboard" }, LC = { excalidraw: "excalidraw", excalidrawClipboard: "excalidraw/clipboard", excalidrawLibrary: "excalidrawlib", excalidrawClipboardWithAPI: "excalidraw-api/clipboard" }, A2 = window.EXCALIDRAW_EXPORT_SOURCE || window.location.origin, SEA = 500, NEA = 300, REA = 500, MEA = 100, t4 = 0.1, u2 = 0.1, e2 = 30, YEA = 300, C2 = "invert(93%) hue-rotate(180deg)", vD = { addLibrary: "addLibrary" }, HD = { addLibrary: "addLibrary" }, sF = { canvasActions: { changeViewBackgroundColor: !0, clearCanvas: !0, export: { saveFileToDisk: !0 }, loadScene: !0, saveToActiveFile: !0, toggleTheme: null, saveAsImage: !0 } }, vEA = 730, HEA = 1e3, KEA = 500, JEA = 1229, vo = 2, B2 = [1, 2, 3], pI = 10, ZEA = 1440, lF = 4 * 1024 * 1024, pu = "http://www.w3.org/2000/svg", i4 = { excalidraw: 2, excalidrawLibrary: 2 }, L0 = 5, qEA = 0.7, WEA = 11, IC = { TOP: "top", MIDDLE: "middle", BOTTOM: "bottom" }, JQ = { LEFT: "left", CENTER: "center", RIGHT: "right" }, jEA = 20, wd = 0.25, TEA = 32, x0 = { LEGACY: 1, PROPORTIONAL_RADIUS: 2, ADAPTIVE_RADIUS: 3 }, l8 = { artist: 1, cartoonist: 2 }, Fd = { thin: 1, bold: 2, extraBold: 4 }, n0 = { strokeColor: ou.black, backgroundColor: ou.transparent, fillStyle: "solid", strokeWidth: 2, strokeStyle: "solid", roughness: l8.artist, opacity: 100, locked: !1 }, ol = "library", Xa = "search", rB = { name: "default", defaultTab: ol }, c8 = /* @__PURE__ */ new Set(["iframe", "embeddable", "image"]), H0 = { selection: "selection", rectangle: "rectangle", diamond: "diamond", ellipse: "ellipse", text: "text", image: "image", eraser: "eraser", frame: "frame", magicframe: "magicframe", laser: "laser" }, rQ = { MERMAID_TO_EXCALIDRAW: "mermaid-to-excalidraw", PUBLISH_LIBRARY: "publish-library-data" }, d8 = "Untitled", qa = { generalStats: 1, elementProperties: 2 }, yC = 1, P0 = { sharp: "sharp", round: "round", elbow: "elbow" }, D8 = 0.3, Ql = "element", zEA = Symbol.for("__test__originalId__"), PEA = ((A) => (A.ACTIVE = "active", A.AWAY = "away", A.IDLE = "idle", A))(PEA || {}), OEA = B2.includes(devicePixelRatio) ? devicePixelRatio : 1, $B = () => ({ showWelcomeScreen: !1, theme: su.LIGHT, collaborators: /* @__PURE__ */ new Map(), currentChartType: "bar", currentItemBackgroundColor: n0.backgroundColor, currentItemEndArrowhead: "arrow", currentItemFillStyle: n0.fillStyle, currentItemFontFamily: ri, currentItemFontSize: ut, currentItemOpacity: n0.opacity, currentItemRoughness: n0.roughness, currentItemStartArrowhead: null, currentItemStrokeColor: n0.strokeColor, currentItemRoundness: "round", currentItemArrowType: P0.round, currentItemStrokeStyle: n0.strokeStyle, currentItemStrokeWidth: n0.strokeWidth, currentItemTextAlign: Qn, currentHoveredFontFamily: null, cursorButton: "up", activeEmbeddable: null, newElement: null, editingTextElement: null, editingGroupId: null, editingLinearElement: null, activeTool: { type: "selection", customType: null, locked: n0.locked, lastActiveTool: null }, penMode: !1, penDetected: !1, errorMessage: null, exportBackground: !0, exportScale: OEA, exportEmbedScene: !1, exportWithDarkMode: !1, fileHandle: null, gridSize: Il, gridStep: s8, gridModeEnabled: !1, isBindingEnabled: !0, defaultSidebarDockedPreference: !1, isLoading: !1, isResizing: !1, isRotating: !1, lastPointerDownWith: "mouse", multiElement: null, name: null, contextMenu: null, openMenu: null, openPopup: null, openSidebar: null, openDialog: null, pasteDialog: { shown: !1, data: null }, previousSelectedElementIds: {}, resizingElement: null, scrolledOutside: !1, scrollX: 0, scrollY: 0, selectedElementIds: {}, hoveredElementIds: {}, selectedGroupIds: {}, selectedElementsAreBeingDragged: !1, selectionElement: null, shouldCacheIgnoreZoom: !1, stats: { open: !1, panels: qa.generalStats | qa.elementProperties }, startBoundElement: null, suggestedBindings: [], frameRendering: { enabled: !0, clip: !0, name: !0, outline: !0 }, frameToHighlight: null, editingFrame: null, elementsToHighlight: null, toast: null, viewBackgroundColor: ou.white, zenModeEnabled: !1, zoom: { value: 1 }, viewModeEnabled: !1, pendingImageElementId: null, showHyperlinkPopup: !1, selectedLinearElement: null, snapLines: [], originSnapOffset: { x: 0, y: 0 }, objectsSnapModeEnabled: !1, userToFollow: null, followedBy: /* @__PURE__ */ new Set(), isCropping: !1, croppingElementId: null, searchMatches: [] }), VEA = /* @__PURE__ */ ((A) => A)({ showWelcomeScreen: { browser: !0, export: !1, server: !1 }, theme: { browser: !0, export: !1, server: !1 }, collaborators: { browser: !1, export: !1, server: !1 }, currentChartType: { browser: !0, export: !1, server: !1 }, currentItemBackgroundColor: { browser: !0, export: !1, server: !1 }, currentItemEndArrowhead: { browser: !0, export: !1, server: !1 }, currentItemFillStyle: { browser: !0, export: !1, server: !1 }, currentItemFontFamily: { browser: !0, export: !1, server: !1 }, currentItemFontSize: { browser: !0, export: !1, server: !1 }, currentItemRoundness: { browser: !0, export: !1, server: !1 }, currentItemArrowType: { browser: !0, export: !1, server: !1 }, currentItemOpacity: { browser: !0, export: !1, server: !1 }, currentItemRoughness: { browser: !0, export: !1, server: !1 }, currentItemStartArrowhead: { browser: !0, export: !1, server: !1 }, currentItemStrokeColor: { browser: !0, export: !1, server: !1 }, currentItemStrokeStyle: { browser: !0, export: !1, server: !1 }, currentItemStrokeWidth: { browser: !0, export: !1, server: !1 }, currentItemTextAlign: { browser: !0, export: !1, server: !1 }, currentHoveredFontFamily: { browser: !1, export: !1, server: !1 }, cursorButton: { browser: !0, export: !1, server: !1 }, activeEmbeddable: { browser: !1, export: !1, server: !1 }, newElement: { browser: !1, export: !1, server: !1 }, editingTextElement: { browser: !1, export: !1, server: !1 }, editingGroupId: { browser: !0, export: !1, server: !1 }, editingLinearElement: { browser: !1, export: !1, server: !1 }, activeTool: { browser: !0, export: !1, server: !1 }, penMode: { browser: !0, export: !1, server: !1 }, penDetected: { browser: !0, export: !1, server: !1 }, errorMessage: { browser: !1, export: !1, server: !1 }, exportBackground: { browser: !0, export: !1, server: !1 }, exportEmbedScene: { browser: !0, export: !1, server: !1 }, exportScale: { browser: !0, export: !1, server: !1 }, exportWithDarkMode: { browser: !0, export: !1, server: !1 }, fileHandle: { browser: !1, export: !1, server: !1 }, gridSize: { browser: !0, export: !0, server: !0 }, gridStep: { browser: !0, export: !0, server: !0 }, gridModeEnabled: { browser: !0, export: !0, server: !0 }, height: { browser: !1, export: !1, server: !1 }, isBindingEnabled: { browser: !1, export: !1, server: !1 }, defaultSidebarDockedPreference: { browser: !0, export: !1, server: !1 }, isLoading: { browser: !1, export: !1, server: !1 }, isResizing: { browser: !1, export: !1, server: !1 }, isRotating: { browser: !1, export: !1, server: !1 }, lastPointerDownWith: { browser: !0, export: !1, server: !1 }, multiElement: { browser: !1, export: !1, server: !1 }, name: { browser: !0, export: !1, server: !1 }, offsetLeft: { browser: !1, export: !1, server: !1 }, offsetTop: { browser: !1, export: !1, server: !1 }, contextMenu: { browser: !1, export: !1, server: !1 }, openMenu: { browser: !0, export: !1, server: !1 }, openPopup: { browser: !1, export: !1, server: !1 }, openSidebar: { browser: !0, export: !1, server: !1 }, openDialog: { browser: !1, export: !1, server: !1 }, pasteDialog: { browser: !1, export: !1, server: !1 }, previousSelectedElementIds: { browser: !0, export: !1, server: !1 }, resizingElement: { browser: !1, export: !1, server: !1 }, scrolledOutside: { browser: !0, export: !1, server: !1 }, scrollX: { browser: !0, export: !1, server: !1 }, scrollY: { browser: !0, export: !1, server: !1 }, selectedElementIds: { browser: !0, export: !1, server: !1 }, hoveredElementIds: { browser: !1, export: !1, server: !1 }, selectedGroupIds: { browser: !0, export: !1, server: !1 }, selectedElementsAreBeingDragged: { browser: !1, export: !1, server: !1 }, selectionElement: { browser: !1, export: !1, server: !1 }, shouldCacheIgnoreZoom: { browser: !0, export: !1, server: !1 }, stats: { browser: !0, export: !1, server: !1 }, startBoundElement: { browser: !1, export: !1, server: !1 }, suggestedBindings: { browser: !1, export: !1, server: !1 }, frameRendering: { browser: !1, export: !1, server: !1 }, frameToHighlight: { browser: !1, export: !1, server: !1 }, editingFrame: { browser: !1, export: !1, server: !1 }, elementsToHighlight: { browser: !1, export: !1, server: !1 }, toast: { browser: !1, export: !1, server: !1 }, viewBackgroundColor: { browser: !0, export: !0, server: !0 }, width: { browser: !1, export: !1, server: !1 }, zenModeEnabled: { browser: !0, export: !1, server: !1 }, zoom: { browser: !0, export: !1, server: !1 }, viewModeEnabled: { browser: !1, export: !1, server: !1 }, pendingImageElementId: { browser: !1, export: !1, server: !1 }, showHyperlinkPopup: { browser: !1, export: !1, server: !1 }, selectedLinearElement: { browser: !0, export: !1, server: !1 }, snapLines: { browser: !1, export: !1, server: !1 }, originSnapOffset: { browser: !1, export: !1, server: !1 }, objectsSnapModeEnabled: { browser: !0, export: !1, server: !1 }, userToFollow: { browser: !1, export: !1, server: !1 }, followedBy: { browser: !1, export: !1, server: !1 }, isCropping: { browser: !1, export: !1, server: !1 }, croppingElementId: { browser: !1, export: !1, server: !1 }, searchMatches: { browser: !1, export: !1, server: !1 } }), h8 = (A, u) => {
  let e = {};
  for (let C of Object.keys(A)) if (VEA[C]?.[u]) {
    let B = A[C];
    e[C] = B;
  }
  return e;
}, w8 = (A) => h8(A, "export"), XEA = (A) => h8(A, "server"), KB = ({ activeTool: A }) => A.type === "eraser", BI = ({ activeTool: A }) => A.type === "hand", Qu = (A, u, e) => Math.min(Math.max(A, u), e), VB = (A, u, e = "round") => {
  let C = Math.pow(10, u);
  return Math[e]((A + Number.EPSILON) * C) / C;
}, _EA = (A, u, e = "round") => {
  let C = 1 / u;
  return Math[e](A * C) / C;
}, Cs = (A, u) => (A + u) / 2, sQ = (A) => typeof A == "number" && Number.isFinite(A), cF = (A, u, e = 1e-4) => Math.abs(A - u) < e, nl = (A) => A < 0 ? A + 2 * Math.PI : A >= 2 * Math.PI ? A - 2 * Math.PI : A;
function cE(A) {
  return A * Math.PI / 180;
}
function nn(A) {
  return A * 180 / Math.PI;
}
function $EA(A) {
  return Math.abs(Math.sin(2 * A)) < 1e-4;
}
function te(A, u, e = 0, C = 0) {
  return [A - e, u - C];
}
function vA(A, u = [0, 0]) {
  return te(A[0] - u[0], A[1] - u[1]);
}
function v0(A, u) {
  return A[0] * u[1] - u[0] * A[1];
}
function dF(A, u) {
  return A[0] * u[0] + A[1] * u[1];
}
function Vt(A, u) {
  return [A[0] + u[0], A[1] + u[1]];
}
function rl(A, u) {
  return [A[0] - u[0], A[1] - u[1]];
}
function s0(A, u) {
  return te(A[0] * u, A[1] * u);
}
function AaA(A) {
  return A[0] * A[0] + A[1] * A[1];
}
function uaA(A) {
  return Math.sqrt(AaA(A));
}
var de = (A) => {
  let u = uaA(A);
  return u === 0 ? te(0, 0) : te(A[0] / u, A[1] / u);
};
function U(A, u) {
  return [A, u];
}
function g2(A) {
  return A.length === 2 ? U(A[0], A[1]) : void 0;
}
function nu(A, u = U(0, 0)) {
  return U(u[0] + A[0], u[1] + A[1]);
}
function eaA(A) {
  return Array.isArray(A) && A.length === 2 && typeof A[0] == "number" && !isNaN(A[0]) && typeof A[1] == "number" && !isNaN(A[1]);
}
function dB(A, u) {
  let e = Math.abs;
  return e(A[0] - u[0]) < 1e-4 && e(A[1] - u[1]) < 1e-4;
}
function EA([A, u], [e, C], B) {
  return U((A - e) * Math.cos(B) - (u - C) * Math.sin(B) + e, (A - e) * Math.sin(B) + (u - C) * Math.cos(B) + C);
}
function sl(A, u = [0, 0]) {
  return U(A[0] + u[0], A[1] + u[1]);
}
function rn(A, u) {
  return U((A[0] + u[0]) / 2, (A[1] + u[1]) / 2);
}
function Uu(A, u) {
  return Math.hypot(u[0] - A[0], u[1] - A[1]);
}
function ZQ(A, u) {
  let e = u[0] - A[0], C = u[1] - A[1];
  return e * e + C * C;
}
var Gg = (A, u, e) => sl(u, s0(vA(A, u), e)), F8 = (A, u, e) => u[0] <= Math.max(A[0], e[0]) && u[0] >= Math.min(A[0], e[0]) && u[1] <= Math.max(A[1], e[1]) && u[1] >= Math.min(A[1], e[1]);
function KD(A, u) {
  return [A, u];
}
function CaA(A, u) {
  let e = A[1][1] - A[0][1], C = A[0][0] - A[1][0], B = u[1][1] - u[0][1], g = u[0][0] - u[1][0], t = e * g - B * C;
  if (t !== 0) {
    let i = e * A[0][0] + C * A[0][1], I = B * u[0][0] + g * u[0][1];
    return U((i * g - I * C) / t, (e * I - B * i) / t);
  }
  return null;
}
function KA(A, u) {
  return [A, u];
}
var GE = (A, u, e = 1e-4) => {
  let C = t2(A, u);
  return C === 0 ? !0 : C < e;
}, t2 = (A, u) => {
  let [e, C] = A, [[B, g], [t, i]] = u, I = e - B, o = C - g, E = t - B, Q = i - g, s = I * E + o * Q, l = E * E + Q * Q, c = -1;
  l !== 0 && (c = s / l);
  let D, h;
  c < 0 ? (D = B, h = g) : c > 1 ? (D = t, h = i) : (D = B + c * E, h = g + c * Q);
  let F = e - D, m = C - h;
  return Math.sqrt(F * F + m * m);
};
function qQ(A, u) {
  let e = CaA(KD(A[0], A[1]), KD(u[0], u[1]));
  return !e || !GE(e, u) || !GE(e, A) ? null : e;
}
function JD(A, u) {
  return [A, u];
}
function BaA(A, u) {
  return [KA(A[0], U(A[1][0], A[0][1])), KA(U(A[1][0], A[0][1]), A[1]), KA(A[1], U(A[0][0], A[1][1])), KA(U(A[0][0], A[1][1]), A[0])].map((e) => qQ(u, e)).filter((e) => !!e);
}
function Mg(A, u, e, C) {
  return [A, u, e, C];
}
function DF(A, u, e, C = 1e-6) {
  return [(A(u + C, e) - A(u - C, e)) / (2 * C), (A(u, e + C) - A(u, e - C)) / (2 * C)];
}
function gaA(A, u, e, C = 1e-3, B = 10) {
  let g = 1 / 0, t = 0;
  for (; g >= C; ) {
    if (t >= B) return null;
    let i = A(u, e), I = [DF((D, h) => A(D, h)[0], u, e), DF((D, h) => A(D, h)[1], u, e)], o = [[-i[0]], [-i[1]]], E = I[0][0] * I[1][1] - I[0][1] * I[1][0];
    if (E === 0) return null;
    let Q = [[I[1][1] / E, -I[0][1] / E], [-I[1][0] / E, I[0][0] / E]], s = [[Q[0][0] * o[0][0] + Q[0][1] * o[1][0]], [Q[1][0] * o[0][0] + Q[1][1] * o[1][0]]];
    u = u + s[0][0], e = e + s[1][0];
    let [l, c] = A(u, e);
    g = Math.max(Math.abs(l), Math.abs(c)), t += 1;
  }
  return [u, e];
}
var lQ = (A, u) => U((1 - u) ** 3 * A[0][0] + 3 * (1 - u) ** 2 * u * A[1][0] + 3 * (1 - u) * u ** 2 * A[2][0] + u ** 3 * A[3][0], (1 - u) ** 3 * A[0][1] + 3 * (1 - u) ** 2 * u * A[1][1] + 3 * (1 - u) * u ** 2 * A[2][1] + u ** 3 * A[3][1]);
function p8(A, u) {
  let e = iaA(A);
  if (BaA(JD(U(e[0], e[1]), U(e[2], e[3])), u).length === 0) return [];
  let C = (i) => U(u[0][0] + i * (u[1][0] - u[0][0]), u[0][1] + i * (u[1][1] - u[0][1])), B = [[0.5, 0], [0.2, 0], [0.8, 0]], g = ([i, I]) => {
    let o = gaA((s, l) => {
      let c = lQ(A, s), D = C(l);
      return [c[0] - D[0], c[1] - D[1]];
    }, i, I);
    if (!o) return null;
    let [E, Q] = o;
    return E < 0 || E > 1 || Q < 0 || Q > 1 ? null : lQ(A, E);
  }, t = g(B[0]);
  return t ? [t] : (t = g(B[1]), t ? [t] : (t = g(B[2]), t ? [t] : []));
}
function taA(A, u, e = 1e-3) {
  let C = (I, o, E, Q = e) => {
    let s = I, l = o, c;
    for (; l - s > Q; ) c = (l + s) / 2, E(c - Q) < E(c + Q) ? l = c : s = c;
    return c;
  }, B = 0;
  for (let I = 1 / 0, o = 0; o < 30; o++) {
    let E = Uu(u, lQ(A, o / 30));
    E < I && (I = E, B = o);
  }
  let g = Math.max((B - 1) / 30, 0), t = Math.min((B + 1) / 30, 1), i = C(g, t, (I) => Uu(u, lQ(A, I)));
  return i ? lQ(A, i) : null;
}
function m8(A, u) {
  let e = taA(A, u);
  return e ? Uu(u, e) : 0;
}
function iaA(A) {
  let [u, e, C, B] = A, g = [u[0], e[0], C[0], B[0]], t = [u[1], e[1], C[1], B[1]];
  return [Math.min(...g), Math.min(...t), Math.max(...g), Math.max(...t)];
}
function hF(...A) {
  return k8(A);
}
function ll(A) {
  return k8(A);
}
var wF = (A, u) => {
  let e = A[0], C = A[1], B = !1;
  for (let g = 0, t = u.length - 1; g < u.length; t = g++) {
    let i = u[g][0], I = u[g][1], o = u[t][0], E = u[t][1];
    (I > C && E <= C || I <= C && E > C) && e < (o - i) * (C - I) / (E - I) + i && (B = !B);
  }
  return B;
}, EaA = (A, u, e = 1e-4) => {
  let C = !1;
  for (let B = 0, g = u.length - 1; B < g; B++) if (GE(A, KA(u[B], u[B + 1]), e)) {
    C = !0;
    break;
  }
  return C;
};
function k8(A) {
  return aaA(A) ? A : [...A, A[0]];
}
function aaA(A) {
  return dB(A[0], A[A.length - 1]);
}
function se(A, u) {
  return NC([A, u]);
}
var cl = ([A, u], [e, C]) => A <= e ? u >= e : A >= e ? C >= A : !1, dl = ([A, u], [e, C]) => {
  let B = Math.max(A, e), g = Math.min(u, C);
  return B <= g ? NC([B, g]) : null;
}, Bs = (A, [u, e]) => A >= u && A <= e;
function Ga([A, u, e], C) {
  let B = (E, Q, s) => (E[0] - s[0]) * (Q[1] - s[1]) - (Q[0] - s[0]) * (E[1] - s[1]), g = B(C, A, u), t = B(C, u, e), i = B(C, e, A), I = g < 0 || t < 0 || i < 0, o = g > 0 || t > 0 || i > 0;
  return !(I && o);
}
var FF = () => {
  let A = /* @__PURE__ */ new Date(), u = A.getFullYear(), e = `${A.getMonth() + 1}`.padStart(2, "0"), C = `${A.getDate()}`.padStart(2, "0"), B = `${A.getHours()}`.padStart(2, "0"), g = `${A.getMinutes()}`.padStart(2, "0");
  return `${u}-${e}-${C}-${B}${g}`;
}, cQ = (A) => A.charAt(0).toUpperCase() + A.slice(1), IaA = (A) => A instanceof HTMLElement && A.className.includes("ToolIcon"), ZD = (A) => A instanceof HTMLElement && A.dataset.type === "wysiwyg" || A instanceof HTMLBRElement || A instanceof HTMLInputElement || A instanceof HTMLTextAreaElement || A instanceof HTMLSelectElement, oaA = (A) => ZD(A) || A instanceof Element && !!A.closest("label, button"), tE = (A) => A instanceof HTMLElement && A.dataset.type === "wysiwyg" || A instanceof HTMLBRElement || A instanceof HTMLTextAreaElement || A instanceof HTMLInputElement && (A.type === "text" || A.type === "number" || A.type === "password"), gI = ({ fontFamily: A }) => {
  for (let [u, e] of Object.entries(t0)) if (e === A) return `${u}${r8(e).map((C) => `, ${C}`).join("")}`;
  return HQ;
}, vu = ({ fontSize: A, fontFamily: u }) => `${A}px ${gI({ fontFamily: u })}`, tI = (A, u) => {
  let e = 0, C = null, B = (...g) => {
    C = g, clearTimeout(e), e = window.setTimeout(() => {
      C = null, A(...g);
    }, u);
  };
  return B.flush = () => {
    if (clearTimeout(e), C) {
      let g = C;
      C = null, A(...g);
    }
  }, B.cancel = () => {
    C = null, clearTimeout(e);
  }, B;
}, E4 = (A, u) => {
  let e = null, C = null, B = null, g = (i) => {
    e = window.requestAnimationFrame(() => {
      e = null, A(...i), C = null, B && (C = B, B = null, g(C));
    });
  }, t = (...i) => {
    if (tu.MODE === "test") {
      A(...i);
      return;
    }
    C = i, e === null ? g(C) : u?.trailing && (B = i);
  };
  return t.flush = () => {
    e !== null && (cancelAnimationFrame(e), e = null), C && (A(...B || C), C = B = null);
  }, t.cancel = () => {
    C = B = null, e !== null && (cancelAnimationFrame(e), e = null);
  }, t;
}, dE = (A) => 1 - Math.pow(1 - A, 4), pF = (A, u, e) => (u - A) * dE(e) + A, QaA = ({ fromValues: A, toValues: u, onStep: e, duration: C = 250, interpolateValue: B, onStart: g, onEnd: t, onCancel: i }) => {
  let I = !1, o = 0, E;
  function Q(s) {
    if (I) return;
    E === void 0 && (E = s, g?.());
    let l = Math.min(s - E, C), c = dE(l / C), D = {};
    if (Object.keys(A).forEach((h) => {
      let F = h, m = (u[F] - A[F]) * c + A[F];
      D[F] = m;
    }), e(D), l < C) {
      let h = l / C, F = {};
      Object.keys(A).forEach((m) => {
        let p = m, k = A[p], b = u[p], f;
        f = B ? B(k, b, h, p) : pF(k, b, h), f == null && (f = pF(k, b, h)), F[p] = f;
      }), e(F), o = window.requestAnimationFrame(Q);
    } else e(u), t?.();
  }
  return o = window.requestAnimationFrame(Q), () => {
    i?.(), I = !0, window.cancelAnimationFrame(o);
  };
}, naA = (A, u) => {
  if (!A.length || u < 1) return [];
  let e = 0, C = 0, B = Array(Math.ceil(A.length / u));
  for (; e < A.length; ) B[C++] = A.slice(e, e += u);
  return B;
}, le = (A, u) => Math.abs(A - u), b0 = (A, u) => u.type === "custom" ? { ...A.activeTool, type: "custom", customType: u.customType, locked: u.locked ?? A.activeTool.locked } : { ...A.activeTool, lastActiveTool: u.lastActiveToolBeforeEraser === void 0 ? A.activeTool.lastActiveTool : u.lastActiveToolBeforeEraser, type: u.type, customType: null, locked: u.locked ?? A.activeTool.locked }, QA = (A) => (A = A.replace(/\bAlt\b/i, "Alt").replace(/\bShift\b/i, "Shift").replace(/\b(Enter|Return)\b/i, "Enter"), _B ? A.replace(/\bCtrlOrCmd\b/gi, "Cmd").replace(/\bAlt\b/i, "Option") : A.replace(/\bCtrlOrCmd\b/gi, "Ctrl")), Tu = ({ clientX: A, clientY: u }, { zoom: e, offsetLeft: C, offsetTop: B, scrollX: g, scrollY: t }) => {
  let i = (A - C) / e.value - g, I = (u - B) / e.value - t;
  return { x: i, y: I };
}, EB = ({ sceneX: A, sceneY: u }, { zoom: e, offsetLeft: C, offsetTop: B, scrollX: g, scrollY: t }) => {
  let i = (A + g) * e.value + C, I = (u + t) * e.value + B;
  return { x: i, y: I };
}, gs = (A) => getComputedStyle(document.documentElement).getPropertyValue(`--${A}`), raA = "A-Za-zÀ-ÖØ-öø-ʸ̀-֐ࠀ-῿Ⰰ-﬜﷾-﹯﻽-", saA = "֑-߿יִ-﷽ﹰ-ﻼ", laA = new RegExp(`^[^${raA}]*[${saA}]`), y8 = (A) => laA.test(A), aB = (A) => {
  let [u, e] = A;
  return { x: u, y: e };
}, b8 = (A) => {
  if (A?.name === "AbortError") {
    console.warn(A);
    return;
  }
  throw A;
}, U8 = (A, u, e = 0) => {
  e < 0 && (e = A.length + e), e = Math.min(A.length, Math.max(e, 0));
  let C = e - 1;
  for (; ++C < A.length; ) if (u(A[C], C, A)) return C;
  return -1;
}, iE = (A, u, e = A.length - 1) => {
  e < 0 && (e = A.length + e), e = Math.min(A.length - 1, Math.max(e, 0));
  let C = e + 1;
  for (; --C > -1; ) if (u(A[C], C, A)) return C;
  return -1;
}, IB = (A) => {
  let u = A.length === 5 && A.substr(4, 1) === "0", e = A.length === 9 && A.substr(7, 2) === "00";
  return u || e || A === ou.transparent;
}, pd = (A) => A.fillStyle !== "solid" || IB(A.backgroundColor), G8 = () => {
  let A, u, e = new Promise((C, B) => {
    A = C, u = B;
  });
  return e.resolve = A, e.reject = u, e;
}, caA = (A) => {
  let u = A.parentElement;
  for (; u; ) {
    if (u === document.body) return document;
    let { overflowY: e } = window.getComputedStyle(u);
    if (u.scrollHeight > u.clientHeight && (e === "auto" || e === "scroll" || e === "overlay")) return u;
    u = u.parentElement;
  }
  return document;
}, daA = (A) => {
  let u = A.parentElement;
  for (; u; ) {
    if (u.tabIndex > -1) {
      u.focus();
      return;
    }
    u = u.parentElement;
  }
}, DaA = (A) => {
  A.preventDefault(), A.returnValue = "";
}, haA = (A) => Array.from(A).map((u) => `0${u.toString(16)}`.slice(-2)).join(""), mI = () => qg() ? 1 : Date.now(), PA = (A) => A instanceof Map ? A : A.reduce((u, e) => (u.set(typeof e == "string" ? e : e.id, e), u), /* @__PURE__ */ new Map()), waA = (A) => A.reduce((u, e, C) => (u.set(e.id, [e, C]), u), /* @__PURE__ */ new Map()), bg = (A, u) => A.reduce((e, C) => (e[u ? u(C) : String(C)] = C, e), {}), FaA = (A) => A.reduce((u, e, C) => {
  let B = { ...e, prev: null, next: null };
  if (C !== 0) {
    let g = u[C - 1];
    if (B.prev = g, g.next = B, C === A.length - 1) {
      let t = u[0];
      B.next = t, t.prev = B;
    }
  }
  return u.push(B), u;
}, []), qg = () => tu.MODE === "test", f8 = () => tu.MODE === "development", paA = () => typeof process < "u" && !0, L8 = (A, u) => new CustomEvent(A, { detail: { nativeEvent: u }, cancelable: !0 }), Ls = (A, u) => {
  let e = !1;
  for (let C in u) {
    let B = u[C];
    if (typeof B < "u") {
      if (A[C] === B && (typeof B != "object" || B === null)) continue;
      e = !0;
    }
  }
  return e ? { ...A, ...u } : A;
}, maA = () => {
  try {
    return window.self === window.top ? "top" : "iframe";
  } catch {
    return "iframe";
  }
}, sn = (A) => !!A && typeof A == "object" && "then" in A && "catch" in A && "finally" in A, qD = (A) => {
  let u = A?.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");
  return u ? Array.from(u).filter((e) => e.tabIndex > -1 && !e.disabled) : [];
}, mF = (A, u) => Array.isArray(A) && Array.isArray(u) && A.length === 0 && u.length === 0 ? !0 : A === u, Ee = (A, u, e, C = !1) => {
  let B = Object.keys(A), g = Object.keys(u);
  if (B.length !== g.length) return C && console.warn("%cisShallowEqual: objects don't have same properties ->", "color: #8B4000", A, u), !1;
  if (e && Array.isArray(e)) {
    for (let t of e) if (!(A[t] === u[t] || mF(A[t], u[t]))) return C && console.warn(`%cisShallowEqual: ${t} not equal ->`, "color: #8B4000", A[t], u[t]), !1;
    return !0;
  }
  return B.every((t) => {
    let i = e?.[t], I = i ? i(A[t], u[t]) : A[t] === u[t] || mF(A[t], u[t]);
    return !I && C && console.warn(`%cisShallowEqual: ${t} not equal ->`, "color: #8B4000", A[t], u[t]), I;
  });
}, a4 = (A, u, { checkForDefaultPrevented: e = !0 } = {}) => function(C) {
  if (A?.(C), !e || !C?.defaultPrevented) return u?.(C);
}, fE = (A, u, e) => {
  if (!u) return A;
  if (e) return console.error(u), A;
  throw new Error(u);
};
function he(A, u) {
  if (!A) throw new Error(u);
}
var kaA = (A) => {
  let u, e, C = function(B) {
    let g = Object.entries(B);
    if (u) {
      let i = !0;
      for (let [I, o] of g) if (u.get(I) !== o) {
        i = !1;
        break;
      }
      if (i) return e;
    }
    let t = A(B);
    return u = new Map(g), e = t, t;
  };
  return C.clear = () => {
    u = void 0, e = void 0;
  }, C;
}, x8 = (A, u) => A instanceof Set || A instanceof Map ? A.has(u) : "includes" in A ? A.includes(u) : A.hasOwnProperty(u), Hg = (A) => JSON.parse(JSON.stringify(A)), Ho = (A, u) => Ee(A, u) ? A : u;
function B0(A, u, e, C) {
  return A ? (A?.addEventListener?.(u, e, C), () => {
    A?.removeEventListener?.(u, e, C);
  }) : () => {
  };
}
function yaA(A, u = !0) {
  let e = A.length;
  if (e < 4) return "";
  let C = A[0], B = A[1], g = A[2], t = `M${C[0].toFixed(2)},${C[1].toFixed(2)} Q${B[0].toFixed(2)},${B[1].toFixed(2)} ${Cs(B[0], g[0]).toFixed(2)},${Cs(B[1], g[1]).toFixed(2)} T`;
  for (let i = 2, I = e - 1; i < I; i++) C = A[i], B = A[i + 1], t += `${Cs(C[0], B[0]).toFixed(2)},${Cs(C[1], B[1]).toFixed(2)} `;
  return u && (t += "Z"), t;
}
var S8 = (A) => A.replace(/\r?\n|\r/g, `
`), NC = (A) => A, ti = async (A, ...u) => new Promise((e) => {
  e(A(...u));
}), baA = (...A) => Math.max(...A.map((u) => u ? 1 : 0)) > 0, kF = class {
  constructor(A, u) {
    J(this, "pool"), J(this, "entries", {}), this.pool = new liA(A, u);
  }
  all() {
    let A = (u) => {
      if (u.data.result) {
        let [e, C] = u.data.result;
        this.entries[e] = C;
      }
    };
    return this.pool.addEventListener("fulfilled", A), this.pool.start().then(() => (setTimeout(() => {
      this.pool.removeEventListener("fulfilled", A);
    }), Object.values(this.entries)));
  }
}, xs = (A) => A.replace(/"/g, "&quot;"), yF = (A) => Array.isArray(A) ? A : [A], bC = (A) => !!A && A.type === "image" && !!A.fileId, bu = (A) => !!A && A.type === "image", je = (A) => !!A && A.type === "embeddable", jt = (A) => !!A && A.type === "iframe", UC = (A) => !!A && (A.type === "iframe" || A.type === "embeddable"), UA = (A) => A != null && A.type === "text", N8 = (A) => A != null && A.type === "frame", Ss = (A) => A != null && A.type === "magicframe", OA = (A) => A != null && (A.type === "frame" || A.type === "magicframe"), RC = (A) => A != null && UaA(A.type), UaA = (A) => A === "freedraw", $A = (A) => A != null && i2(A.type), Eu = (A) => A != null && A.type === "arrow", xA = (A) => Eu(A) && A.elbowed, i2 = (A) => A === "arrow" || A === "line", TB = (A, u = !0) => A != null && (!A.locked || u === !0) && R8(A.type), R8 = (A) => A === "arrow", DB = (A, u = !0) => A != null && (!A.locked || u === !0) && (A.type === "rectangle" || A.type === "diamond" || A.type === "ellipse" || A.type === "image" || A.type === "iframe" || A.type === "embeddable" || A.type === "frame" || A.type === "magicframe" || A.type === "text" && !A.containerId), GaA = (A) => A != null && (A.type === "rectangle" || A.type === "diamond" || A.type === "image" || A.type === "iframe" || A.type === "embeddable" || A.type === "frame" || A.type === "magicframe" || A.type === "text" && !A.containerId), DE = (A, u = !0) => A != null && (!A.locked || u === !0) && (A.type === "rectangle" || A.type === "diamond" || A.type === "ellipse" || Eu(A)), M8 = (A) => {
  let u = A?.type;
  if (!u) return !1;
  switch (u) {
    case "text":
    case "diamond":
    case "rectangle":
    case "iframe":
    case "embeddable":
    case "ellipse":
    case "arrow":
    case "freedraw":
    case "line":
    case "frame":
    case "magicframe":
    case "image":
    case "selection":
      return !0;
    default:
      return fE(u, null), !1;
  }
}, I4 = (A) => A.type === "rectangle" || A.type === "ellipse" || A.type === "diamond", MC = (A) => DE(A) && !!A.boundElements?.some(({ type: u }) => u === "text"), Xu = (A) => A !== null && "containerId" in A && A.containerId !== null && UA(A), kI = (A) => A === "rectangle" || A === "embeddable" || A === "iframe" || A === "image", Y8 = (A) => A === "line" || A === "arrow" || A === "diamond", faA = (A, u) => !!((A === x0.ADAPTIVE_RADIUS || A === x0.LEGACY) && kI(u.type) || A === x0.PROPORTIONAL_RADIUS && Y8(u.type)), LaA = (A) => Y8(A.type) ? { type: x0.PROPORTIONAL_RADIUS } : kI(A.type) ? { type: x0.ADAPTIVE_RADIUS } : null, Dl = (A) => Object.hasOwn(A, "fixedPoint") && A.fixedPoint != null, we = (A, u, e) => {
  let C = A.split(`
`).map((t) => t || " ").join(`
`), B = parseFloat(u), g = RaA(C, B, e);
  return { width: I2(C, u), height: g };
}, v8 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toLocaleUpperCase(), H8 = (A, u) => {
  let e = MaA(A);
  return e === 0 ? we(v8.split("").join(`
`), A, u).width + L0 * 2 : e + L0 * 2;
}, E2 = (A, u) => we("", A, u).width + L0 * 2, xaA = () => I2(v8, vu({ fontSize: ut, fontFamily: ri })) > 0, iI = (A) => S8(A).replace(/\t/g, "        "), a2 = (A) => iI(A).split(`
`), SaA = (A) => {
  let u = a2(A.text).length;
  return A.height / u / A.fontSize;
}, ln = (A, u) => A * u, K8 = (A, u) => ln(A, u) + L0 * 2, md, NaA = class {
  constructor() {
    J(this, "canvas"), this.canvas = document.createElement("canvas");
  }
  getLineWidth(A, u) {
    let e = this.canvas.getContext("2d");
    e.font = u;
    let C = e.measureText(A).width;
    return qg() ? C * 10 : C;
  }
}, LE = (A, u) => (md || (md = new NaA()), md.getLineWidth(A, u)), I2 = (A, u) => {
  let e = a2(A), C = 0;
  return e.forEach((B) => {
    C = Math.max(C, LE(B, u));
  }), C;
}, RaA = (A, u, e) => {
  let C = a2(A).length;
  return ln(u, e) * C;
}, cn = /* @__PURE__ */ (() => {
  let A = {};
  return { calculate: (u, e) => {
    let C = u.charCodeAt(0);
    if (A[e] || (A[e] = []), !A[e][C]) {
      let B = LE(u, e);
      A[e][C] = B;
    }
    return A[e][C];
  }, getCache: (u) => A[u], clearCache: (u) => {
    A[u] = [];
  } };
})(), MaA = (A) => {
  let u = cn.getCache(A);
  if (!u) return 0;
  let e = u.filter((C) => C !== void 0);
  return Math.max(...e);
}, kd, ts, yd, YaA = (A) => (kd || (kd = Su.class(...Object.values(fg))), kd.test(A)), vaA = () => {
  if (!ts) try {
    ts = KaA();
  } catch {
    ts = HaA();
  }
  return ts;
}, o2 = () => (yd || (yd = JaA()), yd), pC = { WHITESPACE: /\s/u, HYPHEN: /-/u, OPENING: /<\(\[\{/u, CLOSING: />\)\]\}.,:;!\?…\//u }, fg = { CHAR: /\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}｀＇＾〃〰〆＃＆＊＋－ー／＼＝｜￤〒￢￣/u, OPENING: /（［｛〈《｟｢「『【〖〔〘〚＜〝/u, CLOSING: /）］｝〉》｠｣」』】〗〕〙〛＞。．，、〟‥？！：；・〜〞/u, CURRENCY: /￥￦￡￠＄/u }, _i = { FLAG: /\p{RI}\p{RI}/u, JOINER: /(?:\p{Emoji_Modifier}|\uFE0F\u20E3?|[\u{E0020}-\u{E007E}]+\u{E007F})?/u, ZWJ: /\u200D/u, ANY: /[\p{Emoji}]/u, MOST: /[\p{Extended_Pictographic}\p{Emoji_Presentation}]/u }, HaA = () => Su.or(o2(), F0.On(pC.HYPHEN, pC.WHITESPACE, fg.CHAR)), KaA = () => Su.or(o2(), F0.Before(pC.WHITESPACE).Build(), F0.After(pC.WHITESPACE, pC.HYPHEN).Build(), F0.Before(fg.CHAR, fg.CURRENCY).NotPrecededBy(pC.OPENING, fg.OPENING).Build(), F0.After(fg.CHAR).NotFollowedBy(pC.HYPHEN, pC.CLOSING, fg.CLOSING).Build(), F0.BeforeMany(fg.OPENING).NotPrecededBy(pC.OPENING).Build(), F0.AfterMany(fg.CLOSING).NotFollowedBy(pC.CLOSING).Build(), F0.AfterMany(pC.CLOSING).FollowedBy(pC.OPENING).Build()), JaA = () => Su.group(Su.or(_i.FLAG, Su.and(_i.MOST, _i.JOINER, Su.build(`(?:${_i.ZWJ.source}(?:${_i.FLAG.source}|${_i.ANY.source}${_i.JOINER.source}))*`)))), Su = { build: (A) => new RegExp(A, "u"), join: (...A) => A.map((u) => u.source).join(""), and: (...A) => Su.build(Su.join(...A)), or: (...A) => Su.build(A.map((u) => u.source).join("|")), group: (...A) => Su.build(`(${Su.join(...A)})`), class: (...A) => Su.build(`[${Su.join(...A)}]`) }, F0 = { On: (...A) => {
  let u = Su.join(...A);
  return Su.build(`([${u}])`);
}, Before: (...A) => {
  let u = Su.join(...A), e = () => Su.build(`(?=[${u}])`);
  return F0.Chain(e);
}, After: (...A) => {
  let u = Su.join(...A), e = () => Su.build(`(?<=[${u}])`);
  return F0.Chain(e);
}, BeforeMany: (...A) => {
  let u = Su.join(...A), e = () => Su.build(`(?<![${u}])(?=[${u}])`);
  return F0.Chain(e);
}, AfterMany: (...A) => {
  let u = Su.join(...A), e = () => Su.build(`(?<=[${u}])(?![${u}])`);
  return F0.Chain(e);
}, NotBefore: (...A) => {
  let u = Su.join(...A), e = () => Su.build(`(?![${u}])`);
  return F0.Chain(e);
}, NotAfter: (...A) => {
  let u = Su.join(...A), e = () => Su.build(`(?<![${u}])`);
  return F0.Chain(e);
}, Chain: (A) => ({ Build: A, PreceededBy: (...u) => {
  let e = A(), C = F0.After(...u).Build(), B = () => Su.and(C, e);
  return F0.Chain(B);
}, FollowedBy: (...u) => {
  let e = A(), C = F0.Before(...u).Build(), B = () => Su.and(e, C);
  return F0.Chain(B);
}, NotPrecededBy: (...u) => {
  let e = A(), C = F0.NotAfter(...u).Build(), B = () => Su.and(C, e);
  return F0.Chain(B);
}, NotFollowedBy: (...u) => {
  let e = A(), C = F0.NotBefore(...u).Build(), B = () => Su.and(e, C);
  return F0.Chain(B);
} }) }, ZaA = (A) => {
  let u = vaA();
  return A.normalize("NFC").split(u).filter(Boolean);
}, JE = (A, u, e) => {
  if (!Number.isFinite(e) || e < 0) return A;
  let C = [], B = A.split(`
`);
  for (let g of B) {
    if (LE(g, u) <= e) {
      C.push(g);
      continue;
    }
    let t = qaA(g, u, e);
    C.push(...t);
  }
  return C.join(`
`);
}, qaA = (A, u, e) => {
  let C = [], B = ZaA(A)[Symbol.iterator](), g = "", t = 0, i = B.next();
  for (; !i.done; ) {
    let I = i.value, o = g + I, E = TaA(I) ? t + cn.calculate(I, u) : LE(o, u);
    if (/\s/.test(I) || E <= e) {
      g = o, t = E, i = B.next();
      continue;
    }
    if (g) C.push(g.trimEnd()), g = "", t = 0;
    else {
      let Q = WaA(I, u, e), s = Q[Q.length - 1] ?? "", l = Q.slice(0, -1);
      C.push(...l), g = s, t = LE(s, u), i = B.next();
    }
  }
  if (g) {
    let I = jaA(g, u, e);
    C.push(I);
  }
  return C;
}, WaA = (A, u, e) => {
  if (o2().test(A)) return [A];
  zaA(A);
  let C = [], B = Array.from(A), g = "", t = 0;
  for (let i of B) {
    let I = cn.calculate(i, u), o = t + I;
    if (o <= e) {
      g = g + i, t = o;
      continue;
    }
    g && C.push(g), g = i, t = I;
  }
  return g && C.push(g), C;
}, jaA = (A, u, e) => {
  if (!(LE(A, u) > e)) return A;
  let [, C, B] = A.match(/^(.+?)(\s+)$/) ?? [A, A.trimEnd(), ""], g = LE(C, u);
  for (let t of Array.from(B)) {
    let i = cn.calculate(t, u), I = g + i;
    if (I > e) break;
    C = C + t, g = I;
  }
  return C;
}, TaA = (A) => A.codePointAt(0) !== void 0 && A.codePointAt(1) === void 0, zaA = (A) => {
  if ((tu.MODE === Oe.TEST || tu.DEV) && /\s/.test(A)) throw new Error("Word should not contain any whitespaces!");
}, be = class {
};
J(be, "rg", new YQ()), J(be, "cache", /* @__PURE__ */ new WeakMap()), J(be, "get", (A) => be.cache.get(A)), J(be, "set", (A, u) => be.cache.set(A, u)), J(be, "delete", (A) => be.cache.delete(A)), J(be, "destroy", () => {
  be.cache = /* @__PURE__ */ new WeakMap();
}), J(be, "generateElementShape", (A, u) => {
  let e = u?.isExporting ? void 0 : be.get(A);
  if (e !== void 0) return e;
  _D.delete(A);
  let C = A4A(A, be.rg, u || { isExporting: !1, canvasBackgroundColor: ou.white, embedsValidationStatus: null });
  return be.cache.set(A, C), C;
});
var a0 = be, iB = (A) => "var(--icon-fill-color)", J8 = (A) => A === su.LIGHT ? X0.white : "#1e1e1e", eA = (A, u = 512) => {
  let { width: e = 512, height: C = e, mirror: B, style: g, ...t } = typeof u == "number" ? { width: u } : u;
  return r.jsx("svg", { "aria-hidden": "true", focusable: "false", role: "img", viewBox: `0 0 ${e} ${C}`, className: NA({ "rtl-mirror": B }), style: g, ...t, children: typeof A == "string" ? r.jsx("path", { fill: "currentColor", d: A }) : A });
}, bA = { width: 24, height: 24, fill: "none", strokeWidth: 2, stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }, uu = { width: 20, height: 20, fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" };
eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("rect", { x: 3, y: 8, width: 18, height: 4, rx: 1 }), r.jsx("line", { x1: 12, y1: 8, x2: 12, y2: 21 }), r.jsx("path", { d: "M19 12v7a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-7" }), r.jsx("path", { d: "M7.5 8a2.5 2.5 0 0 1 0 -5a4.8 8 0 0 1 4.5 5a4.8 8 0 0 1 4.5 -5a2.5 2.5 0 0 1 0 5" })] }), bA);
var Q2 = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 19a9 9 0 0 1 9 0a9 9 0 0 1 9 0" }), r.jsx("path", { d: "M3 6a9 9 0 0 1 9 0a9 9 0 0 1 9 0" }), r.jsx("line", { x1: "3", y1: "6", x2: "3", y2: "19" }), r.jsx("line", { x1: "12", y1: "6", x2: "12", y2: "19" }), r.jsx("line", { x1: "21", y1: "6", x2: "21", y2: "19" })] }), bA), PaA = eA(r.jsxs("svg", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), r.jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] }), bA), OaA = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("circle", { cx: "12", cy: "12", r: "1" }), r.jsx("circle", { cx: "12", cy: "19", r: "1" }), r.jsx("circle", { cx: "12", cy: "5", r: "1" })] }), bA), VaA = eA(r.jsxs("svg", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M9 4v6l-2 4v2h10v-2l-2 -4v-6" }), r.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "21" }), r.jsx("line", { x1: "8", y1: "4", x2: "16", y2: "4" })] }), bA), o4 = eA(r.jsxs("g", { children: [r.jsx("path", { d: "M13.542 8.542H6.458a2.5 2.5 0 0 0-2.5 2.5v3.75a2.5 2.5 0 0 0 2.5 2.5h7.084a2.5 2.5 0 0 0 2.5-2.5v-3.75a2.5 2.5 0 0 0-2.5-2.5Z", stroke: "currentColor", strokeWidth: "1.25" }), r.jsx("path", { d: "M10 13.958a1.042 1.042 0 1 0 0-2.083 1.042 1.042 0 0 0 0 2.083Z", stroke: "currentColor", strokeWidth: "1.25" }), r.jsx("mask", { id: "UnlockedIcon", style: { maskType: "alpha" }, maskUnits: "userSpaceOnUse", x: 6, y: 1, width: 9, height: 9, children: r.jsx("path", { stroke: "none", d: "M6.399 9.561V5.175c0-.93.401-1.823 1.116-2.48a3.981 3.981 0 0 1 2.693-1.028c1.01 0 1.98.37 2.694 1.027.715.658 1.116 1.55 1.116 2.481", fill: "#fff" }) }), r.jsx("g", { mask: "url(#UnlockedIcon)", children: r.jsx("path", { stroke: "none", d: "M5.149 9.561v1.25h2.5v-1.25h-2.5Zm5.06-7.894V.417v1.25Zm2.559 3.508v1.25h2.5v-1.25h-2.5ZM7.648 8.51V5.175h-2.5V8.51h2.5Zm0-3.334c0-.564.243-1.128.713-1.561L6.668 1.775c-.959.883-1.52 2.104-1.52 3.4h2.5Zm.713-1.561a2.732 2.732 0 0 1 1.847-.697v-2.5c-1.31 0-2.585.478-3.54 1.358L8.36 3.614Zm1.847-.697c.71 0 1.374.26 1.847.697l1.694-1.839a5.231 5.231 0 0 0-3.54-1.358v2.5Zm1.847.697c.47.433.713.997.713 1.561h2.5c0-1.296-.56-2.517-1.52-3.4l-1.693 1.839Z", fill: "currentColor" }) })] }), uu), n2 = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { d: "M13.542 8.542H6.458a2.5 2.5 0 0 0-2.5 2.5v3.75a2.5 2.5 0 0 0 2.5 2.5h7.084a2.5 2.5 0 0 0 2.5-2.5v-3.75a2.5 2.5 0 0 0-2.5-2.5Z" }), r.jsx("path", { d: "M10 13.958a1.042 1.042 0 1 0 0-2.083 1.042 1.042 0 0 0 0 2.083Z" }), r.jsx("path", { d: "M6.667 8.333V5.417C6.667 3.806 8.159 2.5 10 2.5c1.841 0 3.333 1.306 3.333 2.917v2.916" })] }), uu), XaA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { d: "M38.5 83.5c-14-2-17.833-10.473-21-22.5C14.333 48.984 12 22 12 12.5", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" }), r.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "m12.005 10.478 7.905 14.423L6 25.75l6.005-15.273Z", fill: "currentColor" }), r.jsx("path", { d: "M12.005 10.478c1.92 3.495 3.838 7 7.905 14.423m-7.905-14.423c3.11 5.683 6.23 11.368 7.905 14.423m0 0c-3.68.226-7.35.455-13.91.85m13.91-.85c-5.279.33-10.566.647-13.91.85m0 0c1.936-4.931 3.882-9.86 6.005-15.273M6 25.75c2.069-5.257 4.135-10.505 6.005-15.272", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" })] }), { width: 41, height: 94, fill: "none" }), _aA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { d: "M18.026 1.232c-5.268 13.125-5.548 33.555 3.285 42.311 8.823 8.75 33.31 12.304 42.422 13.523", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" }), r.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "m72.181 59.247-13.058-10-2.948 13.62 16.006-3.62Z", fill: "currentColor" }), r.jsx("path", { d: "M72.181 59.247c-3.163-2.429-6.337-4.856-13.058-10m13.058 10c-5.145-3.936-10.292-7.882-13.058-10m0 0c-.78 3.603-1.563 7.196-2.948 13.62m2.948-13.62c-1.126 5.168-2.24 10.346-2.948 13.62m0 0c5.168-1.166 10.334-2.343 16.006-3.62m-16.006 3.62c5.51-1.248 11.01-2.495 16.006-3.62", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" })] }), { width: 85, height: 71, fill: "none" }), $aA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { d: "M1 77c14-2 31.833-11.973 35-24 3.167-12.016-6-35-9.5-43.5", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" }), r.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "m24.165 1.093-2.132 16.309 13.27-4.258-11.138-12.05Z", fill: "currentColor" }), r.jsx("path", { d: "M24.165 1.093c-.522 3.953-1.037 7.916-2.132 16.309m2.131-16.309c-.835 6.424-1.68 12.854-2.13 16.308m0 0c3.51-1.125 7.013-2.243 13.27-4.257m-13.27 4.257c5.038-1.608 10.08-3.232 13.27-4.257m0 0c-3.595-3.892-7.197-7.777-11.14-12.05m11.14 12.05c-3.837-4.148-7.667-8.287-11.14-12.05", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round" })] }), { width: 38, height: 78, fill: "none" });
eA(r.jsx("g", { fill: "currentColor", children: r.jsx("path", { d: "M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z", fill: "currentColor" }) }), { width: 40, height: 40, fill: "none" });
var AIA = eA(r.jsxs("g", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M6 6l4.153 11.793a0.365 .365 0 0 0 .331 .207a0.366 .366 0 0 0 .332 -.207l2.184 -4.793l4.787 -1.994a0.355 .355 0 0 0 .213 -.323a0.355 .355 0 0 0 -.213 -.323l-11.787 -4.36z" }), r.jsx("path", { d: "M13.5 13.5l4.5 4.5" })] }), { fill: "none", width: 22, height: 22, strokeWidth: 1.25 }), uIA = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2" })] }), bA), eIA = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M10.5 20.4l-6.9 -6.9c-.781 -.781 -.781 -2.219 0 -3l6.9 -6.9c.781 -.781 2.219 -.781 3 0l6.9 6.9c.781 .781 .781 2.219 0 3l-6.9 6.9c-.781 .781 -2.219 .781 -3 0z" })] }), bA), CIA = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("circle", { cx: "12", cy: "12", r: "9" })] }), bA), BIA = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }), r.jsx("line", { x1: "15", y1: "16", x2: "19", y2: "12" }), r.jsx("line", { x1: "15", y1: "8", x2: "19", y2: "12" })] }), bA), gIA = eA(r.jsx("path", { d: "M4.167 10h11.666", strokeWidth: "1.5" }), uu), tIA = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M20 17v-12c0 -1.121 -.879 -2 -2 -2s-2 .879 -2 2v12l2 2l2 -2z" }), r.jsx("path", { d: "M16 7h4" }), r.jsx("path", { d: "M18 19h-13a2 2 0 1 1 0 -4h4a2 2 0 1 0 0 -4h-3" })] }), bA), WQ = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { clipRule: "evenodd", d: "m7.643 15.69 7.774-7.773a2.357 2.357 0 1 0-3.334-3.334L4.31 12.357a3.333 3.333 0 0 0-.977 2.357v1.953h1.953c.884 0 1.732-.352 2.357-.977Z" }), r.jsx("path", { d: "m11.25 5.417 3.333 3.333" })] }), uu), Z8 = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "20", x2: "7", y2: "20" }), r.jsx("line", { x1: "14", y1: "20", x2: "21", y2: "20" }), r.jsx("line", { x1: "6.9", y1: "15", x2: "13.8", y2: "15" }), r.jsx("line", { x1: "10.2", y1: "6.3", x2: "16", y2: "20" }), r.jsx("polyline", { points: "5 20 11 4 13 4 20 20" })] }), bA), iIA = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { d: "M12.5 6.667h.01" }), r.jsx("path", { d: "M4.91 2.625h10.18a2.284 2.284 0 0 1 2.285 2.284v10.182a2.284 2.284 0 0 1-2.284 2.284H4.909a2.284 2.284 0 0 1-2.284-2.284V4.909a2.284 2.284 0 0 1 2.284-2.284Z" }), r.jsx("path", { d: "m3.333 12.5 3.334-3.333c.773-.745 1.726-.745 2.5 0l4.166 4.166" }), r.jsx("path", { d: "m11.667 11.667.833-.834c.774-.744 1.726-.744 2.5 0l1.667 1.667" })] }), uu), EIA = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M19 20h-10.5l-4.21 -4.3a1 1 0 0 1 0 -1.41l10 -10a1 1 0 0 1 1.41 0l5 5a1 1 0 0 1 0 1.41l-9.2 9.3" }), r.jsx("path", { d: "M18 13.3l-6.3 -6.3" })] }), bA), bF = eA(r.jsx("path", { strokeWidth: "1.25", d: "M10 4.167v11.666M4.167 10h11.666" }), uu), UF = eA(r.jsx("path", { d: "M5 10h10", strokeWidth: "1.25" }), uu), aIA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M21 21l-6 -6" }), r.jsx("path", { d: "M3.268 12.043a7.017 7.017 0 0 0 6.634 4.957a7.012 7.012 0 0 0 7.043 -6.131a7 7 0 0 0 -5.314 -7.672a7.021 7.021 0 0 0 -8.241 4.403" }), r.jsx("path", { d: "M3 4v4h4" })] }), bA), xE = eA(r.jsx("path", { strokeWidth: "1.25", d: "M3.333 5.833h13.334M8.333 9.167v5M11.667 9.167v5M4.167 5.833l.833 10c0 .92.746 1.667 1.667 1.667h6.666c.92 0 1.667-.746 1.667-1.667l.833-10M7.5 5.833v-2.5c0-.46.373-.833.833-.833h3.334c.46 0 .833.373.833.833v2.5" }), uu), IIA = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("polyline", { points: "12 16 18 10 12 4" }), r.jsx("polyline", { points: "8 4 2 10 8 16" })] }), uu), WD = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { d: "M14.375 6.458H8.958a2.5 2.5 0 0 0-2.5 2.5v5.417a2.5 2.5 0 0 0 2.5 2.5h5.417a2.5 2.5 0 0 0 2.5-2.5V8.958a2.5 2.5 0 0 0-2.5-2.5Z" }), r.jsx("path", { clipRule: "evenodd", d: "M11.667 3.125c.517 0 .986.21 1.325.55.34.338.55.807.55 1.325v1.458H8.333c-.485 0-.927.185-1.26.487-.343.312-.57.75-.609 1.24l-.005 5.357H5a1.87 1.87 0 0 1-1.326-.55 1.87 1.87 0 0 1-.549-1.325V5c0-.518.21-.987.55-1.326.338-.34.807-.549 1.325-.549h6.667Z" })] }), uu), jD = eA(r.jsx("path", { clipRule: "evenodd", d: "M10 2.5h.328a6.25 6.25 0 0 0 6.6 10.372A7.5 7.5 0 1 1 10 2.493V2.5Z", stroke: "currentColor" }), uu), TD = eA(r.jsx("g", { stroke: "currentColor", strokeLinejoin: "round", children: r.jsx("path", { d: "M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM10 4.167V2.5M14.167 5.833l1.166-1.166M15.833 10H17.5M14.167 14.167l1.166 1.166M10 15.833V17.5M5.833 14.167l-1.166 1.166M5 10H3.333M5.833 5.833 4.667 4.667" }) }), { ...uu, strokeWidth: 1.5 }), q8 = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "6", x2: "20", y2: "6" }), r.jsx("line", { x1: "4", y1: "12", x2: "20", y2: "12" }), r.jsx("line", { x1: "4", y1: "18", x2: "20", y2: "18" })] }), bA), Q4 = eA(r.jsx("path", { strokeWidth: "1.25", d: "M3.333 14.167v1.666c0 .92.747 1.667 1.667 1.667h10c.92 0 1.667-.746 1.667-1.667v-1.666M5.833 9.167 10 13.333l4.167-4.166M10 3.333v10" }), uu), r2 = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("circle", { cx: "12", cy: "12", r: "9" }), r.jsx("line", { x1: "12", y1: "17", x2: "12", y2: "17.01" }), r.jsx("path", { d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4" })] }), bA), oIA = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("circle", { cx: "12", cy: "12", r: "9" }), r.jsx("line", { x1: "12", y1: "17", x2: "12", y2: "17.01" }), r.jsx("path", { d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4" })] }), bA), GF = eA(r.jsx("path", { strokeWidth: "1.25", d: "M9.167 5.833H5.833c-1.254 0-2.5 1.282-2.5 2.5v5.834c0 1.283 1.252 2.5 2.5 2.5h5.834c1.251 0 2.5-1.25 2.5-2.5v-3.334M8.333 11.667l8.334-8.334M12.5 3.333h4.167V7.5" }), uu), W8 = eA(r.jsx("path", { d: "M7.5 15.833c-3.583 1.167-3.583-2.083-5-2.5m10 4.167v-2.917c0-.833.083-1.166-.417-1.666 2.334-.25 4.584-1.167 4.584-5a3.833 3.833 0 0 0-1.084-2.667 3.5 3.5 0 0 0-.083-2.667s-.917-.25-2.917 1.084a10.25 10.25 0 0 0-5.166 0C5.417 2.333 4.5 2.583 4.5 2.583a3.5 3.5 0 0 0-.083 2.667 3.833 3.833 0 0 0-1.084 2.667c0 3.833 2.25 4.75 4.584 5-.5.5-.5 1-.417 1.666V17.5", strokeWidth: "1.25" }), uu), QIA = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { d: "M7.5 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666ZM12.5 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666ZM6.25 6.25c2.917-.833 4.583-.833 7.5 0M5.833 13.75c2.917.833 5.417.833 8.334 0" }), r.jsx("path", { d: "M12.917 14.167c0 .833 1.25 2.5 1.666 2.5 1.25 0 2.361-1.39 2.917-2.5.556-1.39.417-4.861-1.25-9.584-1.214-.846-2.5-1.116-3.75-1.25l-.833 2.084M7.083 14.167c0 .833-1.13 2.5-1.526 2.5-1.191 0-2.249-1.39-2.778-2.5-.529-1.39-.397-4.861 1.19-9.584 1.157-.846 2.318-1.116 3.531-1.25l.833 2.084" })] }), uu), nIA = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 4l11.733 16h4.267l-11.733 -16z" }), r.jsx("path", { d: "M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772" })] }), bA), rIA = eA(r.jsx("polyline", { fill: "none", stroke: "currentColor", points: "20 6 9 17 4 12" }), { width: 24, height: 24 }), zD = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { d: "M8.333 11.667a2.917 2.917 0 0 0 4.167 0l3.333-3.334a2.946 2.946 0 1 0-4.166-4.166l-.417.416" }), r.jsx("path", { d: "M11.667 8.333a2.917 2.917 0 0 0-4.167 0l-3.333 3.334a2.946 2.946 0 0 0 4.166 4.166l.417-.416" })] }), uu), sIA = eA("M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z", { width: 448, height: 512 }), lIA = eA("M252 54L203 8a28 27 0 00-20-8H28C12 0 0 12 0 27v195c0 15 12 26 28 26h204c15 0 28-11 28-26V73a28 27 0 00-8-19zM130 213c-21 0-37-16-37-36 0-19 16-35 37-35 20 0 37 16 37 35 0 20-17 36-37 36zm56-169v56c0 4-4 6-7 6H44c-4 0-7-2-7-6V42c0-4 3-7 7-7h133l4 2 3 2a7 7 0 012 5z M296 201l87 95-188 205-78 9c-10 1-19-8-18-20l9-84zm141-14l-41-44a31 31 0 00-46 0l-38 41 87 95 38-42c13-14 13-36 0-50z", { width: 448, height: 512 }), s2 = eA(r.jsx("path", { d: "m9.257 6.351.183.183H15.819c.34 0 .727.182 1.051.506.323.323.505.708.505 1.05v5.819c0 .316-.183.7-.52 1.035-.337.338-.723.522-1.037.522H4.182c-.352 0-.74-.181-1.058-.5-.318-.318-.499-.705-.499-1.057V5.182c0-.351.181-.736.5-1.054.32-.321.71-.503 1.057-.503H6.53l2.726 2.726Z", strokeWidth: "1.25" }), uu);
eA("M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z", { width: 384, height: 512 });
var cIA = eA("M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"), bd = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M5 16l1.465 1.638a2 2 0 1 1 -3.015 .099l1.55 -1.737z" }), r.jsx("path", { d: "M13.737 9.737c2.299 -2.3 3.23 -5.095 2.081 -6.245c-1.15 -1.15 -3.945 -.217 -6.244 2.082c-2.3 2.299 -3.231 5.095 -2.082 6.244c1.15 1.15 3.946 .218 6.245 -2.081z" }), r.jsx("path", { d: "M7.492 11.818c.362 .362 .768 .676 1.208 .934l6.895 4.047c1.078 .557 2.255 -.075 3.692 -1.512c1.437 -1.437 2.07 -2.614 1.512 -3.692c-.372 -.718 -1.72 -3.017 -4.047 -6.895a6.015 6.015 0 0 0 -.934 -1.208" })] }), bA), j8 = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M15 8h.01" }), r.jsx("path", { d: "M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5" }), r.jsx("path", { d: "M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4" }), r.jsx("path", { d: "M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598" }), r.jsx("path", { d: "M19 16v6" }), r.jsx("path", { d: "M22 19l-3 3l-3 -3" })] }), bA), dIA = eA("M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z", { width: 512, height: 512 });
eA("M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z", { width: 448, height: 512 });
eA("M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z", { width: 448, height: 512 });
var DIA = eA("M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z");
eA("M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z");
var fF = eA(r.jsx("path", { d: "M7.5 10.833 4.167 7.5 7.5 4.167M4.167 7.5h9.166a3.333 3.333 0 0 1 0 6.667H12.5", strokeWidth: "1.25" }), uu), LF = eA(r.jsx("path", { d: "M12.5 10.833 15.833 7.5 12.5 4.167M15.833 7.5H6.667a3.333 3.333 0 1 0 0 6.667H7.5", strokeWidth: "1.25" }), uu), hIA = eA("M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z", { mirror: !0 });
eA(r.jsx("path", { d: "M5 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM15 7.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM15 17.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM7.25 8.917l5.5-2.834M7.25 11.083l5.5 2.834", strokeWidth: "1.5" }), uu);
eA("M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z");
eA("M16 5l-1.42 1.42-1.59-1.59V16h-1.98V4.83L9.42 6.42 8 5l4-4 4 4zm4 5v11c0 1.1-.9 2-2 2H6c-1.11 0-2-.9-2-2V10c0-1.11.89-2 2-2h3v2H6v11h12V10h-3V8h3c1.1 0 2 .89 2 2z", { width: 24, height: 24 });
eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M8 9h-1a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-8a2 2 0 0 0 -2 -2h-1" }), r.jsx("path", { d: "M12 14v-11" }), r.jsx("path", { d: "M9 6l3 -3l3 3" })] }), bA);
eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { fill: "currentColor", d: "M40 5.6v6.1l-4.1.7c-8.9 1.4-16.5 6.9-20.6 15C13 32 10.9 43 12.4 43c.4 0 2.4-1.3 4.4-3 5-3.9 12.1-7 18.2-7.7l5-.6v12.8l11.2-11.3L62.5 22 51.2 10.8 40-.5v6.1zm10.2 22.6L44 34.5v-6.8l-6.9.6c-3.9.3-9.8 1.7-13.2 3.1-3.5 1.4-6.5 2.4-6.7 2.2-.9-1 3-7.5 6.4-10.8C28 18.6 34.4 16 40.1 16c3.7 0 3.9-.1 3.9-3.2V9.5l6.2 6.3 6.3 6.2-6.3 6.2z" }), r.jsx("path", { stroke: "currentColor", fill: "currentColor", d: "M0 36v20h48v-6.2c0-6 0-6.1-2-4.3-1.1 1-2 2.9-2 4.2V52H4V34c0-17.3-.1-18-2-18s-2 .7-2 20z" })] }), { width: 64, height: 64 });
eA(r.jsx("path", { stroke: "currentColor", strokeWidth: "40", fill: "currentColor", d: "M148 560a318 318 0 0 0 522 110 316 316 0 0 0 0-450 316 316 0 0 0-450 0c-11 11-21 22-30 34v4h47c25 0 46 21 46 46s-21 45-46 45H90c-13 0-25-6-33-14-9-9-14-20-14-33V156c0-25 20-45 45-45s45 20 45 45v32l1 1a401 401 0 0 1 623 509l212 212a42 42 0 0 1-59 59L698 757A401 401 0 0 1 65 570a42 42 0 0 1 83-10z" }), { width: 1024 });
var T8 = r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M12 10l0 10" }), r.jsx("path", { d: "M12 10l4 4" }), r.jsx("path", { d: "M12 10l-4 4" }), r.jsx("path", { d: "M4 4l16 0" })] }), z8 = r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M12 5l0 14" }), r.jsx("path", { d: "M16 9l-4 -4" }), r.jsx("path", { d: "M8 9l4 -4" })] }), xF = eA(z8, bA), SF = eA(z8, { ...bA, style: { transform: "rotate(180deg)" } }), NF = eA(T8, bA), RF = eA(T8, { ...bA, style: { transform: "rotate(180deg)" } }), MF = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M3.333 3.333h13.334", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M13.542 6.458h-.417c-.92 0-1.667.747-1.667 1.667v7.083c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667V8.125c0-.92-.746-1.667-1.666-1.667ZM6.875 6.458h-.417c-.92 0-1.666.747-1.666 1.667v3.75c0 .92.746 1.667 1.666 1.667h.417c.92 0 1.667-.746 1.667-1.667v-3.75c0-.92-.747-1.667-1.667-1.667Z" })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), YF = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M3.333 16.667h13.334", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M6.875 3.125h-.417c-.92 0-1.666.746-1.666 1.667v7.083c0 .92.746 1.667 1.666 1.667h.417c.92 0 1.667-.746 1.667-1.667V4.792c0-.92-.747-1.667-1.667-1.667ZM13.542 5.817h-.417c-.92 0-1.667.747-1.667 1.667v4.391c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667V7.484c0-.92-.746-1.667-1.666-1.667Z" })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), vF = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M3.333 3.333v13.334", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M15.208 4.792H8.125c-.92 0-1.667.746-1.667 1.666v.417c0 .92.747 1.667 1.667 1.667h7.083c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666ZM12.516 11.458H8.125c-.92 0-1.667.746-1.667 1.667v.417c0 .92.747 1.666 1.667 1.666h4.391c.92 0 1.667-.746 1.667-1.666v-.417c0-.92-.746-1.667-1.667-1.667Z" })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), HF = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M16.667 3.333v13.334", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M11.875 4.792H4.792c-.92 0-1.667.746-1.667 1.666v.417c0 .92.746 1.667 1.667 1.667h7.083c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666ZM11.683 11.458H7.292c-.92 0-1.667.746-1.667 1.667v.417c0 .92.746 1.666 1.667 1.666h4.39c.921 0 1.667-.746 1.667-1.666v-.417c0-.92-.746-1.667-1.666-1.667Z" })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), wIA = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M16.667 3.333v13.334M3.333 3.333v13.334", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M14.375 10.208v-.416c0-.92-.746-1.667-1.667-1.667H7.292c-.92 0-1.667.746-1.667 1.667v.416c0 .92.746 1.667 1.667 1.667h5.416c.92 0 1.667-.746 1.667-1.667Z" })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), FIA = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M3.333 3.333h13.334M3.333 16.667h13.334", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M10.208 5.625h-.416c-.92 0-1.667.746-1.667 1.667v5.416c0 .92.746 1.667 1.667 1.667h.416c.92 0 1.667-.746 1.667-1.667V7.292c0-.92-.746-1.667-1.667-1.667Z" })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), KF = eA(r.jsxs("g", { stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M1.667 10h2.916", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M8.333 10h3.334", strokeLinejoin: "round" }), r.jsx("path", { d: "M15.417 10h2.916", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M6.875 4.792h-.417c-.92 0-1.666.746-1.666 1.666v7.084c0 .92.746 1.666 1.666 1.666h.417c.92 0 1.667-.746 1.667-1.666V6.458c0-.92-.747-1.666-1.667-1.666ZM13.542 6.458h-.417c-.92 0-1.667.747-1.667 1.667v3.75c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667v-3.75c0-.92-.746-1.667-1.666-1.667Z" })] }), uu), JF = eA(r.jsxs("g", { stroke: "currentColor", strokeWidth: "1.25", children: [r.jsx("path", { d: "M10 18.333v-2.916", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M10 11.667V8.333", strokeLinejoin: "round" }), r.jsx("path", { d: "M10 4.583V1.667", strokeLinecap: "round", strokeLinejoin: "round" }), r.jsx("path", { d: "M4.792 13.125v.417c0 .92.746 1.666 1.666 1.666h7.084c.92 0 1.666-.746 1.666-1.666v-.417c0-.92-.746-1.667-1.666-1.667H6.458c-.92 0-1.666.746-1.666 1.667ZM6.458 6.458v.417c0 .92.747 1.667 1.667 1.667h3.75c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666h-3.75c-.92 0-1.667.746-1.667 1.666Z" })] }), uu), P8 = eA(r.jsxs("g", { strokeWidth: "1.5", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("circle", { cx: "9", cy: "7", r: "4" }), r.jsx("path", { d: "M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2" }), r.jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" }), r.jsx("path", { d: "M21 21v-2a4 4 0 0 0 -3 -3.85" })] }), bA);
eA("M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z");
eA("M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z");
var yI = eA(r.jsxs(r.Fragment, { children: [r.jsx("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", children: r.jsx("path", { d: "M15 5 5 15M5 5l10 10" }) }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu);
eA("M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z", { mirror: !0 });
eA("M11.553 22.894a.998.998 0 00.894 0s3.037-1.516 5.465-4.097C19.616 16.987 21 14.663 21 12V5a1 1 0 00-.649-.936l-8-3a.998.998 0 00-.702 0l-8 3A1 1 0 003 5v7c0 2.663 1.384 4.987 3.088 6.797 2.428 2.581 5.465 4.097 5.465 4.097zm-1.303-8.481l6.644-6.644a.856.856 0 111.212 1.212l-7.25 7.25a.856.856 0 01-1.212 0l-3.75-3.75a.856.856 0 111.212-1.212l3.144 3.144z", { width: 24 });
eA("M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z", { width: 384, height: 512 });
var ZF = kA.memo(({ theme: A }) => eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { d: "M25 26H111V111H25", fill: iB() }), r.jsx("path", { d: "M25 111C25 80.2068 25 49.4135 25 26M25 26C48.6174 26 72.2348 26 111 26H25ZM25 26C53.3671 26 81.7343 26 111 26H25ZM111 26C111 52.303 111 78.606 111 111V26ZM111 26C111 51.2947 111 76.5893 111 111V26ZM111 111C87.0792 111 63.1585 111 25 111H111ZM111 111C87.4646 111 63.9293 111 25 111H111ZM25 111C25 81.1514 25 51.3028 25 26V111Z", stroke: iB(), strokeWidth: "2" }), r.jsx("path", { d: "M100 100H160V160H100", fill: iB() }), r.jsx("path", { d: "M100 160C100 144.106 100 128.211 100 100M100 100C117.706 100 135.412 100 160 100H100ZM100 100C114.214 100 128.428 100 160 100H100ZM160 100C160 120.184 160 140.369 160 160V100ZM160 100C160 113.219 160 126.437 160 160V100ZM160 160C145.534 160 131.068 160 100 160H160ZM160 160C143.467 160 126.934 160 100 160H160ZM100 160C100 143.661 100 127.321 100 100V160Z", stroke: iB(), strokeWidth: "2" }), r.jsxs("g", { fill: J8(A), stroke: iB(), strokeWidth: "6", children: [r.jsx("rect", { x: "2.5", y: "2.5", width: "30", height: "30" }), r.jsx("rect", { x: "2.5", y: "149.5", width: "30", height: "30" }), r.jsx("rect", { x: "147.5", y: "149.5", width: "30", height: "30" }), r.jsx("rect", { x: "147.5", y: "2.5", width: "30", height: "30" })] })] }), { width: 182, height: 182, mirror: !0 })), qF = kA.memo(({ theme: A }) => eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { d: "M25 26H111V111H25", fill: iB() }), r.jsx("path", { d: "M25 111C25 80.2068 25 49.4135 25 26M25 26C48.6174 26 72.2348 26 111 26H25ZM25 26C53.3671 26 81.7343 26 111 26H25ZM111 26C111 52.303 111 78.606 111 111V26ZM111 26C111 51.2947 111 76.5893 111 111V26ZM111 111C87.0792 111 63.1585 111 25 111H111ZM111 111C87.4646 111 63.9293 111 25 111H111ZM25 111C25 81.1514 25 51.3028 25 26V111Z", stroke: iB(), strokeWidth: "2" }), r.jsx("path", { d: "M100 100H160V160H100", fill: iB() }), r.jsx("path", { d: "M100 160C100 144.106 100 128.211 100 100M100 100C117.706 100 135.412 100 160 100H100ZM100 100C114.214 100 128.428 100 160 100H100ZM160 100C160 120.184 160 140.369 160 160V100ZM160 100C160 113.219 160 126.437 160 160V100ZM160 160C145.534 160 131.068 160 100 160H160ZM160 160C143.467 160 126.934 160 100 160H160ZM100 160C100 143.661 100 127.321 100 100V160Z", stroke: iB(), strokeWidth: "2" }), r.jsxs("g", { fill: J8(A), stroke: iB(), strokeWidth: "6", children: [r.jsx("rect", { x: "2.5", y: "2.5", width: "30", height: "30" }), r.jsx("rect", { x: "78.5", y: "149.5", width: "30", height: "30" }), r.jsx("rect", { x: "147.5", y: "149.5", width: "30", height: "30" }), r.jsx("rect", { x: "147.5", y: "78.5", width: "30", height: "30" }), r.jsx("rect", { x: "105.5", y: "2.5", width: "30", height: "30" }), r.jsx("rect", { x: "2.5", y: "102.5", width: "30", height: "30" })] })] }), { width: 182, height: 182, mirror: !0 })), pIA = eA(r.jsx("g", { strokeWidth: 1.25, children: r.jsx("path", { d: "M5.879 2.625h8.242a3.27 3.27 0 0 1 3.254 3.254v8.242a3.27 3.27 0 0 1-3.254 3.254H5.88a3.27 3.27 0 0 1-3.254-3.254V5.88A3.27 3.27 0 0 1 5.88 2.626l-.001-.001ZM4.518 16.118l7.608-12.83m.198 13.934 5.051-9.897M2.778 9.675l9.348-6.387m-7.608 12.83 12.857-8.793" }) }), uu), mIA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z", stroke: "currentColor", strokeWidth: "1.25" }), r.jsx("mask", { id: "FillHachureIcon", style: { maskType: "alpha" }, maskUnits: "userSpaceOnUse", x: 2, y: 2, width: 16, height: 16, children: r.jsx("path", { d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z", fill: "currentColor", stroke: "currentColor", strokeWidth: "1.25" }) }), r.jsx("g", { mask: "url(#FillHachureIcon)", children: r.jsx("path", { d: "M2.258 15.156 15.156 2.258M7.324 20.222 20.222 7.325m-20.444 5.35L12.675-.222m-8.157 18.34L17.416 5.22", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) })] }), uu), kIA = eA(r.jsxs(r.Fragment, { children: [r.jsxs("g", { clipPath: "url(#a)", children: [r.jsx("path", { d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z", stroke: "currentColor", strokeWidth: "1.25" }), r.jsx("mask", { id: "FillCrossHatchIcon", style: { maskType: "alpha" }, maskUnits: "userSpaceOnUse", x: -1, y: -1, width: 22, height: 22, children: r.jsx("path", { d: "M2.426 15.044 15.044 2.426M7.383 20 20 7.383M0 12.617 12.617 0m-7.98 17.941L17.256 5.324m-2.211 12.25L2.426 4.956M20 12.617 7.383 0m5.234 20L0 7.383m17.941 7.98L5.324 2.745", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) }), r.jsx("g", { mask: "url(#FillCrossHatchIcon)", children: r.jsx("path", { d: "M14.121 2H5.88A3.879 3.879 0 0 0 2 5.879v8.242A3.879 3.879 0 0 0 5.879 18h8.242A3.879 3.879 0 0 0 18 14.121V5.88A3.879 3.879 0 0 0 14.121 2Z", fill: "currentColor" }) })] }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), yIA = eA(r.jsxs(r.Fragment, { children: [r.jsx("g", { clipPath: "url(#a)", children: r.jsx("path", { d: "M4.91 2.625h10.18a2.284 2.284 0 0 1 2.285 2.284v10.182a2.284 2.284 0 0 1-2.284 2.284H4.909a2.284 2.284 0 0 1-2.284-2.284V4.909a2.284 2.284 0 0 1 2.284-2.284Z", stroke: "currentColor", strokeWidth: "1.25" }) }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), { ...uu, fill: "currentColor" }), O8 = eA(r.jsx(r.Fragment, { children: r.jsx("path", { d: "M4.167 10h11.666", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) }), uu), bIA = eA(r.jsx("path", { d: "M5 10h10", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }), uu), UIA = eA(r.jsx("path", { d: "M5 10h10", stroke: "currentColor", strokeWidth: "3.75", strokeLinecap: "round", strokeLinejoin: "round" }), uu);
kA.memo(({ theme: A }) => eA(r.jsx("path", { d: "M6 10H34", stroke: iB(), strokeWidth: 2, fill: "none", strokeLinecap: "round" }), { width: 40, height: 20 }));
var GIA = eA(r.jsxs("g", { strokeWidth: "2", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M5 12h2" }), r.jsx("path", { d: "M17 12h2" }), r.jsx("path", { d: "M11 12h2" })] }), bA), fIA = eA(r.jsxs("g", { strokeWidth: "2", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 12v.01" }), r.jsx("path", { d: "M8 12v.01" }), r.jsx("path", { d: "M12 12v.01" }), r.jsx("path", { d: "M16 12v.01" }), r.jsx("path", { d: "M20 12v.01" })] }), bA), LIA = eA(r.jsx("path", { d: "M2.5 12.038c1.655-.885 5.9-3.292 8.568-4.354 2.668-1.063.101 2.821 1.32 3.104 1.218.283 5.112-1.814 5.112-1.814", strokeWidth: "1.25" }), uu), xIA = eA(r.jsx("path", { d: "M2.5 12.563c1.655-.886 5.9-3.293 8.568-4.355 2.668-1.062.101 2.822 1.32 3.105 1.218.283 5.112-1.814 5.112-1.814m-13.469 2.23c2.963-1.586 6.13-5.62 7.468-4.998 1.338.623-1.153 4.11-.132 5.595 1.02 1.487 6.133-1.43 6.133-1.43", strokeWidth: "1.25" }), uu), SIA = eA(r.jsx("path", { d: "M2.5 11.936c1.737-.879 8.627-5.346 10.42-5.268 1.795.078-.418 5.138.345 5.736.763.598 3.53-1.789 4.235-2.147M2.929 9.788c1.164-.519 5.47-3.28 6.987-3.114 1.519.165 1 3.827 2.121 4.109 1.122.281 3.839-2.016 4.606-2.42", strokeWidth: "1.25" }), uu), NIA = eA(r.jsxs("svg", { strokeWidth: "1.5", children: [r.jsx("path", { d: "M3.33334 9.99998V6.66665C3.33334 6.04326 3.33403 4.9332 3.33539 3.33646C4.95233 3.33436 6.06276 3.33331 6.66668 3.33331H10" }), r.jsx("path", { d: "M13.3333 3.33331V3.34331" }), r.jsx("path", { d: "M16.6667 3.33331V3.34331" }), r.jsx("path", { d: "M16.6667 6.66669V6.67669" }), r.jsx("path", { d: "M16.6667 10V10.01" }), r.jsx("path", { d: "M3.33334 13.3333V13.3433" }), r.jsx("path", { d: "M16.6667 13.3333V13.3433" }), r.jsx("path", { d: "M3.33334 16.6667V16.6767" }), r.jsx("path", { d: "M6.66666 16.6667V16.6767" }), r.jsx("path", { d: "M10 16.6667V16.6767" }), r.jsx("path", { d: "M13.3333 16.6667V16.6767" }), r.jsx("path", { d: "M16.6667 16.6667V16.6767" })] }), uu), RIA = eA(r.jsxs("g", { strokeWidth: "1.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 12v-4a4 4 0 0 1 4 -4h4" }), r.jsx("line", { x1: "16", y1: "4", x2: "16", y2: "4.01" }), r.jsx("line", { x1: "20", y1: "4", x2: "20", y2: "4.01" }), r.jsx("line", { x1: "20", y1: "8", x2: "20", y2: "8.01" }), r.jsx("line", { x1: "20", y1: "12", x2: "20", y2: "12.01" }), r.jsx("line", { x1: "4", y1: "16", x2: "4", y2: "16.01" }), r.jsx("line", { x1: "20", y1: "16", x2: "20", y2: "16.01" }), r.jsx("line", { x1: "4", y1: "20", x2: "4", y2: "20.01" }), r.jsx("line", { x1: "8", y1: "20", x2: "8", y2: "20.01" }), r.jsx("line", { x1: "12", y1: "20", x2: "12", y2: "20.01" }), r.jsx("line", { x1: "16", y1: "20", x2: "16", y2: "20.01" }), r.jsx("line", { x1: "20", y1: "20", x2: "20", y2: "20.01" })] }), bA), MIA = eA(r.jsxs("g", { stroke: "currentColor", opacity: 0.3, strokeWidth: 2, children: [r.jsx("path", { d: "M12 12l9 0" }), r.jsx("path", { d: "M3 9l6 6" }), r.jsx("path", { d: "M3 15l6 -6" })] }), bA), YIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { transform: A ? "translate(40, 0) scale(-1, 1)" : "", stroke: "currentColor", strokeWidth: 2, fill: "none", children: [r.jsx("path", { d: "M34 10H6M34 10L27 5M34 10L27 15" }), r.jsx("path", { d: "M27.5 5L34.5 10L27.5 15" })] }), { width: 40, height: 20 })), vIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { stroke: "currentColor", fill: "currentColor", transform: A ? "translate(40, 0) scale(-1, 1)" : "", children: [r.jsx("path", { d: "M32 10L6 10", strokeWidth: 2 }), r.jsx("circle", { r: "4", transform: "matrix(-1 0 0 1 30 10)" })] }), { width: 40, height: 20 })), HIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { stroke: "currentColor", fill: "none", transform: A ? "translate(40, 0) scale(-1, 1)" : "", strokeWidth: 2, children: [r.jsx("path", { d: "M26 10L6 10" }), r.jsx("circle", { r: "4", transform: "matrix(-1 0 0 1 30 10)" })] }), { width: 40, height: 20 })), KIA = kA.memo(({ flip: A = !1 }) => eA(r.jsx("g", { transform: A ? "translate(40, 0) scale(-1, 1)" : "", children: r.jsx("path", { d: "M34 10H5.99996M34 10L34 5M34 10L34 15", stroke: "currentColor", strokeWidth: 2, fill: "none" }) }), { width: 40, height: 20 })), JIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { stroke: "currentColor", fill: "currentColor", transform: A ? "translate(40, 0) scale(-1, 1)" : "", children: [r.jsx("path", { d: "M32 10L6 10", strokeWidth: 2 }), r.jsx("path", { d: "M27.5 5.5L34.5 10L27.5 14.5L27.5 5.5" })] }), { width: 40, height: 20 })), ZIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { stroke: "currentColor", fill: "none", transform: A ? "translate(40, 0) scale(-1, 1)" : "", strokeWidth: 2, strokeLinejoin: "round", children: [r.jsx("path", { d: "M6,9.5H27" }), r.jsx("path", { d: "M27,5L34,10L27,14Z", fill: "none" })] }), { width: 40, height: 20 })), qIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { stroke: "currentColor", fill: "currentColor", transform: A ? "translate(40, 0) scale(-1, 1)" : "", strokeLinejoin: "round", strokeWidth: 2, children: [r.jsx("path", { d: "M6,9.5H20" }), r.jsx("path", { d: "M27,5L34,10L27,14L20,9.5Z" })] }), { width: 40, height: 20 })), WIA = kA.memo(({ flip: A = !1 }) => eA(r.jsxs("g", { stroke: "currentColor", fill: "none", transform: A ? "translate(40, 0) scale(-1, 1)" : "", strokeLinejoin: "round", strokeWidth: 2, children: [r.jsx("path", { d: "M6,9.5H20" }), r.jsx("path", { d: "M27,5L34,10L27,14L20,9.5Z" })] }), { width: 40, height: 20 })), jIA = kA.memo(({ flip: A = !1 }) => eA(r.jsx("g", { stroke: "currentColor", fill: "none", transform: A ? "" : "translate(40, 0) scale(-1, 1)", strokeLinejoin: "round", strokeWidth: 2, children: r.jsx("path", { d: "M34,10 H6 M15,10 L7,5 M15,10 L7,15" }) }), { width: 40, height: 20 })), TIA = kA.memo(({ flip: A = !1 }) => eA(r.jsx("g", { stroke: "currentColor", fill: "none", transform: A ? "" : "translate(40, 0) scale(-1, 1)", strokeLinejoin: "round", strokeWidth: 2, children: r.jsx("path", { d: "M34,10 H6 M15,10 L15,15 L15,5" }) }), { width: 40, height: 20 })), zIA = kA.memo(({ flip: A = !1 }) => eA(r.jsx("g", { stroke: "currentColor", fill: "none", transform: A ? "" : "translate(40, 0) scale(-1, 1)", strokeLinejoin: "round", strokeWidth: 2, children: r.jsx("path", { d: "M34,10 H6 M15,10 L15,16 L15,4 M15,10 L7,5 M15,10 L7,15" }) }), { width: 40, height: 20 })), PIA = eA(r.jsxs(r.Fragment, { children: [r.jsx("g", { clipPath: "url(#a)", children: r.jsx("path", { d: "M14.167 6.667a3.333 3.333 0 0 0-3.334-3.334H9.167a3.333 3.333 0 0 0 0 6.667h1.666a3.333 3.333 0 0 1 0 6.667H9.167a3.333 3.333 0 0 1-3.334-3.334", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), OIA = eA(r.jsxs(r.Fragment, { children: [r.jsx("g", { clipPath: "url(#a)", children: r.jsx("path", { d: "M5 16.667V3.333L10 15l5-11.667v13.334", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), VIA = eA(r.jsxs(r.Fragment, { children: [r.jsx("g", { clipPath: "url(#a)", children: r.jsx("path", { d: "M5.833 3.333v13.334h8.334", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), XIA = eA(r.jsx(r.Fragment, { children: r.jsx("path", { d: "m1.667 3.333 6.666 13.334M8.333 3.333 1.667 16.667M11.667 3.333v13.334h6.666", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" }) }), uu), n4 = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 7v-2h13v2" }), r.jsx("path", { d: "M10 5v14" }), r.jsx("path", { d: "M12 19h-4" }), r.jsx("path", { d: "M15 13v-1h6v1" }), r.jsx("path", { d: "M18 12v7" }), r.jsx("path", { d: "M17 19h2" })] }), bA), _IA = eA(r.jsx(r.Fragment, { children: r.jsxs("g", { stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M7 12h10" }), r.jsx("path", { d: "M7 5v14" }), r.jsx("path", { d: "M17 5v14" }), r.jsx("path", { d: "M15 19h4" }), r.jsx("path", { d: "M15 5h4" }), r.jsx("path", { d: "M5 19h4" }), r.jsx("path", { d: "M5 5h4" })] }) }), bA), hl = eA(r.jsx(r.Fragment, { children: r.jsx("g", { stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", children: r.jsx("path", { d: "M5.833 16.667v-10a3.333 3.333 0 0 1 3.334-3.334h1.666a3.333 3.333 0 0 1 3.334 3.334v10M5.833 10.833h8.334" }) }) }), uu), PD = eA(r.jsxs(r.Fragment, { children: [r.jsx("g", { clipPath: "url(#a)", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", children: r.jsx("path", { d: "M5.833 6.667 2.5 10l3.333 3.333M14.167 6.667 17.5 10l-3.333 3.333M11.667 3.333 8.333 16.667" }) }), r.jsx("defs", { children: r.jsx("clipPath", { id: "a", children: r.jsx("path", { fill: "#fff", d: "M0 0h20v20H0z" }) }) })] }), uu), $IA = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "8", x2: "20", y2: "8" }), r.jsx("line", { x1: "4", y1: "12", x2: "12", y2: "12" }), r.jsx("line", { x1: "4", y1: "16", x2: "16", y2: "16" })] }), bA), AoA = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "8", x2: "20", y2: "8" }), r.jsx("line", { x1: "8", y1: "12", x2: "16", y2: "12" }), r.jsx("line", { x1: "6", y1: "16", x2: "18", y2: "16" })] }), bA), uoA = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "8", x2: "20", y2: "8" }), r.jsx("line", { x1: "10", y1: "12", x2: "20", y2: "12" }), r.jsx("line", { x1: "8", y1: "16", x2: "20", y2: "16" })] }), bA), eoA = kA.memo(({ theme: A }) => eA(r.jsxs("g", { strokeWidth: "1.5", stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "4", x2: "20", y2: "4" }), r.jsx("rect", { x: "9", y: "8", width: "6", height: "12", rx: "2" })] }), bA)), CoA = kA.memo(({ theme: A }) => eA(r.jsxs("g", { strokeWidth: "2", stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "20", x2: "20", y2: "20" }), r.jsx("rect", { x: "9", y: "4", width: "6", height: "12", rx: "2" })] }), bA)), BoA = kA.memo(({ theme: A }) => eA(r.jsxs("g", { strokeWidth: "1.5", stroke: "currentColor", fill: "none", strokeLinecap: "round", strokeLinejoin: "round", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("line", { x1: "4", y1: "12", x2: "9", y2: "12" }), r.jsx("line", { x1: "15", y1: "12", x2: "20", y2: "12" }), r.jsx("rect", { x: "9", y: "6", width: "6", height: "12", rx: "2" })] }), bA)), V8 = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M21 19h-18l9 -15" }), r.jsx("path", { d: "M20.615 15.171h.015" }), r.jsx("path", { d: "M19.515 11.771h.015" }), r.jsx("path", { d: "M17.715 8.671h.015" }), r.jsx("path", { d: "M15.415 5.971h.015" })] }), bA), goA = eA(r.jsx("path", { d: "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z", fill: "currentColor" }), { width: 640, height: 512 });
eA(r.jsx("path", { d: "M480 416C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H150.6C133.7 480 117.4 473.3 105.4 461.3L25.37 381.3C.3786 356.3 .3786 315.7 25.37 290.7L258.7 57.37C283.7 32.38 324.3 32.38 349.3 57.37L486.6 194.7C511.6 219.7 511.6 260.3 486.6 285.3L355.9 416H480zM265.4 416L332.7 348.7L195.3 211.3L70.63 336L150.6 416L265.4 416z" }));
var X8 = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5" }), r.jsx("path", { d: "M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5" }), r.jsx("path", { d: "M14 5.5a1.5 1.5 0 0 1 3 0v6.5" }), r.jsx("path", { d: "M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47" })] }), bA), WF = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2" }), r.jsx("path", { d: "M7 11l5 5l5 -5" }), r.jsx("path", { d: "M12 4l0 12" })] }), bA), l2 = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z" }), r.jsx("path", { d: "M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" })] }), bA), toA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M7 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" }), r.jsx("path", { d: "M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" }), r.jsx("path", { d: "M9.15 14.85l8.85 -10.85" }), r.jsx("path", { d: "M6 4l8.85 10.85" })] }), bA), ioA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" }), r.jsx("path", { d: "M12 17l0 .01" }), r.jsx("path", { d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4" })] }), bA);
eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M7 4v16l13 -8z" })] }), bA);
eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z", strokeWidth: "0", fill: "currentColor" })] }), bA);
var EoA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M5 12l5 5l10 -10" })] }), bA), aoA = eA(r.jsxs(r.Fragment, { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M10.24 3.957l-8.422 14.06a1.989 1.989 0 0 0 1.7 2.983h16.845a1.989 1.989 0 0 0 1.7 -2.983l-8.423 -14.06a1.989 1.989 0 0 0 -3.4 0z" }), r.jsx("path", { d: "M12 9v4" }), r.jsx("path", { d: "M12 17h.01" })] }), bA), IoA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M11 7l6 6" }), r.jsx("path", { d: "M4 16l11.7 -11.7a1 1 0 0 1 1.4 0l2.6 2.6a1 1 0 0 1 0 1.4l-11.7 11.7h-4v-4z" })] }), bA), ooA = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M12 3l-4 7h8z" }), r.jsx("path", { d: "M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" }), r.jsx("path", { d: "M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z" })] }), bA), _8 = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 7l16 0" }), r.jsx("path", { d: "M4 17l16 0" }), r.jsx("path", { d: "M7 4l0 16" }), r.jsx("path", { d: "M17 4l0 16" })] }), bA), $8 = eA(r.jsx("path", { fill: "currentColor", d: "M407.48,111.18C335.587,108.103 269.573,152.338 245.08,220C220.587,152.338 154.573,108.103 82.68,111.18C80.285,168.229 107.577,222.632 154.74,254.82C178.908,271.419 193.35,298.951 193.27,328.27L193.27,379.13L296.9,379.13L296.9,328.27C296.816,298.953 311.255,271.42 335.42,254.82C382.596,222.644 409.892,168.233 407.48,111.18Z" })), Ns = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { d: "M4.16602 10H15.8327" }), r.jsx("path", { d: "M12.5 13.3333L15.8333 10" }), r.jsx("path", { d: "M12.5 6.66666L15.8333 9.99999" })] }), uu), Ak = eA(r.jsxs("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round", transform: "rotate(90 10 10)", children: [r.jsx("path", { clipRule: "evenodd", d: "m9.644 13.69 7.774-7.773a2.357 2.357 0 0 0-3.334-3.334l-7.773 7.774L8 12l1.643 1.69Z" }), r.jsx("path", { d: "m13.25 3.417 3.333 3.333M10 10l2-2M5 15l3-3M2.156 17.894l1-1M5.453 19.029l-.144-1.407M2.377 11.887l.866 1.118M8.354 17.273l-1.194-.758M.953 14.652l1.408.13" })] }), 20), uk = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z" }), r.jsx("path", { d: "M6 21l15 -15l-3 -3l-15 15l3 3" }), r.jsx("path", { d: "M15 6l3 3" }), r.jsx("path", { d: "M9 3a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" }), r.jsx("path", { d: "M19 13a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" })] }), bA);
eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z" }), r.jsx("path", { d: "M6 21l15 -15l-3 -3l-15 15l3 3" }), r.jsx("path", { d: "M15 6l3 3" }), r.jsx("path", { d: "M9 3a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" }), r.jsx("path", { d: "M19 13a2 2 0 0 0 2 2a2 2 0 0 0 -2 2a2 2 0 0 0 -2 -2a2 2 0 0 0 2 -2" })] }), bA);
eA(r.jsxs("g", { stroke: "currentColor", fill: "none", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M11.217 19.384a3.501 3.501 0 0 0 6.783 -1.217v-5.167l-6 -3.35" }), r.jsx("path", { d: "M5.214 15.014a3.501 3.501 0 0 0 4.446 5.266l4.34 -2.534v-6.946" }), r.jsx("path", { d: "M6 7.63c-1.391 -.236 -2.787 .395 -3.534 1.689a3.474 3.474 0 0 0 1.271 4.745l4.263 2.514l6 -3.348" }), r.jsx("path", { d: "M12.783 4.616a3.501 3.501 0 0 0 -6.783 1.217v5.067l6 3.45" }), r.jsx("path", { d: "M18.786 8.986a3.501 3.501 0 0 0 -4.446 -5.266l-4.34 2.534v6.946" }), r.jsx("path", { d: "M18 16.302c1.391 .236 2.787 -.395 3.534 -1.689a3.474 3.474 0 0 0 -1.271 -4.745l-4.308 -2.514l-5.955 3.42" })] }), bA);
var QoA = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 8v-2a2 2 0 0 1 2 -2h2" }), r.jsx("path", { d: "M4 16v2a2 2 0 0 0 2 2h2" }), r.jsx("path", { d: "M16 4h2a2 2 0 0 1 2 2v2" }), r.jsx("path", { d: "M16 20h2a2 2 0 0 0 2 -2v-2" })] }), bA), c2 = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" }), r.jsx("path", { d: "M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6" })] }), bA), noA = eA(r.jsxs("g", { stroke: "currentColor", fill: "none", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M10.585 10.587a2 2 0 0 0 2.829 2.828" }), r.jsx("path", { d: "M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87" }), r.jsx("path", { d: "M3 3l18 18" })] }), bA);
eA(r.jsxs("g", { stroke: "currentColor", fill: "none", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M15.5 13a3.5 3.5 0 0 0 -3.5 3.5v1a3.5 3.5 0 0 0 7 0v-1.8" }), r.jsx("path", { d: "M8.5 13a3.5 3.5 0 0 1 3.5 3.5v1a3.5 3.5 0 0 1 -7 0v-1.8" }), r.jsx("path", { d: "M17.5 16a3.5 3.5 0 0 0 0 -7h-.5" }), r.jsx("path", { d: "M19 9.3v-2.8a3.5 3.5 0 0 0 -7 0" }), r.jsx("path", { d: "M6.5 16a3.5 3.5 0 0 1 0 -7h.5" }), r.jsx("path", { d: "M5 9.3v-2.8a3.5 3.5 0 0 1 7 0v10" })] }), bA);
var roA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M15.5 13a3.5 3.5 0 0 0 -3.5 3.5v1a3.5 3.5 0 0 0 7 0v-1.8" }), r.jsx("path", { d: "M8.5 13a3.5 3.5 0 0 1 3.5 3.5v1a3.5 3.5 0 0 1 -7 0v-1.8" }), r.jsx("path", { d: "M17.5 16a3.5 3.5 0 0 0 0 -7h-.5" }), r.jsx("path", { d: "M19 9.3v-2.8a3.5 3.5 0 0 0 -7 0" }), r.jsx("path", { d: "M6.5 16a3.5 3.5 0 0 1 0 -7h.5" }), r.jsx("path", { d: "M5 9.3v-2.8a3.5 3.5 0 0 1 7 0v10" })] }), bA), SE = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" }), r.jsx("path", { d: "M21 21l-6 -6" })] }), bA), soA = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M20.984 12.53a9 9 0 1 0 -7.552 8.355" }), r.jsx("path", { d: "M12 7v5l3 3" }), r.jsx("path", { d: "M19 16l-2 3h4l-2 3" })] }), bA), loA = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M9 2m0 3a3 3 0 0 1 3 -3h0a3 3 0 0 1 3 3v5a3 3 0 0 1 -3 3h0a3 3 0 0 1 -3 -3z" }), r.jsx("path", { d: "M5 10a7 7 0 0 0 14 0" }), r.jsx("path", { d: "M8 21l8 0" }), r.jsx("path", { d: "M12 17l0 4" })] }), bA), coA = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 3l18 18" }), r.jsx("path", { d: "M9 5a3 3 0 0 1 6 0v5a3 3 0 0 1 -.13 .874m-2 2a3 3 0 0 1 -3.87 -2.872v-1" }), r.jsx("path", { d: "M5 10a7 7 0 0 0 10.846 5.85m2 -2a6.967 6.967 0 0 0 1.152 -3.85" }), r.jsx("path", { d: "M8 21l8 0" }), r.jsx("path", { d: "M12 17l0 4" })] }), bA), ek = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M13 3l0 7l6 0l-8 11l0 -7l-6 0l8 -11" })] }), bA), doA = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M8 8m0 1a1 1 0 0 1 1 -1h6a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-6a1 1 0 0 1 -1 -1z" }), r.jsx("path", { d: "M12 20v.01" }), r.jsx("path", { d: "M16 20v.01" }), r.jsx("path", { d: "M8 20v.01" }), r.jsx("path", { d: "M4 20v.01" }), r.jsx("path", { d: "M4 16v.01" }), r.jsx("path", { d: "M4 12v.01" }), r.jsx("path", { d: "M4 8v.01" }), r.jsx("path", { d: "M4 4v.01" }), r.jsx("path", { d: "M8 4v.01" }), r.jsx("path", { d: "M12 4v.01" }), r.jsx("path", { d: "M16 4v.01" }), r.jsx("path", { d: "M20 4v.01" }), r.jsx("path", { d: "M20 8v.01" }), r.jsx("path", { d: "M20 12v.01" }), r.jsx("path", { d: "M20 16v.01" }), r.jsx("path", { d: "M20 20v.01" })] }), bA), DoA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M5 3v18" }), r.jsx("path", { d: "M19 21v-18" }), r.jsx("path", { d: "M5 7h14" }), r.jsx("path", { d: "M5 15h14" }), r.jsx("path", { d: "M8 13v4" }), r.jsx("path", { d: "M11 13v4" }), r.jsx("path", { d: "M16 13v4" }), r.jsx("path", { d: "M14 5v4" }), r.jsx("path", { d: "M11 5v4" }), r.jsx("path", { d: "M8 5v4" }), r.jsx("path", { d: "M3 21h18" })] }), bA), hoA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 12l18 0" }), r.jsx("path", { d: "M7 16l10 0l-10 5l0 -5" }), r.jsx("path", { d: "M7 8l10 0l-10 -5l0 5" })] }), bA), woA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M12 3l0 18" }), r.jsx("path", { d: "M16 7l0 10l5 0l-5 -10" }), r.jsx("path", { d: "M8 7l0 10l-5 0l5 -10" })] }), bA), Ck = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M5 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z" }), r.jsx("path", { d: "M19 6h1a2 2 0 0 1 2 2a5 5 0 0 1 -5 5l-5 0v2" }), r.jsx("path", { d: "M10 15m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z" })] }), bA), d2 = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M15 15m-5 0a5 5 0 1 0 10 0a5 5 0 1 0 -10 0" }), r.jsx("path", { d: "M22 22l-3 -3" }), r.jsx("path", { d: "M6 18h-1a2 2 0 0 1 -2 -2v-1" }), r.jsx("path", { d: "M3 11v-1" }), r.jsx("path", { d: "M3 6v-1a2 2 0 0 1 2 -2h1" }), r.jsx("path", { d: "M10 3h1" }), r.jsx("path", { d: "M15 3h1a2 2 0 0 1 2 2v1" })] }), bA), FoA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M14 3v4a1 1 0 0 0 1 1h4" }), r.jsx("path", { d: "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4" }), r.jsx("path", { d: "M4 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75" }), r.jsx("path", { d: "M10 15l2 6l2 -6" }), r.jsx("path", { d: "M20 15h-1a2 2 0 0 0 -2 2v2a2 2 0 0 0 2 2h1v-3" })] }), bA), poA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M14 3v4a1 1 0 0 0 1 1h4" }), r.jsx("path", { d: "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4" }), r.jsx("path", { d: "M20 15h-1a2 2 0 0 0 -2 2v2a2 2 0 0 0 2 2h1v-3" }), r.jsx("path", { d: "M5 18h1.5a1.5 1.5 0 0 0 0 -3h-1.5v6" }), r.jsx("path", { d: "M11 21v-6l3 6v-6" })] }), bA), moA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4 13v-8a2 2 0 0 1 2 -2h1a2 2 0 0 1 2 2v8a2 2 0 0 0 6 0v-8a2 2 0 0 1 2 -2h1a2 2 0 0 1 2 2v8a8 8 0 0 1 -16 0" }), r.jsx("path", { d: "M4 8l5 0" }), r.jsx("path", { d: "M15 8l4 0" })] }), bA), koA = eA(r.jsxs("g", { strokeWidth: 1.25, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 14c.83 .642 2.077 1.017 3.5 1c1.423 .017 2.67 -.358 3.5 -1c.83 -.642 2.077 -1.017 3.5 -1c1.423 -.017 2.67 .358 3.5 1" }), r.jsx("path", { d: "M8 3a2.4 2.4 0 0 0 -1 2a2.4 2.4 0 0 0 1 2" }), r.jsx("path", { d: "M12 3a2.4 2.4 0 0 0 -1 2a2.4 2.4 0 0 0 1 2" }), r.jsx("path", { d: "M3 10h14v5a6 6 0 0 1 -6 6h-2a6 6 0 0 1 -6 -6v-5z" }), r.jsx("path", { d: "M16.746 16.726a3 3 0 1 0 .252 -5.555" })] }), bA), yoA = eA(r.jsxs("g", { stroke: "currentColor", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 5a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-16a1 1 0 0 1-1-1v-10zM7 20h10M9 16v4M15 16v4" })] }), { ...bA, strokeWidth: 1.5 });
eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M15 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2" }), r.jsx("path", { d: "M21 12h-13l3 -3" }), r.jsx("path", { d: "M11 15l-3 -3" })] }), bA);
var boA = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M2 8a4 4 0 0 1 4 -4h12a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-12a4 4 0 0 1 -4 -4v-8z" }), r.jsx("path", { d: "M10 9l5 3l-5 3z" })] }), bA), UoA = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M3 6h18" }), r.jsx("path", { d: "M3 12h18" }), r.jsx("path", { d: "M3 18h18" }), r.jsx("path", { d: "M6 3v18" }), r.jsx("path", { d: "M12 3v18" }), r.jsx("path", { d: "M18 3v18" })] }), bA), GoA = eA(r.jsxs("g", { strokeWidth: 1.5, children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M17 3m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z" }), r.jsx("path", { d: "M3 17m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z" }), r.jsx("path", { d: "M17 5c-6.627 0 -12 5.373 -12 12" })] }), bA), foA = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M6 18l12 -12" }), r.jsx("path", { d: "M18 10v-4h-4" })] }), bA), LoA = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M4,19L10,19C11.097,19 12,18.097 12,17L12,9C12,7.903 12.903,7 14,7L21,7" }), r.jsx("path", { d: "M18 4l3 3l-3 3" })] }), bA), xoA = eA(r.jsxs("g", { children: [r.jsx("path", { d: "M16,12L20,9L16,6" }), r.jsx("path", { d: "M6 20c0 -6.075 4.925 -11 11 -11h3" })] }), bA), Bk = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M6 9l6 6l6 -6" })] }), bA), SoA = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M6 15l6 -6l6 6" })] }), bA), NoA = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M6 15l6 -6l6 6" })] }), bA), jF = eA(r.jsxs("g", { strokeWidth: "1.25", children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M8 5v10a1 1 0 0 0 1 1h10" }), r.jsx("path", { d: "M5 8h10a1 1 0 0 1 1 1v10" })] }), bA), gk = eA(r.jsxs("g", { children: [r.jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }), r.jsx("path", { d: "M5 5m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), r.jsx("path", { d: "M19 5m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), r.jsx("path", { d: "M5 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), r.jsx("path", { d: "M19 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" }), r.jsx("path", { d: "M5 7l0 10" }), r.jsx("path", { d: "M7 5l10 0" }), r.jsx("path", { d: "M7 19l10 0" }), r.jsx("path", { d: "M19 7l0 10" })] }), bA), wl = { [t0.Excalifont]: { metrics: { unitsPerEm: 1e3, ascender: 886, descender: -374, lineHeight: 1.25 }, icon: WQ }, [t0.Nunito]: { metrics: { unitsPerEm: 1e3, ascender: 1011, descender: -353, lineHeight: 1.35 }, icon: hl }, [t0["Lilita One"]]: { metrics: { unitsPerEm: 1e3, ascender: 923, descender: -220, lineHeight: 1.15 }, icon: _IA }, [t0["Comic Shanns"]]: { metrics: { unitsPerEm: 1e3, ascender: 750, descender: -250, lineHeight: 1.25 }, icon: PD }, [t0.Virgil]: { metrics: { unitsPerEm: 1e3, ascender: 886, descender: -374, lineHeight: 1.25 }, icon: WQ, deprecated: !0 }, [t0.Helvetica]: { metrics: { unitsPerEm: 2048, ascender: 1577, descender: -471, lineHeight: 1.15 }, icon: hl, deprecated: !0, local: !0 }, [t0.Cascadia]: { metrics: { unitsPerEm: 2048, ascender: 1900, descender: -480, lineHeight: 1.2 }, icon: PD, deprecated: !0 }, [t0["Liberation Sans"]]: { metrics: { unitsPerEm: 2048, ascender: 1854, descender: -434, lineHeight: 1.15 }, serverSide: !0 }, [Za.Xiaolai]: { metrics: { unitsPerEm: 1e3, ascender: 880, descender: -144, lineHeight: 1.15 }, fallback: !0 }, [Za["Segoe UI Emoji"]]: { metrics: { unitsPerEm: 1e3, ascender: 886, descender: -374, lineHeight: 1.25 }, local: !0, fallback: !0 } }, EE = { LATIN: "U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD", LATIN_EXT: "U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF", CYRILIC_EXT: "U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F", CYRILIC: "U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116", VIETNAMESE: "U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB" }, D2 = "local:", RoA = class extends Error {
  constructor(A = "Couldn't export canvas.", u = "CANVAS_ERROR") {
    super(), this.name = u, this.message = A;
  }
}, r4 = class extends DOMException {
  constructor(A = "Request Aborted") {
    super(A, "AbortError");
  }
}, QE = class extends Error {
  constructor(A = "Image Scene Data Error", u = "IMAGE_SCENE_DATA_ERROR") {
    super(A), J(this, "code"), this.name = "EncodingError", this.code = u;
  }
}, MoA = class extends Error {
  constructor() {
    super(...arguments), J(this, "code", "ELEMENT_HAS_INVALID_INDEX");
  }
}, tk = class extends Error {
  constructor(A = "Worker URL is not defined!", u = "WORKER_URL_NOT_DEFINED") {
    super(A), J(this, "code"), this.name = "WorkerUrlNotDefinedError", this.code = u;
  }
}, ik = class extends Error {
  constructor(A = "Worker has to be in a separate chunk!", u = "WORKER_IN_THE_MAIN_CHUNK") {
    super(A), J(this, "code"), this.name = "WorkerInTheMainChunkError", this.code = u;
  }
}, TF = class extends Error {
  constructor(A) {
    super(A), this.name = "ExcalidrawError";
  }
}, YoA = class {
  constructor(A) {
    J(this, "instance"), J(this, "debounceTerminate"), this.instance = new Worker(A, { type: "module" });
  }
}, voA = class Ek {
  constructor(u, e) {
    J(this, "idleWorkers", /* @__PURE__ */ new Set()), J(this, "workerUrl"), J(this, "workerTTL"), this.workerUrl = u, this.workerTTL = e.ttl || 1e3;
  }
  static create(u, e = {}) {
    if (!u) throw new tk();
    if (!import.meta.url || u.toString() === import.meta.url) throw new ik();
    return new Ek(u, e);
  }
  async postMessage(u, e) {
    let C, B = Array.from(this.idleWorkers).shift();
    return B ? (this.idleWorkers.delete(B), C = B) : C = await this.createWorker(), new Promise((g, t) => {
      C.instance.onmessage = this.onMessageHandler(C, g), C.instance.onerror = this.onErrorHandler(C, t), C.instance.postMessage(u, e), C.debounceTerminate(() => t(new Error(`Active worker did not respond for ${this.workerTTL}ms!`)));
    });
  }
  async clear() {
    for (let u of this.idleWorkers) u.debounceTerminate.cancel(), u.instance.terminate();
    this.idleWorkers.clear();
  }
  async createWorker() {
    let u = new YoA(this.workerUrl);
    return u.debounceTerminate = tI((e) => {
      u.instance.terminate(), this.idleWorkers.has(u) ? (this.idleWorkers.delete(u), console.debug("Job finished! Idle worker has been released from the pool.")) : e ? e() : console.error("Worker has been terminated!");
    }, this.workerTTL), u;
  }
  onMessageHandler(u, e) {
    return (C) => {
      u.debounceTerminate(), this.idleWorkers.add(u), e(C.data);
    };
  }
  onErrorHandler(u, e) {
    return (C) => {
      u.debounceTerminate(() => e(C)), u.debounceTerminate.flush(), this.clear();
    };
  }
}, zF = typeof Worker < "u", HoA = async (A, u) => {
  let { Commands: e, subsetToBase64: C, toBase64: B } = await JoA();
  return zF ? ti(async () => {
    try {
      let g = await ZoA(), t = A.slice(0), i = await g.postMessage({ command: e.Subset, arrayBuffer: t, codePoints: u }, { transfer: [t] });
      return B(i);
    } catch (g) {
      return zF = !1, paA() && (g instanceof tk || g instanceof ik) || console.error("Failed to use workers for subsetting, falling back to the main thread.", g), C(A, u);
    }
  }) : C(A, u);
}, Ud = null, Gd = null, KoA = async () => (Ud || (Ud = Promise.resolve().then(() => omA)), Ud), JoA = async () => (Gd || (Gd = Promise.resolve().then(() => QmA)), Gd), fd = null, ZoA = () => (fd || (fd = ti(async () => {
  let { WorkerUrl: A } = await KoA();
  return voA.create(A);
})), fd), ak = class Rs {
  constructor(u, e, C) {
    J(this, "urls"), J(this, "fontFace"), this.urls = Rs.createUrls(e);
    let B = this.urls.map((g) => `url(${g}) ${Rs.getFormat(g)}`).join(", ");
    this.fontFace = new FontFace(u, B, { display: "swap", style: "normal", weight: "400", ...C });
  }
  toCSS(u) {
    if (!this.getUnicodeRangeRegex().test(u)) return;
    let e = Array.from(u).map((C) => C.codePointAt(0));
    return this.getContent(e).then((C) => `@font-face { font-family: ${this.fontFace.family}; src: url(${C}); }`);
  }
  async getContent(u) {
    let e = 0, C = [];
    for (; e < this.urls.length; ) {
      let B = this.urls[e];
      try {
        let g = await this.fetchFont(B);
        return await HoA(g, u);
      } catch (g) {
        C.push(`"${B.toString()}" returned error "${g}"`);
      }
      e++;
    }
    return console.error(`Failed to fetch font family "${this.fontFace.family}"`, JSON.stringify(C, void 0, 2)), this.urls.length ? this.urls[this.urls.length - 1].toString() : "";
  }
  fetchFont(u) {
    return ti(async () => {
      let e = await fetch(u, { cache: "force-cache", headers: { Accept: "font/woff2" } });
      if (!e.ok) {
        let C = u instanceof URL ? u.toString() : "dataurl";
        throw new Error(`Failed to fetch "${C}": ${e.statusText}`);
      }
      return await e.arrayBuffer();
    });
  }
  getUnicodeRangeRegex() {
    let u = this.fontFace.unicodeRange.split(/,\s*/).map((e) => {
      let [C, B] = e.replace("U+", "").split("-");
      return B ? `\\u{${C}}-\\u{${B}}` : `\\u{${C}}`;
    }).join("");
    return new RegExp(`[${u}]`, "u");
  }
  static createUrls(u) {
    if (u.startsWith("data")) return [u];
    if (u.startsWith(D2)) return [];
    if (u.startsWith("http")) return [new URL(u)];
    let e = u.replace(/^\/+/, ""), C = [];
    if (typeof window.EXCALIDRAW_ASSET_PATH == "string") {
      let B = this.normalizeBaseUrl(window.EXCALIDRAW_ASSET_PATH);
      C.push(new URL(e, B));
    } else Array.isArray(window.EXCALIDRAW_ASSET_PATH) && window.EXCALIDRAW_ASSET_PATH.forEach((B) => {
      let g = this.normalizeBaseUrl(B);
      C.push(new URL(e, g));
    });
    return C.push(new URL(e, Rs.ASSETS_FALLBACK_URL)), C;
  }
  static getFormat(u) {
    if (!(u instanceof URL)) return "";
    try {
      let e = new URL(u).pathname.split(".");
      return e.length === 1 ? "" : `format('${e.pop()}')`;
    } catch {
      return "";
    }
  }
  static normalizeBaseUrl(u) {
    let e = u;
    return /^\.?\//.test(e) && (e = new URL(e.replace(/^\.?\/+/, ""), window?.location?.origin).toString()), e = `${e.replace(/\/+$/, "")}/`, e;
  }
};
J(ak, "ASSETS_FALLBACK_URL", `https://esm.sh/${`${tu.PKG_NAME}@${tu.PKG_VERSION}`}/dist/prod/`);
var qoA = ak, WoA = "./fonts/Cascadia/CascadiaCode-Regular.woff2", joA = [{ uri: WoA }], ToA = "./fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2", zoA = "./fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2", PoA = "./fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2", OoA = "./fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2", VoA = [{ uri: ToA, descriptors: { unicodeRange: "U+20-7e,U+a1-a6,U+a8,U+ab-ac,U+af-b1,U+b4,U+b8,U+bb-bc,U+bf-cf,U+d1-d7,U+d9-de,U+e0-ef,U+f1-f7,U+f9-ff,U+131,U+152-153,U+2c6,U+2da,U+2dc,U+2013-2014,U+2018-201a,U+201c-201d,U+2020-2022,U+2026,U+2039-203a,U+2044,U+20ac,U+2191,U+2193,U+2212" } }, { uri: zoA, descriptors: { unicodeRange: "U+100-10f,U+112-125,U+128-130,U+134-137,U+139-13c,U+141-148,U+14c-151,U+154-161,U+164-165,U+168-17f,U+1bf,U+1f7,U+218-21b,U+237,U+1e80-1e85,U+1ef2-1ef3,U+a75b" } }, { uri: PoA, descriptors: { unicodeRange: "U+2c7,U+2d8-2d9,U+2db,U+2dd,U+315,U+2190,U+2192,U+2200,U+2203-2204,U+2264-2265,U+f6c3" } }, { uri: OoA, descriptors: { unicodeRange: "U+3bb" } }], XoA = [{ uri: D2 }], _oA = "./fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2", $oA = "./fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2", AQA = "./fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2", uQA = "./fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2", eQA = "./fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2", CQA = "./fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2", BQA = "./fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2", gQA = [{ uri: _oA, descriptors: { unicodeRange: "U+20-7e,U+a0-a3,U+a5-a6,U+a8-ab,U+ad-b1,U+b4,U+b6-b8,U+ba-ff,U+131,U+152-153,U+2bc,U+2c6,U+2da,U+2dc,U+304,U+308,U+2013-2014,U+2018-201a,U+201c-201e,U+2020,U+2022,U+2024-2026,U+2030,U+2039-203a,U+20ac,U+2122,U+2212" } }, { uri: $oA, descriptors: { unicodeRange: "U+100-130,U+132-137,U+139-149,U+14c-151,U+154-17e,U+192,U+1fc-1ff,U+218-21b,U+237,U+1e80-1e85,U+1ef2-1ef3,U+2113" } }, { uri: AQA, descriptors: { unicodeRange: "U+400-45f,U+490-491,U+2116" } }, { uri: uQA, descriptors: { unicodeRange: "U+37e,U+384-38a,U+38c,U+38e-393,U+395-3a1,U+3a3-3a8,U+3aa-3cf,U+3d7" } }, { uri: eQA, descriptors: { unicodeRange: "U+2c7,U+2d8-2d9,U+2db,U+2dd,U+302,U+306-307,U+30a-30c,U+326-328,U+212e,U+2211,U+fb01-fb02" } }, { uri: CQA, descriptors: { unicodeRange: "U+462-463,U+472-475,U+4d8-4d9,U+4e2-4e3,U+4e6-4e9,U+4ee-4ef" } }, { uri: BQA, descriptors: { unicodeRange: "U+300-301,U+303" } }], tQA = [{ uri: D2 }], iQA = "./fonts/Liberation/LiberationSans-Regular.woff2", EQA = [{ uri: iQA }], aQA = "./fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2", IQA = "./fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2", oQA = [{ uri: IQA, descriptors: { unicodeRange: EE.LATIN_EXT } }, { uri: aQA, descriptors: { unicodeRange: EE.LATIN } }], QQA = "./fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2", nQA = "./fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2", rQA = "./fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2", sQA = "./fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2", lQA = "./fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2", cQA = [{ uri: sQA, descriptors: { unicodeRange: EE.CYRILIC_EXT, weight: "500" } }, { uri: rQA, descriptors: { unicodeRange: EE.CYRILIC, weight: "500" } }, { uri: lQA, descriptors: { unicodeRange: EE.VIETNAMESE, weight: "500" } }, { uri: nQA, descriptors: { unicodeRange: EE.LATIN_EXT, weight: "500" } }, { uri: QQA, descriptors: { unicodeRange: EE.LATIN, weight: "500" } }], dQA = "./fonts/Virgil/Virgil-Regular.woff2", DQA = [{ uri: dQA }], hQA = "./fonts/Xiaolai/Xiaolai-Regular-09850c4077f3fffe707905872e0e2460.woff2", wQA = "./fonts/Xiaolai/Xiaolai-Regular-7eb9fffd1aa890d07d0f88cc82e6cfe4.woff2", FQA = "./fonts/Xiaolai/Xiaolai-Regular-60a3089806700d379f11827ee9843b6b.woff2", pQA = "./fonts/Xiaolai/Xiaolai-Regular-6fe5c5973cc06f74b2387a631ea36b88.woff2", mQA = "./fonts/Xiaolai/Xiaolai-Regular-b96d9226ce77ec94ceca043d712182e6.woff2", kQA = "./fonts/Xiaolai/Xiaolai-Regular-6ae5b42180ad70b971c91e7eefb8eba2.woff2", yQA = "./fonts/Xiaolai/Xiaolai-Regular-a4c34be6d42152e64b0df90bc4607f64.woff2", bQA = "./fonts/Xiaolai/Xiaolai-Regular-c69f61a4ab18d0488c8d1fc12e7028e8.woff2", UQA = "./fonts/Xiaolai/Xiaolai-Regular-e3fcf5180fd466c8915c4e8069491054.woff2", GQA = "./fonts/Xiaolai/Xiaolai-Regular-c1f94158256bb1f3bf665b053d895af9.woff2", fQA = "./fonts/Xiaolai/Xiaolai-Regular-544fc28abe2c5c30e62383fd4dac255f.woff2", LQA = "./fonts/Xiaolai/Xiaolai-Regular-7197d6fda6cba7c3874c53d6381ca239.woff2", xQA = "./fonts/Xiaolai/Xiaolai-Regular-70c2eb8d64e71a42a834eb857ea9df51.woff2", SQA = "./fonts/Xiaolai/Xiaolai-Regular-069e77aac84590e2e991d0a0176d34f2.woff2", NQA = "./fonts/Xiaolai/Xiaolai-Regular-41521fade99856108931b4768b1b2648.woff2", RQA = "./fonts/Xiaolai/Xiaolai-Regular-a004ddfcb26e67bd6e678c8ed19e25ce.woff2", MQA = "./fonts/Xiaolai/Xiaolai-Regular-04b718e5623574919c8b0dea5f301444.woff2", YQA = "./fonts/Xiaolai/Xiaolai-Regular-7e4bde7e9c7f84cd34d8a845e384c746.woff2", vQA = "./fonts/Xiaolai/Xiaolai-Regular-23686f7f29da6e8008c36dd3a80c83d6.woff2", HQA = "./fonts/Xiaolai/Xiaolai-Regular-69c09cc5fa3e55c74fc4821f76909cc3.woff2", KQA = "./fonts/Xiaolai/Xiaolai-Regular-25b7f38e18f035f96cb5e547bd2bd08c.woff2", JQA = "./fonts/Xiaolai/Xiaolai-Regular-ba3de316d63c7e339987b16f41a0b879.woff2", ZQA = "./fonts/Xiaolai/Xiaolai-Regular-12b52b58eb3df36804b9a654ec9ee194.woff2", qQA = "./fonts/Xiaolai/Xiaolai-Regular-b1220a3c61f85cc0408deedb4c5f57a2.woff2", WQA = "./fonts/Xiaolai/Xiaolai-Regular-4535823663ad81405188a528d8f2b1a2.woff2", jQA = "./fonts/Xiaolai/Xiaolai-Regular-3eaa538115d76932653c21d8dc28f207.woff2", TQA = "./fonts/Xiaolai/Xiaolai-Regular-7e929f262f30c8ee78bf398150b1a7cd.woff2", zQA = "./fonts/Xiaolai/Xiaolai-Regular-73e309718fd16cea44b4d54a33581811.woff2", PQA = "./fonts/Xiaolai/Xiaolai-Regular-9eb5a99df4e76ac3363453ac9ca288b1.woff2", OQA = "./fonts/Xiaolai/Xiaolai-Regular-3e63ed8162808a9e425ed80a8bc79114.woff2", VQA = "./fonts/Xiaolai/Xiaolai-Regular-cb17fc3db95f6d139afc9d31a8e93293.woff2", XQA = "./fonts/Xiaolai/Xiaolai-Regular-c8b71798409ccc126ee264a00aadcf21.woff2", _QA = "./fonts/Xiaolai/Xiaolai-Regular-11c345711937f0ba4b8f7b6b919c8440.woff2", $QA = "./fonts/Xiaolai/Xiaolai-Regular-e480d9c614742d05f0e78f274f1e69e6.woff2", AnA = "./fonts/Xiaolai/Xiaolai-Regular-95429962233afd82db1c27df1500a28c.woff2", unA = "./fonts/Xiaolai/Xiaolai-Regular-2cf96d082d35ea3d8106851223ad0d16.woff2", enA = "./fonts/Xiaolai/Xiaolai-Regular-2d43040e86ff03ba677f6f9c04cd0805.woff2", CnA = "./fonts/Xiaolai/Xiaolai-Regular-2a26d20a23b00898ce82f09d2ee47c3f.woff2", BnA = "./fonts/Xiaolai/Xiaolai-Regular-a365e82ed54697a52f27adcea1315fe8.woff2", gnA = "./fonts/Xiaolai/Xiaolai-Regular-f5d079153c99a25b9be5b8583c4cc8a7.woff2", tnA = "./fonts/Xiaolai/Xiaolai-Regular-10a7ae9a371830a80c3d844acf1c02d7.woff2", inA = "./fonts/Xiaolai/Xiaolai-Regular-e4bca6cfa53e499cae0a6be4894a90e9.woff2", EnA = "./fonts/Xiaolai/Xiaolai-Regular-60a41c7e1c68f22424e6d22df544bc82.woff2", anA = "./fonts/Xiaolai/Xiaolai-Regular-7ab2bed91166a9dca83a5ebfbe2a7f38.woff2", InA = "./fonts/Xiaolai/Xiaolai-Regular-670ba603758d94268e8606f240a42e12.woff2", onA = "./fonts/Xiaolai/Xiaolai-Regular-e656f091b9dc4709722c9f4b84d3c797.woff2", QnA = "./fonts/Xiaolai/Xiaolai-Regular-15dc6d811c9cd078f9086a740d5a1038.woff2", nnA = "./fonts/Xiaolai/Xiaolai-Regular-f0f13b5c60e0af5553bd359f5513be1b.woff2", rnA = "./fonts/Xiaolai/Xiaolai-Regular-8c2f33cee3993174f7e87c28e4bf42ee.woff2", snA = "./fonts/Xiaolai/Xiaolai-Regular-761d05e3cd968cf574166867998ef06a.woff2", lnA = "./fonts/Xiaolai/Xiaolai-Regular-642b26e2e5f5fb780b51b593dbc8c851.woff2", cnA = "./fonts/Xiaolai/Xiaolai-Regular-5572b3513ba8df57a3d5d7303ee6b11b.woff2", dnA = "./fonts/Xiaolai/Xiaolai-Regular-3c9de2ae0ea4bc91a510942dfa4be8d2.woff2", DnA = "./fonts/Xiaolai/Xiaolai-Regular-671a2c20b1eb9e4ef8a192833940e319.woff2", hnA = "./fonts/Xiaolai/Xiaolai-Regular-4dc6d5f188d5c96d44815cd1e81aa885.woff2", wnA = "./fonts/Xiaolai/Xiaolai-Regular-ce4884f96f11589608b76b726a755803.woff2", FnA = "./fonts/Xiaolai/Xiaolai-Regular-8f476c4c99813d57cbe6eca4727388ad.woff2", pnA = "./fonts/Xiaolai/Xiaolai-Regular-5935a5775af3d5c6307ac667bd9ae74e.woff2", mnA = "./fonts/Xiaolai/Xiaolai-Regular-79f007c1c6d07557120982951ea67998.woff2", knA = "./fonts/Xiaolai/Xiaolai-Regular-bafff7a14c27403dcc6cf1432e8ea836.woff2", ynA = "./fonts/Xiaolai/Xiaolai-Regular-543fa46ace099a7099dad69123399400.woff2", bnA = "./fonts/Xiaolai/Xiaolai-Regular-4ddc14ed3eb0c3e46364317dfc0144a3.woff2", UnA = "./fonts/Xiaolai/Xiaolai-Regular-0fa55a080fcd0f9dc2e0b0058b793df8.woff2", GnA = "./fonts/Xiaolai/Xiaolai-Regular-66493ba5a8367f2928812f446f47b56a.woff2", fnA = "./fonts/Xiaolai/Xiaolai-Regular-57862b464a55b18c7bf234ce22907d73.woff2", LnA = "./fonts/Xiaolai/Xiaolai-Regular-8d3bcabb847b56243b16afe62adaaf21.woff2", xnA = "./fonts/Xiaolai/Xiaolai-Regular-2b77e8ebfb2367ab2662396a60e7d320.woff2", SnA = "./fonts/Xiaolai/Xiaolai-Regular-0b5d723fdc4e249c140f0909e87d03b4.woff2", NnA = "./fonts/Xiaolai/Xiaolai-Regular-cdbce89e82cc1ab53a2decbf5819278f.woff2", RnA = "./fonts/Xiaolai/Xiaolai-Regular-739bc1a567439c7cffcd1614644593d2.woff2", MnA = "./fonts/Xiaolai/Xiaolai-Regular-72252d73220fa3cd856677888cee1635.woff2", YnA = "./fonts/Xiaolai/Xiaolai-Regular-08e0dc436ad0ad61ba5558db0674d762.woff2", vnA = "./fonts/Xiaolai/Xiaolai-Regular-cf6ff4e0f491ca0cf3038187a997b9b4.woff2", HnA = "./fonts/Xiaolai/Xiaolai-Regular-9cfb2a77a4e45025105ad29a1748b90d.woff2", KnA = "./fonts/Xiaolai/Xiaolai-Regular-450da755d5bcb70906e1295e559b9602.woff2", JnA = "./fonts/Xiaolai/Xiaolai-Regular-0986d134c05864f5025962eef9f994a0.woff2", ZnA = "./fonts/Xiaolai/Xiaolai-Regular-1ee544f0f1dac422545c505baa788992.woff2", qnA = "./fonts/Xiaolai/Xiaolai-Regular-4806e761d750087c2d734fc64596eaff.woff2", WnA = "./fonts/Xiaolai/Xiaolai-Regular-33432927cd87d40cfe393c7482bf221f.woff2", jnA = "./fonts/Xiaolai/Xiaolai-Regular-be549ab72f0719d606a5c01e2c0219b6.woff2", TnA = "./fonts/Xiaolai/Xiaolai-Regular-019d66dcad46dc156b162d267f981c20.woff2", znA = "./fonts/Xiaolai/Xiaolai-Regular-b5c1596551c256e0e9cf02028595b092.woff2", PnA = "./fonts/Xiaolai/Xiaolai-Regular-e5f453bb04da18eed01675eeebd88bf8.woff2", OnA = "./fonts/Xiaolai/Xiaolai-Regular-cf2cc71752631e579e35b0e423bf2638.woff2", VnA = "./fonts/Xiaolai/Xiaolai-Regular-6f3256af8454371776bc46670d33cc65.woff2", XnA = "./fonts/Xiaolai/Xiaolai-Regular-23f228f3999c01983860012330e4be08.woff2", _nA = "./fonts/Xiaolai/Xiaolai-Regular-21430ee05a1248901da8d0de08744d47.woff2", $nA = "./fonts/Xiaolai/Xiaolai-Regular-5330a2119a716e4e7224ed108b085dac.woff2", ArA = "./fonts/Xiaolai/Xiaolai-Regular-cd145ce4a0ea18469358df53c207bc1b.woff2", urA = "./fonts/Xiaolai/Xiaolai-Regular-36925dfe329a45086cbb7fc5c20d45ac.woff2", erA = "./fonts/Xiaolai/Xiaolai-Regular-4bfaa8ffa64c5ee560aa2daba7c9cbd3.woff2", CrA = "./fonts/Xiaolai/Xiaolai-Regular-112c051027b2d766c19a519f6ee1f4f7.woff2", BrA = "./fonts/Xiaolai/Xiaolai-Regular-5b0ed6971aaab9c8ad563230bd5471a7.woff2", grA = "./fonts/Xiaolai/Xiaolai-Regular-98f2ad84457de7f3740d9920b8fa8667.woff2", trA = "./fonts/Xiaolai/Xiaolai-Regular-733171b4ffcd17ea1fe1c0ba627173bf.woff2", irA = "./fonts/Xiaolai/Xiaolai-Regular-684d65f1793cac449dde5d59cb3c47fb.woff2", ErA = "./fonts/Xiaolai/Xiaolai-Regular-cbaaefaaf326668277aa24dfa93c4d28.woff2", arA = "./fonts/Xiaolai/Xiaolai-Regular-58fd02350d0bc52cf1ca3bb32ce9766e.woff2", IrA = "./fonts/Xiaolai/Xiaolai-Regular-7ccce86603f80a099ddb0cb21d4ae3e3.woff2", orA = "./fonts/Xiaolai/Xiaolai-Regular-3717077e38f98d89eae729b6c14e56dc.woff2", QrA = "./fonts/Xiaolai/Xiaolai-Regular-dbea1af6dcd9860be40c3d18254338f5.woff2", nrA = "./fonts/Xiaolai/Xiaolai-Regular-4a0fdb40036e87b40aa08dd30584cb85.woff2", rrA = "./fonts/Xiaolai/Xiaolai-Regular-0f626226ba1272e832aea87bafd9720e.woff2", srA = "./fonts/Xiaolai/Xiaolai-Regular-938d90c10ff8c20386af7f242c05d6b0.woff2", lrA = "./fonts/Xiaolai/Xiaolai-Regular-b6d128682ee29e471486354d486a1b90.woff2", crA = "./fonts/Xiaolai/Xiaolai-Regular-e51ef413167c6e14e0c0fdcc585f2fc9.woff2", drA = "./fonts/Xiaolai/Xiaolai-Regular-9d81066dd2b337c938df6e90380a00dc.woff2", DrA = "./fonts/Xiaolai/Xiaolai-Regular-20e7bf72fa05de9adf7dbcc7bf51dde6.woff2", hrA = "./fonts/Xiaolai/Xiaolai-Regular-4095eb84ef3874e2600247bee0b04026.woff2", wrA = "./fonts/Xiaolai/Xiaolai-Regular-4ee10ae43505e2e0bc62656ced49c0fa.woff2", FrA = "./fonts/Xiaolai/Xiaolai-Regular-7494dc504ae00ee9cd0505f990f88c5d.woff2", prA = "./fonts/Xiaolai/Xiaolai-Regular-8de5b863cb50dfefdd07cb11c774d579.woff2", mrA = "./fonts/Xiaolai/Xiaolai-Regular-3e1f8f654357353bf0e04ba5c34b5f7f.woff2", krA = "./fonts/Xiaolai/Xiaolai-Regular-2e33e8dc771ef5e1d9127d60a6b73679.woff2", yrA = "./fonts/Xiaolai/Xiaolai-Regular-173945821411c09f70c95f98d590e697.woff2", brA = "./fonts/Xiaolai/Xiaolai-Regular-b358f7a51ece39a3247942b1feabdb29.woff2", UrA = "./fonts/Xiaolai/Xiaolai-Regular-23ad2d71b280f00b1363b95b7bea94eb.woff2", GrA = "./fonts/Xiaolai/Xiaolai-Regular-5882ffa04f32584d26109137e2da4352.woff2", frA = "./fonts/Xiaolai/Xiaolai-Regular-a203b91dad570bf05a58c3c3ddb529bf.woff2", LrA = "./fonts/Xiaolai/Xiaolai-Regular-bd77e3c7f9e0b072d96af37f73d1aa32.woff2", xrA = "./fonts/Xiaolai/Xiaolai-Regular-5a45d991244d4c7140217e1e5f5ca4f4.woff2", SrA = "./fonts/Xiaolai/Xiaolai-Regular-f56414bf9bced67990def8660e306759.woff2", NrA = "./fonts/Xiaolai/Xiaolai-Regular-583d166e56ba0de4b77eabb47ef67839.woff2", RrA = "./fonts/Xiaolai/Xiaolai-Regular-7f855356ab893b0d2b9c1c83b8116f0e.woff2", MrA = "./fonts/Xiaolai/Xiaolai-Regular-b57aaedfd8ebdf3931f25119dc6a5eb2.woff2", YrA = "./fonts/Xiaolai/Xiaolai-Regular-b6fd38ca30869792244804b04bc058da.woff2", vrA = "./fonts/Xiaolai/Xiaolai-Regular-452225341522a7942f0f6aab1a5c91a3.woff2", HrA = "./fonts/Xiaolai/Xiaolai-Regular-866fa7613df6b3fd272bcfd4530c0bb9.woff2", KrA = "./fonts/Xiaolai/Xiaolai-Regular-52a84a22fd1369bffeaf21da2d6158dc.woff2", JrA = "./fonts/Xiaolai/Xiaolai-Regular-829615148e6357d826b9242eb7fbbd1e.woff2", ZrA = "./fonts/Xiaolai/Xiaolai-Regular-c99eda15fc26a2941579560f76c3a5cf.woff2", qrA = "./fonts/Xiaolai/Xiaolai-Regular-395c35dd584b56b0789f58a0559beaf1.woff2", WrA = "./fonts/Xiaolai/Xiaolai-Regular-203b0e569e3b14aac86a003dc3fa523e.woff2", jrA = "./fonts/Xiaolai/Xiaolai-Regular-51a0e808bbc8361236ac521a119758a3.woff2", TrA = "./fonts/Xiaolai/Xiaolai-Regular-6e092f71c1e634059ada0e52abadce67.woff2", zrA = "./fonts/Xiaolai/Xiaolai-Regular-0f7fb1e0d5015bb1371343153ecf7ce3.woff2", PrA = "./fonts/Xiaolai/Xiaolai-Regular-d0cf73942fea1c74edbdf0b3011f4656.woff2", OrA = "./fonts/Xiaolai/Xiaolai-Regular-968cffdc8ee679da094e77ebf50f58ef.woff2", VrA = "./fonts/Xiaolai/Xiaolai-Regular-7a07ddc0f0c0f5f4a9bad6ee3dda66b5.woff2", XrA = "./fonts/Xiaolai/Xiaolai-Regular-ec181b795ac1fb5a50d700b6e996d745.woff2", _rA = "./fonts/Xiaolai/Xiaolai-Regular-cfb211578629b7e8153b37240de6a9d5.woff2", $rA = "./fonts/Xiaolai/Xiaolai-Regular-59e9ff77b0efaf684bc09274fb6908c9.woff2", AsA = "./fonts/Xiaolai/Xiaolai-Regular-2adbc89c11e65905393d3dfc468b9d5b.woff2", usA = "./fonts/Xiaolai/Xiaolai-Regular-70e811fd7994e61f408c923de6ddd078.woff2", esA = "./fonts/Xiaolai/Xiaolai-Regular-c4a687ac4f0c2766eefc9f77ed99cddf.woff2", CsA = "./fonts/Xiaolai/Xiaolai-Regular-51502f1206be09c565f1547c406e9558.woff2", BsA = "./fonts/Xiaolai/Xiaolai-Regular-1fdc0c67ed57263a80fd108c1f6ccf24.woff2", gsA = "./fonts/Xiaolai/Xiaolai-Regular-e11567fd2accf9957cd0d3c2be937d87.woff2", tsA = "./fonts/Xiaolai/Xiaolai-Regular-20cc1bbf50e7efb442756cb605672c1f.woff2", isA = "./fonts/Xiaolai/Xiaolai-Regular-5d2898fbc097a7e24c6f38d80587621e.woff2", EsA = "./fonts/Xiaolai/Xiaolai-Regular-ac9ceb44437becc3e9c4dbfebab7fc2d.woff2", asA = "./fonts/Xiaolai/Xiaolai-Regular-c16ed9740b85badf16e86ea782a3062f.woff2", IsA = "./fonts/Xiaolai/Xiaolai-Regular-aa0d470430e6391eca720c7cfa44446f.woff2", osA = "./fonts/Xiaolai/Xiaolai-Regular-f2b54d4e7be0eaefe1c2c56836fa5368.woff2", QsA = "./fonts/Xiaolai/Xiaolai-Regular-99a16ef6a64934d5781933dbd9c46b2e.woff2", nsA = "./fonts/Xiaolai/Xiaolai-Regular-c40533fdf4cc57177b12803598af7e59.woff2", rsA = "./fonts/Xiaolai/Xiaolai-Regular-91ddb2969bf2d31ba02ad82998d1314c.woff2", ssA = "./fonts/Xiaolai/Xiaolai-Regular-774d4f764a1299da5d28ec2f2ffe0d69.woff2", lsA = "./fonts/Xiaolai/Xiaolai-Regular-7718fe60986d8b42b1be9c5ace5ccf25.woff2", csA = "./fonts/Xiaolai/Xiaolai-Regular-aa5c9ca6cf4fba00433b7aa3fa10671a.woff2", dsA = "./fonts/Xiaolai/Xiaolai-Regular-4f50e5136e136527280bc902c5817561.woff2", DsA = "./fonts/Xiaolai/Xiaolai-Regular-093b9ef39a46ceae95a1df18a0a3a326.woff2", hsA = "./fonts/Xiaolai/Xiaolai-Regular-a0ca5df4258213d7fc9fce80f65ce760.woff2", wsA = "./fonts/Xiaolai/Xiaolai-Regular-d2666cbed13462c5dc36fa2f15c202ca.woff2", FsA = "./fonts/Xiaolai/Xiaolai-Regular-1e6fd68f1f3902ce48ce8c69df385622.woff2", psA = "./fonts/Xiaolai/Xiaolai-Regular-87599f94b6cc129d505b375798d0d751.woff2", msA = "./fonts/Xiaolai/Xiaolai-Regular-06c77b8c66e51ed6c63ccb502dd8b8af.woff2", ksA = "./fonts/Xiaolai/Xiaolai-Regular-13ae07ed2e272d26d59bc0691cd7117a.woff2", ysA = "./fonts/Xiaolai/Xiaolai-Regular-353f33792a8f60dc69323ddf635a269e.woff2", bsA = "./fonts/Xiaolai/Xiaolai-Regular-0facdf1ea213ba40261022f5d5ed4493.woff2", UsA = "./fonts/Xiaolai/Xiaolai-Regular-f8ee5d36068a42b51d0e4a1116cfcec1.woff2", GsA = "./fonts/Xiaolai/Xiaolai-Regular-79d494361ae093b69e74ee9dbe65bfd4.woff2", fsA = "./fonts/Xiaolai/Xiaolai-Regular-74e2263a91439c25b91d5132ce9f4d62.woff2", LsA = "./fonts/Xiaolai/Xiaolai-Regular-ee8bae97908d5147b423f77ad0d3c1bb.woff2", xsA = "./fonts/Xiaolai/Xiaolai-Regular-56467a5c8840c4d23a60b2f935114848.woff2", SsA = "./fonts/Xiaolai/Xiaolai-Regular-145aa02cdd91946e67dc934e1acffe75.woff2", NsA = "./fonts/Xiaolai/Xiaolai-Regular-54acdfc2166ad7fcbd074f75fd4a56ba.woff2", RsA = "./fonts/Xiaolai/Xiaolai-Regular-29cec36cd205b211da97acabaa62f055.woff2", MsA = "./fonts/Xiaolai/Xiaolai-Regular-3756e81d3e149cf6099163ee79944fec.woff2", YsA = "./fonts/Xiaolai/Xiaolai-Regular-8e9f97f01034820170065b2921b4fb5e.woff2", vsA = "./fonts/Xiaolai/Xiaolai-Regular-13d2887ec8ee73c43acdabc52a05af7b.woff2", HsA = "./fonts/Xiaolai/Xiaolai-Regular-72536a3d71b694a0d53dd90ddceae41e.woff2", KsA = "./fonts/Xiaolai/Xiaolai-Regular-603aefd23e350ba7eb124273e3c9bcf1.woff2", JsA = "./fonts/Xiaolai/Xiaolai-Regular-095c169f3314805276f603a362766abd.woff2", ZsA = "./fonts/Xiaolai/Xiaolai-Regular-9544732d2e62d1a429674f8ee41b5d3a.woff2", qsA = "./fonts/Xiaolai/Xiaolai-Regular-d3716376641d615e2995605b29bca7b6.woff2", WsA = "./fonts/Xiaolai/Xiaolai-Regular-5a1ce3117cfe90c48e8fb4a9a00f694d.woff2", jsA = "./fonts/Xiaolai/Xiaolai-Regular-b7d203b051eff504ff59ddca7576b6a9.woff2", TsA = "./fonts/Xiaolai/Xiaolai-Regular-4a38cc3e9cf104e69ba246d37f8cf135.woff2", zsA = "./fonts/Xiaolai/Xiaolai-Regular-982b630266d87db93d2539affb1275c6.woff2", PsA = "./fonts/Xiaolai/Xiaolai-Regular-9592bfc861f07bcb8d75c196b370e548.woff2", OsA = "./fonts/Xiaolai/Xiaolai-Regular-a7accba310e821da5505f71c03b76bdb.woff2", VsA = "./fonts/Xiaolai/Xiaolai-Regular-dac48066b5883d8b4551fc584f0c2a3e.woff2", XsA = "./fonts/Xiaolai/Xiaolai-Regular-a1f916d6039285c4ffb900cd654e418f.woff2", _sA = "./fonts/Xiaolai/Xiaolai-Regular-95bfd249da4902577b4b7d76ebdd0b44.woff2", $sA = "./fonts/Xiaolai/Xiaolai-Regular-93fc8f28a33234bcadf1527cafabd502.woff2", AlA = "./fonts/Xiaolai/Xiaolai-Regular-903bb6865f3452e2fda42e3a25547bc5.woff2", ulA = "./fonts/Xiaolai/Xiaolai-Regular-4aca6a43e59aceee2166b0c7e4e85ef1.woff2", elA = "./fonts/Xiaolai/Xiaolai-Regular-24476a126f129212beb33f66853ea151.woff2", ClA = "./fonts/Xiaolai/Xiaolai-Regular-1b611157cd46bb184d4fa4dae2d6a2b8.woff2", BlA = "./fonts/Xiaolai/Xiaolai-Regular-56a32a7689abd0326e57c10c6c069bb4.woff2", glA = "./fonts/Xiaolai/Xiaolai-Regular-3cc70dbb64df5b21f1326cc24dee2195.woff2", tlA = "./fonts/Xiaolai/Xiaolai-Regular-f6032fc06eb20480f096199713f70885.woff2", ilA = "./fonts/Xiaolai/Xiaolai-Regular-e2ead7ea7da0437f085f42ffc05f8d13.woff2", ElA = "./fonts/Xiaolai/Xiaolai-Regular-97f7f48ce90c9429bf32ae51469db74d.woff2", alA = "./fonts/Xiaolai/Xiaolai-Regular-24a21c1e4449222e8d1898d69ff3a404.woff2", IlA = "./fonts/Xiaolai/Xiaolai-Regular-726303e0774b4e678bff8c2deb6ca603.woff2", olA = "./fonts/Xiaolai/Xiaolai-Regular-5a7fac4b8b23a6e4e5ba0c9bf1756c91.woff2", QlA = "./fonts/Xiaolai/Xiaolai-Regular-2b7441d46298788ac94e610ffcc709b6.woff2", nlA = [{ uri: hQA, descriptors: { unicodeRange: "U+f9b8-fa6d,U+fe32,U+fe45-fe4f,U+ff02-ff0b,U+ff0d-ff1e,U+ff20-ff2a" } }, { uri: wQA, descriptors: { unicodeRange: "U+20dd-20de,U+25ef,U+ff2b-ffbe,U+ffc2-ffc7,U+ffca-ffcf,U+ffd2-ffd7,U+ffda-ffdc,U+ffe0-ffe6,U+ffe8-ffee" } }, { uri: FQA, descriptors: { unicodeRange: "U+d7eb-d7fb,U+f900-f9b7" } }, { uri: pQA, descriptors: { unicodeRange: "U+d6f2-d7a3,U+d7b0-d7c6,U+d7cb-d7ea" } }, { uri: mQA, descriptors: { unicodeRange: "U+d609-d6f1" } }, { uri: kQA, descriptors: { unicodeRange: "U+d520-d608" } }, { uri: yQA, descriptors: { unicodeRange: "U+d437-d51f" } }, { uri: bQA, descriptors: { unicodeRange: "U+d34e-d436" } }, { uri: UQA, descriptors: { unicodeRange: "U+d265-d34d" } }, { uri: GQA, descriptors: { unicodeRange: "U+d17c-d264" } }, { uri: fQA, descriptors: { unicodeRange: "U+d093-d17b" } }, { uri: LQA, descriptors: { unicodeRange: "U+cfaa-d092" } }, { uri: xQA, descriptors: { unicodeRange: "U+cec1-cfa9" } }, { uri: SQA, descriptors: { unicodeRange: "U+cdd8-cec0" } }, { uri: NQA, descriptors: { unicodeRange: "U+ccf1-cdd7" } }, { uri: RQA, descriptors: { unicodeRange: "U+cc08-ccf0" } }, { uri: MQA, descriptors: { unicodeRange: "U+cb43-cc07" } }, { uri: YQA, descriptors: { unicodeRange: "U+ca83-cb42" } }, { uri: vQA, descriptors: { unicodeRange: "U+c9a1-ca82" } }, { uri: HQA, descriptors: { unicodeRange: "U+c8b8-c9a0" } }, { uri: KQA, descriptors: { unicodeRange: "U+c7cf-c8b7" } }, { uri: JQA, descriptors: { unicodeRange: "U+c6e6-c7ce" } }, { uri: ZQA, descriptors: { unicodeRange: "U+c5fd-c6e5" } }, { uri: qQA, descriptors: { unicodeRange: "U+c514-c5fc" } }, { uri: WQA, descriptors: { unicodeRange: "U+c42b-c513" } }, { uri: jQA, descriptors: { unicodeRange: "U+c341-c34e,U+c350-c42a" } }, { uri: TQA, descriptors: { unicodeRange: "U+c258-c340" } }, { uri: zQA, descriptors: { unicodeRange: "U+c16f-c257" } }, { uri: PQA, descriptors: { unicodeRange: "U+c086-c16e" } }, { uri: OQA, descriptors: { unicodeRange: "U+bf9d-c085" } }, { uri: VQA, descriptors: { unicodeRange: "U+beb4-bf9c" } }, { uri: XQA, descriptors: { unicodeRange: "U+bdcb-beb3" } }, { uri: _QA, descriptors: { unicodeRange: "U+bce2-bdca" } }, { uri: $QA, descriptors: { unicodeRange: "U+bbf9-bce1" } }, { uri: AnA, descriptors: { unicodeRange: "U+bb10-bbf8" } }, { uri: unA, descriptors: { unicodeRange: "U+ba27-bb0f" } }, { uri: enA, descriptors: { unicodeRange: "U+b93e-ba26" } }, { uri: CnA, descriptors: { unicodeRange: "U+b855-b93d" } }, { uri: BnA, descriptors: { unicodeRange: "U+b76c-b854" } }, { uri: gnA, descriptors: { unicodeRange: "U+b683-b76b" } }, { uri: tnA, descriptors: { unicodeRange: "U+b59a-b682" } }, { uri: inA, descriptors: { unicodeRange: "U+b4b1-b599" } }, { uri: EnA, descriptors: { unicodeRange: "U+11fb-11ff,U+b3cd-b4b0" } }, { uri: anA, descriptors: { unicodeRange: "U+11e6-11fa,U+b2f9-b3cc" } }, { uri: InA, descriptors: { unicodeRange: "U+11d1-11e5,U+b225-b2f8" } }, { uri: onA, descriptors: { unicodeRange: "U+11bc-11d0,U+b151-b224" } }, { uri: QnA, descriptors: { unicodeRange: "U+11a7-11bb,U+b07d-b150" } }, { uri: nnA, descriptors: { unicodeRange: "U+1191-11a6,U+afaa-b07c" } }, { uri: rnA, descriptors: { unicodeRange: "U+117c-1190,U+aed6-afa9" } }, { uri: snA, descriptors: { unicodeRange: "U+1167-117b,U+ae02-aed5" } }, { uri: lnA, descriptors: { unicodeRange: "U+1152-115e,U+1160-1166,U+ad2d-ae01" } }, { uri: cnA, descriptors: { unicodeRange: "U+113d-1151,U+ac59-ad2c" } }, { uri: dnA, descriptors: { unicodeRange: "U+1100-113c,U+9f95-9f98,U+9f9c-9f9e,U+9fa1-9fce,U+9fd0,U+a960-a97c,U+ac00-ac58" } }, { uri: DnA, descriptors: { unicodeRange: "U+9771-9772,U+9775,U+9777-977b,U+977d-9784,U+9786-978a,U+978c,U+978e-9790,U+9793,U+9795-9797,U+9799-979f,U+97a1-97a2,U+97a4-97aa,U+97ac,U+97ae,U+97b0-97b1,U+97b3,U+97b5-97e5,U+97e8,U+97ee-97f2,U+97f4,U+97f7-982d" } }, { uri: hnA, descriptors: { unicodeRange: "U+9491,U+9496,U+9498,U+94c7,U+94cf,U+94d3-94d4,U+94da,U+94e6,U+94fb,U+951c,U+9520,U+9527,U+9533,U+953d,U+9543,U+9548,U+954b,U+9555,U+955a,U+9560,U+956e,U+9574-9575,U+9577-957e,U+9580-95e7,U+95ec,U+95ff,U+9607,U+9613,U+9618,U+961b,U+961e,U+9620,U+9623-9629,U+962b-962d,U+962f-9630,U+9637-963a,U+963e,U+9641,U+9643,U+964a,U+964e-964f,U+9651-9653,U+9656-965a,U+965c-965e,U+9660,U+9663,U+9665-9666,U+966b,U+966d-9671,U+9673,U+9678-9684,U+9687,U+9689-968a,U+968c,U+968e,U+9691-9693" } }, { uri: wnA, descriptors: { unicodeRange: "U+923c-9273,U+9275-928d,U+928f-92ad,U+92af-92c7,U+92c9-92ee" } }, { uri: FnA, descriptors: { unicodeRange: "U+9159,U+915b-915c,U+915f-9160,U+9166-9168,U+916b,U+916d,U+9173,U+917a-917c,U+9180-9184,U+9186,U+9188,U+918a,U+918e-918f,U+9193-9199,U+919c-91a1,U+91a4-91a9,U+91ab-91ac,U+91b0-91b3,U+91b6-91b9,U+91bb-91c6,U+91c8,U+91cb,U+91d0,U+91d2-91db,U+91dd-923b" } }, { uri: pnA, descriptors: { unicodeRange: "U+902b-902c,U+9030-9034,U+9037,U+9039-903a,U+903d,U+903f-9040,U+9043,U+9045-9046,U+9048-904c,U+904e,U+9054-9056,U+9059-905a,U+905c-9061,U+9064,U+9066-9067,U+9069-906c,U+906f-9073,U+9076-907c,U+907e,U+9081,U+9084-9087,U+9089-908a,U+908c-9090,U+9092,U+9094,U+9096,U+9098,U+909a,U+909c,U+909e-90a0,U+90a4-90a5,U+90a7-90a9,U+90ab,U+90ad,U+90b2,U+90b7,U+90bc-90bd,U+90bf-90c0,U+90c2-90c3,U+90c6,U+90c8-90c9,U+90cb-90cd,U+90d2,U+90d4-90d6,U+90d8-90da,U+90de-90e0,U+90e3-90e5,U+90e9-90ea,U+90ec,U+90ee,U+90f0-90f3,U+90f5-90f7,U+90f9-90fc,U+90ff-9101,U+9103,U+9105-9118,U+911a-911d,U+911f-9121,U+9124-912e,U+9130,U+9132-9138,U+913a-9142,U+9144-9145,U+9147-9148,U+9151,U+9153-9156,U+9158" } }, { uri: mnA, descriptors: { unicodeRange: "U+8f03-8f65,U+8f6a,U+8f80,U+8f8c,U+8f92,U+8f9d,U+8fa0-8fa2,U+8fa4-8fa7,U+8faa,U+8fac-8faf,U+8fb2-8fb5,U+8fb7-8fb8,U+8fba-8fbc,U+8fbf-8fc0,U+8fc3,U+8fc6,U+8fc9-8fcd,U+8fcf,U+8fd2,U+8fd6-8fd7,U+8fda,U+8fe0-8fe1,U+8fe3,U+8fe7,U+8fec,U+8fef,U+8ff1-8ff2,U+8ff4-8ff6,U+8ffa-8ffc,U+8ffe-8fff,U+9007-9008,U+900c,U+900e,U+9013,U+9015,U+9018-9019,U+901c,U+9023-9025,U+9027-902a" } }, { uri: knA, descriptors: { unicodeRange: "U+8d03-8d1c,U+8d20,U+8d51-8d52,U+8d57,U+8d5f,U+8d65,U+8d68-8d6a,U+8d6c,U+8d6e-8d6f,U+8d71-8d72,U+8d78-8d80,U+8d82-8d83,U+8d86-8d89,U+8d8c-8d90,U+8d92-8d93,U+8d95-8d9e,U+8da0-8da2,U+8da4-8db0,U+8db2,U+8db6-8db7,U+8db9,U+8dbb,U+8dbd,U+8dc0-8dc2,U+8dc5,U+8dc7-8dca,U+8dcd,U+8dd0,U+8dd2-8dd5,U+8dd8-8dd9,U+8ddc,U+8de0-8de2,U+8de5-8de7,U+8de9,U+8ded-8dee,U+8df0-8df2,U+8df4,U+8df6,U+8dfc,U+8dfe-8e04,U+8e06-8e08,U+8e0b,U+8e0d-8e0e,U+8e10-8e13,U+8e15-8e1c,U+8e20-8e21,U+8e24-8e28,U+8e2b,U+8e2d,U+8e30,U+8e32-8e34,U+8e36-8e38,U+8e3b-8e3c,U+8e3e-8e3f,U+8e43,U+8e45-8e46" } }, { uri: ynA, descriptors: { unicodeRange: "U+8bea,U+8c09,U+8c1e,U+8c38-8c40,U+8c42-8c45,U+8c48,U+8c4a-8c4b,U+8c4d-8c54,U+8c56-8c59,U+8c5b-8c60,U+8c63-8c69,U+8c6c-8c72,U+8c74-8c77,U+8c7b-8c81,U+8c83-8c84,U+8c86-8c88,U+8c8b,U+8c8d-8c93,U+8c95-8c97,U+8c99-8d02" } }, { uri: bnA, descriptors: { unicodeRange: "U+8a64-8a78,U+8a7a-8a88,U+8a8b-8a92,U+8a94-8b06,U+8b08-8b1b" } }, { uri: UnA, descriptors: { unicodeRange: "U+8987-89c0,U+89c3,U+89cd,U+89d3-89d5,U+89d7-89d9,U+89db,U+89dd,U+89df-89e2,U+89e4,U+89e7-89ea,U+89ec-89ee,U+89f0-89f2,U+89f4-89ff,U+8a01-8a06,U+8a08-8a3d,U+8a3f-8a47,U+8a49-8a63" } }, { uri: GnA, descriptors: { unicodeRange: "U+87e3-87e4,U+87e6-87e9,U+87eb-87ed,U+87ef-87f8,U+87fa-87fd,U+87ff-8802,U+8804-8809,U+880b-8812,U+8814,U+8817-881a,U+881c-8820,U+8823-8831,U+8833-8838,U+883a-883b,U+883d-883f,U+8841-8843,U+8846-884b,U+884e-8853,U+8855-8856,U+8858,U+885a-8860,U+8866-8867,U+886a,U+886d,U+886f,U+8871,U+8873-8876,U+8878-887c,U+8880,U+8883,U+8886-8887,U+8889-888a,U+888c,U+888e-8891,U+8893-8895,U+8897-889b,U+889d-88a1,U+88a3,U+88a5-88aa,U+88ac,U+88ae-88b0,U+88b2-88b6,U+88b8-88bb" } }, { uri: fnA, descriptors: { unicodeRange: "U+86e7-86e8,U+86ea-86ec,U+86ef,U+86f5-86f7,U+86fa-86fd,U+86ff,U+8701,U+8704-8706,U+870b-870c,U+870e-8711,U+8714,U+8716,U+8719,U+871b,U+871d,U+871f-8720,U+8724,U+8726-8728,U+872a-872d,U+872f-8730,U+8732-8733,U+8735-8736,U+8738-873a,U+873c-873d,U+8740-8746,U+874a-874b,U+874d,U+874f-8752,U+8754-8756,U+8758,U+875a-875f,U+8761-8762,U+8766-876d,U+876f,U+8771-8773,U+8775,U+8777-877a,U+877f-8781,U+8784,U+8786-8787,U+8789-878a,U+878c,U+878e-8792,U+8794-8796,U+8798-879e,U+87a0-87a7,U+87a9-87aa,U+87ae,U+87b0-87b2,U+87b4,U+87b6-87b9,U+87bb-87bc,U+87be-87bf,U+87c1-87c5,U+87c7-87c9,U+87cc-87d0,U+87d4-87da,U+87dc-87df,U+87e1-87e2" } }, { uri: LnA, descriptors: { unicodeRange: "U+8604,U+8606-8610,U+8612-8615,U+8617-8626,U+8628,U+862a-8637,U+8639-863b,U+863d-864c,U+8652-8653,U+8655-8659,U+865b-865d,U+865f-8661,U+8663-866a,U+866d,U+866f-8670,U+8672-8678,U+8683-8689,U+868e-8692,U+8694,U+8696-869b,U+869e-86a2,U+86a5-86a6,U+86ab,U+86ad-86ae,U+86b2-86b3,U+86b7-86b9,U+86bb-86bf,U+86c1-86c3,U+86c5,U+86c8,U+86cc-86cd,U+86d2-86d3,U+86d5-86d7,U+86da,U+86dc-86dd,U+86e0-86e3,U+86e5-86e6" } }, { uri: xnA, descriptors: { unicodeRange: "U+8456,U+8458,U+845d-8460,U+8462,U+8464-8468,U+846a,U+846e-8470,U+8472,U+8474,U+8477,U+8479,U+847b-8481,U+8483-8486,U+848a,U+848d,U+848f-8496,U+8498,U+849a-849b,U+849d-84a0,U+84a2-84ae,U+84b0-84b1,U+84b3,U+84b5-84b7,U+84bb-84bc,U+84be,U+84c0,U+84c2-84c3,U+84c5-84c8,U+84cb-84cc,U+84ce-84cf,U+84d2,U+84d4-84d5,U+84d7-84dc,U+84de,U+84e1-84e2,U+84e4,U+84e7-84eb,U+84ed-84ef,U+84f1-84fb,U+84fd-84fe,U+8500-850b,U+850d-8510,U+8512,U+8514-8516,U+8518-8519,U+851b-851e,U+8520,U+8522-852a,U+852d-8536,U+853e-8542,U+8544-8547,U+854b-854f" } }, { uri: SnA, descriptors: { unicodeRange: "U+82c2-82c3,U+82c5-82c6,U+82c9,U+82d0,U+82d6,U+82d9-82da,U+82dd,U+82e2,U+82e7-82ea,U+82ec-82ee,U+82f0,U+82f2-82f3,U+82f5-82f6,U+82f8,U+82fa,U+82fc-8300,U+830a-830b,U+830d,U+8310,U+8312-8313,U+8316,U+8318-8319,U+831d-8326,U+8329-832a,U+832e,U+8330,U+8332,U+8337,U+833b,U+833d-833f,U+8341-8342,U+8344-8345,U+8348,U+834a-834e,U+8353,U+8355-8359,U+835d,U+8362,U+8370-8376,U+8379-837a,U+837e-8384,U+8387-8388,U+838a-838d,U+838f-8391,U+8394-8397,U+8399-839a,U+839d,U+839f,U+83a1-83a7,U+83ac-83af,U+83b5,U+83bb,U+83be-83bf,U+83c2-83c4,U+83c6,U+83c8-83c9,U+83cb,U+83cd-83ce,U+83d0-83d3,U+83d5,U+83d7,U+83d9-83db,U+83de,U+83e2-83e4,U+83e6-83e8,U+83eb-83ef,U+83f3-83f7,U+83fa-83fc,U+83fe-8400,U+8402,U+8405,U+8407-840a,U+8410,U+8412-8417,U+8419-841b,U+841e-8423,U+8429-8430,U+8432-8437,U+8439-843b,U+843e-8445,U+8447-8450,U+8452-8455" } }, { uri: NnA, descriptors: { unicodeRange: "U+81a4-81a5,U+81a7,U+81a9,U+81ab-81b2,U+81b4-81b9,U+81bc-81bf,U+81c4-81c5,U+81c7-81c9,U+81cb,U+81cd-81e2,U+81e4-81e6,U+81e8-81e9,U+81eb,U+81ee-81f2,U+81f5-81fa,U+81fd,U+81ff,U+8203,U+8207-820b,U+820e-820f,U+8211,U+8213,U+8215-821a,U+821d,U+8220,U+8224-8227,U+8229,U+822e,U+8232,U+823a,U+823c-823d,U+823f-8243,U+8245-8246,U+8248,U+824a,U+824c-824e,U+8250-8257,U+8259,U+825b-825e,U+8260-8267,U+8269-826d,U+8271,U+8275-8278,U+827b-827c,U+8280-8281,U+8283,U+8285-8287,U+8289,U+828c,U+8290,U+8293-8296,U+829a-829b,U+829e,U+82a0,U+82a2-82a3,U+82a7,U+82b2,U+82b5-82b6,U+82ba-82bc,U+82bf-82c0" } }, { uri: RnA, descriptors: { unicodeRange: "U+8059,U+805b-8068,U+806b-8070,U+8072-807e,U+8081-8082,U+8085,U+8088,U+808a,U+808d-8092,U+8094-8095,U+8097,U+8099,U+809e,U+80a3,U+80a6-80a8,U+80ac,U+80b0,U+80b3,U+80b5-80b6,U+80b8-80b9,U+80bb,U+80c5,U+80c7-80cb,U+80cf-80d5,U+80d8,U+80df-80e0,U+80e2-80e3,U+80e6,U+80ee,U+80f5,U+80f7,U+80f9,U+80fb,U+80fe-8101,U+8103-8105,U+8107-8108,U+810b-810c,U+8115,U+8117,U+8119,U+811b-811d,U+811f-812b,U+812d-812e,U+8130,U+8133-8135,U+8137,U+8139-813d,U+813f-8145,U+8147,U+8149,U+814d-814f,U+8152,U+8156-8158,U+815b-815f,U+8161-8164,U+8166,U+8168,U+816a-816c,U+816f,U+8172-8173,U+8175-8178,U+8181,U+8183-8187,U+8189,U+818b-818e,U+8190,U+8192-8197,U+8199-819a,U+819e-81a2" } }, { uri: MnA, descriptors: { unicodeRange: "U+7f3c-7f41,U+7f43,U+7f46-7f4f,U+7f52-7f53,U+7f56,U+7f59,U+7f5b-7f5e,U+7f60,U+7f63-7f67,U+7f6b-7f6d,U+7f6f-7f70,U+7f73,U+7f75-7f78,U+7f7a-7f7d,U+7f7f-7f80,U+7f82-7f89,U+7f8b,U+7f8d,U+7f8f-7f93,U+7f95-7f99,U+7f9b-7f9c,U+7fa0,U+7fa2-7fa3,U+7fa5-7fa6,U+7fa8-7fae,U+7fb1,U+7fb3-7fb7,U+7fba-7fbb,U+7fbe,U+7fc0,U+7fc2-7fc4,U+7fc6-7fc9,U+7fcb,U+7fcd,U+7fcf-7fd3,U+7fd6-7fd7,U+7fd9-7fde,U+7fe2-7fe4,U+7fe7-7fe8,U+7fea-7fed,U+7fef,U+7ff2,U+7ff4-7ffa,U+7ffd-7fff,U+8002,U+8007-800a,U+800e-800f,U+8011,U+8013,U+801a-801b,U+801d-801f,U+8021,U+8023-8024,U+802b-8030,U+8032,U+8034,U+8039-803a,U+803c,U+803e,U+8040-8041,U+8044-8045,U+8047-8049,U+804e-8051,U+8053,U+8055-8057" } }, { uri: YnA, descriptors: { unicodeRange: "U+7cd8,U+7cda-7cdb,U+7cdd-7cde,U+7ce1-7ce7,U+7ce9-7cee,U+7cf0-7cf7,U+7cf9-7cfa,U+7cfc-7d09,U+7d0b-7d1f,U+7d21,U+7d23-7d26,U+7d28-7d2a,U+7d2c-7d2e,U+7d30-7d6d,U+7d6f-7d76,U+7d78-7d94" } }, { uri: vnA, descriptors: { unicodeRange: "U+7afe,U+7b00-7b02,U+7b05,U+7b07,U+7b09,U+7b0c-7b0e,U+7b10,U+7b12-7b13,U+7b16-7b18,U+7b1a,U+7b1c-7b1d,U+7b1f,U+7b21-7b23,U+7b27,U+7b29,U+7b2d,U+7b2f-7b30,U+7b32,U+7b34-7b37,U+7b39,U+7b3b,U+7b3d,U+7b3f-7b44,U+7b46,U+7b48,U+7b4a,U+7b4d-7b4e,U+7b53,U+7b55,U+7b57,U+7b59,U+7b5c,U+7b5e-7b5f,U+7b61,U+7b63-7b6d,U+7b6f-7b70,U+7b73-7b74,U+7b76,U+7b78,U+7b7a,U+7b7c-7b7d,U+7b7f,U+7b81-7b84,U+7b86-7b8c,U+7b8e-7b8f,U+7b91-7b93,U+7b96,U+7b98-7b9b,U+7b9e-7ba0,U+7ba3-7ba5,U+7bae-7bb0,U+7bb2-7bb3,U+7bb5-7bb7,U+7bb9-7bc0,U+7bc2-7bc5,U+7bc8-7bcb,U+7bcd-7bd0,U+7bd2,U+7bd4-7bd8,U+7bdb-7bdc,U+7bde-7be0,U+7be2-7be4,U+7be7-7be9,U+7beb-7bed,U+7bef-7bf0,U+7bf2-7bf6,U+7bf8-7bfb,U+7bfd,U+7bff-7c06,U+7c08-7c0a,U+7c0d-7c0e,U+7c10-7c13" } }, { uri: HnA, descriptors: { unicodeRange: "U+7a10-7a13,U+7a15-7a16,U+7a18-7a19,U+7a1b-7a1d,U+7a1f,U+7a21-7a22,U+7a24-7a32,U+7a34-7a36,U+7a38,U+7a3a,U+7a3e,U+7a40-7a45,U+7a47-7a50,U+7a52-7a56,U+7a58-7a6f,U+7a71-7a73,U+7a75,U+7a7b-7a7e,U+7a82,U+7a85,U+7a87,U+7a89-7a8c,U+7a8e-7a90,U+7a93-7a94,U+7a99-7a9b,U+7a9e,U+7aa1-7aa4,U+7aa7,U+7aa9-7aab,U+7aae-7ab2,U+7ab4-7abe,U+7ac0-7aca,U+7acc-7ad5,U+7ad7-7ad8,U+7ada-7add,U+7ae1-7ae2,U+7ae4,U+7ae7-7aec,U+7aee,U+7af0-7af8,U+7afb-7afc" } }, { uri: KnA, descriptors: { unicodeRange: "U+790d-7912,U+7914-791d,U+791f-7923,U+7925-7933,U+7935-7939,U+793d,U+793f,U+7942-7945,U+7947,U+794a-7952,U+7954-7955,U+7958-7959,U+7961,U+7963-7964,U+7966,U+7969-796c,U+796e,U+7970-7976,U+7979,U+797b-797f,U+7982-7983,U+7986-7989,U+798b-798e,U+7990-7999,U+799b-79a6,U+79a8-79b2,U+79b4-79b8,U+79bc,U+79bf,U+79c2,U+79c4-79c5,U+79c7-79c8,U+79ca,U+79cc,U+79ce-79d0,U+79d3-79d4,U+79d6-79d7,U+79d9-79de,U+79e0-79e2,U+79e5,U+79e8,U+79ea,U+79ec,U+79ee,U+79f1-79f7,U+79f9-79fa,U+79fc,U+79fe-79ff,U+7a01,U+7a04-7a05,U+7a07-7a0a,U+7a0c,U+7a0f" } }, { uri: JnA, descriptors: { unicodeRange: "U+77d8-77da,U+77dd-77e1,U+77e4,U+77e6,U+77e8,U+77ea,U+77ef-77f2,U+77f4-77f5,U+77f7,U+77f9-77fc,U+7803-7808,U+780a-780b,U+780e-7810,U+7813,U+7815,U+7819,U+781b,U+781e,U+7820-7822,U+7824,U+7828,U+782a-782b,U+782e-782f,U+7831-7833,U+7835-7836,U+783d,U+783f,U+7841-7844,U+7846,U+7848-784b,U+784d,U+784f,U+7851,U+7853-7854,U+7858-785c,U+785e-7869,U+786f-7876,U+7878-787b,U+787d-7886,U+7888,U+788a-788b,U+788f-7890,U+7892,U+7894-7896,U+7899,U+789d-789e,U+78a0,U+78a2,U+78a4,U+78a6,U+78a8-78af,U+78b5-78b8,U+78ba-78bd,U+78bf-78c0,U+78c2-78c4,U+78c6-78c8,U+78cc-78cf,U+78d1-78d3,U+78d6-78d8,U+78da-78e7,U+78e9-78eb,U+78ed-78f1,U+78f3,U+78f5-78f6,U+78f8-78f9,U+78fb-7900,U+7902-7904,U+7906-790c" } }, { uri: ZnA, descriptors: { unicodeRange: "U+76af-76b0,U+76b3,U+76b5-76be,U+76c0-76c1,U+76c3-76c4,U+76c7,U+76c9,U+76cb-76cc,U+76d3,U+76d5,U+76d9-76da,U+76dc-76de,U+76e0-76e4,U+76e6-76ed,U+76f0,U+76f3,U+76f5-76f7,U+76fa-76fb,U+76fd,U+76ff-7703,U+7705-7706,U+770a,U+770c,U+770e-7718,U+771b-771e,U+7721,U+7723-7725,U+7727,U+772a-772c,U+772e,U+7730-7734,U+7739,U+773b,U+773d-773f,U+7742,U+7744-7746,U+7748-774f,U+7752-7759,U+775c-7760,U+7764,U+7767,U+7769-776a,U+776d-7778,U+777a-777c,U+7781-7783,U+7786-778b,U+778f-7790,U+7793-779e,U+77a1,U+77a3-77a4,U+77a6,U+77a8,U+77ab,U+77ad-77af,U+77b1-77b2,U+77b4,U+77b6-77ba,U+77bc,U+77be,U+77c0-77cc,U+77ce-77d6" } }, { uri: qnA, descriptors: { unicodeRange: "U+7589-758a,U+758c-758e,U+7590,U+7593,U+7595,U+7598,U+759b-759c,U+759e,U+75a2,U+75a6-75aa,U+75ad,U+75b6-75b7,U+75ba-75bb,U+75bf-75c1,U+75c6,U+75cb-75cc,U+75ce-75d1,U+75d3,U+75d7,U+75d9-75da,U+75dc-75dd,U+75df-75e1,U+75e5,U+75e9,U+75ec-75ef,U+75f2-75f3,U+75f5-75f8,U+75fa-75fb,U+75fd-75fe,U+7602,U+7604,U+7606-7609,U+760b,U+760d-760f,U+7611-7614,U+7616,U+761a,U+761c-761e,U+7621,U+7623,U+7627-7628,U+762c,U+762e-762f,U+7631-7632,U+7636-7637,U+7639-763b,U+763d,U+7641-7642,U+7644-764b,U+764e-7653,U+7655,U+7657-765b,U+765d,U+765f-7662,U+7664-766a,U+766c-766e,U+7670-7677,U+7679-767a,U+767c,U+767f-7681,U+7683,U+7685,U+7689-768a,U+768c-768d,U+768f-7690,U+7692,U+7694-7695,U+7697-7698,U+769a-76a3,U+76a5-76ad" } }, { uri: WnA, descriptors: { unicodeRange: "U+7492-749b,U+749d,U+749f-74a6,U+74aa-74b9,U+74bb-74d1,U+74d3-74db,U+74dd,U+74df,U+74e1,U+74e5,U+74e7-74ed,U+74f0-74f3,U+74f5,U+74f8-74fe,U+7500-7503,U+7505-750c,U+750e,U+7510,U+7512,U+7514-7517,U+751b,U+751d-751e,U+7520-7524,U+7526-7527,U+752a,U+752e,U+7534,U+7536,U+7539,U+753c-753d,U+753f,U+7541-7544,U+7546-7547,U+7549-754a,U+754d,U+7550-7553,U+7555-7558,U+755d-7564,U+7567-7569,U+756b-7571,U+7573,U+7575-7577,U+757a-757e,U+7580-7582,U+7584-7585,U+7587-7588" } }, { uri: jnA, descriptors: { unicodeRange: "U+7372-737d,U+737f-7383,U+7385-7386,U+7388,U+738a,U+738c-738d,U+738f-7390,U+7392-7395,U+7397-739a,U+739c-739e,U+73a0-73a1,U+73a3-73a8,U+73aa,U+73ac-73ad,U+73b1,U+73b4-73b6,U+73b8-73b9,U+73bc-73bf,U+73c1,U+73c3-73c7,U+73cb-73cc,U+73ce,U+73d2-73d8,U+73da-73dd,U+73df,U+73e1-73e4,U+73e6,U+73e8,U+73ea-73ec,U+73ee-73f1,U+73f3-7402,U+7404,U+7407-7408,U+740b-740e,U+7411-7419,U+741c-7421,U+7423-7424,U+7427,U+7429,U+742b,U+742d,U+742f,U+7431-7432,U+7437-743b,U+743d-7440,U+7442-7454,U+7456,U+7458,U+745d,U+7460-746c,U+746e-746f,U+7471-7475,U+7478-747d,U+747f,U+7482,U+7484-7486,U+7488-748a,U+748c-748d,U+748f,U+7491" } }, { uri: TnA, descriptors: { unicodeRange: "U+7054-705d,U+705f-706a,U+706e,U+7071-7074,U+7077,U+7079-707b,U+707d,U+7081-7084,U+7086-7088,U+708b-708d,U+708f-7091,U+7093,U+7097-7098,U+709a-709b,U+709e-70aa,U+70b0,U+70b2,U+70b4-70b6,U+70ba,U+70be-70bf,U+70c4-70c7,U+70c9,U+70cb-70d7,U+70da,U+70dc-70de,U+70e0-70e3,U+70e5,U+70ea,U+70ee,U+70f0-70f6,U+70f8,U+70fa-70fc,U+70fe-7108,U+710b-710f,U+7111-7112,U+7114,U+7117,U+711b-7125,U+7127-712e,U+7132-7135,U+7137-7144,U+7146-7149,U+714b,U+714d,U+714f-715b,U+715d,U+715f-7163,U+7165,U+7169-716d,U+716f-7171,U+7174-7177" } }, { uri: znA, descriptors: { unicodeRange: "U+722e-722f,U+7232-7234,U+723a,U+723c,U+723e,U+7240-7246,U+7249-724b,U+724e-7251,U+7253-7255,U+7257-7258,U+725a,U+725c,U+725e,U+7260,U+7263-7265,U+7268,U+726a-726d,U+7270-7271,U+7273-7274,U+7276-7278,U+727b-727d,U+7282-7283,U+7285-7289,U+728c,U+728e,U+7290-7291,U+7293-729e,U+72a0-72ab,U+72ae,U+72b1-72b3,U+72b5,U+72ba-72c0,U+72c5-72c7,U+72c9-72cc,U+72cf,U+72d1,U+72d3-72d6,U+72d8,U+72da-72dd,U+72df,U+72e2-72e7,U+72ea-72eb,U+72f5-72f6,U+72f9,U+72fd-7300,U+7302,U+7304-7309,U+730b-730d,U+730f-7312,U+7314,U+7318-731a,U+731f-7320,U+7323-7324,U+7326-7328,U+732d,U+732f-7330,U+7332-7333,U+7335-7336,U+733a-733d,U+7340-734c,U+734e-734f,U+7351,U+7353-7356,U+7358-735f,U+7361-736b,U+736e,U+7370-7371" } }, { uri: PnA, descriptors: { unicodeRange: "U+6ec5-6ec6,U+6ec8-6eca,U+6ecc-6ece,U+6ed0,U+6ed2,U+6ed6,U+6ed8-6ed9,U+6edb-6edd,U+6ee3,U+6ee7,U+6eea-6ef3,U+6ef5-6ef8,U+6efa-6f01,U+6f03-6f05,U+6f07-6f08,U+6f0a-6f0e,U+6f10-6f12,U+6f16-6f1f,U+6f21-6f23,U+6f25-6f28,U+6f2c,U+6f2e,U+6f30,U+6f32,U+6f34-6f35,U+6f37-6f3d,U+6f3f-6f45,U+6f48-6f4a,U+6f4c,U+6f4e-6f57,U+6f59-6f5b,U+6f5d,U+6f5f-6f61,U+6f63-6f65,U+6f67-6f6c,U+6f6f-6f71,U+6f73,U+6f75-6f77,U+6f79,U+6f7b,U+6f7d-6f83,U+6f85-6f87,U+6f8a-6f8b,U+6f8f-6f9b,U+6f9d-6fa0,U+6fa2-6fa6,U+6fa8-6fb1" } }, { uri: OnA, descriptors: { unicodeRange: "U+6d73,U+6d75-6d76,U+6d79-6d7b,U+6d7d-6d81,U+6d83-6d84,U+6d86-6d87,U+6d8a-6d8b,U+6d8d,U+6d8f-6d90,U+6d92,U+6d96-6d9a,U+6d9c,U+6da2,U+6da5,U+6dac-6dad,U+6db0-6db1,U+6db3-6db4,U+6db6-6db7,U+6db9-6dbe,U+6dc1-6dc3,U+6dc8-6dca,U+6dcd-6dd0,U+6dd2-6dd5,U+6dd7,U+6dda-6ddc,U+6ddf,U+6de2-6de3,U+6de5,U+6de7-6dea,U+6ded,U+6def-6df0,U+6df2,U+6df4-6df6,U+6df8,U+6dfa,U+6dfd-6e04,U+6e06-6e09,U+6e0b,U+6e0f,U+6e12-6e13,U+6e15,U+6e18-6e19,U+6e1b-6e1c,U+6e1e-6e1f,U+6e22,U+6e26-6e28,U+6e2a,U+6e2c,U+6e2e,U+6e30-6e31,U+6e33,U+6e35-6e37,U+6e39,U+6e3b-6e42,U+6e45-6e4c,U+6e4f-6e52,U+6e55,U+6e57,U+6e59-6e5a,U+6e5c-6e5e,U+6e60-6e6a,U+6e6c-6e6d,U+6e6f-6e7d,U+6e80-6e82,U+6e84,U+6e87-6e88,U+6e8a-6e8e,U+6e91-6e97,U+6e99-6e9b,U+6e9d-6e9e,U+6ea0-6ea1,U+6ea3-6ea4,U+6ea6,U+6ea8-6ea9,U+6eab-6eae,U+6eb0,U+6eb3,U+6eb5,U+6eb8-6eb9,U+6ebc,U+6ebe-6ec0,U+6ec3-6ec4" } }, { uri: VnA, descriptors: { unicodeRange: "U+6bbb-6bbe,U+6bc0,U+6bc3-6bc4,U+6bc6-6bca,U+6bcc,U+6bce,U+6bd0-6bd1,U+6bd8,U+6bda,U+6bdc-6be0,U+6be2-6be9,U+6bec-6bee,U+6bf0-6bf2,U+6bf4,U+6bf6-6bf8,U+6bfa-6bfc,U+6bfe-6c04,U+6c08-6c0c,U+6c0e,U+6c12,U+6c17,U+6c1c-6c1e,U+6c20,U+6c23,U+6c25,U+6c2b-6c2d,U+6c31,U+6c33,U+6c36-6c37,U+6c39-6c3c,U+6c3e-6c3f,U+6c43-6c45,U+6c48,U+6c4b-6c4f,U+6c51-6c53,U+6c56,U+6c58-6c5a,U+6c62-6c63,U+6c65-6c67,U+6c6b-6c6f,U+6c71,U+6c73,U+6c75,U+6c77-6c78,U+6c7a-6c7c,U+6c7f-6c80,U+6c84,U+6c87,U+6c8a-6c8b,U+6c8d-6c8e,U+6c91-6c92,U+6c95-6c98,U+6c9a,U+6c9c-6c9e,U+6ca0,U+6ca2,U+6ca8,U+6cac,U+6caf-6cb0,U+6cb4-6cb7,U+6cba,U+6cc0-6cc3,U+6cc6-6cc8,U+6ccb,U+6ccd-6ccf,U+6cd1-6cd2,U+6cd8-6cda,U+6cdc-6cdd,U+6cdf,U+6ce4,U+6ce6-6ce7,U+6ce9,U+6cec-6ced,U+6cf2,U+6cf4,U+6cf9,U+6cff-6d00,U+6d02-6d03,U+6d05-6d06,U+6d08-6d0a,U+6d0d,U+6d0f-6d11,U+6d13-6d16,U+6d18,U+6d1c-6d1d,U+6d1f-6d24,U+6d26,U+6d28-6d29,U+6d2c-6d2d,U+6d2f-6d30,U+6d34,U+6d36-6d38,U+6d3a,U+6d3f-6d40,U+6d42,U+6d44,U+6d49,U+6d4c,U+6d50,U+6d55-6d58,U+6d5b,U+6d5d,U+6d5f,U+6d61-6d62,U+6d64-6d65,U+6d67-6d68,U+6d6b-6d6d,U+6d70-6d72" } }, { uri: XnA, descriptors: { unicodeRange: "U+6967-696a,U+696c-696d,U+696f-6970,U+6972-6976,U+697a-697b,U+697d-697f,U+6981,U+6983,U+6985,U+698a-698c,U+698e-6993,U+6996-6997,U+6999-699a,U+699d-69a6,U+69a9-69aa,U+69ac,U+69ae-69b0,U+69b2-69b3,U+69b5-69b6,U+69b8-69ba,U+69bc-69c0,U+69c2-69c9,U+69cb,U+69cd,U+69cf,U+69d1-69d3,U+69d5-69da,U+69dc-69de,U+69e1-69ec,U+69ee-69f1,U+69f3-69fc,U+69fe,U+6a00-6a09,U+6a0b-6a16,U+6a19-6a1e,U+6a20,U+6a22-6a27,U+6a29,U+6a2b-6a2e,U+6a30,U+6a32-6a34,U+6a36-6a3c,U+6a3f-6a43,U+6a45-6a46,U+6a48-6a4a" } }, { uri: _nA, descriptors: { unicodeRange: "U+6830-6831,U+6834-6836,U+683a-683b,U+683f,U+6847,U+684b,U+684d,U+684f,U+6852,U+6856-685f,U+686a,U+686c-6873,U+6875,U+6878-6880,U+6882,U+6884,U+6887-688e,U+6890-6892,U+6894-6896,U+6898-68a1,U+68a3-68a5,U+68a9-68ac,U+68ae,U+68b1-68b2,U+68b4,U+68b6-68bf,U+68c1,U+68c3-68c8,U+68ca,U+68cc,U+68ce-68d1,U+68d3-68d4,U+68d6-68d7,U+68d9,U+68db-68df,U+68e1-68e2,U+68e4-68ed,U+68ef,U+68f2-68f4,U+68f6-68f8,U+68fb,U+68fd-6900,U+6902-6904,U+6906-690a,U+690c,U+690f,U+6911,U+6913-691e,U+6921-6923,U+6925-692c,U+692e-692f,U+6931-6933,U+6935-6938,U+693a-693c,U+693e,U+6940-6941,U+6943-6953,U+6955-6956,U+6958-6959,U+695b-695c,U+695f,U+6961-6962,U+6964-6965" } }, { uri: $nA, descriptors: { unicodeRange: "U+66b8,U+66ba-66bd,U+66bf-66d8,U+66da,U+66de-66e5,U+66e7-66e8,U+66ea-66ef,U+66f1,U+66f5-66f6,U+66f8,U+66fa-66fb,U+66fd,U+6701-6707,U+670c,U+670e-670f,U+6711-6713,U+6716,U+6718-671a,U+671c,U+671e,U+6720-6725,U+6727,U+6729,U+672e,U+6730,U+6732-6733,U+6736-6739,U+673b-673c,U+673e-673f,U+6741,U+6744-6745,U+6747,U+674a-674b,U+674d,U+6752,U+6754-6755,U+6757-675b,U+675d,U+6762-6764,U+6766-6767,U+676b-676c,U+676e,U+6771,U+6774,U+6776,U+6778-677b,U+677d,U+6780,U+6782-6783,U+6785-6786,U+6788,U+678a,U+678c-678f,U+6791-6794,U+6796,U+6799,U+679b,U+679f-67a1,U+67a4,U+67a6,U+67a9,U+67ac,U+67ae,U+67b1-67b2,U+67b4,U+67b9-67c0,U+67c2,U+67c5-67ce,U+67d5-67d7,U+67db,U+67df,U+67e1,U+67e3-67e4,U+67e6-67e8,U+67ea-67eb,U+67ed-67ee,U+67f2,U+67f5-67fc,U+67fe,U+6801-6804,U+6806,U+680d,U+6810,U+6812,U+6814-6815,U+6818-681c,U+681e-6820,U+6822-6828,U+682b-682f" } }, { uri: ArA, descriptors: { unicodeRange: "U+6569-656a,U+656d-656f,U+6571,U+6573,U+6575-6576,U+6578-6586,U+6588-658a,U+658d-658f,U+6592,U+6594-6596,U+6598,U+659a,U+659d-659e,U+65a0,U+65a2-65a3,U+65a6,U+65a8,U+65aa,U+65ac,U+65ae,U+65b1-65b8,U+65ba-65bb,U+65be-65c0,U+65c2,U+65c7-65ca,U+65cd,U+65d0-65d1,U+65d3-65d5,U+65d8-65df,U+65e1,U+65e3-65e4,U+65ea-65eb,U+65f2-65f5,U+65f8-65f9,U+65fb-65ff,U+6601,U+6604-6605,U+6607-6609,U+660b,U+660d,U+6610-6612,U+6616-6618,U+661a-661c,U+661e,U+6621-6624,U+6626,U+6629-662c,U+662e,U+6630,U+6632-6633,U+6637-663b,U+663d,U+663f-6640,U+6642,U+6644-664a,U+664d-664e,U+6650-6651,U+6658-6659,U+665b-665e,U+6660,U+6662-6663,U+6665,U+6667,U+6669-666d,U+6671-6673,U+6675,U+6678-6679,U+667b-667d,U+667f-6681,U+6683,U+6685-6686,U+6688-668b,U+668d-6690,U+6692-6695,U+6698-669c,U+669e-66a6,U+66a9-66ad,U+66af-66b3,U+66b5-66b7" } }, { uri: urA, descriptors: { unicodeRange: "U+5f30,U+5f32-5f38,U+5f3b,U+5f3d-5f3f,U+5f41-5f4f,U+5f51,U+5f54,U+5f59-5f5c,U+5f5e-5f60,U+5f63,U+5f65,U+5f67-5f68,U+5f6b,U+5f6e-5f6f,U+5f72,U+5f74-5f76,U+5f78,U+5f7a,U+5f7d-5f7f,U+5f83,U+5f86,U+5f8d-5f8f,U+5f91,U+5f93-5f94,U+5f96,U+5f9a-5f9b,U+5f9d-5fa0,U+5fa2-5fa7,U+5fa9,U+5fab-5fac,U+5faf-5fb4,U+5fb6,U+5fb8-5fbb,U+5fbe-5fc2,U+5fc7-5fc8,U+5fca-5fcb,U+5fce,U+5fd3-5fd5,U+5fda-5fdc,U+5fde-5fdf,U+5fe2-5fe3,U+5fe5-5fe6,U+5fe8-5fe9,U+5fec,U+5fef-5ff0,U+5ff2-5ff4,U+5ff6-5ff7,U+5ff9-5ffa,U+5ffc,U+6007-6009,U+600b-600c,U+6010-6011,U+6013,U+6017-6018,U+601a,U+601e-601f,U+6022-6024,U+602c-602e,U+6030-6034,U+6036-603a,U+603d-603e,U+6040,U+6044-604a,U+604c,U+604e-604f,U+6051,U+6053-6054,U+6056-6058,U+605b-605c,U+605e-6061,U+6065-6066,U+606e,U+6071-6072,U+6074-6075,U+6077,U+607e,U+6080-6082,U+6085-6088,U+608a-608b,U+608e-6091,U+6093,U+6095,U+6097-6099,U+609c,U+609e,U+60a1-60a2,U+60a4-60a5,U+60a7,U+60a9-60aa,U+60ae,U+60b0,U+60b3,U+60b5-60b7,U+60b9-60ba,U+60bd-60c4,U+60c7-60c9,U+60cc" } }, { uri: erA, descriptors: { unicodeRange: "U+635a-635d,U+6360,U+6364-6366,U+6368,U+636a-636c,U+636f-6370,U+6372-6375,U+6378-6379,U+637c-637f,U+6381,U+6383-6386,U+638b,U+638d,U+6391,U+6393-6395,U+6397,U+6399-639f,U+63a1,U+63a4,U+63a6,U+63ab,U+63af,U+63b1-63b2,U+63b5-63b6,U+63b9,U+63bb,U+63bd,U+63bf-63c3,U+63c5,U+63c7-63c8,U+63ca-63cc,U+63d1,U+63d3-63d5,U+63d7-63dd,U+63df,U+63e2,U+63e4-63e8,U+63eb-63ec,U+63ee-63f1,U+63f3,U+63f5,U+63f7,U+63f9-63fc,U+63fe,U+6403-6404,U+6406-640a,U+640d-640e,U+6411-6412,U+6415-641a,U+641d,U+641f,U+6422-6425,U+6427-6429,U+642b,U+642e-6433,U+6435-6439,U+643b-643c,U+643e,U+6440,U+6442-6443,U+6449,U+644b-6451,U+6453,U+6455-6457,U+6459-645d,U+645f-6466,U+6468,U+646a-646c,U+646e-6477,U+647b-6481,U+6483,U+6486,U+6488-648f" } }, { uri: CrA, descriptors: { unicodeRange: "U+61c5-61c7,U+61c9,U+61cc-61d0,U+61d3,U+61d5-61e5,U+61e7-61f4,U+61f6-61fe,U+6200-6205,U+6207,U+6209,U+6213-6214,U+6219,U+621c-621e,U+6220,U+6223,U+6226-6229,U+622b,U+622d,U+622f-6232,U+6235-6236,U+6238-623c,U+6242,U+6244-6246,U+624a,U+624f-6250,U+6255-6257,U+6259-625a,U+625c-6262,U+6264-6265,U+6268,U+6271-6272,U+6274-6275,U+6277-6278,U+627a-627b,U+627d,U+6281-6283,U+6285-6288,U+628b-6290,U+6294,U+6299,U+629c-629e,U+62a3,U+62a6-62a7,U+62a9-62aa,U+62ad-62b0,U+62b2-62b4,U+62b6-62b8,U+62ba,U+62be,U+62c0-62c1,U+62c3,U+62cb,U+62cf,U+62d1,U+62d5,U+62dd-62de,U+62e0-62e1,U+62e4,U+62ea-62eb,U+62f0,U+62f2,U+62f5,U+62f8-62fb,U+6300,U+6303-6306,U+630a-630d,U+630f-6310,U+6312-6315,U+6317-6319,U+631c,U+6326-6327,U+6329,U+632c-632e,U+6330-6331,U+6333-6338,U+633b-633c,U+633e-6341,U+6344,U+6347-6348,U+634a,U+6351-6354,U+6356-6359" } }, { uri: BrA, descriptors: { unicodeRange: "U+5dd0-5dda,U+5ddc,U+5ddf-5de0,U+5de3-5de4,U+5dea,U+5dec-5ded,U+5df0,U+5df5-5df6,U+5df8-5dfc,U+5dff-5e00,U+5e04,U+5e07,U+5e09-5e0b,U+5e0d-5e0e,U+5e12-5e13,U+5e17,U+5e1e-5e25,U+5e28-5e2c,U+5e2f-5e30,U+5e32-5e36,U+5e39-5e3a,U+5e3e-5e41,U+5e43,U+5e46-5e4b,U+5e4d-5e53,U+5e56-5e5a,U+5e5c-5e5d,U+5e5f-5e60,U+5e63-5e71,U+5e75,U+5e77,U+5e79,U+5e7e,U+5e81-5e83,U+5e85,U+5e88-5e89,U+5e8c-5e8e,U+5e92,U+5e98,U+5e9b,U+5e9d,U+5ea1-5ea4,U+5ea8-5eac,U+5eae-5eb2,U+5eb4,U+5eba-5ebd,U+5ebf-5ec8,U+5ecb-5ed0,U+5ed4-5ed5,U+5ed7-5eda,U+5edc-5ee7,U+5ee9,U+5eeb-5ef3,U+5ef5,U+5ef8-5ef9,U+5efb-5efd,U+5f05-5f07,U+5f09,U+5f0c-5f0e,U+5f10,U+5f12,U+5f14,U+5f16,U+5f19-5f1a,U+5f1c-5f1e,U+5f21-5f24,U+5f28,U+5f2b-5f2c,U+5f2e" } }, { uri: grA, descriptors: { unicodeRange: "U+60cd-60d0,U+60d2-60d4,U+60d6-60d7,U+60d9,U+60db,U+60de,U+60e1-60e5,U+60ea,U+60f1-60f2,U+60f5,U+60f7-60f8,U+60fb-60ff,U+6102-6105,U+6107,U+610a-610c,U+6110-6114,U+6116-6119,U+611b-611e,U+6121-6122,U+6125,U+6128-612a,U+612c-613e,U+6140-6147,U+6149,U+614b,U+614d,U+614f-6150,U+6152-6154,U+6156-615c,U+615e-6161,U+6163-6166,U+6169-616f,U+6171-6174,U+6176,U+6178-618a,U+618c-618d,U+618f-6193,U+6195-619c,U+619e-61a6,U+61aa-61ab,U+61ad-61b6,U+61b8-61bd,U+61bf-61c1,U+61c3-61c4" } }, { uri: trA, descriptors: { unicodeRange: "U+5cf4-5cfa,U+5cfc-5d01,U+5d04-5d05,U+5d08-5d0d,U+5d0f-5d13,U+5d15,U+5d17-5d1a,U+5d1c-5d1d,U+5d1f-5d23,U+5d25,U+5d28,U+5d2a-5d2c,U+5d2f-5d33,U+5d35-5d3c,U+5d3f-5d46,U+5d48-5d49,U+5d4d-5d57,U+5d59-5d5a,U+5d5c,U+5d5e-5d68,U+5d6a,U+5d6d-5d6e,U+5d70-5d73,U+5d75-5d81,U+5d83-5d98,U+5d9a-5d9c,U+5d9e-5db6,U+5db8-5dc4,U+5dc6-5dcc,U+5dce-5dcf" } }, { uri: irA, descriptors: { unicodeRange: "U+5b52,U+5b56,U+5b5e,U+5b60-5b61,U+5b67-5b68,U+5b6b,U+5b6d-5b6f,U+5b72,U+5b74,U+5b76-5b79,U+5b7b-5b7c,U+5b7e-5b7f,U+5b82,U+5b86,U+5b8a,U+5b8d-5b8e,U+5b90-5b92,U+5b94,U+5b96,U+5b9f,U+5ba7-5ba9,U+5bac-5baf,U+5bb1-5bb2,U+5bb7,U+5bba-5bbc,U+5bc0-5bc1,U+5bc3,U+5bc8-5bcb,U+5bcd-5bcf,U+5bd1,U+5bd4-5bdc,U+5be0,U+5be2-5be3,U+5be6-5be7,U+5be9-5bed,U+5bef,U+5bf1-5bf7,U+5bfd-5bfe,U+5c00,U+5c02-5c03,U+5c05,U+5c07-5c08,U+5c0b-5c0e,U+5c10,U+5c12-5c13,U+5c17,U+5c19,U+5c1b,U+5c1e-5c21,U+5c23,U+5c26,U+5c28-5c2b,U+5c2d-5c30,U+5c32-5c33,U+5c35-5c37,U+5c43-5c44,U+5c46-5c47,U+5c4c-5c4d,U+5c52-5c54,U+5c56-5c58,U+5c5a-5c5d,U+5c5f,U+5c62,U+5c64,U+5c67-5c6d,U+5c70,U+5c72-5c78,U+5c7b-5c7e,U+5c80,U+5c83-5c87,U+5c89-5c8b,U+5c8e-5c8f,U+5c92-5c93,U+5c95,U+5c9d-5ca1,U+5ca4-5ca8,U+5caa,U+5cae-5cb0,U+5cb2,U+5cb4,U+5cb6,U+5cb9-5cbc,U+5cbe,U+5cc0,U+5cc2-5cc3,U+5cc5-5cca,U+5ccc-5cd1,U+5cd3-5cd8,U+5cda-5ce0,U+5ce2-5ce3,U+5ce7,U+5ce9,U+5ceb-5cec,U+5cee-5cef,U+5cf1-5cf3" } }, { uri: ErA, descriptors: { unicodeRange: "U+593b,U+593d-5940,U+5943,U+5945-5946,U+594a,U+594c-594d,U+5950,U+5952-5953,U+5959,U+595b-595f,U+5961,U+5963-5964,U+5966-5972,U+5975,U+5977,U+597a-597c,U+597e-5980,U+5985,U+5989,U+598b-598c,U+598e-5991,U+5994-5995,U+5998,U+599a-599d,U+599f-59a2,U+59a6-59a7,U+59ac-59ad,U+59b0-59b1,U+59b3-59b8,U+59ba,U+59bc-59bd,U+59bf-59c5,U+59c7-59c9,U+59cc-59cf,U+59d5-59d6,U+59d9,U+59db,U+59de-59e2,U+59e4,U+59e6-59e7,U+59e9-59eb,U+59ed-59f8,U+59fa,U+59fc-59fe,U+5a00,U+5a02,U+5a0a-5a0b,U+5a0d-5a10,U+5a12,U+5a14-5a17,U+5a19-5a1b,U+5a1d-5a1e,U+5a21-5a22,U+5a24,U+5a26-5a28,U+5a2a-5a30,U+5a33,U+5a35,U+5a37-5a3b,U+5a3d-5a3f,U+5a41-5a45,U+5a47-5a48,U+5a4b-5a54,U+5a56-5a59,U+5a5b-5a61,U+5a63-5a66,U+5a68-5a69,U+5a6b-5a73,U+5a78-5a79,U+5a7b-5a7e,U+5a80-5a90" } }, { uri: arA, descriptors: { unicodeRange: "U+5a91,U+5a93-5a99,U+5a9c-5aa9,U+5aab-5ab1,U+5ab4,U+5ab6-5ab7,U+5ab9-5abd,U+5abf-5ac0,U+5ac3-5ac8,U+5aca-5acb,U+5acd-5ad1,U+5ad3,U+5ad5,U+5ad7,U+5ad9-5adb,U+5add-5adf,U+5ae2,U+5ae4-5ae5,U+5ae7-5ae8,U+5aea,U+5aec-5af0,U+5af2-5b08,U+5b0a-5b15,U+5b18-5b31,U+5b33,U+5b35-5b36,U+5b38-5b3f,U+5b41-5b4f" } }, { uri: IrA, descriptors: { unicodeRange: "U+5843,U+5845-584b,U+584e-5850,U+5852-5853,U+5855-5857,U+5859-585d,U+585f-5864,U+5866-586a,U+586d-587d,U+587f,U+5882,U+5884,U+5886-5888,U+588a-5891,U+5894-5898,U+589b-589d,U+58a0-58a7,U+58aa-58bb,U+58bd-58c0,U+58c2-58c4,U+58c6-58d0,U+58d2-58d4,U+58d6-58e3,U+58e5-58ea,U+58ed,U+58ef,U+58f1-58f2,U+58f4-58f5,U+58f7-58f8,U+58fa-5901,U+5903,U+5905-5906,U+5908-590c,U+590e,U+5910-5913,U+5917-5918,U+591b,U+591d-591e,U+5920-5923,U+5926,U+5928,U+592c,U+5930,U+5932-5933,U+5935-5936" } }, { uri: orA, descriptors: { unicodeRange: "U+56d0-56d3,U+56d5-56d6,U+56d8-56d9,U+56dc,U+56e3,U+56e5-56ea,U+56ec,U+56ee-56ef,U+56f2-56f3,U+56f6-56f8,U+56fb-56fc,U+5700-5702,U+5705,U+5707,U+570b-571b,U+571d-571e,U+5720-5722,U+5724-5727,U+572b,U+5731-5732,U+5734-5738,U+573c-573d,U+573f,U+5741,U+5743-5746,U+5748-5749,U+574b,U+5752-5756,U+5758-5759,U+5762-5763,U+5765,U+5767,U+576c,U+576e,U+5770-5772,U+5774-5775,U+5778-577a,U+577d-5781,U+5787-578a,U+578d-5791,U+5794-579a,U+579c-579f,U+57a5,U+57a8,U+57aa,U+57ac,U+57af-57b1,U+57b3,U+57b5-57b7,U+57b9-57c1,U+57c4-57ca,U+57cc-57cd,U+57d0-57d1,U+57d3,U+57d6-57d7,U+57db-57dc,U+57de,U+57e1-57e3,U+57e5-57ec,U+57ee,U+57f0-57f3,U+57f5-57f7,U+57fb-57fc,U+57fe-57ff,U+5801,U+5803-5805,U+5808-580a,U+580c,U+580e-5810,U+5812-5814,U+5816-5818,U+581a-581d,U+581f,U+5822-5823,U+5825-5829,U+582b-582f,U+5831-5834,U+5836-5842" } }, { uri: QrA, descriptors: { unicodeRange: "U+55f9-55fc,U+55ff,U+5602-5607,U+560a-560b,U+560d,U+5610-5617,U+5619-561a,U+561c-561d,U+5620-5622,U+5625-5626,U+5628-562b,U+562e-5630,U+5633,U+5635,U+5637-5638,U+563a,U+563c-563e,U+5640-564b,U+564f-5653,U+5655-5656,U+565a-565b,U+565d-5661,U+5663,U+5665-5667,U+566d-5670,U+5672-5675,U+5677-567a,U+567d-5684,U+5687-568d,U+5690-5692,U+5694-56a2,U+56a4-56ae,U+56b0-56b6,U+56b8-56bb,U+56bd-56c9,U+56cb-56cf" } }, { uri: nrA, descriptors: { unicodeRange: "U+5286-5287,U+5289-528f,U+5291-5292,U+5294-529a,U+529c,U+52a4-52a7,U+52ae-52b0,U+52b4-52bd,U+52c0-52c2,U+52c4-52c6,U+52c8,U+52ca,U+52cc-52cf,U+52d1,U+52d3-52d5,U+52d7,U+52d9-52de,U+52e0-52e3,U+52e5-52ef,U+52f1-52f8,U+52fb-52fd,U+5301-5304,U+5307,U+5309-530c,U+530e,U+5311-5314,U+5318,U+531b-531c,U+531e-531f,U+5322,U+5324-5325,U+5327-5329,U+532b-532d,U+532f-5338,U+533c-533d,U+5340,U+5342,U+5344,U+5346,U+534b-534d,U+5350,U+5354,U+5358-5359,U+535b,U+535d,U+5365,U+5368,U+536a,U+536c-536d,U+5372,U+5376,U+5379,U+537b-537e,U+5380-5381,U+5383,U+5387-5388,U+538a,U+538e-5394,U+5396-5397,U+5399,U+539b-539c,U+539e,U+53a0-53a1,U+53a4,U+53a7,U+53aa-53ad,U+53af-53b5,U+53b7-53ba,U+53bc-53be,U+53c0,U+53c3-53c7,U+53ce-53d0,U+53d2-53d3,U+53d5,U+53da,U+53dc-53de,U+53e1-53e2,U+53e7,U+53f4,U+53fa,U+53fe-5400,U+5402,U+5405,U+5407,U+540b,U+5414,U+5418-541a,U+541c,U+5422,U+5424-5425,U+542a,U+5430,U+5433,U+5436-5437,U+543a" } }, { uri: rrA, descriptors: { unicodeRange: "U+5101-5105,U+5108-510a,U+510c-5111,U+5113-5120,U+5122-513e,U+5142,U+5147,U+514a,U+514c,U+514e-5150,U+5152-5153,U+5157-5159,U+515b,U+515d-5161,U+5163-5164,U+5166-5167,U+5169-516a,U+516f,U+5172,U+517a,U+517e-517f,U+5183-5184,U+5186-5187,U+518a-518b,U+518e-5191,U+5193-5194,U+5198,U+519a,U+519d-519f,U+51a1,U+51a3,U+51a6-51aa,U+51ad-51ae,U+51b4,U+51b8-51ba,U+51be-51bf,U+51c1-51c3,U+51c5,U+51c8,U+51ca,U+51cd-51ce,U+51d0,U+51d2-51da,U+51dc,U+51de-51df,U+51e2-51e3,U+51e5-51ea,U+51ec,U+51ee,U+51f1-51f2,U+51f4,U+51f7,U+51fe,U+5204-5205,U+5209,U+520b-520c,U+520f-5210,U+5213-5215,U+521c,U+521e-521f,U+5221-5223,U+5225-5227,U+522a,U+522c,U+522f,U+5231-5232,U+5234-5235,U+523c,U+523e,U+5244-5249,U+524b,U+524e-524f,U+5252-5253,U+5255,U+5257-525b,U+525d,U+525f-5260,U+5262-5264,U+5266,U+5268,U+526b-526e,U+5270-5271,U+5273-527c,U+527e,U+5280,U+5283-5285" } }, { uri: srA, descriptors: { unicodeRange: "U+543d,U+543f,U+5441-5442,U+5444-5445,U+5447,U+5449,U+544c-544f,U+5451,U+545a,U+545d-5461,U+5463,U+5465,U+5467,U+5469-5470,U+5474,U+5479-547a,U+547e-547f,U+5481,U+5483,U+5485,U+5487-548a,U+548d,U+5491,U+5493,U+5497-5498,U+549c,U+549e-54a2,U+54a5,U+54ae,U+54b0,U+54b2,U+54b5-54b7,U+54b9-54ba,U+54bc,U+54be,U+54c3,U+54c5,U+54ca-54cb,U+54d6,U+54d8,U+54db,U+54e0-54e4,U+54eb-54ec,U+54ef-54f1,U+54f4-54f9,U+54fb,U+54fe,U+5500,U+5502-5505,U+5508,U+550a-550e,U+5512-5513,U+5515-551a,U+551c-551f,U+5521,U+5525-5526,U+5528-5529,U+552b,U+552d,U+5532,U+5534-5536,U+5538-553b,U+553d,U+5540,U+5542,U+5545,U+5547-5548,U+554b-554f,U+5551-5554,U+5557-555b,U+555d-5560,U+5562-5563,U+5568-5569,U+556b,U+556f-5574,U+5579-557a,U+557d,U+557f,U+5585-5586,U+558c-558e,U+5590,U+5592-5593,U+5595-5597,U+559a-559b,U+559e,U+55a0-55a6,U+55a8-55b0,U+55b2,U+55b4,U+55b6,U+55b8,U+55ba,U+55bc,U+55bf-55c3,U+55c6-55c8,U+55ca-55cb,U+55ce-55d0,U+55d5,U+55d7-55db,U+55de,U+55e0,U+55e2,U+55e7,U+55e9,U+55ed-55ee,U+55f0-55f1,U+55f4,U+55f6,U+55f8" } }, { uri: lrA, descriptors: { unicodeRange: "U+4fe0,U+4fe2,U+4fe4-4fe5,U+4fe7,U+4feb-4fec,U+4ff0,U+4ff2,U+4ff4-4ff7,U+4ff9,U+4ffb-4ffd,U+4fff-500b,U+500e,U+5010-5011,U+5013,U+5015-5017,U+501b,U+501d-501e,U+5020,U+5022-5024,U+5027,U+502b,U+502f-5039,U+503b,U+503d,U+503f-5042,U+5044-5046,U+5049-504b,U+504d,U+5050-5054,U+5056-5059,U+505b,U+505d-5064,U+5066-506b,U+506d-5075,U+5078-507a,U+507c-507d,U+5081-5084,U+5086-5087,U+5089-508c,U+508e-50a2,U+50a4,U+50a6,U+50aa-50ab,U+50ad-50b1,U+50b3-50b9,U+50bc-50ce,U+50d0-50d5,U+50d7-50d9,U+50db-50e5,U+50e8-50eb,U+50ef-50f2,U+50f4,U+50f6-50fa,U+50fc-5100" } }, { uri: crA, descriptors: { unicodeRange: "U+49d5-4a77" } }, { uri: drA, descriptors: { unicodeRange: "U+4dac-4dad,U+4daf-4db5,U+4e02,U+4e04-4e06,U+4e0f,U+4e12,U+4e17,U+4e1f-4e21,U+4e23,U+4e26,U+4e29,U+4e2e-4e2f,U+4e31,U+4e33,U+4e35,U+4e37,U+4e3c,U+4e40-4e42,U+4e44,U+4e46,U+4e4a,U+4e51,U+4e55,U+4e57,U+4e5a-4e5b,U+4e62-4e65,U+4e67-4e68,U+4e6a-4e6f,U+4e72,U+4e74-4e7d,U+4e7f-4e85,U+4e87,U+4e8a,U+4e90,U+4e96-4e97,U+4e99,U+4e9c-4e9e,U+4ea3,U+4eaa,U+4eaf-4eb1,U+4eb4,U+4eb6-4eb9,U+4ebc-4ebe,U+4ec8,U+4ecc,U+4ecf-4ed0,U+4ed2,U+4eda-4edc,U+4ee0,U+4ee2,U+4ee6-4ee7,U+4ee9,U+4eed-4eef,U+4ef1,U+4ef4,U+4ef8-4efa,U+4efc,U+4efe,U+4f00,U+4f02-4f08,U+4f0b-4f0c,U+4f12-4f16,U+4f1c-4f1d,U+4f21,U+4f23,U+4f28-4f29,U+4f2c-4f2e,U+4f31,U+4f33,U+4f35,U+4f37,U+4f39,U+4f3b,U+4f3e-4f42,U+4f44-4f45,U+4f47-4f4c,U+4f52,U+4f54,U+4f56,U+4f61-4f62,U+4f66,U+4f68,U+4f6a-4f6b,U+4f6d-4f6e,U+4f71-4f72,U+4f75,U+4f77-4f7a,U+4f7d,U+4f80-4f82,U+4f85-4f87,U+4f8a,U+4f8c,U+4f8e,U+4f90,U+4f92-4f93,U+4f95-4f96,U+4f98-4f9a,U+4f9c,U+4f9e-4f9f,U+4fa1-4fa2,U+4fa4,U+4fab,U+4fad,U+4fb0-4fb4,U+4fb6-4fbe,U+4fc0-4fc2,U+4fc6-4fc9,U+4fcb-4fcd,U+4fd2-4fd6,U+4fd9,U+4fdb" } }, { uri: DrA, descriptors: { unicodeRange: "U+4933-49d4" } }, { uri: hrA, descriptors: { unicodeRange: "U+487a-4932" } }, { uri: wrA, descriptors: { unicodeRange: "U+47d2-4879,U+2ce7c,U+2ce88,U+2ce93" } }, { uri: FrA, descriptors: { unicodeRange: "U+4756-47d1,U+2ca02,U+2ca0e,U+2ca7d,U+2caa9,U+2cb29,U+2cb2e,U+2cb31,U+2cb38-2cb39,U+2cb3f,U+2cb41,U+2cb4e,U+2cb5a,U+2cb64,U+2cb69,U+2cb6c,U+2cb6f,U+2cb76,U+2cb78,U+2cb7c,U+2cbb1,U+2cbbf-2cbc0,U+2cbce,U+2cc5f,U+2ccf5-2ccf6,U+2ccfd,U+2ccff,U+2cd02-2cd03,U+2cd0a,U+2cd8b,U+2cd8d,U+2cd8f-2cd90,U+2cd9f-2cda0,U+2cda8,U+2cdad-2cdae,U+2cdd5,U+2ce18,U+2ce1a,U+2ce23,U+2ce26,U+2ce2a" } }, { uri: prA, descriptors: { unicodeRange: "U+46c3-4755,U+2c488,U+2c494,U+2c497,U+2c542,U+2c613,U+2c618,U+2c621,U+2c629,U+2c62b-2c62d,U+2c62f,U+2c642,U+2c64a-2c64b,U+2c72c,U+2c72f,U+2c79f,U+2c7c1,U+2c7fd,U+2c8d9,U+2c8de,U+2c8e1,U+2c8f3,U+2c907,U+2c90a,U+2c91d" } }, { uri: mrA, descriptors: { unicodeRange: "U+4629-46c2,U+2bdf7,U+2be29,U+2c029-2c02a,U+2c0a9,U+2c0ca,U+2c1d5,U+2c1d9,U+2c1f9,U+2c27c,U+2c288,U+2c2a4,U+2c317,U+2c35b,U+2c361,U+2c364" } }, { uri: krA, descriptors: { unicodeRange: "U+458e-4628,U+2b7a9,U+2b7c5,U+2b7e6,U+2b7f9,U+2b806,U+2b80a,U+2b81c,U+2b8b8,U+2bac7,U+2bb5f,U+2bb62,U+2bb7c,U+2bb83,U+2bc1b,U+2bd77,U+2bd87" } }, { uri: yrA, descriptors: { unicodeRange: "U+4449-4511,U+2afa2,U+2b127-2b128,U+2b137-2b138,U+2b1ed" } }, { uri: brA, descriptors: { unicodeRange: "U+439b-4448,U+2a437,U+2a5f1,U+2a602,U+2a61a,U+2a6b2,U+2a7dd,U+2a8fb,U+2a917,U+2aa30,U+2aa36,U+2aa58" } }, { uri: UrA, descriptors: { unicodeRange: "U+4275-430d,U+298c6,U+29a72,U+29d98,U+29ddb,U+29e15,U+29e3d,U+29e49" } }, { uri: GrA, descriptors: { unicodeRange: "U+4132-41de,U+28bef,U+28c47,U+28c4f,U+28c51,U+28c54,U+28d10,U+28d71,U+28dfb,U+28e1f,U+28e36,U+28e89,U+28e99,U+28eeb,U+28f32,U+28ff8,U+292a0" } }, { uri: frA, descriptors: { unicodeRange: "U+41df-4274,U+292b1,U+29490,U+295cf,U+2967f,U+296f0,U+29719,U+29750" } }, { uri: LrA, descriptors: { unicodeRange: "U+408e-4131,U+285c8-285c9,U+28678,U+28695,U+286d7,U+286fa,U+287e0,U+28946,U+28949,U+2896b,U+28987-28988,U+289ba-289bb,U+28a1e,U+28a29,U+28a43,U+28a71,U+28a99,U+28acd,U+28add,U+28ae4,U+28b49,U+28bc1" } }, { uri: xrA, descriptors: { unicodeRange: "U+3e83-3f2f,U+27139,U+273da-273db,U+273fe,U+27410,U+27449,U+27614-27615,U+27631,U+27684,U+27693,U+2770e,U+27723,U+27752" } }, { uri: SrA, descriptors: { unicodeRange: "U+3f30-3fdb,U+27985,U+27a84,U+27bb3,U+27bbe,U+27bc7,U+27cb8,U+27da0,U+27e10" } }, { uri: NrA, descriptors: { unicodeRange: "U+3fdc-408d,U+27fb7,U+27ff9,U+2808a,U+280bb,U+2815d,U+28277,U+28282,U+282e2,U+282f3,U+283cd,U+28408,U+2840c,U+28455,U+28468,U+2856b" } }, { uri: RrA, descriptors: { unicodeRange: "U+3dd2-3e82,U+26a58,U+26a8c,U+26ab7,U+26aff,U+26b5c,U+26c21,U+26c29,U+26c73,U+26cdd,U+26e40,U+26e65,U+26f94,U+26ff6-26ff8,U+270f4,U+2710d" } }, { uri: MrA, descriptors: { unicodeRange: "U+3d34-3dd1,U+2648d,U+26676,U+2667e,U+266b0,U+2671d,U+2677c,U+267cc,U+268dd,U+268ea,U+26951,U+2696f,U+269dd,U+269fa,U+26a1e" } }, { uri: YrA, descriptors: { unicodeRange: "U+3c76-3d33,U+25d0a,U+25da1,U+25e2e,U+25e56,U+25e62,U+25e65,U+25ec2,U+25ed7-25ed8,U+25ee8,U+25f23,U+25f5c,U+25fd4,U+25fe0,U+25ffb,U+2600c,U+26017,U+26060,U+260ed,U+26221,U+26270,U+26286,U+2634c,U+26402" } }, { uri: vrA, descriptors: { unicodeRange: "U+3bda-3c75,U+25771,U+257a9,U+257b4,U+259c4,U+259d4,U+25ae3-25ae4,U+25af1,U+25bb2,U+25c14,U+25c4b,U+25c64" } }, { uri: HrA, descriptors: { unicodeRange: "U+3b25-3bd9,U+2504a,U+25055,U+25122,U+2512b,U+251a9,U+251cd,U+251e5,U+2521e,U+2524c,U+2542e,U+2548e,U+254d9,U+2550e,U+25532,U+25562,U+255a7-255a8" } }, { uri: KrA, descriptors: { unicodeRange: "U+3a6b-3b24,U+24896,U+249db,U+24a4d,U+24a7d,U+24ac9,U+24b56,U+24b6f,U+24c16,U+24d14,U+24dea,U+24e0e,U+24e37,U+24e6a,U+24e8b,U+24eaa" } }, { uri: JrA, descriptors: { unicodeRange: "U+39a9-3a6a,U+24096,U+24103,U+241ac,U+241c6,U+241fe,U+243bc,U+243f8,U+244d3,U+24629,U+246a5,U+247f1" } }, { uri: ZrA, descriptors: { unicodeRange: "U+38e3-39a8,U+23a98,U+23c7f,U+23c97-23c98,U+23cfe,U+23d00,U+23d0e,U+23d40,U+23dd3,U+23df9-23dfa,U+23e23,U+23f7e" } }, { uri: qrA, descriptors: { unicodeRange: "U+3760-382a,U+22ab8,U+22b43,U+22b46,U+22b4f-22b50,U+22ba6,U+22bca,U+22c1d,U+22c24,U+22c55,U+22d4c,U+22de1" } }, { uri: WrA, descriptors: { unicodeRange: "U+382b-38e2,U+231b6,U+231c3-231c4,U+231f5,U+23350,U+23372,U+233d0,U+233d2-233d3,U+233d5,U+233da,U+233df,U+233e4,U+2344a-2344b,U+23451,U+23465,U+234e4,U+2355a,U+23594,U+235c4,U+235cb,U+23638-2363a,U+23647,U+2370c,U+2371c,U+2373f,U+23763-23764,U+237e7,U+237ff,U+23824,U+2383d" } }, { uri: jrA, descriptors: { unicodeRange: "U+3698-375f,U+22218,U+2231e,U+223ad,U+224dc,U+226f3,U+2285b,U+228ab,U+2298f" } }, { uri: TrA, descriptors: { unicodeRange: "U+35e6-3697,U+21c56,U+21cde,U+21d2d,U+21d45,U+21d62,U+21d78,U+21d92,U+21d9c,U+21da1,U+21db7,U+21de0,U+21e33-21e34,U+21f1e,U+21f76,U+21ffa,U+2217b" } }, { uri: zrA, descriptors: { unicodeRange: "U+3444-350e,U+20ad3,U+20b1d,U+20b9f,U+20c41,U+20cbf,U+20cd0,U+20d45,U+20de1,U+20e64,U+20e6d,U+20e95,U+20e9d,U+20ea2,U+20f5f,U+210c1,U+21201,U+2123d,U+21255,U+21274,U+2127b" } }, { uri: PrA, descriptors: { unicodeRange: "U+350f-35e5,U+212d7,U+212e4,U+212fd,U+2131b,U+21336,U+21344,U+2139a,U+213c4,U+21413,U+2146d-2146e,U+215d7,U+21647,U+216b4,U+21706,U+21742,U+218bd,U+219c3" } }, { uri: OrA, descriptors: { unicodeRange: "U+336d-3443,U+2032b,U+20371,U+20381,U+203f9,U+2044a,U+20509,U+20547,U+205d6,U+20628,U+20676,U+2074f,U+20779,U+20807,U+2083a,U+20895,U+208b9,U+2097c,U+2099d" } }, { uri: VrA, descriptors: { unicodeRange: "U+328b-336c,U+2000b,U+20089,U+200a2,U+200a4,U+20164,U+201a2,U+20213" } }, { uri: XrA, descriptors: { unicodeRange: "U+3192-31ba,U+31c0-31e3,U+31f0-321e,U+3220-328a,U+1f250-1f251" } }, { uri: _rA, descriptors: { unicodeRange: "U+2f74-2fd5,U+3000,U+3003-3007,U+3012-3013,U+3018-301c,U+3020-3029,U+302f-303f,U+3041-3096,U+3099-30a1" } }, { uri: $rA, descriptors: { unicodeRange: "U+30a2-30ff,U+3105-312f,U+3131-318e,U+3190-3191" } }, { uri: AsA, descriptors: { unicodeRange: "U+4e36,U+4ea0,U+4f74,U+4f91,U+4f94,U+4fc5,U+507e,U+50ed,U+5182,U+51f5,U+525e,U+5282,U+52f9,U+5326,U+537a,U+53a3,U+5423,U+5459,U+54b4,U+54d9,U+55c9,U+57f4,U+580b,U+5902,U+5925,U+5a08,U+5ab5,U+5b84,U+5be4,U+5c22,U+5cb5,U+5cbd,U+5d3e,U+5e31,U+5e5e,U+5e80,U+5ee8,U+5f82,U+5fc9,U+5fed,U+600a,U+605d,U+609b,U+609d,U+60dd,U+6243,U+6322,U+63ce,U+640c,U+643f,U+6445,U+64d7,U+6534,U+6549,U+656b,U+6603,U+674c,U+680a,U+6864,U+69d4,U+6a65,U+6c2a,U+6c46,U+6c5c,U+6d0e,U+6d48,U+6e2b,U+6eb2,U+6eb7,U+6f89,U+706c,U+70b1,U+7113,U+71d4,U+727f,U+72f3,U+7303,U+7321,U+736c,U+736f,U+74a9,U+74de,U+750d,U+7513,U+7592,U+75c4,U+7605,U+760a,U+761b,U+7625,U+762d,U+7643,U+7707,U+7747,U+77b5,U+7839,U+784e,U+78a5,U+7924,U+793b,U+798a,U+7a03,U+7a06,U+7a78,U+7a80,U+7aad,U+7ba8,U+7be5,U+7cc8,U+7ec1,U+7f0b,U+7f0f,U+7f12,U+7f68,U+7f9d,U+8025,U+809c,U+80ad,U+80b7,U+80e8,U+811e,U+8204,U+8223,U+822d,U+823b,U+824b,U+825a,U+827d,U+827f,U+828f,U+82c8,U+8307,U+831b,U+8347,U+837d,U+839b,U+83a9,U+83f9,U+84b9,U+8579,U+864d,U+867f,U+86b0,U+86d1,U+86d8,U+86f2,U+8764,U+8770,U+8788,U+8797,U+87ac-87ad,U+87b5,U+881b,U+8844,U+88bc,U+88fc,U+8930,U+89cf,U+89d6,U+8ba0,U+8bd4,U+8c02,U+8c2b,U+8c85,U+8e23,U+8f81-8f82,U+8fd5,U+90b6,U+90db,U+914e,U+9164,U+91ad,U+943e,U+94b7-94b8,U+94eb,U+950d,U+9514,U+9516,U+9518,U+9529,U+9538,U+953f,U+954e,U+955f,U+95fc,U+9667,U+96b3,U+9792,U+97b2,U+98a1,U+9969,U+9987,U+9998,U+9a80,U+9a92,U+9a96,U+9adf,U+9cb4,U+9cbd,U+9cd0,U+9cd4,U+9e31,U+9e3a,U+9e71,U+9ee5,U+9eea,U+9ef9,U+9fa0" } }, { uri: usA, descriptors: { unicodeRange: "U+4e0c,U+4e28,U+4e3f,U+4ec2,U+502e,U+50ba,U+5155,U+5181,U+522d,U+5281,U+5290,U+5369,U+53b6,U+54d5,U+54dc,U+54ff,U+552a,U+553c,U+5588,U+55b5,U+5686,U+570a,U+5776,U+5786,U+57a4,U+5820,U+5865,U+58bc,U+5b32,U+5b65,U+5c1c,U+5c66,U+5c6e,U+5c8d,U+5ddb,U+5f2a,U+5f50,U+5f61,U+6067,U+614a,U+615d,U+619d,U+61d4,U+620b,U+6224-6225,U+6343,U+63ad,U+63f2,U+640b,U+6420,U+6434,U+6496,U+64d0,U+6509,U+652e,U+67a8,U+6833,U+6844,U+684a,U+6920,U+6957,U+6971,U+6a8e,U+6a91,U+6aa0,U+6b43,U+6bea,U+6bf5,U+6c15,U+6cd0,U+6ee0,U+6f24,U+6f2d,U+70c0,U+721d,U+728b,U+72c3,U+72e8,U+730a,U+7338-7339,U+734d,U+746d,U+752f,U+754e,U+770d,U+7735,U+778d,U+77a2,U+77e7,U+7857,U+786d,U+78c9,U+78f2,U+791e,U+7953,U+7b58,U+7b9d,U+7bda,U+7cd7,U+7f32-7f33,U+8022,U+8028-8029,U+8035,U+804d,U+8080,U+80c2,U+80e9,U+80ec,U+80f2,U+810e,U+8221,U+8274,U+82b0,U+82e0,U+83b0,U+8487-8488,U+848e,U+84cd,U+84d0,U+8539,U+857a,U+85a8,U+85b7,U+867c,U+871e,U+8723,U+877e,U+878b,U+8793,U+8803,U+88d2,U+8966,U+89cc,U+89eb,U+8b26,U+8c8a,U+8c98,U+8d33,U+8d47,U+8d55,U+8dbc,U+8e40,U+8e94,U+8f77,U+8f79,U+9058,U+91a2,U+91b5,U+928e,U+9494,U+94b6,U+94de,U+94f4,U+94f9,U+950a,U+950e,U+951e,U+952b,U+953c,U+953e,U+9544,U+9561,U+9564,U+9569,U+95f6,U+9603,U+960d,U+963d,U+9674,U+9794,U+97ab,U+98a5,U+9a9f,U+9ab1,U+9ad1,U+9b0f,U+9b2f,U+9c92,U+9c95,U+9cba,U+9cbc,U+9cc6,U+9ccb,U+9cd8,U+9e32,U+9e38,U+9e5b,U+9e7e,U+9eb4,U+9efb-9efc,U+9f3d" } }, { uri: esA, descriptors: { unicodeRange: "U+2e3b,U+2e80-2e99,U+2e9b-2ef3,U+2f00-2f73,U+ffffd" } }, { uri: CsA, descriptors: { unicodeRange: "U+4e69,U+4f1b,U+4f67,U+4f7e,U+4fdc,U+50e6,U+5196,U+5202,U+5233,U+523f,U+52a2,U+536e,U+5476,U+54ad,U+54cf,U+5537,U+561e,U+56dd,U+56df,U+5709,U+572c,U+57cf,U+57f8,U+580d,U+5881,U+589a,U+5941,U+59b2,U+5c25,U+5d24,U+5d74,U+5e42,U+5e8b,U+5eb3,U+5ed2,U+5fad,U+6003,U+603c,U+6083,U+6100,U+6126,U+6206,U+62ca,U+638e,U+63b4,U+6426,U+646d,U+6535,U+65c4,U+66db,U+6715,U+6769,U+6798,U+67c3,U+6861,U+698d,U+69ca,U+69ed,U+69f2,U+69ff,U+6a18,U+6b39,U+6bb3,U+6c0d,U+6cb2,U+6cd6,U+6cf7,U+6cfa,U+6d33,U+6e16,U+6e53-6e54,U+6ebb,U+6fb6,U+709d,U+72ad,U+72f7,U+72fb,U+7313,U+739f,U+74ba,U+754b,U+755b,U+758b,U+75ac,U+75d6,U+7617,U+7635,U+7640,U+76a4,U+76b2,U+775a,U+77bd,U+781f,U+79b3,U+7b2b,U+7b31,U+7b3e,U+7b6e,U+7b9c,U+7c0b,U+7c9e,U+7cc1,U+7ce8,U+7ea5,U+7f21,U+7f27,U+7f74,U+7fb0,U+8031,U+8071,U+80ea,U+8114,U+8160,U+81a6,U+81c1,U+829f,U+82a4,U+82fb,U+831a,U+8333,U+836c,U+83b6,U+83f8,U+8411,U+841c,U+8489,U+848c,U+85a4,U+8627,U+8629,U+866e,U+86b5,U+872e,U+8731,U+877b,U+877d,U+87ea,U+8813,U+8816,U+8864,U+88ce,U+88e5,U+897b,U+89cb,U+89f3,U+8bfc,U+8c35,U+8d46,U+8d4d,U+8dba,U+8e3a,U+8f75,U+8f7e,U+8fd3,U+9161,U+9179,U+917e,U+91a3,U+94ac,U+94d7,U+94e5,U+952a,U+952c,U+9545,U+9565,U+9568,U+956a,U+961d,U+96e0,U+972a,U+9730,U+989f,U+98e7,U+990d,U+9967,U+9993,U+9aa3,U+9ac0,U+9ae1,U+9aeb,U+9af9,U+9c86,U+9c8b,U+9ca0-9ca1,U+9ca3,U+9ce2,U+9e48,U+9e6a,U+9e87,U+9ee2,U+9ee9,U+9f17,U+9f19,U+9f2c,U+9f80" } }, { uri: BsA, descriptors: { unicodeRange: "U+4ef3,U+50d6,U+50ec,U+51ab,U+51b1,U+52d6,U+54a9,U+54da,U+55be,U+55cd,U+564d,U+572f,U+574c,U+576b,U+57d8,U+57fd,U+5844,U+59d2,U+5ae0,U+5b16,U+5b37,U+5b5b,U+5b80,U+5d1e,U+5d6b,U+5efe,U+5f11,U+5f56,U+5f58,U+5f73,U+5f8c,U+5fc4,U+5fe4,U+602b,U+6106,U+610d,U+63de,U+63f8,U+641b,U+64e4,U+6634,U+676a,U+67b5,U+681d,U+6883,U+69b1,U+69e0,U+6b37,U+6b9b,U+6d7c,U+6ed7,U+6f36,U+6f72,U+6f8c,U+7035,U+7039,U+7173,U+7178,U+7228,U+728f,U+72b4,U+72ef,U+72f4,U+7331,U+7481,U+74e0,U+7540,U+75c3,U+75e6,U+763c,U+764d,U+76cd,U+7704,U+7743,U+7780,U+7847,U+786a,U+78b9,U+7962,U+7a02,U+7aac,U+7ab3,U+7b0a,U+7b4c,U+7b7b,U+7bfc,U+7c0f,U+7c16,U+7c40,U+7ca2,U+7cc7,U+7cf8,U+7d77,U+7e3b,U+7ea1,U+7ea9,U+7ef2,U+7f02,U+7f07,U+7f0c,U+7f23,U+7f2f,U+7fbc,U+8016,U+8020,U+812c,U+8136,U+8182,U+822f,U+8233,U+825f,U+8268,U+8284,U+8288,U+8291,U+8308,U+8311,U+835b,U+836d,U+83dd,U+8406,U+840f,U+845c,U+84b4,U+84e3,U+850c,U+855e,U+863c,U+86ba,U+86c4,U+86de,U+86f1,U+873e,U+87bd,U+87db,U+880a,U+883c,U+887f,U+88f0,U+890a,U+892b,U+895e,U+89ef,U+8a48,U+8bdc,U+8c18,U+8c33,U+8c94,U+8db1,U+8dcf,U+8dd6,U+8de3,U+8e6f,U+8e90,U+8f7a,U+8fb6,U+902d,U+90be,U+91af,U+936a,U+948b,U+94d8,U+9513,U+953a,U+956c,U+963c,U+9654,U+966c,U+9688,U+97b4,U+996b,U+9a75,U+9a7a,U+9aba,U+9aed,U+9b08,U+9b43,U+9c8e,U+9c94,U+9c9a,U+9e2b,U+9e36,U+9e4b,U+9e4e,U+9e55,U+9e63,U+9e68-9e69,U+9ebd,U+9ec9,U+9f0d,U+9f37,U+9f51" } }, { uri: gsA, descriptors: { unicodeRange: "U+50a7,U+5240,U+5261,U+52ac,U+531a,U+5363,U+5432,U+5452,U+5456,U+5472,U+5478,U+553f,U+5575,U+5581,U+55cc,U+55fe,U+5601,U+572e,U+57d2,U+57ef,U+581e,U+5924,U+5981,U+5997,U+59a3,U+5aaa,U+5ab8,U+5b34,U+5d5d,U+5def,U+5e11,U+5e91,U+5ed1,U+5ef4,U+5f40,U+600d,U+6019,U+601b,U+605a,U+6092,U+60ab,U+6217,U+623d,U+6369,U+65d2,U+6661,U+670a,U+6753,U+67a7,U+6855,U+68f9,U+6939,U+696e,U+6980,U+6a7c,U+6aab,U+6b82,U+6bf3,U+6bf9,U+6c05,U+6c19-6c1a,U+6ca9,U+6cf6,U+6d1a,U+6dab,U+6f74,U+7085,U+7198,U+71b5,U+7256,U+725d,U+727e,U+72fa,U+7322,U+738e,U+73e5,U+750f,U+755a,U+7594,U+75b3,U+760c,U+7615,U+7630,U+763f,U+77ec,U+7817,U+78a1,U+78d9,U+7905,U+7b2a,U+7b2e,U+7b62,U+7b85,U+7bcc,U+7bea,U+7c26,U+7c74,U+7c9c-7c9d,U+7e47,U+7e9b,U+7e9f,U+7ee0,U+7ee8,U+7ef1,U+7f01,U+7f11,U+7f17,U+7f36,U+7f7e,U+7fee,U+802a,U+80cd,U+8112,U+8169,U+8234,U+8279,U+8298,U+82ca,U+82d8,U+82e1,U+83c0,U+83d4,U+83df,U+8401,U+8451,U+845a,U+8476,U+8478,U+84ba,U+84bd,U+84e0,U+851f,U+8548,U+8556,U+8585,U+868d,U+86e9,U+86f4,U+86f8,U+8765,U+8785,U+87ab,U+87ee,U+8832,U+8872,U+88b7,U+88e2-88e3,U+89da,U+8bce,U+8bd3,U+8bd6,U+8bf9,U+8c16,U+8c73,U+8d5c,U+8dde,U+8f6d,U+8f94,U+8fe8,U+9011,U+915e,U+9185,U+918c,U+94ab,U+94d1,U+94f3,U+9515,U+951d,U+9558,U+9567,U+96ce,U+96e9,U+9785,U+9878,U+987c,U+9883,U+98d1,U+9954,U+9963,U+9a93,U+9ac1,U+9acc,U+9b1f,U+9b49,U+9b4d,U+9b51,U+9ca7,U+9cae,U+9cce,U+9cd3,U+9e37,U+9e39,U+9e41,U+9e46,U+9f22,U+9f2f,U+9f39,U+9f85" } }, { uri: tsA, descriptors: { unicodeRange: "U+4e5c,U+4edf,U+4f25,U+4f32,U+4f5e,U+4f76,U+4faa,U+4fe6,U+5028,U+5048,U+5250,U+535f,U+538d,U+53c1,U+5412,U+5443,U+54d4,U+54dd,U+5541,U+5550,U+5577,U+55dd,U+55f3,U+560f,U+562c,U+5657-5658,U+5664,U+56af,U+575c,U+577c,U+57b2,U+57da,U+5800,U+5a62,U+5aeb,U+5c3b,U+5ca3,U+5d26,U+5d9d,U+5f01,U+5fb5,U+5fdd,U+5ff8,U+6029,U+6041,U+6079,U+60b1,U+6222,U+629f,U+6332,U+63bc,U+63e0,U+6485,U+65ab,U+65c3,U+65c6,U+668c,U+669d,U+66be,U+67fd,U+6800,U+68fc,U+690b,U+6924,U+6978,U+69a7,U+6a3e,U+6a50,U+6a5b,U+6a97,U+6b24,U+6b8d,U+6baa,U+6c10,U+6c54,U+6ceb,U+6d04,U+6d4d,U+6eb1,U+6ebd,U+7110,U+71b3,U+71f9,U+7230,U+728d,U+7292,U+72b8,U+72d2,U+7360,U+73a2,U+7511,U+75a0,U+75c8,U+779f,U+7826,U+7877,U+7a39,U+7aa8,U+7ae6,U+7b04,U+7b0f,U+7baa,U+7bac,U+7c1f,U+7ccd,U+7ecb,U+7ed4,U+7ed7,U+7efb,U+7f0d,U+7f5f,U+7faf,U+7fd5,U+7fe5,U+8027,U+80bc,U+80dd,U+80fc,U+8132,U+815a,U+8167,U+816d,U+81ca,U+8228,U+82a1,U+82a9,U+82ab,U+82cc,U+8351,U+8368,U+83b8,U+83d8,U+83ea,U+83f0,U+8497,U+84c1,U+858f,U+85ff,U+867b,U+86a8-86a9,U+870a,U+8722,U+876e,U+877c,U+87e5,U+8888,U+88df,U+8919,U+8bcc,U+8bdf,U+8be8,U+8bee,U+8c20,U+8c2f,U+8d36,U+8df8,U+8e05,U+8e2f,U+8f9a,U+9021,U+908b,U+90b4,U+90ba,U+90d0,U+90eb,U+90fe,U+91aa,U+933e,U+9486-9487,U+948d,U+9490,U+94ad,U+94bd,U+94d6,U+94d9,U+9507,U+9546,U+955e,U+956b,U+95e9,U+9604,U+960b,U+9612,U+9615,U+9617,U+96b9,U+989a-989b,U+989e,U+9a78,U+9a7d,U+9aa0,U+9aa2,U+9ac2,U+9b23,U+9b3b,U+9c82,U+9cca,U+9cd9,U+9e28,U+9e5a,U+9e5e,U+9e6c,U+9efe,U+9f0b" } }, { uri: isA, descriptors: { unicodeRange: "U+4e47,U+4e8d,U+4f65,U+4f89,U+50ee,U+520e,U+5416,U+5454,U+54bb,U+54c2,U+54d3,U+54de,U+5591,U+55e5,U+560c,U+566b,U+5769,U+578c,U+5793,U+57e4,U+5889,U+593c,U+59ab,U+5ad4,U+5ad8,U+5af1,U+5b53,U+5ba5,U+5c59,U+5c63,U+5d5b,U+5e0f,U+5e14,U+5edb,U+5fbc,U+6004,U+60ad,U+610e,U+61b7,U+624c,U+634c,U+647a,U+64ba,U+65f0,U+6600,U+66f7,U+67e2,U+67f0,U+680c,U+686b,U+6874,U+691f,U+6989,U+6a17,U+6b81,U+6b84,U+6c06-6c07,U+6c3d,U+6d07,U+6d27,U+6d2b,U+6d91,U+6e6b,U+6e8f,U+6fde,U+70bb,U+723b,U+726e,U+72b0,U+72ce,U+72f2,U+7301,U+731e,U+737e,U+7477,U+748e,U+74ff,U+7633,U+7654,U+771a,U+7726,U+7765,U+7768,U+781c,U+7829,U+78d4,U+7913,U+7957,U+79d5,U+79eb,U+7a70,U+7a86,U+7b25,U+7b38,U+7b47,U+7b72,U+7ba6-7ba7,U+7dae,U+7ee1,U+7efe,U+7f26,U+7f31,U+7f35,U+801c,U+8043,U+809f,U+80ab,U+80d7,U+8118,U+8188,U+81cc,U+823e,U+8244,U+824f,U+82b4,U+82c1,U+82e4,U+82f4,U+8306,U+833a,U+835c,U+839c,U+83b3,U+83bc,U+846d,U+867a,U+868b,U+8734,U+87ca,U+886e,U+887e,U+88a2,U+88c9,U+8921,U+8bb5,U+8bf3,U+8c04,U+8c17,U+8c1d,U+8c25,U+8c36,U+8c55,U+8c78,U+8d3d,U+8d40,U+8d59,U+8d67,U+8d91,U+8dbf,U+8deb-8dec,U+8dfd,U+8e14,U+8e41,U+8f8e,U+900b,U+9044,U+9062,U+90cf,U+9123,U+9146,U+9162,U+9172,U+918d,U+9190,U+92c8,U+93ca,U+948c,U+94aa,U+94b2,U+94c8,U+94ca,U+94d5,U+94df,U+94e9-94ea,U+94f7,U+94fc-94fd,U+951b,U+954f,U+9554,U+9559,U+9566,U+9571-9572,U+95f1,U+9608,U+960f,U+97af,U+988f,U+98d5,U+992e,U+9955,U+9ab0,U+9b32,U+9c90,U+9c9e,U+9ca5,U+9ca9,U+9cad,U+9cb1,U+9cc3,U+9e47,U+9ee7,U+9f87" } }, { uri: EsA, descriptors: { unicodeRange: "U+4e93,U+4ec4,U+4ef5,U+4f27,U+4f7b,U+4fe3,U+5080,U+5121,U+51eb,U+5208,U+52f0,U+53f5,U+5453,U+5466,U+54a6,U+54bf,U+54d0,U+5533,U+5549,U+5556,U+556d,U+558f,U+55f2,U+55f5,U+5627,U+567b,U+56d4,U+571c,U+5739,U+57b4,U+5807,U+58c5,U+59a4,U+59af,U+59d8,U+5a09,U+5a0c,U+5a4a,U+5ad2,U+5b6c,U+5ca2,U+5cac,U+5d03,U+5d6c,U+5db7,U+5ebe,U+5f2d,U+5fea,U+6042,U+6120,U+6175,U+6221,U+623e,U+6339,U+638a,U+643d,U+64b8,U+64e2,U+66e9,U+67b3,U+67c1,U+67d2,U+6832,U+6877,U+68f0,U+6934,U+6966,U+6987,U+6998,U+69c1,U+69ce,U+6a3d,U+6a84,U+6aa9,U+6b87,U+6bd6,U+6c16,U+6c18,U+6cd4,U+6cee,U+6de0,U+6e0c,U+6ecf,U+6f4b,U+70b7,U+7168,U+72d9,U+7352,U+73b3,U+73d0,U+7441,U+74d2,U+75a5,U+75e7-75e8,U+7610,U+7619,U+765e,U+772d,U+7812,U+782c,U+784c,U+7850,U+7856,U+789b,U+78f4,U+7a51,U+7b15,U+7b1e,U+7b24,U+7b5a,U+7bb8,U+7bc1,U+7bd9,U+7ed0,U+7ee6,U+7efa,U+7f1b,U+7f1f,U+7f22,U+7f45,U+7f71,U+7fa7,U+7fbf,U+7ff3,U+8052,U+80b1,U+80db,U+80f4,U+81bb,U+81ec,U+8202,U+8210,U+8249,U+828a,U+828e,U+82e3,U+8315,U+8369,U+8378,U+83a8,U+83aa,U+83b4,U+83e1,U+84fc,U+8538,U+853b,U+859c,U+85ae,U+86b4,U+86c9,U+86cf,U+8725,U+879f,U+87b3,U+887d,U+88fe,U+8a8a,U+8ba7,U+8c07,U+8c14,U+8c30,U+8c47,U+8db5,U+8dd7,U+8e1f,U+8e69,U+8e70,U+8e85,U+8f78,U+8f87,U+8f8b,U+8f8f,U+90c4,U+9143,U+917d,U+948f,U+94cd,U+94d2,U+94ef,U+954a,U+9609-960a,U+96d2,U+9708,U+9765,U+97ea,U+9880,U+98a7,U+996c,U+9980,U+9991,U+9a88,U+9ab6,U+9afb,U+9b47,U+9c87,U+9c9b,U+9cb5,U+9cc7,U+9e2c,U+9e42,U+9e58,U+9ecd,U+9ecf,U+9f8a,U+9f8c" } }, { uri: asA, descriptors: { unicodeRange: "U+4ebb,U+4edd,U+4fa9,U+502c,U+50a5,U+51c7,U+51fc,U+523d,U+5241,U+530f,U+5464,U+549d,U+54a3,U+5514,U+5527,U+555c,U+556e,U+5576,U+55b1,U+55b9,U+55eb,U+5624,U+564c,U+5671,U+5685,U+568f,U+56d7,U+56e1,U+57a1,U+57d9,U+5942,U+5a67,U+5c50,U+5c7a,U+5c98,U+5d06,U+5d27,U+5d6f,U+5df3,U+5dfd,U+5e19,U+5ea0,U+5eb9,U+5eea,U+5ffe,U+600f,U+606b,U+6215,U+622c,U+6266,U+62bb,U+62bf,U+6308,U+6387,U+63b8,U+63c4,U+63c6,U+63f6,U+6441,U+6555,U+659b,U+6677,U+66a7,U+6775,U+678b,U+679e,U+6840,U+6849,U+6860,U+68c2,U+6910,U+6a28,U+6a2f,U+6a79,U+6b92-6b93,U+6bc2,U+6bfd,U+6c29,U+6c32,U+6c86,U+6cc5,U+6d0c,U+6d60,U+6da0,U+6ddd,U+6e86,U+6ed3,U+6edf,U+6fb9,U+6fd1,U+6fef,U+7023,U+7080,U+70ca,U+712f,U+7145,U+7284,U+732c,U+73c8,U+73d9,U+740a,U+7457,U+7596,U+759d,U+75a3,U+75d8,U+75e3-75e4,U+75ff,U+7622,U+7688,U+76b4,U+76e5,U+7818,U+7887,U+789a,U+78b2,U+7b08,U+7b33,U+7c2a,U+7ccc,U+7ea8,U+7ec0,U+7fe6,U+8012,U+8084,U+8093,U+80e4,U+80ef,U+8297,U+82a8,U+82be,U+8331,U+8366,U+83c5,U+83fd,U+8473,U+84a1,U+84ca,U+84d1,U+857b,U+85c1,U+85d3,U+8605,U+8662,U+86aa,U+86b1,U+86d4,U+86ed,U+86f3,U+8709,U+8748,U+874c,U+8763,U+89c7,U+89de,U+89e5,U+8a3e,U+8ba6,U+8c00,U+8c21,U+8c49,U+8c7a,U+8d30,U+8df9,U+8e51,U+8e59,U+8f6b,U+8f73,U+8ff3,U+9016,U+9026,U+902f,U+9099,U+909b,U+90c7,U+914a,U+91ae,U+91ba,U+9495,U+94a3,U+94af,U+94ba,U+94bf,U+94cc,U+94e1,U+94f0,U+9531,U+955d,U+95f3,U+9697,U+96bc,U+975b,U+977c,U+98a2,U+998a,U+9994-9995,U+9a9b,U+9ab7,U+9ac5,U+9c91,U+9ccf,U+9cd5,U+9e29,U+9edc,U+9edf,U+9f83,U+9f88-9f89" } }, { uri: IsA, descriptors: { unicodeRange: "U+4ee8,U+4f22,U+4f43,U+4f57,U+4f5d,U+4f6f,U+4ff8,U+502d,U+507b,U+5345,U+53df,U+53fb,U+544b,U+5482,U+54a7,U+54cc,U+550f,U+5544,U+5555,U+5594,U+55e8,U+55ec,U+55ef,U+564e,U+56f9,U+5704,U+576d,U+5785,U+57ad,U+5914,U+5958,U+599e,U+59aa,U+59be,U+5a06,U+5abe,U+5ae1,U+5b40,U+5bee,U+5cbf,U+5cc4,U+5ccb,U+5d47,U+603f,U+6078,U+607d,U+607f,U+608c,U+609a,U+60fa,U+61ff,U+621b,U+622e,U+626a,U+6371,U+63ae,U+63cd,U+63d6,U+6410,U+6414,U+6421,U+6448,U+64d8,U+6710,U+6748,U+6772,U+680e,U+6954,U+69ab,U+6c68,U+6c8f,U+6ca4,U+6d2e,U+6e4e,U+6e98,U+6fe0,U+7094,U+70e9,U+7116,U+7119,U+723f,U+73c9,U+74e4,U+753e,U+7548,U+75bd,U+75cd,U+7618,U+7634,U+76c5,U+76f1,U+7708,U+7719,U+777e,U+7791,U+77b3,U+7823,U+7827,U+7830,U+7889,U+7893,U+7949,U+795c,U+79e3,U+7a14,U+7a88,U+7a95,U+7aa0,U+7afd,U+7b90,U+7bd1,U+7bfe,U+7da6,U+7ec2,U+7eef,U+7f03-7f04,U+7f08,U+7f58,U+7f61,U+7f9f,U+8174,U+8200,U+828d,U+82c4,U+82d5,U+82dc,U+82f7,U+832d,U+835a,U+840b,U+8438,U+852b,U+869d,U+86ac,U+86d0,U+86f0,U+8782,U+87a8,U+87d1-87d2,U+87e0,U+8839,U+8913,U+891b,U+8934,U+8941,U+89ca,U+89ce,U+8a07,U+8ba3,U+8bc5,U+8bcb,U+8bdb,U+8c11,U+8c15,U+8c29,U+8c32,U+8dc4,U+8dce,U+8ddb,U+8dfa,U+8e09,U+8e1d,U+8e39,U+8e42,U+8e49,U+8e4b,U+8e8f,U+8f71-8f72,U+9004,U+9036,U+9097,U+90dc,U+90e2,U+90e6,U+90ef,U+9104,U+919a,U+91b4,U+938f,U+9497,U+950f,U+9557,U+9562-9563,U+9573,U+9606,U+9649,U+972d,U+973e,U+97a3,U+97eb,U+988c,U+9894,U+98a6,U+9974,U+9977,U+997d,U+9a90,U+9a9d,U+9aef,U+9ca2,U+9ccd,U+9cdf,U+9e20,U+9e4c,U+9e6b,U+9f3e" } }, { uri: osA, descriptors: { unicodeRange: "U+4ede,U+4ee1,U+4eeb,U+4fda,U+4ffe,U+5025,U+506c,U+50f3,U+5106,U+520d,U+525c,U+52ad,U+530d,U+5310,U+539d,U+53a9,U+53fc,U+5421,U+5477,U+54e7,U+551b,U+5530,U+557e,U+5599,U+55c4,U+55d1,U+55d4,U+55df,U+55e4,U+55ea,U+5623,U+562d,U+5654,U+56eb,U+56f5,U+57a7,U+57d5,U+57dd,U+584d,U+5880,U+58ec,U+59dd,U+5a32,U+5a55,U+5a75,U+5b51,U+5b71,U+5b73,U+5cd2,U+5ce4,U+5e5b,U+5e96,U+5fd2,U+607b,U+61d1,U+634b,U+636d,U+63b3,U+63ff,U+64c0,U+661d,U+6657,U+66dc,U+67a5,U+6841,U+6867,U+6901,U+699b,U+6a47,U+6b46,U+6c21,U+6c24,U+6c35,U+6c4a,U+6c94,U+6ca3,U+6d39,U+6d63,U+6d6f,U+6d94,U+705e,U+71e7,U+726f,U+72cd,U+72de,U+72f0,U+7325,U+7350,U+7391,U+741a,U+757f,U+7583,U+75b1,U+75b4,U+75b8,U+75c2,U+75f1,U+766f,U+7699,U+7751,U+789c,U+7a17,U+7be6,U+7cb2,U+7ea3,U+7eb0,U+7ebe,U+7eeb,U+7f25,U+7f2c,U+7fb8,U+8026,U+8037,U+8153,U+8171,U+8191,U+8214,U+821b,U+8222,U+826e,U+82eb,U+830c,U+8314,U+8334,U+83d6,U+8418,U+843c,U+84ff,U+8564,U+8572,U+8616,U+866c,U+8693,U+86a3,U+86a7,U+86af,U+86b6,U+86c6,U+86ca,U+8708,U+870d,U+8759,U+8760,U+87af,U+87c6,U+8869,U+88c6,U+89d0,U+8b07,U+8baa-8bab,U+8bc2,U+8be4,U+8bf0,U+8c2a,U+8c62,U+8c89,U+8d49,U+8d6d,U+8d84,U+8d94,U+8db8,U+8dc6,U+8e2e,U+8e3d,U+8e47,U+8e7f,U+9005,U+9051,U+907d,U+9082,U+9088,U+90b0,U+90d3,U+9150,U+949c,U+94a4,U+94b9,U+94cb,U+94e0,U+9509,U+9512,U+951f,U+9534,U+9552-9553,U+965f,U+96b0,U+9791,U+9889,U+9990,U+9a9c,U+9aa7,U+9c88,U+9cb2-9cb3,U+9cb6-9cb7,U+9cc5,U+9cdc,U+9e22,U+9e2a,U+9e57,U+9e67,U+9e73,U+9e82,U+9eb8,U+9ee0,U+9f9b" } }, { uri: QsA, descriptors: { unicodeRange: "U+4eb5,U+4f09,U+4f5a,U+4f8f,U+4fce,U+4fdf,U+4fea,U+4ff3,U+500c,U+500f,U+504e,U+5088,U+52be,U+5420,U+5457,U+5499,U+549b,U+54c6,U+54d2,U+558b,U+559f,U+55bd,U+55d6,U+565c,U+567c,U+568e,U+5768,U+577b,U+57a9,U+57ed,U+59f9,U+5a11,U+5a40,U+5ae6,U+5b6a,U+5b93,U+5bb8,U+5c15,U+5c99,U+5c9c,U+5cc1,U+5d2e,U+5d4b,U+5d99,U+5e54,U+5e61,U+5fcf-5fd1,U+6002,U+6006,U+6014,U+60af,U+60c6,U+60da,U+60f4,U+621f,U+62c8,U+631b,U+631e,U+63e9,U+64b5,U+655d,U+6619,U+6635,U+6641,U+67ad,U+67b0,U+67b7,U+67e9,U+684e,U+688f,U+695d,U+696b,U+69b7,U+6a58,U+6c26,U+6d35,U+6d43,U+6d9e,U+6dd9,U+6dec,U+6e11,U+6e6e,U+6e9f,U+6ec2,U+6ee2,U+6ef9,U+6f09,U+6f66,U+6f8d,U+6fc2,U+6fc9,U+729f,U+72c8,U+73de,U+7430,U+7566,U+7579,U+75c9,U+75e2,U+75fc,U+762a,U+7638,U+7678,U+76c2,U+76f9,U+778c,U+77cd,U+77dc,U+7800,U+781d,U+782d,U+783b-783c,U+78a3,U+78ec,U+7980,U+7a23,U+7b95,U+7bdd,U+7c0c,U+7c41,U+7c91,U+7cb3,U+7cc5,U+7ecc,U+7f19,U+7fca,U+8006,U+8069,U+807f,U+80bd,U+80ed,U+814b,U+8198,U+82cb,U+82d2,U+834f,U+8360,U+847a,U+84d6,U+84e5,U+8537,U+85d0,U+8671,U+86a4,U+86ce,U+86f9,U+8703,U+8707,U+8737,U+873b,U+8815,U+8936,U+8bc3,U+8bcf,U+8bd2,U+8bd8,U+8be9,U+8c0c,U+8c0f,U+8c4c,U+8d45,U+8d5d,U+8d73,U+8e31,U+8e6d,U+8e76,U+8fe4,U+9041,U+90d7,U+9169,U+92ae,U+94a1,U+94c4,U+94c9,U+94db,U+94e7,U+9503,U+9506,U+9517,U+9528,U+9537,U+9542,U+9549,U+95fe,U+9616,U+961a,U+96c9,U+96f3,U+9701,U+970e,U+9739,U+9753,U+9798,U+98d2-98d3,U+98d9-98da,U+9968,U+996f,U+9984,U+9997,U+9acb,U+9b03,U+9c85,U+9ca8,U+9cab,U+9e49,U+9e51,U+9e66,U+9f10" } }, { uri: nsA, descriptors: { unicodeRange: "U+4e15,U+4e1e,U+4e2b,U+4eb3,U+4ec9,U+4f0e,U+4f64,U+501c,U+50a9,U+510b,U+51a2,U+51bc,U+527d,U+52d0,U+53fd,U+5429,U+542e,U+5486,U+54af,U+5506,U+5511,U+5522,U+552c,U+556c,U+55b3,U+55d2,U+55e6,U+55fd,U+561f,U+5639,U+5659,U+5662,U+5693,U+572a,U+5892,U+598a,U+5992,U+59a9,U+5a20,U+5ae3,U+5b17,U+5b7d,U+5d34,U+5d3d,U+5d4a,U+5d82,U+5e1a-5e1b,U+5ea5,U+5f0b,U+5f77,U+5fd6,U+5fff,U+6026,U+6035,U+6063,U+60b4,U+60bb,U+60ee,U+612b,U+6194,U+61ca,U+61e6,U+61f5,U+620a,U+6248,U+62a1,U+62d7,U+6376,U+637b,U+652b,U+65bc,U+65cc,U+65ce,U+65d6,U+664c,U+665f,U+6666,U+6684,U+66b9,U+6773,U+6777,U+6787,U+67de,U+6845,U+693d,U+6994,U+6a35,U+6d54,U+6d5c,U+6d8e,U+6dd6,U+6eb4,U+6f2a,U+6f78,U+704f,U+70ec,U+7118,U+714a,U+7172,U+71b9,U+724d,U+728a,U+7337,U+733e,U+7396,U+73b7,U+73cf,U+7428,U+742c,U+742e,U+74ee,U+74f4,U+7525,U+753a,U+7572,U+75d4,U+765c,U+768e,U+7762,U+777d,U+77fd,U+7825,U+7837,U+78b4,U+795f,U+79ed,U+7a1e,U+7b06,U+7b20,U+7ba9,U+7bab,U+7c7c,U+7cbd,U+7cdc,U+7ec9,U+7ef6,U+7f30,U+7f42,U+7f44,U+7f54,U+7f94,U+8004,U+800b,U+8019,U+809b,U+80ae,U+80c4,U+80f1,U+8146,U+816e,U+817c,U+81c0,U+81fc,U+81fe,U+822b,U+830f,U+832f,U+8340,U+8365,U+8385,U+8392,U+83a0,U+8424,U+84af,U+869c,U+8713,U+8717-8718,U+87c0,U+87cb,U+87fe,U+8821,U+8902,U+89d1,U+8bb9,U+8c12,U+8d32,U+8d53,U+8df7,U+8e7c,U+8f7c,U+8f95,U+8fab,U+9052,U+905b,U+9095,U+909d,U+90c5,U+911e,U+9122,U+916a,U+919b,U+948e,U+9492,U+949a,U+94b5,U+94bc,U+94c6,U+94f1,U+9502,U+9511,U+9536,U+956f-9570,U+9602,U+9621,U+9631,U+998b,U+99a5,U+9a81,U+9a9e,U+9ebe,U+9f8b" } }, { uri: rsA, descriptors: { unicodeRange: "U+4f2b,U+4f3d,U+4fac,U+5043,U+5055,U+5140,U+5156,U+51cb,U+5243,U+531d,U+536f,U+53a5,U+53ae,U+53f1,U+541d,U+5431,U+547b,U+5492,U+5494,U+54a4,U+54aa,U+54ce,U+54fd,U+5509,U+5520,U+553e,U+557b,U+55c5,U+55e1,U+55f7,U+5608,U+5636,U+563b,U+5773,U+57a0,U+5811,U+587e,U+58d5,U+59e3,U+5a29,U+5a6a,U+5a76,U+5a7a,U+5ac9,U+5b62,U+5b95,U+5c49,U+5c8c,U+5cab,U+5cb7,U+5d02,U+5d58,U+5e44,U+5e7a,U+5eff,U+5f29,U+5f89,U+5f9c,U+5fa8,U+6005,U+6043,U+60b8,U+60d8,U+60ec,U+60f0,U+6115,U+618e,U+630e,U+637a,U+6390,U+63ac,U+63b0,U+64de,U+6525,U+6538,U+65ee-65ef,U+6631,U+6636,U+6654,U+677c,U+67b8,U+67d8,U+683e,U+6886,U+68b5,U+692d,U+6963,U+6979,U+6988,U+6b59,U+6b9a,U+6c69,U+6c74,U+6cae,U+6ce0,U+6cef,U+6d95,U+6dc5,U+6dde,U+6de6,U+6dfc,U+6ea7,U+6f15,U+6f29,U+7096,U+70c3,U+7131,U+715c,U+7166,U+7266,U+7317,U+731d,U+7329,U+73e9,U+7425,U+7455,U+7490,U+74ef,U+7519,U+75b5,U+75b9,U+75de,U+7656,U+7663,U+7691,U+7729,U+77fe,U+783e,U+787c,U+795a,U+7a79,U+7abf,U+7b3a,U+7b4f,U+7b60,U+7b75,U+7b8d,U+7bb4,U+7bd3,U+7be1,U+7cbc,U+7edb,U+7f1c,U+7f8c,U+7fb2,U+7fb9,U+7fce,U+7ff1,U+810d,U+81c6,U+82a5,U+82aa,U+82de,U+8317,U+8343,U+835e,U+8364,U+836a,U+853a,U+8543,U+854a,U+8559,U+8568,U+85b0,U+85b9,U+864f,U+86e4,U+8715,U+8845,U+8884,U+88e8,U+88f1,U+8983,U+8be1,U+8c1f,U+8c27,U+8c5a,U+8c82,U+8d58,U+8dbe,U+8f98,U+9035,U+9074,U+90a1,U+9149,U+9157,U+93d6,U+949d,U+94c2,U+94e3-94e4,U+95eb,U+95f0,U+9611,U+9619,U+9642,U+968d,U+9706,U+970f,U+97ed,U+988a,U+9893,U+98e8,U+9a77,U+9a87,U+9aa1,U+9abc,U+9cdd,U+9e2f,U+9e33,U+9e44,U+9e5c,U+9e9d,U+9edd" } }, { uri: ssA, descriptors: { unicodeRange: "U+4f58,U+4f6c,U+4f70,U+4fd0,U+5014,U+51bd,U+524c,U+5315,U+5323,U+535e,U+540f,U+542d,U+545b,U+548e,U+549a,U+54ab,U+54fc,U+5567,U+556a,U+5600,U+5618,U+563f,U+5669,U+56f1,U+56ff,U+573b,U+574d,U+579b,U+57b8,U+57c2,U+586c,U+58f9,U+595a,U+598d,U+5993,U+5996,U+59d7,U+5b7a,U+5ba6,U+5c4e,U+5c96,U+5ce5,U+5eb6,U+5f08,U+5f99,U+602f,U+6059,U+606c,U+607a,U+60ed,U+61a9,U+620c,U+6249,U+62a8,U+62c4,U+62ed,U+62fd,U+6342,U+6345,U+6396,U+63a3,U+6402,U+6413,U+642a,U+6487,U+64a9,U+64ac,U+64ae,U+64b7,U+659f,U+65a1,U+667e,U+66f3,U+67e0,U+69db,U+69df,U+6aac,U+6b86,U+6c50,U+6c5e,U+6c76,U+6c85,U+6c8c,U+6cde,U+6d19,U+6d52,U+6da7,U+6db8,U+6e1a,U+6e25,U+6e4d,U+6e5f,U+6ec1,U+6f31,U+6f7a,U+6fa7,U+6fe1,U+701b,U+70ab,U+70f7,U+717d,U+71a8,U+7252,U+72c4,U+72e1,U+7315,U+736d,U+73ae,U+73c0,U+73c2,U+740f,U+75a4,U+7600-7601,U+768b,U+76bf,U+76d4,U+7728,U+772f,U+776c,U+77a0,U+77b0,U+77f8,U+783a,U+78d0,U+78fa,U+7977,U+7a37,U+7a92,U+7afa,U+7b71,U+7b94,U+7cef,U+7f28,U+7fe1,U+808b,U+80e5,U+80eb,U+8110,U+8113,U+812f,U+814c,U+81c3,U+8235,U+82d4,U+8309,U+83c1,U+8431,U+8469,U+84bf,U+84d3,U+84df,U+84e6,U+8511,U+8638,U+86c0,U+86db,U+86fe,U+8757,U+8822,U+8882,U+8885,U+8892,U+88f3,U+892a,U+8ba5,U+8bd9,U+8be0,U+8be7,U+8bfd,U+8c1a,U+8d4a,U+8d4e,U+8d66,U+8dda,U+8e0c,U+8e52,U+8e74,U+8e87,U+8f76,U+8fc2,U+8fe6,U+900d,U+9068,U+90ac,U+90b3,U+90b8,U+90e7,U+9119,U+9131,U+915a,U+916e,U+94b4,U+94d0,U+94e2,U+94ec,U+94ff,U+9522,U+9535,U+9556,U+965b,U+96f9,U+9774,U+9981,U+998d,U+998f,U+9a6e,U+9a7f,U+9a8a,U+9b13,U+9c9f,U+9e3e,U+9e43,U+9e6d,U+9e8b,U+9e92,U+9edb,U+9eef" } }, { uri: lsA, descriptors: { unicodeRange: "U+4e10,U+4e56,U+4e98,U+4ec3,U+4f3a,U+4f5f,U+4f88,U+4f97,U+4fa5,U+4fe8,U+504c,U+5197,U+52fa,U+5364,U+53e8,U+5406,U+543c,U+545c,U+5471,U+5480,U+5495,U+54b3,U+54df,U+54e6,U+54ee,U+557c,U+5583,U+55dc,U+55e3,U+566c,U+592f,U+5944,U+5983,U+59ca,U+59e5,U+5a13,U+5a7f,U+5b09,U+5bd0,U+5e4c,U+5eb5,U+5f1b,U+5f3c,U+608d,U+60cb,U+61a7,U+61ac,U+61cb,U+6233,U+62a0,U+62e7,U+62ee,U+62f4,U+62f7,U+634e,U+6382,U+63c9,U+63ea,U+6400,U+645e,U+6482,U+6556,U+6593,U+6615,U+664f,U+66e6,U+672d,U+675e,U+67da,U+6805,U+6808,U+6868,U+68a2,U+695e,U+69ad,U+6a80,U+6a90,U+6b83,U+6be1,U+6c30,U+6cad,U+6cb1,U+6cf1,U+6d31,U+6d93,U+6dae,U+6dbf,U+6dc6-6dc7,U+6e0d,U+6e32,U+6e3a,U+6e85,U+6eba,U+6f3e,U+6f5e,U+6f7c,U+6fee,U+71ee,U+722a,U+72b7,U+72e9,U+73ba,U+73d1,U+7409,U+7435-7436,U+7459-745a,U+747e,U+7487,U+74e2,U+7504,U+752c-752d,U+7599,U+759f,U+75a1,U+75ca,U+75f0,U+761f,U+7629,U+777f,U+7785,U+77a5,U+77bf,U+78d5,U+7934,U+7940,U+79a7,U+7b19,U+7c38,U+7c95,U+7cb1,U+7ce0,U+7eca,U+7ef7,U+7f2b,U+7f81,U+7fcc,U+8046,U+8148,U+8165,U+819b,U+81ba,U+828b,U+82ae,U+82b7,U+82d3,U+8301,U+830e,U+831c,U+8338,U+837c,U+8393,U+8398,U+83ba,U+83e0,U+83e9,U+853c,U+8654,U+86df,U+8712,U+873f,U+874e,U+8783,U+8859,U+88a4,U+8925,U+8bb7,U+8bff,U+8c19,U+8c1b,U+8c24,U+8c2c,U+8d61,U+8db4,U+8e6c,U+8f8a,U+8fe5,U+8ff8,U+901e,U+90f4,U+912f,U+9163,U+9170,U+91dc,U+949b,U+94a8,U+94b3,U+94c0,U+94e8,U+9525,U+9530,U+9539,U+954c-954d,U+9550,U+955b,U+962a,U+9685,U+96cc,U+9776,U+988d,U+9975,U+9985,U+9a6f,U+9aa5,U+9ab8,U+9c7f,U+9ca4,U+9cb8,U+9e25,U+9e35,U+9e4a" } }, { uri: csA, descriptors: { unicodeRange: "U+4ea2,U+4ea5,U+4f36,U+4f84,U+4f8d,U+501a,U+5029,U+516e,U+51a5,U+51c4,U+51f8,U+5201,U+527f,U+5321,U+5352,U+5366,U+53e9,U+54c7,U+5632,U+5676,U+56b7,U+56bc,U+56da,U+56e4,U+5703,U+5729,U+5742,U+57a2-57a3,U+5815,U+58d1,U+5919,U+592d,U+5955,U+5a05,U+5a25,U+5a34,U+5b70,U+5b75,U+5bdd,U+5bf0,U+5c41,U+5c79,U+5c91,U+5c94,U+5ce6,U+5ced,U+5d69,U+5dc5,U+5e16,U+5e27,U+5f27,U+5f95,U+5ffb,U+6020,U+604d,U+6055,U+60e6,U+60eb,U+6123,U+618b,U+61a8,U+620d,U+62c7,U+62ce,U+62d9,U+631f,U+634d,U+6452,U+6479,U+64ce,U+64d2,U+655b,U+660a,U+6726,U+67c4,U+6809,U+6853,U+68e3,U+68f1,U+68fa,U+693f,U+6942,U+6995,U+69a8,U+69b4,U+6a71,U+6b89,U+6bcb,U+6bd3,U+6bd9,U+6c40,U+6cf8,U+6cfe,U+6d85,U+6da3,U+6daa,U+6e0e,U+6e43-6e44,U+6f88,U+7078,U+7099,U+70bd,U+70d9,U+70fd,U+7109,U+7184,U+7239,U+733f,U+73f2,U+748b,U+749c,U+749e,U+759a,U+75d2,U+75eb,U+7620,U+766b,U+7693,U+76cf,U+7738,U+773a,U+776b,U+778e,U+77aa,U+7852,U+78be,U+7948,U+795b,U+7960,U+796f,U+79ba,U+7a20,U+7a96,U+7aa5,U+7b03,U+7b28,U+7b50,U+7b77,U+7bc6,U+7bf1,U+7c27,U+7d0a,U+7ead,U+7ec5,U+7ee2,U+7ef0,U+7efd,U+7f0e,U+7f2e,U+7f79,U+7f9a,U+8098,U+80da,U+80e7,U+80f0,U+80f3,U+80fa,U+818a,U+81e7,U+8237-8238,U+8299,U+82b8,U+82ce,U+837b,U+83bd,U+83cf,U+8426,U+8475,U+85c9,U+85d5,U+85dc,U+85e9,U+871a,U+8747,U+8749,U+888d,U+8910,U+891a,U+8bb4,U+8be3,U+8bec,U+8bf2,U+8c06,U+8c0d,U+8d31,U+8d48,U+8de4,U+8e1e,U+8e4a,U+8e66,U+8f84,U+8f97,U+9083,U+90e1,U+9165,U+91c9,U+94b0,U+94f5,U+9504,U+9532,U+956d,U+95f5,U+95fa,U+9668,U+9698,U+96bd,U+9704,U+9773,U+9890,U+996a,U+997a,U+9a74,U+9a8b,U+9cc4,U+9ccc" } }, { uri: dsA, descriptors: { unicodeRange: "U+4ea8,U+4f1e,U+4f51,U+4f63,U+4f7c,U+4f83,U+4fa0,U+4fd1,U+4ffa,U+5018,U+5026,U+508d,U+50bb,U+50f5,U+50fb,U+5162,U+5319,U+5320,U+538c,U+5413,U+541f,U+5475,U+54bd,U+54d1,U+5589,U+5598,U+575f,U+57ae,U+57e0,U+5937,U+5974,U+5978,U+59ae,U+5a1f,U+5a49,U+5ab3,U+5b99,U+5b9b,U+5ba0,U+5be1,U+5be5,U+5c09,U+5c27,U+5de2,U+5e9a,U+5f26,U+5f8a,U+5f98,U+6021,U+606d,U+60bc,U+60d5,U+60e7,U+611a,U+614c,U+6254,U+626f,U+6292,U+6296,U+62b9,U+62e2,U+631a,U+631d,U+6320,U+6346,U+63ba,U+6467,U+64bc,U+658b,U+663c,U+6643,U+6652,U+6656,U+6687,U+66d9,U+66dd,U+66f0,U+673d,U+67ab,U+6816-6817,U+68a7,U+68ad,U+68cd,U+68e0,U+6986,U+69fd,U+6b47,U+6bd7,U+6c1f,U+6c2e-6c2f,U+6cbe,U+6de4,U+6e1d,U+6e83,U+6e9c,U+6ed4-6ed5,U+6f4d,U+70f9,U+7130,U+716e,U+718f,U+71ac,U+71e5,U+72fc,U+731c,U+7334,U+73ca,U+7422,U+7426,U+745f,U+7470,U+75af,U+75f4,U+762b,U+763e,U+7696,U+7737,U+7741,U+77a7,U+77bb,U+77ee,U+785d,U+788c,U+78ca,U+7901,U+796d,U+7985,U+79fd,U+7a3c,U+7a57,U+7a74,U+7b5b,U+7caa,U+7cb9,U+7cd5,U+7eac,U+7eb6,U+7ed1,U+7ee5,U+7f20,U+7f2a,U+7f38,U+7f69,U+7fa1,U+8018,U+8038,U+803f,U+804b,U+80a2,U+80be,U+80d6,U+817a,U+81fb,U+820c,U+82ad,U+82af,U+82bd,U+8327,U+8354,U+835f,U+8367,U+836b,U+840c,U+841d,U+8471,U+849c,U+84b2,U+84c9,U+8517,U+851a,U+8549,U+8681,U+8721,U+8776,U+88d9,U+88f9,U+89c5,U+8c1c,U+8c34,U+8d81,U+8d9f,U+8e0a,U+8e72,U+8eb2,U+8fed,U+901b,U+902e,U+906e,U+9091,U+90aa,U+90af,U+915d,U+9171,U+946b,U+9489,U+9499,U+94a5,U+9508,U+9524,U+952d,U+9551,U+9576,U+95f7,U+9600,U+96b6,U+96c0,U+9756,U+97f6,U+98a0,U+98a4,U+997f,U+9a73,U+9a86,U+9ad3,U+9e3d,U+9ed4" } }, { uri: DsA, descriptors: { unicodeRange: "U+4e4d,U+4e5e,U+4ec7,U+4ed5,U+50da,U+50e7,U+515c,U+51a4,U+51ff,U+5203,U+5254,U+5300,U+533e,U+5375,U+53ee,U+5435,U+543b,U+5455,U+548b,U+548f,U+54d7,U+54fa,U+5578,U+5587,U+55a7,U+560e,U+5760,U+576f,U+5777,U+5830,U+58a9,U+5962,U+59e8,U+5a07,U+5a23,U+5a3c,U+5b5a,U+5bb5,U+5bc5,U+5bde,U+5c7f,U+5cb1,U+5ce8,U+5cea,U+5d29,U+5d4c,U+5e18,U+5f57,U+5f5d,U+5f87,U+5ff1,U+6016,U+601c,U+6064,U+6177,U+61d2,U+625b,U+62e3,U+62f1,U+634f,U+63a0,U+6401,U+6405,U+6495,U+64c2,U+6512,U+6577,U+6590,U+65a7,U+65a9,U+65f7,U+6627,U+6655,U+6714,U+6795,U+67d1,U+67ff,U+68b3,U+68d5,U+68d8,U+6930,U+6960,U+6977,U+69bb,U+69d0,U+6a31,U+6b7c,U+6bb4,U+6c22,U+6c72,U+6c79,U+6c7e,U+6c81,U+6c93,U+6ca5,U+6cbc,U+6ce3,U+6cfb,U+6d3c,U+6da9,U+6df3,U+6e2d,U+6eaf,U+6ec7,U+6f13,U+6f33,U+6f62,U+6fa1,U+7011,U+707c,U+708a,U+70c1,U+70d8,U+70eb,U+711a,U+7194,U+7281,U+7316,U+7357,U+7384,U+7405,U+742a,U+745b,U+7574,U+7578,U+75ea,U+7682,U+7792,U+77d7,U+77e9,U+77eb,U+77f6,U+780c,U+78c5,U+7941,U+79e4,U+7a1a,U+7a9c,U+7ad6,U+7b5d,U+7bf7,U+7c07,U+7c3f,U+7c9f,U+7ca5,U+7cdf,U+7e82,U+7eab,U+7ece,U+7eda,U+7f09,U+7f15,U+7f9e,U+7fdf,U+7fe9,U+803b,U+803d,U+80aa,U+80b4,U+813e,U+8155,U+817b,U+819d,U+821c,U+82b9,U+82df,U+82ef,U+8304,U+83b9,U+8446,U+853d,U+85af,U+85fb,U+8650,U+865e,U+86d9,U+86ee,U+8700,U+8862,U+889c,U+88d4,U+88f8,U+895f,U+8a79,U+8bb3,U+8bb6,U+8bc0,U+8beb,U+8bf5,U+8c23,U+8c79,U+8d1e,U+8dcb,U+8e29,U+8e44,U+8e81,U+8eac,U+8eaf,U+8f8d,U+9050,U+90f8,U+914b,U+948a,U+94be,U+94ee,U+950c,U+9540,U+962e,U+9647,U+9661,U+9699,U+96cf,U+9716,U+9761,U+97a0,U+97e7,U+9a7c,U+9a8f,U+9ae6,U+9cd6,U+9e26" } }, { uri: hsA, descriptors: { unicodeRange: "U+4fa3,U+4fae,U+4fd8,U+4fef,U+50a3,U+5189,U+5195,U+51db,U+51f3,U+51f9,U+5220,U+5228,U+5288,U+52ff,U+532e,U+533f,U+5351,U+53db,U+53ed,U+5450,U+5484,U+5490,U+54c9,U+54e9,U+5501,U+5507,U+5543,U+55d3,U+56a3,U+575e,U+589f,U+5984,U+59ec,U+5a04,U+5a36,U+5a77,U+5a9a-5a9b,U+5ab2,U+5ac2,U+5ad6,U+5bc7,U+5c2c,U+5c34,U+5c51,U+5cd9,U+5d0e,U+5deb,U+5e3c,U+5e87,U+5ed3,U+5f13,U+5f64,U+5fe1,U+606a,U+6096,U+60df,U+60f6,U+60f9,U+6151,U+620e,U+6241,U+6252,U+6273,U+627c,U+6289,U+62c2,U+62cc,U+62ef,U+6361,U+6363,U+63b7,U+63e3,U+6518,U+66ae,U+6756,U+6789,U+6813,U+6829,U+6862,U+6866,U+6893,U+6897,U+690e,U+6984,U+69cc,U+6a1f,U+6a44,U+6a59,U+6ba1,U+6c13,U+6c90,U+6ca6,U+6cbd,U+6ccc,U+6cd3,U+6cd7,U+6d4a,U+6d4f,U+6d5a,U+6d9f,U+6da1,U+6dcc,U+6ea5,U+6ee4,U+6ee6,U+6f2f,U+6f8e,U+701a,U+7095,U+709c,U+70af,U+70db,U+70e8,U+714e,U+715e,U+71a0,U+71ce,U+7235,U+7280,U+72d0,U+72f8,U+73ab,U+7410,U+745c,U+7480,U+74a7-74a8,U+74e3,U+75ae,U+75f9,U+76b1,U+76ce,U+7736,U+77e2-77e3,U+781a,U+789f,U+797a,U+79be,U+79c3,U+79c6,U+79f8,U+7a8d,U+7a98,U+7aa6,U+7aff,U+7b1b,U+7cd9,U+7d6e,U+7ede,U+7eee,U+7f00,U+7f24,U+7f2d,U+7fd8,U+800d,U+8116,U+8151,U+81b3,U+8205,U+82c7,U+82db,U+832c,U+8335,U+8339,U+8386,U+846b,U+8587,U+8611,U+8682,U+868a,U+868c,U+8774,U+88d8,U+88f4,U+8912,U+8b6c,U+8bbd,U+8c0e,U+8c41,U+8d26,U+8d3b-8d3c,U+8d50,U+8dea,U+8e35,U+8f99,U+8fe2,U+8fe9,U+9017,U+914c,U+916f,U+9175-9176,U+918b,U+94a0,U+94ae,U+94ce,U+94f2,U+951a,U+952f,U+9541,U+9640,U+9672,U+968b,U+96cd,U+96ef,U+9713,U+97ec,U+9885,U+9992,U+9a6d,U+9a79,U+9a85,U+9cbb,U+9cd7,U+9cde,U+9e93,U+9f9f" } }, { uri: wsA, descriptors: { unicodeRange: "U+4e11,U+4ed7,U+4fcf,U+4fe9,U+4fed,U+50ac,U+50b2,U+5112,U+5180,U+5188,U+51f6,U+522e,U+5265,U+52cb,U+52df,U+5349,U+5367,U+5378,U+537f,U+5395,U+5398,U+53d4,U+543e,U+5440,U+5446,U+54b8,U+5565-5566,U+5580,U+55bb,U+56ca,U+572d,U+573e,U+574e,U+5782-5784,U+58f3,U+5938-5939,U+5948,U+594e,U+5a1c,U+5a74,U+5ae9,U+5b55,U+5b5c,U+5bb0,U+5bd3,U+5bf8,U+5c3f,U+5d14,U+5d2d,U+5df7,U+5dfe,U+5e05-5e06,U+5e1c,U+5e62,U+5e7b,U+5e7d,U+5ed6,U+5f2f,U+5f66,U+5f6c,U+5fa1,U+604b,U+609f,U+60a6,U+60e8,U+6101,U+6124,U+6127,U+6148,U+61be,U+6247,U+62d8,U+62da,U+633d,U+635e,U+6367,U+6380,U+638f,U+63a9,U+63fd,U+641c,U+64e6,U+655e,U+6572,U+6591,U+65a5,U+6691,U+6735,U+67a2-67a3,U+67ef,U+680b,U+6876,U+6905,U+6a0a,U+6a61,U+6b79,U+6bb7,U+6bbf,U+6c41,U+6c55,U+6c83,U+6c9b,U+6ca7,U+6cfc,U+6d46,U+6d51,U+6d74,U+6d9d,U+6daf,U+6dc0,U+6deb,U+6e17,U+6e24,U+6e89,U+6ea2,U+6ef4,U+6f6d,U+707f,U+70b3,U+70e4,U+70ef,U+710a,U+722c,U+725f,U+7261,U+72ee,U+72f1,U+730e,U+732b,U+7433,U+7538,U+75bc,U+7624,U+7709,U+7750,U+7779,U+7802,U+7898,U+78a7,U+78b1,U+78cb,U+78f7,U+7984,U+7a83,U+7aed,U+7b3c,U+7b4b,U+7c92,U+7c98,U+7ca4,U+7eb9,U+7ee3,U+7ef3,U+7ef5,U+7f05,U+7f55,U+7f62,U+7fc1,U+7fd4,U+7fe0,U+8042,U+806a,U+80a0,U+80a4,U+80c3,U+8102,U+8106,U+814a,U+8154,U+8247,U+8258,U+82cd,U+8328,U+832b,U+8389,U+83ca,U+845b,U+846c,U+84b8,U+8574,U+859b,U+8680,U+8695,U+86c7,U+8702,U+886c,U+8896,U+88b1,U+88e4,U+8bc8,U+8c10,U+8c26,U+8c28,U+8c2d,U+8d4c,U+8d63,U+8f67,U+8f74,U+8fc4,U+9006,U+9063,U+90a2,U+90b1,U+90c1,U+9177,U+9189,U+9493,U+949e,U+94fe,U+9610,U+961c,U+96a7,U+96fe,U+978d,U+97f5,U+9888,U+997c,U+9a84,U+9b3c,U+9b44-9b45,U+9b54,U+9e64,U+9f0e,U+9f9a" } }, { uri: FsA, descriptors: { unicodeRange: "U+4e19,U+4e38,U+4e53,U+4e7e,U+4e9f,U+4ec6,U+4f50,U+4fde,U+502a,U+5154,U+517d,U+51d1,U+51f0,U+5239,U+5256,U+52c9,U+52fe,U+5308,U+532a,U+535c,U+5384,U+53a2,U+53a8,U+53c9,U+53e0,U+5496,U+54ac,U+54c0,U+54c4,U+54e8,U+5561,U+5582,U+561b,U+5631,U+566a,U+5764,U+576a,U+5792,U+57ab,U+584c,U+5885,U+58f6,U+59a8,U+5acc,U+5bc2,U+5c38-5c39,U+5c60,U+5c6f,U+5c82,U+5c90,U+5d16,U+5dcd,U+5e37,U+5e90,U+5eb8,U+5f6a,U+5fcc,U+6012,U+6068,U+6073,U+607c,U+6094,U+6109,U+621a,U+626e,U+6284,U+62d0,U+62e6,U+62fe,U+6321,U+6328,U+632b,U+6349,U+6454,U+65ed,U+660f,U+6674,U+66a8,U+6749,U+674f,U+6760,U+67af,U+6850,U+6854,U+6869,U+68a8,U+68d2,U+68f5,U+6912,U+6b49,U+6b6a,U+6bef,U+6c28,U+6c5d,U+6c82,U+6cab,U+6cb8,U+6cc4,U+6cf5,U+6d47,U+6d78,U+6da4,U+6dc4,U+6dcb,U+6df9,U+6e0a,U+6e23,U+6e5b,U+6eb6,U+6f06,U+6f47,U+6f84,U+6f9c,U+6fd2,U+7076,U+70ac,U+7199,U+723d,U+72ac,U+72ed,U+7476,U+7529,U+752b,U+754f,U+7554,U+75d5,U+7626,U+76ef,U+7720,U+7766,U+7784,U+77ac,U+780d,U+7838,U+7845,U+786b,U+78b3,U+7978,U+79b9,U+79c9,U+79e7,U+7a3d,U+7a84,U+7a9f,U+7b0b,U+7b52,U+7c7d,U+7f1a,U+7fc5,U+7ff0,U+804a,U+8086-8087,U+808c,U+809a,U+80ba,U+810a,U+8180,U+818f,U+81c2,U+81ed,U+8231,U+8292,U+829c,U+82a6,U+82d1,U+8346,U+838e,U+839e,U+83c7,U+83f1,U+8403,U+840e,U+8513,U+857e,U+85e4,U+867e,U+871c,U+87ba,U+87f9,U+884d,U+8944,U+8a93,U+8c05,U+8d2c,U+8d2e,U+8d42-8d43,U+8dfb,U+8e22,U+8eba,U+8f69,U+8f9c,U+8fa3,U+8fa8,U+8fb1,U+900a,U+9038,U+903b,U+9042,U+904f,U+90b5,U+90dd,U+9102,U+9187,U+94a7,U+94c5,U+9523,U+95f8,U+95fd,U+960e,U+964b-964c,U+96c1,U+9709,U+971c,U+97ad,U+9882,U+9965,U+9976,U+9988,U+99a8,U+9a82,U+9a9a,U+9b41,U+9c8d,U+9e45,U+9e70,U+9e9f,U+9f3b,U+9f7f" } }, { uri: psA, descriptors: { unicodeRange: "U+4e08,U+4e18,U+4e1b,U+4e22,U+4e27,U+4e32,U+4e52,U+4e73,U+4ead,U+4ed4,U+4ed9,U+4ef0,U+4fa6,U+5076,U+5179,U+51bb,U+51c9,U+51ef,U+51fd,U+524a,U+526a,U+529d,U+52ab,U+5306,U+5339,U+53d9,U+540a,U+5410,U+541e,U+5439,U+54b1,U+54ed,U+5564,U+558a,U+55b7,U+5634,U+574a,U+5751,U+57a6,U+57cb,U+57d4,U+5824,U+582a,U+5835,U+5858,U+5893,U+58e4,U+5951,U+5986,U+59da,U+59fb,U+59ff,U+5a03,U+5a46,U+5ac1,U+5b5d,U+5bfa,U+5c18,U+5c3a,U+5c48,U+5c4f,U+5c61,U+5cb3,U+5d1b,U+5e15,U+5e3d,U+5e99,U+5e9e,U+5eca,U+5f0a,U+5f17-5f18,U+5f25,U+5f7c,U+5fcd,U+6028,U+60a0,U+60ac,U+60d1,U+614e,U+6155,U+6168,U+61c8,U+6208,U+6212,U+6251,U+629a-629b,U+62ab-62ac,U+62fc,U+6323,U+632a,U+63d2,U+643a,U+6491-6492,U+649e,U+64b0,U+64c5,U+659c,U+6614,U+662d,U+6664,U+6670,U+6676,U+6746,U+67cf,U+67d4,U+682a,U+6843,U+6846,U+68da,U+6b3a,U+6b67,U+6c27,U+6c5b,U+6c64,U+6c70,U+6caa,U+6cca,U+6ce1,U+6d12,U+6d45,U+6dd1,U+6dd8,U+6e34,U+6e7f,U+6ee5,U+6f02,U+7092,U+70c2,U+70e6,U+7115,U+7237,U+7272,U+727a,U+72c2,U+739b,U+73b2,U+743c,U+751c,U+758f,U+75b2,U+7686,U+76c6,U+76d2,U+76fc,U+775b,U+77a9,U+7816,U+788e,U+7897,U+78b0,U+79bd,U+7a0d,U+7a91,U+7a9d,U+7ae3,U+7bad,U+7cca,U+7d2b,U+7eb1,U+7f06,U+7f14,U+7f1d,U+7f50,U+7ffc,U+8036,U+80bf,U+80c1,U+80ce,U+80f8,U+8109,U+810f,U+8170,U+8179,U+819c,U+821f,U+8230,U+8236,U+8273,U+829d,U+82f9,U+8305,U+8350,U+83b2,U+83cc,U+8404,U+840d,U+8427,U+8482,U+8679,U+8854,U+886b,U+8bbc,U+8be6,U+8c31,U+8c6b,U+8d4b,U+8dcc,U+8e2a,U+8e48,U+8f90,U+8fb0,U+9022,U+903c,U+903e,U+9065,U+916c,U+917f,U+94a9,U+94c3,U+94dd,U+94ed,U+9510,U+953b,U+96c7,U+970d,U+9738,U+9877,U+987d,U+989c,U+98d8,U+9a70,U+9a91,U+9aa4,U+9b42,U+9b4f,U+9e2d,U+9e3f,U+9e7f,U+9f20" } }, { uri: msA, descriptors: { unicodeRange: "U+4e59,U+4ed3,U+4f0f,U+4f38,U+4f69,U+4fa7,U+4faf,U+4ff1,U+5077,U+5085,U+5144,U+5151,U+51af,U+51b6,U+51cc,U+523a,U+5251,U+5269,U+5272,U+52d8,U+5353,U+5389,U+53f9,U+5401,U+5415,U+541b,U+54f2,U+5524,U+554a,U+559d,U+5609,U+5740,U+575d,U+5806,U+5821,U+586b,U+5915,U+594f,U+5960,U+5999,U+59a5,U+59b9,U+59c6,U+59d1,U+59dc,U+5b5f,U+5b64,U+5b87,U+5bb4,U+5bbf,U+5c16,U+5c1d,U+5c3e,U+5c9a,U+5ca9,U+5cad,U+5cfb,U+5de1,U+5de7,U+5de9,U+5ef7,U+5f04,U+5f70,U+5f79,U+5fc6,U+602a,U+6050,U+6052,U+6070,U+6084,U+60b2,U+60dc,U+60e9,U+6167,U+6170,U+61c2,U+6270,U+6291,U+62b1,U+62bc,U+62dc,U+62df,U+62f3,U+6324,U+633a,U+6377,U+6398,U+63cf,U+640f,U+642c-642d,U+6458,U+6478,U+6500,U+654c,U+6566,U+658c,U+65c1,U+65cb,U+65e8,U+65ec,U+6696-6697,U+6734,U+679a,U+679d,U+67dc,U+67f3-67f4,U+680f,U+683d,U+684c,U+68af,U+699c,U+6bc1,U+6c0f,U+6c1b,U+6c57,U+6c6a,U+6d3d,U+6d6e,U+6d82,U+6db5,U+6dee,U+6e58,U+6eaa,U+6ecb,U+6ede,U+6ee9,U+6f0f,U+6f20,U+6f58,U+704c,U+7070,U+70b8,U+718a,U+7238,U+7262,U+7275,U+72b9,U+72d7,U+72e0,U+741b,U+7434,U+7483,U+74f6-74f7,U+75ab,U+764c,U+7761,U+7855,U+7891,U+78c1,U+79d2,U+7a00,U+7a3b,U+7c97,U+7ea4,U+7eb2,U+7ed2,U+7eea,U+7ef8,U+7f18,U+7fbd,U+8000,U+8010,U+8096,U+809d,U+80a9,U+817f,U+81e3,U+8206,U+8212,U+82ac,U+8302,U+8361,U+8377,U+83f2,U+8461,U+848b,U+84ec,U+8521,U+85aa,U+8870,U+8877,U+8881,U+888b,U+88ad,U+88c2,U+8986,U+8bd1,U+8bf1,U+8d24,U+8d2a,U+8d3e-8d3f,U+8d41,U+8d56,U+8d64,U+8d6b,U+8e0f,U+8f70,U+8f85,U+8f88,U+8fa9,U+9003,U+901d,U+90b9,U+90ce,U+94a6,U+94f8,U+9505,U+95ea,U+95ef,U+95f2,U+95f9,U+9601,U+9605,U+9634,U+966a,U+9677,U+9690,U+9694,U+96d5,U+971e,U+9896-9897,U+9972,U+9a71,U+9a76,U+9a7e,U+9e1f,U+9e23" } }, { uri: ksA, descriptors: { unicodeRange: "U+4e01,U+4e43,U+4ea6,U+4ef2,U+4eff,U+4f26,U+4f2a,U+4f2f,U+4f5b,U+4fa8,U+4fca,U+4fd7,U+5021,U+504f,U+5141,U+51c0,U+51dd,U+51e4,U+51ed,U+5200,U+5237,U+5427,U+5448,U+54a8,U+5706,U+5708,U+5723,U+575b,U+57c3,U+5899,U+58a8,U+58c1,U+5976,U+5988,U+59bb,U+59d0,U+59d3,U+5a18,U+5a31,U+5a92,U+5b54,U+5b85,U+5baa-5bab,U+5bc4,U+5bd2,U+5be8,U+5bff,U+5c65,U+5d07,U+5e1d,U+5e78,U+5e7c,U+5f03,U+5f1f,U+5f39,U+5f6d,U+5f92,U+5faa,U+5fbd,U+5fe7,U+5ffd,U+60a8,U+60ef,U+6108,U+6162,U+622a,U+6234,U+626b,U+626d,U+62c6,U+62d2,U+62d4,U+62d6,U+62e8,U+6316,U+6355,U+63ed,U+6447,U+64a4,U+65f1,U+6606,U+6628,U+664b,U+6668,U+6682,U+66f9,U+66fc,U+66ff,U+6717,U+6740,U+676d,U+67aa,U+67ec,U+67f1,U+6842,U+6851,U+695a,U+6982,U+6a2a,U+6b20,U+6b23,U+6b32,U+6b96,U+6bc5,U+6beb,U+6c60,U+6c9f,U+6cea,U+6cf3,U+6d1e,U+6d53,U+6d66,U+6d69,U+6d8c,U+6d9b,U+6db2,U+6de1,U+6dfb,U+6e14,U+6ed1,U+6eda,U+6ee8,U+6f2b,U+706d,U+7089,U+708e,U+70ad-70ae,U+70e7,U+7126,U+714c,U+71c3,U+71d5,U+7206,U+7259,U+731b,U+73a9,U+73bb,U+74dc,U+7532,U+7545,U+755c,U+75c7,U+7687,U+76d7,U+76f2,U+788d,U+78e8,U+79e6,U+79e9,U+7a3f,U+7a46,U+7a97,U+7af9,U+7bee,U+7c4d,U+7c89,U+7cd6,U+7eb5,U+7ebd,U+7ed8,U+8017,U+8033,U+80c0,U+80de,U+80f6,U+8138,U+817e,U+81a8,U+820d,U+827e,U+82b3,U+82d7,U+83b1,U+84c4,U+84dd,U+8584,U+864e,U+865a,U+866b,U+86cb,U+88d5,U+89e6,U+8bca,U+8bde,U+8bfa,U+8c0a,U+8c37,U+8c46,U+8c6a,U+8c8c,U+8d1d,U+8d29,U+8d4f,U+8d54,U+8d5a,U+8d60,U+8d62,U+8f7f,U+8f96,U+8f9e-8f9f,U+8fc1,U+8fdf,U+8fea,U+8ff7,U+9012,U+906d,U+9075,U+90a6,U+90bb,U+90ca,U+9178,U+9192,U+91ca,U+94bb,U+94dc,U+94fa,U+9501,U+950b,U+9521,U+955c,U+963b,U+9655,U+9675-9676,U+9887,U+9891,U+9971,U+9a97,U+9ece,U+9ed8" } }, { uri: ysA, descriptors: { unicodeRange: "U+4e1d,U+4e39,U+4e4c,U+4e4f,U+4e54,U+4e58,U+4e95,U+4ea1,U+4eab,U+4eae,U+4ec1,U+4f10,U+4f19,U+4f30,U+4f34,U+4fb5,U+503e,U+518c,U+5192,U+51a0,U+51ac,U+51b0,U+51e1,U+5211,U+5242,U+52a3,U+52b2,U+52c3,U+52c7,U+52d2,U+52e4,U+5377,U+539a,U+53a6,U+53e5,U+5417,U+5510,U+552f,U+5531,U+574f-5750,U+5761,U+5851,U+5854,U+58ee,U+593a,U+5949,U+5954,U+5a5a,U+5b8b,U+5bbd,U+5c04,U+5c0a,U+5c4b,U+5ce1,U+5cf0,U+5e10,U+5e8a,U+5e9f,U+5ec9,U+5f31,U+5f84,U+5fd8-5fd9,U+5fe0,U+6015,U+6062,U+6069,U+6076,U+6089,U+60a3,U+60ca,U+620f,U+624e,U+6263,U+6298,U+62a2,U+62bd,U+6311,U+6350,U+6389,U+638c,U+63f4,U+6446,U+644a,U+6469,U+64cd,U+654f,U+6562,U+656c,U+65d7,U+65e6,U+65fa,U+660c,U+6653,U+66b4,U+670b,U+672b,U+676f-6770,U+6881,U+6885,U+68a6,U+68cb,U+68ee,U+6b8a,U+6c88-6c89,U+6cc9,U+6ce5,U+6d01,U+6d17,U+6d1b,U+6d59,U+6d6a,U+6da8,U+6df7,U+6e10,U+6e20-6e21,U+6f5c,U+706f,U+70bc,U+719f,U+7267,U+732a,U+73cd,U+7518,U+756a,U+7586,U+7591,U+75db,U+76c8,U+76d0,U+76d6,U+76d8,U+76df,U+76fe,U+77db,U+7801,U+786c,U+795d,U+7965,U+79cb,U+7a77,U+7a7f,U+7aef,U+7b11,U+7bb1,U+7bc7,U+7ea0,U+7eaf,U+7ed5,U+7edc,U+7f13,U+7f29,U+7f34,U+7f8a,U+7ffb,U+8015,U+8058,U+805a,U+8083,U+80af,U+80c6,U+80cc,U+811a,U+8150,U+82e5,U+8336,U+8352,U+83ab,U+8428,U+8463,U+852c,U+8861,U+89c8,U+8bcd,U+8bd7,U+8bda,U+8be2,U+8bef,U+8bf8,U+8c0b,U+8c13,U+8d34,U+8d3a,U+8d74,U+8d76,U+8da3,U+8dd1,U+8ddd,U+8ddf,U+8df3,U+8f68,U+8f6f,U+8f7d,U+8f91,U+8f9b,U+8fbd,U+8fc8,U+8fd4,U+8feb,U+8ff9,U+900f,U+9057,U+907f-9080,U+90d1,U+90ed,U+91ce,U+9519,U+9526,U+95ed,U+9614,U+9635,U+9644,U+9686,U+96c5,U+96ea,U+9707,U+9732,U+9759,U+978b,U+9876,U+9881,U+9910,U+996e,U+9970,U+9c81,U+9e21,U+9ebb,U+9f84" } }, { uri: bsA, descriptors: { unicodeRange: "U+4e3d,U+4e4e,U+4e71,U+4e8f,U+4ed8,U+4eea,U+4f0a,U+4f0d,U+4f11,U+4f1f,U+4f24,U+4f3c,U+4f73,U+4fc4,U+500d,U+5012,U+501f,U+503a,U+505c,U+507f,U+50a8,U+514d,U+5178,U+517c,U+51b2,U+51b7,U+520a,U+5238,U+523b,U+52b1,U+535a,U+5371,U+5385,U+53eb-53ec,U+53f3,U+53f6,U+5409,U+542b,U+542f,U+5434,U+5462,U+5473,U+547c,U+54c8,U+54ea,U+56fa,U+5733,U+5757,U+5766,U+5802,U+585e,U+590f,U+591c,U+591f,U+5947,U+594b,U+5987,U+5a01,U+5b59,U+5b63,U+5b88,U+5b97,U+5b9c,U+5bbe,U+5bfb,U+5c01,U+5c1a,U+5c24,U+5c3c,U+5c97,U+5c9b,U+5cb8,U+5de6,U+5e01,U+5e2e,U+5e45,U+5e55,U+5e84,U+5ef6,U+5f02,U+5f52,U+5f69,U+5f7b,U+5f90,U+5fae,U+6000,U+600e,U+6025,U+60e0,U+6276,U+6297,U+62b5,U+62cd,U+62d3,U+62e5,U+62e9,U+62ff,U+6302,U+632f,U+63e1,U+6444,U+64ad,U+653b,U+6551,U+6563,U+65a4,U+65e7,U+6620,U+667a,U+66f2,U+671d,U+6731,U+6742,U+675f,U+6768,U+677e-677f,U+6790,U+67b6,U+67d3,U+6863,U+68b0,U+68c9,U+690d,U+6b8b,U+6bcd,U+6bd2,U+6bd5,U+6c38,U+6c61,U+6cbf,U+6cdb,U+6cf0,U+6d2a,U+6d89,U+6da6,U+6f6e,U+6fb3,U+7075,U+707e,U+70df,U+7164,U+7236,U+725b,U+7389,U+73e0,U+745e,U+74e6,U+751a,U+7537,U+75be,U+76ae,U+76db,U+793c,U+7956,U+7981,U+79d8,U+79df,U+79fb,U+7adf,U+7ae5,U+7b14,U+7b26,U+7b54,U+7b79,U+7d2f,U+7eb8,U+7eba,U+7ec6,U+7ee9,U+7eff,U+7f5a,U+7f6a,U+7f72,U+8089,U+80a5,U+80e1,U+8111,U+8131,U+821e,U+822c,U+8270,U+8499,U+8651,U+867d,U+8840,U+8857,U+8863,U+88c1,U+89c9,U+89d2,U+8a89,U+8bed,U+8bfe,U+8c01,U+8c22,U+8d21,U+8d25,U+8d2f,U+8d5e,U+8d75,U+8d8b,U+8dc3,U+8de8,U+8df5,U+8f6e,U+8f86,U+8f89,U+8fc5,U+8ff0,U+8ffd,U+9014,U+904d,U+90ae,U+9274,U+949f,U+952e,U+969c,U+96c4,U+96e8,U+96f6-96f7,U+97e9,U+987f,U+996d,U+9a7b,U+9aa8,U+9c7c,U+9c9c,U+9e4f,U+9f13,U+9f50" } }, { uri: UsA, descriptors: { unicodeRange: "U+4e13,U+4e16,U+4e1c,U+4e24,U+4e3e,U+4e49,U+4e61,U+4e66,U+4e89,U+4e8c,U+4e94,U+4e9b,U+4ea4,U+4eac,U+4ebf,U+4eca,U+4ef6-4ef7,U+4efb,U+4f18,U+4f20,U+4f46,U+4f7f,U+4fe1,U+503c,U+505a,U+5146,U+5148,U+515a,U+5171,U+5177,U+519b,U+51b3,U+51c6,U+51e0,U+5212,U+521b,U+522b,U+529e,U+52bf,U+534e-534f,U+5355,U+5357,U+5382,U+539f,U+53bb,U+53bf,U+53c2,U+53c8,U+53ca,U+53d6-53d8,U+53e3,U+53ea,U+53f0,U+540d,U+5411,U+56db,U+56de,U+56e0,U+56e2,U+578b,U+57ce,U+57fa,U+589e,U+5904,U+5934,U+5982,U+5b89,U+5b8c,U+5bfc,U+5c06,U+5c11,U+5c40,U+5c71,U+5e38,U+5e72,U+5e76,U+5e7f,U+5e94,U+5e9c,U+5f0f,U+5f15,U+5f20,U+5f3a,U+5f62,U+5f88,U+5fc5,U+5fd7,U+5feb,U+601d,U+6027,U+60c5,U+60f3,U+610f,U+6216,U+6218,U+624b,U+624d,U+6279,U+628a,U+6295,U+6301,U+6307,U+636e,U+63a5,U+63a8,U+652f,U+6536,U+653e,U+6548,U+6559,U+6570,U+65bd,U+65e0,U+6602,U+660e,U+6613,U+66f4,U+6700,U+670d,U+671f,U+672f,U+6743,U+674e,U+6751,U+6761,U+6784,U+6797,U+679c,U+67e5,U+6807,U+6837,U+683c,U+6b21,U+6b63-6b65,U+6bcf,U+6bd4,U+6c42,U+6c5f,U+6ca1,U+6cbb,U+6d3b,U+6d41,U+6d88,U+6df1,U+70b9,U+7136,U+7269,U+7279,U+7531,U+754c,U+767e,U+76ca,U+76f8,U+770b,U+7740,U+7814,U+79ef,U+7a0b,U+7a0e,U+7a76,U+7b80,U+7cbe,U+7cfb,U+7e41,U+7ea7,U+7ec4,U+7ec7,U+7ed3,U+7ed9,U+7edf,U+7f8e,U+8001,U+804c,U+8054,U+80b2,U+81f3,U+8425,U+8868,U+88ab,U+897f,U+89c1-89c2,U+89c4,U+89c6,U+89e3,U+8ba1,U+8ba4,U+8bae,U+8bb0,U+8bba,U+8bc1,U+8c03,U+8d28,U+8d39,U+8def,U+8f66,U+8f6c,U+8fd0-8fd1,U+9020,U+9053,U+90a3,U+90fd,U+91cc,U+9500,U+9547,U+95e8,U+95f4,U+961f,U+9645,U+9662,U+96be,U+96c6,U+9700,U+9769,U+97e6,U+9875,U+9879,U+9886,U+9898,U+98ce,U+9996,U+2b5af,U+2cc56,U+2e9f5,U+30edd-30ede" } }, { uri: GsA, descriptors: { unicodeRange: "U+4e03,U+4e30,U+4e34,U+4e45,U+4e60,U+4e70,U+4e88,U+4e91-4e92,U+4ea9,U+4eb2,U+4ec0,U+4ecb,U+4ecd,U+4ee4,U+4fee,U+5019,U+5047,U+50cf,U+5145,U+516d,U+5170,U+5175,U+5199,U+51cf,U+51fb,U+521a,U+5224,U+5267,U+52aa,U+5347-5348,U+534a,U+5356,U+5361,U+536b,U+5370,U+538b,U+53e4,U+53e6,U+5403,U+5426,U+5428,U+542c,U+5438,U+5668,U+56ed,U+56f4,U+56fe,U+57df,U+592a,U+5957,U+5b69,U+5b81,U+5b8f,U+5b98,U+5b9d,U+5ba1,U+5ba4,U+5bb3,U+5bc6,U+5bdf,U+5c3d,U+5c5e,U+5c81,U+5ddd,U+5de8,U+5dee,U+5e0c,U+5e86,U+5e8f,U+5e93,U+5e95,U+5e97,U+5ea7,U+5ead,U+5eb7,U+5f55,U+5f81,U+5f85,U+5ff5,U+6001,U+613f,U+6258,U+6267,U+6269,U+626c,U+627e,U+62db,U+62ec,U+6325,U+635f,U+6362,U+6388,U+6392,U+63a2,U+63a7,U+63aa,U+641e,U+6545,U+6597,U+65e2,U+65e9,U+661f,U+665a,U+666e-666f,U+66fe,U+6728,U+67d0,U+6811,U+6838,U+6865,U+697c,U+6b22,U+6b27,U+6b4c,U+6b62,U+6b66,U+6b7b,U+6bdb,U+6c47,U+6c49,U+6c7d,U+6c99,U+6cfd,U+6d0b,U+6d25,U+6d32,U+6d3e,U+6d4b,U+6e29,U+6e56,U+6e7e,U+6f14,U+6fc0,U+706b,U+70c8,U+7247,U+72af,U+72b6,U+72ec,U+732e,U+73ed,U+7403,U+7533,U+753b,U+7559,U+7565,U+7597,U+767b,U+773c,U+7763,U+77ed,U+77ff,U+7968,U+798f,U+79bb,U+79c0-79c1,U+7ad9,U+7ae0,U+7b51,U+7b7e,U+7cae,U+7d22,U+7ea2,U+7eb3,U+7eb7,U+7ec3,U+7ec8,U+7ecd,U+7edd,U+7efc,U+7f16,U+7f3a,U+7f51,U+7f57,U+7f6e,U+80dc,U+822a,U+8239,U+826f,U+82cf,U+82e6,U+8349,U+8363,U+83dc,U+8457,U+85cf,U+878d,U+8865,U+8a00,U+8b66,U+8ba2,U+8ba8,U+8bad,U+8bb2,U+8bc9,U+8bd5,U+8bfb,U+8d2b,U+8d35,U+8d37,U+8f7b,U+8f93,U+8fce,U+8fdd,U+9000-9002,U+9010,U+9047,U+9093,U+9152,U+9488,U+94a2,U+9633,U+9636,U+963f,U+9646,U+9648,U+964d,U+9664,U+9669,U+9760,U+97f3,U+987a,U+987e,U+9884,U+98de,U+9986,U+9ed1" } }, { uri: fsA, descriptors: { unicodeRange: "U+4e14,U+4e25,U+4e48,U+4e50,U+4e5d,U+4e9a,U+4ec5,U+4efd,U+4f17,U+4f4e-4f4f,U+4f55,U+4f59,U+4f60,U+4f8b,U+4f9b,U+4f9d,U+4fbf,U+4fc3,U+5065,U+513f,U+5149,U+514b,U+516b,U+5174,U+517b,U+518d,U+51b5,U+5207,U+5217-5219,U+521d,U+526f,U+529f,U+52a9,U+52b3,U+5305,U+533b,U+5343,U+5360,U+5373-5374,U+5386,U+53cb-53cd,U+53f2,U+53f7,U+544a,U+5468,U+547d,U+54cd,U+552e,U+5584,U+56f0,U+571f,U+5747,U+575a,U+57f9,U+5883,U+58eb,U+58f0,U+5907,U+590d,U+592e,U+5931,U+5956,U+5965,U+5973,U+5979,U+59cb,U+5b57-5b58,U+5b83,U+5ba2-5ba3,U+5bb9,U+5bcc,U+5c42,U+5c45,U+5c4a,U+5dde,U+5df1,U+5df4,U+5e03,U+5e08,U+5e26,U+5e2d,U+5f71,U+5f80,U+5f8b,U+5fb7,U+606f,U+611f,U+6237,U+623f,U+6253,U+627f,U+6293,U+62a4,U+62c5,U+62c9,U+6309,U+6574,U+6599,U+65ad,U+65af,U+65c5,U+65cf,U+6625,U+663e,U+671b,U+672a,U+6750,U+6781,U+6821,U+6839,U+6848,U+68c0,U+6a21,U+6b3e,U+6bb5,U+6c14,U+6cb3,U+6cb9,U+6ce8,U+6e05,U+6e2f,U+6e38,U+6e90,U+6ee1,U+70ed,U+7167,U+7231,U+7248,U+724c,U+7387,U+738b,U+73af,U+7530,U+75c5,U+767d,U+76d1,U+76f4,U+771f,U+77e5,U+77f3,U+7834,U+7840,U+786e,U+793a,U+795e,U+79f0,U+7a33,U+7a7a,U+7a81,U+7ade,U+7b56,U+7b97,U+7c73,U+7c7b,U+7d20,U+7d27,U+7ea6,U+7eaa,U+7ebf,U+7ee7,U+7eed,U+7ef4,U+7fa4,U+8003,U+80a1,U+81f4,U+8272,U+827a,U+8282,U+82b1,U+82f1,U+8303,U+836f,U+83b7,U+843d,U+88c5,U+8ba9,U+8baf,U+8bb8,U+8bbf,U+8bc4,U+8bc6,U+8bdd,U+8be5,U+8bf7,U+8c08,U+8c61,U+8d1f,U+8d22-8d23,U+8d27,U+8d2d,U+8d38,U+8d5b,U+8d70,U+8d85,U+8d8a,U+8db3,U+8eab,U+8f83,U+8fb9,U+8fdc,U+8fde,U+9009,U+901f,U+914d,U+91c7,U+94b1,U+94c1,U+94f6,U+95fb,U+9632,U+9650,U+968f,U+9752,U+975e,U+987b,U+989d,U+98df,U+9999,U+9a6c,U+9a8c,U+9ec4,U+9feb-9fec" } }, { uri: LsA, descriptors: { unicodeRange: "U+98fb-990c,U+990e-990f,U+9911-992d,U+992f-9953,U+9956-9962,U+9964,U+9966,U+9973,U+9978-9979,U+997b,U+997e,U+9982-9983,U+9989,U+998c,U+998e,U+999a-99a4,U+99a6-99a7,U+99a9-99c8" } }, { uri: xsA, descriptors: { unicodeRange: "U+8e4c-8e50,U+8e53-8e58,U+8e5a-8e65,U+8e67-8e68,U+8e6a-8e6b,U+8e6e,U+8e71,U+8e73,U+8e75,U+8e77-8e7b,U+8e7d-8e7e,U+8e80,U+8e82-8e84,U+8e86,U+8e88-8e8e,U+8e91-8e93,U+8e95-8e9b,U+8e9d,U+8e9f-8eaa,U+8ead-8eae,U+8eb0-8eb1,U+8eb3-8eb9,U+8ebb-8ecd,U+8ecf-8f02" } }, { uri: SsA, descriptors: { unicodeRange: "U+2e3a,U+3001-3002,U+3008-3011,U+3014-3017,U+301d-301f,U+4dae,U+4e00,U+4e07,U+4e09-4e0b,U+4e0d-4e0e,U+4e1a,U+4e2a,U+4e2d,U+4e3a-4e3b,U+4e4b,U+4e5f,U+4e86,U+4e8b,U+4e8e,U+4ea7,U+4eba,U+4ece,U+4ed1,U+4ed6,U+4ee3,U+4ee5,U+4eec,U+4f01,U+4f1a,U+4f4d,U+4f53,U+4f5c,U+4fdd,U+5143,U+5165,U+5168,U+516c,U+5173,U+5176,U+5185,U+519c,U+51fa,U+5206,U+5229,U+5230,U+5236,U+524d,U+529b,U+52a0-52a1,U+52a8,U+5316-5317,U+533a,U+5341,U+5362,U+53d1,U+53ef,U+53f8,U+5404,U+5408,U+540c,U+540e,U+5458,U+548c,U+54c1,U+54e5,U+5546,U+559c,U+56fd,U+5728,U+5730,U+573a,U+5916,U+591a,U+5927,U+5929,U+592b,U+597d,U+59d4,U+5b50,U+5b66,U+5b9a,U+5b9e,U+5bb6,U+5bf9,U+5c0f,U+5c14,U+5c31,U+5c55,U+5de5,U+5df2,U+5e02,U+5e73-5e74,U+5ea6,U+5efa,U+5f00,U+5f53,U+5f97,U+5fc3,U+603b,U+6210-6211,U+6240,U+6280,U+62a5,U+63d0,U+6539,U+653f,U+6587,U+65b0,U+65b9,U+65e5,U+65f6,U+662f,U+6708-6709,U+672c,U+673a,U+675c,U+6765,U+6c11,U+6c34,U+6cd5,U+6ce2,U+6d4e,U+6d77,U+73b0,U+7406,U+751f,U+7528,U+7535,U+7684,U+76ee,U+793e,U+79cd,U+79d1,U+7acb,U+7b2c,U+7b49,U+7ba1,U+7ecf,U+8005,U+800c,U+80fd,U+81ea,U+884c,U+8981,U+8bbe,U+8bf4,U+8d44,U+8d77,U+8fbe,U+8fc7,U+8fd8-8fd9,U+8fdb,U+901a,U+90e8,U+91cd,U+91cf,U+91d1,U+9485,U+957f,U+95ee,U+9762,U+9ad8,U+9ea6,U+9f99,U+9fcf,U+9fd4,U+9fed,U+fe10-fe19,U+fe30-fe31,U+fe33-fe44,U+ff01,U+ff0c,U+ff1f,U+2b4e7,U+2b7f7,U+2b7fc,U+2cb2d,U+2cb3b,U+2cb4a,U+2cb5b,U+2cb73" } }, { uri: NsA, descriptors: { unicodeRange: "U+6490,U+6493-6494,U+6497-6498,U+649a-649d,U+649f-64a3,U+64a5-64a8,U+64aa-64ab,U+64af,U+64b1-64b4,U+64b6,U+64b9,U+64bb,U+64bd-64bf,U+64c1,U+64c3-64c4,U+64c6-64cc,U+64cf,U+64d1,U+64d3-64d6,U+64d9-64dd,U+64df-64e1,U+64e3,U+64e5,U+64e7-64ff,U+6501-6508,U+650a-6511,U+6513-6517,U+6519-6524,U+6526-652a,U+652c-652d,U+6530-6533,U+6537,U+653a,U+653c-653d,U+6540-6544,U+6546-6547,U+654a-654b,U+654d-654e,U+6550,U+6552-6554,U+6557-6558,U+655a,U+655c,U+655f-6561,U+6564-6565,U+6567-6568" } }, { uri: RsA, descriptors: { unicodeRange: "U+9695-9696,U+969a-969b,U+969d-96a6,U+96a8-96af,U+96b1-96b2,U+96b4-96b5,U+96b7-96b8,U+96ba-96bb,U+96bf,U+96c2-96c3,U+96c8,U+96ca-96cb,U+96d0-96d1,U+96d3-96d4,U+96d6-96df,U+96e1-96e7,U+96eb-96ee,U+96f0-96f2,U+96f4-96f5,U+96f8,U+96fa-96fd,U+96ff,U+9702-9703,U+9705,U+970a-970c,U+9710-9712,U+9714-9715,U+9717-971b,U+971d,U+971f-9729,U+972b-972c,U+972e-972f,U+9731,U+9733-9737,U+973a-973d,U+973f-9751,U+9754-9755,U+9757-9758,U+975a,U+975c-975d,U+975f,U+9763-9764,U+9766-9768,U+976a-9770" } }, { uri: MsA, descriptors: { unicodeRange: "U+6af0-6b1f,U+6b25-6b26,U+6b28-6b31,U+6b33-6b36,U+6b38,U+6b3b-6b3d,U+6b3f-6b42,U+6b44-6b45,U+6b48,U+6b4a-6b4b,U+6b4d-6b58,U+6b5a-6b61,U+6b68-6b69,U+6b6b-6b78,U+6b7a,U+6b7d-6b80,U+6b85,U+6b88,U+6b8c,U+6b8e-6b91,U+6b94-6b95,U+6b97-6b99,U+6b9c-6ba0,U+6ba2-6ba9,U+6bab-6bb2,U+6bb6,U+6bb8-6bba" } }, { uri: YsA, descriptors: { unicodeRange: "U+430e-439a,U+29e8a,U+29ec4,U+29edb,U+29ee9,U+29f7e,U+29f83,U+29f8c,U+29fce,U+2a01a,U+2a02f,U+2a082,U+2a0f9,U+2a190,U+2a38c" } }, { uri: vsA, descriptors: { unicodeRange: "U+92ef-933d,U+933f-9369,U+936b-9388" } }, { uri: HsA, descriptors: { unicodeRange: "U+4512-458d,U+2b300,U+2b363,U+2b36f,U+2b372,U+2b37d,U+2b404,U+2b410,U+2b413,U+2b461,U+2b4ef,U+2b4f6,U+2b4f9,U+2b50d-2b50e,U+2b536,U+2b5ae,U+2b5b3,U+2b5e7,U+2b5f4,U+2b61c-2b61d,U+2b626-2b628,U+2b62a,U+2b62c,U+2b695-2b696,U+2b6ad,U+2b6ed" } }, { uri: KsA, descriptors: { unicodeRange: "U+88bd-88c0,U+88c3-88c4,U+88c7-88c8,U+88ca-88cd,U+88cf-88d1,U+88d3,U+88d6-88d7,U+88da-88de,U+88e0-88e1,U+88e6-88e7,U+88e9-88ef,U+88f2,U+88f5-88f7,U+88fa-88fb,U+88fd,U+88ff-8901,U+8903-8909,U+890b-890f,U+8911,U+8914-8918,U+891c-8920,U+8922-8924,U+8926-8929,U+892c-892f,U+8931-8933,U+8935,U+8937-8940,U+8942-8943,U+8945-895d,U+8960-8965,U+8967-897a,U+897c-897e,U+8980,U+8982,U+8984-8985" } }, { uri: JsA, descriptors: { unicodeRange: "U+4b0b-4ba0" } }, { uri: ZsA, descriptors: { unicodeRange: "U+7179,U+717b-717c,U+717e-7183,U+7185-7189,U+718b-718e,U+7190-7193,U+7195-7197,U+719a-719e,U+71a1-71a7,U+71a9-71ab,U+71ad-71b2,U+71b4,U+71b6-71b8,U+71ba-71c2,U+71c4-71cd,U+71cf-71d3,U+71d6-71df,U+71e1-71e4,U+71e6,U+71e8-71ed,U+71ef-71f8,U+71fa-7205,U+7207-721c,U+721e-7227,U+7229,U+722b,U+722d" } }, { uri: qsA, descriptors: { unicodeRange: "U+982e-9874,U+988b,U+988e,U+9892,U+9895,U+9899,U+98a3,U+98a8-98cd,U+98cf-98d0,U+98d4,U+98d6-98d7,U+98db-98dd,U+98e0-98e6,U+98e9-98fa" } }, { uri: WsA, descriptors: { unicodeRange: "U+7c14-7c15,U+7c17-7c1e,U+7c20-7c25,U+7c28-7c29,U+7c2b-7c37,U+7c39-7c3e,U+7c42-7c4c,U+7c4e-7c72,U+7c75-7c7a,U+7c7e-7c88,U+7c8a-7c90,U+7c93-7c94,U+7c96,U+7c99-7c9b,U+7ca0-7ca1,U+7ca3,U+7ca6-7ca9,U+7cab-7cad,U+7caf-7cb0,U+7cb4-7cb8,U+7cba-7cbb,U+7cbf-7cc0,U+7cc2-7cc4,U+7cc6,U+7cc9,U+7ccb,U+7cce-7cd4" } }, { uri: jsA, descriptors: { unicodeRange: "U+7d95-7da5,U+7da7-7dad,U+7daf-7e2a" } }, { uri: TsA, descriptors: { unicodeRange: "U+4a78-4b0a" } }, { uri: zsA, descriptors: { unicodeRange: "U+9b30-9b31,U+9b33-9b3a,U+9b3d-9b40,U+9b46,U+9b4a-9b4c,U+9b4e,U+9b50,U+9b52-9b53,U+9b55-9bcf" } }, { uri: PsA, descriptors: { unicodeRange: "U+6a4b-6a4f,U+6a51-6a57,U+6a5a,U+6a5c-6a60,U+6a62-6a64,U+6a66-6a70,U+6a72-6a78,U+6a7a-6a7b,U+6a7d-6a7f,U+6a81-6a83,U+6a85-6a8d,U+6a8f,U+6a92-6a96,U+6a98-6a9f,U+6aa1-6aa8,U+6aaa,U+6aad-6aef" } }, { uri: OsA, descriptors: { unicodeRange: "U+99c9-9a53" } }, { uri: VsA, descriptors: { unicodeRange: "U+8550-8555,U+8557-8558,U+855a-855d,U+855f-8563,U+8565-8567,U+8569-8571,U+8573,U+8575-8578,U+857c-857d,U+857f-8583,U+8586,U+8588-858e,U+8590-859a,U+859d-85a3,U+85a5-85a7,U+85a9,U+85ab-85ad,U+85b1-85b6,U+85b8,U+85ba-85c0,U+85c2-85c8,U+85ca-85ce,U+85d1-85d2,U+85d4,U+85d6-85db,U+85dd-85e3,U+85e5-85e8,U+85ea-85fa,U+85fc-85fe,U+8600-8603" } }, { uri: XsA, descriptors: { unicodeRange: "U+6fb2,U+6fb4-6fb5,U+6fb7-6fb8,U+6fba-6fbf,U+6fc1,U+6fc3-6fc8,U+6fca-6fd0,U+6fd3-6fdd,U+6fdf,U+6fe2-6fed,U+6ff0-7010,U+7012-7019,U+701c-7022,U+7024-7034,U+7036-7038,U+703a-704b,U+704d-704e,U+7050-7053" } }, { uri: _sA, descriptors: { unicodeRange: "U+4ba1-4c2c" } }, { uri: $sA, descriptors: { unicodeRange: "U+9a54-9a6b,U+9a72,U+9a83,U+9a89,U+9a8d-9a8e,U+9a94-9a95,U+9a99,U+9aa6,U+9aa9-9aaf,U+9ab2-9ab5,U+9ab9,U+9abb,U+9abd-9abf,U+9ac3-9ac4,U+9ac6-9aca,U+9acd-9ad0,U+9ad2,U+9ad4-9ad7,U+9ad9-9ade,U+9ae0,U+9ae2-9ae5,U+9ae7-9aea,U+9aec,U+9aee,U+9af0-9af8,U+9afa,U+9afc-9b02,U+9b04-9b07,U+9b09-9b0e,U+9b10-9b12,U+9b14-9b1e,U+9b20-9b22,U+9b24-9b2e" } }, { uri: AlA, descriptors: { unicodeRange: "U+9d1a-9da1" } }, { uri: ulA, descriptors: { unicodeRange: "U+9e13-9e1e,U+9e24,U+9e27,U+9e2e,U+9e30,U+9e34,U+9e3b-9e3c,U+9e40,U+9e4d,U+9e50,U+9e52-9e54,U+9e56,U+9e59,U+9e5d,U+9e5f-9e62,U+9e65,U+9e6e-9e6f,U+9e72,U+9e74-9e7d,U+9e80-9e81,U+9e83-9e86,U+9e89-9e8a,U+9e8c-9e91,U+9e94-9e9c,U+9e9e,U+9ea0-9ea5,U+9ea7-9eb3,U+9eb5-9eb7,U+9eb9-9eba,U+9ebc,U+9ebf-9ec3,U+9ec5-9ec8,U+9eca-9ecc,U+9ed0,U+9ed2-9ed3,U+9ed5-9ed7,U+9ed9-9eda,U+9ede,U+9ee1,U+9ee3-9ee4,U+9ee6,U+9ee8,U+9eeb-9eee,U+9ef0-9ef8" } }, { uri: elA, descriptors: { unicodeRange: "U+8b1c-8b25,U+8b27-8b65,U+8b67-8b6b,U+8b6d-8b9f,U+8bac,U+8bb1,U+8bbb,U+8bc7,U+8bd0" } }, { uri: ClA, descriptors: { unicodeRange: "U+4cad-4d2f" } }, { uri: BlA, descriptors: { unicodeRange: "U+9c4b-9c7b,U+9c7d-9c7e,U+9c80,U+9c83-9c84,U+9c89-9c8a,U+9c8c,U+9c8f,U+9c93,U+9c96-9c99,U+9c9d,U+9caa,U+9cac,U+9caf,U+9cb9,U+9cbe-9cc2,U+9cc8-9cc9,U+9cd1-9cd2,U+9cda-9cdb,U+9ce0-9ce1,U+9ce3-9d19" } }, { uri: glA, descriptors: { unicodeRange: "U+9389-938e,U+9390-93c9,U+93cb-93d5,U+93d7-9410" } }, { uri: tlA, descriptors: { unicodeRange: "U+20a0-20b5,U+20b9-20ba,U+20bc-20bd,U+4e2c,U+5107,U+5216,U+5293,U+54f3,U+5523,U+5819,U+5adc,U+5c88,U+5e3b,U+5fee,U+62f6,U+63be,U+6484,U+6499,U+67d9,U+67dd,U+6d5e,U+6f46,U+717a,U+71e0,U+72c1,U+73e7,U+75b0,U+7603,U+7722,U+7809,U+7811,U+7946,U+7967,U+799a,U+7b45,U+7ba2,U+8014,U+80d9,U+8159,U+817d,U+81a3,U+81aa,U+8201,U+833c,U+836e,U+83e5,U+8459,U+84f0,U+8729,U+8753,U+87d3,U+89dc,U+8bf6,U+8c2e,U+8e2c,U+8e9c,U+8e9e,U+8ece,U+8fee,U+9139,U+914f,U+9174,U+9191,U+960c,U+9622,U+9a98,U+9b48,U+9ca6,U+9cb0,U+9da2-9e12,U+9e88,U+9f44,U+9f86" } }, { uri: ilA, descriptors: { unicodeRange: "U+9bd0-9c4a" } }, { uri: ElA, descriptors: { unicodeRange: "U+4c2d-4cac" } }, { uri: alA, descriptors: { unicodeRange: "U+4d30-4dab" } }, { uri: IlA, descriptors: { unicodeRange: "U+9411-943d,U+943f-946a,U+946c-9484" } }, { uri: olA, descriptors: { unicodeRange: "U+9efa,U+9efd,U+9eff-9f0a,U+9f0c,U+9f0f,U+9f11-9f12,U+9f14-9f16,U+9f18,U+9f1a-9f1f,U+9f21,U+9f23-9f2b,U+9f2d-9f2e,U+9f30-9f36,U+9f38,U+9f3a,U+9f3c,U+9f3f-9f43,U+9f45-9f4f,U+9f52-9f7e,U+9f81-9f82,U+9f8d-9f94" } }, { uri: QlA, descriptors: { unicodeRange: "U+7e2b-7e3a,U+7e3c-7e40,U+7e42-7e46,U+7e48-7e81,U+7e83-7e9a,U+7e9c-7e9e,U+7eae,U+7eb4,U+7ebb-7ebc,U+7ed6,U+7ee4,U+7eec,U+7ef9,U+7f0a,U+7f10,U+7f1e,U+7f37,U+7f39,U+7f3b" } }], Zt = class Hu {
  constructor(u) {
    J(this, "scene"), J(this, "getSceneFamilies", () => Hu.getUniqueFamilies(this.scene.getNonDeletedElements())), J(this, "onLoaded", (e) => {
      let C = !0;
      for (let t of e) {
        let i = `${t.family}-${t.style}-${t.weight}-${t.unicodeRange}`;
        Hu.loadedFontsCache.has(i) || (Hu.loadedFontsCache.add(i), C = !1);
      }
      if (C) return;
      let B = !1, g = this.scene.getNonDeletedElementsMap();
      for (let t of this.scene.getNonDeletedElements()) if (UA(t)) {
        B = !0, a0.delete(t), cn.clearCache(vu(t));
        let i = _0(t, g);
        i && a0.delete(i);
      }
      B && this.scene.triggerUpdate();
    }), J(this, "loadSceneFonts", async () => {
      let e = this.getSceneFamilies(), C = Hu.getCharsPerFamily(this.scene.getNonDeletedElements());
      return Hu.loadFontFaces(e, C);
    }), this.scene = u;
  }
  static get registered() {
    return Hu._registered ? Hu._initialized || (Hu._registered = new Map([...Hu.init().entries(), ...Hu._registered.entries()])) : Hu._registered = Hu.init(), Hu._registered;
  }
  get registered() {
    return Hu.registered;
  }
  static async generateFontFaceDeclarations(u) {
    let e = Hu.getUniqueFamilies(u), C = Hu.getCharsPerFamily(u), B = e.find((I) => r8(I).includes(Ja));
    if (B) {
      let I = Hu.getCharacters(C, B);
      if (YaA(I)) {
        let o = Za[Ja];
        C[o] = new Set(I), e.unshift(Za[Ja]);
      }
    }
    let g = Hu.fontFacesStylesGenerator(e, C), t = 3, i = await new kF(g, t).all();
    return Array.from(new Set(i));
  }
  static async loadFontFaces(u, e) {
    for (let { fontFaces: g, metadata: t } of Hu.registered.values()) if (!t.local) for (let { fontFace: i } of g) window.document.fonts.has(i) || window.document.fonts.add(i);
    let C = Hu.fontFacesLoader(u, e), B = 10;
    return (await new kF(C, B).all()).flat().filter(Boolean);
  }
  static *fontFacesLoader(u, e) {
    for (let [C, B] of u.entries()) {
      let g = vu({ fontFamily: B, fontSize: 16 }), t = Hu.getCharacters(e, B);
      window.document.fonts.check(g, t) || (yield ti(async () => {
        try {
          let i = await window.document.fonts.load(g, t);
          return [C, i];
        } catch (i) {
          console.error(`Failed to load font "${g}" from urls "${Hu.registered.get(B)?.fontFaces.map((I) => I.urls)}"`, i);
        }
      }));
    }
  }
  static *fontFacesStylesGenerator(u, e) {
    for (let [C, B] of u.entries()) {
      let { fontFaces: g, metadata: t } = Hu.registered.get(B) ?? {};
      if (!Array.isArray(g)) {
        console.error(`Couldn't find registered fonts for font-family "${B}"`, Hu.registered);
        continue;
      }
      if (!t?.local) for (let [i, I] of g.entries()) yield ti(async () => {
        try {
          let o = Hu.getCharacters(e, B), E = await I.toCSS(o);
          return E ? [C * 1e4 + i, E] : void 0;
        } catch (o) {
          console.error(`Couldn't transform font-face to css for family "${I.fontFace.family}"`, o);
        }
      });
    }
  }
  static register(u, e, ...C) {
    let B = t0[u] ?? Za[u];
    return this.registered.get(B) || this.registered.set(B, { metadata: e, fontFaces: C.map(({ uri: g, descriptors: t }) => new qoA(u, g, t)) }), this.registered;
  }
  static init() {
    let u = { registered: /* @__PURE__ */ new Map() }, e = (C, ...B) => {
      let g = t0[C] ?? Za[C], t = wl[g] ?? wl[t0.Excalifont];
      Hu.register.call(u, C, t, ...B);
    };
    return e("Cascadia", ...joA), e("Comic Shanns", ...VoA), e("Excalifont", ...gQA), e("Helvetica", ...tQA), e("Liberation Sans", ...EQA), e("Lilita One", ...oQA), e("Nunito", ...cQA), e("Virgil", ...DQA), e(Ja, ...nlA), e(HQ, ...XoA), Hu._initialized = !0, u.registered;
  }
  static getUniqueFamilies(u) {
    return Array.from(u.reduce((e, C) => (UA(C) && e.add(C.fontFamily), e), /* @__PURE__ */ new Set()));
  }
  static getCharsPerFamily(u) {
    let e = {};
    for (let C of u) if (UA(C)) for (let B of C.originalText) e[C.fontFamily] || (e[C.fontFamily] = /* @__PURE__ */ new Set()), e[C.fontFamily].add(B);
    return e;
  }
  static getCharacters(u, e) {
    return u[e] ? Array.from(u[e]).join("") : "";
  }
  static getAllFamilies() {
    return Array.from(Hu.registered.keys());
  }
};
J(Zt, "loadedFontsCache", /* @__PURE__ */ new Set()), J(Zt, "_registered"), J(Zt, "_initialized", !1), J(Zt, "loadElementsFonts", async (A) => {
  let u = Zt.getUniqueFamilies(A), e = Zt.getCharsPerFamily(A);
  return Zt.loadFontFaces(u, e);
});
var Kg = Zt, Ik = (A, u, e) => {
  let { unitsPerEm: C, ascender: B, descender: g } = Kg.registered.get(A)?.metadata.metrics || wl[t0.Virgil].metrics, t = u / C, i = (e - t * B + t * g) / 2;
  return t * B + i;
}, NE = (A) => {
  let { lineHeight: u } = Kg.registered.get(A)?.metadata.metrics || wl[t0.Excalifont].metrics;
  return u;
}, ok = (A) => {
  let { angle: u, width: e, height: C, x: B, y: g } = A, t = B + e / 2, i = g + C / 2, I = U(t, i), o;
  return A.type === "diamond" ? o = hF(EA(U(t, g), I, u), EA(U(B + e, i), I, u), EA(U(t, g + C), I, u), EA(U(B, i), I, u)) : o = hF(EA(U(B, g), I, u), EA(U(B + e, g), I, u), EA(U(B + e, g + C), I, u), EA(U(B, g + C), I, u)), { type: "polygon", data: o };
}, rlA = (A, u, e = 10) => {
  let [C, B, g, t, i, I] = Au(A, u, !0);
  C -= e, g += e, B -= e, t += e;
  let o = U(i, I), E = EA(U(C, B), o, A.angle), Q = EA(U(g, B), o, A.angle), s = EA(U(C, t), o, A.angle), l = EA(U(g, t), o, A.angle);
  return { type: "polygon", data: [E, Q, l, s] };
}, slA = (A) => {
  let { width: u, height: e, angle: C, x: B, y: g } = A;
  return { type: "ellipse", data: { center: U(B + u / 2, g + e / 2), angle: C, halfWidth: u / 2, halfHeight: e / 2 } };
}, si = (A) => {
  if (!A) return [];
  for (let u of A.sets) if (u.type === "path") return u.ops;
  return A.sets[0].ops;
}, llA = (A, u = U(0, 0), e, C) => {
  let B = (I) => EA(U(I[0] + u[0], I[1] + u[1]), C, e), g = si(A), t = [], i = U(0, 0);
  for (let I of g) {
    if (I.op === "move") {
      let o = g2(I.data);
      he(o != null, "Ops data is not a point"), i = B(o);
    }
    if (I.op === "bcurveTo") {
      let o = B(U(I.data[0], I.data[1])), E = B(U(I.data[2], I.data[3])), Q = B(U(I.data[4], I.data[5]));
      t.push(Mg(i, o, E, Q)), i = Q;
    }
  }
  return { type: "polycurve", data: t };
}, clA = (A) => {
  let u = A[0], e = [];
  for (let C = 1; C < A.length; C++) {
    let B = A[C];
    e.push(KA(u, B)), u = B;
  }
  return e;
}, dlA = (A, u, e = !1) => {
  let C = (g) => EA(nu(Vt(vA(g), te(A.x, A.y))), u, A.angle), B = clA(A.points.map((g) => C(g)));
  return e ? { type: "polygon", data: ll(B.flat()) } : { type: "polyline", data: B };
}, DlA = (A, u, e = U(0, 0), C, B) => {
  let g = (E) => EA(U(E[0] + e[0], E[1] + e[1]), B, C);
  if (A.roundness === null) return { type: "polygon", data: ll(A.points.map((E) => g(E))) };
  let t = si(u), i = [], I = !1;
  for (let E of t) E.op === "move" ? (I = !I, I && i.push(U(E.data[0], E.data[1]))) : E.op === "bcurveTo" ? I && (i.push(U(E.data[0], E.data[1])), i.push(U(E.data[2], E.data[3])), i.push(U(E.data[4], E.data[5]))) : E.op === "lineTo" && I && i.push(U(E.data[0], E.data[1]));
  let o = aEA(i, 10, 5).map((E) => g(E));
  return { type: "polygon", data: ll(o) };
}, hlA = (A, u) => {
  let { angle: e, halfWidth: C, halfHeight: B, center: g } = u, t = C, i = B, I = Vt(vA(A), s0(vA(g), -1)), [o, E] = EA(nu(I), U(0, 0), -e), Q = Math.abs(o), s = Math.abs(E), l = 0.707, c = 0.707;
  for (let F = 0; F < 3; F++) {
    let m = t * l, p = i * c, k = (t * t - i * i) * l ** 3 / t, b = (i * i - t * t) * c ** 3 / i, f = m - k, L = p - b, N = Q - k, M = s - b, v = Math.hypot(L, f), K = Math.hypot(M, N);
    l = Math.min(1, Math.max(0, (N * v / K + k) / t)), c = Math.min(1, Math.max(0, (M * v / K + b) / i));
    let q = Math.hypot(c, l);
    l /= q, c /= q;
  }
  let [D, h] = [t * l * Math.sign(o), i * c * Math.sign(E)];
  return Uu(U(o, E), U(D, h));
}, wlA = (A, u, e = 1e-4) => hlA(A, u) <= e, FlA = (A, u) => {
  let { center: e, angle: C, halfWidth: B, halfHeight: g } = u, t = Vt(vA(A), s0(vA(e), -1)), [i, I] = EA(nu(t), U(0, 0), -C);
  return i / B * (i / B) + I / g * (I / g) <= 1;
}, OD = (A, u, e = 0) => {
  switch (u.type) {
    case "polygon":
      return EaA(A, u.data, e);
    case "ellipse":
      return wlA(A, u.data, e);
    case "line":
      return GE(A, u.data, e);
    case "polyline":
      return nk(A, u.data, e);
    case "curve":
      return Qk(A, u.data, e);
    case "polycurve":
      return plA(A, u.data, e);
    default:
      throw Error(`shape ${u} is not implemented`);
  }
}, Fl = (A, u) => {
  switch (u.type) {
    case "polygon":
      return wF(A, u.data);
    case "line":
      return !1;
    case "curve":
      return !1;
    case "ellipse":
      return FlA(A, u.data);
    case "polyline": {
      let e = ll(u.data.flat());
      return wF(A, e);
    }
    case "polycurve":
      return !1;
    default:
      throw Error(`shape ${u} is not implemented`);
  }
}, plA = (A, u, e) => u.some((C) => Qk(A, C, e)), mlA = (A) => {
  let [u, e, C, B] = A;
  return (g, t) => Math.pow(1 - g, 3) * B[t] + 3 * g * Math.pow(1 - g, 2) * C[t] + 3 * Math.pow(g, 2) * (1 - g) * e[t] + u[t] * Math.pow(g, 3);
}, klA = (A, u = 10) => {
  let e = mlA(A), C = [e(0, 0), e(0, 1)], B = [], g = 0, t = 1 / u;
  for (let i = 0; i < u; i++) if (g += t, g <= 1) {
    let I = U(e(g, 0), e(g, 1));
    B.push(KA(C, I)), C = I;
  }
  return B;
}, Qk = (A, u, e) => nk(A, klA(u), e), nk = (A, u, e = 1e-4) => u.some((C) => GE(A, C, e));
function rk(A, u, e) {
  return { center: A, halfWidth: u, halfHeight: e };
}
var ylA = (A, u) => {
  let { halfWidth: e, halfHeight: C, center: B } = u, g = e, t = C, i = Vt(vA(A), s0(vA(B), -1)), I = Math.abs(i[0]), o = Math.abs(i[1]), E = 0.707, Q = 0.707;
  for (let c = 0; c < 3; c++) {
    let D = g * E, h = t * Q, F = (g * g - t * t) * E ** 3 / g, m = (t * t - g * g) * Q ** 3 / t, p = D - F, k = h - m, b = I - F, f = o - m, L = Math.hypot(k, p), N = Math.hypot(f, b);
    E = Math.min(1, Math.max(0, (b * L / N + F) / g)), Q = Math.min(1, Math.max(0, (f * L / N + m) / t));
    let M = Math.hypot(Q, E);
    E /= M, Q /= M;
  }
  let [s, l] = [g * E * Math.sign(i[0]), t * Q * Math.sign(i[1])];
  return Uu(nu(i), U(s, l));
};
function blA({ center: A, halfWidth: u, halfHeight: e }, [C, B]) {
  let [g, t] = A, i = C[0] - g, I = C[1] - t, o = B[0] - g, E = B[1] - t, Q = Math.pow(o - i, 2) / Math.pow(u, 2) + Math.pow(E - I, 2) / Math.pow(e, 2), s = 2 * (i * (o - i) / Math.pow(u, 2) + I * (E - I) / Math.pow(e, 2)), l = Math.pow(i, 2) / Math.pow(u, 2) + Math.pow(I, 2) / Math.pow(e, 2) - 1, c = (-s + Math.sqrt(Math.pow(s, 2) - 4 * Q * l)) / (2 * Q), D = (-s - Math.sqrt(Math.pow(s, 2) - 4 * Q * l)) / (2 * Q), h = [U(i + c * (o - i) + g, I + c * (E - I) + t), U(i + D * (o - i) + g, I + D * (E - I) + t)].filter((F) => !isNaN(F[0]) && !isNaN(F[1]));
  return h.length === 2 && dB(h[0], h[1]) ? [h[0]] : h;
}
function sk(A, u = 0) {
  let e = sB(Math.min(A.width, A.height), A);
  if (e <= 0) {
    let Q = JD(U(A.x - u, A.y - u), U(A.x + A.width + u, A.y + A.height + u)), s = KA(U(Q[0][0] + e, Q[0][1]), U(Q[1][0] - e, Q[0][1])), l = KA(U(Q[1][0], Q[0][1] + e), U(Q[1][0], Q[1][1] - e)), c = KA(U(Q[0][0] + e, Q[1][1]), U(Q[1][0] - e, Q[1][1])), D = KA(U(Q[0][0], Q[1][1] - e), U(Q[0][0], Q[0][1] + e));
    return [[s, l, c, D], []];
  }
  let C = U(A.x + A.width / 2, A.y + A.height / 2), B = JD(U(A.x, A.y), U(A.x + A.width, A.y + A.height)), g = KA(U(B[0][0] + e, B[0][1]), U(B[1][0] - e, B[0][1])), t = KA(U(B[1][0], B[0][1] + e), U(B[1][0], B[1][1] - e)), i = KA(U(B[0][0] + e, B[1][1]), U(B[1][0] - e, B[1][1])), I = KA(U(B[0][0], B[1][1] - e), U(B[0][0], B[0][1] + e)), o = [s0(de(vA(U(B[0][0] - u, B[0][1] - u), C)), u), s0(de(vA(U(B[1][0] + u, B[0][1] - u), C)), u), s0(de(vA(U(B[1][0] + u, B[1][1] + u), C)), u), s0(de(vA(U(B[0][0] - u, B[1][1] + u), C)), u)], E = [Mg(nu(o[0], I[1]), nu(o[0], U(I[1][0] + 2 / 3 * (B[0][0] - I[1][0]), I[1][1] + 2 / 3 * (B[0][1] - I[1][1]))), nu(o[0], U(g[0][0] + 2 / 3 * (B[0][0] - g[0][0]), g[0][1] + 2 / 3 * (B[0][1] - g[0][1]))), nu(o[0], g[0])), Mg(nu(o[1], g[1]), nu(o[1], U(g[1][0] + 2 / 3 * (B[1][0] - g[1][0]), g[1][1] + 2 / 3 * (B[0][1] - g[1][1]))), nu(o[1], U(t[0][0] + 2 / 3 * (B[1][0] - t[0][0]), t[0][1] + 2 / 3 * (B[0][1] - t[0][1]))), nu(o[1], t[0])), Mg(nu(o[2], t[1]), nu(o[2], U(t[1][0] + 2 / 3 * (B[1][0] - t[1][0]), t[1][1] + 2 / 3 * (B[1][1] - t[1][1]))), nu(o[2], U(i[1][0] + 2 / 3 * (B[1][0] - i[1][0]), i[1][1] + 2 / 3 * (B[1][1] - i[1][1]))), nu(o[2], i[1])), Mg(nu(o[3], i[0]), nu(o[3], U(i[0][0] + 2 / 3 * (B[0][0] - i[0][0]), i[0][1] + 2 / 3 * (B[1][1] - i[0][1]))), nu(o[3], U(I[0][0] + 2 / 3 * (B[0][0] - I[0][0]), I[0][1] + 2 / 3 * (B[1][1] - I[0][1]))), nu(o[3], I[0]))];
  return [[KA(E[0][3], E[1][0]), KA(E[1][3], E[2][0]), KA(E[2][3], E[3][0]), KA(E[3][3], E[0][0])], E];
}
function lk(A, u = 0) {
  let [e, C, B, g, t, i, I, o] = Mk(A), E = sB(Math.abs(e - I), A), Q = sB(Math.abs(g - C), A);
  if (A.roundness?.type == null) {
    let [p, k, b, f] = [U(A.x + e, A.y + C - u), U(A.x + B + u, A.y + g), U(A.x + t, A.y + i + u), U(A.x + I - u, A.y + o)], L = KA(U(p[0] + E, p[1] + Q), U(k[0] - E, k[1] - Q)), N = KA(U(k[0] - E, k[1] + Q), U(b[0] + E, b[1] - Q)), M = KA(U(b[0] - E, b[1] - Q), U(f[0] + E, f[1] + Q)), v = KA(U(f[0] + E, f[1] - Q), U(p[0] - E, p[1] + Q));
    return [[L, N, M, v], []];
  }
  let s = U(A.x + A.width / 2, A.y + A.height / 2), [l, c, D, h] = [U(A.x + e, A.y + C), U(A.x + B, A.y + g), U(A.x + t, A.y + i), U(A.x + I, A.y + o)], F = [s0(de(vA(c, s)), u), s0(de(vA(D, s)), u), s0(de(vA(h, s)), u), s0(de(vA(l, s)), u)], m = [Mg(nu(F[0], U(c[0] - E, c[1] - Q)), nu(F[0], c), nu(F[0], c), nu(F[0], U(c[0] - E, c[1] + Q))), Mg(nu(F[1], U(D[0] + E, D[1] - Q)), nu(F[1], D), nu(F[1], D), nu(F[1], U(D[0] - E, D[1] - Q))), Mg(nu(F[2], U(h[0] + E, h[1] + Q)), nu(F[2], h), nu(F[2], h), nu(F[2], U(h[0] + E, h[1] - Q))), Mg(nu(F[3], U(l[0] - E, l[1] + Q)), nu(F[3], l), nu(F[3], l), nu(F[3], U(l[0] + E, l[1] + Q)))];
  return [[KA(m[0][3], m[1][0]), KA(m[1][3], m[2][0]), KA(m[2][3], m[3][0]), KA(m[3][3], m[0][0])], m];
}
var VD = (A) => {
  if (A.type === "arrow") return !1;
  let u = !IB(A.backgroundColor) || MC(A) || UC(A) || UA(A);
  return A.type === "line" || A.type === "freedraw" ? u && Wg(A.points) : u || bu(A);
}, Ha = ({ x: A, y: u, element: e, shape: C, threshold: B = 10, frameNameBound: g = null }) => {
  let t = VD(e) && Fl(U(A, u), C) || OD(U(A, u), C, B);
  return !t && g && (t = Fl(U(A, u), { type: "polygon", data: ok(g).data })), t;
}, h2 = (A, u, e, C, B = 0) => {
  let [g, t, i, I] = hB(e, C);
  return g -= B, t -= B, i += B, I += B, F8(U(g, t), U(A, u), U(i, I));
}, UlA = (A, u) => !Ha(A) && !ck(A.x, A.y, Dk(A.element, u)) && h2(A.x, A.y, A.element, u), ck = (A, u, e) => !!e && Fl(U(A, u), e), dk = (A, u, e = 0) => {
  switch (A.type) {
    case "rectangle":
    case "image":
    case "text":
    case "iframe":
    case "embeddable":
    case "frame":
    case "magicframe":
      return GlA(A, u, e);
    case "diamond":
      return flA(A, u, e);
    case "ellipse":
      return LlA(A, u, e);
    default:
      throw new Error(`Unimplemented element type '${A.type}'`);
  }
}, GlA = (A, u, e = 0) => {
  let C = U(A.x + A.width / 2, A.y + A.height / 2), B = EA(u[0], C, -A.angle), g = EA(u[1], C, -A.angle), [t, i] = sk(A, e);
  return [...t.map((I) => qQ(KA(B, g), I)).filter((I) => I != null).map((I) => EA(I, C, A.angle)), ...i.flatMap((I) => p8(I, KA(B, g))).filter((I) => I != null).map((I) => EA(I, C, A.angle))].filter((I, o, E) => E.findIndex((Q) => dB(I, Q)) === o);
}, flA = (A, u, e = 0) => {
  let C = U(A.x + A.width / 2, A.y + A.height / 2), B = EA(u[0], C, -A.angle), g = EA(u[1], C, -A.angle), [t, i] = lk(A, e);
  return [...t.map((I) => qQ(KA(B, g), I)).filter((I) => I != null).map((I) => EA(I, C, A.angle)), ...i.flatMap((I) => p8(I, KA(B, g))).filter((I) => I != null).map((I) => EA(I, C, A.angle))].filter((I, o, E) => E.findIndex((Q) => dB(I, Q)) === o);
}, LlA = (A, u, e = 0) => {
  let C = U(A.x + A.width / 2, A.y + A.height / 2), B = EA(u[0], C, -A.angle), g = EA(u[1], C, -A.angle);
  return blA(rk(C, A.width / 2 + e, A.height / 2 + e), KD(B, g)).map((t) => EA(t, C, A.angle));
}, wu = { EQUAL: "Equal", MINUS: "Minus", NUM_ADD: "NumpadAdd", NUM_SUBTRACT: "NumpadSubtract", NUM_ZERO: "Numpad0", BRACKET_RIGHT: "BracketRight", BRACKET_LEFT: "BracketLeft", ONE: "Digit1", TWO: "Digit2", THREE: "Digit3", QUOTE: "Quote", ZERO: "Digit0", SLASH: "Slash", C: "KeyC", D: "KeyD", H: "KeyH", V: "KeyV", Z: "KeyZ", Y: "KeyY", R: "KeyR", S: "KeyS" }, Z = { ARROW_DOWN: "ArrowDown", ARROW_LEFT: "ArrowLeft", ARROW_RIGHT: "ArrowRight", ARROW_UP: "ArrowUp", PAGE_UP: "PageUp", PAGE_DOWN: "PageDown", BACKSPACE: "Backspace", ALT: "Alt", CTRL_OR_CMD: _B ? "metaKey" : "ctrlKey", DELETE: "Delete", ENTER: "Enter", ESCAPE: "Escape", QUESTION_MARK: "?", SPACE: " ", TAB: "Tab", CHEVRON_LEFT: "<", CHEVRON_RIGHT: ">", PERIOD: ".", COMMA: ",", SLASH: "/", A: "a", D: "d", E: "e", F: "f", G: "g", H: "h", I: "i", L: "l", O: "o", P: "p", Q: "q", R: "r", S: "s", T: "t", V: "v", X: "x", Y: "y", Z: "z", K: "k", 0: "0", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9" }, xlA = /* @__PURE__ */ new Map([[Z.Z, wu.Z], [Z.Y, wu.Y]]), SlA = (A) => /^[a-z]$/.test(A.toLowerCase()), XD = (A, u) => {
  if (u === A.key.toLowerCase()) return !0;
  let e = xlA.get(u);
  return !!(e && !SlA(A.key) && A.code === e);
}, eQ = (A) => A === Z.ARROW_LEFT || A === Z.ARROW_RIGHT || A === Z.ARROW_DOWN || A === Z.ARROW_UP, Ld = (A) => A.altKey, Ko = (A) => A.shiftKey, dQ = (A) => A.shiftKey, w2 = [{ icon: AIA, value: "selection", key: Z.V, numericKey: Z[1], fillable: !0 }, { icon: uIA, value: "rectangle", key: Z.R, numericKey: Z[2], fillable: !0 }, { icon: eIA, value: "diamond", key: Z.D, numericKey: Z[3], fillable: !0 }, { icon: CIA, value: "ellipse", key: Z.O, numericKey: Z[4], fillable: !0 }, { icon: BIA, value: "arrow", key: Z.A, numericKey: Z[5], fillable: !0 }, { icon: gIA, value: "line", key: Z.L, numericKey: Z[6], fillable: !0 }, { icon: WQ, value: "freedraw", key: [Z.P, Z.X], numericKey: Z[7], fillable: !1 }, { icon: Z8, value: "text", key: Z.T, numericKey: Z[8], fillable: !1 }, { icon: iIA, value: "image", key: null, numericKey: Z[9], fillable: !1 }, { icon: EIA, value: "eraser", key: Z.E, numericKey: Z[0], fillable: !1 }], NlA = (A) => w2.find((u, e) => u.numericKey != null && A === u.numericKey.toString() || u.key && (typeof u.key == "string" ? u.key === A : u.key.includes(A)))?.value || null, Ng = (A, u) => {
  switch (A.type) {
    case "rectangle":
    case "diamond":
    case "frame":
    case "magicframe":
    case "embeddable":
    case "image":
    case "iframe":
    case "text":
    case "selection":
      return ok(A);
    case "arrow":
    case "line": {
      let e = a0.get(A)?.[0] ?? a0.generateElementShape(A, null)[0], [, , , , C, B] = Au(A, u);
      return VD(A) ? DlA(A, e, U(A.x, A.y), A.angle, U(C, B)) : llA(e, U(A.x, A.y), A.angle, U(C, B));
    }
    case "ellipse":
      return slA(A);
    case "freedraw": {
      let [, , , , e, C] = Au(A, u);
      return dlA(A, U(e, C), VD(A));
    }
  }
}, Dk = (A, u) => {
  let e = gu(A, u);
  return e ? A.type === "arrow" ? Ng({ ...e, ...LA.getBoundTextElementPosition(A, e, u) }, u) : Ng(e, u) : null;
}, hk = (A, u) => {
  let e = a0.generateElementShape(A, null);
  if (!e) return null;
  let C = si(e[0]), B = U(0, 0), g = 0, t = 1 / 0, i = null;
  for (; g < C.length; ) {
    let { op: I, data: o } = C[g];
    if (I === "move" && (he(eaA(o), "The returned ops is not compatible with a point"), B = o), I === "bcurveTo") {
      let E = B, Q = U(o[0], o[1]), s = U(o[2], o[3]), l = U(o[4], o[5]), c = Uu(l, u);
      c < t && (t = c, i = [E, Q, s, l]), B = l;
    }
    g++;
  }
  return i;
}, wk = (A, u, e, C, B) => {
  let g = (I, o) => Math.pow(1 - I, 3) * C[o] + 3 * I * Math.pow(1 - I, 2) * e[o] + 3 * Math.pow(I, 2) * (1 - I) * u[o] + A[o] * Math.pow(I, 3), t = g(B, 0), i = g(B, 1);
  return U(t, i);
}, RlA = (A, u) => {
  let e = hk(A, u);
  if (!e) return [];
  let C = [], B = 1;
  for (; B > 0; ) {
    let g = wk(e[0], e[1], e[2], e[3], B);
    C.push(U(g[0], g[1])), B -= 0.05;
  }
  return C.length && dB(C.at(-1), u) && C.push(U(u[0], u[1])), C;
}, Fk = (A, u) => {
  let e = [];
  e[0] = 0;
  let C = RlA(A, u), B = 0, g = 0;
  for (; B < C.length - 1; ) {
    let t = Uu(C[B], C[B + 1]);
    g += t, e.push(g), B++;
  }
  return e;
}, MlA = (A, u) => Fk(A, u).at(-1), YlA = (A, u, e) => {
  let C = Fk(A, u), B = C.length - 1, g = C.at(-1), t = e * g, i = 0, I = B, o = 0;
  for (; i < I; ) o = Math.floor(i + (I - i) / 2), C[o] < t ? i = o + 1 : I = o;
  return C[o] > t && o--, C[o] === t ? o / B : 1 - (o + (t - C[o]) / (C[o + 1] - C[o])) / B;
}, qB = (A, u) => {
  let e = { minX: A.x, minY: A.y, maxX: A.x + A.width, maxY: A.y + A.height, midX: A.x + A.width / 2, midY: A.y + A.height / 2 }, C = U(e.midX, e.midY), [B, g] = EA(U(e.minX, e.minY), C, A.angle), [t, i] = EA(U(e.maxX, e.minY), C, A.angle), [I, o] = EA(U(e.maxX, e.maxY), C, A.angle), [E, Q] = EA(U(e.minX, e.maxY), C, A.angle), s = [Math.min(B, t, I, E), Math.min(g, i, o, Q), Math.max(B, t, I, E), Math.max(g, i, o, Q)];
  if (u) {
    let [l, c, D, h] = u;
    return [s[0] - h, s[1] - l, s[2] + c, s[3] + D];
  }
  return s;
}, EI = (A, u) => A[0] > u[0] && A[0] < u[2] && A[1] > u[1] && A[1] < u[3], sB = (A, u) => {
  if (u.roundness?.type === x0.PROPORTIONAL_RADIUS || u.roundness?.type === x0.LEGACY) return A * wd;
  if (u.roundness?.type === x0.ADAPTIVE_RADIUS) {
    let e = u.roundness?.value ?? TEA, C = e / wd;
    return A <= C ? A * wd : e;
  }
  return 0;
}, Wg = (A, u = 1) => {
  if (A.length >= 3) {
    let [e, C] = [A[0], A[A.length - 1]];
    return Uu(e, C) <= fs / u;
  }
  return !1;
}, T0 = 10, vlA = (A, u, e, C, B, g, t) => {
  let { width: i, height: I } = jg(A), o = e / i, E = C / I, Q = (A.crop?.x ?? 0) / o, s = (A.crop?.y ?? 0) / E, l = EA(U(B, g), U(A.x + A.width / 2, A.y + A.height / 2), -A.angle);
  B = l[0], g = l[1];
  let c = A.width, D = A.height, h = A.crop ?? { x: 0, y: 0, width: e, height: C, naturalWidth: e, naturalHeight: C }, F = h.height, m = h.width, p = A.scale[0] === -1, k = A.scale[1] === -1, b = g - A.y, f = B - A.x;
  u.includes("n") && (D = Qu(A.height - b, T0, k ? I - s : A.height + s)), u.includes("s") && (b = g - A.y - A.height, D = Qu(A.height + b, T0, k ? A.height + s : I - s)), u.includes("e") && (f = B - A.x - A.width, c = Qu(A.width + f, T0, p ? A.width + Q : i - Q)), u.includes("w") && (c = Qu(A.width - f, T0, p ? i - Q : A.width + Q));
  let L = (v) => {
    v.height = D * E, v.width = c * o;
  };
  L(h);
  let N = (v, K) => {
    L(K), v.includes("n") && (k || (K.y += F - K.height)), v.includes("s") && k && (K.y += F - K.height), v.includes("e") && p && (K.x += m - K.width), v.includes("w") && (p || (K.x += m - K.width));
  };
  switch (u) {
    case "n": {
      if (t) {
        let v = Q + A.width / 2, K = i - Q - A.width / 2, q = Math.min(v, K) * 2;
        c = Qu(D * t, T0, q), D = c / t;
      }
      N(u, h), t && (h.x += (m - h.width) / 2);
      break;
    }
    case "s": {
      if (t) {
        let v = Q + A.width / 2, K = i - Q - A.width / 2, q = Math.min(v, K) * 2;
        c = Qu(D * t, T0, q), D = c / t;
      }
      N(u, h), t && (h.x += (m - h.width) / 2);
      break;
    }
    case "w": {
      if (t) {
        let v = s + A.height / 2, K = I - s - A.height / 2, q = Math.min(v, K) * 2;
        D = Qu(c / t, T0, q), c = D * t;
      }
      N(u, h), t && (h.y += (F - h.height) / 2);
      break;
    }
    case "e": {
      if (t) {
        let v = s + A.height / 2, K = I - s - A.height / 2, q = Math.min(v, K) * 2;
        D = Qu(c / t, T0, q), c = D * t;
      }
      N(u, h), t && (h.y += (F - h.height) / 2);
      break;
    }
    case "ne": {
      if (t) if (f > -b) {
        let v = k ? I - s : s + A.height;
        D = Qu(c / t, T0, v), c = D * t;
      } else {
        let v = p ? Q + A.width : i - Q;
        c = Qu(D * t, T0, v), D = c / t;
      }
      N(u, h);
      break;
    }
    case "nw": {
      if (t) if (f < b) {
        let v = k ? I - s : s + A.height;
        D = Qu(c / t, T0, v), c = D * t;
      } else {
        let v = p ? i - Q : Q + A.width;
        c = Qu(D * t, T0, v), D = c / t;
      }
      N(u, h);
      break;
    }
    case "se": {
      if (t) if (f > b) {
        let v = k ? s + A.height : I - s;
        D = Qu(c / t, T0, v), c = D * t;
      } else {
        let v = p ? Q + A.width : i - Q;
        c = Qu(D * t, T0, v), D = c / t;
      }
      N(u, h);
      break;
    }
    case "sw": {
      if (t) if (-f > b) {
        let v = k ? s + A.height : I - s;
        D = Qu(c / t, T0, v), c = D * t;
      } else {
        let v = p ? i - Q : Q + A.width;
        c = Qu(D * t, T0, v), D = c / t;
      }
      N(u, h);
      break;
    }
  }
  let M = HlA(A, u, c, D, !!t);
  return cF(h.width, h.naturalWidth) && cF(h.height, h.naturalHeight) && (h = null), { x: M[0], y: M[1], width: c, height: D, crop: h };
}, HlA = (A, u, e, C, B) => {
  let [g, t, i, I] = ei(A, A.width, A.height, !0), o = U(g, t), E = U(i, I), Q = rn(o, E), [s, l, c, D] = ei(A, e, C, !0), h = c - s, F = D - l, m = [...o];
  if (["n", "w", "nw"].includes(u) && (m = [E[0] - Math.abs(h), E[1] - Math.abs(F)]), u === "ne") {
    let N = [o[0], E[1]];
    m = [N[0], N[1] - Math.abs(F)];
  }
  if (u === "sw") {
    let N = [E[0], o[1]];
    m = [N[0] - Math.abs(h), N[1]];
  }
  B && (["s", "n"].includes(u) && (m[0] = Q[0] - h / 2), ["e", "w"].includes(u) && (m[1] = Q[1] - F / 2));
  let p = A.angle, k = EA(m, Q, p), b = [m[0] + Math.abs(h) / 2, m[1] + Math.abs(F) / 2], f = EA(b, Q, p);
  m = EA(k, f, -p);
  let L = [...m];
  return L[0] += A.x - s, L[1] += A.y - l, L;
}, KlA = (A, u) => {
  if (A.crop) {
    let { width: e, height: C } = jg(A), [B, g, t, i, I, o] = Au(A, u), E = vA(EA(U(B, g), U(I, o), A.angle)), Q = vA(EA(U(t, g), U(I, o), A.angle)), s = de(rl(Q, E)), l = vA(EA(U(B, i), U(I, o), A.angle)), c = rl(l, E), D = de(c), { cropX: h, cropY: F } = JlA(A.crop, A.scale), m = Vt(Vt(E, s0(s, -h * e / A.crop.naturalWidth)), s0(D, -F * C / A.crop.naturalHeight)), p = nu(Vt(Vt(m, s0(s, e / 2)), s0(D, C / 2))), k = EA(nu(m), p, -A.angle);
    return { ...A, x: k[0], y: k[1], width: e, height: C, crop: null };
  }
  return A;
}, jg = (A) => {
  if (A.crop) {
    let u = A.width / (A.crop.width / A.crop.naturalWidth), e = A.height / (A.crop.height / A.crop.naturalHeight);
    return { width: u, height: e };
  }
  return { width: A.width, height: A.height };
}, JlA = (A, u) => {
  let e = A.x, C = A.y, B = u[0] === -1, g = u[1] === -1;
  return B && (e = A.naturalWidth - Math.abs(e) - A.width), g && (C = A.naturalHeight - Math.abs(C) - A.height), { cropX: e, cropY: C };
}, ZlA = (A, u = !1) => {
  let e = A.crop;
  if (!e) return null;
  let C = A.scale[0] === -1, B = A.scale[1] === -1, g = e.x, t = e.y;
  if (C && (g = e.naturalWidth - e.width - e.x), B && (t = e.naturalHeight - e.height - e.y), u) return { x: g, y: t };
  let { width: i, height: I } = jg(A);
  return { x: g / (e.naturalWidth / i), y: t / (e.naturalHeight / I) };
}, pk = "invert(100%) hue-rotate(180deg) saturate(1.25)", qlA = $B(), mk = (A, u) => bC(A) && !u.imageCache.has(A.fileId), kk = (A, u, e) => e.theme === su.DARK && bC(A) && !mk(A, u) && u.imageCache.get(A.fileId)?.mimeType !== zA.svg, s4 = (A) => {
  switch (A.type) {
    case "freedraw":
      return A.strokeWidth * 12;
    case "text":
      return A.fontSize / 2;
    default:
      return 20;
  }
}, yk = (A, u, e, C, B = 1) => {
  let g = (u?.opacity ?? 100) * A.opacity / 1e4 * B;
  return (e.has(A.id) || C && C.some((t) => t.id === A.id) || u && e.has(u.id)) && (g *= jEA / 100), g;
}, WlA = (A, u, e) => {
  let C = s4(A), [B, g, t, i] = Au(A, u), I = $A(A) || RC(A) ? le(B, t) : A.width, o = $A(A) || RC(A) ? le(g, i) : A.height, E = I * window.devicePixelRatio + C * 2, Q = o * window.devicePixelRatio + C * 2, s = e.value;
  return (E * s > 32767 || Q * s > 32767) && (s = Math.min(32767 / E, 32767 / Q)), E * Q * s * s > 16777216 && (s = Math.sqrt(16777216 / (E * Q))), E = Math.floor(E * s), Q = Math.floor(Q * s), { width: E, height: Q, scale: s };
}, bk = (A, u, e, C, B) => {
  let g = document.createElement("canvas"), t = g.getContext("2d"), i = s4(A), { width: I, height: o, scale: E } = WlA(A, u, e);
  if (!I || !o) return null;
  g.width = I, g.height = o;
  let Q = -100, s = 0;
  if ($A(A) || RC(A)) {
    let [F, m] = Au(A, u);
    Q = A.x > F ? le(A.x, F) * window.devicePixelRatio * E : 0, s = A.y > m ? le(A.y, m) * window.devicePixelRatio * E : 0, t.translate(Q, s);
  }
  t.save(), t.translate(i * E, i * E), t.scale(window.devicePixelRatio * E, window.devicePixelRatio * E);
  let l = ni.canvas(g);
  kk(A, C, B) && (t.filter = pk), Ms(A, l, t, C), t.restore();
  let c = gu(A, u), D = document.createElement("canvas"), h = D.getContext("2d");
  if (Eu(A) && c) {
    let [F, m, p, k] = Au(A, u), b = Math.max(le(F, p), le(m, k));
    D.width = b * window.devicePixelRatio * E + i * E * 10, D.height = b * window.devicePixelRatio * E + i * E * 10, h.translate(D.width / 2, D.height / 2), h.rotate(A.angle), h.drawImage(g, -g.width / 2, -g.height / 2, g.width, g.height);
    let [, , , , f, L] = Au(c, u);
    h.rotate(-A.angle);
    let N = (D.width - g.width) / 2, M = (D.height - g.height) / 2, v = D.width / 2 - (f - F) * window.devicePixelRatio * E - N - i * E, K = D.height / 2 - (L - m) * window.devicePixelRatio * E - M - i * E;
    h.translate(-v, -K), h.clearRect(-(c.width / 2 + L0) * window.devicePixelRatio * E, -(c.height / 2 + L0) * window.devicePixelRatio * E, (c.width + L0 * 2) * window.devicePixelRatio * E, (c.height + L0 * 2) * window.devicePixelRatio * E);
  }
  return { element: A, canvas: g, theme: B.theme, scale: E, zoomValue: e.value, canvasOffsetX: Q, canvasOffsetY: s, boundTextElementVersion: gu(A, u)?.version || null, containingFrameOpacity: Xe(A, u)?.opacity || 100, boundTextCanvas: D, angle: A.angle, imageCrop: bu(A) ? A.crop : null };
}, jlA = 14, Uk = document.createElement("img");
Uk.src = `data:${zA.svg},${encodeURIComponent('<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="image" class="svg-inline--fa fa-image fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#888" d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"></path></svg>')}`;
var Gk = document.createElement("img");
Gk.src = `data:${zA.svg},${encodeURIComponent('<svg viewBox="0 0 668 668" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.81709 0 0 .81709 124.825 145.825)"/><path d="M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.30366 0 0 .30366 506.822 60.065)"/></svg>')}`;
var TlA = (A, u) => {
  u.fillStyle = "#E7E7E7", u.fillRect(0, 0, A.width, A.height);
  let e = Math.min(A.width, A.height), C = Math.min(e, Math.min(e * 0.4, 100));
  u.drawImage(A.status === "error" ? Gk : Uk, A.width / 2 - C / 2, A.height / 2 - C / 2, C, C);
}, Ms = (A, u, e, C, B) => {
  switch (A.type) {
    case "rectangle":
    case "iframe":
    case "embeddable":
    case "diamond":
    case "ellipse": {
      e.lineJoin = "round", e.lineCap = "round", u.draw(a0.get(A));
      break;
    }
    case "arrow":
    case "line": {
      e.lineJoin = "round", e.lineCap = "round", a0.get(A).forEach((g) => {
        u.draw(g);
      });
      break;
    }
    case "freedraw": {
      e.save(), e.fillStyle = A.strokeColor;
      let g = OlA(A), t = a0.get(A);
      t && u.draw(t), e.fillStyle = A.strokeColor, e.fill(g), e.restore();
      break;
    }
    case "image": {
      let g = bC(A) ? C.imageCache.get(A.fileId)?.image : void 0;
      if (g != null && !(g instanceof Promise)) {
        A.roundness && e.roundRect && (e.beginPath(), e.roundRect(0, 0, A.width, A.height, sB(Math.min(A.width, A.height), A)), e.clip());
        let { x: t, y: i, width: I, height: o } = A.crop ? A.crop : { x: 0, y: 0, width: g.naturalWidth, height: g.naturalHeight };
        e.drawImage(g, t, i, I, o, 0, 0, A.width, A.height);
      } else TlA(A, e);
      break;
    }
    default:
      if (UA(A)) {
        let g = y8(A.text), t = g && !e.canvas.isConnected;
        t && document.body.appendChild(e.canvas), e.canvas.setAttribute("dir", g ? "rtl" : "ltr"), e.save(), e.font = vu(A), e.fillStyle = A.strokeColor, e.textAlign = A.textAlign;
        let i = A.text.replace(/\r\n?/g, `
`).split(`
`), I = A.textAlign === "center" ? A.width / 2 : A.textAlign === "right" ? A.width : 0, o = ln(A.fontSize, A.lineHeight), E = Ik(A.fontFamily, A.fontSize, o);
        for (let Q = 0; Q < i.length; Q++) e.fillText(i[Q], I, Q * o + E);
        e.restore(), t && e.canvas.remove();
      } else throw new Error(`Unimplemented type ${A.type}`);
  }
}, _D = /* @__PURE__ */ new WeakMap(), PF = (A, u, e, C) => {
  let B = e ? C.zoom : qlA.zoom, g = _D.get(A), t = g && g.zoomValue !== B.value && !C?.shouldCacheIgnoreZoom, i = gu(A, u), I = i?.version || null, o = bu(A) ? A.crop : null, E = Xe(A, u)?.opacity || 100;
  if (!g || t || g.theme !== C.theme || g.boundTextElementVersion !== I || g.imageCrop !== o || g.containingFrameOpacity !== E || Eu(A) && i && A.angle !== g.angle) {
    let Q = bk(A, u, B, e, C);
    return Q ? (_D.set(A, Q), Q) : null;
  }
  return g;
}, xd = (A, u, e, C, B) => {
  let g = A.element, t = s4(g), i = A.scale, [I, o, E, Q] = Au(g, B), s = ((I + E) / 2 + C.scrollX) * window.devicePixelRatio, l = ((o + Q) / 2 + C.scrollY) * window.devicePixelRatio;
  u.save(), u.scale(1 / window.devicePixelRatio, 1 / window.devicePixelRatio);
  let c = gu(g, B);
  if (Eu(g) && c) {
    let D = (A.boundTextCanvas.width - A.canvas.width) / 2, h = (A.boundTextCanvas.height - A.canvas.height) / 2;
    u.translate(s, l), u.drawImage(A.boundTextCanvas, -(E - I) / 2 * window.devicePixelRatio - D / i - t, -(Q - o) / 2 * window.devicePixelRatio - h / i - t, A.boundTextCanvas.width / i, A.boundTextCanvas.height / i);
  } else u.translate(s, l), u.rotate(g.angle), "scale" in A.element && !mk(g, e) && u.scale(A.element.scale[0], A.element.scale[1]), u.translate(-s, -l), u.drawImage(A.canvas, (I + C.scrollX) * window.devicePixelRatio - t * A.scale / A.scale, (o + C.scrollY) * window.devicePixelRatio - t * A.scale / A.scale, A.canvas.width / A.scale, A.canvas.height / A.scale), tu.VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX;
  u.restore();
}, zlA = (A, u, e, C) => {
  u.save(), u.translate(A.x + e.scrollX, A.y + e.scrollY), u.fillStyle = "rgba(0, 0, 200, 0.04)";
  let B = 0.5 / e.zoom.value;
  u.fillRect(B, B, A.width, A.height), u.lineWidth = 1 / e.zoom.value, u.strokeStyle = C, u.strokeRect(B, B, A.width, A.height), u.restore();
}, gE = (A, u, e, C, B, g, t) => {
  let i = t.openDialog?.name === "elementLinkSelector" && !t.selectedElementIds[A.id] && !t.hoveredElementIds[A.id];
  switch (B.globalAlpha = yk(A, Xe(A, u), g.elementsPendingErasure, g.pendingFlowchartNodes, i ? D8 : 1), A.type) {
    case "magicframe":
    case "frame": {
      t.frameRendering.enabled && t.frameRendering.outline && (B.save(), B.translate(A.x + t.scrollX, A.y + t.scrollY), B.fillStyle = "rgba(0, 0, 200, 0.04)", B.lineWidth = i0.strokeWidth / t.zoom.value, B.strokeStyle = i0.strokeColor, Ss(A) && (B.strokeStyle = t.theme === su.LIGHT ? "#7affd7" : "#1d8264"), B.roundRect ? (B.beginPath(), B.roundRect(0, 0, A.width, A.height, i0.radius / t.zoom.value), B.stroke(), B.closePath()) : B.strokeRect(0, 0, A.width, A.height), B.restore());
      break;
    }
    case "freedraw": {
      if (a0.generateElementShape(A, null), g.isExporting) {
        let [I, o, E, Q] = Au(A, u), s = (I + E) / 2 + t.scrollX, l = (o + Q) / 2 + t.scrollY, c = (E - I) / 2 - (A.x - I), D = (Q - o) / 2 - (A.y - o);
        B.save(), B.translate(s, l), B.rotate(A.angle), B.translate(-c, -D), Ms(A, C, B, g), B.restore();
      } else {
        let I = PF(A, e, g, t);
        if (!I) return;
        xd(I, B, g, t, e);
      }
      break;
    }
    case "rectangle":
    case "diamond":
    case "ellipse":
    case "line":
    case "arrow":
    case "image":
    case "text":
    case "iframe":
    case "embeddable": {
      if (a0.generateElementShape(A, g), g.isExporting) {
        let [I, o, E, Q] = Au(A, u), s = (I + E) / 2 + t.scrollX, l = (o + Q) / 2 + t.scrollY, c = (E - I) / 2 - (A.x - I), D = (Q - o) / 2 - (A.y - o);
        if (UA(A)) {
          let F = _0(A, u);
          if (Eu(F)) {
            let m = LA.getBoundTextElementPosition(F, A, u);
            c = (E - I) / 2 - (m.x - I), D = (Q - o) / 2 - (m.y - o);
          }
        }
        B.save(), B.translate(s, l), kk(A, g, t) && (B.filter = "none");
        let h = gu(A, u);
        if (Eu(A) && h) {
          let F = document.createElement("canvas"), m = F.getContext("2d"), p = Math.max(le(I, E), le(o, Q)), k = s4(A);
          F.width = p * t.exportScale + k * 10 * t.exportScale, F.height = p * t.exportScale + k * 10 * t.exportScale, m.translate(F.width / 2, F.height / 2), m.scale(t.exportScale, t.exportScale), c = A.width / 2 - (A.x - I), D = A.height / 2 - (A.y - o), m.rotate(A.angle);
          let b = ni.canvas(F);
          m.translate(-c, -D), Ms(A, b, m, g), m.translate(c, D), m.rotate(-A.angle);
          let [, , , , f, L] = Au(h, u), N = (I + E) / 2 - f, M = (o + Q) / 2 - L;
          m.translate(-N, -M), m.clearRect(-h.width / 2, -h.height / 2, h.width, h.height), B.scale(1 / t.exportScale, 1 / t.exportScale), B.drawImage(F, -F.width / 2, -F.height / 2, F.width, F.height);
        } else B.rotate(A.angle), A.type === "image" && B.scale(A.scale[0], A.scale[1]), B.translate(-c, -D), Ms(A, C, B, g);
        B.restore();
      } else {
        let I = PF(A, e, g, t);
        if (!I) return;
        let o = B.imageSmoothingEnabled;
        if (!t?.shouldCacheIgnoreZoom && (!A.angle || $EA(A.angle)) && (B.imageSmoothingEnabled = !1), A.id === t.croppingElementId && bu(I.element) && I.element.crop !== null) {
          B.save(), B.globalAlpha = 0.1;
          let E = bk(KlA(I.element, u), e, t.zoom, g, t);
          E && xd(E, B, g, t, e), B.restore();
        }
        xd(I, B, g, t, e), B.imageSmoothingEnabled = o;
      }
      break;
    }
    default:
      throw new Error(`Unimplemented type ${A.type}`);
  }
  B.globalAlpha = 1;
}, fk = /* @__PURE__ */ new WeakMap([]);
function PlA(A) {
  let u = Lk(A), e = new Path2D(u);
  return fk.set(A, e), e;
}
function OlA(A) {
  return fk.get(A);
}
function Lk(A) {
  let u = A.simulatePressure ? A.points : A.points.length ? A.points.map(([C, B], g) => [C, B, A.pressures[g]]) : [[0, 0, 0.5]], e = { simulatePressure: A.simulatePressure, size: A.strokeWidth * 4.25, thinning: 0.6, smoothing: 0.5, streamline: 0.5, easing: (C) => Math.sin(C * Math.PI / 2), last: !!A.lastCommittedPoint };
  return XlA(BEA(u, e));
}
function OF(A, u) {
  return [(A[0] + u[0]) / 2, (A[1] + u[1]) / 2];
}
var VlA = /(\s?[A-Z]?,?-?[0-9]*\.[0-9]{0,2})(([0-9]|e|-)*)/g;
function XlA(A) {
  if (!A.length) return "";
  let u = A.length - 1;
  return A.reduce((e, C, B, g) => (B === u ? e.push(C, OF(C, g[0]), "L", g[0], "Z") : e.push(C, OF(C, g[B + 1])), e), ["M", A[0], "Q"]).join(" ").replace(VlA, "$1");
}
var aI = (A) => A === "rectangle" || A === "iframe" || A === "embeddable" || A === "ellipse" || A === "diamond" || A === "line" || A === "freedraw", $D = (A) => A !== "image" && A !== "frame" && A !== "magicframe", VF = (A) => A === "rectangle" || A === "iframe" || A === "embeddable" || A === "ellipse" || A === "diamond" || A === "freedraw" || A === "arrow" || A === "line", XF = (A) => A === "rectangle" || A === "iframe" || A === "embeddable" || A === "ellipse" || A === "diamond" || A === "arrow" || A === "line", A1 = (A) => A === "rectangle" || A === "iframe" || A === "embeddable" || A === "line" || A === "diamond" || A === "image", _F = (A) => A === "arrow", pl = (A) => A === "arrow", r0 = [1, 0], V0 = [0, 1], Te = [-1, 0], ze = [0, -1], is = (A, u) => {
  let e = nn(Math.atan2(u[1] - A[1], u[0] - A[0]));
  return e >= 315 || e < 45 ? ze : e >= 45 && e < 135 ? r0 : e >= 135 && e < 225 ? V0 : Te;
}, RE = (A) => {
  let [u, e] = A, C = Math.abs(u), B = Math.abs(e);
  return u > B ? r0 : u <= -B ? Te : e > C ? V0 : ze;
}, jQ = (A, u) => RE(vA(A, u)), Rg = (A, u) => Yg(jQ(A, u)), l0 = (A, u) => A[0] === u[0] && A[1] === u[1], Yg = (A) => l0(A, r0) || l0(A, Te), xk = (A, u, e) => {
  let C = m2(u);
  if (A.type === "diamond") {
    if (e[0] < A.x) return Te;
    if (e[1] < A.y) return ze;
    if (e[0] > A.x + A.width) return r0;
    if (e[1] > A.y + A.height) return V0;
    let I = EA(Gg(U(A.x + A.width / 2, A.y), C, 2), C, A.angle), o = EA(Gg(U(A.x + A.width, A.y + A.height / 2), C, 2), C, A.angle), E = EA(Gg(U(A.x + A.width / 2, A.y + A.height), C, 2), C, A.angle), Q = EA(Gg(U(A.x, A.y + A.height / 2), C, 2), C, A.angle);
    return Ga([I, o, C], e) ? is(I, o) : Ga([o, E, C], e) ? is(o, E) : Ga([E, Q, C], e) ? is(E, Q) : is(Q, I);
  }
  let B = Gg(U(u[0], u[1]), C, 2), g = Gg(U(u[2], u[1]), C, 2), t = Gg(U(u[0], u[3]), C, 2), i = Gg(U(u[2], u[3]), C, 2);
  return Ga([B, g, C], e) ? ze : Ga([g, i, C], e) ? r0 : Ga([i, t, C], e) ? V0 : Te;
}, Sk = (A) => [A[0] === 0 ? 0 : A[0] > 0 ? -1 : 1, A[1] === 0 ? 0 : A[1] > 0 ? -1 : 1], _lA = (A) => [8, 8 + A], Nk = (A) => [1.5, 6 + A];
function $lA(A) {
  let u = A.roughness, e = Math.max(A.width, A.height), C = Math.min(A.width, A.height);
  return C >= 20 && e >= 50 || C >= 15 && A.roundness && A1(A.type) || $A(A) && e >= 50 ? u : Math.min(u / (e < 10 ? 3 : 2), 2.5);
}
var EC = (A, u = !1) => {
  let e = { seed: A.seed, strokeLineDash: A.strokeStyle === "dashed" ? _lA(A.strokeWidth) : A.strokeStyle === "dotted" ? Nk(A.strokeWidth) : void 0, disableMultiStroke: A.strokeStyle !== "solid", strokeWidth: A.strokeStyle !== "solid" ? A.strokeWidth + 0.5 : A.strokeWidth, fillWeight: A.strokeWidth / 2, hachureGap: A.strokeWidth * 4, roughness: $lA(A), stroke: A.strokeColor, preserveVertices: u || A.roughness < l8.cartoonist };
  switch (A.type) {
    case "rectangle":
    case "iframe":
    case "embeddable":
    case "diamond":
    case "ellipse":
      return e.fillStyle = A.fillStyle, e.fill = IB(A.backgroundColor) ? void 0 : A.backgroundColor, A.type === "ellipse" && (e.curveFitting = 1), e;
    case "line":
    case "freedraw":
      return Wg(A.points) && (e.fillStyle = A.fillStyle, e.fill = A.backgroundColor === "transparent" ? void 0 : A.backgroundColor), e;
    case "arrow":
      return e;
    default:
      throw new Error(`Unimplemented type ${A.type}`);
  }
}, $F = (A, u, e) => UC(A) && (u || je(A) && e?.get(A.id) !== !0) && IB(A.backgroundColor) && IB(A.strokeColor) ? { ...A, roughness: 0, backgroundColor: "#d3d3d3", fillStyle: "solid" } : jt(A) ? { ...A, strokeColor: IB(A.strokeColor) ? "#000000" : A.strokeColor, backgroundColor: IB(A.backgroundColor) ? "#f4f4f6" : A.backgroundColor } : A, A5 = (A, u, e, C, B, g, t) => {
  let i = B5(A, u, e, C);
  if (i === null) return [];
  let I = (o, E) => {
    if (o === null) return [];
    let [, , Q, s, l, c] = o;
    return [B.line(Q, s, l, c, E)];
  };
  switch (C) {
    case "dot":
    case "circle":
    case "circle_outline": {
      let [o, E, Q] = i;
      return delete g.strokeLineDash, [B.circle(o, E, Q, { ...g, fill: C === "circle_outline" ? t : A.strokeColor, fillStyle: "solid", stroke: A.strokeColor, roughness: Math.min(0.5, g.roughness || 0) })];
    }
    case "triangle":
    case "triangle_outline": {
      let [o, E, Q, s, l, c] = i;
      return delete g.strokeLineDash, [B.polygon([[o, E], [Q, s], [l, c], [o, E]], { ...g, fill: C === "triangle_outline" ? t : A.strokeColor, fillStyle: "solid", roughness: Math.min(1, g.roughness || 0) })];
    }
    case "diamond":
    case "diamond_outline": {
      let [o, E, Q, s, l, c, D, h] = i;
      return delete g.strokeLineDash, [B.polygon([[o, E], [Q, s], [l, c], [D, h], [o, E]], { ...g, fill: C === "diamond_outline" ? t : A.strokeColor, fillStyle: "solid", roughness: Math.min(1, g.roughness || 0) })];
    }
    case "crowfoot_one":
      return I(i, g);
    case "bar":
    case "arrow":
    case "crowfoot_many":
    case "crowfoot_one_or_many":
    default: {
      let [o, E, Q, s, l, c] = i;
      if (A.strokeStyle === "dotted") {
        let D = Nk(A.strokeWidth - 1);
        g.strokeLineDash = [D[0], D[1] - 1];
      } else delete g.strokeLineDash;
      return g.roughness = Math.min(1, g.roughness || 0), [B.line(Q, s, o, E, g), B.line(l, c, o, E, g), ...C === "crowfoot_one_or_many" ? I(B5(A, u, e, "crowfoot_one"), g) : []];
    }
  }
}, A4A = (A, u, { isExporting: e, canvasBackgroundColor: C, embedsValidationStatus: B }) => {
  switch (A.type) {
    case "rectangle":
    case "iframe":
    case "embeddable": {
      let g;
      if (A.roundness) {
        let t = A.width, i = A.height, I = sB(Math.min(t, i), A);
        g = u.path(`M ${I} 0 L ${t - I} 0 Q ${t} 0, ${t} ${I} L ${t} ${i - I} Q ${t} ${i}, ${t - I} ${i} L ${I} ${i} Q 0 ${i}, 0 ${i - I} L 0 ${I} Q 0 0, ${I} 0`, EC($F(A, e, B), !0));
      } else g = u.rectangle(0, 0, A.width, A.height, EC($F(A, e, B), !1));
      return g;
    }
    case "diamond": {
      let g, [t, i, I, o, E, Q, s, l] = Mk(A);
      if (A.roundness) {
        let c = sB(Math.abs(t - s), A), D = sB(Math.abs(o - i), A);
        g = u.path(`M ${t + c} ${i + D} L ${I - c} ${o - D}
            C ${I} ${o}, ${I} ${o}, ${I - c} ${o + D}
            L ${E + c} ${Q - D}
            C ${E} ${Q}, ${E} ${Q}, ${E - c} ${Q - D}
            L ${s + c} ${l + D}
            C ${s} ${l}, ${s} ${l}, ${s + c} ${l - D}
            L ${t - c} ${i + D}
            C ${t} ${i}, ${t} ${i}, ${t + c} ${i + D}`, EC(A, !0));
      } else g = u.polygon([[t, i], [I, o], [E, Q], [s, l]], EC(A));
      return g;
    }
    case "ellipse":
      return u.ellipse(A.width / 2, A.height / 2, A.width, A.height, EC(A));
    case "line":
    case "arrow": {
      let g, t = EC(A), i = A.points.length ? A.points : [U(0, 0)];
      if (xA(A) ? i.every((I) => Math.abs(I[0]) <= 1e6 && Math.abs(I[1]) <= 1e6) ? g = [u.path(u4A(i, 16), EC(A, !0))] : (console.error("Elbow arrow with extreme point positions detected. Arrow not rendered.", A.id, JSON.stringify(i)), g = []) : A.roundness ? g = [u.curve(i, t)] : t.fill ? g = [u.polygon(i, t)] : g = [u.linearPath(i, t)], A.type === "arrow") {
        let { startArrowhead: I = null, endArrowhead: o = "arrow" } = A;
        if (I !== null) {
          let E = A5(A, g, "start", I, u, t, C);
          g.push(...E);
        }
        if (o !== null) {
          let E = A5(A, g, "end", o, u, t, C);
          g.push(...E);
        }
      }
      return g;
    }
    case "freedraw": {
      let g;
      if (PlA(A), Wg(A.points)) {
        let t = EEA(A.points, 0.75);
        g = u.curve(t, { ...EC(A), stroke: "none" });
      } else g = null;
      return g;
    }
    case "frame":
    case "magicframe":
    case "text":
    case "image":
      return null;
    default:
      return fE(A, `generateElementShape(): Unimplemented type ${A?.type}`), null;
  }
}, u4A = (A, u) => {
  let e = [];
  for (let B = 1; B < A.length - 1; B += 1) {
    let g = A[B - 1], t = A[B + 1], i = A[B], I = Rg(i, g), o = Rg(t, i), E = Math.min(u, Uu(A[B], t) / 2, Uu(A[B], g) / 2);
    I ? g[0] < i[0] ? e.push([A[B][0] - E, A[B][1]]) : e.push([A[B][0] + E, A[B][1]]) : g[1] < i[1] ? e.push([A[B][0], A[B][1] - E]) : e.push([A[B][0], A[B][1] + E]), e.push(A[B]), o ? t[0] < i[0] ? e.push([A[B][0] - E, A[B][1]]) : e.push([A[B][0] + E, A[B][1]]) : t[1] < i[1] ? e.push([A[B][0], A[B][1] - E]) : e.push([A[B][0], A[B][1] + E]);
  }
  let C = [`M ${A[0][0]} ${A[0][1]}`];
  for (let B = 0; B < e.length; B += 3) C.push(`L ${e[B][0]} ${e[B][1]}`), C.push(`Q ${e[B + 1][0]} ${e[B + 1][1]}, ${e[B + 2][0]} ${e[B + 2][1]}`);
  return C.push(`L ${A[A.length - 1][0]} ${A[A.length - 1][1]}`), C.join(" ");
}, II = (A) => {
  let u = A.map((C) => C[0]), e = A.map((C) => C[1]);
  return { width: Math.max(...u) - Math.min(...u), height: Math.max(...e) - Math.min(...e) };
}, ml = (A, u, e, C) => {
  let B = e.map((s) => s[A]), g = Math.max(...B), t = Math.min(...B), i = g - t, I = i === 0 ? 1 : u / i, o = 1 / 0, E = e.map((s) => {
    let l = s[A] * I, c = [...s];
    return c[A] = l, l < o && (o = l), c;
  });
  if (!C || E.length === 2) return E;
  let Q = t - o;
  return E.map((s) => s.map((l, c) => c === A ? l + Q : l));
}, Rk = class Ys {
  static getBounds(u, e) {
    let C = Ys.boundsCache.get(u);
    if (C?.version && C.version === u.version && !Xu(u)) return C.bounds;
    let B = Ys.calculateBounds(u, e);
    return Ys.boundsCache.set(u, { version: u.version, bounds: B }), B;
  }
  static calculateBounds(u, e) {
    let C, [B, g, t, i, I, o] = Au(u, e);
    if (RC(u)) {
      let [E, Q, s, l] = F2(u.points.map(([c, D]) => EA(U(c, D), U(I - u.x, o - u.y), u.angle)));
      return [E + u.x, Q + u.y, s + u.x, l + u.y];
    } else if ($A(u)) C = E4A(u, I, o, e);
    else if (u.type === "diamond") {
      let [E, Q] = EA(U(I, g), U(I, o), u.angle), [s, l] = EA(U(I, i), U(I, o), u.angle), [c, D] = EA(U(B, o), U(I, o), u.angle), [h, F] = EA(U(t, o), U(I, o), u.angle), m = Math.min(E, s, c, h), p = Math.min(Q, l, D, F), k = Math.max(E, s, c, h), b = Math.max(Q, l, D, F);
      C = [m, p, k, b];
    } else if (u.type === "ellipse") {
      let E = (t - B) / 2, Q = (i - g) / 2, s = Math.cos(u.angle), l = Math.sin(u.angle), c = Math.hypot(E * s, Q * l), D = Math.hypot(Q * s, E * l);
      C = [I - c, o - D, I + c, o + D];
    } else {
      let [E, Q] = EA(U(B, g), U(I, o), u.angle), [s, l] = EA(U(B, i), U(I, o), u.angle), [c, D] = EA(U(t, i), U(I, o), u.angle), [h, F] = EA(U(t, g), U(I, o), u.angle), m = Math.min(E, s, c, h), p = Math.min(Q, l, D, F), k = Math.max(E, s, c, h), b = Math.max(Q, l, D, F);
      C = [m, p, k, b];
    }
    return C;
  }
};
J(Rk, "boundsCache", /* @__PURE__ */ new WeakMap());
var e4A = Rk, Au = (A, u, e = !1) => {
  if (RC(A)) return B4A(A);
  if ($A(A)) return LA.getElementAbsoluteCoords(A, u, e);
  if (UA(A)) {
    let C = u ? _0(A, u) : null;
    if (Eu(C)) {
      let { x: B, y: g } = LA.getBoundTextElementPosition(C, A, u);
      return [B, g, B + A.width, g + A.height, B + A.width / 2, g + A.height / 2];
    }
  }
  return [A.x, A.y, A.x + A.width, A.y + A.height, A.x + A.width / 2, A.y + A.height / 2];
}, u5 = (A, u) => {
  let [e, C, B, g, t, i] = Au(A, u), I = U(t, i);
  if ($A(A) || RC(A)) {
    let F = [], m = 0;
    for (; m < A.points.length - 1; ) F.push(KA(EA(U(A.points[m][0] + A.x, A.points[m][1] + A.y), I, A.angle), EA(U(A.points[m + 1][0] + A.x, A.points[m + 1][1] + A.y), I, A.angle))), m++;
    return F;
  }
  let [o, E, Q, s, l, c, D, h] = [[e, C], [B, C], [e, g], [B, g], [t, C], [t, g], [e, i], [B, i]].map((F) => EA(F, I, A.angle));
  return A.type === "diamond" ? [KA(l, D), KA(l, h), KA(c, D), KA(c, h)] : A.type === "ellipse" ? [KA(l, D), KA(l, h), KA(c, D), KA(c, h), KA(l, D), KA(l, h), KA(c, D), KA(c, h)] : [KA(o, E), KA(Q, s), KA(o, Q), KA(E, s), KA(o, h), KA(Q, h), KA(E, D), KA(s, D)];
}, Mk = (A) => {
  let u = Math.floor(A.width / 2) + 1, e = 0, C = A.width, B = Math.floor(A.height / 2) + 1, g = u, t = A.height;
  return [u, e, C, B, g, t, 0, B];
}, e5 = (A, u, e, C, B) => {
  let g = 1 - A;
  return Math.pow(g, 3) * u + 3 * Math.pow(g, 2) * A * e + 3 * g * Math.pow(A, 2) * C + Math.pow(A, 3) * B;
}, C5 = (A, u, e, C) => {
  let B = u - A, g = e - u, t = C - e, i = 3 * B - 6 * g + 3 * t, I = 6 * g - 6 * B, o = 3 * B, E = I * I - 4 * i * o;
  if (!(E >= 0)) return !1;
  let Q = null, s = null, l = 1 / 0, c = 1 / 0;
  return i === 0 ? l = c = -o / I : (l = (-I + Math.sqrt(E)) / (2 * i), c = (-I - Math.sqrt(E)) / (2 * i)), l >= 0 && l <= 1 && (Q = e5(l, A, u, e, C)), c >= 0 && c <= 1 && (s = e5(c, A, u, e, C)), [Q, s];
}, C4A = (A, u, e, C) => {
  let B = C5(A[0], u[0], e[0], C[0]), g = C5(A[1], u[1], e[1], C[1]), t = Math.min(A[0], C[0]), i = Math.max(A[0], C[0]);
  if (B) {
    let E = B.filter((Q) => Q !== null);
    t = Math.min(t, ...E), i = Math.max(i, ...E);
  }
  let I = Math.min(A[1], C[1]), o = Math.max(A[1], C[1]);
  if (g) {
    let E = g.filter((Q) => Q !== null);
    I = Math.min(I, ...E), o = Math.max(o, ...E);
  }
  return [t, I, i, o];
}, l4 = (A, u) => {
  let e = U(0, 0), { minX: C, minY: B, maxX: g, maxY: t } = A.reduce((i, { op: I, data: o }) => {
    if (I === "move") {
      let E = g2(o);
      he(E != null, "Op data is not a point"), e = E;
    } else if (I === "bcurveTo") {
      let E = U(o[0], o[1]), Q = U(o[2], o[3]), s = U(o[4], o[5]), l = u ? u(E) : E, c = u ? u(Q) : Q, D = u ? u(s) : s, h = u ? u(e) : e;
      e = s;
      let [F, m, p, k] = C4A(h, l, c, D);
      i.minX = Math.min(i.minX, F), i.minY = Math.min(i.minY, m), i.maxX = Math.max(i.maxX, p), i.maxY = Math.max(i.maxY, k);
    }
    return i;
  }, { minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0 });
  return [C, B, g, t];
}, F2 = (A) => {
  let u = 1 / 0, e = 1 / 0, C = -1 / 0, B = -1 / 0;
  for (let [g, t] of A) u = Math.min(u, g), e = Math.min(e, t), C = Math.max(C, g), B = Math.max(B, t);
  return [u, e, C, B];
}, B4A = (A) => {
  let [u, e, C, B] = F2(A.points), g = u + A.x, t = e + A.y, i = C + A.x, I = B + A.y;
  return [g, t, i, I, (g + i) / 2, (t + I) / 2];
}, g4A = (A) => {
  switch (A) {
    case "arrow":
      return 25;
    case "diamond":
    case "diamond_outline":
      return 12;
    case "crowfoot_many":
    case "crowfoot_one":
    case "crowfoot_one_or_many":
      return 20;
    default:
      return 15;
  }
}, t4A = (A) => {
  switch (A) {
    case "bar":
      return 90;
    case "arrow":
      return 20;
    default:
      return 25;
  }
}, B5 = (A, u, e, C) => {
  if (u.length < 1) return null;
  let B = si(u[0]);
  if (B.length < 1) return null;
  let g = e === "start" ? 1 : B.length - 1, t = B[g].data;
  he(t.length === 6, "Op data length is not 6");
  let i = U(t[4], t[5]), I = U(t[2], t[3]), o = U(t[0], t[1]), E = B[g - 1], Q = U(0, 0);
  if (E.op === "move") {
    let uA = g2(E.data);
    he(uA != null, "Op data is not a point"), Q = uA;
  } else E.op === "bcurveTo" && (Q = U(E.data[4], E.data[5]));
  let s = (uA, O) => Math.pow(1 - uA, 3) * i[O] + 3 * uA * Math.pow(1 - uA, 2) * I[O] + 3 * Math.pow(uA, 2) * (1 - uA) * o[O] + Q[O] * Math.pow(uA, 3), [l, c] = e === "start" ? Q : i, [D, h] = [s(0.3, 0), s(0.3, 1)], F = Math.hypot(l - D, c - h), m = (l - D) / F, p = (c - h) / F, k = g4A(C), b = 0;
  {
    let [uA, O] = e === "end" ? A.points[A.points.length - 1] : A.points[0], [$, X] = A.points.length > 1 ? e === "end" ? A.points[A.points.length - 2] : A.points[1] : [0, 0];
    b = Math.hypot(uA - $, O - X);
  }
  let f = Math.min(k, b * (C === "diamond" || C === "diamond_outline" ? 0.25 : 0.5)), L = l - m * f, N = c - p * f;
  if (C === "dot" || C === "circle" || C === "circle_outline") {
    let uA = Math.hypot(N - c, L - l) + A.strokeWidth - 2;
    return [l, c, uA];
  }
  let M = t4A(C);
  if (C === "crowfoot_many" || C === "crowfoot_one_or_many") {
    let [uA, O] = EA(U(l, c), U(L, N), cE(-M)), [$, X] = EA(U(l, c), U(L, N), cE(M));
    return [L, N, uA, O, $, X];
  }
  let [v, K] = EA(U(L, N), U(l, c), -M * Math.PI / 180), [q, j] = EA(U(L, N), U(l, c), cE(M));
  if (C === "diamond" || C === "diamond_outline") {
    let uA, O;
    if (e === "start") {
      let [$, X] = A.points.length > 1 ? A.points[1] : [0, 0];
      [uA, O] = EA(U(l + f * 2, c), U(l, c), Math.atan2(X - c, $ - l));
    } else {
      let [$, X] = A.points.length > 1 ? A.points[A.points.length - 2] : [0, 0];
      [uA, O] = EA(U(l - f * 2, c), U(l, c), Math.atan2(c - X, l - $));
    }
    return [l, c, v, K, uA, O, q, j];
  }
  return [l, c, v, K, q, j];
}, i4A = (A) => {
  let u = ni.generator(), e = EC(A), C = A.roundness ? "curve" : e.fill ? "polygon" : "linearPath";
  return u[C](A.points, e);
}, E4A = (A, u, e, C) => {
  let B = gu(A, C);
  if (A.points.length < 2) {
    let [o, E] = A.points[0], [Q, s] = EA(U(A.x + o, A.y + E), U(u, e), A.angle), l = [Q, s, Q, s];
    if (B) {
      let c = LA.getMinMaxXYWithBoundText(A, C, [Q, s, Q, s], B);
      l = [c[0], c[1], c[2], c[3]];
    }
    return l;
  }
  let g = a0.get(A)?.[0] ?? i4A(A), t = si(g), i = l4(t, ([o, E]) => EA(U(A.x + o, A.y + E), U(u, e), A.angle)), I = [i[0], i[1], i[2], i[3]];
  if (B) {
    let o = LA.getMinMaxXYWithBoundText(A, C, I, B);
    I = [o[0], o[1], o[2], o[3]];
  }
  return I;
}, hB = (A, u) => e4A.getBounds(A, u), Nu = (A, u) => {
  if (!A.length) return [0, 0, 0, 0];
  let e = 1 / 0, C = -1 / 0, B = 1 / 0, g = -1 / 0, t = u || PA(A);
  return A.forEach((i) => {
    let [I, o, E, Q] = hB(i, t);
    e = Math.min(e, I), B = Math.min(B, o), C = Math.max(C, E), g = Math.max(g, Q);
  }), [e, B, C, g];
}, p2 = (A, u) => {
  let [e, C, B, g] = Nu(A);
  return [e + u.x, C + u.y, B + u.x, g + u.y];
}, ei = (A, u, e, C) => {
  if (!($A(A) || RC(A))) return [A.x, A.y, A.x + u, A.y + e];
  let B = ml(0, u, ml(1, e, A.points, C), C), g;
  if (RC(A)) g = F2(B);
  else {
    let E = ni.generator(), Q = A.roundness ? E.curve(B, EC(A)) : E.linearPath(B, EC(A)), s = si(Q);
    g = l4(s);
  }
  let [t, i, I, o] = g;
  return [t + A.x, i + A.y, I + A.x, o + A.y];
}, g5 = (A, u) => {
  let e = ni.generator(), C = A.roundness == null ? e.linearPath(u, EC(A)) : e.curve(u, EC(A)), B = si(C), [g, t, i, I] = l4(B);
  return [g + A.x, t + A.y, i + A.x, I + A.y];
}, a4A = (A, u) => {
  if (!A.length) return [0, 0, 0, 0];
  let e = 1 / 0, C = A[0], B = PA(A);
  return A.forEach((g) => {
    let [t, i, I, o] = hB(g, B), E = Uu(U((t + I) / 2, (i + o) / 2), U(u.x, u.y));
    E < e && (e = E, C = g);
  }), hB(C, B);
}, lB = (A) => {
  let [u, e, C, B] = Nu(A);
  return { minX: u, minY: e, maxX: C, maxY: B, width: C - u, height: B - e, midX: (u + C) / 2, midY: (e + B) / 2 };
}, I4A = ({ scrollX: A, scrollY: u, width: e, height: C, zoom: B }) => [-A, -u, -A + e / B.value, -u + C / B.value], m2 = (A) => U(A[0] + (A[2] - A[0]) / 2, A[1] + (A[3] - A[1]) / 2), o4A = (A, u) => {
  if (A == null || u == null) return !1;
  let [e, C, B, g] = A, [t, i, I, o] = u;
  return e < I && B > t && C < o && g > i;
}, c4 = (A, u) => {
  switch (A.type) {
    case "rectangle":
    case "image":
    case "text":
    case "iframe":
    case "embeddable":
    case "frame":
    case "magicframe":
      return Q4A(A, u);
    case "diamond":
      return n4A(A, u);
    case "ellipse":
      return r4A(A, u);
  }
}, Q4A = (A, u) => {
  let e = U(A.x + A.width / 2, A.y + A.height / 2), C = EA(u, e, -A.angle), [B, g] = sk(A);
  return Math.min(...B.map((t) => t2(C, t)), ...g.map((t) => m8(t, C)).filter((t) => t !== null));
}, n4A = (A, u) => {
  let e = U(A.x + A.width / 2, A.y + A.height / 2), C = EA(u, e, -A.angle), [B, g] = lk(A);
  return Math.min(...B.map((t) => t2(C, t)), ...g.map((t) => m8(t, C)).filter((t) => t !== null));
}, r4A = (A, u) => {
  let e = U(A.x + A.width / 2, A.y + A.height / 2);
  return ylA(EA(u, e, -A.angle), rk(e, A.width / 2, A.height / 2));
}, s4A = (A) => !A[Z.CTRL_OR_CMD], nE = (A) => A.isBindingEnabled, qu = 5, k2 = 10, y2 = 4, l4A = (A, u) => {
  let e = [];
  return u.forEach((C) => {
    let B = A.getNonDeletedElement(C);
    B != null && e.push(B);
  }), e;
}, d4 = (A, u, e, C, B) => {
  let g = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set();
  t5(A, u, e, "start", g, t, C), t5(A, e, u, "end", g, t, C);
  let i = Array.from(t).filter((I) => !g.has(I));
  l4A(B, i).forEach((I) => {
    nA(I, { boundElements: I.boundElements?.filter((o) => o.type !== "arrow" || o.id !== A.id) });
  });
}, t5 = (A, u, e, C, B, g, t) => {
  if (u !== "keep") {
    if (u === null) {
      let i = w4A(A, C);
      i != null && g.add(i);
      return;
    }
    Kk(A) ? (e == null || (e === "keep" ? !vk(A, u, C) : C === "start" || e.id !== u.id)) && (Ag(A, u, C, t), B.add(u.id)) : (Ag(A, u, C, t), B.add(u.id));
  }
}, c4A = (A, u, e, C) => {
  let B = Jk(A, u, e), g = u === "start" ? A.startBinding?.elementId : A.endBinding?.elementId;
  if (g) {
    let t = e.get(g);
    if (DB(t) && vs(t, B, e, C)) return t;
  }
  return null;
}, Yk = (A, u, e) => ["start", "end"].map((C) => c4A(A, C, u, e)), d4A = (A, u, e, C, B, g) => {
  let t = A.points.length - 1, i = e.findIndex((Q) => Q === 0) > -1, I = e.findIndex((Q) => Q === t) > -1, o = i ? u ? Wa(A, "start", C, B, g) : null : xA(A) ? "keep" : Wa(A, "start", C, B, g), E = I ? u ? Wa(A, "end", C, B, g) : null : xA(A) ? "keep" : Wa(A, "end", C, B, g);
  return [o, E];
}, D4A = (A, u, e, C, B) => {
  if (xA(A)) return ["keep", "keep"];
  let [g, t] = Yk(A, u, B), i = g && C ? Wa(A, "start", u, e, B) : null, I = t && C ? Wa(A, "end", u, e, B) : null;
  return [i, I];
}, kl = (A, u, e, C, B, g, t) => {
  A.forEach((i) => {
    let [I, o] = g?.length ? d4A(i, B, g ?? [], u, e, t) : D4A(i, u, e, B, t);
    d4(i, I, o, u, C);
  });
}, Sd = (A, u, e) => A.length > 50 ? [] : A.filter($A).flatMap((C) => Yk(C, u, e)).filter((C) => C !== null).filter((C) => A.filter((B) => B.id === C?.id).length === 0), u1 = (A, u, e, C, B) => {
  u.startBoundElement != null && Ag(A, u.startBoundElement, "start", C);
  let g = oB(e, B, C, u.zoom, xA(A), xA(A));
  g !== null && (vk(A, g, "end") || Ag(A, g, "end", C));
}, h4A = (A, u) => {
  let e = A.gap, C = dn(u, u.width, u.height);
  return e > C && (e = k2 + y2), { ...A, gap: e };
}, Ag = (A, u, e, C) => {
  if (!Eu(A)) return;
  let B = { elementId: u.id, ...xA(A) ? { ...yl(A, u, e), focus: 0, gap: 0 } : { ...h4A(m4A(A, u, e, C), u) } };
  nA(A, { [e === "start" ? "startBinding" : "endBinding"]: B }), PA(u.boundElements || []).has(A.id) || nA(u, { boundElements: (u.boundElements || []).concat({ id: A.id, type: "arrow" }) });
}, vk = (A, u, e) => {
  let C = A[e === "start" ? "endBinding" : "startBinding"];
  return Hk(A, C?.elementId, u);
}, Hk = (A, u, e) => u === e.id && Kk(A), Kk = (A) => A.points.length < 3, w4A = (A, u) => {
  let e = u === "start" ? "startBinding" : "endBinding", C = A[e];
  return C == null ? null : (nA(A, { [e]: null }), C.elementId);
}, oB = (A, u, e, C, B, g) => {
  if (g) {
    let t = !1, i = p4A(u, (o) => DB(o, !1) && vs(o, A, e, C, (B || !pd(o)) && !OA(o))).filter((o) => t ? !1 : (pd(o) || (t = !0), !0));
    if (!i || i.length === 0) return null;
    if (i.length === 1) return i[0];
    let I = i.filter((o) => vs(o, A, e, C, !1));
    return I.length === 1 ? I[0] : i.sort((o, E) => E.width ** 2 + E.height ** 2 - (o.width ** 2 + o.height ** 2)).pop();
  }
  return F4A(u, (t) => DB(t, !1) && vs(t, A, e, C, (B || !pd(t)) && !OA(t)));
}, F4A = (A, u) => {
  let e = null;
  for (let C = A.length - 1; C >= 0; --C) {
    let B = A[C];
    if (!B.isDeleted && u(B)) {
      e = B;
      break;
    }
  }
  return e;
}, p4A = (A, u) => {
  let e = [];
  for (let C = A.length - 1; C >= 0; --C) {
    let B = A[C];
    B.isDeleted || u(B) && e.push(B);
  }
  return e;
}, m4A = (A, u, e, C) => {
  let B = e === "start" ? -1 : 1, g = B === -1 ? 0 : A.points.length - 1, t = g - B, i = LA.getPointAtIndexGlobalCoordinates(A, g, C), I = LA.getPointAtIndexGlobalCoordinates(A, t, C);
  return { focus: S4A(u, I, i), gap: Math.max(1, c4(u, i)) };
}, Ve = (A, u, e) => {
  let { newSize: C, simultaneouslyUpdated: B } = e ?? {}, g = y4A(B);
  DB(A) && D4(u, A, (t) => {
    if (!$A(t) || t.isDeleted || !k4A(t, A)) return;
    let i = t.startBinding ? u.get(t.startBinding.elementId) : null, I = t.endBinding ? u.get(t.endBinding.elementId) : null, o = null, E = null;
    i && I && (o = hB(i, u), E = hB(I, u));
    let Q = { startBinding: i5(A, t.startBinding, C), endBinding: i5(A, t.endBinding, C) };
    if (g.has(t.id)) {
      nA(t, Q, !0);
      return;
    }
    let s = h4(u, t, (c, D) => {
      if (c && DB(c) && (D === "startBinding" || D === "endBinding") && (A.id === t[D]?.elementId || A.id === t[D === "startBinding" ? "endBinding" : "startBinding"]?.elementId && !o4A(o, E))) {
        let h = x4A(t, D, Q[D], c, u);
        if (h) return { index: D === "startBinding" ? 0 : t.points.length - 1, point: h };
      }
      return null;
    }).filter((c) => c !== null);
    LA.movePoints(t, s, { ...A.id === t.startBinding?.elementId ? { startBinding: Q.startBinding } : {}, ...A.id === t.endBinding?.elementId ? { endBinding: Q.endBinding } : {} });
    let l = gu(t, u);
    l && !l.isDeleted && Dn(t, u, !1);
  });
}, k4A = (A, u) => A.startBinding?.elementId === u.id || A.endBinding?.elementId === u.id, y4A = (A) => new Set((A || []).map((u) => u.id)), b4A = (A, u, e, C, B, g, t) => {
  let i = RE(vA(u, A));
  return !e || !C ? i : U4A(g, e, B, t) ? xk(e, C, A) : RE(vA(A, U(e.x + e.width / 2, e.y + e.height / 2)));
}, U4A = (A, u, e, C) => {
  let B = c4(u, A), g = dn(u, u.width, u.height, C);
  return B > g ? null : B;
}, TQ = (A, u, e) => {
  let C = u && qB(u), B = A.points[e === "start" ? 0 : A.points.length - 1], g = U(A.x + B[0], A.y + B[1]), t = GaA(u) ? f4A(u, g) : g;
  if (u && C) {
    let i = m2(C), I = dk(u, KA(i, nu(s0(de(vA(t, i)), Math.max(u.width, u.height)), i)))[0], o = Uu(t, i), E = Math.max(Uu(I ?? t, i), 1e-4), Q = VB(o / E, 6);
    switch (!0) {
      case Q > 0.9:
        return o - E > qu || ZQ(t, I) < 1e-4 ? t : nu(s0(de(vA(t, I ?? i)), Q > 1 ? qu : -qu), I ?? i);
      default:
        return G4A(t, u, C);
    }
  }
  return t;
}, G4A = (A, u, e) => {
  let C = m2(e), B = RE(vA(A, C));
  switch (!0) {
    case l0(B, ze):
      return EA(U((e[0] + e[2]) / 2 + 0.1, e[1]), C, u.angle);
    case l0(B, r0):
      return EA(U(e[2], (e[1] + e[3]) / 2 + 0.1), C, u.angle);
    case l0(B, V0):
      return EA(U((e[0] + e[2]) / 2 - 0.1, e[3]), C, u.angle);
    default:
      return EA(U(e[0], (e[1] + e[3]) / 2 - 0.1), C, u.angle);
  }
}, f4A = (A, u) => {
  let e = U(A.x + A.width / 2, A.y + A.height / 2), C = EA(u, e, -A.angle);
  return C[0] < A.x && C[1] < A.y ? C[1] - A.y > -qu ? EA(U(A.x - qu, A.y), e, A.angle) : EA(U(A.x, A.y - qu), e, A.angle) : C[0] < A.x && C[1] > A.y + A.height ? C[0] - A.x > -qu ? EA(U(A.x, A.y + A.height + qu), e, A.angle) : EA(U(A.x - qu, A.y + A.height), e, A.angle) : C[0] > A.x + A.width && C[1] > A.y + A.height ? C[0] - A.x < A.width + qu ? EA(U(A.x + A.width, A.y + A.height + qu), e, A.angle) : EA(U(A.x + A.width + qu, A.y + A.height), e, A.angle) : C[0] > A.x + A.width && C[1] < A.y ? C[0] - A.x < A.width + qu ? EA(U(A.x + A.width, A.y - qu), e, A.angle) : EA(U(A.x + A.width + qu, A.y), e, A.angle) : u;
}, L4A = (A, u, e = 0.05) => {
  let { x: C, y: B, width: g, height: t, angle: i } = A, I = U(C + g / 2 - 0.1, B + t / 2 - 0.1), o = EA(u, I, -i), E = Qu(e * t, 5, 80), Q = Qu(e * g, 5, 80);
  return o[0] <= C + g / 2 && o[1] > I[1] - E && o[1] < I[1] + E ? EA(U(C - qu, I[1]), I, i) : o[1] <= B + t / 2 && o[0] > I[0] - Q && o[0] < I[0] + Q ? EA(U(I[0], B - qu), I, i) : o[0] >= C + g / 2 && o[1] > I[1] - E && o[1] < I[1] + E ? EA(U(C + g + qu, I[1]), I, i) : o[1] >= B + t / 2 && o[0] > I[0] - Q && o[0] < I[0] + Q ? EA(U(I[0], B + t + qu), I, i) : u;
}, x4A = (A, u, e, C, B) => {
  if (e == null || e.elementId !== C.id && A.points.length > 2) return null;
  let g = u === "startBinding" ? -1 : 1, t = g === -1 ? 0 : A.points.length - 1;
  if (xA(A) && Dl(e)) {
    let Q = w4(e.fixedPoint) ?? yl(A, C, u === "startBinding" ? "start" : "end").fixedPoint, s = U(C.x + C.width / 2, C.y + C.height / 2), l = U(C.x + Q[0] * C.width, C.y + Q[1] * C.height), c = EA(l, s, C.angle);
    return LA.pointFromAbsoluteCoords(A, c, B);
  }
  let i = t - g, I = LA.getPointAtIndexGlobalCoordinates(A, i, B), o = N4A(C, e.focus, I), E;
  if (e.gap === 0) E = o;
  else {
    let Q = LA.getPointAtIndexGlobalCoordinates(A, t, B), s = U(C.x + C.width / 2, C.y + C.height / 2), l = Uu(I, Q) + Uu(I, s) + Math.max(C.width, C.height) * 2, c = dk(C, KA(I, nu(s0(de(vA(o, I)), l), I)), e.gap).sort((D, h) => ZQ(D, I) - ZQ(h, I));
    c.length > 1 ? E = c[0] : c.length === 1 ? E = o : E = Q;
  }
  return LA.pointFromAbsoluteCoords(A, E, B);
}, yl = (A, u, e, C) => {
  let B = [u.x, u.y, u.x + u.width, u.y + u.height], g = TQ(A, u, e), t = U(B[0] + (B[2] - B[0]) / 2, B[1] + (B[3] - B[1]) / 2), i = EA(g, t, -u.angle);
  return { fixedPoint: w4([(i[0] - u.x) / u.width, (i[1] - u.y) / u.height]) };
}, i5 = (A, u, e) => {
  if (u == null || e == null) return u;
  let { width: C, height: B } = e, { width: g, height: t } = A, i = Math.max(1, Math.min(dn(A, C, B), u.gap * (C < B ? C / g : B / t)));
  return { ...u, gap: i };
}, Wa = (A, u, e, C, B) => oB(Jk(A, u, e), C, e, B, xA(A), xA(A)), Jk = (A, u, e) => {
  let C = u === "start" ? 0 : -1;
  return aB(LA.getPointAtIndexGlobalCoordinates(A, C, e));
}, Zk = (A, u, e, C) => {
  let B = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Set(), t = C === "duplicatesServeAsOld", i = new Map([...e].map(([I, o]) => [o, I]));
  u.forEach((I) => {
    let { boundElements: o } = I;
    if (o != null && o.length > 0 && (o.forEach((E) => {
      t && !e.has(E.id) && B.add(E.id);
    }), g.add(e.get(I.id))), TB(I)) {
      if (I.startBinding != null) {
        let { elementId: E } = I.startBinding;
        t && !e.has(E) && g.add(E);
      }
      if (I.endBinding != null) {
        let { elementId: E } = I.endBinding;
        t && !e.has(E) && g.add(E);
      }
      (I.startBinding != null || I.endBinding != null) && B.add(e.get(I.id));
    }
  }), A.filter(({ id: I }) => B.has(I)).forEach((I) => {
    let { startBinding: o, endBinding: E } = I;
    nA(I, { startBinding: E5(o, e), endBinding: E5(E, e) });
  }), A.filter(({ id: I }) => g.has(I)).forEach((I) => {
    let o = i.get(I.id), E = A.find(({ id: Q }) => Q === o)?.boundElements;
    E && E.length > 0 && nA(I, { boundElements: E.map((Q) => e.has(Q.id) ? { id: e.get(Q.id), type: Q.type } : Q) });
  });
}, E5 = (A, u) => A == null ? null : { ...A, elementId: u.get(A.elementId) ?? A.elementId }, qk = (A, u) => {
  let e = PA(A);
  for (let C of u) ja.unbindAffected(e, C, nA), Ta.unbindAffected(e, C, nA);
}, zQ = (A, u, e = []) => {
  if (!A) return null;
  let C = A.filter((B) => !u.has(B.id));
  return C.push(...e.map((B) => ({ id: B.id, type: B.type }))), C;
}, vs = (A, { x: u, y: e }, C, B, g) => {
  let t = dn(A, A.width, A.height, B), i = Ng(A, C);
  return OD(U(u, e), i, t) || g === !0 && EI(U(u, e), qB(A));
}, dn = (A, u, e, C) => {
  let B = C?.value && C.value < 1 ? C.value : 1, g = (A.type === "diamond" ? 1 / Math.sqrt(2) : 1) * Math.min(u, e);
  return Math.max(16, Math.min(0.25 * g, 32), k2 / B + y2);
}, S4A = (A, u, e) => {
  let C = U(A.x + A.width / 2, A.y + A.height / 2);
  if (dB(u, e)) return 0;
  let B = EA(u, C, -A.angle), g = EA(e, C, -A.angle), t = Math.sign(v0(vA(g, u), vA(g, C))) * -1, i = KA(g, nu(s0(de(vA(g, B)), Math.max(A.width * 2, A.height * 2)), g)), I = A.type === "diamond" ? [KA(U(A.x + A.width / 2, A.y), U(A.x + A.width / 2, A.y + A.height)), KA(U(A.x, A.y + A.height / 2), U(A.x + A.width, A.y + A.height / 2))] : [KA(U(A.x, A.y), U(A.x + A.width, A.y + A.height)), KA(U(A.x + A.width, A.y), U(A.x, A.y + A.height))], o = A.type === "diamond" ? [KA(U(A.x + A.width / 2, A.y - A.height), U(A.x + A.width / 2, A.y + A.height * 2)), KA(U(A.x - A.width, A.y + A.height / 2), U(A.x + A.width * 2, A.y + A.height / 2))] : [KA(U(A.x - A.width, A.y - A.height), U(A.x + A.width * 2, A.y + A.height * 2)), KA(U(A.x + A.width * 2, A.y - A.height), U(A.x - A.width, A.y + A.height * 2))];
  return [qQ(i, o[0]), qQ(i, o[1])].filter((E) => E !== null).sort((E, Q) => ZQ(E, e) - ZQ(Q, e)).map((E, Q) => t * Uu(C, E) / (A.type === "diamond" ? Uu(I[Q][0], I[Q][1]) / 2 : Math.sqrt(A.width ** 2 + A.height ** 2) / 2)).sort((E, Q) => Math.abs(E) - Math.abs(Q))[0] ?? 0;
}, N4A = (A, u, e) => {
  let C = U(A.x + A.width / 2, A.y + A.height / 2);
  if (u === 0) return C;
  let B = (A.type === "diamond" ? [U(A.x, A.y + A.height / 2), U(A.x + A.width / 2, A.y), U(A.x + A.width, A.y + A.height / 2), U(A.x + A.width / 2, A.y + A.height)] : [U(A.x, A.y), U(A.x + A.width, A.y), U(A.x + A.width, A.y + A.height), U(A.x, A.y + A.height)]).map((t) => nu(s0(vA(t, C), Math.abs(u)), C)).map((t) => EA(t, C, A.angle)), g = [v0(vA(e, B[0]), vA(B[1], B[0])) > 0 && (u > 0 ? v0(vA(e, B[1]), vA(B[2], B[1])) < 0 : v0(vA(e, B[3]), vA(B[0], B[3])) < 0), v0(vA(e, B[1]), vA(B[2], B[1])) > 0 && (u > 0 ? v0(vA(e, B[2]), vA(B[3], B[2])) < 0 : v0(vA(e, B[0]), vA(B[1], B[0])) < 0), v0(vA(e, B[2]), vA(B[3], B[2])) > 0 && (u > 0 ? v0(vA(e, B[3]), vA(B[0], B[3])) < 0 : v0(vA(e, B[1]), vA(B[2], B[1])) < 0), v0(vA(e, B[3]), vA(B[0], B[3])) > 0 && (u > 0 ? v0(vA(e, B[0]), vA(B[1], B[0])) < 0 : v0(vA(e, B[2]), vA(B[3], B[2])) < 0)];
  return g[0] ? u > 0 ? B[1] : B[0] : g[1] ? u > 0 ? B[2] : B[1] : g[2] ? u > 0 ? B[3] : B[2] : u > 0 ? B[0] : B[3];
}, R4A = /* @__PURE__ */ new Set(["boundElements", "frameId", "containerId", "startBinding", "endBinding"]), D4 = (A, u, e) => {
  DB(u) && (u.boundElements?.slice() ?? []).forEach(({ id: C }) => {
    e(A.get(C), "boundElements", C);
  });
}, h4 = (A, u, e) => {
  let C = [];
  if (u.frameId) {
    let B = u.frameId;
    C.push(e(A.get(B), "frameId", B));
  }
  if (Xu(u)) {
    let B = u.containerId;
    C.push(e(A.get(B), "containerId", B));
  }
  if (Eu(u)) {
    if (u.startBinding) {
      let B = u.startBinding.elementId;
      C.push(e(A.get(B), "startBinding", B));
    }
    if (u.endBinding) {
      let B = u.endBinding.elementId;
      C.push(e(A.get(B), "endBinding", B));
    }
  }
  return C;
}, ja = class {
  static unbindAffected(A, u, e) {
    u && h4(A, u, (C) => {
      !C || C.isDeleted || D4(A, C, (B, g, t) => {
        t === u.id && e(C, { boundElements: zQ(C.boundElements, /* @__PURE__ */ new Set([t])) });
      });
    });
  }
};
J(ja, "rebindAffected", (A, u, e) => {
  !u || u.isDeleted || h4(A, u, (C, B) => {
    if (!C || C.isDeleted) {
      e(u, { [B]: null });
      return;
    }
    B !== "frameId" && (C.boundElements?.find((g) => g.id === u.id) || (Eu(u) && e(C, { boundElements: zQ(C.boundElements, /* @__PURE__ */ new Set(), new Array(u)) }), UA(u) && (C.boundElements?.find((g) => g.type === "text") ? e(u, { [B]: null }) : e(C, { boundElements: zQ(C.boundElements, /* @__PURE__ */ new Set(), new Array(u)) }))));
  });
});
var Ta = class {
  static unbindAffected(A, u, e) {
    u && D4(A, u, (C) => {
      !C || C.isDeleted || h4(A, C, (B, g, t) => {
        t === u.id && e(C, { [g]: null });
      });
    });
  }
};
J(Ta, "rebindAffected", (A, u, e) => {
  !u || u.isDeleted || D4(A, u, (C, B, g) => {
    if (!C || C.isDeleted) {
      e(u, { boundElements: zQ(u.boundElements, /* @__PURE__ */ new Set([g])) });
      return;
    }
    UA(C) && ((u.boundElements?.slice() ?? []).reverse().find((t) => t.type === "text")?.id === C.id ? C.containerId !== u.id && e(C, { containerId: u.id }) : (C.containerId !== null && e(C, { containerId: null }), e(u, { boundElements: zQ(u.boundElements, /* @__PURE__ */ new Set([C.id])) })));
  });
});
var e1 = (A, u) => {
  let [e, C] = w4(A);
  return EA(U(u.x + u.width * e, u.y + u.height * C), U(u.x + u.width / 2, u.y + u.height / 2), u.angle);
}, M4A = (A, u) => {
  let e = A.startBinding && u.get(A.startBinding.elementId), C = A.endBinding && u.get(A.endBinding.elementId), B = e && A.startBinding ? e1(A.startBinding.fixedPoint, e) : U(A.x + A.points[0][0], A.y + A.points[0][1]), g = C && A.endBinding ? e1(A.endBinding.fixedPoint, C) : U(A.x + A.points[A.points.length - 1][0], A.y + A.points[A.points.length - 1][1]);
  return [B, g];
}, Y4A = (A, u) => {
  let [e, C] = M4A(A, u);
  return [LA.pointFromAbsoluteCoords(A, e, u), LA.pointFromAbsoluteCoords(A, C, u)];
}, w4 = (A) => A && (Math.abs(A[0] - 0.5) < 1e-4 || Math.abs(A[1] - 0.5) < 1e-4) ? A.map((u) => Math.abs(u - 0.5) < 1e-4 ? 0.5001 : u) : A, v4A = (A, u) => {
  let [e, C, B, g] = u, { x: t, y: i } = EB({ sceneX: e, sceneY: C }, A), { x: I, y: o } = EB({ sceneX: B, sceneY: g }, A);
  return I - t > A.width || o - i > A.height;
}, Wk = ({ scenePoint: A, viewportDimensions: u, zoom: e, offsets: C }) => {
  let B = (u.width - (C?.right ?? 0)) / 2 / e.value - A.x;
  B += (C?.left ?? 0) / 2 / e.value;
  let g = (u.height - (C?.bottom ?? 0)) / 2 / e.value - A.y;
  return g += (C?.top ?? 0) / 2 / e.value, { scrollX: B, scrollY: g };
}, PQ = (A, u) => {
  if (A = odA(A), !A.length) return { scrollX: 0, scrollY: 0 };
  let [e, C, B, g] = Nu(A);
  v4A(u, [e, C, B, g]) && ([e, C, B, g] = a4A(A, Tu({ clientX: u.scrollX, clientY: u.scrollY }, u)));
  let t = (e + B) / 2, i = (C + g) / 2;
  return Wk({ scenePoint: { x: t, y: i }, viewportDimensions: { width: u.width, height: u.height }, zoom: u.zoom });
}, vg = (A) => Qu(VB(A, 6), u2, e2), H4A = (A) => Qu(Math.round(A), 1, 100), jk = (A) => Qu(Math.round(A), 1, 100), Tk = (A, u, e) => {
  let C = e.reduce((B, g) => (g.groupIds.includes(A) && (B[g.id] = !0), B), {});
  return Object.keys(C).length < 2 ? u.selectedGroupIds[A] || u.editingGroupId === A ? { selectedElementIds: u.selectedElementIds, selectedGroupIds: { ...u.selectedGroupIds, [A]: !1 }, editingGroupId: null } : u : { editingGroupId: u.editingGroupId, selectedGroupIds: { ...u.selectedGroupIds, [A]: !0 }, selectedElementIds: { ...u.selectedElementIds, ...C } };
}, Ue = (function() {
  let A = null, u = null, e = null, C = (g, t, i, I) => {
    if (e !== void 0 && t === u && g === A && i.editingGroupId === e?.editingGroupId) return e;
    let o = {};
    for (let s of g) {
      let l = s.groupIds;
      if (i.editingGroupId) {
        let c = l.indexOf(i.editingGroupId);
        c > -1 && (l = l.slice(0, c));
      }
      if (l.length > 0) {
        let c = l[l.length - 1];
        o[c] = !0;
      }
    }
    let E = {}, Q = t.reduce((s, l) => {
      if (l.isDeleted) return s;
      let c = l.groupIds.find((D) => o[D]);
      return c && (s[l.id] = !0, Array.isArray(E[c]) ? E[c].push(l.id) : E[c] = [l.id]), s;
    }, {});
    for (let s of Object.keys(E)) E[s].length < 2 && o[s] && (o[s] = !1);
    return u = t, A = g, e = { editingGroupId: i.editingGroupId, selectedGroupIds: o, selectedElementIds: yu({ ...i.selectedElementIds, ...Q }, I) }, e;
  }, B = (g, t, i, I) => {
    let o = I ? I.scene.getSelectedElements({ selectedElementIds: g.selectedElementIds, elements: t }) : iu(t, g);
    return o.length ? C(o, t, g, i) : { selectedGroupIds: {}, editingGroupId: null, selectedElementIds: yu(g.selectedElementIds, i) };
  };
  return B.clearCache = () => {
    u = null, A = null, e = null;
  }, B;
})(), zk = (A, u) => Pk(A, u) != null, Pk = (A, u) => u.groupIds.filter((e) => e !== A.editingGroupId).find((e) => A.selectedGroupIds[e]), hE = (A) => Object.entries(A.selectedGroupIds).filter(([u, e]) => e).map(([u, e]) => u), Ok = (A, u) => {
  let e = { ...u, selectedGroupIds: {} };
  for (let C of A) {
    let B = C.groupIds;
    if (u.editingGroupId) {
      let g = B.indexOf(u.editingGroupId);
      g > -1 && (B = B.slice(0, g));
    }
    if (B.length > 0) {
      let g = B[B.length - 1];
      e = { ...e, ...Tk(g, e, A) };
    }
  }
  return e.selectedGroupIds;
}, K4A = (A, u) => ({ ...A, editingGroupId: u.groupIds.length ? u.groupIds[0] : null, selectedGroupIds: {}, selectedElementIds: { [u.id]: !0 } }), OQ = (A, u) => A.groupIds.includes(u), Vu = (A, u) => {
  let e = [];
  for (let C of A.values()) OQ(C, u) && e.push(C);
  return e;
}, J4A = (A, u) => A.groupIds.find((e) => u[e]), Z4A = (A, u, e) => {
  let C = [...A], B = u ? A.indexOf(u) : -1, g = B > -1 ? B : A.length;
  for (let t = 0; t < g; t++) C[t] = e(C[t]);
  return C;
}, q4A = (A, u, e) => {
  let C = [...A], B = e ? C.indexOf(e) : -1, g = B > -1 ? B : C.length;
  return C.splice(g, 0, u), C;
}, W4A = (A, u) => A.filter((e) => !u[e]), F4 = (A, u) => {
  let e = /* @__PURE__ */ new Map();
  return A.forEach((C) => {
    let B = C.groupIds.length === 0 ? C.id : C.groupIds[C.groupIds.length - 1], g = e.get(B) || [], t = gu(C, u);
    t && g.push(t), e.set(B, [...g, C]);
  }), Array.from(e.values());
}, j4A = (A) => {
  let u = /* @__PURE__ */ new Set();
  for (let [, e] of A) if (!e.isDeleted) for (let C of e.groupIds ?? []) u.add(C);
  return u;
}, Vk = (A) => {
  let u = A.flatMap((B) => B.groupIds), e = /* @__PURE__ */ new Map(), C = 0;
  for (let B of u) e.set(B, (e.get(B) ?? 0) + 1), e.get(B) > C && (C = e.get(B));
  return C === A.length;
}, oI = (A) => A.groupIds.length > 0, T4A = 8, a5 = 99999, p4 = (A) => T4A / A, qe = class {
};
J(qe, "referenceSnapPoints", null), J(qe, "visibleGaps", null), J(qe, "setReferenceSnapPoints", (A) => {
  qe.referenceSnapPoints = A;
}), J(qe, "getReferenceSnapPoints", () => qe.referenceSnapPoints), J(qe, "setVisibleGaps", (A) => {
  qe.visibleGaps = A;
}), J(qe, "getVisibleGaps", () => qe.visibleGaps), J(qe, "destroy", () => {
  qe.referenceSnapPoints = null, qe.visibleGaps = null;
});
var Lg = qe, VQ = (A) => A.props.gridModeEnabled ?? A.state.gridModeEnabled, ii = ({ event: A, app: u, selectedElements: e }) => A ? u.state.objectsSnapModeEnabled && !A[Z.CTRL_OR_CMD] || !u.state.objectsSnapModeEnabled && A[Z.CTRL_OR_CMD] && !VQ(u) : e.length === 1 && e[0].type === "arrow" ? !1 : u.state.objectsSnapModeEnabled, z4A = (A, u, e = 0.01) => Math.abs(A - u) <= e, XQ = (A, u, { omitCenter: e, boundingBoxCorners: C, dragOffset: B } = { omitCenter: !1, boundingBoxCorners: !1 }) => {
  let g = [];
  if (A.length === 1) {
    let t = A[0], [i, I, o, E, Q, s] = Au(t, u);
    B && (i += B.x, o += B.x, Q += B.x, I += B.y, E += B.y, s += B.y);
    let l = (o - i) / 2, c = (E - I) / 2;
    if ((t.type === "diamond" || t.type === "ellipse") && !C) {
      let D = EA(U(i, I + c), U(Q, s), t.angle), h = EA(U(i + l, I), U(Q, s), t.angle), F = EA(U(o, I + c), U(Q, s), t.angle), m = EA(U(i + l, E), U(Q, s), t.angle), p = U(Q, s);
      g = e ? [D, h, F, m] : [D, h, F, m, p];
    } else {
      let D = EA(U(i, I), U(Q, s), t.angle), h = EA(U(o, I), U(Q, s), t.angle), F = EA(U(i, E), U(Q, s), t.angle), m = EA(U(o, E), U(Q, s), t.angle), p = U(Q, s);
      g = e ? [D, h, F, m] : [D, h, F, m, p];
    }
  } else if (A.length > 1) {
    let [t, i, I, o] = p2(A, B ?? { x: 0, y: 0 }), E = I - t, Q = o - i, s = U(t, i), l = U(I, i), c = U(t, o), D = U(I, o), h = U(t + E / 2, i + Q / 2);
    g = e ? [s, l, c, D] : [s, l, c, D, h];
  }
  return g.map((t) => U(E0(t[0]), E0(t[1])));
}, Xk = (A, u, e, C) => {
  let B = u.filter((g) => OA(g)).map((g) => g.id);
  return Wy(A, u, e, C).filter((g) => !(g.frameId && B.includes(g.frameId)));
}, P4A = (A, u, e, C) => {
  let B = Xk(A, u, e, C), g = F4(B, C).filter((Q) => !(Q.length === 1 && Xu(Q[0]))).map((Q) => Nu(Q).map((s) => E0(s))), t = g.sort((Q, s) => Q[0] - s[0]), i = [], I = 0;
  A: for (let Q = 0; Q < t.length; Q++) {
    let s = t[Q];
    for (let l = Q + 1; l < t.length; l++) {
      if (++I > a5) break A;
      let c = t[l], [, D, h, F] = s, [m, p, , k] = c;
      h < m && cl(se(D, F), se(p, k)) && i.push({ startBounds: s, endBounds: c, startSide: [U(h, D), U(h, F)], endSide: [U(m, p), U(m, k)], length: m - h, overlap: dl(se(D, F), se(p, k)) });
    }
  }
  let o = g.sort((Q, s) => Q[1] - s[1]), E = [];
  I = 0;
  A: for (let Q = 0; Q < o.length; Q++) {
    let s = o[Q];
    for (let l = Q + 1; l < o.length; l++) {
      if (++I > a5) break A;
      let c = o[l], [D, , h, F] = s, [m, p, k] = c;
      F < p && cl(se(D, h), se(m, k)) && E.push({ startBounds: s, endBounds: c, startSide: [U(D, F), U(h, F)], endSide: [U(m, p), U(k, p)], length: p - F, overlap: dl(se(D, h), se(m, k)) });
    }
  }
  return { horizontalGaps: i, verticalGaps: E };
}, I5 = (A, u, e, C, B, g, t) => {
  if (!ii({ app: e, event: C, selectedElements: A })) return [];
  if (A.length === 0) return [];
  let i = Lg.getVisibleGaps();
  if (i) {
    let { horizontalGaps: I, verticalGaps: o } = i, [E, Q, s, l] = p2(A, u).map((h) => E0(h)), c = (E + s) / 2, D = (Q + l) / 2;
    for (let h of I) {
      if (!cl(se(Q, l), h.overlap)) continue;
      let F = h.startSide[0][0] + h.length / 2, m = E0(F - c);
      if (h.length > s - E && Math.abs(m) <= t.x) {
        Math.abs(m) < t.x && (B.length = 0), t.x = Math.abs(m);
        let M = { type: "gap", direction: "center_horizontal", gap: h, offset: m };
        B.push(M);
        continue;
      }
      let [, , p] = h.endBounds, k = E - p, b = E0(h.length - k);
      if (Math.abs(b) <= t.x) {
        Math.abs(b) < t.x && (B.length = 0), t.x = Math.abs(b);
        let M = { type: "gap", direction: "side_right", gap: h, offset: b };
        B.push(M);
        continue;
      }
      let [f, , ,] = h.startBounds, L = f - s, N = E0(L - h.length);
      if (Math.abs(N) <= t.x) {
        Math.abs(N) < t.x && (B.length = 0), t.x = Math.abs(N);
        let M = { type: "gap", direction: "side_left", gap: h, offset: N };
        B.push(M);
        continue;
      }
    }
    for (let h of o) {
      if (!cl(se(E, s), h.overlap)) continue;
      let F = h.startSide[0][1] + h.length / 2, m = E0(F - D);
      if (h.length > l - Q && Math.abs(m) <= t.y) {
        Math.abs(m) < t.y && (g.length = 0), t.y = Math.abs(m);
        let M = { type: "gap", direction: "center_vertical", gap: h, offset: m };
        g.push(M);
        continue;
      }
      let [, p, ,] = h.startBounds, k = p - l, b = E0(k - h.length);
      if (Math.abs(b) <= t.y) {
        Math.abs(b) < t.y && (g.length = 0), t.y = Math.abs(b);
        let M = { type: "gap", direction: "side_top", gap: h, offset: b };
        g.push(M);
        continue;
      }
      let [, , , f] = h.endBounds, L = E0(Q - f), N = h.length - L;
      if (Math.abs(N) <= t.y) {
        Math.abs(N) < t.y && (g.length = 0), t.y = Math.abs(N);
        let M = { type: "gap", direction: "side_bottom", gap: h, offset: N };
        g.push(M);
        continue;
      }
    }
  }
}, O4A = (A, u, e, C) => {
  let B = Xk(A, u, e, C);
  return F4(B, C).filter((g) => !(g.length === 1 && Xu(g[0]))).flatMap((g) => XQ(g, C));
}, QI = (A, u, e, C, B, g, t) => {
  if (!ii({ app: e, event: C, selectedElements: A }) || A.length === 0 && u.length === 0) return [];
  let i = Lg.getReferenceSnapPoints();
  if (i) for (let I of u) for (let o of i) {
    let E = o[0] - I[0], Q = o[1] - I[1];
    Math.abs(E) <= t.x && (Math.abs(E) < t.x && (B.length = 0), B.push({ type: "point", points: [I, o], offset: E }), t.x = Math.abs(E)), Math.abs(Q) <= t.y && (Math.abs(Q) < t.y && (g.length = 0), g.push({ type: "point", points: [I, o], offset: Q }), t.y = Math.abs(Q));
  }
}, V4A = (A, u, e, C, B) => {
  let g = e.state, t = iu(A, g);
  if (!ii({ app: e, event: C, selectedElements: t }) || t.length === 0) return { snapOffset: { x: 0, y: 0 }, snapLines: [] };
  u.x = E0(u.x), u.y = E0(u.y);
  let i = [], I = [], o = p4(g.zoom.value), E = { x: o, y: o }, Q = XQ(t, B, { dragOffset: u });
  QI(t, Q, e, C, i, I, E), I5(t, u, e, C, i, I, E);
  let s = { x: i[0]?.offset ?? 0, y: I[0]?.offset ?? 0 };
  E.x = 0, E.y = 0, i.length = 0, I.length = 0;
  let l = { x: E0(u.x + s.x), y: E0(u.y + s.y) };
  QI(t, XQ(t, B, { dragOffset: l }), e, C, i, I, E), I5(t, l, e, C, i, I, E);
  let c = b2(i, I), D = _4A(t, l, [...i, ...I].filter((h) => h.type === "gap"));
  return { snapOffset: s, snapLines: [...c, ...D] };
}, E0 = (A) => Math.round(A * 10 ** 6) / 10 ** 6, o5 = (A) => {
  let u = /* @__PURE__ */ new Map();
  for (let e of A) {
    let C = e.join(",");
    u.has(C) || u.set(C, e);
  }
  return Array.from(u.values());
}, b2 = (A, u) => {
  let e = {}, C = {};
  if (A.length > 0) {
    for (let B of A) if (B.type === "point") {
      let g = E0(B.points[0][0]);
      e[g] || (e[g] = []), e[g].push(...B.points.map((t) => U(E0(t[0]), E0(t[1]))));
    }
  }
  if (u.length > 0) {
    for (let B of u) if (B.type === "point") {
      let g = E0(B.points[0][1]);
      C[g] || (C[g] = []), C[g].push(...B.points.map((t) => U(E0(t[0]), E0(t[1]))));
    }
  }
  return Object.entries(e).map(([B, g]) => ({ type: "points", points: o5(g.map((t) => U(Number(B), t[1])).sort((t, i) => t[1] - i[1])) })).concat(Object.entries(C).map(([B, g]) => ({ type: "points", points: o5(g.map((t) => U(t[0], Number(B))).sort((t, i) => t[0] - i[0])) })));
}, X4A = (A) => {
  let u = /* @__PURE__ */ new Map();
  for (let e of A) {
    let C = e.points.flat().map((B) => [E0(B)]).join(",");
    u.has(C) || u.set(C, e);
  }
  return Array.from(u.values());
}, _4A = (A, u, e) => {
  let [C, B, g, t] = p2(A, u), i = [];
  for (let I of e) {
    let [o, E, Q, s] = I.gap.startBounds, [l, c, D, h] = I.gap.endBounds, F = dl(se(B, t), I.gap.overlap), m = dl(se(C, g), I.gap.overlap);
    switch (I.direction) {
      case "center_horizontal": {
        if (F) {
          let p = (F[0] + F[1]) / 2;
          i.push({ type: "gap", direction: "horizontal", points: [U(I.gap.startSide[0][0], p), U(C, p)] }, { type: "gap", direction: "horizontal", points: [U(g, p), U(I.gap.endSide[0][0], p)] });
        }
        break;
      }
      case "center_vertical": {
        if (m) {
          let p = (m[0] + m[1]) / 2;
          i.push({ type: "gap", direction: "vertical", points: [U(p, I.gap.startSide[0][1]), U(p, B)] }, { type: "gap", direction: "vertical", points: [U(p, t), U(p, I.gap.endSide[0][1])] });
        }
        break;
      }
      case "side_right": {
        if (F) {
          let p = (F[0] + F[1]) / 2;
          i.push({ type: "gap", direction: "horizontal", points: [U(Q, p), U(l, p)] }, { type: "gap", direction: "horizontal", points: [U(D, p), U(C, p)] });
        }
        break;
      }
      case "side_left": {
        if (F) {
          let p = (F[0] + F[1]) / 2;
          i.push({ type: "gap", direction: "horizontal", points: [U(g, p), U(o, p)] }, { type: "gap", direction: "horizontal", points: [U(Q, p), U(l, p)] });
        }
        break;
      }
      case "side_top": {
        if (m) {
          let p = (m[0] + m[1]) / 2;
          i.push({ type: "gap", direction: "vertical", points: [U(p, t), U(p, E)] }, { type: "gap", direction: "vertical", points: [U(p, s), U(p, c)] });
        }
        break;
      }
      case "side_bottom": {
        if (m) {
          let p = (m[0] + m[1]) / 2;
          i.push({ type: "gap", direction: "vertical", points: [U(p, s), U(p, c)] }, { type: "gap", direction: "vertical", points: [U(p, h), U(p, B)] });
        }
        break;
      }
    }
  }
  return X4A(i.map((I) => ({ ...I, points: I.points.map((o) => U(E0(o[0]), E0(o[1]))) })));
}, Q5 = (A, u, e, C, B, g) => {
  if (!ii({ event: C, selectedElements: A, app: e }) || A.length === 0 || A.length === 1 && !z4A(A[0].angle, 0)) return { snapOffset: { x: 0, y: 0 }, snapLines: [] };
  let [t, i, I, o] = Nu(u);
  g && (g.includes("e") ? I += B.x : g.includes("w") && (t += B.x), g.includes("n") ? i += B.y : g.includes("s") && (o += B.y));
  let E = [];
  if (g) switch (g) {
    case "e": {
      E.push(U(I, i), U(I, o));
      break;
    }
    case "w": {
      E.push(U(t, i), U(t, o));
      break;
    }
    case "n": {
      E.push(U(t, i), U(I, i));
      break;
    }
    case "s": {
      E.push(U(t, o), U(I, o));
      break;
    }
    case "ne": {
      E.push(U(I, i));
      break;
    }
    case "nw": {
      E.push(U(t, i));
      break;
    }
    case "se": {
      E.push(U(I, o));
      break;
    }
    case "sw": {
      E.push(U(t, o));
      break;
    }
  }
  let Q = p4(e.state.zoom.value), s = { x: Q, y: Q }, l = [], c = [];
  QI(u, E, e, C, l, c, s);
  let D = { x: l[0]?.offset ?? 0, y: c[0]?.offset ?? 0 };
  s.x = 0, s.y = 0, l.length = 0, c.length = 0;
  let [h, F, m, p] = Nu(A).map((f) => E0(f)), k = [U(h, F), U(h, p), U(m, F), U(m, p)];
  QI(A, k, e, C, l, c, s);
  let b = b2(l, c);
  return { snapOffset: D, snapLines: b };
}, $4A = (A, u, e, C, B, g) => {
  if (!ii({ event: e, selectedElements: [A], app: u })) return { snapOffset: { x: 0, y: 0 }, snapLines: [] };
  let t = [U(C.x + B.x, C.y + B.y)], i = p4(u.state.zoom.value), I = { x: i, y: i }, o = [], E = [];
  QI([A], t, u, e, o, E, I);
  let Q = { x: o[0]?.offset ?? 0, y: E[0]?.offset ?? 0 };
  I.x = 0, I.y = 0, o.length = 0, E.length = 0;
  let s = XQ([A], g, { boundingBoxCorners: !0, omitCenter: !0 });
  QI([A], s, u, e, o, E, I);
  let l = b2(o, E);
  return { snapOffset: Q, snapLines: l };
}, A3A = (A, u, e, C, B) => {
  if (!ii({ event: C, selectedElements: [], app: u })) return { originOffset: { x: 0, y: 0 }, snapLines: [] };
  let g = Wy(A, [], u.state, B), t = p4(u.state.zoom.value), i = { x: t, y: t }, I = [], o = [];
  for (let E of g) {
    let Q = XQ([E], B);
    for (let s of Q) {
      let l = s[0] - e.x;
      Math.abs(l) <= Math.abs(i.x) && (Math.abs(l) < Math.abs(i.x) && (o.length = 0), o.push({ type: "pointer", points: [s, U(s[0], e.y)], direction: "vertical" }), i.x = l);
      let c = s[1] - e.y;
      Math.abs(c) <= Math.abs(i.y) && (Math.abs(c) < Math.abs(i.y) && (I.length = 0), I.push({ type: "pointer", points: [s, U(e.x, s[1])], direction: "horizontal" }), i.y = c);
    }
  }
  return { originOffset: { x: o.length > 0 ? o[0].points[0][0] - e.x : 0, y: I.length > 0 ? I[0].points[0][1] - e.y : 0 }, snapLines: [...o, ...I] };
}, u3A = (A) => A === H0.rectangle || A === H0.ellipse || A === H0.diamond || A === H0.frame || A === H0.magicframe || A === H0.image || A === H0.text, f0 = (A, u, e) => e ? [Math.round(A / e) * e, Math.round(u / e) * e] : [A, u], Mt = { version: null, points: [], zoom: null }, D0 = class Iu {
  constructor(u) {
    J(this, "elementId"), J(this, "selectedPointsIndices"), J(this, "pointerDownState"), J(this, "isDragging"), J(this, "lastUncommittedPoint"), J(this, "pointerOffset"), J(this, "startBindingElement"), J(this, "endBindingElement"), J(this, "hoverPointIndex"), J(this, "segmentMidPointHoveredCoords"), J(this, "elbowed"), this.elementId = u.id, dB(u.points[0], U(0, 0)) || console.error("Linear element is not normalized", Error().stack), this.selectedPointsIndices = null, this.lastUncommittedPoint = null, this.isDragging = !1, this.pointerOffset = { x: 0, y: 0 }, this.startBindingElement = "keep", this.endBindingElement = "keep", this.pointerDownState = { prevSelectedPointsIndices: null, lastClickedPoint: -1, lastClickedIsEndPoint: !1, origin: null, segmentMidpoint: { value: null, index: null, added: !1 } }, this.hoverPointIndex = -1, this.segmentMidPointHoveredCoords = null, this.elbowed = xA(u) && u.elbowed;
  }
  static getElement(u, e) {
    return e.get(u) || null;
  }
  static handleBoxSelection(u, e, C, B) {
    if (!e.editingLinearElement || !e.selectionElement) return !1;
    let { editingLinearElement: g } = e, { selectedPointsIndices: t, elementId: i } = g, I = Iu.getElement(i, B);
    if (!I) return !1;
    let [o, E, Q, s] = Au(e.selectionElement, B), l = Iu.getPointsGlobalCoordinates(I, B).reduce((c, D, h) => ((D[0] >= o && D[0] <= Q && D[1] >= E && D[1] <= s || u.shiftKey && t?.includes(h)) && c.push(h), c), []).filter((c) => !(xA(I) && c !== 0 && c !== I.points.length - 1));
    C({ editingLinearElement: { ...g, selectedPointsIndices: l.length ? l : null } });
  }
  static handlePointDragging(u, e, C, B, g, t, i) {
    if (!t) return !1;
    let { elementId: I } = t, o = i.getNonDeletedElementsMap(), E = Iu.getElement(I, o);
    if (!E || xA(E) && !t.pointerDownState.lastClickedIsEndPoint && t.pointerDownState.lastClickedPoint !== 0) return !1;
    let Q = xA(E) ? t.selectedPointsIndices?.reduce((c, D) => D === 0 ? [0, c[1]] : [c[0], E.points.length - 1], [!1, !1]).filter((c) => typeof c == "number") : t.selectedPointsIndices, s = xA(E) ? t.pointerDownState.lastClickedPoint > 0 ? E.points.length - 1 : 0 : t.pointerDownState.lastClickedPoint, l = E.points[s];
    if (Q && l) {
      if (dQ(u) && Q.length === 1 && E.points.length > 1) {
        let c = Q[0], D = E.points[c === 0 ? 1 : c - 1], [h, F] = Iu._getShiftLockedDelta(E, o, D, U(C, B), u[Z.CTRL_OR_CMD] ? null : e.getEffectiveGridSize());
        Iu.movePoints(E, [{ index: c, point: U(h + D[0], F + D[1]), isDragging: c === s }]);
      } else {
        let c = Iu.createPointAt(E, o, C - t.pointerOffset.x, B - t.pointerOffset.y, u[Z.CTRL_OR_CMD] ? null : e.getEffectiveGridSize()), D = c[0] - l[0], h = c[1] - l[1];
        Iu.movePoints(E, Q.map((F) => {
          let m = F === s ? Iu.createPointAt(E, o, C - t.pointerOffset.x, B - t.pointerOffset.y, u[Z.CTRL_OR_CMD] ? null : e.getEffectiveGridSize()) : U(E.points[F][0] + D, E.points[F][1] + h);
          return { index: F, point: m, isDragging: F === s };
        }));
      }
      if (gu(E, o) && Dn(E, o, !1), TB(E, !1)) {
        let c = [];
        Q[0] === 0 && c.push(aB(Iu.getPointGlobalCoordinates(E, E.points[0], o)));
        let D = Q[Q.length - 1];
        D === E.points.length - 1 && c.push(aB(Iu.getPointGlobalCoordinates(E, E.points[D], o))), c.length && g(E, c);
      }
      return !0;
    }
    return !1;
  }
  static handlePointerUp(u, e, C, B) {
    let g = B.getNonDeletedElementsMap(), t = B.getNonDeletedElements(), { elementId: i, selectedPointsIndices: I, isDragging: o, pointerDownState: E } = e, Q = Iu.getElement(i, g);
    if (!Q) return e;
    let s = {};
    if (o && I) {
      for (let l of I) if (l === 0 || l === Q.points.length - 1) {
        Wg(Q.points, C.zoom.value) && Iu.movePoints(Q, [{ index: l, point: l === 0 ? Q.points[Q.points.length - 1] : Q.points[0] }]);
        let c = nE(C) ? oB(aB(Iu.getPointAtIndexGlobalCoordinates(Q, l, g)), t, g, C.zoom, xA(Q), xA(Q)) : null;
        s[l === 0 ? "startBindingElement" : "endBindingElement"] = c;
      }
    }
    return { ...e, ...s, selectedPointsIndices: o || u.shiftKey ? !o && u.shiftKey && E.prevSelectedPointsIndices?.includes(E.lastClickedPoint) ? I && I.filter((l) => l !== E.lastClickedPoint) : I : I?.includes(E.lastClickedPoint) ? [E.lastClickedPoint] : I, isDragging: !1, pointerOffset: { x: 0, y: 0 } };
  }
  static isSegmentTooShort(u, e, C, B, g) {
    if (xA(u)) return B >= 0 && B < u.points.length ? Uu(e, C) * g.value < Iu.POINT_HANDLE_SIZE / 2 : !1;
    let t = Uu(e, C);
    return u.points.length > 2 && u.roundness && (t = MlA(u, C)), t * g.value < Iu.POINT_HANDLE_SIZE * 4;
  }
  static getSegmentMidPoint(u, e, C, B, g) {
    let t = rn(e, C);
    if (u.points.length > 2 && u.roundness) {
      let i = hk(u, u.points[B]);
      if (i) {
        let I = YlA(u, u.points[B], 0.5);
        t = Iu.getPointGlobalCoordinates(u, wk(i[0], i[1], i[2], i[3], I), g);
      }
    }
    return t;
  }
  static getSegmentMidPointIndex(u, e, C, B) {
    let g = Iu.getElement(u.elementId, B);
    if (!g) return -1;
    let t = Iu.getEditorMidPoints(g, B, e), i = 0;
    for (; i < t.length; ) {
      if (Iu.arePointsEqual(C, t[i])) return i + 1;
      i++;
    }
    return -1;
  }
  static handlePointerDown(u, e, C, B, g, t) {
    let i = e.state, I = t.getNonDeletedElementsMap(), o = t.getNonDeletedElements(), E = { didAddPoint: !1, hitElement: null, linearElementEditor: null };
    if (!g) return E;
    let { elementId: Q } = g, s = Iu.getElement(Q, I);
    if (!s) return E;
    let l = Iu.getSegmentMidpointHitCoords(g, B, i, I), c = null;
    if (l) c = Iu.getSegmentMidPointIndex(g, i, l, I);
    else if (u.altKey && i.editingLinearElement) return g.lastUncommittedPoint == null && (nA(s, { points: [...s.points, Iu.createPointAt(s, I, B.x, B.y, u[Z.CTRL_OR_CMD] ? null : e.getEffectiveGridSize())] }), E.didAddPoint = !0), C.shouldCaptureIncrement(), E.linearElementEditor = { ...g, pointerDownState: { prevSelectedPointsIndices: g.selectedPointsIndices, lastClickedPoint: -1, lastClickedIsEndPoint: !1, origin: { x: B.x, y: B.y }, segmentMidpoint: { value: l, index: c, added: !1 } }, selectedPointsIndices: [s.points.length - 1], lastUncommittedPoint: null, endBindingElement: oB(B, o, I, e.state.zoom, g.elbowed) }, E.didAddPoint = !0, E;
    let D = Iu.getPointIndexUnderCursor(s, I, i.zoom, B.x, B.y);
    if (D >= 0 || l) E.hitElement = s;
    else {
      let { startBindingElement: N, endBindingElement: M } = g;
      nE(i) && TB(s) && d4(s, N, M, I, t);
    }
    let [h, F, m, p] = Au(s, I), k = (h + m) / 2, b = (F + p) / 2, f = D > -1 && EA(U(s.x + s.points[D][0], s.y + s.points[D][1]), U(k, b), s.angle), L = D > -1 || u.shiftKey ? u.shiftKey || g.selectedPointsIndices?.includes(D) ? e3A([...g.selectedPointsIndices || [], D]) : [D] : null;
    return E.linearElementEditor = { ...g, pointerDownState: { prevSelectedPointsIndices: g.selectedPointsIndices, lastClickedPoint: D, lastClickedIsEndPoint: D === s.points.length - 1, origin: { x: B.x, y: B.y }, segmentMidpoint: { value: l, index: c, added: !1 } }, selectedPointsIndices: L, pointerOffset: f ? { x: B.x - f[0], y: B.y - f[1] } : { x: 0, y: 0 } }, E;
  }
  static arePointsEqual(u, e) {
    return !u && !e ? !0 : !u || !e ? !1 : dB(u, e);
  }
  static handlePointerMove(u, e, C, B, g) {
    let t = B.state;
    if (!t.editingLinearElement) return null;
    let { elementId: i, lastUncommittedPoint: I } = t.editingLinearElement, o = Iu.getElement(i, g);
    if (!o) return t.editingLinearElement;
    let { points: E } = o, Q = E[E.length - 1];
    if (!u.altKey) return Q === I && Iu.deletePoints(o, [E.length - 1]), { ...t.editingLinearElement, lastUncommittedPoint: null };
    let s;
    if (dQ(u) && E.length >= 2) {
      let l = E[E.length - 2], [c, D] = Iu._getShiftLockedDelta(o, g, l, U(e, C), u[Z.CTRL_OR_CMD] ? null : B.getEffectiveGridSize());
      s = U(c + l[0], D + l[1]);
    } else s = Iu.createPointAt(o, g, e - t.editingLinearElement.pointerOffset.x, C - t.editingLinearElement.pointerOffset.y, u[Z.CTRL_OR_CMD] || xA(o) ? null : B.getEffectiveGridSize());
    return Q === I ? Iu.movePoints(o, [{ index: o.points.length - 1, point: s }]) : Iu.addPoints(o, [{ point: s }]), { ...t.editingLinearElement, lastUncommittedPoint: o.points[o.points.length - 1] };
  }
  static getPointGlobalCoordinates(u, e, C) {
    let [B, g, t, i] = Au(u, C), I = (B + t) / 2, o = (g + i) / 2, { x: E, y: Q } = u;
    return EA(U(E + e[0], Q + e[1]), U(I, o), u.angle);
  }
  static getPointsGlobalCoordinates(u, e) {
    let [C, B, g, t] = Au(u, e), i = (C + g) / 2, I = (B + t) / 2;
    return u.points.map((o) => {
      let { x: E, y: Q } = u;
      return EA(U(E + o[0], Q + o[1]), U(i, I), u.angle);
    });
  }
  static getPointAtIndexGlobalCoordinates(u, e, C) {
    let B = e < 0 ? u.points.length + e : e, [g, t, i, I] = Au(u, C), o = (g + i) / 2, E = (t + I) / 2, Q = u.points[B], { x: s, y: l } = u;
    return EA(Q ? U(s + Q[0], l + Q[1]) : U(s, l), U(o, E), u.angle);
  }
  static pointFromAbsoluteCoords(u, e, C) {
    if (xA(u)) return U(e[0] - u.x, e[1] - u.y);
    let [B, g, t, i] = Au(u, C), I = (B + t) / 2, o = (g + i) / 2, [E, Q] = EA(U(e[0], e[1]), U(I, o), -u.angle);
    return U(E - u.x, Q - u.y);
  }
  static getPointIndexUnderCursor(u, e, C, B, g) {
    let t = Iu.getPointsGlobalCoordinates(u, e), i = t.length;
    for (; --i > -1; ) {
      let I = t[i];
      if (Uu(U(B, g), U(I[0], I[1])) * C.value < Iu.POINT_HANDLE_SIZE + 1) return i;
    }
    return -1;
  }
  static createPointAt(u, e, C, B, g) {
    let t = f0(C, B, g), [i, I, o, E] = Au(u, e), Q = (i + o) / 2, s = (I + E) / 2, [l, c] = EA(U(t[0], t[1]), U(Q, s), -u.angle);
    return U(l - u.x, c - u.y);
  }
  static getNormalizedPoints(u) {
    let { points: e } = u, C = e[0][0], B = e[0][1];
    return { points: e.map((g) => U(g[0] - C, g[1] - B)), x: u.x + C, y: u.y + B };
  }
  static normalizePoints(u) {
    nA(u, Iu.getNormalizedPoints(u));
  }
  static duplicateSelectedPoints(u, e) {
    he(u.editingLinearElement, "Not currently editing a linear element");
    let { selectedPointsIndices: C, elementId: B } = u.editingLinearElement, g = Iu.getElement(B, e);
    he(g, "The linear element does not exist in the provided Scene"), he(C != null, "There are no selected points to duplicate");
    let { points: t } = g, i = [], I = !1, o = -1, E = t.reduce((Q, s, l) => {
      if (++o, Q.push(s), C.includes(l)) {
        let c = t[l + 1];
        c || (I = !0), Q.push(c ? U((s[0] + c[0]) / 2, (s[1] + c[1]) / 2) : U(s[0], s[1])), i.push(o + 1), ++o;
      }
      return Q;
    }, []);
    if (nA(g, { points: E }), I) {
      let Q = g.points[g.points.length - 1];
      Iu.movePoints(g, [{ index: g.points.length - 1, point: U(Q[0] + 30, Q[1] + 30) }]);
    }
    return { ...u, editingLinearElement: { ...u.editingLinearElement, selectedPointsIndices: i } };
  }
  static deletePoints(u, e) {
    let C = 0, B = 0;
    if (e.includes(0)) {
      let t = u.points.find((i, I) => !e.includes(I));
      t && (C = t[0], B = t[1]);
    }
    let g = u.points.reduce((t, i, I) => (e.includes(I) || t.push(t.length ? U(i[0] - C, i[1] - B) : U(0, 0)), t), []);
    Iu._updatePoints(u, g, C, B);
  }
  static addPoints(u, e) {
    let C = [...u.points, ...e.map((B) => B.point)];
    Iu._updatePoints(u, C, 0, 0);
  }
  static movePoints(u, e, C) {
    let { points: B } = u, [g, t] = e.find(({ index: E }) => E === 0)?.point ?? U(0, 0), [i, I] = U(g - B[0][0], t - B[0][1]), o = xA(u) ? [e.find((E) => E.index === 0)?.point ?? B[0], e.find((E) => E.index === B.length - 1)?.point ?? B[B.length - 1]] : B.map((E, Q) => {
      let s = e.find((l) => l.index === Q)?.point ?? E;
      return U(s[0] - i, s[1] - I);
    });
    Iu._updatePoints(u, o, i, I, C, { isDragging: e.reduce((E, Q) => E || Q.isDragging === !0, !1) });
  }
  static shouldAddMidpoint(u, e, C, B) {
    let g = Iu.getElement(u.elementId, B);
    if (g && xA(g) || !g) return !1;
    let { segmentMidpoint: t } = u.pointerDownState;
    if (t.added || t.value === null || t.index === null || u.pointerDownState.origin === null) return !1;
    let i = u.pointerDownState.origin, I = Uu(U(i.x, i.y), U(e.x, e.y));
    return !(!C.editingLinearElement && I < BE / C.zoom.value);
  }
  static addMidpoint(u, e, C, B, g) {
    let t = Iu.getElement(u.elementId, g);
    if (!t) return;
    let { segmentMidpoint: i } = u.pointerDownState, I = { pointerDownState: u.pointerDownState, selectedPointsIndices: u.selectedPointsIndices }, o = Iu.createPointAt(t, g, e.x, e.y, B && !xA(t) ? C.getEffectiveGridSize() : null), E = [...t.points.slice(0, i.index), o, ...t.points.slice(i.index)];
    return nA(t, { points: E }), I.pointerDownState = { ...u.pointerDownState, segmentMidpoint: { ...u.pointerDownState.segmentMidpoint, added: !0 }, lastClickedPoint: i.index }, I.selectedPointsIndices = [i.index], I;
  }
  static _updatePoints(u, e, C, B, g, t) {
    if (xA(u)) {
      let i = {};
      g?.startBinding !== void 0 && (i.startBinding = g.startBinding !== null && Dl(g.startBinding) ? g.startBinding : null), g?.endBinding !== void 0 && (i.endBinding = g.endBinding !== null && Dl(g.endBinding) ? g.endBinding : null), i.points = Array.from(e), nA(u, i, !0, { isDragging: t?.isDragging });
    } else {
      let i = g5(u, e), I = g5(u, u.points), o = (i[0] + i[2]) / 2, E = (i[1] + i[3]) / 2, Q = (I[0] + I[2]) / 2, s = (I[1] + I[3]) / 2, l = Q - o, c = s - E, D = EA(U(C, B), U(l, c), u.angle);
      nA(u, { ...g, points: e, x: u.x + D[0], y: u.y + D[1] });
    }
  }
  static _getShiftLockedDelta(u, e, C, B, g) {
    let t = Iu.getPointGlobalCoordinates(u, C, e);
    if (xA(u)) return [B[0] - t[0], B[1] - t[1]];
    let [i, I] = f0(B[0], B[1], g), { width: o, height: E } = o1(t[0], t[1], i, I);
    return EA(U(o, E), U(0, 0), -u.angle);
  }
  static moveFixedSegment(u, e, C, B, g) {
    let t = Iu.getElement(u.elementId, g);
    if (!t || !xA(t)) return u;
    if (e && e > 0 && e < t.points.length) {
      let i = Yg(RE(vA(t.points[e], t.points[e - 1]))), I = (t.fixedSegments ?? []).reduce((s, l) => (s[l.index] = l, s), {});
      I[e] = { index: e, start: U(i ? t.points[e - 1][0] : C - t.x, i ? B - t.y : t.points[e - 1][1]), end: U(i ? t.points[e][0] : C - t.x, i ? B - t.y : t.points[e][1]) };
      let o = Object.values(I).sort((s, l) => s.index - l.index), E = o.map((s) => s.index).reduce((s, l) => l < e ? s + 1 : s, 0);
      nA(t, { fixedSegments: o });
      let Q = U(t.x + (t.fixedSegments[E].start[0] + t.fixedSegments[E].end[0]) / 2, t.y + (t.fixedSegments[E].start[1] + t.fixedSegments[E].end[1]) / 2);
      return { ...u, segmentMidPointHoveredCoords: Q, pointerDownState: { ...u.pointerDownState, segmentMidpoint: { added: !1, index: t.fixedSegments[E].index, value: Q } } };
    }
    return u;
  }
  static deleteFixedSegment(u, e) {
    nA(u, { fixedSegments: u.fixedSegments?.filter((C) => C.index !== e) }), nA(u, {}, !0);
  }
};
J(D0, "POINT_HANDLE_SIZE", 10), J(D0, "getEditorMidPoints", (A, u, e) => {
  let C = gu(A, u);
  return !xA(A) && !e.editingLinearElement && A.points.length > 2 && !C ? [] : (Mt.version === A.version && Mt.zoom === e.zoom.value || D0.updateEditorMidPointsCache(A, u, e), Mt.points);
}), J(D0, "updateEditorMidPointsCache", (A, u, e) => {
  let C = D0.getPointsGlobalCoordinates(A, u), B = 0, g = [];
  for (; B < C.length - 1; ) {
    if (D0.isSegmentTooShort(A, A.points[B], A.points[B + 1], B, e.zoom)) {
      g.push(null), B++;
      continue;
    }
    let t = D0.getSegmentMidPoint(A, C[B], C[B + 1], B + 1, u);
    g.push(t), B++;
  }
  Mt.points = g, Mt.version = A.version, Mt.zoom = e.zoom.value;
}), J(D0, "getSegmentMidpointHitCoords", (A, u, e, C) => {
  let { elementId: B } = A, g = D0.getElement(B, C);
  if (!g) return null;
  let t = D0.getPointIndexUnderCursor(g, C, e.zoom, u.x, u.y);
  if (!xA(g) && t >= 0 || D0.getPointsGlobalCoordinates(g, C).length >= 3 && !e.editingLinearElement && !xA(g)) return null;
  let i = (D0.POINT_HANDLE_SIZE + 1) / e.zoom.value, I = A.segmentMidPointHoveredCoords;
  if (I && Uu(U(I[0], I[1]), U(u.x, u.y)) <= i) return I;
  let o = 0, E = D0.getEditorMidPoints(g, C, e);
  for (; o < E.length; ) {
    if (E[o] !== null && Uu(E[o], U(u.x, u.y)) <= i) return E[o];
    o++;
  }
  return null;
}), J(D0, "getBoundTextElementPosition", (A, u, e) => {
  let C = D0.getPointsGlobalCoordinates(A, e);
  C.length < 2 && nA(u, { isDeleted: !0 });
  let B = 0, g = 0;
  if (A.points.length % 2 === 1) {
    let t = Math.floor(A.points.length / 2), i = D0.getPointGlobalCoordinates(A, A.points[t], e);
    B = i[0] - u.width / 2, g = i[1] - u.height / 2;
  } else {
    let t = A.points.length / 2 - 1, i = Mt.points[t];
    A.points.length === 2 && (i = rn(C[0], C[1])), (!i || Mt.version !== A.version) && (i = D0.getSegmentMidPoint(A, C[t], C[t + 1], t + 1, e)), B = i[0] - u.width / 2, g = i[1] - u.height / 2;
  }
  return { x: B, y: g };
}), J(D0, "getMinMaxXYWithBoundText", (A, u, e, C) => {
  let [B, g, t, i] = e, I = (B + t) / 2, o = (g + i) / 2, { x: E, y: Q } = D0.getBoundTextElementPosition(A, C, u), s = E + C.width, l = Q + C.height, c = U(I, o), D = EA(U(B, g), c, A.angle), h = EA(U(t, g), c, A.angle), F = EA(U(E, Q), c, -A.angle), m = EA(U(s, Q), c, -A.angle), p = EA(U(E, l), c, -A.angle), k = EA(U(s, l), c, -A.angle);
  return D[0] < h[0] && D[1] >= h[1] ? (B = Math.min(B, p[0]), t = Math.max(t, Math.max(m[0], k[0])), g = Math.min(g, F[1]), i = Math.max(i, k[1])) : D[0] >= h[0] && D[1] > h[1] ? (B = Math.min(B, k[0]), t = Math.max(t, Math.max(F[0], m[0])), g = Math.min(g, p[1]), i = Math.max(i, m[1])) : D[0] >= h[0] ? (B = Math.min(B, m[0]), t = Math.max(t, p[0]), g = Math.min(g, k[1]), i = Math.max(i, F[1])) : D[1] <= h[1] && (B = Math.min(B, Math.min(m[0], F[0])), t = Math.max(t, k[0]), g = Math.min(g, m[1]), i = Math.max(i, p[1])), [B, g, t, i, I, o];
}), J(D0, "getElementAbsoluteCoords", (A, u, e = !1) => {
  let C, B, g, t, i;
  if (A.points.length < 2 || !a0.get(A)) {
    let { minX: Q, minY: s, maxX: l, maxY: c } = A.points.reduce((D, [h, F]) => (D.minY = Math.min(D.minY, F), D.minX = Math.min(D.minX, h), D.maxX = Math.max(D.maxX, h), D.maxY = Math.max(D.maxY, F), D), { minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0 });
    B = Q + A.x, g = s + A.y, t = l + A.x, i = c + A.y;
  } else {
    let Q = a0.generateElementShape(A, null), s = si(Q[0]), [l, c, D, h] = l4(s);
    B = l + A.x, g = c + A.y, t = D + A.x, i = h + A.y;
  }
  let I = (B + t) / 2, o = (g + i) / 2;
  if (C = [B, g, t, i, I, o], !e) return C;
  let E = gu(A, u);
  return E && (C = D0.getMinMaxXYWithBoundText(A, u, [B, g, t, i], E)), C;
});
var LA = D0, e3A = (A) => {
  let u = [...new Set(A.filter((e) => e !== null && e !== -1))];
  return u = u.sort((e, C) => e - C), u.length ? u : null;
}, nI = {}, bl = (A, u) => {
  let e = nI[A] || (nI[A] = { height: u });
  return e.height = u, e;
}, _k = (A) => {
  nI[A] && delete nI[A];
}, C3A = (A) => nI[A]?.height ?? null, Ge = (A, u, e, C = !0) => {
  let B, g = { x: A.x, y: A.y, text: A.text, width: A.width, height: A.height, angle: u?.angle ?? A.angle };
  g.text = A.text, (u || !A.autoResize) && (B = u ? zg(u, A) : A.width, g.text = JE(A.originalText, vu(A), B));
  let t = we(g.text, vu(A), A.lineHeight);
  if (A.autoResize && (g.width = t.width), g.height = t.height, u) {
    let i = k4(u, A), I = zg(u, A);
    if (!Eu(u) && t.height > i) {
      let s = ME(t.height, u.type);
      nA(u, { height: s }, C), bl(u.id, s);
    }
    if (t.width > I) {
      let s = ME(t.width, u.type);
      nA(u, { width: s }, C);
    }
    let o = { ...A, ...g }, { x: E, y: Q } = m4(u, o, e);
    g.x = E, g.y = Q;
  }
  nA(A, g, C);
}, $k = (A, u, e) => {
  let C = PA(A);
  u.forEach((B) => {
    let g = e.get(B.id), t = Tg(B);
    if (t) {
      let i = e.get(t);
      if (i) {
        let I = C.get(g);
        I && nA(I, { boundElements: (B.boundElements || []).filter((E) => E.id !== i && E.id !== t).concat({ type: "text", id: i }) });
        let o = C.get(i);
        o && UA(o) && nA(o, { containerId: I ? g : null });
      }
    }
  });
}, Dn = (A, u, e, C = !1) => {
  if (!Tg(A)) return;
  _k(A.id);
  let B = gu(A, u);
  if (B && B.text) {
    if (!A) return;
    let g = B.text, t = B.height, i = B.width, I = zg(A, B), o = k4(A, B), E = A.height;
    if (C || e !== "n" && e !== "s") {
      g && (g = JE(B.originalText, vu(B), I));
      let Q = we(g, vu(B), B.lineHeight);
      t = Q.height, i = Q.width;
    }
    if (t > o) {
      E = ME(t, A.type);
      let Q = E - A.height, s = !Eu(A) && (e === "ne" || e === "nw" || e === "n") ? A.y - Q : A.y;
      nA(A, { height: E, y: s });
    }
    nA(B, { text: g, width: i, height: t }), Eu(A) || nA(B, m4(A, B, u));
  }
}, m4 = (A, u, e) => {
  if (Eu(A)) return LA.getBoundTextElementPosition(A, u, e);
  let C = B3A(A), B = k4(A, u), g = zg(A, u), t, i;
  return u.verticalAlign === IC.TOP ? i = C.y : u.verticalAlign === IC.BOTTOM ? i = C.y + (B - u.height) : i = C.y + (B / 2 - u.height / 2), u.textAlign === JQ.LEFT ? t = C.x : u.textAlign === JQ.RIGHT ? t = C.x + (g - u.width) : t = C.x + (g / 2 - u.width / 2), { x: t, y: i };
}, Tg = (A) => A?.boundElements?.length && A?.boundElements?.find((u) => u.type === "text")?.id || null, gu = (A, u) => {
  if (!A) return null;
  let e = Tg(A);
  return e && u.get(e) || null;
}, _0 = (A, u) => A && A.containerId && u.get(A.containerId) || null, Nd = (A, u, e) => {
  if (!Eu(A)) return { x: A.x + A.width / 2, y: A.y + A.height / 2 };
  let C = LA.getPointsGlobalCoordinates(A, e);
  if (C.length % 2 === 1) {
    let t = Math.floor(A.points.length / 2), i = LA.getPointGlobalCoordinates(A, A.points[t], e);
    return { x: i[0], y: i[1] };
  }
  let B = A.points.length / 2 - 1, g = LA.getEditorMidPoints(A, e, u)[B];
  return g || (g = LA.getSegmentMidPoint(A, C[B], C[B + 1], B + 1, e)), { x: g[0], y: g[1] };
}, B3A = (A) => {
  let u = L0, e = L0;
  return A.type === "ellipse" && (u += A.width / 2 * (1 - Math.sqrt(2) / 2), e += A.height / 2 * (1 - Math.sqrt(2) / 2)), A.type === "diamond" && (u += A.width / 4, e += A.height / 4), { x: A.x + u, y: A.y + e };
}, g3A = (A, u) => !u || Eu(u) ? A.angle : u.angle, t3A = (A, u) => A.some((e) => {
  if (Xu(e)) {
    let C = _0(e, u);
    return !Eu(C);
  }
  return !1;
}), i3A = (A, u) => A.some((e) => {
  if (Xu(e)) {
    let C = _0(e, u);
    return !Eu(C);
  }
  return UA(e);
}), E3A = /* @__PURE__ */ new Set(["rectangle", "ellipse", "diamond", "arrow"]), a3A = (A) => E3A.has(A.type), ME = (A, u) => {
  A = Math.ceil(A);
  let e = L0 * 2;
  return u === "ellipse" ? Math.round((A + e) / Math.sqrt(2) * 2) : u === "arrow" ? A + e * 8 : u === "diamond" ? 2 * (A + e) : A + e;
}, zg = (A, u) => {
  let { width: e } = A;
  if (Eu(A)) {
    let C = (u?.fontSize ?? ut) * WEA;
    return Math.max(qEA * e, C);
  }
  return A.type === "ellipse" ? Math.round(e / 2 * Math.sqrt(2)) - L0 * 2 : A.type === "diamond" ? Math.round(e / 2) - L0 * 2 : e - L0 * 2;
}, k4 = (A, u) => {
  let { height: e } = A;
  return Eu(A) ? e - L0 * 8 * 2 <= 0 ? u.height : e : A.type === "ellipse" ? Math.round(e / 2 * Math.sqrt(2)) - L0 * 2 : A.type === "diamond" ? Math.round(e / 2) - L0 * 2 : e - L0 * 2;
}, I3A = (A, u = `

`) => A.reduce((e, C) => (UA(C) && e.push(C.text), e), []).join(u), oC = (A) => (A = A.trim(), A && oEA.sanitizeUrl(xs(A))), Ay = (A) => !!(A?.includes(location.origin) || A?.startsWith("/")), U2 = (A) => {
  if (A = oC(A), A.startsWith("/")) return `${location.origin}${A}`;
  try {
    new URL(A);
  } catch {
    return "about:blank";
  }
  return A;
}, C1 = [], pA = (A) => (C1 = C1.concat(A), A), uy = '<svg viewBox="0 0 24 24" stroke-width="1" width="28" height="28" xmlns="http://www.w3.org/2000/svg">', o3A = '<path d="M6.164 11.755a5.314 5.314 0 0 1-4.932-5.298 5.314 5.314 0 0 1 5.311-5.311 5.314 5.314 0 0 1 5.307 5.113l8.773 8.773a3.322 3.322 0 0 1 0 4.696l-.895.895a3.322 3.322 0 0 1-4.696 0l-8.868-8.868Z" style="fill:#fff"/>', ey = '<path stroke="#1b1b1f" fill="#fff" d="m7.868 11.113 7.773 7.774a2.359 2.359 0 0 0 1.667.691 2.368 2.368 0 0 0 2.357-2.358c0-.625-.248-1.225-.69-1.667L11.201 7.78 9.558 9.469l-1.69 1.643v.001Zm10.273 3.606-3.333 3.333m-3.25-6.583 2 2m-7-7 3 3M3.664 3.625l1 1M2.529 6.922l1.407-.144m5.735-2.932-1.118.866M4.285 9.823l.758-1.194m1.863-6.207-.13 1.408"/>', Q3A = `data:${zA.svg},${encodeURIComponent(`${uy}${ey}</svg>`)}`, n3A = `data:${zA.svg},${encodeURIComponent(`${uy}${o3A}${ey}</svg>`)}`, BB = (A) => {
  A && (A.style.cursor = "");
}, Yu = (A, u) => {
  A && (A.style.cursor = u);
}, NB, n5, Cy = (A, u) => {
  let e = () => {
    let C = u === su.DARK;
    NB = document.createElement("canvas"), NB.theme = u, NB.height = 20, NB.width = 20;
    let B = NB.getContext("2d");
    B.lineWidth = 1, B.beginPath(), B.arc(NB.width / 2, NB.height / 2, 5, 0, 2 * Math.PI), B.fillStyle = C ? X0.black : X0.white, B.fill(), B.strokeStyle = C ? X0.white : X0.black, B.stroke(), n5 = NB.toDataURL(zA.svg);
  };
  (!NB || NB.theme !== u) && e(), Yu(A, `url(${n5}) ${20 / 2} ${20 / 2}, auto`);
}, vB = (A, u) => {
  if (A) if (u.activeTool.type === "selection") BB(A);
  else if (BI(u)) A.style.cursor = Ru.GRAB;
  else if (KB(u)) Cy(A, u.theme);
  else if (u.activeTool.type === "laser") {
    let e = u.theme === su.LIGHT ? Q3A : n3A;
    A.style.cursor = `url(${e}), auto`;
  } else ["image", "custom"].includes(u.activeTool.type) ? u.activeTool.type !== "image" && (A.style.cursor = Ru.AUTO) : A.style.cursor = Ru.CROSSHAIR;
}, r3A = new P7(Date.now()), s3A = 0, ug = () => Math.floor(r3A.next() * 2 ** 31), YC = () => qg() ? `id${s3A++}` : Cl(), wB = (A, { x: u, y: e, strokeColor: C = n0.strokeColor, backgroundColor: B = n0.backgroundColor, fillStyle: g = n0.fillStyle, strokeWidth: t = n0.strokeWidth, strokeStyle: i = n0.strokeStyle, roughness: I = n0.roughness, opacity: o = n0.opacity, width: E = 0, height: Q = 0, angle: s = 0, groupIds: l = [], frameId: c = null, index: D = null, roundness: h = null, boundElements: F = null, link: m = null, locked: p = n0.locked, ...k }) => ((u < -1e6 || u > 1e6 || e < -1e6 || e > 1e6 || E < -1e6 || E > 1e6 || Q < -1e6 || Q > 1e6) && console.error("New element size or position is too large", { x: u, y: e, width: E, height: Q, points: k.points }), { id: k.id || YC(), type: A, x: u, y: e, width: E, height: Q, angle: s, strokeColor: C, backgroundColor: B, fillStyle: g, strokeWidth: t, strokeStyle: i, roughness: I, opacity: o, groupIds: l, frameId: c, index: D, roundness: h, seed: k.seed ?? ug(), version: k.version || 1, versionNonce: k.versionNonce ?? 0, isDeleted: !1, boundElements: F, updated: mI(), link: m, locked: p, customData: k.customData }), eg = (A) => wB(A.type, A), r5 = (A) => wB("embeddable", A), l3A = (A) => ({ ...wB("iframe", A) }), G2 = (A) => Bu({ ...wB("frame", A), type: "frame", name: A?.name || null }, {}), B1 = (A) => Bu({ ...wB("magicframe", A), type: "magicframe", name: A?.name || null }, {}), By = (A, u) => ({ x: A.textAlign === "center" ? u.width / 2 : A.textAlign === "right" ? u.width : 0, y: A.verticalAlign === "middle" ? u.height / 2 : 0 }), nC = (A) => {
  let u = A.fontFamily || ri, e = A.fontSize || ut, C = A.lineHeight || NE(u), B = iI(A.text), g = we(B, vu({ fontFamily: u, fontSize: e }), C), t = A.textAlign || Qn, i = A.verticalAlign || El, I = By({ textAlign: t, verticalAlign: i }, g), o = { ...wB("text", A), text: B, fontSize: e, fontFamily: u, textAlign: t, verticalAlign: i, x: A.x - I.x, y: A.y - I.y, width: g.width, height: g.height, containerId: A.containerId || null, originalText: A.originalText ?? B, autoResize: A.autoResize ?? !0, lineHeight: C };
  return Bu(o, {});
}, c3A = (A, u, e) => {
  let { width: C, height: B } = we(e, vu(A), A.lineHeight);
  A.autoResize || (C = A.width);
  let { textAlign: g, verticalAlign: t } = A, i, I;
  if (g === "center" && t === IC.MIDDLE && !A.containerId && A.autoResize) {
    let o = we(A.text, vu(A), A.lineHeight), E = By(A, { width: C - o.width, height: B - o.height });
    i = A.x - E.x, I = A.y - E.y;
  } else {
    let [o, E, Q, s] = Au(A, u), [l, c, D, h] = ei(A, C, B, !1), F = (o - l) / 2, m = (E - c) / 2, p = (Q - D) / 2, k = (s - h) / 2;
    [i, I] = d3A({ s: !0, e: g === "center" || g === "left", w: g === "center" || g === "right" }, A.x, A.y, A.angle, F, m, p, k);
  }
  return { width: C, height: B, x: Number.isFinite(i) ? i : A.x, y: Number.isFinite(I) ? I : A.y };
}, d3A = (A, u, e, C, B, g, t, i) => {
  let I = Math.cos(C), o = Math.sin(C);
  return A.e && A.w ? u += B + t : A.e ? (u += B * (1 + I), e += B * o, u += t * (1 - I), e += t * -o) : A.w && (u += B * (1 - I), e += B * -o, u += t * (1 + I), e += t * o), A.n && A.s ? e += g + i : A.n ? (u += g * o, e += g * (1 - I), u += i * -o, e += i * (1 + I)) : (u += g * -o, e += g * (1 + I), u += i * o, e += i * (1 - I)), [u, e];
}, gy = (A, u, e, C = A.text) => {
  if (A.isDeleted) return;
  (u || !A.autoResize) && (C = JE(C, vu(A), u ? zg(u, A) : A.width));
  let B = c3A(A, e, C);
  return { text: C, ...B };
}, D3A = (A) => ({ ...wB(A.type, A), points: A.points || [], pressures: A.pressures || [], simulatePressure: A.simulatePressure, lastCommittedPoint: null }), wE = (A) => ({ ...wB(A.type, A), points: A.points || [], lastCommittedPoint: null, startBinding: null, endBinding: null, startArrowhead: null, endArrowhead: null }), f2 = (A) => A.elbowed ? { ...wB(A.type, A), points: A.points || [], lastCommittedPoint: null, startBinding: null, endBinding: null, startArrowhead: A.startArrowhead || null, endArrowhead: A.endArrowhead || null, elbowed: !0, fixedSegments: A.fixedSegments || [], startIsSpecial: !1, endIsSpecial: !1 } : { ...wB(A.type, A), points: A.points || [], lastCommittedPoint: null, startBinding: null, endBinding: null, startArrowhead: A.startArrowhead || null, endArrowhead: A.endArrowhead || null, elbowed: !1 }, ty = (A) => ({ ...wB("image", A), strokeColor: "transparent", status: A.status ?? "pending", fileId: A.fileId ?? null, scale: A.scale ?? [1, 1], crop: A.crop ?? null }), Ul = (A, u = 0) => {
  if (A == null || typeof A != "object") return A;
  let e = Object.prototype.toString.call(A);
  if (e === "[object Object]") {
    let C = typeof A.constructor == "function" ? Object.create(Object.getPrototypeOf(A)) : {};
    for (let B in A) if (A.hasOwnProperty(B)) {
      if (u === 0 && (B === "shape" || B === "canvas")) continue;
      C[B] = Ul(A[B], u + 1);
    }
    return C;
  }
  if (Array.isArray(A)) {
    let C = A.length, B = new Array(C);
    for (; C--; ) B[C] = Ul(A[C], u + 1);
    return B;
  }
  return tu.DEV && e !== "[object Object]" && e !== "[object Array]" && e.startsWith("[object ") && console.warn(`_deepCloneElement: unexpected object type ${e}. This value will not be cloned!`), A;
}, ZE = (A) => Ul(A), iy = (A, u) => {
  Object.defineProperty(A, zEA, { value: u, writable: !1, enumerable: !1 });
}, Gl = () => YC(), Ey = (A, u, e, C) => {
  let B = ZE(e);
  return qg() && iy(B, e.id), B.id = Gl(), B.boundElements = null, B.updated = mI(), B.seed = ug(), B.groupIds = Z4A(B.groupIds, A, (g) => (u.has(g) || u.set(g, Gl()), u.get(g))), C && (B = Object.assign(B, C)), B;
}, ay = (A, u) => {
  let e = [], C = PA(A), B = /* @__PURE__ */ new Map(), g = (i) => {
    if (B.has(i)) return B.get(i);
    if (C.has(i)) {
      let I = Gl();
      return B.set(i, I), I;
    }
    return null;
  }, t = /* @__PURE__ */ new Map();
  for (let i of A) {
    let I = Ul(i);
    if (I.id = g(i.id), qg() && iy(I, i.id), u?.randomizeSeed && (I.seed = ug(), L4(I)), I.groupIds && (I.groupIds = I.groupIds.map((o) => (t.has(o) || t.set(o, Gl()), t.get(o)))), "containerId" in I && I.containerId) {
      let o = g(I.containerId);
      I.containerId = o;
    }
    if ("boundElements" in I && I.boundElements && (I.boundElements = I.boundElements.reduce((o, E) => {
      let Q = g(E.id);
      return Q && o.push({ ...E, id: Q }), o;
    }, [])), "endBinding" in I && I.endBinding) {
      let o = g(I.endBinding.elementId);
      I.endBinding = o ? { ...I.endBinding, elementId: o } : null;
    }
    if ("startBinding" in I && I.startBinding) {
      let o = g(I.startBinding.elementId);
      I.startBinding = o ? { ...I.startBinding, elementId: o } : null;
    }
    I.frameId && (I.frameId = g(I.frameId)), e.push(I);
  }
  return e;
}, L2 = (A, { shouldThrow: u = !1, includeBoundTextValidation: e = !1, ignoreLogs: C, reconciliationContext: B }) => {
  let g = [], t = (I) => `${I?.index}:${I?.id}:${I?.type}:${I?.isDeleted}:${I?.version}:${I?.versionNonce}`, i = A.map((I) => I.index);
  for (let [I, o] of i.entries()) {
    let E = i[I - 1], Q = i[I + 1];
    if (g1(o, E, Q) || g.push(`Fractional indices invariant has been compromised: "${t(A[I - 1])}", "${t(A[I])}", "${t(A[I + 1])}"`), e && MC(A[I])) {
      let s = A[I], l = gu(s, PA(A));
      l && l.index <= s.index && g.push(`Fractional indices invariant for bound elements has been compromised: "${t(l)}", "${t(s)}"`);
    }
  }
  if (g.length) {
    let I = new MoA(), o = [];
    if (B && (o.push("Additional reconciliation context:"), o.push(B.localElements.map((E) => t(E))), o.push(B.remoteElements.map((E) => t(E)))), C || console.error(g.join(`

`), I.stack, A.map((E) => t(E)), ...o), u) throw I;
  }
}, h3A = (A) => A.sort((u, e) => s5(u) && s5(e) ? u.index < e.index ? -1 : u.index > e.index ? 1 : u.id < e.id ? -1 : 1 : 1), Cg = (A, u) => {
  try {
    let e = w3A(A, u), C = Iy(A, e), B = A.map((g) => C.has(g) ? { ...g, ...C.get(g) } : g);
    L2(B, { includeBoundTextValidation: !1, shouldThrow: !0, ignoreLogs: !0 });
    for (let [g, t] of C) nA(g, t, !1);
  } catch {
    Pg(A);
  }
  return A;
}, Pg = (A) => {
  let u = F3A(A), e = Iy(A, u);
  for (let [C, B] of e) nA(C, B, !1);
  return A;
}, w3A = (A, u) => {
  let e = [], C = 0;
  for (; C < A.length; ) if (u.has(A[C].id)) {
    let B = [C - 1, C];
    for (; ++C < A.length && u.has(A[C].id); ) B.push(C);
    B.push(C), e.push(B);
  } else C++;
  return e;
}, F3A = (A) => {
  let u = [], e, C, B = -1, g = 0, t = (o) => {
    let E = A[B] ? A[B].index : void 0, Q = A[o - 1]?.index;
    return !E && Q || E && Q && Q > E ? [Q, o - 1] : [E, B];
  }, i = (o) => {
    let E = A[g] ? A[g].index : void 0;
    if (E && o < g) return [E, g];
    let Q = g;
    for (; ++Q < A.length; ) {
      let s = A[Q]?.index;
      if (!E && s || E && s && s > E) return [s, Q];
    }
    return [void 0, Q];
  }, I = 0;
  for (; I < A.length; ) {
    let o = A[I].index;
    if ([e, B] = t(I), [C, g] = i(I), g1(o, e, C)) I++;
    else {
      let E = [B, I];
      for (; ++I < A.length; ) {
        let Q = A[I].index, [s, l] = t(I), [c, D] = i(I);
        if (g1(Q, s, c)) break;
        [e, B] = [s, l], [C, g] = [c, D], E.push(I);
      }
      E.push(g), u.push(E);
    }
  }
  return u;
}, g1 = (A, u, e) => A ? u && e ? u < A && A < e : !u && e ? A < e : u && !e ? u < A : !!A : !1, Iy = (A, u) => {
  let e = /* @__PURE__ */ new Map();
  for (let C of u) {
    let B = C.shift(), g = C.pop(), t = RD(A[B]?.index, A[g]?.index, C.length);
    for (let i = 0; i < C.length; i++) {
      let I = A[C[i]];
      e.set(I, { index: t[i] });
    }
  }
  return e;
}, s5 = (A) => !!A.index, y0 = class YB {
  constructor(u, e) {
    this.deleted = u, this.inserted = e;
  }
  static create(u, e, C, B) {
    let g = C && B !== "inserted" ? C(u) : u, t = C && B !== "deleted" ? C(e) : e;
    return new YB(g, t);
  }
  static calculate(u, e, C, B) {
    if (u === e) return YB.empty();
    let g = {}, t = {};
    for (let o of this.distinctKeysIterator("full", u, e)) g[o] = u[o], t[o] = e[o];
    let [i, I] = B ? B(g, t) : [g, t];
    return YB.create(i, I, C);
  }
  static empty() {
    return new YB({}, {});
  }
  static isEmpty(u) {
    return !Object.keys(u.deleted).length && !Object.keys(u.inserted).length;
  }
  static mergeObjects(u, e, C) {
    let B = { ...u };
    for (let g of Object.keys(C)) delete B[g];
    return { ...B, ...e };
  }
  static mergeArrays(u, e, C, B) {
    return Object.values(YB.mergeObjects(bg(u ?? [], B), bg(e ?? [], B), bg(C ?? [], B)));
  }
  static diffObjects(u, e, C, B) {
    if (!(!u[C] && !e[C]) && (typeof u[C] == "object" || typeof e[C] == "object")) {
      let g = u[C] ?? {}, t = e[C] ?? {}, i = YB.getLeftDifferences(g, t).reduce((o, E) => (o[E] = B(g[E]), o), {}), I = YB.getRightDifferences(g, t).reduce((o, E) => (o[E] = B(t[E]), o), {});
      Object.keys(i).length || Object.keys(I).length ? (Reflect.set(u, C, i), Reflect.set(e, C, I)) : (Reflect.deleteProperty(u, C), Reflect.deleteProperty(e, C));
    }
  }
  static diffArrays(u, e, C, B) {
    if (!(!u[C] && !e[C]) && (Array.isArray(u[C]) || Array.isArray(e[C]))) {
      let g = Array.isArray(u[C]) ? u[C] : [], t = Array.isArray(e[C]) ? e[C] : [], i = bg(YB.getLeftDifferences(bg(g, B), bg(t, B))), I = bg(YB.getRightDifferences(bg(g, B), bg(t, B)));
      if (Object.keys(i).length || Object.keys(I).length) {
        let o = g.filter((Q) => i[B ? B(Q) : String(Q)]), E = t.filter((Q) => I[B ? B(Q) : String(Q)]);
        Reflect.set(u, C, o), Reflect.set(e, C, E);
      } else Reflect.deleteProperty(u, C), Reflect.deleteProperty(e, C);
    }
  }
  static isLeftDifferent(u, e, C = !1) {
    return !!this.distinctKeysIterator("left", u, e, C).next().value;
  }
  static isRightDifferent(u, e, C = !1) {
    return !!this.distinctKeysIterator("right", u, e, C).next().value;
  }
  static getLeftDifferences(u, e, C = !1) {
    return Array.from(this.distinctKeysIterator("left", u, e, C));
  }
  static getRightDifferences(u, e, C = !1) {
    return Array.from(this.distinctKeysIterator("right", u, e, C));
  }
  static *distinctKeysIterator(u, e, C, B = !1) {
    if (e === C) return;
    let g = [];
    u === "left" ? g = Object.keys(e) : u === "right" ? g = Object.keys(C) : u === "full" ? g = Array.from(/* @__PURE__ */ new Set([...Object.keys(e), ...Object.keys(C)])) : fE(u, `Unknown distinctKeysIterator's join param "${u}"`, !0);
    for (let t of g) {
      let i = e[t], I = C[t];
      if (i !== I) {
        if (!B && typeof i == "object" && typeof I == "object" && i !== null && I !== null && Ee(i, I)) continue;
        yield t;
      }
    }
  }
}, l5 = class We {
  constructor(u) {
    this.delta = u;
  }
  static calculate(u, e) {
    let C = y0.calculate(u, e, void 0, We.postProcess);
    return new We(C);
  }
  static empty() {
    return new We(y0.create({}, {}));
  }
  inverse() {
    let u = y0.create(this.delta.inserted, this.delta.deleted);
    return new We(u);
  }
  applyTo(u, e) {
    try {
      let { selectedElementIds: C = {}, selectedGroupIds: B = {} } = this.delta.deleted, { selectedElementIds: g = {}, selectedGroupIds: t = {}, selectedLinearElementId: i, editingLinearElementId: I, ...o } = this.delta.inserted, E = y0.mergeObjects(u.selectedElementIds, g, C), Q = y0.mergeObjects(u.selectedGroupIds, t, B), s = i && e.has(i) ? new LA(e.get(i)) : null, l = I && e.has(I) ? new LA(e.get(I)) : null, c = { ...u, ...o, selectedElementIds: E, selectedGroupIds: Q, selectedLinearElement: typeof i < "u" ? s : u.selectedLinearElement, editingLinearElement: typeof I < "u" ? l : u.editingLinearElement }, D = this.filterInvisibleChanges(u, c, e);
      return [c, D];
    } catch (C) {
      if (console.error("Couldn't apply appstate change", C), tu.DEV || tu.MODE === Oe.TEST) throw C;
      return [u, !1];
    }
  }
  isEmpty() {
    return y0.isEmpty(this.delta);
  }
  static postProcess(u, e) {
    try {
      y0.diffObjects(u, e, "selectedElementIds", (C) => !0), y0.diffObjects(u, e, "selectedGroupIds", (C) => C ?? !1);
    } catch (C) {
      if (console.error("Couldn't postprocess appstate change deltas."), tu.DEV || tu.MODE === Oe.TEST) throw C;
    } finally {
      return [u, e];
    }
  }
  filterInvisibleChanges(u, e, C) {
    let B = fl(u), g = fl(e), t = y0.isRightDifferent(We.stripElementsProps(B), We.stripElementsProps(g)), i = y0.isRightDifferent(We.stripStandaloneProps(B), We.stripStandaloneProps(g));
    if (!t && !i) return !1;
    let I = { value: t };
    if (i) {
      let o = y0.getRightDifferences(We.stripStandaloneProps(B), We.stripStandaloneProps(g)), E = /* @__PURE__ */ new Set();
      (o.includes("editingGroupId") || o.includes("selectedGroupIds")) && (E = j4A(C));
      for (let Q of o) switch (Q) {
        case "selectedElementIds":
          e[Q] = We.filterSelectedElements(e[Q], C, I);
          break;
        case "selectedGroupIds":
          e[Q] = We.filterSelectedGroups(e[Q], E, I);
          break;
        case "croppingElementId": {
          let D = e[Q], h = D && C.get(D);
          h && !h.isDeleted ? I.value = !0 : e[Q] = null;
          break;
        }
        case "editingGroupId":
          let s = e[Q];
          s ? E.has(s) ? I.value = !0 : e[Q] = null : I.value = !0;
          break;
        case "selectedLinearElementId":
        case "editingLinearElementId":
          let l = We.convertToAppStateKey(Q), c = e[l];
          if (!c) I.value = !0;
          else {
            let D = C.get(c.elementId);
            D && !D.isDeleted ? I.value = !0 : e[l] = null;
          }
          break;
        default:
          fE(Q, `Unknown ObservedElementsAppState's key "${Q}"`, !0);
      }
    }
    return I.value;
  }
  static convertToAppStateKey(u) {
    switch (u) {
      case "selectedLinearElementId":
        return "selectedLinearElement";
      case "editingLinearElementId":
        return "editingLinearElement";
    }
  }
  static filterSelectedElements(u, e, C) {
    let B = Object.keys(u);
    if (!B.length) return C.value = !0, u;
    let g = { ...u };
    for (let t of B) {
      let i = e.get(t);
      i && !i.isDeleted ? C.value = !0 : delete g[t];
    }
    return g;
  }
  static filterSelectedGroups(u, e, C) {
    if (!Object.keys(u).length) return C.value = !0, u;
    let B = { ...u };
    for (let g of Object.keys(B)) e.has(g) ? C.value = !0 : delete B[g];
    return B;
  }
  static stripElementsProps(u) {
    let { editingGroupId: e, selectedGroupIds: C, selectedElementIds: B, editingLinearElementId: g, selectedLinearElementId: t, croppingElementId: i, ...I } = u;
    return I;
  }
  static stripStandaloneProps(u) {
    let { name: e, viewBackgroundColor: C, ...B } = u;
    return B;
  }
}, qt = class g0 {
  constructor(u, e, C) {
    this.added = u, this.removed = e, this.updated = C;
  }
  static create(u, e, C, B = { shouldRedistribute: !1 }) {
    let g;
    if (B.shouldRedistribute) {
      let t = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), o = [...u, ...e, ...C];
      for (let [E, Q] of o) this.satisfiesAddition(Q) ? t.set(E, Q) : this.satisfiesRemoval(Q) ? i.set(E, Q) : I.set(E, Q);
      g = new g0(t, i, I);
    } else g = new g0(u, e, C);
    return (tu.DEV || tu.MODE === Oe.TEST) && (g0.validate(g, "added", this.satisfiesAddition), g0.validate(g, "removed", this.satisfiesRemoval), g0.validate(g, "updated", this.satisfiesUpdate)), g;
  }
  static validate(u, e, C) {
    for (let [B, g] of u[e].entries()) if (!C(g)) throw console.error(`Broken invariant for "${e}" delta, element "${B}", delta:`, g), new Error(`ElementsChange invariant broken for element "${B}".`);
  }
  static calculate(u, e) {
    if (u === e) return g0.empty();
    let C = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map();
    for (let t of u.values()) if (!e.get(t.id)) {
      let i = { ...t, isDeleted: !1 }, I = { isDeleted: !0 }, o = y0.create(i, I, g0.stripIrrelevantProps);
      B.set(t.id, o);
    }
    for (let t of e.values()) {
      let i = u.get(t.id);
      if (!i) {
        let I = { isDeleted: !0 }, o = { ...t, isDeleted: !1 }, E = y0.create(I, o, g0.stripIrrelevantProps);
        C.set(t.id, E);
        continue;
      }
      if (i.versionNonce !== t.versionNonce) {
        let I = y0.calculate(i, t, g0.stripIrrelevantProps, g0.postProcess);
        if (typeof i.isDeleted == "boolean" && typeof t.isDeleted == "boolean" && i.isDeleted !== t.isDeleted) {
          i.isDeleted && !t.isDeleted ? C.set(t.id, I) : B.set(t.id, I);
          continue;
        }
        y0.isEmpty(I) || g.set(t.id, I);
      }
    }
    return g0.create(C, B, g);
  }
  static empty() {
    return g0.create(/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map(), /* @__PURE__ */ new Map());
  }
  inverse() {
    let u = (g) => {
      let t = /* @__PURE__ */ new Map();
      for (let [i, I] of g.entries()) t.set(i, y0.create(I.inserted, I.deleted));
      return t;
    }, e = u(this.added), C = u(this.removed), B = u(this.updated);
    return g0.create(C, e, B);
  }
  isEmpty() {
    return this.added.size === 0 && this.removed.size === 0 && this.updated.size === 0;
  }
  applyLatestChanges(u) {
    let e = (i) => (I) => {
      let o = {};
      for (let E of Object.keys(I)) switch (E) {
        case "boundElements":
          o[E] = I[E];
          break;
        default:
          o[E] = i[E];
      }
      return o;
    }, C = (i) => {
      let I = /* @__PURE__ */ new Map();
      for (let [o, E] of i.entries()) {
        let Q = u.get(o);
        if (Q) {
          let s = y0.create(E.deleted, E.inserted, e(Q), "inserted");
          I.set(o, s);
        } else I.set(o, E);
      }
      return I;
    }, B = C(this.added), g = C(this.removed), t = C(this.updated);
    return g0.create(B, g, t, { shouldRedistribute: !0 });
  }
  applyTo(u, e) {
    let C = NC(new Map(u)), B, g = { containsVisibleDifference: !1, containsZindexDifference: !1 };
    try {
      let t = g0.createApplier(C, e, g), i = t(this.added), I = t(this.removed), o = t(this.updated), E = this.resolveConflicts(u, C);
      B = new Map([...i, ...I, ...o, ...E]);
    } catch (t) {
      if (console.error("Couldn't apply elements change", t), tu.DEV || tu.MODE === Oe.TEST) throw t;
      return [u, !0];
    }
    try {
      g0.redrawTextBoundingBoxes(C, B), C = g0.reorderElements(C, B, g), g0.redrawBoundArrows(C, B);
    } catch (t) {
      if (console.error("Couldn't mutate elements after applying elements change", t), tu.DEV || tu.MODE === Oe.TEST) throw t;
    } finally {
      return [C, g.containsVisibleDifference];
    }
  }
  static applyDelta(u, e, C = { containsVisibleDifference: !0, containsZindexDifference: !0 }) {
    let { boundElements: B, ...g } = e.inserted;
    if (e.deleted.boundElements?.length || e.inserted.boundElements?.length) {
      let t = y0.mergeArrays(u.boundElements, e.inserted.boundElements, e.deleted.boundElements, (i) => i.id);
      Object.assign(g, { boundElements: t });
    }
    if (bu(u)) {
      let t = e;
      (t.deleted.crop || t.inserted.crop) && Object.assign(g, { crop: t.inserted.crop ?? null });
    }
    if (!C.containsVisibleDifference) {
      let { index: t, ...i } = g, I = g0.checkForVisibleDifference(u, i);
      C.containsVisibleDifference = I;
    }
    return C.containsZindexDifference || (C.containsZindexDifference = e.deleted.index !== e.inserted.index), Bu(u, g);
  }
  static checkForVisibleDifference(u, e) {
    return u.isDeleted && e.isDeleted !== !1 ? !1 : u.isDeleted && e.isDeleted === !1 || u.isDeleted === !1 && e.isDeleted ? !0 : y0.isRightDifferent(u, e);
  }
  resolveConflicts(u, e) {
    let C = /* @__PURE__ */ new Map(), B = (o, E) => {
      let Q = e.get(o.id);
      if (!Q) return;
      let s;
      u.get(o.id) === Q ? s = Bu(Q, E) : s = nA(Q, E), C.set(s.id, s), e.set(s.id, s);
    };
    for (let [o] of this.removed) g0.unbindAffected(u, e, o, B);
    for (let [o] of this.added) g0.rebindAffected(u, e, o, B);
    for (let [o] of Array.from(this.updated).filter(([E, Q]) => Object.keys({ ...Q.deleted, ...Q.inserted }).find((s) => R4A.has(s)))) {
      let E = e.get(o);
      !E || E.isDeleted || g0.rebindAffected(u, e, o, B);
    }
    let g = new Map(Array.from(u).filter(([o]) => C.has(o))), { added: t, removed: i, updated: I } = g0.calculate(g, C);
    for (let [o, E] of t) this.added.set(o, E);
    for (let [o, E] of i) this.removed.set(o, E);
    for (let [o, E] of I) this.updated.set(o, E);
    return C;
  }
  static unbindAffected(u, e, C, B) {
    let g = () => u.get(C), t = () => e.get(C);
    ja.unbindAffected(e, g(), B), ja.unbindAffected(e, t(), B), Ta.unbindAffected(e, g(), B), Ta.unbindAffected(e, t(), B);
  }
  static rebindAffected(u, e, C, B) {
    let g = () => u.get(C), t = () => e.get(C);
    ja.unbindAffected(e, g(), B), ja.rebindAffected(e, t(), B), Ta.unbindAffected(e, g(), (i, I) => {
      UA(i) && B(i, I);
    }), Ta.rebindAffected(e, t(), B);
  }
  static redrawTextBoundingBoxes(u, e) {
    let C = /* @__PURE__ */ new Map();
    for (let B of e.values()) {
      if (Xu(B)) {
        let { containerId: g } = B, t = g ? u.get(g) : void 0;
        t && C.set(t.id, { container: t, boundText: B });
      }
      if (MC(B)) {
        let g = Tg(B), t = g ? u.get(g) : void 0;
        t && C.set(B.id, { container: B, boundText: t });
      }
    }
    for (let { container: B, boundText: g } of C.values()) B.isDeleted || g.isDeleted || Ge(g, B, u, !1);
  }
  static redrawBoundArrows(u, e) {
    for (let C of e.values()) !C.isDeleted && DB(C) && Ve(C, u, {});
  }
  static reorderElements(u, e, C) {
    if (!C.containsZindexDifference) return u;
    let B = Array.from(u.values()), g = h3A([...B]), t = y0.getRightDifferences(B, g, !0).reduce((i, I) => {
      let o = B[Number(I)];
      return o && e.has(o.id) && i.set(o.id, o), i;
    }, /* @__PURE__ */ new Map());
    return !C.containsVisibleDifference && t.size && (C.containsVisibleDifference = !0), PA(Cg(g, t));
  }
  static postProcess(u, e) {
    try {
      y0.diffArrays(u, e, "boundElements", (C) => C.id);
    } catch (C) {
      if (console.error("Couldn't postprocess elements change deltas."), tu.DEV || tu.MODE === Oe.TEST) throw C;
    } finally {
      return [u, e];
    }
  }
  static stripIrrelevantProps(u) {
    let { id: e, updated: C, version: B, versionNonce: g, seed: t, ...i } = u;
    return i;
  }
};
J(qt, "satisfiesAddition", ({ deleted: A, inserted: u }) => A.isDeleted === !0 && !u.isDeleted), J(qt, "satisfiesRemoval", ({ deleted: A, inserted: u }) => !A.isDeleted && u.isDeleted === !0), J(qt, "satisfiesUpdate", ({ deleted: A, inserted: u }) => !!A.isDeleted == !!u.isDeleted), J(qt, "createApplier", (A, u, e) => {
  let C = qt.createGetter(A, u, e);
  return (B) => Array.from(B.entries()).reduce((g, [t, i]) => {
    let I = C(t, i.inserted);
    if (I) {
      let o = qt.applyDelta(I, i, e);
      A.set(o.id, o), g.set(o.id, o);
    }
    return g;
  }, /* @__PURE__ */ new Map());
}), J(qt, "createGetter", (A, u, e) => (C, B) => {
  let g = A.get(C);
  return g || (g = u.get(C), g && (e.containsZindexDifference = !0, (B.isDeleted === !1 || B.isDeleted !== !0 && g.isDeleted === !1) && (e.containsVisibleDifference = !0))), g;
});
var c5 = qt, JB = class {
  constructor() {
    J(this, "subscribers", []);
  }
  on(...A) {
    let u = A.flat().filter((e) => typeof e == "function");
    return this.subscribers.push(...u), () => this.off(u);
  }
  once(...A) {
    let u = A.flat().filter((C) => typeof C == "function");
    u.push(() => e());
    let e = this.on(...u);
    return e;
  }
  off(...A) {
    let u = A.flat();
    this.subscribers = this.subscribers.filter((e) => !u.includes(e));
  }
  trigger(...A) {
    for (let u of this.subscribers) u(...A);
    return this;
  }
  clear() {
    this.subscribers = [];
  }
}, oy = "__observedAppState", fl = (A) => {
  let u = { name: A.name, editingGroupId: A.editingGroupId, viewBackgroundColor: A.viewBackgroundColor, selectedElementIds: A.selectedElementIds, selectedGroupIds: A.selectedGroupIds, editingLinearElementId: A.editingLinearElement?.elementId || null, selectedLinearElementId: A.selectedLinearElement?.elementId || null, croppingElementId: A.croppingElementId };
  return Reflect.defineProperty(u, oy, { value: !0, enumerable: !1 }), u;
}, p3A = (A) => !!Reflect.get(A, oy), aA = { IMMEDIATELY: "IMMEDIATELY", NEVER: "NEVER", EVENTUALLY: "EVENTUALLY" }, m3A = class {
  constructor(u, e) {
    this.elementsChange = u, this.appStateChange = e;
  }
}, k3A = class {
  constructor() {
    J(this, "onStoreIncrementEmitter", new JB()), J(this, "scheduledActions", /* @__PURE__ */ new Set()), J(this, "_snapshot", d5.empty()), J(this, "shouldCaptureIncrement", () => {
      this.scheduleAction(aA.IMMEDIATELY);
    }), J(this, "shouldUpdateSnapshot", () => {
      this.scheduleAction(aA.NEVER);
    }), J(this, "scheduleAction", (u) => {
      this.scheduledActions.add(u), this.satisfiesScheduledActionsInvariant();
    }), J(this, "commit", (u, e) => {
      try {
        this.scheduledActions.has(aA.IMMEDIATELY) ? this.captureIncrement(u, e) : this.scheduledActions.has(aA.NEVER) && this.updateSnapshot(u, e);
      } finally {
        this.satisfiesScheduledActionsInvariant(), this.scheduledActions = /* @__PURE__ */ new Set();
      }
    }), J(this, "captureIncrement", (u, e) => {
      let C = this.snapshot, B = this.snapshot.maybeClone(u, e);
      if (C !== B) {
        let g = B.meta.didElementsChange ? c5.calculate(C.elements, B.elements) : c5.empty(), t = B.meta.didAppStateChange ? l5.calculate(C.appState, B.appState) : l5.empty();
        (!g.isEmpty() || !t.isEmpty()) && this.onStoreIncrementEmitter.trigger(new m3A(g, t)), this.snapshot = B;
      }
    }), J(this, "updateSnapshot", (u, e) => {
      let C = this.snapshot.maybeClone(u, e);
      this.snapshot !== C && (this.snapshot = C);
    }), J(this, "filterUncomittedElements", (u, e) => {
      for (let [C, B] of u.entries()) {
        if (!e.get(C)) continue;
        let g = this.snapshot.elements.get(C);
        g ? g.version < B.version && e.set(C, g) : e.delete(C);
      }
      return e;
    }), J(this, "clear", () => {
      this.snapshot = d5.empty(), this.scheduledActions = /* @__PURE__ */ new Set();
    }), J(this, "satisfiesScheduledActionsInvariant", () => {
      if (!(this.scheduledActions.size >= 0 && this.scheduledActions.size <= 3)) {
        let u = `There can be at most three store actions scheduled at the same time, but there are "${this.scheduledActions.size}".`;
        if (console.error(u, this.scheduledActions.values()), tu.DEV || tu.MODE === Oe.TEST) throw new Error(u);
      }
    });
  }
  get snapshot() {
    return this._snapshot;
  }
  set snapshot(u) {
    this._snapshot = u;
  }
}, d5 = class t1 {
  constructor(u, e, C = { didElementsChange: !1, didAppStateChange: !1, isEmpty: !1 }) {
    this.elements = u, this.appState = e, this.meta = C;
  }
  static empty() {
    return new t1(/* @__PURE__ */ new Map(), fl($B()), { didElementsChange: !1, didAppStateChange: !1, isEmpty: !0 });
  }
  isEmpty() {
    return this.meta.isEmpty;
  }
  maybeClone(u, e) {
    let C = this.maybeCreateElementsSnapshot(u), B = this.maybeCreateAppStateSnapshot(e), g = !1, t = !1;
    return this.elements !== C && (g = !0), this.appState !== B && (t = !0), !g && !t ? this : new t1(C, B, { didElementsChange: g, didAppStateChange: t });
  }
  maybeCreateAppStateSnapshot(u) {
    if (!u) return this.appState;
    let e = p3A(u) ? u : fl(u);
    return this.detectChangedAppState(e) ? e : this.appState;
  }
  detectChangedAppState(u) {
    return !Ee(this.appState, u, { selectedElementIds: Ee, selectedGroupIds: Ee });
  }
  maybeCreateElementsSnapshot(u) {
    return u ? this.detectChangedElements(u) ? this.createElementsSnapshot(u) : this.elements : this.elements;
  }
  detectChangedElements(u) {
    if (this.elements === u) return !1;
    if (this.elements.size !== u.size) return !0;
    let e = Array.from(u.keys());
    for (let C = e.length - 1; C >= 0; C--) {
      let B = this.elements.get(e[C]), g = u.get(e[C]);
      if (!B || !g || B.id !== g.id || B.versionNonce !== g.versionNonce) return !0;
    }
    return !1;
  }
  createElementsSnapshot(u) {
    let e = /* @__PURE__ */ new Map();
    for (let [C, B] of this.elements.entries()) u.get(C) ? e.set(C, B) : e.set(C, Bu(B, { isDeleted: !0 }));
    for (let [C, B] of u.entries()) {
      let g = e.get(C);
      (!g || g && g.versionNonce !== B.versionNonce) && e.set(C, ZE(B));
    }
    return e;
  }
}, RB = /* @__PURE__ */ new Map(), y3A = /^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|&t=|\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/, b3A = /^(?:http(?:s)?:\/\/)?(?:(?:w){3}\.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/, U3A = /^https:\/\/(?:www\.)?figma\.com/, D5 = /^https:\/\/gist\.github\.com\/([\w_-]+)\/([\w_-]+)/, G3A = /^<script[\s\S]*?\ssrc=["'](https:\/\/gist\.github\.com\/.*?)\.js["']/i, h5 = /(?:https?:\/\/)?(?:(?:w){3}\.)?(?:twitter|x)\.com\/[^/]+\/status\/(\d+)/, f3A = /^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:twitter|x)\.com\/[^"']*)/i, L3A = /^https:\/\/(?:www\.)?val\.town\/(v|embed)\/[a-zA-Z_$][0-9a-zA-Z_$]+\.[a-zA-Z_$][0-9a-zA-Z_$]+/, x3A = /^<(?:iframe|blockquote)[\s\S]*?\s(?:src|href)=["']([^"']*)["'][\s\S]*?>$/i, w5 = /giphy.com\/(?:clips|embed|gifs)\/[a-zA-Z0-9]*?-?([a-zA-Z0-9]+)(?:[^a-zA-Z0-9]|$)/, F5 = /^(?:http(?:s)?:\/\/)?(?:www\.)?reddit\.com\/r\/([a-zA-Z0-9_]+)\/comments\/([a-zA-Z0-9_]+)\/([a-zA-Z0-9_]+)\/?(?:\?[^#\s]*)?(?:#[^\s]*)?$/, S3A = /^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:www\.)?reddit\.com\/[^"']*)/i, i1 = /* @__PURE__ */ new Set(["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "figma.com", "link.excalidraw.com", "gist.github.com", "twitter.com", "x.com", "*.simplepdf.eu", "stackblitz.com", "val.town", "giphy.com", "reddit.com"]), p5 = /* @__PURE__ */ new Set(["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "figma.com", "twitter.com", "x.com", "*.simplepdf.eu", "stackblitz.com", "reddit.com"]), DQ = (A) => `<html><body>${A}</body></html>`, za = (A) => {
  if (!A) return null;
  if (RB.has(A)) return RB.get(A);
  let u = A, e = p5.has(E1(A, p5) || ""), C = "generic", B = { w: 560, h: 840 }, g = A.match(y3A);
  if (g?.[2]) {
    let I = g[3] ? `&start=${g[3]}` : "", o = A.includes("shorts");
    switch (C = "video", g[1]) {
      case "embed/":
      case "watch?v=":
      case "shorts/":
        A = `https://www.youtube.com/embed/${g[2]}?enablejsapi=1${I}`;
        break;
      case "playlist?list=":
      case "embed/videoseries?list=":
        A = `https://www.youtube.com/embed/videoseries?list=${g[2]}&enablejsapi=1${I}`;
        break;
      default:
        A = `https://www.youtube.com/embed/${g[2]}?enablejsapi=1${I}`;
        break;
    }
    return B = o ? { w: 315, h: 560 } : { w: 560, h: 315 }, RB.set(u, { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } }), { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } };
  }
  let t = A.match(b3A);
  if (t?.[1]) {
    let I = t?.[1], o = /^\d+$/.test(I) ? void 0 : new URIError("Invalid embed link format");
    return C = "video", A = `https://player.vimeo.com/video/${I}?api=1`, B = { w: 560, h: 315 }, RB.set(u, { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } }), { link: A, intrinsicSize: B, type: C, error: o, sandbox: { allowSameOrigin: e } };
  }
  if (A.match(U3A)) return C = "generic", A = `https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(A)}`, B = { w: 550, h: 550 }, RB.set(u, { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } }), { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } };
  let i = A.match(L3A);
  if (i) return A = i[1] === "embed" ? i[0] : i[0].replace("/v", "/embed"), RB.set(u, { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } }), { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } };
  if (h5.test(A)) {
    let I = A.match(h5)[1], o = xs(`https://twitter.com/x/status/${I}`), E = { type: "document", srcdoc: (Q) => DQ(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${Q}"><a href="${o}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>`), intrinsicSize: { w: 480, h: 480 }, sandbox: { allowSameOrigin: e } };
    return RB.set(u, E), E;
  }
  if (F5.test(A)) {
    let [, I, o, E] = A.match(F5), Q = xs(`https://reddit.com/r/${I}/comments/${o}/${E}`), s = { type: "document", srcdoc: (l) => DQ(`<blockquote class="reddit-embed-bq" data-embed-theme="${l}"><a href="${Q}"></a><br></blockquote><script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"><\/script>`), intrinsicSize: { w: 480, h: 480 }, sandbox: { allowSameOrigin: e } };
    return RB.set(u, s), s;
  }
  if (D5.test(A)) {
    let [, I, o] = A.match(D5), E = xs(`https://gist.github.com/${I}/${o}`), Q = { type: "document", srcdoc: () => DQ(`
          <script src="${E}.js"><\/script>
          <style type="text/css">
            * { margin: 0px; }
            table, .gist { height: 100%; }
            .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }
          </style>
        `), intrinsicSize: { w: 550, h: 720 }, sandbox: { allowSameOrigin: e } };
    return RB.set(A, Q), Q;
  }
  return RB.set(A, { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } }), { link: A, intrinsicSize: B, type: C, sandbox: { allowSameOrigin: e } };
}, Qy = (A) => {
  let u;
  jt(A) ? u = "IFrame element" : u = !A.link || A?.link === "" ? "Empty Web-Embed" : A.link;
  let e = Math.max(Math.min(A.width / 2, A.width / u.length), A.width / 30), C = t0.Helvetica, B = vu({ fontSize: e, fontFamily: C });
  return nC({ x: A.x + A.width / 2, y: A.y + A.height / 2, strokeColor: A.strokeColor !== "transparent" ? A.strokeColor : "black", backgroundColor: "transparent", fontFamily: C, fontSize: e, text: JE(u, B, A.width - 20), textAlign: "center", verticalAlign: IC.MIDDLE, angle: A.angle ?? 0 });
};
pA({ name: "setEmbeddableAsActiveTool", trackEvent: { category: "toolbar" }, target: "Tool", label: "toolBar.embeddable", perform: (A, u, e, C) => {
  let B = b0(u, { type: "embeddable" });
  return vB(C.canvas, { ...u, activeTool: B }), { elements: A, appState: { ...u, activeTool: b0(u, { type: "embeddable" }) }, captureUpdate: aA.EVENTUALLY };
} });
var E1 = (A, u) => {
  try {
    let { hostname: e } = new URL(A), C = e.replace(/^www\./, "");
    if (u instanceof Set) {
      if (i1.has(C)) return C;
      let g = C.replace(/^([^.]+)/, "*");
      return i1.has(g) ? g : null;
    }
    let B = u.replace(/^www\./, "");
    if (C === B) return B;
  } catch {
  }
  return null;
}, N3A = (A) => {
  let u = A.match(f3A);
  if (u && u.length === 2) return u[1];
  let e = A.match(S3A);
  if (e && e.length === 2) return e[1];
  let C = A.match(G3A);
  if (C && C.length === 2) return C[1];
  if (w5.test(A)) return `https://giphy.com/embed/${w5.exec(A)[1]}`;
  let B = A.match(x3A);
  return B && B.length === 2 ? B[1] : A;
}, Hs = (A, u) => {
  if (!A) return !1;
  if (u != null) if (typeof u == "function") {
    let e = u(A);
    if (typeof e == "boolean") return e;
  } else {
    if (typeof u == "boolean") return u;
    if (u instanceof RegExp) return u.test(A);
    if (Array.isArray(u)) {
      for (let e of u) if (e instanceof RegExp) {
        if (A.match(e)) return !0;
      } else if (E1(A, e)) return !0;
      return !1;
    }
  }
  return !!E1(A, i1);
}, Jo = (A, u, e) => {
  let C = { sets: u.sets, shape: u.shape, options: { ...u.options, fixedDecimalPlaceDigits: e } };
  return A.draw(C);
}, Zo = (A, u, e, C, B) => {
  if (!C.enabled || !C.clip) return null;
  let g = Xe(A, B);
  if (g) {
    let t = u.ownerDocument.createElementNS(pu, "g");
    return t.setAttributeNS(pu, "clip-path", `url(#${g.id})`), e.forEach((i) => t.appendChild(i)), t;
  }
  return null;
}, Ks = (A, u, e, C, B, g, t, i) => {
  let I = { x: g, y: t }, [o, E, Q, s] = Au(A, u), l = (Q - o) / 2 - (A.x - o), c = (s - E) / 2 - (A.y - E);
  if (UA(A)) {
    let p = _0(A, u);
    if (Eu(p)) {
      let [k, b, f, L] = Au(p, u), N = LA.getBoundTextElementPosition(p, A, u);
      l = (f - k) / 2 - (N.x - k), c = (L - b) / 2 - (N.y - b), g = g + N.x - A.x, t = t + N.y - A.y;
    }
  }
  let D = 180 * A.angle / Math.PI, h = C;
  if (A.link) {
    let p = C.ownerDocument.createElementNS(pu, "a");
    p.setAttribute("href", oC(A.link)), h.appendChild(p), h = p;
  }
  let F = (p, k) => {
    qg() && p.setAttribute("data-id", k.id), h.appendChild(p);
  }, m = (Xe(A, u)?.opacity ?? 100) * A.opacity / 1e4;
  switch (A.type) {
    case "selection":
      throw new Error("Selection rendering is not supported for SVG");
    case "rectangle":
    case "diamond":
    case "ellipse": {
      let p = a0.generateElementShape(A, null), k = Jo(e, p, vo);
      m !== 1 && (k.setAttribute("stroke-opacity", `${m}`), k.setAttribute("fill-opacity", `${m}`)), k.setAttribute("stroke-linecap", "round"), k.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`);
      let b = Zo(A, h, [k], i.frameRendering, u);
      F(b || k, A);
      break;
    }
    case "iframe":
    case "embeddable": {
      let p = a0.generateElementShape(A, i), k = Jo(e, p, vo), b = A.opacity / 100;
      b !== 1 && (k.setAttribute("stroke-opacity", `${b}`), k.setAttribute("fill-opacity", `${b}`)), k.setAttribute("stroke-linecap", "round"), k.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`), F(k, A);
      let f = Qy(A);
      Ks(f, u, e, h, B, f.x + I.x - A.x, f.y + I.y - A.y, i);
      let L = Jo(e, p, vo);
      for (L.setAttribute("stroke-linecap", "round"), L.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`); L.firstChild; ) L.removeChild(L.firstChild);
      let N = sB(Math.min(A.width, A.height), A), M = za(U2(A.link || ""));
      if (i.renderEmbeddables === !1 || M?.type === "document") {
        let v = C.ownerDocument.createElementNS(pu, "a");
        v.setAttribute("href", oC(A.link || "")), v.setAttribute("target", "_blank"), v.setAttribute("rel", "noopener noreferrer"), v.style.borderRadius = `${N}px`, L.appendChild(v);
      } else {
        let v = C.ownerDocument.createElementNS(pu, "foreignObject");
        v.style.width = `${A.width}px`, v.style.height = `${A.height}px`, v.style.border = "none";
        let K = v.ownerDocument.createElementNS(pu, "div");
        K.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"), K.style.width = "100%", K.style.height = "100%";
        let q = K.ownerDocument.createElement("iframe");
        q.src = M?.link ?? "", q.style.width = "100%", q.style.height = "100%", q.style.border = "none", q.style.borderRadius = `${N}px`, q.style.top = "0", q.style.left = "0", q.allowFullscreen = !0, K.appendChild(q), v.appendChild(K), L.appendChild(v);
      }
      F(L, A);
      break;
    }
    case "line":
    case "arrow": {
      let p = gu(A, u), k = C.ownerDocument.createElementNS(pu, "mask");
      if (p) {
        k.setAttribute("id", `mask-${A.id}`);
        let L = C.ownerDocument.createElementNS(pu, "rect");
        g = g || 0, t = t || 0, L.setAttribute("x", "0"), L.setAttribute("y", "0"), L.setAttribute("fill", "#fff"), L.setAttribute("width", `${A.width + 100 + g}`), L.setAttribute("height", `${A.height + 100 + t}`), k.appendChild(L);
        let N = C.ownerDocument.createElementNS(pu, "rect"), M = LA.getBoundTextElementPosition(A, p, u), v = g + M.x - A.x, K = t + M.y - A.y;
        N.setAttribute("x", v.toString()), N.setAttribute("y", K.toString()), N.setAttribute("fill", "#000"), N.setAttribute("width", `${p.width}`), N.setAttribute("height", `${p.height}`), N.setAttribute("opacity", "1"), k.appendChild(N);
      }
      let b = C.ownerDocument.createElementNS(pu, "g");
      p && b.setAttribute("mask", `url(#mask-${A.id})`), b.setAttribute("stroke-linecap", "round"), a0.generateElementShape(A, i).forEach((L) => {
        let N = Jo(e, L, vo);
        m !== 1 && (N.setAttribute("stroke-opacity", `${m}`), N.setAttribute("fill-opacity", `${m}`)), N.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`), A.type === "line" && Wg(A.points) && A.backgroundColor !== "transparent" && N.setAttribute("fill-rule", "evenodd"), b.appendChild(N);
      });
      let f = Zo(A, h, [b, k], i.frameRendering, u);
      f ? (F(f, A), h.appendChild(f)) : (F(b, A), h.append(k));
      break;
    }
    case "freedraw": {
      let p = a0.generateElementShape(A, i), k = p ? Jo(e, p, vo) : C.ownerDocument.createElementNS(pu, "g");
      m !== 1 && (k.setAttribute("stroke-opacity", `${m}`), k.setAttribute("fill-opacity", `${m}`)), k.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`), k.setAttribute("stroke", "none");
      let b = C.ownerDocument.createElementNS(pu, "path");
      b.setAttribute("fill", A.strokeColor), b.setAttribute("d", Lk(A)), k.appendChild(b);
      let f = Zo(A, h, [k], i.frameRendering, u);
      F(f || k, A);
      break;
    }
    case "image": {
      let p = Math.round(A.width), k = Math.round(A.height), b = bC(A) && B[A.fileId];
      if (b) {
        let { reuseImages: f = !0 } = i, L = `image-${b.id}`, N = A.width, M = A.height;
        A.crop && ({ width: N, height: M } = jg(A), L = `image-crop-${b.id}-${_y(`${N}x${M}`)}`), f || (L = `image-${A.id}`);
        let v = C.querySelector(`#${L}`);
        if (!v) {
          v = C.ownerDocument.createElementNS(pu, "symbol"), v.id = L;
          let P = C.ownerDocument.createElementNS(pu, "image");
          P.setAttribute("href", b.dataURL), P.setAttribute("preserveAspectRatio", "none"), A.crop || !f ? (P.setAttribute("width", `${N}`), P.setAttribute("height", `${M}`)) : (P.setAttribute("width", "100%"), P.setAttribute("height", "100%")), v.appendChild(P), (h.querySelector("defs") || h).prepend(v);
        }
        let K = C.ownerDocument.createElementNS(pu, "use");
        K.setAttribute("href", `#${L}`), i.exportWithDarkMode && b.mimeType !== zA.svg && K.setAttribute("filter", pk);
        let q = 0, j = 0;
        if (A.crop) {
          let { width: P, height: _ } = jg(A);
          q = A.crop.x / (A.crop.naturalWidth / P), j = A.crop.y / (A.crop.naturalHeight / _);
        }
        let uA = l + q, O = c + j;
        K.setAttribute("width", `${p + q}`), K.setAttribute("height", `${k + j}`), K.setAttribute("opacity", `${m}`), (A.scale[0] !== 1 || A.scale[1] !== 1) && K.setAttribute("transform", `translate(${uA} ${O}) scale(${A.scale[0]} ${A.scale[1]}) translate(${-uA} ${-O})`);
        let $ = C.ownerDocument.createElementNS(pu, "g");
        if (A.crop) {
          let P = C.ownerDocument.createElementNS(pu, "mask");
          P.setAttribute("id", `mask-image-crop-${A.id}`), P.setAttribute("fill", "#fff");
          let _ = C.ownerDocument.createElementNS(pu, "rect");
          _.setAttribute("x", `${q}`), _.setAttribute("y", `${j}`), _.setAttribute("width", `${p}`), _.setAttribute("height", `${k}`), P.appendChild(_), h.appendChild(P), $.setAttribute("mask", `url(#${P.id})`);
        }
        if ($.appendChild(K), $.setAttribute("transform", `translate(${g - q} ${t - j}) rotate(${D} ${uA} ${O})`), A.roundness) {
          let P = C.ownerDocument.createElementNS(pu, "clipPath");
          P.id = `image-clipPath-${A.id}`;
          let _ = C.ownerDocument.createElementNS(pu, "rect"), CA = sB(Math.min(A.width, A.height), A);
          _.setAttribute("width", `${A.width}`), _.setAttribute("height", `${A.height}`), _.setAttribute("rx", `${CA}`), _.setAttribute("ry", `${CA}`), P.appendChild(_), F(P, A), $.setAttributeNS(pu, "clip-path", `url(#${P.id})`);
        }
        let X = Zo(A, h, [$], i.frameRendering, u);
        F(X || $, A);
      }
      break;
    }
    case "frame":
    case "magicframe": {
      if (i.frameRendering.enabled && i.frameRendering.outline) {
        let p = document.createElementNS(pu, "rect");
        p.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`), p.setAttribute("width", `${A.width}px`), p.setAttribute("height", `${A.height}px`), p.setAttribute("rx", i0.radius.toString()), p.setAttribute("ry", i0.radius.toString()), p.setAttribute("fill", "none"), p.setAttribute("stroke", i0.strokeColor), p.setAttribute("stroke-width", i0.strokeWidth.toString()), F(p, A);
      }
      break;
    }
    default:
      if (UA(A)) {
        let p = C.ownerDocument.createElementNS(pu, "g");
        m !== 1 && (p.setAttribute("stroke-opacity", `${m}`), p.setAttribute("fill-opacity", `${m}`)), p.setAttribute("transform", `translate(${g || 0} ${t || 0}) rotate(${D} ${l} ${c})`);
        let k = A.text.replace(/\r\n?/g, `
`).split(`
`), b = ln(A.fontSize, A.lineHeight), f = A.textAlign === "center" ? A.width / 2 : A.textAlign === "right" ? A.width : 0, L = Ik(A.fontFamily, A.fontSize, b), N = y8(A.text) ? "rtl" : "ltr", M = A.textAlign === "center" ? "middle" : A.textAlign === "right" || N === "rtl" ? "end" : "start";
        for (let K = 0; K < k.length; K++) {
          let q = C.ownerDocument.createElementNS(pu, "text");
          q.textContent = k[K], q.setAttribute("x", `${f}`), q.setAttribute("y", `${K * b + L}`), q.setAttribute("font-family", gI(A)), q.setAttribute("font-size", `${A.fontSize}px`), q.setAttribute("fill", A.strokeColor), q.setAttribute("text-anchor", M), q.setAttribute("style", "white-space: pre;"), q.setAttribute("direction", N), q.setAttribute("dominant-baseline", "alphabetic"), p.appendChild(q);
        }
        let v = Zo(A, h, [p], i.frameRendering, u);
        F(v || p, A);
      } else throw new Error(`Unimplemented type ${A.type}`);
  }
}, R3A = (A, u, e, C, B, g) => {
  C && (A.filter((t) => !UC(t)).forEach((t) => {
    if (!t.isDeleted) {
      if (UA(t) && t.containerId && u.has(t.containerId)) return;
      try {
        Ks(t, u, e, C, B, t.x + g.offsetX, t.y + g.offsetY, g);
        let i = gu(t, u);
        i && Ks(i, u, e, C, B, i.x + g.offsetX, i.y + g.offsetY, g);
      } catch (i) {
        console.error(i);
      }
    }
  }), A.filter((t) => UC(t)).forEach((t) => {
    if (!t.isDeleted) try {
      Ks(t, u, e, C, B, t.x + g.offsetX, t.y + g.offsetY, g);
    } catch (i) {
      console.error(i);
    }
  }));
}, m5 = 500, ny = (A) => {
  let u = A.extensions?.reduce((C, B) => (C.push(zA[B]), C), []), e = A.extensions?.reduce((C, B) => B === "jpg" ? C.concat(".jpg", ".jpeg") : C.concat(`.${B}`), []);
  return VCA({ description: A.description, extensions: e, mimeTypes: u, multiple: A.multiple ?? !1, legacySetup: (C, B, g) => {
    let t = tI(B, m5), i = () => {
      I(), document.addEventListener("keyup", t), document.addEventListener("pointerup", t), t();
    }, I = () => {
      if (g.files?.length) {
        let E = A.multiple ? [...g.files] : g.files[0];
        C(E);
      }
    };
    requestAnimationFrame(() => {
      window.addEventListener("focus", i);
    });
    let o = window.setInterval(() => {
      I();
    }, m5);
    return (E) => {
      clearInterval(o), t.cancel(), window.removeEventListener("focus", i), document.removeEventListener("keyup", t), document.removeEventListener("pointerup", t), E && (console.warn("Opening the file was canceled (legacy-fs)."), E(new r4()));
    };
  } });
}, Ll = (A, u) => OCA(A, { fileName: `${u.name}.${u.extension}`, description: u.description, extensions: [`.${u.extension}`], mimeTypes: u.mimeTypes }, u.fileHandle), M3A = (A, u) => {
  let e = {};
  for (let C of A) !C.isDeleted && "fileId" in C && C.fileId && u[C.fileId] && (e[C.fileId] = u[C.fileId]);
  return e;
}, x2 = (A, u, e, C) => {
  let B = { type: LC.excalidraw, version: i4.excalidraw, source: A2, elements: C === "local" ? Ab(A) : QdA(A), appState: C === "local" ? w8(u) : XEA(u), files: C === "local" ? M3A(A, e) : void 0 };
  return JSON.stringify(B, null, 2);
}, ry = async (A, u, e, C = u.name || d8) => {
  let B = x2(A, u, e, "local"), g = new Blob([B], { type: zA.excalidraw });
  return { fileHandle: await Ll(g, { name: C, extension: "excalidraw", description: "Excalidraw file", fileHandle: i9(u.fileHandle) ? null : u.fileHandle }) };
}, Y3A = async (A, u) => {
  let e = await ny({ description: "Excalidraw files" });
  return gb(await E9(e), A, u, e.handle);
}, v3A = (A) => A?.type === LC.excalidraw && (!A.elements || Array.isArray(A.elements) && (!A.appState || typeof A.appState == "object")), sy = (A) => typeof A == "object" && A && A.type === LC.excalidrawLibrary && (A.version === 1 || A.version === 2), ly = (A) => {
  let u = { type: LC.excalidrawLibrary, version: i4.excalidrawLibrary, source: A2, libraryItems: A };
  return JSON.stringify(u, null, 2);
}, H3A = async (A) => {
  let u = ly(A);
  await Ll(new Blob([u], { type: zA.excalidrawlib }), { name: "library", extension: "excalidrawlib", description: "Excalidraw library file" });
}, cy = (A) => new Promise((u, e) => {
  let C = new Image();
  C.onload = () => {
    u(C);
  }, C.onerror = (B) => {
    e(B);
  }, C.src = A;
}), dy = async ({ fileIds: A, files: u, imageCache: e }) => {
  let C = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map();
  return await Promise.all(A.reduce((g, t) => {
    let i = u[t];
    return i && !C.has(t) ? (C.set(t, !0), g.concat((async () => {
      try {
        if (i.mimeType === zA.binary) throw new Error("Only images can be added to ImageCache");
        let I = cy(i.dataURL), o = { image: I, mimeType: i.mimeType };
        e.set(t, o);
        let E = await I;
        e.set(t, { ...o, image: E });
      } catch {
        B.set(t, !0);
      }
    })())) : g;
  }, [])), { imageCache: e, updatedFiles: C, erroredFiles: B };
}, Dy = (A) => A.filter((u) => bC(u)), K3A = (A) => A?.nodeName.toLowerCase() === "svg", k5 = (A) => {
  let u = new DOMParser().parseFromString(A, zA.svg), e = u.querySelector("svg");
  if (u.querySelector("parsererror") || !K3A(e)) throw new Error("Invalid SVG");
  {
    e.hasAttribute("xmlns") || e.setAttribute("xmlns", pu);
    let C = e.getAttribute("width"), B = e.getAttribute("height");
    (C?.includes("%") || C === "auto") && (C = null), (B?.includes("%") || B === "auto") && (B = null);
    let g = e.getAttribute("viewBox");
    if (!C || !B) {
      if (C = C || "50", B = B || "50", g) {
        let t = g.match(/\d+ +\d+ +(\d+(?:\.\d+)?) +(\d+(?:\.\d+)?)/);
        t && ([, C, B] = t);
      }
      e.setAttribute("width", C), e.setAttribute("height", B);
    }
    return g || e.setAttribute("viewBox", `0 0 ${C} ${B}`), e.outerHTML;
  }
}, hy = document.createElement("img");
hy.src = `data:${zA.svg}, ${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#1971c2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>')}`;
var wy = document.createElement("img");
wy.src = `data:${zA.svg}, ${encodeURIComponent('<svg  xmlns="http://www.w3.org/2000/svg"  width="16"  height="16"  viewBox="0 0 24 24"  fill="none"  stroke="#1971c2"  stroke-width="2"  stroke-linecap="round"  stroke-linejoin="round"  class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-big-right-line"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 9v-3.586a1 1 0 0 1 1.707 -.707l6.586 6.586a1 1 0 0 1 0 1.414l-6.586 6.586a1 1 0 0 1 -1.707 -.707v-3.586h-6v-6h6z" /><path d="M3 9v6" /></svg>')}`;
var S2 = ([A, u, e, C], B, g) => {
  let t = jlA, i = t / g.zoom.value, I = t / g.zoom.value, o = t / g.zoom.value, E = (A + e) / 2, Q = (u + C) / 2, s = (t - 8) / (2 * g.zoom.value), l = 4 / g.zoom.value, c = e + l - s, D = u - l - o + s, [h, F] = EA(U(c + i / 2, D + I / 2), U(E, Q), B);
  return [h - i / 2, F - I / 2, i, I];
}, Fy = (A, u, e, [C, B]) => {
  let g = 4 / e.zoom.value, [t, i, I, o] = Au(A, u), [E, Q, s, l] = S2([t, i, I, o], A.angle, e);
  return C > E - g && C < E + g + s && B > Q - g && B < Q + l + g;
}, Rd = (A, u, e, [C, B], g) => !A.link || e.selectedElementIds[A.id] ? !1 : !g && e.viewModeEnabled && h2(C, B, A, u) ? !0 : Fy(A, u, e, U(C, B)), y4 = (A, u, e, C, B = !0) => {
  A.beginPath(), A.arc(u, e, C, 0, Math.PI * 2), A.fill(), B && A.stroke();
}, N2 = (A, u) => [A.width / u, A.height / u], R2 = ({ canvas: A, scale: u, normalizedWidth: e, normalizedHeight: C, theme: B, isExporting: g, viewBackgroundColor: t }) => {
  let i = A.getContext("2d");
  return i.setTransform(1, 0, 0, 1, 0, 0), i.scale(u, u), g && B === su.DARK && (i.filter = C2), typeof t == "string" ? ((t === "transparent" || t.length === 5 || t.length === 9 || /(hsla|rgba)\(/.test(t)) && i.clearRect(0, 0, e, C), i.save(), i.fillStyle = t, i.fillRect(0, 0, e, C), i.restore()) : i.clearRect(0, 0, e, C), i;
}, py = (A, u) => {
  let e = window.location.href;
  try {
    let C = new URL(e);
    return C.searchParams.set(Ql, A), oC(C.toString());
  } catch (C) {
    console.error(C);
  }
  return oC(e);
}, my = (A, u) => {
  if (A.length > 0 && xl(A)) {
    if (A.length === 1) return { id: A[0].id, type: "element" };
    if (A.length > 1) {
      let e = Object.keys(u.selectedGroupIds)[0];
      return e ? { id: e, type: "group" } : { id: A[0].groupIds[0], type: "group" };
    }
  }
  return null;
}, xl = (A) => !!(A.length === 1 || A.length > 1 && Vk(A)), hQ = (A) => {
  try {
    let u = new URL(A);
    return u.searchParams.has(Ql) && u.host === window.location.host;
  } catch {
    return !1;
  }
}, J3A = (A) => {
  try {
    let { searchParams: u } = new URL(A);
    if (u.has(Ql)) return u.get(Ql);
  } catch {
  }
  return null;
}, Es = { Bold: "#dddddd", Regular: "#e5e5e5" }, Z3A = (A, u, e, C, B, g, t, i) => {
  let I = C % u - u, o = B % u - u, E = u * g.value, Q = 1 / g.value;
  A.save(), g.value === 1 && A.translate(I % 1 ? 0 : 0.5, o % 1 ? 0 : 0.5);
  for (let s = I; s < I + t + u * 2; s += u) {
    let l = e > 1 && Math.round(s - C) % (e * u) === 0;
    if (!l && E < 10) continue;
    let c = Math.min(1 / g.value, l ? 4 : 1);
    A.lineWidth = c;
    let D = [c * 3, Q + (c + Q)];
    A.beginPath(), A.setLineDash(l ? [] : D), A.strokeStyle = l ? Es.Bold : Es.Regular, A.moveTo(s, o - u), A.lineTo(s, Math.ceil(o + i + u * 2)), A.stroke();
  }
  for (let s = o; s < o + i + u * 2; s += u) {
    let l = e > 1 && Math.round(s - B) % (e * u) === 0;
    if (!l && E < 10) continue;
    let c = Math.min(1 / g.value, l ? 4 : 1);
    A.lineWidth = c;
    let D = [c * 3, Q + (c + Q)];
    A.beginPath(), A.setLineDash(l ? [] : D), A.strokeStyle = l ? Es.Bold : Es.Regular, A.moveTo(I - u, s), A.lineTo(Math.ceil(I + t + u * 2), s), A.stroke();
  }
  A.restore();
}, y5 = (A, u, e, C) => {
  u.translate(A.x + C.scrollX, A.y + C.scrollY), u.beginPath(), u.roundRect ? u.roundRect(0, 0, A.width, A.height, i0.radius / C.zoom.value) : u.rect(0, 0, A.width, A.height), u.clip(), u.translate(-(A.x + C.scrollX), -(A.y + C.scrollY));
}, b5 = { regularLink: null, elementLink: null }, U5 = (A, u, e, C) => {
  if (A.link && !e.selectedElementIds[A.id]) {
    let [B, g, t, i] = Au(A, C), [I, o, E, Q] = S2([B, g, t, i], A.angle, e), s = I + E / 2, l = o + Q / 2;
    u.save(), u.translate(e.scrollX + s, e.scrollY + l), u.rotate(A.angle);
    let c = hQ(A.link) ? "elementLink" : "regularLink", D = b5[c];
    if (!D || D.zoom !== e.zoom.value) {
      D = Object.assign(document.createElement("canvas"), { zoom: e.zoom.value }), D.width = E * window.devicePixelRatio * e.zoom.value, D.height = Q * window.devicePixelRatio * e.zoom.value, b5[c] = D;
      let h = D.getContext("2d");
      h.scale(window.devicePixelRatio * e.zoom.value, window.devicePixelRatio * e.zoom.value), h.fillStyle = "#fff", h.fillRect(0, 0, E, Q), c === "elementLink" ? h.drawImage(wy, 0, 0, E, Q) : h.drawImage(hy, 0, 0, E, Q), h.restore();
    }
    u.drawImage(D, I - s, o - l, E, Q), u.restore();
  }
}, ky = ({ canvas: A, rc: u, elementsMap: e, allElementsMap: C, visibleElements: B, scale: g, appState: t, renderConfig: i }) => {
  if (A === null) return;
  let { renderGrid: I = !0, isExporting: o } = i, [E, Q] = N2(A, g), s = R2({ canvas: A, scale: g, normalizedWidth: E, normalizedHeight: Q, theme: t.theme, isExporting: o, viewBackgroundColor: t.viewBackgroundColor });
  s.scale(t.zoom.value, t.zoom.value), I && Z3A(s, t.gridSize, t.gridStep, t.scrollX, t.scrollY, t.zoom, E / t.zoom.value, Q / t.zoom.value);
  let l = /* @__PURE__ */ new Set();
  B.forEach((D) => {
    D.groupIds.length > 0 && t.frameToHighlight && t.selectedElementIds[D.id] && (ai(D, t.frameToHighlight, e) || D.groupIds.find((h) => l.has(h))) && D.groupIds.forEach((h) => l.add(h));
  });
  let c = /* @__PURE__ */ new Map();
  B.filter((D) => !UC(D)).forEach((D) => {
    try {
      let h = D.frameId || t.frameToHighlight?.id;
      if (UA(D) && D.containerId && e.has(D.containerId)) return;
      if (s.save(), h && t.frameRendering.enabled && t.frameRendering.clip) {
        let m = a1(D, e, t);
        m && Z5(D, m, t, e, c) && y5(m, s, i, t), gE(D, e, C, u, s, i, t);
      } else gE(D, e, C, u, s, i, t);
      let F = gu(D, e);
      F && gE(F, e, C, u, s, i, t), s.restore(), o || U5(D, s, t, e);
    } catch (h) {
      console.error(h, D.id, D.x, D.y, D.width, D.height);
    }
  }), B.filter((D) => UC(D)).forEach((D) => {
    try {
      let h = () => {
        if (gE(D, e, C, u, s, i, t), UC(D) && (o || je(D) && i.embedsValidationStatus.get(D.id) !== !0) && D.width && D.height) {
          let F = Qy(D);
          gE(F, e, C, u, s, i, t);
        }
        o || U5(D, s, t, e);
      };
      if ((D.frameId || t.frameToHighlight?.id) && t.frameRendering.enabled && t.frameRendering.clip) {
        s.save();
        let F = a1(D, e, t);
        F && Z5(D, F, t, e, c) && y5(F, s, i, t), h(), s.restore();
      } else h();
    } catch (h) {
      console.error(h);
    }
  }), i.pendingFlowchartNodes?.forEach((D) => {
    try {
      gE(D, e, C, u, s, i, t);
    } catch (h) {
      console.error(h);
    }
  });
}, yy = E4((A) => {
  ky(A);
}, { trailing: !0 }), by = (A, u) => {
  if (u) {
    yy(A);
    return;
  }
  ky(A);
}, q3A = (A, u) => {
  if (A.width <= u) return A;
  let e = document.createElement("canvas").getContext("2d");
  e.font = vu({ fontFamily: A.fontFamily, fontSize: A.fontSize });
  let C = A.text;
  if (e.measureText(C).width > u) for (let B = C.length; B > 0; B--) {
    let g = `${C.slice(0, B)}...`;
    if (e.measureText(g).width <= u) {
      C = g;
      break;
    }
  }
  return Bu(A, { text: C, width: u });
}, W3A = (A, u) => {
  let e = [];
  for (let C of A) {
    if (OA(C)) {
      let B = nC({ x: C.x, y: C.y - i0.nameOffsetY, fontFamily: t0.Helvetica, fontSize: i0.nameFontSize, lineHeight: i0.nameLineHeight, strokeColor: u.exportWithDarkMode ? i0.nameColorDarkTheme : i0.nameColorLightTheme, text: Zy(C) });
      B.y -= B.height, B = q3A(B, C.width), e.push(B);
    }
    e.push(C);
  }
  return e;
}, Uy = (A, u) => (u = u || $B().frameRendering, { enabled: A ? !0 : u.enabled, outline: A ? !1 : u.outline, name: A ? !1 : u.name, clip: A ? !0 : u.clip }), Gy = ({ elements: A, exportingFrame: u, frameRendering: e, exportWithDarkMode: C }) => {
  let B;
  return u ? B = $2(A, u) : e.enabled && e.name ? B = W3A(A, { exportWithDarkMode: C }) : B = A, B;
}, fy = async (A, u, e, { exportBackground: C, exportPadding: B = pI, viewBackgroundColor: g, exportingFrame: t }, i = (o, E) => {
  let Q = document.createElement("canvas");
  return Q.width = o * u.exportScale, Q.height = E * u.exportScale, { canvas: Q, scale: u.exportScale };
}, I = async () => {
  await Kg.loadElementsFonts(A);
}) => {
  await I();
  let o = Uy(t ?? null, u.frameRendering ?? null);
  t && (o.clip = !1);
  let E = Gy({ elements: A, exportingFrame: t, exportWithDarkMode: u.exportWithDarkMode, frameRendering: o });
  t && (B = 0);
  let [Q, s, l, c] = Y2(t ? [t] : _2(E), B), { canvas: D, scale: h = 1 } = i(l, c), F = $B(), { imageCache: m } = await dy({ imageCache: /* @__PURE__ */ new Map(), fileIds: Dy(E).map((p) => p.fileId), files: e });
  return by({ canvas: D, rc: ni.canvas(D), elementsMap: NC(PA(E)), allElementsMap: NC(PA(Pg(A))), visibleElements: E, scale: h, appState: { ...u, frameRendering: o, viewBackgroundColor: C ? g : null, scrollX: -Q + B, scrollY: -s + B, zoom: F.zoom, shouldCacheIgnoreZoom: !1, theme: u.exportWithDarkMode ? su.DARK : su.LIGHT }, renderConfig: { canvasBackgroundColor: g, imageCache: m, renderGrid: !1, isExporting: !0, embedsValidationStatus: /* @__PURE__ */ new Map(), elementsPendingErasure: /* @__PURE__ */ new Set(), pendingFlowchartNodes: null } }), D;
}, CQ = (A) => document.createComment(` ${A} `), M2 = async (A, u, e, C) => {
  let B = Uy(C?.exportingFrame ?? null, u.frameRendering ?? null), { exportPadding: g = pI, exportWithDarkMode: t = !1, viewBackgroundColor: i, exportScale: I = 1, exportEmbedScene: o } = u, { exportingFrame: E = null } = C || {}, Q = Gy({ elements: A, exportingFrame: E, exportWithDarkMode: t, frameRendering: B });
  E && (g = 0);
  let [s, l, c, D] = Y2(E ? [E] : _2(Q), g), h = -s + g, F = -l + g, m = document.createElementNS(pu, "svg");
  m.setAttribute("version", "1.1"), m.setAttribute("xmlns", pu), m.setAttribute("viewBox", `0 0 ${c} ${D}`), m.setAttribute("width", `${c * I}`), m.setAttribute("height", `${D * I}`), t && m.setAttribute("filter", C2);
  let p = m.ownerDocument.createElementNS(pu, "defs"), k = m.ownerDocument.createElementNS(pu, "metadata");
  if (m.appendChild(CQ("svg-source:excalidraw")), m.appendChild(k), m.appendChild(p), o) try {
    j3A({ metadataElement: k, payload: x2(A, u, e || {}, "local") });
  } catch (K) {
    console.error(K);
  }
  let b = X2(A);
  if (b.length) {
    let K = PA(A);
    for (let q of b) {
      let j = m.ownerDocument.createElementNS(pu, "clipPath");
      j.setAttribute("id", q.id);
      let [uA, O, $, X] = Au(q, K), P = ($ - uA) / 2 - (q.x - uA), _ = (X - O) / 2 - (q.y - O), CA = m.ownerDocument.createElementNS(pu, "rect");
      CA.setAttribute("transform", `translate(${q.x + h} ${q.y + F}) rotate(${q.angle} ${P} ${_})`), CA.setAttribute("width", `${q.width}`), CA.setAttribute("height", `${q.height}`), E || (CA.setAttribute("rx", `${i0.radius}`), CA.setAttribute("ry", `${i0.radius}`)), j.appendChild(CA), p.appendChild(j);
    }
  }
  let f = C?.skipInliningFonts ? [] : await Kg.generateFontFaceDeclarations(A), L = `
      `, N = m.ownerDocument.createElementNS(pu, "style");
  if (N.classList.add("style-fonts"), N.appendChild(document.createTextNode(`${L}${f.join(L)}`)), p.appendChild(N), u.exportBackground && i) {
    let K = m.ownerDocument.createElementNS(pu, "rect");
    K.setAttribute("x", "0"), K.setAttribute("y", "0"), K.setAttribute("width", `${c}`), K.setAttribute("height", `${D}`), K.setAttribute("fill", i), m.appendChild(K);
  }
  let M = ni.svg(m), v = C?.renderEmbeddables ?? !1;
  return R3A(Q, NC(PA(Q)), M, m, e || {}, { offsetX: h, offsetY: F, isExporting: !0, exportWithDarkMode: t, renderEmbeddables: v, frameRendering: B, canvasBackgroundColor: i, embedsValidationStatus: v ? new Map(Q.filter((K) => OA(K)).map((K) => [K.id, !0])) : /* @__PURE__ */ new Map(), reuseImages: C?.reuseImages ?? !0 }), m;
}, j3A = ({ payload: A, metadataElement: u }) => {
  let e = ab(JSON.stringify(ob({ text: A })), !0);
  u.appendChild(CQ(`payload-type:${zA.excalidraw}`)), u.appendChild(CQ("payload-version:2")), u.appendChild(CQ("payload-start")), u.appendChild(document.createTextNode(e)), u.appendChild(CQ("payload-end"));
}, T3A = ({ svg: A }) => {
  if (A.includes(`payload-type:${zA.excalidraw}`)) {
    let u = A.match(/<!-- payload-start -->\s*(.+?)\s*<!-- payload-end -->/);
    if (!u) throw new Error("INVALID");
    let e = (A.match(/<!-- payload-version:(\d+) -->/)?.[1] || "1") !== "1";
    try {
      let C = Ib(u[1], e), B = JSON.parse(C);
      if (!("encoded" in B)) {
        if ("type" in B && B.type === LC.excalidraw) return C;
        throw new Error("FAILED");
      }
      return Qb(B);
    } catch (C) {
      throw console.error(C), new Error("FAILED");
    }
  }
  throw new Error("INVALID");
}, Y2 = (A, u) => {
  let [e, C, B, g] = Nu(A), t = le(e, B) + u * 2, i = le(C, g) + u * 2;
  return [e, C, t, i];
}, z3A = (A, u, e) => {
  let [, , C, B] = Y2(A, u).map((g) => Math.trunc(g * e));
  return [C, B];
}, P3A = class {
  constructor(u) {
    this.scoreFunction = u, J(this, "content", []);
  }
  sinkDown(u) {
    let e = this.content[u];
    for (; u > 0; ) {
      let C = (u + 1 >> 1) - 1, B = this.content[C];
      if (this.scoreFunction(e) < this.scoreFunction(B)) this.content[C] = e, this.content[u] = B, u = C;
      else break;
    }
  }
  bubbleUp(u) {
    let e = this.content.length, C = this.content[u], B = this.scoreFunction(C);
    for (; ; ) {
      let g = u + 1 << 1, t = g - 1, i = null, I = 0;
      if (t < e) {
        let o = this.content[t];
        I = this.scoreFunction(o), I < B && (i = t);
      }
      if (g < e) {
        let o = this.content[g];
        this.scoreFunction(o) < (i === null ? B : I) && (i = g);
      }
      if (i !== null) this.content[u] = this.content[i], this.content[i] = C, u = i;
      else break;
    }
  }
  push(u) {
    this.content.push(u), this.sinkDown(this.content.length - 1);
  }
  pop() {
    if (this.content.length === 0) return null;
    let u = this.content[0], e = this.content.pop();
    return this.content.length > 0 && (this.content[0] = e, this.bubbleUp(0)), u;
  }
  remove(u) {
    if (this.content.length === 0) return;
    let e = this.content.indexOf(u), C = this.content.pop();
    e < this.content.length && (this.content[e] = C, this.scoreFunction(C) < this.scoreFunction(u) ? this.sinkDown(e) : this.bubbleUp(e));
  }
  size() {
    return this.content.length;
  }
  rescoreElement(u) {
    this.sinkDown(this.content.indexOf(u));
  }
}, v2 = 1, Mu = 40, O3A = (A, u) => {
  let e = A.fixedSegments ? A.fixedSegments.slice() : null;
  if (e) {
    let C = [];
    A.points.map((t) => U(A.x + t[0], A.y + t[1])).forEach((t, i, I) => {
      if (i < 2) return C.push(t);
      let o = jQ(t, I[i - 1]), E = jQ(I[i - 1], I[i - 2]);
      if (l0(o, E)) {
        let Q = e?.findIndex((l) => l.index === i - 1) ?? -1, s = e?.findIndex((l) => l.index === i) ?? -1;
        s !== -1 && (e[s].start = U(I[i - 2][0] - A.x, I[i - 2][1] - A.y)), Q !== -1 && e.splice(Q, 1), C.splice(-1, 1), e.forEach((l) => {
          l.index > i - 1 && (l.index -= 1);
        });
      }
      return C.push(t);
    });
    let B = [];
    C.forEach((t, i, I) => {
      if (i < 3) return B.push(t);
      if (Uu(I[i - 2], I[i - 1]) < v2) {
        let o = e?.findIndex((s) => s.index === i - 2) ?? -1, E = e?.findIndex((s) => s.index === i - 1) ?? -1;
        E !== -1 && e.splice(E, 1), o !== -1 && e.splice(o, 1), B.splice(-2, 2), e.forEach((s) => {
          s.index > i - 2 && (s.index -= 2);
        });
        let Q = Rg(t, I[i - 1]);
        return B.push(U(Q ? t[0] : I[i - 2][0], Q ? I[i - 2][1] : t[1]));
      }
      B.push(t);
    });
    let g = e.filter((t) => t.index !== 1 && t.index !== B.length - 1);
    return g.length === 0 ? Ei(Z2(q2(J2(A, K2(A, u, B.map((t) => U(t[0] - A.x, t[1] - A.y)), A.startBinding && rI(A.startBinding.elementId, u), A.endBinding && rI(A.endBinding.elementId, u))) ?? [])), g, null, null) : (tu.DEV && he(W2(B), "Invalid elbow points with fixed segments"), Ei(B, g, A.startIsSpecial, A.endIsSpecial));
  }
  return { x: A.x, y: A.y, points: A.points, fixedSegments: A.fixedSegments, startIsSpecial: A.startIsSpecial, endIsSpecial: A.endIsSpecial };
}, V3A = (A, u, e) => {
  let C = u.map((N) => N.index), B = (A.fixedSegments?.map((N) => N.index) ?? []).findIndex((N) => !C.includes(N));
  if (B === -1 || !A.fixedSegments?.[B]) return { points: A.points };
  let g = A.fixedSegments[B].index, t = A.fixedSegments[B - 1], i = A.fixedSegments[B + 1], I = A.x + (t ? t.end[0] : 0), o = A.y + (t ? t.end[1] : 0), E = t ? null : A.startBinding, Q = i ? null : A.endBinding, { startHeading: s, endHeading: l, startGlobalPoint: c, endGlobalPoint: D, hoveredStartElement: h, hoveredEndElement: F, ...m } = K2({ x: I, y: o, startBinding: E, endBinding: Q, startArrowhead: null, endArrowhead: null, points: A.points }, e, [U(0, 0), U(A.x + (i?.start[0] ?? A.points[A.points.length - 1][0]) - I, A.y + (i?.start[1] ?? A.points[A.points.length - 1][1]) - o)], E && rI(E.elementId, e), Q && rI(Q.elementId, e), { isDragging: !1 }), { points: p } = Ei(Z2(q2(J2(A, { startHeading: s, endHeading: l, startGlobalPoint: c, endGlobalPoint: D, hoveredEndElement: F, ...m }) ?? [])), u, null, null), k = [];
  if (t) for (let N = 0; N < t.index; N++) k.push(U(A.x + A.points[N][0], A.y + A.points[N][1]));
  if (p.forEach((N) => {
    k.push(U(A.x + (t ? t.end[0] : 0) + N[0], A.y + (t ? t.end[1] : 0) + N[1]));
  }), i) for (let N = i.index; N < A.points.length; N++) k.push(U(A.x + A.points[N][0], A.y + A.points[N][1]));
  let b = (i?.index ?? A.points.length) - (t?.index ?? 0) - 1, f = u.map((N) => N.index > g ? { ...N, index: N.index - b + (p.length - 1) } : N), L = k.flatMap((N, M) => {
    let v = k[M - 1], K = k[M + 1];
    if (v && K) {
      let q = jQ(N, v), j = jQ(K, N);
      if (l0(q, j)) return f.forEach((uA) => {
        uA.index > M && (uA.index -= 1);
      }), [];
      if (l0(q, Sk(j))) return f.forEach((uA) => {
        uA.index > M && (uA.index += 1);
      }), [N, N];
    }
    return [N];
  });
  return Ei(L, f, !1, !1);
}, X3A = (A, u, e, C, B, g) => {
  let t = u.map((b, f) => A.fixedSegments == null || A.fixedSegments[f] === void 0 || A.fixedSegments[f].index !== b.index || (b.start[0] !== A.fixedSegments[f].start[0] && b.end[0] !== A.fixedSegments[f].end[0]) != (b.start[1] !== A.fixedSegments[f].start[1] && b.end[1] !== A.fixedSegments[f].end[1]) ? f : null).filter((b) => b !== null).shift();
  if (t == null) return { points: A.points };
  let i = A.fixedSegments?.findIndex((b) => b.index === 1) ?? -1, I = A.fixedSegments?.findIndex((b) => b.index === A.points.length - 1) ?? -1, o = Uu(u[t].start, u[t].end), E = o < Mu + 5;
  if (i === -1 && u[t].index === 1 && B) {
    let b = Yg(e), f = (b ? l0(e, r0) : l0(e, V0)) ? E ? o / 2 : Mu : E ? -o / 2 : -Mu;
    u[t].start = U(u[t].start[0] + (b ? f : 0), u[t].start[1] + (b ? 0 : f));
  }
  if (I === -1 && u[t].index === A.points.length - 1 && g) {
    let b = Yg(C), f = (b ? l0(C, r0) : l0(C, V0)) ? E ? o / 2 : Mu : E ? -o / 2 : -Mu;
    u[t].end = U(u[t].end[0] + (b ? f : 0), u[t].end[1] + (b ? 0 : f));
  }
  let Q = u.map((b) => ({ ...b, start: U(A.x + b.start[0], A.y + b.start[1]), end: U(A.x + b.end[0], A.y + b.end[1]) })), s = A.points.map((b, f) => U(A.x + b[0], A.y + b[1])), l = Q[t].index - 1, c = Q[t].index, D = Q[t].start, h = Q[t].end, F = s[l - 1] && !dB(s[l], s[l - 1]) ? Rg(s[l - 1], s[l]) : void 0, m = s[c + 1] && !dB(s[c], s[c + 1]) ? Rg(s[c + 1], s[c]) : void 0;
  if (F !== void 0) {
    let b = F ? 1 : 0;
    s[l - 1][b] = D[b];
  }
  if (s[l] = D, s[c] = h, m !== void 0) {
    let b = m ? 1 : 0;
    s[c + 1][b] = h[b];
  }
  let p = Q.findIndex((b) => b.index === l);
  if (p !== -1) {
    let b = Rg(Q[p].end, Q[p].start) ? 1 : 0;
    Q[p].start[b] = D[b], Q[p].end = D;
  }
  let k = Q.findIndex((b) => b.index === c + 1);
  if (k !== -1) {
    let b = Rg(Q[k].end, Q[k].start) ? 1 : 0;
    Q[k].end[b] = h[b], Q[k].start = h;
  }
  if (i === -1 && l === 0) {
    let b = B ? Yg(e) : Rg(s[1], s[0]);
    s.unshift(U(b ? D[0] : A.x + A.points[0][0], b ? A.y + A.points[0][1] : D[1])), B && s.unshift(U(A.x + A.points[0][0], A.y + A.points[0][1]));
    for (let f of Q) f.index += B ? 2 : 1;
  }
  if (I === -1 && c === A.points.length - 1) {
    let b = Yg(C);
    s.push(U(b ? h[0] : A.x + A.points[A.points.length - 1][0], b ? A.y + A.points[A.points.length - 1][1] : h[1])), g && s.push(U(A.x + A.points[A.points.length - 1][0], A.y + A.points[A.points.length - 1][1]));
  }
  return Ei(s, Q.map((b) => ({ ...b, start: U(b.start[0] - A.x, b.start[1] - A.y), end: U(b.end[0] - A.x, b.end[1] - A.y) })), !1, !1);
}, _3A = (A, u, e, C, B, g, t, i, I) => {
  let o = A.startIsSpecial ?? null, E = A.endIsSpecial ?? null, Q = u.map((h, F) => F === 0 || F === u.length - 1 ? U(A.x + h[0], A.y + h[1]) : U(A.x + A.points[F][0], A.y + A.points[F][1])), s = e.map((h) => ({ ...h, start: U(A.x + (h.start[0] - u[0][0]), A.y + (h.start[1] - u[0][1])), end: U(A.x + (h.end[0] - u[0][0]), A.y + (h.end[1] - u[0][1])) })), l = [], c = 2 + (o ? 1 : 0), D = 2 + (E ? 1 : 0);
  for (; l.length + c < Q.length - D; ) l.push(Q[l.length + c]);
  {
    let h = Q[o ? 2 : 1], F = Q[o ? 3 : 2], m = Yg(C), p = Yg(RE(vA(h, F)));
    if (i && m === p) {
      let k = m ? l0(C, r0) : l0(C, V0);
      if (l.unshift(U(p ? g[0] + (k ? Mu : -Mu) : F[0], p ? F[1] : g[1] + (k ? Mu : -Mu))), l.unshift(U(m ? g[0] + (k ? Mu : -Mu) : g[0], m ? g[1] : g[1] + (k ? Mu : -Mu))), !o) {
        o = !0;
        for (let b of s) b.index > 1 && (b.index += 1);
      }
    } else if (l.unshift(U(p ? g[0] : h[0], p ? h[1] : g[1])), o) {
      o = !1;
      for (let k of s) k.index > 1 && (k.index -= 1);
    }
    l.unshift(g);
  }
  {
    let h = Q[Q.length - (E ? 3 : 2)], F = Q[Q.length - (E ? 4 : 3)], m = Yg(B), p = Rg(F, h);
    if (I && m === p) {
      let k = m ? l0(B, r0) : l0(B, V0);
      l.push(U(p ? t[0] + (k ? Mu : -Mu) : F[0], p ? F[1] : t[1] + (k ? Mu : -Mu))), l.push(U(m ? t[0] + (k ? Mu : -Mu) : t[0], m ? t[1] : t[1] + (k ? Mu : -Mu))), E || (E = !0);
    } else l.push(U(p ? t[0] : h[0], p ? h[1] : t[1])), E && (E = !1);
  }
  return l.push(t), Ei(l, s.map(({ index: h }) => ({ index: h, start: l[h - 1], end: l[h] })).map((h) => ({ ...h, start: U(h.start[0] - g[0], h.start[1] - g[1]), end: U(h.end[0] - g[0], h.end[1] - g[1]) })), o, E);
}, Ju = 1e6, H2 = (A, u, e, C) => {
  if (A.points.length < 2) return { points: e.points ?? A.points };
  (A.x < -Ju || A.x > Ju || A.y < -Ju || A.y > Ju || A.x + (e?.points?.[e?.points?.length - 1]?.[0] ?? 0) < -Ju || A.x + (e?.points?.[e?.points?.length - 1]?.[0] ?? 0) > Ju || A.y + (e?.points?.[e?.points?.length - 1]?.[1] ?? 0) < -Ju || A.y + (e?.points?.[e?.points?.length - 1]?.[1] ?? 0) > Ju || A.x + (A?.points?.[A?.points?.length - 1]?.[0] ?? 0) < -Ju || A.x + (A?.points?.[A?.points?.length - 1]?.[0] ?? 0) > Ju || A.y + (A?.points?.[A?.points?.length - 1]?.[1] ?? 0) < -Ju || A.y + (A?.points?.[A?.points?.length - 1]?.[1] ?? 0) > Ju) && console.error("Elbow arrow (or update) is outside reasonable bounds (> 1e6)", { arrow: A, updates: e }), A.x = Qu(A.x, -Ju, Ju), A.y = Qu(A.y, -Ju, Ju), e.points && (e.points = e.points.map(([F, m]) => U(Qu(F, -Ju, Ju), Qu(m, -Ju, Ju))));
  let B = e.points ? e.points && e.points.length === 2 ? A.points.map((F, m) => m === 0 ? e.points[0] : m === A.points.length - 1 ? e.points[1] : F) : e.points.slice() : A.points.slice(), g = typeof e.startBinding < "u" ? e.startBinding : A.startBinding, t = typeof e.endBinding < "u" ? e.endBinding : A.endBinding, i = g && rI(g.elementId, u), I = t && rI(t.elementId, u);
  if (u.size === 0 && W2(B) || i?.id !== g?.elementId || I?.id !== t?.elementId) return Ei(B.map((F) => U(A.x + F[0], A.y + F[1])), A.fixedSegments, A.startIsSpecial, A.endIsSpecial);
  let { startHeading: o, endHeading: E, startGlobalPoint: Q, endGlobalPoint: s, hoveredStartElement: l, hoveredEndElement: c, ...D } = K2({ x: A.x, y: A.y, startBinding: g, endBinding: t, startArrowhead: A.startArrowhead, endArrowhead: A.endArrowhead, points: A.points }, u, B, i, I, C), h = e.fixedSegments ?? A.fixedSegments ?? [];
  return !e.points && !e.fixedSegments && !e.startBinding && !e.endBinding ? O3A(A, u) : e.startBinding === A.startBinding && e.endBinding === A.endBinding && (e.points ?? []).every((F, m) => dB(F, A.points[m] ?? U(1 / 0, 1 / 0))) ? {} : h.length === 0 ? Ei(Z2(q2(J2(A, { startHeading: o, endHeading: E, startGlobalPoint: Q, endGlobalPoint: s, hoveredEndElement: c, ...D }) ?? [])), h, null, null) : (A.fixedSegments?.length ?? 0) > h.length ? V3A(A, h, u) : e.points ? e.points && e.fixedSegments ? e : _3A(A, B, h, o, E, Q, s, l, c) : X3A(A, h, o, E, l, c);
}, K2 = (A, u, e, C, B, g) => {
  let t = sl(e[0], te(A.x, A.y)), i = sl(e[e.length - 1], te(A.x, A.y)), I = C, o = B;
  if (g?.isDragging) {
    let L = Array.from(u.values());
    I = x5(t, u, L, g?.zoom) || C, o = x5(i, u, L, g?.zoom) || B;
  }
  let E = f5({ ...A, points: e }, "start", A.startBinding?.fixedPoint, t, C, I, g?.isDragging), Q = f5({ ...A, points: e }, "end", A.endBinding?.fixedPoint, i, B, o, g?.isDragging), s = L5(E, Q, u, I, t), l = L5(Q, E, u, o, i), c = [E[0] - 2, E[1] - 2, E[0] + 2, E[1] + 2], D = [Q[0] - 2, Q[1] - 2, Q[0] + 2, Q[1] + 2], h = I ? qB(I, Yt(s, A.startArrowhead ? qu * 6 : qu * 2, 1)) : c, F = o ? qB(o, Yt(l, A.endArrowhead ? qu * 6 : qu * 2, 1)) : D, m = EI(E, o ? qB(o, Yt(l, Mu, Mu)) : D) || EI(Q, I ? qB(I, Yt(s, Mu, Mu)) : c), p = Ly(m ? [c, D] : [h, F]), k = ucA(m ? c : h, m ? D : F, p, m ? Yt(s, !I && !o ? 0 : Mu, 0) : Yt(s, !I && !o ? 0 : Mu - (A.startArrowhead ? qu * 6 : qu * 2), Mu), m ? Yt(l, !I && !o ? 0 : Mu, 0) : Yt(l, !I && !o ? 0 : Mu - (A.endArrowhead ? qu * 6 : qu * 2), Mu), m, I && qB(I), o && qB(o)), b = G5(k[0], s, E), f = G5(k[1], l, Q);
  return { dynamicAABBs: k, startDonglePosition: b, startGlobalPoint: E, startHeading: s, endDonglePosition: f, endGlobalPoint: Q, endHeading: l, commonBounds: p, hoveredStartElement: I, hoveredEndElement: o, boundsOverlap: m, startElementBounds: h, endElementBounds: F };
}, J2 = (A, u) => {
  let { dynamicAABBs: e, startDonglePosition: C, startGlobalPoint: B, startHeading: g, endDonglePosition: t, endGlobalPoint: i, endHeading: I, commonBounds: o, hoveredEndElement: E } = u, Q = ecA(e, C || B, g, t || i, I, o), s = C && as(C, Q), l = t && as(t, Q), c = as(i, Q);
  c && E && (c.closed = !0);
  let D = as(B, Q);
  D && A.startBinding && (D.closed = !0);
  let h = s && l && (EI(s.pos, e[1]) || EI(l.pos, e[0])), F = $3A(s || D, l || c, Q, g || r0, I || r0, h ? [] : e);
  if (F) {
    let m = F.map((p) => [p.pos[0], p.pos[1]]);
    return s && m.unshift(B), l && m.push(i), m;
  }
  return null;
}, Yt = (A, u, e) => {
  switch (A) {
    case ze:
      return [u, e, e, e];
    case r0:
      return [e, u, e, e];
    case V0:
      return [e, e, u, e];
  }
  return [e, e, e, u];
}, $3A = (A, u, e, C, B, g) => {
  let t = Md(A.pos, u.pos), i = new P3A((I) => I.f);
  for (i.push(A); i.size() > 0; ) {
    let I = i.pop();
    if (!I || I.closed) continue;
    if (I === u) return AcA(A, I);
    I.closed = !0;
    let o = BcA(I.addr, e);
    for (let E = 0; E < 4; E++) {
      let Q = o[E];
      if (!Q || Q.closed) continue;
      let s = Gg(Q.pos, I.pos, 0.5);
      if (baA(...g.map((p) => EI(s, p)))) continue;
      let l = gcA(E), c = I.parent ? RE(vA(I.pos, I.parent.pos)) : C, D = Sk(c);
      if (l0(D, l) || S5(A.addr, Q.addr) && l0(l, C) || S5(u.addr, Q.addr) && l0(l, B)) continue;
      let h = c !== l, F = I.g + Md(Q.pos, I.pos) + (h ? Math.pow(t, 3) : 0), m = Q.visited;
      if (!m || F < Q.g) {
        let p = CcA(Q, u, l, B);
        Q.visited = !0, Q.parent = I, Q.h = Md(u.pos, Q.pos) + p * Math.pow(t, 2), Q.g = F, Q.f = Q.g + Q.h, m ? i.rescoreElement(Q) : i.push(Q);
      }
    }
  }
  return null;
}, AcA = (A, u) => {
  let e = u, C = [];
  for (; e.parent; ) C.unshift(e), e = e.parent;
  return C.unshift(A), C;
}, Md = (A, u) => Math.abs(A[0] - u[0]) + Math.abs(A[1] - u[1]), ucA = (A, u, e, C, B, g, t, i) => {
  let I = t ?? A, o = i ?? u, [E, Q, s, l] = C ?? [0, 0, 0, 0], [c, D, h, F] = B ?? [0, 0, 0, 0], m = [A[0] > u[2] ? A[1] > u[3] || A[3] < u[1] ? Math.min((I[0] + o[2]) / 2, A[0] - l) : (I[0] + o[2]) / 2 : A[0] > u[0] ? A[0] - l : e[0] - l, A[1] > u[3] ? A[0] > u[2] || A[2] < u[0] ? Math.min((I[1] + o[3]) / 2, A[1] - E) : (I[1] + o[3]) / 2 : A[1] > u[1] ? A[1] - E : e[1] - E, A[2] < u[0] ? A[1] > u[3] || A[3] < u[1] ? Math.max((I[2] + o[0]) / 2, A[2] + Q) : (I[2] + o[0]) / 2 : A[2] < u[2] ? A[2] + Q : e[2] + Q, A[3] < u[1] ? A[0] > u[2] || A[2] < u[0] ? Math.max((I[3] + o[1]) / 2, A[3] + s) : (I[3] + o[1]) / 2 : A[3] < u[3] ? A[3] + s : e[3] + s], p = [u[0] > A[2] ? u[1] > A[3] || u[3] < A[1] ? Math.min((o[0] + I[2]) / 2, u[0] - F) : (o[0] + I[2]) / 2 : u[0] > A[0] ? u[0] - F : e[0] - F, u[1] > A[3] ? u[0] > A[2] || u[2] < A[0] ? Math.min((o[1] + I[3]) / 2, u[1] - c) : (o[1] + I[3]) / 2 : u[1] > A[1] ? u[1] - c : e[1] - c, u[2] < A[0] ? u[1] > A[3] || u[3] < A[1] ? Math.max((o[2] + I[0]) / 2, u[2] + D) : (o[2] + I[0]) / 2 : u[2] < A[2] ? u[2] + D : e[2] + D, u[3] < A[1] ? u[0] > A[2] || u[2] < A[0] ? Math.max((o[3] + I[1]) / 2, u[3] + h) : (o[3] + I[1]) / 2 : u[3] < A[3] ? u[3] + h : e[3] + h], k = Ly([m, p]);
  if (!g && m[2] - m[0] + p[2] - p[0] > k[2] - k[0] + 1e-11 && m[3] - m[1] + p[3] - p[1] > k[3] - k[1] + 1e-11) {
    let [b, f] = [(p[0] + p[2]) / 2, (p[1] + p[3]) / 2];
    if (u[0] > A[2] && A[1] > u[3]) {
      let L = m[2] + (p[0] - m[2]) / 2, N = p[3] + (m[1] - p[3]) / 2;
      return v0(te(A[2] - b, A[1] - f), te(A[0] - b, A[3] - f)) > 0 ? [[m[0], m[1], L, m[3]], [L, p[1], p[2], p[3]]] : [[m[0], N, m[2], m[3]], [p[0], p[1], p[2], N]];
    } else if (A[2] < u[0] && A[3] < u[1]) {
      let L = m[2] + (p[0] - m[2]) / 2, N = m[3] + (p[1] - m[3]) / 2;
      return v0(te(A[0] - b, A[1] - f), te(A[2] - b, A[3] - f)) > 0 ? [[m[0], m[1], m[2], N], [p[0], N, p[2], p[3]]] : [[m[0], m[1], L, m[3]], [L, p[1], p[2], p[3]]];
    } else if (A[0] > u[2] && A[3] < u[1]) {
      let L = p[2] + (m[0] - p[2]) / 2, N = m[3] + (p[1] - m[3]) / 2;
      return v0(te(A[2] - b, A[1] - f), te(A[0] - b, A[3] - f)) > 0 ? [[L, m[1], m[2], m[3]], [p[0], p[1], L, p[3]]] : [[m[0], m[1], m[2], N], [p[0], N, p[2], p[3]]];
    } else if (A[0] > u[2] && A[1] > u[3]) {
      let L = p[2] + (m[0] - p[2]) / 2, N = p[3] + (m[1] - p[3]) / 2;
      return v0(te(A[0] - b, A[1] - f), te(A[2] - b, A[3] - f)) > 0 ? [[L, m[1], m[2], m[3]], [p[0], p[1], L, p[3]]] : [[m[0], N, m[2], m[3]], [p[0], p[1], p[2], N]];
    }
  }
  return [m, p];
}, ecA = (A, u, e, C, B, g) => {
  let t = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
  e === Te || e === r0 ? i.add(u[1]) : t.add(u[0]), B === Te || B === r0 ? i.add(C[1]) : t.add(C[0]), A.forEach((E) => {
    t.add(E[0]), t.add(E[2]), i.add(E[1]), i.add(E[3]);
  }), t.add(g[0]), t.add(g[2]), i.add(g[1]), i.add(g[3]);
  let I = Array.from(i).sort((E, Q) => E - Q), o = Array.from(t).sort((E, Q) => E - Q);
  return { row: I.length, col: o.length, data: I.flatMap((E, Q) => o.map((s, l) => ({ f: 0, g: 0, h: 0, closed: !1, visited: !1, parent: null, addr: [l, Q], pos: [s, E] }))) };
}, G5 = (A, u, e) => {
  switch (u) {
    case ze:
      return U(e[0], A[1]);
    case r0:
      return U(A[2], e[1]);
    case V0:
      return U(e[0], A[3]);
  }
  return U(A[0], e[1]);
}, CcA = (A, u, e, C) => {
  if (C === r0) switch (e) {
    case r0:
      return A.pos[0] >= u.pos[0] ? 4 : A.pos[1] === u.pos[1] ? 0 : 2;
    case ze:
      return A.pos[1] > u.pos[1] && A.pos[0] < u.pos[0] ? 1 : 3;
    case V0:
      return A.pos[1] < u.pos[1] && A.pos[0] < u.pos[0] ? 1 : 3;
    case Te:
      return A.pos[1] === u.pos[1] ? 4 : 2;
  }
  else if (C === Te) switch (e) {
    case r0:
      return A.pos[1] === u.pos[1] ? 4 : 2;
    case ze:
      return A.pos[1] > u.pos[1] && A.pos[0] > u.pos[0] ? 1 : 3;
    case V0:
      return A.pos[1] < u.pos[1] && A.pos[0] > u.pos[0] ? 1 : 3;
    case Te:
      return A.pos[0] <= u.pos[0] ? 4 : A.pos[1] === u.pos[1] ? 0 : 2;
  }
  else if (C === ze) switch (e) {
    case r0:
      return A.pos[1] > u.pos[1] && A.pos[0] < u.pos[0] ? 1 : 3;
    case ze:
      return A.pos[1] >= u.pos[1] ? 4 : A.pos[0] === u.pos[0] ? 0 : 2;
    case V0:
      return A.pos[0] === u.pos[0] ? 4 : 2;
    case Te:
      return A.pos[1] > u.pos[1] && A.pos[0] > u.pos[0] ? 1 : 3;
  }
  else if (C === V0) switch (e) {
    case r0:
      return A.pos[1] < u.pos[1] && A.pos[0] < u.pos[0] ? 1 : 3;
    case ze:
      return A.pos[0] === u.pos[0] ? 4 : 2;
    case V0:
      return A.pos[1] <= u.pos[1] ? 4 : A.pos[0] === u.pos[0] ? 0 : 2;
    case Te:
      return A.pos[1] < u.pos[1] && A.pos[0] > u.pos[0] ? 1 : 3;
  }
  return 0;
}, BcA = ([A, u], e) => [BQ([A, u - 1], e), BQ([A + 1, u], e), BQ([A, u + 1], e), BQ([A - 1, u], e)], BQ = ([A, u], e) => A < 0 || A >= e.col || u < 0 || u >= e.row ? null : e.data[u * e.col + A] ?? null, as = (A, u) => {
  for (let e = 0; e < u.col; e++) for (let C = 0; C < u.row; C++) {
    let B = BQ([e, C], u);
    if (B && A[0] === B.pos[0] && A[1] === B.pos[1]) return B;
  }
  return null;
}, Ly = (A) => [Math.min(...A.map((u) => u[0])), Math.min(...A.map((u) => u[1])), Math.max(...A.map((u) => u[2])), Math.max(...A.map((u) => u[3]))], rI = (A, u) => {
  let e = u.get(A);
  return e && DB(e) ? e : null;
}, Ei = (A, u, e, C) => {
  let B = A[0][0], g = A[0][1], t = A.map((i) => sl(i, s0(vA(A[0]), -1)));
  return (B < -Ju || B > Ju || g < -Ju || g > Ju || B + t[t.length - 1][0] < -Ju || g + t[t.length - 1][0] > Ju || B + t[t.length - 1][1] < -Ju || g + t[t.length - 1][1] > Ju) && console.error("Elbow arrow normalization is outside reasonable bounds (> 1e6)", { x: B, y: g, points: t, ...II(t) }), t = t.map(([i, I]) => U(Qu(i, -1e6, 1e6), Qu(I, -1e6, 1e6))), { points: t, x: Qu(B, -1e6, 1e6), y: Qu(g, -1e6, 1e6), fixedSegments: (u?.length ?? 0) > 0 ? u : null, ...II(t), startIsSpecial: e, endIsSpecial: C };
}, Z2 = (A) => {
  if (A.length > 1) {
    let u = Math.abs(A[0][1] - A[1][1]) < Math.abs(A[0][0] - A[1][0]);
    return A.filter((e, C) => {
      if (C === 0 || C === A.length - 1) return !0;
      let B = A[C + 1], g = Math.abs(e[1] - B[1]) < Math.abs(e[0] - B[0]);
      return u === g ? (u = g, !1) : (u = g, !0);
    });
  }
  return A;
}, q2 = (A) => A.length >= 4 ? A.filter((u, e) => {
  if (e === 0 || e === A.length - 1) return !0;
  let C = A[e - 1];
  return Uu(C, u) > v2;
}) : A, gcA = (A) => {
  switch (A) {
    case 0:
      return ze;
    case 1:
      return r0;
    case 2:
      return V0;
  }
  return Te;
}, f5 = (A, u, e, C, B, g, t) => {
  if (t) {
    if (g) {
      let i = TQ(A, g, u);
      return L4A(g, i);
    }
    return C;
  }
  if (B) {
    let i = e1(e || [0, 0], B);
    return Math.abs(c4(B, i) - qu) > 0.01 ? TQ(A, B, u) : i;
  }
  return C;
}, L5 = (A, u, e, C, B) => b4A(A, u, C, C && qB(C, Array(4).fill(c4(C, A))), e, B), x5 = (A, u, e, C) => oB(aB(A), e, u, C, !0, !0), S5 = (A, u) => A[0] === u[0] && A[1] === u[1], W2 = (A, u = v2) => A.slice(1).map((e, C) => Math.abs(e[0] - A[C][0]) < u || Math.abs(e[1] - A[C][1]) < u).every(Boolean), tcA = { selection: !0, text: !0, rectangle: !0, diamond: !0, ellipse: !0, line: !0, image: !0, arrow: !0, freedraw: !0, eraser: !1, custom: !0, frame: !0, embeddable: !0, hand: !0, laser: !1, magicframe: !1 }, icA = (A) => Object.keys(t0).includes(A) ? t0[A] : ri, fa = (A, u) => {
  if (!u) return null;
  let e = u.focus || 0;
  return xA(A) ? Dl(u) ? { ...u, focus: e, fixedPoint: w4(u.fixedPoint ?? [0, 0]) } : null : { ...u, focus: e };
}, vt = (A, u) => {
  let e = { type: u.type || A.type, version: A.version || 1, versionNonce: A.versionNonce ?? 0, index: A.index ?? null, isDeleted: A.isDeleted ?? !1, id: A.id || YC(), fillStyle: A.fillStyle || n0.fillStyle, strokeWidth: A.strokeWidth || n0.strokeWidth, strokeStyle: A.strokeStyle ?? n0.strokeStyle, roughness: A.roughness ?? n0.roughness, opacity: A.opacity == null ? n0.opacity : A.opacity, angle: A.angle || 0, x: u.x ?? A.x ?? 0, y: u.y ?? A.y ?? 0, strokeColor: A.strokeColor || n0.strokeColor, backgroundColor: A.backgroundColor || n0.backgroundColor, width: A.width || 0, height: A.height || 0, seed: A.seed ?? 1, groupIds: A.groupIds ?? [], frameId: A.frameId ?? null, roundness: A.roundness ? A.roundness : A.strokeSharpness === "round" ? { type: kI(A.type) ? x0.LEGACY : x0.PROPORTIONAL_RADIUS } : null, boundElements: A.boundElementIds ? A.boundElementIds.map((C) => ({ type: "arrow", id: C })) : A.boundElements ?? [], updated: A.updated ?? mI(), link: A.link ? oC(A.link) : null, locked: A.locked ?? !1 };
  return ("customData" in A || "customData" in u) && (e.customData = "customData" in u ? u.customData : A.customData), { ...A, ...e, ...Ty(e), ...u };
}, EcA = (A) => {
  switch (A = { ...A }, A.type) {
    case "text":
      delete A.rawText;
      let u = A.fontSize, e = A.fontFamily;
      if ("font" in A) {
        let [E, Q] = A.font.split(" ");
        u = parseFloat(E), e = icA(Q);
      }
      let C = typeof A.text == "string" && A.text || "", B = A.lineHeight || (A.height ? SaA(A) : NE(A.fontFamily));
      return A = vt(A, { fontSize: u, fontFamily: e, text: C, textAlign: A.textAlign || Qn, verticalAlign: A.verticalAlign || El, containerId: A.containerId ?? null, originalText: A.originalText || C, autoResize: A.autoResize ?? !0, lineHeight: B }), !C && !A.isDeleted && (A = { ...A, originalText: C, isDeleted: !0 }, A = L4(A)), A;
    case "freedraw":
      return vt(A, { points: A.points, lastCommittedPoint: null, simulatePressure: A.simulatePressure, pressures: A.pressures });
    case "image":
      return vt(A, { status: A.status || "pending", fileId: A.fileId, scale: A.scale || [1, 1], crop: A.crop ?? null });
    case "line":
    case "draw":
      let { startArrowhead: g = null, endArrowhead: t = null } = A, i = A.x, I = A.y, o = !Array.isArray(A.points) || A.points.length < 2 ? [U(0, 0), U(A.width, A.height)] : A.points;
      return (o[0][0] !== 0 || o[0][1] !== 0) && ({ points: o, x: i, y: I } = LA.getNormalizedPoints(A)), vt(A, { type: A.type === "draw" ? "line" : A.type, startBinding: fa(A, A.startBinding), endBinding: fa(A, A.endBinding), lastCommittedPoint: null, startArrowhead: g, endArrowhead: t, points: o, x: i, y: I, ...II(o) });
    case "arrow": {
      let { startArrowhead: E = null, endArrowhead: Q = "arrow" } = A, s = A.x, l = A.y, c = !Array.isArray(A.points) || A.points.length < 2 ? [U(0, 0), U(A.width, A.height)] : A.points;
      (c[0][0] !== 0 || c[0][1] !== 0) && ({ points: c, x: s, y: l } = LA.getNormalizedPoints(A));
      let D = { type: A.type, startBinding: fa(A, A.startBinding), endBinding: fa(A, A.endBinding), lastCommittedPoint: null, startArrowhead: E, endArrowhead: Q, points: c, x: s, y: l, elbowed: A.elbowed, ...II(c) };
      return xA(A) ? vt(A, { ...D, elbowed: !0, startBinding: fa(A, A.startBinding), endBinding: fa(A, A.endBinding), fixedSegments: A.fixedSegments, startIsSpecial: A.startIsSpecial, endIsSpecial: A.endIsSpecial }) : vt(A, D);
    }
    case "ellipse":
    case "rectangle":
    case "diamond":
    case "iframe":
    case "embeddable":
      return vt(A, {});
    case "magicframe":
    case "frame":
      return vt(A, { name: A.name ?? null });
  }
  return null;
}, acA = (A, u) => {
  if (A.boundElements) {
    let e = A.boundElements.slice(), C = /* @__PURE__ */ new Set();
    A.boundElements = e.reduce((B, g) => {
      let t = u.get(g.id);
      if (t && !C.has(g.id)) {
        if (C.add(g.id), t.isDeleted) return B;
        B.push(g), UA(t) && !t.containerId && (t.containerId = A.id);
      }
      return B;
    }, []);
  }
}, IcA = (A, u) => {
  let e = A.containerId ? u.get(A.containerId) : null;
  if (!e) {
    A.containerId = null;
    return;
  }
  if (!A.isDeleted && e.boundElements && !e.boundElements.find((C) => C.id === A.id)) {
    let C = (e.boundElements || (e.boundElements = [])).slice();
    C.push({ type: "text", id: A.id }), e.boundElements = C;
  }
}, ocA = (A, u) => {
  A.frameId && (u.get(A.frameId) || (A.frameId = null));
}, j2 = (A, u, e) => {
  let C = /* @__PURE__ */ new Set(), B = u ? PA(u) : null, g = Pg((A || []).reduce((i, I) => {
    if (I.type !== "selection" && !lI(I)) {
      let o = EcA(I);
      if (o) {
        let E = B?.get(I.id);
        E && E.version > o.version && (o = L4(o, E.version)), C.has(o.id) && (o = { ...o, id: YC() }), C.add(o.id), i.push(o);
      }
    }
    return i;
  }, []));
  if (!e?.repairBindings) return g;
  let t = PA(g);
  for (let i of g) i.frameId && ocA(i, t), UA(i) && i.containerId ? IcA(i, t) : i.boundElements && acA(i, t), e.refreshDimensions && UA(i) && Object.assign(i, gy(i, _0(i, t), t)), $A(i) && (i.startBinding && (!t.has(i.startBinding.elementId) || !Eu(i)) && (i.startBinding = null), i.endBinding && (!t.has(i.endBinding.elementId) || !Eu(i)) && (i.endBinding = null));
  return g.map((i) => {
    if (xA(i) && i.startBinding == null && i.endBinding == null && !W2(i.points)) return { ...i, ...H2(i, t, { points: [U(0, 0), i.points[i.points.length - 1]] }), index: i.index };
    if (xA(i) && i.startBinding && i.endBinding && i.startBinding.elementId === i.endBinding.elementId && i.points.length > 1 && i.points.some(([I, o]) => Math.abs(I) > 1e6 || Math.abs(o) > 1e6)) {
      console.error("Fixing self-bound elbow arrow", i.id);
      let I = t.get(i.startBinding.elementId);
      return I ? { ...i, x: I.x + I.width / 2, y: I.y - 5, width: I.width, height: I.height, points: [U(0, 0), U(0, -10), U(I.width / 2 + 5, -10), U(I.width / 2 + 5, I.height / 2 + 5)] } : (console.error("Bound element not found", i.startBinding.elementId), i);
    }
    return i;
  });
}, QcA = (A, u, e) => {
  let C = u[A];
  return C !== void 0 ? C : e[A];
}, N5 = { isSidebarDocked: (A, u) => ["defaultSidebarDockedPreference", A.isSidebarDocked ?? QcA("defaultSidebarDockedPreference", A, u)] }, ncA = (A, u) => {
  A = A || {};
  let e = $B(), C = {};
  for (let B of Object.keys(N5)) if (B in A) {
    let [g, t] = N5[B](A, e);
    C[g] = t;
  }
  for (let [B, g] of Object.entries(e)) {
    let t = A[B], i = u ? u[B] : void 0;
    C[B] = t !== void 0 ? t : i !== void 0 ? i : g;
  }
  return { ...C, cursorButton: u?.cursorButton || "up", penDetected: u?.penDetected ?? (A.penMode ? A.penDetected ?? !1 : !1), activeTool: { ...b0(e, C.activeTool.type && tcA[C.activeTool.type] ? C.activeTool : { type: "selection" }), lastActiveTool: null, locked: C.activeTool.locked ?? !1 }, zoom: { value: vg(sQ(A.zoom) ? A.zoom : A.zoom?.value ?? e.zoom.value) }, openSidebar: typeof A.openSidebar == "string" ? { name: rB.name } : C.openSidebar, gridSize: H4A(sQ(A.gridSize) ? A.gridSize : Il), gridStep: jk(sQ(A.gridStep) ? A.gridStep : s8), editingFrame: null };
}, b4 = (A, u, e, C) => ({ elements: j2(A?.elements, e, C), appState: ncA(A?.appState, u || null), files: A?.files || {} }), R5 = (A) => {
  let u = j2(Wu(A.elements), null);
  return u.length ? { ...A, elements: u } : null;
}, U4 = (A = [], u) => {
  let e = [];
  for (let C of A) if (Array.isArray(C)) {
    let B = R5({ status: u, elements: C, id: YC(), created: Date.now() });
    B && e.push(B);
  } else {
    let B = C, g = R5({ ...B, id: B.id || YC(), status: B.status || u, created: B.created || Date.now() });
    g && e.push(g);
  }
  return e;
}, tB = 32, Zu = 12, Ci = 256, xy = 50, aE = "NOT_SPREADSHEET", _Q = "VALID_SPREADSHEET", gQ = (A) => {
  let u = /^([-+]?)[$€£¥₩]?([-+]?)([\d.,]+)[%]?$/.exec(A);
  return u ? parseFloat(`${(u[1] || u[2]) + u[3]}`.replace(/,/g, "")) : null;
}, Yd = (A, u) => A.slice(1).every((e) => gQ(e[u]) !== null), M5 = (A) => {
  let u = A[0].length;
  if (u > 2) return { type: aE, reason: "More than 2 columns" };
  if (u === 1) {
    if (!Yd(A, 0)) return { type: aE, reason: "Value is not numeric" };
    let I = gQ(A[0][0]) === null, o = (I ? A.slice(1) : A).map((E) => gQ(E[0]));
    return o.length < 2 ? { type: aE, reason: "Less than two rows" } : { type: _Q, spreadsheet: { title: I ? A[0][0] : null, labels: null, values: o } };
  }
  let e = Yd(A, 0), C = Yd(A, 1);
  if (!e && !C) return { type: aE, reason: "Value is not numeric" };
  let [B, g] = C ? [0, 1] : [1, 0], t = gQ(A[0][g]) === null, i = t ? A.slice(1) : A;
  return i.length < 2 ? { type: aE, reason: "Less than 2 rows" } : { type: _Q, spreadsheet: { title: t ? A[0][g] : null, labels: i.map((I) => I[B]), values: i.map((I) => gQ(I[g])) } };
}, rcA = (A) => {
  let u = [];
  for (let e = 0; e < A[0].length; e++) {
    let C = [];
    for (let B = 0; B < A.length; B++) C.push(A[B][e]);
    u.push(C);
  }
  return u;
}, scA = (A) => {
  let u = A.trim().split(`
`).map((B) => B.trim().split("	"));
  if (u.length && u[0].length !== 2 && (u = A.trim().split(`
`).map((B) => B.trim().split(","))), u.length === 0) return { type: aE, reason: "No values" };
  let e = u[0].length;
  if (!u.every((B) => B.length === e)) return { type: aE, reason: "All rows don't have same number of columns" };
  let C = M5(u);
  if (C.type !== _Q) {
    let B = M5(rcA(u));
    if (B.type === _Q) return B;
  }
  return C;
}, Sl = dEA(sEA), xC = { fillStyle: "hachure", fontFamily: ri, fontSize: ut, opacity: 100, roughness: 1, strokeColor: ou.black, roundness: null, strokeStyle: "solid", strokeWidth: 1, verticalAlign: IC.MIDDLE, locked: !1 }, Sy = (A) => {
  let u = (tB + Zu) * A.values.length + Zu, e = Ci + Zu * 2;
  return { chartWidth: u, chartHeight: e };
}, lcA = (A, u, e, C, B) => A.labels?.map((g, t) => nC({ groupIds: [C], backgroundColor: B, ...xC, text: g.length > 8 ? `${g.slice(0, 5)}...` : g, x: u + t * (tB + Zu) + Zu * 2, y: e + Zu / 2, width: tB, angle: 5.87, fontSize: 16, textAlign: "center", verticalAlign: "top" })) || [], ccA = (A, u, e, C, B) => {
  let g = nC({ groupIds: [C], backgroundColor: B, ...xC, x: u - Zu, y: e - Zu, text: "0", textAlign: "right" }), t = nC({ groupIds: [C], backgroundColor: B, ...xC, x: u - Zu, y: e - Ci - g.height / 2, text: Math.max(...A.values).toLocaleString(), textAlign: "right" });
  return [g, t];
}, dcA = (A, u, e, C, B) => {
  let { chartWidth: g, chartHeight: t } = Sy(A), i = wE({ backgroundColor: B, groupIds: [C], ...xC, type: "line", x: u, y: e, width: g, points: [U(0, 0), U(g, 0)] }), I = wE({ backgroundColor: B, groupIds: [C], ...xC, type: "line", x: u, y: e, height: t, points: [U(0, 0), U(0, -t)] }), o = wE({ backgroundColor: B, groupIds: [C], ...xC, type: "line", x: u, y: e - Ci - Zu, strokeStyle: "dotted", width: g, opacity: xy, points: [U(0, 0), U(g, 0)] });
  return [i, I, o];
}, Ny = (A, u, e, C, B, g) => {
  let { chartWidth: t, chartHeight: i } = Sy(A), I = A.title ? nC({ backgroundColor: B, groupIds: [C], ...xC, text: A.title, x: u + t / 2, y: e - Ci - Zu * 2 - ut, roundness: null, textAlign: "center" }) : null, o = g ? eg({ backgroundColor: B, groupIds: [C], ...xC, type: "rectangle", x: u, y: e - i, width: t, height: i, strokeColor: ou.black, fillStyle: "solid", opacity: 6 }) : null;
  return [...o ? [o] : [], ...I ? [I] : [], ...lcA(A, u, e, C, B), ...ccA(A, u, e, C, B), ...dcA(A, u, e, C, B)];
}, DcA = (A, u, e) => {
  let C = Math.max(...A.values), B = YC(), g = Sl[Math.floor(Math.random() * Sl.length)];
  return [...A.values.map((t, i) => {
    let I = t / C * Ci;
    return eg({ backgroundColor: g, groupIds: [B], ...xC, type: "rectangle", x: u + i * (tB + Zu) + Zu, y: e - I - Zu, width: tB, height: I });
  }), ...Ny(A, u, e, B, g, tu.DEV)];
}, hcA = (A, u, e) => {
  let C = Math.max(...A.values), B = YC(), g = Sl[Math.floor(Math.random() * Sl.length)], t = 0, i = [];
  for (let D of A.values) {
    let h = t * (tB + Zu), F = -(D / C) * Ci;
    i.push([h, F]), t++;
  }
  let I = Math.max(...i.map((D) => D[0])), o = Math.max(...i.map((D) => D[1])), E = Math.min(...i.map((D) => D[0])), Q = Math.min(...i.map((D) => D[1])), s = wE({ backgroundColor: g, groupIds: [B], ...xC, type: "line", x: u + Zu + tB / 2, y: e - Zu, height: o - Q, width: I - E, strokeWidth: 2, points: i }), l = A.values.map((D, h) => {
    let F = h * (tB + Zu) + Zu / 2, m = -(D / C) * Ci + Zu / 2;
    return eg({ backgroundColor: g, groupIds: [B], ...xC, fillStyle: "solid", strokeWidth: 2, type: "ellipse", x: u + F + tB / 2, y: e + m - Zu * 2, width: Zu, height: Zu });
  }), c = A.values.map((D, h) => {
    let F = h * (tB + Zu) + Zu / 2, m = D / C * Ci + Zu / 2 + Zu;
    return wE({ backgroundColor: g, groupIds: [B], ...xC, type: "line", x: u + F + tB / 2 + Zu / 2, y: e - m, height: m, strokeStyle: "dotted", opacity: xy, points: [U(0, 0), U(0, m)] });
  });
  return [...Ny(A, u, e, B, g, tu.DEV), s, ...c, ...l];
}, wcA = (A, u, e, C) => A === "line" ? hcA(u, e, C) : DcA(u, e, C), T2 = "clipboard" in navigator && "writeText" in navigator.clipboard, z2 = "clipboard" in navigator && "write" in navigator.clipboard && "ClipboardItem" in window && "toBlob" in HTMLCanvasElement.prototype, FcA = (A) => !!([LC.excalidraw, LC.excalidrawClipboard, LC.excalidrawClipboardWithAPI].includes(A?.type) && Array.isArray(A.elements)), pcA = ({ types: A, files: u }) => {
  !A && !u && console.warn("createPasteEvent: no types or files provided");
  let e = new ClipboardEvent("paste", { clipboardData: new DataTransfer() });
  if (A) for (let [C, B] of Object.entries(A)) {
    if (typeof B != "string") {
      u = u || [], u.push(B);
      continue;
    }
    try {
      if (e.clipboardData?.setData(C, B), e.clipboardData?.getData(C) !== B) throw new Error(`Failed to set "${C}" as clipboardData item`);
    } catch (g) {
      throw new Error(g.message);
    }
  }
  if (u) {
    let C = -1;
    for (let B of u) {
      C++;
      try {
        if (e.clipboardData?.items.add(B), e.clipboardData?.files[C] !== B) throw new Error(`Failed to set file "${B.name}" as clipboardData item`);
      } catch (g) {
        throw new Error(g.message);
      }
    }
  }
  return e;
}, mcA = ({ elements: A, files: u }) => {
  let e = PA(A), C = new Set(A.filter((i) => OA(i))), B = !1, g = A.reduce((i, I) => (bC(I) && (B = !0, u && u[I.fileId] && (i[I.fileId] = u[I.fileId])), i), {});
  B && !u && console.warn("copyToClipboard: attempting to file element(s) without providing associated `files` object.");
  let t = { type: LC.excalidrawClipboard, elements: A.map((i) => {
    if (Xe(i, e) && !C.has(Xe(i, e))) {
      let I = ZE(i);
      return nA(I, { frameId: null }), I;
    }
    return i;
  }), files: u ? g : void 0 };
  return JSON.stringify(t);
}, kcA = async (A, u, e) => {
  await hn(mcA({ elements: A, files: u }), e);
}, ycA = (A) => {
  let u = scA(A);
  return u.type === _Q ? { spreadsheet: u.spreadsheet } : null;
};
function Ry(A) {
  let u = [];
  for (let e of A.childNodes) if (e.nodeType === 3) {
    let C = e.textContent?.trim();
    C && u.push({ type: "text", value: C });
  } else if (e instanceof HTMLImageElement) {
    let C = e.getAttribute("src");
    C && C.startsWith("http") && u.push({ type: "imageUrl", value: C });
  } else u = u.concat(Ry(e));
  return u;
}
var bcA = (A) => {
  let u = A.clipboardData?.getData(zA.html);
  if (!u) return null;
  try {
    let e = new DOMParser().parseFromString(u, zA.html), C = Ry(e.body);
    if (C.length) return { type: "mixedContent", value: C };
  } catch (e) {
    console.error(`error in parseHTMLFromPaste: ${e.message}`);
  }
  return null;
}, UcA = async () => {
  let A = {}, u;
  try {
    u = await navigator.clipboard?.read();
  } catch (e) {
    try {
      if (navigator.clipboard?.readText) {
        console.warn(`navigator.clipboard.readText() failed (${e.message}). Failling back to navigator.clipboard.read()`);
        let C = await navigator.clipboard?.readText();
        if (C) return { [zA.text]: C };
      }
    } catch (C) {
      if (navigator.clipboard?.read) console.warn(`navigator.clipboard.readText() failed (${C.message}). Failling back to navigator.clipboard.read()`);
      else {
        if (C.name === "DataError") return console.warn(`navigator.clipboard.read() error, clipboard is probably empty: ${C.message}`), A;
        throw C;
      }
    }
    throw e;
  }
  for (let e of u) for (let C of e.types) if (x8(xEA, C)) try {
    if (C === zA.text || C === zA.html) A[C] = await (await e.getType(C)).text();
    else if (Cb(C)) {
      let B = await e.getType(C), g = tQ(B, C, void 0);
      A[C] = g;
    } else throw new TF(`Unsupported clipboard type: ${C}`);
  } catch (B) {
    console.warn(B instanceof TF ? B.message : `Cannot retrieve ${C} from clipboardItem: ${B.message}`);
  }
  return Object.keys(A).length === 0 && console.warn("No clipboard data found from clipboard.read()."), A;
}, GcA = async (A, u = !1) => {
  try {
    let e = !u && A && bcA(A);
    return e ? e.value.every((C) => C.type === "text") ? { type: "text", value: A.clipboardData?.getData(zA.text) || e.value.map((C) => C.value).join(`
`).trim() } : e : { type: "text", value: (A.clipboardData?.getData(zA.text) || "").trim() };
  } catch {
    return { type: "text", value: "" };
  }
}, My = async (A, u = !1) => {
  let e = await GcA(A, u);
  if (e.type === "mixedContent") return { mixedContent: e.value };
  try {
    let C = !u && ycA(e.value);
    if (C) return C;
  } catch (C) {
    console.error(C);
  }
  try {
    let C = JSON.parse(e.value), B = C.type === LC.excalidrawClipboardWithAPI;
    if (FcA(C)) return { elements: C.elements, files: C.files, text: u ? JSON.stringify(C.elements, null, 2) : void 0, programmaticAPI: B };
  } catch {
  }
  return { text: e.value };
}, fcA = async (A) => {
  try {
    await navigator.clipboard.write([new window.ClipboardItem({ [zA.png]: A })]);
  } catch (u) {
    if (sn(A)) await navigator.clipboard.write([new window.ClipboardItem({ [zA.png]: await A })]);
    else throw u;
  }
}, hn = async (A, u) => {
  if (T2) try {
    await navigator.clipboard.writeText(A || "");
    return;
  } catch (e) {
    console.error(e);
  }
  try {
    if (u) {
      if (u.clipboardData?.setData(zA.text, A || ""), u.clipboardData?.getData(zA.text) !== A) throw new Error("Failed to setData on clipboardEvent");
      return;
    }
  } catch (e) {
    console.error(e);
  }
  if (!LcA(A)) throw new Error("Error copying to clipboard.");
}, LcA = (A) => {
  A || (A = " ");
  let u = document.documentElement.getAttribute("dir") === "rtl", e = document.createElement("textarea");
  e.style.border = "0", e.style.padding = "0", e.style.margin = "0", e.style.position = "absolute", e.style[u ? "right" : "left"] = "-9999px";
  let C = window.pageYOffset || document.documentElement.scrollTop;
  e.style.top = `${C}px`, e.style.fontSize = "12pt", e.setAttribute("readonly", ""), e.value = A, document.body.appendChild(e);
  let B = !1;
  try {
    e.select(), e.setSelectionRange(0, e.value.length), B = document.execCommand("copy");
  } catch (g) {
    console.error(g);
  }
  return e.remove(), B;
}, P2 = ({ elements: A, appState: u, files: e, maxWidthOrHeight: C, getDimensions: B, exportPadding: g, exportingFrame: t }) => {
  let { elements: i, appState: I } = b4({ elements: A, appState: u }, null, null), { exportBackground: o, viewBackgroundColor: E } = I;
  return fy(i, { ...I, offsetTop: 0, offsetLeft: 0, width: 0, height: 0 }, e || {}, { exportBackground: o, exportPadding: g, viewBackgroundColor: E, exportingFrame: t }, (Q, s) => {
    let l = document.createElement("canvas");
    if (C) {
      typeof B == "function" && console.warn("`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.");
      let D = Math.max(Q, s), h = C < D ? C / D : u?.exportScale ?? 1;
      return l.width = Q * h, l.height = s * h, { canvas: l, scale: h };
    }
    let c = B?.(Q, s) || { width: Q, height: s };
    return l.width = c.width, l.height = c.height, { canvas: l, scale: c.scale ?? 1 };
  });
}, Yy = async ({ elements: A, appState: u = $B(), files: e = {}, exportPadding: C, renderEmbeddables: B, exportingFrame: g, skipInliningFonts: t, reuseImages: i }) => {
  let { elements: I, appState: o } = b4({ elements: A, appState: u }, null, null), E = { ...o, exportPadding: C };
  return M2(I, E, e, { exportingFrame: g, renderEmbeddables: B, skipInliningFonts: t, reuseImages: i });
}, xcA = (A) => A.type === "diamond" ? [U(A.width / 2, 0), U(A.width, A.height / 2), U(A.width / 2, A.height), U(0, A.height / 2)] : [U(0, 0), U(0 + A.width, 0), U(0 + A.width, A.height), U(0, A.height)], ScA = (A) => $A(A) || RC(A) ? A.points : xcA(A), Y5 = (A) => {
  let u = A.reduce((e, [C, B]) => (e.minY = Math.min(e.minY, B), e.minX = Math.min(e.minX, C), e.maxX = Math.max(e.maxX, C), e.maxY = Math.max(e.maxY, B), e), { minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0, cx: 0, cy: 0 });
  return u.cx = (u.maxX + u.minX) / 2, u.cy = (u.maxY + u.minY) / 2, u;
}, NcA = (A) => {
  let u = ScA(A), { cx: e, cy: C } = Y5(u), B = U(e, C), g = u.map((E) => EA(E, B, A.angle)), { minX: t, minY: i, maxX: I, maxY: o } = Y5(g);
  return [t + A.x, i + A.y, I + A.x, o + A.y];
}, RcA = (A, u) => {
  let e = NcA(A);
  return (Bs(e[0], se(u[0], u[2])) || Bs(u[0], se(e[0], e[2]))) && (Bs(e[1], se(u[1], u[3])) || Bs(u[1], se(e[1], e[3])));
}, McA = ({ elements: A, bounds: u, type: e, errorMargin: C = 0 }) => {
  M8(u) && (u = hB(u, PA(A)));
  let B = [u[0] - C, u[1] - C, u[2] + C, u[3] + C], g = /* @__PURE__ */ new Set();
  for (let t of A)
    if (!g.has(t.id) && RcA(t, B)) {
      if (g.add(t.id), t.boundElements) for (let i of t.boundElements) g.add(i.id);
      UA(t) && t.containerId && g.add(t.containerId), Eu(t) && (t.startBinding && g.add(t.startBinding.elementId), t.endBinding && g.add(t.endBinding?.elementId));
    }
  return A.filter((t) => g.has(t.id));
};
function v5(A) {
  return [Math.min(A[0][0], A[1][0]), Math.min(A[0][1], A[1][1]), Math.max(A[0][0], A[1][0]), Math.max(A[0][1], A[1][1])];
}
function YcA(A, u) {
  return A[0] <= u[2] && A[2] >= u[0] && A[1] <= u[3] && A[3] >= u[1];
}
var vcA = 1e-6;
function H5(A, u) {
  let e = vA(A[1], A[0]), C = vA(u, A[0]), B = v0(e, C);
  return Math.abs(B) < vcA;
}
function vd(A, u) {
  let e = vA(A[1], A[0]), C = vA(u, A[0]);
  return v0(e, C) < 0;
}
function K5(A, u) {
  return H5(A, u[0]) || H5(A, u[1]) || (vd(A, u[0]) ? !vd(A, u[1]) : vd(A, u[1]));
}
function HcA(A, u) {
  return YcA(v5(A), v5(u)) && K5(A, u) && K5(u, A);
}
var vy = (A, u, e) => {
  let C = PA(A);
  for (let B of u) if (B.frameId) {
    let g = e.get(B.id), t = e.get(B.frameId);
    if (g) {
      let i = C.get(g);
      i && nA(i, { frameId: t ?? B.frameId }, !1);
    }
  }
};
function O2(A, u, e) {
  let C = u5(u, e), B = u5(A, e);
  return C.some((g) => B.some((t) => HcA(g, t)));
}
var Hy = (A, u, e) => f4(u9(A, u, e, !1)).filter((C) => !OA(C) && !C.frameId || C.frameId === u.id), V2 = (A, u, e) => u9([u], A, e).some((C) => C.id === u.id), wn = (A, u, e) => {
  let [C, B, g, t] = Au(u, e), [i, I, o, E] = Nu(A);
  return C <= i && B <= I && g >= o && t >= E;
}, ai = (A, u, e) => wn([A], u, e) || O2(A, u, e) || V2(A, u, e), J5 = (A, u, e) => {
  let [C, B, g, t] = Au(u, e);
  return F8(U(C, B), U(A.x, A.y), U(g, t));
}, KcA = (A) => {
  let u = /* @__PURE__ */ new Map();
  for (let e of A) {
    let C = OA(e) ? e.id : e.frameId;
    C && !u.has(C) && u.set(C, Bg(A, C));
  }
  return u;
}, Bg = (A, u) => {
  let e = [];
  for (let C of A.values()) C.frameId === u && e.push(C);
  return e;
}, X2 = (A) => A.filter((u) => OA(u)), _2 = (A) => {
  let u = PA(X2(A));
  return A.filter((e) => u.has(e.id) || !e.frameId || !u.has(e.frameId));
}, Js = (A, u, e, C) => {
  let B = Bg(A, u.id), g = new Set(B), t = /* @__PURE__ */ new Set([...Hy(A, u, C), ...B.filter((s) => V2(s, u, C))]), i = B.filter((s) => !t.has(s)), I = new Set(Array.from(t).flatMap((s) => s.groupIds));
  for (let s of i) if (!O2(s, u, C)) s.groupIds.length === 0 && g.delete(s);
  else if (s.groupIds.length > 0) for (let l of s.groupIds) I.add(l);
  for (let s of i) if (s.groupIds.length > 0) {
    let l = !0;
    for (let c of s.groupIds) I.has(c) && (l = !1);
    l && g.delete(s);
  }
  let o = Array.from(t).filter((s) => s.groupIds.length === 0);
  for (let s of o) g.add(s);
  let E = Array.from(t).filter((s) => s.groupIds.length > 0), Q = Ok(E, e);
  for (let [s, l] of Object.entries(Q)) if (l) {
    let c = Vu(A, s);
    if (wn(c, u, C)) for (let D of c) g.add(D);
  }
  return [...g].filter((s) => !(UA(s) && s.containerId));
}, JcA = (A, u, e) => ZcA(f4(A, Hy(A, u, e)), u, e), ZcA = (A, u, e) => {
  let C = [], B = /* @__PURE__ */ new Map();
  for (let g of A) {
    let t = !1;
    if (g.groupIds.length > 0) {
      if (g.groupIds.some((i) => B.get(i))) t = !0;
      else {
        let i = new Set(g.groupIds.flatMap((I) => Vu(e, I)));
        t = !wn(Array.from(i), u, e);
      }
      g.groupIds.forEach((i) => {
        B.set(i, t);
      });
    }
    t || C.push(g);
  }
  return C;
}, Xe = (A, u) => A.frameId && u.get(A.frameId) || null, qcA = (A, u) => {
  let e = /* @__PURE__ */ new Set(), C = PA(A);
  A = f4(A);
  for (let t of A) OA(t) && t.id !== u.id && e.add(t.id);
  let B = /* @__PURE__ */ new Set(), g = [];
  for (let t of A) if (!(OA(t) || t.frameId && e.has(t.frameId))) if (t.groupIds.length) {
    let i = t.groupIds.at(-1);
    if (!B.has(i)) {
      B.add(i);
      let I = Vu(A, i);
      if (I.some((o) => ai(o, u, C))) for (let o of I) g.push(o);
    }
  } else ai(t, u, C) && g.push(t);
  return g;
}, wQ = (A, u, e, C) => {
  let B = PA(A), g = /* @__PURE__ */ new Map();
  for (let o of A.values()) o.frameId === e.id && g.set(o.id, !0);
  let t = new Set(u.map((o) => o.id)), i = [], I = /* @__PURE__ */ new Set();
  for (let o of u) OA(o) && o.id !== e.id && I.add(o.id);
  for (let o of f4(A, u)) {
    if (OA(o) || o.frameId && I.has(o.frameId) || o.frameId && C.selectedElementIds[o.id] && C.selectedElementIds[o.frameId]) continue;
    g.has(o.id) || i.push(o);
    let E = gu(o, B);
    E && !t.has(E.id) && !g.has(E.id) && i.push(E);
  }
  for (let o of i) nA(o, { frameId: e.id }, !1);
  return A;
}, G4 = (A, u) => {
  let e = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map();
  for (let B of A) if (B.frameId) {
    e.set(B.id, B);
    let g = C.get(B.frameId) || [];
    g.push(B);
    let t = gu(B, u);
    t && (e.set(t.id, t), g.push(t)), C.set(B.frameId, g);
  }
  for (let [, B] of e) nA(B, { frameId: null }, !1);
}, Ky = (A, u) => {
  let e = Bg(A, u.id);
  return G4(e, PA(A)), A;
}, Jy = (A, u, e, C) => wQ(Ky(A, e), u, e, C.state).slice(), sI = (A, u, e) => {
  let C = e.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, elements: A }), B = new Set(C);
  if (u.editingGroupId) for (let i of C) i.groupIds.length === 0 ? B.add(i) : i.groupIds.flatMap((I) => Vu(A, I)).forEach((I) => B.add(I));
  let g = /* @__PURE__ */ new Set(), t = PA(A);
  return B.forEach((i) => {
    i.frameId && !OA(i) && !Nl(i, t, u) && g.add(i);
  }), g.size > 0 && G4(g, t), A;
}, f4 = (A, u) => {
  let e = /* @__PURE__ */ new Set(), C = u || A;
  for (let t of C.values()) {
    let i = t.groupIds[t.groupIds.length - 1];
    i && e.add(i);
  }
  let B = /* @__PURE__ */ new Set();
  for (let t of e) Vu(A, t).some((i) => OA(i)) && B.add(t);
  let g = [];
  for (let t of C.values()) B.has(t.groupIds[t.groupIds.length - 1]) || g.push(t);
  return g;
}, a1 = (A, u, e) => {
  let C = UA(A) && _0(A, u) || A;
  return C.frameId && e.selectedElementIds[C.id] && e.selectedElementIds[C.frameId] ? Xe(C, u) : e.selectedElementIds[C.id] && e.selectedElementsAreBeingDragged ? e.frameToHighlight : Xe(C, u);
}, Nl = (A, u, e, C) => {
  let B = C?.targetFrame ?? a1(A, u, e);
  if (!B) return !1;
  let g = UA(A) && _0(A, u) || A, t = (I) => {
    C?.checkedGroups && g.groupIds.forEach((o) => {
      C.checkedGroups?.set(o, I);
    });
  };
  if (!e.selectedElementIds[g.id] || !e.selectedElementsAreBeingDragged || e.selectedElementIds[g.id] && e.selectedElementIds[B.id]) return !0;
  if (g.groupIds.length === 0) return ai(g, B, u);
  for (let I of g.groupIds) if (C?.checkedGroups?.has(I)) return C.checkedGroups.get(I);
  let i = new Set(g.groupIds.filter((I) => C?.checkedGroups ? !C.checkedGroups.has(I) : !0).flatMap((I) => Vu(u, I)));
  if (e.editingGroupId && e.selectedElementsAreBeingDragged) {
    let I = new Set(iu(u, e));
    if (e.frameToHighlight !== null) return !0;
    I.forEach((o) => {
      i.delete(o);
    });
  }
  for (let I of i) if (OA(I)) return t(!1), !1;
  for (let I of i) if (ai(I, B, u)) return t(!0), !0;
  return !1;
}, Z5 = (A, u, e, C, B) => {
  if (!e.frameRendering || !e.frameRendering.clip) return !1;
  let g = O2(A, u, C) || V2(A, u, C);
  if (g) {
    for (let t of A.groupIds) B?.set(t, !0);
    return !0;
  }
  if (!g && A.groupIds.length > 0 && !wn([A], u, C)) {
    let t = !1;
    if (e.selectedElementsAreBeingDragged) t = Nl(A, C, e, { targetFrame: u, checkedGroups: B });
    else {
      t = A.frameId === u.id;
      for (let i of A.groupIds) B?.set(i, t);
    }
    for (let i of A.groupIds) B?.set(i, t);
    return t;
  }
  return !1;
}, Zy = (A) => A.name === null ? N8(A) ? "Frame" : "AI Frame" : A.name, $2 = (A, u) => McA({ elements: A, bounds: u, type: "overlap" }).filter((e) => !e.frameId || e.frameId === u.id), qy = (A) => {
  let u = PA(A);
  return A.length > 1 && A.some((e) => e.frameId && u.has(e.frameId));
}, A9 = (A) => {
  let u = /* @__PURE__ */ new Set();
  return A.forEach((e) => {
    OA(e) && u.add(e.id);
  }), A.filter((e) => !(e.frameId && u.has(e.frameId)));
}, u9 = (A, u, e, C = !0) => {
  let [B, g, t, i] = Au(u, e), I = A.filter((o) => {
    let [E, Q, s, l] = hB(o, e), c = Xe(o, e);
    if (c) {
      let [D, h, F, m] = hB(c, e);
      E = Math.max(D, E), Q = Math.max(h, Q), s = Math.min(F, s), l = Math.min(m, l);
    }
    return o.locked === !1 && o.type !== "selection" && !Xu(o) && B <= E && g <= Q && t >= s && i >= l;
  });
  return I = C ? A9(I) : I, I = I.filter((o) => {
    let E = Xe(o, e);
    return E ? ai(o, E, e) : !0;
  }), I;
}, Wy = (A, u, e, C) => {
  let B = new Set(u.map((g) => g.id));
  return A.filter((g) => {
    let t = Rl(g, e.width, e.height, e, C);
    return !B.has(g.id) && t;
  });
}, S0 = (function() {
  let A = null, u = null, e = null, C = (B, g) => (e != null && B === A && g.selectedElementIds === u || (e = B.some((t) => g.selectedElementIds[t.id]), A = B, u = g.selectedElementIds), e);
  return C.clearCache = () => {
    A = null, u = null, e = null;
  }, C;
})(), WcA = (A, u, e) => {
  let C = Array.from(new Set(iu(A, u).map((B) => e(B))));
  return C.length === 1 ? C[0] : null;
}, iu = (A, u, e) => {
  let C = /* @__PURE__ */ new Set(), B = [];
  for (let g of A.values()) {
    if (u.selectedElementIds[g.id]) {
      B.push(g), C.add(g.id);
      continue;
    }
    if (e?.includeBoundTextElement && Xu(g) && u.selectedElementIds[g?.containerId]) {
      B.push(g), C.add(g.id);
      continue;
    }
  }
  if (e?.includeElementsInFrames) {
    let g = [];
    return B.forEach((t) => {
      OA(t) && Bg(A, t.id).forEach((i) => !C.has(i.id) && g.push(i)), g.push(t);
    }), g;
  }
  return B;
}, jy = (A, u) => u.editingTextElement ? [u.editingTextElement] : u.newElement ? [u.newElement] : iu(A, u, { includeBoundTextElement: !0 }), yu = (A, u) => Ee(u.selectedElementIds, A) ? u.selectedElementIds : A, q5 = (A) => {
  let u = /* @__PURE__ */ new Map(), e = [];
  for (let C of A) C.isDeleted || (e.push(C), u.set(C.id, C));
  return { elementsMap: u, elements: e };
}, jcA = In((A) => {
  (tu.DEV || tu.MODE === Oe.TEST || window?.DEBUG_FRACTIONAL_INDICES) && L2(A, { shouldThrow: tu.DEV || tu.MODE === Oe.TEST, includeBoundTextValidation: !0 });
}, 1e3 * 60, { leading: !0, trailing: !1 }), TcA = (A) => {
  let u = ["includeBoundTextElement", "includeElementsInFrames"], e = "";
  for (let C of u) e += `${C}:${A[C] ? "1" : "0"}`;
  return e;
}, W5 = (A) => typeof A == "string", I1 = class Zs {
  constructor() {
    J(this, "callbacks", /* @__PURE__ */ new Set()), J(this, "nonDeletedElements", []), J(this, "nonDeletedElementsMap", NC(/* @__PURE__ */ new Map())), J(this, "elements", []), J(this, "nonDeletedFramesLikes", []), J(this, "frames", []), J(this, "elementsMap", NC(/* @__PURE__ */ new Map())), J(this, "selectedElementsCache", { selectedElementIds: null, elements: null, cache: /* @__PURE__ */ new Map() }), J(this, "sceneNonce"), J(this, "insertElement", (u) => {
      let e = u.frameId ? this.getElementIndex(u.frameId) : this.elements.length;
      this.insertElementAtIndex(u, e);
    }), J(this, "insertElements", (u) => {
      if (!u.length) return;
      let e = u[0]?.frameId ? this.getElementIndex(u[0].frameId) : this.elements.length;
      this.insertElementsAtIndex(u, e);
    }), J(this, "getContainerElement", (u) => u && u.containerId && this.getElement(u.containerId) || null), J(this, "getElementsFromId", (u) => {
      let e = this.getNonDeletedElementsMap(), C = e.get(u);
      return C ? [C] : Vu(e, u);
    });
  }
  static mapElementToScene(u, e) {
    W5(u) ? this.sceneMapById.set(u, e) : (this.sceneMapByElement.set(u, e), this.sceneMapById.set(u.id, e));
  }
  static getScene(u) {
    return W5(u) ? this.sceneMapById.get(u) || null : this.sceneMapByElement.get(u) || null;
  }
  getSceneNonce() {
    return this.sceneNonce;
  }
  getNonDeletedElementsMap() {
    return this.nonDeletedElementsMap;
  }
  getElementsIncludingDeleted() {
    return this.elements;
  }
  getElementsMapIncludingDeleted() {
    return this.elementsMap;
  }
  getNonDeletedElements() {
    return this.nonDeletedElements;
  }
  getFramesIncludingDeleted() {
    return this.frames;
  }
  getSelectedElements(u) {
    let e = TcA(u), C = u?.elements || this.nonDeletedElements;
    if (this.selectedElementsCache.elements === C && this.selectedElementsCache.selectedElementIds === u.selectedElementIds) {
      let g = this.selectedElementsCache.cache.get(e);
      if (g) return g;
    } else u?.elements == null && this.selectedElementsCache.cache.clear();
    let B = iu(C, { selectedElementIds: u.selectedElementIds }, u);
    return u?.elements == null && (this.selectedElementsCache.selectedElementIds = u.selectedElementIds, this.selectedElementsCache.elements = this.nonDeletedElements, this.selectedElementsCache.cache.set(e, B)), B;
  }
  getNonDeletedFramesLikes() {
    return this.nonDeletedFramesLikes;
  }
  getElement(u) {
    return this.elementsMap.get(u) || null;
  }
  getNonDeletedElement(u) {
    let e = this.getElement(u);
    return e && n1(e) ? e : null;
  }
  mapElements(u) {
    let e = !1, C = this.elements.map((B) => {
      let g = u(B);
      return g !== B && (e = !0), g;
    });
    return e && this.replaceAllElements(C), e;
  }
  replaceAllElements(u) {
    let e = u instanceof Array ? u : Array.from(u.values()), C = [];
    jcA(e), this.elements = Pg(e), this.elementsMap.clear(), this.elements.forEach((g) => {
      OA(g) && C.push(g), this.elementsMap.set(g.id, g), Zs.mapElementToScene(g, this);
    });
    let B = q5(this.elements);
    this.nonDeletedElements = B.elements, this.nonDeletedElementsMap = B.elementsMap, this.frames = C, this.nonDeletedFramesLikes = q5(this.frames).elements, this.triggerUpdate();
  }
  triggerUpdate() {
    this.sceneNonce = ug();
    for (let u of Array.from(this.callbacks)) u();
  }
  onUpdate(u) {
    if (this.callbacks.has(u)) throw new Error();
    return this.callbacks.add(u), () => {
      if (!this.callbacks.has(u)) throw new Error();
      this.callbacks.delete(u);
    };
  }
  destroy() {
    this.elements = [], this.nonDeletedElements = [], this.nonDeletedFramesLikes = [], this.frames = [], this.elementsMap.clear(), this.selectedElementsCache.selectedElementIds = null, this.selectedElementsCache.elements = null, this.selectedElementsCache.cache.clear(), Zs.sceneMapById.forEach((u, e) => {
      u === this && Zs.sceneMapById.delete(e);
    }), this.callbacks.clear();
  }
  insertElementAtIndex(u, e) {
    if (!Number.isFinite(e) || e < 0) throw new Error("insertElementAtIndex can only be called with index >= 0");
    let C = [...this.elements.slice(0, e), u, ...this.elements.slice(e)];
    Cg(C, PA([u])), this.replaceAllElements(C);
  }
  insertElementsAtIndex(u, e) {
    if (!u.length) return;
    if (!Number.isFinite(e) || e < 0) throw new Error("insertElementAtIndex can only be called with index >= 0");
    let C = [...this.elements.slice(0, e), ...u, ...this.elements.slice(e)];
    Cg(C, PA(u)), this.replaceAllElements(C);
  }
  getElementIndex(u) {
    return this.elements.findIndex((e) => e.id === u);
  }
};
J(I1, "sceneMapByElement", /* @__PURE__ */ new WeakMap()), J(I1, "sceneMapById", /* @__PURE__ */ new Map());
var zcA = I1, Og = zcA, nA = (A, u, e = !0, C) => {
  let B = !1, { points: g, fixedSegments: t, fileId: i, startBinding: I, endBinding: o } = u;
  if (xA(A) && (Object.keys(u).length === 0 || typeof g < "u" || typeof t < "u" || typeof I < "u" || typeof o < "u")) {
    let E = NC(Og.getScene(A)?.getNonDeletedElementsMap() ?? /* @__PURE__ */ new Map());
    u = { ...u, angle: 0, ...H2({ ...A, x: u.x || A.x, y: u.y || A.y }, E, { fixedSegments: t, points: g, startBinding: I, endBinding: o }, { isDragging: C?.isDragging }) };
  } else typeof g < "u" && (u = { ...II(g), ...u });
  for (let E in u) {
    let Q = u[E];
    if (typeof Q < "u") {
      if (A[E] === Q && (typeof Q != "object" || Q === null || E === "groupIds" || E === "scale")) continue;
      if (E === "scale") {
        let s = A[E], l = Q;
        if (s[0] === l[0] && s[1] === l[1]) continue;
      } else if (E === "points") {
        let s = A[E], l = Q;
        if (s.length === l.length) {
          let c = !1, D = s.length;
          for (; --D; ) {
            let h = s[D], F = l[D];
            if (h[0] !== F[0] || h[1] !== F[1]) {
              c = !0;
              break;
            }
          }
          if (!c) continue;
        }
      }
      A[E] = Q, B = !0;
    }
  }
  return B && ((typeof u.height < "u" || typeof u.width < "u" || typeof i < "u" || typeof g < "u") && a0.delete(A), A.version++, A.versionNonce = ug(), A.updated = mI(), e && Og.getScene(A)?.triggerUpdate()), A;
}, Bu = (A, u, e = !1) => {
  let C = !1;
  for (let B in u) {
    let g = u[B];
    if (typeof g < "u") {
      if (A[B] === g && (typeof g != "object" || g === null)) continue;
      C = !0;
    }
  }
  return !C && !e ? A : { ...A, ...u, updated: mI(), version: A.version + 1, versionNonce: ug() };
}, L4 = (A, u) => (A.version = (u ?? A.version) + 1, A.versionNonce = ug(), A.updated = mI(), A), lI = (A) => $A(A) || RC(A) ? A.points.length < 2 : A.width === 0 && A.height === 0, Rl = (A, u, e, C, B) => {
  let [g, t, i, I] = hB(A, B), o = Tu({ clientX: C.offsetLeft, clientY: C.offsetTop }, C), E = Tu({ clientX: C.offsetLeft + u, clientY: C.offsetTop + e }, C);
  return o.x <= i && o.y <= I && E.x >= g && E.y >= t;
}, qs = (A, u, e, C, B, g) => {
  let [t, i, I, o] = Nu(A, B), E = Tu({ clientX: C.offsetLeft + (g?.left || 0), clientY: C.offsetTop + (g?.top || 0) }, C), Q = Tu({ clientX: C.offsetLeft + u - (g?.right || 0), clientY: C.offsetTop + e - (g?.bottom || 0) }, C);
  return t >= E.x && i >= E.y && I <= Q.x && o <= Q.y;
}, j5 = (A, u, e) => {
  let C = Math.abs(u), B = Math.abs(e);
  if (A === "line" || A === "arrow" || A === "freedraw") {
    let g = Math.round(Math.atan(B / C) / gi) * gi;
    g === 0 ? e = 0 : g === Math.PI / 2 ? u = 0 : e = C * Math.tan(g) * Math.sign(e) || e;
  } else A !== "selection" && (e = C * Math.sign(e));
  return { width: u, height: e };
}, o1 = (A, u, e, C) => {
  let B = e - A, g = C - u, t = Math.round(Math.atan(g / B) / gi) * gi;
  if (t === 0) g = 0;
  else if (t === Math.PI / 2) B = 0;
  else {
    let i = Math.tan(t), I = -1, o = u - i * A, E = -1 / i, Q = -1, s = C - E * e, l = (I * s - Q * o) / (i * Q - E * I), c = (o * E - s * i) / (i * Q - E * I);
    B = l - A, g = c - u;
  }
  return { width: B, height: g };
}, Ty = (A) => {
  let u = { width: A.width, height: A.height, x: A.x, y: A.y };
  if (A.width < 0) {
    let e = Math.abs(A.width);
    u.width = e, u.x = A.x - e;
  }
  if (A.height < 0) {
    let e = Math.abs(A.height);
    u.height = e, u.y = A.y - e;
  }
  return u;
}, T5 = { mouse: 8, pen: 16, touch: 28 }, PcA = 16, zy = { e: !0, s: !0, n: !0, w: !0 }, z5 = { e: !0, s: !0, n: !0, w: !0, nw: !0, se: !0 }, Hd = { e: !0, s: !0, n: !0, w: !0 }, Ug = (A, u, e, C, B, g, t) => {
  let [i, I] = EA(U(A + e / 2, u + C / 2), U(B, g), t);
  return [i - e / 2, I - C / 2, e, C];
}, e9 = (A) => !(A.viewport.isMobile || A.isTouchScreen && (hEA || n8)), FQ = (A) => e9(A) ? zy : {}, C9 = ([A, u, e, C, B, g], t, i, I, o = {}, E = 4, Q = UE) => {
  let s = T5[I], l = s / i.value, c = s / i.value, D = s / i.value, h = s / i.value, F = e - A, m = C - u, p = E / i.value, k = (s - Q * 2) / (2 * i.value), b = { nw: o.nw ? void 0 : Ug(A - p - D + k, u - p - h + k, l, c, B, g, t), ne: o.ne ? void 0 : Ug(e + p - k, u - p - h + k, l, c, B, g, t), sw: o.sw ? void 0 : Ug(A - p - D + k, C + p - k, l, c, B, g, t), se: o.se ? void 0 : Ug(e + p - k, C + p - k, l, c, B, g, t), rotation: o.rotation ? void 0 : Ug(A + F / 2 - l / 2, u - p - h + k - PcA / i.value, l, c, B, g, t) }, f = 5 * T5.mouse / i.value;
  return Math.abs(F) > f && (o.n || (b.n = Ug(A + F / 2 - l / 2, u - p - h + k, l, c, B, g, t)), o.s || (b.s = Ug(A + F / 2 - l / 2, C + p - k, l, c, B, g, t))), Math.abs(m) > f && (o.w || (b.w = Ug(A - p - D + k, u + m / 2 - c / 2, l, c, B, g, t)), o.e || (b.e = Ug(e + p - k, u + m / 2 - c / 2, l, c, B, g, t))), b;
}, Py = (A, u, e, C = "mouse", B = zy) => {
  if (A.locked || xA(A)) return {};
  if (A.type === "freedraw" || $A(A)) {
    if (A.points.length === 2) {
      let [, t] = A.points;
      t[0] === 0 || t[1] === 0 ? B = Hd : t[0] > 0 && t[1] < 0 ? B = z5 : t[0] > 0 && t[1] > 0 ? B = Hd : t[0] < 0 && t[1] > 0 ? B = z5 : t[0] < 0 && t[1] < 0 && (B = Hd);
    }
  } else OA(A) && (B = { ...B, rotation: !0 });
  let g = $A(A) ? UE + 8 : bu(A) ? 0 : UE;
  return C9(Au(A, e, !0), A.angle, u, C, B, g, bu(A) ? 0 : void 0);
}, Oy = (A, u) => {
  if (u.editingLinearElement) return !1;
  if (A.length > 1) return !0;
  let e = A[0];
  return xA(e) ? !1 : $A(e) ? e.points.length > 2 : !0;
}, Q1 = (A, u, e) => u >= A[0] && u <= A[0] + A[2] && e >= A[1] && e <= A[1] + A[3], OcA = (A, u, e, C, B, g, t, i) => {
  if (!e.selectedElementIds[A.id]) return !1;
  let { rotation: I, ...o } = Py(A, g, u, t, FQ(i));
  if (I && Q1(I, C, B)) return "rotation";
  let E = Object.keys(o).filter((Q) => {
    let s = o[Q];
    return s ? Q1(s, C, B) : !1;
  });
  if (E.length > 0) return E[0];
  if (e9(i)) {
    let [Q, s, l, c, D, h] = Au(A, u);
    if (!($A(A) && A.points.length <= 2)) {
      let F = bu(A) ? 0 : al / g.value, m = al / g.value, p = Vy(U(Q - F, s - F), U(l + F, c + F), U(D, h), A.angle);
      for (let [k, b] of Object.entries(p)) if (GE(U(C, B), b, m)) return k;
    }
  }
  return !1;
}, P5 = (A, u, e, C, B, g, t, i) => A.reduce((I, o) => {
  if (I) return I;
  let E = OcA(o, t, u, e, C, B, g, i);
  return E ? { element: o, transformHandleType: E } : null;
}, null), O5 = ([A, u, e, C], B, g, t, i, I) => {
  let o = C9([A, u, e, C, (A + e) / 2, (u + C) / 2], 0, t, i, FQ(I)), E = Object.keys(o).find((Q) => {
    let s = o[Q];
    return s && Q1(s, B, g);
  });
  if (E) return E;
  if (e9(I)) {
    let Q = (A + e) / 2, s = (u + C) / 2, l = al / t.value, c = Vy(U(A - l, u - l), U(e + l, C + l), U(Q, s), 0);
    for (let [D, h] of Object.entries(c)) if (GE(U(B, g), h, l)) return D;
  }
  return !1;
}, Kd = ["ns", "nesw", "ew", "nwse"], VcA = (A, u) => {
  let e = Kd.indexOf(A);
  if (e >= 0) {
    let C = Math.round(u / (Math.PI / 4));
    A = Kd[(e + C) % Kd.length];
  }
  return A;
}, V5 = (A) => {
  let { element: u, transformHandleType: e } = A, C = u && Math.sign(u.height) * Math.sign(u.width) === -1, B = null;
  switch (e) {
    case "n":
    case "s":
      B = "ns";
      break;
    case "w":
    case "e":
      B = "ew";
      break;
    case "nw":
    case "se":
      C ? B = "nesw" : B = "nwse";
      break;
    case "ne":
    case "sw":
      C ? B = "nwse" : B = "nesw";
      break;
    case "rotation":
      return "grab";
  }
  return B && u && (B = VcA(B, u.angle)), B ? `${B}-resize` : "";
}, Vy = ([A, u], [e, C], B, g) => {
  let t = EA(U(A, u), B, g), i = EA(U(e, u), B, g), I = EA(U(A, C), B, g), o = EA(U(e, C), B, g);
  return { n: [t, i], e: [i, o], s: [o, I], w: [I, t] };
}, XcA = (A, u, e, C, B, g, t, i, I, o, E, Q) => {
  if (e.length === 1) {
    let [s] = e;
    if (u === "rotation") xA(s) || (_cA(s, C, B, I, o, g), Ve(s, C));
    else {
      if (UA(s) && u) return $cA(A, s, C, u, t, I, o), Ve(s, C), !0;
      if (u) {
        let l = e[0].id, c = C.get(l), D = A.get(l);
        if (c && D) {
          let { nextWidth: h, nextHeight: F } = gdA(c, D, C, A, u, I, o, { shouldMaintainAspectRatio: i, shouldResizeFromCenter: t });
          $Q(h, F, c, D, C, A, u, { shouldMaintainAspectRatio: i, shouldResizeFromCenter: t });
        }
      }
    }
    return !0;
  } else if (e.length > 1) {
    if (u === "rotation") return AdA(A, e, C, B, I, o, g, E, Q), !0;
    if (u) {
      let { nextWidth: s, nextHeight: l, flipByX: c, flipByY: D, originalBoundingBox: h } = tdA(e, A, C, u, I, o, { shouldMaintainAspectRatio: i, shouldResizeFromCenter: t });
      return Xy(e, C, u, B, A, { shouldResizeFromCenter: t, shouldMaintainAspectRatio: i, flipByX: c, flipByY: D, nextWidth: s, nextHeight: l, originalBoundingBox: h }), !0;
    }
  }
  return !1;
}, _cA = (A, u, e, C, B, g) => {
  let [t, i, I, o] = Au(A, u), E = (t + I) / 2, Q = (i + o) / 2, s;
  OA(A) ? s = 0 : (s = 5 * Math.PI / 2 + Math.atan2(B - Q, C - E), g && (s = s + gi / 2, s = s - s % gi), s = nl(s));
  let l = Tg(A);
  if (nA(A, { angle: s }), l) {
    let c = e.getElement(l);
    c && !Eu(A) && nA(c, { angle: s });
  }
}, B9 = (A, u, e, C) => $A(A) || RC(A) ? { points: ml(0, u, ml(1, e, A.points, C), C) } : {}, g9 = (A, u, e) => {
  let C = A.width;
  if (Xu(A)) {
    let g = _0(A, u);
    g && (C = zg(g, A));
  }
  let B = A.fontSize * (e / C);
  return B < $1 ? null : { size: B };
}, $cA = (A, u, e, C, B, g, t) => {
  let [i, I, o, E, Q, s] = Au(u, e), [l, c] = EA(U(g, t), U(Q, s), -u.angle), D = 0, h = 0;
  C !== "e" && C !== "w" && (C.includes("e") && (D = (l - i) / (o - i)), C.includes("w") && (D = (o - l) / (o - i)), C.includes("n") && (h = (E - c) / (E - I)), C.includes("s") && (h = (c - I) / (E - I)));
  let F = Math.max(D, h);
  if (F > 0) {
    let m = u.width * F, p = u.height * F, k = g9(u, e, m);
    if (k === null) return;
    let b = [i, I], f = [o, E], L = [Q, s], N = U(i, I);
    if (["n", "w", "nw"].includes(C) && (N = U(f[0] - Math.abs(m), f[1] - Math.abs(p))), C === "ne") {
      let O = [b[0], f[1]];
      N = U(O[0], O[1] - Math.abs(p));
    }
    if (C === "sw") {
      let O = [f[0], b[1]];
      N = U(O[0] - Math.abs(m), O[1]);
    }
    ["s", "n"].includes(C) && (N[0] = L[0] - m / 2), ["e", "w"].includes(C) && (N[1] = L[1] - p / 2), B && (N[0] = L[0] - Math.abs(m) / 2, N[1] = L[1] - Math.abs(p) / 2);
    let M = u.angle, v = EA(N, U(Q, s), M), K = U(N[0] + Math.abs(m) / 2, N[1] + Math.abs(p) / 2), q = EA(K, U(Q, s), M);
    N = EA(v, q, -M);
    let [j, uA] = N;
    nA(u, { fontSize: k.size, width: m, height: p, x: j, y: uA });
  }
  if (C === "e" || C === "w") {
    let m = A.get(u.id), [p, k, b, f] = ei(m, m.width, m.height, !0), L = U(p, k), N = U(b, f), M = rn(L, N), v = EA(U(g, t), M, -m.angle), [K, , q] = ei(u, u.width, u.height, !0), j = q - K, uA = N[0] - L[0], O = E2(vu({ fontSize: u.fontSize, fontFamily: u.fontFamily }), u.lineHeight), $ = uA / j;
    C.includes("e") && ($ = (v[0] - L[0]) / j), C.includes("w") && ($ = (N[0] - v[0]) / j);
    let X = u.width * $ < O ? O : u.width * $, P = JE(u.originalText, vu(u), Math.abs(X)), _ = we(P, vu(u), u.lineHeight), CA = _.height, [T, gA, GA, fA] = ei(m, X, CA, !0), qA = GA - T, JA = fA - gA, mA = [...L];
    ["n", "w", "nw"].includes(C) && (mA = [N[0] - Math.abs(qA), L[1]]);
    let FA = m.angle, TA = EA(mA, M, FA), WA = U(mA[0] + Math.abs(qA) / 2, mA[1] + Math.abs(JA) / 2), ru = EA(WA, M, FA);
    mA = EA(TA, ru, -FA);
    let _u = { width: Math.abs(X), height: Math.abs(_.height), x: mA[0], y: mA[1], text: P, autoResize: !1 };
    nA(u, _u);
  }
}, AdA = (A, u, e, C, B, g, t, i, I) => {
  let o = 5 * Math.PI / 2 + Math.atan2(g - I, B - i);
  t && (o += gi / 2, o -= o % gi);
  for (let E of u) if (!OA(E)) {
    let [Q, s, l, c] = Au(E, e), D = (Q + l) / 2, h = (s + c) / 2, F = A.get(E.id)?.angle ?? E.angle, [m, p] = EA(U(D, h), U(i, I), o + F - E.angle);
    xA(E) ? nA(E, { points: Y4A(E, e) }) : nA(E, { x: E.x + (m - D), y: E.y + (p - h), angle: nl(o + F) }, !1), Ve(E, e, { simultaneouslyUpdated: u });
    let k = gu(E, e);
    k && !Eu(E) && nA(k, { x: k.x + (m - D), y: k.y + (p - h), angle: nl(o + F) }, !1);
  }
  C.triggerUpdate();
}, udA = (A, u, e, C, B) => {
  let [g, t, i, I] = u.length === 1 ? Au(u[0], e) : Nu(u), o = (g + i) / 2, E = (t + I) / 2, Q = u.length === 1 ? u[0].angle : 0;
  switch ([C, B] = EA(U(C, B), U(o, E), -Q), A) {
    case "n":
      return EA(U(C - (g + i) / 2, B - t), U(0, 0), Q);
    case "s":
      return EA(U(C - (g + i) / 2, B - I), U(0, 0), Q);
    case "w":
      return EA(U(C - g, B - (t + I) / 2), U(0, 0), Q);
    case "e":
      return EA(U(C - i, B - (t + I) / 2), U(0, 0), Q);
    case "nw":
      return EA(U(C - g, B - t), U(0, 0), Q);
    case "ne":
      return EA(U(C - i, B - t), U(0, 0), Q);
    case "sw":
      return EA(U(C - g, B - I), U(0, 0), Q);
    case "se":
      return EA(U(C - i, B - I), U(0, 0), Q);
    default:
      return [0, 0];
  }
}, edA = (A, u) => {
  let [, [e, C]] = u.points;
  return A === "nw" && (e < 0 || C < 0) || A === "ne" && e >= 0 || A === "sw" && e <= 0 || A === "se" && (e > 0 || C > 0) ? "end" : "origin";
}, CdA = (A, u, e) => {
  if (e) return "center";
  if (u) switch (A) {
    case "n":
      return "south-side";
    case "e":
      return "west-side";
    case "s":
      return "north-side";
    case "w":
      return "east-side";
    case "ne":
      return "bottom-left";
    case "nw":
      return "bottom-right";
    case "se":
      return "top-left";
    case "sw":
      return "top-right";
  }
  return ["e", "se", "s"].includes(A) ? "top-left" : ["n", "nw", "w"].includes(A) ? "bottom-right" : A === "ne" ? "bottom-left" : "top-right";
}, BdA = (A, u, e, C, B, g, t, i, I) => {
  let o = CdA(t, i, I), [E, Q] = A;
  switch (o) {
    case "top-left":
      return { x: E + (u - C) / 2 + (C - u) / 2 * Math.cos(g) + (e - B) / 2 * Math.sin(g), y: Q + (e - B) / 2 + (C - u) / 2 * Math.sin(g) + (B - e) / 2 * Math.cos(g) };
    case "top-right":
      return { x: E + (u - C) / 2 * (Math.cos(g) + 1) + (e - B) / 2 * Math.sin(g), y: Q + (e - B) / 2 + (u - C) / 2 * Math.sin(g) + (B - e) / 2 * Math.cos(g) };
    case "bottom-left":
      return { x: E + (u - C) / 2 * (1 - Math.cos(g)) + (B - e) / 2 * Math.sin(g), y: Q + (e - B) / 2 * (Math.cos(g) + 1) + (C - u) / 2 * Math.sin(g) };
    case "bottom-right":
      return { x: E + (u - C) / 2 * (Math.cos(g) + 1) + (B - e) / 2 * Math.sin(g), y: Q + (e - B) / 2 * (Math.cos(g) + 1) + (u - C) / 2 * Math.sin(g) };
    case "center":
      return { x: E - (C - u) / 2, y: Q - (B - e) / 2 };
    case "east-side":
      return { x: E + (u - C) / 2 * (Math.cos(g) + 1), y: Q + (u - C) / 2 * Math.sin(g) + (e - B) / 2 };
    case "west-side":
      return { x: E + (u - C) / 2 * (1 - Math.cos(g)), y: Q + (C - u) / 2 * Math.sin(g) + (e - B) / 2 };
    case "north-side":
      return { x: E + (u - C) / 2 + (e - B) / 2 * Math.sin(g), y: Q + (B - e) / 2 * (Math.cos(g) - 1) };
    case "south-side":
      return { x: E + (u - C) / 2 + (B - e) / 2 * Math.sin(g), y: Q + (e - B) / 2 * (Math.cos(g) + 1) };
  }
}, $Q = (A, u, e, C, B, g, t, { shouldInformMutation: i = !0, shouldMaintainAspectRatio: I = !1, shouldResizeFromCenter: o = !1 } = {}) => {
  let E = {}, Q = gu(e, B);
  if (Q) {
    let D = g.get(Q.id);
    if (D && (E = { fontSize: D.fontSize }), I) {
      let h = { ...e, width: A }, F = g9(Q, B, zg(h, Q));
      if (F === null) return;
      E = { fontSize: F.size };
    } else {
      let h = H8(vu(Q), Q.lineHeight), F = K8(Q.fontSize, Q.lineHeight);
      A = Math.max(A, h), u = Math.max(u, F);
    }
  }
  let s = B9(C, A, u, !0), l = U(C.x, C.y);
  if ($A(C)) {
    let [D, h] = hB(C, g);
    l = U(D, h);
  }
  let c = BdA(l, C.width, C.height, A, u, C.angle, t, I, o);
  if ($A(C) && s.points) {
    let D = C.x - l[0], h = C.y - l[1];
    c.x += D, c.y += h;
    let F = s.points[0][0], m = s.points[0][1];
    c.x += F, c.y += m, s.points = s.points.map((p) => U(p[0] - F, p[1] - m));
  }
  if (A < 0 && (c.x = c.x + A), u < 0 && (c.y = c.y + u), "scale" in e && "scale" in C && nA(e, { scale: [(Math.sign(A) || C.scale[0]) * C.scale[0], (Math.sign(u) || C.scale[1]) * C.scale[1]] }), Eu(e) && Q && I) {
    let D = A / e.width * Q.fontSize;
    if (D < $1) return;
    E.fontSize = D;
  }
  if (A !== 0 && u !== 0 && Number.isFinite(c.x) && Number.isFinite(c.y)) {
    let D = { ...c, width: Math.abs(A), height: Math.abs(u), ...s };
    nA(e, D, i), Ve(e, B, { newSize: { width: A, height: u } }), Q && E != null && nA(Q, { fontSize: E.fontSize }), Dn(e, B, t, I);
  }
}, gdA = (A, u, e, C, B, g, t, { shouldMaintainAspectRatio: i = !1, shouldResizeFromCenter: I = !1 } = {}) => {
  let [o, E, Q, s] = ei(u, u.width, u.height, !0), l = U(o, E), c = U(Q, s), D = rn(l, c), h = EA(U(g, t), D, -u.angle), [F, m, p, k] = ei(A, A.width, A.height, !0), b = p - F, f = k - m, L = c[0] - l[0], N = c[1] - l[1], M = L / b, v = N / f;
  B.includes("e") && (M = (h[0] - l[0]) / b), B.includes("s") && (v = (h[1] - l[1]) / f), B.includes("w") && (M = (c[0] - h[0]) / b), B.includes("n") && (v = (c[1] - h[1]) / f);
  let K = A.width * M, q = A.height * v;
  if (I && (K = 2 * K - u.width, q = 2 * q - u.height), i) {
    let j = Math.abs(K) / u.width, uA = Math.abs(q) / u.height;
    if (B.length === 1 && (q *= j, K *= uA), B.length === 2) {
      let O = Math.max(j, uA);
      K = u.width * O * Math.sign(K), q = u.height * O * Math.sign(q);
    }
  }
  return { nextWidth: K, nextHeight: q };
}, tdA = (A, u, e, C, B, g, { shouldMaintainAspectRatio: t = !1, shouldResizeFromCenter: i = !1 } = {}) => {
  let I = A.map((j) => u.get(j.id)), o = I.reduce((j, uA) => {
    if (!$A(uA)) return j;
    let O = Tg(uA);
    if (!O) return j;
    let $ = u.get(O) ?? null;
    return Xu($) ? [...j, { ...$, ...LA.getBoundTextElementPosition(uA, $, e) }] : j;
  }, []), E = lB(I.map((j) => j).concat(o)), { minX: Q, minY: s, maxX: l, maxY: c, midX: D, midY: h } = E, F = l - Q, m = c - s, p = { ne: [Q, c], se: [Q, s], sw: [l, s], nw: [l, c], e: [Q, s + m / 2], w: [l, s + m / 2], n: [Q + F / 2, c], s: [Q + F / 2, s] }, [k, b] = i ? [D, h] : p[C], f = i ? 2 : 1, L = Math.max(Math.abs(B - k) / F || 0, Math.abs(g - b) / m || 0) * f, N = C.includes("e") || C.includes("w") ? Math.abs(B - k) * f : F, M = C.includes("n") || C.includes("s") ? Math.abs(g - b) * f : m;
  t && (N = F * L * Math.sign(B - k), M = m * L * Math.sign(g - b));
  let v = { ne: [B < k, g > b], se: [B < k, g < b], sw: [B > k, g < b], nw: [B > k, g > b], e: [B < k, !1], w: [B > k, !1], n: [!1, g > b], s: [!1, g < b] }, [K, q] = v[C].map((j) => j);
  return { originalBoundingBox: E, nextWidth: N, nextHeight: M, flipByX: K, flipByY: q };
}, Xy = (A, u, e, C, B, { shouldMaintainAspectRatio: g = !1, shouldResizeFromCenter: t = !1, flipByX: i = !1, flipByY: I = !1, nextHeight: o, nextWidth: E, originalBoundingBox: Q } = {}) => {
  if (E === void 0 && o === void 0 && i === void 0 && I === void 0 || o === 0 || E === 0) return;
  B || (B = u);
  let s = A.reduce((f, L) => {
    let N = B.get(L.id);
    return N && f.push({ orig: N, latest: L }), f;
  }, []), l;
  if (Q) l = Q;
  else {
    let f = s.reduce((L, { orig: N }) => {
      if (!$A(N)) return L;
      let M = Tg(N);
      if (!M) return L;
      let v = B.get(M) ?? null;
      return Xu(v) ? [...L, { ...v, ...LA.getBoundTextElementPosition(N, v, u) }] : L;
    }, []);
    l = lB(s.map(({ orig: L }) => L).concat(f));
  }
  let { minX: c, minY: D, maxX: h, maxY: F, midX: m, midY: p } = l, k = h - c, b = F - D;
  if (E === void 0 && o === void 0 && (E = k, o = b), g && (E === void 0 ? E = o * (k / b) : o === void 0 ? o = E * (b / k) : Math.abs(E / o - k / b) > 1e-3 && (E = o * (k / b))), E && o) {
    let f = e.includes("e") || e.includes("w") ? Math.abs(E) / k : 1, L = e.includes("n") || e.includes("s") ? Math.abs(o) / b : 1, N;
    e.length === 1 ? N = e.includes("e") || e.includes("w") ? f : L : N = Math.max(Math.abs(E) / k || 0, Math.abs(o) / b || 0);
    let M = { ne: [c, F], se: [c, D], sw: [h, D], nw: [h, F], e: [c, D + b / 2], w: [h, D + b / 2], n: [c + k / 2, F], s: [c + k / 2, D] }, [v, K] = t ? [m, p] : M[e], q = g || s.some((X) => X.latest.angle !== 0 || UA(X.latest) || oI(X.latest));
    q && (f = N, L = N);
    let [j, uA] = [i ? -1 : 1, I ? -1 : 1], O = [];
    for (let { orig: X, latest: P } of s) {
      if (UA(X) && Xu(X)) continue;
      let _ = X.width * f, CA = X.height * L, T = nl(X.angle * j * uA), gA = $A(X) || RC(X), GA = X.x - v, fA = X.y - K, qA = i && !gA ? _ : 0, JA = I && !gA ? CA : 0, mA = v + j * (GA * f + qA), FA = K + uA * (fA * L + JA), TA = B9(X, _ * j, CA * uA, !1), WA = { x: mA, y: FA, width: _, height: CA, angle: T, ...TA };
      if (xA(X) && (X.startBinding && (WA.startBinding = { ...X.startBinding, fixedPoint: [i ? -X.startBinding.fixedPoint[0] + 1 : X.startBinding.fixedPoint[0], I ? -X.startBinding.fixedPoint[1] + 1 : X.startBinding.fixedPoint[1]] }), X.endBinding && (WA.endBinding = { ...X.endBinding, fixedPoint: [i ? -X.endBinding.fixedPoint[0] + 1 : X.endBinding.fixedPoint[0], I ? -X.endBinding.fixedPoint[1] + 1 : X.endBinding.fixedPoint[1]] }), X.fixedSegments && TA.points && (WA.fixedSegments = X.fixedSegments.map((_u) => ({ ..._u, start: TA.points[_u.index - 1], end: TA.points[_u.index] })))), bu(X) && (WA.scale = [X.scale[0] * j, X.scale[1] * uA]), UA(X)) {
        let _u = g9(X, u, _);
        if (!_u) return;
        WA.fontSize = _u.size;
      }
      let ru = B.get(Tg(X) ?? "");
      if (ru) if (q) {
        let _u = ru.fontSize * N;
        if (_u < $1) return;
        WA.boundTextFontSize = _u;
      } else WA.boundTextFontSize = ru.fontSize;
      O.push({ element: P, update: WA });
    }
    let $ = O.map(({ element: X }) => X);
    for (let { element: X, update: { boundTextFontSize: P, ..._ } } of O) {
      let { width: CA, height: T, angle: gA } = _;
      nA(X, _, !1, { isDragging: !0 }), Ve(X, u, { simultaneouslyUpdated: $, newSize: { width: CA, height: T } });
      let GA = gu(X, u);
      GA && P && (nA(GA, { fontSize: P, angle: $A(X) ? void 0 : gA }, !1), Dn(X, u, e, !0));
    }
    C.triggerUpdate();
  }
}, idA = (A, u, e, C, B, g) => {
  if (u.length === 1 && xA(u[0]) && (u[0].startBinding || u[0].endBinding)) return;
  let t = u.filter((Q) => {
    if (xA(Q) && Q.startBinding && Q.endBinding) {
      let s = u.find((c) => c.id === Q.startBinding?.elementId), l = u.find((c) => c.id === Q.endBinding?.elementId);
      return s && l;
    }
    return !0;
  }), i = new Set(t), I = t.filter((Q) => OA(Q)).map((Q) => Q.id);
  if (I.length > 0) for (let Q of C.getNonDeletedElements()) Q.frameId !== null && I.includes(Q.frameId) && i.add(Q);
  let o = Nu(Array.from(i).map((Q) => A.originalElements.get(Q.id) ?? Q)), E = EdA(o, e, B, g);
  i.forEach((Q) => {
    if (X5(A, Q, E), !Eu(Q)) {
      let s = gu(Q, C.getNonDeletedElementsMap());
      s && X5(A, s, E), Ve(Q, C.getElementsMapIncludingDeleted(), { simultaneouslyUpdated: Array.from(i) });
    }
  });
}, EdA = (A, u, e, C) => {
  let [B, g] = A, t = B + u.x + e.x, i = g + u.y + e.y;
  if (e.x === 0 || e.y === 0) {
    let [I, o] = f0(B + u.x, g + u.y, C);
    e.x === 0 && (t = I), e.y === 0 && (i = o);
  }
  return { x: t - B, y: i - g };
}, X5 = (A, u, e) => {
  let C = A.originalElements.get(u.id) ?? u, B = C.x + e.x, g = C.y + e.y;
  nA(u, { x: B, y: g });
}, adA = (A, u, e) => {
  let [C, B] = Nu(A);
  return [u - C, e - B];
}, _5 = ({ newElement: A, elementType: u, originX: e, originY: C, x: B, y: g, width: t, height: i, shouldMaintainAspectRatio: I, shouldResizeFromCenter: o, zoom: E, widthAspectRatio: Q = null, originOffset: s = null, informMutation: l = !0 }) => {
  I && A.type !== "selection" && (Q ? i = t / Q : (Math.abs(g - C) > Math.abs(B - e) ? { width: t, height: i } = j5(u, i, B < e ? -t : t) : { width: t, height: i } = j5(u, t, g < C ? -i : i), i < 0 && (i = -i)));
  let c = B < e ? e - t : e, D = g < C ? C - i : C;
  o && (t += t, i += i, c = e - t / 2, D = C - i / 2);
  let h = null;
  if (UA(A)) {
    i = A.height;
    let F = E2(vu({ fontSize: A.fontSize, fontFamily: A.fontFamily }), A.lineHeight);
    t = Math.max(t, F), Math.abs(B - e) > mEA / E && (h = { autoResize: !1 }), D = C, o && (c = e - t / 2);
  }
  if (t !== 0 && i !== 0) {
    let F = null;
    bu(A) && (F = { initialWidth: t, initialHeight: i }), nA(A, { x: c + (s?.x ?? 0), y: D + (s?.y ?? 0), width: t, height: i, ...h, ...F }, l);
  }
}, t9 = (A, u) => !!(!A.viewModeEnabled && A.openDialog?.name !== "elementLinkSelector" && (A.activeTool.type !== "custom" && (A.editingTextElement || A.activeTool.type !== "selection" && A.activeTool.type !== "eraser" && A.activeTool.type !== "hand" && A.activeTool.type !== "laser") || iu(u, A).length)), h8A = (A) => A.reduce((u, e) => u + e.version, 0), IdA = (A) => {
  let u = 5381;
  for (let e = 0; e < A.length; e++) u = (u << 5) + u + A[e].versionNonce;
  return u >>> 0;
}, _y = (A) => {
  let u = 5381;
  for (let e = 0; e < A.length; e++) {
    let C = A.charCodeAt(e);
    u = (u << 5) + u + C;
  }
  return u >>> 0;
}, odA = (A) => A.filter((u) => !u.isDeleted && !lI(u)), Wu = (A) => A.filter((u) => !u.isDeleted), n1 = (A) => !A.isDeleted, $y = (A) => Wu(A).map((u) => i2(u.type) ? { ...u, lastCommittedPoint: null } : u), QdA = (A) => $y(A), Ab = (A) => $y(A), ub = async (A) => {
  let u;
  if (A.type === zA.png) try {
    return await (await Promise.resolve().then(() => fL)).decodePngMetadata(A);
  } catch (e) {
    throw e.message === "INVALID" ? new QE("Image doesn't contain scene", "IMAGE_NOT_CONTAINS_SCENE_DATA") : new QE("Error: cannot restore image");
  }
  else if ("text" in Blob ? u = await A.text() : u = await new Promise((e) => {
    let C = new FileReader();
    C.readAsText(A, "utf8"), C.onloadend = () => {
      C.readyState === FileReader.DONE && e(C.result);
    };
  }), A.type === zA.svg) try {
    return T3A({ svg: u });
  } catch (e) {
    throw e.message === "INVALID" ? new QE("Image doesn't contain scene", "IMAGE_NOT_CONTAINS_SCENE_DATA") : new QE("Error: cannot restore image");
  }
  return u;
}, eb = (A) => A && A.name.match(/\.(json|excalidraw|png|svg)$/)?.[1] || null, ndA = (A) => A === "png" || A === "svg", i9 = (A) => {
  let u = eb(A);
  return u === "png" || u === "svg";
}, Cb = (A) => !!A && Object.values(KQ).includes(A), FE = (A) => {
  let { type: u } = A || {};
  return Cb(u);
}, Bb = async (A, u, e, C) => {
  let B = await ub(A), g;
  try {
    try {
      g = JSON.parse(B);
    } catch (t) {
      throw FE(A) ? new QE("Image doesn't contain scene", "IMAGE_NOT_CONTAINS_SCENE_DATA") : t;
    }
    if (v3A(g)) return { type: zA.excalidraw, data: b4({ elements: Ab(g.elements || []), appState: { theme: u?.theme, fileHandle: C || A.handle || null, ...w8(g.appState || {}), ...u ? PQ(g.elements || [], u) : {} }, files: g.files }, u, e, { repairBindings: !0, refreshDimensions: !1 }) };
    if (sy(g)) return { type: zA.excalidrawlib, data: g };
    throw new Error("Error: invalid file");
  } catch (t) {
    throw t instanceof QE ? t : new Error("Error: invalid file");
  }
}, gb = async (A, u, e, C) => {
  let B = await Bb(A, u, e, C);
  if (B.type !== zA.excalidraw) throw new Error("Error: invalid file");
  return B.data;
}, tb = (A, u = "unpublished") => {
  let e = JSON.parse(A);
  if (!sy(e)) throw new Error("Invalid library");
  let C = e.libraryItems || e.library;
  return U4(C, u);
}, rdA = async (A, u = "unpublished") => tb(await ub(A), u), An = async (A) => new Promise(async (u, e) => {
  try {
    sn(A) && (A = await A), A.toBlob((C) => {
      if (!C) return e(new RoA("Error: Canvas too big", "CANVAS_POSSIBLY_TOO_BIG"));
      u(C);
    });
  } catch (C) {
    e(C);
  }
}), sdA = async (A) => {
  try {
    let u = await window.crypto.subtle.digest("SHA-1", await rE(A));
    return haA(new Uint8Array(u));
  } catch (u) {
    return console.error(u), Cl(40);
  }
}, $5 = async (A) => new Promise((u, e) => {
  let C = new FileReader();
  C.onload = () => {
    let B = C.result;
    u(B);
  }, C.onerror = (B) => e(B), C.readAsDataURL(A);
}), ldA = (A, u) => `data:${u};base64,${ab(Ml(A), !0)}`, cdA = (A, u = "") => {
  let e = A.indexOf(","), C = atob(A.slice(e + 1)), B = A.slice(0, e).split(":")[1].split(";")[0], g = new ArrayBuffer(C.length), t = new Uint8Array(g);
  for (let i = 0; i < C.length; i++) t[i] = C.charCodeAt(i);
  return new File([g], u, { type: B });
}, ddA = (A) => Ib(A.slice(A.indexOf(",") + 1)), r1 = async (A, u) => {
  if (A.type === zA.svg) return A;
  let [e, C] = await Promise.all([import("./chunk-BlwB2yOK.js").then((g) => g.p).then((g) => g.default), import("./chunk-BlwB2yOK.js").then((g) => g.i).then((g) => g.default)]), B = C({ pica: e({ features: ["js", "wasm"] }) });
  if (u.outputType) {
    let { outputType: g } = u;
    B._create_blob = function(t) {
      return this.pica.toBlob(t.out_canvas, g, 0.8).then((i) => (t.out_blob = i, t));
    };
  }
  if (!FE(A)) throw new Error("Error: unsupported file type", { cause: "UNSUPPORTED" });
  return new File([await B.toBlob(A, { max: u.maxWidthOrHeight, alpha: !0 })], A.name, { type: u.outputType || A.type });
}, Ap = (A, u = "") => new File([new TextEncoder().encode(A)], u, { type: zA.svg }), DdA = async (A, u = "") => {
  let e;
  try {
    e = await fetch(A);
  } catch {
    throw new Error("Error: failed to fetch image", { cause: "FETCH_ERROR" });
  }
  if (!e.ok) throw new Error("Error: failed to fetch image", { cause: "FETCH_ERROR" });
  let C = await e.blob();
  if (C.type && FE(C)) {
    let B = u || C.name || "";
    return new File([C], B, { type: C.type });
  }
  throw new Error("Error: unsupported file type", { cause: "UNSUPPORTED" });
}, hdA = async (A) => {
  let u = A.dataTransfer.files.item(0), e = await wdA(A);
  return { file: u ? await E9(u) : null, fileHandle: e };
}, wdA = async (A) => {
  if (_l) try {
    return await A.dataTransfer.items[0].getAsFileSystemHandle() || null;
  } catch (u) {
    return console.warn(u.name, u.message), null;
  }
  return null;
}, up = (A) => {
  let u = null, e = `${[...new Uint8Array(A).slice(0, 8)].join(" ")} `, C = { png: "137 80 78 71 13 10 26 10 ", jpg: "255 216 255 ", gif: "71 73 70 56 57 97 " };
  return e === C.png ? u = zA.png : e.startsWith(C.jpg) ? u = zA.jpg : e.startsWith(C.gif) && (u = zA.gif), u;
}, tQ = (A, u, e) => new File([A], e || "", { type: u }), E9 = async (A) => {
  if (A.type) {
    if (FE(A)) {
      let u = await rE(A), e = up(u);
      e && e !== A.type && (A = tQ(u, e, A.name));
    }
  } else if (A?.name?.endsWith(".excalidrawlib")) A = tQ(await rE(A), zA.excalidrawlib, A.name);
  else if (A?.name?.endsWith(".excalidraw")) A = tQ(await rE(A), zA.excalidraw, A.name);
  else {
    let u = await rE(A), e = up(u);
    e && (A = tQ(u, e, A.name));
  }
  return A;
}, rE = (A) => "arrayBuffer" in A ? A.arrayBuffer() : new Promise((u, e) => {
  let C = new FileReader();
  C.onload = (B) => {
    if (!B.target?.result) return e(new Error("Couldn't convert blob to ArrayBuffer"));
    u(B.target.result);
  }, C.readAsArrayBuffer(A);
}), Ml = (A) => {
  let u = typeof A == "string" ? new TextEncoder().encode(A) : A instanceof Uint8Array ? A : new Uint8Array(A), e = "";
  for (let C of u) e += String.fromCharCode(C);
  return e;
}, ib = (A) => {
  let u = new ArrayBuffer(A.length), e = new Uint8Array(u);
  for (let C = 0, B = A.length; C < B; C++) e[C] = A.charCodeAt(C);
  return u;
}, Eb = (A) => new TextDecoder("utf-8").decode(ib(A)), ab = (A, u = !1) => u ? window.btoa(A) : window.btoa(Ml(A)), Ib = (A, u = !1) => u ? window.atob(A) : Eb(window.atob(A)), ob = ({ text: A, compress: u }) => {
  let e;
  if (u !== !1) try {
    e = Ml(PtA(A));
  } catch (C) {
    console.error("encode: cannot deflate", C);
  }
  return { version: "1", encoding: "bstring", compressed: !!e, encoded: e || Ml(A) };
}, Qb = (A) => {
  let u;
  switch (A.encoding) {
    case "bstring":
      u = A.compressed ? A.encoded : Eb(A.encoded);
      break;
    default:
      throw new Error(`decode: unknown encoding "${A.encoding}"`);
  }
  return A.compressed ? OtA(new Uint8Array(ib(u)), { to: "string" }) : u;
}, nb = async (A) => {
  let u = Q7(new Uint8Array(await rE(A))).find((e) => e.name === "tEXt");
  return u ? n7.decode(u.data) : null;
}, FdA = async ({ blob: A, metadata: u }) => {
  let e = Q7(new Uint8Array(await rE(A))), C = n7.encode(zA.excalidraw, JSON.stringify(ob({ text: u, compress: !0 })));
  return e.splice(-1, 0, C), new Blob([lBA(e)], { type: zA.png });
}, pdA = async (A) => {
  let u = await nb(A);
  if (u?.keyword === zA.excalidraw) try {
    let e = JSON.parse(u.text);
    if (!("encoded" in e)) {
      if ("type" in e && e.type === LC.excalidraw) return u.text;
      throw new Error("FAILED");
    }
    return Qb(e);
  } catch (e) {
    throw console.error(e), new Error("FAILED");
  }
  throw new Error("INVALID");
}, rb = { paste: "Paste", pasteAsPlaintext: "Paste as plaintext", pasteCharts: "Paste charts", selectAll: "Select all", multiSelect: "Add element to selection", moveCanvas: "Move canvas", cut: "Cut", copy: "Copy", copyAsPng: "Copy to clipboard as PNG", copyAsSvg: "Copy to clipboard as SVG", copyText: "Copy to clipboard as text", copySource: "Copy source to clipboard", convertToCode: "Convert to code", bringForward: "Bring forward", sendToBack: "Send to back", bringToFront: "Bring to front", sendBackward: "Send backward", delete: "Delete", copyStyles: "Copy styles", pasteStyles: "Paste styles", stroke: "Stroke", changeStroke: "Change stroke color", background: "Background", changeBackground: "Change background color", fill: "Fill", strokeWidth: "Stroke width", strokeStyle: "Stroke style", strokeStyle_solid: "Solid", strokeStyle_dashed: "Dashed", strokeStyle_dotted: "Dotted", sloppiness: "Sloppiness", opacity: "Opacity", textAlign: "Text align", edges: "Edges", sharp: "Sharp", round: "Round", arrowheads: "Arrowheads", arrowhead_none: "None", arrowhead_arrow: "Arrow", arrowhead_bar: "Bar", arrowhead_circle: "Circle", arrowhead_circle_outline: "Circle (outline)", arrowhead_triangle: "Triangle", arrowhead_triangle_outline: "Triangle (outline)", arrowhead_diamond: "Diamond", arrowhead_diamond_outline: "Diamond (outline)", arrowhead_crowfoot_many: "Crow's foot (many)", arrowhead_crowfoot_one: "Crow's foot (one)", arrowhead_crowfoot_one_or_many: "Crow's foot (one or many)", more_options: "More options", arrowtypes: "Arrow type", arrowtype_sharp: "Sharp arrow", arrowtype_round: "Curved arrow", arrowtype_elbowed: "Elbow arrow", fontSize: "Font size", fontFamily: "Font family", addWatermark: 'Add "Made with Excalidraw"', handDrawn: "Hand-drawn", normal: "Normal", code: "Code", small: "Small", medium: "Medium", large: "Large", veryLarge: "Very large", solid: "Solid", hachure: "Hachure", zigzag: "Zigzag", crossHatch: "Cross-hatch", thin: "Thin", bold: "Bold", left: "Left", center: "Center", right: "Right", extraBold: "Extra bold", architect: "Architect", artist: "Artist", cartoonist: "Cartoonist", fileTitle: "File name", colorPicker: "Color picker", canvasColors: "Used on canvas", canvasBackground: "Canvas background", drawingCanvas: "Drawing canvas", clearCanvas: "Clear canvas", layers: "Layers", actions: "Actions", language: "Language", liveCollaboration: "Live collaboration...", duplicateSelection: "Duplicate", untitled: "Untitled", name: "Name", yourName: "Your name", madeWithExcalidraw: "Made with Excalidraw", group: "Group selection", ungroup: "Ungroup selection", collaborators: "Collaborators", toggleGrid: "Toggle grid", addToLibrary: "Add to library", removeFromLibrary: "Remove from library", libraryLoadingMessage: "Loading library…", libraries: "Browse libraries", loadingScene: "Loading scene…", loadScene: "Load scene from file", align: "Align", alignTop: "Align top", alignBottom: "Align bottom", alignLeft: "Align left", alignRight: "Align right", centerVertically: "Center vertically", centerHorizontally: "Center horizontally", distributeHorizontally: "Distribute horizontally", distributeVertically: "Distribute vertically", flipHorizontal: "Flip horizontal", flipVertical: "Flip vertical", viewMode: "View mode", share: "Share", showStroke: "Show stroke color picker", showBackground: "Show background color picker", showFonts: "Show font picker", toggleTheme: "Toggle light/dark theme", theme: "Theme", personalLib: "Personal Library", excalidrawLib: "Excalidraw Library", decreaseFontSize: "Decrease font size", increaseFontSize: "Increase font size", unbindText: "Unbind text", bindText: "Bind text to the container", createContainerFromText: "Wrap text in a container", link: { edit: "Edit link", editEmbed: "Edit embeddable link", create: "Add link", label: "Link", labelEmbed: "Link & embed", empty: "No link is set", hint: "Type or paste your link here", goToElement: "Go to target element" }, lineEditor: { edit: "Edit line", editArrow: "Edit arrow" }, elementLock: { lock: "Lock", unlock: "Unlock", lockAll: "Lock all", unlockAll: "Unlock all" }, statusPublished: "Published", sidebarLock: "Keep sidebar open", selectAllElementsInFrame: "Select all elements in frame", removeAllElementsFromFrame: "Remove all elements from frame", eyeDropper: "Pick color from canvas", textToDiagram: "Text to diagram", prompt: "Prompt", followUs: "Follow us", discordChat: "Discord chat", zoomToFitViewport: "Zoom to fit in viewport", zoomToFitSelection: "Zoom to fit selection", zoomToFit: "Zoom to fit all elements", installPWA: "Install Excalidraw locally (PWA)", autoResize: "Enable text auto-resizing", imageCropping: "Image cropping", unCroppedDimension: "Uncropped dimension", copyElementLink: "Copy link to object", linkToElement: "Link to object", wrapSelectionInFrame: "Wrap selection in frame" }, sb = { title: "Link to object", desc: "Click on a shape on canvas or paste a link.", notFound: "Linked object wasn't found on canvas." }, lb = { noItems: "No items added yet...", hint_emptyLibrary: "Select an item on canvas to add it here, or install a library from the public repository, below.", hint_emptyPrivateLibrary: "Select an item on canvas to add it here." }, cb = { title: "Find on canvas", noMatch: "No matches found...", singleResult: "result", multipleResults: "results", placeholder: "Find text on canvas..." }, db = { clearReset: "Reset the canvas", exportJSON: "Export to file", exportImage: "Export image...", export: "Save to...", copyToClipboard: "Copy to clipboard", copyLink: "Copy link", save: "Save to current file", saveAs: "Save as", load: "Open", getShareableLink: "Get shareable link", close: "Close", selectLanguage: "Select language", scrollBackToContent: "Scroll back to content", zoomIn: "Zoom in", zoomOut: "Zoom out", resetZoom: "Reset zoom", menu: "Menu", done: "Done", edit: "Edit", undo: "Undo", redo: "Redo", resetLibrary: "Reset library", createNewRoom: "Create new room", fullScreen: "Full screen", darkMode: "Dark mode", lightMode: "Light mode", systemMode: "System mode", zenMode: "Zen mode", objectsSnapMode: "Snap to objects", exitZenMode: "Exit zen mode", cancel: "Cancel", clear: "Clear", remove: "Remove", embed: "Toggle embedding", publishLibrary: "Publish", submit: "Submit", confirm: "Confirm", embeddableInteractionButton: "Click to interact" }, Db = { clearReset: "This will clear the whole canvas. Are you sure?", couldNotCreateShareableLink: "Couldn't create shareable link.", couldNotCreateShareableLinkTooBig: "Couldn't create shareable link: the scene is too big", couldNotLoadInvalidFile: "Couldn't load invalid file", importBackendFailed: "Importing from backend failed.", cannotExportEmptyCanvas: "Cannot export empty canvas.", couldNotCopyToClipboard: "Couldn't copy to clipboard.", decryptFailed: "Couldn't decrypt data.", uploadedSecurly: "The upload has been secured with end-to-end encryption, which means that Excalidraw server and third parties can't read the content.", loadSceneOverridePrompt: "Loading external drawing will replace your existing content. Do you wish to continue?", collabStopOverridePrompt: `Stopping the session will overwrite your previous, locally stored drawing. Are you sure?

(If you want to keep your local drawing, simply close the browser tab instead.)`, errorAddingToLibrary: "Couldn't add item to the library", errorRemovingFromLibrary: "Couldn't remove item from the library", confirmAddLibrary: "This will add {{numShapes}} shape(s) to your library. Are you sure?", imageDoesNotContainScene: "This image does not seem to contain any scene data. Have you enabled scene embedding during export?", cannotRestoreFromImage: "Scene couldn't be restored from this image file", invalidSceneUrl: "Couldn't import scene from the supplied URL. It's either malformed, or doesn't contain valid Excalidraw JSON data.", resetLibrary: "This will clear your library. Are you sure?", removeItemsFromsLibrary: "Delete {{count}} item(s) from library?", invalidEncryptionKey: "Encryption key must be of 22 characters. Live collaboration is disabled.", collabOfflineWarning: `No internet connection available.
Your changes will not be saved!` }, hb = { unsupportedFileType: "Unsupported file type.", imageInsertError: "Couldn't insert image. Try again later...", fileTooBig: "File is too big. Maximum allowed size is {{maxSize}}.", svgImageInsertError: "Couldn't insert SVG image. The SVG markup looks invalid.", failedToFetchImage: "Failed to fetch image.", cannotResolveCollabServer: "Couldn't connect to the collab server. Please reload the page and try again.", importLibraryError: "Couldn't load library", saveLibraryError: "Couldn't save library to storage. Please save your library to a file locally to make sure you don't lose changes.", collabSaveFailed: "Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.", collabSaveFailed_sizeExceeded: "Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.", imageToolNotSupported: "Images are disabled.", brave_measure_text_error: { line1: "Looks like you are using Brave browser with the <bold>Aggressively Block Fingerprinting</bold> setting enabled.", line2: "This could result in breaking the <bold>Text Elements</bold> in your drawings.", line3: "We strongly recommend disabling this setting. You can follow <link>these steps</link> on how to do so.", line4: "If disabling this setting doesn't fix the display of text elements, please open an <issueLink>issue</issueLink> on our GitHub, or write us on <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Embeddable elements cannot be added to the library.", iframe: "IFrame elements cannot be added to the library.", image: "Support for adding images to the library coming soon!" }, asyncPasteFailedOnRead: "Couldn't paste (couldn't read from system clipboard).", asyncPasteFailedOnParse: "Couldn't paste.", copyToSystemClipboardFailed: "Couldn't copy to clipboard." }, wb = { selection: "Selection", image: "Insert image", rectangle: "Rectangle", diamond: "Diamond", ellipse: "Ellipse", arrow: "Arrow", line: "Line", freedraw: "Draw", text: "Text", library: "Library", lock: "Keep selected tool active after drawing", penMode: "Pen mode - prevent touch", link: "Add / Update link for a selected shape", eraser: "Eraser", frame: "Frame tool", magicframe: "Wireframe to code", embeddable: "Web Embed", laser: "Laser pointer", hand: "Hand (panning tool)", extraTools: "More tools", mermaidToExcalidraw: "Mermaid to Excalidraw" }, Fb = { rectangle: "Rectangle", diamond: "Diamond", ellipse: "Ellipse", arrow: "Arrow", line: "Line", freedraw: "Freedraw", text: "Text", image: "Image", group: "Group", frame: "Frame", magicframe: "Wireframe to code", embeddable: "Web Embed", selection: "Selection", iframe: "IFrame" }, pb = { canvasActions: "Canvas actions", selectedShapeActions: "Selected shape actions", shapes: "Shapes" }, mb = { dismissSearch: "Escape to dismiss search", canvasPanning: "To move canvas, hold mouse wheel or spacebar while dragging, or use the hand tool", linearElement: "Click to start multiple points, drag for single line", arrowTool: "Click to start multiple points, drag for single line. Press {{arrowShortcut}} again to change arrow type.", freeDraw: "Click and drag, release when you're finished", text: "Tip: you can also add text by double-clicking anywhere with the selection tool", embeddable: "Click-drag to create a website embed", text_selected: "Double-click or press ENTER to edit text", text_editing: "Press Escape or CtrlOrCmd+ENTER to finish editing", linearElementMulti: "Click on last point or press Escape or Enter to finish", lockAngle: "You can constrain angle by holding SHIFT", resize: `You can constrain proportions by holding SHIFT while resizing,
hold ALT to resize from the center`, resizeImage: `You can resize freely by holding SHIFT,
hold ALT to resize from the center`, rotate: "You can constrain angles by holding SHIFT while rotating", lineEditor_info: "Hold CtrlOrCmd and Double-click or press CtrlOrCmd + Enter to edit points", lineEditor_pointSelected: `Press Delete to remove point(s),
CtrlOrCmd+D to duplicate, or drag to move`, lineEditor_nothingSelected: `Select a point to edit (hold SHIFT to select multiple),
or hold Alt and click to add new points`, placeImage: "Click to place the image, or click and drag to set its size manually", publishLibrary: "Publish your own library", bindTextToElement: "Press enter to add text", createFlowchart: "Hold CtrlOrCmd and Arrow key to create a flowchart", deepBoxSelect: "Hold CtrlOrCmd to deep select, and to prevent dragging", eraserRevert: "Hold Alt to revert the elements marked for deletion", firefox_clipboard_write: 'This feature can likely be enabled by setting the "dom.events.asyncClipboard.clipboardItem" flag to "true". To change the browser flags in Firefox, visit the "about:config" page.', disableSnapping: "Hold CtrlOrCmd to disable snapping", enterCropEditor: "Double click the image or press ENTER to crop the image", leaveCropEditor: "Click outside the image or press ENTER or ESCAPE to finish cropping" }, kb = { cannotShowPreview: "Cannot show preview", canvasTooBig: "The canvas may be too big.", canvasTooBigTip: "Tip: try moving the farthest elements a bit closer together." }, yb = { headingMain: "Encountered an error. Try <button>reloading the page</button>.", clearCanvasMessage: "If reloading doesn't work, try <button>clearing the canvas</button>.", clearCanvasCaveat: " This will result in loss of work ", trackedToSentry: "The error with identifier {{eventId}} was tracked on our system.", openIssueMessage: "We were very cautious not to include your scene information on the error. If your scene is not private, please consider following up on our <button>bug tracker</button>. Please include information below by copying and pasting into the GitHub issue.", sceneContent: "Scene content:" }, bb = { or: "Or" }, Ub = { desc_intro: "Invite people to collaborate on your drawing.", desc_privacy: "Don't worry, the session is end-to-end encrypted, and fully private. Not even our server can see what you draw.", button_startSession: "Start session", button_stopSession: "Stop session", desc_inProgressIntro: "Live-collaboration session is now in progress.", desc_shareLink: "Share this link with anyone you want to collaborate with:", desc_exitSession: "Stopping the session will disconnect you from the room, but you'll be able to continue working with the scene, locally. Note that this won't affect other people, and they'll still be able to collaborate on their version.", shareTitle: "Join a live collaboration session on Excalidraw" }, Gb = { title: "Error" }, fb = { disk_title: "Save to disk", disk_details: "Export the scene data to a file from which you can import later.", disk_button: "Save to file", link_title: "Shareable link", link_details: "Export as a read-only link.", link_button: "Export to Link", excalidrawplus_description: "Save the scene to your Excalidraw+ workspace.", excalidrawplus_button: "Export", excalidrawplus_exportError: "Couldn't export to Excalidraw+ at this moment..." }, Lb = { blog: "Read our blog", click: "click", deepSelect: "Deep select", deepBoxSelect: "Deep select within box, and prevent dragging", createFlowchart: "Create a flowchart from a generic element", navigateFlowchart: "Navigate a flowchart", curvedArrow: "Curved arrow", curvedLine: "Curved line", documentation: "Documentation", doubleClick: "double-click", drag: "drag", editor: "Editor", editLineArrowPoints: "Edit line/arrow points", editText: "Edit text / add label", github: "Found an issue? Submit", howto: "Follow our guides", or: "or", preventBinding: "Prevent arrow binding", tools: "Tools", shortcuts: "Keyboard shortcuts", textFinish: "Finish editing (text editor)", textNewLine: "Add new line (text editor)", title: "Help", view: "View", zoomToFit: "Zoom to fit all elements", zoomToSelection: "Zoom to selection", toggleElementLock: "Lock/unlock selection", movePageUpDown: "Move page up/down", movePageLeftRight: "Move page left/right", cropStart: "Crop image", cropFinish: "Finish image cropping" }, xb = { title: "Clear canvas" }, Sb = { title: "Publish library", itemName: "Item name", authorName: "Author name", githubUsername: "GitHub username", twitterUsername: "Twitter username", libraryName: "Library name", libraryDesc: "Library description", website: "Website", placeholder: { authorName: "Your name or username", libraryName: "Name of your library", libraryDesc: "Description of your library to help people understand its usage", githubHandle: "GitHub handle (optional), so you can edit the library once submitted for review", twitterHandle: "Twitter username (optional), so we know who to credit when promoting over Twitter", website: "Link to your personal website or elsewhere (optional)" }, errors: { required: "Required", website: "Enter a valid URL" }, noteDescription: "Submit your library to be included in the <link>public library repository</link> for other people to use in their drawings.", noteGuidelines: "The library needs to be manually approved first. Please read the <link>guidelines</link> before submitting. You will need a GitHub account to communicate and make changes if requested, but it is not strictly required.", noteLicense: "By submitting, you agree the library will be published under the <link>MIT License</link>, which in short means anyone can use them without restrictions.", noteItems: "Each library item must have its own name so it's filterable. The following library items will be included:", atleastOneLibItem: "Please select at least one library item to get started", republishWarning: "Note: some of the selected items are marked as already published/submitted. You should only resubmit items when updating an existing library or submission." }, Nb = { title: "Library submitted", content: "Thank you {{authorName}}. Your library has been submitted for review. You can track the status <link>here</link>" }, Rb = { resetLibrary: "Reset library", removeItemsFromLib: "Remove selected items from library" }, Mb = { header: "Export image", label: { withBackground: "Background", onlySelected: "Only selected", darkMode: "Dark mode", embedScene: "Embed scene", scale: "Scale", padding: "Padding" }, tooltip: { embedScene: `Scene data will be saved into the exported PNG/SVG file so that the scene can be restored from it.
Will increase exported file size.` }, title: { exportToPng: "Export to PNG", exportToSvg: "Export to SVG", copyPngToClipboard: "Copy PNG to clipboard" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copy to clipboard" } }, Yb = { tooltip: "Your drawings are end-to-end encrypted so Excalidraw's servers will never see them.", link: "Blog post on end-to-end encryption in Excalidraw" }, vb = { angle: "Angle", shapes: "Shapes", height: "Height", scene: "Scene", selected: "Selected", storage: "Storage", fullTitle: "Canvas & Shape properties", title: "Properties", generalStats: "General", elementProperties: "Shape properties", total: "Total", version: "Version", versionCopy: "Click to copy", versionNotAvailable: "Version not available", width: "Width" }, Hb = { addedToLibrary: "Added to library", copyStyles: "Copied styles.", copyToClipboard: "Copied to clipboard.", copyToClipboardAsPng: `Copied {{exportSelection}} to clipboard as PNG
({{exportColorScheme}})`, copyToClipboardAsSvg: `Copied {{exportSelection}} to clipboard as SVG
({{exportColorScheme}})`, fileSaved: "File saved.", fileSavedToFilename: "Saved to {filename}", canvas: "canvas", selection: "selection", pasteAsSingleElement: `Use {{shortcut}} to paste as a single element,
or paste into an existing text editor`, unableToEmbed: "Embedding this url is currently not allowed. Raise an issue on GitHub to request the url whitelisted", unrecognizedLinkFormat: "The link you embedded does not match the expected format. Please try to paste the 'embed' string provided by the source site", elementLinkCopied: "Link copied to clipboard" }, Kb = { transparent: "Transparent", black: "Black", white: "White", red: "Red", pink: "Pink", grape: "Grape", violet: "Violet", gray: "Gray", blue: "Blue", cyan: "Cyan", teal: "Teal", green: "Green", yellow: "Yellow", orange: "Orange", bronze: "Bronze" }, Jb = { app: { center_heading: "All your data is saved locally in your browser.", center_heading_plus: "Did you want to go to the Excalidraw+ instead?", menuHint: "Export, preferences, languages, ..." }, defaults: { menuHint: "Export, preferences, and more...", center_heading: "Diagrams. Made. Simple.", toolbarHint: "Pick a tool & Start drawing!", helpHint: "Shortcuts & help" } }, Zb = { mostUsedCustomColors: "Most used custom colors", colors: "Colors", shades: "Shades", hexCode: "Hex code", noShades: "No shades available for this color" }, qb = { action: { exportToImage: { title: "Export as image", button: "Export as image", description: "Export the scene data as an image from which you can import later." }, saveToDisk: { title: "Save to disk", button: "Save to disk", description: "Export the scene data to a file from which you can import later." }, excalidrawPlus: { title: "Excalidraw+", button: "Export to Excalidraw+", description: "Save the scene to your Excalidraw+ workspace." } }, modal: { loadFromFile: { title: "Load from file", button: "Load from file", description: "Loading from a file will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first using one of the options below." }, shareableLink: { title: "Load from link", button: "Replace my content", description: "Loading external drawing will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first by using one of the options below." } } }, Wb = { title: "Mermaid to Excalidraw", button: "Insert", description: "Currently only <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Sequence, </sequenceLink> and <classLink>Class </classLink>Diagrams are supported. The other types will be rendered as image in Excalidraw.", syntax: "Mermaid Syntax", preview: "Preview" }, jb = { placeholder: "Quick search" }, Tb = { badge: { old: "old" }, sceneFonts: "In this scene", availableFonts: "Available fonts", empty: "No fonts found" }, zb = { empty: "No users found", hint: { text: "Click on user to follow", followStatus: "You're currently following this user", inCall: "User is in a voice call", micMuted: "User's microphone is muted", isSpeaking: "User is speaking" } }, Pb = { title: "Command palette", shortcuts: { select: "Select", confirm: "Confirm", close: "Close" }, recents: "Recently used", search: { placeholder: "Search menus, commands, and discover hidden gems", noMatch: "No matching commands..." }, itemNotAvailable: "Command is not available...", shortcutHint: "For Command palette, use {{shortcut}}" }, a9 = { labels: rb, elementLink: sb, library: lb, search: cb, buttons: db, alerts: Db, errors: hb, toolBar: wb, element: Fb, headings: pb, hints: mb, canvasError: kb, errorSplash: yb, shareDialog: bb, roomDialog: Ub, errorDialog: Gb, exportDialog: fb, helpDialog: Lb, clearCanvasDialog: xb, publishDialog: Sb, publishSuccessDialog: Nb, confirmDialog: Rb, imageExportDialog: Mb, encrypted: Yb, stats: vb, toast: Hb, colors: Kb, welcomeScreen: Jb, colorPicker: Zb, overwriteConfirm: qb, mermaid: Wb, quickSearch: jb, fontList: Tb, userList: zb, commandPalette: Pb }, Ob = 100, Vb = 36, Xb = { "ar-SA": 94, "az-AZ": 17, "bg-BG": 71, "bn-BD": 52, "ca-ES": 83, "cs-CZ": 86, "da-DK": 61, "de-DE": 100, "el-GR": 80, en: Ob, "es-ES": 96, "eu-ES": 97, "fa-IR": 84, "fi-FI": 76, "fr-FR": 99, "gl-ES": 86, "he-IL": 77, "hi-IN": 76, "hu-HU": 76, "id-ID": 91, "it-IT": 98, "ja-JP": 90, kaa: Vb, "kab-KAB": 76, "kk-KZ": 18, "km-KH": 83, "ko-KR": 100, "ku-TR": 87, "lt-LT": 48, "lv-LV": 77, "mr-IN": 98, "my-MM": 35, "nb-NO": 93, "nl-NL": 75, "nn-NO": 67, "oc-FR": 92, "pa-IN": 78, "pl-PL": 99, "pt-BR": 91, "pt-PT": 83, "ro-RO": 99, "ru-RU": 92, "si-LK": 7, "sk-SK": 100, "sl-SI": 100, "sv-SE": 100, "ta-IN": 81, "th-TH": 44, "tr-TR": 87, "uk-UA": 93, "vi-VN": 49, "zh-CN": 100, "zh-HK": 22, "zh-TW": 100 };
const Vg = {};
let mdA = 0;
function $0(A, u) {
  const e = `atom${++mdA}`, C = {
    toString() {
      return (Vg ? "production" : void 0) !== "production" && this.debugLabel ? e + ":" + this.debugLabel : e;
    }
  };
  return typeof A == "function" ? C.read = A : (C.init = A, C.read = kdA, C.write = ydA), C;
}
function kdA(A) {
  return A(this);
}
function ydA(A, u, e) {
  return u(
    this,
    typeof e == "function" ? e(A(this)) : e
  );
}
const ep = (A, u) => A.unstable_is ? A.unstable_is(u) : u === A, s1 = (A) => "init" in A, Jd = (A) => !!A.write, Yl = /* @__PURE__ */ new WeakMap(), l1 = (A) => {
  var u;
  return c1(A) && !((u = Yl.get(A)) != null && u[1]);
}, bdA = (A, u) => {
  const e = Yl.get(A);
  if (e)
    e[1] = !0, e[0].forEach((C) => C(u));
  else if ((Vg ? "production" : void 0) !== "production")
    throw new Error("[Bug] cancelable promise not found");
}, UdA = (A) => {
  if (Yl.has(A))
    return;
  const u = [/* @__PURE__ */ new Set(), !1];
  Yl.set(A, u);
  const e = () => {
    u[1] = !0;
  };
  A.then(e, e), A.onCancel = (C) => {
    u[0].add(C);
  };
}, c1 = (A) => typeof A?.then == "function", Cp = (A) => "v" in A || "e" in A, Is = (A) => {
  if ("e" in A)
    throw A.e;
  if ((Vg ? "production" : void 0) !== "production" && !("v" in A))
    throw new Error("[Bug] atom state is not initialized");
  return A.v;
}, _b = (A, u, e) => {
  e.p.has(A) || (e.p.add(A), u.then(
    () => {
      e.p.delete(A);
    },
    () => {
      e.p.delete(A);
    }
  ));
}, Bp = (A, u, e, C, B) => {
  var g;
  if ((Vg ? "production" : void 0) !== "production" && C === u)
    throw new Error("[Bug] atom cannot depend on itself");
  e.d.set(C, B.n), l1(e.v) && _b(u, e.v, B), (g = B.m) == null || g.t.add(u), A && GdA(A, C, u);
}, qo = () => ({
  D: /* @__PURE__ */ new Map(),
  H: /* @__PURE__ */ new Set(),
  M: /* @__PURE__ */ new Set(),
  L: /* @__PURE__ */ new Set()
}), pQ = (A, u, e) => {
  A[u].add(e);
}, gp = (A, u, e) => {
  A.D.has(u) || (A.D.set(u, /* @__PURE__ */ new Set()), pQ(A, "M", () => {
    var C;
    (C = e.m) == null || C.l.forEach((B) => pQ(A, "M", B));
  }));
}, GdA = (A, u, e) => {
  const C = A.D.get(u);
  C && C.add(e);
}, fdA = (A, u) => A.D.get(u), $i = (A) => {
  let u, e = !1;
  const C = (B) => {
    try {
      B();
    } catch (g) {
      e || (u = g, e = !0);
    }
  };
  for (; A.H.size || A.M.size || A.L.size; )
    A.D.clear(), A.H.forEach(C), A.H.clear(), A.M.forEach(C), A.M.clear(), A.L.forEach(C), A.L.clear();
  if (e)
    throw u;
}, $b = (...[A, u, e, C]) => {
  const B = (F, m, p) => {
    const k = "v" in m, b = m.v, f = l1(m.v) ? m.v : null;
    if (c1(p)) {
      UdA(p);
      for (const L of m.d.keys())
        _b(F, p, A(L));
      m.v = p;
    } else
      m.v = p;
    delete m.e, delete m.x, (!k || !Object.is(b, m.v)) && (++m.n, f && bdA(f, p));
  }, g = (F, m) => {
    var p;
    const k = A(m);
    if (Cp(k) && (k.m && !k.x || Array.from(k.d).every(
      ([v, K]) => (
        // Recursively, read the atom state of the dependency, and
        // check if the atom epoch number is unchanged
        g(F, v).n === K
      )
    )))
      return k;
    k.d.clear();
    let b = !0;
    const f = (v) => {
      if (ep(m, v)) {
        const q = A(v);
        if (!Cp(q))
          if (s1(v))
            B(v, q, v.init);
          else
            throw new Error("no atom init");
        return Is(q);
      }
      const K = g(F, v);
      try {
        return Is(K);
      } finally {
        if (b)
          Bp(F, m, k, v, K);
        else {
          const q = qo();
          Bp(q, m, k, v, K), Q(q, m, k), $i(q);
        }
      }
    };
    let L, N;
    const M = {
      get signal() {
        return L || (L = new AbortController()), L.signal;
      },
      get setSelf() {
        return (Vg ? "production" : void 0) !== "production" && !Jd(m) && console.warn("setSelf function cannot be used with read-only atom"), !N && Jd(m) && (N = (...v) => {
          if ((Vg ? "production" : void 0) !== "production" && b && console.warn("setSelf function cannot be called in sync"), !b)
            return E(m, ...v);
        }), N;
      }
    };
    try {
      const v = u(m, f, M);
      if (B(m, k, v), c1(v)) {
        (p = v.onCancel) == null || p.call(v, () => L?.abort());
        const K = () => {
          if (k.m) {
            const q = qo();
            Q(q, m, k), $i(q);
          }
        };
        v.then(K, K);
      }
      return k;
    } catch (v) {
      return delete k.v, k.e = v, delete k.x, ++k.n, k;
    } finally {
      b = !1;
    }
  }, t = (F) => Is(g(void 0, F)), i = (F, m, p) => {
    var k, b;
    const f = /* @__PURE__ */ new Map();
    for (const L of ((k = p.m) == null ? void 0 : k.t) || []) {
      const N = A(L);
      N.m && f.set(L, N);
    }
    for (const L of p.p)
      f.set(
        L,
        A(L)
      );
    return (b = fdA(F, m)) == null || b.forEach((L) => {
      f.set(L, A(L));
    }), f;
  }, I = (F, m, p) => {
    const k = [], b = /* @__PURE__ */ new Set(), f = /* @__PURE__ */ new Set(), L = [[m, p]];
    for (; L.length > 0; ) {
      const [N, M] = L[L.length - 1];
      if (f.has(N)) {
        L.pop();
        continue;
      }
      if (b.has(N)) {
        k.push([N, M, M.n]), f.add(N), M.x = !0, L.pop();
        continue;
      }
      b.add(N);
      for (const [v, K] of i(F, N, M))
        N !== v && !b.has(v) && L.push([v, K]);
    }
    pQ(F, "H", () => {
      const N = /* @__PURE__ */ new Set([m]);
      for (let M = k.length - 1; M >= 0; --M) {
        const [v, K, q] = k[M];
        let j = !1;
        for (const uA of K.d.keys())
          if (uA !== v && N.has(uA)) {
            j = !0;
            break;
          }
        j && (g(F, v), Q(F, v, K), q !== K.n && (gp(F, v, K), N.add(v))), delete K.x;
      }
    });
  }, o = (F, m, ...p) => {
    let k = !0;
    const b = (L) => Is(g(F, L)), f = (L, ...N) => {
      const M = A(L);
      try {
        if (ep(m, L)) {
          if (!s1(L))
            throw new Error("atom not writable");
          const v = M.n, K = N[0];
          B(L, M, K), Q(F, L, M), v !== M.n && (gp(F, L, M), I(F, L, M));
          return;
        } else
          return o(F, L, ...N);
      } finally {
        k || $i(F);
      }
    };
    try {
      return e(m, b, f, ...p);
    } finally {
      k = !1;
    }
  }, E = (F, ...m) => {
    const p = qo();
    try {
      return o(p, F, ...m);
    } finally {
      $i(p);
    }
  }, Q = (F, m, p) => {
    if (p.m && !l1(p.v)) {
      for (const k of p.d.keys())
        p.m.d.has(k) || (s(F, k, A(k)).t.add(m), p.m.d.add(k));
      for (const k of p.m.d || [])
        if (!p.d.has(k)) {
          p.m.d.delete(k);
          const b = l(F, k, A(k));
          b?.t.delete(m);
        }
    }
  }, s = (F, m, p) => {
    if (!p.m) {
      g(F, m);
      for (const k of p.d.keys())
        s(F, k, A(k)).t.add(m);
      if (p.m = {
        l: /* @__PURE__ */ new Set(),
        d: new Set(p.d.keys()),
        t: /* @__PURE__ */ new Set()
      }, Jd(m)) {
        const k = p.m;
        let b;
        const f = (L, N) => {
          let M = !0;
          b = (...v) => {
            try {
              return o(L, m, ...v);
            } finally {
              M || $i(L);
            }
          };
          try {
            return N();
          } finally {
            M = !1;
          }
        };
        pQ(F, "L", () => {
          const L = f(
            F,
            () => C(m, (...N) => b(...N))
          );
          L && (k.u = (N) => f(N, L));
        });
      }
    }
    return p.m;
  }, l = (F, m, p) => {
    if (p.m && !p.m.l.size && !Array.from(p.m.t).some((k) => {
      var b;
      return (b = A(k).m) == null ? void 0 : b.d.has(m);
    })) {
      const k = p.m.u;
      k && pQ(F, "L", () => k(F)), delete p.m;
      for (const b of p.d.keys()) {
        const f = l(F, b, A(b));
        f?.t.delete(m);
      }
      return;
    }
    return p.m;
  };
  return {
    get: t,
    set: E,
    sub: (F, m) => {
      const p = qo(), k = A(F), f = s(p, F, k).l;
      return f.add(m), $i(p), () => {
        f.delete(m);
        const L = qo();
        l(L, F, k), $i(L);
      };
    },
    unstable_derive: (F) => $b(...F(A, u, e, C))
  };
}, LdA = (A) => {
  const u = /* @__PURE__ */ new WeakMap(), e = /* @__PURE__ */ new Set();
  let C, B = 0;
  const g = A.unstable_derive(
    (I, o, E, Q) => (C = I, [
      (s) => {
        let l = u.get(s);
        if (!l) {
          const c = I(s);
          l = new Proxy(c, {
            set(D, h, F) {
              return h === "m" && e.add(s), Reflect.set(D, h, F);
            },
            deleteProperty(D, h) {
              return h === "m" && e.delete(s), Reflect.deleteProperty(D, h);
            }
          }), u.set(s, l);
        }
        return l;
      },
      o,
      (s, l, c, ...D) => B ? c(s, ...D) : E(s, l, c, ...D),
      Q
    ])
  ), t = g.set;
  return Object.assign(g, {
    // store dev methods (these are tentative and subject to change without notice)
    dev4_get_internal_weak_map: () => ({
      get: (I) => {
        const o = C(I);
        if (o.n !== 0)
          return o;
      }
    }),
    dev4_get_mounted_atoms: () => e,
    dev4_restore_atoms: (I) => {
      t({
        read: () => null,
        write: (E, Q) => {
          ++B;
          try {
            for (const [s, l] of I)
              s1(s) && Q(s, l);
          } finally {
            --B;
          }
        }
      });
    }
  });
}, I9 = () => {
  const A = /* @__PURE__ */ new WeakMap(), e = $b(
    (C) => {
      if ((Vg ? "production" : void 0) !== "production" && !C)
        throw new Error("Atom is undefined or null");
      let B = A.get(C);
      return B || (B = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 }, A.set(C, B)), B;
    },
    (C, ...B) => C.read(...B),
    (C, ...B) => C.write(...B),
    (C, ...B) => {
      var g;
      return (g = C.onMount) == null ? void 0 : g.call(C, ...B);
    }
  );
  return (Vg ? "production" : void 0) !== "production" ? LdA(e) : e;
};
let Wo;
const xdA = () => (Wo || (Wo = I9(), (Vg ? "production" : void 0) !== "production" && (globalThis.__JOTAI_DEFAULT_STORE__ || (globalThis.__JOTAI_DEFAULT_STORE__ = Wo), globalThis.__JOTAI_DEFAULT_STORE__ !== Wo && console.warn(
  "Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"
))), Wo), AU = {}, SdA = x.createContext(
  void 0
), x4 = (A) => {
  const u = x.useContext(SdA);
  return A?.store || u || xdA();
}, d1 = (A) => typeof A?.then == "function", uU = (A) => {
  A.status = "pending", A.then(
    (u) => {
      A.status = "fulfilled", A.value = u;
    },
    (u) => {
      A.status = "rejected", A.reason = u;
    }
  );
}, NdA = kA.use || ((A) => {
  if (A.status === "pending")
    throw A;
  if (A.status === "fulfilled")
    return A.value;
  throw A.status === "rejected" ? A.reason : (uU(A), A);
}), Zd = /* @__PURE__ */ new WeakMap(), tp = (A) => {
  let u = Zd.get(A);
  return u || (u = new Promise((e, C) => {
    let B = A;
    const g = (I) => (o) => {
      B === I && e(o);
    }, t = (I) => (o) => {
      B === I && C(o);
    }, i = (I) => {
      "onCancel" in I && typeof I.onCancel == "function" && I.onCancel((o) => {
        if ((AU ? "production" : void 0) !== "production" && o === I)
          throw new Error("[Bug] p is not updated even after cancelation");
        d1(o) ? (Zd.set(o, u), B = o, o.then(g(o), t(o)), i(o)) : e(o);
      });
    };
    A.then(g(A), t(A)), i(A);
  }), Zd.set(A, u)), u;
};
function eU(A, u) {
  const e = x4(u), [[C, B, g], t] = x.useReducer(
    (o) => {
      const E = e.get(A);
      return Object.is(o[0], E) && o[1] === e && o[2] === A ? o : [E, e, A];
    },
    void 0,
    () => [e.get(A), e, A]
  );
  let i = C;
  (B !== e || g !== A) && (t(), i = e.get(A));
  const I = u?.delay;
  if (x.useEffect(() => {
    const o = e.sub(A, () => {
      if (typeof I == "number") {
        const E = e.get(A);
        d1(E) && uU(tp(E)), setTimeout(t, I);
        return;
      }
      t();
    });
    return t(), o;
  }, [e, A, I]), x.useDebugValue(i), d1(i)) {
    const o = tp(i);
    return NdA(o);
  }
  return i;
}
function CU(A, u) {
  const e = x4(u);
  return x.useCallback(
    (...B) => {
      if ((AU ? "production" : void 0) !== "production" && !("write" in A))
        throw new Error("not writable atom");
      return e.set(A, ...B);
    },
    [e, A]
  );
}
function RdA(A, u) {
  return [
    eU(A, u),
    // We do wrong type assertion here, which results in throwing an error.
    CU(A, u)
  ];
}
const ip = /* @__PURE__ */ new WeakMap();
function MdA(A, u) {
  const e = x4(u), C = YdA(e);
  for (const [B, g] of A)
    (!C.has(B) || u?.dangerouslyForceHydrate) && (C.add(B), e.set(B, g));
}
const YdA = (A) => {
  let u = ip.get(A);
  return u || (u = /* @__PURE__ */ new WeakSet(), ip.set(A, u)), u;
};
function Pa() {
  return Pa = Object.assign ? Object.assign.bind() : function(A) {
    for (var u = 1; u < arguments.length; u++) {
      var e = arguments[u];
      for (var C in e)
        Object.prototype.hasOwnProperty.call(e, C) && (A[C] = e[C]);
    }
    return A;
  }, Pa.apply(this, arguments);
}
function BU() {
  const A = x.createContext(null);
  function u({
    store: t,
    initialValues: i = [],
    children: I
  }) {
    const o = x.useRef(t);
    return o.current || (o.current = I9()), MdA(i, {
      store: o.current
    }), r.jsx(A.Provider, {
      value: o.current,
      children: I
    });
  }
  const e = (t) => {
    const i = x.useContext(A);
    if (!i) throw new Error("Missing Provider from createIsolation");
    return x4(Pa({
      store: i
    }, t));
  };
  return {
    Provider: u,
    useStore: e,
    useAtom: (t, i) => {
      const I = e();
      return RdA(t, Pa({
        store: I
      }, i));
    },
    useAtomValue: (t, i) => {
      const I = e();
      return eU(t, Pa({
        store: I
      }, i));
    },
    useSetAtom: (t, i) => {
      const I = e();
      return CU(t, Pa({
        store: I
      }, i));
    }
  };
}
const {
  read: w8A,
  write: F8A
} = $0(null);
x.createContext({
  scope: void 0,
  baseStore: void 0
});
var O0 = BBA();
const vdA = /* @__PURE__ */ gg(O0);
function Bi(A, u, { checkForDefaultPrevented: e = !0 } = {}) {
  return function(B) {
    if (A?.(B), e === !1 || !B.defaultPrevented)
      return u?.(B);
  };
}
function Ep(A, u) {
  if (typeof A == "function")
    return A(u);
  A != null && (A.current = u);
}
function gU(...A) {
  return (u) => {
    let e = !1;
    const C = A.map((B) => {
      const g = Ep(B, u);
      return !e && typeof g == "function" && (e = !0), g;
    });
    if (e)
      return () => {
        for (let B = 0; B < C.length; B++) {
          const g = C[B];
          typeof g == "function" ? g() : Ep(A[B], null);
        }
      };
  };
}
function li(...A) {
  return x.useCallback(gU(...A), A);
}
function tU(A, u = []) {
  let e = [];
  function C(g, t) {
    const i = x.createContext(t), I = e.length;
    e = [...e, t];
    const o = (Q) => {
      const { scope: s, children: l, ...c } = Q, D = s?.[A]?.[I] || i, h = x.useMemo(() => c, Object.values(c));
      return /* @__PURE__ */ r.jsx(D.Provider, { value: h, children: l });
    };
    o.displayName = g + "Provider";
    function E(Q, s) {
      const l = s?.[A]?.[I] || i, c = x.useContext(l);
      if (c) return c;
      if (t !== void 0) return t;
      throw new Error(`\`${Q}\` must be used within \`${g}\``);
    }
    return [o, E];
  }
  const B = () => {
    const g = e.map((t) => x.createContext(t));
    return function(i) {
      const I = i?.[A] || g;
      return x.useMemo(
        () => ({ [`__scope${A}`]: { ...i, [A]: I } }),
        [i, I]
      );
    };
  };
  return B.scopeName = A, [C, HdA(B, ...u)];
}
function HdA(...A) {
  const u = A[0];
  if (A.length === 1) return u;
  const e = () => {
    const C = A.map((B) => ({
      useScope: B(),
      scopeName: B.scopeName
    }));
    return function(g) {
      const t = C.reduce((i, { useScope: I, scopeName: o }) => {
        const Q = I(g)[`__scope${o}`];
        return { ...i, ...Q };
      }, {});
      return x.useMemo(() => ({ [`__scope${u.scopeName}`]: t }), [t]);
    };
  };
  return e.scopeName = u.scopeName, e;
}
var o9 = x.forwardRef((A, u) => {
  const { children: e, ...C } = A, B = x.Children.toArray(e), g = B.find(JdA);
  if (g) {
    const t = g.props.children, i = B.map((I) => I === g ? x.Children.count(t) > 1 ? x.Children.only(null) : x.isValidElement(t) ? t.props.children : null : I);
    return /* @__PURE__ */ r.jsx(D1, { ...C, ref: u, children: x.isValidElement(t) ? x.cloneElement(t, void 0, i) : null });
  }
  return /* @__PURE__ */ r.jsx(D1, { ...C, ref: u, children: e });
});
o9.displayName = "Slot";
var D1 = x.forwardRef((A, u) => {
  const { children: e, ...C } = A;
  if (x.isValidElement(e)) {
    const B = qdA(e), g = ZdA(C, e.props);
    return e.type !== x.Fragment && (g.ref = u ? gU(u, B) : B), x.cloneElement(e, g);
  }
  return x.Children.count(e) > 1 ? x.Children.only(null) : null;
});
D1.displayName = "SlotClone";
var KdA = ({ children: A }) => /* @__PURE__ */ r.jsx(r.Fragment, { children: A });
function JdA(A) {
  return x.isValidElement(A) && A.type === KdA;
}
function ZdA(A, u) {
  const e = { ...u };
  for (const C in u) {
    const B = A[C], g = u[C];
    /^on[A-Z]/.test(C) ? B && g ? e[C] = (...i) => {
      g(...i), B(...i);
    } : B && (e[C] = B) : C === "style" ? e[C] = { ...B, ...g } : C === "className" && (e[C] = [B, g].filter(Boolean).join(" "));
  }
  return { ...A, ...e };
}
function qdA(A) {
  let u = Object.getOwnPropertyDescriptor(A.props, "ref")?.get, e = u && "isReactWarning" in u && u.isReactWarning;
  return e ? A.ref : (u = Object.getOwnPropertyDescriptor(A, "ref")?.get, e = u && "isReactWarning" in u && u.isReactWarning, e ? A.props.ref : A.props.ref || A.ref);
}
var WdA = [
  "a",
  "button",
  "div",
  "form",
  "h2",
  "h3",
  "img",
  "input",
  "label",
  "li",
  "nav",
  "ol",
  "p",
  "span",
  "svg",
  "ul"
], et = WdA.reduce((A, u) => {
  const e = x.forwardRef((C, B) => {
    const { asChild: g, ...t } = C, i = g ? o9 : u;
    return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ r.jsx(i, { ...t, ref: B });
  });
  return e.displayName = `Primitive.${u}`, { ...A, [u]: e };
}, {});
function jdA(A, u) {
  A && O0.flushSync(() => A.dispatchEvent(u));
}
function Ii(A) {
  const u = x.useRef(A);
  return x.useEffect(() => {
    u.current = A;
  }), x.useMemo(() => (...e) => u.current?.(...e), []);
}
function TdA(A, u = globalThis?.document) {
  const e = Ii(A);
  x.useEffect(() => {
    const C = (B) => {
      B.key === "Escape" && e(B);
    };
    return u.addEventListener("keydown", C, { capture: !0 }), () => u.removeEventListener("keydown", C, { capture: !0 });
  }, [e, u]);
}
var zdA = "DismissableLayer", h1 = "dismissableLayer.update", PdA = "dismissableLayer.pointerDownOutside", OdA = "dismissableLayer.focusOutside", ap, iU = x.createContext({
  layers: /* @__PURE__ */ new Set(),
  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
  branches: /* @__PURE__ */ new Set()
}), EU = x.forwardRef(
  (A, u) => {
    const {
      disableOutsidePointerEvents: e = !1,
      onEscapeKeyDown: C,
      onPointerDownOutside: B,
      onFocusOutside: g,
      onInteractOutside: t,
      onDismiss: i,
      ...I
    } = A, o = x.useContext(iU), [E, Q] = x.useState(null), s = E?.ownerDocument ?? globalThis?.document, [, l] = x.useState({}), c = li(u, (L) => Q(L)), D = Array.from(o.layers), [h] = [...o.layersWithOutsidePointerEventsDisabled].slice(-1), F = D.indexOf(h), m = E ? D.indexOf(E) : -1, p = o.layersWithOutsidePointerEventsDisabled.size > 0, k = m >= F, b = _dA((L) => {
      const N = L.target, M = [...o.branches].some((v) => v.contains(N));
      !k || M || (B?.(L), t?.(L), L.defaultPrevented || i?.());
    }, s), f = $dA((L) => {
      const N = L.target;
      [...o.branches].some((v) => v.contains(N)) || (g?.(L), t?.(L), L.defaultPrevented || i?.());
    }, s);
    return TdA((L) => {
      m === o.layers.size - 1 && (C?.(L), !L.defaultPrevented && i && (L.preventDefault(), i()));
    }, s), x.useEffect(() => {
      if (E)
        return e && (o.layersWithOutsidePointerEventsDisabled.size === 0 && (ap = s.body.style.pointerEvents, s.body.style.pointerEvents = "none"), o.layersWithOutsidePointerEventsDisabled.add(E)), o.layers.add(E), Ip(), () => {
          e && o.layersWithOutsidePointerEventsDisabled.size === 1 && (s.body.style.pointerEvents = ap);
        };
    }, [E, s, e, o]), x.useEffect(() => () => {
      E && (o.layers.delete(E), o.layersWithOutsidePointerEventsDisabled.delete(E), Ip());
    }, [E, o]), x.useEffect(() => {
      const L = () => l({});
      return document.addEventListener(h1, L), () => document.removeEventListener(h1, L);
    }, []), /* @__PURE__ */ r.jsx(
      et.div,
      {
        ...I,
        ref: c,
        style: {
          pointerEvents: p ? k ? "auto" : "none" : void 0,
          ...A.style
        },
        onFocusCapture: Bi(A.onFocusCapture, f.onFocusCapture),
        onBlurCapture: Bi(A.onBlurCapture, f.onBlurCapture),
        onPointerDownCapture: Bi(
          A.onPointerDownCapture,
          b.onPointerDownCapture
        )
      }
    );
  }
);
EU.displayName = zdA;
var VdA = "DismissableLayerBranch", XdA = x.forwardRef((A, u) => {
  const e = x.useContext(iU), C = x.useRef(null), B = li(u, C);
  return x.useEffect(() => {
    const g = C.current;
    if (g)
      return e.branches.add(g), () => {
        e.branches.delete(g);
      };
  }, [e.branches]), /* @__PURE__ */ r.jsx(et.div, { ...A, ref: B });
});
XdA.displayName = VdA;
function _dA(A, u = globalThis?.document) {
  const e = Ii(A), C = x.useRef(!1), B = x.useRef(() => {
  });
  return x.useEffect(() => {
    const g = (i) => {
      if (i.target && !C.current) {
        let I = function() {
          aU(
            PdA,
            e,
            o,
            { discrete: !0 }
          );
        };
        const o = { originalEvent: i };
        i.pointerType === "touch" ? (u.removeEventListener("click", B.current), B.current = I, u.addEventListener("click", B.current, { once: !0 })) : I();
      } else
        u.removeEventListener("click", B.current);
      C.current = !1;
    }, t = window.setTimeout(() => {
      u.addEventListener("pointerdown", g);
    }, 0);
    return () => {
      window.clearTimeout(t), u.removeEventListener("pointerdown", g), u.removeEventListener("click", B.current);
    };
  }, [u, e]), {
    // ensures we check React component tree (not just DOM tree)
    onPointerDownCapture: () => C.current = !0
  };
}
function $dA(A, u = globalThis?.document) {
  const e = Ii(A), C = x.useRef(!1);
  return x.useEffect(() => {
    const B = (g) => {
      g.target && !C.current && aU(OdA, e, { originalEvent: g }, {
        discrete: !1
      });
    };
    return u.addEventListener("focusin", B), () => u.removeEventListener("focusin", B);
  }, [u, e]), {
    onFocusCapture: () => C.current = !0,
    onBlurCapture: () => C.current = !1
  };
}
function Ip() {
  const A = new CustomEvent(h1);
  document.dispatchEvent(A);
}
function aU(A, u, e, { discrete: C }) {
  const B = e.originalEvent.target, g = new CustomEvent(A, { bubbles: !1, cancelable: !0, detail: e });
  u && B.addEventListener(A, u, { once: !0 }), C ? jdA(B, g) : B.dispatchEvent(g);
}
var qd = 0;
function ADA() {
  x.useEffect(() => {
    const A = document.querySelectorAll("[data-radix-focus-guard]");
    return document.body.insertAdjacentElement("afterbegin", A[0] ?? op()), document.body.insertAdjacentElement("beforeend", A[1] ?? op()), qd++, () => {
      qd === 1 && document.querySelectorAll("[data-radix-focus-guard]").forEach((u) => u.remove()), qd--;
    };
  }, []);
}
function op() {
  const A = document.createElement("span");
  return A.setAttribute("data-radix-focus-guard", ""), A.tabIndex = 0, A.style.outline = "none", A.style.opacity = "0", A.style.position = "fixed", A.style.pointerEvents = "none", A;
}
var Wd = "focusScope.autoFocusOnMount", jd = "focusScope.autoFocusOnUnmount", Qp = { bubbles: !1, cancelable: !0 }, uDA = "FocusScope", IU = x.forwardRef((A, u) => {
  const {
    loop: e = !1,
    trapped: C = !1,
    onMountAutoFocus: B,
    onUnmountAutoFocus: g,
    ...t
  } = A, [i, I] = x.useState(null), o = Ii(B), E = Ii(g), Q = x.useRef(null), s = li(u, (D) => I(D)), l = x.useRef({
    paused: !1,
    pause() {
      this.paused = !0;
    },
    resume() {
      this.paused = !1;
    }
  }).current;
  x.useEffect(() => {
    if (C) {
      let D = function(p) {
        if (l.paused || !i) return;
        const k = p.target;
        i.contains(k) ? Q.current = k : Wt(Q.current, { select: !0 });
      }, h = function(p) {
        if (l.paused || !i) return;
        const k = p.relatedTarget;
        k !== null && (i.contains(k) || Wt(Q.current, { select: !0 }));
      }, F = function(p) {
        if (document.activeElement === document.body)
          for (const b of p)
            b.removedNodes.length > 0 && Wt(i);
      };
      document.addEventListener("focusin", D), document.addEventListener("focusout", h);
      const m = new MutationObserver(F);
      return i && m.observe(i, { childList: !0, subtree: !0 }), () => {
        document.removeEventListener("focusin", D), document.removeEventListener("focusout", h), m.disconnect();
      };
    }
  }, [C, i, l.paused]), x.useEffect(() => {
    if (i) {
      rp.add(l);
      const D = document.activeElement;
      if (!i.contains(D)) {
        const F = new CustomEvent(Wd, Qp);
        i.addEventListener(Wd, o), i.dispatchEvent(F), F.defaultPrevented || (eDA(iDA(oU(i)), { select: !0 }), document.activeElement === D && Wt(i));
      }
      return () => {
        i.removeEventListener(Wd, o), setTimeout(() => {
          const F = new CustomEvent(jd, Qp);
          i.addEventListener(jd, E), i.dispatchEvent(F), F.defaultPrevented || Wt(D ?? document.body, { select: !0 }), i.removeEventListener(jd, E), rp.remove(l);
        }, 0);
      };
    }
  }, [i, o, E, l]);
  const c = x.useCallback(
    (D) => {
      if (!e && !C || l.paused) return;
      const h = D.key === "Tab" && !D.altKey && !D.ctrlKey && !D.metaKey, F = document.activeElement;
      if (h && F) {
        const m = D.currentTarget, [p, k] = CDA(m);
        p && k ? !D.shiftKey && F === k ? (D.preventDefault(), e && Wt(p, { select: !0 })) : D.shiftKey && F === p && (D.preventDefault(), e && Wt(k, { select: !0 })) : F === m && D.preventDefault();
      }
    },
    [e, C, l.paused]
  );
  return /* @__PURE__ */ r.jsx(et.div, { tabIndex: -1, ...t, ref: s, onKeyDown: c });
});
IU.displayName = uDA;
function eDA(A, { select: u = !1 } = {}) {
  const e = document.activeElement;
  for (const C of A)
    if (Wt(C, { select: u }), document.activeElement !== e) return;
}
function CDA(A) {
  const u = oU(A), e = np(u, A), C = np(u.reverse(), A);
  return [e, C];
}
function oU(A) {
  const u = [], e = document.createTreeWalker(A, NodeFilter.SHOW_ELEMENT, {
    acceptNode: (C) => {
      const B = C.tagName === "INPUT" && C.type === "hidden";
      return C.disabled || C.hidden || B ? NodeFilter.FILTER_SKIP : C.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
    }
  });
  for (; e.nextNode(); ) u.push(e.currentNode);
  return u;
}
function np(A, u) {
  for (const e of A)
    if (!BDA(e, { upTo: u })) return e;
}
function BDA(A, { upTo: u }) {
  if (getComputedStyle(A).visibility === "hidden") return !0;
  for (; A; ) {
    if (u !== void 0 && A === u) return !1;
    if (getComputedStyle(A).display === "none") return !0;
    A = A.parentElement;
  }
  return !1;
}
function gDA(A) {
  return A instanceof HTMLInputElement && "select" in A;
}
function Wt(A, { select: u = !1 } = {}) {
  if (A && A.focus) {
    const e = document.activeElement;
    A.focus({ preventScroll: !0 }), A !== e && gDA(A) && u && A.select();
  }
}
var rp = tDA();
function tDA() {
  let A = [];
  return {
    add(u) {
      const e = A[0];
      u !== e && e?.pause(), A = sp(A, u), A.unshift(u);
    },
    remove(u) {
      A = sp(A, u), A[0]?.resume();
    }
  };
}
function sp(A, u) {
  const e = [...A], C = e.indexOf(u);
  return C !== -1 && e.splice(C, 1), e;
}
function iDA(A) {
  return A.filter((u) => u.tagName !== "A");
}
var YE = globalThis?.document ? x.useLayoutEffect : () => {
}, EDA = E7.useId || (() => {
}), aDA = 0;
function IDA(A) {
  const [u, e] = x.useState(EDA());
  return YE(() => {
    e((C) => C ?? String(aDA++));
  }, [A]), A || (u ? `radix-${u}` : "");
}
const oDA = ["top", "right", "bottom", "left"], oi = Math.min, aC = Math.max, vl = Math.round, os = Math.floor, XB = (A) => ({
  x: A,
  y: A
}), QDA = {
  left: "right",
  right: "left",
  bottom: "top",
  top: "bottom"
};
function w1(A, u, e) {
  return aC(A, oi(u, e));
}
function Xg(A, u) {
  return typeof A == "function" ? A(u) : A;
}
function _g(A) {
  return A.split("-")[0];
}
function bI(A) {
  return A.split("-")[1];
}
function Q9(A) {
  return A === "x" ? "y" : "x";
}
function n9(A) {
  return A === "y" ? "height" : "width";
}
function PB(A) {
  const u = A[0];
  return u === "t" || u === "b" ? "y" : "x";
}
function r9(A) {
  return Q9(PB(A));
}
function nDA(A, u, e) {
  e === void 0 && (e = !1);
  const C = bI(A), B = r9(A), g = n9(B);
  let t = B === "x" ? C === (e ? "end" : "start") ? "right" : "left" : C === "start" ? "bottom" : "top";
  return u.reference[g] > u.floating[g] && (t = Hl(t)), [t, Hl(t)];
}
function rDA(A) {
  const u = Hl(A);
  return [F1(A), u, F1(u)];
}
function F1(A) {
  return A.includes("start") ? A.replace("start", "end") : A.replace("end", "start");
}
const lp = ["left", "right"], cp = ["right", "left"], sDA = ["top", "bottom"], lDA = ["bottom", "top"];
function cDA(A, u, e) {
  switch (A) {
    case "top":
    case "bottom":
      return e ? u ? cp : lp : u ? lp : cp;
    case "left":
    case "right":
      return u ? sDA : lDA;
    default:
      return [];
  }
}
function dDA(A, u, e, C) {
  const B = bI(A);
  let g = cDA(_g(A), e === "start", C);
  return B && (g = g.map((t) => t + "-" + B), u && (g = g.concat(g.map(F1)))), g;
}
function Hl(A) {
  const u = _g(A);
  return QDA[u] + A.slice(u.length);
}
function DDA(A) {
  return {
    top: 0,
    right: 0,
    bottom: 0,
    left: 0,
    ...A
  };
}
function QU(A) {
  return typeof A != "number" ? DDA(A) : {
    top: A,
    right: A,
    bottom: A,
    left: A
  };
}
function Kl(A) {
  const {
    x: u,
    y: e,
    width: C,
    height: B
  } = A;
  return {
    width: C,
    height: B,
    top: e,
    left: u,
    right: u + C,
    bottom: e + B,
    x: u,
    y: e
  };
}
function dp(A, u, e) {
  let {
    reference: C,
    floating: B
  } = A;
  const g = PB(u), t = r9(u), i = n9(t), I = _g(u), o = g === "y", E = C.x + C.width / 2 - B.width / 2, Q = C.y + C.height / 2 - B.height / 2, s = C[i] / 2 - B[i] / 2;
  let l;
  switch (I) {
    case "top":
      l = {
        x: E,
        y: C.y - B.height
      };
      break;
    case "bottom":
      l = {
        x: E,
        y: C.y + C.height
      };
      break;
    case "right":
      l = {
        x: C.x + C.width,
        y: Q
      };
      break;
    case "left":
      l = {
        x: C.x - B.width,
        y: Q
      };
      break;
    default:
      l = {
        x: C.x,
        y: C.y
      };
  }
  switch (bI(u)) {
    case "start":
      l[t] -= s * (e && o ? -1 : 1);
      break;
    case "end":
      l[t] += s * (e && o ? -1 : 1);
      break;
  }
  return l;
}
async function hDA(A, u) {
  var e;
  u === void 0 && (u = {});
  const {
    x: C,
    y: B,
    platform: g,
    rects: t,
    elements: i,
    strategy: I
  } = A, {
    boundary: o = "clippingAncestors",
    rootBoundary: E = "viewport",
    elementContext: Q = "floating",
    altBoundary: s = !1,
    padding: l = 0
  } = Xg(u, A), c = QU(l), h = i[s ? Q === "floating" ? "reference" : "floating" : Q], F = Kl(await g.getClippingRect({
    element: (e = await (g.isElement == null ? void 0 : g.isElement(h))) == null || e ? h : h.contextElement || await (g.getDocumentElement == null ? void 0 : g.getDocumentElement(i.floating)),
    boundary: o,
    rootBoundary: E,
    strategy: I
  })), m = Q === "floating" ? {
    x: C,
    y: B,
    width: t.floating.width,
    height: t.floating.height
  } : t.reference, p = await (g.getOffsetParent == null ? void 0 : g.getOffsetParent(i.floating)), k = await (g.isElement == null ? void 0 : g.isElement(p)) ? await (g.getScale == null ? void 0 : g.getScale(p)) || {
    x: 1,
    y: 1
  } : {
    x: 1,
    y: 1
  }, b = Kl(g.convertOffsetParentRelativeRectToViewportRelativeRect ? await g.convertOffsetParentRelativeRectToViewportRelativeRect({
    elements: i,
    rect: m,
    offsetParent: p,
    strategy: I
  }) : m);
  return {
    top: (F.top - b.top + c.top) / k.y,
    bottom: (b.bottom - F.bottom + c.bottom) / k.y,
    left: (F.left - b.left + c.left) / k.x,
    right: (b.right - F.right + c.right) / k.x
  };
}
const wDA = 50, FDA = async (A, u, e) => {
  const {
    placement: C = "bottom",
    strategy: B = "absolute",
    middleware: g = [],
    platform: t
  } = e, i = t.detectOverflow ? t : {
    ...t,
    detectOverflow: hDA
  }, I = await (t.isRTL == null ? void 0 : t.isRTL(u));
  let o = await t.getElementRects({
    reference: A,
    floating: u,
    strategy: B
  }), {
    x: E,
    y: Q
  } = dp(o, C, I), s = C, l = 0;
  const c = {};
  for (let D = 0; D < g.length; D++) {
    const h = g[D];
    if (!h)
      continue;
    const {
      name: F,
      fn: m
    } = h, {
      x: p,
      y: k,
      data: b,
      reset: f
    } = await m({
      x: E,
      y: Q,
      initialPlacement: C,
      placement: s,
      strategy: B,
      middlewareData: c,
      rects: o,
      platform: i,
      elements: {
        reference: A,
        floating: u
      }
    });
    E = p ?? E, Q = k ?? Q, c[F] = {
      ...c[F],
      ...b
    }, f && l < wDA && (l++, typeof f == "object" && (f.placement && (s = f.placement), f.rects && (o = f.rects === !0 ? await t.getElementRects({
      reference: A,
      floating: u,
      strategy: B
    }) : f.rects), {
      x: E,
      y: Q
    } = dp(o, s, I)), D = -1);
  }
  return {
    x: E,
    y: Q,
    placement: s,
    strategy: B,
    middlewareData: c
  };
}, pDA = (A) => ({
  name: "arrow",
  options: A,
  async fn(u) {
    const {
      x: e,
      y: C,
      placement: B,
      rects: g,
      platform: t,
      elements: i,
      middlewareData: I
    } = u, {
      element: o,
      padding: E = 0
    } = Xg(A, u) || {};
    if (o == null)
      return {};
    const Q = QU(E), s = {
      x: e,
      y: C
    }, l = r9(B), c = n9(l), D = await t.getDimensions(o), h = l === "y", F = h ? "top" : "left", m = h ? "bottom" : "right", p = h ? "clientHeight" : "clientWidth", k = g.reference[c] + g.reference[l] - s[l] - g.floating[c], b = s[l] - g.reference[l], f = await (t.getOffsetParent == null ? void 0 : t.getOffsetParent(o));
    let L = f ? f[p] : 0;
    (!L || !await (t.isElement == null ? void 0 : t.isElement(f))) && (L = i.floating[p] || g.floating[c]);
    const N = k / 2 - b / 2, M = L / 2 - D[c] / 2 - 1, v = oi(Q[F], M), K = oi(Q[m], M), q = v, j = L - D[c] - K, uA = L / 2 - D[c] / 2 + N, O = w1(q, uA, j), $ = !I.arrow && bI(B) != null && uA !== O && g.reference[c] / 2 - (uA < q ? v : K) - D[c] / 2 < 0, X = $ ? uA < q ? uA - q : uA - j : 0;
    return {
      [l]: s[l] + X,
      data: {
        [l]: O,
        centerOffset: uA - O - X,
        ...$ && {
          alignmentOffset: X
        }
      },
      reset: $
    };
  }
}), mDA = function(A) {
  return A === void 0 && (A = {}), {
    name: "flip",
    options: A,
    async fn(u) {
      var e, C;
      const {
        placement: B,
        middlewareData: g,
        rects: t,
        initialPlacement: i,
        platform: I,
        elements: o
      } = u, {
        mainAxis: E = !0,
        crossAxis: Q = !0,
        fallbackPlacements: s,
        fallbackStrategy: l = "bestFit",
        fallbackAxisSideDirection: c = "none",
        flipAlignment: D = !0,
        ...h
      } = Xg(A, u);
      if ((e = g.arrow) != null && e.alignmentOffset)
        return {};
      const F = _g(B), m = PB(i), p = _g(i) === i, k = await (I.isRTL == null ? void 0 : I.isRTL(o.floating)), b = s || (p || !D ? [Hl(i)] : rDA(i)), f = c !== "none";
      !s && f && b.push(...dDA(i, D, c, k));
      const L = [i, ...b], N = await I.detectOverflow(u, h), M = [];
      let v = ((C = g.flip) == null ? void 0 : C.overflows) || [];
      if (E && M.push(N[F]), Q) {
        const uA = nDA(B, t, k);
        M.push(N[uA[0]], N[uA[1]]);
      }
      if (v = [...v, {
        placement: B,
        overflows: M
      }], !M.every((uA) => uA <= 0)) {
        var K, q;
        const uA = (((K = g.flip) == null ? void 0 : K.index) || 0) + 1, O = L[uA];
        if (O && (!(Q === "alignment" ? m !== PB(O) : !1) || // We leave the current main axis only if every placement on that axis
        // overflows the main axis.
        v.every((P) => PB(P.placement) === m ? P.overflows[0] > 0 : !0)))
          return {
            data: {
              index: uA,
              overflows: v
            },
            reset: {
              placement: O
            }
          };
        let $ = (q = v.filter((X) => X.overflows[0] <= 0).sort((X, P) => X.overflows[1] - P.overflows[1])[0]) == null ? void 0 : q.placement;
        if (!$)
          switch (l) {
            case "bestFit": {
              var j;
              const X = (j = v.filter((P) => {
                if (f) {
                  const _ = PB(P.placement);
                  return _ === m || // Create a bias to the `y` side axis due to horizontal
                  // reading directions favoring greater width.
                  _ === "y";
                }
                return !0;
              }).map((P) => [P.placement, P.overflows.filter((_) => _ > 0).reduce((_, CA) => _ + CA, 0)]).sort((P, _) => P[1] - _[1])[0]) == null ? void 0 : j[0];
              X && ($ = X);
              break;
            }
            case "initialPlacement":
              $ = i;
              break;
          }
        if (B !== $)
          return {
            reset: {
              placement: $
            }
          };
      }
      return {};
    }
  };
};
function Dp(A, u) {
  return {
    top: A.top - u.height,
    right: A.right - u.width,
    bottom: A.bottom - u.height,
    left: A.left - u.width
  };
}
function hp(A) {
  return oDA.some((u) => A[u] >= 0);
}
const kDA = function(A) {
  return A === void 0 && (A = {}), {
    name: "hide",
    options: A,
    async fn(u) {
      const {
        rects: e,
        platform: C
      } = u, {
        strategy: B = "referenceHidden",
        ...g
      } = Xg(A, u);
      switch (B) {
        case "referenceHidden": {
          const t = await C.detectOverflow(u, {
            ...g,
            elementContext: "reference"
          }), i = Dp(t, e.reference);
          return {
            data: {
              referenceHiddenOffsets: i,
              referenceHidden: hp(i)
            }
          };
        }
        case "escaped": {
          const t = await C.detectOverflow(u, {
            ...g,
            altBoundary: !0
          }), i = Dp(t, e.floating);
          return {
            data: {
              escapedOffsets: i,
              escaped: hp(i)
            }
          };
        }
        default:
          return {};
      }
    }
  };
}, nU = /* @__PURE__ */ new Set(["left", "top"]);
async function yDA(A, u) {
  const {
    placement: e,
    platform: C,
    elements: B
  } = A, g = await (C.isRTL == null ? void 0 : C.isRTL(B.floating)), t = _g(e), i = bI(e), I = PB(e) === "y", o = nU.has(t) ? -1 : 1, E = g && I ? -1 : 1, Q = Xg(u, A);
  let {
    mainAxis: s,
    crossAxis: l,
    alignmentAxis: c
  } = typeof Q == "number" ? {
    mainAxis: Q,
    crossAxis: 0,
    alignmentAxis: null
  } : {
    mainAxis: Q.mainAxis || 0,
    crossAxis: Q.crossAxis || 0,
    alignmentAxis: Q.alignmentAxis
  };
  return i && typeof c == "number" && (l = i === "end" ? c * -1 : c), I ? {
    x: l * E,
    y: s * o
  } : {
    x: s * o,
    y: l * E
  };
}
const bDA = function(A) {
  return A === void 0 && (A = 0), {
    name: "offset",
    options: A,
    async fn(u) {
      var e, C;
      const {
        x: B,
        y: g,
        placement: t,
        middlewareData: i
      } = u, I = await yDA(u, A);
      return t === ((e = i.offset) == null ? void 0 : e.placement) && (C = i.arrow) != null && C.alignmentOffset ? {} : {
        x: B + I.x,
        y: g + I.y,
        data: {
          ...I,
          placement: t
        }
      };
    }
  };
}, UDA = function(A) {
  return A === void 0 && (A = {}), {
    name: "shift",
    options: A,
    async fn(u) {
      const {
        x: e,
        y: C,
        placement: B,
        platform: g
      } = u, {
        mainAxis: t = !0,
        crossAxis: i = !1,
        limiter: I = {
          fn: (F) => {
            let {
              x: m,
              y: p
            } = F;
            return {
              x: m,
              y: p
            };
          }
        },
        ...o
      } = Xg(A, u), E = {
        x: e,
        y: C
      }, Q = await g.detectOverflow(u, o), s = PB(_g(B)), l = Q9(s);
      let c = E[l], D = E[s];
      if (t) {
        const F = l === "y" ? "top" : "left", m = l === "y" ? "bottom" : "right", p = c + Q[F], k = c - Q[m];
        c = w1(p, c, k);
      }
      if (i) {
        const F = s === "y" ? "top" : "left", m = s === "y" ? "bottom" : "right", p = D + Q[F], k = D - Q[m];
        D = w1(p, D, k);
      }
      const h = I.fn({
        ...u,
        [l]: c,
        [s]: D
      });
      return {
        ...h,
        data: {
          x: h.x - e,
          y: h.y - C,
          enabled: {
            [l]: t,
            [s]: i
          }
        }
      };
    }
  };
}, GDA = function(A) {
  return A === void 0 && (A = {}), {
    options: A,
    fn(u) {
      const {
        x: e,
        y: C,
        placement: B,
        rects: g,
        middlewareData: t
      } = u, {
        offset: i = 0,
        mainAxis: I = !0,
        crossAxis: o = !0
      } = Xg(A, u), E = {
        x: e,
        y: C
      }, Q = PB(B), s = Q9(Q);
      let l = E[s], c = E[Q];
      const D = Xg(i, u), h = typeof D == "number" ? {
        mainAxis: D,
        crossAxis: 0
      } : {
        mainAxis: 0,
        crossAxis: 0,
        ...D
      };
      if (I) {
        const p = s === "y" ? "height" : "width", k = g.reference[s] - g.floating[p] + h.mainAxis, b = g.reference[s] + g.reference[p] - h.mainAxis;
        l < k ? l = k : l > b && (l = b);
      }
      if (o) {
        var F, m;
        const p = s === "y" ? "width" : "height", k = nU.has(_g(B)), b = g.reference[Q] - g.floating[p] + (k && ((F = t.offset) == null ? void 0 : F[Q]) || 0) + (k ? 0 : h.crossAxis), f = g.reference[Q] + g.reference[p] + (k ? 0 : ((m = t.offset) == null ? void 0 : m[Q]) || 0) - (k ? h.crossAxis : 0);
        c < b ? c = b : c > f && (c = f);
      }
      return {
        [s]: l,
        [Q]: c
      };
    }
  };
}, fDA = function(A) {
  return A === void 0 && (A = {}), {
    name: "size",
    options: A,
    async fn(u) {
      var e, C;
      const {
        placement: B,
        rects: g,
        platform: t,
        elements: i
      } = u, {
        apply: I = () => {
        },
        ...o
      } = Xg(A, u), E = await t.detectOverflow(u, o), Q = _g(B), s = bI(B), l = PB(B) === "y", {
        width: c,
        height: D
      } = g.floating;
      let h, F;
      Q === "top" || Q === "bottom" ? (h = Q, F = s === (await (t.isRTL == null ? void 0 : t.isRTL(i.floating)) ? "start" : "end") ? "left" : "right") : (F = Q, h = s === "end" ? "top" : "bottom");
      const m = D - E.top - E.bottom, p = c - E.left - E.right, k = oi(D - E[h], m), b = oi(c - E[F], p), f = !u.middlewareData.shift;
      let L = k, N = b;
      if ((e = u.middlewareData.shift) != null && e.enabled.x && (N = p), (C = u.middlewareData.shift) != null && C.enabled.y && (L = m), f && !s) {
        const v = aC(E.left, 0), K = aC(E.right, 0), q = aC(E.top, 0), j = aC(E.bottom, 0);
        l ? N = c - 2 * (v !== 0 || K !== 0 ? v + K : aC(E.left, E.right)) : L = D - 2 * (q !== 0 || j !== 0 ? q + j : aC(E.top, E.bottom));
      }
      await I({
        ...u,
        availableWidth: N,
        availableHeight: L
      });
      const M = await t.getDimensions(i.floating);
      return c !== M.width || D !== M.height ? {
        reset: {
          rects: !0
        }
      } : {};
    }
  };
};
function S4() {
  return typeof window < "u";
}
function UI(A) {
  return rU(A) ? (A.nodeName || "").toLowerCase() : "#document";
}
function QC(A) {
  var u;
  return (A == null || (u = A.ownerDocument) == null ? void 0 : u.defaultView) || window;
}
function tg(A) {
  var u;
  return (u = (rU(A) ? A.ownerDocument : A.document) || window.document) == null ? void 0 : u.documentElement;
}
function rU(A) {
  return S4() ? A instanceof Node || A instanceof QC(A).Node : !1;
}
function FB(A) {
  return S4() ? A instanceof Element || A instanceof QC(A).Element : !1;
}
function Ct(A) {
  return S4() ? A instanceof HTMLElement || A instanceof QC(A).HTMLElement : !1;
}
function wp(A) {
  return !S4() || typeof ShadowRoot > "u" ? !1 : A instanceof ShadowRoot || A instanceof QC(A).ShadowRoot;
}
function Fn(A) {
  const {
    overflow: u,
    overflowX: e,
    overflowY: C,
    display: B
  } = pB(A);
  return /auto|scroll|overlay|hidden|clip/.test(u + C + e) && B !== "inline" && B !== "contents";
}
function LDA(A) {
  return /^(table|td|th)$/.test(UI(A));
}
function N4(A) {
  try {
    if (A.matches(":popover-open"))
      return !0;
  } catch {
  }
  try {
    return A.matches(":modal");
  } catch {
    return !1;
  }
}
const xDA = /transform|translate|scale|rotate|perspective|filter/, SDA = /paint|layout|strict|content/, AE = (A) => !!A && A !== "none";
let Td;
function s9(A) {
  const u = FB(A) ? pB(A) : A;
  return AE(u.transform) || AE(u.translate) || AE(u.scale) || AE(u.rotate) || AE(u.perspective) || !l9() && (AE(u.backdropFilter) || AE(u.filter)) || xDA.test(u.willChange || "") || SDA.test(u.contain || "");
}
function NDA(A) {
  let u = Qi(A);
  for (; Ct(u) && !cI(u); ) {
    if (s9(u))
      return u;
    if (N4(u))
      return null;
    u = Qi(u);
  }
  return null;
}
function l9() {
  return Td == null && (Td = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), Td;
}
function cI(A) {
  return /^(html|body|#document)$/.test(UI(A));
}
function pB(A) {
  return QC(A).getComputedStyle(A);
}
function R4(A) {
  return FB(A) ? {
    scrollLeft: A.scrollLeft,
    scrollTop: A.scrollTop
  } : {
    scrollLeft: A.scrollX,
    scrollTop: A.scrollY
  };
}
function Qi(A) {
  if (UI(A) === "html")
    return A;
  const u = (
    // Step into the shadow DOM of the parent of a slotted node.
    A.assignedSlot || // DOM Element detected.
    A.parentNode || // ShadowRoot detected.
    wp(A) && A.host || // Fallback.
    tg(A)
  );
  return wp(u) ? u.host : u;
}
function sU(A) {
  const u = Qi(A);
  return cI(u) ? A.ownerDocument ? A.ownerDocument.body : A.body : Ct(u) && Fn(u) ? u : sU(u);
}
function un(A, u, e) {
  var C;
  u === void 0 && (u = []), e === void 0 && (e = !0);
  const B = sU(A), g = B === ((C = A.ownerDocument) == null ? void 0 : C.body), t = QC(B);
  if (g) {
    const i = p1(t);
    return u.concat(t, t.visualViewport || [], Fn(B) ? B : [], i && e ? un(i) : []);
  } else
    return u.concat(B, un(B, [], e));
}
function p1(A) {
  return A.parent && Object.getPrototypeOf(A.parent) ? A.frameElement : null;
}
function lU(A) {
  const u = pB(A);
  let e = parseFloat(u.width) || 0, C = parseFloat(u.height) || 0;
  const B = Ct(A), g = B ? A.offsetWidth : e, t = B ? A.offsetHeight : C, i = vl(e) !== g || vl(C) !== t;
  return i && (e = g, C = t), {
    width: e,
    height: C,
    $: i
  };
}
function c9(A) {
  return FB(A) ? A : A.contextElement;
}
function _a(A) {
  const u = c9(A);
  if (!Ct(u))
    return XB(1);
  const e = u.getBoundingClientRect(), {
    width: C,
    height: B,
    $: g
  } = lU(u);
  let t = (g ? vl(e.width) : e.width) / C, i = (g ? vl(e.height) : e.height) / B;
  return (!t || !Number.isFinite(t)) && (t = 1), (!i || !Number.isFinite(i)) && (i = 1), {
    x: t,
    y: i
  };
}
const RDA = /* @__PURE__ */ XB(0);
function cU(A) {
  const u = QC(A);
  return !l9() || !u.visualViewport ? RDA : {
    x: u.visualViewport.offsetLeft,
    y: u.visualViewport.offsetTop
  };
}
function MDA(A, u, e) {
  return u === void 0 && (u = !1), !e || u && e !== QC(A) ? !1 : u;
}
function vE(A, u, e, C) {
  u === void 0 && (u = !1), e === void 0 && (e = !1);
  const B = A.getBoundingClientRect(), g = c9(A);
  let t = XB(1);
  u && (C ? FB(C) && (t = _a(C)) : t = _a(A));
  const i = MDA(g, e, C) ? cU(g) : XB(0);
  let I = (B.left + i.x) / t.x, o = (B.top + i.y) / t.y, E = B.width / t.x, Q = B.height / t.y;
  if (g) {
    const s = QC(g), l = C && FB(C) ? QC(C) : C;
    let c = s, D = p1(c);
    for (; D && C && l !== c; ) {
      const h = _a(D), F = D.getBoundingClientRect(), m = pB(D), p = F.left + (D.clientLeft + parseFloat(m.paddingLeft)) * h.x, k = F.top + (D.clientTop + parseFloat(m.paddingTop)) * h.y;
      I *= h.x, o *= h.y, E *= h.x, Q *= h.y, I += p, o += k, c = QC(D), D = p1(c);
    }
  }
  return Kl({
    width: E,
    height: Q,
    x: I,
    y: o
  });
}
function M4(A, u) {
  const e = R4(A).scrollLeft;
  return u ? u.left + e : vE(tg(A)).left + e;
}
function dU(A, u) {
  const e = A.getBoundingClientRect(), C = e.left + u.scrollLeft - M4(A, e), B = e.top + u.scrollTop;
  return {
    x: C,
    y: B
  };
}
function YDA(A) {
  let {
    elements: u,
    rect: e,
    offsetParent: C,
    strategy: B
  } = A;
  const g = B === "fixed", t = tg(C), i = u ? N4(u.floating) : !1;
  if (C === t || i && g)
    return e;
  let I = {
    scrollLeft: 0,
    scrollTop: 0
  }, o = XB(1);
  const E = XB(0), Q = Ct(C);
  if ((Q || !Q && !g) && ((UI(C) !== "body" || Fn(t)) && (I = R4(C)), Q)) {
    const l = vE(C);
    o = _a(C), E.x = l.x + C.clientLeft, E.y = l.y + C.clientTop;
  }
  const s = t && !Q && !g ? dU(t, I) : XB(0);
  return {
    width: e.width * o.x,
    height: e.height * o.y,
    x: e.x * o.x - I.scrollLeft * o.x + E.x + s.x,
    y: e.y * o.y - I.scrollTop * o.y + E.y + s.y
  };
}
function vDA(A) {
  return Array.from(A.getClientRects());
}
function HDA(A) {
  const u = tg(A), e = R4(A), C = A.ownerDocument.body, B = aC(u.scrollWidth, u.clientWidth, C.scrollWidth, C.clientWidth), g = aC(u.scrollHeight, u.clientHeight, C.scrollHeight, C.clientHeight);
  let t = -e.scrollLeft + M4(A);
  const i = -e.scrollTop;
  return pB(C).direction === "rtl" && (t += aC(u.clientWidth, C.clientWidth) - B), {
    width: B,
    height: g,
    x: t,
    y: i
  };
}
const Fp = 25;
function KDA(A, u) {
  const e = QC(A), C = tg(A), B = e.visualViewport;
  let g = C.clientWidth, t = C.clientHeight, i = 0, I = 0;
  if (B) {
    g = B.width, t = B.height;
    const E = l9();
    (!E || E && u === "fixed") && (i = B.offsetLeft, I = B.offsetTop);
  }
  const o = M4(C);
  if (o <= 0) {
    const E = C.ownerDocument, Q = E.body, s = getComputedStyle(Q), l = E.compatMode === "CSS1Compat" && parseFloat(s.marginLeft) + parseFloat(s.marginRight) || 0, c = Math.abs(C.clientWidth - Q.clientWidth - l);
    c <= Fp && (g -= c);
  } else o <= Fp && (g += o);
  return {
    width: g,
    height: t,
    x: i,
    y: I
  };
}
function JDA(A, u) {
  const e = vE(A, !0, u === "fixed"), C = e.top + A.clientTop, B = e.left + A.clientLeft, g = Ct(A) ? _a(A) : XB(1), t = A.clientWidth * g.x, i = A.clientHeight * g.y, I = B * g.x, o = C * g.y;
  return {
    width: t,
    height: i,
    x: I,
    y: o
  };
}
function pp(A, u, e) {
  let C;
  if (u === "viewport")
    C = KDA(A, e);
  else if (u === "document")
    C = HDA(tg(A));
  else if (FB(u))
    C = JDA(u, e);
  else {
    const B = cU(A);
    C = {
      x: u.x - B.x,
      y: u.y - B.y,
      width: u.width,
      height: u.height
    };
  }
  return Kl(C);
}
function DU(A, u) {
  const e = Qi(A);
  return e === u || !FB(e) || cI(e) ? !1 : pB(e).position === "fixed" || DU(e, u);
}
function ZDA(A, u) {
  const e = u.get(A);
  if (e)
    return e;
  let C = un(A, [], !1).filter((i) => FB(i) && UI(i) !== "body"), B = null;
  const g = pB(A).position === "fixed";
  let t = g ? Qi(A) : A;
  for (; FB(t) && !cI(t); ) {
    const i = pB(t), I = s9(t);
    !I && i.position === "fixed" && (B = null), (g ? !I && !B : !I && i.position === "static" && !!B && (B.position === "absolute" || B.position === "fixed") || Fn(t) && !I && DU(A, t)) ? C = C.filter((E) => E !== t) : B = i, t = Qi(t);
  }
  return u.set(A, C), C;
}
function qDA(A) {
  let {
    element: u,
    boundary: e,
    rootBoundary: C,
    strategy: B
  } = A;
  const t = [...e === "clippingAncestors" ? N4(u) ? [] : ZDA(u, this._c) : [].concat(e), C], i = pp(u, t[0], B);
  let I = i.top, o = i.right, E = i.bottom, Q = i.left;
  for (let s = 1; s < t.length; s++) {
    const l = pp(u, t[s], B);
    I = aC(l.top, I), o = oi(l.right, o), E = oi(l.bottom, E), Q = aC(l.left, Q);
  }
  return {
    width: o - Q,
    height: E - I,
    x: Q,
    y: I
  };
}
function WDA(A) {
  const {
    width: u,
    height: e
  } = lU(A);
  return {
    width: u,
    height: e
  };
}
function jDA(A, u, e) {
  const C = Ct(u), B = tg(u), g = e === "fixed", t = vE(A, !0, g, u);
  let i = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const I = XB(0);
  function o() {
    I.x = M4(B);
  }
  if (C || !C && !g)
    if ((UI(u) !== "body" || Fn(B)) && (i = R4(u)), C) {
      const l = vE(u, !0, g, u);
      I.x = l.x + u.clientLeft, I.y = l.y + u.clientTop;
    } else B && o();
  g && !C && B && o();
  const E = B && !C && !g ? dU(B, i) : XB(0), Q = t.left + i.scrollLeft - I.x - E.x, s = t.top + i.scrollTop - I.y - E.y;
  return {
    x: Q,
    y: s,
    width: t.width,
    height: t.height
  };
}
function zd(A) {
  return pB(A).position === "static";
}
function mp(A, u) {
  if (!Ct(A) || pB(A).position === "fixed")
    return null;
  if (u)
    return u(A);
  let e = A.offsetParent;
  return tg(A) === e && (e = e.ownerDocument.body), e;
}
function hU(A, u) {
  const e = QC(A);
  if (N4(A))
    return e;
  if (!Ct(A)) {
    let B = Qi(A);
    for (; B && !cI(B); ) {
      if (FB(B) && !zd(B))
        return B;
      B = Qi(B);
    }
    return e;
  }
  let C = mp(A, u);
  for (; C && LDA(C) && zd(C); )
    C = mp(C, u);
  return C && cI(C) && zd(C) && !s9(C) ? e : C || NDA(A) || e;
}
const TDA = async function(A) {
  const u = this.getOffsetParent || hU, e = this.getDimensions, C = await e(A.floating);
  return {
    reference: jDA(A.reference, await u(A.floating), A.strategy),
    floating: {
      x: 0,
      y: 0,
      width: C.width,
      height: C.height
    }
  };
};
function zDA(A) {
  return pB(A).direction === "rtl";
}
const PDA = {
  convertOffsetParentRelativeRectToViewportRelativeRect: YDA,
  getDocumentElement: tg,
  getClippingRect: qDA,
  getOffsetParent: hU,
  getElementRects: TDA,
  getClientRects: vDA,
  getDimensions: WDA,
  getScale: _a,
  isElement: FB,
  isRTL: zDA
};
function wU(A, u) {
  return A.x === u.x && A.y === u.y && A.width === u.width && A.height === u.height;
}
function ODA(A, u) {
  let e = null, C;
  const B = tg(A);
  function g() {
    var i;
    clearTimeout(C), (i = e) == null || i.disconnect(), e = null;
  }
  function t(i, I) {
    i === void 0 && (i = !1), I === void 0 && (I = 1), g();
    const o = A.getBoundingClientRect(), {
      left: E,
      top: Q,
      width: s,
      height: l
    } = o;
    if (i || u(), !s || !l)
      return;
    const c = os(Q), D = os(B.clientWidth - (E + s)), h = os(B.clientHeight - (Q + l)), F = os(E), p = {
      rootMargin: -c + "px " + -D + "px " + -h + "px " + -F + "px",
      threshold: aC(0, oi(1, I)) || 1
    };
    let k = !0;
    function b(f) {
      const L = f[0].intersectionRatio;
      if (L !== I) {
        if (!k)
          return t();
        L ? t(!1, L) : C = setTimeout(() => {
          t(!1, 1e-7);
        }, 1e3);
      }
      L === 1 && !wU(o, A.getBoundingClientRect()) && t(), k = !1;
    }
    try {
      e = new IntersectionObserver(b, {
        ...p,
        // Handle <iframe>s
        root: B.ownerDocument
      });
    } catch {
      e = new IntersectionObserver(b, p);
    }
    e.observe(A);
  }
  return t(!0), g;
}
function VDA(A, u, e, C) {
  C === void 0 && (C = {});
  const {
    ancestorScroll: B = !0,
    ancestorResize: g = !0,
    elementResize: t = typeof ResizeObserver == "function",
    layoutShift: i = typeof IntersectionObserver == "function",
    animationFrame: I = !1
  } = C, o = c9(A), E = B || g ? [...o ? un(o) : [], ...u ? un(u) : []] : [];
  E.forEach((F) => {
    B && F.addEventListener("scroll", e, {
      passive: !0
    }), g && F.addEventListener("resize", e);
  });
  const Q = o && i ? ODA(o, e) : null;
  let s = -1, l = null;
  t && (l = new ResizeObserver((F) => {
    let [m] = F;
    m && m.target === o && l && u && (l.unobserve(u), cancelAnimationFrame(s), s = requestAnimationFrame(() => {
      var p;
      (p = l) == null || p.observe(u);
    })), e();
  }), o && !I && l.observe(o), u && l.observe(u));
  let c, D = I ? vE(A) : null;
  I && h();
  function h() {
    const F = vE(A);
    D && !wU(D, F) && e(), D = F, c = requestAnimationFrame(h);
  }
  return e(), () => {
    var F;
    E.forEach((m) => {
      B && m.removeEventListener("scroll", e), g && m.removeEventListener("resize", e);
    }), Q?.(), (F = l) == null || F.disconnect(), l = null, I && cancelAnimationFrame(c);
  };
}
const XDA = bDA, _DA = UDA, $DA = mDA, A1A = fDA, u1A = kDA, kp = pDA, e1A = GDA, C1A = (A, u, e) => {
  const C = /* @__PURE__ */ new Map(), B = {
    platform: PDA,
    ...e
  }, g = {
    ...B.platform,
    _c: C
  };
  return FDA(A, u, {
    ...B,
    platform: g
  });
};
var B1A = typeof document < "u", g1A = function() {
}, Ws = B1A ? x.useLayoutEffect : g1A;
function Jl(A, u) {
  if (A === u)
    return !0;
  if (typeof A != typeof u)
    return !1;
  if (typeof A == "function" && A.toString() === u.toString())
    return !0;
  let e, C, B;
  if (A && u && typeof A == "object") {
    if (Array.isArray(A)) {
      if (e = A.length, e !== u.length) return !1;
      for (C = e; C-- !== 0; )
        if (!Jl(A[C], u[C]))
          return !1;
      return !0;
    }
    if (B = Object.keys(A), e = B.length, e !== Object.keys(u).length)
      return !1;
    for (C = e; C-- !== 0; )
      if (!{}.hasOwnProperty.call(u, B[C]))
        return !1;
    for (C = e; C-- !== 0; ) {
      const g = B[C];
      if (!(g === "_owner" && A.$$typeof) && !Jl(A[g], u[g]))
        return !1;
    }
    return !0;
  }
  return A !== A && u !== u;
}
function FU(A) {
  return typeof window > "u" ? 1 : (A.ownerDocument.defaultView || window).devicePixelRatio || 1;
}
function yp(A, u) {
  const e = FU(A);
  return Math.round(u * e) / e;
}
function Pd(A) {
  const u = x.useRef(A);
  return Ws(() => {
    u.current = A;
  }), u;
}
function t1A(A) {
  A === void 0 && (A = {});
  const {
    placement: u = "bottom",
    strategy: e = "absolute",
    middleware: C = [],
    platform: B,
    elements: {
      reference: g,
      floating: t
    } = {},
    transform: i = !0,
    whileElementsMounted: I,
    open: o
  } = A, [E, Q] = x.useState({
    x: 0,
    y: 0,
    strategy: e,
    placement: u,
    middlewareData: {},
    isPositioned: !1
  }), [s, l] = x.useState(C);
  Jl(s, C) || l(C);
  const [c, D] = x.useState(null), [h, F] = x.useState(null), m = x.useCallback((P) => {
    P !== f.current && (f.current = P, D(P));
  }, []), p = x.useCallback((P) => {
    P !== L.current && (L.current = P, F(P));
  }, []), k = g || c, b = t || h, f = x.useRef(null), L = x.useRef(null), N = x.useRef(E), M = I != null, v = Pd(I), K = Pd(B), q = Pd(o), j = x.useCallback(() => {
    if (!f.current || !L.current)
      return;
    const P = {
      placement: u,
      strategy: e,
      middleware: s
    };
    K.current && (P.platform = K.current), C1A(f.current, L.current, P).then((_) => {
      const CA = {
        ..._,
        // The floating element's position may be recomputed while it's closed
        // but still mounted (such as when transitioning out). To ensure
        // `isPositioned` will be `false` initially on the next open, avoid
        // setting it to `true` when `open === false` (must be specified).
        isPositioned: q.current !== !1
      };
      uA.current && !Jl(N.current, CA) && (N.current = CA, O0.flushSync(() => {
        Q(CA);
      }));
    });
  }, [s, u, e, K, q]);
  Ws(() => {
    o === !1 && N.current.isPositioned && (N.current.isPositioned = !1, Q((P) => ({
      ...P,
      isPositioned: !1
    })));
  }, [o]);
  const uA = x.useRef(!1);
  Ws(() => (uA.current = !0, () => {
    uA.current = !1;
  }), []), Ws(() => {
    if (k && (f.current = k), b && (L.current = b), k && b) {
      if (v.current)
        return v.current(k, b, j);
      j();
    }
  }, [k, b, j, v, M]);
  const O = x.useMemo(() => ({
    reference: f,
    floating: L,
    setReference: m,
    setFloating: p
  }), [m, p]), $ = x.useMemo(() => ({
    reference: k,
    floating: b
  }), [k, b]), X = x.useMemo(() => {
    const P = {
      position: e,
      left: 0,
      top: 0
    };
    if (!$.floating)
      return P;
    const _ = yp($.floating, E.x), CA = yp($.floating, E.y);
    return i ? {
      ...P,
      transform: "translate(" + _ + "px, " + CA + "px)",
      ...FU($.floating) >= 1.5 && {
        willChange: "transform"
      }
    } : {
      position: e,
      left: _,
      top: CA
    };
  }, [e, i, $.floating, E.x, E.y]);
  return x.useMemo(() => ({
    ...E,
    update: j,
    refs: O,
    elements: $,
    floatingStyles: X
  }), [E, j, O, $, X]);
}
const i1A = (A) => {
  function u(e) {
    return {}.hasOwnProperty.call(e, "current");
  }
  return {
    name: "arrow",
    options: A,
    fn(e) {
      const {
        element: C,
        padding: B
      } = typeof A == "function" ? A(e) : A;
      return C && u(C) ? C.current != null ? kp({
        element: C.current,
        padding: B
      }).fn(e) : {} : C ? kp({
        element: C,
        padding: B
      }).fn(e) : {};
    }
  };
}, E1A = (A, u) => {
  const e = XDA(A);
  return {
    name: e.name,
    fn: e.fn,
    options: [A, u]
  };
}, a1A = (A, u) => {
  const e = _DA(A);
  return {
    name: e.name,
    fn: e.fn,
    options: [A, u]
  };
}, I1A = (A, u) => ({
  fn: e1A(A).fn,
  options: [A, u]
}), o1A = (A, u) => {
  const e = $DA(A);
  return {
    name: e.name,
    fn: e.fn,
    options: [A, u]
  };
}, Q1A = (A, u) => {
  const e = A1A(A);
  return {
    name: e.name,
    fn: e.fn,
    options: [A, u]
  };
}, n1A = (A, u) => {
  const e = u1A(A);
  return {
    name: e.name,
    fn: e.fn,
    options: [A, u]
  };
}, r1A = (A, u) => {
  const e = i1A(A);
  return {
    name: e.name,
    fn: e.fn,
    options: [A, u]
  };
};
var s1A = "Arrow", pU = x.forwardRef((A, u) => {
  const { children: e, width: C = 10, height: B = 5, ...g } = A;
  return /* @__PURE__ */ r.jsx(
    et.svg,
    {
      ...g,
      ref: u,
      width: C,
      height: B,
      viewBox: "0 0 30 10",
      preserveAspectRatio: "none",
      children: A.asChild ? e : /* @__PURE__ */ r.jsx("polygon", { points: "0,0 30,0 15,10" })
    }
  );
});
pU.displayName = s1A;
var l1A = pU;
function c1A(A) {
  const [u, e] = x.useState(void 0);
  return YE(() => {
    if (A) {
      e({ width: A.offsetWidth, height: A.offsetHeight });
      const C = new ResizeObserver((B) => {
        if (!Array.isArray(B) || !B.length)
          return;
        const g = B[0];
        let t, i;
        if ("borderBoxSize" in g) {
          const I = g.borderBoxSize, o = Array.isArray(I) ? I[0] : I;
          t = o.inlineSize, i = o.blockSize;
        } else
          t = A.offsetWidth, i = A.offsetHeight;
        e({ width: t, height: i });
      });
      return C.observe(A, { box: "border-box" }), () => C.unobserve(A);
    } else
      e(void 0);
  }, [A]), u;
}
var d9 = "Popper", [mU, kU] = tU(d9), [d1A, yU] = mU(d9), bU = (A) => {
  const { __scopePopper: u, children: e } = A, [C, B] = x.useState(null);
  return /* @__PURE__ */ r.jsx(d1A, { scope: u, anchor: C, onAnchorChange: B, children: e });
};
bU.displayName = d9;
var UU = "PopperAnchor", GU = x.forwardRef(
  (A, u) => {
    const { __scopePopper: e, virtualRef: C, ...B } = A, g = yU(UU, e), t = x.useRef(null), i = li(u, t);
    return x.useEffect(() => {
      g.onAnchorChange(C?.current || t.current);
    }), C ? null : /* @__PURE__ */ r.jsx(et.div, { ...B, ref: i });
  }
);
GU.displayName = UU;
var D9 = "PopperContent", [D1A, h1A] = mU(D9), fU = x.forwardRef(
  (A, u) => {
    const {
      __scopePopper: e,
      side: C = "bottom",
      sideOffset: B = 0,
      align: g = "center",
      alignOffset: t = 0,
      arrowPadding: i = 0,
      avoidCollisions: I = !0,
      collisionBoundary: o = [],
      collisionPadding: E = 0,
      sticky: Q = "partial",
      hideWhenDetached: s = !1,
      updatePositionStrategy: l = "optimized",
      onPlaced: c,
      ...D
    } = A, h = yU(D9, e), [F, m] = x.useState(null), p = li(u, (mA) => m(mA)), [k, b] = x.useState(null), f = c1A(k), L = f?.width ?? 0, N = f?.height ?? 0, M = C + (g !== "center" ? "-" + g : ""), v = typeof E == "number" ? E : { top: 0, right: 0, bottom: 0, left: 0, ...E }, K = Array.isArray(o) ? o : [o], q = K.length > 0, j = {
      padding: v,
      boundary: K.filter(F1A),
      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries
      altBoundary: q
    }, { refs: uA, floatingStyles: O, placement: $, isPositioned: X, middlewareData: P } = t1A({
      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues
      strategy: "fixed",
      placement: M,
      whileElementsMounted: (...mA) => VDA(...mA, {
        animationFrame: l === "always"
      }),
      elements: {
        reference: h.anchor
      },
      middleware: [
        E1A({ mainAxis: B + N, alignmentAxis: t }),
        I && a1A({
          mainAxis: !0,
          crossAxis: !1,
          limiter: Q === "partial" ? I1A() : void 0,
          ...j
        }),
        I && o1A({ ...j }),
        Q1A({
          ...j,
          apply: ({ elements: mA, rects: FA, availableWidth: TA, availableHeight: WA }) => {
            const { width: ru, height: _u } = FA.reference, N0 = mA.floating.style;
            N0.setProperty("--radix-popper-available-width", `${TA}px`), N0.setProperty("--radix-popper-available-height", `${WA}px`), N0.setProperty("--radix-popper-anchor-width", `${ru}px`), N0.setProperty("--radix-popper-anchor-height", `${_u}px`);
          }
        }),
        k && r1A({ element: k, padding: i }),
        p1A({ arrowWidth: L, arrowHeight: N }),
        s && n1A({ strategy: "referenceHidden", ...j })
      ]
    }), [_, CA] = SU($), T = Ii(c);
    YE(() => {
      X && T?.();
    }, [X, T]);
    const gA = P.arrow?.x, GA = P.arrow?.y, fA = P.arrow?.centerOffset !== 0, [qA, JA] = x.useState();
    return YE(() => {
      F && JA(window.getComputedStyle(F).zIndex);
    }, [F]), /* @__PURE__ */ r.jsx(
      "div",
      {
        ref: uA.setFloating,
        "data-radix-popper-content-wrapper": "",
        style: {
          ...O,
          transform: X ? O.transform : "translate(0, -200%)",
          // keep off the page when measuring
          minWidth: "max-content",
          zIndex: qA,
          "--radix-popper-transform-origin": [
            P.transformOrigin?.x,
            P.transformOrigin?.y
          ].join(" "),
          // hide the content if using the hide middleware and should be hidden
          // set visibility to hidden and disable pointer events so the UI behaves
          // as if the PopperContent isn't there at all
          ...P.hide?.referenceHidden && {
            visibility: "hidden",
            pointerEvents: "none"
          }
        },
        dir: A.dir,
        children: /* @__PURE__ */ r.jsx(
          D1A,
          {
            scope: e,
            placedSide: _,
            onArrowChange: b,
            arrowX: gA,
            arrowY: GA,
            shouldHideArrow: fA,
            children: /* @__PURE__ */ r.jsx(
              et.div,
              {
                "data-side": _,
                "data-align": CA,
                ...D,
                ref: p,
                style: {
                  ...D.style,
                  // if the PopperContent hasn't been placed yet (not all measurements done)
                  // we prevent animations so that users's animation don't kick in too early referring wrong sides
                  animation: X ? void 0 : "none"
                }
              }
            )
          }
        )
      }
    );
  }
);
fU.displayName = D9;
var LU = "PopperArrow", w1A = {
  top: "bottom",
  right: "left",
  bottom: "top",
  left: "right"
}, xU = x.forwardRef(function(u, e) {
  const { __scopePopper: C, ...B } = u, g = h1A(LU, C), t = w1A[g.placedSide];
  return (
    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)
    // doesn't report size as we'd expect on SVG elements.
    // it reports their bounding box which is effectively the largest path inside the SVG.
    /* @__PURE__ */ r.jsx(
      "span",
      {
        ref: g.onArrowChange,
        style: {
          position: "absolute",
          left: g.arrowX,
          top: g.arrowY,
          [t]: 0,
          transformOrigin: {
            top: "",
            right: "0 0",
            bottom: "center 0",
            left: "100% 0"
          }[g.placedSide],
          transform: {
            top: "translateY(100%)",
            right: "translateY(50%) rotate(90deg) translateX(-50%)",
            bottom: "rotate(180deg)",
            left: "translateY(50%) rotate(-90deg) translateX(50%)"
          }[g.placedSide],
          visibility: g.shouldHideArrow ? "hidden" : void 0
        },
        children: /* @__PURE__ */ r.jsx(
          l1A,
          {
            ...B,
            ref: e,
            style: {
              ...B.style,
              // ensures the element can be measured correctly (mostly for if SVG)
              display: "block"
            }
          }
        )
      }
    )
  );
});
xU.displayName = LU;
function F1A(A) {
  return A !== null;
}
var p1A = (A) => ({
  name: "transformOrigin",
  options: A,
  fn(u) {
    const { placement: e, rects: C, middlewareData: B } = u, t = B.arrow?.centerOffset !== 0, i = t ? 0 : A.arrowWidth, I = t ? 0 : A.arrowHeight, [o, E] = SU(e), Q = { start: "0%", center: "50%", end: "100%" }[E], s = (B.arrow?.x ?? 0) + i / 2, l = (B.arrow?.y ?? 0) + I / 2;
    let c = "", D = "";
    return o === "bottom" ? (c = t ? Q : `${s}px`, D = `${-I}px`) : o === "top" ? (c = t ? Q : `${s}px`, D = `${C.floating.height + I}px`) : o === "right" ? (c = `${-I}px`, D = t ? Q : `${l}px`) : o === "left" && (c = `${C.floating.width + I}px`, D = t ? Q : `${l}px`), { data: { x: c, y: D } };
  }
});
function SU(A) {
  const [u, e = "center"] = A.split("-");
  return [u, e];
}
var m1A = bU, NU = GU, k1A = fU, y1A = xU, b1A = "Portal", RU = x.forwardRef((A, u) => {
  const { container: e, ...C } = A, [B, g] = x.useState(!1);
  YE(() => g(!0), []);
  const t = e || B && globalThis?.document?.body;
  return t ? vdA.createPortal(/* @__PURE__ */ r.jsx(et.div, { ...C, ref: u }), t) : null;
});
RU.displayName = b1A;
function U1A(A, u) {
  return x.useReducer((e, C) => u[e][C] ?? e, A);
}
var h9 = (A) => {
  const { present: u, children: e } = A, C = G1A(u), B = typeof e == "function" ? e({ present: C.isPresent }) : x.Children.only(e), g = li(C.ref, f1A(B));
  return typeof e == "function" || C.isPresent ? x.cloneElement(B, { ref: g }) : null;
};
h9.displayName = "Presence";
function G1A(A) {
  const [u, e] = x.useState(), C = x.useRef({}), B = x.useRef(A), g = x.useRef("none"), t = A ? "mounted" : "unmounted", [i, I] = U1A(t, {
    mounted: {
      UNMOUNT: "unmounted",
      ANIMATION_OUT: "unmountSuspended"
    },
    unmountSuspended: {
      MOUNT: "mounted",
      ANIMATION_END: "unmounted"
    },
    unmounted: {
      MOUNT: "mounted"
    }
  });
  return x.useEffect(() => {
    const o = Qs(C.current);
    g.current = i === "mounted" ? o : "none";
  }, [i]), YE(() => {
    const o = C.current, E = B.current;
    if (E !== A) {
      const s = g.current, l = Qs(o);
      A ? I("MOUNT") : l === "none" || o?.display === "none" ? I("UNMOUNT") : I(E && s !== l ? "ANIMATION_OUT" : "UNMOUNT"), B.current = A;
    }
  }, [A, I]), YE(() => {
    if (u) {
      let o;
      const E = u.ownerDocument.defaultView ?? window, Q = (l) => {
        const D = Qs(C.current).includes(l.animationName);
        if (l.target === u && D && (I("ANIMATION_END"), !B.current)) {
          const h = u.style.animationFillMode;
          u.style.animationFillMode = "forwards", o = E.setTimeout(() => {
            u.style.animationFillMode === "forwards" && (u.style.animationFillMode = h);
          });
        }
      }, s = (l) => {
        l.target === u && (g.current = Qs(C.current));
      };
      return u.addEventListener("animationstart", s), u.addEventListener("animationcancel", Q), u.addEventListener("animationend", Q), () => {
        E.clearTimeout(o), u.removeEventListener("animationstart", s), u.removeEventListener("animationcancel", Q), u.removeEventListener("animationend", Q);
      };
    } else
      I("ANIMATION_END");
  }, [u, I]), {
    isPresent: ["mounted", "unmountSuspended"].includes(i),
    ref: x.useCallback((o) => {
      o && (C.current = getComputedStyle(o)), e(o);
    }, [])
  };
}
function Qs(A) {
  return A?.animationName || "none";
}
function f1A(A) {
  let u = Object.getOwnPropertyDescriptor(A.props, "ref")?.get, e = u && "isReactWarning" in u && u.isReactWarning;
  return e ? A.ref : (u = Object.getOwnPropertyDescriptor(A, "ref")?.get, e = u && "isReactWarning" in u && u.isReactWarning, e ? A.props.ref : A.props.ref || A.ref);
}
function L1A({
  prop: A,
  defaultProp: u,
  onChange: e = () => {
  }
}) {
  const [C, B] = x1A({ defaultProp: u, onChange: e }), g = A !== void 0, t = g ? A : C, i = Ii(e), I = x.useCallback(
    (o) => {
      if (g) {
        const Q = typeof o == "function" ? o(A) : o;
        Q !== A && i(Q);
      } else
        B(o);
    },
    [g, A, B, i]
  );
  return [t, I];
}
function x1A({
  defaultProp: A,
  onChange: u
}) {
  const e = x.useState(A), [C] = e, B = x.useRef(C), g = Ii(u);
  return x.useEffect(() => {
    B.current !== C && (g(C), B.current = C);
  }, [C, B, g]), e;
}
var S1A = function(A) {
  if (typeof document > "u")
    return null;
  var u = Array.isArray(A) ? A[0] : A;
  return u.ownerDocument.body;
}, La = /* @__PURE__ */ new WeakMap(), ns = /* @__PURE__ */ new WeakMap(), rs = {}, Od = 0, MU = function(A) {
  return A && (A.host || MU(A.parentNode));
}, N1A = function(A, u) {
  return u.map(function(e) {
    if (A.contains(e))
      return e;
    var C = MU(e);
    return C && A.contains(C) ? C : (console.error("aria-hidden", e, "in not contained inside", A, ". Doing nothing"), null);
  }).filter(function(e) {
    return !!e;
  });
}, R1A = function(A, u, e, C) {
  var B = N1A(u, Array.isArray(A) ? A : [A]);
  rs[e] || (rs[e] = /* @__PURE__ */ new WeakMap());
  var g = rs[e], t = [], i = /* @__PURE__ */ new Set(), I = new Set(B), o = function(Q) {
    !Q || i.has(Q) || (i.add(Q), o(Q.parentNode));
  };
  B.forEach(o);
  var E = function(Q) {
    !Q || I.has(Q) || Array.prototype.forEach.call(Q.children, function(s) {
      if (i.has(s))
        E(s);
      else
        try {
          var l = s.getAttribute(C), c = l !== null && l !== "false", D = (La.get(s) || 0) + 1, h = (g.get(s) || 0) + 1;
          La.set(s, D), g.set(s, h), t.push(s), D === 1 && c && ns.set(s, !0), h === 1 && s.setAttribute(e, "true"), c || s.setAttribute(C, "true");
        } catch (F) {
          console.error("aria-hidden: cannot operate on ", s, F);
        }
    });
  };
  return E(u), i.clear(), Od++, function() {
    t.forEach(function(Q) {
      var s = La.get(Q) - 1, l = g.get(Q) - 1;
      La.set(Q, s), g.set(Q, l), s || (ns.has(Q) || Q.removeAttribute(C), ns.delete(Q)), l || Q.removeAttribute(e);
    }), Od--, Od || (La = /* @__PURE__ */ new WeakMap(), La = /* @__PURE__ */ new WeakMap(), ns = /* @__PURE__ */ new WeakMap(), rs = {});
  };
}, M1A = function(A, u, e) {
  e === void 0 && (e = "data-aria-hidden");
  var C = Array.from(Array.isArray(A) ? A : [A]), B = S1A(A);
  return B ? (C.push.apply(C, Array.from(B.querySelectorAll("[aria-live], script"))), R1A(C, B, e, "aria-hidden")) : function() {
    return null;
  };
}, zB = function() {
  return zB = Object.assign || function(u) {
    for (var e, C = 1, B = arguments.length; C < B; C++) {
      e = arguments[C];
      for (var g in e) Object.prototype.hasOwnProperty.call(e, g) && (u[g] = e[g]);
    }
    return u;
  }, zB.apply(this, arguments);
};
function YU(A, u) {
  var e = {};
  for (var C in A) Object.prototype.hasOwnProperty.call(A, C) && u.indexOf(C) < 0 && (e[C] = A[C]);
  if (A != null && typeof Object.getOwnPropertySymbols == "function")
    for (var B = 0, C = Object.getOwnPropertySymbols(A); B < C.length; B++)
      u.indexOf(C[B]) < 0 && Object.prototype.propertyIsEnumerable.call(A, C[B]) && (e[C[B]] = A[C[B]]);
  return e;
}
function Y1A(A, u, e) {
  if (e || arguments.length === 2) for (var C = 0, B = u.length, g; C < B; C++)
    (g || !(C in u)) && (g || (g = Array.prototype.slice.call(u, 0, C)), g[C] = u[C]);
  return A.concat(g || Array.prototype.slice.call(u));
}
var js = "right-scroll-bar-position", Ts = "width-before-scroll-bar", v1A = "with-scroll-bars-hidden", H1A = "--removed-body-scroll-bar-size";
function Vd(A, u) {
  return typeof A == "function" ? A(u) : A && (A.current = u), A;
}
function K1A(A, u) {
  var e = x.useState(function() {
    return {
      // value
      value: A,
      // last callback
      callback: u,
      // "memoized" public interface
      facade: {
        get current() {
          return e.value;
        },
        set current(C) {
          var B = e.value;
          B !== C && (e.value = C, e.callback(C, B));
        }
      }
    };
  })[0];
  return e.callback = u, e.facade;
}
var J1A = typeof window < "u" ? x.useLayoutEffect : x.useEffect, bp = /* @__PURE__ */ new WeakMap();
function Z1A(A, u) {
  var e = K1A(null, function(C) {
    return A.forEach(function(B) {
      return Vd(B, C);
    });
  });
  return J1A(function() {
    var C = bp.get(e);
    if (C) {
      var B = new Set(C), g = new Set(A), t = e.current;
      B.forEach(function(i) {
        g.has(i) || Vd(i, null);
      }), g.forEach(function(i) {
        B.has(i) || Vd(i, t);
      });
    }
    bp.set(e, A);
  }, [A]), e;
}
function q1A(A) {
  return A;
}
function W1A(A, u) {
  u === void 0 && (u = q1A);
  var e = [], C = !1, B = {
    read: function() {
      if (C)
        throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");
      return e.length ? e[e.length - 1] : A;
    },
    useMedium: function(g) {
      var t = u(g, C);
      return e.push(t), function() {
        e = e.filter(function(i) {
          return i !== t;
        });
      };
    },
    assignSyncMedium: function(g) {
      for (C = !0; e.length; ) {
        var t = e;
        e = [], t.forEach(g);
      }
      e = {
        push: function(i) {
          return g(i);
        },
        filter: function() {
          return e;
        }
      };
    },
    assignMedium: function(g) {
      C = !0;
      var t = [];
      if (e.length) {
        var i = e;
        e = [], i.forEach(g), t = e;
      }
      var I = function() {
        var E = t;
        t = [], E.forEach(g);
      }, o = function() {
        return Promise.resolve().then(I);
      };
      o(), e = {
        push: function(E) {
          t.push(E), o();
        },
        filter: function(E) {
          return t = t.filter(E), e;
        }
      };
    }
  };
  return B;
}
function j1A(A) {
  A === void 0 && (A = {});
  var u = W1A(null);
  return u.options = zB({ async: !0, ssr: !1 }, A), u;
}
var vU = function(A) {
  var u = A.sideCar, e = YU(A, ["sideCar"]);
  if (!u)
    throw new Error("Sidecar: please provide `sideCar` property to import the right car");
  var C = u.read();
  if (!C)
    throw new Error("Sidecar medium not found");
  return x.createElement(C, zB({}, e));
};
vU.isSideCarExport = !0;
function T1A(A, u) {
  return A.useMedium(u), vU;
}
var HU = j1A(), Xd = function() {
}, Y4 = x.forwardRef(function(A, u) {
  var e = x.useRef(null), C = x.useState({
    onScrollCapture: Xd,
    onWheelCapture: Xd,
    onTouchMoveCapture: Xd
  }), B = C[0], g = C[1], t = A.forwardProps, i = A.children, I = A.className, o = A.removeScrollBar, E = A.enabled, Q = A.shards, s = A.sideCar, l = A.noRelative, c = A.noIsolation, D = A.inert, h = A.allowPinchZoom, F = A.as, m = F === void 0 ? "div" : F, p = A.gapMode, k = YU(A, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noRelative", "noIsolation", "inert", "allowPinchZoom", "as", "gapMode"]), b = s, f = Z1A([e, u]), L = zB(zB({}, k), B);
  return x.createElement(
    x.Fragment,
    null,
    E && x.createElement(b, { sideCar: HU, removeScrollBar: o, shards: Q, noRelative: l, noIsolation: c, inert: D, setCallbacks: g, allowPinchZoom: !!h, lockRef: e, gapMode: p }),
    t ? x.cloneElement(x.Children.only(i), zB(zB({}, L), { ref: f })) : x.createElement(m, zB({}, L, { className: I, ref: f }), i)
  );
});
Y4.defaultProps = {
  enabled: !0,
  removeScrollBar: !0,
  inert: !1
};
Y4.classNames = {
  fullWidth: Ts,
  zeroRight: js
};
var z1A = function() {
  if (typeof __webpack_nonce__ < "u")
    return __webpack_nonce__;
};
function P1A() {
  if (!document)
    return null;
  var A = document.createElement("style");
  A.type = "text/css";
  var u = z1A();
  return u && A.setAttribute("nonce", u), A;
}
function O1A(A, u) {
  A.styleSheet ? A.styleSheet.cssText = u : A.appendChild(document.createTextNode(u));
}
function V1A(A) {
  var u = document.head || document.getElementsByTagName("head")[0];
  u.appendChild(A);
}
var X1A = function() {
  var A = 0, u = null;
  return {
    add: function(e) {
      A == 0 && (u = P1A()) && (O1A(u, e), V1A(u)), A++;
    },
    remove: function() {
      A--, !A && u && (u.parentNode && u.parentNode.removeChild(u), u = null);
    }
  };
}, _1A = function() {
  var A = X1A();
  return function(u, e) {
    x.useEffect(function() {
      return A.add(u), function() {
        A.remove();
      };
    }, [u && e]);
  };
}, KU = function() {
  var A = _1A(), u = function(e) {
    var C = e.styles, B = e.dynamic;
    return A(C, B), null;
  };
  return u;
}, $1A = {
  left: 0,
  top: 0,
  right: 0,
  gap: 0
}, _d = function(A) {
  return parseInt(A || "", 10) || 0;
}, A2A = function(A) {
  var u = window.getComputedStyle(document.body), e = u[A === "padding" ? "paddingLeft" : "marginLeft"], C = u[A === "padding" ? "paddingTop" : "marginTop"], B = u[A === "padding" ? "paddingRight" : "marginRight"];
  return [_d(e), _d(C), _d(B)];
}, u2A = function(A) {
  if (A === void 0 && (A = "margin"), typeof window > "u")
    return $1A;
  var u = A2A(A), e = document.documentElement.clientWidth, C = window.innerWidth;
  return {
    left: u[0],
    top: u[1],
    right: u[2],
    gap: Math.max(0, C - e + u[2] - u[0])
  };
}, e2A = KU(), $a = "data-scroll-locked", C2A = function(A, u, e, C) {
  var B = A.left, g = A.top, t = A.right, i = A.gap;
  return e === void 0 && (e = "margin"), `
  .`.concat(v1A, ` {
   overflow: hidden `).concat(C, `;
   padding-right: `).concat(i, "px ").concat(C, `;
  }
  body[`).concat($a, `] {
    overflow: hidden `).concat(C, `;
    overscroll-behavior: contain;
    `).concat([
    u && "position: relative ".concat(C, ";"),
    e === "margin" && `
    padding-left: `.concat(B, `px;
    padding-top: `).concat(g, `px;
    padding-right: `).concat(t, `px;
    margin-left:0;
    margin-top:0;
    margin-right: `).concat(i, "px ").concat(C, `;
    `),
    e === "padding" && "padding-right: ".concat(i, "px ").concat(C, ";")
  ].filter(Boolean).join(""), `
  }
  
  .`).concat(js, ` {
    right: `).concat(i, "px ").concat(C, `;
  }
  
  .`).concat(Ts, ` {
    margin-right: `).concat(i, "px ").concat(C, `;
  }
  
  .`).concat(js, " .").concat(js, ` {
    right: 0 `).concat(C, `;
  }
  
  .`).concat(Ts, " .").concat(Ts, ` {
    margin-right: 0 `).concat(C, `;
  }
  
  body[`).concat($a, `] {
    `).concat(H1A, ": ").concat(i, `px;
  }
`);
}, Up = function() {
  var A = parseInt(document.body.getAttribute($a) || "0", 10);
  return isFinite(A) ? A : 0;
}, B2A = function() {
  x.useEffect(function() {
    return document.body.setAttribute($a, (Up() + 1).toString()), function() {
      var A = Up() - 1;
      A <= 0 ? document.body.removeAttribute($a) : document.body.setAttribute($a, A.toString());
    };
  }, []);
}, g2A = function(A) {
  var u = A.noRelative, e = A.noImportant, C = A.gapMode, B = C === void 0 ? "margin" : C;
  B2A();
  var g = x.useMemo(function() {
    return u2A(B);
  }, [B]);
  return x.createElement(e2A, { styles: C2A(g, !u, B, e ? "" : "!important") });
}, m1 = !1;
if (typeof window < "u")
  try {
    var ss = Object.defineProperty({}, "passive", {
      get: function() {
        return m1 = !0, !0;
      }
    });
    window.addEventListener("test", ss, ss), window.removeEventListener("test", ss, ss);
  } catch {
    m1 = !1;
  }
var xa = m1 ? { passive: !1 } : !1, t2A = function(A) {
  return A.tagName === "TEXTAREA";
}, JU = function(A, u) {
  if (!(A instanceof Element))
    return !1;
  var e = window.getComputedStyle(A);
  return (
    // not-not-scrollable
    e[u] !== "hidden" && // contains scroll inside self
    !(e.overflowY === e.overflowX && !t2A(A) && e[u] === "visible")
  );
}, i2A = function(A) {
  return JU(A, "overflowY");
}, E2A = function(A) {
  return JU(A, "overflowX");
}, Gp = function(A, u) {
  var e = u.ownerDocument, C = u;
  do {
    typeof ShadowRoot < "u" && C instanceof ShadowRoot && (C = C.host);
    var B = ZU(A, C);
    if (B) {
      var g = qU(A, C), t = g[1], i = g[2];
      if (t > i)
        return !0;
    }
    C = C.parentNode;
  } while (C && C !== e.body);
  return !1;
}, a2A = function(A) {
  var u = A.scrollTop, e = A.scrollHeight, C = A.clientHeight;
  return [
    u,
    e,
    C
  ];
}, I2A = function(A) {
  var u = A.scrollLeft, e = A.scrollWidth, C = A.clientWidth;
  return [
    u,
    e,
    C
  ];
}, ZU = function(A, u) {
  return A === "v" ? i2A(u) : E2A(u);
}, qU = function(A, u) {
  return A === "v" ? a2A(u) : I2A(u);
}, o2A = function(A, u) {
  return A === "h" && u === "rtl" ? -1 : 1;
}, Q2A = function(A, u, e, C, B) {
  var g = o2A(A, window.getComputedStyle(u).direction), t = g * C, i = e.target, I = u.contains(i), o = !1, E = t > 0, Q = 0, s = 0;
  do {
    if (!i)
      break;
    var l = qU(A, i), c = l[0], D = l[1], h = l[2], F = D - h - g * c;
    (c || F) && ZU(A, i) && (Q += F, s += c);
    var m = i.parentNode;
    i = m && m.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? m.host : m;
  } while (
    // portaled content
    !I && i !== document.body || // self content
    I && (u.contains(i) || u === i)
  );
  return (E && Math.abs(Q) < 1 || !E && Math.abs(s) < 1) && (o = !0), o;
}, ls = function(A) {
  return "changedTouches" in A ? [A.changedTouches[0].clientX, A.changedTouches[0].clientY] : [0, 0];
}, fp = function(A) {
  return [A.deltaX, A.deltaY];
}, Lp = function(A) {
  return A && "current" in A ? A.current : A;
}, n2A = function(A, u) {
  return A[0] === u[0] && A[1] === u[1];
}, r2A = function(A) {
  return `
  .block-interactivity-`.concat(A, ` {pointer-events: none;}
  .allow-interactivity-`).concat(A, ` {pointer-events: all;}
`);
}, s2A = 0, Sa = [];
function l2A(A) {
  var u = x.useRef([]), e = x.useRef([0, 0]), C = x.useRef(), B = x.useState(s2A++)[0], g = x.useState(KU)[0], t = x.useRef(A);
  x.useEffect(function() {
    t.current = A;
  }, [A]), x.useEffect(function() {
    if (A.inert) {
      document.body.classList.add("block-interactivity-".concat(B));
      var D = Y1A([A.lockRef.current], (A.shards || []).map(Lp), !0).filter(Boolean);
      return D.forEach(function(h) {
        return h.classList.add("allow-interactivity-".concat(B));
      }), function() {
        document.body.classList.remove("block-interactivity-".concat(B)), D.forEach(function(h) {
          return h.classList.remove("allow-interactivity-".concat(B));
        });
      };
    }
  }, [A.inert, A.lockRef.current, A.shards]);
  var i = x.useCallback(function(D, h) {
    if ("touches" in D && D.touches.length === 2 || D.type === "wheel" && D.ctrlKey)
      return !t.current.allowPinchZoom;
    var F = ls(D), m = e.current, p = "deltaX" in D ? D.deltaX : m[0] - F[0], k = "deltaY" in D ? D.deltaY : m[1] - F[1], b, f = D.target, L = Math.abs(p) > Math.abs(k) ? "h" : "v";
    if ("touches" in D && L === "h" && f.type === "range")
      return !1;
    var N = window.getSelection(), M = N && N.anchorNode, v = M ? M === f || M.contains(f) : !1;
    if (v)
      return !1;
    var K = Gp(L, f);
    if (!K)
      return !0;
    if (K ? b = L : (b = L === "v" ? "h" : "v", K = Gp(L, f)), !K)
      return !1;
    if (!C.current && "changedTouches" in D && (p || k) && (C.current = b), !b)
      return !0;
    var q = C.current || b;
    return Q2A(q, h, D, q === "h" ? p : k);
  }, []), I = x.useCallback(function(D) {
    var h = D;
    if (!(!Sa.length || Sa[Sa.length - 1] !== g)) {
      var F = "deltaY" in h ? fp(h) : ls(h), m = u.current.filter(function(b) {
        return b.name === h.type && (b.target === h.target || h.target === b.shadowParent) && n2A(b.delta, F);
      })[0];
      if (m && m.should) {
        h.cancelable && h.preventDefault();
        return;
      }
      if (!m) {
        var p = (t.current.shards || []).map(Lp).filter(Boolean).filter(function(b) {
          return b.contains(h.target);
        }), k = p.length > 0 ? i(h, p[0]) : !t.current.noIsolation;
        k && h.cancelable && h.preventDefault();
      }
    }
  }, []), o = x.useCallback(function(D, h, F, m) {
    var p = { name: D, delta: h, target: F, should: m, shadowParent: c2A(F) };
    u.current.push(p), setTimeout(function() {
      u.current = u.current.filter(function(k) {
        return k !== p;
      });
    }, 1);
  }, []), E = x.useCallback(function(D) {
    e.current = ls(D), C.current = void 0;
  }, []), Q = x.useCallback(function(D) {
    o(D.type, fp(D), D.target, i(D, A.lockRef.current));
  }, []), s = x.useCallback(function(D) {
    o(D.type, ls(D), D.target, i(D, A.lockRef.current));
  }, []);
  x.useEffect(function() {
    return Sa.push(g), A.setCallbacks({
      onScrollCapture: Q,
      onWheelCapture: Q,
      onTouchMoveCapture: s
    }), document.addEventListener("wheel", I, xa), document.addEventListener("touchmove", I, xa), document.addEventListener("touchstart", E, xa), function() {
      Sa = Sa.filter(function(D) {
        return D !== g;
      }), document.removeEventListener("wheel", I, xa), document.removeEventListener("touchmove", I, xa), document.removeEventListener("touchstart", E, xa);
    };
  }, []);
  var l = A.removeScrollBar, c = A.inert;
  return x.createElement(
    x.Fragment,
    null,
    c ? x.createElement(g, { styles: r2A(B) }) : null,
    l ? x.createElement(g2A, { noRelative: A.noRelative, gapMode: A.gapMode }) : null
  );
}
function c2A(A) {
  for (var u = null; A !== null; )
    A instanceof ShadowRoot && (u = A.host, A = A.host), A = A.parentNode;
  return u;
}
const d2A = T1A(HU, l2A);
var WU = x.forwardRef(function(A, u) {
  return x.createElement(Y4, zB({}, A, { ref: u, sideCar: d2A }));
});
WU.classNames = Y4.classNames;
var w9 = "Popover", [jU] = tU(w9, [
  kU
]), pn = kU(), [D2A, ci] = jU(w9), TU = (A) => {
  const {
    __scopePopover: u,
    children: e,
    open: C,
    defaultOpen: B,
    onOpenChange: g,
    modal: t = !1
  } = A, i = pn(u), I = x.useRef(null), [o, E] = x.useState(!1), [Q = !1, s] = L1A({
    prop: C,
    defaultProp: B,
    onChange: g
  });
  return /* @__PURE__ */ r.jsx(m1A, { ...i, children: /* @__PURE__ */ r.jsx(
    D2A,
    {
      scope: u,
      contentId: IDA(),
      triggerRef: I,
      open: Q,
      onOpenChange: s,
      onOpenToggle: x.useCallback(() => s((l) => !l), [s]),
      hasCustomAnchor: o,
      onCustomAnchorAdd: x.useCallback(() => E(!0), []),
      onCustomAnchorRemove: x.useCallback(() => E(!1), []),
      modal: t,
      children: e
    }
  ) });
};
TU.displayName = w9;
var zU = "PopoverAnchor", h2A = x.forwardRef(
  (A, u) => {
    const { __scopePopover: e, ...C } = A, B = ci(zU, e), g = pn(e), { onCustomAnchorAdd: t, onCustomAnchorRemove: i } = B;
    return x.useEffect(() => (t(), () => i()), [t, i]), /* @__PURE__ */ r.jsx(NU, { ...g, ...C, ref: u });
  }
);
h2A.displayName = zU;
var PU = "PopoverTrigger", OU = x.forwardRef(
  (A, u) => {
    const { __scopePopover: e, ...C } = A, B = ci(PU, e), g = pn(e), t = li(u, B.triggerRef), i = /* @__PURE__ */ r.jsx(
      et.button,
      {
        type: "button",
        "aria-haspopup": "dialog",
        "aria-expanded": B.open,
        "aria-controls": B.contentId,
        "data-state": uG(B.open),
        ...C,
        ref: t,
        onClick: Bi(A.onClick, B.onOpenToggle)
      }
    );
    return B.hasCustomAnchor ? i : /* @__PURE__ */ r.jsx(NU, { asChild: !0, ...g, children: i });
  }
);
OU.displayName = PU;
var F9 = "PopoverPortal", [w2A, F2A] = jU(F9, {
  forceMount: void 0
}), VU = (A) => {
  const { __scopePopover: u, forceMount: e, children: C, container: B } = A, g = ci(F9, u);
  return /* @__PURE__ */ r.jsx(w2A, { scope: u, forceMount: e, children: /* @__PURE__ */ r.jsx(h9, { present: e || g.open, children: /* @__PURE__ */ r.jsx(RU, { asChild: !0, container: B, children: C }) }) });
};
VU.displayName = F9;
var dI = "PopoverContent", XU = x.forwardRef(
  (A, u) => {
    const e = F2A(dI, A.__scopePopover), { forceMount: C = e.forceMount, ...B } = A, g = ci(dI, A.__scopePopover);
    return /* @__PURE__ */ r.jsx(h9, { present: C || g.open, children: g.modal ? /* @__PURE__ */ r.jsx(p2A, { ...B, ref: u }) : /* @__PURE__ */ r.jsx(m2A, { ...B, ref: u }) });
  }
);
XU.displayName = dI;
var p2A = x.forwardRef(
  (A, u) => {
    const e = ci(dI, A.__scopePopover), C = x.useRef(null), B = li(u, C), g = x.useRef(!1);
    return x.useEffect(() => {
      const t = C.current;
      if (t) return M1A(t);
    }, []), /* @__PURE__ */ r.jsx(WU, { as: o9, allowPinchZoom: !0, children: /* @__PURE__ */ r.jsx(
      _U,
      {
        ...A,
        ref: B,
        trapFocus: e.open,
        disableOutsidePointerEvents: !0,
        onCloseAutoFocus: Bi(A.onCloseAutoFocus, (t) => {
          t.preventDefault(), g.current || e.triggerRef.current?.focus();
        }),
        onPointerDownOutside: Bi(
          A.onPointerDownOutside,
          (t) => {
            const i = t.detail.originalEvent, I = i.button === 0 && i.ctrlKey === !0, o = i.button === 2 || I;
            g.current = o;
          },
          { checkForDefaultPrevented: !1 }
        ),
        onFocusOutside: Bi(
          A.onFocusOutside,
          (t) => t.preventDefault(),
          { checkForDefaultPrevented: !1 }
        )
      }
    ) });
  }
), m2A = x.forwardRef(
  (A, u) => {
    const e = ci(dI, A.__scopePopover), C = x.useRef(!1), B = x.useRef(!1);
    return /* @__PURE__ */ r.jsx(
      _U,
      {
        ...A,
        ref: u,
        trapFocus: !1,
        disableOutsidePointerEvents: !1,
        onCloseAutoFocus: (g) => {
          A.onCloseAutoFocus?.(g), g.defaultPrevented || (C.current || e.triggerRef.current?.focus(), g.preventDefault()), C.current = !1, B.current = !1;
        },
        onInteractOutside: (g) => {
          A.onInteractOutside?.(g), g.defaultPrevented || (C.current = !0, g.detail.originalEvent.type === "pointerdown" && (B.current = !0));
          const t = g.target;
          e.triggerRef.current?.contains(t) && g.preventDefault(), g.detail.originalEvent.type === "focusin" && B.current && g.preventDefault();
        }
      }
    );
  }
), _U = x.forwardRef(
  (A, u) => {
    const {
      __scopePopover: e,
      trapFocus: C,
      onOpenAutoFocus: B,
      onCloseAutoFocus: g,
      disableOutsidePointerEvents: t,
      onEscapeKeyDown: i,
      onPointerDownOutside: I,
      onFocusOutside: o,
      onInteractOutside: E,
      ...Q
    } = A, s = ci(dI, e), l = pn(e);
    return ADA(), /* @__PURE__ */ r.jsx(
      IU,
      {
        asChild: !0,
        loop: !0,
        trapped: C,
        onMountAutoFocus: B,
        onUnmountAutoFocus: g,
        children: /* @__PURE__ */ r.jsx(
          EU,
          {
            asChild: !0,
            disableOutsidePointerEvents: t,
            onInteractOutside: E,
            onEscapeKeyDown: i,
            onPointerDownOutside: I,
            onFocusOutside: o,
            onDismiss: () => s.onOpenChange(!1),
            children: /* @__PURE__ */ r.jsx(
              k1A,
              {
                "data-state": uG(s.open),
                role: "dialog",
                id: s.contentId,
                ...l,
                ...Q,
                ref: u,
                style: {
                  ...Q.style,
                  "--radix-popover-content-transform-origin": "var(--radix-popper-transform-origin)",
                  "--radix-popover-content-available-width": "var(--radix-popper-available-width)",
                  "--radix-popover-content-available-height": "var(--radix-popper-available-height)",
                  "--radix-popover-trigger-width": "var(--radix-popper-anchor-width)",
                  "--radix-popover-trigger-height": "var(--radix-popper-anchor-height)"
                }
              }
            )
          }
        )
      }
    );
  }
), $U = "PopoverClose", k2A = x.forwardRef(
  (A, u) => {
    const { __scopePopover: e, ...C } = A, B = ci($U, e);
    return /* @__PURE__ */ r.jsx(
      et.button,
      {
        type: "button",
        ...C,
        ref: u,
        onClick: Bi(A.onClick, () => B.onOpenChange(!1))
      }
    );
  }
);
k2A.displayName = $U;
var y2A = "PopoverArrow", AG = x.forwardRef(
  (A, u) => {
    const { __scopePopover: e, ...C } = A, B = pn(e);
    return /* @__PURE__ */ r.jsx(y1A, { ...B, ...C, ref: u });
  }
);
AG.displayName = y2A;
function uG(A) {
  return A ? "open" : "closed";
}
var v4 = TU, H4 = OU, b2A = VU, p9 = XU, eG = AG, $d = { exports: {} }, xp;
function U2A() {
  return xp || (xp = 1, (function(A, u) {
    (function() {
      var e = {};
      A.exports = e, e.simpleFilter = function(C, B) {
        return B.filter(function(g) {
          return e.test(C, g);
        });
      }, e.test = function(C, B) {
        return e.match(C, B) !== null;
      }, e.match = function(C, B, g) {
        g = g || {};
        var t = 0, i = [], I = B.length, o = 0, E = 0, Q = g.pre || "", s = g.post || "", l = g.caseSensitive && B || B.toLowerCase(), c;
        C = g.caseSensitive && C || C.toLowerCase();
        for (var D = 0; D < I; D++)
          c = B[D], l[D] === C[t] ? (c = Q + c + s, t += 1, E += 1 + E) : E = 0, o += E, i[i.length] = c;
        return t === C.length ? (o = l === C ? 1 / 0 : o, { rendered: i.join(""), score: o }) : null;
      }, e.filter = function(C, B, g) {
        return !B || B.length === 0 ? [] : typeof C != "string" ? B : (g = g || {}, B.reduce(function(t, i, I, o) {
          var E = i;
          g.extract && (E = g.extract(i));
          var Q = e.match(C, E, g);
          return Q != null && (t[t.length] = {
            string: Q.rendered,
            score: Q.score,
            index: I,
            original: i
          }), t;
        }, []).sort(function(t, i) {
          var I = i.score - t.score;
          return I || t.index - i.index;
        }));
      };
    })();
  })($d)), $d.exports;
}
var G2A = U2A();
const f2A = /* @__PURE__ */ gg(G2A), L2A = {}, Sp = (A) => {
  let u;
  const e = /* @__PURE__ */ new Set(), C = (E, Q) => {
    const s = typeof E == "function" ? E(u) : E;
    if (!Object.is(s, u)) {
      const l = u;
      u = Q ?? (typeof s != "object" || s === null) ? s : Object.assign({}, u, s), e.forEach((c) => c(u, l));
    }
  }, B = () => u, I = { setState: C, getState: B, getInitialState: () => o, subscribe: (E) => (e.add(E), () => e.delete(E)), destroy: () => {
    (L2A ? "production" : void 0) !== "production" && console.warn(
      "[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."
    ), e.clear();
  } }, o = u = A(C, B, I);
  return I;
}, x2A = (A) => A ? Sp(A) : Sp;
var AD = { exports: {} }, uD = {}, eD = { exports: {} }, CD = {};
/**
 * @license React
 * use-sync-external-store-shim.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var Np;
function S2A() {
  if (Np) return CD;
  Np = 1;
  var A = tn();
  function u(Q, s) {
    return Q === s && (Q !== 0 || 1 / Q === 1 / s) || Q !== Q && s !== s;
  }
  var e = typeof Object.is == "function" ? Object.is : u, C = A.useState, B = A.useEffect, g = A.useLayoutEffect, t = A.useDebugValue;
  function i(Q, s) {
    var l = s(), c = C({ inst: { value: l, getSnapshot: s } }), D = c[0].inst, h = c[1];
    return g(
      function() {
        D.value = l, D.getSnapshot = s, I(D) && h({ inst: D });
      },
      [Q, l, s]
    ), B(
      function() {
        return I(D) && h({ inst: D }), Q(function() {
          I(D) && h({ inst: D });
        });
      },
      [Q]
    ), t(l), l;
  }
  function I(Q) {
    var s = Q.getSnapshot;
    Q = Q.value;
    try {
      var l = s();
      return !e(Q, l);
    } catch {
      return !0;
    }
  }
  function o(Q, s) {
    return s();
  }
  var E = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? o : i;
  return CD.useSyncExternalStore = A.useSyncExternalStore !== void 0 ? A.useSyncExternalStore : E, CD;
}
var Rp;
function N2A() {
  return Rp || (Rp = 1, eD.exports = S2A()), eD.exports;
}
/**
 * @license React
 * use-sync-external-store-shim/with-selector.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var Mp;
function R2A() {
  if (Mp) return uD;
  Mp = 1;
  var A = tn(), u = N2A();
  function e(o, E) {
    return o === E && (o !== 0 || 1 / o === 1 / E) || o !== o && E !== E;
  }
  var C = typeof Object.is == "function" ? Object.is : e, B = u.useSyncExternalStore, g = A.useRef, t = A.useEffect, i = A.useMemo, I = A.useDebugValue;
  return uD.useSyncExternalStoreWithSelector = function(o, E, Q, s, l) {
    var c = g(null);
    if (c.current === null) {
      var D = { hasValue: !1, value: null };
      c.current = D;
    } else D = c.current;
    c = i(
      function() {
        function F(f) {
          if (!m) {
            if (m = !0, p = f, f = s(f), l !== void 0 && D.hasValue) {
              var L = D.value;
              if (l(L, f))
                return k = L;
            }
            return k = f;
          }
          if (L = k, C(p, f)) return L;
          var N = s(f);
          return l !== void 0 && l(L, N) ? (p = f, L) : (p = f, k = N);
        }
        var m = !1, p, k, b = Q === void 0 ? null : Q;
        return [
          function() {
            return F(E());
          },
          b === null ? void 0 : function() {
            return F(b());
          }
        ];
      },
      [E, Q, s, l]
    );
    var h = B(o, c[0], c[1]);
    return t(
      function() {
        D.hasValue = !0, D.value = h;
      },
      [h]
    ), I(h), h;
  }, uD;
}
var Yp;
function M2A() {
  return Yp || (Yp = 1, AD.exports = R2A()), AD.exports;
}
var Y2A = M2A();
const v2A = /* @__PURE__ */ gg(Y2A), CG = {}, { useDebugValue: H2A } = kA, { useSyncExternalStoreWithSelector: K2A } = v2A;
let vp = !1;
const J2A = (A) => A;
function Z2A(A, u = J2A, e) {
  (CG ? "production" : void 0) !== "production" && e && !vp && (console.warn(
    "[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"
  ), vp = !0);
  const C = K2A(
    A.subscribe,
    A.getState,
    A.getServerState || A.getInitialState,
    u,
    e
  );
  return H2A(C), C;
}
const Hp = (A) => {
  (CG ? "production" : void 0) !== "production" && typeof A != "function" && console.warn(
    "[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`."
  );
  const u = typeof A == "function" ? x2A(A) : A, e = (C, B) => Z2A(u, C, B);
  return Object.assign(e, u), e;
}, q2A = (A) => A ? Hp(A) : Hp;
var Kp, Jp;
const Zp = typeof window < "u" && ((Kp = window.document) != null && Kp.createElement || ((Jp = window.navigator) == null ? void 0 : Jp.product) === "ReactNative") ? kA.useLayoutEffect : kA.useEffect;
function MB() {
  const A = q2A((u) => ({
    current: new Array(),
    version: 0,
    set: u
  }));
  return {
    In: ({
      children: u
    }) => {
      const e = A((B) => B.set), C = A((B) => B.version);
      return Zp(() => {
        e((B) => ({
          version: B.version + 1
        }));
      }, []), Zp(() => (e(({
        current: B
      }) => ({
        current: [...B, u]
      })), () => e(({
        current: B
      }) => ({
        current: B.filter((g) => g !== u)
      }))), [u, C]), null;
    },
    Out: () => {
      const u = A((e) => e.current);
      return /* @__PURE__ */ kA.createElement(kA.Fragment, null, u);
    }
  };
}
function _e() {
  return _e = Object.assign ? Object.assign.bind() : function(A) {
    for (var u = 1; u < arguments.length; u++) {
      var e = arguments[u];
      for (var C in e) ({}).hasOwnProperty.call(e, C) && (A[C] = e[C]);
    }
    return A;
  }, _e.apply(null, arguments);
}
function Jg(A, u, { checkForDefaultPrevented: e = !0 } = {}) {
  return function(B) {
    if (A?.(B), e === !1 || !B.defaultPrevented) return u?.(B);
  };
}
function m9(A, u = []) {
  let e = [];
  function C(g, t) {
    const i = /* @__PURE__ */ x.createContext(t), I = e.length;
    e = [
      ...e,
      t
    ];
    function o(Q) {
      const { scope: s, children: l, ...c } = Q, D = s?.[A][I] || i, h = x.useMemo(
        () => c,
        Object.values(c)
      );
      return /* @__PURE__ */ x.createElement(D.Provider, {
        value: h
      }, l);
    }
    function E(Q, s) {
      const l = s?.[A][I] || i, c = x.useContext(l);
      if (c) return c;
      if (t !== void 0) return t;
      throw new Error(`\`${Q}\` must be used within \`${g}\``);
    }
    return o.displayName = g + "Provider", [
      o,
      E
    ];
  }
  const B = () => {
    const g = e.map((t) => /* @__PURE__ */ x.createContext(t));
    return function(i) {
      const I = i?.[A] || g;
      return x.useMemo(
        () => ({
          [`__scope${A}`]: {
            ...i,
            [A]: I
          }
        }),
        [
          i,
          I
        ]
      );
    };
  };
  return B.scopeName = A, [
    C,
    W2A(B, ...u)
  ];
}
function W2A(...A) {
  const u = A[0];
  if (A.length === 1) return u;
  const e = () => {
    const C = A.map(
      (B) => ({
        useScope: B(),
        scopeName: B.scopeName
      })
    );
    return function(g) {
      const t = C.reduce((i, { useScope: I, scopeName: o }) => {
        const Q = I(g)[`__scope${o}`];
        return {
          ...i,
          ...Q
        };
      }, {});
      return x.useMemo(
        () => ({
          [`__scope${u.scopeName}`]: t
        }),
        [
          t
        ]
      );
    };
  };
  return e.scopeName = u.scopeName, e;
}
function j2A(A, u) {
  typeof A == "function" ? A(u) : A != null && (A.current = u);
}
function BG(...A) {
  return (u) => A.forEach(
    (e) => j2A(e, u)
  );
}
function Zl(...A) {
  return x.useCallback(BG(...A), A);
}
const ql = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { children: e, ...C } = A, B = x.Children.toArray(e), g = B.find(z2A);
  if (g) {
    const t = g.props.children, i = B.map((I) => I === g ? x.Children.count(t) > 1 ? x.Children.only(null) : /* @__PURE__ */ x.isValidElement(t) ? t.props.children : null : I);
    return /* @__PURE__ */ x.createElement(k1, _e({}, C, {
      ref: u
    }), /* @__PURE__ */ x.isValidElement(t) ? /* @__PURE__ */ x.cloneElement(t, void 0, i) : null);
  }
  return /* @__PURE__ */ x.createElement(k1, _e({}, C, {
    ref: u
  }), e);
});
ql.displayName = "Slot";
const k1 = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { children: e, ...C } = A;
  return /* @__PURE__ */ x.isValidElement(e) ? /* @__PURE__ */ x.cloneElement(e, {
    ...P2A(C, e.props),
    ref: BG(u, e.ref)
  }) : x.Children.count(e) > 1 ? x.Children.only(null) : null;
});
k1.displayName = "SlotClone";
const T2A = ({ children: A }) => /* @__PURE__ */ x.createElement(x.Fragment, null, A);
function z2A(A) {
  return /* @__PURE__ */ x.isValidElement(A) && A.type === T2A;
}
function P2A(A, u) {
  const e = {
    ...u
  };
  for (const C in u) {
    const B = A[C], g = u[C];
    /^on[A-Z]/.test(C) ? B && g ? e[C] = (...i) => {
      g(...i), B(...i);
    } : B && (e[C] = B) : C === "style" ? e[C] = {
      ...B,
      ...g
    } : C === "className" && (e[C] = [
      B,
      g
    ].filter(Boolean).join(" "));
  }
  return {
    ...A,
    ...e
  };
}
function O2A(A) {
  const u = A + "CollectionProvider", [e, C] = m9(u), [B, g] = e(u, {
    collectionRef: {
      current: null
    },
    itemMap: /* @__PURE__ */ new Map()
  }), t = (l) => {
    const { scope: c, children: D } = l, h = kA.useRef(null), F = kA.useRef(/* @__PURE__ */ new Map()).current;
    return /* @__PURE__ */ kA.createElement(B, {
      scope: c,
      itemMap: F,
      collectionRef: h
    }, D);
  }, i = A + "CollectionSlot", I = /* @__PURE__ */ kA.forwardRef((l, c) => {
    const { scope: D, children: h } = l, F = g(i, D), m = Zl(c, F.collectionRef);
    return /* @__PURE__ */ kA.createElement(ql, {
      ref: m
    }, h);
  }), o = A + "CollectionItemSlot", E = "data-radix-collection-item", Q = /* @__PURE__ */ kA.forwardRef((l, c) => {
    const { scope: D, children: h, ...F } = l, m = kA.useRef(null), p = Zl(c, m), k = g(o, D);
    return kA.useEffect(() => (k.itemMap.set(m, {
      ref: m,
      ...F
    }), () => void k.itemMap.delete(m))), /* @__PURE__ */ kA.createElement(ql, {
      [E]: "",
      ref: p
    }, h);
  });
  function s(l) {
    const c = g(A + "CollectionConsumer", l);
    return kA.useCallback(() => {
      const h = c.collectionRef.current;
      if (!h) return [];
      const F = Array.from(h.querySelectorAll(`[${E}]`));
      return Array.from(c.itemMap.values()).sort(
        (k, b) => F.indexOf(k.ref.current) - F.indexOf(b.ref.current)
      );
    }, [
      c.collectionRef,
      c.itemMap
    ]);
  }
  return [
    {
      Provider: t,
      Slot: I,
      ItemSlot: Q
    },
    s,
    C
  ];
}
const y1 = globalThis?.document ? x.useLayoutEffect : () => {
}, V2A = E7.useId || (() => {
});
let X2A = 0;
function gG(A) {
  const [u, e] = x.useState(V2A());
  return y1(() => {
    e(
      (C) => C ?? String(X2A++)
    );
  }, [
    A
  ]), A || (u ? `radix-${u}` : "");
}
const _2A = [
  "a",
  "button",
  "div",
  "h2",
  "h3",
  "img",
  "label",
  "li",
  "nav",
  "ol",
  "p",
  "span",
  "svg",
  "ul"
], GI = _2A.reduce((A, u) => {
  const e = /* @__PURE__ */ x.forwardRef((C, B) => {
    const { asChild: g, ...t } = C, i = g ? ql : u;
    return x.useEffect(() => {
      window[Symbol.for("radix-ui")] = !0;
    }, []), /* @__PURE__ */ x.createElement(i, _e({}, t, {
      ref: B
    }));
  });
  return e.displayName = `Primitive.${u}`, {
    ...A,
    [u]: e
  };
}, {});
function k9(A) {
  const u = x.useRef(A);
  return x.useEffect(() => {
    u.current = A;
  }), x.useMemo(
    () => (...e) => {
      var C;
      return (C = u.current) === null || C === void 0 ? void 0 : C.call(u, ...e);
    },
    []
  );
}
function tG({ prop: A, defaultProp: u, onChange: e = () => {
} }) {
  const [C, B] = $2A({
    defaultProp: u,
    onChange: e
  }), g = A !== void 0, t = g ? A : C, i = k9(e), I = x.useCallback((o) => {
    if (g) {
      const Q = typeof o == "function" ? o(A) : o;
      Q !== A && i(Q);
    } else B(o);
  }, [
    g,
    A,
    B,
    i
  ]);
  return [
    t,
    I
  ];
}
function $2A({ defaultProp: A, onChange: u }) {
  const e = x.useState(A), [C] = e, B = x.useRef(C), g = k9(u);
  return x.useEffect(() => {
    B.current !== C && (g(C), B.current = C);
  }, [
    C,
    B,
    g
  ]), e;
}
const A9A = /* @__PURE__ */ x.createContext(void 0);
function iG(A) {
  const u = x.useContext(A9A);
  return A || u || "ltr";
}
const BD = "rovingFocusGroup.onEntryFocus", u9A = {
  bubbles: !1,
  cancelable: !0
}, y9 = "RovingFocusGroup", [b1, EG, e9A] = O2A(y9), [C9A, aG] = m9(y9, [
  e9A
]), [B9A, g9A] = C9A(y9), t9A = /* @__PURE__ */ x.forwardRef((A, u) => /* @__PURE__ */ x.createElement(b1.Provider, {
  scope: A.__scopeRovingFocusGroup
}, /* @__PURE__ */ x.createElement(b1.Slot, {
  scope: A.__scopeRovingFocusGroup
}, /* @__PURE__ */ x.createElement(i9A, _e({}, A, {
  ref: u
}))))), i9A = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { __scopeRovingFocusGroup: e, orientation: C, loop: B = !1, dir: g, currentTabStopId: t, defaultCurrentTabStopId: i, onCurrentTabStopIdChange: I, onEntryFocus: o, ...E } = A, Q = x.useRef(null), s = Zl(u, Q), l = iG(g), [c = null, D] = tG({
    prop: t,
    defaultProp: i,
    onChange: I
  }), [h, F] = x.useState(!1), m = k9(o), p = EG(e), k = x.useRef(!1), [b, f] = x.useState(0);
  return x.useEffect(() => {
    const L = Q.current;
    if (L)
      return L.addEventListener(BD, m), () => L.removeEventListener(BD, m);
  }, [
    m
  ]), /* @__PURE__ */ x.createElement(B9A, {
    scope: e,
    orientation: C,
    dir: l,
    loop: B,
    currentTabStopId: c,
    onItemFocus: x.useCallback(
      (L) => D(L),
      [
        D
      ]
    ),
    onItemShiftTab: x.useCallback(
      () => F(!0),
      []
    ),
    onFocusableItemAdd: x.useCallback(
      () => f(
        (L) => L + 1
      ),
      []
    ),
    onFocusableItemRemove: x.useCallback(
      () => f(
        (L) => L - 1
      ),
      []
    )
  }, /* @__PURE__ */ x.createElement(GI.div, _e({
    tabIndex: h || b === 0 ? -1 : 0,
    "data-orientation": C
  }, E, {
    ref: s,
    style: {
      outline: "none",
      ...A.style
    },
    onMouseDown: Jg(A.onMouseDown, () => {
      k.current = !0;
    }),
    onFocus: Jg(A.onFocus, (L) => {
      const N = !k.current;
      if (L.target === L.currentTarget && N && !h) {
        const M = new CustomEvent(BD, u9A);
        if (L.currentTarget.dispatchEvent(M), !M.defaultPrevented) {
          const v = p().filter(
            (O) => O.focusable
          ), K = v.find(
            (O) => O.active
          ), q = v.find(
            (O) => O.id === c
          ), uA = [
            K,
            q,
            ...v
          ].filter(Boolean).map(
            (O) => O.ref.current
          );
          IG(uA);
        }
      }
      k.current = !1;
    }),
    onBlur: Jg(
      A.onBlur,
      () => F(!1)
    )
  })));
}), E9A = "RovingFocusGroupItem", a9A = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { __scopeRovingFocusGroup: e, focusable: C = !0, active: B = !1, tabStopId: g, ...t } = A, i = gG(), I = g || i, o = g9A(E9A, e), E = o.currentTabStopId === I, Q = EG(e), { onFocusableItemAdd: s, onFocusableItemRemove: l } = o;
  return x.useEffect(() => {
    if (C)
      return s(), () => l();
  }, [
    C,
    s,
    l
  ]), /* @__PURE__ */ x.createElement(b1.ItemSlot, {
    scope: e,
    id: I,
    focusable: C,
    active: B
  }, /* @__PURE__ */ x.createElement(GI.span, _e({
    tabIndex: E ? 0 : -1,
    "data-orientation": o.orientation
  }, t, {
    ref: u,
    onMouseDown: Jg(A.onMouseDown, (c) => {
      C ? o.onItemFocus(I) : c.preventDefault();
    }),
    onFocus: Jg(
      A.onFocus,
      () => o.onItemFocus(I)
    ),
    onKeyDown: Jg(A.onKeyDown, (c) => {
      if (c.key === "Tab" && c.shiftKey) {
        o.onItemShiftTab();
        return;
      }
      if (c.target !== c.currentTarget) return;
      const D = Q9A(c, o.orientation, o.dir);
      if (D !== void 0) {
        c.preventDefault();
        let F = Q().filter(
          (m) => m.focusable
        ).map(
          (m) => m.ref.current
        );
        if (D === "last") F.reverse();
        else if (D === "prev" || D === "next") {
          D === "prev" && F.reverse();
          const m = F.indexOf(c.currentTarget);
          F = o.loop ? n9A(F, m + 1) : F.slice(m + 1);
        }
        setTimeout(
          () => IG(F)
        );
      }
    })
  })));
}), I9A = {
  ArrowLeft: "prev",
  ArrowUp: "prev",
  ArrowRight: "next",
  ArrowDown: "next",
  PageUp: "first",
  Home: "first",
  PageDown: "last",
  End: "last"
};
function o9A(A, u) {
  return u !== "rtl" ? A : A === "ArrowLeft" ? "ArrowRight" : A === "ArrowRight" ? "ArrowLeft" : A;
}
function Q9A(A, u, e) {
  const C = o9A(A.key, e);
  if (!(u === "vertical" && [
    "ArrowLeft",
    "ArrowRight"
  ].includes(C)) && !(u === "horizontal" && [
    "ArrowUp",
    "ArrowDown"
  ].includes(C)))
    return I9A[C];
}
function IG(A) {
  const u = document.activeElement;
  for (const e of A)
    if (e === u || (e.focus(), document.activeElement !== u)) return;
}
function n9A(A, u) {
  return A.map(
    (e, C) => A[(u + C) % A.length]
  );
}
const r9A = t9A, s9A = a9A;
function l9A(A, u) {
  return x.useReducer((e, C) => {
    const B = u[e][C];
    return B ?? e;
  }, A);
}
const oG = (A) => {
  const { present: u, children: e } = A, C = c9A(u), B = typeof e == "function" ? e({
    present: C.isPresent
  }) : x.Children.only(e), g = Zl(C.ref, B.ref);
  return typeof e == "function" || C.isPresent ? /* @__PURE__ */ x.cloneElement(B, {
    ref: g
  }) : null;
};
oG.displayName = "Presence";
function c9A(A) {
  const [u, e] = x.useState(), C = x.useRef({}), B = x.useRef(A), g = x.useRef("none"), t = A ? "mounted" : "unmounted", [i, I] = l9A(t, {
    mounted: {
      UNMOUNT: "unmounted",
      ANIMATION_OUT: "unmountSuspended"
    },
    unmountSuspended: {
      MOUNT: "mounted",
      ANIMATION_END: "unmounted"
    },
    unmounted: {
      MOUNT: "mounted"
    }
  });
  return x.useEffect(() => {
    const o = cs(C.current);
    g.current = i === "mounted" ? o : "none";
  }, [
    i
  ]), y1(() => {
    const o = C.current, E = B.current;
    if (E !== A) {
      const s = g.current, l = cs(o);
      A ? I("MOUNT") : l === "none" || o?.display === "none" ? I("UNMOUNT") : I(E && s !== l ? "ANIMATION_OUT" : "UNMOUNT"), B.current = A;
    }
  }, [
    A,
    I
  ]), y1(() => {
    if (u) {
      const o = (Q) => {
        const l = cs(C.current).includes(Q.animationName);
        Q.target === u && l && O0.flushSync(
          () => I("ANIMATION_END")
        );
      }, E = (Q) => {
        Q.target === u && (g.current = cs(C.current));
      };
      return u.addEventListener("animationstart", E), u.addEventListener("animationcancel", o), u.addEventListener("animationend", o), () => {
        u.removeEventListener("animationstart", E), u.removeEventListener("animationcancel", o), u.removeEventListener("animationend", o);
      };
    } else
      I("ANIMATION_END");
  }, [
    u,
    I
  ]), {
    isPresent: [
      "mounted",
      "unmountSuspended"
    ].includes(i),
    ref: x.useCallback((o) => {
      o && (C.current = getComputedStyle(o)), e(o);
    }, [])
  };
}
function cs(A) {
  return A?.animationName || "none";
}
const QG = "Tabs", [d9A] = m9(QG, [
  aG
]), nG = aG(), [D9A, b9] = d9A(QG), h9A = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { __scopeTabs: e, value: C, onValueChange: B, defaultValue: g, orientation: t = "horizontal", dir: i, activationMode: I = "automatic", ...o } = A, E = iG(i), [Q, s] = tG({
    prop: C,
    onChange: B,
    defaultProp: g
  });
  return /* @__PURE__ */ x.createElement(D9A, {
    scope: e,
    baseId: gG(),
    value: Q,
    onValueChange: s,
    orientation: t,
    dir: E,
    activationMode: I
  }, /* @__PURE__ */ x.createElement(GI.div, _e({
    dir: E,
    "data-orientation": t
  }, o, {
    ref: u
  })));
}), w9A = "TabsList", F9A = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { __scopeTabs: e, loop: C = !0, ...B } = A, g = b9(w9A, e), t = nG(e);
  return /* @__PURE__ */ x.createElement(r9A, _e({
    asChild: !0
  }, t, {
    orientation: g.orientation,
    dir: g.dir,
    loop: C
  }), /* @__PURE__ */ x.createElement(GI.div, _e({
    role: "tablist",
    "aria-orientation": g.orientation
  }, B, {
    ref: u
  })));
}), p9A = "TabsTrigger", m9A = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { __scopeTabs: e, value: C, disabled: B = !1, ...g } = A, t = b9(p9A, e), i = nG(e), I = rG(t.baseId, C), o = sG(t.baseId, C), E = C === t.value;
  return /* @__PURE__ */ x.createElement(s9A, _e({
    asChild: !0
  }, i, {
    focusable: !B,
    active: E
  }), /* @__PURE__ */ x.createElement(GI.button, _e({
    type: "button",
    role: "tab",
    "aria-selected": E,
    "aria-controls": o,
    "data-state": E ? "active" : "inactive",
    "data-disabled": B ? "" : void 0,
    disabled: B,
    id: I
  }, g, {
    ref: u,
    onMouseDown: Jg(A.onMouseDown, (Q) => {
      !B && Q.button === 0 && Q.ctrlKey === !1 ? t.onValueChange(C) : Q.preventDefault();
    }),
    onKeyDown: Jg(A.onKeyDown, (Q) => {
      [
        " ",
        "Enter"
      ].includes(Q.key) && t.onValueChange(C);
    }),
    onFocus: Jg(A.onFocus, () => {
      const Q = t.activationMode !== "manual";
      !E && !B && Q && t.onValueChange(C);
    })
  })));
}), k9A = "TabsContent", y9A = /* @__PURE__ */ x.forwardRef((A, u) => {
  const { __scopeTabs: e, value: C, forceMount: B, children: g, ...t } = A, i = b9(k9A, e), I = rG(i.baseId, C), o = sG(i.baseId, C), E = C === i.value, Q = x.useRef(E);
  return x.useEffect(() => {
    const s = requestAnimationFrame(
      () => Q.current = !1
    );
    return () => cancelAnimationFrame(s);
  }, []), /* @__PURE__ */ x.createElement(
    oG,
    {
      present: B || E
    },
    ({ present: s }) => /* @__PURE__ */ x.createElement(GI.div, _e({
      "data-state": E ? "active" : "inactive",
      "data-orientation": i.orientation,
      role: "tabpanel",
      "aria-labelledby": I,
      hidden: !s,
      id: o,
      tabIndex: 0
    }, t, {
      ref: u,
      style: {
        ...A.style,
        animationDuration: Q.current ? "0s" : void 0
      }
    }), s && g)
  );
});
function rG(A, u) {
  return `${A}-trigger-${u}`;
}
function sG(A, u) {
  return `${A}-content-${u}`;
}
const lG = h9A, cG = F9A, dG = m9A, DG = y9A;
var gD, qp;
function b9A() {
  if (qp) return gD;
  qp = 1;
  var A = "Expected a function", u = NaN, e = "[object Symbol]", C = /^\s+|\s+$/g, B = /^[-+]0x[0-9a-f]+$/i, g = /^0b[01]+$/i, t = /^0o[0-7]+$/i, i = parseInt, I = typeof zt == "object" && zt && zt.Object === Object && zt, o = typeof self == "object" && self && self.Object === Object && self, E = I || o || Function("return this")(), Q = Object.prototype, s = Q.toString, l = Math.max, c = Math.min, D = function() {
    return E.Date.now();
  };
  function h(b, f, L) {
    var N, M, v, K, q, j, uA = 0, O = !1, $ = !1, X = !0;
    if (typeof b != "function")
      throw new TypeError(A);
    f = k(f) || 0, F(L) && (O = !!L.leading, $ = "maxWait" in L, v = $ ? l(k(L.maxWait) || 0, f) : v, X = "trailing" in L ? !!L.trailing : X);
    function P(mA) {
      var FA = N, TA = M;
      return N = M = void 0, uA = mA, K = b.apply(TA, FA), K;
    }
    function _(mA) {
      return uA = mA, q = setTimeout(gA, f), O ? P(mA) : K;
    }
    function CA(mA) {
      var FA = mA - j, TA = mA - uA, WA = f - FA;
      return $ ? c(WA, v - TA) : WA;
    }
    function T(mA) {
      var FA = mA - j, TA = mA - uA;
      return j === void 0 || FA >= f || FA < 0 || $ && TA >= v;
    }
    function gA() {
      var mA = D();
      if (T(mA))
        return GA(mA);
      q = setTimeout(gA, CA(mA));
    }
    function GA(mA) {
      return q = void 0, X && N ? P(mA) : (N = M = void 0, K);
    }
    function fA() {
      q !== void 0 && clearTimeout(q), uA = 0, N = j = M = q = void 0;
    }
    function qA() {
      return q === void 0 ? K : GA(D());
    }
    function JA() {
      var mA = D(), FA = T(mA);
      if (N = arguments, M = this, j = mA, FA) {
        if (q === void 0)
          return _(j);
        if ($)
          return q = setTimeout(gA, f), P(j);
      }
      return q === void 0 && (q = setTimeout(gA, f)), K;
    }
    return JA.cancel = fA, JA.flush = qA, JA;
  }
  function F(b) {
    var f = typeof b;
    return !!b && (f == "object" || f == "function");
  }
  function m(b) {
    return !!b && typeof b == "object";
  }
  function p(b) {
    return typeof b == "symbol" || m(b) && s.call(b) == e;
  }
  function k(b) {
    if (typeof b == "number")
      return b;
    if (p(b))
      return u;
    if (F(b)) {
      var f = typeof b.valueOf == "function" ? b.valueOf() : b;
      b = F(f) ? f + "" : f;
    }
    if (typeof b != "string")
      return b === 0 ? b : +b;
    b = b.replace(C, "");
    var L = g.test(b);
    return L || t.test(b) ? i(b.slice(2), L ? 2 : 8) : B.test(b) ? u : +b;
  }
  return gD = h, gD;
}
var U9A = b9A();
const G9A = /* @__PURE__ */ gg(U9A);
function f9A(A, u, e, C) {
  Object.defineProperty(A, u, { get: e, set: C, enumerable: !0, configurable: !0 });
}
var L9A = {};
f9A(L9A, "LaserPointer", () => sE);
function h0([A, u, e], [C, B, g]) {
  return [
    A + C,
    u + B,
    e + g
  ];
}
function iQ([A, u, e], [C, B, g]) {
  return [
    A - C,
    u - B,
    e - g
  ];
}
function G0([A, u, e], C) {
  return [
    A * C,
    u * C,
    e * C
  ];
}
function Na([A, u, e]) {
  return [
    A / Math.sqrt(A ** 2 + u ** 2),
    u / Math.sqrt(A ** 2 + u ** 2),
    e
  ];
}
function re([A, u, e], C) {
  return [
    Math.cos(C) * A - Math.sin(C) * u,
    Math.sin(C) * A + Math.cos(C) * u,
    e
  ];
}
function x9A(A, u, e) {
  return h0(A, G0(iQ(u, A), e));
}
function Wp(A, u, e) {
  return Math.atan2(e[1] - A[1], e[0] - A[0]) - Math.atan2(u[1] - A[1], u[0] - A[0]);
}
function jp(A) {
  return Math.atan2(Math.sin(A), Math.cos(A));
}
function Tp([A, u]) {
  return Math.sqrt(A ** 2 + u ** 2);
}
function AI([A, u], [e, C]) {
  return Math.sqrt((e - A) ** 2 + (C - u) ** 2);
}
function S9A(A) {
  if (A.length < 2) return 0;
  let u = 0;
  for (let e = 1; e <= A.length - 1; e++) u += AI(A[e - 1], A[e]);
  return u += AI(A[A.length - 2], A[A.length - 1]), u;
}
const N9A = (A, u, e) => Math.max(u, Math.min(e, A));
function R9A(A, u, e) {
  const C = AI(u, e);
  if (C === 0) return AI(A, u);
  const B = N9A(((A[0] - u[0]) * (e[0] - u[0]) + (A[1] - u[1]) * (e[1] - u[1])) / C ** 2, 0, 1), g = [
    u[0] + B * (e[0] - u[0]),
    u[1] + B * (e[1] - u[1]),
    A[2]
  ];
  return AI(g, A);
}
function Wl(A, u) {
  if (u === 0 || A.length <= 2) return A;
  const e = A[0], C = A[A.length - 1], [B, g] = A.reduce(([t, i], I, o) => {
    const E = R9A(I, e, C);
    return E > t ? [
      E,
      o
    ] : [
      t,
      i
    ];
  }, [
    0,
    -1
  ]);
  if (B >= u) {
    const t = A[g];
    return [
      ...Wl([
        e,
        ...A.slice(1, g),
        t
      ], u).slice(0, -1),
      t,
      ...Wl([
        t,
        ...A.slice(g, -1),
        C
      ], u).slice(1)
    ];
  } else return [
    e,
    C
  ];
}
class sE {
  static {
    this.defaults = {
      size: 2,
      streamline: 0.45,
      simplify: 0.1,
      simplifyPhase: "output",
      keepHead: !1,
      sizeMapping: () => 1
    };
  }
  static {
    this.constants = {
      cornerDetectionMaxAngle: 75,
      cornerDetectionVariance: (u) => u > 35 ? 0.5 : 1,
      maxTailLength: 50
    };
  }
  constructor(u) {
    this.originalPoints = [], this.stablePoints = [], this.tailPoints = [], this.isFresh = !0, this.options = Object.assign({}, sE.defaults, u);
  }
  get lastPoint() {
    return this.tailPoints[this.tailPoints.length - 1] ?? this.stablePoints[this.stablePoints.length - 1];
  }
  addPoint(u) {
    const e = this.originalPoints[this.originalPoints.length - 1];
    if (!(e && e[0] === u[0] && e[1] === u[1])) {
      if (this.originalPoints.push(u), this.isFresh) {
        this.isFresh = !1, this.stablePoints.push(u);
        return;
      }
      this.options.streamline > 0 && (u = x9A(this.lastPoint, u, 1 - this.options.streamline)), this.tailPoints.push(u), S9A(this.tailPoints) > sE.constants.maxTailLength && this.stabilizeTail();
    }
  }
  close() {
    this.stabilizeTail();
  }
  stabilizeTail() {
    if (this.options.simplify > 0 && this.options.simplifyPhase == "tail") throw new Error("Not implemented yet");
    this.stablePoints.push(...this.tailPoints), this.tailPoints = [];
  }
  getSize(u, e, C, B, g) {
    return (u ?? this.options.size) * this.options.sizeMapping({
      pressure: e,
      runningLength: g,
      currentIndex: C,
      totalLength: B
    });
  }
  getStrokeOutline(u) {
    if (this.isFresh) return [];
    let e = [
      ...this.stablePoints,
      ...this.tailPoints
    ];
    this.options.simplify > 0 && this.options.simplifyPhase === "input" && (e = Wl(e, this.options.simplify));
    const C = e.length;
    if (C === 0) return [];
    if (C === 1) {
      const L = e[0], N = this.getSize(u, L[2], 0, C, 0);
      if (N < 0.5) return [];
      const M = [];
      for (let v = 0; v <= Math.PI * 2; v += Math.PI / 16) M.push(h0(L, G0(re([
        1,
        0,
        0
      ], v), N)));
      return M.push(h0(L, G0([
        1,
        0,
        0
      ], this.getSize(u, L[2], 0, C, 0)))), M;
    }
    if (C === 2) {
      const L = e[0], N = e[1], M = this.getSize(u, L[2], 0, C, 0), v = this.getSize(u, N[2], 0, C, 0);
      if (M < 0.5 || v < 0.5) return [];
      const K = [], q = Wp(L, [
        L[0],
        L[1] - 100,
        L[2]
      ], N);
      for (let j = q; j <= Math.PI + q; j += Math.PI / 16) K.push(h0(L, G0(re([
        1,
        0,
        0
      ], j), M)));
      for (let j = Math.PI + q; j <= Math.PI * 2 + q; j += Math.PI / 16) K.push(h0(N, G0(re([
        1,
        0,
        0
      ], j), v)));
      return K.push(K[0]), K;
    }
    const B = [], g = [];
    let t = 0, i = 0, I = 0, o = 0;
    for (let L = 1; L < C - 1; L++) {
      const N = e[L - 1], M = e[L], v = e[L + 1];
      let K = M[2];
      const q = AI(N, M);
      o += q, t = i + (q - i) * 0.2;
      const j = this.getSize(u, K, L, C, o);
      if (j === 0) {
        I = L + 1;
        continue;
      }
      const uA = Na(iQ(N, M)), O = Na(iQ(v, M)), $ = re(uA, Math.PI / 2), X = re(uA, -Math.PI / 2), P = re(O, Math.PI / 2), _ = re(O, -Math.PI / 2), CA = h0(M, G0($, j)), T = h0(M, G0(X, j)), gA = h0(M, G0(P, j)), GA = h0(M, G0(_, j)), fA = h0($, _), qA = h0(X, P), JA = h0(M, G0(Tp(fA) === 0 ? uA : Na(fA), j)), mA = h0(M, G0(Tp(qA) === 0 ? O : Na(qA), j)), FA = jp(Wp(M, N, v)), TA = sE.constants.cornerDetectionMaxAngle / 180 * Math.PI * sE.constants.cornerDetectionVariance(t);
      if (Math.abs(FA) < TA) {
        const WA = Math.abs(jp(Math.PI - FA));
        if (WA === 0) continue;
        if (FA < 0) {
          g.push(T, mA);
          for (let ru = 0; ru <= WA; ru += WA / 4) B.push(h0(M, re(G0($, j), ru)));
          for (let ru = WA; ru >= 0; ru -= WA / 4) g.push(h0(M, re(G0($, j), ru)));
          g.push(mA, gA);
        } else {
          B.push(CA, JA);
          for (let ru = 0; ru <= WA; ru += WA / 4) g.push(h0(M, re(G0($, -j), -ru)));
          for (let ru = WA; ru >= 0; ru -= WA / 4) B.push(h0(M, re(G0($, -j), -ru)));
          B.push(JA, GA);
        }
      } else
        B.push(JA), g.push(mA);
      i = t;
    }
    if (I >= C - 2)
      if (this.options.keepHead) {
        const L = e[C - 1], N = [];
        for (let M = 0; M <= Math.PI * 2; M += Math.PI / 16) N.push(h0(L, G0(re([
          1,
          0,
          0
        ], M), this.options.size)));
        return N.push(h0(L, G0([
          1,
          0,
          0
        ], this.options.size))), N;
      } else return [];
    const E = e[I], Q = e[I + 1], s = e[C - 2], l = e[C - 1], c = Na(iQ(Q, E)), D = Na(iQ(s, l)), h = re(c, -Math.PI / 2), F = re(D, Math.PI / 2), m = this.getSize(u, E[2], 0, C, 0), p = [], k = this.options.keepHead ? this.options.size : this.getSize(u, s[2], C - 2, C, o), b = [];
    if (m > 1) {
      for (let L = 0; L <= Math.PI; L += Math.PI / 16) p.unshift(h0(E, re(G0(h, m), -L)));
      p.unshift(h0(E, G0(h, -m)));
    } else p.push(E);
    for (let L = 0; L <= Math.PI * 3; L += Math.PI / 16) b.push(h0(l, re(G0(F, -k), -L)));
    const f = [
      ...p,
      ...B,
      ...b.reverse(),
      ...g.reverse()
    ];
    return p.length > 0 && f.push(p[0]), this.options.simplify > 0 && this.options.simplifyPhase === "output" ? Wl(f, this.options.simplify) : f;
  }
}
var hG = BU(), { useAtom: c0, useSetAtom: K4, useAtomValue: wG, useStore: p8A } = hG, M9A = hG.Provider, QB = I9(), Y9A = tBA({ "./locales/ar-SA.json": () => Promise.resolve().then(() => rmA), "./locales/az-AZ.json": () => Promise.resolve().then(() => lmA), "./locales/bg-BG.json": () => Promise.resolve().then(() => dmA), "./locales/bn-BD.json": () => Promise.resolve().then(() => hmA), "./locales/ca-ES.json": () => Promise.resolve().then(() => FmA), "./locales/cs-CZ.json": () => Promise.resolve().then(() => mmA), "./locales/da-DK.json": () => Promise.resolve().then(() => ymA), "./locales/de-DE.json": () => Promise.resolve().then(() => UmA), "./locales/el-GR.json": () => Promise.resolve().then(() => fmA), "./locales/en.json": () => Promise.resolve().then(() => LmA), "./locales/es-ES.json": () => Promise.resolve().then(() => SmA), "./locales/eu-ES.json": () => Promise.resolve().then(() => RmA), "./locales/fa-IR.json": () => Promise.resolve().then(() => YmA), "./locales/fi-FI.json": () => Promise.resolve().then(() => HmA), "./locales/fr-FR.json": () => Promise.resolve().then(() => JmA), "./locales/gl-ES.json": () => Promise.resolve().then(() => qmA), "./locales/he-IL.json": () => Promise.resolve().then(() => jmA), "./locales/hi-IN.json": () => Promise.resolve().then(() => zmA), "./locales/hu-HU.json": () => Promise.resolve().then(() => OmA), "./locales/id-ID.json": () => Promise.resolve().then(() => XmA), "./locales/it-IT.json": () => Promise.resolve().then(() => $mA), "./locales/ja-JP.json": () => Promise.resolve().then(() => u7A), "./locales/kaa.json": () => Promise.resolve().then(() => C7A), "./locales/kab-KAB.json": () => Promise.resolve().then(() => g7A), "./locales/kk-KZ.json": () => Promise.resolve().then(() => i7A), "./locales/km-KH.json": () => Promise.resolve().then(() => a7A), "./locales/ko-KR.json": () => Promise.resolve().then(() => o7A), "./locales/ku-TR.json": () => Promise.resolve().then(() => n7A), "./locales/lt-LT.json": () => Promise.resolve().then(() => s7A), "./locales/lv-LV.json": () => Promise.resolve().then(() => c7A), "./locales/mr-IN.json": () => Promise.resolve().then(() => D7A), "./locales/my-MM.json": () => Promise.resolve().then(() => w7A), "./locales/nb-NO.json": () => Promise.resolve().then(() => p7A), "./locales/nl-NL.json": () => Promise.resolve().then(() => k7A), "./locales/nn-NO.json": () => Promise.resolve().then(() => b7A), "./locales/oc-FR.json": () => Promise.resolve().then(() => G7A), "./locales/pa-IN.json": () => Promise.resolve().then(() => L7A), "./locales/percentages.json": () => Promise.resolve().then(() => x7A), "./locales/pl-PL.json": () => Promise.resolve().then(() => N7A), "./locales/pt-BR.json": () => Promise.resolve().then(() => M7A), "./locales/pt-PT.json": () => Promise.resolve().then(() => v7A), "./locales/ro-RO.json": () => Promise.resolve().then(() => K7A), "./locales/ru-RU.json": () => Promise.resolve().then(() => Z7A), "./locales/si-LK.json": () => Promise.resolve().then(() => W7A), "./locales/sk-SK.json": () => Promise.resolve().then(() => T7A), "./locales/sl-SI.json": () => Promise.resolve().then(() => P7A), "./locales/sv-SE.json": () => Promise.resolve().then(() => V7A), "./locales/ta-IN.json": () => Promise.resolve().then(() => _7A), "./locales/th-TH.json": () => Promise.resolve().then(() => A8A), "./locales/tr-TR.json": () => Promise.resolve().then(() => e8A), "./locales/uk-UA.json": () => Promise.resolve().then(() => B8A), "./locales/vi-VN.json": () => Promise.resolve().then(() => t8A), "./locales/zh-CN.json": () => Promise.resolve().then(() => E8A), "./locales/zh-HK.json": () => Promise.resolve().then(() => I8A), "./locales/zh-TW.json": () => Promise.resolve().then(() => Q8A) }), v9A = 85, fI = { code: "en", label: "English" }, U9 = [fI, ...[{ code: "ar-SA", label: "العربية", rtl: !0 }, { code: "bg-BG", label: "Български" }, { code: "ca-ES", label: "Català" }, { code: "cs-CZ", label: "Česky" }, { code: "de-DE", label: "Deutsch" }, { code: "el-GR", label: "Ελληνικά" }, { code: "es-ES", label: "Español" }, { code: "eu-ES", label: "Euskara" }, { code: "fa-IR", label: "فارسی", rtl: !0 }, { code: "fi-FI", label: "Suomi" }, { code: "fr-FR", label: "Français" }, { code: "gl-ES", label: "Galego" }, { code: "he-IL", label: "עברית", rtl: !0 }, { code: "hi-IN", label: "हिन्दी" }, { code: "hu-HU", label: "Magyar" }, { code: "id-ID", label: "Bahasa Indonesia" }, { code: "it-IT", label: "Italiano" }, { code: "ja-JP", label: "日本語" }, { code: "kab-KAB", label: "Taqbaylit" }, { code: "kk-KZ", label: "Қазақ тілі" }, { code: "ko-KR", label: "한국어" }, { code: "ku-TR", label: "Kurdî" }, { code: "lt-LT", label: "Lietuvių" }, { code: "lv-LV", label: "Latviešu" }, { code: "my-MM", label: "Burmese" }, { code: "nb-NO", label: "Norsk bokmål" }, { code: "nl-NL", label: "Nederlands" }, { code: "nn-NO", label: "Norsk nynorsk" }, { code: "oc-FR", label: "Occitan" }, { code: "pa-IN", label: "ਪੰਜਾਬੀ" }, { code: "pl-PL", label: "Polski" }, { code: "pt-BR", label: "Português Brasileiro" }, { code: "pt-PT", label: "Português" }, { code: "ro-RO", label: "Română" }, { code: "ru-RU", label: "Русский" }, { code: "sk-SK", label: "Slovenčina" }, { code: "sv-SE", label: "Svenska" }, { code: "sl-SI", label: "Slovenščina" }, { code: "tr-TR", label: "Türkçe" }, { code: "uk-UA", label: "Українська" }, { code: "zh-CN", label: "简体中文" }, { code: "zh-TW", label: "繁體中文" }, { code: "vi-VN", label: "Tiếng Việt" }, { code: "mr-IN", label: "मराठी" }].filter((A) => Xb[A.code] >= v9A).sort((A, u) => A.label > u.label ? 1 : -1)], jl = "__test__";
tu.DEV && U9.unshift({ code: jl, label: "test language" }, { code: `${jl}.rtl`, label: "‪test language (rtl)‬", rtl: !0 });
var Oa = fI, zs = {}, FG = async (A) => {
  if (Oa = A, document.documentElement.dir = Oa.rtl ? "rtl" : "ltr", document.documentElement.lang = Oa.code, A.code.startsWith(jl)) zs = {};
  else try {
    zs = await Y9A(`./locales/${Oa.code}.json`);
  } catch (u) {
    console.error(`Failed to load language ${A.code}:`, u.message), zs = a9;
  }
  QB.set(pG, A.code);
}, en = () => Oa, zp = (A, u) => {
  for (let e = 0; e < u.length; ++e) {
    let C = u[e];
    if (A[C] === void 0) return;
    A = A[C];
  }
  if (typeof A == "string") return A;
}, S = (A, u, e) => {
  if (Oa.code.startsWith(jl)) return `‪[[${u ? `${A}(${JSON.stringify(u).slice(1, -1)})` : A}]]‬`;
  let C = A.split("."), B = zp(zs, C) || zp(a9, C) || e;
  if (B === void 0) {
    let g = `Can't find translation for ${A}`;
    return console.warn(g), "";
  }
  if (u) for (let g in u) B = B.replace(`{{${g}}}`, String(u[g]));
  return B;
}, pG = $0(fI.code), Fe = () => {
  let A = wG(pG);
  return { t: S, langCode: A };
}, H9A = ({ size: A = "1em", circleWidth: u = 8, synchronized: e = !1, className: C = "" }) => {
  let B = -(kA.useRef(Date.now()).current % 1600);
  return r.jsx("div", { className: `Spinner ${C}`, children: r.jsx("svg", { viewBox: "0 0 100 100", style: { width: A, height: A, "--spinner-delay": e ? `${B}ms` : 0 }, children: r.jsx("circle", { cx: "50", cy: "50", r: 50 - u / 2, strokeWidth: u, fill: "none", strokeMiterlimit: "10" }) }) });
}, $g = H9A, mG = ({ delay: A, theme: u }) => {
  let [e, C] = x.useState(!!A);
  return x.useEffect(() => {
    if (!A) return;
    let B = setTimeout(() => {
      C(!1);
    }, A);
    return () => clearTimeout(B);
  }, [A]), e ? null : r.jsxs("div", { className: NA("LoadingMessage", { "LoadingMessage--dark": u === su.DARK }), children: [r.jsx("div", { children: r.jsx($g, {}) }), r.jsx("div", { className: "LoadingMessage-text", children: S("labels.loadingScene") })] });
}, K9A = (A) => {
  let [u, e] = x.useState(!0);
  return x.useEffect(() => {
    let C = async () => {
      await FG(B), e(!1);
    }, B = U9.find((g) => g.code === A.langCode) || fI;
    C();
  }, [A.langCode]), u ? r.jsx(mG, { theme: A.theme }) : A.children;
}, cu = kA.forwardRef(({ size: A = "medium", visible: u = !0, className: e = "", ...C }, B) => {
  let { id: g } = ag(), t = kA.useRef(null);
  kA.useImperativeHandle(B, () => t.current);
  let i = `ToolIcon_size_${A}`, [I, o] = x.useState(!1), E = x.useRef(!0), Q = async (l) => {
    let c = "onClick" in C && C.onClick?.(l);
    if (sn(c)) try {
      o(!0), await c;
    } catch (D) {
      if (D instanceof r4) console.warn(D);
      else throw D;
    } finally {
      E.current && o(!1);
    }
  };
  x.useEffect(() => (E.current = !0, () => {
    E.current = !1;
  }), []);
  let s = x.useRef(null);
  if (C.type === "button" || C.type === "icon" || C.type === "submit") {
    let l = C.type === "icon" ? "button" : C.type;
    return r.jsxs("button", { className: NA("ToolIcon_type_button", i, e, u && !C.hidden ? "ToolIcon_type_button--show" : "ToolIcon_type_button--hide", { ToolIcon: !C.hidden, "ToolIcon--selected": C.selected, "ToolIcon--plain": C.type === "icon" }), style: C.style, "data-testid": C["data-testid"], hidden: C.hidden, title: C.title, "aria-label": C["aria-label"], type: l, onClick: Q, ref: t, disabled: I || C.isLoading || !!C.disabled, children: [(C.icon || C.label) && r.jsxs("div", { className: "ToolIcon__icon", "aria-hidden": "true", "aria-disabled": !!C.disabled, children: [C.icon || C.label, C.keyBindingLabel && r.jsx("span", { className: "ToolIcon__keybinding", children: C.keyBindingLabel }), C.isLoading && r.jsx($g, {})] }), C.showAriaLabel && r.jsxs("div", { className: "ToolIcon__label", children: [C["aria-label"], " ", I && r.jsx($g, {})] }), C.children] });
  }
  return r.jsxs("label", { className: NA("ToolIcon", e), title: C.title, onPointerDown: (l) => {
    s.current = l.pointerType || null, C.onPointerDown?.({ pointerType: l.pointerType || null });
  }, onPointerUp: () => {
    requestAnimationFrame(() => {
      s.current = null;
    });
  }, children: [r.jsx("input", { className: `ToolIcon_type_radio ${i}`, type: "radio", name: C.name, "aria-label": C["aria-label"], "aria-keyshortcuts": C["aria-keyshortcuts"], "data-testid": C["data-testid"], id: `${g}-${C.id}`, onChange: () => {
    C.onChange?.({ pointerType: s.current });
  }, checked: C.checked, ref: t }), r.jsxs("div", { className: "ToolIcon__icon", children: [C.icon, C.keyBindingLabel && r.jsx("span", { className: "ToolIcon__keybinding", children: C.keyBindingLabel })] })] });
});
cu.displayName = "ToolButton";
var J9A = (A, u, e) => {
  let C = new Set(iu(A.filter((E) => OA(E)), u).map((E) => E.id)), B = {}, g = e.scene.getNonDeletedElementsMap(), t = /* @__PURE__ */ new Set();
  for (let E of C) {
    let Q = Bg(A, E);
    for (let s of Q) if (!t.has(s.id)) {
      if (Xu(s)) {
        let l = _0(s, g);
        l && (B[l.id] = !0);
      } else B[s.id] = !0;
      t.add(s.id);
    }
  }
  let i = !0, I = A.map((E) => {
    if (u.selectedElementIds[E.id]) {
      let Q = Xu(E) ? _0(E, g) : null;
      return E.frameId && C.has(E.frameId) ? (i = !1, B[E.id] = !0, E) : Q?.frameId && C.has(Q?.frameId) ? E : (E.boundElements && E.boundElements.forEach((s) => {
        let l = e.scene.getNonDeletedElementsMap().get(s.id);
        l && xA(l) && (nA(l, { startBinding: E.id === l.startBinding?.elementId ? null : l.startBinding, endBinding: E.id === l.endBinding?.elementId ? null : l.endBinding }), nA(l, { points: l.points }));
      }), Bu(E, { isDeleted: !0 }));
    }
    return E.frameId && C.has(E.frameId) ? (i = !1, Xu(E) || (B[E.id] = !0), Bu(E, { frameId: null })) : Xu(E) && u.selectedElementIds[E.containerId] ? Bu(E, { isDeleted: !0 }) : E;
  }), o = u.editingGroupId;
  if (i && u.editingGroupId) {
    let E = Vu(I, u.editingGroupId).filter((Q) => !Q.isDeleted);
    if (E.length > 1) E[0] && (B[E[0].id] = !0);
    else {
      o = null, E[0] && (B[E[0].id] = !0);
      let Q = E[0];
      if (Q) {
        let s = Q.groupIds.findIndex((c) => c === u.editingGroupId), l = Q.groupIds[s + 1];
        if (l) {
          let c = Vu(I, l).filter((D) => !D.isDeleted);
          c.length > 1 && (o = l, c.forEach((D) => {
            B[D.id] = !0;
          }));
        }
      }
    }
  }
  return { elements: I, appState: { ...u, ...Ue({ selectedElementIds: B, editingGroupId: o }, I, u, null) } };
}, Pp = (A, u) => {
  if (A.editingGroupId) {
    let e = Vu(Wu(u), A.editingGroupId);
    if (e.length) return { ...A, selectedElementIds: { [e[0].id]: !0 } };
  }
  return A;
}, kG = pA({ name: "deleteSelectedElements", label: "labels.delete", icon: xE, trackEvent: { category: "element", action: "delete" }, perform: (A, u, e, C) => {
  if (u.editingLinearElement) {
    let { elementId: t, selectedPointsIndices: i, startBindingElement: I, endBindingElement: o } = u.editingLinearElement, E = C.scene.getNonDeletedElementsMap(), Q = LA.getElement(t, E);
    if (!Q || i == null) return !1;
    if (Q.points.length < 2) {
      let l = A.map((D) => D.id === Q.id ? Bu(D, { isDeleted: !0 }) : D), c = Pp(u, l);
      return { elements: l, appState: { ...c, editingLinearElement: null }, captureUpdate: aA.IMMEDIATELY };
    }
    let s = { startBindingElement: i?.includes(0) ? null : I, endBindingElement: i?.includes(Q.points.length - 1) ? null : o };
    return LA.deletePoints(Q, i), { elements: A, appState: { ...u, editingLinearElement: { ...u.editingLinearElement, ...s, selectedPointsIndices: i?.[0] > 0 ? [i[0] - 1] : [0] } }, captureUpdate: aA.IMMEDIATELY };
  }
  let { elements: B, appState: g } = J9A(A, u, C);
  return qk(B, B.filter((t) => t.isDeleted)), g = Pp(g, B), { elements: B, appState: { ...g, activeTool: b0(u, { type: "selection" }), multiElement: null, activeEmbeddable: null }, captureUpdate: S0(Wu(A), u) ? aA.IMMEDIATELY : aA.EVENTUALLY };
}, keyTest: (A, u, e) => (A.key === Z.BACKSPACE || A.key === Z.DELETE) && !A[Z.CTRL_OR_CMD], PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsx(cu, { type: "button", icon: xE, title: S("labels.delete"), "aria-label": S("labels.delete"), onClick: () => e(null), visible: S0(Wu(A), u) }) }), U1 = (A, u) => A.frameId === u || A.id === u, yG = (A, u, e) => {
  let C = [], B = [], g = null, t = -1, i = PA(e || iu(A, u, { includeBoundTextElement: !0, includeElementsInFrames: !0 }));
  for (; ++t < A.length; ) {
    let I = A[t];
    i.get(I.id) ? (B.length && (C = C.concat(B), B = []), C.push(t), g = t + 1) : I.isDeleted && g === t ? (g = t + 1, B.push(t)) : B = [];
  }
  return C;
}, Z9A = (A) => {
  let u = 0;
  return A.reduce((e, C, B) => (B > 0 && A[B - 1] !== C - 1 && (u = ++u), (e[u] || (e[u] = [])).push(C), e), []);
}, Op = (A, u, e) => {
  if ("containerId" in A && A.containerId) {
    let C = Og.getScene(A).getElement(A.containerId);
    if (C) return e === "left" ? Math.min(u.indexOf(C), u.indexOf(A)) : Math.max(u.indexOf(C), u.indexOf(A));
  } else {
    let C = A.boundElements?.find((B) => B.type !== "arrow")?.id;
    if (C) {
      let B = Og.getScene(A).getElement(C);
      if (B) return e === "left" ? Math.min(u.indexOf(B), u.indexOf(A)) : Math.max(u.indexOf(B), u.indexOf(A));
    }
  }
}, q9A = (A, u) => {
  let e = -1, C = -1;
  return A.forEach((B, g) => {
    U1(B, u) && (e === -1 && (e = g), C = g);
  }), e === -1 ? [] : A.slice(e, C + 1);
}, W9A = (A, u, e, C, B) => {
  let g = u[e], t = (Q) => Q.isDeleted ? !1 : B ? Q.frameId === B : A.editingGroupId ? Q.groupIds.includes(A.editingGroupId) : !0, i = C === "left" ? iE(u, (Q) => t(Q), Math.max(0, e - 1)) : U8(u, (Q) => t(Q), e + 1), I = u[i];
  if (!I) return -1;
  if (A.editingGroupId) {
    if (g?.groupIds.join("") === I?.groupIds.join("")) return Op(I, u, C) ?? i;
    if (!I?.groupIds.includes(A.editingGroupId)) return -1;
  }
  if (!B && (I.frameId || OA(I))) {
    let Q = q9A(u, I.frameId || I.id);
    return C === "left" ? u.indexOf(Q[0]) : u.indexOf(Q[Q.length - 1]);
  }
  if (!I.groupIds.length) return Op(I, u, C) ?? i;
  let o = A.editingGroupId ? I.groupIds[I.groupIds.indexOf(A.editingGroupId) - 1] : I.groupIds[I.groupIds.length - 1], E = Vu(u, o);
  return E.length ? C === "left" ? u.indexOf(E[0]) : u.indexOf(E[E.length - 1]) : i;
}, bG = (A, u) => u.reduce((e, C) => {
  let B = A[C];
  return e.set(B.id, B), e;
}, /* @__PURE__ */ new Map()), UG = (A, u, e) => {
  let C = yG(A, u), B = bG(A, C), g = Z9A(C);
  e === "right" && (g = g.reverse());
  let t = new Set(C.filter((i) => OA(A[i])).map((i) => A[i].id));
  return g.forEach((i, I) => {
    let o = i[0], E = i[i.length - 1], Q = e === "left" ? o : E, s = i.some((m) => {
      let p = A[m];
      return p.frameId && t.has(p.frameId);
    }) ? null : A[Q]?.frameId, l = W9A(u, A, Q, e, s);
    if (l === -1 || Q === l) return;
    let c = e === "left" ? A.slice(0, l) : A.slice(0, o), D = A.slice(o, E + 1), h = e === "left" ? A.slice(l, o) : A.slice(E + 1, l + 1), F = e === "left" ? A.slice(E + 1) : A.slice(l + 1);
    A = e === "left" ? [...c, ...D, ...h, ...F] : [...c, ...h, ...D, ...F];
  }), Cg(A, B), A;
}, GG = (A, u, e, C, B) => {
  let g = yG(A, u, B), t = bG(A, g), i = [], I, o;
  if (e === "left") {
    if (C) I = U8(A, (c) => U1(c, C));
    else if (u.editingGroupId) {
      let c = Vu(A, u.editingGroupId);
      if (!c.length) return A;
      I = A.indexOf(c[0]);
    } else I = 0;
    o = g[g.length - 1];
  } else {
    if (C) o = iE(A, (c) => U1(c, C));
    else if (u.editingGroupId) {
      let c = Vu(A, u.editingGroupId);
      if (!c.length) return A;
      o = A.indexOf(c[c.length - 1]);
    } else o = A.length - 1;
    I = g[0];
  }
  I === -1 && (I = 0);
  for (let c = I; c < o + 1; c++) g.includes(c) || i.push(A[c]);
  let E = Array.from(t.values()), Q = A.slice(0, I), s = A.slice(o + 1), l = e === "left" ? [...Q, ...E, ...i, ...s] : [...Q, ...i, ...E, ...s];
  return Cg(l, t), l;
};
function fG(A, u, e, C) {
  let B = PA(iu(A, u, { includeBoundTextElement: !0, includeElementsInFrames: !0 })), g = { regularElements: [], frameChildren: /* @__PURE__ */ new Map() }, t = /* @__PURE__ */ new Set();
  for (let o of A) B.has(o.id) && OA(o) && t.add(o.id);
  for (let o of A) if (B.has(o.id)) if (OA(o) || o.frameId && t.has(o.frameId)) g.regularElements.push(o);
  else if (!o.frameId) g.regularElements.push(o);
  else {
    let E = g.frameChildren.get(o.frameId) || [];
    E.push(o), g.frameChildren.set(o.frameId, E);
  }
  let i = A, I = Array.from(g.frameChildren.entries());
  for (let [o, E] of I) i = C(A, u, e, o, E);
  return C(i, u, e, null, g.regularElements);
}
var j9A = (A, u) => UG(A, u, "left"), T9A = (A, u) => UG(A, u, "right"), z9A = (A, u) => fG(A, u, "left", GG), P9A = (A, u) => fG(A, u, "right", GG), O9A = pA({ name: "sendBackward", label: "labels.sendBackward", keywords: ["move down", "zindex", "layer"], icon: SF, trackEvent: { category: "element" }, perform: (A, u) => ({ elements: j9A(A, u), appState: u, captureUpdate: aA.IMMEDIATELY }), keyPriority: 40, keyTest: (A) => A[Z.CTRL_OR_CMD] && !A.shiftKey && A.code === wu.BRACKET_LEFT, PanelComponent: ({ updateData: A, appState: u }) => r.jsx("button", { type: "button", className: "zIndexButton", onClick: () => A(null), title: `${S("labels.sendBackward")} — ${QA("CtrlOrCmd+[")}`, children: SF }) }), V9A = pA({ name: "bringForward", label: "labels.bringForward", keywords: ["move up", "zindex", "layer"], icon: xF, trackEvent: { category: "element" }, perform: (A, u) => ({ elements: T9A(A, u), appState: u, captureUpdate: aA.IMMEDIATELY }), keyPriority: 40, keyTest: (A) => A[Z.CTRL_OR_CMD] && !A.shiftKey && A.code === wu.BRACKET_RIGHT, PanelComponent: ({ updateData: A, appState: u }) => r.jsx("button", { type: "button", className: "zIndexButton", onClick: () => A(null), title: `${S("labels.bringForward")} — ${QA("CtrlOrCmd+]")}`, children: xF }) }), X9A = pA({ name: "sendToBack", label: "labels.sendToBack", keywords: ["move down", "zindex", "layer"], icon: RF, trackEvent: { category: "element" }, perform: (A, u) => ({ elements: z9A(A, u), appState: u, captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => _B ? A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.BRACKET_LEFT : A[Z.CTRL_OR_CMD] && A.shiftKey && A.code === wu.BRACKET_LEFT, PanelComponent: ({ updateData: A, appState: u }) => r.jsx("button", { type: "button", className: "zIndexButton", onClick: () => A(null), title: `${S("labels.sendToBack")} — ${QA(_B ? "CtrlOrCmd+Alt+[" : "CtrlOrCmd+Shift+[")}`, children: RF }) }), _9A = pA({ name: "bringToFront", label: "labels.bringToFront", keywords: ["move up", "zindex", "layer"], icon: NF, trackEvent: { category: "element" }, perform: (A, u) => ({ elements: P9A(A, u), appState: u, captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => _B ? A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.BRACKET_RIGHT : A[Z.CTRL_OR_CMD] && A.shiftKey && A.code === wu.BRACKET_RIGHT, PanelComponent: ({ updateData: A, appState: u }) => r.jsx("button", { type: "button", className: "zIndexButton", onClick: (e) => A(null), title: `${S("labels.bringToFront")} — ${QA(_B ? "CtrlOrCmd+Alt+]" : "CtrlOrCmd+Shift+]")}`, children: NF }) }), $9A = pA({ name: "selectAll", label: "labels.selectAll", icon: doA, trackEvent: { category: "canvas" }, viewMode: !1, perform: (A, u, e, C) => {
  if (u.editingLinearElement) return !1;
  let B = A.filter((g) => !g.isDeleted && !(UA(g) && g.containerId) && !g.locked).reduce((g, t) => (g[t.id] = !0, g), {});
  return { appState: { ...u, ...Ue({ editingGroupId: null, selectedElementIds: B }, Wu(A), u, C), selectedLinearElement: Object.keys(B).length === 1 && $A(A[0]) ? new LA(A[0]) : null }, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.key === Z.A }), A6A = (A) => {
  let u = A.slice(), e = /* @__PURE__ */ new Set(), C = (g) => {
    let t = g[0]?.groupIds?.join(""), i = [g[0]], I = [];
    for (let o of g.slice(1)) o.groupIds?.join("") === t ? i.push(o) : I.push(o);
    return I.length ? [...i, ...C(I)] : i;
  }, B = /* @__PURE__ */ new Map();
  return u.forEach((g, t) => {
    if (!B.has(g.id)) if (g.groupIds?.length) {
      let i = g.groupIds[g.groupIds.length - 1], I = u.slice(t).filter((o) => {
        let E = o?.groupIds?.some((Q) => Q === i);
        return E && B.set(o.id, !0), E;
      });
      for (let o of C(I)) e.add(o);
    } else e.add(g);
  }), e.size !== A.length ? (console.error("normalizeGroupElementOrder: lost some elements... bailing!"), A) : [...e];
}, u6A = (A) => {
  let u = waA(A), e = A.slice(), C = /* @__PURE__ */ new Set();
  return e.forEach((B, g) => {
    B && (B.boundElements?.length ? (C.add(B), e[g] = null, B.boundElements.forEach((t) => {
      let i = u.get(t.id);
      i && t.type === "text" && (C.add(i[0]), e[i[1]] = null);
    })) : B.type === "text" && B.containerId && u.get(B.containerId)?.[0].boundElements?.find((t) => t.id === B.id) || (C.add(B), e[g] = null));
  }), C.size !== A.length ? (console.error("normalizeBoundElementsOrder: lost some elements... bailing!"), A) : [...C];
}, e6A = (A) => u6A(A6A(A)), C6A = pA({ name: "duplicateSelection", label: "labels.duplicateSelection", icon: WD, trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  if (u.editingLinearElement) try {
    let g = LA.duplicateSelectedPoints(u, C.scene.getNonDeletedElementsMap());
    return { elements: A, appState: g, captureUpdate: aA.IMMEDIATELY };
  } catch {
    return !1;
  }
  let B = B6A(A, u);
  if (C.props.onDuplicate && B.elements) {
    let g = C.props.onDuplicate(B.elements, A);
    g && (B.elements = g);
  }
  return { ...B, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.key === Z.D, PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsx(cu, { type: "button", icon: WD, title: `${S("labels.duplicateSelection")} — ${QA("CtrlOrCmd+D")}`, "aria-label": S("labels.duplicateSelection"), onClick: () => e(null), visible: S0(Wu(A), u) }) }), B6A = (A, u) => {
  let e = /* @__PURE__ */ new Map(), C = [], B = [], g = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), i = PA(A), I = (D) => {
    let h = yF(D).reduce((F, m) => {
      if (E.has(m.id)) return F;
      E.set(m.id, !0);
      let p = Ey(u.editingGroupId, e, m, { x: m.x + Il / 2, y: m.y + Il / 2 });
      return E.set(p.id, !0), t.set(p.id, p), g.set(m.id, p.id), B.push(m), C.push(p), F.push(p), F;
    }, []);
    return Array.isArray(D) ? h : h[0] || null;
  };
  A = e6A(A);
  let o = PA(iu(A, u, { includeBoundTextElement: !0, includeElementsInFrames: !0 })), E = /* @__PURE__ */ new Map(), Q = A.slice(), s = (D, h) => {
    he(D !== -1, "targetIndex === -1 "), !(!Array.isArray(h) && !h) && Q.splice(D + 1, 0, ...yF(h));
  }, l = new Set(A.filter((D) => o.has(D.id) && OA(D)).map((D) => D.id));
  for (let D of A) {
    if (E.has(D.id) || !o.has(D.id)) continue;
    let h = Pk(u, D);
    if (h) {
      let F = Vu(A, h).flatMap((p) => OA(p) ? [...Bg(A, p.id), p] : [p]), m = iE(Q, (p) => p.groupIds?.includes(h));
      s(m, I(F));
      continue;
    }
    if (!(D.frameId && l.has(D.frameId))) {
      if (OA(D)) {
        let F = D.id, m = Bg(A, F), p = iE(Q, (k) => k.frameId === F || k.id === F);
        s(p, I([...m, D]));
        continue;
      }
      if (MC(D)) {
        let F = gu(D, i), m = iE(Q, (p) => p.id === D.id || "containerId" in p && p.containerId === D.id);
        F ? s(m, I([D, F])) : s(m, I(D));
        continue;
      }
      if (Xu(D)) {
        let F = _0(D, i), m = iE(Q, (p) => p.id === D.id || p.id === F?.id);
        F ? s(m, I([F, D])) : s(m, I(D));
        continue;
      }
      s(iE(Q, (F) => F.id === D.id), I(D));
    }
  }
  $k(Q, B, g), Zk(Q, B, g), vy(Q, B, g);
  let c = A9(C);
  return { elements: Q, appState: { ...u, ...Ue({ editingGroupId: u.editingGroupId, selectedElementIds: c.reduce((D, h) => (Xu(h) || (D[h.id] = !0), D), {}) }, Wu(Q), u, null) } };
}, g6A = /* @__PURE__ */ new Set(["command_palette", "export"]), zu = (A, u, e, C) => {
  try {
    if (typeof window > "u" || tu.VITE_WORKER_ID || tu.VITE_APP_ENABLE_TRACKING !== "true" || !g6A.has(A) || tu.DEV) return;
    tu.PROD || console.info("trackEvent", { category: A, action: u, label: e, value: C }), window.sa_event && window.sa_event(u, { category: A, label: e, value: C });
  } catch (B) {
    console.error("error during analytics", B);
  }
}, LG = x.forwardRef((A, u) => {
  let { title: e, className: C, testId: B, active: g, standalone: t, icon: i, onClick: I } = A;
  return r.jsx("button", { type: "button", ref: u, title: e, "data-testid": B, className: NA(C, { standalone: t, active: g }), onClick: I, children: i }, e);
}), ig = (A) => r.jsx("div", { className: "buttonList", children: A.options.map((u) => A.type === "button" ? r.jsx(LG, { icon: u.icon, title: u.text, testId: u.testId, active: u.active ?? A.value === u.value, onClick: (e) => A.onClick(u.value, e) }, u.text) : r.jsxs("label", { className: NA({ active: A.value === u.value }), title: u.text, children: [r.jsx("input", { type: "radio", name: A.group, onChange: () => A.onChange(u.value), checked: A.value === u.value, "data-testid": u.testId }), u.icon] }, u.text)) }), t6A = ({ onChange: A, type: u, activeColor: e, topPicks: C }) => {
  let B;
  return u === "elementStroke" && (B = a8), u === "elementBackground" && (B = I8), u === "canvasBackground" && (B = o8), C && (B = C), B ? r.jsx("div", { className: "color-picker__top-picks", children: B.map((g) => r.jsx("button", { className: NA("color-picker__button", { active: g === e, "is-transparent": g === "transparent" || !g }), style: { "--swatch-color": g }, type: "button", title: g, onClick: () => A(g), "data-testid": `color-top-pick-${g}`, children: r.jsx("div", { className: "color-picker__button-outline" }) }, g)) }) : (console.error("Invalid type for TopPicks"), null);
}, xG = () => r.jsx("div", { style: { width: 1, height: "1rem", backgroundColor: "var(--default-border-color)", margin: "0 auto" } }), J4 = ({ palette: A, color: u }) => {
  for (let [e, C] of Object.entries(A)) if (Array.isArray(C)) {
    let B = C.indexOf(u);
    if (B > -1) return { colorName: e, shade: B };
  } else if (C === u) return { colorName: e, shade: null };
  return null;
}, G1 = [["q", "w", "e", "r", "t"], ["a", "s", "d", "f", "g"], ["z", "x", "c", "v", "b"]].flat(), SG = ({ color: A, palette: u }) => !Object.values(u).flat().includes(A), i6A = (A, u, e) => {
  let C = { elementBackground: "backgroundColor", elementStroke: "strokeColor" }, B = A.filter((t) => {
    if (t.isDeleted) return !1;
    let i = t[C[u]];
    return SG({ color: i, palette: e });
  }), g = /* @__PURE__ */ new Map();
  return B.forEach((t) => {
    let i = t[C[u]];
    g.has(i) ? g.set(i, g.get(i) + 1) : g.set(i, 1);
  }), [...g.entries()].sort((t, i) => i[1] - t[1]).map((t) => t[0]).slice(0, rEA);
}, LI = $0(null), Vp = (A, u, e) => (A * 299 + u * 587 + e * 114) / 1e3 >= 160 ? "black" : "white", E6A = (A, u) => {
  if (u) {
    let g = new Option().style;
    if (g.color = A, g.color) {
      let t = g.color.replace(/^(rgb|rgba)\(/, "").replace(/\)$/, "").replace(/\s/g, "").split(","), i = parseInt(t[0]), I = parseInt(t[1]), o = parseInt(t[2]);
      return Vp(i, I, o);
    }
  }
  if (A === "transparent") return "black";
  let e = parseInt(A.substring(1, 3), 16), C = parseInt(A.substring(3, 5), 16), B = parseInt(A.substring(5, 7), 16);
  return Vp(e, C, B);
}, a6A = ({ color: A, keyLabel: u, isCustomColor: e = !1, isShade: C = !1 }) => r.jsxs("div", { className: "color-picker__button__hotkey-label", style: { color: E6A(A, e) }, children: [C && "⇧", u] }), G9 = a6A, I6A = ({ hex: A, onChange: u, palette: e }) => {
  let C = J4({ color: A || "transparent", palette: e }), [B, g] = c0(LI), t = x.useRef(null);
  if (x.useEffect(() => {
    t.current && B === "shades" && t.current.focus();
  }, [C, B]), C) {
    let { colorName: i, shade: I } = C, o = e[i];
    if (Array.isArray(o)) return r.jsx("div", { className: "color-picker-content--default shades", children: o.map((E, Q) => r.jsxs("button", { ref: Q === I && B === "shades" ? t : void 0, tabIndex: -1, type: "button", className: NA("color-picker__button color-picker__button--large", { active: Q === I }), "aria-label": "Shade", title: `${i} - ${Q + 1}`, style: E ? { "--swatch-color": E } : void 0, onClick: () => {
      u(E), g("shades");
    }, children: [r.jsx("div", { className: "color-picker__button-outline" }), r.jsx(G9, { color: E, keyLabel: Q + 1, isShade: !0 })] }, Q)) });
  }
  return r.jsxs("div", { className: "color-picker-content--default", style: { position: "relative" }, tabIndex: -1, children: [r.jsx("button", { type: "button", tabIndex: -1, className: "color-picker__button color-picker__button--large color-picker__button--no-focus-visible" }), r.jsx("div", { tabIndex: -1, style: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0, display: "flex", alignItems: "center", justifyContent: "center", textAlign: "center", fontSize: "0.75rem" }, children: S("colorPicker.noShades") })] });
}, o6A = ({ palette: A, color: u, onChange: e, label: C, activeShade: B }) => {
  let g = J4({ color: u || "transparent", palette: A }), [t, i] = c0(LI), I = x.useRef(null);
  return x.useEffect(() => {
    I.current && t === "baseColors" && I.current.focus();
  }, [g?.colorName, t]), r.jsx("div", { className: "color-picker-content--default", children: Object.entries(A).map(([o, E], Q) => {
    let s = (Array.isArray(E) ? E[B] : E) || "transparent", l = G1[Q], c = S(`colors.${o.replace(/\d+/, "")}`, null, "");
    return r.jsxs("button", { ref: g?.colorName === o ? I : void 0, tabIndex: -1, type: "button", className: NA("color-picker__button color-picker__button--large", { active: g?.colorName === o, "is-transparent": s === "transparent" || !s }), onClick: () => {
      e(s), i("baseColors");
    }, title: `${c}${s.startsWith("#") ? ` ${s}` : ""} — ${l}`, "aria-label": `${c} — ${l}`, style: { "--swatch-color": s }, "data-testid": `color-${o}`, children: [r.jsx("div", { className: "color-picker__button-outline" }), r.jsx(G9, { color: s, keyLabel: l })] }, o);
  }) });
}, Q6A = o6A, n6A = ({ colors: A, color: u, onChange: e, label: C }) => {
  let [B, g] = c0(LI), t = x.useRef(null);
  return x.useEffect(() => {
    t.current && t.current.focus();
  }, [u, B]), r.jsx("div", { className: "color-picker-content--default", children: A.map((i, I) => r.jsxs("button", { ref: u === i ? t : void 0, tabIndex: -1, type: "button", className: NA("color-picker__button color-picker__button--large", { active: u === i, "is-transparent": i === "transparent" || !i }), onClick: () => {
    e(i), g("custom");
  }, title: i, "aria-label": C, style: { "--swatch-color": i }, children: [r.jsx("div", { className: "color-picker__button-outline" }), r.jsx(G9, { color: i, keyLabel: I + 1, isCustomColor: !0 })] }, I)) });
}, tD = (A, u, e) => {
  let C = Math.ceil(e / va);
  switch (u = u ?? -1, A) {
    case "ArrowLeft": {
      let B = u - 1;
      return B < 0 ? e - 1 : B;
    }
    case "ArrowRight":
      return (u + 1) % e;
    case "ArrowDown": {
      let B = u + va;
      return B >= e ? u % va : B;
    }
    case "ArrowUp": {
      let B = u - va, g = B < 0 ? va * C + B : B;
      return g >= e ? void 0 : g;
    }
  }
}, r6A = ({ e: A, colorObj: u, onChange: e, palette: C, customColors: B, setActiveColorPickerSection: g, activeShade: t }) => {
  if (u?.shade != null && ["Digit1", "Digit2", "Digit3", "Digit4", "Digit5"].includes(A.code) && A.shiftKey) {
    let i = Number(A.code.slice(-1)) - 1;
    return e(C[u.colorName][i]), g("shades"), !0;
  }
  if (["1", "2", "3", "4", "5"].includes(A.key) && B[Number(A.key) - 1]) return e(B[Number(A.key) - 1]), g("custom"), !0;
  if (G1.includes(A.key)) {
    let i = G1.indexOf(A.key), I = Object.keys(C)[i], o = C[I], E = Array.isArray(o) ? o[t] : o;
    return e(E), g("baseColors"), !0;
  }
  return !1;
}, s6A = ({ event: A, activeColorPickerSection: u, palette: e, color: C, onChange: B, customColors: g, setActiveColorPickerSection: t, updateData: i, activeShade: I, onEyeDropperToggle: o, onEscape: E }) => {
  if (A[Z.CTRL_OR_CMD]) return !1;
  if (A.key === Z.ESCAPE) return E(A), !0;
  if (A.key === Z.ALT) return o(!0), !0;
  if (A.key === Z.I) return o(), !0;
  let Q = J4({ color: C, palette: e });
  if (A.key === Z.TAB) {
    let s = { custom: !!g.length, baseColors: !0, shades: Q?.shade != null, hex: !0 }, l = Object.entries(s).reduce((m, [p, k]) => (k && m.push(p), m), []), c = l.indexOf(u), D = A.shiftKey ? -1 : 1, h = c + D > l.length - 1 ? 0 : c + D < 0 ? l.length - 1 : c + D, F = l[h];
    return F && t(F), F === "custom" ? B(g[0]) : F === "baseColors" && (Object.entries(e).find(([m, p]) => Array.isArray(p) ? p.includes(C) : p === C ? m : null) || B(ou.black)), A.preventDefault(), A.stopPropagation(), !0;
  }
  if (r6A({ e: A, colorObj: Q, onChange: B, palette: e, customColors: g, setActiveColorPickerSection: t, activeShade: I })) return !0;
  if (u === "shades" && Q) {
    let { shade: s } = Q, l = tD(A.key, s, va);
    if (l !== void 0) return B(e[Q.colorName][l]), !0;
  }
  if (u === "baseColors" && Q) {
    let { colorName: s } = Q, l = Object.keys(e), c = l.indexOf(s), D = tD(A.key, c, l.length);
    if (D !== void 0) {
      let h = l[D], F = e[h];
      return B(Array.isArray(F) ? F[I] : F), !0;
    }
  }
  if (u === "custom") {
    let s = g.indexOf(C), l = tD(A.key, s, g.length);
    if (l !== void 0) {
      let c = g[l];
      return B(c), !0;
    }
  }
  return !1;
}, l6A = ({ children: A }) => r.jsx("div", { className: "color-picker__heading", children: A }), Ps = l6A, c6A = ({ color: A, onChange: u, label: e, type: C, elements: B, palette: g, updateData: t, children: i, onEyeDropperToggle: I, onEscape: o }) => {
  let [E] = kA.useState(() => C === "canvasBackground" ? [] : i6A(B, C, g)), [Q, s] = c0(LI), l = J4({ color: A, palette: g });
  x.useEffect(() => {
    if (!Q) {
      let F = SG({ color: A, palette: g }), m = F && !E.includes(A);
      s(m ? "hex" : F ? "custom" : l?.shade != null ? "shades" : "baseColors");
    }
  }, [Q, A, g, s, l, E]);
  let [c, D] = x.useState(l?.shade ?? (C === "elementBackground" ? uQ : AQ));
  x.useEffect(() => {
    l?.shade != null && D(l.shade);
    let F = (m) => {
      m.key === Z.ALT && I(!1);
    };
    return document.addEventListener("keyup", F, { capture: !0 }), () => {
      document.removeEventListener("keyup", F, { capture: !0 });
    };
  }, [l, I]);
  let h = kA.useRef(null);
  return r.jsx("div", { role: "dialog", "aria-modal": "true", "aria-label": S("labels.colorPicker"), children: r.jsxs("div", { ref: h, onKeyDown: (F) => {
    s6A({ event: F, activeColorPickerSection: Q, palette: g, color: A, onChange: u, onEyeDropperToggle: I, customColors: E, setActiveColorPickerSection: s, updateData: t, activeShade: c, onEscape: o }) && (F.preventDefault(), F.stopPropagation());
  }, className: "color-picker-content properties-content", tabIndex: -1, children: [!!E.length && r.jsxs("div", { children: [r.jsx(Ps, { children: S("colorPicker.mostUsedCustomColors") }), r.jsx(n6A, { colors: E, color: A, label: S("colorPicker.mostUsedCustomColors"), onChange: u })] }), r.jsxs("div", { children: [r.jsx(Ps, { children: S("colorPicker.colors") }), r.jsx(Q6A, { color: A, label: e, palette: g, onChange: u, activeShade: c })] }), r.jsxs("div", { children: [r.jsx(Ps, { children: S("colorPicker.shades") }), r.jsx(I6A, { hex: A, onChange: u, palette: g })] }), i] }) });
}, NG = kA.createContext(null), xe = () => kA.useContext(NG), RG = (A) => {
  let [u, e] = x.useState(null), C = J0(), { theme: B } = xe(), { container: g } = ag();
  return x.useLayoutEffect(() => {
    u && (u.className = "", u.classList.add("excalidraw", ...A?.className?.split(/\s+/) || []), u.classList.toggle("excalidraw--mobile", C.editor.isMobile), u.classList.toggle("theme--dark", B === su.DARK));
  }, [u, B, C.editor.isMobile, A?.className]), x.useLayoutEffect(() => {
    let t = A?.parentSelector ? g?.querySelector(A.parentSelector) : document.body;
    if (!t) return;
    let i = document.createElement("div");
    return t.appendChild(i), e(i), () => {
      t.removeChild(i);
    };
  }, [g, A?.parentSelector]), u;
};
function f9(A, u, e) {
  x.useEffect(() => {
    function C(B) {
      let g = B;
      if (!A.current) return;
      let t = e?.(g, A.current);
      if (t !== !0) {
        if (t === !1) return u(g);
        A.current.contains(g.target) || !document.documentElement.contains(g.target) || g.target.closest("[data-radix-portal]") || g.target === document.documentElement && document.body.style.pointerEvents === "none" || g.target.closest("[data-prevent-outside-click]") || u(g);
      }
    }
    return document.addEventListener("pointerdown", C), document.addEventListener("touchstart", C), () => {
      document.removeEventListener("pointerdown", C), document.removeEventListener("touchstart", C);
    };
  }, [A, u, e]);
}
var Z4 = (A) => {
  let u = x.useRef(A);
  return Object.assign(u.current, A), u.current;
}, q4 = $0(null), d6A = ({ onCancel: A, onChange: u, onSelect: e, colorPickerType: C }) => {
  let B = RG({ className: "excalidraw-eye-dropper-backdrop", parentSelector: ".excalidraw-eye-dropper-container" }), g = xe(), t = V4(), i = Eg(), I = iu(t, g), o = Z4({ app: i, onCancel: A, onChange: u, onSelect: e, selectedElements: I }), { container: E } = ag();
  x.useEffect(() => {
    let s = Q.current;
    if (!s || !i.canvas || !B) return;
    let l = !1, c = i.canvas.getContext("2d"), D = ({ clientX: f, clientY: L }) => {
      let N = c.getImageData((f - g.offsetLeft) * window.devicePixelRatio, (L - g.offsetTop) * window.devicePixelRatio, 1, 1).data;
      return DEA(N[0], N[1], N[2]);
    }, h = ({ clientX: f, clientY: L, altKey: N }) => {
      s.style.top = `${L + 20}px`, s.style.left = `${f + 20}px`;
      let M = D({ clientX: f, clientY: L });
      l && o.onChange(C, M, o.selectedElements, { altKey: N }), s.style.background = M;
    }, F = () => {
      o.onCancel();
    }, m = (f, L) => {
      o.onSelect(f, L);
    }, p = (f) => {
      l = !0, f.stopImmediatePropagation();
    }, k = (f) => {
      l = !1, E?.focus(), f.stopImmediatePropagation(), f.preventDefault(), m(D(f), f);
    }, b = (f) => {
      f.key === Z.ESCAPE && (f.preventDefault(), f.stopImmediatePropagation(), F());
    };
    return B.tabIndex = -1, B.focus(), h({ clientX: o.app.lastViewportPosition.x, clientY: o.app.lastViewportPosition.y, altKey: !1 }), B.addEventListener("keydown", b), B.addEventListener("pointerdown", p), B.addEventListener("pointerup", k), window.addEventListener("pointermove", h, { passive: !0 }), window.addEventListener("blur", F), () => {
      l = !1, B.removeEventListener("keydown", b), B.removeEventListener("pointerdown", p), B.removeEventListener("pointerup", k), window.removeEventListener("pointermove", h), window.removeEventListener("blur", F);
    };
  }, [o, i.canvas, B, C, E, g.offsetLeft, g.offsetTop]);
  let Q = x.useRef(null);
  return f9(Q, () => {
    A();
  }, (s) => !!s.target.closest(".excalidraw-eye-dropper-trigger, .excalidraw-eye-dropper-backdrop")), B ? O0.createPortal(r.jsx("div", { ref: Q, className: "excalidraw-eye-dropper-preview" }), B) : null;
}, D6A = ({ color: A, onChange: u, label: e, colorPickerType: C }) => {
  let B = J0(), [g, t] = x.useState(A), [i, I] = c0(LI);
  x.useEffect(() => {
    t(A);
  }, [A]);
  let o = x.useCallback((c) => {
    let D = c.toLowerCase(), h = h6A(D);
    h && u(h), t(D);
  }, [u]), E = x.useRef(null), Q = x.useRef(null);
  x.useEffect(() => {
    E.current && E.current.focus();
  }, [i]);
  let [s, l] = c0(q4);
  return x.useEffect(() => () => {
    l(null);
  }, [l]), r.jsxs("div", { className: "color-picker__input-label", children: [r.jsx("div", { className: "color-picker__input-hash", children: "#" }), r.jsx("input", { ref: i === "hex" ? E : void 0, style: { border: 0, padding: 0 }, spellCheck: !1, className: "color-picker-input", "aria-label": e, onChange: (c) => {
    o(c.target.value);
  }, value: (g || "").replace(/^#/, ""), onBlur: () => {
    t(A);
  }, tabIndex: -1, onFocus: () => I("hex"), onKeyDown: (c) => {
    c.key !== Z.TAB && (c.key === Z.ESCAPE && Q.current?.focus(), c.stopPropagation());
  } }), !B.editor.isMobile && r.jsxs(r.Fragment, { children: [r.jsx("div", { style: { width: "1px", height: "1.25rem", backgroundColor: "var(--default-border-color)" } }), r.jsx("div", { ref: Q, className: NA("excalidraw-eye-dropper-trigger", { selected: s }), onClick: () => l((c) => c ? null : { keepOpenOnAlt: !1, onSelect: (D) => u(D), colorPickerType: C }), title: `${S("labels.eyeDropper")} — ${Z.I.toLocaleUpperCase()} or ${QA("Alt")} `, children: IoA })] })] });
}, cB = kA.forwardRef(({ children: A, padding: u, className: e, style: C }, B) => r.jsx("div", { className: NA("Island", e), style: { "--padding": u, ...C }, ref: B, children: A })), MG = kA.forwardRef(({ className: A, container: u, children: e, style: C, onClose: B, onKeyDown: g, onFocusOutside: t, onPointerLeave: i, onPointerDownOutside: I }, o) => {
  let E = J0();
  return r.jsx(b2A, { container: u, children: r.jsxs(p9, { ref: o, className: NA("focus-visible-none", A), "data-prevent-outside-click": !0, side: E.editor.isMobile && !E.viewport.isLandscape ? "bottom" : "right", align: E.editor.isMobile && !E.viewport.isLandscape ? "center" : "start", alignOffset: -16, sideOffset: 20, style: { zIndex: "var(--zIndex-popup)" }, onPointerLeave: i, onKeyDown: g, onFocusOutside: t, onPointerDownOutside: I, onCloseAutoFocus: (Q) => {
    Q.stopPropagation(), Q.preventDefault(), u && !oaA(document.activeElement) && u.focus(), B();
  }, children: [r.jsx(cB, { padding: 3, style: C, children: e }), r.jsx(eG, { width: 20, height: 10, style: { fill: "var(--popup-bg-color)", filter: "drop-shadow(rgba(0, 0, 0, 0.05) 0px 3px 2px)" } })] }) });
}), Xp = (A) => {
  let u = new Option().style;
  return u.color = A, !!u.color;
}, h6A = (A) => IB(A) ? A : Xp(`#${A}`) ? `#${A}` : Xp(A) ? A : null, w6A = ({ type: A, color: u, onChange: e, label: C, elements: B, palette: g = ou, updateData: t }) => {
  let { container: i } = ag(), [, I] = c0(LI), [o, E] = c0(q4), Q = r.jsxs("div", { children: [r.jsx(Ps, { children: S("colorPicker.hexCode") }), r.jsx(D6A, { color: u, label: C, onChange: (c) => {
    e(c);
  }, colorPickerType: A })] }), s = x.useRef(null), l = () => {
    s.current?.querySelector(".color-picker-content")?.focus();
  };
  return r.jsx(MG, { container: i, style: { maxWidth: "13rem" }, onFocusOutside: (c) => {
    l(), c.preventDefault();
  }, onPointerDownOutside: (c) => {
    o && c.preventDefault();
  }, onClose: () => {
    t({ openPopup: null }), I(null);
  }, children: g ? r.jsx(c6A, { palette: g, color: u, onChange: (c) => {
    e(c);
  }, onEyeDropperToggle: (c) => {
    E((D) => c ? (D = D || { keepOpenOnAlt: !0, onSelect: e, colorPickerType: A }, D.keepOpenOnAlt = !0, D) : c === !1 || D ? null : { keepOpenOnAlt: !1, onSelect: e, colorPickerType: A });
  }, onEscape: (c) => {
    o ? E(null) : t({ openPopup: null });
  }, label: C, type: A, elements: B, updateData: t, children: Q }) : Q });
}, F6A = ({ label: A, color: u, type: e }) => r.jsx(H4, { type: "button", className: NA("color-picker__button active-color properties-trigger", { "is-transparent": u === "transparent" || !u }), "aria-label": A, style: u ? { "--swatch-color": u } : void 0, title: S(e === "elementStroke" ? "labels.showStroke" : "labels.showBackground"), children: r.jsx("div", { className: "color-picker__button-outline" }) }), L9 = ({ type: A, color: u, onChange: e, label: C, elements: B, palette: g = ou, topPicks: t, updateData: i, appState: I }) => r.jsx("div", { children: r.jsxs("div", { role: "dialog", "aria-modal": "true", className: "color-picker-container", children: [r.jsx(t6A, { activeColor: u, onChange: e, type: A, topPicks: t }), r.jsx(xG, {}), r.jsxs(v4, { open: I.openPopup === A, onOpenChange: (o) => {
  i({ openPopup: o ? A : null });
}, children: [r.jsx(F6A, { color: u, label: C, type: A }), I.openPopup === A && r.jsx(w6A, { type: A, color: u, onChange: e, label: C, elements: B, palette: g, updateData: i })] })] }) }), W4 = ({ icon: A }) => r.jsx("span", { style: { width: "1em", margin: "0 0.5ex 0 0.5ex", display: "inline-block", lineHeight: 0, verticalAlign: "middle" }, children: A }), p6A = ({ label: A, open: u, openTrigger: e, children: C, className: B }) => r.jsxs(r.Fragment, { children: [r.jsxs("div", { style: { cursor: "pointer", display: "flex", justifyContent: "space-between", alignItems: "center" }, className: B, onClick: e, children: [A, r.jsx(W4, { icon: u ? SoA : Bk })] }), u && r.jsx("div", { style: { display: "flex", flexDirection: "column" }, children: C })] }), f1 = p6A, m6A = $0(!1);
function k6A({ options: A, value: u, label: e, onChange: C, onClose: B, numberOfOptionsToAlwaysShow: g = A.length }) {
  let t = J0(), i = (l) => {
    let c = A.find((D) => D.keyBinding === l.key.toLowerCase());
    if (!(l.metaKey || l.altKey || l.ctrlKey) && c) C(c.value), l.preventDefault();
    else if (l.key === Z.TAB) {
      let D = A.findIndex((F) => F.value === u), h = l.shiftKey ? (A.length + D - 1) % A.length : (D + 1) % A.length;
      C(A[h].value);
    } else if (eQ(l.key)) {
      let D = en().rtl, h = A.findIndex((F) => F.value === u);
      if (h !== -1) {
        let F = A.length, m = h;
        switch (l.key) {
          case (D ? Z.ARROW_LEFT : Z.ARROW_RIGHT):
            m = (h + 1) % F;
            break;
          case (D ? Z.ARROW_RIGHT : Z.ARROW_LEFT):
            m = (F + h - 1) % F;
            break;
          case Z.ARROW_DOWN: {
            m = (h + (g ?? 1)) % F;
            break;
          }
          case Z.ARROW_UP: {
            m = (F + h - (g ?? 1)) % F;
            break;
          }
        }
        C(A[m].value);
      }
      l.preventDefault();
    } else (l.key === Z.ESCAPE || l.key === Z.ENTER) && (l.preventDefault(), B());
    l.nativeEvent.stopImmediatePropagation(), l.stopPropagation();
  }, [I, o] = c0(m6A), E = kA.useMemo(() => A.slice(0, g), [A, g]), Q = kA.useMemo(() => A.slice(g), [A, g]);
  x.useEffect(() => {
    E.some((l) => l.value === u) || o(!0);
  }, [u, E, o]);
  let s = (l) => r.jsx("div", { className: "picker-content", children: l.map((c, D) => r.jsxs("button", { type: "button", className: NA("picker-option", { active: u === c.value }), onClick: (h) => {
    C(c.value);
  }, title: `${c.text} ${c.keyBinding && `— ${c.keyBinding.toUpperCase()}`}`, "aria-label": c.text || "none", "aria-keyshortcuts": c.keyBinding || void 0, ref: (h) => {
    u === c.value && setTimeout(() => {
      h?.focus();
    }, 0);
  }, children: [c.icon, c.keyBinding && r.jsx("span", { className: "picker-keybinding", children: c.keyBinding })] }, c.text)) });
  return r.jsx(p9, { side: t.editor.isMobile && !t.viewport.isLandscape ? "top" : "bottom", align: "start", sideOffset: 12, style: { zIndex: "var(--zIndex-popup)" }, onKeyDown: i, children: r.jsxs("div", { className: "picker", role: "dialog", "aria-modal": "true", "aria-label": e, children: [s(E), Q.length > 0 && r.jsx(f1, { label: S("labels.more_options"), open: I, openTrigger: () => {
    o((l) => !l);
  }, className: "picker-collapsible", children: s(Q) })] }) });
}
function _p({ value: A, label: u, options: e, onChange: C, group: B = "", numberOfOptionsToAlwaysShow: g }) {
  let [t, i] = kA.useState(!1), I = kA.useRef(null);
  return r.jsx("div", { children: r.jsxs(v4, { open: t, onOpenChange: (o) => i(o), children: [r.jsx(H4, { name: B, type: "button", "aria-label": u, onClick: () => i(!t), ref: I, className: t ? "active" : "", children: e.find((o) => o.value === A)?.icon }), t && r.jsx(k6A, { options: e, value: A, label: u, onChange: C, onClose: () => {
    i(!1);
  }, numberOfOptionsToAlwaysShow: g })] }) });
}
var YG = kA.forwardRef(({ className: A, placeholder: u, onChange: e }, C) => r.jsxs("div", { className: NA("QuickSearch__wrapper", A), children: [SE, r.jsx("input", { ref: C, className: "QuickSearch__input", type: "text", placeholder: u, onChange: (B) => e(B.target.value.trim().toLowerCase()) })] })), vG = ({ className: A, placeholder: u, children: e }) => {
  let C = !x.Children.count(e);
  return r.jsx("div", { className: NA("ScrollableList__wrapper", A), role: "menu", children: C ? r.jsx("div", { className: "empty", children: u }) : e });
}, HG = ({ children: A, className: u = "", style: e, title: C }) => r.jsxs("div", { className: `dropdown-menu-group ${u}`, style: e, children: [C && r.jsx("p", { className: "dropdown-menu-group-title", children: C }), A] }), L1 = HG;
HG.displayName = "DropdownMenuGroup";
var KG = kA.createContext({}), JG = (A = "", u = !1, e = !1) => `dropdown-menu-item dropdown-menu-item-base ${A}
  ${u ? "dropdown-menu-item--selected" : ""} ${e ? "dropdown-menu-item--hovered" : ""}`.trim(), ZG = (A, u) => {
  let e = x.useContext(KG);
  return a4(A, (C) => {
    let B = new CustomEvent("menu.itemSelect", { bubbles: !0, cancelable: !0 });
    u?.(B), B.defaultPrevented || e.onSelect?.(B);
  });
}, y6A = ({ textStyle: A, icon: u, shortcut: e, children: C }) => {
  let B = J0();
  return r.jsxs(r.Fragment, { children: [u && r.jsx("div", { className: "dropdown-menu-item__icon", children: u }), r.jsx("div", { style: A, className: "dropdown-menu-item__text", children: C }), e && !B.editor.isMobile && r.jsx("div", { className: "dropdown-menu-item__shortcut", children: e })] });
}, qG = y6A, x9 = ({ icon: A, value: u, order: e, children: C, shortcut: B, className: g, hovered: t, selected: i, textStyle: I, onSelect: o, onClick: E, ...Q }) => {
  let s = ZG(E, o), l = x.useRef(null);
  return x.useEffect(() => {
    t && (e === 0 ? l.current?.scrollIntoView({ block: "end" }) : l.current?.scrollIntoView({ block: "nearest" }));
  }, [t, e]), r.jsx("button", { ...Q, ref: l, value: u, onClick: s, className: JG(g, i, t), title: Q.title ?? Q["aria-label"], children: r.jsx(qG, { textStyle: I, icon: A, shortcut: B, children: C }) });
};
x9.displayName = "DropdownMenuItem";
var EQ = { GREEN: "green", RED: "red", BLUE: "blue" }, S9 = ({ type: A = EQ.BLUE, children: u }) => {
  let { theme: e } = bn(), C = { display: "inline-flex", marginLeft: "auto", padding: "2px 4px", borderRadius: 6, fontSize: 9, fontFamily: "Cascadia, monospace", border: e === su.LIGHT ? "1.5px solid white" : "none" };
  switch (A) {
    case EQ.GREEN:
      Object.assign(C, { backgroundColor: "var(--background-color-badge)", color: "var(--color-badge)" });
      break;
    case EQ.RED:
      Object.assign(C, { backgroundColor: "pink", color: "darkred" });
      break;
    case EQ.BLUE:
    default:
      Object.assign(C, { background: "var(--color-promo)", color: "var(--color-surface-lowest)" });
  }
  return r.jsx("div", { className: "DropDownMenuItemBadge", style: C, children: u });
};
S9.displayName = "DropdownMenuItemBadge";
x9.Badge = S9;
var vC = x9, b6A = ({ event: A, inputRef: u, hoveredFont: e, filteredFonts: C, onClose: B, onSelect: g, onHover: t }) => {
  if (!A[Z.CTRL_OR_CMD] && A.shiftKey && A.key.toLowerCase() === Z.F) return u.current?.focus(), !0;
  if (A.key === Z.ESCAPE) return B(), !0;
  if (A.key === Z.ENTER) return e?.value && g(e.value), !0;
  if (A.key === Z.ARROW_DOWN) return e?.next ? t(e.next.value) : C[0]?.value && t(C[0].value), !0;
  if (A.key === Z.ARROW_UP) return e?.prev ? t(e.prev.value) : C[C.length - 1]?.value && t(C[C.length - 1].value), !0;
}, U6A = kA.memo(({ selectedFontFamily: A, hoveredFontFamily: u, onSelect: e, onHover: C, onLeave: B, onOpen: g, onClose: t }) => {
  let { container: i } = ag(), { fonts: I } = Eg(), { showDeprecatedFonts: o } = yn(), [E, Q] = x.useState(""), s = x.useRef(null), l = x.useMemo(() => Array.from(Kg.registered.entries()).filter(([N, { metadata: M }]) => !M.serverSide && !M.fallback).map(([N, { metadata: M, fontFaces: v }]) => {
    let K = { value: N, icon: M.icon ?? hl, text: v[0]?.fontFace?.family ?? "Unknown" };
    return M.deprecated && Object.assign(K, { deprecated: M.deprecated, badge: { type: EQ.RED, placeholder: S("fontList.badge.old") } }), K;
  }).sort((N, M) => N.text.toLowerCase() > M.text.toLowerCase() ? 1 : -1), []), c = x.useMemo(() => new Set(I.getSceneFamilies()), [A]), D = x.useMemo(() => l.filter((N) => c.has(N.value)), [l, c]), h = x.useMemo(() => l.filter((N) => !c.has(N.value) && (o || !N.deprecated)), [l, c, o]), F = x.useMemo(() => FaA([...D, ...h].filter((N) => N.text?.toLowerCase().includes(E))), [D, h, E]), m = x.useMemo(() => {
    let N;
    return u ? N = F.find((M) => M.value === u) : A && (N = F.find((M) => M.value === A)), !N && E && (F[0]?.value ? C(F[0].value) : B()), N;
  }, [u, A, E, F, C, B]), p = x.useCallback((N) => {
    b6A({ event: N, inputRef: s, hoveredFont: m, filteredFonts: F, onSelect: e, onHover: C, onClose: t }) && (N.preventDefault(), N.stopPropagation());
  }, [m, F, e, C, t]);
  x.useEffect(() => (g(), () => {
    t();
  }), []);
  let k = x.useMemo(() => F.filter((N) => c.has(N.value)), [F, c]), b = x.useMemo(() => F.filter((N) => !c.has(N.value)), [F, c]), f = (N, M) => r.jsxs(vC, { icon: N.icon, value: N.value, order: M, textStyle: { fontFamily: gI({ fontFamily: N.value }) }, hovered: N.value === m?.value, selected: N.value === A, tabIndex: N.value === A ? 0 : -1, onClick: (v) => {
    e(Number(v.currentTarget.value));
  }, onMouseMove: () => {
    m?.value !== N.value && C(N.value);
  }, children: [N.text, N.badge && r.jsx(S9, { type: N.badge.type, children: N.badge.placeholder })] }, N.value), L = [];
  return k.length && L.push(r.jsx(L1, { title: S("fontList.sceneFonts"), children: k.map(f) }, "group_1")), b.length && L.push(r.jsx(L1, { title: S("fontList.availableFonts"), children: b.map((N, M) => f(N, M + k.length)) }, "group_2")), r.jsxs(MG, { className: "properties-content", container: i, style: { width: "15rem" }, onClose: t, onPointerLeave: B, onKeyDown: p, children: [r.jsx(YG, { ref: s, placeholder: S("quickSearch.placeholder"), onChange: tI(Q, 20) }), r.jsx(vG, { className: "dropdown-menu fonts manual-hover", placeholder: S("fontList.empty"), children: L.length ? L : null })] });
}, (A, u) => A.selectedFontFamily === u.selectedFontFamily && A.hoveredFontFamily === u.hoveredFontFamily), G6A = ({ selectedFontFamily: A }) => {
  let u = x.useMemo(() => !!(A && !L6A(A)), [A]);
  return r.jsx(H4, { asChild: !0, children: r.jsx("div", { children: r.jsx(LG, { standalone: !0, icon: Z8, title: S("labels.showFonts"), className: "properties-trigger", testId: "font-family-show-fonts", active: u, onClick: () => {
  } }) }) });
}, WG = [{ value: t0.Excalifont, icon: WQ, text: S("labels.handDrawn"), testId: "font-family-hand-drawn" }, { value: t0.Nunito, icon: hl, text: S("labels.normal"), testId: "font-family-normal" }, { value: t0["Comic Shanns"], icon: PD, text: S("labels.code"), testId: "font-family-code" }], f6A = new Set(WG.map((A) => A.value)), L6A = (A) => A ? f6A.has(A) : !1, x6A = kA.memo(({ isOpened: A, selectedFontFamily: u, hoveredFontFamily: e, onSelect: C, onHover: B, onLeave: g, onPopupChange: t }) => {
  let i = x.useMemo(() => WG, []), I = x.useCallback((o) => {
    o && C(o);
  }, [C]);
  return r.jsxs("div", { role: "dialog", "aria-modal": "true", className: "FontPicker__container", children: [r.jsx(ig, { type: "button", options: i, value: u, onClick: I }), r.jsx(xG, {}), r.jsxs(v4, { open: A, onOpenChange: t, children: [r.jsx(G6A, { selectedFontFamily: u }), A && r.jsx(U6A, { selectedFontFamily: u, hoveredFontFamily: e, onSelect: I, onHover: B, onLeave: g, onOpen: () => t(!0), onClose: () => t(!1) })] })] });
}, (A, u) => A.isOpened === u.isOpened && A.selectedFontFamily === u.selectedFontFamily && A.hoveredFontFamily === u.hoveredFontFamily), S6A = ({ updateData: A, appState: u, elements: e, testId: C }) => {
  let B = kA.useRef(null), g = kA.useRef(null), t = Le(e, u, (i) => i.opacity, !0, u.currentItemOpacity);
  return x.useEffect(() => {
    if (B.current && g.current) {
      let i = B.current, I = g.current, o = i.offsetWidth, E = 15, Q = t / 100 * (o - E) + E / 2;
      I.style.left = `${Q}px`, i.style.background = `linear-gradient(to right, var(--color-slider-track) 0%, var(--color-slider-track) ${t}%, var(--button-bg) ${t}%, var(--button-bg) 100%)`;
    }
  }, [t]), r.jsxs("label", { className: "control-label", children: [S("labels.opacity"), r.jsxs("div", { className: "range-wrapper", children: [r.jsx("input", { ref: B, type: "range", min: "0", max: "100", step: "10", onChange: (i) => {
    A(+i.target.value);
  }, value: t, className: "range-input", "data-testid": C }), r.jsx("div", { className: "value-bubble", ref: g, children: t !== 0 ? t : null }), r.jsx("div", { className: "zero-label", children: "0" })] })] });
}, jG = 0.1, fe = (A, u, e, C = !1) => {
  let B = PA(iu(A, u, { includeBoundTextElement: C }));
  return A.map((g) => B.get(g.id) || g.id === u.editingTextElement?.id ? e(g) : g);
}, Le = function(A, u, e, C, B) {
  let g = u.editingTextElement, t = Wu(A), i = null;
  return g && (i = e(g)), i || (S0(t, u) ? i = WcA(C === !0 ? t : t.filter((I) => C(I)), u, e) ?? (typeof B == "function" ? B(!0) : B) : i = typeof B == "function" ? B(!1) : B), i;
}, N6A = (A, u) => Xu(u) || !u.autoResize ? u : nA(u, { x: A.textAlign === "left" ? A.x : A.x + (A.width - u.width) / (A.textAlign === "center" ? 2 : 1), y: A.y + (A.height - u.height) / 2 }, !1), N9 = (A, u, e, C, B) => {
  let g = /* @__PURE__ */ new Set(), t = fe(A, u, (I) => {
    if (UA(I)) {
      let o = C(I);
      g.add(o);
      let E = Bu(I, { fontSize: o });
      return Ge(E, e.scene.getContainerElement(I), e.scene.getNonDeletedElementsMap()), E = N6A(I, E), E;
    }
    return I;
  }, !0), i = PA(t);
  return iu(A, u, { includeBoundTextElement: !0 }).forEach((I) => {
    UA(I) && Ve(I, i);
  }), { elements: t, appState: { ...u, currentItemFontSize: g.size === 1 ? [...g][0] : B ?? u.currentItemFontSize }, captureUpdate: aA.IMMEDIATELY };
};
pA({ name: "changeStrokeColor", label: "labels.stroke", trackEvent: !1, perform: (A, u, e) => ({ ...e.currentItemStrokeColor && { elements: fe(A, u, (C) => $D(C.type) ? Bu(C, { strokeColor: e.currentItemStrokeColor }) : C, !0) }, appState: { ...u, ...e }, captureUpdate: e.currentItemStrokeColor ? aA.IMMEDIATELY : aA.EVENTUALLY }), PanelComponent: ({ elements: A, appState: u, updateData: e, appProps: C }) => r.jsxs(r.Fragment, { children: [r.jsx("h3", { "aria-hidden": "true", children: S("labels.stroke") }), r.jsx(L9, { topPicks: a8, palette: lEA, type: "elementStroke", label: S("labels.stroke"), color: Le(A, u, (B) => B.strokeColor, !0, u.currentItemStrokeColor), onChange: (B) => e({ currentItemStrokeColor: B }), elements: A, appState: u, updateData: e })] }) });
pA({ name: "changeBackgroundColor", label: "labels.changeBackground", trackEvent: !1, perform: (A, u, e) => ({ ...e.currentItemBackgroundColor && { elements: fe(A, u, (C) => Bu(C, { backgroundColor: e.currentItemBackgroundColor })) }, appState: { ...u, ...e }, captureUpdate: e.currentItemBackgroundColor ? aA.IMMEDIATELY : aA.EVENTUALLY }), PanelComponent: ({ elements: A, appState: u, updateData: e, appProps: C }) => r.jsxs(r.Fragment, { children: [r.jsx("h3", { "aria-hidden": "true", children: S("labels.background") }), r.jsx(L9, { topPicks: I8, palette: cEA, type: "elementBackground", label: S("labels.background"), color: Le(A, u, (B) => B.backgroundColor, !0, u.currentItemBackgroundColor), onChange: (B) => e({ currentItemBackgroundColor: B }), elements: A, appState: u, updateData: e })] }) });
pA({ name: "changeFillStyle", label: "labels.fill", trackEvent: !1, perform: (A, u, e, C) => (zu("element", "changeFillStyle", `${e} (${C.device.editor.isMobile ? "mobile" : "desktop"})`), { elements: fe(A, u, (B) => Bu(B, { fillStyle: e })), appState: { ...u, currentItemFillStyle: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => {
  let C = iu(A, u), B = C.length > 0 && C.every((g) => g.fillStyle === "zigzag");
  return r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.fill") }), r.jsx(ig, { type: "button", options: [{ value: "hachure", text: `${S(B ? "labels.zigzag" : "labels.hachure")} (${QA("Alt-Click")})`, icon: B ? pIA : mIA, active: B ? !0 : void 0, testId: "fill-hachure" }, { value: "cross-hatch", text: S("labels.crossHatch"), icon: kIA, testId: "fill-cross-hatch" }, { value: "solid", text: S("labels.solid"), icon: yIA, testId: "fill-solid" }], value: Le(A, u, (g) => g.fillStyle, (g) => g.hasOwnProperty("fillStyle"), (g) => g ? null : u.currentItemFillStyle), onClick: (g, t) => {
    let i = t.altKey && g === "hachure" && C.every((I) => I.fillStyle === "hachure") ? "zigzag" : g;
    e(i);
  } })] });
} });
pA({ name: "changeStrokeWidth", label: "labels.strokeWidth", trackEvent: !1, perform: (A, u, e) => ({ elements: fe(A, u, (C) => Bu(C, { strokeWidth: e })), appState: { ...u, currentItemStrokeWidth: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.strokeWidth") }), r.jsx(ig, { group: "stroke-width", options: [{ value: Fd.thin, text: S("labels.thin"), icon: O8, testId: "strokeWidth-thin" }, { value: Fd.bold, text: S("labels.bold"), icon: bIA, testId: "strokeWidth-bold" }, { value: Fd.extraBold, text: S("labels.extraBold"), icon: UIA, testId: "strokeWidth-extraBold" }], value: Le(A, u, (C) => C.strokeWidth, (C) => C.hasOwnProperty("strokeWidth"), (C) => C ? null : u.currentItemStrokeWidth), onChange: (C) => e(C) })] }) });
pA({ name: "changeSloppiness", label: "labels.sloppiness", trackEvent: !1, perform: (A, u, e) => ({ elements: fe(A, u, (C) => Bu(C, { seed: ug(), roughness: e })), appState: { ...u, currentItemRoughness: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.sloppiness") }), r.jsx(ig, { group: "sloppiness", options: [{ value: 0, text: S("labels.architect"), icon: LIA }, { value: 1, text: S("labels.artist"), icon: xIA }, { value: 2, text: S("labels.cartoonist"), icon: SIA }], value: Le(A, u, (C) => C.roughness, (C) => C.hasOwnProperty("roughness"), (C) => C ? null : u.currentItemRoughness), onChange: (C) => e(C) })] }) });
pA({ name: "changeStrokeStyle", label: "labels.strokeStyle", trackEvent: !1, perform: (A, u, e) => ({ elements: fe(A, u, (C) => Bu(C, { strokeStyle: e })), appState: { ...u, currentItemStrokeStyle: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.strokeStyle") }), r.jsx(ig, { group: "strokeStyle", options: [{ value: "solid", text: S("labels.strokeStyle_solid"), icon: O8 }, { value: "dashed", text: S("labels.strokeStyle_dashed"), icon: GIA }, { value: "dotted", text: S("labels.strokeStyle_dotted"), icon: fIA }], value: Le(A, u, (C) => C.strokeStyle, (C) => C.hasOwnProperty("strokeStyle"), (C) => C ? null : u.currentItemStrokeStyle), onChange: (C) => e(C) })] }) });
pA({ name: "changeOpacity", label: "labels.opacity", trackEvent: !1, perform: (A, u, e) => ({ elements: fe(A, u, (C) => Bu(C, { opacity: e }), !0), appState: { ...u, currentItemOpacity: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsx(S6A, { updateData: e, elements: A, appState: u, testId: "opacity" }) });
pA({ name: "changeFontSize", label: "labels.fontSize", trackEvent: !1, perform: (A, u, e, C) => N9(A, u, C, () => e, e), PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.fontSize") }), r.jsx(ig, { group: "font-size", options: [{ value: 16, text: S("labels.small"), icon: PIA, testId: "fontSize-small" }, { value: 20, text: S("labels.medium"), icon: OIA, testId: "fontSize-medium" }, { value: 28, text: S("labels.large"), icon: VIA, testId: "fontSize-large" }, { value: 36, text: S("labels.veryLarge"), icon: XIA, testId: "fontSize-veryLarge" }], value: Le(A, u, (B) => {
  if (UA(B)) return B.fontSize;
  let g = gu(B, C.scene.getNonDeletedElementsMap());
  return g ? g.fontSize : null;
}, (B) => UA(B) || gu(B, C.scene.getNonDeletedElementsMap()) !== null, (B) => B ? null : u.currentItemFontSize || ut), onChange: (B) => e(B) })] }) });
var $p = pA({ name: "decreaseFontSize", label: "labels.decreaseFontSize", icon: n4, trackEvent: !1, perform: (A, u, e, C) => N9(A, u, C, (B) => Math.round(1 / (1 + jG) * B.fontSize)), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.shiftKey && (A.key === Z.CHEVRON_LEFT || A.key === Z.COMMA) }), Am = pA({ name: "increaseFontSize", label: "labels.increaseFontSize", icon: n4, trackEvent: !1, perform: (A, u, e, C) => N9(A, u, C, (B) => Math.round(B.fontSize * (1 + jG))), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.shiftKey && (A.key === Z.CHEVRON_RIGHT || A.key === Z.PERIOD) });
pA({ name: "changeFontFamily", label: "labels.fontFamily", trackEvent: !1, perform: (A, u, e, C) => {
  let { cachedElements: B, resetAll: g, resetContainers: t, ...i } = e;
  if (g) return { elements: fe(A, u, (c) => {
    let D = B?.get(c.id);
    return D ? Bu(c, { ...D }) : c;
  }, !0), appState: { ...u, ...i }, captureUpdate: aA.NEVER };
  let { currentItemFontFamily: I, currentHoveredFontFamily: o } = e, E = aA.EVENTUALLY, Q, s = !1;
  if (I) Q = I, E = aA.IMMEDIATELY;
  else if (o) {
    Q = o, E = aA.EVENTUALLY;
    let c = iu(A, u, { includeBoundTextElement: !0 }).filter((D) => UA(D));
    if (c.length > 200) s = !0;
    else {
      let D = 0, h = 0;
      for (; D < c.length && h < 5e3; ) {
        let F = c[D];
        h += F?.originalText.length || 0, D++;
      }
      h > 5e3 && (s = !0);
    }
  }
  let l = { appState: { ...u, ...i }, captureUpdate: E };
  if (Q && !s) {
    let c = /* @__PURE__ */ new Map(), D = /* @__PURE__ */ new Set(), h = !1, F = Array.from(Kg.loadedFontsCache.values()), m = Object.entries(t0).find(([b, f]) => f === Q)?.[0];
    o && m && F.some((b) => b.startsWith(m)) && (h = !0), Object.assign(l, { elements: fe(A, u, (b) => {
      if (UA(b) && (b.fontFamily !== Q || I)) {
        let f = Bu(b, { fontFamily: Q, lineHeight: NE(Q) }), L = B?.get(b.containerId || "") || {}, N = C.scene.getContainerElement(b);
        return t && N && L && nA(N, { ...L }, !1), h || (D = /* @__PURE__ */ new Set([...D, ...Array.from(f.originalText)])), c.set(f, N), f;
      }
      return b;
    }, !0) });
    let p = `10px ${gI({ fontFamily: Q })}`, k = Array.from(D.values()).join();
    if (h || window.document.fonts.check(p, k)) for (let [b, f] of c) Ge(b, f, C.scene.getNonDeletedElementsMap(), !1);
    else window.document.fonts.load(p, k).then((b) => {
      for (let [f, L] of c) {
        let N = C.scene.getElement(f.id), M = L ? C.scene.getElement(L.id) : null;
        N && Ge(N, M, C.scene.getNonDeletedElementsMap(), !1);
      }
      C.fonts.onLoaded(b);
    });
  }
  return l;
}, PanelComponent: ({ elements: A, appState: u, app: e, updateData: C }) => {
  let B = x.useRef(/* @__PURE__ */ new Map()), g = x.useRef(null), [t, i] = x.useState({}), I = x.useRef(!0), o = x.useMemo(() => {
    let E = (Q, s) => Le(Q, u, (l) => {
      if (UA(l)) return l.fontFamily;
      let c = gu(l, s);
      return c ? c.fontFamily : null;
    }, (l) => UA(l) || gu(l, s) !== null, (l) => l ? null : u.currentItemFontFamily || ri);
    return t.openPopup === "fontFamily" && u.openPopup === "fontFamily" ? E(Array.from(B.current?.values() ?? []), B.current) : !t.openPopup && u.openPopup !== "fontFamily" ? E(A, e.scene.getNonDeletedElementsMap()) : g.current;
  }, [t.openPopup, u, A, e.scene]);
  return x.useEffect(() => {
    g.current = o;
  }, [o]), x.useEffect(() => {
    Object.keys(t).length && (C(t), i({}));
  }, [t]), x.useEffect(() => (I.current = !1, () => {
    I.current = !0;
  }), []), r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.fontFamily") }), r.jsx(x6A, { isOpened: u.openPopup === "fontFamily", selectedFontFamily: o, hoveredFontFamily: u.currentHoveredFontFamily, onSelect: (E) => {
    i({ openPopup: null, currentHoveredFontFamily: null, currentItemFontFamily: E }), B.current.clear();
  }, onHover: (E) => {
    i({ currentHoveredFontFamily: E, cachedElements: new Map(B.current), resetContainers: !0 });
  }, onLeave: () => {
    i({ currentHoveredFontFamily: null, cachedElements: new Map(B.current), resetAll: !0 });
  }, onPopupChange: (E) => {
    if (E) {
      B.current.clear();
      let { editingTextElement: Q } = u;
      if (Q?.type === "text") {
        let s = e.scene.getElement(Q.id);
        B.current.set(Q.id, Bu(s || Q, {}, !0));
      } else {
        let s = iu(A, u, { includeBoundTextElement: !0 });
        for (let l of s) B.current.set(l.id, Bu(l, {}, !0));
      }
      i({ openPopup: "fontFamily" });
    } else {
      let Q = { openPopup: null, currentHoveredFontFamily: null, cachedElements: new Map(B.current), resetAll: !0 };
      I.current ? C({ ...t, ...Q }) : i(Q), B.current.clear();
    }
  } })] });
} });
pA({ name: "changeTextAlign", label: "Change text alignment", trackEvent: !1, perform: (A, u, e, C) => ({ elements: fe(A, u, (B) => {
  if (UA(B)) {
    let g = Bu(B, { textAlign: e });
    return Ge(g, C.scene.getContainerElement(B), C.scene.getNonDeletedElementsMap()), g;
  }
  return B;
}, !0), appState: { ...u, currentItemTextAlign: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => {
  let B = C.scene.getNonDeletedElementsMap();
  return r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.textAlign") }), r.jsx(ig, { group: "text-align", options: [{ value: "left", text: S("labels.left"), icon: $IA, testId: "align-left" }, { value: "center", text: S("labels.center"), icon: AoA, testId: "align-horizontal-center" }, { value: "right", text: S("labels.right"), icon: uoA, testId: "align-right" }], value: Le(A, u, (g) => {
    if (UA(g)) return g.textAlign;
    let t = gu(g, B);
    return t ? t.textAlign : null;
  }, (g) => UA(g) || gu(g, B) !== null, (g) => g ? null : u.currentItemTextAlign), onChange: (g) => e(g) })] });
} });
pA({ name: "changeVerticalAlign", label: "Change vertical alignment", trackEvent: { category: "element" }, perform: (A, u, e, C) => ({ elements: fe(A, u, (B) => {
  if (UA(B)) {
    let g = Bu(B, { verticalAlign: e });
    return Ge(g, C.scene.getContainerElement(B), C.scene.getNonDeletedElementsMap()), g;
  }
  return B;
}, !0), appState: { ...u }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx("fieldset", { children: r.jsx(ig, { group: "text-align", options: [{ value: IC.TOP, text: S("labels.alignTop"), icon: r.jsx(eoA, { theme: u.theme }), testId: "align-top" }, { value: IC.MIDDLE, text: S("labels.centerVertically"), icon: r.jsx(BoA, { theme: u.theme }), testId: "align-middle" }, { value: IC.BOTTOM, text: S("labels.alignBottom"), icon: r.jsx(CoA, { theme: u.theme }), testId: "align-bottom" }], value: Le(A, u, (B) => {
  if (UA(B) && B.containerId) return B.verticalAlign;
  let g = gu(B, C.scene.getNonDeletedElementsMap());
  return g ? g.verticalAlign : null;
}, (B) => UA(B) || gu(B, C.scene.getNonDeletedElementsMap()) !== null, (B) => B ? null : IC.MIDDLE), onChange: (B) => e(B) }) }) });
pA({ name: "changeRoundness", label: "Change edge roundness", trackEvent: !1, perform: (A, u, e) => ({ elements: fe(A, u, (C) => xA(C) ? C : Bu(C, { roundness: e === "round" ? { type: kI(C.type) ? x0.ADAPTIVE_RADIUS : x0.PROPORTIONAL_RADIUS } : null })), appState: { ...u, currentItemRoundness: e }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => {
  let C = jy(Wu(A), u).some((B) => B.roundness?.type === x0.LEGACY);
  return r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.edges") }), r.jsx(ig, { group: "edges", options: [{ value: "sharp", text: S("labels.sharp"), icon: NIA }, { value: "round", text: S("labels.round"), icon: RIA }], value: Le(A, u, (B) => C ? null : B.roundness ? "round" : "sharp", (B) => !Eu(B) && B.hasOwnProperty("roundness"), (B) => B ? null : u.currentItemRoundness), onChange: (B) => e(B) })] });
} });
var um = (A) => [{ value: null, text: S("labels.arrowhead_none"), keyBinding: "q", icon: MIA }, { value: "arrow", text: S("labels.arrowhead_arrow"), keyBinding: "w", icon: r.jsx(YIA, { flip: A }) }, { value: "triangle", text: S("labels.arrowhead_triangle"), icon: r.jsx(JIA, { flip: A }), keyBinding: "e" }, { value: "triangle_outline", text: S("labels.arrowhead_triangle_outline"), icon: r.jsx(ZIA, { flip: A }), keyBinding: "r" }, { value: "circle", text: S("labels.arrowhead_circle"), keyBinding: "a", icon: r.jsx(vIA, { flip: A }) }, { value: "circle_outline", text: S("labels.arrowhead_circle_outline"), keyBinding: "s", icon: r.jsx(HIA, { flip: A }) }, { value: "diamond", text: S("labels.arrowhead_diamond"), icon: r.jsx(qIA, { flip: A }), keyBinding: "d" }, { value: "diamond_outline", text: S("labels.arrowhead_diamond_outline"), icon: r.jsx(WIA, { flip: A }), keyBinding: "f" }, { value: "bar", text: S("labels.arrowhead_bar"), keyBinding: "z", icon: r.jsx(KIA, { flip: A }) }, { value: "crowfoot_one", text: S("labels.arrowhead_crowfoot_one"), icon: r.jsx(TIA, { flip: A }), keyBinding: "c" }, { value: "crowfoot_many", text: S("labels.arrowhead_crowfoot_many"), icon: r.jsx(jIA, { flip: A }), keyBinding: "x" }, { value: "crowfoot_one_or_many", text: S("labels.arrowhead_crowfoot_one_or_many"), icon: r.jsx(zIA, { flip: A }), keyBinding: "v" }];
pA({ name: "changeArrowhead", label: "Change arrowheads", trackEvent: !1, perform: (A, u, e) => ({ elements: fe(A, u, (C) => {
  if ($A(C)) {
    let { position: B, type: g } = e;
    if (B === "start") return Bu(C, { startArrowhead: g });
    if (B === "end") return Bu(C, { endArrowhead: g });
  }
  return C;
}), appState: { ...u, [e.position === "start" ? "currentItemStartArrowhead" : "currentItemEndArrowhead"]: e.type }, captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => {
  let C = en().rtl;
  return r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.arrowheads") }), r.jsxs("div", { className: "iconSelectList buttonList", children: [r.jsx(_p, { label: "arrowhead_start", options: um(!C), value: Le(A, u, (B) => $A(B) && pl(B.type) ? B.startArrowhead : u.currentItemStartArrowhead, !0, u.currentItemStartArrowhead), onChange: (B) => e({ position: "start", type: B }), numberOfOptionsToAlwaysShow: 4 }), r.jsx(_p, { label: "arrowhead_end", group: "arrowheads", options: um(!!C), value: Le(A, u, (B) => $A(B) && pl(B.type) ? B.endArrowhead : u.currentItemEndArrowhead, !0, u.currentItemEndArrowhead), onChange: (B) => e({ position: "end", type: B }), numberOfOptionsToAlwaysShow: 4 })] })] });
} });
pA({ name: "changeArrowType", label: "Change arrow types", trackEvent: !1, perform: (A, u, e, C) => {
  let B = fe(A, u, (i) => {
    if (!Eu(i)) return i;
    let I = Bu(i, { roundness: e === P0.round ? { type: x0.PROPORTIONAL_RADIUS } : null, elbowed: e === P0.elbow, points: e === P0.elbow || i.elbowed ? [i.points[0], i.points[i.points.length - 1]] : i.points });
    if (xA(I)) {
      let o = C.scene.getNonDeletedElementsMap();
      C.dismissLinearEditor();
      let E = LA.getPointAtIndexGlobalCoordinates(I, 0, o), Q = LA.getPointAtIndexGlobalCoordinates(I, -1, o), s = !I.startBinding && oB(aB(E), A, o, u.zoom, !1, !0), l = !I.endBinding && oB(aB(Q), A, o, u.zoom, !1, !0), c = s || I.startBinding && o.get(I.startBinding.elementId), D = l || I.endBinding && o.get(I.endBinding.elementId), h = s ? TQ(I, s, "start") : E, F = l ? TQ(I, l, "end") : Q;
      s && Ag(I, s, "start", o), l && Ag(I, l, "end", o), nA(I, { points: [h, F].map((m) => U(m[0] - I.x, m[1] - I.y)), ...c && I.startBinding ? { startBinding: { ...I.startBinding, ...yl(I, c, "start") } } : {}, ...D && I.endBinding ? { endBinding: { ...I.endBinding, ...yl(I, D, "end") } } : {} }), LA.updateEditorMidPointsCache(I, o, C.state);
    }
    return I;
  }), g = { ...u, currentItemArrowType: e }, t = u.selectedLinearElement?.elementId;
  if (t) {
    let i = B.find((I) => I.id === t);
    i && (g.selectedLinearElement = new LA(i));
  }
  return { elements: B, appState: g, captureUpdate: aA.IMMEDIATELY };
}, PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.arrowtypes") }), r.jsx(ig, { group: "arrowtypes", options: [{ value: P0.sharp, text: S("labels.arrowtype_sharp"), icon: foA, testId: "sharp-arrow" }, { value: P0.round, text: S("labels.arrowtype_round"), icon: xoA, testId: "round-arrow" }, { value: P0.elbow, text: S("labels.arrowtype_elbowed"), icon: LoA, testId: "elbow-arrow" }], value: Le(A, u, (C) => Eu(C) ? C.elbowed ? P0.elbow : C.roundness ? P0.round : P0.sharp : null, (C) => Eu(C), (C) => C ? null : u.currentItemArrowType), onChange: (C) => e(C) })] }) });
var lE = ({ viewportX: A, viewportY: u, nextZoom: e }, C) => {
  let B = A - C.offsetLeft, g = u - C.offsetTop, t = C.zoom.value, i = C.scrollX + (B - B / t), I = C.scrollY + (g - g / t), o = -(B - B / e), E = -(g - g / e);
  return { scrollX: i + o, scrollY: I + E, zoom: { value: e } };
}, mQ = () => {
  let A = document.querySelector(".excalidraw-tooltip");
  if (A) return A;
  let u = document.createElement("div");
  return document.body.appendChild(u), u.classList.add("excalidraw-tooltip"), u;
}, TG = (A, u, e = "bottom") => {
  let C = A.getBoundingClientRect(), B = window.innerWidth, g = window.innerHeight, t = 5, i = u.left + u.width / 2 - C.width / 2;
  i < 0 ? i = t : i + C.width >= B && (i = B - C.width - t);
  let I;
  e === "bottom" ? (I = u.top + u.height + t, I + C.height >= g && (I = u.top - C.height - t)) : (I = u.top - C.height - t, I < 0 && (I = u.top + u.height + t)), Object.assign(A.style, { top: `${I}px`, left: `${i}px` });
}, R6A = (A, u, e, C) => {
  u.classList.add("excalidraw-tooltip--visible"), u.style.minWidth = C ? "50ch" : "10ch", u.style.maxWidth = C ? "50ch" : "15ch", u.textContent = e;
  let B = A.getBoundingClientRect();
  TG(u, B);
}, HE = ({ children: A, label: u, long: e = !1, style: C, disabled: B }) => (x.useEffect(() => () => mQ().classList.remove("excalidraw-tooltip--visible"), []), B ? null : r.jsx("div", { className: "excalidraw-tooltip-wrapper", onPointerEnter: (g) => R6A(g.currentTarget, mQ(), u, e), onPointerLeave: () => mQ().classList.remove("excalidraw-tooltip--visible"), style: C, children: A }));
pA({ name: "changeViewBackgroundColor", label: "labels.canvasBackground", paletteName: "Change canvas background color", trackEvent: !1, predicate: (A, u, e, C) => !!C.props.UIOptions.canvasActions.changeViewBackgroundColor && !u.viewModeEnabled, perform: (A, u, e) => ({ appState: { ...u, ...e }, captureUpdate: e.viewBackgroundColor ? aA.IMMEDIATELY : aA.EVENTUALLY }), PanelComponent: ({ elements: A, appState: u, updateData: e, appProps: C }) => r.jsx(L9, { palette: null, topPicks: o8, label: S("labels.canvasBackground"), type: "canvasBackground", color: u.viewBackgroundColor, onChange: (B) => e({ viewBackgroundColor: B }), "data-testid": "canvas-background-picker", elements: A, appState: u, updateData: e }) });
var kQ = pA({ name: "clearCanvas", label: "labels.clearCanvas", paletteName: "Clear canvas", icon: xE, trackEvent: { category: "canvas" }, predicate: (A, u, e, C) => !!C.props.UIOptions.canvasActions.clearCanvas && !u.viewModeEnabled && u.openDialog?.name !== "elementLinkSelector", perform: (A, u, e, C) => (C.imageCache.clear(), { elements: A.map((B) => Bu(B, { isDeleted: !0 })), appState: { ...$B(), files: {}, theme: u.theme, penMode: u.penMode, penDetected: u.penDetected, exportBackground: u.exportBackground, exportEmbedScene: u.exportEmbedScene, gridSize: u.gridSize, gridStep: u.gridStep, gridModeEnabled: u.gridModeEnabled, stats: u.stats, pasteDialog: u.pasteDialog, activeTool: u.activeTool.type === "image" ? { ...u.activeTool, type: "selection" } : u.activeTool }, captureUpdate: aA.IMMEDIATELY }) }), em = pA({ name: "zoomIn", label: "buttons.zoomIn", viewMode: !0, icon: bF, trackEvent: { category: "canvas" }, perform: (A, u, e, C) => ({ appState: { ...u, ...lE({ viewportX: u.width / 2 + u.offsetLeft, viewportY: u.height / 2 + u.offsetTop, nextZoom: vg(u.zoom.value + t4) }, u), userToFollow: null }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ updateData: A, appState: u }) => r.jsx(cu, { type: "button", className: "zoom-in-button zoom-button", icon: bF, title: `${S("buttons.zoomIn")} — ${QA("CtrlOrCmd++")}`, "aria-label": S("buttons.zoomIn"), disabled: u.zoom.value >= e2, onClick: () => {
  A(null);
} }), keyTest: (A) => (A.code === wu.EQUAL || A.code === wu.NUM_ADD) && (A[Z.CTRL_OR_CMD] || A.shiftKey) }), Cm = pA({ name: "zoomOut", label: "buttons.zoomOut", icon: UF, viewMode: !0, trackEvent: { category: "canvas" }, perform: (A, u, e, C) => ({ appState: { ...u, ...lE({ viewportX: u.width / 2 + u.offsetLeft, viewportY: u.height / 2 + u.offsetTop, nextZoom: vg(u.zoom.value - t4) }, u), userToFollow: null }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ updateData: A, appState: u }) => r.jsx(cu, { type: "button", className: "zoom-out-button zoom-button", icon: UF, title: `${S("buttons.zoomOut")} — ${QA("CtrlOrCmd+-")}`, "aria-label": S("buttons.zoomOut"), disabled: u.zoom.value <= u2, onClick: () => {
  A(null);
} }), keyTest: (A) => (A.code === wu.MINUS || A.code === wu.NUM_SUBTRACT) && (A[Z.CTRL_OR_CMD] || A.shiftKey) }), Bm = pA({ name: "resetZoom", label: "buttons.resetZoom", icon: aIA, viewMode: !0, trackEvent: { category: "canvas" }, perform: (A, u, e, C) => ({ appState: { ...u, ...lE({ viewportX: u.width / 2 + u.offsetLeft, viewportY: u.height / 2 + u.offsetTop, nextZoom: vg(1) }, u), userToFollow: null }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ updateData: A, appState: u }) => r.jsx(HE, { label: S("buttons.resetZoom"), style: { height: "100%" }, children: r.jsxs(cu, { type: "button", className: "reset-zoom-button zoom-button", title: S("buttons.resetZoom"), "aria-label": S("buttons.resetZoom"), onClick: () => {
  A(null);
}, children: [(u.zoom.value * 100).toFixed(0), "%"] }) }), keyTest: (A) => (A.code === wu.ZERO || A.code === wu.NUM_ZERO) && (A[Z.CTRL_OR_CMD] || A.shiftKey) }), M6A = (A, u, e = 1) => {
  let [C, B, g, t] = A, i = g - C, I = u.width / i, o = t - B, E = u.height / o, Q = Math.min(I, E) * Qu(e, 0.1, 1);
  return Math.min(Q, 1);
}, Y6A = ({ bounds: A, appState: u, canvasOffsets: e, fitToViewport: C = !1, viewportZoomFactor: B = 1, minZoom: g = -1 / 0, maxZoom: t = 1 / 0 }) => {
  B = Qu(B, u2, e2);
  let [i, I, o, E] = A, Q = (i + o) / 2, s = (I + E) / 2, l = e?.left ?? 0, c = e?.top ?? 0, D = e?.right ?? 0, h = e?.bottom ?? 0, F = u.width - l - D, m = u.height - c - h, p;
  if (C) {
    let f = o - i, L = E - I;
    p = Math.min(F / f, m / L) * B;
  } else p = M6A(A, { width: F, height: m }, B);
  let k = vg(Qu(_EA(p, t4, "floor"), g, t)), b = Wk({ scenePoint: { x: Q, y: s }, viewportDimensions: { width: u.width, height: u.height }, offsets: e, zoom: { value: k } });
  return { appState: { ...u, scrollX: b.scrollX, scrollY: b.scrollY, zoom: { value: k } }, captureUpdate: aA.EVENTUALLY };
}, j4 = ({ canvasOffsets: A, targetElements: u, appState: e, fitToViewport: C, viewportZoomFactor: B, minZoom: g, maxZoom: t }) => {
  let i = Nu(Wu(u));
  return Y6A({ canvasOffsets: A, bounds: i, appState: e, fitToViewport: C, viewportZoomFactor: B, minZoom: g, maxZoom: t });
};
pA({ name: "zoomToFitSelectionInViewport", label: "labels.zoomToFitViewport", icon: d2, trackEvent: { category: "canvas" }, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u);
  return j4({ targetElements: B.length ? B : A, appState: { ...u, userToFollow: null }, fitToViewport: !1, canvasOffsets: C.getEditorUIOffsets() });
}, keyTest: (A) => A.code === wu.TWO && A.shiftKey && !A.altKey && !A[Z.CTRL_OR_CMD] });
pA({ name: "zoomToFitSelection", label: "helpDialog.zoomToSelection", icon: d2, trackEvent: { category: "canvas" }, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u);
  return j4({ targetElements: B.length ? B : A, appState: { ...u, userToFollow: null }, fitToViewport: !0, canvasOffsets: C.getEditorUIOffsets() });
}, keyTest: (A) => A.code === wu.THREE && A.shiftKey && !A.altKey && !A[Z.CTRL_OR_CMD] });
pA({ name: "zoomToFit", label: "helpDialog.zoomToFit", icon: d2, viewMode: !0, trackEvent: { category: "canvas" }, perform: (A, u, e, C) => j4({ targetElements: A, appState: { ...u, userToFollow: null }, fitToViewport: !1, canvasOffsets: C.getEditorUIOffsets() }), keyTest: (A) => A.code === wu.ONE && A.shiftKey && !A.altKey && !A[Z.CTRL_OR_CMD] });
var Tl = pA({ name: "toggleTheme", label: (A, u) => u.theme === su.DARK ? "buttons.lightMode" : "buttons.darkMode", keywords: ["toggle", "dark", "light", "mode", "theme"], icon: (A) => A.theme === su.LIGHT ? jD : TD, viewMode: !0, trackEvent: { category: "canvas" }, perform: (A, u, e) => ({ appState: { ...u, theme: e || (u.theme === su.LIGHT ? su.DARK : su.LIGHT) }, captureUpdate: aA.EVENTUALLY }), keyTest: (A) => A.altKey && A.shiftKey && A.code === wu.D, predicate: (A, u, e, C) => !!C.props.UIOptions.canvasActions.toggleTheme });
pA({ name: "toggleEraserTool", label: "toolBar.eraser", trackEvent: { category: "toolbar" }, perform: (A, u) => {
  let e;
  return KB(u) ? e = b0(u, { ...u.activeTool.lastActiveTool || { type: "selection" }, lastActiveToolBeforeEraser: null }) : e = b0(u, { type: "eraser", lastActiveToolBeforeEraser: u.activeTool }), { appState: { ...u, selectedElementIds: {}, selectedGroupIds: {}, activeEmbeddable: null, activeTool: e }, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A) => A.key === Z.E });
var v6A = pA({ name: "toggleHandTool", label: "toolBar.hand", paletteName: "Toggle hand tool", trackEvent: { category: "toolbar" }, icon: X8, viewMode: !1, perform: (A, u, e, C) => {
  let B;
  return BI(u) ? B = b0(u, { ...u.activeTool.lastActiveTool || { type: "selection" }, lastActiveToolBeforeEraser: null }) : (B = b0(u, { type: "hand", lastActiveToolBeforeEraser: u.activeTool }), Yu(C.interactiveCanvas, Ru.GRAB)), { appState: { ...u, selectedElementIds: {}, selectedGroupIds: {}, activeEmbeddable: null, activeTool: B }, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A) => !A.altKey && !A[Z.CTRL_OR_CMD] && A.key === Z.H }), eB = pA({ name: "finalize", label: "", trackEvent: !1, perform: (A, u, e, C) => {
  let { interactiveCanvas: B, focusContainer: g, scene: t } = C, i = t.getNonDeletedElementsMap();
  if (u.editingLinearElement) {
    let { elementId: s, startBindingElement: l, endBindingElement: c } = u.editingLinearElement, D = LA.getElement(s, i);
    if (D) return TB(D) && d4(D, l, c, i, t), { elements: D.points.length < 2 || lI(D) ? A.filter((h) => h.id !== D.id) : void 0, appState: { ...u, cursorButton: "up", editingLinearElement: null }, captureUpdate: aA.IMMEDIATELY };
  }
  let I = A, o = u.pendingImageElementId && t.getElement(u.pendingImageElementId);
  o && nA(o, { isDeleted: !0 }, !1), window.document.activeElement instanceof HTMLElement && g();
  let E = u.multiElement ? u.multiElement : u.newElement?.type === "freedraw" ? u.newElement : null;
  if (E) {
    if (E.type !== "freedraw" && u.lastPointerDownWith !== "touch") {
      let { points: l, lastCommittedPoint: c } = E;
      (!c || l[l.length - 1] !== c) && nA(E, { points: E.points.slice(0, -1) });
    }
    lI(E) && (I = I.filter((l) => l.id !== E.id));
    let s = Wg(E.points, u.zoom.value);
    if ((E.type === "line" || E.type === "freedraw") && s) {
      let l = E.points, c = l[0];
      nA(E, { points: l.map((D, h) => h === l.length - 1 ? U(c[0], c[1]) : D) });
    }
    if (TB(E) && !s && E.points.length > 1) {
      let [l, c] = LA.getPointAtIndexGlobalCoordinates(E, -1, PA(A));
      u1(E, u, { x: l, y: c }, i, A);
    }
  }
  (!u.activeTool.locked && u.activeTool.type !== "freedraw" || !E) && BB(B);
  let Q;
  return u.activeTool.type === "eraser" ? Q = b0(u, { ...u.activeTool.lastActiveTool || { type: "selection" }, lastActiveToolBeforeEraser: null }) : Q = b0(u, { type: "selection" }), { elements: I, appState: { ...u, cursorButton: "up", activeTool: (u.activeTool.locked || u.activeTool.type === "freedraw") && E ? u.activeTool : Q, activeEmbeddable: null, newElement: null, selectionElement: null, multiElement: null, editingTextElement: null, startBoundElement: null, suggestedBindings: [], selectedElementIds: E && !u.activeTool.locked && u.activeTool.type !== "freedraw" ? { ...u.selectedElementIds, [E.id]: !0 } : u.selectedElementIds, selectedLinearElement: E && $A(E) ? new LA(E) : u.selectedLinearElement, pendingImageElementId: null }, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A, u) => A.key === Z.ESCAPE && (u.editingLinearElement !== null || !u.newElement && u.multiElement === null) || (A.key === Z.ESCAPE || A.key === Z.ENTER) && u.multiElement !== null, PanelComponent: ({ appState: A, updateData: u, data: e }) => r.jsx(cu, { type: "button", icon: DIA, title: S("buttons.done"), "aria-label": S("buttons.done"), onClick: u, visible: A.multiElement != null, size: e?.size || "medium", style: { pointerEvents: "all" } }) }), H6A = (A) => {
  let { id: u } = ag(), [e, C] = x.useState(A.value), B = (t) => {
    A.ignoreFocus || daA(t.target);
    let i = t.target.value;
    i !== A.value && A.onChange(i);
  }, g = (t) => {
    if (t.key === Z.ENTER) {
      if (t.preventDefault(), t.nativeEvent.isComposing || t.keyCode === 229) return;
      t.currentTarget.blur();
    }
  };
  return r.jsxs("div", { className: "ProjectName", children: [r.jsx("label", { className: "ProjectName-label", htmlFor: "filename", children: `${A.label}:` }), r.jsx("input", { type: "text", className: "TextInput", onBlur: B, onKeyDown: g, id: `${u}-filename`, value: e, onChange: (t) => C(t.target.value) })] });
}, K6A = (A) => {
  let u = A.title || (A.value === su.DARK ? S("buttons.lightMode") : S("buttons.darkMode"));
  return r.jsx(cu, { type: "icon", icon: A.value === su.LIGHT ? gm.MOON : gm.SUN, title: u, "aria-label": u, onClick: () => A.onChange(A.value === su.DARK ? su.LIGHT : su.DARK), "data-testid": "toggle-dark-mode" });
}, gm = { SUN: r.jsx("svg", { width: "512", height: "512", className: "rtl-mirror", viewBox: "0 0 512 512", children: r.jsx("path", { fill: "currentColor", d: "M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z" }) }), MOON: r.jsx("svg", { width: "512", height: "512", className: "rtl-mirror", viewBox: "0 0 512 512", children: r.jsx("path", { fill: "currentColor", d: "M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z" }) }) }, T4 = (A, { selectedElementIds: u }, e) => {
  A = Wu(A);
  let C = e && S0(A, { selectedElementIds: u }), B = null, g = C ? iu(A, { selectedElementIds: u }, { includeBoundTextElement: !0 }) : A;
  return C && (g.length === 1 && OA(g[0]) ? (B = g[0], g = $2(A, B)) : g.length > 1 && (g = iu(A, { selectedElementIds: u }, { includeBoundTextElement: !0, includeElementsInFrames: !0 }))), { exportingFrame: B, exportedElements: Hg(g) };
}, z4 = async (A, u, e, C, { exportBackground: B, exportPadding: g = pI, viewBackgroundColor: t, name: i = e.name || d8, fileHandle: I = null, exportingFrame: o = null }) => {
  if (u.length === 0) throw new Error(S("alerts.cannotExportEmptyCanvas"));
  if (A === "svg" || A === "clipboard-svg") {
    let Q = M2(u, { exportBackground: B, exportWithDarkMode: e.exportWithDarkMode, viewBackgroundColor: t, exportPadding: g, exportScale: e.exportScale, exportEmbedScene: e.exportEmbedScene && A === "svg" }, C, { exportingFrame: o });
    if (A === "svg") return Ll(Q.then((s) => new Blob([s.outerHTML], { type: zA.svg })), { description: "Export to SVG", name: i, extension: e.exportEmbedScene ? "excalidraw.svg" : "svg", mimeTypes: [KQ.svg], fileHandle: I });
    if (A === "clipboard-svg") {
      let s = await Q.then((l) => l.outerHTML);
      try {
        await hn(s);
      } catch {
        throw new Error(S("errors.copyToSystemClipboardFailed"));
      }
      return;
    }
  }
  let E = fy(u, e, C, { exportBackground: B, viewBackgroundColor: t, exportPadding: g, exportingFrame: o });
  if (A === "png") {
    let Q = An(E);
    return e.exportEmbedScene && (Q = Q.then((s) => Promise.resolve().then(() => fL).then(({ encodePngMetadata: l }) => l({ blob: s, metadata: x2(u, e, C, "local") })))), Ll(Q, { description: "Export to PNG", name: i, extension: e.exportEmbedScene ? "excalidraw.png" : "png", mimeTypes: [KQ.png], fileHandle: I });
  } else if (A === "clipboard") try {
    let Q = An(E);
    await fcA(Q);
  } catch (Q) {
    throw console.warn(Q), Q.name === "CANVAS_POSSIBLY_TOO_BIG" ? new Error(S("canvasError.canvasTooBig")) : vQ && Q.name === "TypeError" ? new Error(`${S("alerts.couldNotCopyToClipboard")}

${S("hints.firefox_clipboard_write")}`) : new Error(S("alerts.couldNotCopyToClipboard"));
  }
  else throw new Error("Unsupported export type");
}, J6A = async (A, u, e, C) => {
  let { exportBackground: B, viewBackgroundColor: g, fileHandle: t } = u, i = eb(t);
  if (!t || !ndA(i)) throw new Error("fileHandle should exist and should be of type svg or png when resaving");
  u = { ...u, exportEmbedScene: !0 };
  let { exportedElements: I, exportingFrame: o } = T4(A, u, !1);
  return await z4(i, I, u, e, { exportBackground: B, viewBackgroundColor: g, name: C, fileHandle: t, exportingFrame: o }), { fileHandle: t };
}, R9 = ({ children: A, checked: u, onChange: e, className: C }) => r.jsxs("div", { className: NA("Checkbox", C, { "is-checked": u }), onClick: (B) => {
  e(!u, B), B.currentTarget.querySelector(".Checkbox-box").focus();
}, children: [r.jsx("button", { type: "button", className: "Checkbox-box", role: "checkbox", "aria-checked": u, children: rIA }), r.jsx("div", { className: "Checkbox-label", children: A })] }), Z6A = pA({ name: "changeProjectName", label: "labels.fileTitle", trackEvent: !1, perform: (A, u, e) => ({ appState: { ...u, name: e }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ appState: A, updateData: u, appProps: e, data: C, app: B }) => r.jsx(H6A, { label: S("labels.fileTitle"), value: B.getName(), onChange: (g) => u(g), ignoreFocus: C?.ignoreFocus ?? !1 }) }), q6A = pA({ name: "changeExportScale", label: "imageExportDialog.scale", trackEvent: { category: "export", action: "scale" }, perform: (A, u, e) => ({ appState: { ...u, exportScale: e }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => {
  let C = Wu(A), B = S0(C, u) ? iu(C, u) : C;
  return r.jsx(r.Fragment, { children: B2.map((g) => {
    let [t, i] = z3A(B, pI, g), I = `${S("imageExportDialog.label.scale")} ${g}x (${t}x${i})`;
    return r.jsx(cu, { size: "small", type: "radio", icon: `${g}x`, name: "export-canvas-scale", title: I, "aria-label": I, id: "export-canvas-scale", checked: g === u.exportScale, onChange: () => e(g) }, g);
  }) });
} }), W6A = pA({ name: "changeExportBackground", label: "imageExportDialog.label.withBackground", trackEvent: { category: "export", action: "toggleBackground" }, perform: (A, u, e) => ({ appState: { ...u, exportBackground: e }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ appState: A, updateData: u }) => r.jsx(R9, { checked: A.exportBackground, onChange: (e) => u(e), children: S("imageExportDialog.label.withBackground") }) }), zG = pA({ name: "changeExportEmbedScene", label: "imageExportDialog.tooltip.embedScene", trackEvent: { category: "export", action: "embedScene" }, perform: (A, u, e) => ({ appState: { ...u, exportEmbedScene: e }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ appState: A, updateData: u }) => r.jsxs(R9, { checked: A.exportEmbedScene, onChange: (e) => u(e), children: [S("imageExportDialog.label.embedScene"), r.jsx(HE, { label: S("imageExportDialog.tooltip.embedScene"), long: !0, children: r.jsx("div", { className: "excalidraw-tooltip-icon", children: hIA }) })] }) }), tm = pA({ name: "saveToActiveFile", label: "buttons.save", icon: Q4, trackEvent: { category: "export" }, predicate: (A, u, e, C) => !!C.props.UIOptions.canvasActions.saveToActiveFile && !!u.fileHandle && !u.viewModeEnabled, perform: async (A, u, e, C) => {
  let B = !!u.fileHandle;
  try {
    let { fileHandle: g } = i9(u.fileHandle) ? await J6A(A, u, C.files, C.getName()) : await ry(A, u, C.files, C.getName());
    return { captureUpdate: aA.EVENTUALLY, appState: { ...u, fileHandle: g, toast: B ? { message: g?.name ? S("toast.fileSavedToFilename").replace("{filename}", `"${g.name}"`) : S("toast.fileSaved") } : null } };
  } catch (g) {
    return g?.name !== "AbortError" ? console.error(g) : console.warn(g), { captureUpdate: aA.EVENTUALLY };
  }
}, keyTest: (A) => A.key === Z.S && A[Z.CTRL_OR_CMD] && !A.shiftKey }), PG = pA({ name: "saveFileToDisk", label: "exportDialog.disk_title", icon: Q4, viewMode: !0, trackEvent: { category: "export" }, perform: async (A, u, e, C) => {
  try {
    let { fileHandle: B } = await ry(A, { ...u, fileHandle: null }, C.files, C.getName());
    return { captureUpdate: aA.EVENTUALLY, appState: { ...u, openDialog: null, fileHandle: B, toast: { message: S("toast.fileSaved") } } };
  } catch (B) {
    return B?.name !== "AbortError" ? console.error(B) : console.warn(B), { captureUpdate: aA.EVENTUALLY };
  }
}, keyTest: (A) => A.key === Z.S && A.shiftKey && A[Z.CTRL_OR_CMD], PanelComponent: ({ updateData: A }) => r.jsx(cu, { type: "button", icon: lIA, title: S("buttons.saveAs"), "aria-label": S("buttons.saveAs"), showAriaLabel: J0().editor.isMobile, hidden: !_l, onClick: () => A(null), "data-testid": "save-as-button" }) }), x1 = pA({ name: "loadScene", label: "buttons.load", trackEvent: { category: "export" }, predicate: (A, u, e, C) => !!C.props.UIOptions.canvasActions.loadScene && !u.viewModeEnabled, perform: async (A, u, e, C) => {
  try {
    let { elements: B, appState: g, files: t } = await Y3A(u, A);
    return { elements: B, appState: g, files: t, captureUpdate: aA.IMMEDIATELY };
  } catch (B) {
    return B?.name === "AbortError" ? (console.warn(B), !1) : { elements: A, appState: { ...u, errorMessage: B.message }, files: C.files, captureUpdate: aA.EVENTUALLY };
  }
}, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.key === Z.O }), j6A = pA({ name: "exportWithDarkMode", label: "imageExportDialog.label.darkMode", trackEvent: { category: "export", action: "toggleTheme" }, perform: (A, u, e) => ({ appState: { ...u, exportWithDarkMode: e }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ appState: A, updateData: u }) => r.jsx("div", { style: { display: "flex", justifyContent: "flex-end", marginTop: "-45px", marginBottom: "10px" }, children: r.jsx(K6A, { value: A.exportWithDarkMode ? su.DARK : su.LIGHT, onChange: (e) => {
  u(e === su.DARK);
}, title: S("imageExportDialog.label.darkMode") }) }) }), OG = "{}", T6A = pA({ name: "copyStyles", label: "labels.copyStyles", icon: Ck, trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  let B = [], g = A.find((t) => u.selectedElementIds[t.id]);
  if (B.push(g), g && MC(g)) {
    let t = gu(g, C.scene.getNonDeletedElementsMap());
    B.push(t);
  }
  return g && (OG = JSON.stringify(B)), { appState: { ...u, toast: { message: S("toast.copyStyles") } }, captureUpdate: aA.EVENTUALLY };
}, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.C }), z6A = pA({ name: "pasteStyles", label: "labels.pasteStyles", icon: Ck, trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  let B = JSON.parse(OG), g = B[0], t = B[1];
  if (!M8(g)) return { elements: A, captureUpdate: aA.EVENTUALLY };
  let i = iu(A, u, { includeBoundTextElement: !0 }), I = i.map((o) => o.id);
  return { elements: A.map((o) => {
    if (I.includes(o.id)) {
      let E = g;
      if (UA(o) && o.containerId && (E = t), !E) return o;
      let Q = Bu(o, { backgroundColor: E?.backgroundColor, strokeWidth: E?.strokeWidth, strokeColor: E?.strokeColor, strokeStyle: E?.strokeStyle, fillStyle: E?.fillStyle, opacity: E?.opacity, roughness: E?.roughness, roundness: E.roundness ? faA(E.roundness.type, o) ? E.roundness : LaA(o) : null });
      if (UA(Q)) {
        let s = E.fontSize || ut, l = E.fontFamily || ri;
        Q = Bu(Q, { fontSize: s, fontFamily: l, textAlign: E.textAlign || Qn, lineHeight: E.lineHeight || NE(l) });
        let c = null;
        Q.containerId && (c = i.find((D) => UA(Q) && D.id === Q.containerId) || null), Ge(Q, c, C.scene.getNonDeletedElementsMap());
      }
      return Q.type === "arrow" && Eu(E) && (Q = Bu(Q, { startArrowhead: E.startArrowhead, endArrowhead: E.endArrowhead })), OA(o) && (Q = Bu(Q, { roundness: null, backgroundColor: "transparent" })), Q;
    }
    return o;
  }), captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.V });
pA({ name: "toggleCanvasMenu", label: "buttons.menu", trackEvent: { category: "menu" }, perform: (A, u) => ({ appState: { ...u, openMenu: u.openMenu === "canvas" ? null : "canvas" }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ appState: A, updateData: u }) => r.jsx(cu, { type: "button", icon: q8, "aria-label": S("buttons.menu"), onClick: u, selected: A.openMenu === "canvas" }) });
pA({ name: "toggleEditMenu", label: "buttons.edit", trackEvent: { category: "menu" }, perform: (A, u) => ({ appState: { ...u, openMenu: u.openMenu === "shape" ? null : "shape" }, captureUpdate: aA.EVENTUALLY }), PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsx(cu, { visible: t9(u, Wu(A)), type: "button", icon: cIA, "aria-label": S("buttons.edit"), onClick: e, selected: u.openMenu === "shape" }) });
var M9 = pA({ name: "toggleShortcuts", label: "welcomeScreen.defaults.helpHint", icon: oIA, viewMode: !0, trackEvent: { category: "menu", action: "toggleHelpDialog" }, perform: (A, u, e, { focusContainer: C }) => (u.openDialog?.name === "help" && C(), { appState: { ...u, openDialog: u.openDialog?.name === "help" ? null : { name: "help" } }, captureUpdate: aA.EVENTUALLY }), keyTest: (A) => A.key === Z.QUESTION_MARK }), P6A = (A) => {
  if (A.length >= 2) {
    let u = A[0].groupIds;
    for (let e of u) if (A.reduce((C, B) => C && OQ(B, e), !0)) return !0;
  }
  return !1;
}, im = (A, u, e) => {
  let C = e.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0 });
  return C.length >= 2 && !P6A(C) && !qy(C);
}, O6A = pA({ name: "group", label: "labels.group", icon: (A) => r.jsx(ZF, { theme: A.theme }), trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  let B = _2(C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0 }));
  if (B.length < 2) return { appState: u, elements: A, captureUpdate: aA.EVENTUALLY };
  let g = hE(u);
  if (g.length === 1) {
    let D = g[0], h = new Set(Vu(A, D).map((m) => m.id)), F = new Set(B.map((m) => m.id));
    if ((/* @__PURE__ */ new Set([...Array.from(h), ...Array.from(F)])).size === h.size) return { appState: u, elements: A, captureUpdate: aA.EVENTUALLY };
  }
  let t = [...A];
  new Set(B.map((D) => D.frameId)).size > 1 && KcA(B).forEach((D, h) => {
    G4(D, C.scene.getNonDeletedElementsMap());
  });
  let i = YC(), I = PA(B);
  t = t.map((D) => I.get(D.id) ? Bu(D, { groupIds: q4A(D.groupIds, i, u.editingGroupId) }) : D);
  let o = Vu(t, i), E = o[o.length - 1], Q = t.lastIndexOf(E), s = t.slice(Q + 1), l = t.slice(0, Q).filter((D) => !OQ(D, i)), c = Cg([...l, ...o, ...s], PA(o));
  return { appState: { ...u, ...Tk(i, { ...u, selectedGroupIds: {} }, Wu(t)) }, elements: c, captureUpdate: aA.IMMEDIATELY };
}, predicate: (A, u, e, C) => im(A, u, C), keyTest: (A) => !A.shiftKey && A[Z.CTRL_OR_CMD] && A.key === Z.G, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !im(A, u, C), type: "button", icon: r.jsx(ZF, { theme: u.theme }), onClick: () => e(null), title: `${S("labels.group")} — ${QA("CtrlOrCmd+G")}`, "aria-label": S("labels.group"), visible: S0(Wu(A), u) }) }), V6A = pA({ name: "ungroup", label: "labels.ungroup", icon: (A) => r.jsx(qF, { theme: A.theme }), trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  let B = hE(u), g = PA(A);
  if (B.length === 0) return { appState: u, elements: A, captureUpdate: aA.EVENTUALLY };
  let t = [...A], i = [];
  t = t.map((Q) => {
    Xu(Q) && i.push(Q.id);
    let s = W4A(Q.groupIds, u.selectedGroupIds);
    return s.length === Q.groupIds.length ? Q : Bu(Q, { groupIds: s });
  });
  let I = Ue(u, Wu(t), u, null), o = C.scene.getSelectedElements(u), E = new Set(o.filter((Q) => Q.frameId).map((Q) => Q.frameId));
  return X2(A).filter((Q) => E.has(Q.id)).forEach((Q) => {
    Q && (t = Jy(t, Js(t, Q, u, g), Q, C));
  }), I.selectedElementIds = Object.entries(I.selectedElementIds).reduce((Q, [s, l]) => (l && !i.includes(s) && (Q[s] = !0), Q), {}), { appState: { ...u, ...I }, elements: t, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A) => A.shiftKey && A[Z.CTRL_OR_CMD] && A.key === Z.G.toUpperCase(), predicate: (A, u) => hE(u).length > 0, PanelComponent: ({ elements: A, appState: u, updateData: e }) => r.jsx(cu, { type: "button", hidden: hE(u).length === 0, icon: r.jsx(qF, { theme: u.theme }), onClick: () => e(null), title: `${S("labels.ungroup")} — ${QA("CtrlOrCmd+Shift+G")}`, "aria-label": S("labels.ungroup"), visible: S0(Wu(A), u) }) }), VG = (A, u, e, C, B, g, t) => {
  A.beginPath(), A.moveTo(u + g, e), A.lineTo(u + C - g, e), A.quadraticCurveTo(u + C, e, u + C, e + g), A.lineTo(u + C, e + B - g), A.quadraticCurveTo(u + C, e + B, u + C - g, e + B), A.lineTo(u + g, e + B), A.quadraticCurveTo(u, e + B, u, e + B - g), A.lineTo(u, e + g), A.quadraticCurveTo(u, e, u + g, e), A.closePath(), A.fill(), t && (A.strokeStyle = t), A.stroke();
};
function X6A(A) {
  let u = 0;
  if (A.length === 0) return u;
  for (let e = 0; e < A.length; e++) {
    let C = A.charCodeAt(e);
    u = (u << 5) - u + C;
  }
  return u;
}
var P4 = (A, u) => `hsl(${Math.abs(X6A(u?.id || A)) % 37 * 10}, 100%, 83%)`, _6A = (A) => {
  let u = A?.trim()?.codePointAt(0);
  return (u ? String.fromCodePoint(u) : "?").toUpperCase();
}, $6A = ({ context: A, renderConfig: u, appState: e, normalizedWidth: C, normalizedHeight: B }) => {
  for (let [g, t] of u.remotePointerViewportCoords) {
    let { x: i, y: I } = t, o = e.collaborators.get(g);
    i -= e.offsetLeft, I -= e.offsetTop;
    let E = 11, Q = 14, s = i < 0 || i > C - E || I < 0 || I > B - Q;
    i = Math.max(i, 0), i = Math.min(i, C - E), I = Math.max(I, 0), I = Math.min(I, B - Q);
    let l = P4(g, o);
    A.save(), A.strokeStyle = l, A.fillStyle = l;
    let c = u.remotePointerUserStates.get(g), D = s || c === "idle" || c === "away";
    D && (A.globalAlpha = 0.3), u.remotePointerButton.get(g) === "down" && (A.beginPath(), A.arc(i, I, 15, 0, 2 * Math.PI, !1), A.lineWidth = 3, A.strokeStyle = "#ffffff88", A.stroke(), A.closePath(), A.beginPath(), A.arc(i, I, 15, 0, 2 * Math.PI, !1), A.lineWidth = 1, A.strokeStyle = l, A.stroke(), A.closePath());
    let h = e.theme === su.DARK ? "#2f6330" : LEA, F = o?.isSpeaking;
    F && (A.fillStyle = h, A.strokeStyle = h, A.lineWidth = 10, A.lineJoin = "round", A.beginPath(), A.moveTo(i, I), A.lineTo(i + 0, I + 14), A.lineTo(i + 4, I + 9), A.lineTo(i + 11, I + 8), A.closePath(), A.stroke(), A.fill()), A.fillStyle = es, A.strokeStyle = es, A.lineWidth = 6, A.lineJoin = "round", A.beginPath(), A.moveTo(i, I), A.lineTo(i + 0, I + 14), A.lineTo(i + 4, I + 9), A.lineTo(i + 11, I + 8), A.closePath(), A.stroke(), A.fill(), A.fillStyle = l, A.strokeStyle = l, A.lineWidth = 2, A.lineJoin = "round", A.beginPath(), D ? (A.moveTo(i - 1, I - 1), A.lineTo(i - 1, I + 15), A.lineTo(i + 5, I + 10), A.lineTo(i + 12, I + 9), A.closePath(), A.fill()) : (A.moveTo(i, I), A.lineTo(i + 0, I + 14), A.lineTo(i + 4, I + 9), A.lineTo(i + 11, I + 8), A.closePath(), A.fill(), A.stroke());
    let m = u.remotePointerUsernames.get(g) || "";
    if (!s && m) {
      A.font = "600 12px sans-serif";
      let p = (F ? i + 0 : i) + E / 2, k = (F ? I + 0 : I) + Q + 2, b = 5, f = 3, L = A.measureText(m), N = L.actualBoundingBoxDescent + L.actualBoundingBoxAscent, M = Math.max(N, 12), v = p - 1, K = k - 1, q = L.width + 2 + b * 2 + 2, j = M + 2 + f * 2 + 2;
      if (A.roundRect ? (A.beginPath(), A.roundRect(v, K, q, j, 8), A.fillStyle = l, A.fill(), A.strokeStyle = es, A.stroke(), F && (A.beginPath(), A.roundRect(v - 2, K - 2, q + 4, j + 4, 8), A.strokeStyle = h, A.stroke())) : VG(A, v, K, q, j, 8, es), A.fillStyle = fEA, A.fillText(m, p + b + 1, k + f + L.actualBoundingBoxAscent + Math.floor((M - N) / 2) + 2), F) {
        A.fillStyle = h;
        let uA = 8, O = 8, $ = 5;
        A.fillRect(v + q + O, K + (j / 2 - uA / 2), 2, uA), A.fillRect(v + q + O + $, K + (j / 2 - uA * 2 / 2), 2, uA * 2), A.fillRect(v + q + O + $ * 2, K + (j / 2 - uA / 2), 2, uA);
      }
    }
    A.restore(), A.closePath();
  }
}, Em = ({ color: A, onClick: u, name: e, src: C, className: B }) => {
  let g = _6A(e), [t, i] = x.useState(!1), I = !t && C, o = I ? void 0 : { background: A };
  return r.jsx("div", { className: NA("Avatar", B), style: o, onClick: u, children: I ? r.jsx("img", { className: "Avatar-img", src: C, alt: g, referrerPolicy: "no-referrer", onError: () => i(!0) }) : g });
};
pA({ name: "goToCollaborator", label: "Go to a collaborator", viewMode: !0, trackEvent: { category: "collab" }, perform: (A, u, e) => !e.socketId || u.userToFollow?.socketId === e.socketId || e.isCurrentUser ? { appState: { ...u, userToFollow: null }, captureUpdate: aA.EVENTUALLY } : { appState: { ...u, userToFollow: { socketId: e.socketId, username: e.username || "" }, openMenu: u.openMenu === "canvas" ? null : u.openMenu }, captureUpdate: aA.EVENTUALLY }, PanelComponent: ({ updateData: A, data: u, appState: e }) => {
  let { socketId: C, collaborator: B, withName: g, isBeingFollowed: t } = u, i = P4(C, B), I = NA({ "is-followed": t, "is-current-user": B.isCurrentUser === !0, "is-speaking": B.isSpeaking, "is-in-call": B.isInCall, "is-muted": B.isMuted }), o = B.isInCall ? B.isSpeaking ? r.jsxs("div", { className: "UserList__collaborator-status-icon-speaking-indicator", title: S("userList.hint.isSpeaking"), children: [r.jsx("div", {}), r.jsx("div", {}), r.jsx("div", {})] }) : B.isMuted ? r.jsx("div", { className: "UserList__collaborator-status-icon-microphone-muted", title: S("userList.hint.micMuted"), children: coA }) : r.jsx("div", { title: S("userList.hint.inCall"), children: loA }) : null;
  return g ? r.jsxs("div", { className: `dropdown-menu-item dropdown-menu-item-base UserList__collaborator ${I}`, style: { "--avatar-size": "1.5rem" }, onClick: () => A(B), children: [r.jsx(Em, { color: i, onClick: () => {
  }, name: B.username || "", src: B.avatarUrl, className: I }), r.jsx("div", { className: "UserList__collaborator-name", children: B.username }), r.jsxs("div", { className: "UserList__collaborator-status-icons", "aria-hidden": !0, children: [t && r.jsx("div", { className: "UserList__collaborator-status-icon-is-followed", title: S("userList.hint.followStatus"), children: c2 }), o] })] }) : r.jsxs("div", { className: `UserList__collaborator UserList__collaborator--avatar-only ${I}`, children: [r.jsx(Em, { color: i, onClick: () => {
    A(B);
  }, name: B.username || "", src: B.avatarUrl, className: I }), o && r.jsx("div", { className: "UserList__collaborator-status-icon", children: o })] });
} });
var AhA = pA({ name: "addToLibrary", trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 });
  for (let g of c8) if (B.some((t) => t.type === g)) return { captureUpdate: aA.EVENTUALLY, appState: { ...u, errorMessage: S(`errors.libraryElementTypeError.${g}`) } };
  return C.library.getLatestLibrary().then((g) => C.library.setLibrary([{ id: YC(), status: "unpublished", elements: B.map(ZE), created: Date.now() }, ...g])).then(() => ({ captureUpdate: aA.EVENTUALLY, appState: { ...u, toast: { message: S("toast.addedToLibrary") } } })).catch((g) => ({ captureUpdate: aA.EVENTUALLY, appState: { ...u, errorMessage: g.message } }));
}, label: "labels.addToLibrary" }), uhA = (A, u, e, C) => {
  let B = F4(A, u), g = lB(A);
  return B.flatMap((t) => {
    let i = ehA(t, g, e);
    return t.map((I) => {
      let o = nA(I, { x: I.x + i.x, y: I.y + i.y });
      return Ve(I, C.getNonDeletedElementsMap(), { simultaneouslyUpdated: t }), o;
    });
  });
}, ehA = (A, u, { axis: e, position: C }) => {
  let B = lB(A), [g, t] = e === "x" ? ["minX", "maxX"] : ["minY", "maxY"], i = { x: 0, y: 0 };
  return C === "start" ? { ...i, [e]: u[g] - B[g] } : C === "end" ? { ...i, [e]: u[t] - B[t] } : { ...i, [e]: (u[g] + u[t]) / 2 - (B[g] + B[t]) / 2 };
}, rC = (A, u) => {
  let e = u.scene.getSelectedElements(A);
  return e.length > 1 && !e.some((C) => OA(C));
}, xI = (A, u, e, C) => {
  let B = e.scene.getSelectedElements(u), g = PA(A), t = uhA(B, g, C, e.scene), i = PA(t);
  return sI(A.map((I) => i.get(I.id) || I), u, e);
};
pA({ name: "alignTop", label: "labels.alignTop", icon: MF, trackEvent: { category: "element" }, predicate: (A, u, e, C) => rC(u, C), perform: (A, u, e, C) => ({ appState: u, elements: xI(A, u, C, { position: "start", axis: "y" }), captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.shiftKey && A.key === Z.ARROW_UP, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !rC(u, C), type: "button", icon: MF, onClick: () => e(null), title: `${S("labels.alignTop")} — ${QA("CtrlOrCmd+Shift+Up")}`, "aria-label": S("labels.alignTop"), visible: S0(Wu(A), u) }) });
pA({ name: "alignBottom", label: "labels.alignBottom", icon: YF, trackEvent: { category: "element" }, predicate: (A, u, e, C) => rC(u, C), perform: (A, u, e, C) => ({ appState: u, elements: xI(A, u, C, { position: "end", axis: "y" }), captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.shiftKey && A.key === Z.ARROW_DOWN, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !rC(u, C), type: "button", icon: YF, onClick: () => e(null), title: `${S("labels.alignBottom")} — ${QA("CtrlOrCmd+Shift+Down")}`, "aria-label": S("labels.alignBottom"), visible: S0(Wu(A), u) }) });
pA({ name: "alignLeft", label: "labels.alignLeft", icon: vF, trackEvent: { category: "element" }, predicate: (A, u, e, C) => rC(u, C), perform: (A, u, e, C) => ({ appState: u, elements: xI(A, u, C, { position: "start", axis: "x" }), captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.shiftKey && A.key === Z.ARROW_LEFT, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !rC(u, C), type: "button", icon: vF, onClick: () => e(null), title: `${S("labels.alignLeft")} — ${QA("CtrlOrCmd+Shift+Left")}`, "aria-label": S("labels.alignLeft"), visible: S0(Wu(A), u) }) });
pA({ name: "alignRight", label: "labels.alignRight", icon: HF, trackEvent: { category: "element" }, predicate: (A, u, e, C) => rC(u, C), perform: (A, u, e, C) => ({ appState: u, elements: xI(A, u, C, { position: "end", axis: "x" }), captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.shiftKey && A.key === Z.ARROW_RIGHT, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !rC(u, C), type: "button", icon: HF, onClick: () => e(null), title: `${S("labels.alignRight")} — ${QA("CtrlOrCmd+Shift+Right")}`, "aria-label": S("labels.alignRight"), visible: S0(Wu(A), u) }) });
pA({ name: "alignVerticallyCentered", label: "labels.centerVertically", icon: KF, trackEvent: { category: "element" }, predicate: (A, u, e, C) => rC(u, C), perform: (A, u, e, C) => ({ appState: u, elements: xI(A, u, C, { position: "center", axis: "y" }), captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !rC(u, C), type: "button", icon: KF, onClick: () => e(null), title: S("labels.centerVertically"), "aria-label": S("labels.centerVertically"), visible: S0(Wu(A), u) }) });
pA({ name: "alignHorizontallyCentered", label: "labels.centerHorizontally", icon: JF, trackEvent: { category: "element" }, predicate: (A, u, e, C) => rC(u, C), perform: (A, u, e, C) => ({ appState: u, elements: xI(A, u, C, { position: "center", axis: "x" }), captureUpdate: aA.IMMEDIATELY }), PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !rC(u, C), type: "button", icon: JF, onClick: () => e(null), title: S("labels.centerHorizontally"), "aria-label": S("labels.centerHorizontally"), visible: S0(Wu(A), u) }) });
var ChA = (A, u, e) => {
  let [C, B, g, t] = e.axis === "x" ? ["minX", "midX", "maxX", "width"] : ["minY", "midY", "maxY", "height"], i = lB(A), I = F4(A, u).map((s) => [s, lB(s)]).sort((s, l) => s[1][B] - l[1][B]), o = 0;
  for (let s of I) o += s[1][t];
  let E = (i[t] - o) / (I.length - 1);
  if (E < 0) {
    let s = I.findIndex((h) => h[1][C] === i[C]), l = I.findIndex((h) => h[1][g] === i[g]), c = (I[l][1][B] - I[s][1][B]) / (I.length - 1), D = I[s][1][B];
    return I.flatMap(([h, F], m) => {
      let p = { x: 0, y: 0 };
      return m !== s && m !== l && (D += c, p[e.axis] = D - F[B]), h.map((k) => Bu(k, { x: k.x + p.x, y: k.y + p.y }));
    });
  }
  let Q = i[C];
  return I.flatMap(([s, l]) => {
    let c = { x: 0, y: 0 };
    return c[e.axis] = Q - l[C], Q += E, Q += l[t], s.map((D) => Bu(D, { x: D.x + c.x, y: D.y + c.y }));
  });
}, XG = (A, u) => {
  let e = u.scene.getSelectedElements(A);
  return e.length > 1 && !e.some((C) => OA(C));
}, _G = (A, u, e, C) => {
  let B = e.scene.getSelectedElements(u), g = ChA(B, e.scene.getNonDeletedElementsMap(), C), t = PA(g);
  return sI(A.map((i) => t.get(i.id) || i), u, e);
};
pA({ name: "distributeHorizontally", label: "labels.distributeHorizontally", trackEvent: { category: "element" }, perform: (A, u, e, C) => ({ appState: u, elements: _G(A, u, C, { axis: "x" }), captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => !A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.H, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !XG(u, C), type: "button", icon: wIA, onClick: () => e(null), title: `${S("labels.distributeHorizontally")} — ${QA("Alt+H")}`, "aria-label": S("labels.distributeHorizontally"), visible: S0(Wu(A), u) }) });
pA({ name: "distributeVertically", label: "labels.distributeVertically", trackEvent: { category: "element" }, perform: (A, u, e, C) => ({ appState: u, elements: _G(A, u, C, { axis: "y" }), captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => !A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.V, PanelComponent: ({ elements: A, appState: u, updateData: e, app: C }) => r.jsx(cu, { hidden: !XG(u, C), type: "button", icon: FIA, onClick: () => e(null), title: `${S("labels.distributeVertically")} — ${QA("Alt+V")}`, "aria-label": S("labels.distributeVertically"), visible: S0(Wu(A), u) }) });
var BhA = pA({ name: "flipHorizontal", label: "labels.flipHorizontal", icon: woA, trackEvent: { category: "element" }, perform: (A, u, e, C) => ({ elements: sI($G(A, C.scene.getNonDeletedElementsMap(), u, "horizontal", C), u, C), appState: u, captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => A.shiftKey && A.code === wu.H }), ghA = pA({ name: "flipVertical", label: "labels.flipVertical", icon: hoA, trackEvent: { category: "element" }, perform: (A, u, e, C) => ({ elements: sI($G(A, C.scene.getNonDeletedElementsMap(), u, "vertical", C), u, C), appState: u, captureUpdate: aA.IMMEDIATELY }), keyTest: (A) => A.shiftKey && A.code === wu.V && !A[Z.CTRL_OR_CMD] }), $G = (A, u, e, C, B) => {
  let g = iu(Wu(A), e, { includeBoundTextElement: !0, includeElementsInFrames: !0 }), t = thA(g, u, e, C, B), i = PA(t);
  return A.map((I) => i.get(I.id) || I);
}, thA = (A, u, e, C, B) => {
  if (A.every((l) => Eu(l) && (l.startBinding || l.endBinding))) return A.map((l) => {
    let c = l;
    return Bu(c, { startArrowhead: c.endArrowhead, endArrowhead: c.startArrowhead });
  });
  let { midX: g, midY: t } = lB(A);
  Xy(A, u, "nw", B.scene, new Map(Array.from(u.values()).map((l) => [l.id, ZE(l)])), { flipByX: C === "horizontal", flipByY: C === "vertical", shouldResizeFromCenter: !0, shouldMaintainAspectRatio: !0 }), kl(A.filter($A), u, B.scene.getNonDeletedElements(), B.scene, nE(e), [], e.zoom);
  let { elbowArrows: i, otherElements: I } = A.reduce((l, c) => xA(c) ? { ...l, elbowArrows: l.elbowArrows.concat(c) } : { ...l, otherElements: l.otherElements.concat(c) }, { elbowArrows: [], otherElements: [] }), { midX: o, midY: E } = lB(A), [Q, s] = [g - o, t - E];
  return I.forEach((l) => nA(l, { x: l.x + Q, y: l.y + s })), i.forEach((l) => nA(l, { x: l.x + Q, y: l.y + s })), A;
}, Os = pA({ name: "copy", label: "labels.copy", icon: WD, trackEvent: { category: "element" }, perform: async (A, u, e, C) => {
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 });
  try {
    await kcA(B, C.files, e);
  } catch (g) {
    return { captureUpdate: aA.EVENTUALLY, appState: { ...u, errorMessage: g.message } };
  }
  return { captureUpdate: aA.EVENTUALLY };
}, keyTest: void 0 }), am = pA({ name: "paste", label: "labels.paste", trackEvent: { category: "element" }, perform: async (A, u, e, C) => {
  let B;
  try {
    B = await UcA();
  } catch (g) {
    return g.name === "AbortError" || g.name === "NotAllowedError" ? !1 : (console.error(`actionPaste ${g.name}: ${g.message}`), vQ ? { captureUpdate: aA.EVENTUALLY, appState: { ...u, errorMessage: S("hints.firefox_clipboard_write") } } : { captureUpdate: aA.EVENTUALLY, appState: { ...u, errorMessage: S("errors.asyncPasteFailedOnRead") } });
  }
  try {
    C.pasteFromClipboard(pcA({ types: B }));
  } catch (g) {
    return console.error(g), { captureUpdate: aA.EVENTUALLY, appState: { ...u, errorMessage: S("errors.asyncPasteFailedOnParse") } };
  }
  return { captureUpdate: aA.EVENTUALLY };
}, keyTest: void 0 }), Im = pA({ name: "cut", label: "labels.cut", icon: toA, trackEvent: { category: "element" }, perform: (A, u, e, C) => (Os.perform(A, u, e, C), kG.perform(A, u, null, C)), keyTest: (A) => A[Z.CTRL_OR_CMD] && A.key === Z.X }), om = pA({ name: "copyAsSvg", label: "labels.copyAsSvg", icon: FoA, trackEvent: { category: "element" }, perform: async (A, u, e, C) => {
  if (!C.canvas) return { captureUpdate: aA.EVENTUALLY };
  let { exportedElements: B, exportingFrame: g } = T4(A, u, !0);
  try {
    await z4("clipboard-svg", B, u, C.files, { ...u, exportingFrame: g, name: C.getName() });
    let t = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 });
    return { appState: { toast: { message: S("toast.copyToClipboardAsSvg", { exportSelection: t.length ? S("toast.selection") : S("toast.canvas"), exportColorScheme: u.exportWithDarkMode ? S("buttons.darkMode") : S("buttons.lightMode") }) } }, captureUpdate: aA.EVENTUALLY };
  } catch (t) {
    return console.error(t), { appState: { errorMessage: t.message }, captureUpdate: aA.EVENTUALLY };
  }
}, predicate: (A) => T2 && A.length > 0, keywords: ["svg", "clipboard", "copy"] }), Qm = pA({ name: "copyAsPng", label: "labels.copyAsPng", icon: poA, trackEvent: { category: "element" }, perform: async (A, u, e, C) => {
  if (!C.canvas) return { captureUpdate: aA.EVENTUALLY };
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 }), { exportedElements: g, exportingFrame: t } = T4(A, u, !0);
  try {
    return await z4("clipboard", g, u, C.files, { ...u, exportingFrame: t, name: C.getName() }), { appState: { ...u, toast: { message: S("toast.copyToClipboardAsPng", { exportSelection: B.length ? S("toast.selection") : S("toast.canvas"), exportColorScheme: u.exportWithDarkMode ? S("buttons.darkMode") : S("buttons.lightMode") }) } }, captureUpdate: aA.EVENTUALLY };
  } catch (i) {
    return console.error(i), { appState: { ...u, errorMessage: i.message }, captureUpdate: aA.EVENTUALLY };
  }
}, predicate: (A) => z2 && A.length > 0, keyTest: (A) => A.code === wu.C && A.altKey && A.shiftKey, keywords: ["png", "clipboard", "copy"] }), nm = pA({ name: "copyText", label: "labels.copyText", trackEvent: { category: "element" }, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0 });
  try {
    hn(I3A(B));
  } catch {
    throw new Error(S("errors.copyToSystemClipboardFailed"));
  }
  return { captureUpdate: aA.EVENTUALLY };
}, predicate: (A, u, e, C) => T2 && C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0 }).some(UA), keywords: ["text", "clipboard", "copy"] }), rm = pA({ name: "gridMode", icon: UoA, keywords: ["snap"], label: "labels.toggleGrid", viewMode: !0, trackEvent: { category: "canvas", predicate: (A) => A.gridModeEnabled }, perform(A, u) {
  return { appState: { ...u, gridModeEnabled: !this.checked(u), objectsSnapModeEnabled: !1 }, captureUpdate: aA.EVENTUALLY };
}, checked: (A) => A.gridModeEnabled, predicate: (A, u, e) => e.gridModeEnabled === void 0, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.code === wu.QUOTE }), S1 = pA({ name: "zenMode", label: "buttons.zenMode", icon: koA, paletteName: "Toggle zen mode", viewMode: !0, trackEvent: { category: "canvas", predicate: (A) => !A.zenModeEnabled }, perform(A, u) {
  return { appState: { ...u, zenModeEnabled: !this.checked(u) }, captureUpdate: aA.EVENTUALLY };
}, checked: (A) => A.zenModeEnabled, predicate: (A, u, e) => typeof e.zenModeEnabled > "u", keyTest: (A) => !A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.Z }), ihA = pA({ name: "objectsSnapMode", label: "buttons.objectsSnapMode", icon: moA, viewMode: !1, trackEvent: { category: "canvas", predicate: (A) => !A.objectsSnapModeEnabled }, perform(A, u) {
  return { appState: { ...u, objectsSnapModeEnabled: !this.checked(u), gridModeEnabled: !1 }, captureUpdate: aA.EVENTUALLY };
}, checked: (A) => A.objectsSnapModeEnabled, predicate: (A, u, e) => typeof e.objectsSnapModeEnabled > "u", keyTest: (A) => !A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.S }), N1 = pA({ name: "stats", label: "stats.fullTitle", icon: DoA, paletteName: "Toggle stats", viewMode: !0, trackEvent: { category: "menu" }, keywords: ["edit", "attributes", "customize"], perform(A, u) {
  return { appState: { ...u, stats: { ...u.stats, open: !this.checked(u) } }, captureUpdate: aA.EVENTUALLY };
}, checked: (A) => A.stats.open, keyTest: (A) => !A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.SLASH }), EhA = pA({ name: "unbindText", label: "labels.unbindText", trackEvent: { category: "element" }, predicate: (A, u, e, C) => C.scene.getSelectedElements(u).some((B) => MC(B)), perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u), g = C.scene.getNonDeletedElementsMap();
  return B.forEach((t) => {
    let i = gu(t, g);
    if (i) {
      let { width: I, height: o } = we(i.originalText, vu(i), i.lineHeight), E = C3A(t.id);
      _k(t.id);
      let { x: Q, y: s } = m4(t, i, g);
      nA(i, { containerId: null, width: I, height: o, text: i.originalText, x: Q, y: s }), nA(t, { boundElements: t.boundElements?.filter((l) => l.id !== i.id), height: E || t.height });
    }
  }), { elements: A, appState: u, captureUpdate: aA.IMMEDIATELY };
} }), ahA = pA({ name: "bindText", label: "labels.bindText", trackEvent: { category: "element" }, predicate: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u);
  if (B.length === 2) {
    let g = UA(B[0]) || UA(B[1]), t;
    if (DE(B[0]) ? t = B[0] : DE(B[1]) && (t = B[1]), g && t && gu(t, C.scene.getNonDeletedElementsMap()) === null) return !0;
  }
  return !1;
}, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u), g, t;
  UA(B[0]) && DE(B[1]) ? (g = B[0], t = B[1]) : (g = B[1], t = B[0]), nA(g, { containerId: t.id, verticalAlign: IC.MIDDLE, textAlign: JQ.CENTER, autoResize: !0 }), nA(t, { boundElements: (t.boundElements || []).concat({ type: "text", id: g.id }) });
  let i = t.height;
  return Ge(g, t, C.scene.getNonDeletedElementsMap()), bl(t.id, i), { elements: IhA(A, t, g), appState: { ...u, selectedElementIds: { [t.id]: !0 } }, captureUpdate: aA.IMMEDIATELY };
} }), IhA = (A, u, e) => {
  let C = A.slice(), B = C.findIndex((t) => t.id === e.id);
  C.splice(B, 1);
  let g = C.findIndex((t) => t.id === u.id);
  return C.splice(g + 1, 0, e), Cg(C, PA([u, e])), C;
}, ohA = (A, u, e) => {
  let C = A.slice(), B = C.findIndex((t) => t.id === u.id);
  C.splice(B, 1);
  let g = C.findIndex((t) => t.id === e.id);
  return C.splice(g, 0, u), Cg(C, PA([u, e])), C;
}, QhA = pA({ name: "wrapTextInContainer", label: "labels.createContainerFromText", trackEvent: { category: "element" }, predicate: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u), g = B.every((t) => UA(t));
  return B.length > 0 && g;
}, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u), g = A.slice(), t = {};
  for (let i of B) if (UA(i)) {
    let I = eg({ type: "rectangle", backgroundColor: u.currentItemBackgroundColor, boundElements: [...i.boundElements || [], { id: i.id, type: "text" }], angle: i.angle, fillStyle: u.currentItemFillStyle, strokeColor: u.currentItemStrokeColor, roughness: u.currentItemRoughness, strokeWidth: u.currentItemStrokeWidth, strokeStyle: u.currentItemStrokeStyle, roundness: u.currentItemRoundness === "round" ? { type: kI("rectangle") ? x0.ADAPTIVE_RADIUS : x0.PROPORTIONAL_RADIUS } : null, opacity: 100, locked: !1, x: i.x - L0, y: i.y - L0, width: ME(i.width, "rectangle"), height: ME(i.height, "rectangle"), groupIds: i.groupIds, frameId: i.frameId });
    if (i.boundElements?.length) {
      let o = i.boundElements.filter((E) => E.type === "arrow").map((E) => E.id);
      g.filter((E) => o.includes(E.id)).forEach((E) => {
        let Q = E.startBinding, s = E.endBinding;
        Q?.elementId === i.id && (Q = { ...Q, elementId: I.id }), s?.elementId === i.id && (s = { ...s, elementId: I.id }), (Q || s) && nA(E, { startBinding: Q, endBinding: s }, !1);
      });
    }
    nA(i, { containerId: I.id, verticalAlign: IC.MIDDLE, boundElements: null, textAlign: JQ.CENTER, autoResize: !0 }, !1), Ge(i, I, C.scene.getNonDeletedElementsMap()), g = ohA([...g, I], I, i), t[I.id] = !0;
  }
  return { elements: g, appState: { ...u, selectedElementIds: t }, captureUpdate: aA.IMMEDIATELY };
} }), Y9 = 380, nhA = 42, R1 = 5, Af = 85, rhA = 500, M1 = !1, ds = /* @__PURE__ */ new Map(), shA = ({ element: A, elementsMap: u, setAppState: e, onLinkOpen: C, setToast: B, updateEmbedValidationStatus: g }) => {
  let t = bn(), i = yn(), I = J0(), o = A.link || "", [E, Q] = x.useState(o), s = x.useRef(null), l = t.showHyperlinkPopup === "editor", c = x.useCallback(() => {
    if (!s.current) return;
    let p = oC(s.current.value) || null;
    if (!A.link && p && zu("hyperlink", "create"), je(A)) {
      if (t.activeEmbeddable?.element === A && e({ activeEmbeddable: null }), !p) {
        nA(A, { link: null }), g(A, !1);
        return;
      }
      if (!Hs(p, i.validateEmbeddable)) p && B({ message: S("toast.unableToEmbed"), closable: !0 }), A.link && ds.set(A.id, A.link), nA(A, { link: p }), g(A, !1);
      else {
        let { width: k, height: b } = A, f = za(p);
        f?.error instanceof URIError && B({ message: S("toast.unrecognizedLinkFormat"), closable: !0 });
        let L = f ? f.intrinsicSize.w / f.intrinsicSize.h : 1, N = ds.get(A.id) !== A.link;
        nA(A, { ...N ? { width: f?.type === "video" ? k > b ? k : b * L : k, height: f?.type === "video" && k > b ? k / L : b } : {}, link: p }), g(A, !0), ds.has(A.id) && ds.delete(A.id);
      }
    } else nA(A, { link: p });
  }, [A, B, i.validateEmbeddable, t.activeEmbeddable, e, g]);
  x.useLayoutEffect(() => () => {
    c();
  }, [c]), x.useEffect(() => {
    l && s?.current && !(I.viewport.isMobile || I.isTouchScreen) && s.current.select();
  }, [l, I.viewport.isMobile, I.isTouchScreen]), x.useEffect(() => {
    let p = null, k = (b) => {
      l || (p && clearTimeout(p), dhA(A, u, t, U(b.clientX, b.clientY)) && (p = window.setTimeout(() => {
        e({ showHyperlinkPopup: !1 });
      }, rhA)));
    };
    return window.addEventListener("pointermove", k, !1), () => {
      window.removeEventListener("pointermove", k, !1), p && clearTimeout(p);
    };
  }, [t, A, l, e, u]);
  let D = x.useCallback(() => {
    zu("hyperlink", "delete"), nA(A, { link: null }), e({ showHyperlinkPopup: !1 });
  }, [e, A]), h = () => {
    zu("hyperlink", "edit", "popup-ui"), e({ showHyperlinkPopup: "editor" });
  }, { x: F, y: m } = uf(A, t, u);
  return t.contextMenu || t.selectedElementsAreBeingDragged || t.resizingElement || t.isRotating || t.openMenu || t.viewModeEnabled ? null : r.jsxs("div", { className: "excalidraw-hyperlinkContainer", style: { top: `${m}px`, left: `${F}px`, width: Y9, padding: R1 }, children: [l ? r.jsx("input", { className: NA("excalidraw-hyperlinkContainer-input"), placeholder: S("labels.link.hint"), ref: s, value: E, onChange: (p) => Q(p.target.value), autoFocus: !0, onKeyDown: (p) => {
    p.stopPropagation(), p[Z.CTRL_OR_CMD] && p.key === Z.K && p.preventDefault(), (p.key === Z.ENTER || p.key === Z.ESCAPE) && (c(), e({ showHyperlinkPopup: "info" }));
  } }) : A.link ? r.jsx("a", { href: oC(A.link || ""), className: "excalidraw-hyperlinkContainer-link", target: Ay(A.link) ? "_self" : "_blank", onClick: (p) => {
    if (A.link && C) {
      let k = L8("excalidraw-link", p.nativeEvent);
      C({ ...A, link: oC(A.link) }, k), k.defaultPrevented && p.preventDefault();
    }
  }, rel: "noopener noreferrer", children: A.link }) : r.jsx("div", { className: "excalidraw-hyperlinkContainer-link", children: S("labels.link.empty") }), r.jsxs("div", { className: "excalidraw-hyperlinkContainer__buttons", children: [!l && r.jsx(cu, { type: "button", title: S("buttons.edit"), "aria-label": S("buttons.edit"), label: S("buttons.edit"), onClick: h, className: "excalidraw-hyperlinkContainer--edit", icon: WQ }), r.jsx(cu, { type: "button", title: S("labels.linkToElement"), "aria-label": S("labels.linkToElement"), label: S("labels.linkToElement"), onClick: () => {
    e({ openDialog: { name: "elementLinkSelector", sourceElementId: A.id } });
  }, icon: gk }), o && !je(A) && r.jsx(cu, { type: "button", title: S("buttons.remove"), "aria-label": S("buttons.remove"), label: S("buttons.remove"), onClick: D, className: "excalidraw-hyperlinkContainer--remove", icon: xE })] })] });
}, uf = (A, u, e) => {
  let [C, B] = Au(A, e), { x: g, y: t } = EB({ sceneX: C + A.width / 2, sceneY: B }, u), i = g - u.offsetLeft - Y9 / 2, I = t - u.offsetTop - Af;
  return { x: i, y: I };
}, sm = (A, u) => {
  let e = iu(A, u);
  return je(e[0]) ? "labels.link.editEmbed" : e[0]?.link ? "labels.link.edit" : "labels.link.create";
}, yQ = null, lhA = (A, u, e) => {
  yQ && clearTimeout(yQ), yQ = window.setTimeout(() => chA(A, u, e), YEA);
}, chA = (A, u, e) => {
  if (!A.link) return;
  let C = mQ();
  C.classList.add("excalidraw-tooltip--visible"), C.style.maxWidth = "20rem", C.textContent = hQ(A.link) ? S("labels.link.goToElement") : A.link;
  let [B, g, t, i] = Au(A, e), [I, o, E, Q] = S2([B, g, t, i], A.angle, u), s = EB({ sceneX: I, sceneY: o }, u);
  TG(C, { left: s.x, top: s.y, width: E, height: Q }, "top"), zu("hyperlink", "tooltip", "link-icon"), M1 = !0;
}, lm = () => {
  yQ && clearTimeout(yQ), M1 && (M1 = !1, mQ().classList.remove("excalidraw-tooltip--visible"));
}, dhA = (A, u, e, [C, B]) => {
  let { x: g, y: t } = Tu({ clientX: C, clientY: B }, e), i = 15 / e.zoom.value;
  if (h2(g, t, A, u)) return !1;
  let [I, o, E] = Au(A, u);
  if (g >= I && g <= E && t >= o - Af && t <= o) return !1;
  let { x: Q, y: s } = uf(A, e, u);
  return !(C >= Q - i && C <= Q + Y9 + R1 * 2 + i && B >= s - i && B <= s + i + R1 * 2 + nhA);
}, ef = pA({ name: "hyperlink", label: (A, u) => sm(A, u), icon: zD, perform: (A, u) => u.showHyperlinkPopup === "editor" ? !1 : { elements: A, appState: { ...u, showHyperlinkPopup: "editor", openMenu: null }, captureUpdate: aA.IMMEDIATELY }, trackEvent: { category: "hyperlink", action: "click" }, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.key === Z.K, predicate: (A, u) => iu(A, u).length === 1, PanelComponent: ({ elements: A, appState: u, updateData: e }) => {
  let C = iu(A, u);
  return r.jsx(cu, { type: "button", icon: zD, "aria-label": S(sm(A, u)), title: `${je(A[0]) ? S("labels.link.labelEmbed") : S("labels.link.label")} - ${QA("CtrlOrCmd+K")}`, onClick: () => e(null), selected: C.length === 1 && !!C[0].link });
} }), iD = (A) => A.every((u) => !u.locked), DhA = pA({ name: "toggleElementLock", label: (A, u, e) => {
  let C = e.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !1 });
  return C.length === 1 && !OA(C[0]) ? C[0].locked ? "labels.elementLock.unlock" : "labels.elementLock.lock" : iD(C) ? "labels.elementLock.lockAll" : "labels.elementLock.unlockAll";
}, icon: (A, u) => {
  let e = iu(u, A);
  return iD(e) ? n2 : o4;
}, trackEvent: { category: "element" }, predicate: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u);
  return B.length > 0 && !B.some((g) => g.locked && g.frameId);
}, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 });
  if (!B.length) return !1;
  let g = iD(B), t = PA(B);
  return { elements: A.map((i) => t.has(i.id) ? Bu(i, { locked: g }) : i), appState: { ...u, selectedLinearElement: g ? null : u.selectedLinearElement }, captureUpdate: aA.IMMEDIATELY };
}, keyTest: (A, u, e, C) => A.key.toLocaleLowerCase() === Z.L && A[Z.CTRL_OR_CMD] && A.shiftKey && C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !1 }).length > 0 }), hhA = pA({ name: "unlockAllElements", paletteName: "Unlock all elements", trackEvent: { category: "canvas" }, viewMode: !1, icon: o4, predicate: (A, u) => iu(A, u).length === 0 && A.some((e) => e.locked), perform: (A, u) => {
  let e = A.filter((C) => C.locked);
  return { elements: A.map((C) => C.locked ? Bu(C, { locked: !1 }) : C), appState: { ...u, selectedElementIds: Object.fromEntries(e.map((C) => [C.id, !0])) }, captureUpdate: aA.IMMEDIATELY };
}, label: "labels.elementLock.unlockAll" }), whA = () => {
  let [A, u] = x.useState(null), e = x.useCallback((C) => u(C), []);
  return [A, e];
}, FhA = (A) => {
  let { closeOnClickOutside: u = !0 } = A, e = RG({ className: "excalidraw-modal-container" }), C = x.useRef(document.body.classList.contains("excalidraw-animations-disabled"));
  if (!e) return null;
  let B = (g) => {
    g.key === Z.ESCAPE && (g.nativeEvent.stopImmediatePropagation(), g.stopPropagation(), A.onCloseRequest());
  };
  return O0.createPortal(r.jsxs("div", { className: NA("Modal", A.className, { "animations-disabled": C.current }), role: "dialog", "aria-modal": "true", onKeyDown: B, "aria-labelledby": A.labelledBy, "data-prevent-outside-click": !0, children: [r.jsx("div", { className: "Modal__background", onClick: u ? A.onCloseRequest : void 0 }), r.jsx("div", { className: "Modal__content", style: { "--max-width": `${A.maxWidth}px` }, tabIndex: 0, children: A.children })] }), e);
}, Cf = $0(/* @__PURE__ */ new Map()), cm = async (A) => await Yy({ elements: A, appState: { exportBackground: !1, viewBackgroundColor: ou.white }, files: null, renderEmbeddables: !1, skipInliningFonts: !0 }), phA = (A, u, e) => {
  let [C, B] = x.useState();
  return x.useEffect(() => {
    if (u) if (A) {
      let g = e.get(A);
      g ? B(g) : (async () => {
        let t = await cm(u);
        t.querySelector(".style-fonts")?.remove(), t && (e.set(A, t), B(t));
      })();
    } else (async () => {
      let g = await cm(u);
      B(g);
    })();
  }, [A, u, e, B]), C;
}, Bf = () => {
  let [A] = c0(Cf);
  return { clearLibraryCache: () => A.clear(), deleteItemsFromLibraryCache: (u) => {
    u.forEach((e) => A.delete(e));
  }, svgCache: A };
}, mhA = class {
  constructor() {
    J(this, "jobs", []), J(this, "running", !1);
  }
  tick() {
    if (this.running) return;
    let A = this.jobs.shift();
    A ? (this.running = !0, A.promise.resolve(ti(A.jobFactory, ...A.args).finally(() => {
      this.running = !1, this.tick();
    }))) : this.running = !1;
  }
  push(A, ...u) {
    let e = G8();
    return this.jobs.push({ jobFactory: A, promise: e, args: u }), this.tick(), e;
  }
}, khA = ["excalidraw.com", "raw.githubusercontent.com/excalidraw/excalidraw-libraries"], gf = new JB(), Cn = $0({ status: "loaded", isInitialized: !1, libraryItems: [] }), jo = (A) => Hg(A), yhA = (A, u) => !A.find((e) => e.elements.length !== u.elements.length ? !1 : e.elements.every((C, B) => C.id === u.elements[B].id && C.versionNonce === u.elements[B].versionNonce)), bhA = (A, u) => {
  let e = [];
  for (let C of u) yhA(A, C) && e.push(C);
  return [...e, ...A];
}, tf = (A, u) => {
  let e = PA(u), C = { deletedItems: /* @__PURE__ */ new Map(), addedItems: /* @__PURE__ */ new Map() };
  for (let g of A) e.has(g.id) || C.deletedItems.set(g.id, g);
  let B = PA(A);
  for (let g of u) B.has(g.id) || C.addedItems.set(g.id, g);
  return C;
}, UhA = class {
  constructor(A) {
    J(this, "currLibraryItems", []), J(this, "prevLibraryItems", jo(this.currLibraryItems)), J(this, "app"), J(this, "updateQueue", []), J(this, "getLastUpdateTask", () => this.updateQueue[this.updateQueue.length - 1]), J(this, "notifyListeners", () => {
      if (this.updateQueue.length > 0) QB.set(Cn, (u) => ({ status: "loading", libraryItems: this.currLibraryItems, isInitialized: u.isInitialized }));
      else {
        QB.set(Cn, { status: "loaded", libraryItems: this.currLibraryItems, isInitialized: !0 });
        try {
          let u = this.prevLibraryItems;
          this.prevLibraryItems = jo(this.currLibraryItems);
          let e = jo(this.currLibraryItems);
          this.app.props.onLibraryChange?.(e), gf.trigger(tf(u, e), e);
        } catch (u) {
          console.error(u);
        }
      }
    }), J(this, "destroy", () => {
      this.updateQueue = [], this.currLibraryItems = [], QB.set(Cf, /* @__PURE__ */ new Map());
    }), J(this, "resetLibrary", () => this.setLibrary([])), J(this, "getLatestLibrary", () => new Promise(async (u) => {
      try {
        let e = await (this.getLastUpdateTask() || this.currLibraryItems);
        this.updateQueue.length > 0 ? u(this.getLatestLibrary()) : u(jo(e));
      } catch {
        return u(this.currLibraryItems);
      }
    })), J(this, "updateLibrary", async ({ libraryItems: u, prompt: e = !1, merge: C = !1, openLibraryMenu: B = !1, defaultStatus: g = "unpublished" }) => (B && this.app.setState({ openSidebar: { name: rB.name, tab: ol } }), this.setLibrary(() => new Promise(async (t, i) => {
      try {
        let I = await (typeof u == "function" && !(u instanceof Blob) ? u(this.currLibraryItems) : u), o;
        I instanceof Blob ? o = await rdA(I, g) : o = U4(I, g), !e || window.confirm(S("alerts.confirmAddLibrary", { numShapes: o.length })) ? (e && this.app.focusContainer(), t(C ? bhA(this.currLibraryItems, o) : o)) : i(new r4());
      } catch (I) {
        i(I);
      }
    })))), J(this, "setLibrary", (u) => {
      let e = new Promise(async (C, B) => {
        try {
          await this.getLastUpdateTask(), typeof u == "function" && (u = u(this.currLibraryItems)), this.currLibraryItems = jo(await u), C(this.currLibraryItems);
        } catch (g) {
          B(g);
        }
      }).catch((C) => {
        if (C.name === "AbortError") return console.warn("Library update aborted by user"), this.currLibraryItems;
        throw C;
      }).finally(() => {
        this.updateQueue = this.updateQueue.filter((C) => C !== e), this.notifyListeners();
      });
      return this.updateQueue.push(e), this.notifyListeners(), e;
    }), this.app = A;
  }
}, GhA = UhA, Ef = (A) => {
  let u = Math.ceil(Math.sqrt(A.length)), e = [], C = (s) => A.slice(s * u, s * u + u).reduce((l, c) => {
    let { height: D } = lB(c.elements);
    return Math.max(l, D);
  }, 0), B = (s) => {
    let l = 0, c = 0, D = 0;
    for (let h of A) {
      if (l % u === 0 && (c = 0), c === s) {
        let { width: F } = lB(h.elements);
        D = Math.max(D, F);
      }
      l++, c++;
    }
    return D;
  }, g = 0, t = 0, i = 0, I = 0, o = 0, E = 0, Q = 0;
  for (let s of A) {
    o && o % u === 0 && (t += i + 50, g = 0, E = 0, Q++), E === 0 && (i = C(Q)), I = B(E);
    let { minX: l, minY: c, width: D, height: h } = lB(s.elements), F = (I - D) / 2, m = (i - h) / 2;
    e.push(...s.elements.map((p) => ({ ...p, x: p.x + g + F - l, y: p.y + t + m - c }))), g += I + 50, o++, E++;
  }
  return e;
}, fhA = (A, u = khA) => {
  if (typeof u == "function" ? u(A) : u.some((e) => {
    let C = new URL(`https://${e.replace(/^https?:\/\//, "")}`), { hostname: B, pathname: g } = new URL(A);
    return new RegExp(`(^|\\.)${C.hostname}$`).test(B) && new RegExp(`^${C.pathname.replace(/\/+$/, "")}(/+|$)`).test(g);
  })) return !0;
  throw new Error(`Invalid or disallowed library URL: "${A}"`);
}, dm = () => {
  let A = new URLSearchParams(window.location.hash.slice(1)).get(HD.addLibrary) || new URLSearchParams(window.location.search).get(vD.addLibrary), u = A ? new URLSearchParams(window.location.hash.slice(1)).get("token") : null;
  return A ? { libraryUrl: A, idToken: u } : null;
}, aQ = class Y1 {
  constructor(u) {
    J(this, "adapter"), this.adapter = u;
  }
  static async getLibraryItems(u, e, C = !0) {
    let B = () => new Promise(async (g, t) => {
      try {
        let i = await u.load({ source: e });
        g(U4(i?.libraryItems || [], "published"));
      } catch (i) {
        t(i);
      }
    });
    return C ? Y1.queue.push(B) : B();
  }
  getLibraryItems(u) {
    return Y1.getLibraryItems(this.adapter, u, !1);
  }
};
J(aQ, "queue", new mhA()), J(aQ, "run", async (A, u) => {
  let e = new aQ(A);
  return aQ.queue.push(() => u(e));
});
var Vs = aQ, bQ = 0, zl = 0, v1 = (A) => _y(A.map((u) => `${u.id}:${IdA(u.elements)}`).sort().join()), Dm = async (A, u) => {
  try {
    return zl++, await Vs.run(A, async (e) => {
      let C = PA(await e.getLibraryItems("save"));
      for (let [i] of u.deletedItems) C.delete(i);
      let B = [];
      for (let [i, I] of u.addedItems) C.has(i) ? C.set(i, I) : B.push(I);
      let g = B.concat(Array.from(C.values())), t = v1(g);
      return t !== bQ && await A.save({ libraryItems: g }), bQ = t, g;
    });
  } finally {
    zl--;
  }
}, m8A = (A) => {
  let { excalidrawAPI: u } = A, e = x.useRef(A);
  e.current = A;
  let C = x.useRef(!1);
  x.useEffect(() => {
    if (!u) return;
    C.current = !1;
    let B = async ({ libraryUrl: i, idToken: I }) => {
      let o = new Promise(async (Q, s) => {
        try {
          i = decodeURIComponent(i), i = U2(i), fhA(i, e.current.validateLibraryUrl);
          let l = await (await fetch(i)).blob();
          Q(l);
        } catch (l) {
          s(l);
        }
      }), E = I !== u.id;
      await (E && document.hidden ? new Promise((Q) => {
        window.addEventListener("focus", () => Q(), { once: !0 });
      }) : null);
      try {
        await u.updateLibrary({ libraryItems: o, prompt: E, merge: !0, defaultStatus: "published", openLibraryMenu: !0 });
      } catch (Q) {
        throw u.updateScene({ appState: { errorMessage: Q.message } }), Q;
      } finally {
        if (window.location.hash.includes(HD.addLibrary)) {
          let Q = new URLSearchParams(window.location.hash.slice(1));
          Q.delete(HD.addLibrary), window.history.replaceState({}, YD, `#${Q.toString()}`);
        } else if (window.location.search.includes(vD.addLibrary)) {
          let Q = new URLSearchParams(window.location.search);
          Q.delete(vD.addLibrary), window.history.replaceState({}, YD, `?${Q.toString()}`);
        }
      }
    }, g = (i) => {
      i.preventDefault();
      let I = dm();
      I && (i.stopImmediatePropagation(), window.history.replaceState({}, "", i.oldURL), B(I));
    }, t = dm();
    if (t && B(t), "getInitialLibraryItems" in e.current && e.current.getInitialLibraryItems && (console.warn("useHandleLibrar `opts.getInitialLibraryItems` is deprecated. Use `opts.adapter` instead."), Promise.resolve(e.current.getInitialLibraryItems()).then((i) => {
      u.updateLibrary({ libraryItems: i, merge: !0 });
    }).catch((i) => {
      console.error(`UseHandeLibrary getInitialLibraryItems failed: ${i?.message}`);
    })), "adapter" in e.current && e.current.adapter) {
      let i = e.current.adapter, I = e.current.migrationAdapter, o = G8();
      I ? o.resolve(ti(I.load).then(async (E) => {
        let Q = null;
        try {
          if (!E) return Vs.getLibraryItems(i, "load");
          Q = U4(E.libraryItems || [], "published");
          let s = await Dm(i, tf([], Q));
          try {
            await I.clear();
          } catch (l) {
            console.error(`couldn't delete legacy library data: ${l.message}`);
          }
          return s;
        } catch (s) {
          return console.error(`couldn't migrate legacy library data: ${s.message}`), Q;
        }
      }).catch((E) => (console.error(`error during library migration: ${E.message}`), Vs.getLibraryItems(i, "load")))) : o.resolve(ti(Vs.getLibraryItems, i, "load")), u.updateLibrary({ libraryItems: o.then((E) => {
        let Q = E || [];
        return bQ = v1(Q), Q;
      }), merge: !0 }).finally(() => {
        C.current = !0;
      });
    }
    return window.addEventListener("hashchange", g), () => {
      window.removeEventListener("hashchange", g);
    };
  }, [u]), x.useEffect(() => {
    let B = gf.on(async (t, i) => {
      let I = C.current, o = "adapter" in e.current && e.current.adapter || null;
      try {
        o && bQ !== v1(i) && await Dm(o, t);
      } catch (E) {
        console.error(`couldn't persist library update: ${E.message}`, t), I && e.current.excalidrawAPI && e.current.excalidrawAPI.updateScene({ appState: { errorMessage: S("errors.saveLibraryError") } });
      }
    }), g = (t) => {
      zl && DaA(t);
    };
    return window.addEventListener("beforeunload", g), () => {
      window.removeEventListener("beforeunload", g), B(), bQ = 0, zl = 0;
    };
  }, []);
}, LhA = x.forwardRef(({ children: A, gap: u, align: e, justifyContent: C, className: B, style: g }, t) => r.jsx("div", { className: NA("Stack Stack_horizontal", B), style: { "--gap": u, alignItems: e, justifyContent: C, ...g }, ref: t, children: A })), xhA = x.forwardRef(({ children: A, gap: u, align: e, justifyContent: C, className: B, style: g }, t) => r.jsx("div", { className: NA("Stack Stack_vertical", B), style: { "--gap": u, justifyItems: e, justifyContent: C, ...g }, ref: t, children: A })), GC = { Row: LhA, Col: xhA }, ShA = ({ theme: A, id: u, libraryReturnUrl: e }) => {
  let C = e || window.location.origin + window.location.pathname;
  return r.jsx("a", { className: "library-menu-browse-button", href: `${tu.VITE_APP_LIBRARY_URL}?target=${window.name || "_blank"}&referrer=${C}&useHash=true&token=${u}&theme=${A}&version=${i4.excalidrawLibrary}`, target: "_excalidraw_libraries", children: S("labels.libraries") });
}, NhA = ShA, af = ({ libraryReturnUrl: A, theme: u, id: e, style: C, children: B, className: g }) => r.jsxs("div", { className: NA("library-menu-control-buttons", g), style: C, children: [r.jsx(NhA, { id: e, libraryReturnUrl: A, theme: u }), B] }), RhA = /({{[\w-]+}})|(<[\w-]+>)|(<\/[\w-]+>)/g, MhA = /{{([\w-]+)}}/, YhA = /<([\w-]+)>/, vhA = /<\/([\w-]+)>/, HhA = (A, u) => {
  let e = [{ name: "", children: [] }];
  return A.split(RhA).filter(Boolean).forEach((C) => {
    let B = C.match(YhA), g = C.match(vhA), t = C.match(MhA);
    if (B !== null) {
      let i = B[1];
      u.hasOwnProperty(i) ? e.push({ name: i, children: [] }) : console.warn(`Trans: missed to pass in prop ${i} for interpolating ${A}`);
    } else if (g !== null) if (g[1] === e[e.length - 1].name) {
      let i = e.pop(), I = kA.createElement(kA.Fragment, {}, ...i.children), o = u[i.name];
      typeof o == "function" && e[e.length - 1].children.push(o(I));
    } else console.warn(`Trans: unexpected end tag ${C} for interpolating ${A}`);
    else if (t !== null) {
      let i = t[1];
      u.hasOwnProperty(i) ? e[e.length - 1].children.push(u[i]) : console.warn(`Trans: key ${i} not in props for interpolating ${A}`);
    } else e[e.length - 1].children.push(C);
  }), e.length !== 1 && console.warn(`Trans: stack not empty for interpolating ${A}`), e[0].children;
}, KhA = ({ i18nKey: A, children: u, ...e }) => {
  let { t: C } = Fe();
  return kA.createElement(kA.Fragment, {}, ...HhA(C(A), e));
}, OB = KhA, JhA = ({ label: A, onClick: u, className: e, children: C, actionType: B, type: g = "button", isLoading: t, ...i }) => {
  let I = B ? `Dialog__action-button--${B}` : "";
  return r.jsxs("button", { className: NA("Dialog__action-button", I, e), type: g, "aria-label": A, onClick: u, ...i, children: [C && r.jsx("div", { style: t ? { visibility: "hidden" } : {}, children: C }), r.jsx("div", { style: t ? { visibility: "hidden" } : {}, children: A }), t && r.jsx("div", { style: { position: "absolute", inset: 0 }, children: r.jsx($g, {}) })] });
}, DI = JhA, ZhA = (A) => {
  let { onConfirm: u, onCancel: e, children: C, confirmText: B = S("buttons.confirm"), cancelText: g = S("buttons.cancel"), className: t = "", ...i } = A, I = Z0(), o = K4(v9), { container: E } = ag();
  return r.jsxs(mB, { onCloseRequest: e, size: "small", ...i, className: `confirm-dialog ${t}`, children: [C, r.jsxs("div", { className: "confirm-dialog-buttons", children: [r.jsx(DI, { label: g, onClick: () => {
    I({ openMenu: null }), o(!1), O0.flushSync(() => {
      e();
    }), E?.focus();
  } }), r.jsx(DI, { label: B, onClick: () => {
    I({ openMenu: null }), o(!1), O0.flushSync(() => {
      u();
    }), E?.focus();
  }, actionType: "danger" })] })] });
}, If = ZhA, pE = class {
  static has(A) {
    try {
      return !!window.localStorage.getItem(A);
    } catch (u) {
      return console.warn(`localStorage.getItem error: ${u.message}`), !1;
    }
  }
  static get(A) {
    try {
      let u = window.localStorage.getItem(A);
      return u ? JSON.parse(u) : null;
    } catch (u) {
      return console.warn(`localStorage.getItem error: ${u.message}`), null;
    }
  }
};
J(pE, "set", (A, u) => {
  try {
    return window.localStorage.setItem(A, JSON.stringify(u)), !0;
  } catch (e) {
    return console.warn(`localStorage.setItem error: ${e.message}`), !1;
  }
}), J(pE, "delete", (A) => {
  try {
    window.localStorage.removeItem(A);
  } catch (u) {
    console.warn(`localStorage.removeItem error: ${u.message}`);
  }
});
var qhA = async (A) => {
  let u = Math.round(8), e = Math.max(Math.round(128 / 64), 2), C = naA(A, 6), B = document.createElement("canvas");
  B.width = C[0].length * 128 + (C[0].length + 1) * (u * 2) - u * 2, B.height = C.length * 128 + (C.length + 1) * (u * 2) - u * 2;
  let g = B.getContext("2d");
  g.fillStyle = X0.white, g.fillRect(0, 0, B.width, B.height);
  for (let [t, i] of A.entries()) {
    let I = await P2({ elements: i.elements, files: null, maxWidthOrHeight: 128 }), { width: o, height: E } = I, Q = Math.floor(t / 6) * (128 + u * 2), s = t % 6 * (128 + u * 2);
    g.drawImage(I, s + (128 - o) / 2 + u, Q + (128 - E) / 2 + u), g.lineWidth = e, g.strokeStyle = X0.gray[4], g.strokeRect(s + u / 2, Q + u / 2, 128 + u, 128 + u);
  }
  return await r1(new File([await An(B)], "preview", { type: zA.png }), { outputType: zA.jpg, maxWidthOrHeight: 5e3 });
}, WhA = ({ libItem: A, appState: u, index: e, onChange: C, onRemove: B }) => {
  let g = x.useRef(null), t = x.useRef(null);
  return x.useEffect(() => {
    let i = g.current;
    i && (async () => {
      let I = await Yy({ elements: A.elements, appState: { ...u, viewBackgroundColor: X0.white, exportBackground: !0 }, files: null, skipInliningFonts: !0 });
      i.innerHTML = I.outerHTML;
    })();
  }, [A.elements, u]), r.jsxs("div", { className: "single-library-item", children: [A.status === "published" && r.jsx("span", { className: "single-library-item-status", children: S("labels.statusPublished") }), r.jsx("div", { ref: g, className: "single-library-item__svg" }), r.jsx(cu, { "aria-label": S("buttons.remove"), type: "button", icon: yI, className: "single-library-item--remove", onClick: B.bind(null, A.id), title: S("buttons.remove") }), r.jsxs("div", { style: { display: "flex", margin: "0.8rem 0", width: "100%", fontSize: "14px", fontWeight: 500, flexDirection: "column" }, children: [r.jsxs("label", { style: { display: "flex", justifyContent: "space-between", flexDirection: "column" }, children: [r.jsxs("div", { style: { padding: "0.5em 0" }, children: [r.jsx("span", { style: { fontWeight: 500, color: X0.gray[6] }, children: S("publishDialog.itemName") }), r.jsx("span", { "aria-hidden": "true", className: "required", children: "*" })] }), r.jsx("input", { type: "text", ref: t, style: { width: "80%", padding: "0.2rem" }, defaultValue: A.name, placeholder: "Item name", onChange: (i) => {
    C(i.target.value, e);
  } })] }), r.jsx("span", { className: "error", children: A.error })] })] });
}, jhA = ({ onClose: A, libraryItems: u, appState: e, onSuccess: C, onError: B, updateItemsInStorage: g, onRemove: t }) => {
  let [i, I] = x.useState({ authorName: "", githubHandle: "", name: "", description: "", twitterHandle: "", website: "" }), [o, E] = x.useState(!1);
  x.useEffect(() => {
    let p = pE.get(rQ.PUBLISH_LIBRARY);
    p && I(p);
  }, []);
  let [Q, s] = x.useState(u.slice());
  x.useEffect(() => {
    s(u.slice());
  }, [u]);
  let l = (p) => {
    I({ ...i, [p.target.name]: p.target.value });
  }, c = async (p) => {
    p.preventDefault(), E(!0);
    let k = [], b = !1;
    if (Q.forEach((K) => {
      let q = "";
      K.name || (q = S("publishDialog.errors.required"), b = !0), k.push({ ...K, error: q });
    }), b) {
      s(k), E(!1);
      return;
    }
    let f = await qhA(Q), L = { type: LC.excalidrawLibrary, version: i4.excalidrawLibrary, source: A2, libraryItems: Q }, N = JSON.stringify(L, null, 2), M = new Blob([N], { type: "application/json" }), v = new FormData();
    v.append("excalidrawLib", M), v.append("previewImage", f), v.append("previewImageType", f.type), v.append("title", i.name), v.append("authorName", i.authorName), v.append("githubHandle", i.githubHandle), v.append("name", i.name), v.append("description", i.description), v.append("twitterHandle", i.twitterHandle), v.append("website", i.website), fetch(`${tu.VITE_APP_LIBRARY_BACKEND}/submit`, { method: "post", body: v }).then((K) => K.ok ? K.json().then(({ url: q }) => {
      pE.delete(rQ.PUBLISH_LIBRARY), C({ url: q, authorName: i.authorName, items: Q });
    }) : K.json().catch(() => {
      throw new Error(K.statusText || "something went wrong");
    }).then((q) => {
      throw new Error(q.message || K.statusText || "something went wrong");
    }), (K) => {
      console.error(K), B(K), E(!1);
    }).catch((K) => {
      console.error(K), B(K), E(!1);
    });
  }, D = () => {
    let p = [];
    return Q.forEach((k, b) => {
      p.push(r.jsx("div", { className: "single-library-item-wrapper", children: r.jsx(WhA, { libItem: k, appState: e, index: b, onChange: (f, L) => {
        let N = Q.slice();
        N[L].name = f, s(N);
      }, onRemove: t }) }, b));
    }), r.jsx("div", { className: "selected-library-items", children: p });
  }, h = x.useCallback(() => {
    g(Q), pE.set(rQ.PUBLISH_LIBRARY, i), A();
  }, [Q, A, g, i]), F = !!u.length, m = u.some((p) => p.status === "published");
  return r.jsx(mB, { onCloseRequest: h, title: S("publishDialog.title"), className: "publish-library", children: F ? r.jsxs("form", { onSubmit: c, children: [r.jsx("div", { className: "publish-library-note", children: r.jsx(OB, { i18nKey: "publishDialog.noteDescription", link: (p) => r.jsx("a", { href: "https://libraries.excalidraw.com", target: "_blank", rel: "noopener noreferrer", children: p }) }) }), r.jsx("span", { className: "publish-library-note", children: r.jsx(OB, { i18nKey: "publishDialog.noteGuidelines", link: (p) => r.jsx("a", { href: "https://github.com/excalidraw/excalidraw-libraries#guidelines", target: "_blank", rel: "noopener noreferrer", children: p }) }) }), r.jsx("div", { className: "publish-library-note", children: S("publishDialog.noteItems") }), m && r.jsx("span", { className: "publish-library-note publish-library-warning", children: S("publishDialog.republishWarning") }), D(), r.jsxs("div", { className: "publish-library__fields", children: [r.jsxs("label", { children: [r.jsxs("div", { children: [r.jsx("span", { children: S("publishDialog.libraryName") }), r.jsx("span", { "aria-hidden": "true", className: "required", children: "*" })] }), r.jsx("input", { type: "text", name: "name", required: !0, value: i.name, onChange: l, placeholder: S("publishDialog.placeholder.libraryName") })] }), r.jsxs("label", { style: { alignItems: "flex-start" }, children: [r.jsxs("div", { children: [r.jsx("span", { children: S("publishDialog.libraryDesc") }), r.jsx("span", { "aria-hidden": "true", className: "required", children: "*" })] }), r.jsx("textarea", { name: "description", rows: 4, required: !0, value: i.description, onChange: l, placeholder: S("publishDialog.placeholder.libraryDesc") })] }), r.jsxs("label", { children: [r.jsxs("div", { children: [r.jsx("span", { children: S("publishDialog.authorName") }), r.jsx("span", { "aria-hidden": "true", className: "required", children: "*" })] }), r.jsx("input", { type: "text", name: "authorName", required: !0, value: i.authorName, onChange: l, placeholder: S("publishDialog.placeholder.authorName") })] }), r.jsxs("label", { children: [r.jsx("span", { children: S("publishDialog.githubUsername") }), r.jsx("input", { type: "text", name: "githubHandle", value: i.githubHandle, onChange: l, placeholder: S("publishDialog.placeholder.githubHandle") })] }), r.jsxs("label", { children: [r.jsx("span", { children: S("publishDialog.twitterUsername") }), r.jsx("input", { type: "text", name: "twitterHandle", value: i.twitterHandle, onChange: l, placeholder: S("publishDialog.placeholder.twitterHandle") })] }), r.jsxs("label", { children: [r.jsx("span", { children: S("publishDialog.website") }), r.jsx("input", { type: "text", name: "website", pattern: "https?://.+", title: S("publishDialog.errors.website"), value: i.website, onChange: l, placeholder: S("publishDialog.placeholder.website") })] }), r.jsx("span", { className: "publish-library-note", children: r.jsx(OB, { i18nKey: "publishDialog.noteLicense", link: (p) => r.jsx("a", { href: "https://github.com/excalidraw/excalidraw-libraries/blob/main/LICENSE", target: "_blank", rel: "noopener noreferrer", children: p }) }) })] }), r.jsxs("div", { className: "publish-library__buttons", children: [r.jsx(DI, { label: S("buttons.cancel"), onClick: h, "data-testid": "cancel-clear-canvas-button" }), r.jsx(DI, { type: "submit", label: S("buttons.submit"), actionType: "primary", isLoading: o })] })] }) : r.jsx("p", { style: { padding: "1em", textAlign: "center", fontWeight: 500 }, children: S("publishDialog.atleastOneLibItem") }) });
}, ThA = jhA, of = ({ className: A = "", children: u, onToggle: e, title: C, ...B }) => {
  let g = J0(), t = NA(`dropdown-menu-button ${A}`, "zen-mode-transition", { "dropdown-menu-button--mobile": g.editor.isMobile }).trim();
  return r.jsx("button", { "data-prevent-outside-click": !0, className: t, onClick: e, type: "button", "data-testid": "dropdown-menu-button", title: C, ...B, children: u });
}, zhA = of;
of.displayName = "DropdownMenuTrigger";
var Qf = () => r.jsx("div", { style: { height: "1px", backgroundColor: "var(--default-border-color)", margin: ".5rem 0" } }), PhA = Qf;
Qf.displayName = "DropdownMenuSeparator";
var nf = ({ children: A, onClickOutside: u, className: e = "", onSelect: C, style: B }) => {
  let g = J0(), t = x.useRef(null), i = Z4({ onClickOutside: u });
  f9(t, () => {
    i.onClickOutside?.();
  }), x.useEffect(() => {
    let o = (Q) => {
      Q.key === Z.ESCAPE && (Q.stopImmediatePropagation(), i.onClickOutside?.());
    }, E = { capture: !0 };
    return document.addEventListener("keydown", o, E), () => {
      document.removeEventListener("keydown", o, E);
    };
  }, [i]);
  let I = NA(`dropdown-menu ${e}`, { "dropdown-menu--mobile": g.editor.isMobile }).trim();
  return r.jsx(KG.Provider, { value: { onSelect: C }, children: r.jsx("div", { ref: t, className: I, style: B, "data-testid": "dropdown-menu", children: g.editor.isMobile ? r.jsx(GC.Col, { className: "dropdown-menu-container", children: A }) : r.jsx(cB, { className: "dropdown-menu-container", padding: 2, style: { zIndex: 2 }, children: A }) }) });
};
nf.displayName = "DropdownMenuContent";
var OhA = nf, rf = ({ icon: A, shortcut: u, href: e, children: C, onSelect: B, className: g = "", selected: t, rel: i = "noreferrer", ...I }) => {
  let o = ZG(I.onClick, B);
  return r.jsx("a", { ...I, href: e, target: "_blank", rel: "noreferrer", className: JG(g, t), title: I.title ?? I["aria-label"], onClick: o, children: r.jsx(qG, { icon: A, shortcut: u, children: C }) });
}, Xs = rf;
rf.displayName = "DropdownMenuItemLink";
var VhA = ({ children: A, className: u = "", selected: e, ...C }) => r.jsx("div", { ...C, className: `dropdown-menu-item-base dropdown-menu-item-custom ${u} ${e ? "dropdown-menu-item--selected" : ""}`.trim(), children: A }), XhA = VhA, _hA = (A) => kA.Children.toArray(A).find((e) => kA.isValidElement(e) && typeof e.type != "string" && e?.type.displayName && e.type.displayName === "DropdownMenuTrigger") || null, $hA = (A) => kA.Children.toArray(A).find((e) => kA.isValidElement(e) && typeof e.type != "string" && e?.type.displayName && e.type.displayName === "DropdownMenuContent") || null, Bt = ({ children: A, open: u }) => {
  let e = _hA(A), C = $hA(A);
  return r.jsxs(r.Fragment, { children: [e, u && C] });
};
Bt.Trigger = zhA;
Bt.Content = OhA;
Bt.Item = vC;
Bt.ItemLink = Xs;
Bt.ItemCustom = XhA;
Bt.Group = L1;
Bt.Separator = PhA;
var u0 = Bt;
Bt.displayName = "DropdownMenu";
var AwA = (A, u) => A.filter((e) => u.includes(e.id)), uwA = ({ setAppState: A, selectedItems: u, library: e, onRemoveFromLibrary: C, resetLibrary: B, onSelectItems: g, appState: t, className: i }) => {
  let [I] = c0(Cn), [o, E] = c0(v9), Q = () => {
    let v = u.length ? S("alerts.removeItemsFromsLibrary", { count: u.length }) : S("alerts.resetLibrary"), K = u.length ? S("confirmDialog.removeItemsFromLib") : S("confirmDialog.resetLibrary");
    return r.jsx(If, { onConfirm: () => {
      u.length ? C() : B(), l(!1);
    }, onCancel: () => {
      l(!1);
    }, title: K, children: r.jsx("p", { children: v }) });
  }, [s, l] = x.useState(!1), c = !!u.length, D = c ? I.libraryItems.filter((v) => u.includes(v.id)) : I.libraryItems, h = S(c ? "buttons.remove" : "buttons.resetLibrary"), [F, m] = x.useState(!1), [p, k] = x.useState(null), b = x.useCallback(() => r.jsxs(mB, { onCloseRequest: () => k(null), title: S("publishSuccessDialog.title"), className: "publish-library-success", size: "small", children: [r.jsx("p", { children: r.jsx(OB, { i18nKey: "publishSuccessDialog.content", authorName: p.authorName, link: (v) => r.jsx("a", { href: p?.url, target: "_blank", rel: "noopener noreferrer", children: v }) }) }), r.jsx(cu, { type: "button", title: S("buttons.close"), "aria-label": S("buttons.close"), label: S("buttons.close"), onClick: () => k(null), "data-testid": "publish-library-success-close", className: "publish-library-success-close" })] }), [k, p]), f = (v, K) => {
    m(!1), k({ url: v.url, authorName: v.authorName });
    let q = K.slice();
    q.forEach((j) => {
      u.includes(j.id) && (j.status = "published");
    }), e.setLibrary(q);
  }, L = async () => {
    try {
      await e.updateLibrary({ libraryItems: ny({ description: "Excalidraw library files" }), merge: !0, openLibraryMenu: !0 });
    } catch (v) {
      if (v?.name === "AbortError") {
        console.warn(v);
        return;
      }
      A({ errorMessage: S("errors.importLibraryError") });
    }
  }, N = async () => {
    let v = c ? D : await e.getLatestLibrary();
    H3A(v).catch(b8).catch((K) => {
      A({ errorMessage: K.message });
    });
  }, M = () => r.jsxs(u0, { open: o, children: [r.jsx(u0.Trigger, { onToggle: () => E(!o), children: OaA }), r.jsxs(u0.Content, { onClickOutside: () => E(!1), onSelect: () => E(!1), className: "library-menu", children: [!c && r.jsx(u0.Item, { onSelect: L, icon: s2, "data-testid": "lib-dropdown--load", children: S("buttons.load") }), !!D.length && r.jsx(u0.Item, { onSelect: N, icon: Q4, "data-testid": "lib-dropdown--export", children: S("buttons.export") }), !!D.length && r.jsx(u0.Item, { onSelect: () => l(!0), icon: xE, children: h }), c && r.jsx(u0.Item, { icon: goA, onSelect: () => m(!0), "data-testid": "lib-dropdown--remove", children: S("buttons.publishLibrary") })] })] });
  return r.jsxs("div", { className: NA("library-menu-dropdown-container", i), children: [M(), u.length > 0 && r.jsx("div", { className: "library-actions-counter", children: u.length }), s && Q(), F && r.jsx(ThA, { onClose: () => m(!1), libraryItems: AwA(I.libraryItems, u), appState: t, onSuccess: (v) => f(v, I.libraryItems), onError: (v) => window.alert(v), updateItemsInStorage: () => e.setLibrary(I.libraryItems), onRemove: (v) => g(u.filter((K) => K !== v)) }), p && b()] });
}, hm = ({ selectedItems: A, onSelectItems: u, className: e }) => {
  let { library: C } = Eg(), { clearLibraryCache: B, deleteItemsFromLibraryCache: g } = Bf(), t = xe(), i = Z0(), [I] = c0(Cn), o = async (E) => {
    let Q = E.filter((s) => !A.includes(s.id));
    C.setLibrary(Q).catch(() => {
      i({ errorMessage: S("alerts.errorRemovingFromLibrary") });
    }), g(A), u([]);
  };
  return r.jsx(uwA, { appState: t, setAppState: i, selectedItems: A, onSelectItems: u, library: C, onRemoveFromLibrary: () => o(I.libraryItems), resetLibrary: () => {
    C.resetLibrary(), B();
  }, className: e });
}, ewA = x.memo(({ id: A, elements: u, isPending: e, onClick: C, selected: B, onToggle: g, onDrag: t, svgCache: i }) => {
  let I = x.useRef(null), o = phA(A, u, i);
  x.useEffect(() => {
    let c = I.current;
    if (c) return o && (c.innerHTML = o.outerHTML), () => {
      c.innerHTML = "";
    };
  }, [o]);
  let [E, Q] = x.useState(!1), s = J0().editor.isMobile, l = e && r.jsx("div", { className: "library-unit__adder", children: PaA });
  return r.jsxs("div", { className: NA("library-unit", { "library-unit__active": u, "library-unit--hover": u && E, "library-unit--selected": B, "library-unit--skeleton": !o }), onMouseEnter: () => Q(!0), onMouseLeave: () => Q(!1), children: [r.jsx("div", { className: NA("library-unit__dragger", { "library-unit__pulse": !!e }), ref: I, draggable: !!u, onClick: u || e ? (c) => {
    A && c.shiftKey ? g(A, c) : C(A);
  } : void 0, onDragStart: (c) => {
    if (!A) {
      c.preventDefault();
      return;
    }
    Q(!1), t(A, c);
  } }), l, A && u && (E || s || B) && r.jsx(R9, { checked: B, onChange: (c, D) => g(A, D), className: "library-unit__checkbox" })] });
}), CwA = () => r.jsx("div", { className: "library-unit library-unit--skeleton" });
function BwA() {
  return [!1, x.useCallback((A) => A(), [])];
}
var gwA = kA.useTransition || BwA, wm = ({ children: A }) => r.jsx("div", { className: "library-menu-items-container__grid", children: A }), ED = x.memo(({ items: A, onItemSelectToggle: u, onItemDrag: e, isItemSelected: C, onClick: B, svgCache: g, itemsRenderedPerBatch: t }) => {
  let [, i] = gwA(), [I, o] = x.useState(0);
  return x.useEffect(() => {
    I < A.length && i(() => {
      o(I + t);
    });
  }, [I, A.length, i, t]), r.jsx(r.Fragment, { children: A.map((E, Q) => Q < I ? r.jsx(ewA, { elements: E?.elements, isPending: !E?.id && !!E?.elements, onClick: B, svgCache: g, id: E?.id, selected: C(E.id), onToggle: u, onDrag: e }, E?.id ?? Q) : r.jsx(CwA, {}, Q)) });
}), twA = $0(0), iwA = (A) => {
  let [u, e] = c0(twA);
  return x.useEffect(() => {
    let { current: C } = A;
    if (!C) return;
    let B = In(() => {
      let { scrollTop: g } = C;
      e(g);
    }, 200);
    return C.addEventListener("scroll", B), () => {
      B.cancel(), C.removeEventListener("scroll", B);
    };
  }, [A, e]), u;
}, EwA = 17, awA = 64;
function IwA({ isLoading: A, libraryItems: u, onAddToLibrary: e, onInsertLibraryItems: C, pendingElements: B, theme: g, id: t, libraryReturnUrl: i, onSelectItems: I, selectedItems: o }) {
  let E = x.useRef(null), Q = iwA(E);
  x.useEffect(() => {
    Q > 0 && E.current?.scrollTo(0, Q);
  }, []);
  let { svgCache: s } = Bf(), l = x.useMemo(() => u.filter((v) => v.status !== "published"), [u]), c = x.useMemo(() => u.filter((v) => v.status === "published"), [u]), D = !u.length && !B.length, h = !B.length && !l.length && !c.length, [F, m] = x.useState(null), p = x.useCallback((v, K) => {
    let q = !o.includes(v), j = [...l, ...c];
    if (q) {
      if (K.shiftKey && F) {
        let uA = j.findIndex((P) => P.id === F), O = j.findIndex((P) => P.id === v);
        if (uA === -1 || O === -1) {
          I([...o, v]);
          return;
        }
        let $ = PA(o), X = j.reduce((P, _, CA) => ((CA >= uA && CA <= O || $.has(_.id)) && P.push(_.id), P), []);
        I(X);
      } else I([...o, v]);
      m(v);
    } else m(null), I(o.filter((uA) => uA !== v));
  }, [F, I, c, o, l]), k = x.useCallback((v) => {
    let K;
    return o.includes(v) ? K = u.filter((q) => o.includes(q.id)) : K = u.filter((q) => q.id === v), K.map((q) => ({ ...q, elements: ay(q.elements, { randomizeSeed: !0 }) }));
  }, [u, o]), b = x.useCallback((v, K) => {
    K.dataTransfer.setData(zA.excalidrawlib, ly(k(v)));
  }, [k]), f = x.useCallback((v) => v ? o.includes(v) : !1, [o]), L = x.useCallback(() => {
    e(B);
  }, [B, e]), N = x.useCallback((v) => {
    v && C(k(v));
  }, [k, C]), M = s.size >= u.length ? awA : EwA;
  return r.jsxs("div", { className: "library-menu-items-container", style: B.length || l.length || c.length ? { justifyContent: "flex-start" } : { borderBottom: 0 }, children: [!h && r.jsx(hm, { selectedItems: o, onSelectItems: I, className: "library-menu-dropdown-container--in-heading" }), r.jsxs(GC.Col, { className: "library-menu-items-container__items", align: "start", gap: 1, style: { flex: c.length > 0 ? 1 : "0 1 auto", marginBottom: 0 }, ref: E, children: [r.jsxs(r.Fragment, { children: [!h && r.jsx("div", { className: "library-menu-items-container__header", children: S("labels.personalLib") }), A && r.jsx("div", { style: { position: "absolute", top: "var(--container-padding-y)", right: "var(--container-padding-x)", transform: "translateY(50%)" }, children: r.jsx($g, {}) }), !B.length && !l.length ? r.jsxs("div", { className: "library-menu-items__no-items", children: [r.jsx("div", { className: "library-menu-items__no-items__label", children: S("library.noItems") }), r.jsx("div", { className: "library-menu-items__no-items__hint", children: c.length > 0 ? S("library.hint_emptyPrivateLibrary") : S("library.hint_emptyLibrary") })] }) : r.jsxs(wm, { children: [B.length > 0 && r.jsx(ED, { itemsRenderedPerBatch: M, items: [{ id: null, elements: B }], onItemSelectToggle: p, onItemDrag: b, onClick: L, isItemSelected: f, svgCache: s }), r.jsx(ED, { itemsRenderedPerBatch: M, items: l, onItemSelectToggle: p, onItemDrag: b, onClick: N, isItemSelected: f, svgCache: s })] })] }), r.jsxs(r.Fragment, { children: [(c.length > 0 || B.length > 0 || l.length > 0) && r.jsx("div", { className: "library-menu-items-container__header library-menu-items-container__header--excal", children: S("labels.excalidrawLib") }), c.length > 0 ? r.jsx(wm, { children: r.jsx(ED, { itemsRenderedPerBatch: M, items: c, onItemSelectToggle: p, onItemDrag: b, onClick: N, isItemSelected: f, svgCache: s }) }) : l.length > 0 ? r.jsx("div", { style: { margin: "1rem 0", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", width: "100%", fontSize: ".9rem" }, children: S("library.noItems") }) : null] }), D && r.jsx(af, { style: { padding: "16px 0", width: "100%" }, id: t, libraryReturnUrl: i, theme: g, children: r.jsx(hm, { selectedItems: o, onSelectItems: I }) })] })] });
}
var v9 = $0(!1), Fm = ({ children: A }) => r.jsx("div", { className: "layer-ui__library", children: A }), owA = x.memo(({ onInsertLibraryItems: A, pendingElements: u, onAddToLibrary: e, setAppState: C, libraryReturnUrl: B, library: g, id: t, theme: i, selectedItems: I, onSelectItems: o }) => {
  let [E] = c0(Cn), Q = x.useCallback((c) => {
    (async (D, h) => {
      zu("element", "addToLibrary", "ui");
      for (let m of c8) if (D.some((p) => p.type === m)) return C({ errorMessage: S(`errors.libraryElementTypeError.${m}`) });
      let F = [{ status: "unpublished", elements: D, id: YC(), created: Date.now() }, ...h];
      e(), g.setLibrary(F).catch(() => {
        C({ errorMessage: S("alerts.errorAddingToLibrary") });
      });
    })(c, E.libraryItems);
  }, [e, g, C, E.libraryItems]), s = x.useMemo(() => E.libraryItems, [E]);
  if (E.status === "loading" && !E.isInitialized) return r.jsx(Fm, { children: r.jsx("div", { className: "layer-ui__library-message", children: r.jsxs("div", { children: [r.jsx($g, { size: "2em" }), r.jsx("span", { children: S("labels.libraryLoadingMessage") })] }) }) });
  let l = E.libraryItems.length > 0 || u.length > 0;
  return r.jsxs(Fm, { children: [r.jsx(IwA, { isLoading: E.status === "loading", libraryItems: s, onAddToLibrary: Q, onInsertLibraryItems: A, pendingElements: u, id: t, libraryReturnUrl: B, theme: i, onSelectItems: o, selectedItems: I }), l && r.jsx(af, { className: "library-menu-control-buttons--at-bottom", style: { padding: "16px 12px 0 12px" }, id: t, libraryReturnUrl: B, theme: i })] });
}), aD = (A, u) => ({ elements: A, pending: iu(A, { selectedElementIds: u }, { includeBoundTextElement: !0, includeElementsInFrames: !0 }), selectedElementIds: u }), QwA = (A, u) => {
  let e = V4(), [C, B] = x.useState(() => aD(e, A.selectedElementIds)), g = x.useRef(/* @__PURE__ */ new Map());
  return x.useEffect(() => {
    for (let t of C.pending) g.current.set(t.id, t.version);
  }, [C.pending]), x.useEffect(() => {
    u.state.cursorButton === "up" && u.state.activeTool.type === "selection" && B((t) => {
      if (!Ee(t.selectedElementIds, A.selectedElementIds)) return g.current.clear(), aD(e, A.selectedElementIds);
      let i = u.scene.getNonDeletedElementsMap();
      for (let I of Object.keys(A.selectedElementIds)) {
        let o = i.get(I)?.version;
        if (o && o !== g.current.get(I)) return aD(e, A.selectedElementIds);
      }
      return t;
    });
  }, [u, u.state.cursorButton, u.state.activeTool.type, A.selectedElementIds, e]), C.pending;
}, nwA = x.memo(() => {
  let A = Eg(), { onInsertElements: u } = A, e = yn(), C = xe(), B = Z0(), [g, t] = x.useState([]), i = x.useMemo(() => A.library, [A.library]), I = QwA(C, A), o = x.useCallback((Q) => {
    u(Ef(Q));
  }, [u]), E = x.useCallback(() => {
    B({ selectedElementIds: {}, selectedGroupIds: {}, activeEmbeddable: null });
  }, [B]);
  return r.jsx(owA, { pendingElements: I, onInsertLibraryItems: o, onAddToLibrary: E, setAppState: B, libraryReturnUrl: e.libraryReturnUrl, library: i, id: A.id, theme: C.theme, selectedItems: g, onSelectItems: t });
});
function rwA(A) {
  if (A && typeof A == "number") return A;
  switch (A) {
    case "small":
      return 550;
    case "wide":
      return 1024;
    case "regular":
    default:
      return 800;
  }
}
var mB = (A) => {
  let [u, e] = whA(), [C] = x.useState(document.activeElement), { id: B } = ag(), g = J0().viewport.isMobile;
  x.useEffect(() => {
    if (!u) return;
    let o = qD(u);
    setTimeout(() => {
      o.length > 0 && A.autofocus !== !1 && (o[1] || o[0]).focus();
    });
    let E = (Q) => {
      if (Q.key === Z.TAB) {
        let s = qD(u), { activeElement: l } = document, c = s.findIndex((D) => D === l);
        c === 0 && Q.shiftKey ? (s[s.length - 1].focus(), Q.preventDefault()) : c === s.length - 1 && !Q.shiftKey && (s[0].focus(), Q.preventDefault());
      }
    };
    return u.addEventListener("keydown", E), () => u.removeEventListener("keydown", E);
  }, [u, A.autofocus]);
  let t = Z0(), i = K4(v9), I = () => {
    t({ openMenu: null }), i(!1), C.focus(), A.onCloseRequest();
  };
  return r.jsx(FhA, { className: NA("Dialog", A.className, { "Dialog--fullscreen": g }), labelledBy: "dialog-title", maxWidth: rwA(A.size), onCloseRequest: I, closeOnClickOutside: A.closeOnClickOutside, children: r.jsxs(cB, { ref: e, children: [A.title && r.jsx("h2", { id: `${B}-dialog-title`, className: "Dialog__title", children: r.jsx("span", { className: "Dialog__titleContent", children: A.title }) }), g && r.jsx("button", { className: "Dialog__close", onClick: I, title: S("buttons.close"), "aria-label": S("buttons.close"), type: "button", children: yI }), r.jsx("div", { className: "Dialog__content", children: A.children })] }) });
}, hI = ({ type: A = "button", onSelect: u, selected: e, children: C, className: B = "", ...g }) => r.jsx("button", { onClick: a4(g.onClick, (t) => {
  u();
}), type: A, className: NA("excalidraw-button", B, { selected: e }), ...g, children: C }), H9 = x.forwardRef(({ onChange: A, label: u, fullWidth: e, placeholder: C, readonly: B, selectOnRender: g, onKeyDown: t, isRedacted: i = !1, icon: I, className: o, ...E }, Q) => {
  let s = x.useRef(null);
  x.useImperativeHandle(Q, () => s.current), x.useLayoutEffect(() => {
    g && (s.current?.focus(), s.current?.select());
  }, [g]);
  let [l, c] = x.useState(!1);
  return r.jsxs("div", { className: NA("ExcTextField", o, { "ExcTextField--fullWidth": e, "ExcTextField--hasIcon": !!I }), onClick: () => {
    s.current?.focus();
  }, children: [I, u && r.jsx("div", { className: "ExcTextField__label", children: u }), r.jsxs("div", { className: NA("ExcTextField__input", { "ExcTextField__input--readonly": B }), children: [r.jsx("input", { className: NA({ "is-redacted": "value" in E && E.value && i && !l }), readOnly: B, value: "value" in E ? E.value : void 0, defaultValue: "defaultValue" in E ? E.defaultValue : void 0, placeholder: C, ref: s, onChange: (D) => A?.(D.target.value), onKeyDown: t }), i && r.jsx(hI, { onSelect: () => c(!l), style: { border: 0, userSelect: "none" }, children: l ? noA : c2 })] })] });
}), swA = { toggleTheme: [QA("Shift+Alt+D")], saveScene: [QA("CtrlOrCmd+S")], loadScene: [QA("CtrlOrCmd+O")], clearCanvas: [QA("CtrlOrCmd+Delete")], imageExport: [QA("CtrlOrCmd+Shift+E")], commandPalette: [QA("CtrlOrCmd+/"), QA("CtrlOrCmd+Shift+P")], cut: [QA("CtrlOrCmd+X")], copy: [QA("CtrlOrCmd+C")], paste: [QA("CtrlOrCmd+V")], copyStyles: [QA("CtrlOrCmd+Alt+C")], pasteStyles: [QA("CtrlOrCmd+Alt+V")], selectAll: [QA("CtrlOrCmd+A")], deleteSelectedElements: [QA("Delete")], duplicateSelection: [QA("CtrlOrCmd+D"), QA(`Alt+${S("helpDialog.drag")}`)], sendBackward: [QA("CtrlOrCmd+[")], bringForward: [QA("CtrlOrCmd+]")], sendToBack: [QA(_B ? "CtrlOrCmd+Alt+[" : "CtrlOrCmd+Shift+[")], bringToFront: [QA(_B ? "CtrlOrCmd+Alt+]" : "CtrlOrCmd+Shift+]")], copyAsPng: [QA("Shift+Alt+C")], group: [QA("CtrlOrCmd+G")], ungroup: [QA("CtrlOrCmd+Shift+G")], gridMode: [QA("CtrlOrCmd+'")], zenMode: [QA("Alt+Z")], objectsSnapMode: [QA("Alt+S")], stats: [QA("Alt+/")], addToLibrary: [], flipHorizontal: [QA("Shift+H")], flipVertical: [QA("Shift+V")], viewMode: [QA("Alt+R")], hyperlink: [QA("CtrlOrCmd+K")], toggleElementLock: [QA("CtrlOrCmd+Shift+L")], resetZoom: [QA("CtrlOrCmd+0")], zoomOut: [QA("CtrlOrCmd+-")], zoomIn: [QA("CtrlOrCmd++")], zoomToFitSelection: [QA("Shift+3")], zoomToFit: [QA("Shift+1")], zoomToFitSelectionInViewport: [QA("Shift+2")], toggleEraserTool: [QA("E")], toggleHandTool: [QA("H")], setFrameAsActiveTool: [QA("F")], saveFileToDisk: [QA("CtrlOrCmd+S")], saveToActiveFile: [QA("CtrlOrCmd+S")], toggleShortcuts: [QA("?")], searchMenu: [QA("CtrlOrCmd+F")], wrapSelectionInFrame: [] }, De = (A, u = 0) => {
  let e = swA[A];
  return e && e.length > 0 ? e[u] || e[0] : "";
}, lwA = "\\u0300-\\u036f", cwA = "\\ufe20-\\ufe2f", dwA = "\\u20d0-\\u20ff", DwA = lwA + cwA + dwA, hwA = `[${DwA}]`, wwA = RegExp(hwA, "g"), FwA = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, pwA = { À: "A", Á: "A", Â: "A", Ã: "A", Ä: "A", Å: "A", à: "a", á: "a", â: "a", ã: "a", ä: "a", å: "a", Ç: "C", ç: "c", Ð: "D", ð: "d", È: "E", É: "E", Ê: "E", Ë: "E", è: "e", é: "e", ê: "e", ë: "e", Ì: "I", Í: "I", Î: "I", Ï: "I", ì: "i", í: "i", î: "i", ï: "i", Ñ: "N", ñ: "n", Ò: "O", Ó: "O", Ô: "O", Õ: "O", Ö: "O", Ø: "O", ò: "o", ó: "o", ô: "o", õ: "o", ö: "o", ø: "o", Ù: "U", Ú: "U", Û: "U", Ü: "U", ù: "u", ú: "u", û: "u", ü: "u", Ý: "Y", ý: "y", ÿ: "y", Æ: "E", æ: "e", Þ: "T", þ: "t", ß: "s", Ā: "A", Ă: "A", Ą: "A", ā: "a", ă: "a", ą: "a", Ć: "C", Ĉ: "C", Ċ: "C", Č: "C", ć: "c", ĉ: "c", ċ: "c", č: "c", Ď: "D", Đ: "D", ď: "d", đ: "d", Ē: "E", Ĕ: "E", Ė: "E", Ę: "E", Ě: "E", ē: "e", ĕ: "e", ė: "e", ę: "e", ě: "e", Ĝ: "G", Ğ: "G", Ġ: "G", Ģ: "G", ĝ: "g", ğ: "g", ġ: "g", ģ: "g", Ĥ: "H", Ħ: "H", ĥ: "h", ħ: "h", Ĩ: "I", Ī: "I", Ĭ: "I", Į: "I", İ: "I", ĩ: "i", ī: "i", ĭ: "i", į: "i", ı: "i", Ĵ: "J", ĵ: "j", Ķ: "K", ķ: "k", ĸ: "k", Ĺ: "L", Ļ: "L", Ľ: "L", Ŀ: "L", Ł: "L", ĺ: "l", ļ: "l", ľ: "l", ŀ: "l", ł: "l", Ń: "N", Ņ: "N", Ň: "N", Ŋ: "N", ń: "n", ņ: "n", ň: "n", ŋ: "n", Ō: "O", Ŏ: "O", Ő: "O", ō: "o", ŏ: "o", ő: "o", Ŕ: "R", Ŗ: "R", Ř: "R", ŕ: "r", ŗ: "r", ř: "r", Ś: "S", Ŝ: "S", Ş: "S", Š: "S", ś: "s", ŝ: "s", ş: "s", š: "s", Ţ: "T", Ť: "T", Ŧ: "T", ţ: "t", ť: "t", ŧ: "t", Ũ: "U", Ū: "U", Ŭ: "U", Ů: "U", Ű: "U", Ų: "U", ũ: "u", ū: "u", ŭ: "u", ů: "u", ű: "u", ų: "u", Ŵ: "W", ŵ: "w", Ŷ: "Y", ŷ: "y", Ÿ: "Y", Ź: "Z", Ż: "Z", Ž: "Z", ź: "z", ż: "z", ž: "z", Ĳ: "I", ĳ: "i", Œ: "E", œ: "e", ŉ: "n", ſ: "s" }, pm = (A) => A.replace(FwA, (u) => pwA[u] || u).replace(wwA, ""), sf = kA.createContext(null), sC = () => kA.useContext(sf), mwA = BU(), kwA = () => kA.useMemo(() => ({ MainMenuTunnel: MB(), WelcomeScreenMenuHintTunnel: MB(), WelcomeScreenToolbarHintTunnel: MB(), WelcomeScreenHelpHintTunnel: MB(), WelcomeScreenCenterTunnel: MB(), FooterCenterTunnel: MB(), DefaultSidebarTriggerTunnel: MB(), DefaultSidebarTabTriggersTunnel: MB(), OverwriteConfirmDialogTunnel: MB(), TTDDialogTriggerTunnel: MB(), tunnelsJotai: mwA }), []), lf = (A, u) => {
  let e = u[0]?.type || null;
  for (let C of u) if (C.type !== e) {
    e = null;
    break;
  }
  return $D(A.activeTool.type) && A.activeTool.type !== "image" && e !== "image" && e !== "frame" && e !== "magicframe" || u.some((C) => $D(C.type));
}, cf = (A, u) => aI(A.activeTool.type) || u.some((e) => aI(e.type)), df = ({ appState: A, elementsMap: u, renderAction: e, app: C }) => {
  let B = jy(u, A), g = !1;
  B.length === 2 && (MC(B[0]) || MC(B[1])) && (g = !0);
  let t = !!(A.editingTextElement || A.newElement), i = J0(), I = document.documentElement.getAttribute("dir") === "rtl", o = aI(A.activeTool.type) && !IB(A.currentItemBackgroundColor) || B.some((c) => aI(c.type) && !IB(c.backgroundColor)), E = B.length === 1 || g, Q = !A.editingLinearElement && B.length === 1 && $A(B[0]) && !xA(B[0]), s = !A.croppingElementId && B.length === 1 && bu(B[0]), l = !g && rC(A, C);
  return r.jsxs("div", { className: "panelColumn", children: [r.jsx("div", { children: lf(A, B) && e("changeStrokeColor") }), cf(A, B) && r.jsx("div", { children: e("changeBackgroundColor") }), o && e("changeFillStyle"), (VF(A.activeTool.type) || B.some((c) => VF(c.type))) && e("changeStrokeWidth"), (A.activeTool.type === "freedraw" || B.some((c) => c.type === "freedraw")) && e("changeStrokeShape"), (XF(A.activeTool.type) || B.some((c) => XF(c.type))) && r.jsxs(r.Fragment, { children: [e("changeStrokeStyle"), e("changeSloppiness")] }), (A1(A.activeTool.type) || B.some((c) => A1(c.type))) && r.jsx(r.Fragment, { children: e("changeRoundness") }), (_F(A.activeTool.type) || B.some((c) => _F(c.type))) && r.jsx(r.Fragment, { children: e("changeArrowType") }), (A.activeTool.type === "text" || B.some(UA)) && r.jsxs(r.Fragment, { children: [e("changeFontFamily"), e("changeFontSize"), (A.activeTool.type === "text" || i3A(B, u)) && e("changeTextAlign")] }), t3A(B, u) && e("changeVerticalAlign"), (pl(A.activeTool.type) || B.some((c) => pl(c.type))) && r.jsx(r.Fragment, { children: e("changeArrowhead") }), e("changeOpacity"), r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.layers") }), r.jsxs("div", { className: "buttonList", children: [e("sendToBack"), e("sendBackward"), e("bringForward"), e("bringToFront")] })] }), l && !g && r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.align") }), r.jsxs("div", { className: "buttonList", children: [I ? r.jsxs(r.Fragment, { children: [e("alignRight"), e("alignHorizontallyCentered"), e("alignLeft")] }) : r.jsxs(r.Fragment, { children: [e("alignLeft"), e("alignHorizontallyCentered"), e("alignRight")] }), B.length > 2 && e("distributeHorizontally"), r.jsx("div", { style: { flexBasis: "100%", height: 0 } }), r.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: ".5rem", marginTop: "-0.5rem" }, children: [e("alignTop"), e("alignVerticallyCentered"), e("alignBottom"), B.length > 2 && e("distributeVertically")] })] })] }), !t && B.length > 0 && r.jsxs("fieldset", { children: [r.jsx("legend", { children: S("labels.actions") }), r.jsxs("div", { className: "buttonList", children: [!i.editor.isMobile && e("duplicateSelection"), !i.editor.isMobile && e("deleteSelectedElements"), e("group"), e("ungroup"), E && e("hyperlink"), s && e("cropEditor"), Q && e("toggleLinearEditor")] })] })] });
}, Df = ({ activeTool: A, appState: u, app: e, UIOptions: C }) => {
  let [B, g] = x.useState(!1), t = A.type === "frame", i = A.type === "laser", I = A.type === "embeddable", { TTDDialogTriggerTunnel: o } = sC();
  return r.jsxs(r.Fragment, { children: [w2.map(({ value: E, icon: Q, key: s, numericKey: l, fillable: c }, D) => {
    if (C.tools?.[E] === !1) return null;
    let h = S(`toolBar.${E}`), F = s && cQ(typeof s == "string" ? s : s[0]), m = F ? `${F} ${S("helpDialog.or")} ${l}` : `${l}`;
    return r.jsx(cu, { className: NA("Shape", { fillable: c }), type: "radio", icon: Q, checked: A.type === E, name: "editor-current-shape", title: `${cQ(h)} — ${m}`, keyBindingLabel: l || F, "aria-label": cQ(h), "aria-keyshortcuts": m, "data-testid": `toolbar-${E}`, onPointerDown: ({ pointerType: p }) => {
      !u.penDetected && p === "pen" && e.togglePenMode(!0);
    }, onChange: ({ pointerType: p }) => {
      u.activeTool.type !== E && zu("toolbar", E, "ui"), E === "image" ? e.setActiveTool({ type: E, insertOnCanvasDirectly: p !== "mouse" }) : e.setActiveTool({ type: E });
    } }, E);
  }), r.jsx("div", { className: "App-toolbar__divider" }), r.jsxs(u0, { open: B, children: [r.jsx(u0.Trigger, { className: NA("App-toolbar__extra-tools-trigger", { "App-toolbar__extra-tools-trigger--selected": t || I || i && !e.props.isCollaborating }), onToggle: () => g(!B), title: S("toolBar.extraTools"), children: ooA }), r.jsxs(u0.Content, { onClickOutside: () => g(!1), onSelect: () => g(!1), className: "App-toolbar__extra-tools-dropdown", children: [r.jsx(u0.Item, { onSelect: () => e.setActiveTool({ type: "frame" }), icon: _8, shortcut: Z.F.toLocaleUpperCase(), "data-testid": "toolbar-frame", selected: t, children: S("toolBar.frame") }), r.jsx(u0.Item, { onSelect: () => e.setActiveTool({ type: "embeddable" }), icon: IIA, "data-testid": "toolbar-embeddable", selected: I, children: S("toolBar.embeddable") }), r.jsx(u0.Item, { onSelect: () => e.setActiveTool({ type: "laser" }), icon: Ak, "data-testid": "toolbar-laser", selected: i, shortcut: Z.K.toLocaleUpperCase(), children: S("toolBar.laser") }), r.jsx("div", { style: { margin: "6px 0", fontSize: 14, fontWeight: 600 }, children: "Generate" }), e.props.aiEnabled !== !1 && r.jsx(o.Out, {}), r.jsx(u0.Item, { onSelect: () => e.setOpenDialog({ name: "ttd", tab: "mermaid" }), icon: $8, "data-testid": "toolbar-embeddable", children: S("toolBar.mermaidToExcalidraw") }), e.props.aiEnabled !== !1 && e.plugins.diagramToCode && r.jsx(r.Fragment, { children: r.jsxs(u0.Item, { onSelect: () => e.onMagicframeToolSelect(), icon: uk, "data-testid": "toolbar-magicframe", children: [S("toolBar.magicframe"), r.jsx(u0.Item.Badge, { children: "AI" })] }) })] })] })] });
}, ywA = ({ renderAction: A, zoom: u }) => r.jsx(GC.Col, { gap: 1, className: CI.ZOOM_ACTIONS, children: r.jsxs(GC.Row, { align: "center", children: [A("zoomOut"), A("resetZoom"), A("zoomIn")] }) }), bwA = ({ renderAction: A, className: u }) => r.jsxs("div", { className: `undo-redo-buttons ${u}`, children: [r.jsx("div", { className: "undo-button-container", children: r.jsx(HE, { label: S("buttons.undo"), children: A("undo") }) }), r.jsx("div", { className: "redo-button-container", children: r.jsxs(HE, { label: S("buttons.redo"), children: [" ", A("redo")] }) })] }), UwA = ({ actionManager: A, showExitZenModeBtn: u }) => r.jsx("button", { type: "button", className: NA("disable-zen-mode", { "disable-zen-mode--visible": u }), onClick: () => A.executeAction(S1), children: S("buttons.exitZenMode") }), GwA = ({ renderAction: A, className: u }) => r.jsx("div", { className: `finalize-button ${u}`, children: A("finalize", { size: "small" }) }), mm = (A) => {
  let u = x.useRef({ userFn: A });
  return u.current.userFn = A, u.current.stableFn || (u.current.stableFn = (...e) => u.current.userFn(...e)), u.current.stableFn;
}, O4 = $0(null), fwA = () => {
  let [A, u] = c0(O4), e = $e();
  return A && A === "clearCanvas" ? r.jsx(If, { onConfirm: () => {
    e.executeAction(kQ), u(null);
  }, onCancel: () => u(null), title: S("clearCanvasDialog.title"), children: r.jsxs("p", { className: "clear-canvas__content", children: [" ", S("alerts.clearReset")] }) }) : null;
}, hf = {};
I7(hf, { toggleTheme: () => LwA });
var LwA = { ...Tl, category: "App", label: "Toggle theme", perform: ({ actionManager: A }) => {
  A.executeAction(Tl, "commandPalette");
} }, wf = pA({ name: "copyElementLink", label: "labels.copyElementLink", icon: l2, trackEvent: { category: "element" }, perform: async (A, u, e, C) => {
  let B = iu(A, u);
  try {
    if (window.location) {
      let g = my(B, u);
      return g ? (await hn(C.props.generateLinkForSelection ? C.props.generateLinkForSelection(g.id, g.type) : py(g.id, g.type)), { appState: { toast: { message: S("toast.elementLinkCopied"), closable: !0 } }, captureUpdate: aA.EVENTUALLY }) : { appState: u, elements: A, app: C, captureUpdate: aA.EVENTUALLY };
    }
  } catch (g) {
    console.error(g);
  }
  return { appState: u, elements: A, app: C, captureUpdate: aA.EVENTUALLY };
}, predicate: (A, u) => xl(iu(A, u)) }), xwA = pA({ name: "linkToElement", label: "labels.linkToElement", icon: gk, perform: (A, u, e, C) => {
  let B = iu(A, u);
  return B.length !== 1 || !xl(B) ? { elements: A, appState: u, app: C, captureUpdate: aA.EVENTUALLY } : { appState: { ...u, openDialog: { name: "elementLinkSelector", sourceElementId: iu(A, u)[0].id } }, captureUpdate: aA.IMMEDIATELY };
}, predicate: (A, u, e, C) => {
  let B = iu(A, u);
  return u.openDialog?.name !== "elementLinkSelector" && B.length === 1 && xl(B);
}, trackEvent: !1 }), SwA = $0(null), w0 = { app: "App", export: "Export", tools: "Tools", editor: "Editor", elements: "Elements", links: "Links" }, NwA = (A) => {
  switch (A) {
    case w0.app:
      return 1;
    case w0.export:
      return 2;
    case w0.editor:
      return 3;
    case w0.tools:
      return 4;
    case w0.elements:
      return 5;
    case w0.links:
      return 6;
    default:
      return 10;
  }
}, _s = ({ shortcut: A, className: u, children: e }) => {
  let C = A.replace("++", "+$").split("+");
  return r.jsxs("div", { className: NA("shortcut", u), children: [C.map((B, g) => r.jsx("div", { className: "shortcut-wrapper", children: r.jsx("div", { className: "shortcut-key", children: B === "$" ? "+" : B }) }, B)), r.jsx("div", { className: "shortcut-desc", children: e })] });
}, Ff = (A) => !A.altKey && A[Z.CTRL_OR_CMD] && (A.shiftKey && A.key.toLowerCase() === Z.P || A.key === Z.SLASH);
Object.assign((A) => {
  let u = xe(), e = Z0();
  return x.useEffect(() => {
    let C = (B) => {
      Ff(B) && (B.preventDefault(), B.stopPropagation(), e((g) => {
        let t = g.openDialog?.name === "commandPalette" ? null : { name: "commandPalette" };
        return t && zu("command_palette", "open", "shortcut"), { openDialog: t };
      }));
    };
    return window.addEventListener("keydown", C, { capture: !0 }), () => window.removeEventListener("keydown", C, { capture: !0 });
  }, [e]), u.openDialog?.name !== "commandPalette" ? null : r.jsx(RwA, { ...A });
}, { defaultItems: hf });
function RwA({ customCommandPaletteItems: A }) {
  let u = Eg(), e = xe(), C = Z0(), B = yn(), g = $e(), [t, i] = c0(SwA), [I, o] = x.useState(null), E = x.useRef(null), Q = Z4({ uiAppState: e, customCommandPaletteItems: A, appProps: B });
  x.useEffect(() => {
    let { uiAppState: f, customCommandPaletteItems: L, appProps: N } = Q, M = (j) => {
      let uA = "";
      return j.label && (typeof j.label == "function" ? uA = S(j.label(u.scene.getNonDeletedElements(), f, u)) : uA = S(j.label)), uA;
    }, v = (j) => typeof j.icon == "function" ? j.icon(f, u.scene.getNonDeletedElements()) : j.icon, K = [], q = (j, uA, O) => {
      let $ = { label: M(j), icon: v(j), category: uA, shortcut: De(j.name), keywords: j.keywords, predicate: j.predicate, viewMode: j.viewMode, perform: () => {
        g.executeAction(j, "commandPalette");
      } };
      return O ? O($, j) : $;
    };
    if (f && u.scene && g) {
      let j = [g.actions.group, g.actions.ungroup, g.actions.cut, g.actions.copy, g.actions.deleteSelectedElements, g.actions.wrapSelectionInFrame, g.actions.copyStyles, g.actions.pasteStyles, g.actions.bringToFront, g.actions.bringForward, g.actions.sendBackward, g.actions.sendToBack, g.actions.alignTop, g.actions.alignBottom, g.actions.alignLeft, g.actions.alignRight, g.actions.alignVerticallyCentered, g.actions.alignHorizontallyCentered, g.actions.duplicateSelection, g.actions.flipHorizontal, g.actions.flipVertical, g.actions.zoomToFitSelection, g.actions.zoomToFitSelectionInViewport, g.actions.increaseFontSize, g.actions.decreaseFontSize, g.actions.toggleLinearEditor, g.actions.cropEditor, ef, wf, xwA].map((_) => q(_, w0.elements, (CA, T) => ({ ...CA, predicate: T.predicate ? T.predicate : (gA, GA, fA, qA) => iu(gA, GA).length > 0 }))), uA = [g.actions.toggleHandTool, g.actions.setFrameAsActiveTool].map((_) => q(_, w0.tools)), O = [g.actions.undo, g.actions.redo, g.actions.zoomIn, g.actions.zoomOut, g.actions.resetZoom, g.actions.zoomToFit, g.actions.zenMode, g.actions.viewMode, g.actions.gridMode, g.actions.objectsSnapMode, g.actions.toggleShortcuts, g.actions.selectAll, g.actions.toggleElementLock, g.actions.unlockAllElements, g.actions.stats].map((_) => q(_, w0.editor)), $ = [g.actions.saveToActiveFile, g.actions.saveFileToDisk, g.actions.copyAsPng, g.actions.copyAsSvg].map((_) => q(_, w0.export));
      K = [...j, ...O, { label: M(kQ), icon: v(kQ), shortcut: De(kQ.name), category: w0.editor, keywords: ["delete", "destroy"], viewMode: !1, perform: () => {
        QB.set(O4, "clearCanvas");
      } }, { label: S("buttons.exportImage"), category: w0.export, icon: j8, shortcut: De("imageExport"), keywords: ["export", "image", "png", "jpeg", "svg", "clipboard", "picture"], perform: () => {
        C({ openDialog: { name: "imageExport" } });
      } }, ...$];
      let X = [{ label: S("toolBar.library"), category: w0.app, icon: Q2, viewMode: !1, perform: () => {
        f.openSidebar ? C({ openSidebar: null }) : C({ openSidebar: { name: rB.name, tab: rB.defaultTab } });
      } }, { label: S("search.title"), category: w0.app, icon: SE, viewMode: !0, perform: () => {
        g.executeAction(pf);
      } }, { label: S("labels.changeStroke"), keywords: ["color", "outline"], category: w0.elements, icon: bd, viewMode: !1, predicate: (_, CA) => {
        let T = iu(_, CA);
        return T.length > 0 && lf(CA, T);
      }, perform: () => {
        C((_) => ({ openMenu: _.openMenu === "shape" ? null : "shape", openPopup: "elementStroke" }));
      } }, { label: S("labels.changeBackground"), keywords: ["color", "fill"], icon: bd, category: w0.elements, viewMode: !1, predicate: (_, CA) => {
        let T = iu(_, CA);
        return T.length > 0 && cf(CA, T);
      }, perform: () => {
        C((_) => ({ openMenu: _.openMenu === "shape" ? null : "shape", openPopup: "elementBackground" }));
      } }, { label: S("labels.canvasBackground"), keywords: ["color"], icon: bd, category: w0.editor, viewMode: !1, perform: () => {
        C((_) => ({ openMenu: _.openMenu === "canvas" ? null : "canvas", openPopup: "canvasBackground" }));
      } }, ...w2.reduce((_, CA) => {
        let { value: T, icon: gA, key: GA, numericKey: fA } = CA;
        if (N.UIOptions.tools?.[T] === !1) return _;
        let qA = GA && cQ(typeof GA == "string" ? GA : GA[0]) || fA, JA = { label: S(`toolBar.${T}`), category: w0.tools, shortcut: qA, icon: gA, keywords: ["toolbar"], viewMode: !1, perform: ({ event: mA }) => {
          T === "image" ? u.setActiveTool({ type: T, insertOnCanvasDirectly: mA.type === "keydown" }) : u.setActiveTool({ type: T });
        } };
        return _.push(JA), _;
      }, []), ...uA, { label: S("toolBar.lock"), category: w0.tools, icon: f.activeTool.locked ? n2 : o4, shortcut: Z.Q.toLocaleUpperCase(), viewMode: !1, perform: () => {
        u.toggleLock();
      } }, { label: `${S("labels.textToDiagram")}...`, category: w0.tools, icon: roA, viewMode: !1, predicate: N.aiEnabled, perform: () => {
        C((_) => ({ ..._, openDialog: { name: "ttd", tab: "text-to-diagram" } }));
      } }, { label: `${S("toolBar.mermaidToExcalidraw")}...`, category: w0.tools, icon: $8, viewMode: !1, predicate: N.aiEnabled, perform: () => {
        C((_) => ({ ..._, openDialog: { name: "ttd", tab: "mermaid" } }));
      } }], P = [...K, ...X, ...L || []].map((_) => ({ ..._, icon: _.icon || ek, order: _.order ?? NwA(_.category), haystack: `${pm(_.label.toLocaleLowerCase())} ${_.keywords?.join(" ") || ""}` }));
      o(P), i(P.find((_) => _.label === t?.label) ?? null);
    }
  }, [Q, u, g, o, t?.label, i, C]);
  let [s, l] = x.useState(""), [c, D] = x.useState(null), [h, F] = x.useState({}), m = (f) => {
    C({ openDialog: null }, f), l("");
  }, p = (f, L) => {
    e.openDialog?.name === "commandPalette" && (L.stopPropagation(), L.preventDefault(), document.body.classList.add("excalidraw-animations-disabled"), m(() => {
      f.perform({ actionManager: g, event: L }), i(f), requestAnimationFrame(() => {
        document.body.classList.remove("excalidraw-animations-disabled");
      });
    }));
  }, k = mm((f) => f.viewMode === !1 && e.viewModeEnabled ? !1 : typeof f.predicate == "function" ? f.predicate(u.scene.getNonDeletedElements(), e, B, u) : f.predicate === void 0 || f.predicate), b = mm((f) => {
    let L = tE(f.target) || Ff(f) || f.key === Z.ESCAPE;
    if (L && f.key !== Z.ARROW_UP && f.key !== Z.ARROW_DOWN && f.key !== Z.ENTER) return;
    let N = Object.values(h).flat(), M = t && !s && k(t);
    if (f.key === Z.ARROW_UP) {
      f.preventDefault();
      let v = N.findIndex((j) => j.label === c?.label);
      if (M) {
        if (v === 0) {
          D(t);
          return;
        }
        if (c === t) {
          let j = N[N.length - 1];
          j && D(j);
          return;
        }
      }
      let K;
      v === -1 ? K = N.length - 1 : K = v === 0 ? N.length - 1 : (v - 1) % N.length;
      let q = N[K];
      q && D(q);
      return;
    }
    if (f.key === Z.ARROW_DOWN) {
      f.preventDefault();
      let v = N.findIndex((j) => j.label === c?.label);
      if (M) {
        if (!c || v === N.length - 1) {
          D(t);
          return;
        }
        if (c === t) {
          let j = N[0];
          j && D(j);
          return;
        }
      }
      let K = (v + 1) % N.length, q = N[K];
      q && D(q);
      return;
    }
    if (f.key === Z.ENTER && c && setTimeout(() => {
      p(c, f);
    }), !L) {
      if (f.stopPropagation(), /^[a-zA-Z0-9]$/.test(f.key)) {
        E?.current?.focus();
        return;
      }
      f.preventDefault();
    }
  });
  return x.useEffect(() => (window.addEventListener("keydown", b, { capture: !0 }), () => window.removeEventListener("keydown", b, { capture: !0 })), [b]), x.useEffect(() => {
    if (!I) return;
    let f = (v) => {
      let K = {};
      for (let q of v) K[q.category] ? K[q.category].push(q) : K[q.category] = [q];
      return K;
    }, L = I.filter(k).sort((v, K) => v.order - K.order), N = !s && t && k(t);
    if (!s) {
      F(f(N ? L.filter((v) => v.label !== t?.label) : L)), D(N ? t : L[0] || null);
      return;
    }
    let M = pm(s.toLocaleLowerCase().replace(/[<>_| -]/g, ""));
    L = f2A.filter(M, L, { extract: (v) => v.haystack }).sort((v, K) => K.score - v.score).map((v) => v.original), F(f(L)), D(L[0] ?? null);
  }, [s, I, k, t]), r.jsxs(mB, { onCloseRequest: () => m(), closeOnClickOutside: !0, title: !1, size: 720, autofocus: !0, className: "command-palette-dialog", children: [r.jsx(H9, { value: s, placeholder: S("commandPalette.search.placeholder"), onChange: (f) => {
    l(f);
  }, selectOnRender: !0, ref: E }), !u.device.viewport.isMobile && r.jsxs("div", { className: "shortcuts-wrapper", children: [r.jsx(_s, { shortcut: "↑↓", children: S("commandPalette.shortcuts.select") }), r.jsx(_s, { shortcut: "↵", children: S("commandPalette.shortcuts.confirm") }), r.jsx(_s, { shortcut: QA("Esc"), children: S("commandPalette.shortcuts.close") })] }), r.jsxs("div", { className: "commands", children: [t && !s && r.jsxs("div", { className: "command-category", children: [r.jsxs("div", { className: "command-category-title", children: [S("commandPalette.recents"), r.jsx("div", { className: "icon", style: { marginLeft: "6px" }, children: soA })] }), r.jsx(km, { command: t, isSelected: t.label === c?.label, onClick: (f) => p(t, f), disabled: !k(t), onMouseMove: () => D(t), showShortcut: !u.device.viewport.isMobile, appState: e })] }), Object.keys(h).length > 0 ? Object.keys(h).map((f, L) => r.jsxs("div", { className: "command-category", children: [r.jsx("div", { className: "command-category-title", children: f }), h[f].map((N) => r.jsx(km, { command: N, isSelected: N.label === c?.label, onClick: (M) => p(N, M), onMouseMove: () => D(N), showShortcut: !u.device.viewport.isMobile, appState: e }, N.label))] }, f)) : I ? r.jsxs("div", { className: "no-match", children: [r.jsx("div", { className: "icon", children: SE }), " ", S("commandPalette.search.noMatch")] }) : null] })] });
}
var km = ({ command: A, isSelected: u, disabled: e, onMouseMove: C, onClick: B, showShortcut: g, appState: t }) => {
  let i = () => {
  };
  return r.jsxs("div", { className: NA("command-item", { "item-selected": u, "item-disabled": e }), ref: (I) => {
    u && !e && I?.scrollIntoView?.({ block: "nearest" });
  }, onClick: e ? i : B, onMouseMove: e ? i : C, title: e ? S("commandPalette.itemNotAvailable") : "", children: [r.jsxs("div", { className: "name", children: [A.icon && r.jsx(W4, { icon: typeof A.icon == "function" ? A.icon(t) : A.icon }), A.label] }), g && A.shortcut && r.jsx(_s, { shortcut: A.shortcut })] });
}, MwA = pA({ name: "toggleLinearEditor", category: w0.elements, label: (A, u, e) => e.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds })[0]?.type === "arrow" ? "labels.lineEditor.editArrow" : "labels.lineEditor.edit", keywords: ["line"], trackEvent: { category: "element" }, predicate: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u);
  return !!(!u.editingLinearElement && B.length === 1 && $A(B[0]) && !xA(B[0]));
}, perform(A, u, e, C) {
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0 })[0], g = u.editingLinearElement?.elementId === B.id ? null : new LA(B);
  return { appState: { ...u, editingLinearElement: g }, captureUpdate: aA.IMMEDIATELY };
}, PanelComponent: ({ appState: A, updateData: u, app: e }) => {
  let C = e.scene.getSelectedElements({ selectedElementIds: A.selectedElementIds })[0], B = S(C.type === "arrow" ? "labels.lineEditor.editArrow" : "labels.lineEditor.edit");
  return r.jsx(cu, { type: "button", icon: GoA, title: B, "aria-label": B, onClick: () => u(null) });
} }), pf = pA({ name: "searchMenu", icon: SE, keywords: ["search", "find"], label: "search.title", viewMode: !0, trackEvent: { category: "search_menu", action: "toggle", predicate: (A) => A.gridModeEnabled }, perform(A, u, e, C) {
  if (u.openSidebar?.name === rB.name && u.openSidebar.tab === Xa) {
    let B = C.excalidrawContainerValue.container?.querySelector(`.${CI.SEARCH_MENU_INPUT_WRAPPER} input`);
    return B?.matches(":focus") ? { appState: { ...u, openSidebar: null }, captureUpdate: aA.EVENTUALLY } : (B?.focus(), B?.select(), !1);
  }
  return { appState: { ...u, openSidebar: { name: rB.name, tab: Xa }, openDialog: null }, captureUpdate: aA.EVENTUALLY };
}, checked: (A) => A.gridModeEnabled, predicate: (A, u, e) => e.gridModeEnabled === void 0, keyTest: (A) => A[Z.CTRL_OR_CMD] && A.key === Z.F }), YwA = pA({ name: "cropEditor", label: "helpDialog.cropStart", icon: jF, viewMode: !0, trackEvent: { category: "menu" }, keywords: ["image", "crop"], perform(A, u, e, C) {
  let B = C.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !0 })[0];
  return { appState: { ...u, isCropping: !1, croppingElementId: B.id }, captureUpdate: aA.IMMEDIATELY };
}, predicate: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u);
  return !!(!u.croppingElementId && B.length === 1 && bu(B[0]));
}, PanelComponent: ({ appState: A, updateData: u, app: e }) => {
  let C = S("helpDialog.cropStart");
  return r.jsx(cu, { type: "button", icon: jF, title: C, "aria-label": C, onClick: () => u(null) });
} }), Pl = class {
  constructor(A = !0, u = !0) {
    this.isUndoStackEmpty = A, this.isRedoStackEmpty = u;
  }
}, ym = class IQ {
  constructor() {
    J(this, "onHistoryChangedEmitter", new JB()), J(this, "undoStack", []), J(this, "redoStack", []);
  }
  get isUndoStackEmpty() {
    return this.undoStack.length === 0;
  }
  get isRedoStackEmpty() {
    return this.redoStack.length === 0;
  }
  clear() {
    this.undoStack.length = 0, this.redoStack.length = 0;
  }
  record(u, e) {
    let C = vwA.create(e, u);
    C.isEmpty() || (this.undoStack.push(C.inverse()), C.elementsChange.isEmpty() || (this.redoStack.length = 0), this.onHistoryChangedEmitter.trigger(new Pl(this.isUndoStackEmpty, this.isRedoStackEmpty)));
  }
  undo(u, e, C) {
    return this.perform(u, e, C, () => IQ.pop(this.undoStack), (B) => IQ.push(this.redoStack, B, u));
  }
  redo(u, e, C) {
    return this.perform(u, e, C, () => IQ.pop(this.redoStack), (B) => IQ.push(this.undoStack, B, u));
  }
  perform(u, e, C, B, g) {
    try {
      let t = B();
      if (t === null) return;
      let i = u, I = e, o = !1;
      for (; t; ) {
        try {
          [i, I, o] = t.applyTo(i, I, C);
        } finally {
          g(t);
        }
        if (o) break;
        t = B();
      }
      return [i, I];
    } finally {
      this.onHistoryChangedEmitter.trigger(new Pl(this.isUndoStackEmpty, this.isRedoStackEmpty));
    }
  }
  static pop(u) {
    if (!u.length) return null;
    let e = u.pop();
    return e !== void 0 ? e : null;
  }
  static push(u, e, C) {
    let B = e.inverse().applyLatestChanges(C);
    return u.push(B);
  }
}, vwA = class $s {
  constructor(u, e) {
    this.appStateChange = u, this.elementsChange = e;
  }
  static create(u, e) {
    return new $s(u, e);
  }
  inverse() {
    return new $s(this.appStateChange.inverse(), this.elementsChange.inverse());
  }
  applyTo(u, e, C) {
    let [B, g] = this.elementsChange.applyTo(u, C.elements), [t, i] = this.appStateChange.applyTo(e, B);
    return [B, t, g || i];
  }
  applyLatestChanges(u) {
    let e = this.elementsChange.applyLatestChanges(u);
    return $s.create(this.appStateChange, e);
  }
  isEmpty() {
    return this.appStateChange.isEmpty() && this.elementsChange.isEmpty();
  }
}, mf = (A, u) => {
  let [e, C] = x.useState(u);
  return x.useEffect(() => {
    let B = A.on((g) => {
      C(g);
    });
    return () => {
      B();
    };
  }, [A]), e;
}, kf = (A, u, e) => {
  if (!u.multiElement && !u.resizingElement && !u.editingTextElement && !u.newElement && !u.selectedElementsAreBeingDragged && !u.selectionElement && !A.flowChartCreator.isCreatingChart) {
    let C = e();
    if (!C) return { captureUpdate: aA.EVENTUALLY };
    let [B, g] = C, t = Array.from(B.values());
    return { appState: g, elements: t, captureUpdate: aA.NEVER };
  }
  return { captureUpdate: aA.EVENTUALLY };
}, HwA = (A, u) => ({ name: "undo", label: "buttons.undo", icon: fF, trackEvent: { category: "history" }, viewMode: !1, perform: (e, C, B, g) => kf(g, C, () => A.undo(PA(e), C, u.snapshot)), keyTest: (e) => e[Z.CTRL_OR_CMD] && XD(e, Z.Z) && !e.shiftKey, PanelComponent: ({ updateData: e, data: C }) => {
  let { isUndoStackEmpty: B } = mf(A.onHistoryChangedEmitter, new Pl(A.isUndoStackEmpty, A.isRedoStackEmpty));
  return r.jsx(cu, { type: "button", icon: fF, "aria-label": S("buttons.undo"), onClick: e, size: C?.size || "medium", disabled: B, "data-testid": "button-undo" });
} }), KwA = (A, u) => ({ name: "redo", label: "buttons.redo", icon: LF, trackEvent: { category: "history" }, viewMode: !1, perform: (e, C, B, g) => kf(g, C, () => A.redo(PA(e), C, u.snapshot)), keyTest: (e) => e[Z.CTRL_OR_CMD] && e.shiftKey && XD(e, Z.Z) || Q8 && e.ctrlKey && !e.shiftKey && XD(e, Z.Y), PanelComponent: ({ updateData: e, data: C }) => {
  let { isRedoStackEmpty: B } = mf(A.onHistoryChangedEmitter, new Pl(A.isUndoStackEmpty, A.isRedoStackEmpty));
  return r.jsx(cu, { type: "button", icon: LF, "aria-label": S("buttons.redo"), onClick: e, size: C?.size || "medium", disabled: B, "data-testid": "button-redo" });
} }), ID = (A, u, e, C, B, g) => {
  if (A.trackEvent) try {
    typeof A.trackEvent == "object" && (!A.trackEvent.predicate || A.trackEvent.predicate(e, C, g)) && zu(A.trackEvent.category, A.trackEvent.action || A.name, `${u} (${B.device.editor.isMobile ? "mobile" : "desktop"})`);
  } catch (t) {
    console.error("error while logging action:", t);
  }
}, JwA = class {
  constructor(A, u, e, C) {
    J(this, "actions", {}), J(this, "updater"), J(this, "getAppState"), J(this, "getElementsIncludingDeleted"), J(this, "app"), J(this, "renderAction", (B, g) => {
      let t = this.app.props.UIOptions.canvasActions;
      if (this.actions[B] && "PanelComponent" in this.actions[B] && (!(B in t) || t[B])) {
        let i = this.actions[B], I = i.PanelComponent;
        I.displayName = "PanelComponent";
        let o = this.getElementsIncludingDeleted(), E = this.getAppState(), Q = (s) => {
          ID(i, "ui", E, o, this.app, s), this.updater(i.perform(this.getElementsIncludingDeleted(), this.getAppState(), s, this.app));
        };
        return r.jsx(I, { elements: this.getElementsIncludingDeleted(), appState: this.getAppState(), updateData: Q, appProps: this.app.props, app: this.app, data: g });
      }
      return null;
    }), J(this, "isActionEnabled", (B) => {
      let g = this.getElementsIncludingDeleted(), t = this.getAppState();
      return !B.predicate || B.predicate(g, t, this.app.props, this.app);
    }), this.updater = (B) => {
      if (sn(B)) B.then((g) => A(g));
      else return A(B);
    }, this.getAppState = u, this.getElementsIncludingDeleted = e, this.app = C;
  }
  registerAction(A) {
    this.actions[A.name] = A;
  }
  registerAll(A) {
    A.forEach((u) => this.registerAction(u));
  }
  handleKeyDown(A) {
    let u = this.app.props.UIOptions.canvasActions, e = Object.values(this.actions).sort((i, I) => (I.keyPriority || 0) - (i.keyPriority || 0)).filter((i) => (i.name in u ? u[i.name] : !0) && i.keyTest && i.keyTest(A, this.getAppState(), this.getElementsIncludingDeleted(), this.app));
    if (e.length !== 1) return e.length > 1 && console.warn("Canceling as multiple actions match this shortcut", e), !1;
    let C = e[0];
    if (this.getAppState().viewModeEnabled && C.viewMode !== !0) return !1;
    let B = this.getElementsIncludingDeleted(), g = this.getAppState();
    return ID(C, "keyboard", g, B, this.app, null), A.preventDefault(), A.stopPropagation(), this.updater(e[0].perform(B, g, null, this.app)), !0;
  }
  executeAction(A, u = "api", e = null) {
    let C = this.getElementsIncludingDeleted(), B = this.getAppState();
    ID(A, u, B, C, this.app, e), this.updater(A.perform(C, B, e, this.app));
  }
}, bm = (A) => {
  let u = Array.from(A.values());
  return { x: Gm(u, (e) => e.x) / u.length, y: Gm(u, (e) => e.y) / u.length };
}, Um = ([A, u]) => Math.hypot(A.x - u.x, A.y - u.y), Gm = (A, u) => A.reduce((e, C) => e + u(C), 0), ZwA = ({ children: A, left: u, top: e, onCloseRequest: C, fitInViewport: B = !1, offsetLeft: g = 0, offsetTop: t = 0, viewportWidth: i = window.innerWidth, viewportHeight: I = window.innerHeight }) => {
  let o = x.useRef(null);
  x.useEffect(() => {
    let Q = o.current;
    if (!Q) return;
    Q.contains(document.activeElement) || Q.focus();
    let s = (l) => {
      if (l.key === Z.TAB) {
        let c = qD(Q), { activeElement: D } = document, h = c.findIndex((F) => F === D);
        D === Q ? (l.shiftKey ? c[c.length - 1]?.focus() : c[0].focus(), l.preventDefault(), l.stopImmediatePropagation()) : h === 0 && l.shiftKey ? (c[c.length - 1]?.focus(), l.preventDefault(), l.stopImmediatePropagation()) : h === c.length - 1 && !l.shiftKey && (c[0]?.focus(), l.preventDefault(), l.stopImmediatePropagation());
      }
    };
    return Q.addEventListener("keydown", s), () => Q.removeEventListener("keydown", s);
  }, []);
  let E = x.useRef(null);
  return x.useLayoutEffect(() => {
    if (B && o.current && e != null && u != null) {
      let Q = o.current, { width: s, height: l } = Q.getBoundingClientRect();
      if (E.current?.top === e && E.current?.left === u) return;
      E.current = { top: e, left: u }, s >= i ? (Q.style.width = `${i}px`, Q.style.left = "0px", Q.style.overflowX = "scroll") : u + s - g > i ? Q.style.left = `${i - s - 10}px` : Q.style.left = `${u}px`, l >= I ? (Q.style.height = `${I - 20}px`, Q.style.top = "10px", Q.style.overflowY = "scroll") : e + l - t > I ? Q.style.top = `${I - l}px` : Q.style.top = `${e}px`;
    }
  }, [e, u, B, i, I, g, t]), x.useEffect(() => {
    if (C) {
      let Q = (s) => {
        o.current?.contains(s.target) || O0.unstable_batchedUpdates(() => C(s));
      };
      return document.addEventListener("pointerdown", Q, !1), () => document.removeEventListener("pointerdown", Q, !1);
    }
  }, [C]), r.jsx("div", { className: "popover", ref: o, tabIndex: -1, children: A });
}, Y0 = "separator", qwA = kA.memo(({ actionManager: A, items: u, top: e, left: C, onClose: B }) => {
  let g = bn(), t = V4(), i = u.reduce((I, o) => (o && (o === Y0 || !o.predicate || o.predicate(t, g, A.app.props, A.app)) && I.push(o), I), []);
  return r.jsx(ZwA, { onCloseRequest: () => {
    B();
  }, top: e, left: C, fitInViewport: !0, offsetLeft: g.offsetLeft, offsetTop: g.offsetTop, viewportWidth: g.width, viewportHeight: g.height, children: r.jsx("ul", { className: "context-menu", onContextMenu: (I) => I.preventDefault(), children: i.map((I, o) => {
    if (I === Y0) return !i[o - 1] || i[o - 1] === Y0 ? null : r.jsx("hr", { className: "context-menu-item-separator" }, o);
    let E = I.name, Q = "";
    return I.label && (typeof I.label == "function" ? Q = S(I.label(t, g, A.app)) : Q = S(I.label)), r.jsx("li", { "data-testid": E, onClick: () => {
      B(() => {
        A.executeAction(I, "contextMenu");
      });
    }, children: r.jsxs("button", { type: "button", className: NA("context-menu-item", { dangerous: E === "deleteSelectedElements", checkmark: I.checked?.(g) }), children: [r.jsx("div", { className: "context-menu-item__label", children: Q }), r.jsx("kbd", { className: "context-menu-item__shortcut", children: E ? De(E) : "" })] }) }, o);
  }) }) });
}), WwA = ({ children: A, onClose: u }) => {
  let [e, C] = x.useState(!!A), { container: B } = ag(), g = kA.useCallback(() => {
    C(!1), u && u(), B?.focus();
  }, [u, B]);
  return r.jsx(r.Fragment, { children: e && r.jsx(mB, { size: "small", onCloseRequest: g, title: S("errorDialog.title"), children: r.jsx("div", { style: { whiteSpace: "pre-wrap" }, children: A }) }) });
}, yf = function({ onChange: A, value: u, choices: e, name: C }) {
  return r.jsx("div", { className: "RadioGroup", children: e.map((B) => r.jsxs("div", { className: NA("RadioGroup__choice", { active: B.value === u }), title: B.ariaLabel, children: [r.jsx("input", { name: C, type: "radio", checked: B.value === u, onChange: () => A(B.value), "aria-label": B.ariaLabel }), B.label] }, String(B.value))) });
}, Ds = ({ title: A, name: u, checked: e, onChange: C, disabled: B = !1 }) => r.jsx("div", { className: NA("Switch", { toggled: e, disabled: B }), children: r.jsx("input", { name: u, id: u, title: A, type: "checkbox", checked: e, disabled: B, onChange: () => C(!e), onKeyDown: (g) => {
  g.key === " " && C(!e);
} }) }), UQ = x.forwardRef(({ children: A, icon: u, onClick: e, label: C, variant: B = "filled", color: g = "primary", size: t = "medium", fullWidth: i, className: I, status: o }, E) => {
  let [Q, s] = x.useState(!1), l = async (D) => {
    let h = e?.(D);
    if (sn(h)) {
      let F = window.setTimeout(() => {
        s(!0);
      }, 50);
      try {
        await h;
      } catch (m) {
        if (m instanceof r4) console.warn(m);
        else throw m;
      } finally {
        clearTimeout(F), s(!1);
      }
    }
  }, c = Q ? "loading" : o;
  return g = c === "success" ? "success" : g, r.jsx("button", { className: NA("ExcButton", `ExcButton--color-${g}`, `ExcButton--variant-${B}`, `ExcButton--size-${t}`, `ExcButton--status-${c}`, { "ExcButton--fullWidth": i }, I), onClick: l, type: "button", "aria-label": C, ref: E, disabled: c === "loading" || c === "success", children: r.jsxs("div", { className: "ExcButton__contents", children: [c === "loading" ? r.jsx($g, { className: "ExcButton__statusIcon" }) : c === "success" && r.jsx("div", { className: "ExcButton__statusIcon", children: EoA }), u && r.jsx("div", { className: "ExcButton__icon", "aria-hidden": !0, children: u }), B !== "icon" && (A ?? C)] }) });
}), jwA = 2e3, TwA = () => {
  let [A, u] = x.useState(null), e = x.useRef(0), C = () => {
    clearTimeout(e.current), u("success"), e.current = window.setTimeout(() => {
      u(null);
    }, jwA);
  }, B = x.useCallback(() => {
    u(null);
  }, []);
  return { copyStatus: A, resetCopyStatus: B, onCopy: C };
}, zwA = "filter" in document.createElement("canvas").getContext("2d"), PwA = () => r.jsxs("div", { children: [r.jsx("h3", { children: S("canvasError.cannotShowPreview") }), r.jsx("p", { children: r.jsx("span", { children: S("canvasError.canvasTooBig") }) }), r.jsxs("em", { children: ["(", S("canvasError.canvasTooBigTip"), ")"] })] }), OwA = ({ appStateSnapshot: A, elementsSnapshot: u, files: e, actionManager: C, onExportImage: B, name: g }) => {
  let t = S0(u, A), [i, I] = x.useState(g), [o, E] = x.useState(t), [Q, s] = x.useState(A.exportBackground), [l, c] = x.useState(A.exportWithDarkMode), [D, h] = x.useState(A.exportEmbedScene), [F, m] = x.useState(A.exportScale), p = x.useRef(null), [k, b] = x.useState(null), { onCopy: f, copyStatus: L, resetCopyStatus: N } = TwA();
  x.useEffect(() => {
    N();
  }, [i, Q, l, F, D, N]);
  let { exportedElements: M, exportingFrame: v } = T4(u, A, o);
  return x.useEffect(() => {
    let K = p.current;
    if (!K) return;
    let q = K.offsetWidth, j = K.offsetHeight;
    q && P2({ elements: M, appState: { ...A, name: i, exportBackground: Q, exportWithDarkMode: l, exportScale: F, exportEmbedScene: D }, files: e, exportPadding: pI, maxWidthOrHeight: Math.max(q, j), exportingFrame: v }).then((uA) => (b(null), An(uA).then(() => {
      K.replaceChildren(uA);
    }).catch((O) => {
      throw O.name === "CANVAS_POSSIBLY_TOO_BIG" ? new Error(S("canvasError.canvasTooBig")) : O;
    }))).catch((uA) => {
      console.error(uA), b(uA);
    });
  }, [A, e, M, v, i, Q, l, F, D]), r.jsxs("div", { className: "ImageExportModal", children: [r.jsx("h3", { children: S("imageExportDialog.header") }), r.jsxs("div", { className: "ImageExportModal__preview", children: [r.jsx("div", { className: "ImageExportModal__preview__canvas", ref: p, children: k && r.jsx(PwA, {}) }), r.jsx("div", { className: "ImageExportModal__preview__filename", children: !_l && r.jsx("input", { type: "text", className: "TextInput", value: i, style: { width: "30ch" }, onChange: (K) => {
    I(K.target.value), C.executeAction(Z6A, "ui", K.target.value);
  } }) })] }), r.jsxs("div", { className: "ImageExportModal__settings", children: [r.jsx("h3", { children: S("imageExportDialog.header") }), t && r.jsx(To, { label: S("imageExportDialog.label.onlySelected"), name: "exportOnlySelected", children: r.jsx(Ds, { name: "exportOnlySelected", checked: o, onChange: (K) => {
    E(K);
  } }) }), r.jsx(To, { label: S("imageExportDialog.label.withBackground"), name: "exportBackgroundSwitch", children: r.jsx(Ds, { name: "exportBackgroundSwitch", checked: Q, onChange: (K) => {
    s(K), C.executeAction(W6A, "ui", K);
  } }) }), zwA && r.jsx(To, { label: S("imageExportDialog.label.darkMode"), name: "exportDarkModeSwitch", children: r.jsx(Ds, { name: "exportDarkModeSwitch", checked: l, onChange: (K) => {
    c(K), C.executeAction(j6A, "ui", K);
  } }) }), r.jsx(To, { label: S("imageExportDialog.label.embedScene"), tooltip: S("imageExportDialog.tooltip.embedScene"), name: "exportEmbedSwitch", children: r.jsx(Ds, { name: "exportEmbedSwitch", checked: D, onChange: (K) => {
    h(K), C.executeAction(zG, "ui", K);
  } }) }), r.jsx(To, { label: S("imageExportDialog.label.scale"), name: "exportScale", children: r.jsx(yf, { name: "exportScale", value: F, onChange: (K) => {
    m(K), C.executeAction(q6A, "ui", K);
  }, choices: B2.map((K) => ({ value: K, label: `${K}×` })) }) }), r.jsxs("div", { className: "ImageExportModal__settings__buttons", children: [r.jsx(UQ, { className: "ImageExportModal__settings__buttons__button", label: S("imageExportDialog.title.exportToPng"), onClick: () => B(hd.png, M, { exportingFrame: v }), icon: WF, children: S("imageExportDialog.button.exportToPng") }), r.jsx(UQ, { className: "ImageExportModal__settings__buttons__button", label: S("imageExportDialog.title.exportToSvg"), onClick: () => B(hd.svg, M, { exportingFrame: v }), icon: WF, children: S("imageExportDialog.button.exportToSvg") }), (z2 || vQ) && r.jsx(UQ, { className: "ImageExportModal__settings__buttons__button", label: S("imageExportDialog.title.copyPngToClipboard"), status: L, onClick: async () => {
    await B(hd.clipboard, M, { exportingFrame: v }), f();
  }, icon: l2, children: S("imageExportDialog.button.copyPngToClipboard") })] })] })] });
}, To = ({ label: A, children: u, tooltip: e, name: C }) => r.jsxs("div", { className: "ImageExportModal__settings__setting", title: A, children: [r.jsxs("label", { htmlFor: C, className: "ImageExportModal__settings__setting__label", children: [A, e && r.jsx(HE, { label: e, long: !0, children: ioA })] }), r.jsx("div", { className: "ImageExportModal__settings__setting__content", children: u })] }), VwA = ({ elements: A, appState: u, files: e, actionManager: C, onExportImage: B, onCloseRequest: g, name: t }) => {
  let [{ appStateSnapshot: i, elementsSnapshot: I }] = x.useState(() => ({ appStateSnapshot: Hg(u), elementsSnapshot: Hg(A) }));
  return r.jsx(mB, { onCloseRequest: g, size: "wide", title: !1, children: r.jsx(OwA, { elementsSnapshot: I, appStateSnapshot: i, files: e, actionManager: C, onExportImage: B, name: t }) });
}, bf = ({ children: A, side: u, className: e }) => r.jsx("div", { className: NA("FixedSideContainer", `FixedSideContainer_side_${u}`, e), children: A }), uI = 100, eI = 100, fm = (A) => {
  switch (A) {
    case Z.ARROW_UP:
      return "up";
    case Z.ARROW_DOWN:
      return "down";
    case Z.ARROW_RIGHT:
      return "right";
    case Z.ARROW_LEFT:
      return "left";
    default:
      return "right";
  }
}, Uf = (A, u, e, C) => {
  let B = [...e.values()].reduce((g, t) => {
    let i;
    if (xA(t) && (i = t[A === "predecessors" ? "startBinding" : "endBinding"]) && t[A === "predecessors" ? "endBinding" : "startBinding"]?.elementId === u.id) {
      let I = e.get(i.elementId);
      if (!I) return g;
      he(DB(I), "not an ExcalidrawBindableElement");
      let o = A === "predecessors" ? t.points[t.points.length - 1] : [0, 0], E = xk(u, qB(u), [o[0] + t.x, o[1] + t.y]);
      g.push({ relative: I, heading: E });
    }
    return g;
  }, []);
  switch (C) {
    case "up":
      return B.filter((g) => l0(g.heading, ze)).map((g) => g.relative);
    case "down":
      return B.filter((g) => l0(g.heading, V0)).map((g) => g.relative);
    case "right":
      return B.filter((g) => l0(g.heading, r0)).map((g) => g.relative);
    case "left":
      return B.filter((g) => l0(g.heading, Te)).map((g) => g.relative);
  }
}, H1 = (A, u, e) => Uf("successors", A, u, e), K1 = (A, u, e) => Uf("predecessors", A, u, e), XwA = (A, u, e) => {
  let C = eI + A.width;
  if (e === "up" || e === "down") {
    let i = uI + A.height, I = A.x, o = A.x + A.width;
    if (u.every((E) => E.x + E.width < I || E.x > o)) return { x: 0, y: i * (e === "up" ? -1 : 1) };
  } else if (e === "right" || e === "left") {
    let i = A.y, I = A.y + A.height;
    if (u.every((o) => o.y + o.height < i || o.y > I)) return { x: (eI + A.width) * (e === "left" ? -1 : 1), y: 0 };
  }
  if (e === "up" || e === "down") {
    let i = uI + A.height, I = (u.length, i), o = u.length === 0 ? 0 : (u.length + 1) % 2 === 0 ? (u.length + 1) / 2 * C : u.length / 2 * C * -1;
    return e === "up" ? { x: o, y: I * -1 } : { x: o, y: I };
  }
  let B = uI + A.height, g = (u.length, eI + A.width), t = u.length === 0 ? 0 : (u.length + 1) % 2 === 0 ? (u.length + 1) / 2 * B : u.length / 2 * B * -1;
  return e === "left" ? { x: g * -1, y: t } : { x: g, y: t };
}, _wA = (A, u, e, C) => {
  let B = H1(A, u, C), g = K1(A, u, C), t = XwA(A, [...B, ...g], C), i = eg({ type: A.type, x: A.x + t.x, y: A.y + t.y, width: A.width, height: A.height, roundness: A.roundness, roughness: A.roughness, backgroundColor: A.backgroundColor, strokeColor: A.strokeColor, strokeWidth: A.strokeWidth, opacity: A.opacity, fillStyle: A.fillStyle, strokeStyle: A.strokeStyle });
  he(I4(i), "not an ExcalidrawFlowchartNodeElement");
  let I = Gf(A, i, u, C, e);
  return { nextNode: i, bindingArrow: I };
}, $wA = (A, u, e, C, B) => {
  let g = [];
  for (let t = 0; t < B; t++) {
    let i, I;
    if (C === "left" || C === "right") {
      let Q = uI * (B - 1) + B * A.height, s = A.y + A.height / 2 - Q / 2, l = eI + A.width;
      C === "left" && (l *= -1), i = A.x + l;
      let c = (uI + A.height) * t;
      I = s + c;
    } else {
      let Q = eI * (B - 1) + B * A.width, s = A.x + A.width / 2 - Q / 2, l = uI + A.height;
      C === "up" && (l *= -1), I = A.y + l;
      let c = (eI + A.width) * t;
      i = s + c;
    }
    let o = eg({ type: A.type, x: i, y: I, width: A.width, height: A.height, roundness: A.roundness, roughness: A.roughness, backgroundColor: A.backgroundColor, strokeColor: A.strokeColor, strokeWidth: A.strokeWidth, opacity: A.opacity, fillStyle: A.fillStyle, strokeStyle: A.strokeStyle });
    he(I4(o), "not an ExcalidrawFlowchartNodeElement");
    let E = Gf(A, o, u, C, e);
    g.push(o), g.push(E);
  }
  return g;
}, Gf = (A, u, e, C, B) => {
  let g, t;
  switch (C) {
    case "up": {
      g = A.x + A.width / 2, t = A.y - 6;
      break;
    }
    case "down": {
      g = A.x + A.width / 2, t = A.y + A.height + 6;
      break;
    }
    case "right": {
      g = A.x + A.width + 6, t = A.y + A.height / 2;
      break;
    }
    case "left": {
      g = A.x - 6, t = A.y + A.height / 2;
      break;
    }
  }
  let i, I;
  switch (C) {
    case "up": {
      i = u.x + u.width / 2 - g, I = u.y + u.height - t + 6;
      break;
    }
    case "down": {
      i = u.x + u.width / 2 - g, I = u.y - t - 6;
      break;
    }
    case "right": {
      i = u.x - g - 6, I = u.y - t + u.height / 2;
      break;
    }
    case "left": {
      i = u.x + u.width - g + 6, I = u.y - t + u.height / 2;
      break;
    }
  }
  let o = f2({ type: "arrow", x: g, y: t, startArrowhead: null, endArrowhead: B.currentItemEndArrowhead, strokeColor: A.strokeColor, strokeStyle: A.strokeStyle, strokeWidth: A.strokeWidth, opacity: A.opacity, roughness: A.roughness, points: [U(0, 0), U(i, I)], elbowed: !0 });
  Ag(o, A, "start", e), Ag(o, u, "end", e);
  let E = /* @__PURE__ */ new Map();
  E.set(A.id, A), E.set(u.id, u), E.set(o.id, o), LA.movePoints(o, [{ index: 1, point: o.points[1] }]);
  let Q = H2(o, NC(new Map([...e.entries(), [A.id, A], [u.id, u], [o.id, o]])), { points: o.points });
  return { ...o, ...Q };
}, AFA = class {
  constructor() {
    J(this, "isExploring", !1), J(this, "sameLevelNodes", []), J(this, "sameLevelIndex", 0), J(this, "direction", null), J(this, "visitedNodes", /* @__PURE__ */ new Set());
  }
  clear() {
    this.isExploring = !1, this.sameLevelNodes = [], this.sameLevelIndex = 0, this.direction = null, this.visitedNodes.clear();
  }
  exploreByDirection(A, u, e) {
    if (!DB(A)) return null;
    if (e !== this.direction && this.clear(), this.visitedNodes.has(A.id) || this.visitedNodes.add(A.id), this.isExploring && e === this.direction && this.sameLevelNodes.length > 1) return this.sameLevelIndex = (this.sameLevelIndex + 1) % this.sameLevelNodes.length, this.sameLevelNodes[this.sameLevelIndex].id;
    let C = [...H1(A, u, e), ...K1(A, u, e)];
    if (C.length > 0) return this.sameLevelIndex = 0, this.isExploring = !0, this.sameLevelNodes = C, this.direction = e, this.visitedNodes.add(C[0].id), C[0].id;
    if (e === this.direction || !this.isExploring) {
      this.isExploring || this.visitedNodes.add(A.id);
      let B = ["up", "right", "down", "left"].filter((g) => g !== e).map((g) => [...H1(A, u, g), ...K1(A, u, g)]).flat().filter((g) => !this.visitedNodes.has(g.id));
      for (let g of B) if (!this.visitedNodes.has(g.id)) return this.visitedNodes.add(g.id), this.isExploring = !0, this.direction = e, g.id;
    }
    return null;
  }
}, uFA = class {
  constructor() {
    J(this, "isCreatingChart", !1), J(this, "numberOfNodes", 0), J(this, "direction", "right"), J(this, "pendingNodes", null);
  }
  createNodes(A, u, e, C) {
    if (C !== this.direction) {
      let { nextNode: B, bindingArrow: g } = _wA(A, u, e, C);
      this.numberOfNodes = 1, this.isCreatingChart = !0, this.direction = C, this.pendingNodes = [B, g];
    } else {
      this.numberOfNodes += 1;
      let B = $wA(A, u, e, C, this.numberOfNodes);
      this.isCreatingChart = !0, this.direction = C, this.pendingNodes = B;
    }
    if (A.frameId) {
      let B = u.get(A.frameId);
      he(B && N8(B), "not an ExcalidrawFrameElement"), B && this.pendingNodes.every((g) => wn([g], B, u) || ai(g, B, u)) && (this.pendingNodes = this.pendingNodes.map((g) => nA(g, { frameId: A.frameId }, !1)));
    }
  }
  clear() {
    this.isCreatingChart = !1, this.pendingNodes = null, this.direction = null, this.numberOfNodes = 0;
  }
}, eFA = (A, u) => {
  for (let [, e] of u) if (e.type === "arrow" && (e.startBinding?.elementId === A.id || e.endBinding?.elementId === A.id)) return !0;
  return !1;
}, CFA = ({ appState: A, isMobile: u, device: e, app: C }) => {
  let { activeTool: B, isResizing: g, isRotating: t, lastPointerDownWith: i } = A, I = A.multiElement !== null;
  if (A.openSidebar?.name === rB.name && A.openSidebar.tab === Xa && A.searchMatches?.length) return S("hints.dismissSearch");
  if (A.openSidebar && !e.editor.canFitSidebar) return null;
  if (KB(A)) return S("hints.eraserRevert");
  if (B.type === "arrow" || B.type === "line") return I ? S("hints.linearElementMulti") : B.type === "arrow" ? S("hints.arrowTool", { arrowShortcut: QA("A") }) : S("hints.linearElement");
  if (B.type === "freedraw") return S("hints.freeDraw");
  if (B.type === "text") return S("hints.text");
  if (B.type === "embeddable") return S("hints.embeddable");
  if (A.activeTool.type === "image" && A.pendingImageElementId) return S("hints.placeImage");
  let o = C.scene.getSelectedElements(A);
  if (g && i === "mouse" && o.length === 1) {
    let E = o[0];
    return $A(E) && E.points.length === 2 ? S("hints.lockAngle") : bu(E) ? S("hints.resizeImage") : S("hints.resize");
  }
  if (t && i === "mouse") return S("hints.rotate");
  if (o.length === 1 && UA(o[0])) return S("hints.text_selected");
  if (A.editingTextElement) return S("hints.text_editing");
  if (A.croppingElementId) return S("hints.leaveCropEditor");
  if (o.length === 1 && bu(o[0])) return S("hints.enterCropEditor");
  if (B.type === "selection") {
    if (A.selectionElement && !o.length && !A.editingTextElement && !A.editingLinearElement) return S("hints.deepBoxSelect");
    if (VQ(C) && A.selectedElementsAreBeingDragged) return S("hints.disableSnapping");
    if (!o.length && !u) return S("hints.canvasPanning");
    if (o.length === 1) {
      if ($A(o[0])) return A.editingLinearElement ? A.editingLinearElement.selectedPointsIndices ? S("hints.lineEditor_pointSelected") : S("hints.lineEditor_nothingSelected") : S("hints.lineEditor_info");
      if (!A.newElement && !A.selectedElementsAreBeingDragged && DE(o[0])) return I4(o[0]) ? eFA(o[0], C.scene.getNonDeletedElementsMap()) ? [S("hints.bindTextToElement"), S("hints.createFlowchart")] : [S("hints.bindTextToElement"), S("hints.createFlowchart")] : S("hints.bindTextToElement");
    }
  }
  return null;
}, ff = ({ appState: A, isMobile: u, device: e, app: C }) => {
  let B = CFA({ appState: A, isMobile: u, device: e, app: C });
  if (!B) return null;
  let g = Array.isArray(B) ? B.map((t) => QA(t).replace(/\. ?$/, "")).join(". ") : QA(B);
  return r.jsx("div", { className: "HintViewer", children: r.jsx("span", { children: g }) });
}, BFA = "medium", Lm = { CHECKED: n2, UNCHECKED: o4 }, Lf = (A) => r.jsxs("label", { className: NA("ToolIcon ToolIcon__lock", `ToolIcon_size_${BFA}`, { "is-mobile": A.isMobile }), title: `${A.title} — Q`, children: [r.jsx("input", { className: "ToolIcon_type_checkbox", type: "checkbox", name: A.name, onChange: A.onChange, checked: A.checked, "aria-label": A.title, "data-testid": "toolbar-lock" }), r.jsx("div", { className: "ToolIcon__icon", children: A.checked ? Lm.CHECKED : Lm.UNCHECKED })] }), Bn = ({ heading: A, children: u, ...e }) => {
  let { id: C } = ag(), B = r.jsx("h2", { className: "visually-hidden", id: `${C}-${A}-title`, children: S(`headings.${A}`) });
  return r.jsx("section", { ...e, "aria-labelledby": `${C}-${A}-title`, children: typeof u == "function" ? u(B) : r.jsxs(r.Fragment, { children: [B, u] }) });
}, ZB = 4, Xt = 6, gFA = "rgba(0,0,0,0.3)", tFA = (A, u, e, C) => {
  if (!A.length) return { horizontal: null, vertical: null };
  let [B, g, t, i] = Nu(A), I = u / C.zoom.value, o = e / C.zoom.value, E = u - I, Q = e - o, s = { top: parseInt(gs("sat")) || 0, bottom: parseInt(gs("sab")) || 0, left: parseInt(gs("sal")) || 0, right: parseInt(gs("sar")) || 0 }, l = en().rtl, c = -C.scrollX + E / 2 + s.left, D = -C.scrollY + Q / 2 + s.top, h = c + I - s.right, F = D + o - s.bottom, m = Math.min(B, c), p = Math.min(g, D), k = Math.max(t, h), b = Math.max(i, F);
  return { horizontal: c === m && h === k ? null : { x: Math.max(s.left, ZB) + (c - m) / (k - m) * u, y: e - Xt - Math.max(ZB, s.bottom), width: (h - c) / (k - m) * u - Math.max(ZB * 2, s.left + s.right), height: Xt }, vertical: D === p && F === b ? null : { x: l ? Math.max(s.left, ZB) : u - Xt - Math.max(s.right, ZB), y: (D - p) / (b - p) * e + Math.max(s.top, ZB), width: Xt, height: (F - D) / (b - p) * e - Math.max(ZB * 2, s.top + s.bottom) } };
}, xm = (A, u, e) => {
  let [C, B] = [A.horizontal, A.vertical].map((g) => g != null && g.x <= u && u <= g.x + g.width && g.y <= e && e <= g.y + g.height);
  return { isOverEither: C || B, isOverHorizontal: C, isOverVertical: B };
}, iFA = "medium", xf = (A) => A.penDetected ? r.jsxs("label", { className: NA("ToolIcon ToolIcon__penMode", `ToolIcon_size_${iFA}`, { "is-mobile": A.isMobile }), title: `${A.title}`, children: [r.jsx("input", { className: "ToolIcon_type_checkbox", type: "checkbox", name: A.name, onChange: A.onChange, checked: A.checked, "aria-label": A.title }), r.jsx("div", { className: "ToolIcon__icon", children: tIA })] }) : null, Sf = (A) => r.jsx(cu, { className: NA("Shape", { fillable: !1 }), type: "radio", icon: X8, name: "editor-current-shape", checked: A.checked, title: `${A.title} — H`, keyBindingLabel: A.isMobile ? void 0 : Z.H.toLocaleUpperCase(), "aria-label": `${A.title} — H`, "aria-keyshortcuts": Z.H, "data-testid": "toolbar-hand", onChange: () => A.onChange?.() }), EFA = ({ appState: A, elements: u, actionManager: e, setAppState: C, onLockToggle: B, onHandToolToggle: g, onPenModeToggle: t, renderTopRightUI: i, renderCustomStats: I, renderSidebars: o, device: E, renderWelcomeScreen: Q, UIOptions: s, app: l }) => {
  let { WelcomeScreenCenterTunnel: c, MainMenuTunnel: D, DefaultSidebarTriggerTunnel: h } = sC(), F = () => r.jsxs(bf, { side: "top", className: "App-top-bar", children: [Q && r.jsx(c.Out, {}), r.jsx(Bn, { heading: "shapes", children: (p) => r.jsx(GC.Col, { gap: 4, align: "center", children: r.jsxs(GC.Row, { gap: 1, className: "App-toolbar-container", children: [r.jsxs(cB, { padding: 1, className: "App-toolbar App-toolbar--mobile", children: [p, r.jsx(GC.Row, { gap: 1, children: r.jsx(Df, { appState: A, activeTool: A.activeTool, UIOptions: s, app: l }) })] }), i && i(!0, A), r.jsxs("div", { className: "mobile-misc-tools-container", children: [!A.viewModeEnabled && A.openDialog?.name !== "elementLinkSelector" && r.jsx(h.Out, {}), r.jsx(xf, { checked: A.penMode, onChange: () => t(null), title: S("toolBar.penMode"), isMobile: !0, penDetected: A.penDetected }), r.jsx(Lf, { checked: A.activeTool.locked, onChange: B, title: S("toolBar.lock"), isMobile: !0 }), r.jsx(Sf, { checked: BI(A), onChange: () => g(), title: S("toolBar.hand"), isMobile: !0 })] })] }) }) }), r.jsx(ff, { appState: A, isMobile: !0, device: E, app: l })] }), m = () => A.viewModeEnabled || A.openDialog?.name === "elementLinkSelector" ? r.jsx("div", { className: "App-toolbar-content", children: r.jsx(D.Out, {}) }) : r.jsxs("div", { className: "App-toolbar-content", children: [r.jsx(D.Out, {}), e.renderAction("toggleEditMenu"), e.renderAction(A.multiElement ? "finalize" : "duplicateSelection"), e.renderAction("deleteSelectedElements"), r.jsxs("div", { children: [e.renderAction("undo"), e.renderAction("redo")] })] });
  return r.jsxs(r.Fragment, { children: [o(), !A.viewModeEnabled && A.openDialog?.name !== "elementLinkSelector" && F(), r.jsx("div", { className: "App-bottom-bar", style: { marginBottom: Xt + ZB * 2, marginLeft: Xt + ZB * 2, marginRight: Xt + ZB * 2 }, children: r.jsxs(cB, { padding: 0, children: [A.openMenu === "shape" && !A.viewModeEnabled && A.openDialog?.name !== "elementLinkSelector" && t9(A, u) ? r.jsx(Bn, { className: "App-mobile-menu", heading: "selectedShapeActions", children: r.jsx(df, { appState: A, elementsMap: l.scene.getNonDeletedElementsMap(), renderAction: e.renderAction, app: l }) }) : null, r.jsxs("footer", { className: "App-toolbar", children: [m(), A.scrolledOutside && !A.openMenu && !A.openSidebar && r.jsx("button", { type: "button", className: "scroll-back-to-content", onClick: () => {
    C((p) => ({ ...PQ(u, p) }));
  }, children: S("buttons.scrollBackToContent") })] })] }) })] });
}, Sm = (A) => {
  let u = x.useRef(null), [e, C] = x.useState(null);
  return x.useLayoutEffect(() => {
    if (!A.spreadsheet) return;
    let B = wcA(A.chartType, A.spreadsheet, 0, 0);
    C(B);
    let g, t = u.current;
    return (async () => (g = await M2(B, { exportBackground: !1, viewBackgroundColor: X0.white }, null, { skipInliningFonts: !0 }), g.querySelector(".style-fonts")?.remove(), t.replaceChildren(), t.appendChild(g), A.selected && t.parentNode.focus()))(), () => {
      t.replaceChildren();
    };
  }, [A.spreadsheet, A.chartType, A.selected]), r.jsx("button", { type: "button", className: "ChartPreview", onClick: () => {
    e && A.onClick(A.chartType, e);
  }, children: r.jsx("div", { ref: u }) });
}, aFA = ({ setAppState: A, appState: u, onClose: e }) => {
  let { onInsertElements: C } = Eg(), B = kA.useCallback(() => {
    e && e();
  }, [e]), g = (t, i) => {
    C(i), zu("paste", "chart", t), A({ currentChartType: t, pasteDialog: { shown: !1, data: null } });
  };
  return r.jsx(mB, { size: "small", onCloseRequest: B, title: S("labels.pasteCharts"), className: "PasteChartDialog", autofocus: !1, children: r.jsxs("div", { className: "container", children: [r.jsx(Sm, { chartType: "bar", spreadsheet: u.pasteDialog.data, selected: u.currentChartType === "bar", onClick: g }), r.jsx(Sm, { chartType: "line", spreadsheet: u.pasteDialog.data, selected: u.currentChartType === "line", onClick: g })] }) });
}, IFA = () => r.jsxs("div", { className: "HelpDialog__header", children: [r.jsxs("a", { className: "HelpDialog__btn", href: "https://docs.excalidraw.com", target: "_blank", rel: "noopener noreferrer", children: [r.jsx("div", { className: "HelpDialog__link-icon", children: GF }), S("helpDialog.documentation")] }), r.jsxs("a", { className: "HelpDialog__btn", href: "https://plus.excalidraw.com/blog", target: "_blank", rel: "noopener noreferrer", children: [r.jsx("div", { className: "HelpDialog__link-icon", children: GF }), S("helpDialog.blog")] }), r.jsxs("a", { className: "HelpDialog__btn", href: "https://github.com/excalidraw/excalidraw/issues", target: "_blank", rel: "noopener noreferrer", children: [r.jsx("div", { className: "HelpDialog__link-icon", children: W8 }), S("helpDialog.github")] }), r.jsxs("a", { className: "HelpDialog__btn", href: "https://youtube.com/@excalidraw", target: "_blank", rel: "noopener noreferrer", children: [r.jsx("div", { className: "HelpDialog__link-icon", children: boA }), "YouTube"] })] }), oFA = (A) => r.jsxs(r.Fragment, { children: [r.jsx("h3", { children: A.title }), r.jsx("div", { className: "HelpDialog__islands-container", children: A.children })] }), oD = (A) => r.jsxs("div", { className: `HelpDialog__island ${A.className}`, children: [r.jsx("h4", { className: "HelpDialog__island-title", children: A.caption }), r.jsx("div", { className: "HelpDialog__island-content", children: A.children })] });
function* QFA(A, u) {
  let e = !0;
  for (let C of A) e || (yield u), e = !1, yield C;
}
var nFA = (A) => A.replace(/\b[a-z]\b/, (u) => u.toUpperCase()), SA = ({ label: A, shortcuts: u, isOr: e = !0 }) => {
  let C = u.map((B) => (B.endsWith("++") ? [...B.slice(0, -2).split("+"), "+"] : B.split("+")).map((g) => r.jsx(rFA, { children: nFA(g) }, g)));
  return r.jsxs("div", { className: "HelpDialog__shortcut", children: [r.jsx("div", { children: A }), r.jsx("div", { className: "HelpDialog__key-container", children: [...QFA(C, e ? S("helpDialog.or") : null)] })] });
}, rFA = (A) => r.jsx("kbd", { className: "HelpDialog__key", ...A }), sFA = ({ onClose: A }) => {
  let u = kA.useCallback(() => {
    A && A();
  }, [A]);
  return r.jsx(r.Fragment, { children: r.jsxs(mB, { onCloseRequest: u, title: S("helpDialog.title"), className: "HelpDialog", children: [r.jsx(IFA, {}), r.jsxs(oFA, { title: S("helpDialog.shortcuts"), children: [r.jsxs(oD, { className: "HelpDialog__island--tools", caption: S("helpDialog.tools"), children: [r.jsx(SA, { label: S("toolBar.hand"), shortcuts: [Z.H] }), r.jsx(SA, { label: S("toolBar.selection"), shortcuts: [Z.V, Z[1]] }), r.jsx(SA, { label: S("toolBar.rectangle"), shortcuts: [Z.R, Z[2]] }), r.jsx(SA, { label: S("toolBar.diamond"), shortcuts: [Z.D, Z[3]] }), r.jsx(SA, { label: S("toolBar.ellipse"), shortcuts: [Z.O, Z[4]] }), r.jsx(SA, { label: S("toolBar.arrow"), shortcuts: [Z.A, Z[5]] }), r.jsx(SA, { label: S("toolBar.line"), shortcuts: [Z.L, Z[6]] }), r.jsx(SA, { label: S("toolBar.freedraw"), shortcuts: [Z.P, Z[7]] }), r.jsx(SA, { label: S("toolBar.text"), shortcuts: [Z.T, Z[8]] }), r.jsx(SA, { label: S("toolBar.image"), shortcuts: [Z[9]] }), r.jsx(SA, { label: S("toolBar.eraser"), shortcuts: [Z.E, Z[0]] }), r.jsx(SA, { label: S("toolBar.frame"), shortcuts: [Z.F] }), r.jsx(SA, { label: S("toolBar.laser"), shortcuts: [Z.K] }), r.jsx(SA, { label: S("labels.eyeDropper"), shortcuts: [Z.I, "Shift+S", "Shift+G"] }), r.jsx(SA, { label: S("helpDialog.editLineArrowPoints"), shortcuts: [QA("CtrlOrCmd+Enter")] }), r.jsx(SA, { label: S("helpDialog.editText"), shortcuts: [QA("Enter")] }), r.jsx(SA, { label: S("helpDialog.textNewLine"), shortcuts: [QA("Enter"), QA("Shift+Enter")] }), r.jsx(SA, { label: S("helpDialog.textFinish"), shortcuts: [QA("Esc"), QA("CtrlOrCmd+Enter")] }), r.jsx(SA, { label: S("helpDialog.curvedArrow"), shortcuts: ["A", S("helpDialog.click"), S("helpDialog.click"), S("helpDialog.click")], isOr: !1 }), r.jsx(SA, { label: S("helpDialog.curvedLine"), shortcuts: ["L", S("helpDialog.click"), S("helpDialog.click"), S("helpDialog.click")], isOr: !1 }), r.jsx(SA, { label: S("helpDialog.cropStart"), shortcuts: [S("helpDialog.doubleClick"), QA("Enter")], isOr: !0 }), r.jsx(SA, { label: S("helpDialog.cropFinish"), shortcuts: [QA("Enter"), QA("Escape")], isOr: !0 }), r.jsx(SA, { label: S("toolBar.lock"), shortcuts: [Z.Q] }), r.jsx(SA, { label: S("helpDialog.preventBinding"), shortcuts: [QA("CtrlOrCmd")] }), r.jsx(SA, { label: S("toolBar.link"), shortcuts: [QA("CtrlOrCmd+K")] })] }), r.jsxs(oD, { className: "HelpDialog__island--view", caption: S("helpDialog.view"), children: [r.jsx(SA, { label: S("buttons.zoomIn"), shortcuts: [QA("CtrlOrCmd++")] }), r.jsx(SA, { label: S("buttons.zoomOut"), shortcuts: [QA("CtrlOrCmd+-")] }), r.jsx(SA, { label: S("buttons.resetZoom"), shortcuts: [QA("CtrlOrCmd+0")] }), r.jsx(SA, { label: S("helpDialog.zoomToFit"), shortcuts: ["Shift+1"] }), r.jsx(SA, { label: S("helpDialog.zoomToSelection"), shortcuts: ["Shift+2"] }), r.jsx(SA, { label: S("helpDialog.movePageUpDown"), shortcuts: ["PgUp/PgDn"] }), r.jsx(SA, { label: S("helpDialog.movePageLeftRight"), shortcuts: ["Shift+PgUp/PgDn"] }), r.jsx(SA, { label: S("buttons.zenMode"), shortcuts: [QA("Alt+Z")] }), r.jsx(SA, { label: S("buttons.objectsSnapMode"), shortcuts: [QA("Alt+S")] }), r.jsx(SA, { label: S("labels.toggleGrid"), shortcuts: [QA("CtrlOrCmd+'")] }), r.jsx(SA, { label: S("labels.viewMode"), shortcuts: [QA("Alt+R")] }), r.jsx(SA, { label: S("labels.toggleTheme"), shortcuts: [QA("Alt+Shift+D")] }), r.jsx(SA, { label: S("stats.fullTitle"), shortcuts: [QA("Alt+/")] }), r.jsx(SA, { label: S("search.title"), shortcuts: [De("searchMenu")] }), r.jsx(SA, { label: S("commandPalette.title"), shortcuts: vQ ? [De("commandPalette")] : [De("commandPalette"), De("commandPalette", 1)] })] }), r.jsxs(oD, { className: "HelpDialog__island--editor", caption: S("helpDialog.editor"), children: [r.jsx(SA, { label: S("helpDialog.createFlowchart"), shortcuts: [QA("CtrlOrCmd+Arrow Key")], isOr: !0 }), r.jsx(SA, { label: S("helpDialog.navigateFlowchart"), shortcuts: [QA("Alt+Arrow Key")], isOr: !0 }), r.jsx(SA, { label: S("labels.moveCanvas"), shortcuts: [QA(`Space+${S("helpDialog.drag")}`), QA(`Wheel+${S("helpDialog.drag")}`)], isOr: !0 }), r.jsx(SA, { label: S("buttons.clearReset"), shortcuts: [QA("CtrlOrCmd+Delete")] }), r.jsx(SA, { label: S("labels.delete"), shortcuts: [QA("Delete")] }), r.jsx(SA, { label: S("labels.cut"), shortcuts: [QA("CtrlOrCmd+X")] }), r.jsx(SA, { label: S("labels.copy"), shortcuts: [QA("CtrlOrCmd+C")] }), r.jsx(SA, { label: S("labels.paste"), shortcuts: [QA("CtrlOrCmd+V")] }), r.jsx(SA, { label: S("labels.pasteAsPlaintext"), shortcuts: [QA("CtrlOrCmd+Shift+V")] }), r.jsx(SA, { label: S("labels.selectAll"), shortcuts: [QA("CtrlOrCmd+A")] }), r.jsx(SA, { label: S("labels.multiSelect"), shortcuts: [QA(`Shift+${S("helpDialog.click")}`)] }), r.jsx(SA, { label: S("helpDialog.deepSelect"), shortcuts: [QA(`CtrlOrCmd+${S("helpDialog.click")}`)] }), r.jsx(SA, { label: S("helpDialog.deepBoxSelect"), shortcuts: [QA(`CtrlOrCmd+${S("helpDialog.drag")}`)] }), (z2 || vQ) && r.jsx(SA, { label: S("labels.copyAsPng"), shortcuts: [QA("Shift+Alt+C")] }), r.jsx(SA, { label: S("labels.copyStyles"), shortcuts: [QA("CtrlOrCmd+Alt+C")] }), r.jsx(SA, { label: S("labels.pasteStyles"), shortcuts: [QA("CtrlOrCmd+Alt+V")] }), r.jsx(SA, { label: S("labels.sendToBack"), shortcuts: [QA(_B ? "CtrlOrCmd+Alt+[" : "CtrlOrCmd+Shift+[")] }), r.jsx(SA, { label: S("labels.bringToFront"), shortcuts: [QA(_B ? "CtrlOrCmd+Alt+]" : "CtrlOrCmd+Shift+]")] }), r.jsx(SA, { label: S("labels.sendBackward"), shortcuts: [QA("CtrlOrCmd+[")] }), r.jsx(SA, { label: S("labels.bringForward"), shortcuts: [QA("CtrlOrCmd+]")] }), r.jsx(SA, { label: S("labels.alignTop"), shortcuts: [QA("CtrlOrCmd+Shift+Up")] }), r.jsx(SA, { label: S("labels.alignBottom"), shortcuts: [QA("CtrlOrCmd+Shift+Down")] }), r.jsx(SA, { label: S("labels.alignLeft"), shortcuts: [QA("CtrlOrCmd+Shift+Left")] }), r.jsx(SA, { label: S("labels.alignRight"), shortcuts: [QA("CtrlOrCmd+Shift+Right")] }), r.jsx(SA, { label: S("labels.duplicateSelection"), shortcuts: [QA("CtrlOrCmd+D"), QA(`Alt+${S("helpDialog.drag")}`)] }), r.jsx(SA, { label: S("helpDialog.toggleElementLock"), shortcuts: [QA("CtrlOrCmd+Shift+L")] }), r.jsx(SA, { label: S("buttons.undo"), shortcuts: [QA("CtrlOrCmd+Z")] }), r.jsx(SA, { label: S("buttons.redo"), shortcuts: Q8 ? [QA("CtrlOrCmd+Y"), QA("CtrlOrCmd+Shift+Z")] : [QA("CtrlOrCmd+Shift+Z")] }), r.jsx(SA, { label: S("labels.group"), shortcuts: [QA("CtrlOrCmd+G")] }), r.jsx(SA, { label: S("labels.ungroup"), shortcuts: [QA("CtrlOrCmd+Shift+G")] }), r.jsx(SA, { label: S("labels.flipHorizontal"), shortcuts: [QA("Shift+H")] }), r.jsx(SA, { label: S("labels.flipVertical"), shortcuts: [QA("Shift+V")] }), r.jsx(SA, { label: S("labels.showStroke"), shortcuts: [QA("S")] }), r.jsx(SA, { label: S("labels.showBackground"), shortcuts: [QA("G")] }), r.jsx(SA, { label: S("labels.showFonts"), shortcuts: [QA("Shift+F")] }), r.jsx(SA, { label: S("labels.decreaseFontSize"), shortcuts: [QA("CtrlOrCmd+Shift+<")] }), r.jsx(SA, { label: S("labels.increaseFontSize"), shortcuts: [QA("CtrlOrCmd+Shift+>")] })] })] })] }) });
}, lFA = 4, cFA = 8, dFA = ({ shouldWrap: A, children: u, username: e }) => A ? r.jsx(HE, { label: e || "Unknown user", children: u }) : r.jsx(r.Fragment, { children: u }), QD = ({ actionManager: A, collaborator: u, socketId: e, withName: C = !1, shouldWrapWithTooltip: B = !1, isBeingFollowed: g }) => {
  let t = { socketId: e, collaborator: u, withName: C, isBeingFollowed: g }, i = A.renderAction("goToCollaborator", t);
  return r.jsx(dFA, { username: u.username, shouldWrap: B, children: i }, e);
}, DFA = ["avatarUrl", "id", "socketId", "username", "isInCall", "isSpeaking", "isMuted"], Nf = kA.memo(({ className: A, mobile: u, collaborators: e, userToFollow: C }) => {
  let B = $e(), g = /* @__PURE__ */ new Map();
  e.forEach((c, D) => {
    let h = c.id || D;
    g.set(h, { ...c, socketId: D });
  });
  let t = Array.from(g.values()).filter((c) => c.username?.trim()), [i, I] = kA.useState(""), o = t.filter((c) => c.username?.toLowerCase().includes(i)), E = kA.useRef(null);
  x.useLayoutEffect(() => {
    if (E.current) {
      let c = (h) => {
        let F = Math.max(1, Math.min(8, Math.floor(h / 38)));
        s(F);
      };
      if (c(E.current.clientWidth), !MD) return;
      let D = new ResizeObserver((h) => {
        for (let F of h) {
          let { width: m } = F.contentRect;
          c(m);
        }
      });
      return D.observe(E.current), () => {
        D.disconnect();
      };
    }
  }, []);
  let [Q, s] = kA.useState(lFA), l = t.slice(0, Q - 1).map((c) => QD({ actionManager: B, collaborator: c, socketId: c.socketId, shouldWrapWithTooltip: !0, isBeingFollowed: c.socketId === C }));
  return u ? r.jsx("div", { className: NA("UserList UserList_mobile", A), children: t.map((c) => QD({ actionManager: B, collaborator: c, socketId: c.socketId, shouldWrapWithTooltip: !0, isBeingFollowed: c.socketId === C })) }) : r.jsx("div", { className: "UserList__wrapper", ref: E, children: r.jsxs("div", { className: NA("UserList", A), style: { "--max-avatars": Q }, children: [l, t.length > Q - 1 && r.jsxs(v4, { children: [r.jsxs(H4, { className: "UserList__more", children: ["+", t.length - Q + 1] }), r.jsx(p9, { style: { zIndex: 2, width: "15rem", textAlign: "left" }, align: "end", sideOffset: 10, children: r.jsxs(cB, { padding: 2, children: [t.length >= cFA && r.jsx(YG, { placeholder: S("quickSearch.placeholder"), onChange: I }), r.jsx(vG, { className: "dropdown-menu UserList__collaborators", placeholder: S("userList.empty"), children: o.length > 0 ? [r.jsx("div", { className: "hint", children: S("userList.hint.text") }), o.map((c) => QD({ actionManager: B, collaborator: c, socketId: c.socketId, withName: !0, isBeingFollowed: c.socketId === C }))] : [] }), r.jsx(eG, { width: 20, height: 10, style: { fill: "var(--popup-bg-color)", filter: "drop-shadow(rgba(0, 0, 0, 0.05) 0px 3px 2px)" } })] }) })] })] }) });
}, (A, u) => {
  if (A.collaborators.size !== u.collaborators.size || A.mobile !== u.mobile || A.className !== u.className || A.userToFollow !== u.userToFollow) return !1;
  let e = u.collaborators.keys();
  for (let [C, B] of A.collaborators) {
    let g = u.collaborators.get(C);
    if (!g || C !== e.next().value || !Ee(B, g, DFA)) return !1;
  }
  return !0;
}), Nm = ({ children: A, color: u }) => r.jsx("div", { className: "Card", style: { "--card-color": u === "primary" ? "var(--color-primary)" : X0[u][7], "--card-color-darker": u === "primary" ? "var(--color-primary-darker)" : X0[u][8], "--card-color-darkest": u === "primary" ? "var(--color-primary-darkest)" : X0[u][9] }, children: A }), hFA = ({ elements: A, appState: u, setAppState: e, files: C, actionManager: B, exportOpts: g, canvas: t, onCloseRequest: i }) => {
  let { onExportToBackend: I } = g;
  return r.jsx("div", { className: "ExportDialog ExportDialog--json", children: r.jsxs("div", { className: "ExportDialog-cards", children: [g.saveFileToDisk && r.jsxs(Nm, { color: "lime", children: [r.jsx("div", { className: "Card-icon", children: dIA }), r.jsx("h2", { children: S("exportDialog.disk_title") }), r.jsxs("div", { className: "Card-details", children: [S("exportDialog.disk_details"), !_l && B.renderAction("changeProjectName")] }), r.jsx(cu, { className: "Card-button", type: "button", title: S("exportDialog.disk_button"), "aria-label": S("exportDialog.disk_button"), showAriaLabel: !0, onClick: () => {
    B.executeAction(PG, "ui");
  } })] }), I && r.jsxs(Nm, { color: "pink", children: [r.jsx("div", { className: "Card-icon", children: zD }), r.jsx("h2", { children: S("exportDialog.link_title") }), r.jsx("div", { className: "Card-details", children: S("exportDialog.link_details") }), r.jsx(cu, { className: "Card-button", type: "button", title: S("exportDialog.link_button"), "aria-label": S("exportDialog.link_button"), showAriaLabel: !0, onClick: async () => {
    try {
      zu("export", "link", `ui (${maA()})`), await I(A, u, C), i();
    } catch (o) {
      e({ errorMessage: o.message });
    }
  } })] }), g.renderCustomUI && g.renderCustomUI(A, u, C, t)] }) });
}, wFA = ({ elements: A, appState: u, files: e, actionManager: C, exportOpts: B, canvas: g, setAppState: t }) => {
  let i = kA.useCallback(() => {
    t({ openDialog: null });
  }, [t]);
  return r.jsx(r.Fragment, { children: u.openDialog?.name === "jsonExport" && r.jsx(mB, { onCloseRequest: i, title: S("buttons.export"), children: r.jsx(hFA, { elements: A, appState: u, setAppState: t, files: e, actionManager: C, onCloseRequest: i, exportOpts: B, canvas: g }) }) });
}, FFA = (A) => r.jsx("button", { className: "help-icon", onClick: A.onClick, type: "button", title: `${S("helpDialog.title")} — ?`, "aria-label": S("helpDialog.title"), children: r2 }), Rf = ({ appState: A, actionManager: u, showExitZenModeBtn: e, renderWelcomeScreen: C }) => {
  let { FooterCenterTunnel: B, WelcomeScreenHelpHintTunnel: g } = sC(), t = J0(), i = !A.viewModeEnabled && A.multiElement && t.isTouchScreen;
  return r.jsxs("footer", { role: "contentinfo", className: "layer-ui__wrapper__footer App-menu App-menu_bottom", children: [r.jsx("div", { className: NA("layer-ui__wrapper__footer-left zen-mode-transition", { "layer-ui__wrapper__footer-left--transition-left": A.zenModeEnabled }), children: r.jsx(GC.Col, { gap: 2, children: r.jsxs(Bn, { heading: "canvasActions", children: [r.jsx(ywA, { renderAction: u.renderAction, zoom: A.zoom }), !A.viewModeEnabled && r.jsx(bwA, { renderAction: u.renderAction, className: NA("zen-mode-transition", { "layer-ui__wrapper__footer-left--transition-bottom": A.zenModeEnabled }) }), i && r.jsx(GwA, { renderAction: u.renderAction, className: NA("zen-mode-transition", { "layer-ui__wrapper__footer-left--transition-left": A.zenModeEnabled }) })] }) }) }), r.jsx(B.Out, {}), r.jsx("div", { className: NA("layer-ui__wrapper__footer-right zen-mode-transition", { "transition-right": A.zenModeEnabled }), children: r.jsxs("div", { style: { position: "relative" }, children: [C && r.jsx(g.Out, {}), r.jsx(FFA, { onClick: () => u.executeAction(M9) })] }) }), r.jsx(UwA, { actionManager: u, showExitZenModeBtn: e })] });
}, pFA = Rf;
Rf.displayName = "Footer";
var Mf = kA.createContext({}), Yf = ({ children: A, className: u }) => {
  let e = J0(), C = x.useContext(Mf), B = !!(e.editor.canFitSidebar && C.shouldRenderDockButton);
  return r.jsxs("div", { className: NA("sidebar__header", u), "data-testid": "sidebar-header", children: [A, r.jsxs("div", { className: "sidebar__header__buttons", children: [B && r.jsx(HE, { label: S("labels.sidebarLock"), children: r.jsx(hI, { onSelect: () => C.onDock?.(!C.docked), selected: !!C.docked, className: "sidebar__dock", "data-testid": "sidebar-dock", "aria-label": S("labels.sidebarLock"), children: VaA }) }), r.jsx(hI, { "data-testid": "sidebar-close", className: "sidebar__close", onSelect: C.onCloseRequest, "aria-label": S("buttons.close"), children: yI })] })] });
};
Yf.displayName = "SidebarHeader";
var vf = ({ name: A, tab: u, icon: e, title: C, children: B, onToggle: g, className: t, style: i }) => {
  let I = Z0(), o = xe();
  return r.jsxs("label", { title: C, className: "sidebar-trigger__label-element", children: [r.jsx("input", { className: "ToolIcon_type_checkbox", type: "checkbox", onChange: (E) => {
    document.querySelector(".layer-ui__wrapper")?.classList.remove("animate");
    let Q = E.target.checked;
    I({ openSidebar: Q ? { name: A, tab: u } : null }), g?.(Q);
  }, checked: o.openSidebar?.name === A, "aria-label": C, "aria-keyshortcuts": "0" }), r.jsxs("div", { className: NA("sidebar-trigger", t), style: i, children: [e && r.jsx("div", { children: e }), B && r.jsx("div", { className: "sidebar-trigger__label", children: B })] })] });
};
vf.displayName = "SidebarTrigger";
var Hf = ({ children: A, ...u }) => r.jsx(cG, { className: "sidebar-triggers", ...u, children: A });
Hf.displayName = "SidebarTabTriggers";
var Kf = ({ children: A, tab: u, onSelect: e, ...C }) => r.jsx(dG, { value: u, asChild: !0, onSelect: e, children: r.jsx("button", { type: "button", className: "excalidraw-button sidebar-tab-trigger", ...C, children: A }) });
Kf.displayName = "SidebarTabTrigger";
var Jf = ({ children: A, ...u }) => {
  let e = xe(), C = Z0();
  if (!e.openSidebar) return null;
  let { name: B } = e.openSidebar;
  return r.jsx(lG, { className: "sidebar-tabs-root", value: e.openSidebar.tab, onValueChange: (g) => C((t) => ({ ...t, openSidebar: { ...t.openSidebar, name: B, tab: g } })), ...u, children: A });
};
Jf.displayName = "SidebarTabs";
var Zf = ({ tab: A, children: u, ...e }) => r.jsx(DG, { ...e, value: A, "data-testid": A, children: u });
Zf.displayName = "SidebarTab";
var K9 = $0(!1), qf = x.forwardRef(({ name: A, children: u, onDock: e, docked: C, className: B, ...g }, t) => {
  tu.DEV && e && C == null && console.warn("Sidebar: `docked` must be set when `onDock` is supplied for the sidebar to be user-dockable. To hide this message, either pass `docked` or remove `onDock`");
  let i = Z0(), I = K4(K9);
  x.useLayoutEffect(() => (I(!!C), () => {
    I(!1);
  }), [I, C]);
  let o = x.useRef({});
  o.current.onCloseRequest = () => {
    i({ openSidebar: null });
  }, o.current.onDock = (l) => e?.(l), o.current = Ls(o.current, { docked: C, shouldRenderDockButton: !!e && C != null });
  let E = x.useRef(null);
  x.useImperativeHandle(t, () => E.current);
  let Q = J0(), s = x.useCallback(() => {
    document.querySelector(".Dialog") || i({ openSidebar: null });
  }, [i]);
  return f9(E, x.useCallback((l) => {
    l.target.closest(".sidebar-trigger") || (!C || !Q.editor.canFitSidebar) && s();
  }, [s, C, Q.editor.canFitSidebar])), x.useEffect(() => {
    let l = (c) => {
      c.key === Z.ESCAPE && (!C || !Q.editor.canFitSidebar) && s();
    };
    return document.addEventListener("keydown", l), () => {
      document.removeEventListener("keydown", l);
    };
  }, [s, C, Q.editor.canFitSidebar]), r.jsx(cB, { ...g, className: NA("sidebar", { "sidebar--docked": C }, B), ref: E, children: r.jsx(Mf.Provider, { value: o.current, children: u }) });
});
qf.displayName = "SidebarInner";
var HB = Object.assign(x.forwardRef((A, u) => {
  let e = xe(), { onStateChange: C } = A, B = x.useRef(e.openSidebar);
  x.useEffect(() => {
    (!e.openSidebar && B?.current?.name === A.name || e.openSidebar?.name === A.name && B?.current?.name !== A.name || B.current?.name === A.name) && e.openSidebar !== B.current && C?.(e.openSidebar?.name !== A.name ? null : e.openSidebar), B.current = e.openSidebar;
  }, [e.openSidebar, C, A.name]);
  let [g, t] = x.useState(!1);
  return x.useLayoutEffect(() => (t(!0), () => t(!1)), []), g && e.openSidebar?.name === A.name ? x.createElement(qf, { ...A, ref: u, key: A.name }) : null;
}), { Header: Yf, TabTriggers: Hf, TabTrigger: Kf, Tabs: Jf, Tab: Zf, Trigger: vf });
HB.displayName = "Sidebar";
var Wf = {};
I7(Wf, { ChangeCanvasBackground: () => uL, ClearCanvas: () => $f, CommandPalette: () => Vf, Export: () => eL, Help: () => _f, LiveCollaborationTrigger: () => BL, LoadScene: () => zf, SaveAsImage: () => Of, SaveToActiveFile: () => Pf, SearchMenu: () => Xf, Socials: () => CL, ToggleTheme: () => AL });
var jf = $0({ active: !1 });
async function mFA({ title: A, description: u, actionLabel: e, color: C }) {
  return new Promise((B) => {
    QB.set(jf, { active: !0, onConfirm: () => B(!0), onClose: () => B(!1), onReject: () => B(!1), title: A, description: u, actionLabel: e, color: C });
  });
}
var Tf = ({ value: A, shortcut: u, onChange: e, choices: C, children: B, name: g }) => {
  let t = J0();
  return r.jsxs(r.Fragment, { children: [r.jsxs("div", { className: "dropdown-menu-item-base dropdown-menu-item-bare", children: [r.jsx("label", { className: "dropdown-menu-item__text", htmlFor: g, children: B }), r.jsx(yf, { name: g, value: A, onChange: e, choices: C })] }), u && !t.editor.isMobile && r.jsx("div", { className: "dropdown-menu-item__shortcut dropdown-menu-item__shortcut--orphaned", children: u })] });
};
Tf.displayName = "DropdownMenuItemContentRadio";
var kFA = Tf, zf = () => {
  let { t: A } = Fe(), u = $e(), e = V4();
  return u.isActionEnabled(x1) ? r.jsx(vC, { icon: s2, onSelect: async () => {
    (!e.length || await mFA({ title: A("overwriteConfirm.modal.loadFromFile.title"), actionLabel: A("overwriteConfirm.modal.loadFromFile.button"), color: "warning", description: r.jsx(OB, { i18nKey: "overwriteConfirm.modal.loadFromFile.description", bold: (C) => r.jsx("strong", { children: C }), br: () => r.jsx("br", {}) }) })) && u.executeAction(x1);
  }, "data-testid": "load-button", shortcut: De("loadScene"), "aria-label": A("buttons.load"), children: A("buttons.load") }) : null;
};
zf.displayName = "LoadScene";
var Pf = () => {
  let { t: A } = Fe(), u = $e();
  return u.isActionEnabled(tm) ? r.jsx(vC, { shortcut: De("saveScene"), "data-testid": "save-button", onSelect: () => u.executeAction(tm), icon: sIA, "aria-label": `${A("buttons.save")}`, children: `${A("buttons.save")}` }) : null;
};
Pf.displayName = "SaveToActiveFile";
var Of = () => {
  let A = Z0(), { t: u } = Fe();
  return r.jsx(vC, { icon: j8, "data-testid": "image-export-button", onSelect: () => A({ openDialog: { name: "imageExport" } }), shortcut: De("imageExport"), "aria-label": u("buttons.exportImage"), children: u("buttons.exportImage") });
};
Of.displayName = "SaveAsImage";
var Vf = (A) => {
  let u = Z0(), { t: e } = Fe();
  return r.jsx(vC, { icon: ek, "data-testid": "command-palette-button", onSelect: () => {
    zu("command_palette", "open", "menu"), u({ openDialog: { name: "commandPalette" } });
  }, shortcut: De("commandPalette"), "aria-label": e("commandPalette.title"), className: A?.className, children: e("commandPalette.title") });
};
Vf.displayName = "CommandPalette";
var Xf = (A) => {
  let { t: u } = Fe(), e = $e();
  return r.jsx(vC, { icon: SE, "data-testid": "search-menu-button", onSelect: () => {
    e.executeAction(pf);
  }, shortcut: De("searchMenu"), "aria-label": u("search.title"), className: A?.className, children: u("search.title") });
};
Xf.displayName = "SearchMenu";
var _f = () => {
  let { t: A } = Fe(), u = $e();
  return r.jsx(vC, { "data-testid": "help-menu-item", icon: r2, onSelect: () => u.executeAction(M9), shortcut: "?", "aria-label": A("helpDialog.title"), children: A("helpDialog.title") });
};
_f.displayName = "Help";
var $f = () => {
  let { t: A } = Fe(), u = K4(O4);
  return $e().isActionEnabled(kQ) ? r.jsx(vC, { icon: xE, onSelect: () => u("clearCanvas"), "data-testid": "clear-canvas-button", "aria-label": A("buttons.clearReset"), children: A("buttons.clearReset") }) : null;
};
$f.displayName = "ClearCanvas";
var AL = (A) => {
  let { t: u } = Fe(), e = xe(), C = $e(), B = De("toggleTheme");
  return C.isActionEnabled(Tl) ? A?.allowSystemTheme ? r.jsx(kFA, { name: "theme", value: A.theme, onChange: (g) => A.onSelect(g), choices: [{ value: su.LIGHT, label: TD, ariaLabel: `${u("buttons.lightMode")} - ${B}` }, { value: su.DARK, label: jD, ariaLabel: `${u("buttons.darkMode")} - ${B}` }, { value: "system", label: yoA, ariaLabel: u("buttons.systemMode") }], children: u("labels.theme") }) : r.jsx(vC, { onSelect: (g) => {
    if (g.preventDefault(), A?.onSelect) A.onSelect(e.theme === su.DARK ? su.LIGHT : su.DARK);
    else return C.executeAction(Tl);
  }, icon: e.theme === su.DARK ? TD : jD, "data-testid": "toggle-dark-mode", shortcut: B, "aria-label": e.theme === su.DARK ? u("buttons.lightMode") : u("buttons.darkMode"), children: e.theme === su.DARK ? u("buttons.lightMode") : u("buttons.darkMode") }) : null;
};
AL.displayName = "ToggleTheme";
var uL = () => {
  let { t: A } = Fe(), u = xe(), e = $e(), C = yn();
  return u.viewModeEnabled || !C.UIOptions.canvasActions.changeViewBackgroundColor ? null : r.jsxs("div", { style: { marginTop: "0.5rem" }, children: [r.jsx("div", { "data-testid": "canvas-background-label", style: { fontSize: ".75rem", marginBottom: ".5rem" }, children: A("labels.canvasBackground") }), r.jsx("div", { style: { padding: "0 0.625rem" }, children: e.renderAction("changeViewBackgroundColor") })] });
};
uL.displayName = "ChangeCanvasBackground";
var eL = () => {
  let { t: A } = Fe(), u = Z0();
  return r.jsx(vC, { icon: Q4, onSelect: () => {
    u({ openDialog: { name: "jsonExport" } });
  }, "data-testid": "json-export-button", "aria-label": A("buttons.export"), children: A("buttons.export") });
};
eL.displayName = "Export";
var CL = () => {
  let { t: A } = Fe();
  return r.jsxs(r.Fragment, { children: [r.jsx(Xs, { icon: W8, href: "https://github.com/excalidraw/excalidraw", "aria-label": "GitHub", children: "GitHub" }), r.jsx(Xs, { icon: nIA, href: "https://x.com/excalidraw", "aria-label": "X", children: A("labels.followUs") }), r.jsx(Xs, { icon: QIA, href: "https://discord.gg/UexuTaE", "aria-label": "Discord", children: A("labels.discordChat") })] });
};
CL.displayName = "Socials";
var BL = ({ onSelect: A, isCollaborating: u }) => {
  let { t: e } = Fe();
  return r.jsx(vC, { "data-testid": "collab-button", icon: P8, className: NA({ "active-collab": u }), onSelect: A, children: e("labels.liveCollaboration") });
};
BL.displayName = "LiveCollaborationTrigger";
var mn = (A, u) => {
  let e = $0(0), C = (B) => {
    let { tunnelsJotai: { useAtom: g } } = sC(), [, t] = g(e), i = x.useRef({ preferHost: !1, counter: 0 });
    return x.useLayoutEffect(() => {
      let I = i.current;
      return t((o) => {
        let E = o + 1;
        return I.counter = E, E;
      }), () => {
        t((o) => {
          let E = o - 1;
          return I.counter = E, E || (I.preferHost = !1), E;
        });
      };
    }, [t]), B.__fallback || (i.current.preferHost = !0), !i.current.counter && B.__fallback && i.current.preferHost || i.current.counter > 1 && B.__fallback ? null : r.jsx(u, { ...B });
  };
  return C.displayName = A, C;
}, yFA = Object.assign(mn("MainMenu", ({ children: A, onSelect: u }) => {
  let { MainMenuTunnel: e } = sC(), C = J0(), B = xe(), g = Z0(), t = C.editor.isMobile ? void 0 : () => g({ openMenu: null });
  return r.jsx(e.In, { children: r.jsxs(u0, { open: B.openMenu === "canvas", children: [r.jsx(u0.Trigger, { onToggle: () => {
    g({ openMenu: B.openMenu === "canvas" ? null : "canvas" });
  }, "data-testid": "main-menu-trigger", className: "main-menu-trigger", children: q8 }), r.jsxs(u0.Content, { onClickOutside: t, onSelect: a4(u, () => {
    g({ openMenu: null });
  }), children: [A, C.editor.isMobile && B.collaborators.size > 0 && r.jsxs("fieldset", { className: "UserList-Wrapper", children: [r.jsx("legend", { children: S("labels.collaborators") }), r.jsx(Nf, { mobile: !0, collaborators: B.collaborators, userToFollow: B.userToFollow?.socketId || null })] })] })] }) });
}), { Trigger: u0.Trigger, Item: u0.Item, ItemLink: u0.ItemLink, ItemCustom: u0.ItemCustom, Group: u0.Group, Separator: u0.Separator, DefaultItems: Wf }), Ze = yFA, J9 = ({ title: A, children: u, actionLabel: e, onClick: C }) => r.jsxs("div", { className: "OverwriteConfirm__Actions__Action", children: [r.jsx("h4", { children: A }), r.jsx("div", { className: "OverwriteConfirm__Actions__Action__content", children: u }), r.jsx(UQ, { variant: "outlined", color: "muted", label: e, size: "large", fullWidth: !0, onClick: C })] }), bFA = () => {
  let { t: A } = Fe(), u = $e(), e = Z0();
  return r.jsx(J9, { title: A("overwriteConfirm.action.exportToImage.title"), actionLabel: A("overwriteConfirm.action.exportToImage.button"), onClick: () => {
    u.executeAction(zG, "ui", !0), e({ openDialog: { name: "imageExport" } });
  }, children: A("overwriteConfirm.action.exportToImage.description") });
}, UFA = () => {
  let { t: A } = Fe(), u = $e();
  return r.jsx(J9, { title: A("overwriteConfirm.action.saveToDisk.title"), actionLabel: A("overwriteConfirm.action.saveToDisk.button"), onClick: () => {
    u.executeAction(PG, "ui");
  }, children: A("overwriteConfirm.action.saveToDisk.description") });
}, Rm = Object.assign(({ children: A }) => r.jsx("div", { className: "OverwriteConfirm__Actions", children: A }), { ExportToImage: bFA, SaveToDisk: UFA }), nD = Object.assign(mn("OverwriteConfirmDialog", ({ children: A }) => {
  let { OverwriteConfirmDialogTunnel: u } = sC(), [e, C] = c0(jf);
  if (!e.active) return null;
  let B = () => {
    e.onClose(), C((t) => ({ ...t, active: !1 }));
  }, g = () => {
    e.onConfirm(), C((t) => ({ ...t, active: !1 }));
  };
  return r.jsx(u.In, { children: r.jsx(mB, { onCloseRequest: B, title: !1, size: 916, children: r.jsxs("div", { className: "OverwriteConfirm", children: [r.jsx("h3", { children: e.title }), r.jsxs("div", { className: `OverwriteConfirm__Description OverwriteConfirm__Description--color-${e.color}`, children: [r.jsx("div", { className: "OverwriteConfirm__Description__icon", children: aoA }), r.jsx("div", { children: e.description }), r.jsx("div", { className: "OverwriteConfirm__Description__spacer" }), r.jsx(UQ, { color: e.color, size: "large", label: e.actionLabel, onClick: g })] }), r.jsx(Rm, { children: A })] }) }) });
}), { Actions: Rm, Action: J9 }), GFA = $0(""), gL = $0(null), fFA = 350, LFA = () => {
  let A = Eg(), u = Z0(), e = x.useRef(null), [C, B] = c0(GFA), g = C.trim(), [t, i] = x.useState(!1), [I, o] = x.useState({ nonce: null, items: [] }), E = x.useRef(null), Q = x.useRef(void 0), [s, l] = c0(gL), c = A.scene.getNonDeletedElementsMap();
  x.useEffect(() => {
    t || (g !== E.current || A.scene.getSceneNonce() !== Q.current) && (E.current = null, Mm(g, A, (p, k) => {
      o({ nonce: ug(), items: p }), E.current = g, Q.current = A.scene.getSceneNonce(), u({ searchMatches: p.map((b) => ({ id: b.textElement.id, focus: !1, matchedLines: b.matchedLines })) });
    }));
  }, [t, g, c, A, u, l, Q]);
  let D = () => {
    I.items.length > 0 && l((p) => p === null ? 0 : (p + 1) % I.items.length);
  }, h = () => {
    I.items.length > 0 && l((p) => p === null ? 0 : p - 1 < 0 ? I.items.length - 1 : p - 1);
  };
  x.useEffect(() => {
    u((p) => ({ searchMatches: p.searchMatches.map((k, b) => b === s ? { ...k, focus: !0 } : { ...k, focus: !1 }) }));
  }, [s, u]), x.useEffect(() => {
    if (I.items.length > 0 && s !== null) {
      let p = I.items[s];
      if (p) {
        let k = A.state.zoom.value, b = nC({ text: p.searchQuery, x: p.textElement.x + (p.matchedLines[0]?.offsetX ?? 0), y: p.textElement.y + (p.matchedLines[0]?.offsetY ?? 0), width: p.matchedLines[0]?.width, height: p.matchedLines[0]?.height, fontSize: p.textElement.fontSize, fontFamily: p.textElement.fontFamily }), f = 14, L = p.textElement.fontSize, N = L * k < f;
        if (!qs([b], A.canvas.width / window.devicePixelRatio, A.canvas.height / window.devicePixelRatio, { offsetLeft: A.state.offsetLeft, offsetTop: A.state.offsetTop, scrollX: A.state.scrollX, scrollY: A.state.scrollY, zoom: A.state.zoom }, A.scene.getNonDeletedElementsMap(), A.getEditorUIOffsets()) || N) {
          let M;
          N ? L >= f ? M = { fitToContent: !0 } : M = { fitToViewport: !0, maxZoom: VB(f / L, 1) } : M = { fitToContent: !0 }, A.scrollToContent(b, { animate: !0, duration: 300, ...M, canvasOffsets: A.getEditorUIOffsets() });
        }
      }
    }
  }, [s, I, A]), x.useEffect(() => () => {
    l(null), E.current = null, Q.current = void 0, u({ searchMatches: [] }), i(!1);
  }, [u, l]);
  let F = Z4({ goToNextItem: D, goToPreviousItem: h, searchMatches: I });
  x.useEffect(() => B0(window, "keydown", (k) => {
    if (k.key === Z.ESCAPE && !A.state.openDialog && !A.state.openPopup) {
      k.preventDefault(), k.stopPropagation(), u({ openSidebar: null });
      return;
    }
    k[Z.CTRL_OR_CMD] && k.key === Z.F && (k.preventDefault(), k.stopPropagation(), e.current?.matches(":focus") ? u({ openSidebar: null }) : (A.state.openDialog && u({ openDialog: null }), e.current?.focus(), e.current?.select())), k.target instanceof HTMLElement && k.target.closest(".layer-ui__search") && F.searchMatches.items.length && (k.key === Z.ENTER && (k.stopPropagation(), F.goToNextItem()), k.key === Z.ARROW_UP ? (k.stopPropagation(), F.goToPreviousItem()) : k.key === Z.ARROW_DOWN && (k.stopPropagation(), F.goToNextItem()));
  }, { capture: !0, passive: !1 }), [u, F, A]);
  let m = `${I.items.length} ${I.items.length === 1 ? S("search.singleResult") : S("search.multipleResults")}`;
  return r.jsxs("div", { className: "layer-ui__search", children: [r.jsx("div", { className: "layer-ui__search-header", children: r.jsx(H9, { className: CI.SEARCH_MENU_INPUT_WRAPPER, value: C, ref: e, placeholder: S("search.placeholder"), icon: SE, onChange: (p) => {
    B(p), i(!0);
    let k = p.trim();
    Mm(k, A, (b, f) => {
      o({ nonce: ug(), items: b }), l(f), E.current = k, Q.current = A.scene.getSceneNonce(), u({ searchMatches: b.map((L) => ({ id: L.textElement.id, focus: !1, matchedLines: L.matchedLines })) }), i(!1);
    });
  }, selectOnRender: !0 }) }), r.jsxs("div", { className: "layer-ui__search-count", children: [I.items.length > 0 && r.jsxs(r.Fragment, { children: [s !== null && s > -1 ? r.jsxs("div", { children: [s + 1, " / ", m] }) : r.jsx("div", { children: m }), r.jsxs("div", { className: "result-nav", children: [r.jsx(hI, { onSelect: () => {
    D();
  }, className: "result-nav-btn", children: Bk }), r.jsx(hI, { onSelect: () => {
    h();
  }, className: "result-nav-btn", children: NoA })] })] }), I.items.length === 0 && g && E.current && r.jsx("div", { style: { margin: "1rem auto" }, children: S("search.noMatch") })] }), r.jsx(RFA, { matches: I, onItemClick: l, focusIndex: s, searchQuery: g })] });
}, xFA = (A) => {
  let u = [A.preview.moreBefore ? "..." : "", A.preview.previewText.slice(0, A.preview.indexInSearchQuery), A.preview.previewText.slice(A.preview.indexInSearchQuery, A.preview.indexInSearchQuery + A.searchQuery.length), A.preview.previewText.slice(A.preview.indexInSearchQuery + A.searchQuery.length), A.preview.moreAfter ? "..." : ""];
  return r.jsx("div", { tabIndex: -1, className: NA("layer-ui__result-item", { active: A.highlighted }), onClick: A.onClick, ref: (e) => {
    A.highlighted && e?.scrollIntoView({ behavior: "auto", block: "nearest" });
  }, children: r.jsx("div", { className: "preview-text", children: u.flatMap((e, C) => r.jsx(x.Fragment, { children: C === 2 ? r.jsx("b", { children: e }) : e }, C)) }) });
}, SFA = (A) => r.jsx("div", { className: "layer-ui__search-result-container", children: A.matches.items.map((u, e) => r.jsx(xFA, { searchQuery: A.searchQuery, preview: u.preview, highlighted: e === A.focusIndex, onClick: () => A.onItemClick(e) }, u.textElement.id + u.index)) }), NFA = (A, u) => A.matches.nonce === u.matches.nonce && A.focusIndex === u.focusIndex, RFA = x.memo(SFA, NFA), MFA = (A, u, e) => {
  let C = A.slice(0, u), B = C.split(/\s+/), g = C.endsWith(" "), t = B.length - 2 - 1 - (g ? 0 : 1), i = B.slice(t <= 0 ? 0 : t).join(" ") + (g ? " " : ""), I = 20;
  i = i.length > I ? i.slice(-I) : i;
  let o = A.slice(u + e.length), E = o.split(/\s+/), Q = !o.startsWith(" "), s = Q ? 6 : 5, l = (Q ? "" : " ") + E.slice(0, s).join(" ");
  return { indexInSearchQuery: i.length, previewText: i + e + l, moreBefore: t > 0, moreAfter: E.length > s };
}, YFA = (A, u) => {
  let e = A.split(`
`), C = [], B = 0;
  for (let g = 0; g < e.length; g++) {
    let t = e[g], i = e[g + 1];
    if (i) {
      let I = u.indexOf(i, B);
      if (I > t.length + B) {
        let o = I - (t.length + B);
        for (; o > 0; ) t += " ", o--;
      }
    }
    C.push(t), B = B + t.length;
  }
  return C.join(`
`);
}, vFA = (A, u, e) => {
  let C = YFA(A.text, A.originalText).split(`
`), B = [], g = 0, t = 0;
  for (let E of C) {
    let Q = g, s = Q + E.length - 1;
    B.push({ line: E, startIndex: Q, endIndex: s, lineNumber: t }), g = s + 1, t++;
  }
  let i = e, I = A.originalText.slice(e, e + u.length), o = [];
  for (let E of B) {
    if (I === "") break;
    if (i >= E.startIndex && i <= E.endIndex) {
      let Q = E.endIndex + 1 - i, s = E.line.slice(0, i - E.startIndex), l = I.slice(0, Q);
      I = I.slice(Q);
      let c = we(s, vu(A), A.lineHeight);
      if (s === "" && (c.width = 0), A.textAlign !== "left" && E.line.length > 0) {
        let p = we(E.line, vu(A), A.lineHeight), k = A.textAlign === "center" ? (A.width - p.width) / 2 : A.width - p.width;
        c.width += k;
      }
      let { width: D, height: h } = we(l, vu(A), A.lineHeight), F = c.width, m = E.lineNumber * c.height;
      o.push({ offsetX: F, offsetY: m, width: D, height: h }), i += Q;
    }
  }
  return o;
}, HFA = (A) => A.replace(/[.*+?^${}()|[\]\\-]/g, "\\$&"), Mm = G9A((A, u, e) => {
  if (!A || A === "") {
    e([], null);
    return;
  }
  let C = u.scene.getNonDeletedElements().filter((I) => UA(I));
  C.sort((I, o) => I.y - o.y);
  let B = [], g = new RegExp(HFA(A), "gi");
  for (let I of C) {
    let o = null, E = I.originalText;
    for (; (o = g.exec(E)) !== null; ) {
      let Q = MFA(E, o.index, A), s = vFA(I, A, o.index);
      s.length > 0 && B.push({ textElement: I, searchQuery: A, preview: Q, index: o.index, matchedLines: s });
    }
  }
  let t = new Set(u.visibleElements.map((I) => I.id)), i = B.findIndex((I) => t.has(I.textElement.id)) ?? null;
  e(B, i);
}, fFA), tL = mn("DefaultSidebarTrigger", (A) => {
  let { DefaultSidebarTriggerTunnel: u } = sC();
  return r.jsx(u.In, { children: r.jsx(HB.Trigger, { ...A, className: "default-sidebar-trigger", name: rB.name }) });
});
tL.displayName = "DefaultSidebarTrigger";
var iL = ({ children: A }) => {
  let { DefaultSidebarTabTriggersTunnel: u } = sC();
  return r.jsx(u.In, { children: A });
};
iL.displayName = "DefaultTabTriggers";
var Ym = Object.assign(mn("DefaultSidebar", ({ children: A, className: u, onDock: e, docked: C, ...B }) => {
  let g = xe(), t = Z0(), { DefaultSidebarTabTriggersTunnel: i } = sC(), I = g.openSidebar?.tab === Xa;
  return x.createElement(HB, { ...B, name: "default", key: "default", className: NA("default-sidebar", u), docked: I || (C ?? g.defaultSidebarDockedPreference), onDock: I || e === !1 || !e && C != null ? void 0 : a4(e, (o) => {
    t({ defaultSidebarDockedPreference: o });
  }) }, r.jsxs(HB.Tabs, { children: [r.jsx(HB.Header, { children: r.jsxs(HB.TabTriggers, { children: [r.jsx(HB.TabTrigger, { tab: Xa, children: SE }), r.jsx(HB.TabTrigger, { tab: ol, children: Q2 }), r.jsx(i.Out, {})] }) }), r.jsx(HB.Tab, { tab: ol, children: r.jsx(nwA, {}) }), r.jsx(HB.Tab, { tab: Xa, children: r.jsx(LFA, {}) }), A] }));
}), { Trigger: tL, TabTriggers: iL }), KFA = "small", JFA = (A) => r.jsxs("label", { className: NA("ToolIcon ToolIcon__LaserPointer", `ToolIcon_size_${KFA}`, { "is-mobile": A.isMobile }), title: `${A.title}`, children: [r.jsx("input", { className: "ToolIcon_type_checkbox", type: "checkbox", name: A.name, onChange: A.onChange, checked: A.checked, "aria-label": A.title, "data-testid": "toolbar-LaserPointer" }), r.jsx("div", { className: "ToolIcon__icon", children: Ak })] }), ZFA = ({ canvasRef: A, setError: u }) => {
  let e = A.current;
  if (!e) return;
  let C = e.parentElement;
  C && (C.style.background = "", u(null), e.replaceChildren());
}, EL = async ({ canvasRef: A, mermaidToExcalidrawLib: u, mermaidDefinition: e, setError: C, data: B }) => {
  let g = A.current, t = g?.parentElement;
  if (!(!g || !t)) {
    if (!e) {
      ZFA({ canvasRef: A, setError: C });
      return;
    }
    try {
      let i = await u.api, I;
      try {
        I = await i.parseMermaidToExcalidraw(e);
      } catch {
        I = await i.parseMermaidToExcalidraw(e.replace(/"/g, "'"));
      }
      let { elements: o, files: E } = I;
      C(null), B.current = { elements: W1(o, { regenerateIds: !0 }), files: E };
      let Q = await P2({ elements: B.current.elements, files: B.current.files, exportPadding: pI, maxWidthOrHeight: Math.max(t.offsetWidth, t.offsetHeight) * window.devicePixelRatio });
      try {
        await An(Q);
      } catch (s) {
        throw s.name === "CANVAS_POSSIBLY_TOO_BIG" ? new Error(S("canvasError.canvasTooBig")) : s;
      }
      t.style.background = "var(--default-bg-color)", g.replaceChildren(Q);
    } catch (i) {
      throw t.style.background = "var(--default-bg-color)", e && C(i), i;
    }
  }
}, Z9 = (A) => {
  pE.set(rQ.MERMAID_TO_EXCALIDRAW, A);
}, aL = ({ app: A, data: u, text: e, shouldSaveMermaidDataToStorage: C }) => {
  let { elements: B, files: g } = u.current;
  B.length && (A.addElementsFromPasteOrLibrary({ elements: B, files: g, position: "center", fitToContent: !0 }), A.setOpenDialog(null), C && e && Z9(e));
}, IL = ({ children: A }) => r.jsx("div", { className: "ttd-dialog-panels", children: A }), Ol = ({ label: A, children: u, panelAction: e, panelActionDisabled: C = !1, onTextSubmitInProgess: B, renderTopRight: g, renderSubmitShortcut: t, renderBottomRight: i }) => r.jsxs("div", { className: "ttd-dialog-panel", children: [r.jsxs("div", { className: "ttd-dialog-panel__header", children: [r.jsx("label", { children: A }), g?.()] }), u, r.jsxs("div", { className: NA("ttd-dialog-panel-button-container", { invisible: !e }), style: { display: "flex", alignItems: "center" }, children: [r.jsxs(hI, { className: "ttd-dialog-panel-button", onSelect: e ? e.action : () => {
}, disabled: C || B, children: [r.jsxs("div", { className: NA({ invisible: B }), children: [e?.label, e?.icon && r.jsx("span", { children: e.icon })] }), B && r.jsx($g, {})] }), !C && !B && t?.(), i?.()] })] }), oL = ({ input: A, placeholder: u, onChange: e, onKeyboardSubmit: C }) => {
  let B = x.useRef(null), g = x.useRef(C);
  return g.current = C, x.useEffect(() => {
    if (!g.current) return;
    let t = B.current;
    if (t) {
      let i = (I) => {
        I[Z.CTRL_OR_CMD] && I.key === Z.ENTER && (I.preventDefault(), g.current?.());
      };
      return t.addEventListener("keydown", i), () => {
        t.removeEventListener("keydown", i);
      };
    }
  }, []), r.jsx("textarea", { className: "ttd-dialog-input", onChange: e, value: A, placeholder: u, autoFocus: !0, ref: B });
}, qFA = ({ error: A }) => r.jsxs("div", { "data-testid": "ttd-dialog-output-error", className: "ttd-dialog-output-error", children: ["Error! ", r.jsx("p", { children: A })] }), QL = ({ error: A, canvasRef: u, loaded: e }) => r.jsxs("div", { className: "ttd-dialog-output-wrapper", children: [A && r.jsx(qFA, { error: A.message }), e ? r.jsx("div", { ref: u, style: { opacity: A ? "0.15" : 1 }, className: "ttd-dialog-output-canvas-container" }) : r.jsx($g, { size: "2rem" })] }), nL = () => r.jsxs("div", { className: "ttd-dialog-submit-shortcut", children: [r.jsx("div", { className: "ttd-dialog-submit-shortcut__key", children: QA("CtrlOrCmd") }), r.jsx("div", { className: "ttd-dialog-submit-shortcut__key", children: QA("Enter") })] }), WFA = `flowchart TD
 A[Christmas] -->|Get money| B(Go shopping)
 B --> C{Let me think}
 C -->|One| D[Laptop]
 C -->|Two| E[iPhone]
 C -->|Three| F[Car]`, vm = tI(Z9, 300), jFA = ({ mermaidToExcalidrawLib: A }) => {
  let [u, e] = x.useState(() => pE.get(rQ.MERMAID_TO_EXCALIDRAW) || WFA), C = x.useDeferredValue(u.trim()), [B, g] = x.useState(null), t = x.useRef(null), i = x.useRef({ elements: [], files: null }), I = Eg();
  x.useEffect(() => {
    EL({ canvasRef: t, data: i, mermaidToExcalidrawLib: A, setError: g, mermaidDefinition: C }).catch((E) => {
      f8() && console.error("Failed to parse mermaid definition", E);
    }), vm(C);
  }, [C, A]), x.useEffect(() => () => {
    vm.flush();
  }, []);
  let o = () => {
    aL({ app: I, data: i, text: u, shouldSaveMermaidDataToStorage: !0 });
  };
  return r.jsxs(r.Fragment, { children: [r.jsx("div", { className: "ttd-dialog-desc", children: r.jsx(OB, { i18nKey: "mermaid.description", flowchartLink: (E) => r.jsx("a", { href: "https://mermaid.js.org/syntax/flowchart.html", children: E }), sequenceLink: (E) => r.jsx("a", { href: "https://mermaid.js.org/syntax/sequenceDiagram.html", children: E }), classLink: (E) => r.jsx("a", { href: "https://mermaid.js.org/syntax/classDiagram.html", children: E }) }) }), r.jsxs(IL, { children: [r.jsx(Ol, { label: S("mermaid.syntax"), children: r.jsx(oL, { input: u, placeholder: "Write Mermaid diagram defintion here...", onChange: (E) => e(E.target.value), onKeyboardSubmit: () => {
    o();
  } }) }), r.jsx(Ol, { label: S("mermaid.preview"), panelAction: { action: () => {
    o();
  }, label: S("mermaid.button"), icon: Ns }, renderSubmitShortcut: () => r.jsx(nL, {}), children: r.jsx(QL, { canvasRef: t, loaded: A.loaded, error: B }) })] })] });
}, TFA = jFA, rL = (A) => {
  let u = Z0(), e = x.useRef(null), C = x.useRef(0);
  return r.jsx(lG, { ref: e, className: "ttd-dialog-tabs-root", value: A.tab, onValueChange: (B) => {
    if (!B) return;
    let g = e.current?.closest(".Modal__content");
    if (g) {
      let t = g.offsetHeight || 0;
      t > C.current && (C.current = t, g.style.minHeight = `min(${C.current}px, 100%)`);
    }
    A.dialog === "ttd" && x8(["text-to-diagram", "mermaid"], B) && u({ openDialog: { name: A.dialog, tab: B } });
  }, children: A.children });
};
rL.displayName = "TTDDialogTabs";
var zFA = rL, sL = ({ children: A, ...u }) => r.jsx(cG, { className: "ttd-dialog-triggers", ...u, children: A });
sL.displayName = "TTDDialogTabTriggers";
var J1 = ({ children: A, tab: u, onSelect: e, ...C }) => r.jsx(dG, { value: u, asChild: !0, onSelect: e, children: r.jsx("button", { type: "button", className: "ttd-dialog-tab-trigger", ...C, children: A }) });
J1.displayName = "TTDDialogTabTrigger";
var Z1 = ({ tab: A, children: u, ...e }) => r.jsx(DG, { ...e, value: A, children: u });
Z1.displayName = "TTDDialogTab";
var rD = 3, Ra = 1e3, PFA = $0(null), OFA = $0(null), VFA = (A) => {
  let u = xe();
  return u.openDialog?.name !== "ttd" ? null : r.jsx(XFA, { ...A, tab: u.openDialog.tab });
}, XFA = mn("TTDDialogBase", ({ tab: A, ...u }) => {
  let e = Eg(), C = Z0(), B = x.useRef(null), [g, t] = c0(OFA), [i, I] = x.useState(g?.prompt ?? ""), o = i.trim(), E = (f) => {
    I(f.target.value), t((L) => ({ generatedResponse: L?.generatedResponse ?? null, prompt: f.target.value }));
  }, [Q, s] = x.useState(!1), [l, c] = c0(PFA), D = async () => {
    if (o.length > Ra || o.length < rD || Q || l?.rateLimitRemaining === 0 || "__fallback" in u) {
      o.length < rD && b(new Error(`Prompt is too short (min ${rD} characters)`)), o.length > Ra && b(new Error(`Prompt is too long (max ${Ra} characters)`));
      return;
    }
    try {
      s(!0), zu("ai", "generate", "ttd");
      let { generatedResponse: f, error: L, rateLimit: N, rateLimitRemaining: M } = await u.onTextSubmit(o);
      if (typeof f == "string" && t((v) => ({ generatedResponse: f, prompt: v?.prompt ?? null })), sQ(N) && sQ(M) && c({ rateLimit: N, rateLimitRemaining: M }), L) {
        b(L);
        return;
      }
      if (!f) {
        b(new Error("Generation failed"));
        return;
      }
      try {
        await EL({ canvasRef: B, data: p, mermaidToExcalidrawLib: F, setError: b, mermaidDefinition: f }), zu("ai", "mermaid parse success", "ttd");
      } catch (v) {
        console.info(`%cTTD mermaid render errror: ${v.message}`, "color: red"), console.info(`>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TTD mermaid definition render errror: ${v.message}`, "color: yellow"), zu("ai", "mermaid parse failed", "ttd"), b(new Error("Generated an invalid diagram :(. You may also try a different prompt."));
      }
    } catch (f) {
      let L = f.message;
      (!L || L === "Failed to fetch") && (L = "Request failed"), b(new Error(L));
    } finally {
      s(!1);
    }
  }, h = x.useRef(D);
  h.current = D;
  let [F, m] = x.useState({ loaded: !1, api: import("./chunk-ZOUoCYTt.js") });
  x.useEffect(() => {
    (async () => (await F.api, m((f) => ({ ...f, loaded: !0 }))))();
  }, [F.api]);
  let p = x.useRef({ elements: [], files: null }), [k, b] = x.useState(null);
  return r.jsx(mB, { className: "ttd-dialog", onCloseRequest: () => {
    e.setOpenDialog(null);
  }, size: 1200, title: !1, ...u, autofocus: !1, children: r.jsxs(zFA, { dialog: "ttd", tab: A, children: ["__fallback" in u && u.__fallback ? r.jsx("p", { className: "dialog-mermaid-title", children: S("mermaid.title") }) : r.jsxs(sL, { children: [r.jsx(J1, { tab: "text-to-diagram", children: r.jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [S("labels.textToDiagram"), r.jsx("div", { style: { display: "flex", alignItems: "center", justifyContent: "center", padding: "1px 6px", marginLeft: "10px", fontSize: 10, borderRadius: "12px", background: "var(--color-promo)", color: "var(--color-surface-lowest)" }, children: "AI Beta" })] }) }), r.jsx(J1, { tab: "mermaid", children: "Mermaid" })] }), r.jsx(Z1, { className: "ttd-dialog-content", tab: "mermaid", children: r.jsx(TFA, { mermaidToExcalidrawLib: F }) }), !("__fallback" in u) && r.jsxs(Z1, { className: "ttd-dialog-content", tab: "text-to-diagram", children: [r.jsx("div", { className: "ttd-dialog-desc", children: "Currently we use Mermaid as a middle step, so you'll get best results if you describe a diagram, workflow, flow chart, and similar." }), r.jsxs(IL, { children: [r.jsx(Ol, { label: S("labels.prompt"), panelAction: { action: D, label: "Generate", icon: Ns }, onTextSubmitInProgess: Q, panelActionDisabled: o.length > Ra || l?.rateLimitRemaining === 0, renderTopRight: () => l ? r.jsxs("div", { className: "ttd-dialog-rate-limit", style: { fontSize: 12, marginLeft: "auto", color: l.rateLimitRemaining === 0 ? "var(--color-danger)" : void 0 }, children: [l.rateLimitRemaining, " requests left today"] }) : null, renderSubmitShortcut: () => r.jsx(nL, {}), renderBottomRight: () => {
    if (typeof g?.generatedResponse == "string") return r.jsxs("div", { className: "excalidraw-link", style: { marginLeft: "auto", fontSize: 14 }, onClick: () => {
      typeof g?.generatedResponse == "string" && (Z9(g.generatedResponse), C({ openDialog: { name: "ttd", tab: "mermaid" } }));
    }, children: ["View as Mermaid", r.jsx(W4, { icon: Ns })] });
    let f = o.length / Ra;
    return f > 0.8 ? r.jsxs("div", { style: { marginLeft: "auto", fontSize: 12, fontFamily: "monospace", color: f > 1 ? "var(--color-danger)" : void 0 }, children: ["Length: ", o.length, "/", Ra] }) : null;
  }, children: r.jsx(oL, { onChange: E, input: i, placeholder: "Describe what you want to see...", onKeyboardSubmit: () => {
    h.current();
  } }) }), r.jsx(Ol, { label: "Preview", panelAction: { action: () => {
    console.info("Panel action clicked"), aL({ app: e, data: p });
  }, label: "Insert", icon: Ns }, children: r.jsx(QL, { canvasRef: B, error: k, loaded: F.loaded }) })] })] })] }) });
}), _FA = 0.01, At = (A, u) => !(u === "height" && UA(A) || u === "width" && UA(A) || u === "angle" && OA(A)), ce = (A, u) => {
  let e = A + u / 2;
  return e - e % u;
}, Vl = (A, u, e) => Object.keys(A).map((C) => ({ original: (e ?? u).get(C), latest: u.get(C) })).filter((C) => C.original !== void 0 && C.latest !== void 0), gn = (A, u, e, C, B, g, t, i = !0) => {
  let I = C.get(e.id);
  if (!I) return;
  let [o, E] = [e.x + e.width / 2, e.y + e.height / 2], [Q, s] = EA(U(e.x, e.y), U(o, E), e.angle), l = A - Q, c = u - s, [D, h] = EA(U(A, u), U(o + l, E + c), -e.angle);
  nA(I, { x: D, y: h }, i), q1(I, C, B, g);
  let F = gu(e, t);
  if (F) {
    let m = C.get(F.id);
    m && nA(m, { x: F.x + l, y: F.y + c }, i);
  }
}, q9 = (A, u) => {
  let e = hE(u).map((C) => Vu(A, C).reduce((B, g) => (B[g.id] = !0, B), {}));
  return A.filter((C) => !oI(C)).forEach((C) => {
    e.push({ [C.id]: !0 });
  }), e;
}, q1 = (A, u, e, C, B) => {
  $A(A) ? kl([A], u, e, C, !0, [], B?.zoom) : Ve(A, u, B);
}, $FA = ({ label: A, icon: u, dragInputCallback: e, value: C, elements: B, editable: g = !0, shouldKeepAspectRatio: t, property: i, scene: I, appState: o, sensitivity: E = 1 }) => {
  let Q = Eg(), s = x.useRef(null), l = x.useRef(null), [c, D] = x.useState(C.toString()), h = x.useRef(null);
  h.current || (h.current = { originalAppState: Hg(o), originalElements: B, lastUpdatedValue: c, updatePending: !1 }), x.useEffect(() => {
    let p = C.toString();
    D(p), h.current.lastUpdatedValue = p;
  }, [C]);
  let F = (p, k, b) => {
    if (!h.current.updatePending) return !1;
    h.current.updatePending = !1;
    let f = Number(p);
    if (isNaN(f)) {
      D(C.toString());
      return;
    }
    let L = Number(f.toFixed(2)), N = Number(C);
    (isNaN(N) || Math.abs(L - N) >= _FA) && (h.current.lastUpdatedValue = p, e({ accumulatedChange: 0, instantChange: 0, originalElements: k, originalElementsMap: Q.scene.getNonDeletedElementsMap(), shouldKeepAspectRatio: t, shouldChangeByStepSize: !1, scene: I, nextValue: L, property: i, originalAppState: b, setInputValue: (M) => D(String(M)) }), Q.syncActionResult({ captureUpdate: aA.IMMEDIATELY }));
  }, m = x.useRef({});
  return m.current.handleInputValue = F, x.useEffect(() => {
    let p = s.current, k = m.current;
    return () => {
      let b = p?.value;
      b && k.handleInputValue?.(b, h.current.originalElements, h.current.originalAppState), window.removeEventListener("pointermove", k.onPointerMove, !1), window.removeEventListener("pointerup", k.onPointerUp, !1);
    };
  }, [g]), g ? r.jsxs("div", { className: NA("drag-input-container", !g && "disabled"), "data-testid": A, children: [r.jsx("div", { className: "drag-input-label", ref: l, onPointerDown: (p) => {
    if (s.current && g) {
      document.body.classList.add("excalidraw-cursor-resize"), Number(s.current.value);
      let k = null, b = Q.scene.getNonDeletedElements().reduce((q, j) => (q.set(j.id, ZE(j)), q), /* @__PURE__ */ new Map()), f = B.map((q) => b.get(q.id)), L = Hg(o), N = 0, M = 0, v = (q) => {
        if (k && b !== null && f !== null) {
          let j = q.clientX - k.x;
          j !== 0 && (M += j, Math.abs(M) >= E && (M = Math.sign(M) * Math.floor(Math.abs(M) / E), N += M, e({ accumulatedChange: N, instantChange: M, originalElements: f, originalElementsMap: b, shouldKeepAspectRatio: t, shouldChangeByStepSize: q.shiftKey, property: i, scene: I, originalAppState: L, setInputValue: (uA) => D(String(uA)) }), M = 0));
        }
        k = { x: q.clientX, y: q.clientY };
      }, K = () => {
        window.removeEventListener("pointermove", v, !1), Q.syncActionResult({ captureUpdate: aA.IMMEDIATELY }), k = null, N = 0, M = 0, f = null, b = null, document.body.classList.remove("excalidraw-cursor-resize"), window.removeEventListener("pointerup", K, !1);
      };
      m.current.onPointerMove = v, m.current.onPointerUp = K, window.addEventListener("pointermove", v, !1), window.addEventListener("pointerup", K, !1);
    }
  }, onPointerEnter: () => {
    l.current && (l.current.style.cursor = "ew-resize");
  }, children: u ? r.jsx(W4, { icon: u }) : A }), r.jsx("input", { className: "drag-input", autoComplete: "off", spellCheck: "false", onKeyDown: (p) => {
    if (g) {
      let k = p.target;
      k instanceof HTMLInputElement && p.key === Z.ENTER && (F(k.value, B, o), Q.focusContainer());
    }
  }, ref: s, value: c, onChange: (p) => {
    h.current.updatePending = !0, D(p.target.value);
  }, onFocus: (p) => {
    p.target.select(), h.current.originalElements = B, h.current.originalAppState = Hg(o);
  }, onBlur: (p) => {
    c ? g && F(p.target.value, h.current.originalElements, h.current.originalAppState) : D(C.toString());
  }, disabled: !g })] }) : null;
}, gt = $FA, Hm = 10, A5A = (A) => A.type === "image", u5A = ({ accumulatedChange: A, originalElements: u, originalElementsMap: e, shouldKeepAspectRatio: C, shouldChangeByStepSize: B, nextValue: g, property: t, originalAppState: i, instantChange: I, scene: o }) => {
  let E = o.getNonDeletedElementsMap(), Q = u[0], s = E.get(Q.id);
  if (Q && s) {
    let l = C || A5A(Q), c = Q.width / Q.height;
    if (i.croppingElementId === Q.id) {
      let p = E.get(Q.id);
      if (!p || !bu(p) || !p.crop) return;
      let k = p.crop, b = { ...k }, f = p.scale[0] === -1, L = p.scale[1] === -1, { width: N, height: M } = jg(p), v = k.naturalWidth / N, K = k.naturalHeight / M, q = f ? k.width + k.x : k.naturalWidth - k.x, j = L ? k.height + k.y : k.naturalHeight - k.y, uA = T0 * v, O = T0 * K;
      if (g !== void 0) {
        if (t === "width") {
          let CA = g * v, T = Qu(CA, uA, q);
          b = { ...b, width: T, x: f ? k.x + k.width - T : k.x };
        } else if (t === "height") {
          let CA = g * K, T = Qu(CA, O, j);
          b = { ...b, height: T, y: L ? k.y + k.height - T : k.y };
        }
        nA(p, { crop: b, width: b.width / (k.naturalWidth / N), height: b.height / (k.naturalHeight / M) });
        return;
      }
      let $ = t === "width" ? I : 0, X = t === "height" ? I : 0, P = Qu(k.width + $, uA, q), _ = Qu(k.height + X, uA, j);
      b = { ...k, x: f ? k.x + k.width - P : k.x, y: L ? k.y + k.height - _ : k.y, width: P, height: _ }, nA(p, { crop: b, width: b.width / (k.naturalWidth / N), height: b.height / (k.naturalHeight / M) });
      return;
    }
    if (g !== void 0) {
      let p = Math.max(t === "width" ? g : l ? g * c : Q.width, yC), k = Math.max(t === "height" ? g : l ? g / c : Q.height, yC);
      $Q(p, k, s, Q, E, e, t === "width" ? "e" : "s", { shouldMaintainAspectRatio: l });
      return;
    }
    let D = t === "width" ? A : 0, h = t === "height" ? A : 0, F = Math.max(0, Q.width + D);
    t === "width" && (B ? F = ce(F, Hm) : F = Math.round(F));
    let m = Math.max(0, Q.height + h);
    t === "height" && (B ? m = ce(m, Hm) : m = Math.round(m)), l && (t === "width" ? m = Math.round(F / c * 100) / 100 : F = Math.round(m * c * 100) / 100), m = Math.max(yC, m), F = Math.max(yC, F), $Q(F, m, s, Q, E, e, t === "width" ? "e" : "s", { shouldMaintainAspectRatio: l });
  }
}, e5A = ({ property: A, element: u, scene: e, appState: C }) => {
  let B = VB(A === "width" ? u.width : u.height, 2);
  if (C.croppingElementId && C.croppingElementId === u.id && bu(u) && u.crop) {
    let { width: g, height: t } = jg(u);
    if (A === "width") {
      let i = g / u.crop.naturalWidth;
      B = VB(u.crop.width * i, 2);
    }
    if (A === "height") {
      let i = t / u.crop.naturalHeight;
      B = VB(u.crop.height * i, 2);
    }
  }
  return r.jsx(gt, { label: A === "width" ? "W" : "H", elements: [u], dragInputCallback: u5A, value: B, editable: At(u, A), scene: e, appState: C, property: A });
}, Km = e5A, C5A = 15, B5A = ({ accumulatedChange: A, originalElements: u, shouldChangeByStepSize: e, nextValue: C, scene: B }) => {
  let g = B.getNonDeletedElementsMap(), t = B.getNonDeletedElements(), i = u[0];
  if (i && !xA(i)) {
    let I = g.get(i.id);
    if (!I) return;
    if (C !== void 0) {
      let c = cE(C);
      nA(I, { angle: c }), q1(I, g, t, B);
      let D = gu(I, g);
      D && !Eu(I) && nA(D, { angle: c });
      return;
    }
    let o = Math.round(nn(i.angle) * 100) / 100, E = Math.round(A), Q = (o + E) % 360;
    e && (Q = ce(Q, C5A)), Q = Q < 0 ? Q + 360 : Q;
    let s = cE(Q);
    nA(I, { angle: s }), q1(I, g, t, B);
    let l = gu(I, g);
    l && !Eu(I) && nA(l, { angle: s });
  }
}, g5A = ({ element: A, scene: u, appState: e, property: C }) => r.jsx(gt, { label: "A", icon: V8, value: Math.round(nn(A.angle) % 360 * 100) / 100, elements: [A], dragInputCallback: B5A, editable: At(A, "angle"), scene: u, appState: e, property: C }), t5A = g5A, Jm = 4, i5A = 4, E5A = ({ accumulatedChange: A, originalElements: u, shouldChangeByStepSize: e, nextValue: C, scene: B }) => {
  let g = B.getNonDeletedElementsMap(), t = u[0];
  if (t) {
    let i = g.get(t.id);
    if (!i || !UA(i)) return;
    let I;
    if (C !== void 0) I = Math.max(Math.round(C), Jm);
    else if (t.type === "text") {
      let o = Math.round(t.fontSize), E = Math.round(A);
      I = Math.max(o + E, Jm), e && (I = ce(I, i5A));
    }
    I && (nA(i, { fontSize: I }), Ge(i, B.getContainerElement(i), B.getNonDeletedElementsMap()));
  }
}, a5A = ({ element: A, scene: u, appState: e, property: C }) => {
  let B = UA(A) ? A : MC(A) ? gu(A, u.getNonDeletedElementsMap()) : null;
  return B ? r.jsx(gt, { label: "F", value: Math.round(B.fontSize * 10) / 10, elements: [B], dragInputCallback: E5A, icon: n4, appState: e, scene: u, property: C }) : null;
}, I5A = a5A, Ma = 10, o5A = (A, u, e, C) => {
  let B = C.x - A, g = C.y - u, t = C.width * e, i = C.height * e, I = A + B * e, o = u + g * e;
  return { width: t, height: i, x: I, y: o, ...B9(C, t, i, !1), ...UA(C) ? { fontSize: C.fontSize * e } : {} };
}, Q5A = (A, u, e, C, B, g, t, i) => {
  let I = o5A(A, u, C, g);
  nA(B, I, !1);
  let o = gu(g, i);
  if (o) {
    let E = o.fontSize * C;
    Ve(B, t, { newSize: { width: I.width, height: I.height } });
    let Q = t.get(o.id);
    Q && UA(Q) && (nA(Q, { fontSize: E }, !1), Dn(B, t, e === "width" ? "e" : "s", !0));
  }
}, Zm = (A, u, e, C, B, g, t, i, I, o) => {
  g === "width" ? u = Math.round(A / C * 100) / 100 : A = Math.round(u * C * 100) / 100;
  let E = u / e;
  for (let Q = 0; Q < i.length; Q++) {
    let s = i[Q], l = t[Q];
    Q5A(B[0], B[1], g, E, l, s, I, o);
  }
}, n5A = ({ accumulatedChange: A, originalElements: u, originalElementsMap: e, originalAppState: C, shouldChangeByStepSize: B, nextValue: g, scene: t, property: i }) => {
  let I = t.getNonDeletedElementsMap(), o = q9(u, C);
  if (g !== void 0) {
    for (let s of o) {
      let l = Vl(s, I, e);
      if (l.length > 1) {
        let c = l.map((M) => M.latest), D = l.map((M) => M.original), [h, F, m, p] = Nu(D), k = m - h, b = p - F, f = k / b, L = Math.max(yC, i === "width" ? Math.max(0, g) : k), N = Math.max(yC, i === "height" ? Math.max(0, g) : b);
        Zm(L, N, b, f, U(h, F), i, c, D, I, e);
      } else {
        let [c] = l, D = c?.latest, h = c?.original;
        if (D && h && At(D, i)) {
          let F = i === "width" ? Math.max(0, g) : D.width;
          i === "width" && (B ? F = ce(F, Ma) : F = Math.round(F));
          let m = i === "height" ? Math.max(0, g) : D.height;
          i === "height" && (B ? m = ce(m, Ma) : m = Math.round(m)), F = Math.max(yC, F), m = Math.max(yC, m), $Q(F, m, D, h, I, e, i === "width" ? "e" : "s", { shouldInformMutation: !1 });
        }
      }
    }
    t.triggerUpdate();
    return;
  }
  let E = i === "width" ? A : 0, Q = i === "height" ? A : 0;
  for (let s of o) {
    let l = Vl(s, I, e);
    if (l.length > 1) {
      let c = l.map((M) => M.latest), D = l.map((M) => M.original), [h, F, m, p] = Nu(D), k = m - h, b = p - F, f = k / b, L = Math.max(0, k + E);
      i === "width" && (B ? L = ce(L, Ma) : L = Math.round(L));
      let N = Math.max(0, b + Q);
      i === "height" && (B ? N = ce(N, Ma) : N = Math.round(N)), L = Math.max(yC, L), N = Math.max(yC, N), Zm(L, N, b, f, U(h, F), i, c, D, I, e);
    } else {
      let [c] = l, D = c?.latest, h = c?.original;
      if (D && h && At(D, i)) {
        let F = Math.max(0, h.width + E);
        i === "width" && (B ? F = ce(F, Ma) : F = Math.round(F));
        let m = Math.max(0, h.height + Q);
        i === "height" && (B ? m = ce(m, Ma) : m = Math.round(m)), F = Math.max(yC, F), m = Math.max(yC, m), $Q(F, m, D, h, I, e, i === "width" ? "e" : "s", { shouldInformMutation: !1 });
      }
    }
  }
  t.triggerUpdate();
}, r5A = ({ property: A, elements: u, elementsMap: e, atomicUnits: C, scene: B, appState: g }) => {
  let t = x.useMemo(() => C.map((o) => {
    let E = Vl(o, e);
    if (E.length > 1) {
      let [s, l, c, D] = Nu(E.map((h) => h.latest));
      return Math.round((A === "width" ? c - s : D - l) * 100) / 100;
    }
    let [Q] = E;
    return Math.round((A === "width" ? Q.latest.width : Q.latest.height) * 100) / 100;
  }), [e, C, A]), i = new Set(t).size === 1 ? Math.round(t[0] * 100) / 100 : "Mixed", I = t.length > 0;
  return r.jsx(gt, { label: A === "width" ? "W" : "H", elements: u, dragInputCallback: n5A, value: i, editable: I, appState: g, property: A, scene: B });
}, qm = r5A, s5A = 15, l5A = ({ accumulatedChange: A, originalElements: u, shouldChangeByStepSize: e, nextValue: C, property: B, scene: g }) => {
  let t = g.getNonDeletedElementsMap(), i = u.map((o) => t.get(o.id)).filter((o) => o && !oI(o) && At(o, B)), I = u.filter((o) => !oI(o) && At(o, B));
  if (C !== void 0) {
    let o = cE(C);
    for (let E of i) {
      if (!E) continue;
      nA(E, { angle: o }, !1);
      let Q = gu(E, t);
      Q && !Eu(E) && nA(Q, { angle: o }, !1);
    }
    g.triggerUpdate();
    return;
  }
  for (let o = 0; o < i.length; o++) {
    let E = i[o];
    if (!E) continue;
    let Q = I[o], s = Math.round(nn(Q.angle) * 100) / 100, l = Math.round(A), c = (s + l) % 360;
    e && (c = ce(c, s5A)), c = c < 0 ? c + 360 : c;
    let D = cE(c);
    nA(E, { angle: D }, !1);
    let h = gu(E, t);
    h && !Eu(E) && nA(h, { angle: D }, !1);
  }
  g.triggerUpdate();
}, c5A = ({ elements: A, scene: u, appState: e, property: C }) => {
  let B = A.filter((I) => !oI(I) && At(I, "angle")), g = B.map((I) => Math.round(nn(I.angle) % 360 * 100) / 100), t = new Set(g).size === 1 ? g[0] : "Mixed", i = B.some((I) => At(I, "angle"));
  return r.jsx(gt, { label: "A", icon: V8, value: t, elements: A, dragInputCallback: l5A, editable: i, appState: e, scene: u, property: C });
}, d5A = c5A, Wm = 4, D5A = 4, h5A = (A, u) => A.reduce((e, C) => {
  if (!C || oI(C)) return e;
  if (UA(C)) return e.push(C), e;
  if (MC(C)) {
    let B = gu(C, u);
    if (B) return e.push(B), e;
  }
  return e;
}, []), w5A = ({ accumulatedChange: A, originalElements: u, shouldChangeByStepSize: e, nextValue: C, scene: B }) => {
  let g = B.getNonDeletedElementsMap(), t = u.map((I) => g.get(I.id)), i;
  if (C) {
    i = Math.max(Math.round(C), Wm);
    for (let I of t) nA(I, { fontSize: i }, !1), Ge(I, B.getContainerElement(I), g, !1);
    B.triggerUpdate();
  } else {
    let I = u;
    for (let o = 0; o < t.length; o++) {
      let E = t[o], Q = I[o], s = Math.round(Q.fontSize), l = Math.round(A), c = Math.max(s + l, Wm);
      e && (c = ce(c, D5A)), nA(E, { fontSize: c }, !1), Ge(E, B.getContainerElement(E), g, !1);
    }
    B.triggerUpdate();
  }
}, F5A = ({ elements: A, scene: u, appState: e, property: C, elementsMap: B }) => {
  let g = h5A(A, B);
  if (!g.length) return null;
  let t = g.map((o) => Math.round(o.fontSize * 10) / 10), i = new Set(t).size === 1 ? t[0] : "Mixed", I = t.length > 0;
  return r.jsx(gt, { label: "F", icon: n4, elements: g, dragInputCallback: w5A, value: i, editable: I, scene: u, property: C, appState: e });
}, p5A = F5A, jm = 10, m5A = ({ accumulatedChange: A, instantChange: u, originalElements: e, originalElementsMap: C, shouldChangeByStepSize: B, nextValue: g, property: t, scene: i, originalAppState: I }) => {
  let o = i.getNonDeletedElementsMap(), E = i.getNonDeletedElements(), Q = e[0], [s, l] = [Q.x + Q.width / 2, Q.y + Q.height / 2], [c, D] = EA(U(Q.x, Q.y), U(s, l), Q.angle);
  if (I.croppingElementId === Q.id) {
    let k = o.get(Q.id);
    if (!k || !bu(k) || !k.crop) return;
    let b = k.crop, f = b, L = k.scale[0] === -1, N = k.scale[1] === -1, { width: M, height: v } = jg(k);
    if (g !== void 0) {
      if (t === "x") {
        let j = g * (b.naturalWidth / M);
        L ? f = { ...b, x: Qu(b.naturalWidth - j - b.width, 0, b.naturalWidth - b.width) } : f = { ...b, x: Qu(g * (b.naturalWidth / M), 0, b.naturalWidth - b.width) };
      }
      t === "y" && (f = { ...b, y: Qu(g * (b.naturalHeight / v), 0, b.naturalHeight - b.height) }), nA(k, { crop: f });
      return;
    }
    let K = (t === "x" ? u : 0) * (L ? -1 : 1), q = (t === "y" ? u : 0) * (N ? -1 : 1);
    f = { ...b, x: Qu(b.x + K, 0, b.naturalWidth - b.width), y: Qu(b.y + q, 0, b.naturalHeight - b.height) }, nA(k, { crop: f });
    return;
  }
  if (g !== void 0) {
    gn(t === "x" ? g : c, t === "y" ? g : D, Q, o, E, i, C);
    return;
  }
  let h = t === "x" ? A : 0, F = t === "y" ? A : 0, m = t === "x" ? Math.round(B ? ce(Q.x + h, jm) : c + h) : c, p = t === "y" ? Math.round(B ? ce(Q.y + F, jm) : D + F) : D;
  gn(m, p, Q, o, E, i, C);
}, k5A = ({ property: A, element: u, elementsMap: e, scene: C, appState: B }) => {
  let [g, t] = EA(U(u.x, u.y), U(u.x + u.width / 2, u.y + u.height / 2), u.angle), i = VB(A === "x" ? g : t, 2);
  if (B.croppingElementId === u.id && bu(u) && u.crop) {
    let I = ZlA(u);
    I && (i = VB(A === "x" ? I.x : I.y, 2));
  }
  return r.jsx(gt, { label: A === "x" ? "X" : "Y", elements: [u], dragInputCallback: m5A, scene: C, value: i, property: A, appState: B });
}, Tm = k5A, y5A = 10, b5A = (A, u, e, C, B, g, t, i) => {
  for (let I = 0; I < C.length; I++) {
    let o = B[I], [E, Q] = [o.x + o.width / 2, o.y + o.height / 2], [s, l] = EA(U(o.x, o.y), U(E, Q), o.angle), c = A === "x" ? Math.round(s + u) : s, D = A === "y" ? Math.round(l + e) : l;
    gn(c, D, o, g, C, i, t, !1);
  }
}, U5A = (A, u, e, C, B, g, t) => {
  let [i, I, ,] = Nu(e), o = A - i, E = u - I;
  for (let Q = 0; Q < e.length; Q++) {
    let s = e[Q], l = C.get(s.id);
    if (l && (!UA(l) || !l.containerId)) {
      let [c, D] = [l.x + l.width / 2, l.y + l.height / 2], [h, F] = EA(U(l.x, l.y), U(c, D), l.angle);
      gn(h + o, F + E, s, C, B, t, g, !1);
    }
  }
}, G5A = ({ accumulatedChange: A, originalElements: u, originalElementsMap: e, shouldChangeByStepSize: C, nextValue: B, property: g, scene: t, originalAppState: i }) => {
  let I = t.getNonDeletedElementsMap(), o = t.getNonDeletedElements();
  if (B !== void 0) {
    for (let Q of q9(u, i)) {
      let s = Vl(Q, I, e);
      if (s.length > 1) {
        let [l, c, ,] = Nu(s.map((D) => D.latest));
        U5A(g === "x" ? B : l, g === "y" ? B : c, s.map((D) => D.original), I, o, e, t);
      } else {
        let l = s[0]?.original, c = s[0]?.latest;
        if (l && c && At(c, g)) {
          let [D, h] = [l.x + l.width / 2, l.y + l.height / 2], [F, m] = EA(U(l.x, l.y), U(D, h), l.angle);
          gn(g === "x" ? B : F, g === "y" ? B : m, l, I, o, t, e, !1);
        }
      }
    }
    t.triggerUpdate();
    return;
  }
  let E = C ? ce(A, y5A) : A;
  b5A(g, g === "x" ? E : 0, g === "y" ? E : 0, u, u, I, e, t), t.triggerUpdate();
}, f5A = ({ property: A, elements: u, elementsMap: e, atomicUnits: C, scene: B, appState: g }) => {
  let t = x.useMemo(() => C.map((I) => {
    let o = Object.keys(I).map((D) => e.get(D)).filter((D) => D !== void 0);
    if (o.length > 1) {
      let [D, h] = Nu(o);
      return Math.round((A === "x" ? D : h) * 100) / 100;
    }
    let [E] = o, [Q, s] = [E.x + E.width / 2, E.y + E.height / 2], [l, c] = EA(U(E.x, E.y), U(Q, s), E.angle);
    return Math.round((A === "x" ? l : c) * 100) / 100;
  }), [C, e, A]), i = new Set(t).size === 1 ? t[0] : "Mixed";
  return r.jsx(gt, { label: A === "x" ? "X" : "Y", elements: u, dragInputCallback: G5A, value: i, property: A, scene: B, appState: g });
}, zm = f5A, Pm = 5, L5A = ({ property: A, scene: u, appState: e, setAppState: C }) => r.jsx(gt, { label: "Grid step", sensitivity: 8, elements: [], dragInputCallback: ({ nextValue: B, instantChange: g, shouldChangeByStepSize: t, setInputValue: i }) => {
  C((I) => {
    let o;
    return B ? o = B : g && (o = t ? ce(I.gridStep + Pm * Math.sign(g), Pm) : I.gridStep + g), o ? (o = jk(o), i(o), { gridStep: o }) : (i(I.gridStep), null);
  });
}, scene: u, value: e.gridStep, property: A, appState: e }), x5A = L5A, S5A = 50, W9 = (A) => {
  let u = bn(), e = A.app.scene.getSceneNonce() || 1, C = A.app.scene.getSelectedElements({ selectedElementIds: u.selectedElementIds, includeBoundTextElement: !1 }), B = VQ(A.app);
  return r.jsx(N5A, { ...A, appState: u, sceneNonce: e, selectedElements: C, gridModeEnabled: B });
}, Ou = ({ children: A, columns: u = 1, heading: e, style: C, ...B }) => r.jsx("div", { className: NA("exc-stats__row", { "exc-stats__row--heading": e }), style: { gridTemplateColumns: `repeat(${u}, 1fr)`, ...C }, ...B, children: A });
Ou.displayName = "StatsRow";
var Xl = ({ children: A, order: u, style: e, ...C }) => r.jsx("div", { className: "exc-stats__rows", style: { order: u, ...e }, ...C, children: A });
Xl.displayName = "StatsRows";
W9.StatsRow = Ou;
W9.StatsRows = Xl;
var N5A = x.memo(({ app: A, onClose: u, renderCustomStats: e, selectedElements: C, appState: B, sceneNonce: g, gridModeEnabled: t }) => {
  let i = A.scene, I = i.getNonDeletedElements(), o = i.getNonDeletedElementsMap(), E = Z0(), Q = C.length === 1 ? C[0] : null, s = C.length > 1 ? C : null, l = B.croppingElementId && bu(Q), c = l ? jg(Q) : null, [D, h] = x.useState({ width: 0, height: 0 }), F = x.useMemo(() => In((k) => {
    let b = Nu(k);
    h({ width: Math.round(b[2]) - Math.round(b[0]), height: Math.round(b[3]) - Math.round(b[1]) });
  }, S5A), []);
  x.useEffect(() => {
    F(I);
  }, [g, I, F]), x.useEffect(() => () => F.cancel(), [F]);
  let m = x.useMemo(() => q9(C, B), [C, B]), p = x.useMemo(() => qy(C), [C]);
  return r.jsx("div", { className: "exc-stats", children: r.jsxs(cB, { padding: 3, children: [r.jsxs("div", { className: "title", children: [r.jsx("h2", { children: S("stats.title") }), r.jsx("div", { className: "close", onClick: u, children: yI })] }), r.jsxs(f1, { label: r.jsx("h3", { children: S("stats.generalStats") }), open: !!(B.stats.panels & qa.generalStats), openTrigger: () => E((k) => ({ stats: { open: !0, panels: k.stats.panels ^ qa.generalStats } })), children: [r.jsxs(Xl, { children: [r.jsx(Ou, { heading: !0, children: S("stats.scene") }), r.jsxs(Ou, { columns: 2, children: [r.jsx("div", { children: S("stats.shapes") }), r.jsx("div", { children: I.length })] }), r.jsxs(Ou, { columns: 2, children: [r.jsx("div", { children: S("stats.width") }), r.jsx("div", { children: D.width })] }), r.jsxs(Ou, { columns: 2, children: [r.jsx("div", { children: S("stats.height") }), r.jsx("div", { children: D.height })] }), t && r.jsxs(r.Fragment, { children: [r.jsx(Ou, { heading: !0, children: "Canvas" }), r.jsx(Ou, { children: r.jsx(x5A, { property: "gridStep", scene: i, appState: B, setAppState: E }) })] })] }), e?.(I, B)] }), !p && C.length > 0 && r.jsx("div", { id: "elementStats", style: { marginTop: 12 }, children: r.jsx(f1, { label: r.jsx("h3", { children: S("stats.elementProperties") }), open: !!(B.stats.panels & qa.elementProperties), openTrigger: () => E((k) => ({ stats: { open: !0, panels: k.stats.panels ^ qa.elementProperties } })), children: r.jsxs(Xl, { children: [Q && r.jsxs(r.Fragment, { children: [l && r.jsx(Ou, { heading: !0, children: S("labels.unCroppedDimension") }), B.croppingElementId && bu(Q) && c && r.jsxs(Ou, { columns: 2, children: [r.jsx("div", { children: S("stats.width") }), r.jsx("div", { children: VB(c.width, 2) })] }), B.croppingElementId && bu(Q) && c && r.jsxs(Ou, { columns: 2, children: [r.jsx("div", { children: S("stats.height") }), r.jsx("div", { children: VB(c.height, 2) })] }), r.jsx(Ou, { heading: !0, "data-testid": "stats-element-type", children: B.croppingElementId ? S("labels.imageCropping") : S(`element.${Q.type}`) }), r.jsx(Ou, { children: r.jsx(Tm, { element: Q, property: "x", elementsMap: o, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(Tm, { element: Q, property: "y", elementsMap: o, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(Km, { property: "width", element: Q, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(Km, { property: "height", element: Q, scene: i, appState: B }) }), !xA(Q) && r.jsx(Ou, { children: r.jsx(t5A, { property: "angle", element: Q, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(I5A, { property: "fontSize", element: Q, scene: i, appState: B }) })] }), s && r.jsxs(r.Fragment, { children: [Vk(s) && r.jsx(Ou, { heading: !0, children: S("element.group") }), r.jsxs(Ou, { columns: 2, style: { margin: "0.3125rem 0" }, children: [r.jsx("div", { children: S("stats.shapes") }), r.jsx("div", { children: C.length })] }), r.jsx(Ou, { children: r.jsx(zm, { property: "x", elements: s, elementsMap: o, atomicUnits: m, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(zm, { property: "y", elements: s, elementsMap: o, atomicUnits: m, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(qm, { property: "width", elements: s, elementsMap: o, atomicUnits: m, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(qm, { property: "height", elements: s, elementsMap: o, atomicUnits: m, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(d5A, { property: "angle", elements: s, scene: i, appState: B }) }), r.jsx(Ou, { children: r.jsx(p5A, { property: "fontSize", elements: s, scene: i, appState: B, elementsMap: o }) })] })] }) }) })] }) });
}, (A, u) => A.sceneNonce === u.sceneNonce && A.selectedElements === u.selectedElements && A.appState.stats.panels === u.appState.stats.panels && A.gridModeEnabled === u.gridModeEnabled && A.appState.gridStep === u.appState.gridStep && A.appState.croppingElementId === u.appState.croppingElementId), R5A = ({ sourceElementId: A, onClose: u, elementsMap: e, appState: C, generateLinkForSelection: B = py }) => {
  let g = e.get(A)?.link ?? null, [t, i] = x.useState(g), [I, o] = x.useState(!1);
  x.useEffect(() => {
    let Q = iu(e, C), s = g;
    if (Q.length > 0 && B) {
      let l = my(Q, C);
      l && (s = oC(B(l.id, l.type)));
    }
    i(s);
  }, [e, C, C.selectedElementIds, g, B]);
  let E = x.useCallback(() => {
    if (t && t !== e.get(A)?.link) {
      let Q = e.get(A);
      Q && nA(Q, { link: t });
    }
    if (!t && I && A) {
      let Q = e.get(A);
      Q && nA(Q, { link: null });
    }
    u?.();
  }, [A, t, e, I, u]);
  return x.useEffect(() => {
    let Q = (s) => {
      C.openDialog?.name === "elementLinkSelector" && s.key === Z.ENTER && E(), C.openDialog?.name === "elementLinkSelector" && s.key === Z.ESCAPE && u?.();
    };
    return window.addEventListener("keydown", Q), () => {
      window.removeEventListener("keydown", Q);
    };
  }, [C, u, E]), r.jsxs("div", { className: "ElementLinkDialog", children: [r.jsxs("div", { className: "ElementLinkDialog__header", children: [r.jsx("h2", { children: S("elementLink.title") }), r.jsx("p", { children: S("elementLink.desc") })] }), r.jsxs("div", { className: "ElementLinkDialog__input", children: [r.jsx(H9, { value: t ?? "", onChange: (Q) => {
    I || o(!0), i(Q);
  }, onKeyDown: (Q) => {
    Q.key === Z.ENTER && E();
  }, className: "ElementLinkDialog__input-field", selectOnRender: !0 }), g && t && r.jsx(cu, { type: "button", title: S("buttons.remove"), "aria-label": S("buttons.remove"), label: S("buttons.remove"), onClick: () => {
    i(null), o(!0);
  }, className: "ElementLinkDialog__remove", icon: xE })] }), r.jsxs("div", { className: "ElementLinkDialog__actions", children: [r.jsx(DI, { label: S("buttons.cancel"), onClick: () => {
    u?.();
  }, style: { marginRight: 10 } }), r.jsx(DI, { label: S("buttons.confirm"), onClick: E, actionType: "primary" })] })] });
}, M5A = R5A, Y5A = ({ UIOptions: A }) => r.jsxs(Ze, { __fallback: !0, children: [r.jsx(Ze.DefaultItems.LoadScene, {}), r.jsx(Ze.DefaultItems.SaveToActiveFile, {}), A.canvasActions.export && r.jsx(Ze.DefaultItems.Export, {}), A.canvasActions.saveAsImage && r.jsx(Ze.DefaultItems.SaveAsImage, {}), r.jsx(Ze.DefaultItems.SearchMenu, {}), r.jsx(Ze.DefaultItems.Help, {}), r.jsx(Ze.DefaultItems.ClearCanvas, {}), r.jsx(Ze.Separator, {}), r.jsx(Ze.Group, { title: "Excalidraw links", children: r.jsx(Ze.DefaultItems.Socials, {}) }), r.jsx(Ze.Separator, {}), r.jsx(Ze.DefaultItems.ToggleTheme, {}), r.jsx(Ze.DefaultItems.ChangeCanvasBackground, {})] }), v5A = () => r.jsxs(nD, { __fallback: !0, children: [r.jsx(nD.Actions.SaveToDisk, {}), r.jsx(nD.Actions.ExportToImage, {})] }), H5A = ({ actionManager: A, appState: u, files: e, setAppState: C, elements: B, canvas: g, onLockToggle: t, onHandToolToggle: i, onPenModeToggle: I, showExitZenModeBtn: o, renderTopRightUI: E, renderCustomStats: Q, UIOptions: s, onExportImage: l, renderWelcomeScreen: c, children: D, app: h, isCollaborating: F, generateLinkForSelection: m }) => {
  let p = J0(), k = kwA(), b = k.tunnelsJotai.Provider, [f, L] = c0(q4), N = () => s.canvasActions.export ? r.jsx(wFA, { elements: B, appState: u, files: e, actionManager: A, exportOpts: s.canvasActions.export, canvas: g, setAppState: C }) : null, M = () => !s.canvasActions.saveAsImage || u.openDialog?.name !== "imageExport" ? null : r.jsx(VwA, { elements: B, appState: u, files: e, actionManager: A, onExportImage: l, onCloseRequest: () => C({ openDialog: null }), name: h.getName() }), v = () => r.jsxs("div", { style: { position: "relative" }, children: [r.jsx(k.MainMenuTunnel.Out, {}), c && r.jsx(k.WelcomeScreenMenuHintTunnel.Out, {})] }), K = () => r.jsx(Bn, { heading: "selectedShapeActions", className: NA("selected-shape-actions zen-mode-transition", { "transition-left": u.zenModeEnabled }), children: r.jsx(cB, { className: CI.SHAPE_ACTIONS_MENU, padding: 2, style: { maxHeight: `${u.height - 166}px` }, children: r.jsx(df, { appState: u, elementsMap: h.scene.getNonDeletedElementsMap(), renderAction: A.renderAction, app: h }) }) }), q = () => {
    let $ = t9(u, B), X = u.stats.open && !u.zenModeEnabled && !u.viewModeEnabled && u.openDialog?.name !== "elementLinkSelector";
    return r.jsx(bf, { side: "top", children: r.jsxs("div", { className: "App-menu App-menu_top", children: [r.jsxs(GC.Col, { gap: 6, className: NA("App-menu_top__left"), children: [v(), $ && K()] }), !u.viewModeEnabled && u.openDialog?.name !== "elementLinkSelector" && r.jsx(Bn, { heading: "shapes", className: "shapes-section", children: (P) => r.jsxs("div", { style: { position: "relative" }, children: [c && r.jsx(k.WelcomeScreenToolbarHintTunnel.Out, {}), r.jsx(GC.Col, { gap: 4, align: "start", children: r.jsxs(GC.Row, { gap: 1, className: NA("App-toolbar-container", { "zen-mode": u.zenModeEnabled }), children: [r.jsxs(cB, { padding: 1, className: NA("App-toolbar", { "zen-mode": u.zenModeEnabled }), children: [r.jsx(ff, { appState: u, isMobile: p.editor.isMobile, device: p, app: h }), P, r.jsxs(GC.Row, { gap: 1, children: [r.jsx(xf, { zenModeEnabled: u.zenModeEnabled, checked: u.penMode, onChange: () => I(null), title: S("toolBar.penMode"), penDetected: u.penDetected }), r.jsx(Lf, { checked: u.activeTool.locked, onChange: t, title: S("toolBar.lock") }), r.jsx("div", { className: "App-toolbar__divider" }), r.jsx(Sf, { checked: BI(u), onChange: () => i(), title: S("toolBar.hand"), isMobile: !0 }), r.jsx(Df, { appState: u, activeTool: u.activeTool, UIOptions: s, app: h })] })] }), F && r.jsx(cB, { style: { marginLeft: 8, alignSelf: "center", height: "fit-content" }, children: r.jsx(JFA, { title: S("toolBar.laser"), checked: u.activeTool.type === H0.laser, onChange: () => h.setActiveTool({ type: H0.laser }), isMobile: !0 }) })] }) })] }) }), r.jsxs("div", { className: NA("layer-ui__wrapper__top-right zen-mode-transition", { "transition-right": u.zenModeEnabled }), children: [u.collaborators.size > 0 && r.jsx(Nf, { collaborators: u.collaborators, userToFollow: u.userToFollow?.socketId || null }), E?.(p.editor.isMobile, u), !u.viewModeEnabled && u.openDialog?.name !== "elementLinkSelector" && (!uA || u.openSidebar?.name !== rB.name) && r.jsx(k.DefaultSidebarTriggerTunnel.Out, {}), X && r.jsx(W9, { app: h, onClose: () => {
      A.executeAction(N1);
    }, renderCustomStats: Q })] })] }) });
  }, j = () => r.jsx(Ym, { __fallback: !0, onDock: ($) => {
    zu("sidebar", `toggleDock (${$ ? "dock" : "undock"})`, `(${p.editor.isMobile ? "mobile" : "desktop"})`);
  } }), uA = wG(K9), O = r.jsxs(r.Fragment, { children: [D, r.jsx(Y5A, { UIOptions: s }), r.jsx(Ym.Trigger, { __fallback: !0, icon: Q2, title: cQ(S("toolBar.library")), onToggle: ($) => {
    $ && zu("sidebar", `${rB.name} (open)`, `button (${p.editor.isMobile ? "mobile" : "desktop"})`);
  }, tab: rB.defaultTab, children: S("toolBar.library") }), r.jsx(v5A, {}), u.openDialog?.name === "ttd" && r.jsx(VFA, { __fallback: !0 }), u.isLoading && r.jsx(mG, { delay: 250 }), u.errorMessage && r.jsx(WwA, { onClose: () => C({ errorMessage: null }), children: u.errorMessage }), f && !p.editor.isMobile && r.jsx(d6A, { colorPickerType: f.colorPickerType, onCancel: () => {
    L(null);
  }, onChange: ($, X, P, { altKey: _ }) => {
    if (!($ !== "elementBackground" && $ !== "elementStroke")) if (P.length) {
      for (let CA of P) nA(CA, { [_ && f.swapPreviewOnAlt ? $ === "elementBackground" ? "strokeColor" : "backgroundColor" : $ === "elementBackground" ? "backgroundColor" : "strokeColor"]: X }, !1), a0.delete(CA);
      Og.getScene(P[0])?.triggerUpdate();
    } else C($ === "elementBackground" ? { currentItemBackgroundColor: X } : { currentItemStrokeColor: X });
  }, onSelect: ($, X) => {
    L((P) => P?.keepOpenOnAlt && X.altKey ? P : null), f?.onSelect?.($, X);
  } }), u.openDialog?.name === "help" && r.jsx(sFA, { onClose: () => {
    C({ openDialog: null });
  } }), r.jsx(fwA, {}), u.openDialog?.name === "elementLinkSelector" && r.jsx(M5A, { sourceElementId: u.openDialog.sourceElementId, onClose: () => {
    C({ openDialog: null });
  }, elementsMap: h.scene.getNonDeletedElementsMap(), appState: u, generateLinkForSelection: m }), r.jsx(k.OverwriteConfirmDialogTunnel.Out, {}), M(), N(), u.pasteDialog.shown && r.jsx(aFA, { setAppState: C, appState: u, onClose: () => C({ pasteDialog: { shown: !1, data: null } }) }), p.editor.isMobile && r.jsx(EFA, { app: h, appState: u, elements: B, actionManager: A, renderJSONExportDialog: N, renderImageExportDialog: M, setAppState: C, onLockToggle: t, onHandToolToggle: i, onPenModeToggle: I, renderTopRightUI: E, renderCustomStats: Q, renderSidebars: j, device: p, renderWelcomeScreen: c, UIOptions: s }), !p.editor.isMobile && r.jsxs(r.Fragment, { children: [r.jsxs("div", { className: "layer-ui__wrapper", style: u.openSidebar && uA && p.editor.canFitSidebar ? { width: "calc(100% - var(--right-sidebar-width))" } : {}, children: [c && r.jsx(k.WelcomeScreenCenterTunnel.Out, {}), q(), r.jsx(pFA, { appState: u, actionManager: A, showExitZenModeBtn: o, renderWelcomeScreen: c }), u.scrolledOutside && r.jsx("button", { type: "button", className: "scroll-back-to-content", onClick: () => {
    C(($) => ({ ...PQ(B, $) }));
  }, children: S("buttons.scrollBackToContent") })] }), j()] })] });
  return r.jsx(NG.Provider, { value: u, children: r.jsx(b, { children: r.jsx(sf.Provider, { value: k, children: O }) }) });
}, Om = (A) => {
  let { suggestedBindings: u, startBoundElement: e, cursorButton: C, scrollX: B, scrollY: g, ...t } = A;
  return t;
}, K5A = (A, u) => {
  if (A.children !== u.children) return !1;
  let { canvas: e, appState: C, ...B } = A, { canvas: g, appState: t, ...i } = u;
  return Ee(Om(C), Om(t), { selectedElementIds: Ee, selectedGroupIds: Ee }) && Ee(B, i);
}, J5A = kA.memo(H5A, K5A), Z5A = 5e3, q5A = ({ message: A, onClose: u, closable: e = !1, duration: C = Z5A, style: B }) => {
  let g = x.useRef(0), t = C !== 1 / 0, i = x.useCallback(() => {
    t && (g.current = window.setTimeout(() => u(), C));
  }, [u, C, t]);
  return x.useEffect(() => {
    if (t) return i(), () => clearTimeout(g.current);
  }, [i, A, C, t]), r.jsxs("div", { className: "Toast", onMouseEnter: t ? () => clearTimeout(g?.current) : void 0, onMouseLeave: t ? i : void 0, style: B, children: [r.jsx("p", { className: "Toast__message", children: A }), e && r.jsx(cu, { icon: yI, "aria-label": "close", type: "icon", onClick: u, className: "close" })] });
}, Vm = pA({ name: "viewMode", label: "labels.viewMode", paletteName: "Toggle view mode", icon: c2, viewMode: !0, trackEvent: { category: "canvas", predicate: (A) => !A.viewModeEnabled }, perform(A, u) {
  return { appState: { ...u, viewModeEnabled: !this.checked(u) }, captureUpdate: aA.EVENTUALLY };
}, checked: (A) => A.viewModeEnabled, predicate: (A, u, e) => typeof e.viewModeEnabled > "u", keyTest: (A) => !A[Z.CTRL_OR_CMD] && A.altKey && A.code === wu.R }), lL = (A, u) => {
  let e = u.scene.getSelectedElements(A);
  return e.length === 1 && OA(e[0]);
}, W5A = pA({ name: "selectAllElementsInFrame", label: "labels.selectAllElementsInFrame", trackEvent: { category: "canvas" }, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u).at(0) || null;
  if (OA(B)) {
    let g = Bg(Wu(A), B.id).filter((t) => !(t.type === "text" && t.containerId));
    return { elements: A, appState: { ...u, selectedElementIds: g.reduce((t, i) => (t[i.id] = !0, t), {}) }, captureUpdate: aA.IMMEDIATELY };
  }
  return { elements: A, appState: u, captureUpdate: aA.EVENTUALLY };
}, predicate: (A, u, e, C) => lL(u, C) }), j5A = pA({ name: "removeAllElementsFromFrame", label: "labels.removeAllElementsFromFrame", trackEvent: { category: "history" }, perform: (A, u, e, C) => {
  let B = C.scene.getSelectedElements(u).at(0) || null;
  return OA(B) ? { elements: Ky(A, B), appState: { ...u, selectedElementIds: { [B.id]: !0 } }, captureUpdate: aA.IMMEDIATELY } : { elements: A, appState: u, captureUpdate: aA.EVENTUALLY };
}, predicate: (A, u, e, C) => lL(u, C) });
pA({ name: "updateFrameRendering", label: "labels.updateFrameRendering", viewMode: !0, trackEvent: { category: "canvas" }, perform: (A, u) => ({ elements: A, appState: { ...u, frameRendering: { ...u.frameRendering, enabled: !u.frameRendering.enabled } }, captureUpdate: aA.EVENTUALLY }), checked: (A) => A.frameRendering.enabled });
pA({ name: "setFrameAsActiveTool", label: "toolBar.frame", trackEvent: { category: "toolbar" }, icon: _8, viewMode: !1, perform: (A, u, e, C) => {
  let B = b0(u, { type: "frame" });
  return vB(C.interactiveCanvas, { ...u, activeTool: B }), { elements: A, appState: { ...u, activeTool: b0(u, { type: "frame" }) }, captureUpdate: aA.EVENTUALLY };
}, keyTest: (A) => !A[Z.CTRL_OR_CMD] && !A.shiftKey && !A.altKey && A.key.toLocaleLowerCase() === Z.F });
var T5A = pA({ name: "wrapSelectionInFrame", label: "labels.wrapSelectionInFrame", trackEvent: { category: "element" }, predicate: (A, u, e, C) => {
  let B = iu(A, u);
  return B.length > 0 && !B.some((g) => OA(g));
}, perform: (A, u, e, C) => {
  let B = iu(A, u), [g, t, i, I] = Nu(B, C.scene.getNonDeletedElementsMap()), o = 16, E = G2({ x: g - o, y: t - o, width: i - g + o * 2, height: I - t + o * 2 });
  if (u.editingGroupId) {
    let Q = Vu(B, u.editingGroupId);
    for (let s of Q) {
      let l = s.groupIds.indexOf(u.editingGroupId);
      nA(s, { groupIds: s.groupIds.slice(0, l) }, !1);
    }
  }
  return { elements: wQ([...C.scene.getElementsIncludingDeleted(), E], B, E, u), appState: { selectedElementIds: { [E.id]: !0 } }, captureUpdate: aA.IMMEDIATELY };
} }), z5A = () => r.jsxs("div", { "data-testid": "brave-measure-text-error", children: [r.jsx("p", { children: r.jsx(OB, { i18nKey: "errors.brave_measure_text_error.line1", bold: (A) => r.jsx("span", { style: { fontWeight: 600 }, children: A }) }) }), r.jsx("p", { children: r.jsx(OB, { i18nKey: "errors.brave_measure_text_error.line2", bold: (A) => r.jsx("span", { style: { fontWeight: 600 }, children: A }) }) }), r.jsx("p", { children: r.jsx(OB, { i18nKey: "errors.brave_measure_text_error.line3", link: (A) => r.jsx("a", { href: "http://docs.excalidraw.com/docs/@excalidraw/excalidraw/faq#turning-off-aggresive-block-fingerprinting-in-brave-browser", children: A }) }) }), r.jsx("p", { children: r.jsx(OB, { i18nKey: "errors.brave_measure_text_error.line4", issueLink: (A) => r.jsx("a", { href: "https://github.com/excalidraw/excalidraw/issues/new", children: A }), discordLink: (A) => r.jsxs("a", { href: "https://discord.gg/UexuTaE", children: [A, "."] }) }) })] }), P5A = z5A, hs = { width: 100, height: 0 }, _t = 100, O5A = (A, u, e) => {
  let C = nC({ x: 0, y: 0, textAlign: JQ.CENTER, verticalAlign: IC.MIDDLE, ...u, containerId: A.id, strokeColor: u.strokeColor || A.strokeColor });
  return Object.assign(A, { boundElements: (A.boundElements || []).concat({ type: "text", id: C.id }) }), Ge(C, A, e), [A, C];
}, Xm = (A, u, e, C, B) => {
  let g, t;
  if (Object.assign(A, { startBinding: A?.startBinding || null, endBinding: A.endBinding || null }), u) {
    let E = u?.width ?? _t, Q = u?.height ?? _t, s;
    u.id && (s = C.getElement(u.id), s || console.error(`No element for start binding with id ${u.id} found`));
    let l = u.x || A.x - E, c = u.y || A.y - Q / 2, D = s ? s.type : u.type;
    if (D) {
      if (D === "text") {
        let h = "";
        s && s.type === "text" ? h = s.text : u.type === "text" && (h = u.text), h || console.error(`No text found for start binding text element for ${A.id}`), g = nC({ x: l, y: c, type: "text", ...s, ...u, text: h }), Object.assign(g, { x: u.x || A.x - g.width, y: u.y || A.y - g.height / 2 });
      } else switch (D) {
        case "rectangle":
        case "ellipse":
        case "diamond": {
          g = eg({ x: l, y: c, width: E, height: Q, ...s, ...u, type: D });
          break;
        }
        default:
          fE(A, `Unhandled element start type "${u.type}"`, !0);
      }
      Ag(A, g, "start", B);
    }
  }
  if (e) {
    let E = e?.height ?? _t, Q = e?.width ?? _t, s;
    e.id && (s = C.getElement(e.id), s || console.error(`No element for end binding with id ${e.id} found`));
    let l = e.x || A.x + A.width, c = e.y || A.y - E / 2, D = s ? s.type : e.type;
    if (D) {
      if (D === "text") {
        let h = "";
        s && s.type === "text" ? h = s.text : e.type === "text" && (h = e.text), h || console.error(`No text found for end binding text element for ${A.id}`), t = nC({ x: l, y: c, type: "text", ...s, ...e, text: h }), Object.assign(t, { y: e.y || A.y - t.height / 2 });
      } else switch (D) {
        case "rectangle":
        case "ellipse":
        case "diamond": {
          t = eg({ x: l, y: c, width: Q, height: E, ...s, ...e, type: D });
          break;
        }
        default:
          fE(A, `Unhandled element end type "${D}"`, !0);
      }
      Ag(A, t, "end", B);
    }
  }
  if (A.points.length < 2) return { linearElement: A, startBoundElement: g, endBoundElement: t };
  let i = A.points.length - 1, I = 0.5, o = Hg(A.points);
  return A.points[i][0] > A.points[i - 1][0] && (o[0][0] = I, o[i][0] -= I), A.points[i][0] < A.points[i - 1][0] && (o[0][0] = -I, o[i][0] += I), A.points[i][1] > A.points[i - 1][1] && (o[0][1] = I, o[i][1] -= I), A.points[i][1] < A.points[i - 1][1] && (o[0][1] = -I, o[i][1] += I), Object.assign(A, { points: o }), { linearElement: A, startBoundElement: g, endBoundElement: t };
}, V5A = class {
  constructor() {
    J(this, "excalidrawElements", /* @__PURE__ */ new Map()), J(this, "add", (A) => {
      A && this.excalidrawElements.set(A.id, A);
    }), J(this, "getElements", () => Pg(Array.from(this.excalidrawElements.values()))), J(this, "getElementsMap", () => NC(PA(this.getElements()))), J(this, "getElement", (A) => this.excalidrawElements.get(A));
  }
}, W1 = (A, u) => {
  if (!A) return [];
  let e = Hg(A), C = new V5A(), B = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map();
  for (let i of e) {
    let I, o = i.id;
    switch (u?.regenerateIds !== !1 && Object.assign(i, { id: YC() }), i.type) {
      case "rectangle":
      case "ellipse":
      case "diamond": {
        let E = i?.label?.text && i.width === void 0 ? 0 : i?.width || _t, Q = i?.label?.text && i.height === void 0 ? 0 : i?.height || _t;
        I = eg({ ...i, width: E, height: Q });
        break;
      }
      case "line": {
        let E = i.width || hs.width, Q = i.height || hs.height;
        I = wE({ width: E, height: Q, points: [U(0, 0), U(E, Q)], ...i });
        break;
      }
      case "arrow": {
        let E = i.width || hs.width, Q = i.height || hs.height;
        I = f2({ width: E, height: Q, endArrowhead: "arrow", points: [U(0, 0), U(E, Q)], ...i, type: "arrow" }), Object.assign(I, II(I.points));
        break;
      }
      case "text": {
        let E = i?.fontFamily || ri, Q = i?.fontSize || ut, s = i?.lineHeight || NE(E), l = i.text ?? "", c = iI(l), D = we(c, vu({ fontFamily: E, fontSize: Q }), s);
        I = nC({ width: D.width, height: D.height, fontFamily: E, fontSize: Q, ...i });
        break;
      }
      case "image": {
        I = ty({ width: i?.width || _t, height: i?.height || _t, ...i });
        break;
      }
      case "frame": {
        I = G2({ x: 0, y: 0, ...i });
        break;
      }
      case "magicframe": {
        I = B1({ x: 0, y: 0, ...i });
        break;
      }
      case "freedraw":
      case "iframe":
      case "embeddable": {
        I = i;
        break;
      }
      default:
        I = i, fE(i, `Unhandled element type "${i.type}"`, !0);
    }
    C.getElement(I.id) ? console.error(`Duplicate id found for ${I.id}`) : (C.add(I), B.set(I.id, i), o && g.set(o, I.id));
  }
  let t = C.getElementsMap();
  for (let [i, I] of B) {
    let o = C.getElement(i);
    switch (I.type) {
      case "rectangle":
      case "ellipse":
      case "diamond":
      case "arrow": {
        if (I.label?.text) {
          let [E, Q] = O5A(o, I?.label, t);
          if (C.add(E), C.add(Q), Eu(E)) {
            let s = I.type === "arrow" ? I?.start : void 0, l = I.type === "arrow" ? I?.end : void 0;
            if (s && s.id) {
              let F = g.get(s.id);
              F && Object.assign(s, { id: F });
            }
            if (l && l.id) {
              let F = g.get(l.id);
              F && Object.assign(l, { id: F });
            }
            let { linearElement: c, startBoundElement: D, endBoundElement: h } = Xm(E, s, l, C, t);
            E = c, C.add(c), C.add(D), C.add(h);
          }
        } else switch (I.type) {
          case "arrow": {
            let { start: E, end: Q } = I;
            if (E && E.id) {
              let D = g.get(E.id);
              Object.assign(E, { id: D });
            }
            if (Q && Q.id) {
              let D = g.get(Q.id);
              Object.assign(Q, { id: D });
            }
            let { linearElement: s, startBoundElement: l, endBoundElement: c } = Xm(o, E, Q, C, t);
            C.add(s), C.add(l), C.add(c);
            break;
          }
        }
        break;
      }
    }
  }
  for (let [i, I] of B) {
    if (I.type !== "frame" && I.type !== "magicframe") continue;
    let o = C.getElement(i);
    if (!o) throw new Error(`Excalidraw element with id ${i} doesn't exist`);
    let E = [];
    I.children.forEach((k) => {
      let b = g.get(k);
      if (!b) throw new Error(`Element with ${k} wasn't mapped correctly`);
      let f = C.getElement(b);
      if (!f) throw new Error(`Frame element with id ${b} doesn't exist`);
      Object.assign(f, { frameId: o.id }), f?.boundElements?.forEach((L) => {
        let N = C.getElement(L.id);
        if (!N) throw new Error(`Bound element with id ${L.id} doesn't exist`);
        Object.assign(N, { frameId: o.id }), E.push(N);
      }), E.push(f);
    });
    let [Q, s, l, c] = Nu(E), D = 10;
    Q = Q - D, s = s - D, l = l + D, c = c + D;
    let h = o?.x || Q, F = o?.y || s, m = o?.width || l - Q, p = o?.height || c - s;
    Object.assign(o, { x: h, y: F, width: m, height: p }), f8() && I.children.length && (o?.x || o?.y || o?.width || o?.height) && console.info("User provided frame attributes are being considered, if you find this inaccurate, please remove any of the attributes - x, y, width and height so frame coordinates and dimensions are calculated automatically");
  }
  return C.getElements();
}, Q0 = (A) => (u) => {
  O0.unstable_batchedUpdates(A, u);
}, sD = (A) => E4((u) => {
  O0.unstable_batchedUpdates(A, u);
}), j9 = (() => {
  let A;
  try {
    let e = x.version.split(".");
    A = Number(e[0]) > 17;
  } catch {
    A = !1;
  }
  let u = !1;
  return () => window.EXCALIDRAW_THROTTLE_RENDER === !0 ? A ? !0 : (u || (u = !0, console.warn("Excalidraw: render throttling is disabled on React versions < 18.")), !1) : !1;
})(), X5A = "#ff6b6b", _5A = "#ff0000", _m = 1, $m = 2, $5A = (A, u) => {
  if (!u.snapLines.length) return;
  let e = u.theme === su.LIGHT || u.zenModeEnabled ? X5A : _5A, C = (u.zenModeEnabled ? _m * 1.5 : _m) / u.zoom.value;
  A.save(), A.translate(u.scrollX, u.scrollY);
  for (let B of u.snapLines) B.type === "pointer" ? (A.lineWidth = C, A.strokeStyle = e, upA(B, A, u)) : B.type === "gap" ? (A.lineWidth = C, A.strokeStyle = e, epA(B.points[0], B.points[1], B.direction, u, A)) : B.type === "points" && (A.lineWidth = C, A.strokeStyle = e, ApA(B, A, u));
  A.restore();
}, ApA = (A, u, e) => {
  if (!e.zenModeEnabled) {
    let C = A.points[0], B = A.points[A.points.length - 1];
    mC(C, B, u);
  }
  for (let C of A.points) cL(C, e, u);
}, upA = (A, u, e) => {
  cL(A.points[0], e, u), e.zenModeEnabled || mC(A.points[0], A.points[1], u);
}, cL = ([A, u], e, C) => {
  C.save();
  let B = (e.zenModeEnabled ? $m * 1.5 : $m) / e.zoom.value;
  C.beginPath(), C.moveTo(A - B, u - B), C.lineTo(A + B, u + B), C.moveTo(A + B, u - B), C.lineTo(A - B, u + B), C.stroke(), C.restore();
}, mC = (A, u, e) => {
  e.beginPath(), e.lineTo(A[0], A[1]), e.lineTo(u[0], u[1]), e.stroke();
}, epA = (A, u, e, C, B) => {
  let g = 8 / C.zoom.value, t = g / 2, i = g / 4;
  if (e === "horizontal") {
    let I = [(A[0] + u[0]) / 2, A[1]];
    C.zenModeEnabled || mC(U(A[0], A[1] - g), U(A[0], A[1] + g), B), mC(U(I[0] - i, I[1] - t), U(I[0] - i, I[1] + t), B), mC(U(I[0] + i, I[1] - t), U(I[0] + i, I[1] + t), B), C.zenModeEnabled || (mC(U(u[0], u[1] - g), U(u[0], u[1] + g), B), mC(A, u, B));
  } else {
    let I = [A[0], (A[1] + u[1]) / 2];
    C.zenModeEnabled || mC(U(A[0] - g, A[1]), U(A[0] + g, A[1]), B), mC(U(I[0] - t, I[1] - i), U(I[0] + t, I[1] - i), B), mC(U(I[0] - t, I[1] + i), U(I[0] + t, I[1] + i), B), C.zenModeEnabled || (mC(U(u[0] - g, u[1]), U(u[0] + g, u[1]), B), mC(A, u, B));
  }
}, CpA = (A, u) => {
  he(u.selectedLinearElement, "selectedLinearElement is null");
  let { segmentMidPointHoveredCoords: e } = u.selectedLinearElement;
  he(e, "midPointCoords is null"), A.save(), A.translate(u.scrollX, u.scrollY), dL(e, A, u), A.restore();
}, BpA = (A, u, e) => {
  let { elementId: C, hoverPointIndex: B } = u.selectedLinearElement;
  if (u.editingLinearElement?.selectedPointsIndices?.includes(B)) return;
  let g = LA.getElement(C, e);
  if (!g) return;
  let t = LA.getPointAtIndexGlobalCoordinates(g, B, e);
  A.save(), A.translate(u.scrollX, u.scrollY), dL(t, A, u), A.restore();
}, dL = (A, u, e) => {
  u.fillStyle = "rgba(105, 101, 219, 0.4)", y4(u, A[0], A[1], LA.POINT_HANDLE_SIZE / e.zoom.value, !1);
}, kn = (A, u, e, C, B, g, t, i, I = !1, o = 0) => {
  A.save(), A.translate(g, t), A.rotate(i), I && A.fillRect(u - g, e - t, C, B), o && A.roundRect ? (A.beginPath(), A.roundRect(u - g, e - t, C, B, o), A.stroke(), A.closePath()) : A.strokeRect(u - g, e - t, C, B), A.restore();
}, gpA = (A, u, e, C, B, g) => {
  A.save(), A.translate(C, B), A.rotate(g), A.beginPath(), A.moveTo(0, e / 2), A.lineTo(u / 2, 0), A.lineTo(0, -e / 2), A.lineTo(-u / 2, 0), A.closePath(), A.stroke(), A.restore();
}, lD = (A, u, e, C, B, g = !1) => {
  A.strokeStyle = "#5e5ad8", A.setLineDash([]), A.fillStyle = "rgba(255, 255, 255, 0.9)", B ? A.fillStyle = "rgba(134, 131, 226, 0.9)" : g && (A.fillStyle = "rgba(177, 151, 252, 0.7)"), y4(A, e[0], e[1], C / u.zoom.value, !g);
}, tpA = (A, u, e, C, B, g) => {
  A.beginPath(), A.ellipse(C, B, u / 2, e / 2, g, 0, Math.PI * 2), A.stroke();
}, ipA = (A, u, e, C) => {
  let [B, g, t, i] = Au(u, e), I = t - B, o = i - g;
  A.strokeStyle = "rgba(0,0,0,.05)";
  let E = C.value < 1 ? C.value : 1;
  A.lineWidth = k2 / E;
  let Q = A.lineWidth / 2 + y2, s = sB(Math.min(u.width, u.height), u);
  switch (u.type) {
    case "rectangle":
    case "text":
    case "image":
    case "iframe":
    case "embeddable":
    case "frame":
    case "magicframe":
      kn(A, B - Q, g - Q, I + Q * 2, o + Q * 2, B + I / 2, g + o / 2, u.angle, void 0, s);
      break;
    case "diamond":
      let l = Math.hypot(I, o), c = Q * l / o, D = Q * l / I;
      gpA(A, I + c * 2, o + D * 2, B + I / 2, g + o / 2, u.angle);
      break;
    case "ellipse":
      tpA(A, I + Q * 2, o + Q * 2, B + I / 2, g + o / 2, u.angle);
      break;
  }
}, EpA = (A, u, e, C) => {
  let [B, g, t] = u, i = dn(t, t.width, t.height, C);
  A.strokeStyle = "rgba(0,0,0,0)", A.fillStyle = "rgba(0,0,0,.05)", (g === "both" ? [0, -1] : g === "start" ? [0] : [-1]).forEach((I) => {
    let [o, E] = LA.getPointAtIndexGlobalCoordinates(B, I, e);
    y4(A, o, E, i);
  });
}, DL = (A, u, e) => {
  let { angle: C, x1: B, y1: g, x2: t, y2: i, selectionColors: I, cx: o, cy: E, dashed: Q, activeEmbeddable: s } = e, l = t - B, c = i - g, D = (e.padding ?? UE * 2) / u.zoom.value, h = 8 / u.zoom.value, F = 4 / u.zoom.value;
  A.save(), A.translate(u.scrollX, u.scrollY), A.lineWidth = (s ? 4 : 1) / u.zoom.value;
  let m = I.length;
  for (let p = 0; p < m; ++p) A.strokeStyle = I[p], Q && A.setLineDash([h, F + (h + F) * (m - 1)]), A.lineDashOffset = (h + F) * p, kn(A, B - D, g - D, l + D * 2, c + D * 2, o, E, C);
  A.restore();
}, apA = (A, u, e, C) => {
  let B = Array.isArray(e) ? EpA : ipA;
  A.save(), A.translate(u.scrollX, u.scrollY), B(A, e, C, u.zoom), A.restore();
}, IpA = (A, u, e, C) => {
  let [B, g, t, i] = Au(e, C), I = t - B, o = i - g;
  A.strokeStyle = "rgb(0,118,255)", A.lineWidth = i0.strokeWidth / u.zoom.value, A.save(), A.translate(u.scrollX, u.scrollY), kn(A, B, g, I, o, B + I / 2, g + o / 2, e.angle, !1, i0.radius / u.zoom.value), A.restore();
}, opA = (A, u, e) => {
  let C = e.filter((i) => i.groupIds.length === 0), B = e.filter((i) => i.groupIds.length > 0), g = (i) => {
    let [I, o, E, Q] = Nu(i);
    return { angle: 0, x1: I, x2: E, y1: o, y2: Q, selectionColors: ["rgb(0,118,255)"], dashed: !1, cx: I + (E - I) / 2, cy: o + (Q - o) / 2, activeEmbeddable: !1 };
  }, t = (i) => {
    let I = Vu(e, i);
    return g(I);
  };
  Object.entries(Ok(B, u)).filter(([i, I]) => I).map(([i, I]) => i).map((i) => t(i)).concat(C.map((i) => g([i]))).forEach((i) => DL(A, u, i));
}, cD = (A, u, e, C) => {
  if (!u.selectedLinearElement) return;
  A.save(), A.translate(u.scrollX, u.scrollY), A.lineWidth = 1 / u.zoom.value;
  let B = LA.getPointsGlobalCoordinates(e, C), { POINT_HANDLE_SIZE: g } = LA, t = u.editingLinearElement ? g : g / 2;
  if (B.forEach((i, I) => {
    if (xA(e) && I !== 0 && I !== B.length - 1) return;
    let o = !!u.editingLinearElement?.selectedPointsIndices?.includes(I);
    lD(A, u, i, t, o);
  }), xA(e)) {
    let i = e.fixedSegments?.map((I) => I.index) || [];
    B.slice(0, -1).forEach((I, o) => {
      LA.isSegmentTooShort(e, B[o + 1], B[o], o, u.zoom) || lD(A, u, U((I[0] + B[o + 1][0]) / 2, (I[1] + B[o + 1][1]) / 2), g / 2, !1, !i.includes(o + 1));
    });
  } else LA.getEditorMidPoints(e, C, u).filter((i, I, o) => i !== null && !(xA(e) && (I === 0 || I === o.length - 1))).forEach((i) => {
    (u.editingLinearElement || B.length === 2) && lD(A, u, i, g / 2, !1, !0);
  });
  A.restore();
}, A7 = (A, u, e, C, B) => {
  Object.keys(C).forEach((g) => {
    let t = C[g];
    if (t !== void 0) {
      let [i, I, o, E] = t;
      A.save(), A.lineWidth = 1 / e.zoom.value, u.selectionColor && (A.strokeStyle = u.selectionColor), g === "rotation" ? y4(A, i + o / 2, I + E / 2, o / 2) : A.roundRect ? (A.beginPath(), A.roundRect(i, I, o, E, 2 / e.zoom.value), A.fill(), A.stroke()) : kn(A, i, I, o, E, i + o / 2, I + E / 2, B, !0), A.restore();
    }
  });
}, QpA = (A, u, e, C, B) => {
  let [g, t, , , i, I] = Au(C, B), o = 3, E = 20, Q = o / e.zoom.value, s = Q / 2, l = i - g + Q, c = I - t + Q, D = Math.min(E / e.zoom.value, l), h = Math.min(E / e.zoom.value, c);
  A.save(), A.fillStyle = u.selectionColor, A.strokeStyle = u.selectionColor, A.lineWidth = Q, [[[-l, -c], [0, s], [D, s], [s, 0], [s, h]], [[l - s, -c], [s, s], [-D + s, s], [0, 0], [0, h]], [[-l, c], [0, -s], [D, -s], [s, 0], [s, -h]], [[l - s, c], [s, -s], [-D + s, -s], [0, 0], [0, -h]]].forEach((F) => {
    let [[m, p], [k, b], [f, L], [N, M], [v, K]] = F;
    A.save(), A.translate(i, I), A.rotate(C.angle), A.beginPath(), A.moveTo(m + k, p + b), A.lineTo(m + f, p + L), A.stroke(), A.beginPath(), A.moveTo(m + N, p + M), A.lineTo(m + v, p + K), A.stroke(), A.restore();
  }), A.restore();
}, npA = (A, u, e, C) => {
  u.save();
  let B = UE * 2 / e.zoom.value, g = A.width + B * 2, t = A.height + B * 2, i = A.x + g / 2, I = A.y + t / 2, o = -(g / 2 + B), E = -(t / 2 + B);
  u.translate(i + e.scrollX, I + e.scrollY), u.rotate(A.angle), u.lineWidth = 1 / e.zoom.value, u.strokeStyle = C, u.strokeRect(o, E, g, t), u.restore();
}, hL = ({ canvas: A, elementsMap: u, visibleElements: e, selectedElements: C, allElementsMap: B, scale: g, appState: t, renderConfig: i, device: I }) => {
  if (A === null) return { atLeastOneVisibleElement: !1, elementsMap: u };
  let [o, E] = N2(A, g), Q = R2({ canvas: A, scale: g, normalizedWidth: o, normalizedHeight: E });
  Q.save(), Q.scale(t.zoom.value, t.zoom.value);
  let s;
  if (e.forEach((D) => {
    t.editingLinearElement?.elementId === D.id && D && (s = D);
  }), s && cD(Q, t, s, u), t.selectionElement && !t.isCropping) try {
    zlA(t.selectionElement, Q, t, i.selectionColor);
  } catch (D) {
    console.error(D);
  }
  if (t.editingTextElement && UA(t.editingTextElement)) {
    let D = B.get(t.editingTextElement.id);
    D && !D.autoResize && npA(D, Q, t, i.selectionColor);
  }
  t.isBindingEnabled && t.suggestedBindings.filter((D) => D != null).forEach((D) => {
    apA(Q, t, D, u);
  }), t.frameToHighlight && IpA(Q, t, t.frameToHighlight, u), t.elementsToHighlight && opA(Q, t, t.elementsToHighlight);
  let l = C.some((D) => OA(D));
  if (C.length === 1 && t.editingLinearElement?.elementId === C[0].id && cD(Q, t, C[0], u), xA(C[0]) && t.selectedLinearElement && t.selectedLinearElement.segmentMidPointHoveredCoords ? CpA(Q, t) : t.selectedLinearElement && t.selectedLinearElement.hoverPointIndex >= 0 && !(xA(C[0]) && t.selectedLinearElement.hoverPointIndex > 0 && t.selectedLinearElement.hoverPointIndex < C[0].points.length - 1) && BpA(Q, t, u), !t.multiElement && !t.editingLinearElement) {
    let D = Oy(C, t), h = C.length === 1 && $A(C[0]);
    h && t.selectedLinearElement?.elementId === C[0].id && !C[0].locked && cD(Q, t, C[0], u);
    let F = i.selectionColor || X0.black;
    if (D) {
      let m = PA(C), p = [];
      for (let b of u.values()) {
        let f = [], L = i.remoteSelectedElementIds.get(b.id);
        if (h && xA(b) && (b.startBinding || b.endBinding) || (m.has(b.id) && !zk(t, b) && f.push(F), L && f.push(...L.map((N) => P4(N, t.collaborators.get(N))))), f.length) {
          let [N, M, v, K, q, j] = Au(b, u, !0);
          p.push({ angle: b.angle, x1: N, y1: M, x2: v, y2: K, selectionColors: f, dashed: !!L, cx: q, cy: j, activeEmbeddable: t.activeEmbeddable?.element === b && t.activeEmbeddable.state === "active", padding: b.id === t.croppingElementId || bu(b) ? 0 : void 0 });
        }
      }
      let k = (b) => {
        let f = Vu(u, b), [L, N, M, v] = Nu(f);
        p.push({ angle: 0, x1: L, x2: M, y1: N, y2: v, selectionColors: [X0.black], dashed: !0, cx: L + (M - L) / 2, cy: N + (v - N) / 2, activeEmbeddable: !1 });
      };
      for (let b of hE(t)) k(b);
      t.editingGroupId && k(t.editingGroupId), p.forEach((b) => DL(Q, t, b));
    }
    if (Q.save(), Q.translate(t.scrollX, t.scrollY), C.length === 1) {
      Q.fillStyle = X0.white;
      let m = Py(C[0], t.zoom, u, "mouse", FQ(I));
      if (!t.viewModeEnabled && D && !UA(t.editingTextElement) && !t.croppingElementId && A7(Q, i, t, m, C[0].angle), t.croppingElementId && !t.isCropping) {
        let p = u.get(t.croppingElementId);
        p && bu(p) && QpA(Q, i, t, p, u);
      }
    } else if (C.length > 1 && !t.isRotating) {
      let m = UE * 2 / t.zoom.value;
      Q.fillStyle = X0.white;
      let [p, k, b, f] = Nu(C), L = Q.getLineDash();
      Q.setLineDash([2 / t.zoom.value]);
      let N = Q.lineWidth;
      Q.lineWidth = 1 / t.zoom.value, Q.strokeStyle = F, kn(Q, p - m, k - m, b - p + m * 2, f - k + m * 2, (p + b) / 2, (k + f) / 2, 0), Q.lineWidth = N, Q.setLineDash(L);
      let M = C9([p, k, b, f, (p + b) / 2, (k + f) / 2], 0, t.zoom, "mouse", l ? { ...FQ(I), rotation: !0 } : FQ(I));
      C.some((v) => !v.locked) && A7(Q, i, t, M, 0);
    }
    Q.restore();
  }
  t.searchMatches.forEach(({ id: D, focus: h, matchedLines: F }) => {
    let m = u.get(D);
    if (m && UA(m)) {
      let [p, k, , , b, f] = Au(m, u, !0);
      Q.save(), t.theme === su.LIGHT ? h ? Q.fillStyle = "rgba(255, 124, 0, 0.4)" : Q.fillStyle = "rgba(255, 226, 0, 0.4)" : h ? Q.fillStyle = "rgba(229, 82, 0, 0.4)" : Q.fillStyle = "rgba(99, 52, 0, 0.4)", Q.translate(t.scrollX, t.scrollY), Q.translate(b, f), Q.rotate(m.angle), F.forEach((L) => {
        Q.fillRect(p + L.offsetX - b, k + L.offsetY - f, L.width, L.height);
      }), Q.restore();
    }
  }), $5A(Q, t), Q.restore(), $6A({ context: Q, renderConfig: i, appState: t, normalizedWidth: o, normalizedHeight: E });
  let c;
  return i.renderScrollbars && (c = tFA(e, o, E, t), Q.save(), Q.fillStyle = gFA, Q.strokeStyle = "rgba(255,255,255,0.8)", [c.horizontal, c.vertical].forEach((D) => {
    D && VG(Q, D.x, D.y, D.width, D.height, Xt / 2);
  }), Q.restore()), { scrollBars: c, atLeastOneVisibleElement: e.length > 0, elementsMap: u };
}, wL = E4((A) => {
  let u = hL(A);
  A.callback?.(u);
}, { trailing: !0 }), rpA = (A, u) => {
  if (u) {
    wL(A);
    return;
  }
  let e = hL(A);
  return A.callback(e), e;
}, spA = (A) => {
  let u = x.useRef(!1);
  return x.useEffect(() => {
    if (!u.current) {
      u.current = !0;
      return;
    }
    let e = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Map(), B = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
    A.appState.collaborators.forEach((I, o) => {
      if (I.selectedElementIds) for (let E of Object.keys(I.selectedElementIds)) B.has(E) || B.set(E, []), B.get(E).push(o);
      !I.pointer || I.pointer.renderCursor === !1 || (I.username && g.set(o, I.username), I.userState && t.set(o, I.userState), C.set(o, EB({ sceneX: I.pointer.x, sceneY: I.pointer.y }, A.appState)), e.set(o, I.button));
    });
    let i = A.containerRef?.current && getComputedStyle(A.containerRef.current).getPropertyValue("--color-selection") || "#6965db";
    rpA({ canvas: A.canvas, elementsMap: A.elementsMap, visibleElements: A.visibleElements, selectedElements: A.selectedElements, allElementsMap: A.allElementsMap, scale: window.devicePixelRatio, appState: A.appState, renderConfig: { remotePointerViewportCoords: C, remotePointerButton: e, remoteSelectedElementIds: B, remotePointerUsernames: g, remotePointerUserStates: t, selectionColor: i, renderScrollbars: !1 }, device: A.device, callback: A.renderInteractiveSceneCallback }, j9());
  }), r.jsx("canvas", { className: "excalidraw__canvas interactive", style: { width: A.appState.width, height: A.appState.height, cursor: A.appState.viewModeEnabled ? Ru.GRAB : Ru.AUTO }, width: A.appState.width * A.scale, height: A.appState.height * A.scale, ref: A.handleCanvasRef, onContextMenu: A.onContextMenu, onPointerMove: A.onPointerMove, onPointerUp: A.onPointerUp, onPointerCancel: A.onPointerCancel, onTouchMove: A.onTouchMove, onPointerDown: A.onPointerDown, onDoubleClick: A.appState.viewModeEnabled ? void 0 : A.onDoubleClick, children: S("labels.drawingCanvas") });
}, u7 = (A) => ({ zoom: A.zoom, scrollX: A.scrollX, scrollY: A.scrollY, width: A.width, height: A.height, viewModeEnabled: A.viewModeEnabled, openDialog: A.openDialog, editingGroupId: A.editingGroupId, editingLinearElement: A.editingLinearElement, selectedElementIds: A.selectedElementIds, frameToHighlight: A.frameToHighlight, offsetLeft: A.offsetLeft, offsetTop: A.offsetTop, theme: A.theme, pendingImageElementId: A.pendingImageElementId, selectionElement: A.selectionElement, selectedGroupIds: A.selectedGroupIds, selectedLinearElement: A.selectedLinearElement, multiElement: A.multiElement, isBindingEnabled: A.isBindingEnabled, suggestedBindings: A.suggestedBindings, isRotating: A.isRotating, elementsToHighlight: A.elementsToHighlight, collaborators: A.collaborators, activeEmbeddable: A.activeEmbeddable, snapLines: A.snapLines, zenModeEnabled: A.zenModeEnabled, editingTextElement: A.editingTextElement, isCropping: A.isCropping, croppingElementId: A.croppingElementId, searchMatches: A.searchMatches }), lpA = (A, u) => A.selectionNonce !== u.selectionNonce || A.sceneNonce !== u.sceneNonce || A.scale !== u.scale || A.elementsMap !== u.elementsMap || A.visibleElements !== u.visibleElements || A.selectedElements !== u.selectedElements ? !1 : Ee(u7(A.appState), u7(u.appState)), cpA = kA.memo(spA, lpA), dpA = (A) => {
  let u = x.useRef(null), e = x.useRef(!1);
  return x.useEffect(() => {
    let C = u.current;
    if (!C) return;
    let B = A.canvas;
    e.current || (e.current = !0, C.replaceChildren(B), B.classList.add("excalidraw__canvas", "static"));
    let g = `${A.appState.width}px`, t = `${A.appState.height}px`;
    B.style.width !== g && (B.style.width = g), B.style.height !== t && (B.style.height = t);
    let i = A.appState.width * A.scale, I = A.appState.height * A.scale;
    B.width !== i && (B.width = i), B.height !== I && (B.height = I), by({ canvas: B, rc: A.rc, scale: A.scale, elementsMap: A.elementsMap, allElementsMap: A.allElementsMap, visibleElements: A.visibleElements, appState: A.appState, renderConfig: A.renderConfig }, j9());
  }), r.jsx("div", { className: "excalidraw__canvas-wrapper", ref: u });
}, e7 = (A) => ({ zoom: A.zoom, scrollX: A.scrollX, scrollY: A.scrollY, width: A.width, height: A.height, viewModeEnabled: A.viewModeEnabled, openDialog: A.openDialog, hoveredElementIds: A.hoveredElementIds, offsetLeft: A.offsetLeft, offsetTop: A.offsetTop, theme: A.theme, pendingImageElementId: A.pendingImageElementId, shouldCacheIgnoreZoom: A.shouldCacheIgnoreZoom, viewBackgroundColor: A.viewBackgroundColor, exportScale: A.exportScale, selectedElementsAreBeingDragged: A.selectedElementsAreBeingDragged, gridSize: A.gridSize, gridStep: A.gridStep, frameRendering: A.frameRendering, selectedElementIds: A.selectedElementIds, frameToHighlight: A.frameToHighlight, editingGroupId: A.editingGroupId, currentHoveredFontFamily: A.currentHoveredFontFamily, croppingElementId: A.croppingElementId }), DpA = (A, u) => A.sceneNonce !== u.sceneNonce || A.scale !== u.scale || A.elementsMap !== u.elementsMap || A.visibleElements !== u.visibleElements ? !1 : Ee(e7(A.appState), e7(u.appState)) && Ee(A.renderConfig, u.renderConfig), hpA = kA.memo(dpA, DpA), C7 = class {
  constructor(A) {
    J(this, "scene"), J(this, "getRenderableElements", (() => {
      let u = ({ elementsMap: C, zoom: B, offsetLeft: g, offsetTop: t, scrollX: i, scrollY: I, height: o, width: E }) => {
        let Q = [];
        for (let s of C.values()) Rl(s, E, o, { zoom: B, offsetLeft: g, offsetTop: t, scrollX: i, scrollY: I }, C) && Q.push(s);
        return Q;
      }, e = ({ elements: C, editingTextElement: B, newElementId: g, pendingImageElementId: t }) => {
        let i = NC(/* @__PURE__ */ new Map());
        for (let I of C) bu(I) && t === I.id || g !== I.id && (!B || B.type !== "text" || I.id !== B.id) && i.set(I.id, I);
        return i;
      };
      return kaA(({ zoom: C, offsetLeft: B, offsetTop: g, scrollX: t, scrollY: i, height: I, width: o, editingTextElement: E, newElementId: Q, pendingImageElementId: s, sceneNonce: l }) => {
        let c = this.scene.getNonDeletedElements(), D = e({ elements: c, editingTextElement: E, newElementId: Q, pendingImageElementId: s }), h = u({ elementsMap: D, zoom: C, offsetLeft: B, offsetTop: g, scrollX: t, scrollY: i, height: I, width: o });
        return { elementsMap: D, visibleElements: h };
      });
    })()), this.scene = A;
  }
  destroy() {
    wL.cancel(), yy.cancel(), this.getRenderableElements.clear();
  }
}, wpA = ({ trails: A }) => {
  let u = x.useRef(null);
  return x.useEffect(() => {
    if (u.current) for (let e of A) e.start(u.current);
    return () => {
      for (let e of A) e.stop();
    };
  }, A), r.jsx("div", { className: "SVGLayer", children: r.jsx("svg", { ref: u }) });
}, FpA = 5, ppA = (A, u, e) => {
  let [C, B] = Au(A, e), { x: g, y: t } = EB({ sceneX: C + A.width, sceneY: B }, u), i = g - u.offsetLeft + 10, I = t - u.offsetTop;
  return { x: i, y: I };
}, B7 = ({ children: A, element: u, elementsMap: e }) => {
  let C = bn();
  if (C.contextMenu || C.newElement || C.resizingElement || C.isRotating || C.openMenu || C.viewModeEnabled) return null;
  let { x: B, y: g } = ppA(u, C, e);
  return r.jsx("div", { className: "excalidraw-canvas-buttons", style: { top: `${g}px`, left: `${B}px`, padding: FpA }, children: A });
}, mpA = "small", dD = (A) => r.jsxs("label", { className: NA("ToolIcon ToolIcon__MagicButton", `ToolIcon_size_${mpA}`, { "is-mobile": A.isMobile }), title: `${A.title}`, children: [r.jsx("input", { className: "ToolIcon_type_checkbox", type: "checkbox", name: A.name, onChange: A.onChange, checked: A.checked, "aria-label": A.title }), r.jsx("div", { className: "ToolIcon__icon", children: A.icon })] }), kpA = ({ height: A, width: u, userToFollow: e, onDisconnect: C }) => r.jsx("div", { className: "follow-mode", style: { width: u, height: A }, children: r.jsxs("div", { className: "follow-mode__badge", children: [r.jsxs("div", { className: "follow-mode__badge__label", children: ["Following", " ", r.jsx("span", { className: "follow-mode__badge__username", title: e.username, children: e.username })] }), r.jsx("button", { type: "button", onClick: C, className: "follow-mode__disconnect-btn", children: yI })] }) }), ypA = kpA, bpA = class {
  constructor() {
    J(this, "targets", /* @__PURE__ */ new WeakMap()), J(this, "rafIds", /* @__PURE__ */ new WeakMap());
  }
  register(A, u) {
    this.targets.set(A, { callback: u, stopped: !0 });
  }
  start(A) {
    let u = this.targets.get(A);
    u && (this.rafIds.has(A) || (this.targets.set(A, { ...u, stopped: !1 }), this.scheduleFrame(A)));
  }
  stop(A) {
    let u = this.targets.get(A);
    u && !u.stopped && this.targets.set(A, { ...u, stopped: !0 }), this.cancelFrame(A);
  }
  constructFrame(A) {
    return (u) => {
      let e = this.targets.get(A);
      if (!e) return;
      let C = this.onFrame(e, u);
      !e.stopped && !C ? this.scheduleFrame(A) : this.cancelFrame(A);
    };
  }
  scheduleFrame(A) {
    let u = requestAnimationFrame(this.constructFrame(A));
    this.rafIds.set(A, u);
  }
  cancelFrame(A) {
    if (this.rafIds.has(A)) {
      let u = this.rafIds.get(A);
      cancelAnimationFrame(u);
    }
    this.rafIds.delete(A);
  }
  onFrame(A, u) {
    return A.callback(u) ?? !1;
  }
}, j1 = class {
  constructor(A, u, e) {
    this.animationFrameHandler = A, this.app = u, this.options = e, J(this, "currentTrail"), J(this, "pastTrails", []), J(this, "container"), J(this, "trailElement"), this.animationFrameHandler.register(this, this.onFrame.bind(this)), this.trailElement = document.createElementNS(pu, "path");
  }
  get hasCurrentTrail() {
    return !!this.currentTrail;
  }
  hasLastPoint(A, u) {
    if (this.currentTrail) {
      let e = this.currentTrail.originalPoints.length;
      return this.currentTrail.originalPoints[e - 1][0] === A && this.currentTrail.originalPoints[e - 1][1] === u;
    }
    return !1;
  }
  start(A) {
    A && (this.container = A), this.trailElement.parentNode !== this.container && this.container && this.container.appendChild(this.trailElement), this.animationFrameHandler.start(this);
  }
  stop() {
    this.animationFrameHandler.stop(this), this.trailElement.parentNode === this.container && this.container?.removeChild(this.trailElement);
  }
  startPath(A, u) {
    this.currentTrail = new sE(this.options), this.currentTrail.addPoint([A, u, performance.now()]), this.update();
  }
  addPointToPath(A, u) {
    this.currentTrail && (this.currentTrail.addPoint([A, u, performance.now()]), this.update());
  }
  endPath() {
    this.currentTrail && (this.currentTrail.close(), this.currentTrail.options.keepHead = !1, this.pastTrails.push(this.currentTrail), this.currentTrail = void 0, this.update());
  }
  update() {
    this.start();
  }
  onFrame() {
    let A = [];
    for (let e of this.pastTrails) A.push(this.drawTrail(e, this.app.state));
    if (this.currentTrail) {
      let e = this.drawTrail(this.currentTrail, this.app.state);
      A.push(e);
    }
    this.pastTrails = this.pastTrails.filter((e) => e.getStrokeOutline().length !== 0), A.length === 0 && this.stop();
    let u = A.join(" ").trim();
    this.trailElement.setAttribute("d", u), this.trailElement.setAttribute("fill", (this.options.fill ?? (() => "black"))(this));
  }
  drawTrail(A, u) {
    let e = A.getStrokeOutline(A.options.size / u.zoom.value).map(([C, B]) => {
      let g = EB({ sceneX: C, sceneY: B }, u);
      return [g.x, g.y];
    });
    return yaA(e, !0);
  }
}, UpA = class {
  constructor(A, u) {
    this.animationFrameHandler = A, this.app = u, J(this, "localTrail"), J(this, "collabTrails", /* @__PURE__ */ new Map()), J(this, "container"), this.animationFrameHandler.register(this, this.onFrame.bind(this)), this.localTrail = new j1(A, u, { ...this.getTrailOptions(), fill: () => bEA });
  }
  getTrailOptions() {
    return { simplify: 0, streamline: 0.4, sizeMapping: (A) => {
      let u = Math.max(0, 1 - (performance.now() - A.pressure) / 1e3), e = (50 - Math.min(50, A.totalLength - A.currentIndex)) / 50;
      return Math.min(dE(e), dE(u));
    } };
  }
  startPath(A, u) {
    this.localTrail.startPath(A, u);
  }
  addPointToPath(A, u) {
    this.localTrail.addPointToPath(A, u);
  }
  endPath() {
    this.localTrail.endPath();
  }
  start(A) {
    this.container = A, this.animationFrameHandler.start(this), this.localTrail.start(A);
  }
  stop() {
    this.animationFrameHandler.stop(this), this.localTrail.stop();
  }
  onFrame() {
    this.updateCollabTrails();
  }
  updateCollabTrails() {
    if (!(!this.container || this.app.state.collaborators.size === 0)) {
      for (let [A, u] of this.app.state.collaborators.entries()) {
        let e;
        this.collabTrails.has(A) ? e = this.collabTrails.get(A) : (e = new j1(this.animationFrameHandler, this.app, { ...this.getTrailOptions(), fill: () => u.pointer?.laserColor || P4(A, u) }), e.start(this.container), this.collabTrails.set(A, e)), u.pointer && u.pointer.tool === "laser" && (u.button === "down" && !e.hasCurrentTrail && e.startPath(u.pointer.x, u.pointer.y), u.button === "down" && e.hasCurrentTrail && !e.hasLastPoint(u.pointer.x, u.pointer.y) && e.addPointToPath(u.pointer.x, u.pointer.y), u.button === "up" && e.hasCurrentTrail && (e.addPointToPath(u.pointer.x, u.pointer.y), e.endPath()));
      }
      for (let A of this.collabTrails.keys()) this.app.state.collaborators.has(A) || (this.collabTrails.get(A).stop(), this.collabTrails.delete(A));
    }
  }
}, GpA = (A, u, e, C, B, g) => {
  let { zoom: t } = C, i = 180 * e / Math.PI, I = A * (t.value - 1) / 2, o = u * (t.value - 1) / 2;
  return A > B && t.value !== 1 && (I = B * (t.value - 1) / 2), u > g && t.value !== 1 && (o = g * (t.value - 1) / 2), `translate(${I}px, ${o}px) scale(${t.value}) rotate(${i}deg)`;
}, fpA = ({ id: A, onChange: u, onSubmit: e, getViewportCoords: C, element: B, canvas: g, excalidrawContainer: t, app: i, autoSelect: I = !0 }) => {
  let o = (O, $) => {
    if (!$.style.fontFamily || !$.style.fontSize) return !1;
    let X = $.style.fontFamily.replace(/"/g, "");
    return gI({ fontFamily: O.fontFamily }) !== X || `${O.fontSize}px` !== $.style.fontSize;
  }, E = () => {
    let O = i.state, $ = Og.getScene(B)?.getElement(A);
    if (!$) return;
    let { textAlign: X, verticalAlign: P } = $, _ = i.scene.getNonDeletedElementsMap();
    if ($ && UA($)) {
      let CA = $.x, T = $.y, gA = _0($, i.scene.getNonDeletedElementsMap()), GA = $.width, fA = $.height, qA = $.width, JA = $.height;
      if (gA && $.containerId) {
        if (Eu(gA)) {
          let pe = LA.getBoundTextElementPosition(gA, $, _);
          CA = pe.x, T = pe.y;
        }
        let HC = o($, Q), kB;
        if (HC ? kB = bl(gA.id, gA.height) : (kB = nI[gA.id], kB || (kB = bl(gA.id, gA.height))), qA = zg(gA, $), JA = k4(gA, $), !Eu(gA) && fA > JA) {
          let pe = ME(fA, gA.type);
          nA(gA, { height: pe });
          return;
        } else if (!Eu(gA) && gA.height > kB.height && fA < JA) {
          let pe = ME(fA, gA.type);
          nA(gA, { height: pe });
        } else {
          let { y: pe } = m4(gA, $, _);
          T = pe;
        }
      }
      let [mA, FA] = C(CA, T), TA = Q.selectionStart, WA = Q.selectionEnd, ru = Q.value.length;
      if (TA === WA && WA !== ru) {
        let HC = ru - WA;
        Q.selectionStart = Q.value.length - HC, Q.selectionEnd = Q.value.length - HC;
      }
      gA ? GA += 0.5 : (qA = (O.width - 8 - mA) / O.zoom.value, GA = Math.min(GA, qA)), fA *= 1.05;
      let _u = vu($), N0 = (O.height - FA) / O.zoom.value;
      Object.assign(Q.style, { font: _u, lineHeight: $.lineHeight, width: `${GA}px`, height: `${fA}px`, left: `${mA}px`, top: `${FA}px`, transform: GpA(GA, fA, g3A($, gA), O, qA, N0), textAlign: X, verticalAlign: P, color: $.strokeColor, opacity: $.opacity / 100, filter: "var(--theme-filter)", maxHeight: `${N0}px` }), Q.scrollTop = 0, qg() && (Q.style.fontFamily = gI($)), nA($, { x: CA, y: T });
    }
  }, Q = document.createElement("textarea");
  Q.dir = "auto", Q.tabIndex = 0, Q.dataset.type = "wysiwyg", Q.wrap = "off", Q.classList.add("excalidraw-wysiwyg");
  let s = "pre", l = "normal";
  (Xu(B) || !B.autoResize) && (s = "pre-wrap", l = "break-word"), Object.assign(Q.style, { position: "absolute", display: "inline-block", minHeight: "1em", backfaceVisibility: "hidden", margin: 0, padding: 0, border: 0, outline: 0, resize: "none", background: "transparent", overflow: "hidden", zIndex: "var(--zIndex-wysiwyg)", wordBreak: l, whiteSpace: s, overflowWrap: "break-word", boxSizing: "content-box" }), Q.value = B.originalText, E(), u && (Q.onpaste = async (O) => {
    let $ = await My(O, !0);
    if (!$.text) return;
    let X = iI($.text);
    if (!X) return;
    let P = _0(B, i.scene.getNonDeletedElementsMap()), _ = vu({ fontSize: i.state.currentItemFontSize, fontFamily: i.state.currentItemFontFamily });
    if (P) {
      let CA = gu(P, i.scene.getNonDeletedElementsMap()), T = JE(`${Q.value}${X}`, _, zg(P, CA)), gA = I2(T, _);
      Q.style.width = `${gA}px`;
    }
  }, Q.oninput = () => {
    let O = iI(Q.value);
    if (Q.value !== O) {
      let $ = Q.selectionStart;
      Q.value = O, Q.selectionStart = $, Q.selectionEnd = $;
    }
    u(Q.value);
  }), Q.onkeydown = (O) => {
    if (!O.shiftKey && em.keyTest(O)) O.preventDefault(), i.actionManager.executeAction(em), E();
    else if (!O.shiftKey && Cm.keyTest(O)) O.preventDefault(), i.actionManager.executeAction(Cm), E();
    else if (!O.shiftKey && Bm.keyTest(O)) O.preventDefault(), i.actionManager.executeAction(Bm), E();
    else if ($p.keyTest(O)) i.actionManager.executeAction($p);
    else if (Am.keyTest(O)) i.actionManager.executeAction(Am);
    else if (O.key === Z.ESCAPE) O.preventDefault(), b = !0, f();
    else if (O.key === Z.ENTER && O[Z.CTRL_OR_CMD]) {
      if (O.preventDefault(), O.isComposing || O.keyCode === 229) return;
      b = !0, f();
    } else if (O.key === Z.TAB || O[Z.CTRL_OR_CMD] && (O.code === wu.BRACKET_LEFT || O.code === wu.BRACKET_RIGHT)) {
      if (O.preventDefault(), O.isComposing) return;
      O.shiftKey || O.code === wu.BRACKET_LEFT ? m() : F(), Q.dispatchEvent(new Event("input"));
    }
  };
  let c = 4, D = " ".repeat(c), h = new RegExp(`^ {1,${c}}`), F = () => {
    let { selectionStart: O, selectionEnd: $ } = Q, X = p(), P = Q.value;
    X.forEach((_) => {
      let CA = P.slice(0, _), T = P.slice(_);
      P = `${CA}${D}${T}`;
    }), Q.value = P, Q.selectionStart = O + c, Q.selectionEnd = $ + c * X.length;
  }, m = () => {
    let { selectionStart: O, selectionEnd: $ } = Q, X = p(), P = [], _ = Q.value;
    X.forEach((CA) => {
      let T = _.slice(CA, CA + c).match(h);
      if (T) {
        let gA = _.slice(0, CA), GA = _.slice(CA + T[0].length);
        _ = `${gA}${GA}`, P.push(CA);
      }
    }), Q.value = _, P.length && (O > P[P.length - 1] ? Q.selectionStart = Math.max(O - c, P[P.length - 1]) : Q.selectionStart = O, Q.selectionEnd = Math.max(Q.selectionStart, $ - c * P.length));
  }, p = () => {
    let { selectionStart: O, selectionEnd: $, value: X } = Q, P = X.slice(0, O).match(/[^\n]*$/)[0].length;
    return O = O - P, X.slice(O, $).split(`
`).reduce((_, CA, T, gA) => _.concat(T ? _[T - 1] + gA[T - 1].length + 1 : O), []).reverse();
  }, k = (O) => {
    O.target instanceof HTMLCanvasElement && (O.preventDefault(), O.stopPropagation());
  }, b = !1, f = () => {
    if (j) return;
    j = !0, L();
    let O = Og.getScene(B)?.getElement(B.id);
    if (!O) return;
    let $ = _0(O, i.scene.getNonDeletedElementsMap());
    if ($) {
      if (Q.value.trim()) {
        let X = Tg($);
        !X || X !== B.id ? nA($, { boundElements: ($.boundElements || []).concat({ type: "text", id: B.id }) }) : Eu($) && L4($);
      } else nA($, { boundElements: $.boundElements?.filter((X) => !UA(X)) });
      Ge(O, $, i.scene.getNonDeletedElementsMap());
    }
    e({ viaKeyboard: b, nextOriginalText: Q.value });
  }, L = () => {
    Q.onblur = null, Q.oninput = null, Q.onkeydown = null, uA && uA.disconnect(), window.removeEventListener("resize", E), window.removeEventListener("wheel", k, !0), window.removeEventListener("pointerdown", v), window.removeEventListener("pointerup", N), window.removeEventListener("blur", f), window.removeEventListener("beforeunload", f), K(), q(), Q.remove();
  }, N = (O) => {
    window.removeEventListener("pointerup", N);
    let $ = O?.target, X = $ instanceof HTMLElement && $.classList.contains("properties-trigger");
    setTimeout(() => {
      Q.onblur = f, X || Q.focus();
    });
  }, M = () => {
    Q.onblur = null, window.addEventListener("pointerup", N), window.addEventListener("blur", f);
  }, v = (O) => {
    let $ = O?.target;
    if (O.button === Jt.WHEEL) {
      $ instanceof HTMLTextAreaElement && (O.preventDefault(), i.handleCanvasPanUsingWheelOrSpaceDrag(O)), M();
      return;
    }
    let X = $ instanceof HTMLElement && $.classList.contains("properties-trigger");
    (O.target instanceof HTMLElement || O.target instanceof SVGElement) && O.target.closest(`.${CI.SHAPE_ACTIONS_MENU}, .${CI.ZOOM_ACTIONS}`) && !tE(O.target) || X ? M() : O.target instanceof HTMLCanvasElement && !qg() && requestAnimationFrame(() => {
      f();
    });
  }, K = i.scene.onUpdate(() => {
    E(), document.activeElement?.closest(".properties-content") || Q.focus();
  }), q = i.onScrollChangeEmitter.on(() => {
    E();
  }), j = !1;
  I && Q.select(), N();
  let uA = null;
  g && "ResizeObserver" in window ? (uA = new window.ResizeObserver(() => {
    E();
  }), uA.observe(g)) : window.addEventListener("resize", E), Q.onpointerdown = (O) => O.stopPropagation(), requestAnimationFrame(() => {
    window.addEventListener("pointerdown", v, { capture: !0 });
  }), window.addEventListener("beforeunload", f), t?.querySelector(".excalidraw-textEditorContainer").appendChild(Q);
}, LpA = pA({ name: "autoResize", label: "labels.autoResize", icon: null, trackEvent: { category: "element" }, predicate: (A, u, e, C) => {
  let B = iu(A, u);
  return B.length === 1 && UA(B[0]) && !B[0].autoResize;
}, perform: (A, u, e, C) => {
  let B = iu(A, u);
  return { appState: u, elements: A.map((g) => {
    if (g.id === B[0].id && UA(g)) {
      let t = we(g.originalText, vu(g), g.lineHeight);
      return Bu(g, { autoResize: !0, width: t.width, height: t.height, text: g.originalText });
    }
    return g;
  }), captureUpdate: aA.IMMEDIATELY };
} }), xpA = (A) => {
  let u = ["flowchart", "graph", "sequenceDiagram", "classDiagram", "stateDiagram", "stateDiagram-v2", "erDiagram", "journey", "gantt", "pie", "quadrantChart", "requirementDiagram", "gitGraph", "C4Context", "mindmap", "timeline", "zenuml", "sankey", "xychart", "block"];
  return new RegExp(`^(?:%%{.*?}%%[\\s\\n]*)?\\b(?:${u.map((e) => `\\s*${e}(-beta)?`).join("|")})\\b`).test(A.trim());
}, FL = ({ canvas: A, rc: u, newElement: e, elementsMap: C, allElementsMap: B, scale: g, appState: t, renderConfig: i }) => {
  if (A) {
    let [I, o] = N2(A, g), E = R2({ canvas: A, scale: g, normalizedWidth: I, normalizedHeight: o });
    E.save(), E.scale(t.zoom.value, t.zoom.value), e && e.type !== "selection" ? gE(e, C, B, u, E, i, t) : E.clearRect(0, 0, I, o);
  }
}, SpA = E4((A) => {
  FL(A);
}, { trailing: !0 }), NpA = (A, u) => {
  if (u) {
    SpA(A);
    return;
  }
  FL(A);
}, RpA = (A) => {
  let u = x.useRef(null);
  return x.useEffect(() => {
    u.current && NpA({ canvas: u.current, scale: A.scale, newElement: A.appState.newElement, elementsMap: A.elementsMap, allElementsMap: A.allElementsMap, rc: A.rc, renderConfig: A.renderConfig, appState: A.appState }, j9());
  }), r.jsx("canvas", { className: "excalidraw__canvas", style: { width: A.appState.width, height: A.appState.height }, width: A.appState.width * A.scale, height: A.appState.height * A.scale, ref: u });
}, MpA = RpA, pL = kA.createContext(null), mL = kA.createContext(null), kL = { viewport: { isMobile: !1, isLandscape: !1 }, editor: { isMobile: !1, canFitSidebar: !1 }, isTouchScreen: !1 }, T9 = kA.createContext(kL);
T9.displayName = "DeviceContext";
var z9 = kA.createContext({ container: null, id: null });
z9.displayName = "ExcalidrawContainerContext";
var P9 = kA.createContext([]);
P9.displayName = "ExcalidrawElementsContext";
var O9 = kA.createContext({ ...$B(), width: 0, height: 0, offsetLeft: 0, offsetTop: 0 });
O9.displayName = "ExcalidrawAppStateContext";
var V9 = kA.createContext(() => {
  console.warn("Uninitialized ExcalidrawSetAppStateContext context!");
});
V9.displayName = "ExcalidrawSetAppStateContext";
var X9 = kA.createContext(null);
X9.displayName = "ExcalidrawActionManagerContext";
var Eg = () => x.useContext(pL), yn = () => x.useContext(mL), J0 = () => x.useContext(T9), ag = () => x.useContext(z9), V4 = () => x.useContext(P9), bn = () => x.useContext(O9), Z0 = () => x.useContext(V9), $e = () => x.useContext(X9), zo = !1, DD = 0, uE = !1, Po = !1, hD = !1, wD = { horizontal: null, vertical: null }, Ht = 0, Oo = !1, FD = /* @__PURE__ */ new Map(), ws = !1, g7 = 0, t7 = !1, Vo = null, ku = { pointers: /* @__PURE__ */ new Map(), lastCenter: null, initialDistance: null, initialScale: null }, YpA = class yL extends kA.Component {
  constructor(u) {
    super(u), J(this, "canvas"), J(this, "interactiveCanvas", null), J(this, "rc"), J(this, "unmounted", !1), J(this, "actionManager"), J(this, "device", kL), J(this, "excalidrawContainerRef", kA.createRef()), J(this, "scene"), J(this, "fonts"), J(this, "renderer"), J(this, "visibleElements"), J(this, "resizeObserver"), J(this, "nearestScrollableContainer"), J(this, "library"), J(this, "libraryItemsFromStorage"), J(this, "id"), J(this, "store"), J(this, "history"), J(this, "excalidrawContainerValue"), J(this, "files", {}), J(this, "imageCache", /* @__PURE__ */ new Map()), J(this, "iFrameRefs", /* @__PURE__ */ new Map()), J(this, "embedsValidationStatus", /* @__PURE__ */ new Map()), J(this, "initializedEmbeds", /* @__PURE__ */ new Set()), J(this, "elementsPendingErasure", /* @__PURE__ */ new Set()), J(this, "flowChartCreator", new uFA()), J(this, "flowChartNavigator", new AFA()), J(this, "hitLinkElement"), J(this, "lastPointerDownEvent", null), J(this, "lastPointerUpEvent", null), J(this, "lastPointerMoveEvent", null), J(this, "lastPointerMoveCoords", null), J(this, "lastViewportPosition", { x: 0, y: 0 }), J(this, "animationFrameHandler", new bpA()), J(this, "laserTrails", new UpA(this.animationFrameHandler, this)), J(this, "eraserTrail", new j1(this.animationFrameHandler, this, { streamline: 0.2, size: 5, keepHead: !0, sizeMapping: (E) => {
      let Q = Math.max(0, 1 - (performance.now() - E.pressure) / 200), s = (10 - Math.min(10, E.totalLength - E.currentIndex)) / 10;
      return Math.min(dE(s), dE(Q));
    }, fill: () => this.state.theme === su.LIGHT ? "rgba(0, 0, 0, 0.2)" : "rgba(255, 255, 255, 0.2)" })), J(this, "onChangeEmitter", new JB()), J(this, "onPointerDownEmitter", new JB()), J(this, "onPointerUpEmitter", new JB()), J(this, "onUserFollowEmitter", new JB()), J(this, "onScrollChangeEmitter", new JB()), J(this, "missingPointerEventCleanupEmitter", new JB()), J(this, "onRemoveEventListenersEmitter", new JB()), J(this, "getEffectiveGridSize", () => VQ(this) ? this.state.gridSize : null), J(this, "updateEmbedValidationStatus", (E, Q) => {
      this.embedsValidationStatus.set(E.id, Q), a0.delete(E);
    }), J(this, "updateEmbeddables", () => {
      let E = /* @__PURE__ */ new Set(), Q = !1;
      this.scene.getNonDeletedElements().filter((s) => {
        if (je(s)) {
          if (E.add(s.id), !this.embedsValidationStatus.has(s.id)) {
            Q = !0;
            let l = Hs(s.link, this.props.validateEmbeddable);
            this.updateEmbedValidationStatus(s, l);
          }
        } else jt(s) && E.add(s.id);
        return !1;
      }), Q && this.scene.triggerUpdate(), this.iFrameRefs.forEach((s, l) => {
        E.has(l) || this.iFrameRefs.delete(l);
      });
    }), J(this, "getFrameNameDOMId", (E) => `${this.id}-frame-name-${E.id}`), J(this, "frameNameBoundsCache", { get: (E) => {
      let Q = this.frameNameBoundsCache._cache.get(E.id);
      if (!Q || Q.zoom !== this.state.zoom.value || Q.versionNonce !== E.versionNonce) {
        let s = document.getElementById(this.getFrameNameDOMId(E));
        if (s) {
          let l = s.getBoundingClientRect(), c = Tu({ clientX: l.x, clientY: l.y }, this.state), D = Tu({ clientX: l.right, clientY: l.bottom }, this.state);
          return Q = { x: c.x, y: c.y, width: D.x - c.x, height: D.y - c.y, angle: 0, zoom: this.state.zoom.value, versionNonce: E.versionNonce }, this.frameNameBoundsCache._cache.set(E.id, Q), Q;
        }
        return null;
      }
      return Q;
    }, _cache: /* @__PURE__ */ new Map() }), J(this, "resetEditingFrame", (E) => {
      E && nA(E, { name: E.name?.trim() || null }), this.setState({ editingFrame: null });
    }), J(this, "renderFrameNames", () => {
      if (!this.state.frameRendering.enabled || !this.state.frameRendering.name) return this.state.editingFrame && this.resetEditingFrame(null), null;
      let E = this.state.theme === su.DARK;
      return this.scene.getNonDeletedFramesLikes().map((Q) => {
        if (!Rl(Q, this.canvas.width / window.devicePixelRatio, this.canvas.height / window.devicePixelRatio, { offsetLeft: this.state.offsetLeft, offsetTop: this.state.offsetTop, scrollX: this.state.scrollX, scrollY: this.state.scrollY, zoom: this.state.zoom }, this.scene.getNonDeletedElementsMap())) return this.state.editingFrame === Q.id && this.resetEditingFrame(Q), null;
        let { x: s, y: l } = EB({ sceneX: Q.x, sceneY: Q.y }, this.state), c = 6, D, h = Zy(Q);
        if (Q.id === this.state.editingFrame) {
          let F = h;
          D = r.jsx("input", { autoFocus: !0, value: F, onChange: (m) => {
            nA(Q, { name: m.target.value });
          }, onFocus: (m) => m.target.select(), onBlur: () => this.resetEditingFrame(Q), onKeyDown: (m) => {
            (m.key === Z.ESCAPE || m.key === Z.ENTER) && this.resetEditingFrame(Q);
          }, style: { background: this.state.viewBackgroundColor, filter: E ? C2 : "none", zIndex: 2, border: "none", display: "block", padding: `${c}px`, borderRadius: 4, boxShadow: "inset 0 0 0 1px var(--color-primary)", fontFamily: "Assistant", fontSize: "14px", transform: `translate(-${c}px, ${c}px)`, color: "var(--color-gray-80)", overflow: "hidden", maxWidth: `${document.body.clientWidth - s - c}px` }, size: F.length + 1 || 1, dir: "auto", autoComplete: "off", autoCapitalize: "off", autoCorrect: "off" });
        } else D = h;
        return r.jsx("div", { id: this.getFrameNameDOMId(Q), style: { position: "absolute", bottom: `${this.state.height + i0.nameOffsetY - l + this.state.offsetTop}px`, left: `${s - this.state.offsetLeft}px`, zIndex: 2, fontSize: i0.nameFontSize, color: E ? i0.nameColorDarkTheme : i0.nameColorLightTheme, lineHeight: i0.nameLineHeight, width: "max-content", maxWidth: `${Q.width}px`, overflow: Q.id === this.state.editingFrame ? "visible" : "hidden", whiteSpace: "nowrap", textOverflow: "ellipsis", cursor: Ru.MOVE, pointerEvents: this.state.viewModeEnabled ? Ua.disabled : Ua.enabled }, onPointerDown: (F) => this.handleCanvasPointerDown(F), onWheel: (F) => this.handleWheel(F), onContextMenu: this.handleCanvasContextMenu, onDoubleClick: () => {
          this.setState({ editingFrame: Q.id });
        }, children: D }, Q.id);
      });
    }), J(this, "focusContainer", () => {
      this.excalidrawContainerRef.current?.focus();
    }), J(this, "getSceneElementsIncludingDeleted", () => this.scene.getElementsIncludingDeleted()), J(this, "getSceneElements", () => this.scene.getNonDeletedElements()), J(this, "onInsertElements", (E) => {
      this.addElementsFromPasteOrLibrary({ elements: E, position: "center", files: null });
    }), J(this, "onExportImage", async (E, Q, s) => {
      zu("export", E, "ui");
      let l = await z4(E, Q, this.state, this.files, { exportBackground: this.state.exportBackground, name: this.getName(), viewBackgroundColor: this.state.viewBackgroundColor, exportingFrame: s.exportingFrame }).catch(b8).catch((c) => {
        console.error(c), this.setState({ errorMessage: c.message });
      });
      this.state.exportEmbedScene && l && i9(l) && this.setState({ fileHandle: l });
    }), J(this, "magicGenerations", /* @__PURE__ */ new Map()), J(this, "updateMagicGeneration", ({ frameElement: E, data: Q }) => {
      Q.status === "pending" ? nA(E, { customData: { generationData: void 0 } }, !1) : nA(E, { customData: { generationData: Q } }, !1), this.magicGenerations.set(E.id, Q), this.triggerRender();
    }), J(this, "plugins", {}), J(this, "onMagicframeToolSelect", () => {
      let E = this.scene.getSelectedElements({ selectedElementIds: this.state.selectedElementIds });
      if (E.length === 0) this.setActiveTool({ type: H0.magicframe }), zu("ai", "tool-select (empty-selection)", "d2c");
      else {
        let Q = E.length === 1 && Ss(E[0]) && E[0];
        if (!Q && E.some((l) => OA(l) || l.frameId)) {
          this.setActiveTool({ type: H0.magicframe });
          return;
        }
        zu("ai", "tool-select (existing selection)", "d2c");
        let s;
        if (Q) s = Q;
        else {
          let [l, c, D, h] = Nu(E), F = 50;
          s = B1({ ...i0, x: l - F, y: c - F, width: D - l + F * 2, height: h - c + F * 2, opacity: 100, locked: !1 }), this.scene.insertElement(s);
          for (let m of E) nA(m, { frameId: s.id });
          this.setState({ selectedElementIds: { [s.id]: !0 } });
        }
        this.onMagicFrameGenerate(s, "upstream");
      }
    }), J(this, "openEyeDropper", ({ type: E }) => {
      QB.set(q4, { swapPreviewOnAlt: !0, colorPickerType: E === "stroke" ? "elementStroke" : "elementBackground", onSelect: (Q, s) => {
        let l = E === "background" && s.altKey || E === "stroke" && !s.altKey;
        !this.scene.getSelectedElements(this.state).length || this.state.activeTool.type !== "selection" ? l ? this.syncActionResult({ appState: { ...this.state, currentItemStrokeColor: Q }, captureUpdate: aA.IMMEDIATELY }) : this.syncActionResult({ appState: { ...this.state, currentItemBackgroundColor: Q }, captureUpdate: aA.IMMEDIATELY }) : this.updateScene({ elements: this.scene.getElementsIncludingDeleted().map((c) => this.state.selectedElementIds[c.id] ? Bu(c, { [l ? "strokeColor" : "backgroundColor"]: Q }) : c), captureUpdate: aA.IMMEDIATELY });
      }, keepOpenOnAlt: !1 });
    }), J(this, "dismissLinearEditor", () => {
      setTimeout(() => {
        this.setState({ editingLinearElement: null });
      });
    }), J(this, "syncActionResult", Q0((E) => {
      if (this.unmounted || E === !1) return;
      E.captureUpdate === aA.NEVER ? this.store.shouldUpdateSnapshot() : E.captureUpdate === aA.IMMEDIATELY && this.store.shouldCaptureIncrement();
      let Q = !1, s = null;
      if (E.elements && (this.scene.replaceAllElements(E.elements), Q = !0), E.files && (this.addMissingFiles(E.files, E.replaceFiles), this.addNewImagesToImageCache()), E.appState || s || this.state.contextMenu) {
        let l = E?.appState?.viewModeEnabled || !1, c = E?.appState?.zenModeEnabled || !1, D = E?.appState?.theme || this.props.theme || su.LIGHT, h = E?.appState?.name ?? this.state.name, F = E?.appState?.errorMessage ?? this.state.errorMessage;
        typeof this.props.viewModeEnabled < "u" && (l = this.props.viewModeEnabled), typeof this.props.zenModeEnabled < "u" && (c = this.props.zenModeEnabled), s = E.appState?.editingTextElement || null, E.elements && s && E.elements.forEach((m) => {
          s?.id === m.id && s !== m && n1(m) && UA(m) && (s = m);
        }), s?.isDeleted && (s = null), this.setState((m) => {
          let p = E.appState || {};
          return { ...m, ...p, contextMenu: null, editingTextElement: s, viewModeEnabled: l, zenModeEnabled: c, theme: D, name: h, errorMessage: F };
        }), Q = !0;
      }
      !Q && E.captureUpdate !== aA.EVENTUALLY && this.scene.triggerUpdate();
    })), J(this, "onBlur", Q0(() => {
      uE = !1, this.setState({ isBindingEnabled: !0 });
    })), J(this, "onUnload", () => {
      this.onBlur();
    }), J(this, "disableEvent", (E) => {
      E.preventDefault();
    }), J(this, "resetHistory", () => {
      this.history.clear();
    }), J(this, "resetStore", () => {
      this.store.clear();
    }), J(this, "resetScene", Q0((E) => {
      this.scene.replaceAllElements([]), this.setState((Q) => ({ ...$B(), isLoading: E?.resetLoadingState ? !1 : Q.isLoading, theme: this.state.theme })), this.resetStore(), this.resetHistory();
    })), J(this, "initializeScene", async () => {
      "launchQueue" in window && "LaunchParams" in window && window.launchQueue.setConsumer(async (s) => {
        if (!s.files.length) return;
        let l = s.files[0], c = await l.getFile();
        this.loadFileToCanvas(new File([c], c.name || "", { type: c.type }), l);
      }), this.props.theme && this.setState({ theme: this.props.theme }), this.state.isLoading || this.setState({ isLoading: !0 });
      let E = null;
      try {
        typeof this.props.initialData == "function" ? E = await this.props.initialData() || null : E = await this.props.initialData || null, E?.libraryItems && this.library.updateLibrary({ libraryItems: E.libraryItems, merge: !0 }).catch((s) => {
          console.error(s);
        });
      } catch (s) {
        console.error(s), E = { appState: { errorMessage: s.message || "Encountered an error during importing or restoring scene data" } };
      }
      let Q = b4(E, null, null, { repairBindings: !0 });
      Q.appState = { ...Q.appState, theme: this.props.theme || Q.appState.theme, openSidebar: Q.appState?.openSidebar || this.state.openSidebar, activeTool: Q.appState.activeTool.type === "image" ? { ...Q.appState.activeTool, type: "selection" } : Q.appState.activeTool, isLoading: !1, toast: this.state.toast }, E?.scrollToContent && (Q.appState = { ...Q.appState, ...PQ(Q.elements, { ...Q.appState, width: this.state.width, height: this.state.height, offsetTop: this.state.offsetTop, offsetLeft: this.state.offsetLeft }) }), this.resetStore(), this.resetHistory(), this.syncActionResult({ ...Q, captureUpdate: aA.NEVER }), this.clearImageShapeCache(), this.fonts.loadSceneFonts().then((s) => {
        this.fonts.onLoaded(s);
      }), hQ(window.location.href) && this.scrollToContent(window.location.href, { animate: !1 });
    }), J(this, "isMobileBreakpoint", (E, Q) => E < vEA || Q < KEA && E < HEA), J(this, "refreshViewportBreakpoints", () => {
      if (!this.excalidrawContainerRef.current) return;
      let { clientWidth: E, clientHeight: Q } = document.body, s = this.device.viewport, l = Ls(s, { isLandscape: E > Q, isMobile: this.isMobileBreakpoint(E, Q) });
      return s !== l ? (this.device = { ...this.device, viewport: l }, !0) : !1;
    }), J(this, "refreshEditorBreakpoints", () => {
      let E = this.excalidrawContainerRef.current;
      if (!E) return;
      let { width: Q, height: s } = E.getBoundingClientRect(), l = this.props.UIOptions.dockedSidebarBreakpoint != null ? this.props.UIOptions.dockedSidebarBreakpoint : JEA, c = this.device.editor, D = Ls(c, { isMobile: this.isMobileBreakpoint(Q, s), canFitSidebar: Q > l });
      return c !== D ? (this.device = { ...this.device, editor: D }, !0) : !1;
    }), J(this, "onResize", Q0(() => {
      this.scene.getElementsIncludingDeleted().forEach((E) => a0.delete(E)), this.refreshViewportBreakpoints(), this.updateDOMRect(), MD || this.refreshEditorBreakpoints(), this.setState({});
    })), J(this, "onFullscreenChange", () => {
      !document.fullscreenElement && this.state.activeEmbeddable?.state === "active" && this.setState({ activeEmbeddable: null });
    }), J(this, "renderInteractiveSceneCallback", ({ atLeastOneVisibleElement: E, scrollBars: Q, elementsMap: s }) => {
      Q && (wD = Q);
      let l = this.state.editingTextElement ? !1 : !E && s.size > 0;
      this.state.scrolledOutside !== l && this.setState({ scrolledOutside: l }), this.scheduleImageRefresh();
    }), J(this, "onScroll", tI(() => {
      let { offsetTop: E, offsetLeft: Q } = this.getCanvasOffsets();
      this.setState((s) => s.offsetLeft === Q && s.offsetTop === E ? null : { offsetTop: E, offsetLeft: Q });
    }, MEA)), J(this, "onCut", Q0((E) => {
      !this.excalidrawContainerRef.current?.contains(document.activeElement) || tE(E.target) || (this.actionManager.executeAction(Im, "keyboard", E), E.preventDefault(), E.stopPropagation());
    })), J(this, "onCopy", Q0((E) => {
      !this.excalidrawContainerRef.current?.contains(document.activeElement) || tE(E.target) || (this.actionManager.executeAction(Os, "keyboard", E), E.preventDefault(), E.stopPropagation());
    })), J(this, "onTouchStart", (E) => {
      if (n8 && E.preventDefault(), !zo) {
        zo = !0, clearTimeout(DD), DD = window.setTimeout(yL.resetTapTwice, NEA);
        return;
      }
      if (zo && E.touches.length === 1) {
        let Q = E.touches[0];
        this.handleCanvasDoubleClick({ clientX: Q.clientX, clientY: Q.clientY }), zo = !1, clearTimeout(DD);
      }
      E.touches.length === 2 && this.setState({ selectedElementIds: yu({}, this.state), activeEmbeddable: null });
    }), J(this, "onTouchEnd", (E) => {
      this.resetContextMenuTimer(), E.touches.length > 0 ? this.setState({ previousSelectedElementIds: {}, selectedElementIds: yu(this.state.previousSelectedElementIds, this.state) }) : ku.pointers.clear();
    }), J(this, "pasteFromClipboard", Q0(async (E) => {
      let Q = !!ws, s = document.activeElement, l = this.excalidrawContainerRef.current?.contains(s);
      if (E && !l) return;
      let c = document.elementFromPoint(this.lastViewportPosition.x, this.lastViewportPosition.y);
      if (E && (!(c instanceof HTMLCanvasElement) || tE(s))) return;
      let { x: D, y: h } = Tu({ clientX: this.lastViewportPosition.x, clientY: this.lastViewportPosition.y }, this.state), F = E?.clipboardData?.files[0], m = await My(E, Q);
      if (!F && !Q) {
        if (m.mixedContent) return this.addElementsFromMixedContentPaste(m.mixedContent, { isPlainPaste: Q, sceneX: D, sceneY: h });
        if (m.text) {
          let p = m.text.trim();
          p.startsWith("<svg") && p.endsWith("</svg>") && (F = Ap(p));
        }
      }
      if (FE(F) && !m.spreadsheet) {
        if (!this.isToolSupported("image")) {
          this.setState({ errorMessage: S("errors.imageToolNotSupported") });
          return;
        }
        let p = this.createImageElement({ sceneX: D, sceneY: h });
        this.insertImageElement(p, F), this.initializeImageDimensions(p), this.setState({ selectedElementIds: yu({ [p.id]: !0 }, this.state) });
        return;
      }
      if (this.props.onPaste) try {
        if (await this.props.onPaste(m, E) === !1) return;
      } catch (p) {
        console.error(p);
      }
      if (m.errorMessage) this.setState({ errorMessage: m.errorMessage });
      else if (m.spreadsheet && !Q) this.setState({ pasteDialog: { data: m.spreadsheet, shown: !0 } });
      else if (m.elements) {
        let p = m.programmaticAPI ? W1(m.elements) : m.elements;
        this.addElementsFromPasteOrLibrary({ elements: p, files: m.files || null, position: "cursor", retainSeed: Q });
      } else if (m.text) {
        if (m.text && xpA(m.text)) {
          let b = await import("./chunk-ZOUoCYTt.js");
          try {
            let { elements: f, files: L } = await b.parseMermaidToExcalidraw(m.text), N = W1(f, { regenerateIds: !0 });
            this.addElementsFromPasteOrLibrary({ elements: N, files: L, position: "cursor" });
            return;
          } catch (f) {
            console.warn(`parsing pasted text as mermaid definition failed: ${f.message}`);
          }
        }
        let p = S8(m.text).split(/\n+/).map((b) => b.trim()).filter(Boolean), k = p.map((b) => N3A(b)).filter((b) => Hs(b, this.props.validateEmbeddable) && (/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(b) || za(b)?.type === "video"));
        if (!ws && k.length > 0 && k.length === p.length) {
          let b = [];
          for (let f of k) {
            let L = b[b.length - 1], N = this.insertEmbeddableElement({ sceneX: L ? L.x + L.width + 20 : D, sceneY: h, link: oC(f) });
            N && b.push(N);
          }
          b.length && this.setState({ selectedElementIds: Object.fromEntries(b.map((f) => [f.id, !0])) });
          return;
        }
        this.addTextFromPaste(m.text, Q);
      }
      this.setActiveTool({ type: "selection" }), E?.preventDefault();
    })), J(this, "addElementsFromPasteOrLibrary", (E) => {
      let Q = j2(E.elements, null, void 0), [s, l, c, D] = Nu(Q), h = le(s, c) / 2, F = le(l, D) / 2, m = typeof E.position == "object" ? E.position.clientX : E.position === "cursor" ? this.lastViewportPosition.x : this.state.width / 2 + this.state.offsetLeft, p = typeof E.position == "object" ? E.position.clientY : E.position === "cursor" ? this.lastViewportPosition.y : this.state.height / 2 + this.state.offsetTop, { x: k, y: b } = Tu({ clientX: m, clientY: p }, this.state), f = k - h, L = b - F, [N, M] = f0(f, L, this.getEffectiveGridSize()), v = ay(Q.map((O) => Bu(O, { x: O.x + N - s, y: O.y + M - l })), { randomizeSeed: !E.retainSeed }), K = this.scene.getElementsIncludingDeleted(), q = [...K, ...v];
      q = this.props.onDuplicate?.(q, K) || q, Cg(q, PA(v));
      let j = this.getTopLayerFrameAtSceneCoords({ x: k, y: b });
      if (j) {
        let O = qcA(v, j);
        wQ(q, O, j, this.state);
      }
      this.scene.replaceAllElements(q), v.forEach((O) => {
        if (UA(O) && Xu(O)) {
          let $ = _0(O, this.scene.getElementsMapIncludingDeleted());
          Ge(O, $, this.scene.getElementsMapIncludingDeleted());
        }
      }), FEA && Kg.loadElementsFonts(v).then((O) => {
        this.fonts.onLoaded(O);
      }), E.files && this.addMissingFiles(E.files), this.store.shouldCaptureIncrement();
      let uA = A9(v);
      this.setState({ ...this.state, openSidebar: this.state.openSidebar && this.device.editor.canFitSidebar && QB.get(K9) ? this.state.openSidebar : null, ...Ue({ editingGroupId: null, selectedElementIds: uA.reduce((O, $) => (Xu($) || (O[$.id] = !0), O), {}) }, this.scene.getNonDeletedElements(), this.state, this) }, () => {
        E.files && this.addNewImagesToImageCache();
      }), this.setActiveTool({ type: "selection" }), E.fitToContent && this.scrollToContent(v, { fitToContent: !0, canvasOffsets: this.getEditorUIOffsets() });
    }), J(this, "setAppState", (E, Q) => {
      this.setState(E, Q);
    }), J(this, "removePointer", (E) => {
      Ht && this.resetContextMenuTimer(), ku.pointers.delete(E.pointerId);
    }), J(this, "toggleLock", (E = "ui") => {
      this.state.activeTool.locked || zu("toolbar", "toggleLock", `${E} (${this.device.editor.isMobile ? "mobile" : "desktop"})`), this.setState((Q) => ({ activeTool: { ...Q.activeTool, ...b0(this.state, Q.activeTool.locked ? { type: "selection" } : Q.activeTool), locked: !Q.activeTool.locked } }));
    }), J(this, "updateFrameRendering", (E) => {
      this.setState((Q) => {
        let s = typeof E == "function" ? E(Q.frameRendering) : E;
        return { frameRendering: { enabled: s?.enabled ?? Q.frameRendering.enabled, clip: s?.clip ?? Q.frameRendering.clip, name: s?.name ?? Q.frameRendering.name, outline: s?.outline ?? Q.frameRendering.outline } };
      });
    }), J(this, "togglePenMode", (E) => {
      this.setState((Q) => ({ penMode: E ?? !Q.penMode, penDetected: !0 }));
    }), J(this, "onHandToolToggle", () => {
      this.actionManager.executeAction(v6A);
    }), J(this, "zoomCanvas", (E) => {
      this.setState({ ...lE({ viewportX: this.state.width / 2 + this.state.offsetLeft, viewportY: this.state.height / 2 + this.state.offsetTop, nextZoom: vg(E) }, this.state) });
    }), J(this, "cancelInProgressAnimation", null), J(this, "scrollToContent", (E = this.scene.getNonDeletedElements(), Q) => {
      if (typeof E == "string") {
        let h;
        if (hQ(E) ? h = J3A(E) : h = E, h) {
          let F = this.scene.getElementsFromId(h);
          F?.length ? this.scrollToContent(F, { fitToContent: Q?.fitToContent ?? !0, animate: Q?.animate ?? !0 }) : hQ(E) && this.setState({ toast: { message: S("elementLink.notFound"), duration: 3e3, closable: !0 } });
        }
        return;
      }
      this.cancelInProgressAnimation?.();
      let s = Array.isArray(E) ? E : [E], l = this.state.zoom, c = this.state.scrollX, D = this.state.scrollY;
      if (Q?.fitToContent || Q?.fitToViewport) {
        let { appState: h } = j4({ canvasOffsets: Q.canvasOffsets, targetElements: s, appState: this.state, fitToViewport: !!Q?.fitToViewport, viewportZoomFactor: Q?.viewportZoomFactor, minZoom: Q?.minZoom, maxZoom: Q?.maxZoom });
        l = h.zoom, c = h.scrollX, D = h.scrollY;
      } else {
        let h = PQ(s, this.state);
        c = h.scrollX, D = h.scrollY;
      }
      if (Q?.animate) {
        let h = this.state.scrollX, F = this.state.scrollY, m = this.state.zoom.value, p = QaA({ fromValues: { scrollX: h, scrollY: F, zoom: m }, toValues: { scrollX: c, scrollY: D, zoom: l.value }, interpolateValue: (k, b, f, L) => {
          if (L === "zoom") return k * Math.pow(b / k, dE(f));
        }, onStep: ({ scrollX: k, scrollY: b, zoom: f }) => {
          this.setState({ scrollX: k, scrollY: b, zoom: { value: f } });
        }, onStart: () => {
          this.setState({ shouldCacheIgnoreZoom: !0 });
        }, onEnd: () => {
          this.setState({ shouldCacheIgnoreZoom: !1 });
        }, onCancel: () => {
          this.setState({ shouldCacheIgnoreZoom: !1 });
        }, duration: Q?.duration ?? 500 });
        this.cancelInProgressAnimation = () => {
          p(), this.cancelInProgressAnimation = null;
        };
      } else this.setState({ scrollX: c, scrollY: D, zoom: l });
    }), J(this, "maybeUnfollowRemoteUser", () => {
      this.state.userToFollow && this.setState({ userToFollow: null });
    }), J(this, "translateCanvas", (E) => {
      this.cancelInProgressAnimation?.(), this.maybeUnfollowRemoteUser(), this.setState(E);
    }), J(this, "setToast", (E) => {
      this.setState({ toast: E });
    }), J(this, "restoreFileFromShare", async () => {
      try {
        let E = await caches.open("web-share-target"), Q = await E.match("shared-file");
        if (Q) {
          let s = await Q.blob(), l = new File([s], s.name || "", { type: s.type });
          this.loadFileToCanvas(l, null), await E.delete("shared-file"), window.history.replaceState(null, YD, window.location.pathname);
        }
      } catch (E) {
        this.setState({ errorMessage: E.message });
      }
    }), J(this, "addFiles", Q0((E) => {
      let { addedFiles: Q } = this.addMissingFiles(E);
      this.clearImageShapeCache(Q), this.scene.triggerUpdate(), this.addNewImagesToImageCache();
    })), J(this, "addMissingFiles", (E, Q = !1) => {
      let s = Q ? {} : { ...this.files }, l = {}, c = Array.isArray(E) ? E : Object.values(E);
      for (let D of c) if (!s[D.id] && (l[D.id] = D, s[D.id] = D, D.mimeType === zA.svg)) try {
        let h = ldA(k5(ddA(D.dataURL)), zA.svg);
        D.dataURL !== h && (D.version = (D.version ?? 1) + 1, D.dataURL = h);
      } catch (h) {
        console.error(h);
      }
      return this.files = s, { addedFiles: l };
    }), J(this, "updateScene", Q0((E) => {
      let Q = Pg(E.elements ?? []);
      if (E.captureUpdate && E.captureUpdate !== aA.EVENTUALLY) {
        let s = this.store.snapshot.appState, l = this.store.snapshot.elements, c = E.appState ? Object.assign({}, s, E.appState) : s, D = E.elements ? this.store.filterUncomittedElements(this.scene.getElementsMapIncludingDeleted(), PA(Q)) : l;
        E.captureUpdate === aA.IMMEDIATELY ? this.store.captureIncrement(D, c) : E.captureUpdate === aA.NEVER && this.store.updateSnapshot(D, c);
      }
      E.appState && this.setState(E.appState), E.elements && this.scene.replaceAllElements(Q), E.collaborators && this.setState({ collaborators: E.collaborators });
    })), J(this, "triggerRender", (E) => {
      E === !0 ? this.scene.triggerUpdate() : this.setState({});
    }), J(this, "toggleSidebar", ({ name: E, tab: Q, force: s }) => {
      let l;
      s === void 0 ? l = this.state.openSidebar?.name === E && this.state.openSidebar?.tab === Q ? null : E : l = s ? E : null;
      let c = l ? { name: l } : null;
      return c && Q && (c.tab = Q), this.setState({ openSidebar: c }), !!l;
    }), J(this, "updateCurrentCursorPosition", Q0((E) => {
      this.lastViewportPosition.x = E.clientX, this.lastViewportPosition.y = E.clientY;
    })), J(this, "getEditorUIOffsets", () => {
      let E = this.excalidrawContainerRef?.current?.querySelector(".App-toolbar")?.getBoundingClientRect()?.bottom ?? 0, Q = this.excalidrawContainerRef?.current?.querySelector(".sidebar")?.getBoundingClientRect(), s = this.excalidrawContainerRef?.current?.querySelector(".App-menu__left")?.getBoundingClientRect(), l = 16;
      return en().rtl ? { top: E + l, right: Math.max(this.state.width - (s?.left ?? this.state.width), 0) + l, bottom: l, left: Math.max(Q?.right ?? 0, 0) + l } : { top: E + l, right: Math.max(this.state.width - (Q?.left ?? this.state.width) + l, 0), bottom: l, left: Math.max(s?.right ?? 0, 0) + l };
    }), J(this, "onKeyDown", Q0((E) => {
      if ("Proxy" in window && (!E.shiftKey && /^[A-Z]$/.test(E.key) || E.shiftKey && /^[a-z]$/.test(E.key)) && (E = new Proxy(E, { get(c, D) {
        let h = c[D];
        return typeof h == "function" ? h.bind(c) : D === "key" ? E.shiftKey ? c.key.toUpperCase() : c.key.toLowerCase() : h;
      } })), !ZD(E.target)) {
        if ((E.key === Z.ESCAPE || E.key === Z.ENTER) && this.state.croppingElementId) {
          this.finishImageCropping();
          return;
        }
        let c = iu(this.scene.getNonDeletedElementsMap(), this.state);
        if (c.length === 1 && bu(c[0]) && E.key === Z.ENTER) {
          this.startImageCropping(c[0]);
          return;
        }
        if (E.key === Z.ESCAPE && this.flowChartCreator.isCreatingChart) {
          this.flowChartCreator.clear(), this.triggerRender(!0);
          return;
        }
        let D = eQ(E.key);
        if (E[Z.CTRL_OR_CMD] && D && !E.shiftKey) {
          E.preventDefault();
          let h = iu(this.scene.getNonDeletedElementsMap(), this.state);
          h.length === 1 && I4(h[0]) && this.flowChartCreator.createNodes(h[0], this.scene.getNonDeletedElementsMap(), this.state, fm(E.key)), this.flowChartCreator.pendingNodes?.length && !qs(this.flowChartCreator.pendingNodes, this.canvas.width / window.devicePixelRatio, this.canvas.height / window.devicePixelRatio, { offsetLeft: this.state.offsetLeft, offsetTop: this.state.offsetTop, scrollX: this.state.scrollX, scrollY: this.state.scrollY, zoom: this.state.zoom }, this.scene.getNonDeletedElementsMap(), this.getEditorUIOffsets()) && this.scrollToContent(this.flowChartCreator.pendingNodes, { animate: !0, duration: 300, fitToContent: !0, canvasOffsets: this.getEditorUIOffsets() });
          return;
        }
        if (E.altKey) {
          let h = iu(this.scene.getNonDeletedElementsMap(), this.state);
          if (h.length === 1 && D) {
            E.preventDefault();
            let F = this.flowChartNavigator.exploreByDirection(h[0], this.scene.getNonDeletedElementsMap(), fm(E.key));
            if (F) {
              this.setState((p) => ({ selectedElementIds: yu({ [F]: !0 }, p) }));
              let m = this.scene.getNonDeletedElementsMap().get(F);
              m && !qs([m], this.canvas.width / window.devicePixelRatio, this.canvas.height / window.devicePixelRatio, { offsetLeft: this.state.offsetLeft, offsetTop: this.state.offsetTop, scrollX: this.state.scrollX, scrollY: this.state.scrollY, zoom: this.state.zoom }, this.scene.getNonDeletedElementsMap(), this.getEditorUIOffsets()) && this.scrollToContent(m, { animate: !0, duration: 300, canvasOffsets: this.getEditorUIOffsets() });
            }
            return;
          }
        }
      }
      if (E[Z.CTRL_OR_CMD] && E.key === Z.P && !E.shiftKey && !E.altKey) {
        this.setToast({ message: S("commandPalette.shortcutHint", { shortcut: De("commandPalette") }) }), E.preventDefault();
        return;
      }
      if (E[Z.CTRL_OR_CMD] && E.key.toLowerCase() === Z.V && (ws = E.shiftKey, clearTimeout(g7), g7 = window.setTimeout(() => {
        ws = !1;
      }, 100)), E[Z.CTRL_OR_CMD] && tE(E.target) && (E.code === wu.MINUS || E.code === wu.EQUAL)) {
        E.preventDefault();
        return;
      }
      if (tE(E.target) && E.key !== Z.ESCAPE || eQ(E.key) && ZD(E.target)) return;
      if (E.key === Z.QUESTION_MARK) {
        this.setState({ openDialog: { name: "help" } });
        return;
      } else if (E.key.toLowerCase() === Z.E && E.shiftKey && E[Z.CTRL_OR_CMD]) {
        E.preventDefault(), this.setState({ openDialog: { name: "imageExport" } });
        return;
      }
      if (E.key === Z.PAGE_UP || E.key === Z.PAGE_DOWN) {
        let c = (E.shiftKey ? this.state.width : this.state.height) / this.state.zoom.value;
        E.key === Z.PAGE_DOWN && (c = -c), E.shiftKey ? this.translateCanvas((D) => ({ scrollX: D.scrollX + c })) : this.translateCanvas((D) => ({ scrollY: D.scrollY + c }));
      }
      if (this.state.openDialog?.name === "elementLinkSelector" || this.actionManager.handleKeyDown(E) || this.state.viewModeEnabled) return;
      if (E[Z.CTRL_OR_CMD] && this.state.isBindingEnabled && this.setState({ isBindingEnabled: !1 }), eQ(E.key)) {
        let c = this.scene.getSelectedElements({ selectedElementIds: this.state.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 }), D = c.find(xA), h = /* @__PURE__ */ new Set();
        c.filter(xA).filter((k) => {
          let b = k.startBinding && !c.some((L) => L.id === k.startBinding?.elementId), f = k.endBinding && !c.some((L) => L.id === k.endBinding?.elementId);
          return b || f;
        }).forEach((k) => h.add(k.id)), c = c.filter((k) => !h.has(k.id));
        let F = this.getEffectiveGridSize() && (E.shiftKey ? rF : this.getEffectiveGridSize()) || (E.shiftKey ? kEA : rF), m = 0, p = 0;
        E.key === Z.ARROW_LEFT ? m = -F : E.key === Z.ARROW_RIGHT ? m = F : E.key === Z.ARROW_UP ? p = -F : E.key === Z.ARROW_DOWN && (p = F), c.forEach((k) => {
          nA(k, { x: k.x + m, y: k.y + p }, !1), Ve(k, this.scene.getNonDeletedElementsMap(), { simultaneouslyUpdated: c });
        }), this.setState({ suggestedBindings: Sd(c.filter((k) => k.id !== D?.id || F !== 0), this.scene.getNonDeletedElementsMap(), this.state.zoom) }), this.scene.triggerUpdate(), E.preventDefault();
      } else if (E.key === Z.ENTER) {
        let c = this.scene.getSelectedElements(this.state);
        if (c.length === 1) {
          let D = c[0];
          if (E[Z.CTRL_OR_CMD]) $A(D) && (!this.state.editingLinearElement || this.state.editingLinearElement.elementId !== c[0].id) && (this.store.shouldCaptureIncrement(), xA(D) || this.setState({ editingLinearElement: new LA(D) }));
          else if (UA(D) || a3A(D)) {
            let h;
            UA(D) || (h = D);
            let F = Nd(D, this.state, this.scene.getNonDeletedElementsMap()), m = F.x, p = F.y;
            this.startTextEditing({ sceneX: m, sceneY: p, container: h }), E.preventDefault();
            return;
          } else OA(D) && this.setState({ editingFrame: D.id });
        }
      } else if (!E.ctrlKey && !E.altKey && !E.metaKey && !this.state.newElement && !this.state.selectionElement && !this.state.selectedElementsAreBeingDragged) {
        let c = NlA(E.key);
        c ? (this.state.activeTool.type !== c && zu("toolbar", c, `keyboard (${this.device.editor.isMobile ? "mobile" : "desktop"})`), c === "arrow" && this.state.activeTool.type === "arrow" && this.setState((D) => ({ currentItemArrowType: D.currentItemArrowType === P0.sharp ? P0.round : D.currentItemArrowType === P0.round ? P0.elbow : P0.sharp })), this.setActiveTool({ type: c }), E.stopPropagation()) : E.key === Z.Q && (this.toggleLock("keyboard"), E.stopPropagation());
      }
      if (E.key === Z.SPACE && ku.pointers.size === 0 && (uE = !0, Yu(this.interactiveCanvas, Ru.GRAB), E.preventDefault()), (E.key === Z.G || E.key === Z.S) && !E.altKey && !E[Z.CTRL_OR_CMD]) {
        let c = this.scene.getSelectedElements(this.state);
        if (this.state.activeTool.type === "selection" && !c.length) return;
        E.key === Z.G && (aI(this.state.activeTool.type) || c.some((D) => aI(D.type))) && (this.setState({ openPopup: "elementBackground" }), E.stopPropagation()), E.key === Z.S && (this.setState({ openPopup: "elementStroke" }), E.stopPropagation());
      }
      if (!E[Z.CTRL_OR_CMD] && E.shiftKey && E.key.toLowerCase() === Z.F) {
        let c = this.scene.getSelectedElements(this.state);
        if (this.state.activeTool.type === "selection" && !c.length) return;
        (this.state.activeTool.type === "text" || c.find((D) => UA(D) || gu(D, this.scene.getNonDeletedElementsMap()))) && (E.preventDefault(), this.setState({ openPopup: "fontFamily" }));
      }
      if (E.key === Z.K && !E.altKey && !E[Z.CTRL_OR_CMD]) {
        this.state.activeTool.type === "laser" ? this.setActiveTool({ type: "selection" }) : this.setActiveTool({ type: "laser" });
        return;
      }
      E[Z.CTRL_OR_CMD] && (E.key === Z.BACKSPACE || E.key === Z.DELETE) && QB.set(O4, "clearCanvas");
      let Q = E.key.toLocaleLowerCase(), s = Q === Z.S && E.shiftKey, l = E.key === Z.I || Q === Z.G && E.shiftKey;
      (s || l) && this.openEyeDropper({ type: s ? "stroke" : "background" });
    })), J(this, "onKeyUp", Q0((E) => {
      if (E.key === Z.SPACE && (this.state.viewModeEnabled || this.state.openDialog?.name === "elementLinkSelector" ? Yu(this.interactiveCanvas, Ru.GRAB) : this.state.activeTool.type === "selection" ? BB(this.interactiveCanvas) : (vB(this.interactiveCanvas, this.state), this.setState({ selectedElementIds: yu({}, this.state), selectedGroupIds: {}, editingGroupId: null, activeEmbeddable: null })), uE = !1), !E[Z.CTRL_OR_CMD] && !this.state.isBindingEnabled && this.setState({ isBindingEnabled: !0 }), eQ(E.key) && (kl(this.scene.getSelectedElements(this.state).filter($A), this.scene.getNonDeletedElementsMap(), this.scene.getNonDeletedElements(), this.scene, nE(this.state), this.state.selectedLinearElement?.selectedPointsIndices ?? [], this.state.zoom), this.setState({ suggestedBindings: [] })), E.altKey || this.flowChartNavigator.isExploring && (this.flowChartNavigator.clear(), this.syncActionResult({ captureUpdate: aA.IMMEDIATELY })), !E[Z.CTRL_OR_CMD] && this.flowChartCreator.isCreatingChart) {
        this.flowChartCreator.pendingNodes?.length && this.scene.insertElements(this.flowChartCreator.pendingNodes);
        let Q = this.flowChartCreator.pendingNodes?.[0];
        Q && (this.setState((s) => ({ selectedElementIds: yu({ [Q.id]: !0 }, s) })), qs([Q], this.canvas.width / window.devicePixelRatio, this.canvas.height / window.devicePixelRatio, { offsetLeft: this.state.offsetLeft, offsetTop: this.state.offsetTop, scrollX: this.state.scrollX, scrollY: this.state.scrollY, zoom: this.state.zoom }, this.scene.getNonDeletedElementsMap(), this.getEditorUIOffsets()) || this.scrollToContent(Q, { animate: !0, duration: 300, canvasOffsets: this.getEditorUIOffsets() })), this.flowChartCreator.clear(), this.syncActionResult({ captureUpdate: aA.IMMEDIATELY });
      }
    })), J(this, "isToolSupported", (E) => this.props.UIOptions.tools?.[E] !== !1), J(this, "setActiveTool", (E) => {
      if (!this.isToolSupported(E.type)) {
        console.warn(`"${E.type}" tool is disabled via "UIOptions.canvasActions.tools.${E.type}"`);
        return;
      }
      let Q = b0(this.state, E);
      Q.type === "hand" ? Yu(this.interactiveCanvas, Ru.GRAB) : uE || vB(this.interactiveCanvas, { ...this.state, activeTool: Q }), IaA(document.activeElement) && this.focusContainer(), i2(Q.type) || this.setState({ suggestedBindings: [] }), Q.type === "image" && this.onImageAction({ insertOnCanvasDirectly: (E.type === "image" && E.insertOnCanvasDirectly) ?? !1 }), this.setState((s) => {
        let l = { snapLines: s.snapLines.length ? [] : s.snapLines, originSnapOffset: null, activeEmbeddable: null };
        return Q.type === "freedraw" && this.store.shouldCaptureIncrement(), Q.type !== "selection" ? { ...s, activeTool: Q, selectedElementIds: yu({}, s), selectedGroupIds: yu({}, s), editingGroupId: null, multiElement: null, ...l } : { ...s, activeTool: Q, ...l };
      });
    }), J(this, "setOpenDialog", (E) => {
      this.setState({ openDialog: E });
    }), J(this, "setCursor", (E) => {
      Yu(this.interactiveCanvas, E);
    }), J(this, "resetCursor", () => {
      BB(this.interactiveCanvas);
    }), J(this, "isTouchScreenMultiTouchGesture", () => ku.pointers.size >= 2), J(this, "getName", () => this.state.name || this.props.name || `${S("labels.untitled")}-${FF()}`), J(this, "onGestureStart", Q0((E) => {
      E.preventDefault(), this.isTouchScreenMultiTouchGesture() && this.setState({ selectedElementIds: yu({}, this.state), activeEmbeddable: null }), ku.initialScale = this.state.zoom.value;
    })), J(this, "onGestureChange", Q0((E) => {
      if (E.preventDefault(), this.isTouchScreenMultiTouchGesture()) return;
      let Q = ku.initialScale;
      Q && this.setState((s) => ({ ...lE({ viewportX: this.lastViewportPosition.x, viewportY: this.lastViewportPosition.y, nextZoom: vg(Q * E.scale) }, s) }));
    })), J(this, "onGestureEnd", Q0((E) => {
      E.preventDefault(), this.isTouchScreenMultiTouchGesture() && this.setState({ previousSelectedElementIds: {}, selectedElementIds: yu(this.state.previousSelectedElementIds, this.state) }), ku.initialScale = null;
    })), J(this, "startTextEditing", ({ sceneX: E, sceneY: Q, insertAtParentCenter: s = !0, container: l, autoEdit: c = !0 }) => {
      let D = !1, h = s && this.getTextWysiwygSnappedToCenterPosition(E, Q, this.state, l);
      l && h && (gu(l, this.scene.getNonDeletedElementsMap()) || (D = !0));
      let F = null, m = this.scene.getSelectedElements(this.state);
      m.length === 1 ? UA(m[0]) ? F = m[0] : l ? F = gu(m[0], this.scene.getNonDeletedElementsMap()) : F = this.getTextElementAtPosition(E, Q) : F = this.getTextElementAtPosition(E, Q);
      let p = F?.fontFamily || this.state.currentItemFontFamily, k = F?.lineHeight || NE(p), b = this.state.currentItemFontSize;
      if (!F && D && l && !Eu(l)) {
        let N = H8(vu({ fontSize: b, fontFamily: p }), k), M = K8(b, k), v = Math.max(l.height, M), K = Math.max(l.width, N);
        nA(l, { height: v, width: K }), E = l.x + K / 2, Q = l.y + v / 2, h && (h = this.getTextWysiwygSnappedToCenterPosition(E, Q, this.state, l));
      }
      let f = this.getTopLayerFrameAtSceneCoords({ x: E, y: Q }), L = F || nC({ x: h ? h.elementCenterX : E, y: h ? h.elementCenterY : Q, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, text: "", fontSize: b, fontFamily: p, textAlign: h ? "center" : this.state.currentItemTextAlign, verticalAlign: h ? IC.MIDDLE : El, containerId: D ? l?.id : void 0, groupIds: l?.groupIds ?? [], lineHeight: k, angle: l?.angle ?? 0, frameId: f ? f.id : null });
      if (!F && D && l && nA(l, { boundElements: (l.boundElements || []).concat({ type: "text", id: L.id }) }), this.setState({ editingTextElement: L }), !F) if (l && D) {
        let N = this.scene.getElementIndex(l.id);
        this.scene.insertElementAtIndex(L, N + 1);
      } else this.scene.insertElement(L);
      c || F || l ? this.handleTextWysiwyg(L, { isExistingElement: !!F }) : this.setState({ newElement: L, multiElement: null });
    }), J(this, "startImageCropping", (E) => {
      this.store.shouldCaptureIncrement(), this.setState({ croppingElementId: E.id });
    }), J(this, "finishImageCropping", () => {
      this.state.croppingElementId && (this.store.shouldCaptureIncrement(), this.setState({ croppingElementId: null }));
    }), J(this, "handleCanvasDoubleClick", (E) => {
      if (this.state.multiElement || this.state.activeTool.type !== "selection") return;
      let Q = this.scene.getSelectedElements(this.state), { x: s, y: l } = Tu(E, this.state);
      if (Q.length === 1 && $A(Q[0])) {
        if (E[Z.CTRL_OR_CMD] && (!this.state.editingLinearElement || this.state.editingLinearElement.elementId !== Q[0].id) && !xA(Q[0])) {
          this.store.shouldCaptureIncrement(), this.setState({ editingLinearElement: new LA(Q[0]) });
          return;
        } else if (this.state.selectedLinearElement && xA(Q[0])) {
          let c = LA.getSegmentMidpointHitCoords(this.state.selectedLinearElement, { x: s, y: l }, this.state, this.scene.getNonDeletedElementsMap()), D = c ? LA.getSegmentMidPointIndex(this.state.selectedLinearElement, this.state, c, this.scene.getNonDeletedElementsMap()) : -1;
          if (D && D > -1) {
            this.store.shouldCaptureIncrement(), LA.deleteFixedSegment(Q[0], D);
            let h = LA.getSegmentMidpointHitCoords({ ...this.state.selectedLinearElement, segmentMidPointHoveredCoords: null }, { x: s, y: l }, this.state, this.scene.getNonDeletedElementsMap()), F = h ? LA.getSegmentMidPointIndex(this.state.selectedLinearElement, this.state, h, this.scene.getNonDeletedElementsMap()) : null;
            this.setState({ selectedLinearElement: { ...this.state.selectedLinearElement, pointerDownState: { ...this.state.selectedLinearElement.pointerDownState, segmentMidpoint: { index: F, value: c, added: !1 } }, segmentMidPointHoveredCoords: h } });
            return;
          }
        }
      }
      if (Q.length === 1 && bu(Q[0])) {
        this.startImageCropping(Q[0]);
        return;
      }
      if (BB(this.interactiveCanvas), hE(this.state).length > 0) {
        let c = this.getElementAtPosition(s, l), D = c && J4A(c, this.state.selectedGroupIds);
        if (D) {
          this.store.shouldCaptureIncrement(), this.setState((h) => ({ ...h, ...Ue({ editingGroupId: D, selectedElementIds: { [c.id]: !0 } }, this.scene.getNonDeletedElements(), h, this) }));
          return;
        }
      }
      if (BB(this.interactiveCanvas), !E[Z.CTRL_OR_CMD] && !this.state.viewModeEnabled) {
        let c = this.getElementAtPosition(s, l);
        if (UC(c)) {
          this.setState({ activeEmbeddable: { element: c, state: "active" } });
          return;
        }
        let D = this.getTextBindableContainerAtPosition(s, l);
        if (D && (MC(D) || !IB(D.backgroundColor) || Ha({ x: s, y: l, element: D, shape: Ng(D, this.scene.getNonDeletedElementsMap()), threshold: this.getElementHitThreshold() }))) {
          let h = Nd(D, this.state, this.scene.getNonDeletedElementsMap());
          s = h.x, l = h.y;
        }
        this.startTextEditing({ sceneX: s, sceneY: l, insertAtParentCenter: !E.altKey, container: D });
      }
    }), J(this, "getElementLinkAtPosition", (E, Q) => {
      let s = this.scene.getNonDeletedElements(), l = -1;
      for (let c = s.length - 1; c >= 0; c--) {
        let D = s[c];
        if (Q && D.id === Q.id && (l = c), D.link && c >= l && Rd(D, this.scene.getNonDeletedElementsMap(), this.state, U(E.x, E.y), this.device.editor.isMobile)) return D;
      }
    }), J(this, "redirectToLink", (E, Q) => {
      let s = Uu(U(this.lastPointerDownEvent.clientX, this.lastPointerDownEvent.clientY), U(this.lastPointerUpEvent.clientX, this.lastPointerUpEvent.clientY));
      if (!this.hitLinkElement || s > BE) return;
      let l = Tu(this.lastPointerDownEvent, this.state), c = this.scene.getNonDeletedElementsMap(), D = Rd(this.hitLinkElement, c, this.state, U(l.x, l.y), this.device.editor.isMobile), h = Tu(this.lastPointerUpEvent, this.state), F = Rd(this.hitLinkElement, c, this.state, U(h.x, h.y), this.device.editor.isMobile);
      if (D && F) {
        lm();
        let m = this.hitLinkElement.link;
        if (m) {
          m = oC(m);
          let p;
          if (this.props.onLinkOpen && (p = L8("excalidraw-link", E.nativeEvent), this.props.onLinkOpen({ ...this.hitLinkElement, link: m }, p)), !p?.defaultPrevented) {
            let k = Ay(m) ? "_self" : "_blank", b = window.open(void 0, k);
            b && (b.opener = null, b.location = m);
          }
        }
      }
    }), J(this, "getTopLayerFrameAtSceneCoords", (E) => {
      let Q = this.scene.getNonDeletedElementsMap(), s = this.scene.getNonDeletedFramesLikes().filter((l) => J5(E, l, Q));
      return s.length ? s[s.length - 1] : null;
    }), J(this, "handleCanvasPointerMove", (E) => {
      this.savePointer(E.clientX, E.clientY, this.state.cursorButton), this.lastPointerMoveEvent = E.nativeEvent, ku.pointers.has(E.pointerId) && ku.pointers.set(E.pointerId, { x: E.clientX, y: E.clientY });
      let Q = ku.initialScale;
      if (ku.pointers.size === 2 && ku.lastCenter && Q && ku.initialDistance) {
        let p = bm(ku.pointers), k = p.x - ku.lastCenter.x, b = p.y - ku.lastCenter.y;
        ku.lastCenter = p;
        let f = Um(Array.from(ku.pointers.values())), L = this.state.activeTool.type === "freedraw" && this.state.penMode ? 1 : f / ku.initialDistance, N = L ? vg(Q * L) : this.state.zoom.value;
        this.setState((M) => {
          let v = lE({ viewportX: p.x, viewportY: p.y, nextZoom: N }, M);
          this.translateCanvas({ zoom: v.zoom, scrollX: v.scrollX + 2 * (k / N), scrollY: v.scrollY + 2 * (b / N), shouldCacheIgnoreZoom: !0 });
        }), this.resetShouldCacheIgnoreZoomDebounced();
      } else ku.lastCenter = ku.initialDistance = ku.initialScale = null;
      if (uE || Po || hD || BI(this.state)) return;
      let s = xm(wD, E.clientX - this.state.offsetLeft, E.clientY - this.state.offsetTop).isOverEither;
      !this.state.newElement && !this.state.selectionElement && !this.state.selectedElementsAreBeingDragged && !this.state.multiElement && (s ? BB(this.interactiveCanvas) : vB(this.interactiveCanvas, this.state));
      let l = Tu(E, this.state), { x: c, y: D } = l;
      if (!this.state.newElement && u3A(this.state.activeTool.type)) {
        let { originOffset: p, snapLines: k } = A3A(this.scene.getNonDeletedElements(), this, { x: c, y: D }, E, this.scene.getNonDeletedElementsMap());
        this.setState((b) => {
          let f = Ho(b.snapLines, k), L = b.originSnapOffset ? Ho(b.originSnapOffset, p) : p;
          return b.snapLines === f && b.originSnapOffset === L ? null : { snapLines: f, originSnapOffset: L };
        });
      } else !this.state.newElement && !this.state.selectedElementsAreBeingDragged && !this.state.selectionElement && this.setState((p) => p.snapLines.length ? { snapLines: [] } : null);
      if (this.state.editingLinearElement && !this.state.editingLinearElement.isDragging) {
        let p = LA.handlePointerMove(E, c, D, this, this.scene.getNonDeletedElementsMap());
        p && p !== this.state.editingLinearElement && O0.flushSync(() => {
          this.setState({ editingLinearElement: p });
        }), p?.lastUncommittedPoint != null ? this.maybeSuggestBindingAtCursor(l, p.elbowed) : O0.flushSync(() => {
          this.setState({ suggestedBindings: [] });
        });
      }
      if (R8(this.state.activeTool.type)) {
        let { newElement: p } = this.state;
        TB(p, !1) ? this.maybeSuggestBindingsForLinearElementAtCoords(p, [l], this.state.startBoundElement) : this.maybeSuggestBindingAtCursor(l, !1);
      }
      if (this.state.multiElement) {
        let { multiElement: p } = this.state, { x: k, y: b } = p, { points: f, lastCommittedPoint: L } = p, N = f[f.length - 1];
        if (vB(this.interactiveCanvas, this.state), N === L) Uu(U(c - k, D - b), N) >= fs ? nA(p, { points: [...f, U(c - k, D - b)] }, !1) : Yu(this.interactiveCanvas, Ru.POINTER);
        else if (f.length > 2 && L && Uu(U(c - k, D - b), L) < fs) Yu(this.interactiveCanvas, Ru.POINTER), nA(p, { points: f.slice(0, -1) }, !1);
        else {
          let [M, v] = f0(c, D, E[Z.CTRL_OR_CMD] || xA(p) ? null : this.getEffectiveGridSize()), [K, q] = p?.lastCommittedPoint ?? [0, 0], j = M - k - K, uA = v - b - q;
          dQ(E) && ({ width: j, height: uA } = o1(K + k, q + b, M, v)), Wg(f, this.state.zoom.value) && Yu(this.interactiveCanvas, Ru.POINTER), nA(p, { points: [...f.slice(0, -1), U(K + j, q + uA)] }, !1, { isDragging: !0 }), this.triggerRender(!1);
        }
        return;
      }
      if (E.buttons || this.state.activeTool.type !== "selection" && this.state.activeTool.type !== "text" && this.state.activeTool.type !== "eraser") return;
      let h = this.scene.getNonDeletedElements(), F = this.scene.getSelectedElements(this.state);
      if (F.length === 1 && !s && !this.state.editingLinearElement) {
        if (this.state.selectedLinearElement && this.handleHoverSelectedLinearElement(this.state.selectedLinearElement, c, D), (!this.state.selectedLinearElement || this.state.selectedLinearElement.hoverPointIndex === -1) && this.state.openDialog?.name !== "elementLinkSelector" && !(F.length === 1 && xA(F[0]))) {
          let p = P5(h, this.state, c, D, this.state.zoom, E.pointerType, this.scene.getNonDeletedElementsMap(), this.device);
          if (p && p.transformHandleType) {
            Yu(this.interactiveCanvas, V5(p));
            return;
          }
        }
      } else if (F.length > 1 && !s && this.state.openDialog?.name !== "elementLinkSelector") {
        let p = O5(Nu(F), c, D, this.state.zoom, E.pointerType, this.device);
        if (p) {
          Yu(this.interactiveCanvas, V5({ transformHandleType: p }));
          return;
        }
      }
      let m = this.getElementAtPosition(l.x, l.y);
      this.hitLinkElement = this.getElementLinkAtPosition(l, m), !KB(this.state) && (this.hitLinkElement && !this.state.selectedElementIds[this.hitLinkElement.id] ? (Yu(this.interactiveCanvas, Ru.POINTER), lhA(this.hitLinkElement, this.state, this.scene.getNonDeletedElementsMap())) : (lm(), m && (m.link || je(m)) && this.state.selectedElementIds[m.id] && !this.state.contextMenu && !this.state.showHyperlinkPopup ? this.setState({ showHyperlinkPopup: "info" }) : this.state.activeTool.type === "text" ? Yu(this.interactiveCanvas, UA(m) ? Ru.TEXT : Ru.CROSSHAIR) : this.state.viewModeEnabled ? Yu(this.interactiveCanvas, Ru.GRAB) : this.state.openDialog?.name === "elementLinkSelector" ? Yu(this.interactiveCanvas, Ru.AUTO) : s ? Yu(this.interactiveCanvas, Ru.AUTO) : this.state.selectedLinearElement ? this.handleHoverSelectedLinearElement(this.state.selectedLinearElement, c, D) : E[Z.CTRL_OR_CMD] ? Yu(this.interactiveCanvas, Ru.AUTO) : (m || this.isHittingCommonBoundingBoxOfSelectedElements(l, F)) && !m?.locked && (m && UC(m) && this.isIframeLikeElementCenter(m, E, c, D) ? (Yu(this.interactiveCanvas, Ru.POINTER), this.setState({ activeEmbeddable: { element: m, state: "hover" } })) : (!m || !xA(m)) && (Yu(this.interactiveCanvas, Ru.MOVE), this.state.activeEmbeddable?.state === "hover" && this.setState({ activeEmbeddable: null })))), this.state.openDialog?.name === "elementLinkSelector" && m ? this.setState((p) => ({ hoveredElementIds: Ho(p.hoveredElementIds, Ue({ editingGroupId: p.editingGroupId, selectedElementIds: { [m.id]: !0 } }, this.scene.getNonDeletedElements(), p, this).selectedElementIds) })) : this.state.openDialog?.name === "elementLinkSelector" && !m && this.setState((p) => ({ hoveredElementIds: Ho(p.hoveredElementIds, {}) })));
    }), J(this, "handleEraser", (E, Q, s) => {
      this.eraserTrail.addPointToPath(s.x, s.y);
      let l = !1, c = /* @__PURE__ */ new Set(), D = this.scene.getNonDeletedElements(), h = (b) => {
        for (let f of b) {
          if (f.locked) return;
          if (E.altKey ? this.elementsPendingErasure.delete(f.id) && (l = !0) : this.elementsPendingErasure.has(f.id) || (l = !0, this.elementsPendingErasure.add(f.id)), l && f.groupIds?.length) {
            let L = f.groupIds.at(-1);
            if (!c.has(L)) {
              c.add(L);
              let N = Vu(D, L);
              for (let M of N) E.altKey ? this.elementsPendingErasure.delete(M.id) : this.elementsPendingErasure.add(M.id);
            }
          }
        }
      }, F = Uu(U(Q.lastCoords.x, Q.lastCoords.y), U(s.x, s.y)), m = this.getElementHitThreshold(), p = { ...Q.lastCoords }, k = 0;
      for (; k <= F; ) {
        let b = this.getElementsAtPosition(p.x, p.y);
        if (h(b), k === F) break;
        k = Math.min(k + m, F);
        let f = k / F, L = (1 - f) * p.x + f * s.x, N = (1 - f) * p.y + f * s.y;
        p.x = L, p.y = N;
      }
      if (Q.lastCoords.x = s.x, Q.lastCoords.y = s.y, l) {
        for (let b of this.scene.getNonDeletedElements()) Xu(b) && (this.elementsPendingErasure.has(b.id) || this.elementsPendingErasure.has(b.containerId)) && (E.altKey ? (this.elementsPendingErasure.delete(b.id), this.elementsPendingErasure.delete(b.containerId)) : (this.elementsPendingErasure.add(b.id), this.elementsPendingErasure.add(b.containerId)));
        this.elementsPendingErasure = new Set(this.elementsPendingErasure), this.triggerRender();
      }
    }), J(this, "handleTouchMove", (E) => {
      Oo = !0;
    }), J(this, "handleCanvasPointerDown", (E) => {
      let Q = E.target;
      if (Q.setPointerCapture && Q.setPointerCapture(E.pointerId), this.maybeCleanupAfterMissingPointerUp(E.nativeEvent), this.maybeUnfollowRemoteUser(), this.state.searchMatches && (this.setState((m) => ({ searchMatches: m.searchMatches.map((p) => ({ ...p, focus: !1 })) })), QB.set(gL, null)), this.state.contextMenu && this.setState({ contextMenu: null }), this.state.snapLines && this.setAppState({ snapLines: [] }), this.updateGestureOnPointerDown(E), E.pointerType === "touch" && this.state.newElement && this.state.newElement.type === "freedraw") {
        let m = this.state.newElement;
        this.updateScene({ ...m.points.length < 10 ? { elements: this.scene.getElementsIncludingDeleted().filter((p) => p.id !== m.id) } : {}, appState: { newElement: null, editingTextElement: null, startBoundElement: null, suggestedBindings: [], selectedElementIds: yu(Object.keys(this.state.selectedElementIds).filter((p) => p !== m.id).reduce((p, k) => (p[k] = this.state.selectedElementIds[k], p), {}), this.state) }, captureUpdate: this.state.openDialog?.name === "elementLinkSelector" ? aA.EVENTUALLY : aA.NEVER });
        return;
      }
      let s = document.getSelection();
      if (s?.anchorNode && s.removeAllRanges(), this.maybeOpenContextMenuAfterPointerDownOnTouchDevices(E), !this.state.penDetected && E.pointerType === "pen" && this.setState((m) => ({ penMode: !0, penDetected: !0 })), !this.device.isTouchScreen && ["pen", "touch"].includes(E.pointerType) && (this.device = Ls(this.device, { isTouchScreen: !0 })), Po || (this.lastPointerDownEvent = E, this.handleCanvasPanUsingWheelOrSpaceDrag(E))) return;
      if (this.setState({ lastPointerDownWith: E.pointerType, cursorButton: "down" }), this.savePointer(E.clientX, E.clientY, "down"), E.button === Jt.ERASER && this.state.activeTool.type !== H0.eraser) {
        this.setState({ activeTool: b0(this.state, { type: H0.eraser, lastActiveToolBeforeEraser: this.state.activeTool }) }, () => {
          this.handleCanvasPointerDown(E);
          let m = () => {
            p(), k?.(), KB(this.state) && this.setState({ activeTool: b0(this.state, { ...this.state.activeTool.lastActiveTool || { type: H0.selection }, lastActiveToolBeforeEraser: null }) });
          }, p = B0(window, "pointerup", m, { once: !0 }), k;
          requestAnimationFrame(() => {
            k = this.missingPointerEventCleanupEmitter.once(m);
          });
        });
        return;
      }
      if (E.button !== Jt.MAIN && E.button !== Jt.TOUCH && E.button !== Jt.ERASER || ku.pointers.size > 1) return;
      let l = this.initialPointerDownState(E);
      if (this.setState({ selectedElementsAreBeingDragged: !1 }), this.handleDraggingScrollBar(E, l) || (this.clearSelectionIfNotUsingSelection(), this.updateBindingEnabledOnPointerMove(E), this.handleSelectionOnPointerDown(E, l)) || !(!this.state.penMode || E.pointerType !== "touch" || this.state.activeTool.type === "selection" || this.state.activeTool.type === "text" || this.state.activeTool.type === "image")) return;
      if (this.state.activeTool.type === "text") this.handleTextOnPointerDown(E, l);
      else if (this.state.activeTool.type === "arrow" || this.state.activeTool.type === "line") this.handleLinearElementOnPointerDown(E, this.state.activeTool.type, l);
      else if (this.state.activeTool.type === "image") {
        Yu(this.interactiveCanvas, Ru.CROSSHAIR);
        let m = this.state.pendingImageElementId && this.scene.getElement(this.state.pendingImageElementId);
        if (!m) return;
        this.setState({ newElement: m, pendingImageElementId: null, multiElement: null });
        let { x: p, y: k } = Tu(E, this.state), b = this.getTopLayerFrameAtSceneCoords({ x: p, y: k });
        nA(m, { x: p, y: k, frameId: b ? b.id : null });
      } else this.state.activeTool.type === "freedraw" ? this.handleFreeDrawElementOnPointerDown(E, this.state.activeTool.type, l) : this.state.activeTool.type === "custom" ? vB(this.interactiveCanvas, this.state) : this.state.activeTool.type === H0.frame || this.state.activeTool.type === H0.magicframe ? this.createFrameElementOnPointerDown(l, this.state.activeTool.type) : this.state.activeTool.type === "laser" ? this.laserTrails.startPath(l.lastCoords.x, l.lastCoords.y) : this.state.activeTool.type !== "eraser" && this.state.activeTool.type !== "hand" && this.createGenericElementOnPointerDown(this.state.activeTool.type, l);
      this.props?.onPointerDown?.(this.state.activeTool, l), this.onPointerDownEmitter.trigger(this.state.activeTool, l, E), this.state.activeTool.type === "eraser" && this.eraserTrail.startPath(l.lastCoords.x, l.lastCoords.y);
      let c = this.onPointerMoveFromPointerDownHandler(l), D = this.onPointerUpFromPointerDownHandler(l), h = this.onKeyDownFromPointerDownHandler(l), F = this.onKeyUpFromPointerDownHandler(l);
      this.missingPointerEventCleanupEmitter.once((m) => D(m || E.nativeEvent)), (!this.state.viewModeEnabled || this.state.activeTool.type === "laser") && (window.addEventListener("pointermove", c), window.addEventListener("pointerup", D), window.addEventListener("keydown", h), window.addEventListener("keyup", F), l.eventListeners.onMove = c, l.eventListeners.onUp = D, l.eventListeners.onKeyUp = F, l.eventListeners.onKeyDown = h);
    }), J(this, "handleCanvasPointerUp", (E) => {
      this.removePointer(E), this.lastPointerUpEvent = E;
      let Q = Tu({ clientX: E.clientX, clientY: E.clientY }, this.state), s = E.timeStamp - (this.lastPointerDownEvent?.timeStamp ?? 0);
      if (this.device.editor.isMobile && s < 300) {
        let l = this.getElementAtPosition(Q.x, Q.y);
        if (UC(l) && this.isIframeLikeElementCenter(l, E, Q.x, Q.y)) {
          this.handleEmbeddableCenterClick(l);
          return;
        }
      }
      if (this.device.isTouchScreen) {
        let l = this.getElementAtPosition(Q.x, Q.y);
        this.hitLinkElement = this.getElementLinkAtPosition(Q, l);
      }
      this.hitLinkElement && !this.state.selectedElementIds[this.hitLinkElement.id] ? s < 300 && UC(this.hitLinkElement) && !Fy(this.hitLinkElement, this.scene.getNonDeletedElementsMap(), this.state, U(Q.x, Q.y)) ? this.handleEmbeddableCenterClick(this.hitLinkElement) : this.redirectToLink(E, this.device.isTouchScreen) : this.state.viewModeEnabled && this.setState({ activeEmbeddable: null, selectedElementIds: {} });
    }), J(this, "maybeOpenContextMenuAfterPointerDownOnTouchDevices", (E) => {
      E.pointerType === "touch" && (Oo = !1, Ht ? Oo = !0 : Ht = window.setTimeout(() => {
        Ht = 0, Oo || this.handleCanvasContextMenu(E);
      }, REA));
    }), J(this, "resetContextMenuTimer", () => {
      clearTimeout(Ht), Ht = 0, Oo = !1;
    }), J(this, "maybeCleanupAfterMissingPointerUp", (E) => {
      Vo?.(), this.missingPointerEventCleanupEmitter.trigger(E).clear();
    }), J(this, "handleCanvasPanUsingWheelOrSpaceDrag", (E) => {
      if (!(ku.pointers.size <= 1 && (E.button === Jt.WHEEL || E.button === Jt.MAIN && uE || BI(this.state) || this.state.viewModeEnabled))) return !1;
      Po = !0, this.focusContainer(), this.state.editingTextElement || E.preventDefault();
      let Q = !1, s = typeof window === void 0 ? !1 : /Linux/.test(window.navigator.platform);
      Yu(this.interactiveCanvas, Ru.GRABBING);
      let { clientX: l, clientY: c } = E, D = sD((F) => {
        let m = l - F.clientX, p = c - F.clientY;
        if (l = F.clientX, c = F.clientY, s && !Q && (Math.abs(m) > 1 || Math.abs(p) > 1)) {
          Q = !0;
          let k = (f) => {
            document.body.removeEventListener("paste", k), f.stopPropagation();
          }, b = () => {
            setTimeout(() => {
              document.body.removeEventListener("paste", k), window.removeEventListener("pointerup", b);
            }, 100);
          };
          document.body.addEventListener("paste", k), window.addEventListener("pointerup", b);
        }
        this.translateCanvas({ scrollX: this.state.scrollX - m / this.state.zoom.value, scrollY: this.state.scrollY - p / this.state.zoom.value });
      }), h = Q0(Vo = () => {
        Vo = null, Po = !1, uE || (this.state.viewModeEnabled ? Yu(this.interactiveCanvas, Ru.GRAB) : vB(this.interactiveCanvas, this.state)), this.setState({ cursorButton: "up" }), this.savePointer(E.clientX, E.clientY, "up"), window.removeEventListener("pointermove", D), window.removeEventListener("pointerup", h), window.removeEventListener("blur", h), D.flush();
      });
      return window.addEventListener("blur", h), window.addEventListener("pointermove", D, { passive: !0 }), window.addEventListener("pointerup", h), !0;
    }), J(this, "clearSelectionIfNotUsingSelection", () => {
      this.state.activeTool.type !== "selection" && this.setState({ selectedElementIds: yu({}, this.state), selectedGroupIds: {}, editingGroupId: null, activeEmbeddable: null });
    }), J(this, "handleSelectionOnPointerDown", (E, Q) => {
      if (this.state.activeTool.type === "selection") {
        let s = this.scene.getNonDeletedElements(), l = this.scene.getNonDeletedElementsMap(), c = this.scene.getSelectedElements(this.state);
        if (c.length === 1 && !this.state.editingLinearElement && !xA(c[0]) && !(this.state.selectedLinearElement && this.state.selectedLinearElement.hoverPointIndex !== -1)) {
          let D = P5(s, this.state, Q.origin.x, Q.origin.y, this.state.zoom, E.pointerType, this.scene.getNonDeletedElementsMap(), this.device);
          D != null && (D.transformHandleType === "rotation" ? (this.setState({ resizingElement: D.element }), Q.resize.handleType = D.transformHandleType) : (this.state.croppingElementId || this.setState({ resizingElement: D.element }), Q.resize.handleType = D.transformHandleType));
        } else c.length > 1 && (Q.resize.handleType = O5(Nu(c), Q.origin.x, Q.origin.y, this.state.zoom, E.pointerType, this.device));
        if (Q.resize.handleType) Q.resize.isResizing = !0, Q.resize.offset = aB(udA(Q.resize.handleType, c, l, Q.origin.x, Q.origin.y)), c.length === 1 && $A(c[0]) && c[0].points.length === 2 && (Q.resize.arrowDirection = edA(Q.resize.handleType, c[0]));
        else {
          if (this.state.selectedLinearElement) {
            let F = this.state.editingLinearElement || this.state.selectedLinearElement, m = LA.handlePointerDown(E, this, this.store, Q.origin, F, this.scene);
            if (m.hitElement && (Q.hit.element = m.hitElement), m.linearElementEditor && (this.setState({ selectedLinearElement: m.linearElementEditor }), this.state.editingLinearElement && this.setState({ editingLinearElement: m.linearElementEditor })), m.didAddPoint) return !0;
          }
          if (Q.hit.element = Q.hit.element ?? this.getElementAtPosition(Q.origin.x, Q.origin.y), this.hitLinkElement = this.getElementLinkAtPosition(Q.origin, Q.hit.element), this.hitLinkElement) return !0;
          if (this.state.croppingElementId && Q.hit.element?.id !== this.state.croppingElementId && this.finishImageCropping(), Q.hit.element && this.getElementLinkAtPosition({ x: Q.origin.x, y: Q.origin.y }, Q.hit.element)) return !1;
          Q.hit.allHitElements = this.getElementsAtPosition(Q.origin.x, Q.origin.y);
          let D = Q.hit.element, h = Q.hit.allHitElements.some((F) => this.isASelectedElement(F));
          if ((D === null || !h) && !E.shiftKey && !Q.hit.hasHitCommonBoundingBoxOfSelectedElements && this.clearSelection(D), this.state.editingLinearElement) this.setState({ selectedElementIds: yu({ [this.state.editingLinearElement.elementId]: !0 }, this.state) });
          else if (D != null) {
            if (E[Z.CTRL_OR_CMD]) return this.state.selectedElementIds[D.id] || (Q.hit.wasAddedToSelection = !0), this.setState((F) => ({ ...K4A(F, D), previousSelectedElementIds: this.state.selectedElementIds })), !1;
            this.state.selectedElementIds[D.id] || (this.state.editingGroupId && !OQ(D, this.state.editingGroupId) && this.setState({ selectedElementIds: yu({}, this.state), selectedGroupIds: {}, editingGroupId: null, activeEmbeddable: null }), !h && !Q.hit.hasHitCommonBoundingBoxOfSelectedElements && (this.setState((F) => {
              let m = { ...F.selectedElementIds, [D.id]: !0 }, p = [];
              if (Object.keys(F.selectedElementIds).forEach((k) => {
                let b = this.scene.getElement(k);
                b && p.push(b);
              }), OA(D)) Bg(p, D.id).forEach((k) => {
                delete m[k.id];
              });
              else if (D.frameId) m[D.frameId] && delete m[D.id];
              else {
                let k = D.groupIds, b = new Set(k.flatMap((f) => Vu(this.scene.getNonDeletedElements(), f)).filter((f) => OA(f)).map((f) => f.id));
                b.size > 0 && p.forEach((f) => {
                  f.frameId && b.has(f.frameId) && (delete m[f.id], f.groupIds.flatMap((L) => Vu(this.scene.getNonDeletedElements(), L)).forEach((L) => {
                    delete m[L.id];
                  }));
                });
              }
              return F.openDialog?.name === "elementLinkSelector" && (D.groupIds.some((k) => F.selectedGroupIds[k]) || (m = { [D.id]: !0 })), { ...Ue({ editingGroupId: F.editingGroupId, selectedElementIds: m }, this.scene.getNonDeletedElements(), F, this), showHyperlinkPopup: D.link || je(D) ? "info" : !1 };
            }), Q.hit.wasAddedToSelection = !0));
          }
          this.setState({ previousSelectedElementIds: this.state.selectedElementIds });
        }
      }
      return !1;
    }), J(this, "handleTextOnPointerDown", (E, Q) => {
      if (this.state.editingTextElement) return;
      let s = Q.origin.x, l = Q.origin.y, c = this.getElementAtPosition(s, l, { includeBoundTextElement: !0 }), D = this.getTextBindableContainerAtPosition(s, l);
      MC(c) && (D = c, s = c.x + c.width / 2, l = c.y + c.height / 2), this.startTextEditing({ sceneX: s, sceneY: l, insertAtParentCenter: !E.altKey, container: D, autoEdit: !1 }), BB(this.interactiveCanvas), this.state.activeTool.locked || this.setState({ activeTool: b0(this.state, { type: "selection" }) });
    }), J(this, "handleFreeDrawElementOnPointerDown", (E, Q, s) => {
      let [l, c] = f0(s.origin.x, s.origin.y, null), D = this.getTopLayerFrameAtSceneCoords({ x: l, y: c }), h = E.pressure === 0.5, F = D3A({ type: Q, x: l, y: c, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, roundness: null, simulatePressure: h, locked: !1, frameId: D ? D.id : null, points: [U(0, 0)], pressures: h ? [] : [E.pressure] });
      this.scene.insertElement(F), this.setState((p) => {
        let k = { ...p.selectedElementIds };
        return delete k[F.id], { selectedElementIds: yu(k, p) };
      });
      let m = oB(s.origin, this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), this.state.zoom);
      this.setState({ newElement: F, startBoundElement: m, suggestedBindings: [] });
    }), J(this, "insertIframeElement", ({ sceneX: E, sceneY: Q, width: s, height: l }) => {
      let [c, D] = f0(E, Q, this.lastPointerDownEvent?.[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), h = l3A({ type: "iframe", x: c, y: D, strokeColor: "transparent", backgroundColor: "transparent", fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, roundness: this.getCurrentItemRoundness("iframe"), opacity: this.state.currentItemOpacity, locked: !1, width: s, height: l });
      return this.scene.insertElement(h), h;
    }), J(this, "insertEmbeddableElement", ({ sceneX: E, sceneY: Q, link: s }) => {
      let [l, c] = f0(E, Q, this.lastPointerDownEvent?.[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), D = za(s);
      if (!D) return;
      D.error instanceof URIError && this.setToast({ message: S("toast.unrecognizedLinkFormat"), closable: !0 });
      let h = r5({ type: "embeddable", x: l, y: c, strokeColor: "transparent", backgroundColor: "transparent", fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, roundness: this.getCurrentItemRoundness("embeddable"), opacity: this.state.currentItemOpacity, locked: !1, width: D.intrinsicSize.w, height: D.intrinsicSize.h, link: s });
      return this.scene.insertElement(h), h;
    }), J(this, "createImageElement", ({ sceneX: E, sceneY: Q, addToFrameUnderCursor: s = !0 }) => {
      let [l, c] = f0(E, Q, this.lastPointerDownEvent?.[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), D = s ? this.getTopLayerFrameAtSceneCoords({ x: l, y: c }) : null;
      return ty({ type: "image", x: l, y: c, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, roundness: null, opacity: this.state.currentItemOpacity, locked: !1, frameId: D ? D.id : null });
    }), J(this, "handleLinearElementOnPointerDown", (E, Q, s) => {
      if (this.state.multiElement) {
        let { multiElement: l } = this.state;
        if (l.type === "line" && Wg(l.points, this.state.zoom.value)) {
          nA(l, { lastCommittedPoint: l.points[l.points.length - 1] }), this.actionManager.executeAction(eB);
          return;
        }
        if (xA(l) && l.points.length > 1) {
          nA(l, { lastCommittedPoint: l.points[l.points.length - 1] }), this.actionManager.executeAction(eB);
          return;
        }
        let { x: c, y: D, lastCommittedPoint: h } = l;
        if (l.points.length > 1 && h && Uu(U(s.origin.x - c, s.origin.y - D), h) < fs) {
          this.actionManager.executeAction(eB);
          return;
        }
        this.setState((F) => ({ selectedElementIds: yu({ ...F.selectedElementIds, [l.id]: !0 }, F) })), nA(l, { lastCommittedPoint: l.points[l.points.length - 1] }), Yu(this.interactiveCanvas, Ru.POINTER);
      } else {
        let [l, c] = f0(s.origin.x, s.origin.y, E[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), D = this.getTopLayerFrameAtSceneCoords({ x: l, y: c }), { currentItemStartArrowhead: h, currentItemEndArrowhead: F } = this.state, [m, p] = Q === "arrow" ? [h, F] : [null, null], k = Q === "arrow" ? f2({ type: Q, x: l, y: c, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, roundness: this.state.currentItemArrowType === P0.round ? { type: x0.PROPORTIONAL_RADIUS } : null, startArrowhead: m, endArrowhead: p, locked: !1, frameId: D ? D.id : null, elbowed: this.state.currentItemArrowType === P0.elbow, fixedSegments: this.state.currentItemArrowType === P0.elbow ? [] : null }) : wE({ type: Q, x: l, y: c, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, roundness: this.state.currentItemRoundness === "round" ? { type: x0.PROPORTIONAL_RADIUS } : null, locked: !1, frameId: D ? D.id : null });
        this.setState((f) => {
          let L = { ...f.selectedElementIds };
          return delete L[k.id], { selectedElementIds: yu(L, f) };
        }), nA(k, { points: [...k.points, U(0, 0)] });
        let b = oB(s.origin, this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), this.state.zoom, xA(k), xA(k));
        this.scene.insertElement(k), this.setState({ newElement: k, startBoundElement: b, suggestedBindings: [] });
      }
    }), J(this, "createGenericElementOnPointerDown", (E, Q) => {
      let [s, l] = f0(Q.origin.x, Q.origin.y, this.lastPointerDownEvent?.[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), c = this.getTopLayerFrameAtSceneCoords({ x: s, y: l }), D = { x: s, y: l, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, roundness: this.getCurrentItemRoundness(E), locked: !1, frameId: c ? c.id : null }, h;
      E === "embeddable" ? h = r5({ type: "embeddable", ...D }) : h = eg({ type: E, ...D }), h.type === "selection" ? this.setState({ selectionElement: h }) : (this.scene.insertElement(h), this.setState({ multiElement: null, newElement: h }));
    }), J(this, "createFrameElementOnPointerDown", (E, Q) => {
      let [s, l] = f0(E.origin.x, E.origin.y, this.lastPointerDownEvent?.[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), c = { x: s, y: l, opacity: this.state.currentItemOpacity, locked: !1, ...i0 }, D = Q === H0.magicframe ? B1(c) : G2(c);
      this.scene.insertElement(D), this.setState({ multiElement: null, newElement: D });
    }), J(this, "restoreReadyToEraseElements", () => {
      this.elementsPendingErasure = /* @__PURE__ */ new Set(), this.triggerRender();
    }), J(this, "eraseElements", () => {
      let E = !1, Q = this.scene.getElementsIncludingDeleted().map((s) => this.elementsPendingErasure.has(s.id) || s.frameId && this.elementsPendingErasure.has(s.frameId) || Xu(s) && this.elementsPendingErasure.has(s.containerId) ? (E = !0, Bu(s, { isDeleted: !0 })) : s);
      this.elementsPendingErasure = /* @__PURE__ */ new Set(), E && (this.store.shouldCaptureIncrement(), this.scene.replaceAllElements(Q));
    }), J(this, "initializeImage", async ({ imageFile: E, imageElement: Q, showCursorImagePreview: s = !1 }) => {
      if (!FE(E)) throw new Error(S("errors.unsupportedFileType"));
      let l = E.type;
      if (Yu(this.interactiveCanvas, "wait"), l === zA.svg) try {
        E = Ap(k5(await E.text()), E.name);
      } catch (F) {
        throw console.warn(F), new Error(S("errors.svgImageInsertError"));
      }
      let c = await (this.props.generateIdForFile?.(E) || sdA(E));
      if (!c) throw console.warn("Couldn't generate file id or the supplied `generateIdForFile` didn't resolve to one."), new Error(S("errors.imageInsertError"));
      if (!this.files[c]?.dataURL) {
        try {
          E = await r1(E, { maxWidthOrHeight: ZEA });
        } catch (F) {
          console.error("Error trying to resizing image file on insertion", F);
        }
        if (E.size > lF) throw new Error(S("errors.fileTooBig", { maxSize: `${Math.trunc(lF / 1024 / 1024)}MB` }));
      }
      if (s) {
        let F = this.files[c]?.dataURL, m = F && cdA(F);
        this.setImagePreviewCursor(m || E);
      }
      let D = this.files[c]?.dataURL || await $5(E), h = nA(Q, { fileId: c }, !1);
      return new Promise(async (F, m) => {
        try {
          this.addMissingFiles([{ mimeType: l, id: c, dataURL: D, created: Date.now(), lastRetrieved: Date.now() }]);
          let p = this.imageCache.get(c);
          p || (this.addNewImagesToImageCache(), await this.updateImageCache([h])), p?.image instanceof Promise && await p.image, this.state.pendingImageElementId !== h.id && this.state.newElement?.id !== h.id && this.initializeImageDimensions(h, !0), F(h);
        } catch (p) {
          console.error(p), m(new Error(S("errors.imageInsertError")));
        } finally {
          s || BB(this.interactiveCanvas);
        }
      });
    }), J(this, "insertImageElement", async (E, Q, s) => {
      if (!this.isToolSupported("image")) {
        this.setState({ errorMessage: S("errors.imageToolNotSupported") });
        return;
      }
      this.scene.insertElement(E);
      try {
        return await this.initializeImage({ imageFile: Q, imageElement: E, showCursorImagePreview: s });
      } catch (l) {
        return nA(E, { isDeleted: !0 }), this.actionManager.executeAction(eB), this.setState({ errorMessage: l.message || S("errors.imageInsertError") }), null;
      }
    }), J(this, "setImagePreviewCursor", async (E) => {
      let Q;
      try {
        Q = await r1(E, { maxWidthOrHeight: 96 });
      } catch (l) {
        throw l.cause === "UNSUPPORTED" ? new Error(S("errors.unsupportedFileType")) : l;
      }
      let s = await $5(Q);
      if (E.type === zA.svg) {
        let l = await cy(s), c = Math.min(l.height, 96), D = c * (l.width / l.height);
        D > 96 && (D = 96, c = D * (l.height / l.width));
        let h = document.createElement("canvas");
        h.height = c, h.width = D, h.getContext("2d").drawImage(l, 0, 0, D, c), s = h.toDataURL(zA.svg);
      }
      this.state.pendingImageElementId && Yu(this.interactiveCanvas, `url(${s}) 4 4, auto`);
    }), J(this, "onImageAction", async ({ insertOnCanvasDirectly: E }) => {
      try {
        let Q = this.state.width / 2 + this.state.offsetLeft, s = this.state.height / 2 + this.state.offsetTop, { x: l, y: c } = Tu({ clientX: Q, clientY: s }, this.state), D = this.createImageElement({ sceneX: l, sceneY: c, addToFrameUnderCursor: !1 });
        if (this.props.onImageInsert) {
          let h = await this.props.onImageInsert();
          if (!h) throw new DOMException("Image selection cancelled", "AbortError");
          let F = Cl();
          this.addMissingFiles([{ mimeType: h.mimeType, id: F, dataURL: h.dataURL, created: Date.now(), lastRetrieved: Date.now() }]);
          let m = nA(D, { fileId: F, ...h.width && h.height ? { width: h.width, height: h.height } : {} }, !1);
          this.scene.insertElement(m), h.width && h.height && this.initializeImageDimensions(m, !0), this.addNewImagesToImageCache(), await this.updateImageCache([m]), this.setState({ selectedElementIds: yu({ [m.id]: !0 }, this.state) }, () => {
            this.actionManager.executeAction(eB);
          });
        }
        return;
      } catch (Q) {
        Q.name !== "AbortError" ? console.error(Q) : console.warn(Q), this.setState({ pendingImageElementId: null, newElement: null, activeTool: b0(this.state, { type: "selection" }) }, () => {
          this.actionManager.executeAction(eB);
        });
      }
    }), J(this, "initializeImageDimensions", (E, Q = !1) => {
      let s = bC(E) && this.imageCache.get(E.fileId)?.image;
      if (!s || s instanceof Promise) {
        if (E.width < BE / this.state.zoom.value && E.height < BE / this.state.zoom.value) {
          let l = 100 / this.state.zoom.value;
          nA(E, { x: E.x - l / 2, y: E.y - l / 2, width: l, height: l });
        }
        return;
      }
      if (Q || E.width < BE / this.state.zoom.value && E.height < BE / this.state.zoom.value) {
        let l = Math.max(this.state.height - 120, 160), c = Math.min(l, Math.floor(this.state.height * 0.5) / this.state.zoom.value), D = Math.min(s.naturalHeight, c), h = D * (s.naturalWidth / s.naturalHeight), F = E.x + E.width / 2 - h / 2, m = E.y + E.height / 2 - D / 2;
        nA(E, { x: F, y: m, width: h, height: D, crop: null });
      }
    }), J(this, "updateImageCache", async (E, Q = this.files) => {
      let { updatedFiles: s, erroredFiles: l } = await dy({ imageCache: this.imageCache, fileIds: E.map((c) => c.fileId), files: Q });
      if (s.size || l.size) for (let c of E) s.has(c.fileId) && a0.delete(c);
      return l.size && this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().map((c) => bC(c) && l.has(c.fileId) ? Bu(c, { status: "error" }) : c)), { updatedFiles: s, erroredFiles: l };
    }), J(this, "addNewImagesToImageCache", async (E = Dy(this.scene.getNonDeletedElements()), Q = this.files) => {
      let s = E.filter((l) => !l.isDeleted && !this.imageCache.has(l.fileId));
      if (s.length) {
        let { updatedFiles: l } = await this.updateImageCache(s, Q);
        l.size && this.scene.triggerUpdate();
      }
    }), J(this, "scheduleImageRefresh", In(() => {
      this.addNewImagesToImageCache();
    }, SEA)), J(this, "updateBindingEnabledOnPointerMove", (E) => {
      let Q = s4A(E);
      this.state.isBindingEnabled !== Q && this.setState({ isBindingEnabled: Q });
    }), J(this, "maybeSuggestBindingAtCursor", (E, Q) => {
      let s = oB(E, this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), this.state.zoom, !1, Q);
      this.setState({ suggestedBindings: s != null ? [s] : [] });
    }), J(this, "maybeSuggestBindingsForLinearElementAtCoords", (E, Q, s) => {
      if (!Q.length) return;
      let l = Q.reduce((c, D) => {
        let h = oB(D, this.scene.getNonDeletedElements(), this.scene.getNonDeletedElementsMap(), this.state.zoom, xA(E), xA(E));
        return h != null && !Hk(E, s?.id, h) && c.push(h), c;
      }, []);
      this.setState({ suggestedBindings: l });
    }), J(this, "handleInteractiveCanvasRef", (E) => {
      E !== null ? (this.interactiveCanvas = E, this.interactiveCanvas.addEventListener("touchstart", this.onTouchStart, { passive: !1 }), this.interactiveCanvas.addEventListener("touchend", this.onTouchEnd)) : (this.interactiveCanvas?.removeEventListener("touchstart", this.onTouchStart), this.interactiveCanvas?.removeEventListener("touchend", this.onTouchEnd));
    }), J(this, "handleAppOnDrop", async (E) => {
      let { file: Q, fileHandle: s } = await hdA(E), { x: l, y: c } = Tu(E, this.state);
      try {
        if (FE(Q) && this.isToolSupported("image")) {
          if (Q?.type === zA.png || Q?.type === zA.svg) try {
            let F = await gb(Q, this.state, this.scene.getElementsIncludingDeleted(), s);
            this.syncActionResult({ ...F, appState: { ...F.appState || this.state, isLoading: !1 }, replaceFiles: !0, captureUpdate: aA.IMMEDIATELY });
            return;
          } catch (F) {
            if (F.name !== "EncodingError") throw new Error(S("alerts.couldNotLoadInvalidFile"));
          }
          let h = this.createImageElement({ sceneX: l, sceneY: c });
          this.insertImageElement(h, Q), this.initializeImageDimensions(h), this.setState({ selectedElementIds: yu({ [h.id]: !0 }, this.state) });
          return;
        }
      } catch (h) {
        return this.setState({ isLoading: !1, errorMessage: h.message });
      }
      let D = E.dataTransfer.getData(zA.excalidrawlib);
      if (D && typeof D == "string") {
        try {
          let h = tb(D);
          this.addElementsFromPasteOrLibrary({ elements: Ef(h), position: E, files: null });
        } catch (h) {
          this.setState({ errorMessage: h.message });
        }
        return;
      }
      if (Q && await this.loadFileToCanvas(Q, s), E.dataTransfer?.types?.includes("text/plain")) {
        let h = E.dataTransfer?.getData("text");
        if (h && Hs(h, this.props.validateEmbeddable) && (/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(h) || za(h)?.type === "video")) {
          let F = this.insertEmbeddableElement({ sceneX: l, sceneY: c, link: oC(h) });
          F && this.setState({ selectedElementIds: { [F.id]: !0 } });
        }
      }
    }), J(this, "loadFileToCanvas", async (E, Q) => {
      E = await E9(E);
      try {
        let s = this.scene.getElementsIncludingDeleted(), l;
        try {
          l = await Bb(E, this.state, s, Q);
        } catch (c) {
          let D = c instanceof QE;
          if (D && c.code === "IMAGE_NOT_CONTAINS_SCENE_DATA" && !this.isToolSupported("image")) {
            this.setState({ isLoading: !1, errorMessage: S("errors.imageToolNotSupported") });
            return;
          }
          let h = S(D ? "alerts.cannotRestoreFromImage" : "alerts.couldNotLoadInvalidFile");
          this.setState({ isLoading: !1, errorMessage: h });
        }
        if (!l) return;
        l.type === zA.excalidraw ? (Pg(s.concat(l.data.elements)), this.store.updateSnapshot(PA(s), this.state), this.setState({ isLoading: !0 }), this.syncActionResult({ ...l.data, appState: { ...l.data.appState || this.state, isLoading: !1 }, replaceFiles: !0, captureUpdate: aA.IMMEDIATELY })) : l.type === zA.excalidrawlib && await this.library.updateLibrary({ libraryItems: E, merge: !0, openLibraryMenu: !0 }).catch((c) => {
          console.error(c), this.setState({ errorMessage: S("errors.importLibraryError") });
        });
      } catch (s) {
        this.setState({ isLoading: !1, errorMessage: s.message });
      }
    }), J(this, "handleCanvasContextMenu", (E) => {
      if (E.preventDefault(), ("pointerType" in E.nativeEvent && E.nativeEvent.pointerType === "touch" || "pointerType" in E.nativeEvent && E.nativeEvent.pointerType === "pen" && E.button !== Jt.SECONDARY) && this.state.activeTool.type !== "selection") return;
      let { x: Q, y: s } = Tu(E, this.state), l = this.getElementAtPosition(Q, s, { preferSelected: !0, includeLockedElements: !0 }), c = this.scene.getSelectedElements(this.state), D = this.isHittingCommonBoundingBoxOfSelectedElements({ x: Q, y: s }, c), h = l || D ? "element" : "canvas", F = this.excalidrawContainerRef.current, { top: m, left: p } = F.getBoundingClientRect(), k = E.clientX - p, b = E.clientY - m;
      zu("contextMenu", "openContextMenu", h), this.setState({ ...l && !this.state.selectedElementIds[l.id] ? { ...this.state, ...Ue({ editingGroupId: this.state.editingGroupId, selectedElementIds: { [l.id]: !0 } }, this.scene.getNonDeletedElements(), this.state, this), selectedLinearElement: $A(l) ? new LA(l) : null } : this.state, showHyperlinkPopup: !1 }, () => {
        this.setState({ contextMenu: { top: b, left: k, items: this.getContextMenuItems(h) } });
      });
    }), J(this, "maybeDragNewGenericElement", (E, Q, s = !0) => {
      let l = this.state.selectionElement, c = E.lastCoords;
      if (l && this.state.activeTool.type !== "eraser") {
        _5({ newElement: l, elementType: this.state.activeTool.type, originX: E.origin.x, originY: E.origin.y, x: c.x, y: c.y, width: le(E.origin.x, c.x), height: le(E.origin.y, c.y), shouldMaintainAspectRatio: Ko(Q), shouldResizeFromCenter: Ld(Q), zoom: this.state.zoom.value, informMutation: s });
        return;
      }
      let D = this.state.newElement;
      if (!D) return;
      let [h, F] = f0(c.x, c.y, Q[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), m = bC(D) && this.imageCache.get(D.fileId)?.image, p = m && !(m instanceof Promise) ? m.width / m.height : null;
      this.maybeCacheReferenceSnapPoints(Q, [D]);
      let { snapOffset: k, snapLines: b } = $4A(D, this, Q, { x: E.originInGrid.x + (this.state.originSnapOffset?.x ?? 0), y: E.originInGrid.y + (this.state.originSnapOffset?.y ?? 0) }, { x: h - E.originInGrid.x, y: F - E.originInGrid.y }, this.scene.getNonDeletedElementsMap());
      h += k.x, F += k.y, this.setState({ snapLines: b }), _5({ newElement: D, elementType: this.state.activeTool.type, originX: E.originInGrid.x, originY: E.originInGrid.y, x: h, y: F, width: le(E.originInGrid.x, h), height: le(E.originInGrid.y, F), shouldMaintainAspectRatio: bu(D) ? !Ko(Q) : Ko(Q), shouldResizeFromCenter: Ld(Q), zoom: this.state.zoom.value, widthAspectRatio: p, originOffset: this.state.originSnapOffset, informMutation: s }), this.setState({ newElement: D }), (this.state.activeTool.type === H0.frame || this.state.activeTool.type === H0.magicframe) && this.setState({ elementsToHighlight: Js(this.scene.getNonDeletedElements(), D, this.state, this.scene.getNonDeletedElementsMap()) });
    }), J(this, "maybeHandleCrop", (E, Q) => {
      if (!this.state.croppingElementId) return !1;
      let s = E.resize.handleType, l = E.lastCoords, [c, D] = f0(l.x - E.resize.offset.x, l.y - E.resize.offset.y, Q[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), h = this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);
      if (s && h && bu(h)) {
        let F = E.originalElements.get(h.id), m = bC(h) && this.imageCache.get(h.fileId)?.image;
        if (F && bu(F) && m && !(m instanceof Promise)) {
          let [p, k] = f0(l.x, l.y, Q[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), b = { x: p - E.originInGrid.x, y: k - E.originInGrid.y };
          this.maybeCacheReferenceSnapPoints(Q, [h]);
          let { snapOffset: f, snapLines: L } = Q5([h], [F], this, Q, b, s);
          nA(h, vlA(h, s, m.naturalWidth, m.naturalHeight, c + f.x, D + f.y, Q.shiftKey ? F.width / F.height : void 0)), Ve(h, this.scene.getNonDeletedElementsMap(), { newSize: { width: h.width, height: h.height } }), this.setState({ isCropping: s && s !== "rotation", snapLines: L });
        }
        return !0;
      }
      return !1;
    }), J(this, "maybeHandleResize", (E, Q) => {
      let s = this.scene.getSelectedElements(this.state), l = s.filter((p) => OA(p)), c = E.resize.handleType;
      if (l.length > 0 && c === "rotation" || s.length === 1 && xA(s[0]) || this.state.croppingElementId) return !1;
      this.setState({ isResizing: c && c !== "rotation", isRotating: c === "rotation", activeEmbeddable: null });
      let D = E.lastCoords, [h, F] = f0(D.x - E.resize.offset.x, D.y - E.resize.offset.y, Q[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), m = /* @__PURE__ */ new Map();
      if (l.forEach((p) => {
        Bg(this.scene.getNonDeletedElements(), p.id).forEach((k) => {
          m.set(p.id + k.id, { x: k.x - p.x, y: k.y - p.y });
        });
      }), !this.state.selectedElementsAreBeingDragged) {
        let [p, k] = f0(D.x, D.y, Q[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), b = { x: p - E.originInGrid.x, y: k - E.originInGrid.y }, f = [...E.originalElements.values()];
        this.maybeCacheReferenceSnapPoints(Q, s);
        let { snapOffset: L, snapLines: N } = Q5(s, iu(f, this.state), this, Q, b, c);
        h += L.x, F += L.y, this.setState({ snapLines: N });
      }
      if (XcA(E.originalElements, c, s, this.scene.getElementsMapIncludingDeleted(), this.scene, dQ(Q), Ld(Q), s.some((p) => bu(p)) ? !Ko(Q) : Ko(Q), h, F, E.resize.center.x, E.resize.center.y)) {
        let p = Sd(s, this.scene.getNonDeletedElementsMap(), this.state.zoom), k = /* @__PURE__ */ new Set();
        return l.forEach((b) => {
          Js(this.scene.getNonDeletedElements(), b, this.state, this.scene.getNonDeletedElementsMap()).forEach((f) => k.add(f));
        }), this.setState({ elementsToHighlight: [...k], suggestedBindings: p }), !0;
      }
      return !1;
    }), J(this, "getContextMenuItems", (E) => {
      let Q = [];
      return Q.push(Qm, om), E === "canvas" ? this.state.viewModeEnabled ? [...Q, rm, S1, Vm, N1] : [am, Y0, Qm, om, nm, Y0, $9A, hhA, Y0, rm, ihA, S1, Vm, N1] : (Q.push(nm), this.state.viewModeEnabled ? [Os, ...Q] : [Y0, Im, Os, am, Y0, W5A, j5A, T5A, Y0, YwA, Y0, ...Q, Y0, T6A, z6A, Y0, O6A, LpA, EhA, ahA, QhA, V6A, Y0, AhA, Y0, O9A, V9A, X9A, _9A, Y0, BhA, ghA, Y0, MwA, Y0, ef, wf, Y0, C6A, DhA, Y0, kG]);
    }), J(this, "handleWheel", Q0((E) => {
      if (!(E.target instanceof HTMLCanvasElement || E.target instanceof HTMLTextAreaElement || E.target instanceof HTMLIFrameElement)) {
        E[Z.CTRL_OR_CMD] && E.preventDefault();
        return;
      }
      if (E.preventDefault(), Po) return;
      let { deltaX: Q, deltaY: s } = E;
      if (E.metaKey || E.ctrlKey) {
        let l = Math.sign(s), c = t4 * 100, D = Math.abs(s), h = s;
        D > c && (h = c * l);
        let F = this.state.zoom.value - h / 100;
        F += Math.log10(Math.max(1, this.state.zoom.value)) * -l * Math.min(1, D / 20), this.translateCanvas((m) => ({ ...lE({ viewportX: this.lastViewportPosition.x, viewportY: this.lastViewportPosition.y, nextZoom: vg(F) }, m), shouldCacheIgnoreZoom: !0 })), this.resetShouldCacheIgnoreZoomDebounced();
        return;
      }
      if (E.shiftKey) {
        this.translateCanvas(({ zoom: l, scrollX: c }) => ({ scrollX: c - (s || Q) / l.value }));
        return;
      }
      this.translateCanvas(({ zoom: l, scrollX: c, scrollY: D }) => ({ scrollX: c - Q / l.value, scrollY: D - s / l.value }));
    })), J(this, "savePointer", (E, Q, s) => {
      if (!E || !Q) return;
      let { x: l, y: c } = Tu({ clientX: E, clientY: Q }, this.state), D = { x: l, y: c, tool: this.state.activeTool.type === "laser" ? "laser" : "pointer" };
      this.props.onPointerUpdate?.({ pointer: D, button: s, pointersMap: ku.pointers });
    }), J(this, "resetShouldCacheIgnoreZoomDebounced", tI(() => {
      this.unmounted || this.setState({ shouldCacheIgnoreZoom: !1 });
    }, 300)), J(this, "updateDOMRect", (E) => {
      if (this.excalidrawContainerRef?.current) {
        let Q = this.excalidrawContainerRef.current, { width: s, height: l, left: c, top: D } = Q.getBoundingClientRect(), { width: h, height: F, offsetTop: m, offsetLeft: p } = this.state;
        if (s === h && l === F && c === p && D === m) {
          E && E();
          return;
        }
        this.setState({ width: s, height: l, offsetLeft: c, offsetTop: D }, () => {
          E && E();
        });
      }
    }), J(this, "refresh", () => {
      this.setState({ ...this.getCanvasOffsets() });
    });
    let e = $B(), { excalidrawAPI: C, viewModeEnabled: B = !1, zenModeEnabled: g = !1, gridModeEnabled: t = !1, objectsSnapModeEnabled: i = !1, theme: I = e.theme, name: o = `${S("labels.untitled")}-${FF()}` } = u;
    if (this.state = { ...e, theme: I, isLoading: !0, ...this.getCanvasOffsets(), viewModeEnabled: B, zenModeEnabled: g, objectsSnapModeEnabled: i, gridModeEnabled: t ?? e.gridModeEnabled, name: o, width: window.innerWidth, height: window.innerHeight }, this.id = Cl(), this.library = new GhA(this), this.actionManager = new JwA(this.syncActionResult, () => this.state, () => this.scene.getElementsIncludingDeleted(), this), this.scene = new Og(), this.canvas = document.createElement("canvas"), this.rc = ni.canvas(this.canvas), this.renderer = new C7(this.scene), this.visibleElements = [], this.store = new k3A(), this.history = new ym(), C) {
      let E = { updateScene: this.updateScene, updateLibrary: this.library.updateLibrary, addFiles: this.addFiles, resetScene: this.resetScene, getSceneElementsIncludingDeleted: this.getSceneElementsIncludingDeleted, history: { clear: this.resetHistory }, scrollToContent: this.scrollToContent, getSceneElements: this.getSceneElements, getAppState: () => this.state, getFiles: () => this.files, getName: this.getName, registerAction: (Q) => {
        this.actionManager.registerAction(Q);
      }, refresh: this.refresh, setToast: this.setToast, id: this.id, setActiveTool: this.setActiveTool, setCursor: this.setCursor, resetCursor: this.resetCursor, updateFrameRendering: this.updateFrameRendering, toggleSidebar: this.toggleSidebar, onChange: (Q) => this.onChangeEmitter.on(Q), onPointerDown: (Q) => this.onPointerDownEmitter.on(Q), onPointerUp: (Q) => this.onPointerUpEmitter.on(Q), onScrollChange: (Q) => this.onScrollChangeEmitter.on(Q), onUserFollow: (Q) => this.onUserFollowEmitter.on(Q) };
      typeof C == "function" ? C(E) : console.error("excalidrawAPI should be a function!");
    }
    this.excalidrawContainerValue = { container: this.excalidrawContainerRef.current, id: this.id }, this.fonts = new Kg(this.scene), this.history = new ym(), this.actionManager.registerAll(C1), this.actionManager.registerAction(HwA(this.history, this.store)), this.actionManager.registerAction(KwA(this.history, this.store));
  }
  onWindowMessage(u) {
    if (u.origin !== "https://player.vimeo.com" && u.origin !== "https://www.youtube.com") return;
    let e = null;
    try {
      e = JSON.parse(u.data);
    } catch {
    }
    if (e) switch (u.origin) {
      case "https://player.vimeo.com":
        if (e.method === "paused") {
          let C = null, B = document.body.querySelectorAll("iframe.excalidraw__embeddable");
          if (!B) break;
          for (let g of B) g.contentWindow === u.source && (C = g.contentWindow);
          C?.postMessage(JSON.stringify({ method: e.value ? "play" : "pause", value: !0 }), "*");
        }
        break;
      case "https://www.youtube.com":
        if (e.event === "infoDelivery" && e.info && e.id && typeof e.info.playerState == "number") {
          let C = e.id, B = e.info.playerState;
          Object.values(us).includes(B) && FD.set(C, B);
        }
        break;
    }
  }
  cacheEmbeddableRef(u, e) {
    e && this.iFrameRefs.set(u.id, e);
  }
  getHTMLIFrameElement(u) {
    return this.iFrameRefs.get(u.id);
  }
  handleEmbeddableCenterClick(u) {
    if (this.state.activeEmbeddable?.element === u && this.state.activeEmbeddable?.state === "active" || (setTimeout(() => {
      this.setState({ activeEmbeddable: { element: u, state: "active" }, selectedElementIds: { [u.id]: !0 }, newElement: null, selectionElement: null });
    }, 100), jt(u))) return;
    let e = this.getHTMLIFrameElement(u);
    if (e?.contentWindow) {
      if (e.src.includes("youtube")) {
        let C = FD.get(u.id);
        switch (C || (FD.set(u.id, us.UNSTARTED), e.contentWindow.postMessage(JSON.stringify({ event: "listening", id: u.id }), "*")), C) {
          case us.PLAYING:
          case us.BUFFERING:
            e.contentWindow?.postMessage(JSON.stringify({ event: "command", func: "pauseVideo", args: "" }), "*");
            break;
          default:
            e.contentWindow?.postMessage(JSON.stringify({ event: "command", func: "playVideo", args: "" }), "*");
        }
      }
      e.src.includes("player.vimeo.com") && e.contentWindow.postMessage(JSON.stringify({ method: "paused" }), "*");
    }
  }
  isIframeLikeElementCenter(u, e, C, B) {
    return u && !e.altKey && !e.shiftKey && !e.metaKey && !e.ctrlKey && (this.state.activeEmbeddable?.element !== u || this.state.activeEmbeddable?.state === "hover" || !this.state.activeEmbeddable) && C >= u.x + u.width / 3 && C <= u.x + 2 * u.width / 3 && B >= u.y + u.height / 3 && B <= u.y + 2 * u.height / 3;
  }
  renderEmbeddables() {
    let u = this.state.zoom.value, e = this.state.width, C = this.state.height, B = this.scene.getNonDeletedElements().filter((g) => je(g) && this.embedsValidationStatus.get(g.id) === !0 || jt(g));
    return r.jsx(r.Fragment, { children: B.map((g) => {
      let { x: t, y: i } = EB({ sceneX: g.x, sceneY: g.y }, this.state), I = Rl(g, e, C, this.state, this.scene.getNonDeletedElementsMap()), o = this.initializedEmbeds.has(g.id);
      if (I && !o && this.initializedEmbeds.add(g.id), !(I || o)) return null;
      let E;
      if (jt(g)) {
        E = null;
        let l = (g.customData?.generationData ?? this.magicGenerations.get(g.id)) || { status: "error", message: "No generation data", code: "ERR_NO_GENERATION_DATA" };
        if (l.status === "done") {
          let c = l.html;
          E = { intrinsicSize: { w: g.width, h: g.height }, type: "document", srcdoc: () => c };
        } else if (l.status === "pending") E = { intrinsicSize: { w: g.width, h: g.height }, type: "document", srcdoc: () => DQ(`
                    <style>
                      html, body {
                        width: 100%;
                        height: 100%;
                        color: ${this.state.theme === su.DARK ? "white" : "black"};
                      }
                      body {
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        flex-direction: column;
                        gap: 1rem;
                      }

                      .Spinner {
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        margin-left: auto;
                        margin-right: auto;
                      }

                      .Spinner svg {
                        animation: rotate 1.6s linear infinite;
                        transform-origin: center center;
                        width: 40px;
                        height: 40px;
                      }

                      .Spinner circle {
                        stroke: currentColor;
                        animation: dash 1.6s linear 0s infinite;
                        stroke-linecap: round;
                      }

                      @keyframes rotate {
                        100% {
                          transform: rotate(360deg);
                        }
                      }

                      @keyframes dash {
                        0% {
                          stroke-dasharray: 1, 300;
                          stroke-dashoffset: 0;
                        }
                        50% {
                          stroke-dasharray: 150, 300;
                          stroke-dashoffset: -200;
                        }
                        100% {
                          stroke-dasharray: 1, 300;
                          stroke-dashoffset: -280;
                        }
                      }
                    </style>
                    <div class="Spinner">
                      <svg
                        viewBox="0 0 100 100"
                      >
                        <circle
                          cx="50"
                          cy="50"
                          r="46"
                          stroke-width="8"
                          fill="none"
                          stroke-miter-limit="10"
                        />
                      </svg>
                    </div>
                    <div>Generating...</div>
                  `) };
        else {
          let c;
          l.code === "ERR_GENERATION_INTERRUPTED" ? c = "Generation was interrupted..." : c = l.message || "Generation failed", E = { intrinsicSize: { w: g.width, h: g.height }, type: "document", srcdoc: () => DQ(`
                    <style>
                    html, body {
                      height: 100%;
                    }
                      body {
                        display: flex;
                        flex-direction: column;
                        align-items: center;
                        justify-content: center;
                        color: ${ou.red[3]};
                      }
                      h1, h3 {
                        margin-top: 0;
                        margin-bottom: 0.5rem;
                      }
                    </style>
                    <h1>Error!</h1>
                    <h3>${c}</h3>
                  `) };
        }
      } else E = za(U2(g.link || ""));
      let Q = this.state.activeEmbeddable?.element === g && this.state.activeEmbeddable?.state === "active", s = this.state.activeEmbeddable?.element === g && this.state.activeEmbeddable?.state === "hover";
      return r.jsx("div", { className: NA("excalidraw__embeddable-container", { "is-hovered": s }), style: { transform: I ? `translate(${t - this.state.offsetLeft}px, ${i - this.state.offsetTop}px) scale(${u})` : "none", display: I ? "block" : "none", opacity: yk(g, Xe(g, this.scene.getNonDeletedElementsMap()), this.elementsPendingErasure, null, this.state.openDialog?.name === "elementLinkSelector" ? D8 : 1), "--embeddable-radius": `${sB(Math.min(g.width, g.height), g)}px` }, children: r.jsxs("div", { className: "excalidraw__embeddable-container__inner", style: { width: I ? `${g.width}px` : 0, height: I ? `${g.height}px` : 0, transform: I ? `rotate(${g.angle}rad)` : "none", pointerEvents: Q ? Ua.enabled : Ua.disabled }, children: [s && r.jsx("div", { className: "excalidraw__embeddable-hint", children: S("buttons.embeddableInteractionButton") }), r.jsx("div", { className: "excalidraw__embeddable__outer", style: { padding: `${g.strokeWidth}px` }, children: (je(g) ? this.props.renderEmbeddable?.(g, this.state) : null) ?? r.jsx("iframe", { ref: (l) => this.cacheEmbeddableRef(g, l), className: "excalidraw__embeddable", srcDoc: E?.type === "document" ? E.srcdoc(this.state.theme) : void 0, src: E?.type !== "document" ? E?.link ?? "" : void 0, scrolling: "no", referrerPolicy: "no-referrer-when-downgrade", title: "Excalidraw Embedded Content", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: !0, sandbox: `${E?.sandbox?.allowSameOrigin ? "allow-same-origin" : ""} allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-downloads` }) })] }) }, g.id);
    }) });
  }
  toggleOverscrollBehavior(u) {
    document.documentElement.style.overscrollBehaviorX = u.type === "pointerenter" ? "none" : "auto";
  }
  render() {
    let u = this.scene.getSelectedElements(this.state), { renderTopRightUI: e, renderCustomStats: C } = this.props, B = this.scene.getSceneNonce(), { elementsMap: g, visibleElements: t } = this.renderer.getRenderableElements({ sceneNonce: B, zoom: this.state.zoom, offsetLeft: this.state.offsetLeft, offsetTop: this.state.offsetTop, scrollX: this.state.scrollX, scrollY: this.state.scrollY, height: this.state.height, width: this.state.width, editingTextElement: this.state.editingTextElement, newElementId: this.state.newElement?.id, pendingImageElementId: this.state.pendingImageElementId });
    this.visibleElements = t;
    let i = this.scene.getNonDeletedElementsMap(), I = "setPointerCapture" in HTMLElement.prototype ? !1 : this.state.selectionElement || this.state.newElement || this.state.selectedElementsAreBeingDragged || this.state.resizingElement || this.state.activeTool.type === "laser" && this.state.cursorButton === "down", o = u[0];
    return r.jsx("div", { className: NA("excalidraw excalidraw-container", { "excalidraw--view-mode": this.state.viewModeEnabled || this.state.openDialog?.name === "elementLinkSelector", "excalidraw--mobile": this.device.editor.isMobile }), style: { "--ui-pointerEvents": I ? Ua.disabled : Ua.enabled, "--right-sidebar-width": "302px" }, ref: this.excalidrawContainerRef, onDrop: this.handleAppOnDrop, tabIndex: 0, onKeyDown: this.props.handleKeyboardGlobally ? void 0 : this.onKeyDown, onPointerEnter: this.toggleOverscrollBehavior, onPointerLeave: this.toggleOverscrollBehavior, children: r.jsx(pL.Provider, { value: this, children: r.jsx(mL.Provider, { value: this.props, children: r.jsx(z9.Provider, { value: this.excalidrawContainerValue, children: r.jsx(T9.Provider, { value: this.device, children: r.jsx(V9.Provider, { value: this.setAppState, children: r.jsx(O9.Provider, { value: this.state, children: r.jsxs(P9.Provider, { value: this.scene.getNonDeletedElements(), children: [r.jsxs(X9.Provider, { value: this.actionManager, children: [r.jsx(J5A, { canvas: this.canvas, appState: this.state, files: this.files, setAppState: this.setAppState, actionManager: this.actionManager, elements: this.scene.getNonDeletedElements(), onLockToggle: this.toggleLock, onPenModeToggle: this.togglePenMode, onHandToolToggle: this.onHandToolToggle, langCode: en().code, renderTopRightUI: e, renderCustomStats: C, showExitZenModeBtn: typeof this.props?.zenModeEnabled > "u" && this.state.zenModeEnabled, UIOptions: this.props.UIOptions, onExportImage: this.onExportImage, renderWelcomeScreen: !this.state.isLoading && this.state.showWelcomeScreen && this.state.activeTool.type === "selection" && !this.state.zenModeEnabled && !this.scene.getElementsIncludingDeleted().length, app: this, isCollaborating: this.props.isCollaborating, generateLinkForSelection: this.props.generateLinkForSelection, children: this.props.children }), r.jsx("div", { className: "excalidraw-textEditorContainer" }), r.jsx("div", { className: "excalidraw-contextMenuContainer" }), r.jsx("div", { className: "excalidraw-eye-dropper-container" }), r.jsx(wpA, { trails: [this.laserTrails, this.eraserTrail] }), u.length === 1 && this.state.openDialog?.name !== "elementLinkSelector" && this.state.showHyperlinkPopup && r.jsx(shA, { element: o, elementsMap: i, setAppState: this.setAppState, onLinkOpen: this.props.onLinkOpen, setToast: this.setToast, updateEmbedValidationStatus: this.updateEmbedValidationStatus }, o.id), this.props.aiEnabled !== !1 && u.length === 1 && Ss(o) && r.jsx(B7, { element: o, elementsMap: g, children: r.jsx(dD, { title: S("labels.convertToCode"), icon: uk, checked: !1, onChange: () => this.onMagicFrameGenerate(o, "button") }) }), u.length === 1 && jt(o) && o.customData?.generationData?.status === "done" && r.jsxs(B7, { element: o, elementsMap: g, children: [r.jsx(dD, { title: S("labels.copySource"), icon: l2, checked: !1, onChange: () => this.onIframeSrcCopy(o) }), r.jsx(dD, { title: "Enter fullscreen", icon: QoA, checked: !1, onChange: () => {
      let E = this.getHTMLIFrameElement(o);
      if (E) try {
        E.requestFullscreen(), this.setState({ activeEmbeddable: { element: o, state: "active" }, selectedElementIds: { [o.id]: !0 }, newElement: null, selectionElement: null });
      } catch (Q) {
        console.warn(Q), this.setState({ errorMessage: "Couldn't enter fullscreen" });
      }
    } })] }), this.state.toast !== null && r.jsx(q5A, { message: this.state.toast.message, onClose: () => this.setToast(null), duration: this.state.toast.duration, closable: this.state.toast.closable }), this.state.contextMenu && r.jsx(qwA, { items: this.state.contextMenu.items, top: this.state.contextMenu.top, left: this.state.contextMenu.left, actionManager: this.actionManager, onClose: (E) => {
      this.setState({ contextMenu: null }, () => {
        this.focusContainer(), E?.();
      });
    } }), r.jsx(hpA, { canvas: this.canvas, rc: this.rc, elementsMap: g, allElementsMap: i, visibleElements: t, sceneNonce: B, selectionNonce: this.state.selectionElement?.versionNonce, scale: window.devicePixelRatio, appState: this.state, renderConfig: { imageCache: this.imageCache, isExporting: !1, renderGrid: VQ(this), canvasBackgroundColor: this.state.viewBackgroundColor, embedsValidationStatus: this.embedsValidationStatus, elementsPendingErasure: this.elementsPendingErasure, pendingFlowchartNodes: this.flowChartCreator.pendingNodes } }), this.state.newElement && r.jsx(MpA, { appState: this.state, scale: window.devicePixelRatio, rc: this.rc, elementsMap: g, allElementsMap: i, renderConfig: { imageCache: this.imageCache, isExporting: !1, renderGrid: !1, canvasBackgroundColor: this.state.viewBackgroundColor, embedsValidationStatus: this.embedsValidationStatus, elementsPendingErasure: this.elementsPendingErasure, pendingFlowchartNodes: null } }), r.jsx(cpA, { containerRef: this.excalidrawContainerRef, canvas: this.interactiveCanvas, elementsMap: g, visibleElements: t, allElementsMap: i, selectedElements: u, sceneNonce: B, selectionNonce: this.state.selectionElement?.versionNonce, scale: window.devicePixelRatio, appState: this.state, device: this.device, renderInteractiveSceneCallback: this.renderInteractiveSceneCallback, handleCanvasRef: this.handleInteractiveCanvasRef, onContextMenu: this.handleCanvasContextMenu, onPointerMove: this.handleCanvasPointerMove, onPointerUp: this.handleCanvasPointerUp, onPointerCancel: this.removePointer, onTouchMove: this.handleTouchMove, onPointerDown: this.handleCanvasPointerDown, onDoubleClick: this.handleCanvasDoubleClick }), this.state.userToFollow && r.jsx(ypA, { width: this.state.width, height: this.state.height, userToFollow: this.state.userToFollow, onDisconnect: this.maybeUnfollowRemoteUser }), this.renderFrameNames()] }), this.renderEmbeddables()] }) }) }) }) }) }) }) });
  }
  setPlugins(u) {
    Object.assign(this.plugins, u);
  }
  async onMagicFrameGenerate(u, e) {
    let C = this.plugins.diagramToCode?.generate;
    if (!C) {
      this.setState({ errorMessage: "No diagram to code plugin found" });
      return;
    }
    let B = $2(this.scene.getNonDeletedElements(), u).filter((t) => !Ss(t));
    if (!B.length) {
      e === "button" ? (this.setState({ errorMessage: "Cannot generate from an empty frame" }), zu("ai", "generate (no-children)", "d2c")) : this.setActiveTool({ type: "magicframe" });
      return;
    }
    let g = this.insertIframeElement({ sceneX: u.x + u.width + 30, sceneY: u.y, width: u.width, height: u.height });
    if (g) {
      this.updateMagicGeneration({ frameElement: g, data: { status: "pending" } }), this.setState({ selectedElementIds: { [g.id]: !0 } }), zu("ai", "generate (start)", "d2c");
      try {
        let { html: t } = await C({ frame: u, children: B });
        if (zu("ai", "generate (success)", "d2c"), !t.trim()) {
          this.updateMagicGeneration({ frameElement: g, data: { status: "error", code: "ERR_OAI", message: "Nothing genereated :(" } });
          return;
        }
        let i = t.includes("<!DOCTYPE html>") && t.includes("</html>") ? t.slice(t.indexOf("<!DOCTYPE html>"), t.indexOf("</html>") + 7) : t;
        this.updateMagicGeneration({ frameElement: g, data: { status: "done", html: i } });
      } catch (t) {
        zu("ai", "generate (failed)", "d2c"), this.updateMagicGeneration({ frameElement: g, data: { status: "error", code: "ERR_OAI", message: t.message || "Unknown error during generation" } });
      }
    }
  }
  onIframeSrcCopy(u) {
    u.customData?.generationData?.status === "done" && (hn(u.customData.generationData.html), this.setToast({ message: "copied to clipboard", closable: !1, duration: 1500 }));
  }
  clearImageShapeCache(u) {
    let e = u ?? this.files;
    this.scene.getNonDeletedElements().forEach((C) => {
      bC(C) && e[C.fileId] && (this.imageCache.delete(C.fileId), a0.delete(C));
    });
  }
  async componentDidMount() {
    this.unmounted = !1, this.excalidrawContainerValue.container = this.excalidrawContainerRef.current, (tu.MODE === Oe.TEST || tu.DEV) && (this.setState.bind(this), Object.defineProperties(window.h, { state: { configurable: !0, get: () => this.state }, setState: { configurable: !0, value: (...u) => this.setState(...u) }, app: { configurable: !0, value: this }, history: { configurable: !0, value: this.history }, store: { configurable: !0, value: this.store }, fonts: { configurable: !0, value: this.fonts } })), this.store.onStoreIncrementEmitter.on((u) => {
      this.history.record(u.elementsChange, u.appStateChange);
    }), this.scene.onUpdate(this.triggerRender), this.addEventListeners(), this.props.autoFocus && this.excalidrawContainerRef.current && this.focusContainer(), qg() || (this.refreshViewportBreakpoints(), this.refreshEditorBreakpoints()), MD && this.excalidrawContainerRef.current && (this.resizeObserver = new ResizeObserver(() => {
      this.refreshEditorBreakpoints(), this.updateDOMRect();
    }), this.resizeObserver?.observe(this.excalidrawContainerRef.current)), new URLSearchParams(window.location.search.slice(1)).has("web-share-target") ? this.restoreFileFromShare() : this.updateDOMRect(this.initializeScene), pEA() && !xaA() && this.setState({ errorMessage: r.jsx(P5A, {}) });
  }
  componentWillUnmount() {
    window.launchQueue?.setConsumer(() => {
    }), this.renderer.destroy(), this.scene.destroy(), this.scene = new Og(), this.fonts = new Kg(this.scene), this.renderer = new C7(this.scene), this.files = {}, this.imageCache.clear(), this.resizeObserver?.disconnect(), this.unmounted = !0, this.removeEventListeners(), this.library.destroy(), this.laserTrails.stop(), this.eraserTrail.stop(), this.onChangeEmitter.clear(), this.store.onStoreIncrementEmitter.clear(), a0.destroy(), Lg.destroy(), clearTimeout(Ht), S0.clearCache(), Ue.clearCache(), Ht = 0, document.documentElement.style.overscrollBehaviorX = "";
  }
  removeEventListeners() {
    this.onRemoveEventListenersEmitter.trigger();
  }
  addEventListeners() {
    this.removeEventListeners(), this.props.handleKeyboardGlobally && this.onRemoveEventListenersEmitter.once(B0(document, "keydown", this.onKeyDown, !1)), this.onRemoveEventListenersEmitter.once(B0(this.excalidrawContainerRef.current, "wheel", this.handleWheel, { passive: !1 }), B0(window, "message", this.onWindowMessage, !1), B0(document, "pointerup", this.removePointer, { passive: !1 }), B0(document, "copy", this.onCopy, { passive: !1 }), B0(document, "keyup", this.onKeyUp, { passive: !0 }), B0(document, "pointermove", this.updateCurrentCursorPosition, { passive: !1 }), B0(document.fonts, "loadingdone", (u) => {
      let e = u.fontfaces;
      this.fonts.onLoaded(e);
    }, { passive: !1 }), B0(document, "gesturestart", this.onGestureStart, !1), B0(document, "gesturechange", this.onGestureChange, !1), B0(document, "gestureend", this.onGestureEnd, !1), B0(window, "focus", () => {
      this.maybeCleanupAfterMissingPointerUp(null), this.triggerRender(!0);
    }, { passive: !1 })), !this.state.viewModeEnabled && (this.onRemoveEventListenersEmitter.once(B0(document, "fullscreenchange", this.onFullscreenChange, { passive: !1 }), B0(document, "paste", this.pasteFromClipboard, { passive: !1 }), B0(document, "cut", this.onCut, { passive: !1 }), B0(window, "resize", this.onResize, !1), B0(window, "unload", this.onUnload, !1), B0(window, "blur", this.onBlur, !1), B0(this.excalidrawContainerRef.current, "wheel", this.handleWheel, { passive: !1 }), B0(this.excalidrawContainerRef.current, "dragover", this.disableEvent, !1), B0(this.excalidrawContainerRef.current, "drop", this.disableEvent, !1)), this.props.detectScroll && this.onRemoveEventListenersEmitter.once(B0(caA(this.excalidrawContainerRef.current), "scroll", this.onScroll, { passive: !1 })));
  }
  componentDidUpdate(u, e) {
    this.updateEmbeddables();
    let C = this.scene.getElementsIncludingDeleted(), B = this.scene.getElementsMapIncludingDeleted(), g = this.scene.getNonDeletedElementsMap();
    !this.state.showWelcomeScreen && !C.length && this.setState({ showWelcomeScreen: !0 }), u.UIOptions.dockedSidebarBreakpoint !== this.props.UIOptions.dockedSidebarBreakpoint && this.refreshEditorBreakpoints(), e.userToFollow && !this.state.collaborators.has(e.userToFollow.socketId) && this.maybeUnfollowRemoteUser(), (e.zoom.value !== this.state.zoom.value || e.scrollX !== this.state.scrollX || e.scrollY !== this.state.scrollY) && (this.props?.onScrollChange?.(this.state.scrollX, this.state.scrollY, this.state.zoom), this.onScrollChangeEmitter.trigger(this.state.scrollX, this.state.scrollY, this.state.zoom)), e.userToFollow !== this.state.userToFollow && (e.userToFollow && this.onUserFollowEmitter.trigger({ userToFollow: e.userToFollow, action: "UNFOLLOW" }), this.state.userToFollow && this.onUserFollowEmitter.trigger({ userToFollow: this.state.userToFollow, action: "FOLLOW" })), Object.keys(this.state.selectedElementIds).length && KB(this.state) && this.setState({ activeTool: b0(this.state, { type: "selection" }) }), this.state.activeTool.type === "eraser" && e.theme !== this.state.theme && Cy(this.interactiveCanvas, this.state.theme), e.activeTool.type === "selection" && this.state.activeTool.type !== "selection" && this.state.showHyperlinkPopup && this.setState({ showHyperlinkPopup: !1 }), u.langCode !== this.props.langCode && this.updateLanguage(), KB(e) && !KB(this.state) && this.eraserTrail.endPath(), u.viewModeEnabled !== this.props.viewModeEnabled && this.setState({ viewModeEnabled: !!this.props.viewModeEnabled }), e.viewModeEnabled !== this.state.viewModeEnabled && (this.addEventListeners(), this.deselectElements()), (e.openDialog?.name === "elementLinkSelector" || this.state.openDialog?.name === "elementLinkSelector") && e.openDialog?.name !== this.state.openDialog?.name && (this.deselectElements(), this.setState({ hoveredElementIds: {} })), u.zenModeEnabled !== this.props.zenModeEnabled && this.setState({ zenModeEnabled: !!this.props.zenModeEnabled }), u.theme !== this.props.theme && this.props.theme && this.setState({ theme: this.props.theme }), this.excalidrawContainerRef.current?.classList.toggle("theme--dark", this.state.theme === su.DARK), this.state.editingLinearElement && !this.state.selectedElementIds[this.state.editingLinearElement.elementId] && setTimeout(() => {
      this.state.editingLinearElement && this.actionManager.executeAction(eB);
    }), this.state.editingTextElement?.isDeleted && this.setState({ editingTextElement: null }), this.state.selectedLinearElement && !this.state.selectedElementIds[this.state.selectedLinearElement.elementId] && this.setState({ selectedLinearElement: null });
    let { multiElement: t } = e;
    e.activeTool !== this.state.activeTool && t != null && nE(this.state) && TB(t, !1) && u1(t, this.state, aB(LA.getPointAtIndexGlobalCoordinates(t, -1, g)), this.scene.getNonDeletedElementsMap(), this.scene.getNonDeletedElements()), this.store.commit(B, this.state), this.state.isLoading || (this.props.onChange?.(C, this.state, this.files), this.onChangeEmitter.trigger(C, this.state, this.files));
  }
  static resetTapTwice() {
    zo = !1;
  }
  async addElementsFromMixedContentPaste(u, { isPlainPaste: e, sceneX: C, sceneY: B }) {
    if (!e && u.some((g) => g.type === "imageUrl") && this.isToolSupported("image")) {
      let g = u.filter((Q) => Q.type === "imageUrl").map((Q) => Q.value), t = await Promise.all(g.map(async (Q) => {
        try {
          return { file: await DdA(Q) };
        } catch (s) {
          let l = s.message;
          return s.cause === "FETCH_ERROR" ? l = S("errors.failedToFetchImage") : s.cause === "UNSUPPORTED" && (l = S("errors.unsupportedFileType")), { errorMessage: l };
        }
      })), i = B, I = !1, o = {};
      for (let Q of t) if (Q.file) {
        let s = this.createImageElement({ sceneX: C, sceneY: i }), l = await this.insertImageElement(s, Q.file);
        l && (I || (I = !0, i -= l.height / 2), nA(l, { y: i }, !1), i = s.y + s.height + 25, o[s.id] = !0);
      }
      this.setState({ selectedElementIds: yu(o, this.state) });
      let E = t.find((Q) => !!Q.errorMessage);
      E && E.errorMessage && this.setState({ errorMessage: E.errorMessage });
    } else {
      let g = u.filter((t) => t.type === "text");
      g.length && this.addTextFromPaste(g.map((t) => t.value).join(`

`), e);
    }
  }
  addTextFromPaste(u, e = !1) {
    let { x: C, y: B } = Tu({ clientX: this.lastViewportPosition.x, clientY: this.lastViewportPosition.y }, this.state), g = { x: C, y: B, strokeColor: this.state.currentItemStrokeColor, backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roundness: null, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, text: u, fontSize: this.state.currentItemFontSize, fontFamily: this.state.currentItemFontFamily, textAlign: Qn, verticalAlign: El, locked: !1 }, t = vu({ fontSize: g.fontSize, fontFamily: g.fontFamily }), i = NE(g.fontFamily), [I, , o] = I4A(this.state), E = Math.max(Math.min((o - I) * 0.5, 800), 200), Q = 10, s = B, l = e ? [u] : u.split(`
`), c = l.reduce((D, h, F) => {
      let m = iI(h).trim();
      if (m.length) {
        let p = this.getTopLayerFrameAtSceneCoords({ x: C, y: s }), k = we(m, t, i), b = k.width > E, f = b ? JE(m, t, E) : m;
        k = b ? we(f, t, i) : k;
        let L = C - k.width / 2, N = s - k.height / 2, M = nC({ ...g, x: L, y: N, text: f, originalText: m, lineHeight: i, autoResize: !b, frameId: p ? p.id : null });
        D.push(M), s += M.height + Q;
      } else l[F - 1]?.trim() && (s += ln(g.fontSize, i) + Q);
      return D;
    }, []);
    c.length !== 0 && (this.scene.insertElements(c), this.setState({ selectedElementIds: yu(Object.fromEntries(c.map((D) => [D.id, !0])), this.state) }), !e && c.length > 1 && t7 === !1 && !this.device.editor.isMobile && (this.setToast({ message: S("toast.pasteAsSingleElement", { shortcut: QA("CtrlOrCmd+Shift+V") }), duration: 5e3 }), t7 = !0), this.store.shouldCaptureIncrement());
  }
  handleTextWysiwyg(u, { isExistingElement: e = !1 }) {
    let C = this.scene.getElementsMapIncludingDeleted(), B = (g, t) => {
      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map((i) => i.id === u.id && UA(i) ? Bu(i, { originalText: g, isDeleted: t ?? i.isDeleted, ...gy(i, _0(i, C), C, g) }) : i)]);
    };
    fpA({ id: u.id, canvas: this.canvas, getViewportCoords: (g, t) => {
      let { x: i, y: I } = EB({ sceneX: g, sceneY: t }, this.state);
      return [i - this.state.offsetLeft, I - this.state.offsetTop];
    }, onChange: Q0((g) => {
      B(g, !1), n1(u) && Ve(u, this.scene.getNonDeletedElementsMap());
    }), onSubmit: Q0(({ viaKeyboard: g, nextOriginalText: t }) => {
      let i = !t.trim();
      if (B(t, i), !i && g) {
        let I = u.containerId ? u.containerId : u.id;
        O0.flushSync(() => {
          this.setState((o) => ({ selectedElementIds: yu({ ...o.selectedElementIds, [I]: !0 }, o) }));
        });
      }
      i && qk(this.scene.getNonDeletedElements(), [u]), (!i || e) && this.store.shouldCaptureIncrement(), O0.flushSync(() => {
        this.setState({ newElement: null, editingTextElement: null });
      }), this.state.activeTool.locked && vB(this.interactiveCanvas, this.state), this.focusContainer();
    }), element: u, excalidrawContainer: this.excalidrawContainerRef.current, app: this, autoSelect: !this.device.isTouchScreen }), this.deselectElements(), B(u.originalText, !1);
  }
  deselectElements() {
    this.setState({ selectedElementIds: yu({}, this.state), selectedGroupIds: {}, editingGroupId: null, activeEmbeddable: null });
  }
  getTextElementAtPosition(u, e) {
    let C = this.getElementAtPosition(u, e, { includeBoundTextElement: !0 });
    return C && UA(C) && !C.isDeleted ? C : null;
  }
  getElementAtPosition(u, e, C) {
    let B = this.getElementsAtPosition(u, e, C?.includeBoundTextElement, C?.includeLockedElements);
    if (B.length > 1) {
      if (C?.preferSelected) {
        for (let t = B.length - 1; t > -1; t--) if (this.state.selectedElementIds[B[t].id]) return B[t];
      }
      let g = B[B.length - 1];
      return Ha({ x: u, y: e, element: g, shape: Ng(g, this.scene.getNonDeletedElementsMap()), threshold: this.getElementHitThreshold() / 2, frameNameBound: OA(g) ? this.frameNameBoundsCache.get(g) : null }) ? g : B[B.length - 2];
    }
    return B.length === 1 ? B[0] : null;
  }
  getElementsAtPosition(u, e, C = !1, B = !1) {
    let g = [], t = this.scene.getNonDeletedElementsMap();
    return (C && B ? this.scene.getNonDeletedElements() : this.scene.getNonDeletedElements().filter((i) => (B || !i.locked) && (C || !(UA(i) && i.containerId)))).filter((i) => this.hitElement(u, e, i)).filter((i) => {
      let I = Xe(i, t);
      return I && this.state.frameRendering.enabled && this.state.frameRendering.clip ? J5({ x: u, y: e }, I, t) : !0;
    }).filter((i) => jt(i) ? (g.push(i), !1) : !0).concat(g);
  }
  getElementHitThreshold() {
    return GEA / this.state.zoom.value;
  }
  hitElement(u, e, C, B = !0) {
    if (B && this.state.selectedElementIds[C.id] && Oy([C], this.state)) {
      let g = rlA(C, this.scene.getNonDeletedElementsMap(), bu(C) ? 0 : this.getElementHitThreshold());
      if (Fl(U(u, e), g)) return !0;
    }
    return ck(u, e, Dk(C, this.scene.getNonDeletedElementsMap())) ? !0 : Ha({ x: u, y: e, element: C, shape: Ng(C, this.scene.getNonDeletedElementsMap()), threshold: this.getElementHitThreshold(), frameNameBound: OA(C) ? this.frameNameBoundsCache.get(C) : null });
  }
  getTextBindableContainerAtPosition(u, e) {
    let C = this.scene.getNonDeletedElements(), B = this.scene.getSelectedElements(this.state);
    if (B.length === 1) return DE(B[0], !1) ? B[0] : null;
    let g = null;
    for (let t = C.length - 1; t >= 0; --t) {
      if (C[t].isDeleted) continue;
      let [i, I, o, E] = Au(C[t], this.scene.getNonDeletedElementsMap());
      if (Eu(C[t]) && Ha({ x: u, y: e, element: C[t], shape: Ng(C[t], this.scene.getNonDeletedElementsMap()), threshold: this.getElementHitThreshold() })) {
        g = C[t];
        break;
      } else if (i < u && u < o && I < e && e < E) {
        g = C[t];
        break;
      }
    }
    return DE(g, !1) ? g : null;
  }
  handleHoverSelectedLinearElement(u, e, C) {
    let B = this.scene.getNonDeletedElementsMap(), g = LA.getElement(u.elementId, B);
    if (g) if (this.state.selectedLinearElement) {
      let t = -1, i = null;
      Ha({ x: e, y: C, element: g, shape: Ng(g, this.scene.getNonDeletedElementsMap()) }) ? (t = LA.getPointIndexUnderCursor(g, B, this.state.zoom, e, C), i = LA.getSegmentMidpointHitCoords(u, { x: e, y: C }, this.state, this.scene.getNonDeletedElementsMap()), (xA(g) ? t === 0 || t === g.points.length - 1 : t >= 0) || i ? Yu(this.interactiveCanvas, Ru.POINTER) : this.hitElement(e, C, g) && Yu(this.interactiveCanvas, Ru.MOVE)) : this.hitElement(e, C, g) && (!xA(g) || !(g.startBinding || g.endBinding)) && Yu(this.interactiveCanvas, Ru.MOVE), this.state.selectedLinearElement.hoverPointIndex !== t && this.setState({ selectedLinearElement: { ...this.state.selectedLinearElement, hoverPointIndex: t } }), LA.arePointsEqual(this.state.selectedLinearElement.segmentMidPointHoveredCoords, i) || this.setState({ selectedLinearElement: { ...this.state.selectedLinearElement, segmentMidPointHoveredCoords: i } });
    } else Yu(this.interactiveCanvas, Ru.AUTO);
  }
  updateGestureOnPointerDown(u) {
    ku.pointers.set(u.pointerId, { x: u.clientX, y: u.clientY }), ku.pointers.size === 2 && (ku.lastCenter = bm(ku.pointers), ku.initialScale = this.state.zoom.value, ku.initialDistance = Um(Array.from(ku.pointers.values())));
  }
  initialPointerDownState(u) {
    let e = Tu(u, this.state), C = this.scene.getSelectedElements(this.state), [B, g, t, i] = Nu(C), I = C.findIndex(xA) === 0;
    return { origin: e, withCmdOrCtrl: u[Z.CTRL_OR_CMD], originInGrid: aB(f0(e.x, e.y, u[Z.CTRL_OR_CMD] || I ? null : this.getEffectiveGridSize())), scrollbars: xm(wD, u.clientX - this.state.offsetLeft, u.clientY - this.state.offsetTop), lastCoords: { ...e }, originalElements: this.scene.getNonDeletedElements().reduce((o, E) => (o.set(E.id, ZE(E)), o), /* @__PURE__ */ new Map()), resize: { handleType: !1, isResizing: !1, offset: { x: 0, y: 0 }, arrowDirection: "origin", center: { x: (t + B) / 2, y: (i + g) / 2 } }, hit: { element: null, allHitElements: [], wasAddedToSelection: !1, hasBeenDuplicated: !1, hasHitCommonBoundingBoxOfSelectedElements: this.isHittingCommonBoundingBoxOfSelectedElements(e, C) }, drag: { hasOccurred: !1, offset: null }, eventListeners: { onMove: null, onUp: null, onKeyUp: null, onKeyDown: null }, boxSelection: { hasOccurred: !1 } };
  }
  handleDraggingScrollBar(u, e) {
    if (!(e.scrollbars.isOverEither && !this.state.multiElement)) return !1;
    hD = !0, e.lastCoords.x = u.clientX, e.lastCoords.y = u.clientY;
    let C = sD((g) => {
      g.target instanceof HTMLElement && this.handlePointerMoveOverScrollbars(g, e);
    }), B = Q0(() => {
      Vo = null, hD = !1, vB(this.interactiveCanvas, this.state), this.setState({ cursorButton: "up" }), this.savePointer(u.clientX, u.clientY, "up"), window.removeEventListener("pointermove", C), window.removeEventListener("pointerup", B), C.flush();
    });
    return Vo = B, window.addEventListener("pointermove", C), window.addEventListener("pointerup", B), !0;
  }
  isASelectedElement(u) {
    return u != null && this.state.selectedElementIds[u.id];
  }
  isHittingCommonBoundingBoxOfSelectedElements(u, e) {
    if (e.length < 2) return !1;
    let C = this.getElementHitThreshold(), [B, g, t, i] = Nu(e);
    return u.x > B - C && u.x < t + C && u.y > g - C && u.y < i + C;
  }
  getCurrentItemRoundness(u) {
    return this.state.currentItemRoundness === "round" ? { type: kI(u) ? x0.ADAPTIVE_RADIUS : x0.PROPORTIONAL_RADIUS } : null;
  }
  maybeCacheReferenceSnapPoints(u, e, C = !1) {
    ii({ event: u, app: this, selectedElements: e }) && (C || !Lg.getReferenceSnapPoints()) && Lg.setReferenceSnapPoints(O4A(this.scene.getNonDeletedElements(), e, this.state, this.scene.getNonDeletedElementsMap()));
  }
  maybeCacheVisibleGaps(u, e, C = !1) {
    ii({ event: u, app: this, selectedElements: e }) && (C || !Lg.getVisibleGaps()) && Lg.setVisibleGaps(P4A(this.scene.getNonDeletedElements(), e, this.state, this.scene.getNonDeletedElementsMap()));
  }
  onKeyDownFromPointerDownHandler(u) {
    return Q0((e) => {
      this.maybeHandleResize(u, e) || this.maybeDragNewGenericElement(u, e);
    });
  }
  onKeyUpFromPointerDownHandler(u) {
    return Q0((e) => {
      e.key === Z.ALT && e.preventDefault(), !this.maybeHandleResize(u, e) && this.maybeDragNewGenericElement(u, e);
    });
  }
  onPointerMoveFromPointerDownHandler(u) {
    return sD((e) => {
      if (this.state.openDialog?.name === "elementLinkSelector") return;
      let C = Tu(e, this.state);
      if (this.state.selectedLinearElement && this.state.selectedLinearElement.elbowed && this.state.selectedLinearElement.pointerDownState.segmentMidpoint.index) {
        let [E, Q] = f0(C.x, C.y, e[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), s = this.state.selectedLinearElement.pointerDownState.segmentMidpoint.index;
        if (s < 0) {
          let c = LA.getSegmentMidpointHitCoords({ ...this.state.selectedLinearElement, segmentMidPointHoveredCoords: null }, { x: E, y: Q }, this.state, this.scene.getNonDeletedElementsMap());
          s = c ? LA.getSegmentMidPointIndex(this.state.selectedLinearElement, this.state, c, this.scene.getNonDeletedElementsMap()) : -1;
        }
        let l = LA.moveFixedSegment(this.state.selectedLinearElement, s, E, Q, this.scene.getNonDeletedElementsMap());
        O0.flushSync(() => {
          this.state.selectedLinearElement && this.setState({ selectedLinearElement: { ...this.state.selectedLinearElement, segmentMidPointHoveredCoords: l.segmentMidPointHoveredCoords, pointerDownState: l.pointerDownState } });
        });
        return;
      }
      let B = this.lastPointerMoveCoords ?? u.origin;
      if (this.lastPointerMoveCoords = C, u.drag.offset === null && (u.drag.offset = aB(adA(this.scene.getSelectedElements(this.state), u.origin.x, u.origin.y))), !(e.target instanceof HTMLElement) || this.handlePointerMoveOverScrollbars(e, u)) return;
      if (KB(this.state)) {
        this.handleEraser(e, u, C);
        return;
      }
      this.state.activeTool.type === "laser" && this.laserTrails.addPointToPath(C.x, C.y);
      let [g, t] = f0(C.x, C.y, e[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize());
      if (!u.drag.hasOccurred && (this.state.activeTool.type === "arrow" || this.state.activeTool.type === "line") && Uu(U(C.x, C.y), U(u.origin.x, u.origin.y)) < BE) return;
      if (u.resize.isResizing && (u.lastCoords.x = C.x, u.lastCoords.y = C.y, this.maybeHandleCrop(u, e) || this.maybeHandleResize(u, e))) return !0;
      let i = this.scene.getNonDeletedElementsMap();
      if (this.state.selectedLinearElement) {
        let E = this.state.editingLinearElement || this.state.selectedLinearElement;
        if (LA.shouldAddMidpoint(this.state.selectedLinearElement, C, this.state, i)) {
          let Q = LA.addMidpoint(this.state.selectedLinearElement, C, this, !e[Z.CTRL_OR_CMD], i);
          if (!Q) return;
          O0.flushSync(() => {
            this.state.selectedLinearElement && this.setState({ selectedLinearElement: { ...this.state.selectedLinearElement, pointerDownState: Q.pointerDownState, selectedPointsIndices: Q.selectedPointsIndices } }), this.state.editingLinearElement && this.setState({ editingLinearElement: { ...this.state.editingLinearElement, pointerDownState: Q.pointerDownState, selectedPointsIndices: Q.selectedPointsIndices } });
          });
          return;
        } else if (E.pointerDownState.segmentMidpoint.value !== null && !E.pointerDownState.segmentMidpoint.added) return;
        if (LA.handlePointDragging(e, this, C.x, C.y, (Q, s) => {
          this.maybeSuggestBindingsForLinearElementAtCoords(Q, s);
        }, E, this.scene)) {
          u.lastCoords.x = C.x, u.lastCoords.y = C.y, u.drag.hasOccurred = !0, this.state.editingLinearElement && !this.state.editingLinearElement.isDragging && this.setState({ editingLinearElement: { ...this.state.editingLinearElement, isDragging: !0 } }), this.state.selectedLinearElement.isDragging || this.setState({ selectedLinearElement: { ...this.state.selectedLinearElement, isDragging: !0 } });
          return;
        }
      }
      let I = u.hit.allHitElements.some((E) => this.isASelectedElement(E)), o = this.state.editingLinearElement && e.shiftKey && this.state.editingLinearElement.elementId === u.hit.element?.id;
      if ((I || u.hit.hasHitCommonBoundingBoxOfSelectedElements) && !o) {
        let E = this.scene.getSelectedElements(this.state);
        if (E.every((c) => c.locked)) return;
        let Q = E.find((c) => OA(c)), s = this.getTopLayerFrameAtSceneCoords(C), l = s && !Q ? s : null;
        if (this.state.frameToHighlight !== l && O0.flushSync(() => {
          this.setState({ frameToHighlight: l });
        }), u.drag.hasOccurred = !0, E.length > 0 && !u.withCmdOrCtrl && !this.state.editingTextElement && this.state.activeEmbeddable?.state !== "active") {
          let c = { x: C.x - u.origin.x, y: C.y - u.origin.y }, D = [...u.originalElements.values()], h = e.shiftKey;
          if (h) {
            let p = Math.abs(c.x), k = Math.abs(c.y), b = h && p < k, f = h && p > k;
            b && (c.x = 0), f && (c.y = 0);
          }
          if (this.state.croppingElementId) {
            let p = this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);
            if (p && bu(p) && p.crop !== null && u.hit.element === p) {
              let k = p.crop, b = bC(p) && this.imageCache.get(p.fileId)?.image;
              if (b && !(b instanceof Promise)) {
                let f = s0(te(C.x - B.x, C.y - B.y), Math.max(this.state.zoom.value, 2)), [L, N, M, v, K, q] = Au(p, i), j = vA(EA(U(L, N), U(K, q), p.angle)), uA = vA(EA(U(M, N), U(K, q), p.angle)), O = vA(EA(U(L, v), U(K, q), p.angle)), $ = de(rl(uA, j)), X = de(rl(O, j)), P = te(dF(f, $), dF(f, X)), _ = { ...k, x: Qu(k.x - P[0] * Math.sign(p.scale[0]), 0, b.naturalWidth - k.width), y: Qu(k.y - P[1] * Math.sign(p.scale[1]), 0, b.naturalHeight - k.height) };
                nA(p, { crop: _ });
                return;
              }
            }
          }
          this.maybeCacheVisibleGaps(e, E), this.maybeCacheReferenceSnapPoints(e, E);
          let { snapOffset: F, snapLines: m } = V4A(D, c, this, e, this.scene.getNonDeletedElementsMap());
          if (this.setState({ snapLines: m }), this.state.editingFrame || idA(u, E, c, this.scene, F, e[Z.CTRL_OR_CMD] ? null : this.getEffectiveGridSize()), this.setState({ selectedElementsAreBeingDragged: !0, selectionElement: null }), (E.length !== 1 || !xA(E[0])) && this.setState({ suggestedBindings: Sd(E, this.scene.getNonDeletedElementsMap(), this.state.zoom) }), e.altKey && !u.hit.hasBeenDuplicated) {
            u.hit.hasBeenDuplicated = !0;
            let p = [], k = [], b = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), L = u.hit.element, N = new Set(this.scene.getSelectedElements({ selectedElementIds: this.state.selectedElementIds, includeBoundTextElement: !0, includeElementsInFrames: !0 }).map((K) => K.id)), M = this.scene.getElementsIncludingDeleted();
            for (let K of M) {
              let q = N.has(K.id) || K.id === L?.id && u.hit.wasAddedToSelection;
              if (Math.abs(K.x) > 1e7 || Math.abs(K.x) > 1e7 || Math.abs(K.width) > 1e7 || Math.abs(K.height) > 1e7) {
                console.error("Alt+dragging element in scene with invalid dimensions", K.x, K.y, K.width, K.height, q);
                return;
              }
              if (q) {
                let j = Ey(this.state.editingGroupId, b, K);
                if (Math.abs(j.x) > 1e7 || Math.abs(j.x) > 1e7 || Math.abs(j.width) > 1e7 || Math.abs(j.height) > 1e7) {
                  console.error("Alt+dragging duplicated element with invalid dimensions", j.x, j.y, j.width, j.height);
                  return;
                }
                let uA = u.originalElements.get(K.id);
                if (Math.abs(uA.x) > 1e7 || Math.abs(uA.x) > 1e7 || Math.abs(uA.width) > 1e7 || Math.abs(uA.height) > 1e7) {
                  console.error("Alt+dragging duplicated element with invalid dimensions", uA.x, uA.y, uA.width, uA.height);
                  return;
                }
                nA(j, { x: uA.x, y: uA.y }), u.originalElements.set(j.id, j), p.push(j), k.push(K), f.set(K.id, j.id);
              } else p.push(K);
            }
            let v = [...p, ...k];
            v = this.props.onDuplicate?.(v, M) || v, Cg(v, PA(k)), $k(p, k, f), Zk(v, k, f, "duplicatesServeAsOld"), vy(v, k, f), this.scene.replaceAllElements(v), this.maybeCacheVisibleGaps(e, E, !0), this.maybeCacheReferenceSnapPoints(e, E, !0);
          }
          return;
        }
      }
      if (this.state.selectionElement) u.lastCoords.x = C.x, u.lastCoords.y = C.y, this.maybeDragNewGenericElement(u, e);
      else {
        let E = this.state.newElement;
        if (!E) return;
        if (E.type === "freedraw") {
          let Q = E.points, s = C.x - E.x, l = C.y - E.y, c = Q.length > 0 && Q[Q.length - 1];
          if (!(c && c[0] === s && c[1] === l)) {
            let D = E.simulatePressure ? E.pressures : [...E.pressures, e.pressure];
            nA(E, { points: [...Q, U(s, l)], pressures: D }, !1), this.setState({ newElement: E });
          }
        } else if ($A(E)) {
          u.drag.hasOccurred = !0;
          let Q = E.points, s = g - E.x, l = t - E.y;
          dQ(e) && Q.length === 2 && ({ width: s, height: l } = o1(E.x, E.y, C.x, C.y)), Q.length === 1 ? nA(E, { points: [...Q, U(s, l)] }, !1) : (Q.length === 2 || Q.length > 1 && xA(E)) && nA(E, { points: [...Q.slice(0, -1), U(s, l)] }, !1, { isDragging: !0 }), this.setState({ newElement: E }), TB(E, !1) && this.maybeSuggestBindingsForLinearElementAtCoords(E, [C], this.state.startBoundElement);
        } else u.lastCoords.x = C.x, u.lastCoords.y = C.y, this.maybeDragNewGenericElement(u, e, !1);
      }
      if (this.state.activeTool.type === "selection") {
        u.boxSelection.hasOccurred = !0;
        let E = this.scene.getNonDeletedElements();
        if (this.state.editingLinearElement) LA.handleBoxSelection(e, this.state, this.setState.bind(this), this.scene.getNonDeletedElementsMap());
        else {
          let Q = !0;
          !e.shiftKey && S0(E, this.state) && (u.withCmdOrCtrl && u.hit.element ? this.setState((l) => Ue({ ...l, selectedElementIds: { [u.hit.element.id]: !0 } }, this.scene.getNonDeletedElements(), l, this)) : Q = !1);
          let s = this.state.selectionElement ? u9(E, this.state.selectionElement, this.scene.getNonDeletedElementsMap(), !1) : [];
          this.setState((l) => {
            let c = { ...Q && l.selectedElementIds, ...s.reduce((D, h) => (D[h.id] = !0, D), {}) };
            return u.hit.element && (s.length ? delete c[u.hit.element.id] : c[u.hit.element.id] = !0), l = Q ? l : { ...l, selectedGroupIds: {}, editingGroupId: null }, { ...Ue({ editingGroupId: l.editingGroupId, selectedElementIds: c }, this.scene.getNonDeletedElements(), l, this), selectedLinearElement: s.length === 1 && $A(s[0]) ? new LA(s[0]) : null, showHyperlinkPopup: s.length === 1 && (s[0].link || je(s[0])) ? "info" : !1 };
          });
        }
      }
    });
  }
  handlePointerMoveOverScrollbars(u, e) {
    if (e.scrollbars.isOverHorizontal) {
      let C = u.clientX, B = C - e.lastCoords.x;
      return this.translateCanvas({ scrollX: this.state.scrollX - B / this.state.zoom.value }), e.lastCoords.x = C, !0;
    }
    if (e.scrollbars.isOverVertical) {
      let C = u.clientY, B = C - e.lastCoords.y;
      return this.translateCanvas({ scrollY: this.state.scrollY - B / this.state.zoom.value }), e.lastCoords.y = C, !0;
    }
    return !1;
  }
  onPointerUpFromPointerDownHandler(u) {
    return Q0((e) => {
      this.removePointer(e), u.eventListeners.onMove && u.eventListeners.onMove.flush();
      let { newElement: C, resizingElement: B, croppingElementId: g, multiElement: t, activeTool: i, isResizing: I, isRotating: o, isCropping: E } = this.state;
      this.setState((D) => ({ isResizing: !1, isRotating: !1, isCropping: !1, resizingElement: null, selectionElement: null, frameToHighlight: null, elementsToHighlight: null, cursorButton: "up", snapLines: Ho(D.snapLines, []), originSnapOffset: null })), this.lastPointerMoveCoords = null, Lg.setReferenceSnapPoints(null), Lg.setVisibleGaps(null), this.savePointer(e.clientX, e.clientY, "up"), this.setState({ selectedElementsAreBeingDragged: !1 });
      let Q = this.scene.getNonDeletedElementsMap();
      if (u.drag.hasOccurred && u.hit?.element?.id) {
        let D = Q.get(u.hit.element.id);
        DB(D) && D.boundElements?.filter((h) => h.type === "arrow").map((h) => Q.get(h.id)).filter((h) => xA(h)).forEach((h) => {
          h && nA(h, {}, !0);
        });
      }
      if (this.state.editingLinearElement) if (!u.boxSelection.hasOccurred && u.hit?.element?.id !== this.state.editingLinearElement.elementId) this.actionManager.executeAction(eB);
      else {
        let D = LA.handlePointerUp(e, this.state.editingLinearElement, this.state, this.scene);
        D !== this.state.editingLinearElement && this.setState({ editingLinearElement: D, suggestedBindings: [] });
      }
      else if (this.state.selectedLinearElement) {
        if (this.state.selectedLinearElement.elbowed) {
          let D = LA.getElement(this.state.selectedLinearElement.elementId, this.scene.getNonDeletedElementsMap());
          D && nA(D, {}, !0);
        }
        if (u.hit?.element?.id !== this.state.selectedLinearElement.elementId) this.scene.getSelectedElements(this.state).length > 1 && this.setState({ selectedLinearElement: null });
        else {
          let D = LA.handlePointerUp(e, this.state.selectedLinearElement, this.state, this.scene), { startBindingElement: h, endBindingElement: F } = D, m = this.scene.getElement(D.elementId);
          TB(m) && d4(m, h, F, Q, this.scene), D !== this.state.selectedLinearElement && this.setState({ selectedLinearElement: { ...D, selectedPointsIndices: null }, suggestedBindings: [] });
        }
      }
      if (this.missingPointerEventCleanupEmitter.clear(), window.removeEventListener("pointermove", u.eventListeners.onMove), window.removeEventListener("pointerup", u.eventListeners.onUp), window.removeEventListener("keydown", u.eventListeners.onKeyDown), window.removeEventListener("keyup", u.eventListeners.onKeyUp), this.state.pendingImageElementId && this.setState({ pendingImageElementId: null }), this.props?.onPointerUp?.(i, u), this.onPointerUpEmitter.trigger(this.state.activeTool, u, e), C?.type === "freedraw") {
        let D = Tu(e, this.state), h = C.points, F = D.x - C.x, m = D.y - C.y;
        F === h[0][0] && m === h[0][1] && (m += 1e-4, F += 1e-4);
        let p = C.simulatePressure ? [] : [...C.pressures, e.pressure];
        nA(C, { points: [...h, U(F, m)], pressures: p, lastCommittedPoint: U(F, m) }), this.actionManager.executeAction(eB);
        return;
      }
      if (bu(C)) {
        let D = C;
        try {
          this.initializeImageDimensions(D), this.setState({ selectedElementIds: yu({ [D.id]: !0 }, this.state) }, () => {
            this.actionManager.executeAction(eB);
          });
        } catch (h) {
          console.error(h), this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter((F) => F.id !== D.id)), this.actionManager.executeAction(eB);
        }
        return;
      }
      if ($A(C)) {
        C.points.length > 1 && this.store.shouldCaptureIncrement();
        let D = Tu(e, this.state);
        !u.drag.hasOccurred && C && !t ? (nA(C, { points: [...C.points, U(D.x - C.x, D.y - C.y)] }), this.setState({ multiElement: C, newElement: C })) : u.drag.hasOccurred && !t && (nE(this.state) && TB(C, !1) && u1(C, this.state, D, this.scene.getNonDeletedElementsMap(), this.scene.getNonDeletedElements()), this.setState({ suggestedBindings: [], startBoundElement: null }), i.locked ? this.setState((h) => ({ newElement: null })) : (BB(this.interactiveCanvas), this.setState((h) => ({ newElement: null, activeTool: b0(this.state, { type: "selection" }), selectedElementIds: yu({ ...h.selectedElementIds, [C.id]: !0 }, h), selectedLinearElement: new LA(C) }))), this.scene.triggerUpdate());
        return;
      }
      if (UA(C)) {
        let D = E2(vu({ fontSize: C.fontSize, fontFamily: C.fontFamily }), C.lineHeight);
        C.width < D && nA(C, { autoResize: !0 }), this.resetCursor(), this.handleTextWysiwyg(C, { isExistingElement: !0 });
      }
      if (i.type !== "selection" && C && lI(C)) {
        this.updateScene({ elements: this.scene.getElementsIncludingDeleted().filter((D) => D.id !== C.id), appState: { newElement: null }, captureUpdate: aA.NEVER });
        return;
      }
      if (OA(C)) {
        let D = JcA(this.scene.getElementsIncludingDeleted(), C, this.scene.getNonDeletedElementsMap());
        this.scene.replaceAllElements(wQ(this.scene.getElementsMapIncludingDeleted(), D, C, this.state));
      }
      if (C && (nA(C, Ty(C)), this.scene.triggerUpdate()), u.drag.hasOccurred) {
        let D = Tu(e, this.state);
        if (this.state.selectedLinearElement && this.state.selectedLinearElement.isDragging) {
          let h = this.scene.getElement(this.state.selectedLinearElement.elementId);
          if (h?.frameId) {
            let F = Xe(h, Q);
            F && h && (ai(h, F, this.scene.getNonDeletedElementsMap()) || (nA(h, { groupIds: [] }), G4([h], this.scene.getNonDeletedElementsMap()), this.scene.triggerUpdate()));
          }
        } else {
          let h = this.getTopLayerFrameAtSceneCoords(D), F = this.scene.getSelectedElements(this.state), m = this.scene.getElementsMapIncludingDeleted(), p = (k) => {
            if (k.length > 0) {
              for (let b of k) {
                let f = b.groupIds.indexOf(this.state.editingGroupId);
                nA(b, { groupIds: b.groupIds.slice(0, f) }, !1);
              }
              m.forEach((b) => {
                b.groupIds.length && Vu(m, b.groupIds[b.groupIds.length - 1]).length < 2 && nA(b, { groupIds: [] }, !1);
              }), this.setState({ editingGroupId: null });
            }
          };
          if (h && !this.state.selectedElementIds[h.id]) {
            let k = F.filter((b) => b.frameId !== h.id && Nl(b, m, this.state));
            this.state.editingGroupId && p(k), m = wQ(m, k, h, this.state);
          } else if (!h && this.state.editingGroupId) {
            let k = F.filter((b) => b.frameId && !Nl(b, m, this.state));
            p(k);
          }
          m = sI(m, this.state, this), this.scene.replaceAllElements(m);
        }
      }
      if (B && this.store.shouldCaptureIncrement(), B && lI(B) && this.updateScene({ elements: this.scene.getElementsIncludingDeleted().filter((D) => D.id !== B.id), captureUpdate: aA.NEVER }), u.resize.isResizing) {
        let D = sI(this.scene.getElementsIncludingDeleted(), this.state, this), h = this.scene.getSelectedElements(this.state).filter((F) => OA(F));
        for (let F of h) D = Jy(D, Js(this.scene.getElementsIncludingDeleted(), F, this.state, Q), F, this);
        this.scene.replaceAllElements(D);
      }
      let s = u.hit.element;
      this.state.selectedLinearElement?.elementId !== s?.id && $A(s) && this.scene.getSelectedElements(this.state).length === 1 && this.setState({ selectedLinearElement: new LA(s) }), (!g || g && (!s && !E || s && s.id !== g)) && this.finishImageCropping();
      let l = this.lastPointerDownEvent, c = this.lastPointerUpEvent || this.lastPointerMoveEvent;
      if (KB(this.state) && l && c) {
        if (this.eraserTrail.endPath(), Uu(U(l.clientX, l.clientY), U(c.clientX, c.clientY)) === 0) {
          let D = Tu({ clientX: c.clientX, clientY: c.clientY }, this.state);
          this.getElementsAtPosition(D.x, D.y).forEach((h) => this.elementsPendingErasure.add(h.id));
        }
        this.eraseElements();
        return;
      } else this.elementsPendingErasure.size && this.restoreReadyToEraseElements();
      if (s && !u.drag.hasOccurred && !u.hit.wasAddedToSelection && (!this.state.editingLinearElement || !u.boxSelection.hasOccurred) && (e.shiftKey && !this.state.editingLinearElement ? this.state.selectedElementIds[s.id] ? zk(this.state, s) ? this.setState((D) => {
        let h = { ...D.selectedElementIds };
        for (let F of s.groupIds.flatMap((m) => Vu(this.scene.getNonDeletedElements(), m))) delete h[F.id];
        return { selectedGroupIds: { ...D.selectedElementIds, ...s.groupIds.map((F) => ({ [F]: !1 })).reduce((F, m) => ({ ...F, ...m }), {}) }, selectedElementIds: yu(h, D) };
      }) : this.state.selectedLinearElement?.isDragging || this.setState((D) => {
        let h = { ...D.selectedElementIds };
        delete h[s.id];
        let F = iu(this.scene.getNonDeletedElements(), { selectedElementIds: h });
        return { ...Ue({ editingGroupId: D.editingGroupId, selectedElementIds: h }, this.scene.getNonDeletedElements(), D, this), selectedLinearElement: F.length === 1 && $A(F[0]) ? new LA(F[0]) : D.selectedLinearElement };
      }) : s.frameId && this.state.selectedElementIds[s.frameId] ? this.setState((D) => {
        let h = { ...D.selectedElementIds, [s.id]: !0 };
        return delete h[s.frameId], (this.scene.getElement(s.frameId)?.groupIds ?? []).flatMap((F) => Vu(this.scene.getNonDeletedElements(), F)).forEach((F) => {
          delete h[F.id];
        }), { ...Ue({ editingGroupId: D.editingGroupId, selectedElementIds: h }, this.scene.getNonDeletedElements(), D, this), showHyperlinkPopup: s.link || je(s) ? "info" : !1 };
      }) : this.setState((D) => ({ selectedElementIds: yu({ ...D.selectedElementIds, [s.id]: !0 }, D) })) : this.setState((D) => ({ ...Ue({ editingGroupId: D.editingGroupId, selectedElementIds: { [s.id]: !0 } }, this.scene.getNonDeletedElements(), D, this), selectedLinearElement: $A(s) && D.selectedLinearElement?.elementId !== s.id ? new LA(s) : D.selectedLinearElement }))), !(s && xA(s)) && !u.drag.hasOccurred && !this.state.isResizing && (s && UlA({ x: u.origin.x, y: u.origin.y, element: s, shape: Ng(s, this.scene.getNonDeletedElementsMap()), threshold: this.getElementHitThreshold(), frameNameBound: OA(s) ? this.frameNameBoundsCache.get(s) : null }, Q) || !s && u.hit.hasHitCommonBoundingBoxOfSelectedElements)) {
        this.state.editingLinearElement ? this.setState({ editingLinearElement: null }) : this.setState({ selectedElementIds: yu({}, this.state), selectedGroupIds: {}, editingGroupId: null, activeEmbeddable: null }), Yu(this.interactiveCanvas, Ru.AUTO);
        return;
      }
      if (!i.locked && i.type !== "freedraw" && C && this.setState((D) => ({ selectedElementIds: yu({ ...D.selectedElementIds, [C.id]: !0 }, D), showHyperlinkPopup: je(C) && !C.link ? "editor" : D.showHyperlinkPopup })), (i.type !== "selection" || S0(this.scene.getNonDeletedElements(), this.state) || !Ee(this.state.previousSelectedElementIds, this.state.selectedElementIds)) && this.store.shouldCaptureIncrement(), u.drag.hasOccurred || I || o || E) {
        let D = this.scene.getSelectedElements(this.state).filter($A);
        kl(D, this.scene.getNonDeletedElementsMap(), this.scene.getNonDeletedElements(), this.scene, nE(this.state), this.state.selectedLinearElement?.selectedPointsIndices ?? [], this.state.zoom);
      }
      if (i.type === "laser") {
        this.laserTrails.endPath();
        return;
      }
      !i.locked && i.type !== "freedraw" ? (BB(this.interactiveCanvas), this.setState({ newElement: null, suggestedBindings: [], activeTool: b0(this.state, { type: "selection" }) })) : this.setState({ newElement: null, suggestedBindings: [] }), s && this.lastPointerUpEvent && this.lastPointerDownEvent && this.lastPointerUpEvent.timeStamp - this.lastPointerDownEvent.timeStamp < 300 && ku.pointers.size <= 1 && UC(s) && this.isIframeLikeElementCenter(s, this.lastPointerUpEvent, u.origin.x, u.origin.y) && this.handleEmbeddableCenterClick(s);
    });
  }
  clearSelection(u) {
    this.setState((e) => ({ selectedElementIds: yu({}, e), activeEmbeddable: null, selectedGroupIds: {}, editingGroupId: e.editingGroupId && u != null && OQ(u, e.editingGroupId) ? e.editingGroupId : null })), this.setState({ selectedElementIds: yu({}, this.state), activeEmbeddable: null, previousSelectedElementIds: this.state.selectedElementIds });
  }
  getTextWysiwygSnappedToCenterPosition(u, e, C, B) {
    if (B) {
      let g = B.x + B.width / 2, t = B.y + B.height / 2, i = Nd(B, C, this.scene.getNonDeletedElementsMap());
      if (i && (g = i.x, t = i.y), Math.hypot(u - g, e - t) < yEA) {
        let { x: I, y: o } = EB({ sceneX: g, sceneY: t }, C);
        return { viewportX: I, viewportY: o, elementCenterX: g, elementCenterY: t };
      }
    }
  }
  getCanvasOffsets() {
    if (this.excalidrawContainerRef?.current) {
      let u = this.excalidrawContainerRef.current, { left: e, top: C } = u.getBoundingClientRect();
      return { offsetLeft: e, offsetTop: C };
    }
    return { offsetLeft: 0, offsetTop: 0 };
  }
  async updateLanguage() {
    let u = U9.find((e) => e.code === this.props.langCode) || fI;
    await FG(u), this.setAppState({});
  }
}, vpA = () => {
  (tu.MODE === Oe.TEST || tu.DEV) && (window.h = window.h || {}, Object.defineProperties(window.h, { elements: { configurable: !0, get() {
    return this.app?.scene.getElementsIncludingDeleted();
  }, set(A) {
    return this.app?.scene.replaceAllElements(Pg(A));
  } }, scene: { configurable: !0, get() {
    return this.app?.scene;
  } } }));
};
vpA();
var HpA = YpA, KpA = () => {
  Array.prototype.at || Object.defineProperty(Array.prototype, "at", { value: function(A) {
    if (A = Math.trunc(A) || 0, A < 0 && (A += this.length), !(A < 0 || A >= this.length)) return this[A];
  }, writable: !0, enumerable: !1, configurable: !0 }), Element.prototype.replaceChildren || (Element.prototype.replaceChildren = function(...A) {
    this.innerHTML = "", this.append(...A);
  });
}, JpA = KpA, ZpA = () => r.jsx("svg", { viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "ExcalidrawLogo-icon", children: r.jsx("path", { d: "M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z", fill: "currentColor" }) }), qpA = () => r.jsxs("svg", { viewBox: "0 0 450 55", xmlns: "http://www.w3.org/2000/svg", fill: "none", className: "ExcalidrawLogo-text", children: [r.jsx("path", { d: "M429.27 96.74c2.47-1.39 4.78-3.02 6.83-4.95 1.43-1.35 2.73-2.86 3.81-4.51-.66.9-1.4 1.77-2.23 2.59-2.91 2.84-5.72 5.09-8.42 6.87h.01ZM343.6 69.36c.33 3.13.58 6.27.79 9.4.09 1.37.18 2.75.25 4.12-.12-4.46-.27-8.93-.5-13.39-.11-2.08-.24-4.16-.4-6.24-.06 1.79-.11 3.85-.13 6.11h-.01ZM378.47 98.34c.01-.37.07-1.13.01-6.51-.11 1.9-.22 3.81-.31 5.71-.07 1.42-.22 2.91-.16 4.35.39.03.78.07 1.17.1-.92-.85-.76-2.01-.72-3.66l.01.01ZM344.09 86.12c-.09-2.41-.22-4.83-.39-7.24v12.21c.15-.05.32-.09.47-.14.05-1.61-.03-3.23-.09-4.83h.01ZM440.69 66.79c-.22-.34-.45-.67-.69-.99-3.71-4.87-9.91-7.14-15.65-8.55-1.05-.26-2.12-.49-3.18-.71 2.29.59 4.48 1.26 6.64 2.02 7.19 2.54 10.57 5.41 12.88 8.23ZM305.09 72.46l1.2 3.6c.84 2.53 1.67 5.06 2.46 7.61.24.78.5 1.57.73 2.36.22-.04.44-.08.67-.12a776.9 776.9 0 0 1-5.01-13.57c-.02.04-.03.09-.05.13v-.01ZM345.49 90.25v.31c1.48-.42 3.05-.83 4.66-1.2-1.56.25-3.12.52-4.66.89ZM371.02 90.22c0-.57-.04-1.14-.11-1.71-.06-.02-.12-.04-.19-.05-.21-.05-.43-.08-.65-.11.42.16.74.88.95 1.87ZM398.93 54.23c-.13 0-.27-.01-.4-.02l.03.4c.11-.15.23-.27.37-.38ZM401.57 62.28v-.15c-1.22-.24-2.86-.61-3.23-1.25-.09-.15-.18-.51-.27-.98-.09.37-.2.73-.33 1.09 1.24.56 2.52.98 3.83 1.29ZM421.73 88.68c-2.97 1.65-6.28 3.12-9.69 3.68v.18c4.72-.14 11.63-3.85 16.33-8.38-2.04 1.75-4.33 3.24-6.63 4.53l-.01-.01ZM411.28 80.92c-.05-1.2-.09-2.4-.15-3.6-.21 5.66-.46 11.38-.47 14.51.24-.02.48-.04.71-.07.15-3.61.05-7.23-.09-10.83v-.01Z", transform: "translate(-144.023 -51.76)" }), r.jsx("path", { d: "M425.38 67.41c-3.5-1.45-7.19-2.57-14.06-3.62.09 1.97.06 4.88-.03 8.12.03.04.06.09.06.15.19 1.36.28 2.73.37 4.1.25 3.77.39 7.55.41 11.33 0 1.38-.01 2.76-.07 4.13 1.4-.25 2.78-.65 4.12-1.15 4.07-1.5 7.94-3.78 11.28-6.54 2.33-1.92 5.13-4.49 5.88-7.58.63-3.53-2.45-6.68-7.97-8.96l.01.02ZM411.35 92.53v-.06l-.34.03c.11.01.22.03.34.03ZM314.26 64.06c-.23-.59-.47-1.17-.7-1.75.57 1.62 1.11 3.25 1.6 4.9l.15.54 2.35 6.05c.32.82.66 1.64.98 2.46-1.38-4.1-2.83-8.17-4.39-12.2h.01ZM156.82 103.07c-.18.13-.38.23-.58.33 1.32-.03 2.66-.2 3.93-.34.86-.09 1.72-.22 2.58-.33-2.12.1-4.12.17-5.94.34h.01ZM210.14 68.88s.03.04.05.07c.18-.31.39-.64.58-.96-.21.3-.42.6-.64.89h.01ZM201.65 82.8c-.5.77-1.02 1.56-1.49 2.37 1.11-1.55 2.21-3.1 3.2-4.59-.23.23-.49.51-.75.79-.32.47-.65.95-.96 1.43ZM194.03 98.66c-.33-.4-.65-.84-1.05-1.17-.24-.2-.07-.49.17-.56-.23-.26-.42-.5-.63-.75 1.51-2.55 3.93-5.87 6.4-9.28-.17-.08-.29-.28-.2-.49.04-.09.09-.17.13-.26-1.21 1.78-2.42 3.55-3.61 5.33-.87 1.31-1.74 2.64-2.54 4-.29.5-.63 1.04-.87 1.61.81.65 1.63 1.27 2.47 1.88-.09-.11-.18-.21-.27-.32v.01ZM307.79 82.93c-1-3.17-2.05-6.32-3.1-9.48-1.62 4.08-3.69 9.17-6.16 15.19 3.32-1.04 6.77-1.87 10.27-2.5-.32-1.08-.67-2.15-1.01-3.21ZM149.5 80.7c.05-1.71.04-3.43 0-5.14-.1 2.26-.16 4.51-.22 6.77-.02.73-.03 1.46-.04 2.19.14-1.27.2-2.55.24-3.82h.02ZM228.98 98.3c.39 1.25.91 3.03.94 3.91.06-.03.12-.07.17-.1.08-1.29-.55-2.65-1.11-3.81ZM307.72 53.36c.81.5 1.53 1.04 2.07 1.49-.38-.8-.78-1.58-1.21-2.35-.17.03-.34.06-.51.11-.43.12-.86.26-1.29.41.35-.01.53.1.94.34ZM283.69 96.14c3.91-7.25 6.89-13.35 8.88-18.15l1.1-2.66c-1.27 2.64-2.56 5.27-3.83 7.9-1.53 3.15-3.06 6.31-4.58 9.47-.87 1.81-1.76 3.62-2.54 5.47.04.02.07.04.11.07.05.05.1.09.15.14.05-.73.27-1.48.71-2.24ZM289.92 103.23s-.04.01-.05.03c0-.02.04-.03.05-.04.05-.05.11-.1.16-.15l.21-.21c-.55 0-1.5-.27-2.55-.72.4.26.8.51 1.22.74.24.13.48.26.73.37.05.02.1.03.14.05a.27.27 0 0 1 .08-.07h.01ZM269.23 68.49c-.39-.19-.82-.48-1.33-.87-3.06-1.56-6.31-2.78-9.36-2.35-3.5.49-5.7 1.11-7.74 2.44 5.71-2.6 12.82-2.07 18.44.79l-.01-.01ZM177.87 53.69l1.06.03c-.96-.22-2-.25-2.89-.3-4.95-.26-9.99.33-14.86 1.19-2.44.43-4.88.95-7.28 1.59 9.09-1.76 15.69-2.77 23.97-2.51ZM219.85 55.51c-.18.12-.36.27-.56.45-.45.53-.86 1.11-1.26 1.66-1.91 2.61-3.71 5.31-5.57 7.95l-.12.18 8.05-10.11c-.18-.05-.36-.1-.55-.13h.01ZM510.71 54.1c.12-.15.29-.3.53-.45.69-.4 3.72-.63 5.87-.74-.36-.02-.73-.04-1.09-.05-1.84-.03-3.67.09-5.49.35.05.3.12.59.18.88v.01ZM510.76 86.02c1.37-3.07 2.49-6.27 3.57-9.46.55-1.64 1.12-3.3 1.6-4.97-1.59 4.01-3.67 9.14-6.2 15.3.24-.08.5-.14.74-.22.1-.22.19-.44.29-.65ZM566.95 75.76c.11-.02.23.03.31.11-.05-.13-.09-.26-.14-.39-.05.09-.11.18-.17.28ZM511.33 86.41c3.08-.89 6.24-1.62 9.46-2.14-1.51-3.98-2.98-7.96-4.39-11.87-.05.15-.09.31-.14.46-1.02 3.32-2.15 6.61-3.39 9.85-.48 1.25-.98 2.49-1.53 3.7h-.01ZM578.24 74.45c.11-.44.23-.87.35-1.31-.31.7-.64 1.39-.97 2.08.09.21.19.4.28.61.12-.46.23-.92.35-1.38h-.01ZM520.62 53.11c-.09 0-.18-.01-.28-.02.38.34.29 1.08.93 2.53l6.65 17.15c2.2 5.68 4.69 11.36 7.41 16.87l1.06 2.17c-2.95-7.05-5.92-14.08-8.87-21.13-1.58-3.79-3.16-7.59-4.7-11.4-.78-1.92-1.73-3.89-2.25-5.91-.03-.1 0-.19.04-.26h.01ZM578.78 77.87c1.45-5.77 3.07-10.43 3.58-13.36.05-.34.16-.88.31-1.55-.67 1.79-1.37 3.56-2.08 5.33-.12.43-.23.86-.35 1.29-.65 2.43-1.29 4.86-1.9 7.3.14.33.29.65.43 1l.01-.01ZM545.3 94.66c.02-.44.03-.83.05-1.12.02-1.01.05-2.02.11-3.02.03-6.66-.46-14.33-1.46-22.8-.13-.42-.27-1.24-.56-2.89 0-.02 0-.04-.01-.06.62 6.61.95 13.25 1.32 19.87.17 3.08.33 6.16.52 9.23.02.25.03.52.04.78l-.01.01ZM580.77 102.81c.13.2.27.38.37.49.27-.11.53-.22.8-.32-.43.09-.82.05-1.17-.16v-.01ZM530.48 104.07h.33c-.36-.13-.71-.32-1.04-.56.14.24.3.47.45.7.06-.08.14-.13.26-.13v-.01ZM542.63 58.82c.06.23.11.47.15.71.14-.33.36-.62.7-.86-.28.05-.57.11-.85.15ZM583.81 57.87c.15-.7.29-1.41.42-2.11-.14.45-.28.9-.42 1.34-.46 1.44-.89 2.89-1.31 4.34.44-1.19.88-2.37 1.31-3.57ZM523.62 91.48c-4.66 1.17-9.05 2.89-14.02 5.27 4.65-1.84 9.48-3.29 14.28-4.63-.09-.22-.17-.41-.26-.64ZM460.64 78.3c-.04-2.9-.11-5.81-.28-8.71-.1-1.68-.17-3.43-.5-5.09-.07.02-.14.03-.2.05.3 6.54.45 12.17.51 17.12.17-.07.34-.14.51-.2 0-1.06-.01-2.11-.03-3.17h-.01ZM470.63 63.24c-3.38-.26-6.81.32-10.1 1.1.41 2.01.47 4.14.57 6.18.18 3.55.25 7.11.27 10.67 3.31-1.38 6.5-3.12 9.3-5.35 1.96-1.56 3.86-3.41 5.02-5.66.73-1.41 1.19-3.22.26-4.65-1.09-1.7-3.46-2.14-5.32-2.29ZM460.29 63.68c1-.24 2.01-.46 3.04-.65-1.15.16-2.37.38-3.71.69v.13c.07-.02.15-.04.22-.05.11-.13.3-.18.45-.11v-.01ZM457.24 100.96c.43-.03.86-.07 1.29-.11.14-.49.27-.99.38-1.49-.44.7-1 1.23-1.67 1.6ZM482.88 104.98c-.18.23-.36.38-.55.47.14.09.27.19.4.28a70.76 70.76 0 0 0 4.37-4.63c.76-.89 1.52-1.81 2.19-2.77-.3-.27-.61-.53-.92-.79-.07 1.94-4.62 6.32-5.49 7.45v-.01Z", transform: "translate(-144.023 -51.76)" }), r.jsx("path", { d: "M474.36 63.31c-.4-.16-.84-.27-1.29-.37 1.56.42 3.08 1.22 3.76 2.74.62 1.4.32 2.95-.28 4.32.7-1.22.94-2.34.74-3.47-.24-1.33-1.19-2.54-2.93-3.21v-.01ZM477.34 89.18c-1.2-.81-2.4-1.62-3.6-2.42-.14.1-.26.19-.4.29 1.4.67 2.73 1.39 4 2.13ZM465.88 93.85c.37.25.74.5 1.1.75.46.32.92.65 1.38.97-1.57-1.2-2.01-1.61-2.49-1.72h.01ZM574.92 90.06c-2.28-5.21-4.93-11.13-5.67-12.26-.1-.15-1.57-3.01-1.63-3.08 0 0-.01.02-.02.02.4 1.37 1.09 2.69 1.65 3.99 2.14 4.95 4.36 9.86 6.67 14.73.6 1.26 1.21 2.52 1.83 3.78-.75-2.01-1.64-4.45-2.83-7.18ZM448.73 65.29c.1.2.22.38.34.57.22-.02.43-.06.65-.08v-.08c-.14-.05-.25 0-.99-.41ZM460.16 94.81c-.02.31-.06.59-.1.89-.03 1.71-.33 3.43-.79 5.07.15-.02.3-.03.45-.05.01-.04.02-.08.03-.11.09-.34.15-.69.2-1.03.17-1.07.25-2.16.33-3.24.05-.69.08-1.39.12-2.08-.27.1-.27.26-.24.57v-.02Z", transform: "translate(-144.023 -51.76)" }), r.jsx("path", { d: "m328.67 98.12-3.22-6.58c-1.29-2.63-2.53-5.29-3.72-7.97-.25-.85-.52-1.69-.79-2.53-.81-2.57-1.67-5.12-2.55-7.67-1.92-5.53-3.9-11.08-6.32-16.41-.72-1.58-1.46-3.44-2.63-4.79-.03-.17-.16-.29-.34-.36a.282.282 0 0 0-.23-.04c-.06-.01-.12 0-.18.01-.74.06-1.5.38-2.19.61-2.22.77-4.4 1.64-6.63 2.38-.03-.08-.06-.16-.09-.25-.15-.42-.82-.24-.67.19.03.09.07.19.1.28l-.18.06c-.36.11-.28.6 0 .68.18 1.18.63 2.36.98 3.49.03.09.06.17.08.26-.08.23-.17.46-.24.64-.37.98-.79 1.94-1.21 2.9-1.27 2.89-2.62 5.75-3.98 8.6-3.18 6.67-6.44 13.31-9.64 19.97-1.08 2.25-2.2 4.5-3.15 6.81-.13.32.24.5.5.37 1.34 1.33 2.84 2.5 4.4 3.57.65.44 1.31.87 2.01 1.24.4.22.86.48 1.33.5.24.01.35-.19.33-.37.11-.1.21-.21.28-.28.41-.41.81-.84 1.2-1.26.85-.92 1.69-1.87 2.5-2.84 6.31-2.34 12.6-4.31 18.71-5.84 2.14 5.3 3.43 8.43 3.97 9.58.55 1.05 1.15 1.88 1.82 2.52 1.32.56 6.96-.03 9.23-1.96.87-1.28 1.19-2.67.93-4.15-.09-.5-.22-.95-.4-1.33l-.01-.03Zm-20.09-45.61c.43.77.83 1.56 1.21 2.35-.54-.45-1.27-.99-2.07-1.49-.42-.24-.6-.35-.94-.34.43-.15.85-.29 1.29-.41.17-.05.34-.08.51-.11Zm-25.86 45.66c.78-1.85 1.67-3.66 2.54-5.47 1.51-3.16 3.05-6.31 4.58-9.47 1.28-2.63 2.56-5.26 3.83-7.9l-1.1 2.66c-1.99 4.79-4.97 10.9-8.88 18.15-.43.76-.66 1.51-.71 2.24-.05-.05-.1-.09-.15-.14a.259.259 0 0 0-.11-.07Zm6.24 4.71c-.42-.23-.82-.48-1.22-.74 1.05.45 2 .72 2.55.72l-.21.21c-.05.05-.11.1-.16.15-.01.01-.04.03-.05.04 0-.02.03-.02.05-.03a.27.27 0 0 0-.08.07c-.05-.02-.1-.03-.14-.05-.25-.1-.49-.24-.73-.37h-.01Zm15.73-29.43c1.05 3.15 2.1 6.31 3.1 9.48.34 1.06.69 2.13 1.01 3.21-3.5.63-6.95 1.46-10.27 2.5 2.48-6.03 4.54-11.11 6.16-15.19Zm4.79 12.57c-.23-.79-.49-1.58-.73-2.36-.79-2.54-1.63-5.08-2.46-7.61l-1.2-3.6c.02-.04.04-.09.05-.13 1.6 4.45 3.28 9 5.01 13.57l-.67.12v.01Zm5.83-18.27-.15-.54c-.49-1.64-1.03-3.28-1.6-4.9.23.58.47 1.17.7 1.75 1.56 4.03 3.01 8.1 4.39 12.2-.33-.82-.67-1.64-.98-2.46l-2.35-6.05h-.01ZM390.43 79.37c-.13-10.43-.22-17.5-.24-19.97-.24-1.6.21-2.88-.65-3.65-.14-.13-.32-.23-.52-.32h.03c.45 0 .45-.69 0-.7-1.75-.03-3.5-.04-5.25-.14-1.38-.08-2.76-.21-4.15-.31-.07 0-.12.01-.17.04-.21-.07-.47.03-.45.31l.03.45c-.11.14-.19.3-.22.5-.21 1.26-.32 13.67-.36 23.59-.32 5.79-.67 11.57-.97 17.36-.09 1.73-.29 3.54-.21 5.3-.39.02-.38.64.04.69v.12c.05.44.74.45.7 0v-.06c1.1.09 2.2.21 3.3.3 1.14.19 2.44.2 3.29.17 1.73-.05 2.92-.05 3.8-.37.45-.05.9-.11 1.35-.17.44-.06.25-.73-.19-.67h-.01c.24-.32.45-.72.62-1.25.66-1.84.41-6.36.34-11.33l-.13-9.9.02.01Zm-12.26 18.17c.09-1.91.2-3.81.31-5.71.06 5.38 0 6.14-.01 6.51-.05 1.65-.21 2.81.72 3.66-.39-.04-.78-.07-1.17-.1-.06-1.44.09-2.93.16-4.35l-.01-.01ZM588.97 53.85c-2.06-.25-3.17-.51-3.76-.6a.3.3 0 0 1 .04-.08c.22-.39-.39-.75-.6-.35-.56 1.02-.9 2.19-1.26 3.29-.61 1.88-1.17 3.78-1.72 5.68-.63 2.19-1.24 4.39-1.83 6.59-.81 2.03-1.67 4.05-2.61 6.03-1.7-3.64-3.11-6.04-4.03-7.57-2.26-3.74-2.85-5.48-3.57-6.08l.31-.09c.43-.12.25-.8-.19-.67-1.06.3-2.12.6-3.17.95-.93.32-1.85.69-2.76 1.07-.13.05-.19.16-.22.27-.04.02-.08.05-.11.07-.04-.06-.07-.12-.11-.18a.354.354 0 0 0-.48-.12c-.16.09-.22.32-.13.48l.33.54c0 .09.02.18.06.28.51 1.16.78 1.38.72 1.47-2.42 3.44-5.41 7.86-6.2 9.1-1.27 1.97-2.01 3.14-2.45 3.84l-.91-6.56-.43-4.1c-.19-1.85-.37-3.23-.53-4.13-.19-1.1-.3-2.15-.45-3.16-.2-1.36-.29-2.06-.47-2.42h.04c.45.02.45-.68 0-.7-3.43-.16-6.81.94-10.17 1.48-.24-.22-.73-.04-.58.32.24.59.33 1.25.43 1.87.17 1.06.29 2.13.4 3.2.32 3.09.53 6.2.74 9.3.44 6.75.77 13.51 1.17 20.26.11 1.95.13 3.96.46 5.89.05.3.37.31.55.14.74 1.71 2.87 1.27 6.13 1.27 1.34 0 2.39.04 2.99-.11.02.32.48.53.63.18 3.61-8.26 7.41-16.46 12.05-24.2.03-.05.04-.1.05-.15.3.73.64 1.45.94 2.16.97 2.26 1.97 4.52 2.98 6.76 2.26 5.03 4.54 10.07 7.09 14.96.47.9.94 1.79 1.47 2.65.2.32.4.67.66.96-.18.25 0 .68.34.54.91-.38 1.82-.75 2.76-1.07 1.04-.35 2.11-.65 3.17-.95.39-.11.28-.66-.07-.68.62-.4.95-.96.87-1.91-.3-3.34.72-7.47.86-8.52l2.14-11.43c1.75-10.74 3.13-17.51 3.23-20.86.02-.49.08-2.84.13-3.24.17-1.25.48-1-4.96-1.65l.03-.02Zm-46.19 5.67c-.04-.24-.09-.48-.15-.71l.85-.15c-.34.24-.56.53-.7.86Zm1.95 25.12c-.36-6.63-.7-13.26-1.32-19.87 0 .02 0 .04.01.06.29 1.65.44 2.47.56 2.89 1 8.46 1.5 16.14 1.46 22.8-.06.99-.1 2-.11 3.02-.01.29-.03.68-.05 1.12-.01-.26-.03-.53-.04-.78-.19-3.08-.35-6.16-.52-9.23l.01-.01Zm36.4 18.66c-.11-.11-.24-.29-.37-.49.35.21.74.26 1.17.16-.27.11-.53.22-.8.32v.01Zm-.89-33.72c.12-.43.23-.86.35-1.29.71-1.77 1.41-3.55 2.08-5.33-.15.68-.26 1.22-.31 1.55-.5 2.94-2.13 7.59-3.58 13.36-.15-.35-.29-.66-.43-1 .61-2.44 1.25-4.87 1.9-7.3l-.01.01Zm3.56-12.48c.14-.44.28-.89.42-1.34-.13.7-.27 1.41-.42 2.11-.43 1.19-.86 2.38-1.31 3.57.42-1.45.85-2.9 1.31-4.34Zm-5.22 16.05c-.11.44-.23.87-.35 1.31-.12.46-.23.92-.35 1.38-.1-.22-.19-.4-.28-.61.34-.69.66-1.38.97-2.08h.01Zm-11.64 2.62c.06-.1.12-.19.17-.28.05.13.09.26.14.39a.398.398 0 0 0-.31-.11Zm2.3 2.98c-.56-1.3-1.25-2.63-1.65-3.99 0 0 .01-.02.02-.02.06.08 1.52 2.93 1.63 3.08.73 1.13 3.38 7.04 5.67 12.26 1.2 2.73 2.08 5.17 2.83 7.18-.62-1.25-1.23-2.51-1.83-3.78-2.31-4.87-4.53-9.78-6.67-14.73ZM275.92 87.03c-1.06-2.18-1.13-3.45-2.44-2.93-1.52.57-2.94 1.3-4.5 2.1-1.4.72-2.68 1.44-3.92 2.12.01-.25-.24-.5-.51-.34-4.8 2.93-12.41 4.7-17.28 1.31-1.98-1.77-3.32-4.15-3.97-5.78-.29-.95-.49-1.94-.63-2.93-.14-3.34 1.58-6.53 3.9-9.12.8-.79 1.68-1.51 2.66-2.12 3.7-2.3 8.22-3.07 12.51-2.51 2.71.35 5.32 1.24 7.71 2.55.39.22.75-.39.35-.6-.18-.1-.37-.18-.55-.27.56.27 1.03.33 1.51.19l-.48.39c-.15.11-.23.3-.13.48.09.15.33.24.48.13 1.3-.97 2.46-2.09 3.45-3.37.37-.29.64-.6.65-.97v-.02c.08-.33-.03-.7-.21-1.08-.31-.87-.98-2.01-2.19-3.26-2.43-2.52-3.79-3.45-5.68-4.26-1.14-.49-3.12-1.06-4.42-1.23-3.28-.42-10.64-1.21-18.18 4.11-7.74 5.46-11.94 12.3-12.23 20.61-.08 2.06.04 3.98.34 5.71.74 4.18 2.57 8 5.44 11.34 4.26 4.99 9.76 7.52 16.34 7.52 4.85 0 9.69-1.77 14.89-4.62.23-.12.45-.23.68-.35 2.19-1.1 4.37-2.23 6.46-3.5.49-.3 1.03-.61 1.5-.98 1.47-.87 1.11-1.12.49-2.95-.39-1.14-.76-2.7-2.06-5.36l.02-.01Zm-17.38-21.76c3.05-.42 6.31.79 9.36 2.35.51.39.94.68 1.33.87-5.61-2.86-12.72-3.39-18.44-.79 2.05-1.33 4.24-1.95 7.74-2.44l.01.01ZM443.67 72.67c-.4-2.2-1.15-4.33-2.37-6.22-1.49-2.32-3.58-4.19-5.91-5.64-6.17-3.81-13.75-5.11-20.83-6.01-3.23-.41-6.47-.69-9.72-.92l-1.39-.12c-.85-.07-1.52-.1-2.05-.1-1.08-.06-2.17-.12-3.25-.17-.08 0-.14.02-.19.05-.1.05-.18.14-.16.3.27 2.55-.01 5.12-.92 7.52-.15.38.4.56.62.28 1.32.59 2.68 1.05 4.08 1.37 0 2.78-.14 7.58-.33 12.91 0 0 0 .02-.01.03-.61 3.66-.79 7.42-1 11.12-.23 4.01-.43 8.03-.44 12.05 0 .64 0 1.28.03 1.93.02.31 0 .68.15.96.06.11.14.16.24.17-.2.17-.21.54.11.59 3.83.67 7.78.71 11.68.25 2.3-.19 4.87-.65 7.65-1.56 1.85-.54 3.67-1.18 5.43-1.91 7.2-3.02 14.31-8.07 17.35-15.53.76-1.86 1.17-3.8 1.31-5.75.3-1.93.28-3.82-.09-5.58l.01-.02Zm-19.32-15.42c5.74 1.41 11.94 3.68 15.65 8.55.25.32.47.65.69.99-2.3-2.82-5.68-5.69-12.88-8.23-2.16-.76-4.35-1.43-6.64-2.02 1.06.21 2.13.45 3.18.71Zm-25.82-3.04c.13 0 .27.01.4.02-.14.1-.26.23-.37.38 0-.13-.02-.26-.03-.4Zm34.82 22.17c-.75 3.09-3.55 5.66-5.88 7.58-3.35 2.76-7.21 5.03-11.28 6.54-1.33.49-2.71.9-4.12 1.15.06-1.38.08-2.76.07-4.13-.02-3.78-.16-7.56-.41-11.33-.09-1.37-.18-2.74-.37-4.1 0-.06-.03-.11-.06-.15.09-3.25.12-6.16.03-8.12 6.86 1.05 10.56 2.17 14.06 3.62 5.52 2.28 8.59 5.44 7.97 8.96l-.01-.02Zm-22 16.15c-.12 0-.23-.02-.34-.03l.34-.03v.06Zm-.69-.7c0-3.13.26-8.84.47-14.51.06 1.2.11 2.41.15 3.6.15 3.6.25 7.23.09 10.83-.24.03-.48.05-.71.07v.01Zm-12.33-30.94c.37.63 2.01 1.01 3.23 1.25v.15c-1.31-.31-2.59-.73-3.83-1.29.12-.36.23-.72.33-1.09.08.48.18.84.27.98Zm13.7 31.65v-.18c3.41-.56 6.71-2.02 9.69-3.68 2.31-1.28 4.59-2.78 6.63-4.53-4.69 4.53-11.61 8.24-16.33 8.38l.01.01Zm24.07-.75c-2.05 1.93-4.37 3.56-6.83 4.95 2.7-1.78 5.52-4.03 8.42-6.87.82-.82 1.56-1.69 2.23-2.59-1.08 1.65-2.38 3.16-3.81 4.51h-.01ZM187.16 92.14c-.79-2.47-2.1-7.12-3.1-6.87-.19-.01-2.09.77-4.08 1.54-3.06 1.18-5.91 2.13-10.09 2.82-2.74.42-5.87 1.01-10.61 1.06.04-3.34.05-6.01.05-7.99 7.97-.65 12.33-2.11 16.37-3.55 1.11-.39 2.69-1.01 2.63-1.8-.08-.35-.55-1.39-1.17-2.61-.47-1.16-.98-2.31-1.61-3.38-.42-.71-1.04-1.69-1.86-2.06-.11-.08-.22-.13-.29-.12-.02 0-.04 0-.07.01-.19-.04-.39-.05-.6-.01-.17.03-.24.15-.25.28-.04.02-.09.04-.14.05-4.33 1.48-8.85 2.33-13.24 3.61a499.1 499.1 0 0 0-.31-8.19c4.51-.99 8.88-1.38 13.11-1.82 3.68-.38 6.28.12 7.47.34.59.11.9.16 1.16.18h.1c-.1.37.44.66.62.28.02-.04.03-.08.05-.13.15.2.53.22.62-.1.17-.58.19-1.21.21-1.81v-.36c.03-.15.05-.3.07-.45.52-2.47.33-5.09-.64-7.44-.11-.27-.44-.28-.6-.14-.08-.21-.15-.42-.24-.62-.19-.41-.79-.05-.6.35.03.07.05.15.09.22-.98-.42-2.15-.54-3.17-.63-2.17-.19-4.37-.14-6.54 0-5.7.35-11.4 1.3-16.91 2.79-2.08.56-4.13 1.22-6.14 2-4.54 1.05-3.79 1.51-2.17 6.07.18.51.46 1.68.54 1.94.82 2.47 1.08 2.13 3.1 2.13s0 .05 0 .08h.52c-.48 2.66-.51 5.45-.62 8.13-.15 3.48-.22 6.96-.28 10.45 0 .41-.01.82-.02 1.23-.16.29-.33.57-.51.85-.05.38-.09.77-.14 1.18-.42 3.52-.59 6.48-.52 8.8v.34c.02.47.05.76.06.87.16 1.57-.26 3.47 1.35 3.79 1.61.32 3.5.55 4.85.55.11 0 .22-.02.33-.02 1.79.24 3.67.05 5.45-.12 2.85-.28 5.69-.7 8.51-1.19 3.03-.53 6.05-1.14 9.04-1.86 2.4-.58 4.82-1.19 7.13-2.06.51-.19 1.73-.57 2.46-1.14 1.81-.68 2.18-1 1.57-2.67-.23-.62-.48-1.49-.91-2.78l-.03-.02Zm-11.12-38.71c.89.05 1.93.08 2.89.3-.33 0-.68-.02-1.06-.03-8.28-.26-14.88.75-23.97 2.51 2.41-.64 4.85-1.16 7.28-1.59 4.87-.86 9.91-1.45 14.86-1.19Zm-26.53 22.13c.03 1.71.04 3.43 0 5.14-.04 1.27-.11 2.55-.24 3.82 0-.73.02-1.46.04-2.19.05-2.26.12-4.51.22-6.77h-.02Zm6.73 27.85c.2-.1.4-.21.58-.33 1.82-.17 3.82-.24 5.94-.34-.86.11-1.72.24-2.58.33-1.27.14-2.61.31-3.93.34h-.01ZM534.48 85.44c-3.52-8.38-7.07-16.75-10.5-25.17-.63-1.54-1.25-3.09-1.86-4.65-.31-.8-.65-1.6-.87-2.43-.04-.17-.17-.24-.31-.25.1-.2 0-.51-.29-.53-1.59-.08-3.18-.22-4.78-.25-1.96-.03-3.91.13-5.84.42-.31.05-.31.38-.13.56-.03.06-.05.14-.04.22.23 1.54.63 3.06 1.16 4.53.13.35.27.7.41 1.06l-2.68 6.18c-.11.03-.2.09-.25.22-.67 1.9-1.52 3.73-2.34 5.56a536.85 536.85 0 0 1-3.9 8.45c-2.64 5.64-5.34 11.25-7.91 16.93-.44.97-.88 1.94-1.29 2.93-.2.48-.47 1-.55 1.52v.05c-.02.12.02.26.16.34 1.19.73 2.41 1.41 3.66 2.05 1.2.62 2.45 1.25 3.76 1.61.43.12.62-.55.19-.67-1.13-.31-2.2-.83-3.24-1.36 1.09.36 2.1.69 2.75.93 2.82 1.01 2.38 1.1 4.3-3.75 2.1-1.09 4.34-1.96 6.53-2.79 4.35-1.64 8.8-3.03 13.27-4.29.82 2.01 1.77 3.97 2.72 5.92.35.83.62 1.45.79 1.82.22.42.45.8.69 1.15.17.33.33.67.5 1 .42.8.84 1.63 1.4 2.35.23.29.6 0 .55-.31 1.53-.02 3.06-.07 4.58-.27.92-.12 1.82-.32 2.71-.54 1.39-.27 3.85-1.11 3.74-1.42-.67-1.96-1.55-3.87-2.34-5.78-1.57-3.78-3.16-7.56-4.75-11.33v-.01Zm-11.65-26.16c1.54 3.81 3.12 7.6 4.7 11.4 2.94 7.05 5.91 14.09 8.87 21.13l-1.06-2.17c-2.71-5.51-5.2-11.19-7.41-16.87l-6.65-17.15c-.65-1.45-.55-2.19-.93-2.53.09 0 .18.01.28.02a.29.29 0 0 0-.04.26c.52 2.02 1.47 3.98 2.25 5.91h-.01Zm-6.58 13.58c.05-.15.09-.31.14-.46 1.41 3.92 2.88 7.9 4.39 11.87-3.22.52-6.38 1.25-9.46 2.14.55-1.22 1.05-2.46 1.53-3.7 1.24-3.24 2.37-6.53 3.39-9.85h.01Zm-.23-20c.36 0 .73.03 1.09.05-2.15.1-5.18.33-5.87.74-.24.15-.41.3-.53.45-.06-.29-.13-.58-.18-.88 1.82-.26 3.65-.39 5.49-.35v-.01Zm-.09 18.72c-.49 1.67-1.05 3.33-1.6 4.97-1.07 3.19-2.19 6.38-3.57 9.46-.09.21-.19.43-.29.65-.25.07-.5.14-.74.22 2.53-6.16 4.61-11.29 6.2-15.3Zm-6.34 25.16c4.97-2.38 9.37-4.1 14.02-5.27l.26.64c-4.8 1.35-9.63 2.8-14.28 4.63Zm20.17 6.76c.33.23.68.42 1.04.56h-.33c-.12 0-.21.06-.26.13-.15-.23-.31-.45-.45-.7v.01ZM226.57 91.75c-3.55-4.74-6.68-9.11-9.31-12.99 9.2-15.25 10.05-17.81 10.35-18.38.17-.34 1.09-2.27.64-2.53-1.13-.65-1.03-.65-2.97-1.71-1.19-.65-3.04-1.61-4.53-2.12-1.71-.59-1.24-.36-3 2.77-.06.1-.11.2-.17.3-.75 1.02-1.48 2.05-2.2 3.09-1.88 2.71-3.73 5.45-5.69 8.1-3.68-4.91-6.88-8.76-9.51-11.43-.15-.15-.3-.29-.46-.42-1.27-1.28-7.24 3.53-7.93 5.58-.09.09-.19.16-.28.25-.27.26.03.64.33.58.19.65.5 1.29.94 1.91 3.85 5.06 7.19 9.76 9.94 14-1.23 2.61-3.06 5-4.67 7.38l-2.28 3.33c-.5.66-.93 1.23-1.29 1.69-.67.93-2.09 2.61-2.3 3.87-.51.85-1.16 1.84-1.29 2.83-.06.44.61.63.67.19.01-.08.04-.15.06-.22 1.36 1.08 2.76 2.11 4.19 3.11 1.3.91 2.62 1.85 4.04 2.56.21.1.4 0 .48-.17.24.07.48.14.72.2.44.1.62-.57.19-.67-2.02-.48-3.77-1.57-5.23-3.02-.47-.46-.9-.96-1.32-1.46 1.74 1.35 4.2 2.89 5.89 4.14 1.39 1.03 2.85-2.27 4.22-4.2 1.86-2.64 3.96-5.86 5.52-8.29l10.39 14.51c.67.81 1.14 1.21 1.57 1.36-.05.24.12.51.41.4 1.53-.58 3.05-1.19 4.54-1.87 1.52-.69 3.06-1.45 4.36-2.5a.28.28 0 0 0 .12-.23c1.66-1.1.81-1.74-1.41-4.91-1.13-1.58-1.71-2.36-3.7-5.01l-.03-.02Zm2.41 6.54c.56 1.15 1.19 2.52 1.11 3.81-.06.04-.12.07-.17.1-.03-.88-.55-2.66-.94-3.91Zm-16.51-32.73c1.86-2.65 3.65-5.35 5.57-7.95.4-.55.81-1.13 1.26-1.66.19-.18.38-.33.56-.45.18.03.36.08.55.13l-8.05 10.11.12-.18h-.01ZM192.7 95.48c.79-1.37 1.66-2.69 2.54-4 1.19-1.79 2.4-3.56 3.61-5.33-.04.09-.09.17-.13.26-.1.22.03.41.2.49-2.47 3.42-4.89 6.73-6.4 9.28.21.24.4.48.63.75-.24.07-.4.36-.17.56.4.33.72.77 1.05 1.17.09.11.18.21.27.32-.84-.61-1.66-1.24-2.47-1.88.24-.57.58-1.11.87-1.61v-.01Zm7.46-10.32c.47-.81.98-1.59 1.49-2.37.31-.48.64-.95.96-1.43.26-.29.52-.56.75-.79-.99 1.48-2.09 3.03-3.2 4.59Zm10.03-16.22s-.03-.05-.05-.07c.22-.29.43-.59.64-.89-.2.32-.4.65-.58.96h-.01ZM371.54 87.96c-.01-.08-.01-.16-.03-.23-.06-.38-.58-.29-.66.03-.3-.05-.6-.08-.81-.11-1.14-.15-2.29-.19-3.44-.2 1.04-.09 2.09-.18 3.14-.23.45-.02.45-.72 0-.7-6.57.35-13.14 1.23-19.65 2.11-1.53.21-3.05.42-4.57.68-.01 0-.02.01-.04.01-.04-3.33-.13-6.66-.24-9.99-.19-5.7-.4-11.41-.88-17.1-.13-1.51-.23-3.07-.49-4.58 0-.25 0-.48-.02-.68-.06-1.19-.04-2.61-.68-2.78-.16-.07-.72-.16-1.5-.24.22-.17.16-.62-.2-.63-1.19-.04-2.39.09-3.57.23-1.2.14-2.41.32-3.59.6-.16-.1-.41-.06-.5.12-.06.02-.13.03-.19.05-.35.1-.29.55-.03.66-.26.6-.19 2.27-.21 3-.02.66-.66 33.73-.9 40.3-.03.65.06 1.12.04 1.45-.16 3.05.87 4.96 6.34 3.93 1.09-.08 2.75-.77 5.36-1.43 4.13-1.04 5.78-1.52 6.2-1.65 6.43-1.69 6.78-1.97 11.72-2.43.55-.05 4.8-.38 6.03-.3.64.04 1.19.07 1.65.1.09 0 .16-.03.24-.05.1.27.56.33.66-.02.39-1.32.61-2.71.78-4.08.2-1.61.29-3.24.15-4.86.24.03.52-.23.38-.53-.09-.2-.27-.33-.49-.43v-.02Zm-.63.56c.07.57.11 1.14.11 1.71-.21-.99-.53-1.71-.95-1.87.22.03.44.06.65.11.06.01.12.04.19.05Zm-25.41 1.73c1.54-.36 3.1-.64 4.66-.89-1.61.37-3.18.77-4.66 1.2v-.31Zm-.86-7.37c-.07-1.37-.16-2.75-.25-4.12-.21-3.13-.45-6.27-.79-9.4.02-2.25.08-4.31.13-6.11.16 2.08.29 4.16.4 6.24.23 4.46.38 8.93.5 13.39h.01Zm-.94-4c.16 2.41.29 4.83.39 7.24.06 1.6.14 3.22.09 4.83-.15.05-.32.09-.47.14V78.88h-.01ZM483.72 92.83c-3.05-2.28-6.22-4.4-9.38-6.51 8.86-6.49 13.49-12.95 13.73-19.23.04-.76 0-1.5-.13-2.2-.67-3.82-3.5-6.68-8.39-8.48.13.04.27.08.4.13 3.92 1.39 7.74 4.23 8.5 8.56.34 1.95-.05 3.96-.98 5.69-.21.4.39.75.6.35 1.86-3.46 1.46-7.55-.97-10.63-3.53-4.47-9.76-5.88-15.16-6.16-2.32-.12-4.64-.04-6.95.19-6 .32-12.71 1.68-17.63 3.21-.37.11-.67.23-.92.35-.2-.17-.62.02-.57.37v.03c-.64.68-.18 1.64.48 3.21.38.91.67 1.89 1.15 2.58.32.76.68 1.51 1.13 2.19.14.21.38.19.53.07.19-.02.38-.05.57-.08v1.57c-.06.06-.1.13-.11.23-.27 4.18-.34 8.38-.48 12.57l-.3 9.03c-.24 3.91-.44 6.77-.46 7.26-.05.88-.11 1.95.07 2.81-.01.22-.02.43-.04.65 0 .11-.02.23-.03.35 0 .05-.03.27-.01.16-.05.4.5.59.64.28.05.04.12.08.2.08 1.75.13 3.5.28 5.25.3 1.69.02 3.38-.12 5.06-.32.08.23.36.39.55.15.06-.08.11-.17.16-.26.18-.09.24-.32.18-.48.05-.2.1-.4.13-.6.16-.86.25-1.74.33-2.62.11-1.17.17-2.34.23-3.51.15-.01.32-.03.52-.04.36-.03 1.73-.15 2.06-.15.39 0 .7-.02.95-.04 1.76 1.11 3.45 2.35 5.14 3.55 2.83 2.01 5.64 4.04 8.47 6.04 1.42 1 2.85 2 4.29 2.97.1.06.19.07.27.04.08 0 .17-.02.25-.1 1.61-1.56 3.15-3.18 4.6-4.88.75-.88 1.49-1.78 2.15-2.73.01.01.03.02.04.03.34.3.83-.2.49-.49-2.16-1.9-4.34-3.76-6.64-5.48l.03-.01Zm-6.38-3.65a55.72 55.72 0 0 0-4-2.13c.14-.1.26-.19.4-.29 1.2.81 2.4 1.61 3.6 2.42Zm-20.1 11.78c.67-.37 1.23-.91 1.67-1.6-.11.5-.24 1-.38 1.49-.43.04-.86.08-1.29.11Zm2.38-37.24c1.34-.31 2.56-.52 3.71-.69-1.03.19-2.04.41-3.04.65-.14-.07-.34-.02-.45.11-.07.02-.15.04-.22.05v-.13.01Zm.04.84c.07-.02.14-.03.2-.05.34 1.66.41 3.41.5 5.09.17 2.9.24 5.81.28 8.71l.03 3.17c-.17.07-.34.14-.51.2-.06-4.96-.21-10.58-.51-17.12h.01Zm16.04 5.62c-1.16 2.25-3.06 4.1-5.02 5.66-2.8 2.23-5.99 3.97-9.3 5.35-.01-3.56-.09-7.12-.27-10.67-.1-2.04-.16-4.16-.57-6.18 3.3-.78 6.72-1.36 10.1-1.1 1.85.14 4.23.59 5.32 2.29.92 1.43.46 3.24-.26 4.65Zm.85-.18c.6-1.37.9-2.92.28-4.32-.67-1.52-2.2-2.32-3.76-2.74.46.1.89.21 1.29.37 1.74.67 2.69 1.88 2.93 3.21.2 1.13-.05 2.25-.74 3.47V70Zm-27.47-4.14c-.12-.19-.23-.38-.34-.57.74.42.85.36.99.41v.08c-.22.03-.43.06-.65.08Zm11.21 30.46c-.08 1.08-.16 2.17-.33 3.24-.05.35-.11.69-.2 1.03 0 .04-.02.07-.03.11-.15.02-.3.04-.45.05.45-1.64.76-3.36.79-5.07.03-.29.08-.57.1-.89-.03-.31-.03-.47.24-.57-.04.69-.07 1.39-.12 2.08v.02Zm5.6-2.47c.48.11.92.52 2.49 1.72-.46-.32-.92-.65-1.38-.97-.37-.25-.73-.5-1.1-.75h-.01Zm21.23 7.24a70.76 70.76 0 0 1-4.37 4.63c-.14-.09-.27-.19-.4-.28.19-.09.37-.24.55-.47.87-1.14 5.43-5.51 5.49-7.45.31.26.62.53.92.79-.67.97-1.42 1.88-2.19 2.77v.01Z", fill: "currentColor", transform: "translate(-144.023 -51.76)" })] }), WpA = ({ style: A, size: u = "small", withText: e }) => r.jsxs("div", { className: `ExcalidrawLogo is-${u}`, style: A, children: [r.jsx(ZpA, {}), e && r.jsx(qpA, {})] }), _9 = ({ icon: A, shortcut: u, children: e }) => {
  let C = J0();
  return r.jsxs(r.Fragment, { children: [r.jsx("div", { className: "welcome-screen-menu-item__icon", children: A }), r.jsx("div", { className: "welcome-screen-menu-item__text", children: e }), u && !C.editor.isMobile && r.jsx("div", { className: "welcome-screen-menu-item__shortcut", children: u })] });
};
_9.displayName = "WelcomeScreenMenuItemContent";
var Un = ({ onSelect: A, children: u, icon: e, shortcut: C, className: B = "", ...g }) => r.jsx("button", { ...g, type: "button", className: `welcome-screen-menu-item ${B}`, onClick: A, children: r.jsx(_9, { icon: e, shortcut: C, children: u }) });
Un.displayName = "WelcomeScreenMenuItem";
var bL = ({ children: A, href: u, icon: e, shortcut: C, className: B = "", ...g }) => r.jsx("a", { ...g, className: `welcome-screen-menu-item ${B}`, href: u, target: "_blank", rel: "noreferrer", children: r.jsx(_9, { icon: e, shortcut: C, children: A }) });
bL.displayName = "WelcomeScreenMenuItemLink";
var tt = ({ children: A }) => {
  let { WelcomeScreenCenterTunnel: u } = sC();
  return r.jsx(u.In, { children: r.jsx("div", { className: "welcome-screen-center", children: A || r.jsxs(r.Fragment, { children: [r.jsx($9, {}), r.jsx(A6, { children: S("welcomeScreen.defaults.center_heading") }), r.jsxs(u6, { children: [r.jsx(C6, {}), r.jsx(e6, {})] })] }) }) });
};
tt.displayName = "Center";
var $9 = ({ children: A }) => r.jsx("div", { className: "welcome-screen-center__logo excalifont welcome-screen-decor", children: A || r.jsx(WpA, { withText: !0 }) });
$9.displayName = "Logo";
var A6 = ({ children: A }) => r.jsx("div", { className: "welcome-screen-center__heading welcome-screen-decor excalifont", children: A });
A6.displayName = "Heading";
var u6 = ({ children: A }) => r.jsx("div", { className: "welcome-screen-menu", children: A });
u6.displayName = "Menu";
var e6 = () => {
  let A = $e();
  return r.jsx(Un, { onSelect: () => A.executeAction(M9), shortcut: "?", icon: r2, children: S("helpDialog.title") });
};
e6.displayName = "MenuItemHelp";
var C6 = () => {
  let A = xe(), u = $e();
  return A.viewModeEnabled ? null : r.jsx(Un, { onSelect: () => u.executeAction(x1), shortcut: De("loadScene"), icon: s2, children: S("buttons.load") });
};
C6.displayName = "MenuItemLoadScene";
var UL = ({ onSelect: A }) => {
  let { t: u } = Fe();
  return r.jsx(Un, { shortcut: null, onSelect: A, icon: P8, children: u("labels.liveCollaboration") });
};
UL.displayName = "MenuItemLiveCollaborationTrigger";
tt.Logo = $9;
tt.Heading = A6;
tt.Menu = u6;
tt.MenuItem = Un;
tt.MenuItemLink = bL;
tt.MenuItemHelp = e6;
tt.MenuItemLoadScene = C6;
tt.MenuItemLiveCollaborationTrigger = UL;
var jpA = ({ children: A }) => {
  let { WelcomeScreenMenuHintTunnel: u } = sC();
  return r.jsx(u.In, { children: r.jsxs("div", { className: "excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu", children: [XaA, r.jsx("div", { className: "welcome-screen-decor-hint__label", children: A || S("welcomeScreen.defaults.menuHint") })] }) });
};
jpA.displayName = "MenuHint";
var TpA = ({ children: A }) => {
  let { WelcomeScreenToolbarHintTunnel: u } = sC();
  return r.jsx(u.In, { children: r.jsxs("div", { className: "excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar", children: [r.jsx("div", { className: "welcome-screen-decor-hint__label", children: A || S("welcomeScreen.defaults.toolbarHint") }), $aA] }) });
};
TpA.displayName = "ToolbarHint";
var zpA = ({ children: A }) => {
  let { WelcomeScreenHelpHintTunnel: u } = sC();
  return r.jsx(u.In, { children: r.jsxs("div", { className: "excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help", children: [r.jsx("div", { children: A || S("welcomeScreen.defaults.helpHint") }), _aA] }) });
};
zpA.displayName = "HelpHint";
In((A, u, e) => {
  if (tu.DEV || tu.MODE === Oe.TEST || window?.DEBUG_FRACTIONAL_INDICES) {
    let C = Pg(A.map((B) => ({ ...B })));
    L2(C, { shouldThrow: tu.DEV || tu.MODE === Oe.TEST, includeBoundTextValidation: !0, reconciliationContext: { localElements: u, remoteElements: e } });
  }
}, 1e3 * 60, { leading: !0, trailing: !1 });
JpA();
var PpA = (A) => {
  let { onChange: u, initialData: e, excalidrawAPI: C, isCollaborating: B = !1, onPointerUpdate: g, renderTopRightUI: t, langCode: i = fI.code, viewModeEnabled: I, zenModeEnabled: o, gridModeEnabled: E, libraryReturnUrl: Q, theme: s, name: l, renderCustomStats: c, onPaste: D, detectScroll: h = !0, handleKeyboardGlobally: F = !1, onLibraryChange: m, autoFocus: p = !1, generateIdForFile: k, onLinkOpen: b, generateLinkForSelection: f, onPointerDown: L, onPointerUp: N, onScrollChange: M, onDuplicate: v, children: K, validateEmbeddable: q, renderEmbeddable: j, aiEnabled: uA, showDeprecatedFonts: O, onImageInsert: $ } = A, X = A.UIOptions?.canvasActions, P = { ...A.UIOptions, canvasActions: { ...sF.canvasActions, ...X }, tools: { image: A.UIOptions?.tools?.image ?? !0 } };
  return X?.export && (P.canvasActions.export.saveFileToDisk = X.export?.saveFileToDisk ?? sF.canvasActions.export.saveFileToDisk), P.canvasActions.toggleTheme === null && typeof s > "u" && (P.canvasActions.toggleTheme = !0), x.useEffect(() => {
    (async () => await import("./chunk-BlwB2yOK.js").then((CA) => CA.r))();
    let _ = (CA) => {
      typeof CA.scale == "number" && CA.scale !== 1 && CA.preventDefault();
    };
    return document.addEventListener("touchmove", _, { passive: !1 }), () => {
      document.removeEventListener("touchmove", _);
    };
  }, []), r.jsx(M9A, { store: QB, children: r.jsx(K9A, { langCode: i, theme: s, children: r.jsx(HpA, { onChange: u, initialData: e, excalidrawAPI: C, isCollaborating: B, onPointerUpdate: g, renderTopRightUI: t, langCode: i, viewModeEnabled: I, zenModeEnabled: o, gridModeEnabled: E, libraryReturnUrl: Q, theme: s, name: l, renderCustomStats: c, UIOptions: P, onPaste: D, detectScroll: h, handleKeyboardGlobally: F, onLibraryChange: m, autoFocus: p, generateIdForFile: k, onLinkOpen: b, generateLinkForSelection: f, onPointerDown: L, onPointerUp: N, onScrollChange: M, onDuplicate: v, validateEmbeddable: q, renderEmbeddable: j, aiEnabled: uA !== !1, showDeprecatedFonts: O, onImageInsert: $, children: K }) }) });
}, OpA = (A, u) => {
  if (A.children !== u.children) return !1;
  let { initialData: e, UIOptions: C = {}, ...B } = A, { initialData: g, UIOptions: t = {}, ...i } = u, I = Object.keys(C), o = Object.keys(t);
  return I.length !== o.length ? !1 : I.every((E) => E === "canvasActions" ? Object.keys(C.canvasActions).every((Q) => Q === "export" && C?.canvasActions?.export && t?.canvasActions?.export ? C.canvasActions.export.saveFileToDisk === t.canvasActions.export.saveFileToDisk : C?.canvasActions?.[Q] === t?.canvasActions?.[Q]) : C[E] === t[E]) && Ee(B, i);
}, VpA = kA.memo(PpA, OpA);
VpA.displayName = "Excalidraw";
var XpA = (() => {
  let A = new Uint8Array(128);
  for (let u = 0; u < 64; u++) A[u < 26 ? u + 65 : u < 52 ? u + 71 : u < 62 ? u - 4 : u * 4 - 205] = u;
  return (u) => {
    let e = u.length, C = new Uint8Array((e - (u[e - 1] == "=") - (u[e - 2] == "=")) * 3 / 4 | 0);
    for (let B = 0, g = 0; B < e; ) {
      let t = A[u.charCodeAt(B++)], i = A[u.charCodeAt(B++)], I = A[u.charCodeAt(B++)], o = A[u.charCodeAt(B++)];
      C[g++] = t << 2 | i >> 4, C[g++] = i << 4 | I >> 2, C[g++] = I << 6 | o;
    }
    return C;
  };
})(), _pA = XpA(" "), $pA = (function() {
  let A = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0;
  return function(e) {
    e = e || {};
    var e = typeof e < "u" ? e : {};
    let C = {}, B;
    for (B in e) e.hasOwnProperty(B) && (C[B] = e[B]);
    let g = function(R, Y) {
      throw Y;
    }, t = !1, i = !1, I = !1, o = !1, E = !1;
    if (t = typeof window == "object", i = typeof importScripts == "function", o = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string", I = o && !t && !i, E = !t && !I && !i, e.ENVIRONMENT) throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");
    let Q = "";
    function s(R) {
      return e.locateFile ? e.locateFile(R, Q) : Q + R;
    }
    let l, c;
    if (I) {
      Q = `${__dirname}/`;
      let R, Y;
      l = function(z, BA) {
        let oA;
        return R || (R = Cw(["fs"].join())), Y || (Y = Cw(["path"].join())), z = Y.normalize(z), oA = R.readFileSync(z), BA ? oA : oA.toString();
      }, c = function(z) {
        let BA = l(z, !0);
        return BA.buffer || (BA = new Uint8Array(BA)), M(BA.buffer), BA;
      }, process.argv.length > 1 && process.argv[1].replace(/\\/g, "/"), process.argv.slice(2), process.on("uncaughtException", (z) => {
        if (!(z instanceof to)) throw z;
      }), process.on("unhandledRejection", lA), g = function(z) {
        process.exit(z);
      }, e.inspect = function() {
        return "[Emscripten Module object]";
      };
    } else if (E) typeof read < "u" && (l = function(R) {
      return read(R);
    }), c = function(R) {
      let Y;
      return typeof readbuffer == "function" ? new Uint8Array(readbuffer(R)) : (Y = read(R, "binary"), M(typeof Y == "object"), Y);
    }, typeof scriptArgs < "u" ? scriptArgs : typeof arguments < "u", typeof quit == "function" && (g = function(R) {
      quit(R);
    }), typeof print < "u" && (typeof console > "u" && (console = {}), console.log = print, console.warn = console.error = typeof printErr < "u" ? printErr : print);
    else if (t || i) i ? Q = self.location.href : document.currentScript && (Q = document.currentScript.src), A && (Q = A), Q.indexOf("blob:") !== 0 ? Q = Q.substr(0, Q.lastIndexOf("/") + 1) : Q = "", l = function(R) {
      let Y = new XMLHttpRequest();
      return Y.open("GET", R, !1), Y.send(null), Y.responseText;
    }, i && (c = function(R) {
      let Y = new XMLHttpRequest();
      return Y.open("GET", R, !1), Y.responseType = "arraybuffer", Y.send(null), new Uint8Array(Y.response);
    });
    else throw new Error("environment detection error");
    let D = e.print || function() {
    }, h = e.printErr || function() {
    };
    for (B in C) C.hasOwnProperty(B) && (e[B] = C[B]);
    C = null, e.arguments && e.arguments, Object.getOwnPropertyDescriptor(e, "arguments") || Object.defineProperty(e, "arguments", { configurable: !0, get() {
      lA("Module.arguments has been replaced with plain arguments_");
    } }), e.thisProgram && e.thisProgram, Object.getOwnPropertyDescriptor(e, "thisProgram") || Object.defineProperty(e, "thisProgram", { configurable: !0, get() {
      lA("Module.thisProgram has been replaced with plain thisProgram");
    } }), e.quit && (g = e.quit), Object.getOwnPropertyDescriptor(e, "quit") || Object.defineProperty(e, "quit", { configurable: !0, get() {
      lA("Module.quit has been replaced with plain quit_");
    } }), M(typeof e.memoryInitializerPrefixURL > "u", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"), M(typeof e.pthreadMainPrefixURL > "u", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"), M(typeof e.cdInitializerPrefixURL > "u", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"), M(typeof e.filePackagePrefixURL > "u", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"), M(typeof e.read > "u", "Module.read option was removed (modify read_ in JS)"), M(typeof e.readAsync > "u", "Module.readAsync option was removed (modify readAsync in JS)"), M(typeof e.readBinary > "u", "Module.readBinary option was removed (modify readBinary in JS)"), M(typeof e.setWindowTitle > "u", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"), Object.getOwnPropertyDescriptor(e, "read") || Object.defineProperty(e, "read", { configurable: !0, get() {
      lA("Module.read has been replaced with plain read_");
    } }), Object.getOwnPropertyDescriptor(e, "readAsync") || Object.defineProperty(e, "readAsync", { configurable: !0, get() {
      lA("Module.readAsync has been replaced with plain readAsync");
    } }), Object.getOwnPropertyDescriptor(e, "readBinary") || Object.defineProperty(e, "readBinary", { configurable: !0, get() {
      lA("Module.readBinary has been replaced with plain readBinary");
    } }), Yi = go = Bo = function() {
      lA("cannot use the stack before compiled code is ready to run, and has provided stack access");
    };
    function F(R) {
      F.shown || (F.shown = {}), F.shown[R] || (F.shown[R] = 1, h(R));
    }
    let m = { "f64-rem"(R, Y) {
      return R % Y;
    }, debugger() {
      debugger;
    } };
    new Array(0);
    let p = function(R) {
    }, k;
    e.wasmBinary && (k = e.wasmBinary), Object.getOwnPropertyDescriptor(e, "wasmBinary") || Object.defineProperty(e, "wasmBinary", { configurable: !0, get() {
      lA("Module.wasmBinary has been replaced with plain wasmBinary");
    } });
    let b;
    e.noExitRuntime && (b = e.noExitRuntime), Object.getOwnPropertyDescriptor(e, "noExitRuntime") || Object.defineProperty(e, "noExitRuntime", { configurable: !0, get() {
      lA("Module.noExitRuntime has been replaced with plain noExitRuntime");
    } }), typeof WebAssembly != "object" && lA("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.");
    let f, L = new WebAssembly.Table({ initial: 352, maximum: 352, element: "anyfunc" }), N = !1;
    function M(R, Y) {
      R || lA(`Assertion failed: ${Y}`);
    }
    function v(R) {
      let Y = e[`_${R}`];
      return M(Y, `Cannot call unknown function ${R}, make sure it is exported`), Y;
    }
    function K(R, Y, z, BA, oA) {
      let sA = { string(eu) {
        let Du = 0;
        if (eu != null && eu !== 0) {
          let ju = (eu.length << 2) + 1;
          Du = Bo(ju), X(eu, Du, ju);
        }
        return Du;
      }, array(eu) {
        let Du = Bo(eu.length);
        return _(eu, Du), Du;
      } };
      function cA(eu) {
        return Y === "string" ? O(eu) : Y === "boolean" ? !!eu : eu;
      }
      let rA = v(R), wA = [], YA = 0;
      if (M(Y !== "array", 'Return type should not be "array".'), BA) for (let eu = 0; eu < BA.length; eu++) {
        let Du = sA[z[eu]];
        Du ? (YA === 0 && (YA = Yi()), wA[eu] = Du(BA[eu])) : wA[eu] = BA[eu];
      }
      let au = rA.apply(null, wA);
      return au = cA(au), YA !== 0 && go(YA), au;
    }
    function q(R, Y, z, BA) {
      return function() {
        return K(R, Y, z, arguments);
      };
    }
    let j = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0;
    function uA(R, Y, z) {
      let BA = Y + z, oA = Y;
      for (; R[oA] && !(oA >= BA); ) ++oA;
      if (oA - Y > 16 && R.subarray && j) return j.decode(R.subarray(Y, oA));
      let sA = "";
      for (; Y < oA; ) {
        let cA = R[Y++];
        if (!(cA & 128)) {
          sA += String.fromCharCode(cA);
          continue;
        }
        let rA = R[Y++] & 63;
        if ((cA & 224) == 192) {
          sA += String.fromCharCode((cA & 31) << 6 | rA);
          continue;
        }
        let wA = R[Y++] & 63;
        if ((cA & 240) == 224 ? cA = (cA & 15) << 12 | rA << 6 | wA : ((cA & 248) != 240 && F(`Invalid UTF-8 leading byte 0x${cA.toString(16)} encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!`), cA = (cA & 7) << 18 | rA << 12 | wA << 6 | R[Y++] & 63), cA < 65536) sA += String.fromCharCode(cA);
        else {
          let YA = cA - 65536;
          sA += String.fromCharCode(55296 | YA >> 10, 56320 | YA & 1023);
        }
      }
      return sA;
    }
    function O(R, Y) {
      return R ? uA(fA, R, Y) : "";
    }
    function $(R, Y, z, BA) {
      if (!(BA > 0)) return 0;
      let oA = z, sA = z + BA - 1;
      for (let cA = 0; cA < R.length; ++cA) {
        let rA = R.charCodeAt(cA);
        if (rA >= 55296 && rA <= 57343) {
          let wA = R.charCodeAt(++cA);
          rA = 65536 + ((rA & 1023) << 10) | wA & 1023;
        }
        if (rA <= 127) {
          if (z >= sA) break;
          Y[z++] = rA;
        } else if (rA <= 2047) {
          if (z + 1 >= sA) break;
          Y[z++] = 192 | rA >> 6, Y[z++] = 128 | rA & 63;
        } else if (rA <= 65535) {
          if (z + 2 >= sA) break;
          Y[z++] = 224 | rA >> 12, Y[z++] = 128 | rA >> 6 & 63, Y[z++] = 128 | rA & 63;
        } else {
          if (z + 3 >= sA) break;
          rA >= 2097152 && F(`Invalid Unicode code point 0x${rA.toString(16)} encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).`), Y[z++] = 240 | rA >> 18, Y[z++] = 128 | rA >> 12 & 63, Y[z++] = 128 | rA >> 6 & 63, Y[z++] = 128 | rA & 63;
        }
      }
      return Y[z] = 0, z - oA;
    }
    function X(R, Y, z) {
      return M(typeof z == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"), $(R, fA, Y, z);
    }
    function P(R) {
      let Y = 0;
      for (let z = 0; z < R.length; ++z) {
        let BA = R.charCodeAt(z);
        BA >= 55296 && BA <= 57343 && (BA = 65536 + ((BA & 1023) << 10) | R.charCodeAt(++z) & 1023), BA <= 127 ? ++Y : BA <= 2047 ? Y += 2 : BA <= 65535 ? Y += 3 : Y += 4;
      }
      return Y;
    }
    typeof TextDecoder < "u" && new TextDecoder("utf-16le");
    function _(R, Y) {
      M(R.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)"), GA.set(R, Y);
    }
    let CA = 65536;
    function T(R, Y) {
      return R % Y > 0 && (R += Y - R % Y), R;
    }
    let gA, GA, fA, qA, JA, mA, FA, TA, WA;
    function ru(R) {
      gA = R, e.HEAP8 = GA = new Int8Array(R), e.HEAP16 = qA = new Int16Array(R), e.HEAP32 = mA = new Int32Array(R), e.HEAPU8 = fA = new Uint8Array(R), e.HEAPU16 = JA = new Uint16Array(R), e.HEAPU32 = FA = new Uint32Array(R), e.HEAPF32 = TA = new Float32Array(R), e.HEAPF64 = WA = new Float64Array(R);
    }
    let _u = 434112, N0 = 5676992, HC = 5676992, kB = 433920;
    M(_u % 16 === 0, "stack must start aligned"), M(HC % 16 === 0, "heap must start aligned");
    let pe = 5242880;
    e.TOTAL_STACK && M(pe === e.TOTAL_STACK, "the stack size can no longer be determined at runtime");
    let Ig = e.TOTAL_MEMORY || 16777216;
    Object.getOwnPropertyDescriptor(e, "TOTAL_MEMORY") || Object.defineProperty(e, "TOTAL_MEMORY", { configurable: !0, get() {
      lA("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY");
    } }), M(Ig >= pe, `TOTAL_MEMORY should be larger than TOTAL_STACK, was ${Ig}! (TOTAL_STACK=${pe})`), M(typeof Int32Array < "u" && typeof Float64Array < "u" && Int32Array.prototype.subarray !== void 0 && Int32Array.prototype.set !== void 0, "JS engine does not provide full typed array support"), e.wasmMemory ? f = e.wasmMemory : f = new WebAssembly.Memory({ initial: Ig / CA }), f && (gA = f.buffer), Ig = gA.byteLength, M(Ig % CA === 0), ru(gA), mA[kB >> 2] = HC;
    function SI() {
      M((N0 & 3) == 0), FA[(N0 >> 2) - 1] = 34821223, FA[(N0 >> 2) - 2] = 2310721022, mA[0] = 1668509029;
    }
    function yB() {
      let R = FA[(N0 >> 2) - 1], Y = FA[(N0 >> 2) - 2];
      (R != 34821223 || Y != 2310721022) && lA(`Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x${Y.toString(16)} ${R.toString(16)}`), mA[0] !== 1668509029 && lA("Runtime error: The application has corrupted its heap memory area (address zero)!");
    }
    function it(R) {
      lA(`Stack overflow! Attempted to allocate ${R} bytes on the stack, but stack has only ${N0 - Yi() + R} bytes available!`);
    }
    (function() {
      let R = new Int16Array(1), Y = new Int8Array(R.buffer);
      if (R[0] = 25459, Y[0] !== 115 || Y[1] !== 99) throw "Runtime error: expected the system to be little-endian!";
    })();
    function p0(R, Y) {
      lA(`Invalid function pointer ${R} called with signature '${Y}'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info.`);
    }
    function Et(R) {
      for (; R.length > 0; ) {
        let Y = R.shift();
        if (typeof Y == "function") {
          Y();
          continue;
        }
        let z = Y.func;
        typeof z == "number" ? Y.arg === void 0 ? e.dynCall_v(z) : e.dynCall_vi(z, Y.arg) : z(Y.arg === void 0 ? null : Y.arg);
      }
    }
    let NI = [], RI = [], Gn = [], MI = [], Gu = !1, fu = !1;
    function fn() {
      if (e.preRun) for (typeof e.preRun == "function" && (e.preRun = [e.preRun]); e.preRun.length; ) xn(e.preRun.shift());
      Et(NI);
    }
    function di() {
      yB(), M(!Gu), Gu = !0, Et(RI);
    }
    function Di() {
      yB(), Et(Gn);
    }
    function X4() {
      yB(), fu = !0;
    }
    function Ln() {
      if (yB(), e.postRun) for (typeof e.postRun == "function" && (e.postRun = [e.postRun]); e.postRun.length; ) _4(e.postRun.shift());
      Et(MI);
    }
    function xn(R) {
      NI.unshift(R);
    }
    function _4(R) {
      MI.unshift(R);
    }
    M(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"), M(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"), M(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"), M(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
    let KC = 0, JC = null, og = null, Qg = {};
    function YI(R) {
      KC++, e.monitorRunDependencies && e.monitorRunDependencies(KC), M(!Qg[R]), Qg[R] = 1, JC === null && typeof setInterval < "u" && (JC = setInterval(() => {
        if (N) {
          clearInterval(JC), JC = null;
          return;
        }
        let Y = !1;
        for (let z in Qg) Y || (Y = !0, h("still waiting on run dependencies:")), h(`dependency: ${z}`);
        Y && h("(end of list)");
      }, 1e4));
    }
    function at(R) {
      if (KC--, e.monitorRunDependencies && e.monitorRunDependencies(KC), M(Qg[R]), delete Qg[R], KC == 0 && (JC !== null && (clearInterval(JC), JC = null), og)) {
        let Y = og;
        og = null, Y();
      }
    }
    e.preloadedImages = {}, e.preloadedAudios = {};
    function lA(R) {
      throw e.onAbort && e.onAbort(R), R += "", D(R), h(R), N = !0, `abort(${R}) at ${$4()}`;
    }
    var m0 = { error() {
      lA("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with  -s FORCE_FILESYSTEM=1");
    }, init() {
      m0.error();
    }, createDataFile() {
      m0.error();
    }, createPreloadedFile() {
      m0.error();
    }, createLazyFile() {
      m0.error();
    }, open() {
      m0.error();
    }, mkdev() {
      m0.error();
    }, registerDevice() {
      m0.error();
    }, analyzePath() {
      m0.error();
    }, loadFilesFromDB() {
      m0.error();
    }, ErrnoError: function() {
      m0.error();
    } };
    e.FS_createDataFile = m0.createDataFile, e.FS_createPreloadedFile = m0.createPreloadedFile;
    let vI = "data:application/octet-stream;base64,";
    function HI(R) {
      return String.prototype.startsWith ? R.startsWith(vI) : R.indexOf(vI) === 0;
    }
    let ZC = "woff2.wasm";
    HI(ZC) || (ZC = s(ZC));
    function KI() {
      try {
        if (k) return new Uint8Array(k);
        if (c) return c(ZC);
        throw "both async and sync fetching of the wasm failed";
      } catch (R) {
        lA(R);
      }
    }
    function JI() {
      return !k && (t || i) && typeof fetch == "function" ? fetch(ZC, { credentials: "same-origin" }).then((R) => {
        if (!R.ok) throw `failed to load wasm binary file at '${ZC}'`;
        return R.arrayBuffer();
      }).catch(() => KI()) : new Promise((R, Y) => {
        R(KI());
      });
    }
    function Sn() {
      let R = { env: eo, wasi_unstable: eo, global: { NaN: NaN, Infinity: 1 / 0 }, "global.Math": Math, asm2wasm: m };
      function Y(cA, rA) {
        let wA = cA.exports;
        e.asm = wA, at("wasm-instantiate");
      }
      YI("wasm-instantiate");
      let z = e;
      function BA(cA) {
        M(e === z, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"), z = null, Y(cA.instance);
      }
      function oA(cA) {
        return JI().then((rA) => WebAssembly.instantiate(rA, R)).then(cA, (rA) => {
          h(`failed to asynchronously prepare wasm: ${rA}`), lA(rA);
        });
      }
      function sA() {
        if (!k && typeof WebAssembly.instantiateStreaming == "function" && !HI(ZC) && typeof fetch == "function" && typeof process == "object" && process.versions && process.versions.node && +process.versions.node.split(".")[0] < 17) fetch(ZC, { credentials: "same-origin" }).then((cA) => WebAssembly.instantiateStreaming(cA, R).then(BA, (rA) => {
          h(`wasm streaming compile failed: ${rA}`), h("falling back to ArrayBuffer instantiation"), oA(BA);
        }));
        else return oA(BA);
      }
      if (e.instantiateWasm) try {
        return e.instantiateWasm(R, Y);
      } catch (cA) {
        return h(`Module.instantiateWasm callback failed with error: ${cA}`), !1;
      }
      return sA(), {};
    }
    e.asm = Sn, RI.push({ func() {
      ga();
    } }), M(434096 % 8 == 0);
    function hi(R) {
      let Y = e.___cxa_demangle || e.__cxa_demangle;
      M(Y);
      try {
        let sA = R;
        sA.startsWith("__Z") && (sA = sA.substr(1));
        let cA = P(sA) + 1;
        var z = Mi(cA);
        X(sA, z, cA);
        var BA = Mi(4), oA = Y(z, 0, 0, BA);
        if (mA[BA >> 2] === 0 && oA) return O(oA);
      } catch {
      } finally {
        z && ee(z), BA && ee(BA), oA && ee(oA);
      }
      return R;
    }
    function ZI(R) {
      let Y = /\b__Z[\w\d_]+/g;
      return R.replace(Y, (z) => {
        let BA = hi(z);
        return z === BA ? z : `${BA} [${z}]`;
      });
    }
    function wi() {
      let R = new Error();
      if (!R.stack) {
        try {
          throw new Error(0);
        } catch (Y) {
          R = Y;
        }
        if (!R.stack) return "(no stack trace available)";
      }
      return R.stack.toString();
    }
    function $4() {
      let R = wi();
      return e.extraStackTrace && (R += `
${e.extraStackTrace()}`), ZI(R);
    }
    function Fi(R, Y, z, BA) {
      lA(`Assertion failed: ${O(R)}, at: ${[Y ? O(Y) : "unknown filename", z, BA ? O(BA) : "unknown function"]}`);
    }
    function qE(R) {
      return Mi(R);
    }
    function WE(R, Y, z) {
      throw "uncaught_exception" in Ba ? Ba.uncaught_exceptions++ : Ba.uncaught_exceptions = 1, `${R} - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.`;
    }
    function qI() {
    }
    function A3() {
    }
    var AC = { buffers: [null, [], []], printChar(R, Y) {
      let z = AC.buffers[R];
      M(z), Y === 0 || Y === 10 ? ((R === 1 ? D : h)(uA(z, 0)), z.length = 0) : z.push(Y);
    }, varargs: 0, get(R) {
      return AC.varargs += 4, mA[AC.varargs - 4 >> 2];
    }, getStr() {
      return O(AC.get());
    }, get64() {
      let R = AC.get(), Y = AC.get();
      return R >= 0 ? M(Y === 0) : M(Y === -1), R;
    }, getZero() {
      M(AC.get() === 0);
    } };
    function u3(R) {
      try {
        return lA("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM"), 0;
      } catch (Y) {
        return (typeof m0 > "u" || !(Y instanceof m0.ErrnoError)) && lA(Y), Y.errno;
      }
    }
    function ng() {
      return u3.apply(null, arguments);
    }
    function Nn(R, Y, z, BA, oA) {
      try {
        return lA("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM"), 0;
      } catch (sA) {
        return (typeof m0 > "u" || !(sA instanceof m0.ErrnoError)) && lA(sA), sA.errno;
      }
    }
    function Rn() {
      return Nn.apply(null, arguments);
    }
    function e3() {
      let R = e._fflush;
      R && R(0);
      let Y = AC.buffers;
      Y[1].length && AC.printChar(1, 10), Y[2].length && AC.printChar(2, 10);
    }
    function Mn(R, Y, z, BA) {
      try {
        let oA = 0;
        for (let sA = 0; sA < z; sA++) {
          let cA = mA[Y + sA * 8 >> 2], rA = mA[Y + (sA * 8 + 4) >> 2];
          for (let wA = 0; wA < rA; wA++) AC.printChar(R, fA[cA + wA]);
          oA += rA;
        }
        return mA[BA >> 2] = oA, 0;
      } catch (oA) {
        return (typeof m0 > "u" || !(oA instanceof m0.ErrnoError)) && lA(oA), oA.errno;
      }
    }
    function Yn() {
      return Mn.apply(null, arguments);
    }
    function jE(R) {
      switch (R) {
        case 1:
          return 0;
        case 2:
          return 1;
        case 4:
          return 2;
        case 8:
          return 3;
        default:
          throw new TypeError(`Unknown type size: ${R}`);
      }
    }
    function vn() {
      let R = new Array(256);
      for (let Y = 0; Y < 256; ++Y) R[Y] = String.fromCharCode(Y);
      Hn = R;
    }
    var Hn = void 0;
    function me(R) {
      let Y = "", z = R;
      for (; fA[z]; ) Y += Hn[fA[z++]];
      return Y;
    }
    let Ku = {}, rg = {}, It = {}, Kn = 48, TE = 57;
    function WI(R) {
      if (R === void 0) return "_unknown";
      R = R.replace(/[^a-zA-Z0-9_]/g, "$");
      let Y = R.charCodeAt(0);
      return Y >= Kn && Y <= TE ? `_${R}` : R;
    }
    function zE(R, Y) {
      return R = WI(R), new Function("body", `return function ${R}() {
    "use strict";    return body.apply(this, arguments);
};
`)(Y);
    }
    function ot(R, Y) {
      let z = zE(Y, function(BA) {
        this.name = Y, this.message = BA;
        let oA = new Error(BA).stack;
        oA !== void 0 && (this.stack = `${this.toString()}
${oA.replace(/^Error(:[^\n]*)?\n/, "")}`);
      });
      return z.prototype = Object.create(R.prototype), z.prototype.constructor = z, z.prototype.toString = function() {
        return this.message === void 0 ? this.name : `${this.name}: ${this.message}`;
      }, z;
    }
    let Ae;
    function Fu(R) {
      throw new Ae(R);
    }
    let Se;
    function PE(R) {
      throw new Se(R);
    }
    function Qt(R, Y, z) {
      R.forEach((rA) => {
        It[rA] = Y;
      });
      function BA(rA) {
        let wA = z(rA);
        wA.length !== R.length && PE("Mismatched type converter count");
        for (let YA = 0; YA < R.length; ++YA) qC(R[YA], wA[YA]);
      }
      let oA = new Array(Y.length), sA = [], cA = 0;
      Y.forEach((rA, wA) => {
        rg.hasOwnProperty(rA) ? oA[wA] = rg[rA] : (sA.push(rA), Ku.hasOwnProperty(rA) || (Ku[rA] = []), Ku[rA].push(() => {
          oA[wA] = rg[rA], ++cA, cA === sA.length && BA(oA);
        }));
      }), sA.length === 0 && BA(oA);
    }
    function qC(R, Y, z) {
      if (z = z || {}, !("argPackAdvance" in Y)) throw new TypeError("registerType registeredInstance requires argPackAdvance");
      let BA = Y.name;
      if (R || Fu(`type "${BA}" must have a positive integer typeid pointer`), rg.hasOwnProperty(R)) {
        if (z.ignoreDuplicateRegistrations) return;
        Fu(`Cannot register type '${BA}' twice`);
      }
      if (rg[R] = Y, delete It[R], Ku.hasOwnProperty(R)) {
        let oA = Ku[R];
        delete Ku[R], oA.forEach((sA) => {
          sA();
        });
      }
    }
    function OE(R, Y, z, BA, oA) {
      let sA = jE(z);
      Y = me(Y), qC(R, { name: Y, fromWireType(cA) {
        return !!cA;
      }, toWireType(cA, rA) {
        return rA ? BA : oA;
      }, argPackAdvance: 8, readValueFromPointer(cA) {
        let rA;
        if (z === 1) rA = GA;
        else if (z === 2) rA = qA;
        else if (z === 4) rA = mA;
        else throw new TypeError(`Unknown boolean type size: ${Y}`);
        return this.fromWireType(rA[cA >> sA]);
      }, destructorFunction: null });
    }
    function VE(R) {
      if (!(this instanceof WC) || !(R instanceof WC)) return !1;
      let Y = this.$$.ptrType.registeredClass, z = this.$$.ptr, BA = R.$$.ptrType.registeredClass, oA = R.$$.ptr;
      for (; Y.baseClass; ) z = Y.upcast(z), Y = Y.baseClass;
      for (; BA.baseClass; ) oA = BA.upcast(oA), BA = BA.baseClass;
      return Y === BA && z === oA;
    }
    function pi(R) {
      return { count: R.count, deleteScheduled: R.deleteScheduled, preservePointerOnDelete: R.preservePointerOnDelete, ptr: R.ptr, ptrType: R.ptrType, smartPtr: R.smartPtr, smartPtrType: R.smartPtrType };
    }
    function nt(R) {
      function Y(z) {
        return z.$$.ptrType.registeredClass.name;
      }
      Fu(`${Y(R)} instance already deleted`);
    }
    let jI = !1;
    function Jn(R) {
    }
    function TI(R) {
      R.smartPtr ? R.smartPtrType.rawDestructor(R.smartPtr) : R.ptrType.registeredClass.rawDestructor(R.ptr);
    }
    function zI(R) {
      R.count.value -= 1, R.count.value === 0 && TI(R);
    }
    function sg(R) {
      return typeof FinalizationGroup > "u" ? (sg = function(Y) {
        return Y;
      }, R) : (jI = new FinalizationGroup((Y) => {
        for (let z = Y.next(); !z.done; z = Y.next()) {
          let BA = z.value;
          BA.ptr ? zI(BA) : console.warn(`object already deleted: ${BA.ptr}`);
        }
      }), sg = function(Y) {
        return jI.register(Y, Y.$$, Y.$$), Y;
      }, Jn = function(Y) {
        jI.unregister(Y.$$);
      }, sg(R));
    }
    function mi() {
      if (this.$$.ptr || nt(this), this.$$.preservePointerOnDelete) return this.$$.count.value += 1, this;
      let R = sg(Object.create(Object.getPrototypeOf(this), { $$: { value: pi(this.$$) } }));
      return R.$$.count.value += 1, R.$$.deleteScheduled = !1, R;
    }
    function C3() {
      this.$$.ptr || nt(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && Fu("Object already scheduled for deletion"), Jn(this), zI(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0);
    }
    function PI() {
      return !this.$$.ptr;
    }
    let du, rt = [];
    function XE() {
      for (; rt.length; ) {
        let R = rt.pop();
        R.$$.deleteScheduled = !1, R.delete();
      }
    }
    function OI() {
      return this.$$.ptr || nt(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && Fu("Object already scheduled for deletion"), rt.push(this), rt.length === 1 && du && du(XE), this.$$.deleteScheduled = !0, this;
    }
    function Zn() {
      WC.prototype.isAliasOf = VE, WC.prototype.clone = mi, WC.prototype.delete = C3, WC.prototype.isDeleted = PI, WC.prototype.deleteLater = OI;
    }
    function WC() {
    }
    let VI = {};
    function _E(R, Y, z) {
      if (R[Y].overloadTable === void 0) {
        let BA = R[Y];
        R[Y] = function() {
          return R[Y].overloadTable.hasOwnProperty(arguments.length) || Fu(`Function '${z}' called with an invalid number of arguments (${arguments.length}) - expects one of (${R[Y].overloadTable})!`), R[Y].overloadTable[arguments.length].apply(this, arguments);
        }, R[Y].overloadTable = [], R[Y].overloadTable[BA.argCount] = BA;
      }
    }
    function ki(R, Y, z) {
      e.hasOwnProperty(R) ? ((z === void 0 || e[R].overloadTable !== void 0 && e[R].overloadTable[z] !== void 0) && Fu(`Cannot register public name '${R}' twice`), _E(e, R, R), e.hasOwnProperty(z) && Fu(`Cannot register multiple overloads of a function with the same number of arguments (${z})!`), e[R].overloadTable[z] = Y) : (e[R] = Y, z !== void 0 && (e[R].numArguments = z));
    }
    function bB(R, Y, z, BA, oA, sA, cA, rA) {
      this.name = R, this.constructor = Y, this.instancePrototype = z, this.rawDestructor = BA, this.baseClass = oA, this.getActualType = sA, this.upcast = cA, this.downcast = rA, this.pureVirtualFunctions = [];
    }
    function lC(R, Y, z) {
      for (; Y !== z; ) Y.upcast || Fu(`Expected null or instance of ${z.name}, got an instance of ${Y.name}`), R = Y.upcast(R), Y = Y.baseClass;
      return R;
    }
    function UB(R, Y) {
      if (Y === null) return this.isReference && Fu(`null is not a valid ${this.name}`), 0;
      Y.$$ || Fu(`Cannot pass "${Dt(Y)}" as a ${this.name}`), Y.$$.ptr || Fu(`Cannot pass deleted object as a pointer of type ${this.name}`);
      let z = Y.$$.ptrType.registeredClass;
      return lC(Y.$$.ptr, z, this.registeredClass);
    }
    function yi(R, Y) {
      let z;
      if (Y === null) return this.isReference && Fu(`null is not a valid ${this.name}`), this.isSmartPointer ? (z = this.rawConstructor(), R !== null && R.push(this.rawDestructor, z), z) : 0;
      Y.$$ || Fu(`Cannot pass "${Dt(Y)}" as a ${this.name}`), Y.$$.ptr || Fu(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && Y.$$.ptrType.isConst && Fu(`Cannot convert argument of type ${Y.$$.smartPtrType ? Y.$$.smartPtrType.name : Y.$$.ptrType.name} to parameter type ${this.name}`);
      let BA = Y.$$.ptrType.registeredClass;
      if (z = lC(Y.$$.ptr, BA, this.registeredClass), this.isSmartPointer) switch (Y.$$.smartPtr === void 0 && Fu("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) {
        case 0:
          Y.$$.smartPtrType === this ? z = Y.$$.smartPtr : Fu(`Cannot convert argument of type ${Y.$$.smartPtrType ? Y.$$.smartPtrType.name : Y.$$.ptrType.name} to parameter type ${this.name}`);
          break;
        case 1:
          z = Y.$$.smartPtr;
          break;
        case 2:
          if (Y.$$.smartPtrType === this) z = Y.$$.smartPtr;
          else {
            let oA = Y.clone();
            z = this.rawShare(z, dt(() => {
              oA.delete();
            })), R !== null && R.push(this.rawDestructor, z);
          }
          break;
        default:
          Fu("Unsupporting sharing policy");
      }
      return z;
    }
    function bi(R, Y) {
      if (Y === null) return this.isReference && Fu(`null is not a valid ${this.name}`), 0;
      Y.$$ || Fu(`Cannot pass "${Dt(Y)}" as a ${this.name}`), Y.$$.ptr || Fu(`Cannot pass deleted object as a pointer of type ${this.name}`), Y.$$.ptrType.isConst && Fu(`Cannot convert argument of type ${Y.$$.ptrType.name} to parameter type ${this.name}`);
      let z = Y.$$.ptrType.registeredClass;
      return lC(Y.$$.ptr, z, this.registeredClass);
    }
    function uC(R) {
      return this.fromWireType(FA[R >> 2]);
    }
    function B3(R) {
      return this.rawGetPointee && (R = this.rawGetPointee(R)), R;
    }
    function qn(R) {
      this.rawDestructor && this.rawDestructor(R);
    }
    function Ui(R) {
      R !== null && R.delete();
    }
    function Wn(R, Y, z) {
      if (Y === z) return R;
      if (z.baseClass === void 0) return null;
      let BA = Wn(R, Y, z.baseClass);
      return BA === null ? null : z.downcast(BA);
    }
    function jn() {
      return Object.keys(jC).length;
    }
    function $E() {
      let R = [];
      for (let Y in jC) jC.hasOwnProperty(Y) && R.push(jC[Y]);
      return R;
    }
    function Tn(R) {
      du = R, rt.length && du && du(XE);
    }
    function g3() {
      e.getInheritedInstanceCount = jn, e.getLiveInheritedInstances = $E, e.flushPendingDeletes = XE, e.setDelayFunction = Tn;
    }
    var jC = {};
    function Gi(R, Y) {
      for (Y === void 0 && Fu("ptr should not be undefined"); R.baseClass; ) Y = R.upcast(Y), R = R.baseClass;
      return Y;
    }
    function st(R, Y) {
      return Y = Gi(R, Y), jC[Y];
    }
    function lg(R, Y) {
      (!Y.ptrType || !Y.ptr) && PE("makeClassHandle requires ptr and ptrType");
      let z = !!Y.smartPtrType, BA = !!Y.smartPtr;
      return z !== BA && PE("Both smartPtrType and smartPtr must be specified"), Y.count = { value: 1 }, sg(Object.create(R, { $$: { value: Y } }));
    }
    function t3(R) {
      let Y = this.getPointee(R);
      if (!Y) return this.destructor(R), null;
      let z = st(this.registeredClass, Y);
      if (z !== void 0) {
        if (z.$$.count.value === 0) return z.$$.ptr = Y, z.$$.smartPtr = R, z.clone();
        let wA = z.clone();
        return this.destructor(R), wA;
      }
      function BA() {
        return this.isSmartPointer ? lg(this.registeredClass.instancePrototype, { ptrType: this.pointeeType, ptr: Y, smartPtrType: this, smartPtr: R }) : lg(this.registeredClass.instancePrototype, { ptrType: this, ptr: R });
      }
      let oA = this.registeredClass.getActualType(Y), sA = VI[oA];
      if (!sA) return BA.call(this);
      let cA;
      this.isConst ? cA = sA.constPointerType : cA = sA.pointerType;
      let rA = Wn(Y, this.registeredClass, cA.registeredClass);
      return rA === null ? BA.call(this) : this.isSmartPointer ? lg(cA.registeredClass.instancePrototype, { ptrType: cA, ptr: rA, smartPtrType: this, smartPtr: R }) : lg(cA.registeredClass.instancePrototype, { ptrType: cA, ptr: rA });
    }
    function i3() {
      eC.prototype.getPointee = B3, eC.prototype.destructor = qn, eC.prototype.argPackAdvance = 8, eC.prototype.readValueFromPointer = uC, eC.prototype.deleteObject = Ui, eC.prototype.fromWireType = t3;
    }
    function eC(R, Y, z, BA, oA, sA, cA, rA, wA, YA, au) {
      this.name = R, this.registeredClass = Y, this.isReference = z, this.isConst = BA, this.isSmartPointer = oA, this.pointeeType = sA, this.sharingPolicy = cA, this.rawGetPointee = rA, this.rawConstructor = wA, this.rawShare = YA, this.rawDestructor = au, !oA && Y.baseClass === void 0 ? BA ? (this.toWireType = UB, this.destructorFunction = null) : (this.toWireType = bi, this.destructorFunction = null) : this.toWireType = yi;
    }
    function fi(R, Y, z) {
      e.hasOwnProperty(R) || PE("Replacing nonexistant public symbol"), e[R].overloadTable !== void 0 && z !== void 0 ? e[R].overloadTable[z] = Y : (e[R] = Y, e[R].argCount = z);
    }
    function TC(R, Y) {
      R = me(R);
      function z(oA) {
        let sA = [];
        for (let rA = 1; rA < R.length; ++rA) sA.push(`a${rA}`);
        let cA = `return function ${`dynCall_${R}_${Y}`}(${sA.join(", ")}) {
`;
        return cA += `    return dynCall(rawFunction${sA.length ? ", " : ""}${sA.join(", ")});
`, cA += `};
`, new Function("dynCall", "rawFunction", cA)(oA, Y);
      }
      let BA;
      if (e[`FUNCTION_TABLE_${R}`] !== void 0) BA = e[`FUNCTION_TABLE_${R}`][Y];
      else if (typeof FUNCTION_TABLE < "u") BA = FUNCTION_TABLE[Y];
      else {
        let oA = e[`dynCall_${R}`];
        oA === void 0 && (oA = e[`dynCall_${R.replace(/f/g, "d")}`], oA === void 0 && Fu(`No dynCall invoker for signature: ${R}`)), BA = z(oA);
      }
      return typeof BA != "function" && Fu(`unknown function pointer with signature ${R}: ${Y}`), BA;
    }
    let XI;
    function zC(R) {
      let Y = Ri(R), z = me(Y);
      return ee(Y), z;
    }
    function lt(R, Y) {
      let z = [], BA = {};
      function oA(sA) {
        if (!BA[sA] && !rg[sA]) {
          if (It[sA]) {
            It[sA].forEach(oA);
            return;
          }
          z.push(sA), BA[sA] = !0;
        }
      }
      throw Y.forEach(oA), new XI(`${R}: ${z.map(zC).join([", "])}`);
    }
    function Aa(R, Y, z, BA, oA, sA, cA, rA, wA, YA, au, eu, Du) {
      au = me(au), sA = TC(oA, sA), rA && (rA = TC(cA, rA)), YA && (YA = TC(wA, YA)), Du = TC(eu, Du);
      let ju = WI(au);
      ki(ju, () => {
        lt(`Cannot construct ${au} due to unbound types`, [BA]);
      }), Qt([R, Y, z], BA ? [BA] : [], (Ne) => {
        Ne = Ne[0];
        let Ce, vi;
        BA ? (Ce = Ne.registeredClass, vi = Ce.instancePrototype) : vi = WC.prototype;
        let PC = zE(ju, function() {
          if (Object.getPrototypeOf(this) !== wt) throw new Ae(`Use 'new' to construct ${au}`);
          if (CC.constructor_body === void 0) throw new Ae(`${au} has no accessible constructor`);
          let ao = CC.constructor_body[arguments.length];
          if (ao === void 0) throw new Ae(`Tried to invoke ctor of ${au} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(CC.constructor_body).toString()}) parameters instead!`);
          return ao.apply(this, arguments);
        });
        var wt = Object.create(vi, { constructor: { value: PC } });
        PC.prototype = wt;
        var CC = new bB(au, PC, wt, Du, Ce, sA, rA, YA);
        let io = new eC(au, CC, !0, !1, !1), Eo = new eC(`${au}*`, CC, !1, !1, !1), Hi = new eC(`${au} const*`, CC, !1, !0, !1);
        return VI[R] = { pointerType: Eo, constPointerType: Hi }, fi(ju, PC), [io, Eo, Hi];
      });
    }
    function ua(R, Y) {
      let z = [];
      for (let BA = 0; BA < R; BA++) z.push(mA[(Y >> 2) + BA]);
      return z;
    }
    function Li(R) {
      for (; R.length; ) {
        let Y = R.pop();
        R.pop()(Y);
      }
    }
    function ea(R, Y, z, BA, oA, sA) {
      let cA = ua(Y, z);
      oA = TC(BA, oA), Qt([], [R], (rA) => {
        rA = rA[0];
        let wA = `constructor ${rA.name}`;
        if (rA.registeredClass.constructor_body === void 0 && (rA.registeredClass.constructor_body = []), rA.registeredClass.constructor_body[Y - 1] !== void 0) throw new Ae(`Cannot register multiple constructors with identical number of parameters (${Y - 1}) for class '${rA.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);
        return rA.registeredClass.constructor_body[Y - 1] = function() {
          lt(`Cannot construct ${rA.name} due to unbound types`, cA);
        }, Qt([], cA, (YA) => (rA.registeredClass.constructor_body[Y - 1] = function() {
          arguments.length !== Y - 1 && Fu(`${wA} called with ${arguments.length} arguments, expected ${Y - 1}`);
          let au = [], eu = new Array(Y);
          eu[0] = sA;
          for (let ju = 1; ju < Y; ++ju) eu[ju] = YA[ju].toWireType(au, arguments[ju - 1]);
          let Du = oA.apply(null, eu);
          return Li(au), YA[0].fromWireType(Du);
        }, [])), [];
      });
    }
    function zn(R, Y) {
      if (!(R instanceof Function)) throw new TypeError(`new_ called with constructor type ${typeof R} which is not a function`);
      let z = zE(R.name || "unknownFunctionName", () => {
      });
      z.prototype = R.prototype;
      let BA = new z(), oA = R.apply(BA, Y);
      return oA instanceof Object ? oA : BA;
    }
    function ae(R, Y, z, BA, oA) {
      let sA = Y.length;
      sA < 2 && Fu("argTypes array size mismatch! Must at least get return value and 'this' types!");
      let cA = Y[1] !== null && z !== null, rA = !1;
      for (var wA = 1; wA < Y.length; ++wA) if (Y[wA] !== null && Y[wA].destructorFunction === void 0) {
        rA = !0;
        break;
      }
      let YA = Y[0].name !== "void", au = "", eu = "";
      for (var wA = 0; wA < sA - 2; ++wA) au += `${wA !== 0 ? ", " : ""}arg${wA}`, eu += `${wA !== 0 ? ", " : ""}arg${wA}Wired`;
      let Du = `return function ${WI(R)}(${au}) {
if (arguments.length !== ${sA - 2}) {
throwBindingError('function ${R} called with ' + arguments.length + ' arguments, expected ${sA - 2} args!');
}
`;
      rA && (Du += `var destructors = [];
`);
      let ju = rA ? "destructors" : "null", Ne = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"], Ce = [Fu, BA, oA, Li, Y[0], Y[1]];
      cA && (Du += `var thisWired = classParam.toWireType(${ju}, this);
`);
      for (var wA = 0; wA < sA - 2; ++wA) Du += `var arg${wA}Wired = argType${wA}.toWireType(${ju}, arg${wA}); // ${Y[wA + 2].name}
`, Ne.push(`argType${wA}`), Ce.push(Y[wA + 2]);
      if (cA && (eu = `thisWired${eu.length > 0 ? ", " : ""}${eu}`), Du += `${YA ? "var rv = " : ""}invoker(fn${eu.length > 0 ? ", " : ""}${eu});
`, rA) Du += `runDestructors(destructors);
`;
      else for (var wA = cA ? 1 : 2; wA < Y.length; ++wA) {
        let PC = wA === 1 ? "thisWired" : `arg${wA - 2}Wired`;
        Y[wA].destructorFunction !== null && (Du += `${PC}_dtor(${PC}); // ${Y[wA].name}
`, Ne.push(`${PC}_dtor`), Ce.push(Y[wA].destructorFunction));
      }
      return YA && (Du += `var ret = retType.fromWireType(rv);
return ret;
`), Du += `}
`, Ne.push(Du), zn(Function, Ne).apply(null, Ce);
    }
    function ct(R, Y, z, BA, oA, sA, cA, rA) {
      let wA = ua(z, BA);
      Y = me(Y), sA = TC(oA, sA), Qt([], [R], (YA) => {
        YA = YA[0];
        let au = `${YA.name}.${Y}`;
        rA && YA.registeredClass.pureVirtualFunctions.push(Y);
        function eu() {
          lt(`Cannot call ${au} due to unbound types`, wA);
        }
        let Du = YA.registeredClass.instancePrototype, ju = Du[Y];
        return ju === void 0 || ju.overloadTable === void 0 && ju.className !== YA.name && ju.argCount === z - 2 ? (eu.argCount = z - 2, eu.className = YA.name, Du[Y] = eu) : (_E(Du, Y, au), Du[Y].overloadTable[z - 2] = eu), Qt([], wA, (Ne) => {
          let Ce = ae(au, Ne, YA, sA, cA);
          return Du[Y].overloadTable === void 0 ? (Ce.argCount = z - 2, Du[Y] = Ce) : Du[Y].overloadTable[z - 2] = Ce, [];
        }), [];
      });
    }
    let xi = [], ue = [{}, { value: void 0 }, { value: null }, { value: !0 }, { value: !1 }];
    function Pn(R) {
      R > 4 && --ue[R].refcount === 0 && (ue[R] = void 0, xi.push(R));
    }
    function _I() {
      let R = 0;
      for (let Y = 5; Y < ue.length; ++Y) ue[Y] !== void 0 && ++R;
      return R;
    }
    function $I() {
      for (let R = 5; R < ue.length; ++R) if (ue[R] !== void 0) return ue[R];
      return null;
    }
    function Si() {
      e.count_emval_handles = _I, e.get_first_emval = $I;
    }
    function dt(R) {
      switch (R) {
        case void 0:
          return 1;
        case null:
          return 2;
        case !0:
          return 3;
        case !1:
          return 4;
        default: {
          let Y = xi.length ? xi.pop() : ue.length;
          return ue[Y] = { refcount: 1, value: R }, Y;
        }
      }
    }
    function On(R, Y) {
      Y = me(Y), qC(R, { name: Y, fromWireType(z) {
        let BA = ue[z].value;
        return Pn(z), BA;
      }, toWireType(z, BA) {
        return dt(BA);
      }, argPackAdvance: 8, readValueFromPointer: uC, destructorFunction: null });
    }
    function Dt(R) {
      if (R === null) return "null";
      let Y = typeof R;
      return Y === "object" || Y === "array" || Y === "function" ? R.toString() : `${R}`;
    }
    function E3(R, Y) {
      switch (Y) {
        case 2:
          return function(z) {
            return this.fromWireType(TA[z >> 2]);
          };
        case 3:
          return function(z) {
            return this.fromWireType(WA[z >> 3]);
          };
        default:
          throw new TypeError(`Unknown float type: ${R}`);
      }
    }
    function a3(R, Y, z) {
      let BA = jE(z);
      Y = me(Y), qC(R, { name: Y, fromWireType(oA) {
        return oA;
      }, toWireType(oA, sA) {
        if (typeof sA != "number" && typeof sA != "boolean") throw new TypeError(`Cannot convert "${Dt(sA)}" to ${this.name}`);
        return sA;
      }, argPackAdvance: 8, readValueFromPointer: E3(Y, BA), destructorFunction: null });
    }
    function Ao(R, Y, z, BA, oA, sA) {
      let cA = ua(Y, z);
      R = me(R), oA = TC(BA, oA), ki(R, () => {
        lt(`Cannot call ${R} due to unbound types`, cA);
      }, Y - 1), Qt([], cA, (rA) => {
        let wA = [rA[0], null].concat(rA.slice(1));
        return fi(R, ae(R, wA, null, oA, sA), Y - 1), [];
      });
    }
    function I3(R, Y, z) {
      switch (Y) {
        case 0:
          return z ? function(BA) {
            return GA[BA];
          } : function(BA) {
            return fA[BA];
          };
        case 1:
          return z ? function(BA) {
            return qA[BA >> 1];
          } : function(BA) {
            return JA[BA >> 1];
          };
        case 2:
          return z ? function(BA) {
            return mA[BA >> 2];
          } : function(BA) {
            return FA[BA >> 2];
          };
        default:
          throw new TypeError(`Unknown integer type: ${R}`);
      }
    }
    function o3(R, Y, z, BA, oA) {
      Y = me(Y), oA === -1 && (oA = 4294967295);
      let sA = jE(z), cA = function(wA) {
        return wA;
      };
      if (BA === 0) {
        let wA = 32 - 8 * z;
        cA = function(YA) {
          return YA << wA >>> wA;
        };
      }
      let rA = Y.indexOf("unsigned") != -1;
      qC(R, { name: Y, fromWireType: cA, toWireType(wA, YA) {
        if (typeof YA != "number" && typeof YA != "boolean") throw new TypeError(`Cannot convert "${Dt(YA)}" to ${this.name}`);
        if (YA < BA || YA > oA) throw new TypeError(`Passing a number "${Dt(YA)}" from JS side to C/C++ side to an argument of type "${Y}", which is outside the valid range [${BA}, ${oA}]!`);
        return rA ? YA >>> 0 : YA | 0;
      }, argPackAdvance: 8, readValueFromPointer: I3(Y, sA, BA !== 0), destructorFunction: null });
    }
    function Q3(R, Y, z) {
      let BA = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][Y];
      function oA(sA) {
        sA = sA >> 2;
        let cA = FA, rA = cA[sA], wA = cA[sA + 1];
        return new BA(cA.buffer, wA, rA);
      }
      z = me(z), qC(R, { name: z, fromWireType: oA, argPackAdvance: 8, readValueFromPointer: oA }, { ignoreDuplicateRegistrations: !0 });
    }
    function n3(R, Y) {
      Y = me(Y);
      let z = Y === "std::string";
      qC(R, { name: Y, fromWireType(BA) {
        let oA = FA[BA >> 2], sA;
        if (z) {
          let rA = fA[BA + 4 + oA], wA = 0;
          rA != 0 && (wA = rA, fA[BA + 4 + oA] = 0);
          let YA = BA + 4;
          for (var cA = 0; cA <= oA; ++cA) {
            let au = BA + 4 + cA;
            if (fA[au] == 0) {
              let eu = O(YA);
              sA === void 0 ? sA = eu : (sA += "\0", sA += eu), YA = au + 1;
            }
          }
          wA != 0 && (fA[BA + 4 + oA] = wA);
        } else {
          let rA = new Array(oA);
          for (var cA = 0; cA < oA; ++cA) rA[cA] = String.fromCharCode(fA[BA + 4 + cA]);
          sA = rA.join("");
        }
        return ee(BA), sA;
      }, toWireType(BA, oA) {
        Object.prototype.toString.call(oA) === "[object ArrayBuffer]" && (oA = new Uint8Array(oA));
        let sA, cA = typeof oA == "string";
        cA || oA instanceof Uint8Array || oA instanceof Uint8ClampedArray || oA instanceof Int8Array || Fu("Cannot pass non-string to std::string"), z && cA ? sA = function() {
          return P(oA);
        } : sA = function() {
          return oA.length;
        };
        let rA = sA(), wA = Mi(4 + rA + 1);
        if (FA[wA >> 2] = rA, z && cA) X(oA, wA + 4, rA + 1);
        else if (cA) for (var YA = 0; YA < rA; ++YA) {
          let au = oA.charCodeAt(YA);
          au > 255 && (ee(wA), Fu("String has UTF-16 code units that do not fit in 8 bits")), fA[wA + 4 + YA] = au;
        }
        else for (var YA = 0; YA < rA; ++YA) fA[wA + 4 + YA] = oA[YA];
        return BA !== null && BA.push(ee, wA), wA;
      }, argPackAdvance: 8, readValueFromPointer: uC, destructorFunction(BA) {
        ee(BA);
      } });
    }
    function r3(R, Y, z) {
      z = me(z);
      let BA, oA;
      Y === 2 ? (BA = function() {
        return JA;
      }, oA = 1) : Y === 4 && (BA = function() {
        return FA;
      }, oA = 2), qC(R, { name: z, fromWireType(sA) {
        let cA = BA(), rA = FA[sA >> 2], wA = new Array(rA), YA = sA + 4 >> oA;
        for (let au = 0; au < rA; ++au) wA[au] = String.fromCharCode(cA[YA + au]);
        return ee(sA), wA.join("");
      }, toWireType(sA, cA) {
        let rA = cA.length, wA = Mi(4 + rA * Y), YA = BA();
        FA[wA >> 2] = rA;
        let au = wA + 4 >> oA;
        for (let eu = 0; eu < rA; ++eu) YA[au + eu] = cA.charCodeAt(eu);
        return sA !== null && sA.push(ee, wA), wA;
      }, argPackAdvance: 8, readValueFromPointer: uC, destructorFunction(sA) {
        ee(sA);
      } });
    }
    function Vn(R, Y) {
      Y = me(Y), qC(R, { isVoid: !0, name: Y, argPackAdvance: 0, fromWireType() {
      }, toWireType(z, BA) {
      } });
    }
    function s3(R) {
      R > 4 && (ue[R].refcount += 1);
    }
    function l3(R, Y) {
      let z = rg[R];
      return z === void 0 && Fu(`${Y} has unknown type ${zC(R)}`), z;
    }
    function c3(R, Y) {
      R = l3(R, "_emval_take_value");
      let z = R.readValueFromPointer(Y);
      return dt(z);
    }
    function d3() {
      lA();
    }
    function Ca() {
      return GA.length;
    }
    function D3(R) {
      try {
        return f.grow(R - gA.byteLength + 65535 >> 16), ru(f.buffer), 1;
      } catch (Y) {
        console.error(`emscripten_realloc_buffer: Attempted to grow heap from ${gA.byteLength} bytes to ${R} bytes, but got error: ${Y}`);
      }
    }
    function h3(R) {
      let Y = Ca();
      M(R > Y);
      let z = 65536, BA = 2147483648 - z;
      if (R > BA) return h(`Cannot enlarge memory, asked to go up to ${R} bytes, but the limit is ${BA} bytes!`), !1;
      let oA = Math.max(Y, 16777216);
      for (; oA < R; ) oA <= 536870912 ? oA = T(2 * oA, z) : oA = Math.min(T((3 * oA + 2147483648) / 4, z), BA), oA === Y && F(`Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only ${GA.length}`);
      return D3(oA) ? !0 : (h(`Failed to grow the heap from ${Y} bytes to ${oA} bytes, not enough memory!`), !1);
    }
    function w3(R) {
      x3(R);
    }
    function Xn(R) {
      return Math.log(R) / Math.LN2;
    }
    function F3(R) {
      return Xn(R);
    }
    function p3() {
      lA("trap!");
    }
    function m3(R, Y, z) {
      fA.set(fA.subarray(Y, Y + z), R);
    }
    vn(), Ae = e.BindingError = ot(Error, "BindingError"), Se = e.InternalError = ot(Error, "InternalError"), Zn(), i3(), g3(), XI = e.UnboundTypeError = ot(Error, "UnboundTypeError"), Si();
    function k3(R) {
      p0(R, "i");
    }
    function y3(R) {
      p0(R, "ii");
    }
    function b3(R) {
      p0(R, "iidiiii");
    }
    function U3(R) {
      p0(R, "iii");
    }
    function uo(R) {
      p0(R, "iiii");
    }
    function Ni(R) {
      p0(R, "iiiii");
    }
    function G3(R) {
      p0(R, "jiji");
    }
    function _n(R) {
      p0(R, "v");
    }
    function $n(R) {
      p0(R, "vi");
    }
    function Ar(R) {
      p0(R, "vii");
    }
    function ur(R) {
      p0(R, "viii");
    }
    function er(R) {
      p0(R, "viiii");
    }
    function ht(R) {
      p0(R, "viiiii");
    }
    function f3(R) {
      p0(R, "viiiiii");
    }
    let L3 = {};
    var eo = { ___assert_fail: Fi, ___cxa_allocate_exception: qE, ___cxa_throw: WE, ___lock: qI, ___unlock: A3, ___wasi_fd_close: ng, ___wasi_fd_seek: Rn, ___wasi_fd_write: Yn, __embind_register_bool: OE, __embind_register_class: Aa, __embind_register_class_constructor: ea, __embind_register_class_function: ct, __embind_register_emval: On, __embind_register_float: a3, __embind_register_function: Ao, __embind_register_integer: o3, __embind_register_memory_view: Q3, __embind_register_std_string: n3, __embind_register_std_wstring: r3, __embind_register_void: Vn, __emval_decref: Pn, __emval_incref: s3, __emval_take_value: c3, __memory_base: 1024, __table_base: 0, _abort: d3, _emscripten_get_heap_size: Ca, _emscripten_memcpy_big: m3, _emscripten_resize_heap: h3, _exit: w3, _llvm_log2_f64: F3, _llvm_trap: p3, abortStackOverflow: it, memory: f, nullFunc_i: k3, nullFunc_ii: y3, nullFunc_iidiiii: b3, nullFunc_iii: U3, nullFunc_iiii: uo, nullFunc_iiiii: Ni, nullFunc_jiji: G3, nullFunc_v: _n, nullFunc_vi: $n, nullFunc_vii: Ar, nullFunc_viii: ur, nullFunc_viiii: er, nullFunc_viiiii: ht, nullFunc_viiiiii: f3, setTempRet0: p, table: L };
    let Co = e.asm(L3, eo, gA);
    e.asm = Co;
    var Ba = e.__ZSt18uncaught_exceptionv = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.__ZSt18uncaught_exceptionv.apply(null, arguments);
    };
    e.___cxa_demangle = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.___cxa_demangle.apply(null, arguments);
    }, e.___embind_register_native_and_builtin_types = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.___embind_register_native_and_builtin_types.apply(null, arguments);
    };
    var Ri = e.___getTypeName = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.___getTypeName.apply(null, arguments);
    };
    e._fflush = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm._fflush.apply(null, arguments);
    };
    var ee = e._free = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm._free.apply(null, arguments);
    }, Mi = e._malloc = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm._malloc.apply(null, arguments);
    };
    e.establishStackSpace = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.establishStackSpace.apply(null, arguments);
    };
    var ga = e.globalCtors = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.globalCtors.apply(null, arguments);
    }, Bo = e.stackAlloc = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.stackAlloc.apply(null, arguments);
    }, go = e.stackRestore = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.stackRestore.apply(null, arguments);
    }, Yi = e.stackSave = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.stackSave.apply(null, arguments);
    };
    e.dynCall_i = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_i.apply(null, arguments);
    }, e.dynCall_ii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_ii.apply(null, arguments);
    }, e.dynCall_iidiiii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_iidiiii.apply(null, arguments);
    }, e.dynCall_iii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_iii.apply(null, arguments);
    }, e.dynCall_iiii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_iiii.apply(null, arguments);
    }, e.dynCall_iiiii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_iiiii.apply(null, arguments);
    }, e.dynCall_jiji = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_jiji.apply(null, arguments);
    }, e.dynCall_v = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_v.apply(null, arguments);
    }, e.dynCall_vi = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_vi.apply(null, arguments);
    }, e.dynCall_vii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_vii.apply(null, arguments);
    }, e.dynCall_viii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_viii.apply(null, arguments);
    }, e.dynCall_viiii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_viiii.apply(null, arguments);
    }, e.dynCall_viiiii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_viiiii.apply(null, arguments);
    }, e.dynCall_viiiiii = function() {
      return M(Gu, "you need to wait for the runtime to be ready (e.g. wait for main() to be called)"), M(!fu, "the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"), e.asm.dynCall_viiiiii.apply(null, arguments);
    }, e.asm = Co, Object.getOwnPropertyDescriptor(e, "intArrayFromString") || (e.intArrayFromString = function() {
      lA("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "intArrayToString") || (e.intArrayToString = function() {
      lA("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), e.ccall = K, e.cwrap = q, Object.getOwnPropertyDescriptor(e, "setValue") || (e.setValue = function() {
      lA("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getValue") || (e.getValue = function() {
      lA("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "allocate") || (e.allocate = function() {
      lA("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getMemory") || (e.getMemory = function() {
      lA("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "AsciiToString") || (e.AsciiToString = function() {
      lA("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stringToAscii") || (e.stringToAscii = function() {
      lA("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "UTF8ArrayToString") || (e.UTF8ArrayToString = function() {
      lA("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "UTF8ToString") || (e.UTF8ToString = function() {
      lA("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stringToUTF8Array") || (e.stringToUTF8Array = function() {
      lA("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), e.stringToUTF8 = X, Object.getOwnPropertyDescriptor(e, "lengthBytesUTF8") || (e.lengthBytesUTF8 = function() {
      lA("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "UTF16ToString") || (e.UTF16ToString = function() {
      lA("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stringToUTF16") || (e.stringToUTF16 = function() {
      lA("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "lengthBytesUTF16") || (e.lengthBytesUTF16 = function() {
      lA("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "UTF32ToString") || (e.UTF32ToString = function() {
      lA("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stringToUTF32") || (e.stringToUTF32 = function() {
      lA("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "lengthBytesUTF32") || (e.lengthBytesUTF32 = function() {
      lA("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "allocateUTF8") || (e.allocateUTF8 = function() {
      lA("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stackTrace") || (e.stackTrace = function() {
      lA("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addOnPreRun") || (e.addOnPreRun = function() {
      lA("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addOnInit") || (e.addOnInit = function() {
      lA("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addOnPreMain") || (e.addOnPreMain = function() {
      lA("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addOnExit") || (e.addOnExit = function() {
      lA("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addOnPostRun") || (e.addOnPostRun = function() {
      lA("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "writeStringToMemory") || (e.writeStringToMemory = function() {
      lA("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "writeArrayToMemory") || (e.writeArrayToMemory = function() {
      lA("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "writeAsciiToMemory") || (e.writeAsciiToMemory = function() {
      lA("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addRunDependency") || (e.addRunDependency = function() {
      lA("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "removeRunDependency") || (e.removeRunDependency = function() {
      lA("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "ENV") || (e.ENV = function() {
      lA("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "FS") || (e.FS = function() {
      lA("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "FS_createFolder") || (e.FS_createFolder = function() {
      lA("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_createPath") || (e.FS_createPath = function() {
      lA("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_createDataFile") || (e.FS_createDataFile = function() {
      lA("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_createPreloadedFile") || (e.FS_createPreloadedFile = function() {
      lA("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_createLazyFile") || (e.FS_createLazyFile = function() {
      lA("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_createLink") || (e.FS_createLink = function() {
      lA("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_createDevice") || (e.FS_createDevice = function() {
      lA("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "FS_unlink") || (e.FS_unlink = function() {
      lA("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    }), Object.getOwnPropertyDescriptor(e, "GL") || (e.GL = function() {
      lA("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "dynamicAlloc") || (e.dynamicAlloc = function() {
      lA("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "loadDynamicLibrary") || (e.loadDynamicLibrary = function() {
      lA("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "loadWebAssemblyModule") || (e.loadWebAssemblyModule = function() {
      lA("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getLEB") || (e.getLEB = function() {
      lA("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getFunctionTables") || (e.getFunctionTables = function() {
      lA("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "alignFunctionTables") || (e.alignFunctionTables = function() {
      lA("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "registerFunctions") || (e.registerFunctions = function() {
      lA("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "addFunction") || (e.addFunction = function() {
      lA("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "removeFunction") || (e.removeFunction = function() {
      lA("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getFuncWrapper") || (e.getFuncWrapper = function() {
      lA("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "prettyPrint") || (e.prettyPrint = function() {
      lA("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "makeBigInt") || (e.makeBigInt = function() {
      lA("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "dynCall") || (e.dynCall = function() {
      lA("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getCompilerSetting") || (e.getCompilerSetting = function() {
      lA("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stackSave") || (e.stackSave = function() {
      lA("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stackRestore") || (e.stackRestore = function() {
      lA("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "stackAlloc") || (e.stackAlloc = function() {
      lA("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "establishStackSpace") || (e.establishStackSpace = function() {
      lA("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "print") || (e.print = function() {
      lA("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "printErr") || (e.printErr = function() {
      lA("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "getTempRet0") || (e.getTempRet0 = function() {
      lA("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "setTempRet0") || (e.setTempRet0 = function() {
      lA("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "callMain") || (e.callMain = function() {
      lA("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "abort") || (e.abort = function() {
      lA("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "Pointer_stringify") || (e.Pointer_stringify = function() {
      lA("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), Object.getOwnPropertyDescriptor(e, "warnOnce") || (e.warnOnce = function() {
      lA("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    }), e.writeStackCookie = SI, e.checkStackCookie = yB, e.abortStackOverflow = it, Object.getOwnPropertyDescriptor(e, "ALLOC_NORMAL") || Object.defineProperty(e, "ALLOC_NORMAL", { configurable: !0, get() {
      lA("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    } }), Object.getOwnPropertyDescriptor(e, "ALLOC_STACK") || Object.defineProperty(e, "ALLOC_STACK", { configurable: !0, get() {
      lA("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    } }), Object.getOwnPropertyDescriptor(e, "ALLOC_DYNAMIC") || Object.defineProperty(e, "ALLOC_DYNAMIC", { configurable: !0, get() {
      lA("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    } }), Object.getOwnPropertyDescriptor(e, "ALLOC_NONE") || Object.defineProperty(e, "ALLOC_NONE", { configurable: !0, get() {
      lA("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");
    } }), Object.getOwnPropertyDescriptor(e, "calledRun") || Object.defineProperty(e, "calledRun", { configurable: !0, get() {
      lA("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");
    } });
    let cg;
    e.then = function(R) {
      if (cg) R(e);
      else {
        let Y = e.onRuntimeInitialized;
        e.onRuntimeInitialized = function() {
          Y && Y(), R(e);
        };
      }
      return e;
    };
    function to(R) {
      this.name = "ExitStatus", this.message = `Program terminated with exit(${R})`, this.status = R;
    }
    og = function R() {
      cg || ta(), cg || (og = R);
    };
    function ta(R) {
      if (KC > 0 || (SI(), fn(), KC > 0)) return;
      function Y() {
        cg || (cg = !0, !N && (di(), Di(), e.onRuntimeInitialized && e.onRuntimeInitialized(), M(!e._main, 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'), Ln()));
      }
      e.setStatus ? (e.setStatus("Running..."), setTimeout(() => {
        setTimeout(() => {
          e.setStatus("");
        }, 1), Y();
      }, 1)) : Y(), yB();
    }
    e.run = ta;
    function Cr() {
      let R = D, Y = h, z = !1;
      D = h = function(BA) {
        z = !0;
      };
      try {
        let BA = e3;
        BA && BA(0);
      } catch {
      }
      D = R, h = Y, z && (F("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."), F("(this may also be due to not including full filesystem support - try building with -s FORCE_FILESYSTEM=1)"));
    }
    function x3(R, Y) {
      Cr(), b ? h(`program exited (with status: ${R}), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)`) : (N = !0, X4(), e.onExit && e.onExit(R)), g(R, new to(R));
    }
    if (e.preInit) for (typeof e.preInit == "function" && (e.preInit = [e.preInit]); e.preInit.length > 0; ) e.preInit.pop()();
    return b = !0, ta(), e;
  };
})(), AmA = $pA, pD = null;
function i7(A) {
  let u = [];
  for (let e = 0, C = A.size(); e < C; e++) u.push(A.get(e));
  return new Uint8Array(u);
}
var umA = () => new Promise((A, u) => {
  try {
    AmA({ wasmBinary: _pA }).then((e) => {
      try {
        A({ compress: (C) => i7(e.woff2Enc(C, C.byteLength)), decompress: (C) => i7(e.woff2Dec(C, C.byteLength)) });
      } catch (C) {
        u(C);
      }
    });
  } catch (e) {
    u(e);
  }
}), emA = () => (pD || (pD = umA()), pD), CmA = (() => {
  let A = new Uint8Array(128);
  for (let u = 0; u < 64; u++) A[u < 26 ? u + 65 : u < 52 ? u + 71 : u < 62 ? u - 4 : u * 4 - 205] = u;
  return (u) => {
    let e = u.length, C = new Uint8Array((e - (u[e - 1] == "=") - (u[e - 2] == "=")) * 3 / 4 | 0);
    for (let B = 0, g = 0; B < e; ) {
      let t = A[u.charCodeAt(B++)], i = A[u.charCodeAt(B++)], I = A[u.charCodeAt(B++)], o = A[u.charCodeAt(B++)];
      C[g++] = t << 2 | i >> 4, C[g++] = i << 4 | I >> 2, C[g++] = I << 6 | o;
    }
    return C;
  };
})(), BmA = CmA(" ");
function gmA(A, u, e, C) {
  let B = A.hb_subset_input_create_or_fail();
  if (B === 0) throw new Error("hb_subset_input_create_or_fail (harfbuzz) returned zero, indicating failure");
  let g = A.malloc(e.byteLength);
  u.set(new Uint8Array(e), g);
  let t = A.hb_blob_create(g, e.byteLength, 2, 0, 0), i = A.hb_face_create(t, 0);
  A.hb_blob_destroy(t);
  let I = A.hb_subset_input_set(B, 6);
  A.hb_set_clear(I), A.hb_set_invert(I);
  let o = A.hb_subset_input_unicode_set(B);
  for (let D of C) A.hb_set_add(o, D);
  let E;
  try {
    if (E = A.hb_subset_or_fail(i, B), E === 0) throw A.hb_face_destroy(i), A.free(g), new Error("hb_subset_or_fail (harfbuzz) returned zero, indicating failure. Maybe the input file is corrupted?");
  } finally {
    A.hb_subset_input_destroy(B);
  }
  let Q = A.hb_face_reference_blob(E), s = A.hb_blob_get_data(Q, 0), l = A.hb_blob_get_length(Q);
  if (l === 0) throw A.hb_blob_destroy(Q), A.hb_face_destroy(E), A.hb_face_destroy(i), A.free(g), new Error("Failed to create subset font, maybe the input file is corrupted?");
  let c = new Uint8Array(u.subarray(s, s + l));
  return A.hb_blob_destroy(Q), A.hb_face_destroy(E), A.hb_face_destroy(i), A.free(g), c;
}
var tmA = { subset: gmA }, mD = null, imA = () => new Promise(async (A, u) => {
  try {
    let e = (await WebAssembly.instantiate(BmA)).instance.exports, C = new Uint8Array(e.memory.buffer);
    A({ subset: (B, g) => tmA.subset(e, C, B, g) });
  } catch (e) {
    u(e);
  }
}), EmA = () => (mD || (mD = imA()), mD), GL = { Subset: "SUBSET" }, amA = async (A, u) => {
  try {
    let e = await B6(A, u);
    return T1(e);
  } catch (e) {
    return console.error("Skipped glyph subsetting", e), T1(A);
  }
}, B6 = async (A, u) => {
  let { compress: e, decompress: C } = await emA(), { subset: B } = await EmA(), g = C(A).buffer, t = B(g, new Set(u));
  return e(t.buffer).buffer;
}, T1 = async (A) => {
  let u;
  if (typeof Buffer < "u") u = Buffer.from(A).toString("base64");
  else {
    let e = String.fromCharCode(...new Uint8Array(A));
    u = btoa(e);
  }
  return `data:font/woff2;base64,${u}`;
};
/**
* The following wasm module is generated with `scripts/buildWasm.js` and encoded as base64.
*
* The source of this content is taken from the package "fonteditor-core", which contains the following metadata:
* 
* @author [{"name":"kekee000","email":"kekee000@gmail.com"},{"name":"junmer","email":"junmer@foxmail.com"}] 
* @license [{"type":"MIT","url":"https://github.com/kekee000/fonteditor-core/raw/master/LICENSE"}]
* @version 2.4.0

The MIT License (MIT)

Copyright (c) 2014 ecomfe

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
/**
* The following wasm module is generated with `scripts/buildWasm.js` and encoded as base64.
*
* The source of this content is taken from the package "harfbuzzjs", which contains the following metadata:
* 
* @author Ebrahim Byagowi <ebrahim@gnu.org> 
* @license MIT
* @version 0.3.6

Apache license for Zephyr libc implementations (zephyr-string.c),
emmalloc.cpp (from emscripten project) and MIT for rest of the project

Copyright (c) 2019 Ebrahim Byagowi

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

*/
var ImA = import.meta.url ? new URL(import.meta.url) : void 0;
typeof window > "u" && typeof self < "u" && (self.onmessage = async (A) => {
  switch (A.data.command) {
    case GL.Subset:
      let u = await B6(A.data.arrayBuffer, A.data.codePoints);
      self.postMessage(u, { transfer: [u] });
      break;
  }
});
const omA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  WorkerUrl: ImA
}, Symbol.toStringTag, { value: "Module" })), QmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  Commands: GL,
  subsetToBase64: amA,
  subsetToBinary: B6,
  toBase64: T1
}, Symbol.toStringTag, { value: "Module" })), fL = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  decodePngMetadata: pdA,
  encodePngMetadata: FdA,
  getTEXtChunk: nb
}, Symbol.toStringTag, { value: "Module" }));
var LL = { paste: "لصق", pasteAsPlaintext: "اللصق كنص عادي", pasteCharts: "لصق الرسوم البيانية", selectAll: "تحديد الكل", multiSelect: "إضافة عنصر للتحديد", moveCanvas: "نقل لوح الرسم", cut: "قص", copy: "نسخ", copyAsPng: "نسخ إلى الحافظة بصيغة PNG", copyAsSvg: "نسخ إلى الحافظة بصيغة SVG", copyText: "نسخ إلى الحافظة كنص", copySource: "", convertToCode: "", bringForward: "جلب للأمام", sendToBack: "أرسل للخلف", bringToFront: "أحضر للأمام", sendBackward: "أرسل للخلف", delete: "حذف", copyStyles: "نسخ الأنماط", pasteStyles: "لصق الأنماط", stroke: "الخط", background: "الخلفية", fill: "التعبئة", strokeWidth: "سُمك الخط", strokeStyle: "نمط الخط", strokeStyle_solid: "متصل", strokeStyle_dashed: "متقطع", strokeStyle_dotted: "منقط", sloppiness: "الإمالة", opacity: "الشفافية", textAlign: "محاذاة النص", edges: "الحواف", sharp: "حادة", round: "دائرية", arrowheads: "رؤوس الأسهم", arrowhead_none: "لا شيء", arrowhead_arrow: "سهم", arrowhead_bar: "شريط", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "مثلث", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "حجم الخط", fontFamily: "نوع الخط", addWatermark: 'إضافة "مصنوعة بواسطة Excalidraw"', handDrawn: "رسم باليد", normal: "عادي", code: "رمز", small: "صغير", medium: "متوسط", large: "كبير", veryLarge: "كبير جدا", solid: "كامل", hachure: "خطوط", zigzag: "متعرج", crossHatch: "خطوط متقطعة", thin: "نحيف", bold: "داكن", left: "الـيسار", center: "وسط", right: "يمين", extraBold: "عريض", architect: "معماري", artist: "رسام", cartoonist: "كرتوني", fileTitle: "إسم الملف", colorPicker: "منتقي اللون", canvasColors: "تستخدم على القماش", canvasBackground: "خلفية اللوحة", drawingCanvas: "لوحة الرسم", layers: "الطبقات", actions: "الإجراءات", language: "اللغة", liveCollaboration: "التعاون المباشر...", duplicateSelection: "تكرار", untitled: "غير معنون", name: "الاسم", yourName: "اسمك", madeWithExcalidraw: "مصنوعة بواسطة Excalidraw", group: "تحديد مجموعة", ungroup: "إلغاء تحديد مجموعة", collaborators: "المتعاونون", showGrid: "إظهار الشبكة", addToLibrary: "أضف إلى المكتبة", removeFromLibrary: "حذف من المكتبة", libraryLoadingMessage: "جارٍ تحميل المكتبة…", libraries: "تصفح المكتبات", loadingScene: "جاري تحميل المشهد…", align: "محاذاة", alignTop: "محاذاة إلى اﻷعلى", alignBottom: "محاذاة إلى اﻷسفل", alignLeft: "محاذاة إلى اليسار", alignRight: "محاذاة إلى اليمين", centerVertically: "توسيط عمودي", centerHorizontally: "توسيط أفقي", distributeHorizontally: "التوزيع الأفقي", distributeVertically: "التوزيع عمودياً", flipHorizontal: "قلب عامودي", flipVertical: "قلب أفقي", viewMode: "نمط العرض", share: "مشاركة", showStroke: "إظهار منتقي لون الخط", showBackground: "إظهار منتقي لون الخلفية", toggleTheme: "غير النمط", personalLib: "المكتبة الشخصية", excalidrawLib: "مكتبتنا", decreaseFontSize: "تصغير حجم الخط", increaseFontSize: "تكبير حجم الخط", unbindText: "فك ربط النص", bindText: "ربط النص بالحاوية", createContainerFromText: "نص مغلف في حاوية", link: { edit: "تعديل الرابط", editEmbed: "تحرير الرابط وإدراجه", create: "إنشاء رابط", createEmbed: "إنشاء رابط و إدراجه", label: "رابط", labelEmbed: "رابط و إدراج", empty: "لم يتم تعيين رابط" }, lineEditor: { edit: "تحرير السطر", exit: "الخروج من المُحرر" }, elementLock: { lock: "قفل", unlock: "فتح", lockAll: "قفل الكل", unlockAll: "فتح الكل" }, statusPublished: "نُشر", sidebarLock: "إبقاء الشريط الجانبي مفتوح", selectAllElementsInFrame: "تحديد جميع العناصر في الإطار", removeAllElementsFromFrame: "إزالة جميع العناصر من الإطار", eyeDropper: "اختيار اللون من القماش", textToDiagram: "", prompt: "" }, xL = { noItems: "لا توجد عناصر أضيفت بعد...", hint_emptyLibrary: "حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.", hint_emptyPrivateLibrary: "حدد عنصر على القماش لإضافته هنا." }, SL = { clearReset: "إعادة تعيين اللوحة", exportJSON: "صدر الملف", exportImage: "تصدير الصورة...", export: "حفظ إلى...", copyToClipboard: "نسخ إلى الحافظة", save: "احفظ للملف الحالي", saveAs: "حفظ كـ", load: "فتح", getShareableLink: "احصل على رابط المشاركة", close: "غلق", selectLanguage: "اختر اللغة", scrollBackToContent: "الرجوع إلى المحتوى", zoomIn: "تكبير", zoomOut: "تصغير", resetZoom: "إعادة تعيين الشاشة", menu: "القائمة", done: "تم", edit: "تعديل", undo: "تراجع", redo: "إعادة تنفيذ", resetLibrary: "إعادة ضبط المكتبة", createNewRoom: "إنشاء غرفة جديدة", fullScreen: "شاشة كاملة", darkMode: "الوضع المظلم", lightMode: "الوضع المضيء", zenMode: "وضع التأمل", objectsSnapMode: "التقط إلى العناصر", exitZenMode: "إلغاء الوضع الليلى", cancel: "إلغاء", clear: "مسح", remove: "إزالة", embed: "تبديل الإدراج", publishLibrary: "انشر", submit: "أرسل", confirm: "تأكيد", embeddableInteractionButton: "اضغط للتفاعل" }, NL = { clearReset: "هذا سيُزيل كامل اللوحة. هل أنت متأكد؟", couldNotCreateShareableLink: "تعذر إنشاء رابطة المشاركة.", couldNotCreateShareableLinkTooBig: "تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا", couldNotLoadInvalidFile: "تعذر التحميل، الملف غير صالح", importBackendFailed: "فشل الاستيراد من الخادوم.", cannotExportEmptyCanvas: "لا يمكن تصدير لوحة فارغة.", couldNotCopyToClipboard: "تعذر النسخ إلى الحافظة.", decryptFailed: "تعذر فك تشفير البيانات.", uploadedSecurly: "تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.", loadSceneOverridePrompt: "تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟", collabStopOverridePrompt: `إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟

(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)`, errorAddingToLibrary: "تعذر إضافة العنصر للمكتبة", errorRemovingFromLibrary: "تعذر إزالة العنصر من المكتبة", confirmAddLibrary: "هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟", imageDoesNotContainScene: "يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟", cannotRestoreFromImage: "تعذر استعادة المشهد من ملف الصورة", invalidSceneUrl: "تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.", resetLibrary: "هذا سوف يمسح مكتبتك. هل أنت متأكد؟", removeItemsFromsLibrary: "حذف {{count}} عنصر (عناصر) من المكتبة؟", invalidEncryptionKey: "مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.", collabOfflineWarning: `لا يوجد اتصال بالانترنت.
لن يتم حفظ التغييرات التي قمت بها!` }, RL = { unsupportedFileType: "نوع الملف غير مدعوم.", imageInsertError: "تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...", fileTooBig: "الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.", svgImageInsertError: "تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.", failedToFetchImage: "", invalidSVGString: "SVG غير صالح.", cannotResolveCollabServer: "تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.", importLibraryError: "تعذر تحميل المكتبة", collabSaveFailed: "تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.", collabSaveFailed_sizeExceeded: "تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.", imageToolNotSupported: "", brave_measure_text_error: { line1: "يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.", line2: "قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.", line3: "من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع <link>هذه الخطوات</link> لفعل ذلك.", line4: "إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة <issueLink>بلاغ</issueLink> على حسابنا في GitHub، أو راسلنا على <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.", iframe: "", image: "سوف يتم دعم إضافة صور إلى المكتبة قريباً!" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, ML = { selection: "تحديد", image: "إدراج صورة", rectangle: "مستطيل", diamond: "مضلع", ellipse: "دائرة", arrow: "سهم", line: "خط", freedraw: "رسم", text: "نص", library: "مكتبة", lock: "الحفاظ على أداة التحديد نشطة بعد الرسم", penMode: "وضع القلم - امنع اللمس", link: "إضافة/تحديث الرابط للشكل المحدد", eraser: "ممحاة", frame: "أداة الإطار", magicframe: "", embeddable: "تضمين ويب", laser: "مؤشر ليزر", hand: "يد (أداة الإزاحة)", extraTools: "المزيد من أﻷدوات", mermaidToExcalidraw: "", magicSettings: "" }, YL = { canvasActions: "إجراءات اللوحة", selectedShapeActions: "إجراءات الشكل المحدد", shapes: "الأشكال" }, vL = { canvasPanning: "لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد", linearElement: "انقر لبدء نقاط متعددة، اسحب لخط واحد", freeDraw: "انقر واسحب، افرج عند الانتهاء", text: "نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار", embeddable: "اضغط مع السحب لإنشاء موقع ويب مضمّن", text_selected: "انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص", text_editing: "اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل", linearElementMulti: "انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء", lockAngle: "يمكنك تقييد الزاوية بالضغط على SHIFT", resize: `يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،
اضغط على ALT لتغيير الحجم من المركز`, resizeImage: `يمكنك تغيير الحجم بحرية بالضغط بأستمرار على SHIFT،
اضغط بأستمرار على ALT أيضا لتغيير الحجم من المركز`, rotate: "يمكنك تقييد الزوايا من خلال الضغط على SHIFT أثناء الدوران", lineEditor_info: "اضغط على مفتاح (Ctrl أو Cmd) و انقر بشكل مزدوج، أو اضغط على مفتاحي (Ctrl أو Cmd) و (Enter) لتعديل النقاط", lineEditor_pointSelected: "اضغط على حذف لإزالة النقطة (النِّقَاط)، Ctrl/Cmd+D للتكرار، أو اسحب للانتقال", lineEditor_nothingSelected: `اختر نقطة لتعديلها (اضغط على SHIFT لتحديد عدة نِقَاط),
أو اضغط على ALT و انقر بالفأرة لإضافة نِقَاط جديدة`, placeImage: "انقر لوضع الصورة، أو انقر واسحب لتعيين حجمها يدوياً", publishLibrary: "نشر مكتبتك", bindTextToElement: "اضغط على إدخال لإضافة نص", deepBoxSelect: "اضغط على Ctrl\\Cmd للاختيار العميق، ولمنع السحب", eraserRevert: "اضغط على Alt لاستعادة العناصر المعلَّمة للحذف", firefox_clipboard_write: 'يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم "dom.events.asyncClipboard.clipboardItem" إلى "true". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة "about:config".', disableSnapping: "اضغط على Ctrl أو Cmd لتعطيل الالتقاط" }, HL = { cannotShowPreview: "تعذر عرض المعاينة", canvasTooBig: "قد تكون اللوحة كبيرة جداً.", canvasTooBigTip: "نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً." }, KL = { headingMain: "حدث خطأ. حاول <button>تحديث الصفحة</button>.", clearCanvasMessage: "إذا لم تعمل إعادة التحميل، حاول مرة أخرى ", clearCanvasCaveat: " هذا سيؤدي إلى فقدان العمل ", trackedToSentry: "تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.", openIssueMessage: "حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة نرجو المتابعة على <button>نظام تتبع الأخطاء</button>. نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.", sceneContent: "محتوى المشهد:" }, JL = { desc_intro: "يمكنك دعوة الآخرين لمشاركتك نفس الجلسة التي تعمل عليها.", desc_privacy: "لا تقلق، الجلسة تستخدم التشفير من النهاية إلى النهاية، لذلك فإن أي شيء ترسمه سيبقى خاصاً. لن يتمكن حتى الخادوم الخاص بنا من رؤية ما توصلت إليه.", button_startSession: "بدء الجلسة", button_stopSession: "إيقاف الجلسة", desc_inProgressIntro: "تجري الآن المشاركة الحية.", desc_shareLink: "شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:", desc_exitSession: "إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد، محليا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، و سيظلون قادرين على التعاون في إصدارهم.", shareTitle: "الانضمام إلى جلسة تعاون حية على Excalidraw" }, ZL = { title: "خطأ" }, qL = { disk_title: "حفظ الملف للجهاز", disk_details: "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً.", disk_button: "إحفظ لملف", link_title: "رابط قابل للمشاركة", link_details: "صدر الملف للمشاهدة فقط.", link_button: "التصدير كرابط", excalidrawplus_description: "حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.", excalidrawplus_button: "تصدير", excalidrawplus_exportError: "تعذر التصدير إلى +Excalidraw في الوقت الحالي..." }, WL = { blog: "اقرأ مدونتنا", click: "انقر", deepSelect: "تحديد عميق", deepBoxSelect: "تحديد عميق داخل المربع، ومنع السحب", curvedArrow: "سهم مائل", curvedLine: "خط مائل", documentation: "دليل الاستخدام", doubleClick: "انقر مرتين", drag: "اسحب", editor: "المحرر", editLineArrowPoints: "تحرير سطر/نقاط سهم", editText: "تعديل النص / إضافة تسمية", github: "عثرت على مشكلة؟ إرسال", howto: "اتبع التعليمات", or: "أو", preventBinding: "منع ارتبط السهم", tools: "الأدوات", shortcuts: "اختصارات لوحة المفاتيح", textFinish: "إنهاء التعديل (محرر النص)", textNewLine: "أضف سطر جديد (محرر نص)", title: "المساعدة", view: "عرض", zoomToFit: "تكبير للملائمة", zoomToSelection: "تكبير للعنصر المحدد", toggleElementLock: "إغلاق/فتح المحدد", movePageUpDown: "نقل الصفحة أعلى/أسفل", movePageLeftRight: "نقل الصفحة يسار/يمين" }, jL = { title: "مسح اللوحة" }, TL = { title: "نشر المكتبة", itemName: "إسم العنصر", authorName: "إسم المؤلف", githubUsername: "اسم المستخدم في جيت هب", twitterUsername: "اسم المستخدم في تويتر", libraryName: "اسم المكتبة", libraryDesc: "وصف المكتبة", website: "الموقع", placeholder: { authorName: "اسمك أو اسم المستخدم", libraryName: "اسم مكتبتك", libraryDesc: "وصف مكتبتك لمساعدة الناس على فهم استخدامها", githubHandle: "معالج GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة", twitterHandle: "اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر", website: "رابط إلى موقعك الشخصي أو في مكان آخر (اختياري)" }, errors: { required: "مطلوب", website: "أدخل عنوان URL صالح" }, noteDescription: "تقديم مكتبتك لتضمينها في مستودع المكتبة العامة <link></link> لأشخاص آخرين لاستخدامها في رسومهم.", noteGuidelines: "تحتاج المكتبة إلى الموافقة أولا. يرجى قراءة <link>المعايير</link> قبل تقديمها. سوف تحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكن ليس مطلوبا بشكل صارم.", noteLicense: "تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت <link>MIT ترخيص</link>، ما يعني أن لأي أحد الحق في استخدامها دون قيود.", noteItems: "يجب أن يكون لكل عنصر مكتبة اسمه الخاص حتى يكون قابلاً للتصفية. سيتم تضمين عناصر المكتبة التالية:", atleastOneLibItem: "يرجى تحديد عنصر مكتبة واحد على الأقل للبدء", republishWarning: "ملاحظة: بعض العناصر المحددة معينة على أنه نشرها أو تقديمها من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها." }, zL = { title: "تم إرسال المكتبة", content: "شكرا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة" }, PL = { resetLibrary: "إعادة ضبط المكتبة", removeItemsFromLib: "إزالة العناصر المحددة من المكتبة" }, OL = { header: "تصدير الصورة", label: { withBackground: "الخلفية", onlySelected: "المحدد فقط", darkMode: "الوضع الداكن", embedScene: "تضمين المشهد", scale: "الحجم", padding: "الهوامش" }, tooltip: { embedScene: `سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدّر بحيث يمكن استعادة المشهد منه.
سيزيد حجم الملف المصدر.` }, title: { exportToPng: "تصدير بصيغة PNG", exportToSvg: "تصدير بصيغة SVG", copyPngToClipboard: "نسخ الـ PNG إلى الحافظة" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "نسخ إلى الحافظة" } }, VL = { tooltip: "رسوماتك مشفرة من النهاية إلى النهاية حتى أن خوادم Excalidraw لن تراها أبدا.", link: "مشاركة المدونة في التشفير من النهاية إلى النهاية في Excalidraw" }, XL = { angle: "الزاوية", element: "عنصر", elements: "العناصر", height: "الارتفاع", scene: "المشهد", selected: "المحدد", storage: "التخزين", title: "إحصائيات للمهووسين", total: "المجموع", version: "الإصدار", versionCopy: "انقر للنسخ", versionNotAvailable: "الإصدار غير متوفر", width: "العرض" }, _L = { addedToLibrary: "تمت الاضافة الى المكتبة!", copyStyles: "نسخت الانماط.", copyToClipboard: "نسخ إلى الحافظة.", copyToClipboardAsPng: `تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG
({{exportColorScheme}})`, fileSaved: "تم حفظ الملف.", fileSavedToFilename: "حفظ باسم {filename}", canvas: "لوحة الرسم", selection: "العنصر المحدد", pasteAsSingleElement: `استخدم {{shortcut}} للصق كعنصر واحد،
أو لصق في محرر نص موجود`, unableToEmbed: "تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغاً على GitHub لطلب عنوان Url القائمة البيضاء", unrecognizedLinkFormat: "الرابط الذي ضمنته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص 'المضمن' المُزوَد من موقع المصدر" }, $L = { transparent: "شفاف", black: "أسود", white: "أبيض", red: "أحمر", pink: "وردي", grape: "عنبي", violet: "بنفسجي", gray: "رمادي", blue: "أزرق", cyan: "سماوي", teal: "أزرق مخضر", green: "أخضر", yellow: "أصفر", orange: "برتقالي", bronze: "برونزي" }, Ax = { app: { center_heading: "جميع بياناتك محفوظة محليا في المتصفح الخاص بك.", center_heading_plus: "هل تريد الذهاب إلى Excalidraw+ بدلاً من ذلك؟", menuHint: "التصدير والتفضيلات واللغات ..." }, defaults: { menuHint: "التصدير والتفضيلات وغيرها...", center_heading: "الرسم البياني التصويري. بشكل مبسط.", toolbarHint: "اختر أداة و ابدأ الرسم!", helpHint: "الاختصارات و المساعدة" } }, ux = { mostUsedCustomColors: "الألوان المخصصة الأكثر استخداما", colors: "الألوان", shades: "الدرجات", hexCode: "رمز Hex", noShades: "لا تتوفر درجات لهذا اللون" }, ex = { action: { exportToImage: { title: "تصدير كصورة", button: "تصدير كصورة", description: "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً." }, saveToDisk: { title: "حفظ الملف للجهاز", button: "حفظ الملف للجهاز", description: "تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً." }, excalidrawPlus: { title: "Excalidraw+", button: "تصدير إلى Excalidraw+", description: "حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك." } }, modal: { loadFromFile: { title: "تحميل من ملف", button: "تحميل من ملف", description: "سيتم التحميل من الملف <bold>استبدال المحتوى الموجود</bold>.<br></br>يمكنك النسخ الاحتياطي لرسمك أولاً باستخدام أحد الخيارات أدناه." }, shareableLink: { title: "تحميل من رابط", button: "استبدال محتواي", description: "سيتسبب تحميل رسمة خارجية <bold>باستبدال محتواك الموجود حالياً</bold>.<br></br>بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه." } } }, Cx = { title: "", button: "", description: "", syntax: "", preview: "" }, nmA = { labels: LL, library: xL, buttons: SL, alerts: NL, errors: RL, toolBar: ML, headings: YL, hints: vL, canvasError: HL, errorSplash: KL, roomDialog: JL, errorDialog: ZL, exportDialog: qL, helpDialog: WL, clearCanvasDialog: jL, publishDialog: TL, publishSuccessDialog: zL, confirmDialog: PL, imageExportDialog: OL, encrypted: VL, stats: XL, toast: _L, colors: $L, welcomeScreen: Ax, colorPicker: ux, overwriteConfirm: ex, mermaid: Cx };
const rmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NL,
  buttons: SL,
  canvasError: HL,
  clearCanvasDialog: jL,
  colorPicker: ux,
  colors: $L,
  confirmDialog: PL,
  default: nmA,
  encrypted: VL,
  errorDialog: ZL,
  errorSplash: KL,
  errors: RL,
  exportDialog: qL,
  headings: YL,
  helpDialog: WL,
  hints: vL,
  imageExportDialog: OL,
  labels: LL,
  library: xL,
  mermaid: Cx,
  overwriteConfirm: ex,
  publishDialog: TL,
  publishSuccessDialog: zL,
  roomDialog: JL,
  stats: XL,
  toast: _L,
  toolBar: ML,
  welcomeScreen: Ax
}, Symbol.toStringTag, { value: "Module" }));
var Bx = { paste: "Yapışdır", pasteAsPlaintext: "Düz mətn kimi yapışdırın", pasteCharts: "Diaqramları yapışdırın", selectAll: "Hamısını seç", multiSelect: "Seçimə element əlavə edin", moveCanvas: "Kanvası köçürün", cut: "Kəs", copy: "Kopyala", copyAsPng: "PNG olaraq panoya kopyala", copyAsSvg: "SVG olaraq panoya kopyala", copyText: "Mətn olaraq panoya kopyala", copySource: "", convertToCode: "", bringForward: "Önə daşı", sendToBack: "Geriyə göndərin", bringToFront: "Önə gətirin", sendBackward: "Geriyə göndərin", delete: "Sil", copyStyles: "Stilləri kopyalayın", pasteStyles: "Stilləri yapışdırın", stroke: "Strok rəngi", background: "Arxa fon", fill: "Doldur", strokeWidth: "Strok eni", strokeStyle: "Strok stili", strokeStyle_solid: "Solid", strokeStyle_dashed: "Kəsik", strokeStyle_dotted: "Nöqtəli", sloppiness: "Səliqəsizlik", opacity: "Şəffaflıq", textAlign: "Mətni uyğunlaşdır", edges: "Kənarlar", sharp: "Kəskin", round: "Dəyirmi", arrowheads: "Ox ucları", arrowhead_none: "Heç biri", arrowhead_arrow: "Ox", arrowhead_bar: "Çubuq", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Üçbucaq", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Şrift ölçüsü", fontFamily: "Şrift qrupu", addWatermark: '"Made with Excalidraw" əlavə et', handDrawn: "Əllə çəkilmiş", normal: "Normal", code: "Kod", small: "Kiçik", medium: "Orta", large: "Böyük", veryLarge: "Çox böyük", solid: "Solid", hachure: "Ştrix", zigzag: "Ziqzaq", crossHatch: "Çarpaz dəlik", thin: "İncə", bold: "Qalın", left: "Sol", center: "Mərkəz", right: "Sağ", extraBold: "Ekstra qalın", architect: "Memar", artist: "Rəssam", cartoonist: "Karikaturaçı", fileTitle: "Fayl adı", colorPicker: "Rəng seçən", canvasColors: "Kanvas üzərində istifadə olunur", canvasBackground: "Kanvas arxa fonu", drawingCanvas: "Kanvas çəkmək", layers: "Qatlar", actions: "Hərəkətlər", language: "Dil", liveCollaboration: "Canlı əməkdaşlıq...", duplicateSelection: "Dublikat", untitled: "Başlıqsız", name: "Ad", yourName: "Adınız", madeWithExcalidraw: "Excalidraw ilə hazırlanmışdır", group: "Qrup şəklində seçim", ungroup: "Qrupsuz seçim", collaborators: "", showGrid: "", addToLibrary: "", removeFromLibrary: "", libraryLoadingMessage: "", libraries: "", loadingScene: "", align: "", alignTop: "", alignBottom: "", alignLeft: "", alignRight: "", centerVertically: "", centerHorizontally: "", distributeHorizontally: "", distributeVertically: "", flipHorizontal: "", flipVertical: "", viewMode: "", share: "", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "", excalidrawLib: "", decreaseFontSize: "", increaseFontSize: "", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "", editEmbed: "", create: "", createEmbed: "", label: "", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "", unlock: "", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gx = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, tx = { clearReset: "", exportJSON: "", exportImage: "", export: "", copyToClipboard: "", save: "", saveAs: "", load: "", getShareableLink: "", close: "", selectLanguage: "", scrollBackToContent: "", zoomIn: "", zoomOut: "", resetZoom: "", menu: "", done: "", edit: "", undo: "", redo: "", resetLibrary: "", createNewRoom: "", fullScreen: "", darkMode: "", lightMode: "", zenMode: "", objectsSnapMode: "", exitZenMode: "", cancel: "", clear: "", remove: "", embed: "", publishLibrary: "", submit: "", confirm: "", embeddableInteractionButton: "" }, ix = { clearReset: "", couldNotCreateShareableLink: "", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "", importBackendFailed: "", cannotExportEmptyCanvas: "", couldNotCopyToClipboard: "", decryptFailed: "", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: "", errorAddingToLibrary: "", errorRemovingFromLibrary: "", confirmAddLibrary: "", imageDoesNotContainScene: "", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, Ex = { unsupportedFileType: "", imageInsertError: "", fileTooBig: "", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "", cannotResolveCollabServer: "", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, ax = { selection: "", image: "", rectangle: "", diamond: "", ellipse: "", arrow: "", line: "", freedraw: "", text: "", library: "", lock: "", penMode: "", link: "", eraser: "", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, Ix = { canvasActions: "", selectedShapeActions: "", shapes: "" }, ox = { canvasPanning: "", linearElement: "", freeDraw: "", text: "", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, Qx = { cannotShowPreview: "", canvasTooBig: "", canvasTooBigTip: "" }, nx = { headingMain: "", clearCanvasMessage: "", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, rx = { desc_intro: "", desc_privacy: "", button_startSession: "", button_stopSession: "", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, sx = { title: "" }, lx = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, cx = { blog: "", click: "", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dx = { title: "" }, Dx = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, hx = { title: "", content: "" }, wx = { resetLibrary: "", removeItemsFromLib: "" }, Fx = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, px = { tooltip: "", link: "" }, mx = { angle: "", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "" }, kx = { addedToLibrary: "", copyStyles: "", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yx = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, bx = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, Ux = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, Gx = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fx = { title: "", button: "", description: "", syntax: "", preview: "" }, smA = { labels: Bx, library: gx, buttons: tx, alerts: ix, errors: Ex, toolBar: ax, headings: Ix, hints: ox, canvasError: Qx, errorSplash: nx, roomDialog: rx, errorDialog: sx, exportDialog: lx, helpDialog: cx, clearCanvasDialog: dx, publishDialog: Dx, publishSuccessDialog: hx, confirmDialog: wx, imageExportDialog: Fx, encrypted: px, stats: mx, toast: kx, colors: yx, welcomeScreen: bx, colorPicker: Ux, overwriteConfirm: Gx, mermaid: fx };
const lmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: ix,
  buttons: tx,
  canvasError: Qx,
  clearCanvasDialog: dx,
  colorPicker: Ux,
  colors: yx,
  confirmDialog: wx,
  default: smA,
  encrypted: px,
  errorDialog: sx,
  errorSplash: nx,
  errors: Ex,
  exportDialog: lx,
  headings: Ix,
  helpDialog: cx,
  hints: ox,
  imageExportDialog: Fx,
  labels: Bx,
  library: gx,
  mermaid: fx,
  overwriteConfirm: Gx,
  publishDialog: Dx,
  publishSuccessDialog: hx,
  roomDialog: rx,
  stats: mx,
  toast: kx,
  toolBar: ax,
  welcomeScreen: bx
}, Symbol.toStringTag, { value: "Module" }));
var Lx = { paste: "Постави", pasteAsPlaintext: "Постави като обикновен текст", pasteCharts: "Постави графики", selectAll: "Маркирай всичко", multiSelect: "Добави елемент към селекция", moveCanvas: "Премести платно", cut: "Изрежи", copy: "Копирай", copyAsPng: "Копиране в клипборда", copyAsSvg: "Копирано в клипборда като SVG", copyText: "", copySource: "", convertToCode: "", bringForward: "Преместване напред", sendToBack: "Изнасяне назад", bringToFront: "Изнасяне отпред", sendBackward: "Изпрати отзад", delete: "Изтрий", copyStyles: "Копирайте стилове", pasteStyles: "Постави стилове", stroke: "Щрих", background: "Фон", fill: "Наситеност", strokeWidth: "Ширина на щриха", strokeStyle: "Стил на линия", strokeStyle_solid: "Плътен", strokeStyle_dashed: "Пунктир", strokeStyle_dotted: "Пунктирано", sloppiness: "Небрежност", opacity: "Прозрачност", textAlign: "Подравняване на текста", edges: "Крайща", sharp: "Остър", round: "Закръглено", arrowheads: "Стрелки", arrowhead_none: "Без", arrowhead_arrow: "Стрелка", arrowhead_bar: "Връх на стрелката", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Триъгълник", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Размер на шрифта", fontFamily: "Семейство шрифтове", addWatermark: 'Добави "Направено с Excalidraw"', handDrawn: "Нарисувано на ръка", normal: "Нормален", code: "Код", small: "Малък", medium: "Среден", large: "Голям", veryLarge: "Много голям", solid: "Солиден", hachure: "Хералдика", zigzag: "Зигзаг", crossHatch: "Двойно-пресечено", thin: "Тънък", bold: "Ясно очертан", left: "Ляво", center: "Център", right: "Дясно", extraBold: "Много ясно очертан", architect: "Архитект", artist: "Художник", cartoonist: "Карикатурист", fileTitle: "Име на файл", colorPicker: "Избор на цвят", canvasColors: "Използван на платно", canvasBackground: "Фон на платно", drawingCanvas: "Платно за рисуване", layers: "Слоеве", actions: "Действия", language: "Език", liveCollaboration: "", duplicateSelection: "Дублирай", untitled: "Неозаглавено", name: "Име", yourName: "Вашето име", madeWithExcalidraw: "Направено с Excalidraw", group: "Групирай селекцията", ungroup: "Спри групирането на селекцията", collaborators: "Сътрудници", showGrid: "Показване на мрежа", addToLibrary: "Добавяне към библиотеката", removeFromLibrary: "Премахване от библиотеката", libraryLoadingMessage: "Зареждане на библиотеката…", libraries: "Разглеждане на библиотеките", loadingScene: "Зареждане на сцена…", align: "Подравняване", alignTop: "Подравняване отгоре", alignBottom: "Подравняване отдолу", alignLeft: "Подравняване отляво", alignRight: "Подравняване отдясно", centerVertically: "Центрирай вертикално", centerHorizontally: "Центрирай хоризонтално", distributeHorizontally: "Разпредели хоризонтално", distributeVertically: "Разпредели вертикално", flipHorizontal: "Хоризонтално обръщане", flipVertical: "Вертикално обръщане", viewMode: "Изглед", share: "Сподели", showStroke: "", showBackground: "", toggleTheme: "Включи тема", personalLib: "Лична Библиотека", excalidrawLib: "Excalidraw Библиотека", decreaseFontSize: "Намали размера на шрифта", increaseFontSize: "Увеличи размера на шрифта", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "Редактирай линк", editEmbed: "", create: "", createEmbed: "", label: "Линк", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "Заключи", unlock: "Отключи", lockAll: "Заключи всички", unlockAll: "Отключи всички" }, statusPublished: "Публикувани", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "Избери цвят от платното", textToDiagram: "", prompt: "" }, xx = { noItems: "Няма добавени неща все още...", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, Sx = { clearReset: "Нулиране на платно", exportJSON: "", exportImage: "", export: "Запази на...", copyToClipboard: "Копиране в клипборда", save: "Запази към текущ файл", saveAs: "Запиши като", load: "Отвори", getShareableLink: "Получаване на връзка за споделяне", close: "Затвори", selectLanguage: "Избор на език", scrollBackToContent: "Превъртете обратно към съдържанието", zoomIn: "Приближаване", zoomOut: "Отдалечаване", resetZoom: "Стандартен мащаб", menu: "Меню", done: "Завършено", edit: "Редактиране", undo: "Отмяна", redo: "Повтори", resetLibrary: "Нулиране на библиотеката", createNewRoom: "Създай нова стая", fullScreen: "На цял екран", darkMode: "Тъмен режим", lightMode: "Светъл режим", zenMode: "Режим Zen", objectsSnapMode: "", exitZenMode: "Спиране на Zen режим", cancel: "Отмени", clear: "Изчисти", remove: "Премахване", embed: "", publishLibrary: "Публикувай", submit: "Изпрати", confirm: "Потвърждаване", embeddableInteractionButton: "" }, Nx = { clearReset: "Това ще изчисти цялото платно. Сигурни ли сте?", couldNotCreateShareableLink: "Връзката не може да бъде създадена.", couldNotCreateShareableLinkTooBig: "Не може да се създаде връзка за споделяне: сцената е твърде голяма", couldNotLoadInvalidFile: "Невалиден файл не може да се зареди", importBackendFailed: "Импортирането от бекенд не беше успешно.", cannotExportEmptyCanvas: "Не може да се експортира празно платно.", couldNotCopyToClipboard: "Не можем да копираме в клипбоарда.", decryptFailed: "Данните не можаха да се дешифрират.", uploadedSecurly: "Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.", loadSceneOverridePrompt: "Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?", collabStopOverridePrompt: `Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?

(Ако искате да продължите с локалната рисунка, просто затворете таба на браузъра.)`, errorAddingToLibrary: "Не можем да заредим от библиотеката", errorRemovingFromLibrary: "Не можем да премахнем елемент от библиотеката", confirmAddLibrary: "Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?", imageDoesNotContainScene: "", cannotRestoreFromImage: "Не може да бъде възстановена сцена от този файл", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "Изтрий {{count}} елемент(а) от библиотеката?", invalidEncryptionKey: "", collabOfflineWarning: "" }, Rx = { unsupportedFileType: "Този файлов формат не се поддържа.", imageInsertError: "", fileTooBig: "Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "Невалиден SVG.", cannotResolveCollabServer: "", importLibraryError: "Не можем да заредим библиотеката", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "Силно препоръчваме да изключите тази настройка. Можете да следвате <link>тези стъпки</link> за това как да го направите.", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, Mx = { selection: "Селекция", image: "Вмъкване на изображение", rectangle: "Правоъгълник", diamond: "Диамант", ellipse: "Елипс", arrow: "Стрелка", line: "Линия", freedraw: "Рисуване", text: "Текст", library: "Библиотека", lock: "Поддържайте избрания инструмент активен след рисуване", penMode: "", link: "", eraser: "Гума", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "Още инструменти", mermaidToExcalidraw: "", magicSettings: "" }, Yx = { canvasActions: "Действия по платното", selectedShapeActions: "Избрани действия", shapes: "Фигури" }, vx = { canvasPanning: "", linearElement: "Кликнете, за да стартирате няколко точки, плъзнете за една линия", freeDraw: "Натиснете и влачете, пуснете като сте готови", text: "Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "Кликнете върху последната точка или натиснете Escape или Enter, за да завършите", lockAngle: "Можете да ограничите ъгъла, като задържите SHIFT", resize: `Може да ограничите при преоразмеряване като задържите SHIFT,
задръжте ALT за преоразмерите през центъра`, resizeImage: "", rotate: "Можете да ограничите ъглите, като държите SHIFT, докато се въртите", lineEditor_info: "", lineEditor_pointSelected: "Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "Натиснете Enter, за да добавите", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, Hx = { cannotShowPreview: "Невъзможност за показване на preview", canvasTooBig: "Платното е твърде голямо.", canvasTooBigTip: "Подсказка: пробвайте да приближите далечните елементи по-близко." }, Kx = { headingMain: "Среща грешка. Опитайте <button>презареждане на страницата.</button>", clearCanvasMessage: "Ако презареждането не работи, опитайте <button>изчистване на платното.</button>", clearCanvasCaveat: " Това ще доведе до загуба на работа ", trackedToSentry: "Грешката с идентификатор {{eventId}} беше проследен в нашата система.", openIssueMessage: "Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата <button>тракер за грешки.</button> Моля, включете информация по-долу, като я копирате и добавите в GitHub.", sceneContent: "Съдържание на сцената:" }, Jx = { desc_intro: "Можете да поканите хора на текущата си сцена да си сътрудничат с вас.", desc_privacy: "Не се притеснявайте, сесията използва криптиране от край до край, така че каквото нарисувате ще остане частно. Дори нашият сървър няма да може да види какво предлагате.", button_startSession: "Стартирайте сесията", button_stopSession: "Стоп на сесията", desc_inProgressIntro: "Сесията за сътрудничество на живо е в ход.", desc_shareLink: "Споделете тази връзка с всеки, с когото искате да си сътрудничите:", desc_exitSession: "Спирането на сесията ще ви изключи от стаята, но ще можете да продължите да работите със сцената, локално. Имайте предвид, че това няма да засегне други хора и те все още ще могат да си сътрудничат с тяхната версия.", shareTitle: "" }, Zx = { title: "Грешка" }, qx = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "Експорт", excalidrawplus_exportError: "" }, Wx = { blog: "Прочетете нашия блог", click: "клик", deepSelect: "", deepBoxSelect: "", curvedArrow: "Извита стрелка", curvedLine: "Извита линия", documentation: "Документация", doubleClick: "двойно-щракване", drag: "плъзнете", editor: "Редактор", editLineArrowPoints: "", editText: "", github: "Намерихте проблем? Изпратете", howto: "Следвайте нашите ръководства", or: "или", preventBinding: "Спри прилепяне на стрелките", tools: "Инструменти", shortcuts: "Клавиши за бърз достъп", textFinish: "Завърши редактиране (текстов редактор)", textNewLine: "Добави нова линия (текстов редактор)", title: "Помощ", view: "Преглед", zoomToFit: "Приближи докато се виждат всички елементи", zoomToSelection: "Приближи селекцията", toggleElementLock: "Заключи/Отключи селекция", movePageUpDown: "Премести страница нагоре/надолу", movePageLeftRight: "Премести страница наляво/надясно" }, jx = { title: "Изчисти платното" }, Tx = { title: "Публикувай библиотека", itemName: "Име", authorName: "Авторско име", githubUsername: "GitHub потребителско име", twitterUsername: "Twitter потребителско име", libraryName: "Име на библиотеката", libraryDesc: "Описание на библиотеката", website: "Уебсайт", placeholder: { authorName: "Името или потребителското Ви име", libraryName: "Име на библиотеката Ви", libraryDesc: "Описание на библиотеката ви, за да помогнете на хората да разберат приложенията ѝ", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "Задължително", website: "Въведете валиден URL адрес" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, zx = { title: "", content: "" }, Px = { resetLibrary: "Нулирай библиотека", removeItemsFromLib: "" }, Ox = { header: "", label: { withBackground: "Фон", onlySelected: "Само избраното", darkMode: "Тъмен режим", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "Изнасяне в PNG", exportToSvg: "Изнасяне в SVG", copyPngToClipboard: "Копирай PNG в клипборда" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Копиране в клипборда" } }, Vx = { tooltip: "Вашите рисунки са криптирани от край до край, така че сървърите на Excalidraw няма да могат да ги виждат.", link: "" }, Xx = { angle: "Ъгъл", element: "Елемент", elements: "Елементи", height: "Височина", scene: "Сцена", selected: "Селектирано", storage: "Съхранение на данни", title: "Статистика за хакери", total: "Общо", version: "Версия", versionCopy: "Настисни за да копираш", versionNotAvailable: "Версията не е налична", width: "Широчина" }, _x = { addedToLibrary: "Добавена към библиотеката", copyStyles: "Копирани стилове.", copyToClipboard: "Копирано в клипборда.", copyToClipboardAsPng: `Копира {{exportSelection}} в клипборда като PNG
({{exportColorScheme}})`, fileSaved: "Файлът е запазен.", fileSavedToFilename: "Запазен към {filename}", canvas: "платно", selection: "селекция", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, $x = { transparent: "Прозрачен", black: "Черен", white: "Бял", red: "Червен", pink: "Розов", grape: "Грозде", violet: "Виолетово", gray: "Сив", blue: "Син", cyan: "Синьозелено", teal: "Тъмно синьо-зелено", green: "Зелено", yellow: "Жълто", orange: "Оранжево", bronze: "Бронзово" }, AS = { app: { center_heading: "Всичките Ви данни са запазени локално в браузъра Ви.", center_heading_plus: "", menuHint: "Експорт, предпочитания, езици, ..." }, defaults: { menuHint: "Експорт, предпочитания, и още...", center_heading: "Диаграми. Направени. Просто.", toolbarHint: "Изберете инструмент & Започнете да рисувате!", helpHint: "Преки пътища & помощ" } }, uS = { mostUsedCustomColors: "Най-често използвани цветове", colors: "Цветове", shades: "Нюанси", hexCode: "Шестнадесетичен код", noShades: "" }, eS = { action: { exportToImage: { title: "Изнеси като изображение", button: "Изнеси като изображение", description: "" }, saveToDisk: { title: "Запази към диск", button: "Запази към диск", description: "" }, excalidrawPlus: { title: "Excalidraw+", button: "Експортирай към Excalidraw+", description: "Запази сцената към Excalidraw+ работното място." } }, modal: { loadFromFile: { title: "Зареди от файл", button: "Зареди от файл", description: "" }, shareableLink: { title: "Зареди от линк", button: "Замени моето съдържание", description: "" } } }, CS = { title: "", button: "", description: "", syntax: "", preview: "" }, cmA = { labels: Lx, library: xx, buttons: Sx, alerts: Nx, errors: Rx, toolBar: Mx, headings: Yx, hints: vx, canvasError: Hx, errorSplash: Kx, roomDialog: Jx, errorDialog: Zx, exportDialog: qx, helpDialog: Wx, clearCanvasDialog: jx, publishDialog: Tx, publishSuccessDialog: zx, confirmDialog: Px, imageExportDialog: Ox, encrypted: Vx, stats: Xx, toast: _x, colors: $x, welcomeScreen: AS, colorPicker: uS, overwriteConfirm: eS, mermaid: CS };
const dmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: Nx,
  buttons: Sx,
  canvasError: Hx,
  clearCanvasDialog: jx,
  colorPicker: uS,
  colors: $x,
  confirmDialog: Px,
  default: cmA,
  encrypted: Vx,
  errorDialog: Zx,
  errorSplash: Kx,
  errors: Rx,
  exportDialog: qx,
  headings: Yx,
  helpDialog: Wx,
  hints: vx,
  imageExportDialog: Ox,
  labels: Lx,
  library: xx,
  mermaid: CS,
  overwriteConfirm: eS,
  publishDialog: Tx,
  publishSuccessDialog: zx,
  roomDialog: Jx,
  stats: Xx,
  toast: _x,
  toolBar: Mx,
  welcomeScreen: AS
}, Symbol.toStringTag, { value: "Module" }));
var BS = { paste: "পেস্ট করুন", pasteAsPlaintext: "প্লেইনটেক্সট হিসাবে পেস্ট করুন", pasteCharts: "চার্ট পেস্ট করুন", selectAll: "সবটা সিলেক্ট করুন", multiSelect: "একাধিক সিলেক্ট করুন", moveCanvas: "ক্যানভাস সরান", cut: "কাট করুন", copy: "কপি করুন", copyAsPng: "পীএনজী ছবির মতন কপি করুন", copyAsSvg: "এসভীজী ছবির মতন কপি করুন", copyText: "লিখিত তথ্যের মতন কপি করুন", copySource: "", convertToCode: "", bringForward: "অধিকতর সামনে আনুন", sendToBack: "অধিকতর পিছনে নিয়ে যান", bringToFront: "সবার সামনে আনুন", sendBackward: "সবার পিছনে নিয়ে যান", delete: "মুছা", copyStyles: "ডিজাইন কপি করুন", pasteStyles: "ডিজাইন পেস্ট করুন", stroke: "রেখাংশ", background: "পটভূমি", fill: "রং", strokeWidth: "রেখাংশের বেধ", strokeStyle: "রেখাংশের ডিজাইন", strokeStyle_solid: "পুরু", strokeStyle_dashed: "পাতলা", strokeStyle_dotted: "বিন্দুবিন্দু", sloppiness: "ভ্রান্তি", opacity: "দৃশ্যমানতা", textAlign: "লেখ অনুভূমি", edges: "কোণ", sharp: "তীক্ষ্ণ", round: "গোল", arrowheads: "তীরের শীর্ষভাগ", arrowhead_none: "কিছু না", arrowhead_arrow: "তীর", arrowhead_bar: "রেখাংশ", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "ত্রিভূজ", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "লেখনীর মাত্রা", fontFamily: "লেখনীর হরফ", addWatermark: "এক্সক্যালিড্র দ্বারা প্রস্তুত", handDrawn: "হাতে আঁকা", normal: "স্বাভাবিক", code: "কোড", small: "ছোট", medium: "মাঝারি", large: "বড়", veryLarge: "অনেক বড়", solid: "দৃঢ়", hachure: "ভ্রুলেখা", zigzag: "আঁকাবাঁকা", crossHatch: "ক্রস হ্যাচ", thin: "পাতলা", bold: "পুরু", left: "বাম", center: "কেন্দ্র", right: "ডান", extraBold: "অতি পুরু", architect: "স্থপতি", artist: "শিল্পী", cartoonist: "চিত্রকার", fileTitle: "ফাইলের নাম", colorPicker: "রং পছন্দ করুন", canvasColors: "ক্যানভাসের রং", canvasBackground: "ক্যানভাসের পটভূমি", drawingCanvas: "ব্যবহৃত ক্যানভাস", layers: "মাত্রা", actions: "ক্রিয়া", language: "ভাষা", liveCollaboration: "সরাসরি পারস্পরিক সহযোগিতা...", duplicateSelection: "সদৃশ সিলেক্ট", untitled: "অনামী", name: "নাম", yourName: "আপনার নাম", madeWithExcalidraw: "এক্সক্যালিড্র দ্বারা তৈরি", group: "দল গঠন করুন", ungroup: "দল বিভেদ করুন", collaborators: "সহযোগী", showGrid: "গ্রিড দেখান", addToLibrary: "সংগ্রহে যোগ করুন", removeFromLibrary: "সংগ্রহ থেকে বের করুন", libraryLoadingMessage: "সংগ্রহ তৈরি হচ্ছে", libraries: "সংগ্রহ দেখুন", loadingScene: "দৃশ্য তৈরি হচ্ছে", align: "পংক্তিবিন্যাস", alignTop: "উপর পংক্তি", alignBottom: "নিম্ন পংক্তি", alignLeft: "বাম পংক্তি", alignRight: "ডান পংক্তি", centerVertically: "উলম্ব কেন্দ্রিত", centerHorizontally: "অনুভূমিক কেন্দ্রিত", distributeHorizontally: "অনুভূমিকভাবে বিতরণ করুন", distributeVertically: "উল্লম্বভাবে বিতরণ করুন", flipHorizontal: "অনুভূমিক আবর্তন", flipVertical: "উলম্ব আবর্তন", viewMode: "দৃশ্য", share: "ভাগ করুন", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "", excalidrawLib: "", decreaseFontSize: "লেখনীর মাত্রা কমান", increaseFontSize: "লেখনীর মাত্রা বাড়ান", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "লিঙ্ক সংশোধন", editEmbed: "", create: "লিঙ্ক তৈরী", createEmbed: "", label: "লিঙ্ক নামকরণ", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "আবদ্ধ করুন", unlock: "বিচ্ছিন্ন করুন", lockAll: "সব আবদ্ধ করুন", unlockAll: "সব বিচ্ছিন্ন করুন" }, statusPublished: "প্রকাশিত", sidebarLock: "লক", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gS = { noItems: "সংগ্রহে কিছু যোগ করা হয়নি", hint_emptyLibrary: "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷", hint_emptyPrivateLibrary: "এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন" }, tS = { clearReset: "ক্যানভাস সাফ করুন", exportJSON: "জেসন নিবদ্ধ করুন", exportImage: "", export: "", copyToClipboard: "ক্লিপবোর্ডে কপি করুন", save: "জমা করুন", saveAs: "অন্যভাবে জমা করুন", load: "", getShareableLink: "ভাগযোগ্য লিঙ্ক পান", close: "বন্ধ করুন", selectLanguage: "ভাষা চিহ্নিত করুন", scrollBackToContent: "বিষয়বস্তুতে ফেরত যান", zoomIn: "বড় করুন", zoomOut: "ছোট করুন", resetZoom: "স্বাভাবিক করুন", menu: "তালিকা", done: "সম্পন্ন", edit: "সংশোধন করুন", undo: "ফেরত যান", redo: "পুনরায় করুন", resetLibrary: "সংগ্রহ সাফ করুন", createNewRoom: "নতুন রুম বানান", fullScreen: "পূর্ণস্ক্রীন", darkMode: "ডার্ক মোড", lightMode: "লাইট মোড", zenMode: "জেন মোড", objectsSnapMode: "", exitZenMode: "জেন মোড বন্ধ করুন", cancel: "বাতিল", clear: "সাফ", remove: "বিয়োগ", embed: "", publishLibrary: "সংগ্রহ প্রকাশ করুন", submit: "জমা করুন", confirm: "নিশ্চিত করুন", embeddableInteractionButton: "" }, iS = { clearReset: "এটি পুরো ক্যানভাস সাফ করবে। আপনি কি নিশ্চিত?", couldNotCreateShareableLink: "ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি।", couldNotCreateShareableLinkTooBig: "ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি: দৃশ্যটি খুব বড়", couldNotLoadInvalidFile: "অবৈধ ফাইল লোড করা যায়নি", importBackendFailed: "ব্যাকেন্ড থেকে আপলোড ব্যর্থ হয়েছে।", cannotExportEmptyCanvas: "খালি ক্যানভাস নিবদ্ধ করা যাবে না।", couldNotCopyToClipboard: "ক্লিপবোর্ডে কপি করা যায়নি।", decryptFailed: "তথ্য ডিক্রিপ্ট করা যায়নি।", uploadedSecurly: "আপলোডটি এন্ড-টু-এন্ড এনক্রিপশনের মাধ্যমে সুরক্ষিত করা হয়েছে, যার অর্থ হল এক্সক্যালিড্র সার্ভার এবং তৃতীয় পক্ষের দ্বারা পড়তে পারা সম্ভব নয়।", loadSceneOverridePrompt: "বাহ্যিক অঙ্কন লোড করা আপনার বিদ্যমান দৃশ্য প্রতিস্থাপন করবে। আপনি কি অবিরত করতে চান?", collabStopOverridePrompt: `অধিবেশন বন্ধ করা আপনার পূর্ববর্তী, স্থানীয়ভাবে সঞ্চিত অঙ্কন ওভাররাইট করবে। আপনি কি নিশ্চিত?

(যদি আপনি আপনার স্থানীয় অঙ্কন রাখতে চান, তাহলে শুধু ব্রাউজার ট্যাবটি বন্ধ করুন।)`, errorAddingToLibrary: "বস্তুটি সংগ্রহে যোগ করা যায়নি", errorRemovingFromLibrary: "বস্তুটি সংগ্রহ থেকে বিয়োগ করা যায়নি", confirmAddLibrary: "এটি আপনার সংগ্রহে {{numShapes}} আকার(গুলি) যোগ করবে। আপনি কি নিশ্চিত?", imageDoesNotContainScene: "এই ছবিতে কোনো দৃশ্যের তথ্য আছে বলে মনে হয় না৷ আপনি কি নিবদ্ধ করার সময় দৃশ্য এমবেডিং করতে সক্ষম?", cannotRestoreFromImage: "এই ফাইল থেকে দৃশ্য পুনরুদ্ধার করা যায়নি", invalidSceneUrl: "সরবরাহ করা লিঙ্ক থেকে দৃশ্য লোড করা যায়নি৷ এটি হয় বিকৃত, অথবা বৈধ এক্সক্যালিড্র জেসন তথ্য নেই৷", resetLibrary: "এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?", removeItemsFromsLibrary: "সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?", invalidEncryptionKey: "অবৈধ এনক্রীপশন কী।", collabOfflineWarning: "" }, ES = { unsupportedFileType: "অসমর্থিত ফাইল।", imageInsertError: "ছবি সন্নিবেশ করা যায়নি। পরে আবার চেষ্টা করুন...", fileTooBig: "ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷", svgImageInsertError: "এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷", failedToFetchImage: "", invalidSVGString: "এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷", cannotResolveCollabServer: "কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।", importLibraryError: "সংগ্রহ লোড করা যায়নি", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aS = { selection: "বাছাই", image: "চিত্র সন্নিবেশ", rectangle: "আয়তক্ষেত্র", diamond: "রুহিতন", ellipse: "উপবৃত্ত", arrow: "তীর", line: "রেখা", freedraw: "কলম", text: "লেখা", library: "সংগ্রহ", lock: "আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন", penMode: "", link: "একটি নির্বাচিত আকৃতির জন্য লিঙ্ক যোগ বা আপডেট করুন", eraser: "ঝাড়ন", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IS = { canvasActions: "ক্যানভাস কার্যকলাপ", selectedShapeActions: "বাছাই করা আকার(গুলি)র কার্যকলাপ", shapes: "আকার(গুলি)" }, oS = { canvasPanning: "", linearElement: "একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন", freeDraw: "ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন", text: "বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন", embeddable: "", text_selected: "লেখা সম্পাদনা করতে ডাবল-ক্লিক করুন বা এন্টার টিপুন", text_editing: "লেখা সম্পাদনা শেষ করতে এসকেপ বা কন্ট্রোল/কম্যান্ড যোগে এন্টার টিপুন", linearElementMulti: "শেষ বিন্দুতে ক্লিক করুন অথবা শেষ করতে এসকেপ বা এন্টার টিপুন", lockAngle: "ঘোরানোর সময় আপনি শিফ্ট ধরে রেখে কোণ সীমাবদ্ধ করতে পারেন", resize: `আপনি আকার পরিবর্তন করার সময় শিফ্ট ধরে রেখে অনুপাতকে সীমাবদ্ধ করতে পারেন,
কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরে রাখুন`, resizeImage: "আপনি শিফ্ট ধরে রেখে অবাধে আকার পরিবর্তন করতে পারেন, কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরুন", rotate: "আপনি ঘোরানোর সময় শিফ্ট ধরে রেখে কোণগুলিকে সীমাবদ্ধ করতে পারেন", lineEditor_info: "", lineEditor_pointSelected: "বিন্দু(গুলি) মুছতে ডিলিট টিপুন, কন্ট্রোল/কম্যান্ড যোগে ডি টিপুন নকল করতে অথবা সরানোর জন্য টানুন", lineEditor_nothingSelected: `সম্পাদনা করার জন্য একটি বিন্দু নির্বাচন করুন (একাধিক নির্বাচন করতে শিফ্ট ধরে রাখুন),
অথবা অল্ট ধরে রাখুন এবং নতুন বিন্দু যোগ করতে ক্লিক করুন`, placeImage: "ছবিটি স্থাপন করতে ক্লিক করুন, অথবা নিজে আকার সেট করতে ক্লিক করুন এবং টেনে আনুন", publishLibrary: "আপনার নিজস্ব সংগ্রহ প্রকাশ করুন", bindTextToElement: "লেখা যোগ করতে এন্টার টিপুন", deepBoxSelect: "", eraserRevert: "মুছে ফেলার জন্য চিহ্নিত উপাদানগুলিকে ফিরিয়ে আনতে অল্ট ধরে রাখুন", firefox_clipboard_write: "", disableSnapping: "" }, QS = { cannotShowPreview: "প্রিভিউ দেখাতে অপারগ", canvasTooBig: "ক্যানভাস অনেক বড়।", canvasTooBigTip: "বিশেষ্য: দূরতম উপাদানগুলোকে একটু কাছাকাছি নিয়ে যাওয়ার চেষ্টা করুন।" }, nS = { headingMain: "একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন <button>পৃষ্ঠাটি পুনরায় লোড করার।</button>", clearCanvasMessage: "যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন <button>ক্যানভাস পরিষ্কার করার।</button>", clearCanvasCaveat: " এর ফলে কাজের ক্ষতি হবে ", trackedToSentry: "ত্রুটি {{eventId}} আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।", openIssueMessage: "আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন <button>ত্রুটি ইতিবৃত্ত।</button> অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।", sceneContent: "দৃশ্য বিষয়বস্তু:" }, rS = { desc_intro: "আপনি আপনার সাথে সহযোগিতা করার জন্য আপনার বর্তমান দৃশ্যে লোকেদের আমন্ত্রণ জানাতে পারেন৷", desc_privacy: "চিন্তা করবেন না, সেশনটি এন্ড-টু-এন্ড এনক্রিপশন ব্যবহার করে, তাই আপনি যা আঁকবেন তা গোপন থাকবে। এমনকি আমাদের সার্ভার আপনি যা নিয়ে এসেছেন তা দেখতে সক্ষম হবে না।", button_startSession: "সেশন শুরু করুন", button_stopSession: "সেশন বন্ধ করুন", desc_inProgressIntro: "লাইভ-সহযোগীতার সেশন এখন চলছে।", desc_shareLink: "আপনি যার সাথে সহযোগিতা করতে চান তাদের সাথে এই লিঙ্কটি ভাগ করুন: ", desc_exitSession: "অধিবেশন বন্ধ করা আপনাকে রুম থেকে সংযোগ বিচ্ছিন্ন করবে, কিন্তু আপনি স্থানীয়ভাবে দৃশ্যের সাথে কাজ চালিয়ে যেতে সক্ষম হবেন। মনে রাখবেন যে এটি অন্য লোকেদের প্রভাবিত করবে না এবং তারা এখনও তাদের সংস্করণে সহযোগিতা করতে সক্ষম হবে।", shareTitle: "এক্সক্যালিড্র লাইভ সহযোগিতা সেশনে যোগ দিন" }, sS = { title: "ত্রুটি" }, lS = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "নিবদ্ধ", excalidrawplus_exportError: "" }, cS = { blog: "", click: "ক্লিক", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "অথবা", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dS = { title: "" }, DS = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, hS = { title: "", content: "" }, wS = { resetLibrary: "", removeItemsFromLib: "" }, FS = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, pS = { tooltip: "", link: "" }, mS = { angle: "কোণ", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "প্রস্থ" }, kS = { addedToLibrary: "সংগ্রহশালায় যুক্ত হয়েছে", copyStyles: "", copyToClipboard: "ক্লিপবোর্ডে কপি করা হয়েছে।", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "", selection: "বাছাই", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yS = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, bS = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, US = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, GS = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fS = { title: "", button: "", description: "", syntax: "", preview: "" }, DmA = { labels: BS, library: gS, buttons: tS, alerts: iS, errors: ES, toolBar: aS, headings: IS, hints: oS, canvasError: QS, errorSplash: nS, roomDialog: rS, errorDialog: sS, exportDialog: lS, helpDialog: cS, clearCanvasDialog: dS, publishDialog: DS, publishSuccessDialog: hS, confirmDialog: wS, imageExportDialog: FS, encrypted: pS, stats: mS, toast: kS, colors: yS, welcomeScreen: bS, colorPicker: US, overwriteConfirm: GS, mermaid: fS };
const hmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iS,
  buttons: tS,
  canvasError: QS,
  clearCanvasDialog: dS,
  colorPicker: US,
  colors: yS,
  confirmDialog: wS,
  default: DmA,
  encrypted: pS,
  errorDialog: sS,
  errorSplash: nS,
  errors: ES,
  exportDialog: lS,
  headings: IS,
  helpDialog: cS,
  hints: oS,
  imageExportDialog: FS,
  labels: BS,
  library: gS,
  mermaid: fS,
  overwriteConfirm: GS,
  publishDialog: DS,
  publishSuccessDialog: hS,
  roomDialog: rS,
  stats: mS,
  toast: kS,
  toolBar: aS,
  welcomeScreen: bS
}, Symbol.toStringTag, { value: "Module" }));
var LS = { paste: "Enganxa", pasteAsPlaintext: "Enganxar com a text pla", pasteCharts: "Enganxa els diagrames", selectAll: "Selecciona-ho tot", multiSelect: "Afegeix un element a la selecció", moveCanvas: "Mou el llenç", cut: "Retalla", copy: "Copia", copyAsPng: "Copia al porta-retalls com a PNG", copyAsSvg: "Copia al porta-retalls com a SVG", copyText: "Copia al porta-retalls com a text", copySource: "Copia l'origen al porta-retalls", convertToCode: "", bringForward: "Porta endavant", sendToBack: "Envia enrere", bringToFront: "Porta al davant", sendBackward: "Envia al fons", delete: "Elimina", copyStyles: "Copia els estils", pasteStyles: "Enganxa els estils", stroke: "Color del traç", background: "Color del fons", fill: "Estil del fons", strokeWidth: "Amplada del traç", strokeStyle: "Estil del traç", strokeStyle_solid: "Sòlid", strokeStyle_dashed: "Guions", strokeStyle_dotted: "Punts", sloppiness: "Estil del traç", opacity: "Opacitat", textAlign: "Alineació del text", edges: "Vores", sharp: "Agut", round: "Arrodonit", arrowheads: "Puntes de fletxa", arrowhead_none: "Cap", arrowhead_arrow: "Fletxa", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Triangle", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Mida de lletra", fontFamily: "Tipus de lletra", addWatermark: "Afegeix-hi «Fet amb Excalidraw»", handDrawn: "Dibuixat a mà", normal: "Normal", code: "Codi", small: "Petit", medium: "Mitjà", large: "Gran", veryLarge: "Molt gran", solid: "Sòlid", hachure: "Ratlletes", zigzag: "", crossHatch: "Ratlletes creuades", thin: "Fi", bold: "Negreta", left: "Esquerra", center: "Centre", right: "Dreta", extraBold: "Extra negreta", architect: "Arquitecte", artist: "Artista", cartoonist: "Dibuixant", fileTitle: "Nom del fitxer", colorPicker: "Selector de colors", canvasColors: "Usat al llenç", canvasBackground: "Fons del llenç", drawingCanvas: "Llenç de dibuix", layers: "Capes", actions: "Accions", language: "Llengua", liveCollaboration: "Col·laboració en directe...", duplicateSelection: "Duplica", untitled: "Sense títol", name: "Nom", yourName: "El vostre nom", madeWithExcalidraw: "Fet amb Excalidraw", group: "Agrupa la selecció", ungroup: "Desagrupa la selecció", collaborators: "Col·laboradors", showGrid: "Mostra la graella", addToLibrary: "Afegir a la biblioteca", removeFromLibrary: "Eliminar de la biblioteca", libraryLoadingMessage: "S'està carregant la biblioteca…", libraries: "Explora les biblioteques", loadingScene: "S'està carregant l'escena…", align: "Alinea", alignTop: "Alinea a la part superior", alignBottom: "Alinea a la part inferior", alignLeft: "Alinea a l’esquerra", alignRight: "Alinea a la dreta", centerVertically: "Centra verticalment", centerHorizontally: "Centra horitzontalment", distributeHorizontally: "Distribueix horitzontalment", distributeVertically: "Distribueix verticalment", flipHorizontal: "Capgira horitzontalment", flipVertical: "Capgira verticalment", viewMode: "Mode de visualització", share: "Comparteix", showStroke: "Mostra el selector de color del traç", showBackground: "Mostra el selector de color de fons", toggleTheme: "Activa o desactiva el tema", personalLib: "Biblioteca personal", excalidrawLib: "Biblioteca d'Excalidraw", decreaseFontSize: "Redueix la mida de la lletra", increaseFontSize: "Augmenta la mida de la lletra", unbindText: "Desvincular el text", bindText: "Ajusta el text al contenidor", createContainerFromText: "", link: { edit: "Edita l'enllaç", editEmbed: "Edita l'enllaç i incrusta-ho", create: "Crea un enllaç", createEmbed: "", label: "Enllaç", labelEmbed: "", empty: "No s'ha definit cap enllaç" }, lineEditor: { edit: "Editar línia", exit: "Sortir de l'editor de línia" }, elementLock: { lock: "Bloca", unlock: "Desbloca", lockAll: "Bloca-ho tot", unlockAll: "Desbloca-ho tot" }, statusPublished: "Publicat", sidebarLock: "Manté la barra lateral oberta", selectAllElementsInFrame: "Selecciona tots els elements del marc", removeAllElementsFromFrame: "Eliminat tots els elements del marc", eyeDropper: "", textToDiagram: "", prompt: "" }, xS = { noItems: "Encara no s'hi han afegit elements...", hint_emptyLibrary: "Trieu un element o un llenç per a afegir-lo aquí, o instal·leu una biblioteca del repositori públic, més avall.", hint_emptyPrivateLibrary: "Trieu un element o un llenç per a afegir-lo aquí." }, SS = { clearReset: "Neteja el llenç", exportJSON: "Exporta a un fitxer", exportImage: "Exporta la imatge...", export: "Guardar a...", copyToClipboard: "Copia al porta-retalls", save: "Desa al fitxer actual", saveAs: "Anomena i desa", load: "Obrir", getShareableLink: "Obté l'enllaç per a compartir", close: "Tanca", selectLanguage: "Trieu la llengua", scrollBackToContent: "Torna al contingut", zoomIn: "Apropa't", zoomOut: "Allunya't", resetZoom: "Restableix el zoom", menu: "Menú", done: "Fet", edit: "Edita", undo: "Desfés", redo: "Refés", resetLibrary: "Restableix la biblioteca", createNewRoom: "Crea una sala nova", fullScreen: "Pantalla completa", darkMode: "Mode fosc", lightMode: "Mode clar", zenMode: "Mode zen", objectsSnapMode: "", exitZenMode: "Surt de mode zen", cancel: "Cancel·la", clear: "Neteja", remove: "Suprimeix", embed: "", publishLibrary: "Publica", submit: "Envia", confirm: "Confirma", embeddableInteractionButton: "Feu clic per interactuar" }, NS = { clearReset: "S'esborrarà tot el llenç. N'esteu segur?", couldNotCreateShareableLink: "No s'ha pogut crear un enllaç per a compartir.", couldNotCreateShareableLinkTooBig: "No s’ha pogut crear un enllaç per a compartir: l’escena és massa gran", couldNotLoadInvalidFile: "No s'ha pogut carregar un fitxer no vàlid", importBackendFailed: "Importació fallida.", cannotExportEmptyCanvas: "No es pot exportar un llenç buit.", couldNotCopyToClipboard: "No s'ha pogut copiar al porta-retalls.", decryptFailed: "No s'ha pogut desencriptar.", uploadedSecurly: "La càrrega s'ha assegurat amb xifratge punta a punta, cosa que significa que el servidor Excalidraw i tercers no poden llegir el contingut.", loadSceneOverridePrompt: "Si carregas aquest dibuix extern, substituirá el que tens. Vols continuar?", collabStopOverridePrompt: `Aturar la sessió provocarà la sobreescriptura del dibuix previ, que hi ha desat en l'emmagatzematge local. N'esteu segur?

(Si voleu conservar el dibuix local, tanqueu la pentanya del navegador en comptes d'aturar la sessió).`, errorAddingToLibrary: "No s'ha pogut afegir l'element a la biblioteca", errorRemovingFromLibrary: "No s'ha pogut eliminar l'element de la biblioteca", confirmAddLibrary: "Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?", imageDoesNotContainScene: "Aquesta imatge no sembla contenir cap dada d'escena. Heu activat l'incrustació de l'escena durant l'exportació?", cannotRestoreFromImage: "L’escena no s’ha pogut restaurar des d’aquest fitxer d’imatge", invalidSceneUrl: "No s'ha pogut importar l'escena des de l'adreça URL proporcionada. Està malformada o no conté dades Excalidraw JSON vàlides.", resetLibrary: "Això buidarà la biblioteca. N'esteu segur?", removeItemsFromsLibrary: "Suprimir {{count}} element(s) de la biblioteca?", invalidEncryptionKey: "La clau d'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada.", collabOfflineWarning: `Sense connexió a internet disponible.
Els vostres canvis no seran guardats!` }, RS = { unsupportedFileType: "Tipus de fitxer no suportat.", imageInsertError: "No s'ha pogut insertar la imatge, torneu-ho a provar més tard...", fileTooBig: "El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.", svgImageInsertError: "No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.", failedToFetchImage: "", invalidSVGString: "SVG no vàlid.", cannotResolveCollabServer: "No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.", importLibraryError: "No s'ha pogut carregar la biblioteca", collabSaveFailed: "No s'ha pogut desar a la base de dades de fons. Si els problemes persisteixen, hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.", collabSaveFailed_sizeExceeded: "No s'ha pogut desar a la base de dades de fons, sembla que el llenç és massa gran. Hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "No s'ha pogut enganxar.", copyToSystemClipboardFailed: "" }, MS = { selection: "Selecció", image: "Insereix imatge", rectangle: "Rectangle", diamond: "Rombe", ellipse: "El·lipse", arrow: "Fletxa", line: "Línia", freedraw: "Dibuix", text: "Text", library: "Biblioteca", lock: "Mantenir activa l'eina seleccionada desprès de dibuixar", penMode: "Mode de llapis - evita tocar", link: "Afegeix / actualitza l'enllaç per a la forma seleccionada", eraser: "Esborrador", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Mà (eina de desplaçament)", extraTools: "", mermaidToExcalidraw: "De Mermaid a Excalidraw", magicSettings: "Preferències d'IA" }, YS = { canvasActions: "Accions del llenç", selectedShapeActions: "Accions per a les formes seleccionades", shapes: "Formes" }, vS = { canvasPanning: "Per moure el llenç, manteniu premuda la roda del ratolí o la barra espaiadora mentre arrossegueu o utilitzeu l'eina manual", linearElement: "Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia", freeDraw: "Feu clic i arrossegueu, deixeu anar per a finalitzar", text: "Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l'eina de selecció", embeddable: "", text_selected: "Feu doble clic o premeu Retorn per a editar el text", text_editing: "Premeu Escapada o Ctrl+Retorn (o Ordre+Retorn) per a finalitzar l'edició", linearElementMulti: "Feu clic a l'ultim punt, o pitgeu Esc o Retorn per a finalitzar", lockAngle: "Per restringir els angles, mantenir premut el majúscul (SHIFT)", resize: "Per restringir les proporcions mentres es canvia la mida, mantenir premut el majúscul (SHIFT); per canviar la mida des del centre, mantenir premut ALT", resizeImage: `Podeu redimensionar lliurement prement MAJÚSCULA;
per a redimensionar des del centre, premeu ALT`, rotate: "Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)", lineEditor_info: "Mantingueu premut Ctrl o Cmd i feu doble clic o premeu Ctrl o Cmd + Retorn per editar els punts", lineEditor_pointSelected: "Premeu Suprimir per a eliminar el(s) punt(s), CtrlOrCmd+D per a duplicar-lo, o arrossegueu-lo per a moure'l", lineEditor_nothingSelected: `Seleccioneu un punt per a editar-lo (premeu SHIFT si voleu
selecció múltiple), o manteniu Alt i feu clic per a afegir més punts`, placeImage: "Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment", publishLibrary: "Publiqueu la vostra pròpia llibreria", bindTextToElement: "Premeu enter per a afegir-hi text", deepBoxSelect: "Manteniu CtrlOrCmd per a selecció profunda, i per a evitar l'arrossegament", eraserRevert: "Mantingueu premuda Alt per a revertir els elements seleccionats per a esborrar", firefox_clipboard_write: 'És probable que aquesta funció es pugui activar posant la marca "dom.events.asyncClipboard.clipboardItem" a "true". Per canviar les marques del navegador al Firefox, visiteu la pàgina "about:config".', disableSnapping: "" }, HS = { cannotShowPreview: "No es pot mostrar la previsualització", canvasTooBig: "Pot ser que el llenç sigui massa gran.", canvasTooBigTip: "Consell: proveu d’acostar una mica els elements més allunyats." }, KS = { headingMain: "S'ha produït un error. Proveu <button>recarregar la pàgina.</button>", clearCanvasMessage: "Si la recàrrega no funciona, proveu <button>esborrar el llenç.</button>", clearCanvasCaveat: " Això resultarà en la pèrdua de feina ", trackedToSentry: "L'error amb l'identificador {{eventId}} s'ha rastrejat en el nostre sistema.", openIssueMessage: "Anàvem amb molta cura de no incloure la informació de la vostra escena en l'error. Si l'escena no és privada, podeu fer-ne el seguiment al nostre <button>rastrejador d'errors.</button> Incloeu la informació a continuació copiant i enganxant a GitHub Issues.", sceneContent: "Contingut de l'escena:" }, JS = { desc_intro: "Podeu convidar persones a la vostra escena actual a col·laborar amb vós.", desc_privacy: "No us preocupeu, la sessió utilitza el xifratge de punta a punta, de manera que qualsevol cosa que dibuixeu romandrà privada. Ni tan sols el nostre servidor podrà veure què feu.", button_startSession: "Inicia la sessió", button_stopSession: "Atura la sessió", desc_inProgressIntro: "La sessió de col·laboració en directe està en marxa.", desc_shareLink: "Comparteix aquest enllaç amb qualsevol persona amb qui vulgueu col·laborar:", desc_exitSession: "Si atureu la sessió, us desconectareu de la sala, però podreu continuar treballant amb el dibuix localment. Tingues en compte que això no afectarà a altres persones, i encara podran col·laborar en la seva versió.", shareTitle: "Uniu-vos a una sessió de col·laboració en directe a Excalidraw" }, ZS = { title: "Error" }, qS = { disk_title: "Desa al disc", disk_details: "Exporta les dades de l'escena a un fitxer que després podreu importar.", disk_button: "Desa en un fitxer", link_title: "Enllaç per a compartir", link_details: "Exporta com a un enllaç de només lectura.", link_button: "Exporta a un enllaç", excalidrawplus_description: "Desa l'escena en el vostre espai de treball Excalidraw+.", excalidrawplus_button: "Exporta", excalidrawplus_exportError: "No és possible exportar a Excalidraw+ ara mateix..." }, WS = { blog: "Llegiu el nostre blog", click: "clic", deepSelect: "Selecció profunda", deepBoxSelect: "Seleccioneu profundament dins del quadre i eviteu arrossegar", curvedArrow: "Fletxa corba", curvedLine: "Línia corba", documentation: "Documentació", doubleClick: "doble clic", drag: "arrossega", editor: "Editor", editLineArrowPoints: "", editText: "", github: "Hi heu trobat un problema? Informeu-ne", howto: "Seguiu les nostres guies", or: "o", preventBinding: "Prevenir vinculació de la fletxa", tools: "Eines", shortcuts: "Dreceres de teclat", textFinish: "Finalitza l'edició (editor de text)", textNewLine: "Afegeix una línia nova (editor de text)", title: "Ajuda", view: "Visualització", zoomToFit: "Zoom per veure tots els elements", zoomToSelection: "Zoom per veure la selecció", toggleElementLock: "Blocar/desblocar la selecció", movePageUpDown: "Mou la pàgina cap amunt/a baix", movePageLeftRight: "Mou la pàgina cap a l'esquerra/dreta" }, jS = { title: "Neteja el llenç" }, TS = { title: "Publica la biblioteca", itemName: "Nom de l'element", authorName: "Nom de l'autor/a", githubUsername: "Nom d'usuari de GitHub", twitterUsername: "Nom d'usuari de Twitter", libraryName: "Nom de la biblioteca", libraryDesc: "Descripció de la biblioteca", website: "Lloc web", placeholder: { authorName: "Nom o usuari", libraryName: "Nom de la vostra biblioteca", libraryDesc: "Descripció de la biblioteca per a ajudar a la gent a entendre'n el funcionament", githubHandle: "Identificador de GitHub (opcional), per tal que pugueu editar la biblioteca una vegada enviada per a ser revisada", twitterHandle: "Usuari de twitter (opcional), per tal que puguem donar-vos crèdit quan fem la promoció a Twitter", website: "Enllaç al vostre lloc web personal o a qualsevol altre (opcional)" }, errors: { required: "Requerit", website: "Introduïu una URL vàlida" }, noteDescription: "Envieu la vostra biblioteca perquè sigui inclosa al <link>repositori públic</link>per tal que altres persones puguin fer-ne ús en els seus dibuixos.", noteGuidelines: "La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les <link>directrius</link> abans d'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible.", noteLicense: "Quan l'envieu, accepteu que la biblioteca sigui publicada sota la <link>llicència MIT, </link>que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions.", noteItems: "Cada element de la biblioteca ha de tenir el seu propi nom per tal que sigui filtrable. S'hi inclouran els elements següents:", atleastOneLibItem: "Si us plau, seleccioneu si més no un element de la biblioteca per a començar", republishWarning: "Nota: alguns dels elements seleccionats s'han marcat com a publicats/enviats. Només hauríeu de reenviar elements quan actualitzeu una biblioteca existent." }, zS = { title: "Biblioteca enviada", content: "Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l'estat<link>aquí</link>" }, PS = { resetLibrary: "Restableix la biblioteca", removeItemsFromLib: "Suprimeix els elements seleccionats de la llibreria" }, OS = { header: "", label: { withBackground: "", onlySelected: "Només els seleccionats", darkMode: "Mode fosc", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "Exporta a PNG", exportToSvg: "Exporta a SVG", copyPngToClipboard: "Copia el PNG al porta-retalls" }, button: { exportToPng: "PNG", exportToSvg: "", copyPngToClipboard: "" } }, VS = { tooltip: "Els vostres dibuixos estan xifrats de punta a punta de manera que els servidors d’Excalidraw no els veuran mai.", link: "Article del blog sobre encriptació d'extrem a extrem a Excalidraw" }, XS = { angle: "Angle", element: "Element", elements: "Elements", height: "Altura", scene: "Escena", selected: "Seleccionat", storage: "Emmagatzematge", title: "Estadístiques per nerds", total: "Total", version: "Versió", versionCopy: "Feu clic per a copiar", versionNotAvailable: "Versió no disponible", width: "Amplada" }, _S = { addedToLibrary: "Afegit a la biblioteca", copyStyles: "S'han copiat els estils.", copyToClipboard: "S'ha copiat al porta-retalls.", copyToClipboardAsPng: `S'ha copiat {{exportSelection}} al porta-retalls en format PNG
({{exportColorScheme}})`, fileSaved: "S'ha desat el fitxer.", fileSavedToFilename: "S'ha desat a {filename}", canvas: "el llenç", selection: "la selecció", pasteAsSingleElement: `Fer servir {{shortcut}} per enganxar com un sol element,
o enganxeu-lo en un editor de text existent`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $S = { transparent: "Transparent", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "Verd", yellow: "Groc", orange: "Taronja", bronze: "Bronze" }, AN = { app: { center_heading: "Totes les vostres dades es guarden localment al vostre navegador.", center_heading_plus: "Vols anar a Excalidraw+ en comptes?", menuHint: "Exportar, preferències, llenguatges..." }, defaults: { menuHint: "Exportar, preferències i més...", center_heading: "Diagrames. Fer. Simple.", toolbarHint: "Selecciona una eina i comença a dibuixar!", helpHint: "Dreceres i ajuda" } }, uN = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, eN = { action: { exportToImage: { title: "Exporta com a imatge", button: "Exporta com a imatge", description: "" }, saveToDisk: { title: "Desa al disc", button: "Desa al disc", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "Carrega des d'un fitxer", button: "Carrega des d'un fitxer", description: "" }, shareableLink: { title: "Carrega des d'un enllaç", button: "", description: "" } } }, CN = { title: "De Mermaid a Excalidraw", button: "Insereix", description: "", syntax: "Sintaxi de Mermaid", preview: "Previsualització" }, wmA = { labels: LS, library: xS, buttons: SS, alerts: NS, errors: RS, toolBar: MS, headings: YS, hints: vS, canvasError: HS, errorSplash: KS, roomDialog: JS, errorDialog: ZS, exportDialog: qS, helpDialog: WS, clearCanvasDialog: jS, publishDialog: TS, publishSuccessDialog: zS, confirmDialog: PS, imageExportDialog: OS, encrypted: VS, stats: XS, toast: _S, colors: $S, welcomeScreen: AN, colorPicker: uN, overwriteConfirm: eN, mermaid: CN };
const FmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NS,
  buttons: SS,
  canvasError: HS,
  clearCanvasDialog: jS,
  colorPicker: uN,
  colors: $S,
  confirmDialog: PS,
  default: wmA,
  encrypted: VS,
  errorDialog: ZS,
  errorSplash: KS,
  errors: RS,
  exportDialog: qS,
  headings: YS,
  helpDialog: WS,
  hints: vS,
  imageExportDialog: OS,
  labels: LS,
  library: xS,
  mermaid: CN,
  overwriteConfirm: eN,
  publishDialog: TS,
  publishSuccessDialog: zS,
  roomDialog: JS,
  stats: XS,
  toast: _S,
  toolBar: MS,
  welcomeScreen: AN
}, Symbol.toStringTag, { value: "Module" }));
var BN = { paste: "Vložit", pasteAsPlaintext: "Vložit jako prostý text", pasteCharts: "Vložit grafy", selectAll: "Vybrat vše", multiSelect: "Přidat prvek do výběru", moveCanvas: "Posunout plátno", cut: "Vyjmout", copy: "Kopírovat", copyAsPng: "Zkopírovat do schránky jako PNG", copyAsSvg: "Zkopírovat do schránky jako SVG", copyText: "Zkopírovat do schránky jako text", copySource: "", convertToCode: "", bringForward: "Přenést blíž", sendToBack: "Přenést do pozadí", bringToFront: "Přenést do popředí", sendBackward: "Přenést dál", delete: "Smazat", copyStyles: "Kopírovat styly", pasteStyles: "Vložit styly", stroke: "Obrys", background: "Pozadí", fill: "Výplň", strokeWidth: "Tloušťka tahu", strokeStyle: "Styl tahu", strokeStyle_solid: "Plný", strokeStyle_dashed: "Čárkovaný", strokeStyle_dotted: "Tečkovaný", sloppiness: "Stylizace", opacity: "Průhlednost", textAlign: "Zarovnání textu", edges: "Hrany", sharp: "Ostré", round: "Zaoblené", arrowheads: "Styl šipky", arrowhead_none: "Žádný", arrowhead_arrow: "Šipka", arrowhead_bar: "Kóta", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Trojúhelník", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Velikost písma", fontFamily: "Písmo", addWatermark: 'Přidat "Vyrobeno s Excalidraw"', handDrawn: "Od ruky", normal: "Normální", code: "Kód", small: "Malé", medium: "Střední", large: "Velké", veryLarge: "Velmi velké", solid: "Plný", hachure: "Hachure", zigzag: "Klikatě", crossHatch: "Křížový šrafování", thin: "Tenký", bold: "Tlustý", left: "Vlevo", center: "Na střed", right: "Vpravo", extraBold: "Extra tlustý", architect: "Architekt", artist: "Umělec", cartoonist: "Kartoonista", fileTitle: "Název souboru", colorPicker: "Výběr barvy", canvasColors: "Použito na plátně", canvasBackground: "Pozadí plátna", drawingCanvas: "Kreslicí plátno", layers: "Vrstvy", actions: "Akce", language: "Jazyk", liveCollaboration: "Živá spolupráce...", duplicateSelection: "Duplikovat", untitled: "Bez názvu", name: "Název", yourName: "Vaše jméno", madeWithExcalidraw: "Vytvořeno v Excalidraw", group: "Sloučit výběr do skupiny", ungroup: "Zrušit sloučení skupiny", collaborators: "Spolupracovníci", showGrid: "Zobrazit mřížku", addToLibrary: "Přidat do knihovny", removeFromLibrary: "Odebrat z knihovny", libraryLoadingMessage: "Načítání knihovny…", libraries: "Procházet knihovny", loadingScene: "Načítání scény…", align: "Zarovnání", alignTop: "Zarovnat nahoru", alignBottom: "Zarovnat dolů", alignLeft: "Zarovnat vlevo", alignRight: "Zarovnejte vpravo", centerVertically: "Vycentrovat svisle", centerHorizontally: "Vycentrovat vodorovně", distributeHorizontally: "Rozložit horizontálně", distributeVertically: "Rozložit svisle", flipHorizontal: "Převrátit vodorovně", flipVertical: "Převrátit svisle", viewMode: "Náhled", share: "Sdílet", showStroke: "Zobrazit výběr barvy", showBackground: "Zobrazit výběr barev pozadí", toggleTheme: "Přepnout tmavý řežim", personalLib: "Osobní knihovna", excalidrawLib: "Exkalidraw knihovna", decreaseFontSize: "Zmenšit písmo", increaseFontSize: "Zvětšit písmo", unbindText: "Zrušit vazbu textu", bindText: "Vázat text s kontejnerem", createContainerFromText: "Zabalit text do kontejneru", link: { edit: "Upravit odkaz", editEmbed: "", create: "Vytvořit odkaz", createEmbed: "", label: "Odkaz", labelEmbed: "", empty: "" }, lineEditor: { edit: "Upravit čáru", exit: "Ukončit editor řádků" }, elementLock: { lock: "Uzamknout", unlock: "Odemknout", lockAll: "Uzamknout vše", unlockAll: "Odemknout vše" }, statusPublished: "Zveřejněno", sidebarLock: "Ponechat postranní panel otevřený", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "Vyberte barvu z plátna", textToDiagram: "", prompt: "" }, gN = { noItems: "Dosud neexistují žádné položky...", hint_emptyLibrary: "Vyberte položku na plátně a přidejte ji sem nebo nainstalujte knihovnu z veřejného úložiště níže.", hint_emptyPrivateLibrary: "Vyberte položku na plátně a přidejte ji sem." }, tN = { clearReset: "Resetovat plátno", exportJSON: "Exportovat do souboru", exportImage: "Exportovat obrázek...", export: "Uložit jako...", copyToClipboard: "Kopírovat do schránky", save: "Uložit do aktuálního souboru", saveAs: "Uložit jako", load: "Otevřít", getShareableLink: "Získat odkaz pro sdílení", close: "Zavřít", selectLanguage: "Zvolit jazyk", scrollBackToContent: "Přejít zpět na obsah", zoomIn: "Přiblížit", zoomOut: "Oddálit", resetZoom: "Resetovat přiblížení", menu: "Menu", done: "Hotovo", edit: "Upravit", undo: "Zpět", redo: "Znovu", resetLibrary: "Obnovit knihovnu", createNewRoom: "Vytvořit novou místnost", fullScreen: "Celá obrazovka", darkMode: "Tmavý režim", lightMode: "Světlý režim", zenMode: "Zen mód", objectsSnapMode: "", exitZenMode: "Opustit zen mód", cancel: "Zrušit", clear: "Vyčistit", remove: "Odstranit", embed: "", publishLibrary: "Zveřejnit", submit: "Odeslat", confirm: "Potvrdit", embeddableInteractionButton: "" }, iN = { clearReset: "Toto vymaže celé plátno. Jste si jisti?", couldNotCreateShareableLink: "Nepodařilo se vytvořit sdílitelný odkaz.", couldNotCreateShareableLinkTooBig: "Nepodařilo se vytvořit sdílený odkaz: scéna je příliš velká", couldNotLoadInvalidFile: "Nepodařilo se načíst neplatný soubor", importBackendFailed: "Import z backendu se nezdařil.", cannotExportEmptyCanvas: "Nelze exportovat prázdné plátno.", couldNotCopyToClipboard: "Nelze zkopírovat do schránky.", decryptFailed: "Nelze dešifrovat data.", uploadedSecurly: "Nahrávání je zabezpečeno koncovým šifrováním, což znamená, že server Excalidraw ani třetí strany nemohou obsah přečíst.", loadSceneOverridePrompt: "Načítání externího výkresu nahradí váš existující obsah. Přejete si pokračovat?", collabStopOverridePrompt: `Zastavení relace přepíše vaše předchozí, lokálně uložené kresby. Jste si jisti?

(Pokud chcete zachovat místní kresbu, jednoduše zavřete kartu prohlížeče)`, errorAddingToLibrary: "Položku nelze přidat do knihovny", errorRemovingFromLibrary: "Položku nelze odstranit z knihovny", confirmAddLibrary: "Tímto přidáte {{numShapes}} tvarů do tvé knihovny. Jste si jisti?", imageDoesNotContainScene: "Zdá se, že tento obrázek neobsahuje žádná data o scéně. Zapnuli jste při exportu vkládání scény?", cannotRestoreFromImage: "Scénu nelze obnovit z tohoto souboru obrázku", invalidSceneUrl: "Nelze importovat scénu z zadané URL. Je buď poškozená, nebo neobsahuje platná JSON data Excalidraw.", resetLibrary: "Tímto vymažete vaši knihovnu. Jste si jisti?", removeItemsFromsLibrary: "Smazat {{count}} položek z knihovny?", invalidEncryptionKey: "Šifrovací klíč musí mít 22 znaků. Live spolupráce je zakázána.", collabOfflineWarning: `Není k dispozici žádné internetové připojení.
Vaše změny nebudou uloženy!` }, EN = { unsupportedFileType: "Nepodporovaný typ souboru.", imageInsertError: "Nelze vložit obrázek. Zkuste to později...", fileTooBig: "Soubor je příliš velký. Maximální povolená velikost je {{maxSize}}.", svgImageInsertError: "Nelze vložit SVG obrázek. Značení SVG je neplatné.", failedToFetchImage: "", invalidSVGString: "Neplatný SVG.", cannotResolveCollabServer: "Nelze se připojit ke sdílenému serveru. Prosím obnovte stránku a zkuste to znovu.", importLibraryError: "Nelze načíst knihovnu", collabSaveFailed: "Nelze uložit do databáze na serveru. Pokud problémy přetrvávají, měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.", collabSaveFailed_sizeExceeded: "Nelze uložit do databáze na serveru, plátno se zdá být příliš velké. Měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.", imageToolNotSupported: "", brave_measure_text_error: { line1: "Vypadá to, že používáte Brave prohlížeč s povoleným nastavením <bold>Aggressively Block Fingerprinting</bold>.", line2: "To by mohlo vést k narušení <bold>Textových elementů</bold> ve vašich výkresech.", line3: "Důrazně doporučujeme zakázat toto nastavení. Můžete sledovat <link>tyto kroky</link> jak to udělat.", line4: "Pokud vypnutí tohoto nastavení neopravuje zobrazení textových prvků, prosím, otevřete <issueLink>problém</issueLink> na našem GitHubu, nebo nám napište na <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aN = { selection: "Výběr", image: "Vložit obrázek", rectangle: "Obdélník", diamond: "Diamant", ellipse: "Elipsa", arrow: "Šipka", line: "Čára", freedraw: "Kreslení", text: "Text", library: "Knihovna", lock: "Po kreslení ponechat vybraný nástroj aktivní", penMode: "Režim Pera - zabránit dotyku", link: "Přidat/aktualizovat odkaz pro vybraný tvar", eraser: "Guma", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Ruka (nástroj pro posouvání)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IN = { canvasActions: "Akce plátna", selectedShapeActions: "Akce vybraného tvaru", shapes: "Tvary" }, oN = { canvasPanning: "Chcete-li přesunout plátno, podržte kolečko nebo mezerník při tažení nebo použijte nástroj Ruka", linearElement: "Kliknutím pro více bodů, táhnutím pro jednu čáru", freeDraw: "Klikněte a táhněte, pro ukončení pusťte", text: "Tip: Text můžete také přidat dvojitým kliknutím kdekoli pomocí nástroje pro výběr", embeddable: "", text_selected: "Dvojklikem nebo stisknutím klávesy ENTER upravíte text", text_editing: "Stiskněte Escape nebo Ctrl/Cmd+ENTER pro dokončení úprav", linearElementMulti: "Klikněte na poslední bod nebo stiskněte Escape anebo Enter pro dokončení", lockAngle: "Úhel můžete omezit podržením SHIFT", resize: `Můžete omezit proporce podržením SHIFT při změně velikosti,
podržte ALT pro změnu velikosti od středu`, resizeImage: `Můžete volně změnit velikost podržením SHIFT,
podržením klávesy ALT změníte velikosti od středu`, rotate: "Úhly můžete omezit podržením SHIFT při otáčení", lineEditor_info: "Podržte Ctrl/Cmd a dvakrát klikněte nebo stiskněte Ctrl/Cmd + Enter pro úpravu bodů", lineEditor_pointSelected: `Stisknutím tlačítka Delete odstraňte bod(y),
Ctrl/Cmd+D pro duplicitu nebo táhnutím pro přesun`, lineEditor_nothingSelected: `Vyberte bod, který chcete upravit (podržením klávesy SHIFT vyberete více položek),
nebo podržením klávesy Alt a kliknutím přidáte nové body`, placeImage: "Kliknutím umístěte obrázek, nebo klepnutím a přetažením ručně nastavíte jeho velikost", publishLibrary: "Publikovat vlastní knihovnu", bindTextToElement: "Stiskněte Enter pro přidání textu", deepBoxSelect: "Podržte Ctrl/Cmd pro hluboký výběr a pro zabránění táhnutí", eraserRevert: "Podržením klávesy Alt vrátíte prvky označené pro smazání", firefox_clipboard_write: 'Tato funkce může být povolena nastavením vlajky "dom.events.asyncClipboard.clipboardItem" na "true". Chcete-li změnit vlajky prohlížeče ve Firefoxu, navštivte stránku "about:config".', disableSnapping: "" }, QN = { cannotShowPreview: "Náhled nelze zobrazit", canvasTooBig: "Plátno je možná příliš velké.", canvasTooBigTip: "Tip: zkus posunout nejvzdálenější prvky trochu blíže k sobě." }, nN = { headingMain: "Chyba. Zkuste <button>znovu načíst stránku</button>.", clearCanvasMessage: "Pokud opětovné načtení nefunguje, zkuste <button>vymazat plátno</button>.", clearCanvasCaveat: " To povede ke ztrátě dat ", trackedToSentry: "Chyba identifikátoru {{eventId}} byl zaznamenán v našem systému.", openIssueMessage: "Byli jsme velmi opatrní, abychom neuváděli informace o Vaší scéně. Pokud vaše scéna není soukromá, zvažte prosím sledování na našem <button>bug trackeru</button>. Uveďte prosím níže uvedené informace kopírováním a vložením do problému na GitHubu.", sceneContent: "Obsah scény:" }, rN = { desc_intro: "Můžete pozvat lidi na vaši aktuální scénu ke spolupráci s vámi.", desc_privacy: "Nebojte se, relace používá end-to-end šifrování, takže cokoliv nakreslíte zůstane soukromé. Ani náš server nebude schopen vidět, s čím budete pracovat.", button_startSession: "Zahájit relaci", button_stopSession: "Ukončit relaci", desc_inProgressIntro: "Živá spolupráce právě probíhá.", desc_shareLink: "Sdílejte tento odkaz s každým, s kým chcete spolupracovat:", desc_exitSession: "Zastavením relace se odpojíte od místnosti, ale budete moci pokračovat v práci s touto scénou lokálně. Všimněte si, že to nebude mít vliv na ostatní lidi a budou stále moci spolupracovat na jejich verzi.", shareTitle: "Připojte se k aktivní spolupráci na Excalidraw" }, sN = { title: "Chyba" }, lN = { disk_title: "Uložit na disk", disk_details: "Exportovat data scény do souboru, ze kterého můžete importovat později.", disk_button: "Uložit do souboru", link_title: "Odkaz pro sdílení", link_details: "Exportovat jako odkaz pouze pro čtení.", link_button: "Exportovat do odkazu", excalidrawplus_description: "Uložit scénu do vašeho pracovního prostoru Excalidraw+.", excalidrawplus_button: "Exportovat", excalidrawplus_exportError: "Export do Excalidraw+ se v tuto chvíli nezdařil..." }, cN = { blog: "Přečtěte si náš blog", click: "kliknutí", deepSelect: "Hluboký výběr", deepBoxSelect: "Hluboký výběr uvnitř boxu a zabránění táhnnutí", curvedArrow: "Zakřivená šipka", curvedLine: "Zakřivená čára", documentation: "Dokumentace", doubleClick: "dvojklik", drag: "tažení", editor: "Editor", editLineArrowPoints: "Upravit body linií/šipek", editText: "Upravit text / přidat popis", github: "Našel jsi problém? Nahlaš ho", howto: "Sledujte naše návody", or: "nebo", preventBinding: "Zabránit vázání šipky", tools: "Nástroje", shortcuts: "Klávesové zkratky", textFinish: "Dokončit úpravy (textový editor)", textNewLine: "Přidat nový řádek (textový editor)", title: "Nápověda", view: "Zobrazení", zoomToFit: "Přiblížit na zobrazení všech prvků", zoomToSelection: "Přiblížit na výběr", toggleElementLock: "Zamknout/odemknout výběr", movePageUpDown: "Posunout stránku nahoru/dolů", movePageLeftRight: "Přesunout stránku doleva/doprava" }, dN = { title: "Vymazat plátno" }, DN = { title: "Publikovat knihovnu", itemName: "Název položky", authorName: "Jméno autora", githubUsername: "GitHub uživatelské jméno", twitterUsername: "Twitter uživatelské jméno", libraryName: "Název knihovny", libraryDesc: "Popis knihovny", website: "Webová stránka", placeholder: { authorName: "Jméno nebo uživatelské jméno", libraryName: "Název vaší knihovny", libraryDesc: "Popis Vaší knihovny, který pomůže lidem pochopit její využití", githubHandle: "Github uživatelské jméno (nepovinné), abyste mohli upravovat knihovnu poté co je odeslána ke kontrole", twitterHandle: "Twitter uživatelské jméno (nepovinné), abychom věděli koho označit při propagaci na Twitteru", website: "Odkaz na Vaši osobní webovou stránku nebo jinam (nepovinné)" }, errors: { required: "Povinné", website: "Zadejte platnou URL adresu" }, noteDescription: "Odešlete svou knihovnu, pro zařazení do <link>veřejného úložiště knihoven</link>, odkud ji budou moci při kreslení využít i ostatní uživatelé.", noteGuidelines: "Knihovna musí být nejdříve ručně schválena. Přečtěte si prosím <link>pokyny</link>", noteLicense: "Odesláním souhlasíte s tím, že knihovna bude zveřejněna pod <link>MIT licencí</link>, stručně řečeno, kdokoli ji může používat bez omezení.", noteItems: "Každá položka knihovny musí mít svůj vlastní název, aby byla filtrovatelná. Následující položky knihovny budou zahrnuty:", atleastOneLibItem: "Vyberte alespoň jednu položku knihovny, kterou chcete začít", republishWarning: "Poznámka: některé z vybraných položek jsou označeny jako již zveřejněné/odeslané. Položky byste měli znovu odeslat pouze při aktualizaci existující knihovny nebo podání." }, hN = { title: "Knihovna byla odeslána", content: "Děkujeme vám {{authorName}}. Vaše knihovna byla odeslána k posouzení. Stav můžete sledovat <link>zde</link>" }, wN = { resetLibrary: "Resetovat knihovnu", removeItemsFromLib: "Odstranit vybrané položky z knihovny" }, FN = { header: "Exportovat obrázek", label: { withBackground: "Pozadí", onlySelected: "Pouze vybrané", darkMode: "Tmavý režim", embedScene: "Vložit scénu", scale: "Měřítko", padding: "Odsazení" }, tooltip: { embedScene: `Data scény budou uložena do exportovaného souboru PNG/SVG tak, aby z něj mohla být scéna obnovena.
Zvýší se velikost exportovaného souboru.` }, title: { exportToPng: "Exportovat do PNG", exportToSvg: "Exportovat do SVG", copyPngToClipboard: "Kopírovat PNG do schránky" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Kopírovat do schránky" } }, pN = { tooltip: "Vaše kresby jsou end-to-end šifrované, takže servery Excalidraw je nikdy neuvidí.", link: "Blog příspěvek na end-to-end šifrování v Excalidraw" }, mN = { angle: "Úhel", element: "Prvek", elements: "Prvky", height: "Výška", scene: "Scéna", selected: "Vybráno", storage: "Úložiště", title: "Statistika pro nerdy", total: "Celkem", version: "Verze", versionCopy: "Kliknutím zkopírujete", versionNotAvailable: "Verze není k dispozici", width: "Šířka" }, kN = { addedToLibrary: "Přidáno do knihovny", copyStyles: "Styly byly zkopírovány.", copyToClipboard: "Zkopírováno do schránky.", copyToClipboardAsPng: `{{exportSelection}} zkopírován do schránky jako PNG
({{exportColorScheme}})`, fileSaved: "Soubor byl uložen.", fileSavedToFilename: "Uloženo do {filename}", canvas: "plátno", selection: "výběr", pasteAsSingleElement: `Pomocí {{shortcut}} vložte jako jeden prvek,
nebo vložte do existujícího textového editoru`, unableToEmbed: "", unrecognizedLinkFormat: "" }, yN = { transparent: "Průhledná", black: "Černá", white: "Bílá", red: "Červená", pink: "Růžová", grape: "Vínová", violet: "Fialová", gray: "Šedá", blue: "Modrá", cyan: "Azurová", teal: "Modrozelená", green: "Zelená", yellow: "Žlutá", orange: "Oranžová", bronze: "Bronzová" }, bN = { app: { center_heading: "Všechna vaše data jsou uložena lokálně ve vašem prohlížeči.", center_heading_plus: "Chcete místo toho přejít na Excalidraw+?", menuHint: "Export, nastavení, jazyky, ..." }, defaults: { menuHint: "Export, nastavení a další...", center_heading: "Diagramy. Vytvořeny. Jednoduše.", toolbarHint: "Vyberte nástroj a začněte kreslit!", helpHint: "Zkratky a pomoc" } }, UN = { mostUsedCustomColors: "Nejpoužívanější vlastní barvy", colors: "Barvy", shades: "Stíny", hexCode: "Hex kód", noShades: "Pro tuto barvu nejsou k dispozici žádné odstíny" }, GN = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fN = { title: "", button: "", description: "", syntax: "", preview: "" }, pmA = { labels: BN, library: gN, buttons: tN, alerts: iN, errors: EN, toolBar: aN, headings: IN, hints: oN, canvasError: QN, errorSplash: nN, roomDialog: rN, errorDialog: sN, exportDialog: lN, helpDialog: cN, clearCanvasDialog: dN, publishDialog: DN, publishSuccessDialog: hN, confirmDialog: wN, imageExportDialog: FN, encrypted: pN, stats: mN, toast: kN, colors: yN, welcomeScreen: bN, colorPicker: UN, overwriteConfirm: GN, mermaid: fN };
const mmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iN,
  buttons: tN,
  canvasError: QN,
  clearCanvasDialog: dN,
  colorPicker: UN,
  colors: yN,
  confirmDialog: wN,
  default: pmA,
  encrypted: pN,
  errorDialog: sN,
  errorSplash: nN,
  errors: EN,
  exportDialog: lN,
  headings: IN,
  helpDialog: cN,
  hints: oN,
  imageExportDialog: FN,
  labels: BN,
  library: gN,
  mermaid: fN,
  overwriteConfirm: GN,
  publishDialog: DN,
  publishSuccessDialog: hN,
  roomDialog: rN,
  stats: mN,
  toast: kN,
  toolBar: aN,
  welcomeScreen: bN
}, Symbol.toStringTag, { value: "Module" }));
var LN = { paste: "Indsæt", pasteAsPlaintext: "Indsæt som klartekst", pasteCharts: "Indsæt diagrammer", selectAll: "Marker alle", multiSelect: "Tilføj element til markering", moveCanvas: "Flyt lærred", cut: "Klip", copy: "Kopier", copyAsPng: "Kopier til klippebord som PNG", copyAsSvg: "Kopier til klippebord som SVG", copyText: "Kopiér til udklipsholder som tekst", copySource: "Kopiér kilde til udklipsholder", convertToCode: "Konvertér til kode", bringForward: "Flyt fremad", sendToBack: "Placer bagest", bringToFront: "Placer forrest", sendBackward: "Send bagud", delete: "Fjern", copyStyles: "Kopier stil", pasteStyles: "Indsæt stil", stroke: "Linje", background: "Baggrund", fill: "Udfyld", strokeWidth: "Linjebredde", strokeStyle: "Linjeform", strokeStyle_solid: "Solid", strokeStyle_dashed: "Stiplet", strokeStyle_dotted: "Prikket", sloppiness: "Sjuskethed", opacity: "Gennemsigtighed", textAlign: "Tekstjustering", edges: "Kanter", sharp: "Skarp", round: "Rund", arrowheads: "Pilehoveder", arrowhead_none: "Ingen", arrowhead_arrow: "Pil", arrowhead_bar: "Bjælke", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Trekant", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Skriftstørrelse", fontFamily: "Skrifttypefamilie", addWatermark: 'Tilføj "Lavet med Excalidraw"', handDrawn: "Hånd-tegnet", normal: "Normal", code: "Kode", small: "Lille", medium: "Mellem", large: "Stor", veryLarge: "Meget stor", solid: "Solid", hachure: "Skravering", zigzag: "Zigzag", crossHatch: "Krydsskravering", thin: "Tynd", bold: "Fed", left: "Venstre", center: "Centrere", right: "Højre", extraBold: "Extra fed", architect: "Arkitekt", artist: "Kunstner", cartoonist: "Tegneserietegner", fileTitle: "Filnavn", colorPicker: "Farvevælger", canvasColors: "Brugt på lærred", canvasBackground: "Lærredsbaggrund", drawingCanvas: "Tegnelærred", layers: "Lag", actions: "Handlinger", language: "Sprog", liveCollaboration: "Live samarbejde...", duplicateSelection: "Duplikér", untitled: "Unavngivet", name: "Navn", yourName: "Dit navn", madeWithExcalidraw: "Fremstillet med Excalidraw", group: "Grupper valgte", ungroup: "Opløs gruppe", collaborators: "Deltagere", showGrid: "Vis gitter", addToLibrary: "Føj til Bibliotek", removeFromLibrary: "Fjern fra biblioteket", libraryLoadingMessage: "Indlæser bibliotek…", libraries: "Gennemse biblioteker", loadingScene: "Indlæser scene…", align: "Justér", alignTop: "Juster til top", alignBottom: "Juster til bund", alignLeft: "Venstrejusteret", alignRight: "Juster højre", centerVertically: "Center vertikalt", centerHorizontally: "Vandret centreret", distributeHorizontally: "Distribuer vandret", distributeVertically: "Distribuer lodret", flipHorizontal: "Spejlvend horisontalt", flipVertical: "Vend lodret", viewMode: "Visningstilstand", share: "Del", showStroke: "Vis stregfarve-vælger", showBackground: "Vis baggrundsfarve-vælger", toggleTheme: "Skift tema", personalLib: "Personligt bibliotek", excalidrawLib: "Excalidraw Bibliotek", decreaseFontSize: "Gør skriften mindre", increaseFontSize: "Gør skriften større", unbindText: "Frigør tekst", bindText: "Bind tekst til beholderen", createContainerFromText: "Ombryd tekst i en beholder", link: { edit: "Redigér link", editEmbed: "Redigér link & indlejret", create: "Link oprettet", createEmbed: "Opret link & indlejret", label: "Links", labelEmbed: "Link & indlejret", empty: "Intet link angivet" }, lineEditor: { edit: "Rediger Linje", exit: "Afslut linjeeditor" }, elementLock: { lock: "Lås", unlock: "Lås op", lockAll: "Lås alle", unlockAll: "Lås alle op" }, statusPublished: "Udgiver", sidebarLock: "Hold sidepanel åben", selectAllElementsInFrame: "Vælg alle elementer i rammen", removeAllElementsFromFrame: "Fjern alle elementer fra ramme", eyeDropper: "Vælg farve fra lærred", textToDiagram: "Tekst til diagram", prompt: "Prompt" }, xN = { noItems: "Ingen varer tilføjet endnu...", hint_emptyLibrary: "Vælg et element på lærred for at tilføje det her, eller installer et bibliotek fra det offentlige arkiv, nedenfor.", hint_emptyPrivateLibrary: "Vælg et element på lærred for at tilføje det her." }, SN = { clearReset: "Nulstil lærredet", exportJSON: "Eksportér til fil", exportImage: "Eksporter billede...", export: "Gem til...", copyToClipboard: "Kopier til klippebord", save: "Gem til nuværende fil", saveAs: "Gem som", load: "Åbn", getShareableLink: "Lav et delbart link", close: "Luk", selectLanguage: "Vælg sprog", scrollBackToContent: "Scroll tilbage til indhold", zoomIn: "Zoom ind", zoomOut: "Zoom ud", resetZoom: "Nulstil zoom", menu: "Menu", done: "Færdig", edit: "Rediger", undo: "Fortryd", redo: "Gendan", resetLibrary: "Nulstil bibliotek", createNewRoom: "Opret nyt rum", fullScreen: "Fuld skærm", darkMode: "Mørk tilstand", lightMode: "Lys baggrund", zenMode: "Zentilstand", objectsSnapMode: "Fastgør til objekter", exitZenMode: "Stop zentilstand", cancel: "Annuller", clear: "Ryd", remove: "Fjern", embed: "Slå indlejring til/fra", publishLibrary: "Publicér", submit: "Gem", confirm: "Bekræft", embeddableInteractionButton: "Klik for at interagere" }, NN = { clearReset: "Dette vil rydde hele lærredet. Er du sikker?", couldNotCreateShareableLink: "Kunne ikke oprette delbart link.", couldNotCreateShareableLinkTooBig: "Kunne ikke oprette delbart link: scenen er for stor", couldNotLoadInvalidFile: "Kunne ikke indlæse ugyldig fil", importBackendFailed: "Import fra backend mislykkedes.", cannotExportEmptyCanvas: "Kan ikke eksportere tomt lærred.", couldNotCopyToClipboard: "Kunne ikke kopiere til udklipsholderen.", decryptFailed: "Kunne ikke dekryptere data.", uploadedSecurly: "Upload er blevet sikret med ende-til-ende kryptering, hvilket betyder, at Excalidraw server og tredjeparter ikke kan læse indholdet.", loadSceneOverridePrompt: "Indlæsning af ekstern tegning erstatter dit eksisterende indhold. Ønsker du at fortsætte?", collabStopOverridePrompt: `Stopper sessionen vil overskrive din tidligere, lokalt gemte tegning. Er du sikker?

(Hvis du ønsker at beholde din lokale tegning, skal du blot lukke browserfanen i stedet.)`, errorAddingToLibrary: "Kunne ikke tilføje element til biblioteket", errorRemovingFromLibrary: "Kunne ikke fjerne element fra biblioteket", confirmAddLibrary: "Dette vil tilføje {{numShapes}} form(er) til dit bibliotek. Er du sikker?", imageDoesNotContainScene: "Dette billede synes ikke at indeholde scene data. Har du aktiveret scene indlejring under eksport?", cannotRestoreFromImage: "Scene kunne ikke gendannes fra denne billedfil", invalidSceneUrl: "Kunne ikke importere scene fra den angivne URL. Det er enten misdannet eller indeholder ikke gyldige Excalidraw JSON data.", resetLibrary: "Dette vil rydde hele lærredet. Er du sikker?", removeItemsFromsLibrary: "Slet {{count}} vare(r) fra biblioteket?", invalidEncryptionKey: "Krypteringsnøglen skal være på 22 tegn. Live-samarbejde er deaktiveret.", collabOfflineWarning: `Ingen internetforbindelse tilgængelig.
Dine ændringer vil ikke blive gemt!` }, RN = { unsupportedFileType: "Filtypen er ikke understøttet.", imageInsertError: "Billedet kunne ikke indsættes. Prøv igen senere...", fileTooBig: "Filen er for stor. Maksimal tilladt størrelse er {{maxSize}}.", svgImageInsertError: "Kunne ikke indsætte SVG-billede. SVG-markup'en ser ugyldig ud.", failedToFetchImage: "Dataene blev ikke hentet.", invalidSVGString: "Ugyldig SVG.", cannotResolveCollabServer: "Kunne ikke oprette forbindelse til samarbejdsserveren. Genindlæs siden og prøv igen.", importLibraryError: "Biblioteket kunne ikke indlæses", collabSaveFailed: "Kunne ikke gemme i databasen. Hvis problemerne fortsætter, bør du gemme din fil lokalt for at sikre, at du ikke mister dit arbejde.", collabSaveFailed_sizeExceeded: "Kunne ikke gemme i databasen, lærredet lader til at være for stort. Du bør gemme filen lokalt for at sikre, at du ikke mister dit arbejde.", imageToolNotSupported: "Billeder er deaktiveret.", brave_measure_text_error: { line1: "Det ser ud til, at du bruger Brave browser med indstillingen <bold>Aggressively Block Fingerprinting</bold> aktiveret.", line2: "Dette kan resultere i brud på <bold>tekstelementerne</bold> i dine tegninger.", line3: "Vi anbefaler kraftigt at deaktivere denne indstilling. Du kan følge <link>disse trin</link> om, hvordan du gør det.", line4: "Hvis deaktivering af denne indstilling ikke løser visning af tekstelementer, åbn venligst et <issueLink>issue</issueLink> på vores GitHub, eller skriv os på <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Indlejringselementer kan ikke tilføjes til biblioteket.", iframe: "IFrame elementer kan ikke tilføjes til biblioteket.", image: "Understøttelse af at tilføje billeder til biblioteket kommer snart!" }, asyncPasteFailedOnRead: "Kunne ikke indsætte (kan ikke læse fra systemets udklipsholder).", asyncPasteFailedOnParse: "Kunne ikke indsætte.", copyToSystemClipboardFailed: "Kunne ikke kopiere til udklipsholderen." }, MN = { selection: "&Udvalg", image: "Indsæt billeder", rectangle: "Rektangler", diamond: "Diamanter", ellipse: "Ellipser", arrow: "Pile", line: "Linje", freedraw: "Tegn", text: "Tekster", library: "~Bibliotek", lock: "Behold valgte værktøj aktiv efter tegning", penMode: "Pen-tilstand - forhindrer berøring", link: "Tilføj/ Opdater link for en valgt form", eraser: "Slet", frame: "Rammeværktøj", magicframe: "Wireframe til kode", embeddable: "Web-indlejring", laser: "Lasermarkør", hand: "Hånd (panorering værktøj)", extraTools: "Flere værktøjer", mermaidToExcalidraw: "Mermaid til Excalidraw", magicSettings: "AI indstillinger" }, YN = { canvasActions: "Lærred handlinger", selectedShapeActions: "Valgte figurhandlinger", shapes: "Former" }, vN = { canvasPanning: "For at flytte lærred, hold musehjulet eller mellemrumstasten mens du trækker, eller brug håndværktøjet", linearElement: "Klik for at starte flere punkter, træk for enkelt linje", freeDraw: "Klik og træk, slip når du er færdig", text: "Tip: du kan også tilføje tekst ved at dobbeltklikke hvor som helst med det valgte værktøj", embeddable: "Klik på træk for at oprette en hjemmeside indlejret", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, HN = { cannotShowPreview: "Kan ikke vise forhåndsvisning", canvasTooBig: "Lærredet kan være for stort.", canvasTooBigTip: "Tip: Prøv at flytte de fjerneste elementer lidt tættere sammen." }, KN = { headingMain: "Der opstod en fejl. Prøv <button>at genindlæse siden</button>.", clearCanvasMessage: "", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "<button></button> Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.", sceneContent: "Scene indhold:" }, JN = { desc_intro: "Du kan invitere folk til din nuværende scene, så de kan samarbejde med dig.", desc_privacy: "Bare rolig, sessionen bruger end-to-end kryptering, så uanset hvad du tegner vil det forblive privat. Ikke engang vores server vil kunne se, hvad du kommer op med.", button_startSession: "Start session", button_stopSession: "Stop session", desc_inProgressIntro: "Live-samarbejde session er nu begyndt.", desc_shareLink: "Del dette link med enhver, du ønsker at samarbejde med:", desc_exitSession: "", shareTitle: "" }, ZN = { title: "Fejl" }, qN = { disk_title: "Gem til disk", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, WN = { blog: "Læs vores blog", click: "", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, jN = { title: "" }, TN = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, zN = { title: "", content: "" }, PN = { resetLibrary: "", removeItemsFromLib: "" }, ON = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, VN = { tooltip: "", link: "" }, XN = { angle: "", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "Statistik for nørder", total: "", version: "", versionCopy: "Klik for at kopiere", versionNotAvailable: "", width: "Bredde" }, _N = { addedToLibrary: "", copyStyles: "Kopieret stilarter.", copyToClipboard: "Kopieret til klippebord.", copyToClipboardAsPng: `Kopieret {{exportSelection}} til klippebord som PNG
({{exportColorScheme}})`, fileSaved: "Fil gemt.", fileSavedToFilename: "Gemt som {filename}", canvas: "canvas", selection: "markering", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, $N = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, AR = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, uR = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, eR = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CR = { title: "", button: "", description: "", syntax: "", preview: "" }, kmA = { labels: LN, library: xN, buttons: SN, alerts: NN, errors: RN, toolBar: MN, headings: YN, hints: vN, canvasError: HN, errorSplash: KN, roomDialog: JN, errorDialog: ZN, exportDialog: qN, helpDialog: WN, clearCanvasDialog: jN, publishDialog: TN, publishSuccessDialog: zN, confirmDialog: PN, imageExportDialog: ON, encrypted: VN, stats: XN, toast: _N, colors: $N, welcomeScreen: AR, colorPicker: uR, overwriteConfirm: eR, mermaid: CR };
const ymA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NN,
  buttons: SN,
  canvasError: HN,
  clearCanvasDialog: jN,
  colorPicker: uR,
  colors: $N,
  confirmDialog: PN,
  default: kmA,
  encrypted: VN,
  errorDialog: ZN,
  errorSplash: KN,
  errors: RN,
  exportDialog: qN,
  headings: YN,
  helpDialog: WN,
  hints: vN,
  imageExportDialog: ON,
  labels: LN,
  library: xN,
  mermaid: CR,
  overwriteConfirm: eR,
  publishDialog: TN,
  publishSuccessDialog: zN,
  roomDialog: JN,
  stats: XN,
  toast: _N,
  toolBar: MN,
  welcomeScreen: AR
}, Symbol.toStringTag, { value: "Module" }));
var BR = { paste: "Einfügen", pasteAsPlaintext: "Als reinen Text einfügen", pasteCharts: "Diagramme einfügen", selectAll: "Alle auswählen", multiSelect: "Element zur Auswahl hinzufügen", moveCanvas: "Leinwand verschieben", cut: "Ausschneiden", copy: "Kopieren", copyAsPng: "In Zwischenablage kopieren (PNG)", copyAsSvg: "In Zwischenablage kopieren (SVG)", copyText: "In die Zwischenablage als Text kopieren", copySource: "Quelle in Zwischenablage kopieren", convertToCode: "In Code konvertieren", bringForward: "Nach vorne", sendToBack: "In den Hintergrund", bringToFront: "In den Vordergrund", sendBackward: "Nach hinten", delete: "Löschen", copyStyles: "Formatierung kopieren", pasteStyles: "Formatierung übernehmen", stroke: "Strich", background: "Hintergrund", fill: "Füllung", strokeWidth: "Strichstärke", strokeStyle: "Konturstil", strokeStyle_solid: "Durchgezogen", strokeStyle_dashed: "Gestrichelt", strokeStyle_dotted: "Gepunktet", sloppiness: "Sauberkeit", opacity: "Deckkraft", textAlign: "Textausrichtung", edges: "Kanten", sharp: "Scharf", round: "Rund", arrowheads: "Pfeilspitzen", arrowhead_none: "Keine", arrowhead_arrow: "Pfeil", arrowhead_bar: "Balken", arrowhead_circle: "Kreis", arrowhead_circle_outline: "Kreis (Umrandung)", arrowhead_triangle: "Dreieck", arrowhead_triangle_outline: "Dreieck (Umrandung)", arrowhead_diamond: "Raute", arrowhead_diamond_outline: "Raute (Umrandung)", fontSize: "Schriftgröße", fontFamily: "Schriftfamilie", addWatermark: '"Made with Excalidraw" hinzufügen', handDrawn: "Handgezeichnet", normal: "Normal", code: "Code", small: "Klein", medium: "Mittel", large: "Groß", veryLarge: "Sehr groß", solid: "Deckend", hachure: "Schraffiert", zigzag: "Zickzack", crossHatch: "Kreuzschraffiert", thin: "Dünn", bold: "Fett", left: "Links", center: "Zentriert", right: "Rechts", extraBold: "Extra Fett", architect: "Architekt", artist: "Künstler", cartoonist: "Karikaturist", fileTitle: "Dateiname", colorPicker: "Farbauswähler", canvasColors: "Auf Leinwand verwendet", canvasBackground: "Zeichenflächenhintergrund", drawingCanvas: "Leinwand", layers: "Ebenen", actions: "Aktionen", language: "Sprache", liveCollaboration: "Live-Zusammenarbeit...", duplicateSelection: "Duplizieren", untitled: "Unbenannt", name: "Name", yourName: "Dein Name", madeWithExcalidraw: "Made with Excalidraw", group: "Auswahl gruppieren", ungroup: "Gruppierung aufheben", collaborators: "Mitarbeitende", showGrid: "Raster anzeigen", addToLibrary: "Zur Bibliothek hinzufügen", removeFromLibrary: "Aus Bibliothek entfernen", libraryLoadingMessage: "Lade Bibliothek…", libraries: "Bibliotheken durchsuchen", loadingScene: "Lade Zeichnung…", align: "Ausrichten", alignTop: "Obere Kanten", alignBottom: "Untere Kanten", alignLeft: "Linke Kanten", alignRight: "Rechte Kanten", centerVertically: "Vertikal zentrieren", centerHorizontally: "Horizontal zentrieren", distributeHorizontally: "Horizontal verteilen", distributeVertically: "Vertikal verteilen", flipHorizontal: "Horizontal spiegeln", flipVertical: "Vertikal spiegeln", viewMode: "Ansichtsmodus", share: "Teilen", showStroke: "Auswahl für Strichfarbe anzeigen", showBackground: "Hintergrundfarbe auswählen", toggleTheme: "Design umschalten", personalLib: "Persönliche Bibliothek", excalidrawLib: "Excalidraw Bibliothek", decreaseFontSize: "Schriftgröße verkleinern", increaseFontSize: "Schrift vergrößern", unbindText: "Text lösen", bindText: "Text an Container binden", createContainerFromText: "Text in Container einbetten", link: { edit: "Link bearbeiten", editEmbed: "Link bearbeiten & einbetten", create: "Link erstellen", createEmbed: "Link erstellen & einbetten", label: "Link", labelEmbed: "Verlinken & einbetten", empty: "Kein Link festgelegt" }, lineEditor: { edit: "Linie bearbeiten", exit: "Linieneditor verlassen" }, elementLock: { lock: "Sperren", unlock: "Entsperren", lockAll: "Alle sperren", unlockAll: "Alle entsperren" }, statusPublished: "Veröffentlicht", sidebarLock: "Seitenleiste offen lassen", selectAllElementsInFrame: "Alle Elemente im Rahmen auswählen", removeAllElementsFromFrame: "Alle Elemente aus dem Rahmen entfernen", eyeDropper: "Farbe von der Zeichenfläche auswählen", textToDiagram: "Text zu Diagramm", prompt: "Eingabe" }, gR = { noItems: "Noch keine Elemente hinzugefügt...", hint_emptyLibrary: "Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.", hint_emptyPrivateLibrary: "Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen." }, tR = { clearReset: "Zeichenfläche löschen & Hintergrundfarbe zurücksetzen", exportJSON: "In Datei exportieren", exportImage: "Exportiere Bild...", export: "Speichern als...", copyToClipboard: "In Zwischenablage kopieren", save: "In aktueller Datei speichern", saveAs: "Speichern unter", load: "Öffnen", getShareableLink: "Teilbaren Link erhalten", close: "Schließen", selectLanguage: "Sprache auswählen", scrollBackToContent: "Zurück zum Inhalt", zoomIn: "Vergrößern", zoomOut: "Verkleinern", resetZoom: "Zoom zurücksetzen", menu: "Menü", done: "Fertig", edit: "Bearbeiten", undo: "Rückgängig machen", redo: "Wiederholen", resetLibrary: "Bibliothek zurücksetzen", createNewRoom: "Neuen Raum erstellen", fullScreen: "Vollbildanzeige", darkMode: "Dunkles Design", lightMode: "Helles Design", zenMode: "Zen-Modus", objectsSnapMode: "Einrasten an Objekten", exitZenMode: "Zen-Modus verlassen", cancel: "Abbrechen", clear: "Löschen", remove: "Entfernen", embed: "Einbettung umschalten", publishLibrary: "Veröffentlichen", submit: "Absenden", confirm: "Bestätigen", embeddableInteractionButton: "Klicken, um zu interagieren" }, iR = { clearReset: "Dies wird die ganze Zeichenfläche löschen. Bist du dir sicher?", couldNotCreateShareableLink: "Konnte keinen teilbaren Link erstellen.", couldNotCreateShareableLinkTooBig: "Konnte keinen teilbaren Link erstellen: Die Zeichnung ist zu groß", couldNotLoadInvalidFile: "Ungültige Datei konnte nicht geladen werden", importBackendFailed: "Import vom Server ist fehlgeschlagen.", cannotExportEmptyCanvas: "Leere Zeichenfläche kann nicht exportiert werden.", couldNotCopyToClipboard: "Kopieren in die Zwischenablage fehlgeschlagen.", decryptFailed: "Daten konnten nicht entschlüsselt werden.", uploadedSecurly: "Der Upload wurde mit Ende-zu-Ende-Verschlüsselung gespeichert. Weder Excalidraw noch Dritte können den Inhalt einsehen.", loadSceneOverridePrompt: "Das Laden einer externen Zeichnung ersetzt den vorhandenen Inhalt. Möchtest du fortfahren?", collabStopOverridePrompt: `Das Stoppen der Sitzung wird deine vorherige, lokal gespeicherte Zeichnung überschreiben. Bist du dir sicher?

(Wenn du deine lokale Zeichnung behalten möchtest, schließe stattdessen den Browser-Tab.)`, errorAddingToLibrary: "Das Element konnte nicht zur Bibliothek hinzugefügt werden", errorRemovingFromLibrary: "Das Element konnte nicht aus der Bibliothek entfernt werden", confirmAddLibrary: "Dies fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du dir sicher?", imageDoesNotContainScene: "Dieses Bild scheint keine Szenendaten zu enthalten. Hast Du das Einbetten der Szene während des Exports aktiviert?", cannotRestoreFromImage: "Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden", invalidSceneUrl: "Die Szene konnte nicht von der angegebenen URL importiert werden. Sie ist entweder fehlerhaft oder enthält keine gültigen Excalidraw JSON-Daten.", resetLibrary: "Dieses löscht deine Bibliothek. Bist du sicher?", removeItemsFromsLibrary: "{{count}} Element(e) aus der Bibliothek löschen?", invalidEncryptionKey: "Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.", collabOfflineWarning: `Keine Internetverbindung verfügbar.
Deine Änderungen werden nicht gespeichert!` }, ER = { unsupportedFileType: "Nicht unterstützter Dateityp.", imageInsertError: "Das Bild konnte nicht eingefügt werden. Versuche es später erneut...", fileTooBig: "Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.", svgImageInsertError: "SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.", failedToFetchImage: "Bild konnte nicht abgerufen werden.", invalidSVGString: "Ungültige SVG.", cannotResolveCollabServer: "Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.", importLibraryError: "Bibliothek konnte nicht geladen werden", collabSaveFailed: "Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.", collabSaveFailed_sizeExceeded: "Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.", imageToolNotSupported: "Bilder sind deaktiviert.", brave_measure_text_error: { line1: "Sieht so aus, als ob Du den Brave-Browser verwendest und die <bold>aggressive Blockierung von Fingerabdrücken</bold> aktiviert hast.", line2: "Dies könnte dazu führen, dass die <bold>Textelemente</bold> in Ihren Zeichnungen zerstört werden.", line3: "Wir empfehlen dringend, diese Einstellung zu deaktivieren. Dazu kannst Du <link>diesen Schritten</link> folgen.", line4: "Wenn die Deaktivierung dieser Einstellung die fehlerhafte Anzeige von Textelementen nicht behebt, öffne bitte ein <issueLink>Ticket</issueLink> auf unserem GitHub oder schreibe uns auf <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Einbettbare Elemente können der Bibliothek nicht hinzugefügt werden.", iframe: "IFrame-Elemente können nicht zur Bibliothek hinzugefügt werden.", image: "Unterstützung für das Hinzufügen von Bildern in die Bibliothek kommt bald!" }, asyncPasteFailedOnRead: "Einfügen fehlgeschlagen (konnte aus der Zwischenablage des Systems nicht gelesen werden).", asyncPasteFailedOnParse: "Einfügen fehlgeschlagen.", copyToSystemClipboardFailed: "Kopieren in die Zwischenablage fehlgeschlagen." }, aR = { selection: "Auswahl", image: "Bild einfügen", rectangle: "Rechteck", diamond: "Raute", ellipse: "Ellipse", arrow: "Pfeil", line: "Linie", freedraw: "Zeichnen", text: "Text", library: "Bibliothek", lock: "Ausgewähltes Werkzeug nach Zeichnen aktiv lassen", penMode: "Stift-Modus - Berührung verhindern", link: "Link für ausgewählte Form hinzufügen / aktualisieren", eraser: "Radierer", frame: "Rahmenwerkzeug", magicframe: "Wireframe zu Code", embeddable: "Web-Einbettung", laser: "Laserpointer", hand: "Hand (Schwenkwerkzeug)", extraTools: "Weitere Werkzeuge", mermaidToExcalidraw: "Mermaid zu Excalidraw", magicSettings: "KI-Einstellungen" }, IR = { canvasActions: "Aktionen für Zeichenfläche", selectedShapeActions: "Aktionen für Auswahl", shapes: "Formen" }, oR = { canvasPanning: "Um die Zeichenfläche zu verschieben, halte das Mausrad oder die Leertaste während des Ziehens, oder verwende das Hand-Werkzeug", linearElement: "Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie", freeDraw: "Klicke und ziehe. Lass los, wenn du fertig bist", text: "Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst", embeddable: "Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen", text_selected: "Doppelklicken oder Eingabetaste drücken, um Text zu bearbeiten", text_editing: "Drücke Escape oder CtrlOrCmd+Eingabetaste, um die Bearbeitung abzuschließen", linearElementMulti: "Zum Beenden auf den letzten Punkt klicken oder Escape oder Eingabe drücken", lockAngle: "Du kannst Winkel einschränken, indem du SHIFT gedrückt hältst", resize: "Du kannst die Proportionen einschränken, indem du SHIFT während der Größenänderung gedrückt hältst. Halte ALT gedrückt, um die Größe vom Zentrum aus zu ändern", resizeImage: "Du kannst die Größe frei ändern, indem du SHIFT gedrückt hältst; halte ALT, um die Größe vom Zentrum aus zu ändern", rotate: "Du kannst Winkel einschränken, indem du SHIFT während der Drehung gedrückt hältst", lineEditor_info: "CtrlOrCmd halten und Doppelklick oder CtrlOrCmd + Eingabe drücken, um Punkte zu bearbeiten", lineEditor_pointSelected: "Drücke Löschen, um Punkt(e) zu entfernen, CtrlOrCmd+D zum Duplizieren oder ziehe zum Verschieben", lineEditor_nothingSelected: `Wähle einen zu bearbeitenden Punkt (halte SHIFT gedrückt um mehrere Punkte auszuwählen),
oder halte Alt gedrückt und klicke um neue Punkte hinzuzufügen`, placeImage: "Klicken, um das Bild zu platzieren oder klicken und ziehen um seine Größe manuell zu setzen", publishLibrary: "Veröffentliche deine eigene Bibliothek", bindTextToElement: "Zum Hinzufügen Eingabetaste drücken", deepBoxSelect: "Halte CtrlOrCmd gedrückt, um innerhalb der Gruppe auszuwählen, und um Ziehen zu vermeiden", eraserRevert: "Halte Alt gedrückt, um die zum Löschen markierten Elemente zurückzusetzen", firefox_clipboard_write: 'Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung "dom.events.asyncClipboard.clipboardItem" auf "true" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite "about:config".', disableSnapping: "Halte CtrlOrCmd gedrückt, um das Einrasten zu deaktivieren" }, QR = { cannotShowPreview: "Vorschau kann nicht angezeigt werden", canvasTooBig: "Die Leinwand ist möglicherweise zu groß.", canvasTooBigTip: "Tipp: Schiebe die am weitesten entfernten Elemente ein wenig näher zusammen." }, nR = { headingMain: "Es ist ein Fehler aufgetreten. Versuche <button>die Seite neu zu laden.</button>", clearCanvasMessage: "Wenn das Neuladen nicht funktioniert, versuche <button>die Zeichenfläche zu löschen.</button>", clearCanvasCaveat: " Dies wird zum Verlust von Daten führen ", trackedToSentry: "Der Fehler mit der Kennung {{eventId}} wurde in unserem System registriert.", openIssueMessage: "Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren <button>Bug-Tracker</button>. Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).", sceneContent: "Zeichnungsinhalt:" }, rR = { desc_intro: "Du kannst Leute zu deiner aktuellen Zeichnung einladen um mit ihnen zusammenzuarbeiten.", desc_privacy: "Keine Sorge, die Sitzung nutzt eine Ende-zu-Ende-Verschlüsselung. Alles was du zeichnest, bleibt privat. Auch unser Server sieht nicht, was du dir einfallen lässt.", button_startSession: "Sitzung starten", button_stopSession: "Sitzung beenden", desc_inProgressIntro: "Die Live-Sitzung wird nun ausgeführt.", desc_shareLink: "Teile diesen Link mit allen, mit denen du zusammenarbeiten möchtest:", desc_exitSession: "Wenn du die Sitzung beendest, wird deine Verbindung zum Raum getrennt. Du kannst jedoch lokal weiter an der Zeichnung arbeiten. Beachte, dass dies keine Auswirkungen auf andere hat und diese weiterhin gemeinsam an ihrer Version arbeiten können.", shareTitle: "An einer Live-Kollaborationssitzung auf Excalidraw teilnehmen" }, sR = { title: "Fehler" }, lR = { disk_title: "Auf Festplatte speichern", disk_details: "Exportiere die Zeichnungsdaten in eine Datei, die Du später importieren kannst.", disk_button: "Als Datei speichern", link_title: "Teilbarer Link", link_details: "Als schreibgeschützten Link exportieren.", link_button: "Als Link exportieren", excalidrawplus_description: "Speichere die Szene in deinem Excalidraw+ Arbeitsbereich.", excalidrawplus_button: "Exportieren", excalidrawplus_exportError: "Konnte nicht nach Excalidraw+ exportieren..." }, cR = { blog: "Lies unseren Blog", click: "klicken", deepSelect: "Auswahl innerhalb der Gruppe", deepBoxSelect: "Auswahl innerhalb der Gruppe, und Ziehen vermeiden", curvedArrow: "Gebogener Pfeil", curvedLine: "Gebogene Linie", documentation: "Dokumentation", doubleClick: "doppelklicken", drag: "ziehen", editor: "Editor", editLineArrowPoints: "Linien-/Pfeil-Punkte bearbeiten", editText: "Text bearbeiten / Label hinzufügen", github: "Ein Problem gefunden? Informiere uns", howto: "Folge unseren Anleitungen", or: "oder", preventBinding: "Pfeil-Bindung verhindern", tools: "Werkzeuge", shortcuts: "Tastaturkürzel", textFinish: "Bearbeitung beenden (Texteditor)", textNewLine: "Neue Zeile hinzufügen (Texteditor)", title: "Hilfe", view: "Ansicht", zoomToFit: "Zoomen um alle Elemente einzupassen", zoomToSelection: "Auf Auswahl zoomen", toggleElementLock: "Auswahl sperren/entsperren", movePageUpDown: "Seite nach oben/unten verschieben", movePageLeftRight: "Seite nach links/rechts verschieben" }, dR = { title: "Zeichenfläche löschen" }, DR = { title: "Bibliothek veröffentlichen", itemName: "Elementname", authorName: "Name des Autors", githubUsername: "GitHub-Benutzername", twitterUsername: "Twitter-Benutzername", libraryName: "Name der Bibliothek", libraryDesc: "Beschreibung der Bibliothek", website: "Webseite", placeholder: { authorName: "Dein Name oder Benutzername", libraryName: "Name deiner Bibliothek", libraryDesc: "Beschreibung deiner Bibliothek, um anderen Nutzern bei der Verwendung zu helfen", githubHandle: "GitHub-Handle (optional), damit du die Bibliothek bearbeiten kannst, wenn sie zur Überprüfung eingereicht wurde", twitterHandle: "Twitter-Benutzername (optional), damit wir wissen, wen wir bei Werbung über Twitter nennen können", website: "Link zu deiner persönlichen Webseite oder zu anderer Seite (optional)" }, errors: { required: "Erforderlich", website: "Gültige URL eingeben" }, noteDescription: "Sende deine Bibliothek ein, um in die <link>öffentliche Bibliotheks-Repository aufgenommen zu werden</link>damit andere Nutzer sie in ihren Zeichnungen verwenden können.", noteGuidelines: "Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die <link>Richtlinien</link> vor dem Absenden. Du benötigst ein GitHub-Konto, um zu kommunizieren und Änderungen vorzunehmen, falls erforderlich, aber es ist nicht unbedingt erforderlich.", noteLicense: "Mit dem Absenden stimmst du zu, dass die Bibliothek unter der <link>MIT-Lizenz, </link>die zusammengefasst beinhaltet, dass jeder sie ohne Einschränkungen nutzen kann.", noteItems: "Jedes Bibliothekselement muss einen eigenen Namen haben, damit es gefiltert werden kann. Die folgenden Bibliothekselemente werden hinzugefügt:", atleastOneLibItem: "Bitte wähle mindestens ein Bibliothekselement aus, um zu beginnen", republishWarning: "Hinweis: Einige der ausgewählten Elemente sind bereits als veröffentlicht/eingereicht markiert. Du solltest Elemente nur erneut einreichen, wenn Du eine existierende Bibliothek oder Einreichung aktualisierst." }, hR = { title: "Bibliothek übermittelt", content: "Vielen Dank {{authorName}}. Deine Bibliothek wurde zur Überprüfung eingereicht. Du kannst den Status verfolgen<link>hier</link>" }, wR = { resetLibrary: "Bibliothek zurücksetzen", removeItemsFromLib: "Ausgewählte Elemente aus der Bibliothek entfernen" }, FR = { header: "Bild exportieren", label: { withBackground: "Hintergrund", onlySelected: "Nur ausgewählte", darkMode: "Dunkler Modus", embedScene: "Szene einbetten", scale: "Skalierung", padding: "Abstand" }, tooltip: { embedScene: `Die Zeichnungsdaten werden in der exportierten PNG/SVG-Datei gespeichert, sodass das Dokument später weiter bearbeitet werden kann. 
Dieses wird die exportierte Datei vergrößern.` }, title: { exportToPng: "Als PNG exportieren", exportToSvg: "Als SVG exportieren", copyPngToClipboard: "PNG in die Zwischenablage kopieren" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "In Zwischenablage kopieren" } }, pR = { tooltip: "Da deine Zeichnungen Ende-zu-Ende verschlüsselt werden, sehen auch unsere Excalidraw-Server sie niemals.", link: "Blogbeitrag über Ende-zu-Ende-Verschlüsselung in Excalidraw" }, mR = { angle: "Winkel", element: "Element", elements: "Elemente", height: "Höhe", scene: "Zeichnung", selected: "Ausgewählt", storage: "Speicher", title: "Statistiken für Nerds", total: "Gesamt", version: "Version", versionCopy: "Zum Kopieren klicken", versionNotAvailable: "Version nicht verfügbar", width: "Breite" }, kR = { addedToLibrary: "Zur Bibliothek hinzugefügt", copyStyles: "Formatierungen kopiert.", copyToClipboard: "In die Zwischenablage kopiert.", copyToClipboardAsPng: `{{exportSelection}} als PNG in die Zwischenablage kopiert
({{exportColorScheme}})`, fileSaved: "Datei gespeichert.", fileSavedToFilename: "Als {filename} gespeichert", canvas: "Zeichenfläche", selection: "Auswahl", pasteAsSingleElement: `Verwende {{shortcut}} , um als einzelnes Element
einzufügen oder in einen existierenden Texteditor einzufügen`, unableToEmbed: "Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen", unrecognizedLinkFormat: "Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den 'embed' String einzufügen, der von der Quellseite zur Verfügung gestellt wird" }, yR = { transparent: "Transparent", black: "Schwarz", white: "Weiß", red: "Rot", pink: "Pink", grape: "Traube", violet: "Violett", gray: "Grau", blue: "Blau", cyan: "Cyan", teal: "Blaugrün", green: "Grün", yellow: "Gelb", orange: "Orange", bronze: "Bronze" }, bR = { app: { center_heading: "Alle Daten werden lokal in Deinem Browser gespeichert.", center_heading_plus: "Möchtest du stattdessen zu Excalidraw+ gehen?", menuHint: "Exportieren, Einstellungen, Sprachen, ..." }, defaults: { menuHint: "Exportieren, Einstellungen und mehr...", center_heading: "Diagramme. Einfach. Gemacht.", toolbarHint: "Wähle ein Werkzeug & beginne zu zeichnen!", helpHint: "Kurzbefehle & Hilfe" } }, UR = { mostUsedCustomColors: "Beliebteste benutzerdefinierte Farben", colors: "Farben", shades: "Schattierungen", hexCode: "Hex-Code", noShades: "Keine Schattierungen für diese Farbe verfügbar" }, GR = { action: { exportToImage: { title: "Als Bild exportieren", button: "Als Bild exportieren", description: "Exportiere die Zeichnungsdaten als ein Bild, von dem Du später importieren kannst." }, saveToDisk: { title: "Auf Festplatte speichern", button: "Auf Festplatte speichern", description: "Exportiere die Zeichnungsdaten in eine Datei, von der Du später importieren kannst." }, excalidrawPlus: { title: "Excalidraw+", button: "Export nach Excalidraw+", description: "Speichere die Szene in deinem Excalidraw+-Arbeitsbereich." } }, modal: { loadFromFile: { title: "Aus Datei laden", button: "Aus Datei laden", description: "Das Laden aus einer Datei wird <bold>Deinen vorhandenen Inhalt ersetzen</bold>.<br></br>Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern." }, shareableLink: { title: "Aus Link laden", button: "Meinen Inhalt ersetzen", description: "Das Laden einer externen Zeichnung wird <bold>Deinen vorhandenen Inhalt ersetzen</bold>.<br></br>Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern." } } }, fR = { title: "Mermaid zu Excalidraw", button: "Einfügen", description: "Derzeit werden nur <flowchartLink>Flussdiagramme</flowchartLink>, <sequenceLink>Sequenzdiagramme</sequenceLink> und <classLink>Klassendiagramme</classLink> unterstützt. Die anderen Typen werden als Bild in Excalidraw dargestellt.", syntax: "Mermaid-Syntax", preview: "Vorschau" }, bmA = { labels: BR, library: gR, buttons: tR, alerts: iR, errors: ER, toolBar: aR, headings: IR, hints: oR, canvasError: QR, errorSplash: nR, roomDialog: rR, errorDialog: sR, exportDialog: lR, helpDialog: cR, clearCanvasDialog: dR, publishDialog: DR, publishSuccessDialog: hR, confirmDialog: wR, imageExportDialog: FR, encrypted: pR, stats: mR, toast: kR, colors: yR, welcomeScreen: bR, colorPicker: UR, overwriteConfirm: GR, mermaid: fR };
const UmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iR,
  buttons: tR,
  canvasError: QR,
  clearCanvasDialog: dR,
  colorPicker: UR,
  colors: yR,
  confirmDialog: wR,
  default: bmA,
  encrypted: pR,
  errorDialog: sR,
  errorSplash: nR,
  errors: ER,
  exportDialog: lR,
  headings: IR,
  helpDialog: cR,
  hints: oR,
  imageExportDialog: FR,
  labels: BR,
  library: gR,
  mermaid: fR,
  overwriteConfirm: GR,
  publishDialog: DR,
  publishSuccessDialog: hR,
  roomDialog: rR,
  stats: mR,
  toast: kR,
  toolBar: aR,
  welcomeScreen: bR
}, Symbol.toStringTag, { value: "Module" }));
var LR = { paste: "Επικόλληση", pasteAsPlaintext: "Επικόλληση ως απλό κείμενο", pasteCharts: "Επικόλληση γραφημάτων", selectAll: "Επιλογή όλων", multiSelect: "Προσθέστε το στοιχείο στην επιλογή", moveCanvas: "Μετακίνηση καμβά", cut: "Αποκοπή", copy: "Αντιγραφή", copyAsPng: "Αντιγραφή στο πρόχειρο ως PNG", copyAsSvg: "Αντιγραφή στο πρόχειρο ως SVG", copyText: "Αντιγραφή στο πρόχειρο ως κείμενο", copySource: "", convertToCode: "", bringForward: "Στο προσκήνιο", sendToBack: "Ένα επίπεδο πίσω", bringToFront: "Ένα επίπεδο μπροστά", sendBackward: "Στο παρασκήνιο", delete: "Διαγραφή", copyStyles: "Αντιγραφή εμφάνισης", pasteStyles: "Επικόλληση εμφάνισης", stroke: "Μολυβιά", background: "Φόντο", fill: "Γέμισμα", strokeWidth: "Πάχος μολυβιάς", strokeStyle: "Στυλ περιγράμματος", strokeStyle_solid: "Συμπαγής", strokeStyle_dashed: "Διακεκομμένη με παύλες", strokeStyle_dotted: "Διακεκομμένη με τελείες", sloppiness: "Ακαταστασία", opacity: "Διαφάνεια", textAlign: "Στοίχιση κειμένου", edges: "Άκρες", sharp: "Οξύ", round: "Στρογγυλό", arrowheads: "Σύμβολα βελών", arrowhead_none: "Κανένα", arrowhead_arrow: "Βέλος", arrowhead_bar: "Μπάρα", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Τρίγωνο", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Μέγεθος γραμματοσειράς", fontFamily: "Γραμματοσειρά", addWatermark: 'Προσθήκη "Φτιαγμένο με Excalidraw"', handDrawn: "Σχεδιασμένο στο χέρι", normal: "Κανονική", code: "Κώδικας", small: "Μικρό", medium: "Μεσαίο", large: "Μεγάλο", veryLarge: "Πολύ μεγάλο", solid: "Συμπαγής", hachure: "Εκκόλαψη", zigzag: "", crossHatch: "Διασταυρούμενη εκκόλαψη", thin: "Λεπτή", bold: "Έντονη", left: "Αριστερά", center: "Κέντρο", right: "Δεξιά", extraBold: "Πολύ έντονη", architect: "Αρχιτέκτονας", artist: "Καλλιτέχνης", cartoonist: "Σκιτσογράφος", fileTitle: "Όνομα αρχείου", colorPicker: "Επιλογή Χρώματος", canvasColors: "Χρησιμοποείται στον καμβά", canvasBackground: "Φόντο καμβά", drawingCanvas: "Σχεδίαση καμβά", layers: "Στρώματα", actions: "Ενέργειες", language: "Γλώσσα", liveCollaboration: "Live συνεργασία...", duplicateSelection: "Δημιουργία αντιγράφου", untitled: "Χωρίς τίτλο", name: "Όνομα", yourName: "Το όνομά σου", madeWithExcalidraw: "Φτιαγμένο με Excalidraw", group: "Δημιουργία ομάδας από επιλογή", ungroup: "Κατάργηση ομάδας από επιλογή", collaborators: "Συνεργάτες", showGrid: "Προβολή πλέγματος", addToLibrary: "Προσθήκη στη βιβλιοθήκη", removeFromLibrary: "Αφαίρεση από τη βιβλιοθήκη", libraryLoadingMessage: "Φόρτωση βιβλιοθήκης…", libraries: "Άλλες βιβλιοθήκες", loadingScene: "Φόρτωση σκηνής…", align: "Στοίχιση", alignTop: "Στοίχιση πάνω", alignBottom: "Στοίχιση κάτω", alignLeft: "Στοίχιση αριστερά", alignRight: "Στοίχιση δεξιά", centerVertically: "Κέντρο κάθετα", centerHorizontally: "Κέντρο οριζόντια", distributeHorizontally: "Οριζόντια κατανομή", distributeVertically: "Κατακόρυφη κατανομή", flipHorizontal: "Οριζόντια αναστροφή", flipVertical: "Κατακόρυφη αναστροφή", viewMode: "Λειτουργία προβολής", share: "Κοινοποίηση", showStroke: "Εμφάνιση επιλογέα χρωμάτων πινελιάς", showBackground: "Εμφάνιση επιλογέα χρώματος φόντου", toggleTheme: "Εναλλαγή θέματος", personalLib: "Προσωπική Βιβλιοθήκη", excalidrawLib: "Βιβλιοθήκη Excalidraw", decreaseFontSize: "Μείωση μεγέθους γραμματοσειράς", increaseFontSize: "Αύξηση μεγέθους γραμματοσειράς", unbindText: "Αποσύνδεση κειμένου", bindText: "Δέσμευση κειμένου στο δοχείο", createContainerFromText: "", link: { edit: "Επεξεργασία συνδέσμου", editEmbed: "", create: "Δημιουργία συνδέσμου", createEmbed: "", label: "Σύνδεσμος", labelEmbed: "", empty: "" }, lineEditor: { edit: "Επεξεργασία γραμμής", exit: "Έξοδος επεξεργαστή κειμένου" }, elementLock: { lock: "Κλείδωμα", unlock: "Ξεκλείδωμα", lockAll: "Κλείδωμα όλων", unlockAll: "Ξεκλείδωμα όλων" }, statusPublished: "Δημοσιευμένο", sidebarLock: "Κρατήστε την πλαϊνή μπάρα ανοιχτή", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xR = { noItems: "Δεν έχουν προστεθεί αντικείμενα ακόμη...", hint_emptyLibrary: "Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ, ή εγκαταστήστε μια βιβλιοθήκη από το δημόσιο αποθετήριο, παρακάτω.", hint_emptyPrivateLibrary: "Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ." }, SR = { clearReset: "Επαναφορά του καμβά", exportJSON: "Εξαγωγή σε αρχείο", exportImage: "Εξαγωγή εικόνας...", export: "Αποθήκευση ως...", copyToClipboard: "Αντιγραφή στο πρόχειρο", save: "Αποθήκευση στο τρέχον αρχείο", saveAs: "Αποθήκευση ως", load: "Άνοιγμα", getShareableLink: "Δημόσιος σύνδεσμος", close: "Κλείσιμο", selectLanguage: "Επιλογή γλώσσας", scrollBackToContent: "Μετακινηθείτε πίσω στο περιεχόμενο", zoomIn: "Μεγέθυνση", zoomOut: "Σμίκρυνση", resetZoom: "Επαναφορά μεγέθυνσης", menu: "Μενού", done: "Τέλος", edit: "Επεξεργασία", undo: "Αναίρεση", redo: "Επαναφορά", resetLibrary: "Καθαρισμός βιβλιοθήκης", createNewRoom: "Δημιουργία νέου χώρου", fullScreen: "Πλήρης οθόνη", darkMode: "Σκοτεινή λειτουργία", lightMode: "Φωτεινή λειτουργία", zenMode: "Λειτουργία Zεν", objectsSnapMode: "", exitZenMode: "Έξοδος από την λειτουργία Zen", cancel: "Ακύρωση", clear: "Καθαρισμός", remove: "Κατάργηση", embed: "", publishLibrary: "Δημοσίευση", submit: "Υποβολή", confirm: "Επιβεβαίωση", embeddableInteractionButton: "" }, NR = { clearReset: "Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;", couldNotCreateShareableLink: "Δεν ήταν δυνατή η δημιουργία συνδέσμου κοινής χρήσης.", couldNotCreateShareableLinkTooBig: "Δεν ήταν δυνατή η δημιουργία κοινόχρηστου συνδέσμου: η σκηνή είναι πολύ μεγάλη", couldNotLoadInvalidFile: "Δεν μπόρεσε να ανοίξει εσφαλμένο αρχείο", importBackendFailed: "Η εισαγωγή από το backend απέτυχε.", cannotExportEmptyCanvas: "Δεν είναι δυνατή η εξαγωγή κενού καμβά.", couldNotCopyToClipboard: "Αδυναμία αντιγραφής στο πρόχειρο.", decryptFailed: "Δεν ήταν δυνατή η αποκρυπτογράφηση δεδομένων.", uploadedSecurly: "Η μεταφόρτωση έχει εξασφαλιστεί με κρυπτογράφηση από άκρο σε άκρο, πράγμα που σημαίνει ότι ο διακομιστής Excalidraw και τρίτα μέρη δεν μπορούν να διαβάσουν το περιεχόμενο.", loadSceneOverridePrompt: "Η φόρτωση εξωτερικού σχεδίου θα αντικαταστήσει το υπάρχον περιεχόμενο. Επιθυμείτε να συνεχίσετε;", collabStopOverridePrompt: `Η διακοπή της συνεδρίας θα αντικαταστήσει το προηγούμενο, τοπικά αποθηκευμένο σχέδιο. Είστε σίγουροι?

(Αν θέλετε να διατηρήσετε το τοπικό σας σχέδιο, απλά κλείστε την καρτέλα του προγράμματος περιήγησης.)`, errorAddingToLibrary: "Αδυναμία προσθήκης αντικειμένου στη βιβλιοθήκη", errorRemovingFromLibrary: "Αδυναμία αφαίρεσης αντικειμένου από τη βιβλιοθήκη", confirmAddLibrary: "Αυτό θα προσθέσει {{numShapes}} σχήμα(τα) στη βιβλιοθήκη σας. Είστε σίγουροι;", imageDoesNotContainScene: "Αυτή η εικόνα δεν φαίνεται να περιέχει δεδομένα σκηνής. Έχετε ενεργοποιήσει την ενσωμάτωση σκηνής κατά την εξαγωγή;", cannotRestoreFromImage: "Η σκηνή δεν ήταν δυνατό να αποκατασταθεί από αυτό το αρχείο εικόνας", invalidSceneUrl: "Δεν ήταν δυνατή η εισαγωγή σκηνής από το URL που δώσατε. Είτε έχει λάθος μορφή, είτε δεν περιέχει έγκυρα δεδομένα JSON Excalidraw.", resetLibrary: "Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;", removeItemsFromsLibrary: "Διαγραφή {{count}} αντικειμένου(ων) από τη βιβλιοθήκη;", invalidEncryptionKey: "Το κλειδί κρυπτογράφησης πρέπει να είναι 22 χαρακτήρες. Η ζωντανή συνεργασία είναι απενεργοποιημένη.", collabOfflineWarning: `Δεν υπάρχει διαθέσιμη σύνδεση στο internet.
Οι αλλαγές σας δεν θα αποθηκευτούν!` }, RR = { unsupportedFileType: "Μη υποστηριζόμενος τύπος αρχείου.", imageInsertError: "Αδυναμία εισαγωγής εικόνας. Προσπαθήστε ξανά αργότερα...", fileTooBig: "Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπόμενο μέγεθος είναι {{maxSize}}.", svgImageInsertError: "Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.", failedToFetchImage: "", invalidSVGString: "Μη έγκυρο SVG.", cannotResolveCollabServer: "Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.", importLibraryError: "Αδυναμία φόρτωσης βιβλιοθήκης", collabSaveFailed: "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.", collabSaveFailed_sizeExceeded: "Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MR = { selection: "Επιλογή", image: "Εισαγωγή εικόνας", rectangle: "Ορθογώνιο", diamond: "Ρόμβος", ellipse: "Έλλειψη", arrow: "Βέλος", line: "Γραμμή", freedraw: "Σχεδίαση", text: "Κείμενο", library: "Βιβλιοθήκη", lock: "Κράτησε επιλεγμένο το εργαλείο μετά το σχέδιο", penMode: "Λειτουργία μολυβιού - αποτροπή αφής", link: "Προσθήκη/ Ενημέρωση συνδέσμου για ένα επιλεγμένο σχήμα", eraser: "Γόμα", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, YR = { canvasActions: "Ενέργειες καμβά", selectedShapeActions: "Επιλεγμένες ενέργειες σχήματος", shapes: "Σχήματα" }, vR = { canvasPanning: "", linearElement: "Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή", freeDraw: "Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει", text: "Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών", embeddable: "", text_selected: "Κάντε διπλό κλικ ή πατήστε ENTER για να επεξεργαστείτε το κείμενο", text_editing: "Πατήστε Escape ή CtrlOrCmd+ENTER για να ολοκληρώσετε την επεξεργασία", linearElementMulti: "Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις", lockAngle: "Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT", resize: `Μπορείς να περιορίσεις τις αναλογίες κρατώντας το SHIFT ενώ αλλάζεις μέγεθος,
κράτησε πατημένο το ALT για αλλαγή μεγέθους από το κέντρο`, resizeImage: `Μπορείτε να αλλάξετε το μέγεθος ελεύθερα κρατώντας πατημένο το SHIFT,
κρατήστε πατημένο το ALT για να αλλάξετε το μέγεθος από το κέντρο`, rotate: "Μπορείς να περιορίσεις τις γωνίες κρατώντας πατημένο το πλήκτρο SHIFT κατά την περιστροφή", lineEditor_info: "Κρατήστε πατημένο Ctrl ή Cmd και πατήστε το πλήκτρο Ctrl ή Cmd + Enter για επεξεργασία σημείων", lineEditor_pointSelected: `Πατήστε Διαγραφή για αφαίρεση σημείου(ων),
CtrlOrCmd+D για αντιγραφή, ή σύρετε για μετακίνηση`, lineEditor_nothingSelected: `Επιλέξτε ένα σημείο για να επεξεργαστείτε (κρατήστε πατημένο το SHIFT για να επιλέξετε πολλαπλά),
ή κρατήστε πατημένο το Alt και κάντε κλικ για να προσθέσετε νέα σημεία`, placeImage: "Κάντε κλικ για να τοποθετήσετε την εικόνα ή κάντε κλικ και σύρετε για να ορίσετε το μέγεθός της χειροκίνητα", publishLibrary: "Δημοσιεύστε τη δική σας βιβλιοθήκη", bindTextToElement: "Πατήστε Enter για προσθήκη κειμένου", deepBoxSelect: "Κρατήστε πατημένο το CtrlOrCmd για να επιλέξετε βαθιά, και να αποτρέψετε τη μεταφορά", eraserRevert: "Κρατήστε πατημένο το Alt για να επαναφέρετε τα στοιχεία που σημειώθηκαν για διαγραφή", firefox_clipboard_write: 'Αυτή η επιλογή μπορεί πιθανώς να ενεργοποιηθεί αλλάζοντας την ρύθμιση "dom.events.asyncClipboard.clipboardItem" σε "true". Για να αλλάξετε τις ρυθμίσεις του προγράμματος περιήγησης στο Firefox, επισκεφθείτε τη σελίδα "about:config".', disableSnapping: "" }, HR = { cannotShowPreview: "Αδυναμία εμφάνισης προεπισκόπησης", canvasTooBig: "Ο καμβάς μπορεί να είναι μεγάλος.", canvasTooBigTip: "Συμβουλή: προσπαθήστε να μετακινήσετε τα πιο απομακρυσμένα στοιχεία λίγο πιο κοντά μαζί." }, KR = { headingMain: "Συνέβη κάποιο σφάλμα. Προσπάθησε <button>φόρτωσε ξανά την σελίδα.</button>", clearCanvasMessage: "Εάν το παραπάνω δεν δουλέψει, προσπάθησε <button>καθαρίσετε τον κανβά.</button>", clearCanvasCaveat: " Αυτό θα προκαλέσει απώλεια της δουλειάς σου ", trackedToSentry: "Το σφάλμα με αναγνωριστικό {{eventId}} παρακολουθήθηκε στο σύστημά μας.", openIssueMessage: "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας <button>ανιχνευτής σφαλμάτων.</button> Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.", sceneContent: "Περιεχόμενο σκηνής:" }, JR = { desc_intro: "Μπορείς να προσκαλέσεις άλλους να δουλέψουν μαζί σου.", desc_privacy: "Μην ανησυχείς, η συνεδρία χρησιμοποιεί κρυπτογράφηση από σημείο σε σημείο, άρα οτιδήποτε κάνεις θα παραμείνει ανοιχτό μόνο σε εσένα. Ούτε οι μηχανές μας μπορούν να δουν τι κάνεις.", button_startSession: "Έναρξη Συνεδρίας", button_stopSession: "Τερματισμός Συνεδρίας", desc_inProgressIntro: "Η ζωντανή συνεργασία με άλλους είναι σε ενεργή.", desc_shareLink: "Μοιραστείτε τον σύνδεσμο με όποιον θέλετε να δουλέψετε μαζί:", desc_exitSession: "Η διακοπή θα σας αποσυνδέσει από το δωμάτιο, αλλά θα μπορείτε να συνεχίσετε να δουλεύετε στον πίνακα, τοπικά. Σημειώσατε ότι αυτό δεν θα επηρεάσει τον πίνακα άλλων, και θα μπορούν ακόμα να συνεισφέρουν στην δική τους έκδοση.", shareTitle: "Συμμετάσχετε σε μια ζωντανή συνεδρία συνεργασίας για το Excalidraw" }, ZR = { title: "Σφάλμα" }, qR = { disk_title: "Αποθήκευση στο δίσκο", disk_details: "Εξαγωγή δεδομένων σκηνής σε ένα αρχείο από το οποίο μπορείτε να εισάγετε αργότερα.", disk_button: "Αποθήκευση σε αρχείο", link_title: "Κοινόχρηστος σύνδεσμος", link_details: "Εξαγωγή ως σύνδεσμο μόνο για ανάγνωση.", link_button: "Εξαγωγή σε Σύνδεση", excalidrawplus_description: "Αποθηκεύστε τη σκηνή στο χώρο εργασίας σας Excalidraw+.", excalidrawplus_button: "Εξαγωγή", excalidrawplus_exportError: "Δεν ήταν δυνατή η εξαγωγή στο Excalidraw+ αυτή τη στιγμή..." }, WR = { blog: "Διαβάστε το Blog μας", click: "κλικ", deepSelect: "Βαθιά επιλογή", deepBoxSelect: "Βαθιά επιλογή μέσα στο πλαίσιο και αποτροπή συρσίματος", curvedArrow: "Κυρτό βέλος", curvedLine: "Κυρτή γραμμή", documentation: "Εγχειρίδιο", doubleClick: "διπλό κλικ", drag: "σύρε", editor: "Επεξεργαστής", editLineArrowPoints: "", editText: "", github: "Βρήκατε πρόβλημα; Υποβάλετε το", howto: "Ακολουθήστε τους οδηγούς μας", or: "ή", preventBinding: "Αποτροπή δέσμευσης βέλων", tools: "Εργαλεία", shortcuts: "Συντομεύσεις πληκτρολογίου", textFinish: "Ολοκλήρωση επεξεργασίας (επεξεργαστής κειμένου)", textNewLine: "Προσθήκη νέας γραμμής (επεξεργαστής κειμένου)", title: "Βοήθεια", view: "Προβολή", zoomToFit: "Zoom ώστε να χωρέσουν όλα τα στοιχεία", zoomToSelection: "Ζουμ στην επιλογή", toggleElementLock: "Κλείδωμα/Ξεκλείδωμα επιλογής", movePageUpDown: "Μετακίνηση σελίδας πάνω/κάτω", movePageLeftRight: "Μετακίνηση σελίδας αριστερά/δεξιά" }, jR = { title: "Καθαρισμός καμβά" }, TR = { title: "Δημοσίευση βιβλιοθήκης", itemName: "Όνομα αντικειμένου", authorName: "Όνομα δημιουργού", githubUsername: "GitHub username", twitterUsername: "Twitter username", libraryName: "Όνομα βιβλιοθήκης", libraryDesc: "Περιγραφή βιβλιοθήκης", website: "Ιστοσελίδα", placeholder: { authorName: "Όνομα ή όνομα χρήστη", libraryName: "Όνομα της βιβλιοθήκης σας", libraryDesc: "Περιγραφή της βιβλιοθήκης σας ώστε να βοηθήσει το κοινό να κατανοήσει τη χρήση της", githubHandle: "Όνομα χρήστη στο GitHub (προαιρετικό), ώστε να μπορείτε να επεξεργαστείτε τη βιβλιοθήκη αφού υποβληθεί για αξιολόγηση", twitterHandle: "Όνομα χρήστη Twitter (προαιρετικό), ώστε να γνωρίζουμε σε ποιον/η να δώσουμε εύσημα κατά την προώθηση μέσω Twitter", website: "Σύνδεσμος για την προσωπική σας ιστοσελίδα ή αλλού (προαιρετικό)" }, errors: { required: "Απαιτείται", website: "Εισάγετε μια έγκυρη διεύθυνση URL" }, noteDescription: "Υποβάλετε τη βιβλιοθήκη σας για να συμπεριληφθεί στο <link>δημόσιο αποθετήριο βιβλιοθήκης</link>ώστε να χρησιμοποιηθεί από άλλα άτομα στα σχέδιά τους.", noteGuidelines: "Η βιβλιοθήκη πρέπει πρώτα να εγκριθεί χειροκίνητα. Παρακαλώ διαβάστε τους <link>οδηγίες</link> πριν την υποβολή. Θα χρειαστείτε έναν λογαριασμό GitHub για την επικοινωνία και για να προβείτε σε αλλαγές εφ' όσον χρειαστεί, αλλά δεν είναι αυστηρή απαίτηση.", noteLicense: "Με την υποβολή, συμφωνείτε ότι η βιβλιοθήκη θα δημοσιευθεί υπό την <link>Άδεια MIT, </link>που εν συντομία σημαίνει ότι ο καθένας μπορεί να τα χρησιμοποιήσει χωρίς περιορισμούς.", noteItems: "Κάθε αντικείμενο της βιβλιοθήκης πρέπει να έχει το δικό του όνομα ώστε να μπορεί να φιλτραριστεί. Θα συμπεριληφθούν τα ακόλουθα αντικείμενα βιβλιοθήκης:", atleastOneLibItem: "Παρακαλώ επιλέξτε τουλάχιστον ένα αντικείμενο βιβλιοθήκης για να ξεκινήσετε", republishWarning: "Σημείωση: μερικά από τα επιλεγμένα αντικέιμενα έχουν ήδη επισημανθεί ως δημοσιευμένα/υποβεβλημένα. Θα πρέπει να υποβάλετε αντικείμενα εκ νέου μόνο για να ενημερώσετε μία ήδη υπάρχουσα βιβλιοθήκη ή υποβολή." }, zR = { title: "Η βιβλιοθήκη υποβλήθηκε", content: "Ευχαριστούμε {{authorName}}. Η βιβλιοθήκη σας έχει υποβληθεί για αξιολόγηση. Μπορείτε να παρακολουθείτε τη διαδικασία<link>εδώ</link>" }, PR = { resetLibrary: "Καθαρισμός βιβλιοθήκης", removeItemsFromLib: "Αφαίρεση επιλεγμένων αντικειμένων από τη βιβλιοθήκη" }, OR = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, VR = { tooltip: "Τα σχέδιά σου είναι κρυπτογραφημένα από άκρο σε άκρο, έτσι δεν θα είναι ποτέ ορατά μέσα από τους διακομιστές του Excalidraw.", link: "Blog post στην κρυπτογράφηση end-to-end στο Excalidraw" }, XR = { angle: "Γωνία", element: "Στοιχείο", elements: "Στοιχεία", height: "Ύψος", scene: "Σκηνή", selected: "Επιλεγμένα", storage: "Χώρος", title: "Στατιστικά για σπασίκλες", total: "Σύνολο ", version: "Έκδοση", versionCopy: "Κάνε κλικ για αντιγραφή", versionNotAvailable: "Έκδοση μη διαθέσιμη", width: "Πλάτος" }, _R = { addedToLibrary: "Προστέθηκε στη βιβλιοθήκη", copyStyles: "Αντιγράφηκαν στυλ.", copyToClipboard: "Αντιγράφηκε στο πρόχειρο.", copyToClipboardAsPng: `Αντιγράφηκε {{exportSelection}} στο πρόχειρο ως PNG
({{exportColorScheme}})`, fileSaved: "Το αρχείο αποθηκεύτηκε.", fileSavedToFilename: "Αποθηκεύτηκε στο {filename}", canvas: "καμβάς", selection: "επιλογή", pasteAsSingleElement: `Χρησιμοποίησε το {{shortcut}} για να επικολλήσεις ως ένα μόνο στοιχείο,
ή να επικολλήσεις σε έναν υπάρχοντα επεξεργαστή κειμένου`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $R = { transparent: "Διαφανές", black: "Μαύρο", white: "Λευκό", red: "Κόκκινο", pink: "Ροζ", grape: "Σταφυλί", violet: "Βιολετί", gray: "Γκρι", blue: "Μπλε", cyan: "Κυανό", teal: "Τιρκουάζ", green: "Πράσινο", yellow: "Κίτρινο", orange: "Πορτοκαλί", bronze: "Χαλκινο" }, AM = { app: { center_heading: "Όλα τα δεδομένα σας αποθηκεύονται τοπικά στο πρόγραμμα περιήγησης.", center_heading_plus: "Μήπως θέλατε να πάτε στο Excalidraw+;", menuHint: "Εξαγωγή, προτιμήσεις, γλώσσες, ..." }, defaults: { menuHint: "Εξαγωγή, προτιμήσεις και άλλες επιλογές...", center_heading: "Διαγράμματα. Εύκολα. Γρήγορα.", toolbarHint: "Επιλέξτε ένα εργαλείο και ξεκινήστε να σχεδιάζεται!", helpHint: "Συντομεύσεις και βοήθεια" } }, uM = { mostUsedCustomColors: "Πιο χρησιμοποιούμενα χρώματα", colors: "Χρώματα", shades: "Αποχρώσεις", hexCode: "Κωδικός Hex", noShades: "Δεν υπάρχουν διαθέσιμες αποχρώσεις για αυτό το χρώμα" }, eM = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CM = { title: "", button: "", description: "", syntax: "", preview: "" }, GmA = { labels: LR, library: xR, buttons: SR, alerts: NR, errors: RR, toolBar: MR, headings: YR, hints: vR, canvasError: HR, errorSplash: KR, roomDialog: JR, errorDialog: ZR, exportDialog: qR, helpDialog: WR, clearCanvasDialog: jR, publishDialog: TR, publishSuccessDialog: zR, confirmDialog: PR, imageExportDialog: OR, encrypted: VR, stats: XR, toast: _R, colors: $R, welcomeScreen: AM, colorPicker: uM, overwriteConfirm: eM, mermaid: CM };
const fmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NR,
  buttons: SR,
  canvasError: HR,
  clearCanvasDialog: jR,
  colorPicker: uM,
  colors: $R,
  confirmDialog: PR,
  default: GmA,
  encrypted: VR,
  errorDialog: ZR,
  errorSplash: KR,
  errors: RR,
  exportDialog: qR,
  headings: YR,
  helpDialog: WR,
  hints: vR,
  imageExportDialog: OR,
  labels: LR,
  library: xR,
  mermaid: CM,
  overwriteConfirm: eM,
  publishDialog: TR,
  publishSuccessDialog: zR,
  roomDialog: JR,
  stats: XR,
  toast: _R,
  toolBar: MR,
  welcomeScreen: AM
}, Symbol.toStringTag, { value: "Module" })), LmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: Db,
  buttons: db,
  canvasError: kb,
  clearCanvasDialog: xb,
  colorPicker: Zb,
  colors: Kb,
  commandPalette: Pb,
  confirmDialog: Rb,
  default: a9,
  element: Fb,
  elementLink: sb,
  encrypted: Yb,
  errorDialog: Gb,
  errorSplash: yb,
  errors: hb,
  exportDialog: fb,
  fontList: Tb,
  headings: pb,
  helpDialog: Lb,
  hints: mb,
  imageExportDialog: Mb,
  labels: rb,
  library: lb,
  mermaid: Wb,
  overwriteConfirm: qb,
  publishDialog: Sb,
  publishSuccessDialog: Nb,
  quickSearch: jb,
  roomDialog: Ub,
  search: cb,
  shareDialog: bb,
  stats: vb,
  toast: Hb,
  toolBar: wb,
  userList: zb,
  welcomeScreen: Jb
}, Symbol.toStringTag, { value: "Module" }));
var BM = { paste: "Pegar", pasteAsPlaintext: "Pegar como texto sin formato", pasteCharts: "Pegar gráficos", selectAll: "Seleccionar todo", multiSelect: "Añadir elemento a la selección", moveCanvas: "Mover el lienzo", cut: "Cortar", copy: "Copiar", copyAsPng: "Copiar al portapapeles como PNG", copyAsSvg: "Copiar al portapapeles como SVG", copyText: "Copiar al portapapeles como texto", copySource: "Copiar fuente al portapapeles", convertToCode: "Convertir a código", bringForward: "Traer hacia delante", sendToBack: "Enviar al fondo", bringToFront: "Traer al frente", sendBackward: "Enviar atrás", delete: "Borrar", copyStyles: "Copiar estilos", pasteStyles: "Pegar estilos", stroke: "Trazo", background: "Fondo", fill: "Rellenar", strokeWidth: "Grosor del trazo", strokeStyle: "Estilo del trazo", strokeStyle_solid: "Sólido", strokeStyle_dashed: "Discontinua", strokeStyle_dotted: "Punteado", sloppiness: "Estilo de trazo", opacity: "Opacidad", textAlign: "Alineado de texto", edges: "Bordes", sharp: "Afilado", round: "Redondo", arrowheads: "Puntas de flecha", arrowhead_none: "Ninguna", arrowhead_arrow: "Flecha", arrowhead_bar: "Barra", arrowhead_circle: "Círculo", arrowhead_circle_outline: "Círculo (contorno)", arrowhead_triangle: "Triángulo", arrowhead_triangle_outline: "Triángulo (contorno)", arrowhead_diamond: "Diamante", arrowhead_diamond_outline: "Diamante (contorno)", fontSize: "Tamaño de la fuente", fontFamily: "Tipo de fuente", addWatermark: 'Agregar "Hecho con Excalidraw"', handDrawn: "Dibujado a mano", normal: "Normal", code: "Código", small: "Pequeña", medium: "Mediana", large: "Grande", veryLarge: "Muy grande", solid: "Sólido", hachure: "Folleto", zigzag: "Zigzag", crossHatch: "Rayado transversal", thin: "Fino", bold: "Grueso", left: "Izquierda", center: "Centrado", right: "Derecha", extraBold: "Extra negrita", architect: "Arquitecto", artist: "Artista", cartoonist: "Caricatura", fileTitle: "Nombre del archivo", colorPicker: "Selector de color", canvasColors: "Usado en lienzo", canvasBackground: "Fondo del lienzo", drawingCanvas: "Lienzo de dibujo", layers: "Capas", actions: "Acciones", language: "Idioma", liveCollaboration: "Colaboración en directo...", duplicateSelection: "Duplicar", untitled: "Sin título", name: "Nombre", yourName: "Tu nombre", madeWithExcalidraw: "Hecho con Excalidraw", group: "Agrupar selección", ungroup: "Desagrupar selección", collaborators: "Colaboradores", showGrid: "Mostrar cuadrícula", addToLibrary: "Añadir a la biblioteca", removeFromLibrary: "Eliminar de la biblioteca", libraryLoadingMessage: "Cargando biblioteca…", libraries: "Explorar bibliotecas", loadingScene: "Cargando escena…", align: "Alinear", alignTop: "Alineación superior", alignBottom: "Alineación inferior", alignLeft: "Alinear a la izquierda", alignRight: "Alinear a la derecha", centerVertically: "Centrar verticalmente", centerHorizontally: "Centrar horizontalmente", distributeHorizontally: "Distribuir horizontalmente", distributeVertically: "Distribuir verticalmente", flipHorizontal: "Girar horizontalmente", flipVertical: "Girar verticalmente", viewMode: "Modo presentación", share: "Compartir", showStroke: "Mostrar selector de color de trazo", showBackground: "Mostrar el selector de color de fondo", toggleTheme: "Cambiar tema", personalLib: "Biblioteca personal", excalidrawLib: "Biblioteca Excalidraw", decreaseFontSize: "Disminuir tamaño de letra", increaseFontSize: "Aumentar el tamaño de letra", unbindText: "Desvincular texto", bindText: "Vincular texto al contenedor", createContainerFromText: "Envolver el texto en un contenedor", link: { edit: "Editar enlace", editEmbed: "Editar enlace e incrustar", create: "Crear enlace", createEmbed: "Crear enlace e incrustar", label: "Enlace", labelEmbed: "Enlazar e incrustar", empty: "No se ha establecido un enlace" }, lineEditor: { edit: "Editar línea", exit: "Salir del editor en línea" }, elementLock: { lock: "Bloquear", unlock: "Desbloquear", lockAll: "Bloquear todo", unlockAll: "Desbloquear todo" }, statusPublished: "Publicado", sidebarLock: "Mantener barra lateral abierta", selectAllElementsInFrame: "Seleccionar todos los elementos en el marco", removeAllElementsFromFrame: "Eliminar todos los elementos del marco", eyeDropper: "Seleccionar un color del lienzo", textToDiagram: "Texto a diagrama", prompt: "Sugerencia" }, gM = { noItems: "No hay elementos añadidos todavía...", hint_emptyLibrary: "Seleccione un elemento en el lienzo para añadirlo aquí, o instale una biblioteca del repositorio público, a continuación.", hint_emptyPrivateLibrary: "Seleccione un elemento del lienzo para añadirlo aquí." }, tM = { clearReset: "Limpiar lienzo y reiniciar el color de fondo", exportJSON: "Exportar a archivo", exportImage: "Exportar imagen...", export: "Guardar en...", copyToClipboard: "Copiar al portapapeles", save: "Guardar en archivo actual", saveAs: "Guardar como", load: "Abrir", getShareableLink: "Obtener enlace para compartir", close: "Cerrar", selectLanguage: "Elegir idioma", scrollBackToContent: "Volver al contenido", zoomIn: "Acercarse", zoomOut: "Alejarse", resetZoom: "Restablecer zoom", menu: "Menú", done: "Hecho", edit: "Editar", undo: "Deshacer", redo: "Rehacer", resetLibrary: "Reiniciar biblioteca", createNewRoom: "Crear nueva sala", fullScreen: "Pantalla completa", darkMode: "Modo oscuro", lightMode: "Modo claro", zenMode: "Modo Zen", objectsSnapMode: "Ajustar a los objetos", exitZenMode: "Salir del modo Zen", cancel: "Cancelar", clear: "Borrar", remove: "Eliminar", embed: "", publishLibrary: "Publicar", submit: "Enviar", confirm: "Confirmar", embeddableInteractionButton: "Pulsa para interactuar" }, iM = { clearReset: "Esto limpiará todo el lienzo. Estás seguro?", couldNotCreateShareableLink: "No se pudo crear un enlace para compartir.", couldNotCreateShareableLinkTooBig: "No se pudo crear el enlace para compartir: la escena es demasiado grande", couldNotLoadInvalidFile: "No se pudo cargar el archivo no válido", importBackendFailed: "La importación falló.", cannotExportEmptyCanvas: "No se puede exportar un lienzo vació", couldNotCopyToClipboard: "No se pudo copiar al portapapeles.", decryptFailed: "No se pudieron descifrar los datos.", uploadedSecurly: "La carga ha sido asegurada con cifrado de principio a fin, lo que significa que el servidor de Excalidraw y terceros no pueden leer el contenido.", loadSceneOverridePrompt: "Si carga este dibujo externo, reemplazará el que tiene. ¿Desea continuar?", collabStopOverridePrompt: `Detener la sesión sobrescribirá su dibujo anterior almacenado localmente. ¿Está seguro?

(Si desea mantener su dibujo local, simplemente cierre la pestaña del navegador.)`, errorAddingToLibrary: "No se pudo agregar el elemento a la biblioteca", errorRemovingFromLibrary: "No se pudo quitar el elemento de la biblioteca", confirmAddLibrary: "Esto añadirá {{numShapes}} forma(s) a tu biblioteca. ¿Estás seguro?", imageDoesNotContainScene: "Esta imagen no parece contener datos de escena. ¿Ha habilitado la inserción de la escena durante la exportación?", cannotRestoreFromImage: "No se pudo restaurar la escena desde este archivo de imagen", invalidSceneUrl: "No se ha podido importar la escena desde la URL proporcionada. Está mal formada, o no contiene datos de Excalidraw JSON válidos.", resetLibrary: "Esto borrará tu biblioteca. ¿Estás seguro?", removeItemsFromsLibrary: "¿Eliminar {{count}} elemento(s) de la biblioteca?", invalidEncryptionKey: "La clave de cifrado debe tener 22 caracteres. La colaboración en vivo está deshabilitada.", collabOfflineWarning: `No hay conexión a internet disponible.
¡No se guardarán los cambios!` }, EM = { unsupportedFileType: "Tipo de archivo no admitido.", imageInsertError: "No se pudo insertar la imagen. Inténtelo de nuevo más tarde...", fileTooBig: "Archivo demasiado grande. El tamaño máximo permitido es {{maxSize}}.", svgImageInsertError: "No se pudo insertar la imagen SVG. El código SVG parece inválido.", failedToFetchImage: "Error al obtener la imagen.", invalidSVGString: "SVG no válido.", cannotResolveCollabServer: "No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.", importLibraryError: "No se pudo cargar la librería", collabSaveFailed: "No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.", collabSaveFailed_sizeExceeded: "No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo.", imageToolNotSupported: "", brave_measure_text_error: { line1: "Parece que estás usando el navegador Brave con el ajuste <bold>Forzar el bloqueo de huellas digitales</bold> habilitado.", line2: "Esto podría resultar en errores en los <bold>Elementos de Texto</bold> en tus dibujos.", line3: "Recomendamos fuertemente deshabilitar esta configuración. Puedes seguir <link>estos pasos</link> sobre cómo hacerlo.", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "Los elementos IFrame no se pueden agregar a la biblioteca.", image: "" }, asyncPasteFailedOnRead: "No se pudo pegar (no se pudo leer desde el portapapeles del sistema).", asyncPasteFailedOnParse: "No se pudo pegar.", copyToSystemClipboardFailed: "No se pudo copiar al portapapeles." }, aM = { selection: "Selección", image: "Insertar imagen", rectangle: "Rectángulo", diamond: "Diamante", ellipse: "Elipse", arrow: "Flecha", line: "Línea", freedraw: "Dibujar", text: "Texto", library: "Biblioteca", lock: "Mantener la herramienta seleccionada activa después de dibujar", penMode: "Modo Lápiz - previene toque", link: "Añadir/Actualizar enlace para una forma seleccionada", eraser: "Borrar", frame: "", magicframe: "Esquema a código", embeddable: "Incrustar Web", laser: "Puntero láser", hand: "Mano (herramienta de panoramización)", extraTools: "Más herramientas", mermaidToExcalidraw: "Mermaid a Excalidraw", magicSettings: "Ajustes AI" }, IM = { canvasActions: "Acciones del lienzo", selectedShapeActions: "Acciones de la forma seleccionada", shapes: "Formas" }, oM = { canvasPanning: "Para mover el lienzo, mantenga la rueda del ratón o la barra espaciadora mientras arrastra o utilice la herramienta de mano", linearElement: "Haz clic para dibujar múltiples puntos, arrastrar para solo una línea", freeDraw: "Haz clic y arrastra, suelta al terminar", text: "Consejo: también puedes añadir texto haciendo doble clic en cualquier lugar con la herramienta de selección", embeddable: "Haga clic y arrastre para crear un sitio web incrustado", text_selected: "Doble clic o pulse ENTER para editar el texto", text_editing: "Pulse Escape o Ctrl/Cmd + ENTER para terminar de editar", linearElementMulti: "Haz clic en el último punto o presiona Escape o Enter para finalizar", lockAngle: "Puedes restringir el ángulo manteniendo presionado el botón SHIFT", resize: `Para mantener las proporciones mantén SHIFT presionado mientras modificas el tamaño, 
mantén presionado ALT para modificar el tamaño desde el centro`, resizeImage: `Puede redimensionar libremente pulsando SHIFT,
pulse ALT para redimensionar desde el centro`, rotate: "Puedes restringir los ángulos manteniendo presionado SHIFT mientras giras", lineEditor_info: "Mantenga pulsado CtrlOrCmd y haga doble click o presione CtrlOrCmd + Enter para editar puntos", lineEditor_pointSelected: "Presione Suprimir para eliminar el/los punto(s), CtrlOrCmd+D para duplicarlo, o arrástrelo para moverlo", lineEditor_nothingSelected: `Seleccione un punto a editar (mantenga MAYÚSCULAS para seleccionar múltiples),
o mantenga pulsado Alt y haga click para añadir nuevos puntos`, placeImage: "Haga clic para colocar la imagen o haga click y arrastre para establecer su tamaño manualmente", publishLibrary: "Publica tu propia biblioteca", bindTextToElement: "Presione Entrar para agregar", deepBoxSelect: "Mantén CtrlOrCmd para seleccionar en profundidad, y para evitar arrastrar", eraserRevert: "Mantenga pulsado Alt para revertir los elementos marcados para su eliminación", firefox_clipboard_write: 'Esta característica puede ser habilitada estableciendo la bandera "dom.events.asyncClipboard.clipboardItem" a "true". Para cambiar las banderas del navegador en Firefox, visite la página "about:config".', disableSnapping: "Mantén pulsado CtrlOrCmd para desactivar el ajuste" }, QM = { cannotShowPreview: "No se puede mostrar la vista previa", canvasTooBig: "El lienzo podría ser demasiado grande.", canvasTooBigTip: "Sugerencia: intenta acercar un poco más los elementos más lejanos." }, nM = { headingMain: "Se encontró un error. Intente <button>recargando la página.</button>", clearCanvasMessage: "Si la recarga no funciona, intente <button>limpiando el lienzo.</button>", clearCanvasCaveat: " Esto provocará la pérdida de su trabajo ", trackedToSentry: "El error con el identificador {{eventId}} fue rastreado en nuestro sistema.", openIssueMessage: "Fuimos muy cautelosos de no incluir la información de tu escena en el error. Si tu escena no es privada, por favor considera seguir nuestro <button>rastreador de errores.</button> Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.", sceneContent: "Contenido de la escena:" }, rM = { desc_intro: "Puede invitar a otras personas a tu actual escena para que colaboren contigo.", desc_privacy: "No te preocupes, la sesión usa encriptación de punta a punta, por lo que todo lo que se dibuje se mantendrá privadamente. Ni siquiera nuestro servidor podrá ver lo que haces.", button_startSession: "Iniciar sesión", button_stopSession: "Detener sesión", desc_inProgressIntro: "La sesión de colaboración en vivo está ahora en progreso.", desc_shareLink: "Comparte este enlace con cualquier persona con quien quieras colaborar:", desc_exitSession: "Detener la sesión te desconectará de la sala, pero podrás seguir trabajando con la escena en su computadora, esto es de modo local. Ten en cuenta que esto no afectará a otras personas, y que las mismas seguirán siendo capaces de colaborar en tu escena.", shareTitle: "Únase a una sesión colaborativa en vivo en Excalidraw" }, sM = { title: "Error" }, lM = { disk_title: "Guardar en disco", disk_details: "Exportar los datos de la escena a un archivo desde el cual pueda importar más tarde.", disk_button: "Guardar en archivo", link_title: "Enlace para compartir", link_details: "Exportar como enlace de sólo lectura.", link_button: "Exportar a Link", excalidrawplus_description: "Guarde la escena en su espacio de trabajo de Excalidraw+.", excalidrawplus_button: "Exportar", excalidrawplus_exportError: "No se pudo exportar a Excalidraw+ en este momento..." }, cM = { blog: "Lea nuestro blog", click: "click", deepSelect: "Selección profunda", deepBoxSelect: "Seleccione en profundidad dentro de la caja, y evite arrastrar", curvedArrow: "Flecha curva", curvedLine: "Línea curva", documentation: "Documentación", doubleClick: "doble clic", drag: "arrastrar", editor: "Editor", editLineArrowPoints: "Editar puntos de línea/flecha", editText: "Editar texto / añadir etiqueta", github: "¿Ha encontrado un problema? Envíelo", howto: "Siga nuestras guías", or: "o", preventBinding: "Evitar enlace de flechas", tools: "Herramientas", shortcuts: "Atajos del teclado", textFinish: "Finalizar edición (editor de texto)", textNewLine: "Añadir nueva linea (editor de texto)", title: "Ayuda", view: "Vista", zoomToFit: "Ajustar la vista para mostrar todos los elementos", zoomToSelection: "Ampliar selección", toggleElementLock: "Bloquear/desbloquear selección", movePageUpDown: "Mover página hacia arriba/abajo", movePageLeftRight: "Mover página hacia la izquierda/derecha" }, dM = { title: "Borrar lienzo" }, DM = { title: "Publicar biblioteca", itemName: "Nombre del artículo", authorName: "Nombre del autor", githubUsername: "Nombre de usuario de GitHub", twitterUsername: "Nombre de usuario de Twitter", libraryName: "Nombre de la biblioteca", libraryDesc: "Descripción de la biblioteca", website: "Sitio Web", placeholder: { authorName: "Nombre o nombre de usuario", libraryName: "Nombre de tu biblioteca", libraryDesc: "Descripción de su biblioteca para ayudar a la gente a entender su uso", githubHandle: "Nombre de usuario de GitHub (opcional), así podrá editar la biblioteca una vez enviada para su revisión", twitterHandle: "Nombre de usuario de Twitter (opcional), así sabemos a quién acreditar cuando se promociona en Twitter", website: "Enlace a su sitio web personal o en cualquier otro lugar (opcional)" }, errors: { required: "Requerido", website: "Introduce una URL válida" }, noteDescription: "Envía tu biblioteca para ser incluida en el <link>repositorio de librería pública</link>para que otras personas utilicen en sus dibujos.", noteGuidelines: "La biblioteca debe ser aprobada manualmente primero. Por favor, lea la <link>pautas</link> antes de enviar. Necesitará una cuenta de GitHub para comunicarse y hacer cambios si se solicita, pero no es estrictamente necesario.", noteLicense: "Al enviar, usted acepta que la biblioteca se publicará bajo el <link>Licencia MIT </link>que en breve significa que cualquiera puede utilizarlos sin restricciones.", noteItems: "Cada elemento de la biblioteca debe tener su propio nombre para que sea filtrable. Los siguientes elementos de la biblioteca serán incluidos:", atleastOneLibItem: "Por favor, seleccione al menos un elemento de la biblioteca para empezar", republishWarning: "Nota: algunos de los elementos seleccionados están marcados como ya publicados/enviados. Sólo debería volver a enviar elementos cuando se actualice una biblioteca o envío." }, hM = { title: "Biblioteca enviada", content: "Gracias {{authorName}}. Su biblioteca ha sido enviada para ser revisada. Puede seguir el estado<link>aquí</link>" }, wM = { resetLibrary: "Reiniciar biblioteca", removeItemsFromLib: "Eliminar elementos seleccionados de la biblioteca" }, FM = { header: "Exportar imagen", label: { withBackground: "Fondo", onlySelected: "Sólo seleccionados", darkMode: "Modo oscuro", embedScene: "Incrustar escena", scale: "Escalar", padding: "Espaciado" }, tooltip: { embedScene: "" }, title: { exportToPng: "Exportar a PNG", exportToSvg: "Exportar a SVG", copyPngToClipboard: "Copiar PNG al portapapeles" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copiar al portapapeles" } }, pM = { tooltip: "Tus dibujos están cifrados de punto a punto, por lo que los servidores de Excalidraw nunca los verán.", link: "Entrada en el blog sobre cifrado de extremo a extremo" }, mM = { angle: "Ángulo", element: "Elemento", elements: "Elementos", height: "Alto", scene: "Escena", selected: "Seleccionado", storage: "Almacenamiento", title: "Estadísticas para nerds", total: "Total", version: "Versión", versionCopy: "Click para copiar", versionNotAvailable: "Versión no disponible", width: "Ancho" }, kM = { addedToLibrary: "Añadido a la biblioteca", copyStyles: "Estilos copiados.", copyToClipboard: "Copiado en el portapapeles.", copyToClipboardAsPng: `Copiado {{exportSelection}} al portapapeles como PNG
({{exportColorScheme}})`, fileSaved: "Archivo guardado.", fileSavedToFilename: "Guardado en {filename}", canvas: "lienzo", selection: "selección", pasteAsSingleElement: `Usa {{shortcut}} para pegar como un solo elemento,
o pegar en un editor de texto existente`, unableToEmbed: "", unrecognizedLinkFormat: "" }, yM = { transparent: "Transparente", black: "Negro", white: "Blanco", red: "Rojo", pink: "Rosa", grape: "Uva", violet: "Violeta", gray: "Gris", blue: "Azul", cyan: "Cian", teal: "Turquesa", green: "Verde", yellow: "Amarillo", orange: "Naranja", bronze: "Bronce" }, bM = { app: { center_heading: "Toda su información es guardada localmente en su navegador.", center_heading_plus: "¿Quieres ir a Excalidraw+?", menuHint: "Exportar, preferencias, idiomas, ..." }, defaults: { menuHint: "Exportar, preferencias y más...", center_heading: "Diagramas. Hecho. Simplemente.", toolbarHint: "¡Elige una herramienta y empieza a dibujar!", helpHint: "Atajos y ayuda" } }, UM = { mostUsedCustomColors: "Colores personalizados más utilizados", colors: "Colores", shades: "", hexCode: "Código Hexadecimal", noShades: "" }, GM = { action: { exportToImage: { title: "Exportar como imagen", button: "Exportar como imagen", description: "" }, saveToDisk: { title: "Guardar en el disco", button: "Guardar en el disco", description: "Exporta los datos de la escena a un archivo desde el cual podrás importar más tarde." }, excalidrawPlus: { title: "", button: "Exportar a Excalidraw+", description: "" } }, modal: { loadFromFile: { title: "Cargar desde un archivo", button: "Cargar desde un archivo", description: "" }, shareableLink: { title: "Cargar desde un enlace", button: "Reemplazar mi contenido", description: "Cargar un dibujo externo <bold>reemplazará tu contenido existente</bold>.<br></br>Puedes primero hacer una copia de seguridad de tu dibujo usando una de las opciones de abajo." } } }, fM = { title: "Mermaid a Excalidraw", button: "Insertar", description: "Actualmente sólo <flowchartLink>Flowchart</flowchartLink>,<sequenceLink> Secuencia, </sequenceLink> y <classLink>Class </classLink>Diagramas son soportados. Los otros tipos se renderizarán como imagen en Excalidraw.", syntax: "Sintaxis Mermaid", preview: "Vista previa" }, xmA = { labels: BM, library: gM, buttons: tM, alerts: iM, errors: EM, toolBar: aM, headings: IM, hints: oM, canvasError: QM, errorSplash: nM, roomDialog: rM, errorDialog: sM, exportDialog: lM, helpDialog: cM, clearCanvasDialog: dM, publishDialog: DM, publishSuccessDialog: hM, confirmDialog: wM, imageExportDialog: FM, encrypted: pM, stats: mM, toast: kM, colors: yM, welcomeScreen: bM, colorPicker: UM, overwriteConfirm: GM, mermaid: fM };
const SmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iM,
  buttons: tM,
  canvasError: QM,
  clearCanvasDialog: dM,
  colorPicker: UM,
  colors: yM,
  confirmDialog: wM,
  default: xmA,
  encrypted: pM,
  errorDialog: sM,
  errorSplash: nM,
  errors: EM,
  exportDialog: lM,
  headings: IM,
  helpDialog: cM,
  hints: oM,
  imageExportDialog: FM,
  labels: BM,
  library: gM,
  mermaid: fM,
  overwriteConfirm: GM,
  publishDialog: DM,
  publishSuccessDialog: hM,
  roomDialog: rM,
  stats: mM,
  toast: kM,
  toolBar: aM,
  welcomeScreen: bM
}, Symbol.toStringTag, { value: "Module" }));
var LM = { paste: "Itsatsi", pasteAsPlaintext: "Itsatsi testu arrunt gisa", pasteCharts: "Itsatsi grafikoak", selectAll: "Hautatu dena", multiSelect: "Gehitu elementua hautapenera", moveCanvas: "Mugitu oihala", cut: "Ebaki", copy: "Kopiatu", copyAsPng: "Kopiatu arbelera PNG gisa", copyAsSvg: "Kopiatu arbelera SVG gisa", copyText: "Kopiatu arbelera testu gisa", copySource: "Kopiatu iturria arbelean", convertToCode: "Bihurtu kodea", bringForward: "Ekarri aurrerago", sendToBack: "Eraman atzera", bringToFront: "Ekarri aurrera", sendBackward: "Eraman atzerago", delete: "Ezabatu", copyStyles: "Kopiatu estiloak", pasteStyles: "Itsatsi estiloak", stroke: "Marra", background: "Atzeko planoa", fill: "Bete", strokeWidth: "Marraren zabalera", strokeStyle: "Marraren estiloa", strokeStyle_solid: "Solidoa", strokeStyle_dashed: "Marratua", strokeStyle_dotted: "Puntukatua", sloppiness: "Marraren trazoa", opacity: "Opakotasuna", textAlign: "Testuaren lerrokapena", edges: "Ertzak", sharp: "Ertz bizia", round: "Borobildua", arrowheads: "Gezi-puntak", arrowhead_none: "Bat ere ez", arrowhead_arrow: "Gezia", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Hirukia", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Letra-tamaina", fontFamily: "Letra-tipoa", addWatermark: 'Gehitu "Excalidraw bidez egina"', handDrawn: "Eskuz marraztua", normal: "Normala", code: "Kodea", small: "Txikia", medium: "Ertaina", large: "Handia", veryLarge: "Oso handia", solid: "Solidoa", hachure: "Itzalduna", zigzag: "Sigi-saga", crossHatch: "Marraduna", thin: "Mehea", bold: "Lodia", left: "Ezkerrean", center: "Erdian", right: "Eskuinean", extraBold: "Oso lodia", architect: "Arkitektoa", artist: "Artista", cartoonist: "Marrazkilaria", fileTitle: "Fitxategi izena", colorPicker: "Kolore-hautatzailea", canvasColors: "Oihalean erabilita", canvasBackground: "Oihalaren atzeko planoa", drawingCanvas: "Marrazteko oihala", layers: "Geruzak", actions: "Ekintzak", language: "Hizkuntza", liveCollaboration: "Zuzeneko elkarlana...", duplicateSelection: "Bikoiztu", untitled: "Izengabea", name: "Izena", yourName: "Zure izena", madeWithExcalidraw: "Excalidraw bidez egina", group: "Hautapena taldea bihurtu", ungroup: "Desegin hautapenaren taldea", collaborators: "Kolaboratzaileak", showGrid: "Erakutsi sareta", addToLibrary: "Gehitu liburutegira", removeFromLibrary: "Kendu liburutegitik", libraryLoadingMessage: "Liburutegia kargatzen…", libraries: "Arakatu liburutegiak", loadingScene: "Eszena kargatzen…", align: "Lerrokatu", alignTop: "Lerrokatu goian", alignBottom: "Lerrokatu behean", alignLeft: "Lerrokatu ezkerrean", alignRight: "Lerrokatu eskuinean", centerVertically: "Erdiratu bertikalki", centerHorizontally: "Erdiratu horizontalki", distributeHorizontally: "Banandu horizontalki", distributeVertically: "Banandu bertikalki", flipHorizontal: "Irauli horizontalki", flipVertical: "Irauli bertikalki", viewMode: "Ikuspegia", share: "Partekatu", showStroke: "Erakutsi marraren kolore-hautatzailea", showBackground: "Erakutsi atzeko planoaren kolore-hautatzailea", toggleTheme: "Aldatu gaia", personalLib: "Liburutegi pertsonala", excalidrawLib: "Excalidraw liburutegia", decreaseFontSize: "Txikitu letra tamaina", increaseFontSize: "Handitu letra tamaina", unbindText: "Askatu testua", bindText: "Lotu testua edukiontziari", createContainerFromText: "Bilatu testua edukiontzi batean", link: { edit: "Editatu esteka", editEmbed: "Editatu esteka eta kapsulatu", create: "Sortu esteka", createEmbed: "Sortu esteka eta kapsulatu", label: "Esteka", labelEmbed: "Esteka eta kapsula", empty: "Ez da estekarik ezarri" }, lineEditor: { edit: "Editatu lerroa", exit: "Irten lerro-editoretik" }, elementLock: { lock: "Blokeatu", unlock: "Desblokeatu", lockAll: "Blokeatu guztiak", unlockAll: "Desblokeatu guztiak" }, statusPublished: "Argitaratua", sidebarLock: "Mantendu alboko barra irekita", selectAllElementsInFrame: "Hautatu markoko elementu guztiak", removeAllElementsFromFrame: "Kendu markoko elementu guztiak", eyeDropper: "Aukeratu kolorea oihaletik", textToDiagram: "Testutik diagramara", prompt: "" }, xM = { noItems: "Oraindik ez da elementurik gehitu...", hint_emptyLibrary: "Hautatu oihaleko elementu bat hemen gehitzeko, edo instalatu liburutegi bat beheko biltegi publikotik.", hint_emptyPrivateLibrary: "Hautatu oihaleko elementu bat hemen gehitzeko." }, SM = { clearReset: "Garbitu oihala", exportJSON: "Esportatu fitxategira", exportImage: "Esportatu irudia...", export: "Gorde hemen...", copyToClipboard: "Kopiatu arbelera", save: "Gorde uneko fitxategian", saveAs: "Gorde honela", load: "Ireki", getShareableLink: "Lortu partekatzeko esteka", close: "Itxi", selectLanguage: "Hautatu hizkuntza", scrollBackToContent: "Joan atzera edukira", zoomIn: "Handiagotu", zoomOut: "Txikiagotu", resetZoom: "Leheneratu zooma", menu: "Menua", done: "Egina", edit: "Editatu", undo: "Desegin", redo: "Berregin", resetLibrary: "Leheneratu liburutegia", createNewRoom: "Sortu gela berria", fullScreen: "Pantaila osoa", darkMode: "Modu iluna", lightMode: "Modu argia", zenMode: "Zen modua", objectsSnapMode: "Atxiki objektuei", exitZenMode: "Irten Zen modutik", cancel: "Utzi", clear: "Garbitu", remove: "Kendu", embed: "Aldatu kapsulatzea", publishLibrary: "Argitaratu", submit: "Bidali", confirm: "Bai", embeddableInteractionButton: "Egin klik elkar eragiteko" }, NM = { clearReset: "Honek oihal osoa garbituko du. Ziur zaude?", couldNotCreateShareableLink: "Ezin izan da partekatzeko estekarik sortu.", couldNotCreateShareableLinkTooBig: "Ezin izan da partekatzeko estekarik sortu: eszena handiegia da", couldNotLoadInvalidFile: "Ezin izan da kargatu, fitxategiak ez du balio", importBackendFailed: "Inportazioak huts egin du.", cannotExportEmptyCanvas: "Ezin izan da oihal hutsa esportatu.", couldNotCopyToClipboard: "Ezin izan da arbelean kopiatu.", decryptFailed: "Ezin izan da deszifratu.", uploadedSecurly: "Kargatzea muturretik muturrerako zifratze bidez ziurtatu da, hau da, Excalidraw zerbitzariak eta hirugarrenek ezin dutela edukia irakurri.", loadSceneOverridePrompt: "Kanpoko marrazkia kargatzeak lehendik duzun edukia ordezkatuko du. Jarraitu nahi duzu?", collabStopOverridePrompt: `Saioa gelditzeak lokalean gordetako zure aurreko marrazkia gainidatziko du. Ziur zaude?

(Zure marrazki lokala mantendu nahi baduzu, itxi arakatzailearen fitxa.)`, errorAddingToLibrary: "Ezin izan da elementua liburutegian gehitu", errorRemovingFromLibrary: "Ezin izan da elementua liburutegitik kendu", confirmAddLibrary: "Honek {{numShapes}} forma gehituko ditu zure liburutegian. Ziur zaude?", imageDoesNotContainScene: "Irudi honek ez dirudi eszena daturik duenik. Eszena kapsulatzea gaitu al duzu esportazioan?", cannotRestoreFromImage: "Ezin izan da eszena leheneratu irudi fitxategi honetatik", invalidSceneUrl: "Ezin izan da eszena inportatu emandako URLtik. Gaizki eratuta dago edo ez du baliozko Excalidraw JSON daturik.", resetLibrary: "Honek zure liburutegia garbituko du. Ziur zaude?", removeItemsFromsLibrary: "Liburutegitik {{count}} elementu ezabatu?", invalidEncryptionKey: "Enkriptazio-gakoak 22 karaktere izan behar ditu. Zuzeneko lankidetza desgaituta dago.", collabOfflineWarning: `Ez dago Interneteko konexiorik.
Zure aldaketak ez dira gordeko!` }, RM = { unsupportedFileType: "Onartu gabeko fitxategi mota.", imageInsertError: "Ezin izan da irudia txertatu. Saiatu berriro geroago...", fileTooBig: "Fitxategia handiegia da. Onartutako gehienezko tamaina {{maxSize}} da.", svgImageInsertError: "Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.", failedToFetchImage: "Ezin izan da irudia eskuratu.", invalidSVGString: "SVG baliogabea.", cannotResolveCollabServer: "Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.", importLibraryError: "Ezin izan da liburutegia kargatu", collabSaveFailed: "Ezin izan da backend datu-basean gorde. Arazoak jarraitzen badu, zure fitxategia lokalean gorde beharko zenuke zure lana ez duzula galtzen ziurtatzeko.", collabSaveFailed_sizeExceeded: "Ezin izan da backend datu-basean gorde, ohiala handiegia dela dirudi. Fitxategia lokalean gorde beharko zenuke zure lana galtzen ez duzula ziurtatzeko.", imageToolNotSupported: "Irudiak desgaituta daude.", brave_measure_text_error: { line1: "Brave arakatzailea erabiltzen ari zarela dirudi <bold>Blokeatu hatz-markak erasokorki</bold> ezarpena gaituta.", line2: "Honek zure marrazkietako <bold>Testu-elementuak</bold> hautsi ditzake.", line3: "Ezarpen hau desgaitzea gomendatzen dugu. <link>urrats hauek</link> jarrai ditzakezu hori nola egin jakiteko.", line4: "Ezarpen hau desgaituz gero, testu-elementuen bistaratzea konpontzen ez bada, ireki <issueLink>arazo</issueLink> gure GitHub-en edo idatzi iezaguzu <discordLink>Discord</discordLink> helbidera" }, libraryElementTypeError: { embeddable: "Kapsulatutako elementuak ezin dira liburutegira gehitu.", iframe: "IFrame elementuak ezin dira liburutegira gehitu.", image: "Laster egongo da irudiak liburutegian gehitzeko laguntza!" }, asyncPasteFailedOnRead: "Ezin izan da itsatsi (ezin izan da sistemaren arbeletik irakurri).", asyncPasteFailedOnParse: "Ezin izan da itsatsi.", copyToSystemClipboardFailed: "Ezin izan da arbelean kopiatu." }, MM = { selection: "Hautapena", image: "Txertatu irudia", rectangle: "Laukizuzena", diamond: "Diamantea", ellipse: "Elipsea", arrow: "Gezia", line: "Lerroa", freedraw: "Marraztu", text: "Testua", library: "Liburutegia", lock: "Mantendu aktibo hautatutako tresna marraztu ondoren", penMode: "Luma modua - ukipena saihestu", link: "Gehitu / Eguneratu esteka hautatutako forma baterako", eraser: "Borragoma", frame: "Marko tresna", magicframe: "Wireframe kodetzeko", embeddable: "Web kapsulatzea", laser: "Laser punteroa", hand: "Eskua (panoratze tresna)", extraTools: "Tresna gehiago", mermaidToExcalidraw: "", magicSettings: "AI ezarpenak" }, YM = { canvasActions: "Canvas ekintzak", selectedShapeActions: "Hautatutako formaren ekintzak", shapes: "Formak" }, vM = { canvasPanning: "Oihala mugitzeko, eutsi saguaren gurpila edo zuriune-barra arrastatzean, edo erabili esku tresna", linearElement: "Egin klik hainbat puntu hasteko, arrastatu lerro bakarrerako", freeDraw: "Egin klik eta arrastatu, askatu amaitutakoan", text: "Aholkua: testua gehitu dezakezu edozein lekutan klik bikoitza eginez hautapen tresnarekin", embeddable: "Egin klik eta arrastatu webgunea kapsulatzeko", text_selected: "Egin klik bikoitza edo sakatu SARTU testua editatzeko", text_editing: "Sakatu Esc edo Ctrl+SARTU editatzen amaitzeko", linearElementMulti: "Egin klik azken puntuan edo sakatu Esc edo Sartu amaitzeko", lockAngle: "SHIFT sakatuta angelua mantendu dezakezu", resize: `Proportzioak mantendu ditzakezu SHIFT sakatuta tamaina aldatzen duzun bitartean.
sakatu ALT erditik tamaina aldatzeko`, resizeImage: `Tamaina libreki alda dezakezu SHIFT sakatuta,
sakatu ALT erditik tamaina aldatzeko`, rotate: "Angeluak mantendu ditzakezu SHIFT sakatuta biratzen duzun bitartean", lineEditor_info: "Eutsi sakatuta Ctrl edo Cmd eta egin klik bikoitza edo sakatu Ctrl edo Cmd + Sartu puntuak editatzeko", lineEditor_pointSelected: `Sakatu Ezabatu puntuak kentzeko,
Ktrl+D bikoizteko, edo arrastatu mugitzeko`, lineEditor_nothingSelected: `Hautatu editatzeko puntu bat (SHIFT sakatuta anitz hautatzeko),
edo eduki Alt sakatuta eta egin klik puntu berriak gehitzeko`, placeImage: "Egin klik irudia kokatzeko, edo egin klik eta arrastatu bere tamaina eskuz ezartzeko", publishLibrary: "Argitaratu zure liburutegia", bindTextToElement: "Sakatu Sartu testua gehitzeko", deepBoxSelect: "Eutsi Ctrl edo Cmd sakatuta aukeraketa sakona egiteko eta arrastatzea saihesteko", eraserRevert: "Eduki Alt sakatuta ezabatzeko markatutako elementuak leheneratzeko", firefox_clipboard_write: 'Ezaugarri hau "dom.events.asyncClipboard.clipboardItem" marka "true" gisa ezarrita gaitu daiteke. Firefox-en arakatzailearen banderak aldatzeko, bisitatu "about:config" orrialdera.', disableSnapping: "Eduki sakatuta Ctrl edo Cmd tekla atxikipena desgaitzeko" }, HM = { cannotShowPreview: "Ezin da oihala aurreikusi", canvasTooBig: "Agian oihala handiegia da.", canvasTooBigTip: "Aholkua: saiatu urrunen dauden elementuak pixka bat hurbiltzen." }, KM = { headingMain: "Errore bat aurkitu da. Saiatu <button>orria birkargatzen.</button>", clearCanvasMessage: "Birkargatzea ez bada burutzen, saiatu <button>oihala garbitzen.</button>", clearCanvasCaveat: " Honen ondorioz lana galduko da ", trackedToSentry: "Identifikatzailearen errorea {{eventId}} gure sistemak behatu du.", openIssueMessage: "Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure <button>erroreen jarraipena egitea.</button> Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.", sceneContent: "Eszenaren edukia:" }, JM = { desc_intro: "Jendea zure uneko eszenara gonbida dezakezu zurekin elkarlanean aritzeko.", desc_privacy: "Ez kezkatu, saioak muturretik muturrerako enkriptatzea erabiltzen du, beraz, marrazten duzuna pribatua izango da. Gure zerbitzariak ere ezingo du ikusi zer egiten duzun.", button_startSession: "Hasi saioa", button_stopSession: "Itxi saioa", desc_inProgressIntro: "Zuzeneko lankidetza saioa abian da.", desc_shareLink: "Partekatu esteka hau elkarlanean aritu nahi duzun edonorekin:", desc_exitSession: "Saioa ixteak aretotik deskonektatuko zaitu, baina eszenarekin lanean jarraitu ahal izango duzu lokalean. Kontuan izan honek ez diela beste pertsonei eragingo, eta euren bertsioan elkarlanean aritu ahal izango dira.", shareTitle: "Sartu Excalidraw-en zuzeneko lankidetza-saio batean" }, ZM = { title: "Errorea" }, qM = { disk_title: "Gorde diskoan", disk_details: "Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan.", disk_button: "Gorde fitxategian", link_title: "Partekatzeko esteka", link_details: "Esportatu irakurtzeko soilik moduko esteka.", link_button: "Esportatu esteka", excalidrawplus_description: "Gorde eszena zure Excalidraw+ laneko areara.", excalidrawplus_button: "Esportatu", excalidrawplus_exportError: "Une honetan ezin izan da esportatu Excalidraw+era..." }, WM = { blog: "Irakurri gure bloga", click: "sakatu", deepSelect: "Hautapen sakona", deepBoxSelect: "Hautapen sakona egin laukizuzen bidez, eta saihestu arrastatzea", curvedArrow: "Gezi kurbatua", curvedLine: "Lerro kurbatua", documentation: "Dokumentazioa", doubleClick: "klik bikoitza", drag: "arrastatu", editor: "Editorea", editLineArrowPoints: "Editatu lerroak/gezi-puntuak", editText: "Editatu testua / gehitu etiketa", github: "Arazorik izan al duzu? Eman horren berri", howto: "Jarraitu gure gidak", or: "edo", preventBinding: "Saihestu gezien gainjartzea", tools: "Tresnak", shortcuts: "Laster-teklak", textFinish: "Bukatu edizioa (testu editorea)", textNewLine: "Gehitu lerro berri bat (testu editorea)", title: "Laguntza", view: "Bistaratu", zoomToFit: "Egin zoom elementu guztiak ikusteko", zoomToSelection: "Zooma hautapenera", toggleElementLock: "Blokeatu/desbloketatu hautapena", movePageUpDown: "Mugitu orria gora/behera", movePageLeftRight: "Mugitu orria ezker/eskuin" }, jM = { title: "Garbitu oihala" }, TM = { title: "Argitaratu liburutegia", itemName: "Elementuaren izena", authorName: "Egilearen izena", githubUsername: "GitHub-eko erabiltzaile-izena", twitterUsername: "Twitter-eko erabiltzaile-izena", libraryName: "Liburutegiaren izena", libraryDesc: "Liburutegiaren deskripzioa", website: "Webgunea", placeholder: { authorName: "Zure izena edo erabiltzaile-izena", libraryName: "Zure liburutegiaren izena", libraryDesc: "Zure liburutegiaren deskripzioa laguntzeko jendeari ulertzen haren erabilpena", githubHandle: "GitHub heldulekua (aukerakoa), liburutegia editatu ahal izateko berrikustera bidalitakoan", twitterHandle: "Twitter-eko erabiltzaile-izena (aukerakoa), badakigu nori kreditatu behar dugun Twitter bidez sustatzeko", website: "Estekatu zure webgunera edo nahi duzun tokira (aukerakoa)" }, errors: { required: "Beharrezkoa", website: "Sartu baliozko URL bat" }, noteDescription: "Bidali zure liburutegira sartu ahal izateko <link>zure liburutegiko biltegian</link>beste jendeak bere marrazkietan erabili ahal izateko.", noteGuidelines: "Liburutegia eskuz onartu behar da. Irakurri <link>gidalerroak</link> bidali aurretik. GitHub kontu bat edukitzea komeni da komunikatzeko eta aldaketak egin ahal izateko, baina ez da guztiz beharrezkoa.", noteLicense: "Bidaltzen baduzu, onartzen duzu liburutegia <link>MIT lizentziarekin argitaratuko dela, </link>zeinak, laburbilduz, esan nahi du edozeinek erabiltzen ahal duela murrizketarik gabe.", noteItems: "Liburutegiko elementu bakoitzak bere izena eduki behar du iragazi ahal izateko. Liburutegiko hurrengo elementuak barne daude:", atleastOneLibItem: "Hautatu gutxienez liburutegiko elementu bat gutxienez hasi ahal izateko", republishWarning: "Oharra: hautatutako elementu batzuk dagoeneko argitaratuta/bidalita bezala markatuta daude. Elementuak berriro bidali behar dituzu lehendik dagoen liburutegi edo bidalketa eguneratzen duzunean." }, zM = { title: "Liburutegia bidali da", content: "Eskerrik asko {{authorName}}. Zure liburutegia bidali da berrikustera. Jarraitu dezakezu haren egoera<link>hemen</link>" }, PM = { resetLibrary: "Leheneratu liburutegia", removeItemsFromLib: "Kendu hautatutako elementuak liburutegitik" }, OM = { header: "Esportatu irudia", label: { withBackground: "Atzeko planoa", onlySelected: "Hautapena soilik", darkMode: "Modu iluna", embedScene: "Txertatu eszena", scale: "Eskala", padding: "Betegarria" }, tooltip: { embedScene: `Eszenaren datuak esportatutako PNG/SVG fitxategian gordeko dira, eszena bertatik berrezartzeko.
Esportatutako fitxategien tamaina handituko da.` }, title: { exportToPng: "Esportatu PNG gisa", exportToSvg: "Esportatu SVG gisa", copyPngToClipboard: "Kopiatu PNG arbelera" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Kopiatu arbelean" } }, VM = { tooltip: "Zure marrazkiak muturretik muturrera enkriptatu dira, beraz Excalidraw-ren zerbitzariek ezingo dituzte ikusi.", link: "Excalidraw-ren muturretik muturrerako enkriptatzearen gaineko mezua blogean" }, XM = { angle: "Angelua", element: "Elementua", elements: "Elementuak", height: "Altuera", scene: "Eszena", selected: "Hautatua", storage: "Biltegia", title: "Datuak", total: "Guztira", version: "Bertsioa", versionCopy: "Klikatu kopiatzeko", versionNotAvailable: "Bertsio ez eskuragarria", width: "Zabalera" }, _M = { addedToLibrary: "Liburutegira gehitu da", copyStyles: "Estiloak kopiatu dira.", copyToClipboard: "Arbelean kopiatu da.", copyToClipboardAsPng: `{{exportSelection}} kopiatu da arbelean PNG gisa
({{exportColorScheme}})`, fileSaved: "Fitxategia gorde da.", fileSavedToFilename: "{filename}-n gorde da", canvas: "oihala", selection: "hautapena", pasteAsSingleElement: `Erabili {{shortcut}} elementu bakar gisa itsasteko,
edo itsatsi lehendik dagoen testu-editore batean`, unableToEmbed: "Url hau txertatzea ez da une honetan onartzen. Sortu issue bat GitHub-en Urla zerrenda zurian sartzea eskatzeko", unrecognizedLinkFormat: "Kapsulatu duzun esteka ez dator bat espero den formatuarekin. Mesedez, saiatu iturburu-guneak emandako 'kapsulatu' katea itsasten" }, $M = { transparent: "Gardena", black: "Beltza", white: "Zuria", red: "Gorria", pink: "Arrosa", grape: "Mahats kolorea", violet: "Bioleta", gray: "Grisa", blue: "Urdina", cyan: "Ziana", teal: "Berde urdinxka", green: "Berdea", yellow: "Horia", orange: "Laranja", bronze: "Brontzea" }, AY = { app: { center_heading: "Zure datu guztiak lokalean gordetzen dira zure nabigatzailean.", center_heading_plus: "Horren ordez Excalidraw+-era joan nahi al zenuen?", menuHint: "Esportatu, hobespenak, hizkuntzak..." }, defaults: { menuHint: "Esportatu, hobespenak eta gehiago...", center_heading: "Diagramak. Egina. Sinplea.", toolbarHint: "Aukeratu tresna bat eta hasi marrazten!", helpHint: "Lasterbideak eta laguntza" } }, uY = { mostUsedCustomColors: "Gehien erabilitako kolore pertsonalizatuak", colors: "Koloreak", shades: "Ñabardurak", hexCode: "Hez kodea", noShades: "Kolore honetarako ez dago ñabardurarik eskuragarri" }, eY = { action: { exportToImage: { title: "Esportatu irudi gisa", button: "Esportatu irudi gisa", description: "Esportatu eszenaren datuak geroago inportatu ahal izango duzun irudi gisa." }, saveToDisk: { title: "Gorde diskoan", button: "Gorde diskoan", description: "Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan." }, excalidrawPlus: { title: "Excalidraw+", button: "Esportatu Excalidraw+ra", description: "Gorde eszena zure Excalidraw+ laneko areara." } }, modal: { loadFromFile: { title: "Fitxategitik kargatu", button: "Fitxategitik kargatu", description: "Fitxategi batetik kargatzeak <bold>lehendik duzun edukia ordezkatuko du</bold>.<br></br>Lehenengo marrazkiaren babeskopia egin dezakezu beheko aukeretako bat erabiliz." }, shareableLink: { title: "Estekatik kargatu", button: "Ordeztu nire edukia", description: "Kanpoko irudi bat kargatzeak <bold>lehendik duzun edukia ordezkatuko du</bold>.<br></br>. Zure marrazkiaren babeskopia egin dezakezu lehenik beheko aukeretako bat erabiliz." } } }, CY = { title: "", button: "Txertatu", description: "", syntax: "", preview: "Aurrebista" }, NmA = { labels: LM, library: xM, buttons: SM, alerts: NM, errors: RM, toolBar: MM, headings: YM, hints: vM, canvasError: HM, errorSplash: KM, roomDialog: JM, errorDialog: ZM, exportDialog: qM, helpDialog: WM, clearCanvasDialog: jM, publishDialog: TM, publishSuccessDialog: zM, confirmDialog: PM, imageExportDialog: OM, encrypted: VM, stats: XM, toast: _M, colors: $M, welcomeScreen: AY, colorPicker: uY, overwriteConfirm: eY, mermaid: CY };
const RmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NM,
  buttons: SM,
  canvasError: HM,
  clearCanvasDialog: jM,
  colorPicker: uY,
  colors: $M,
  confirmDialog: PM,
  default: NmA,
  encrypted: VM,
  errorDialog: ZM,
  errorSplash: KM,
  errors: RM,
  exportDialog: qM,
  headings: YM,
  helpDialog: WM,
  hints: vM,
  imageExportDialog: OM,
  labels: LM,
  library: xM,
  mermaid: CY,
  overwriteConfirm: eY,
  publishDialog: TM,
  publishSuccessDialog: zM,
  roomDialog: JM,
  stats: XM,
  toast: _M,
  toolBar: MM,
  welcomeScreen: AY
}, Symbol.toStringTag, { value: "Module" }));
var BY = { paste: "جای گذاری", pasteAsPlaintext: "جای‌گذاری به عنوان متن ساده", pasteCharts: "قراردادن نمودارها", selectAll: "انتخاب همه", multiSelect: "یک ایتم به انتخاب شده ها اضافه کنید.", moveCanvas: "جابجایی بوم", cut: "بریدن", copy: "کپی", copyAsPng: "کپی در حافطه موقت به صورت PNG", copyAsSvg: "کپی در حافطه موقت به صورت SVG", copyText: "کپی در حافطه موقت به صورت متن", copySource: "", convertToCode: "", bringForward: "جلو آوردن", sendToBack: "پس فرستادن", bringToFront: "جلو آوردن", sendBackward: "پس فرستادن", delete: "حذف", copyStyles: "کپی سبک", pasteStyles: "جای گذاری سبک", stroke: "حاشیه", background: "پس زمینه", fill: "رنگ آمیزی", strokeWidth: "ضخامت حاشیه", strokeStyle: "استایل حاشیه", strokeStyle_solid: "یکدست", strokeStyle_dashed: "خط چین", strokeStyle_dotted: "نقطه چین", sloppiness: "دقت", opacity: "شفافیت", textAlign: "چیدمان متن", edges: "لبه ها", sharp: "تیز", round: "دور", arrowheads: "سر پیکان", arrowhead_none: "هیچ کدام", arrowhead_arrow: "پیکان", arrowhead_bar: "میله ای", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "مثلث", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "اندازه قلم", fontFamily: "نوع قلم", addWatermark: '"ساخته شده با Excalidraw" را اضافه کن', handDrawn: "دست نویس", normal: "عادی", code: "کد", small: "کوچک", medium: "متوسط", large: "بزرگ", veryLarge: "بسیار بزرگ", solid: "توپر", hachure: "هاشور", zigzag: "زیگزاگ", crossHatch: "هاشور متقاطع", thin: "نازک", bold: "ضخیم", left: "چپ", center: "وسط", right: "راست", extraBold: "خیلی ضخیم", architect: "معمار", artist: "هنرمند", cartoonist: "کارتونیست", fileTitle: "نام فایل", colorPicker: "انتخابگر رنگ", canvasColors: "رنگ های بوم", canvasBackground: "بوم", drawingCanvas: "بوم نقاشی", layers: "لایه ها", actions: "عملیات", language: "زبان", liveCollaboration: "همکاری آنلاین...", duplicateSelection: "تکرار", untitled: "بدون عنوان", name: "نام", yourName: "نام شما", madeWithExcalidraw: "ساخته شده با Excalidraw", group: "گروهبندی انتخابها", ungroup: "حذف گروهبندی انتخابها", collaborators: "همکاران", showGrid: "نمایش گرید", addToLibrary: "افزودن به کتابخانه", removeFromLibrary: "حذف از کتابخانه", libraryLoadingMessage: "بارگذاری کتابخانه…", libraries: "مرور کردن کتابخانه ها", loadingScene: "باگذاری صحنه…", align: "تراز", alignTop: "تراز به بالا", alignBottom: "تراز به پایین", alignLeft: "تراز به چپ", alignRight: "تراز به راست", centerVertically: "وسط قرار دادن به صورت عمودی", centerHorizontally: "وسط قرار دادن به صورت افقی", distributeHorizontally: "توزیع کردن به صورت افقی", distributeVertically: "توزیع کردن به صورت عمودی", flipHorizontal: "چرخش افقی", flipVertical: "چرخش عمودی", viewMode: "حالت نمایش", share: "اشتراک‌گذاری", showStroke: "نمایش انتخاب کننده رنگ حاشیه", showBackground: "نمایش انتخاب کننده رنگ پس زمینه", toggleTheme: "تغییر تم", personalLib: "کتابخانه شخصی", excalidrawLib: "کتابخانه", decreaseFontSize: "کاهش اندازه فونت", increaseFontSize: "افزایش دادن اندازه فونت", unbindText: "بازکردن نوشته", bindText: "بستن نوشته", createContainerFromText: "متن را در یک جایگاه بپیچید", link: { edit: "ویرایش لینک", editEmbed: "", create: "ایجاد پیوند", createEmbed: "", label: "لینک", labelEmbed: "", empty: "" }, lineEditor: { edit: "ویرایش لینک", exit: "خروج از ویرایشگر" }, elementLock: { lock: "قفل", unlock: "باز کردن", lockAll: "قفل همه", unlockAll: "باز کردن قفل همه" }, statusPublished: "منتشر شده", sidebarLock: "باز نگه داشتن سایدبار", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "انتخاب رنگ از کرباس", textToDiagram: "", prompt: "" }, gY = { noItems: "آیتمی به اینجا اضافه نشده...", hint_emptyLibrary: "یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.", hint_emptyPrivateLibrary: "یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید." }, tY = { clearReset: "پاکسازی بوم نقاشی", exportJSON: "خروجی در فایل", exportImage: "خروجی گرفتن از تصویر...", export: "ذخیره در...", copyToClipboard: "کپی در حافظه موقت", save: "ذخیره در همین فایل", saveAs: "ذخیره با نام", load: "باز کردن", getShareableLink: "دریافت لینک قابل اشتراک", close: "بستن", selectLanguage: "انتخاب زبان", scrollBackToContent: "به محتوا بروید", zoomIn: "بزرگ نمایی", zoomOut: "کوچک نمایی", resetZoom: "اندازه اصلی", menu: "فهرست", done: "انجام شد", edit: "ویرایش", undo: "بازگرد", redo: "از سر", resetLibrary: "تنظیم مجدد کتابخانه", createNewRoom: "ایجاد یک اتاق جدید", fullScreen: "تمام‌صفحه", darkMode: "حالت تیره", lightMode: "حالت روشن", zenMode: "حالت ذن", objectsSnapMode: "", exitZenMode: "خروج از حالت تمرکز", cancel: "لغو", clear: "پاک کردن", remove: "پاک کردن", embed: "", publishLibrary: "انتشار", submit: "ارسال", confirm: "تایید", embeddableInteractionButton: "" }, iY = { clearReset: "این کار کل صفحه را پاک میکند. آیا مطمئنید؟", couldNotCreateShareableLink: "عدم توانایی در ساخت یک لینک قابل اشتراک.", couldNotCreateShareableLinkTooBig: "لینک قابل اشتراک گذاری ایجاد نشد: محتوای صحنه بسیار بزرگ است", couldNotLoadInvalidFile: "عدم توانایی در بازگذاری فایل نامعتبر", importBackendFailed: "بارگیری از پشت صحنه با شکست مواجه شد.", cannotExportEmptyCanvas: "بوم خالی قابل تبدیل نیست.", couldNotCopyToClipboard: "به کلیپ بورد کپی نشد.", decryptFailed: "رمزگشایی داده ها امکان پذیر نیست.", uploadedSecurly: "آپلود با رمزگذاری دو طرفه انجام میشود، به این معنی که سرور Excalidraw و اشخاص ثالث نمی توانند مطالب شما را بخوانند.", loadSceneOverridePrompt: "بارگزاری یک طرح خارجی محتوای فعلی رو از بین میبرد. آیا میخواهید ادامه دهید؟", collabStopOverridePrompt: `با توقف بوم نقاشی، نقشه قبلی و ذخیره شده محلی شما را بازنویسی می کند. مطمئنی؟

(اگر می خواهید نقاشی محلی خود را حفظ کنید، به سادگی برگه مرورگر را ببندید.)`, errorAddingToLibrary: "مورد به کتابخانه اضافه نشد", errorRemovingFromLibrary: "مورد از کتابخانه حذف نشد", confirmAddLibrary: "{{numShapes}} از اشکال به کتابخانه شما اضافه خواهد شد. مطمئن هستید؟", imageDoesNotContainScene: "به نظر نمی رسد این تصویر حاوی داده های بوم نقاشی باشد. آیا جاسازی صحنه را در حین خروجی فعال کرده اید?", cannotRestoreFromImage: "صحنه را نمی توان از این فایل تصویری بازیابی کرد", invalidSceneUrl: "بوم نقاشی از آدرس ارائه شده وارد نشد. این یا نادرست است، یا حاوی داده Excalidraw JSON معتبر نیست.", resetLibrary: "ین کار کل صفحه را پاک میکند. آیا مطمئنید?", removeItemsFromsLibrary: "حذف {{count}} آیتم(ها) از کتابخانه?", invalidEncryptionKey: "کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.", collabOfflineWarning: `اتصال به اینترنت در دسترس نیست.
تغییرات شما ذخیره نمی شود!` }, EY = { unsupportedFileType: "نوع فایل پشتیبانی نشده.", imageInsertError: "عکس ارسال نشد. بعداً دوباره تلاش کنید...", fileTooBig: "فایل خیلی بزرگ است حداکثر اندازه مجاز {{maxSize}}.", svgImageInsertError: "تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.", failedToFetchImage: "", invalidSVGString: "SVG نادرست.", cannotResolveCollabServer: "به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.", importLibraryError: "داده‌ها بارگذاری نشدند", collabSaveFailed: "در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.", collabSaveFailed_sizeExceeded: "در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.", imageToolNotSupported: "", brave_measure_text_error: { line1: "به نظر می‌رسد از مرورگر Brave با تنظیم <bold> مسدود کردن شدید اثرانگشت</bold> استفاده می‌کنید.", line2: "این می تواند منجر به شکستن <bold>عناصر متن</bold> در نقاشی های شما شود.", line3: "اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار می‌توانید <link>این مراحل</link> را دنبال کنید.", line4: "اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک <issueLink>مشکل</issueLink> را در GitHub ما باز کنید یا برای ما در <discordLink>Discord</discordLink> بنویسید." }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aY = { selection: "گزینش", image: "وارد کردن تصویر", rectangle: "مستطیل", diamond: "لوزی", ellipse: "بیضی", arrow: "پیکان", line: "خط", freedraw: "کشیدن", text: "متن", library: "کتابخانه", lock: "ابزار انتخاب شده را بعد از کشیدن نگه دار", penMode: "حالت قلم - جلوگیری از تماس", link: "افزودن/به‌روزرسانی پیوند برای شکل انتخابی", eraser: "پاک کن", frame: "", magicframe: "", embeddable: "", laser: "", hand: "دست (ابزار پانینگ)", extraTools: "ابزارهای بیشتر", mermaidToExcalidraw: "", magicSettings: "" }, IY = { canvasActions: "عملیات روی بوم", selectedShapeActions: "عملیات روی شکل انتخاب شده", shapes: "شکل‌ها" }, oY = { canvasPanning: "برای حرکت دادن بوم، چرخ ماوس یا فاصله را در حین کشیدن نگه دارید یا از ابزار دستی استفاده کنید", linearElement: "برای چند نقطه کلیک و برای یک خط بکشید", freeDraw: "کلیک کنید و بکشید و وقتی کار تمام شد رها کنید", text: "نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید", embeddable: "", text_selected: "دوبار کلیک کنید یا Enter را فشار دهید تا نقاط را ویرایش کنید", text_editing: "Escape یا CtrlOrCmd+ENTER را فشار دهید تا ویرایش تمام شود", linearElementMulti: "روی آخرین نقطه کلیک کنید یا کلید ESC را بزنید یا کلید Enter را بزنید برای اتمام کار", lockAngle: "با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید", resize: "می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید", resizeImage: `با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،
برای تغییر اندازه از مرکز، ALT را نگه دارید`, rotate: "با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید", lineEditor_info: "CtrlOrCmd را نگه دارید و دوبار کلیک کنید یا CtrlOrCmd + Enter را فشار دهید تا نقاط را ویرایش کنید.", lineEditor_pointSelected: "برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید", lineEditor_nothingSelected: `یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،
یا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید`, placeImage: "برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود", publishLibrary: "کتابخانه خود را منتشر کنید", bindTextToElement: "برای افزودن اینتر را بزنید", deepBoxSelect: "CtrlOrCmd را برای انتخاب عمیق و جلوگیری از کشیدن نگه دارید", eraserRevert: "Alt را نگه دارید تا عناصر علامت گذاری شده برای حذف برگردند", firefox_clipboard_write: 'احتمالاً می‌توان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه "about:config" دیدن کنید.', disableSnapping: "" }, QY = { cannotShowPreview: "پیش نمایش نشان داده نمی شود", canvasTooBig: "بوم نقاشی بسیار بزرگ است.", canvasTooBigTip: "نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید." }, nY = { headingMain: "", clearCanvasMessage: "اگر بازنشانی صفحه مشکل را حل نکرد این را امتحان کنید ", clearCanvasCaveat: " این باعث میشود کارهای شما ذخیره نشود ", trackedToSentry: "", openIssueMessage: "", sceneContent: "محتوای صحنه:" }, rY = { desc_intro: "می توانید افرادی را به صحنه فعلی خود دعوت کنید تا با شما همکاری کنند.", desc_privacy: "نگران نباشید، این جلسه از رمزگذاری دوطرفه استفاده می کند، پس هر چیزی بکشید خصوصی خواهد ماند. حتی سرور ما نمیتواند ببیند چیزی که شما طراحی میکنید.", button_startSession: "شروع جلسه", button_stopSession: "پایان جلسه", desc_inProgressIntro: "جلسه همکاری آنلاین در حال انجام است.", desc_shareLink: "این لینک را با هر کسی که می خواهید با او همکاری کنید به اشتراک بگذارید:", desc_exitSession: "با پایان دادن جلسه، شما از اتاق حذف میکند، اما می توانید به صورت محلی کار خود را با بوم ادامه دهید. توجه داشته باشید که این مورد بر سایر افراد تأثیر نمی گذارد و همچنان می توانند در نسخه خود همکاری کنند.", shareTitle: "به یک جلسه همکاری زنده در Excalidraw بپیوندید" }, sY = { title: "خطا" }, lY = { disk_title: "ذخیره در دیسک", disk_details: "داده های صحنه را به فایلی که بعداً می توانید از آن وارد کنید صادر کنید.", disk_button: "ذخیره در فایل", link_title: "لینک قابل اشتراک‌گذاری", link_details: "خروجی به عنوان یک پیوند فقط خواندنی.", link_button: "خروجی در فایل", excalidrawplus_description: "صحنه را در فضای کاری Excalidraw+ خود ذخیره کنید.", excalidrawplus_button: "خروجی گرفتن", excalidrawplus_exportError: "در حال حاضر نمی‌توان به Excalidraw+ صادر کرد..." }, cY = { blog: "بلاگ ما را بخوانید", click: "کلیک", deepSelect: "انتخاب عمیق", deepBoxSelect: "انتخاب عمیق در کادر، و جلوگیری از کشیدن", curvedArrow: "فلش خمیده", curvedLine: "منحنی", documentation: "مستندات", doubleClick: "دابل کلیک", drag: "کشیدن", editor: "ویرایشگر", editLineArrowPoints: "نقاط خط/پیکان را ویرایش کنید", editText: "ویرایش متن / افزودن برچسب", github: "اشکالی می بینید؟ گزارش دهید", howto: "راهنمای ما را دنبال کنید", or: "یا", preventBinding: "مانع شدن از چسبیدن فلش ها", tools: "ابزار", shortcuts: "میانبرهای صفحه کلید", textFinish: "پایان ویرایش (ویرایشگر متن)", textNewLine: "افزودن خط جدید (ویرایشگر متن)", title: "راهنما", view: "مشاهده", zoomToFit: "بزرگنمایی برای دیدن تمام آیتم ها", zoomToSelection: "بزرگنمایی قسمت انتخاب شده", toggleElementLock: "قفل/بازکردن انتخاب شده ها", movePageUpDown: "حرکت صفحه به بالا/پایین", movePageLeftRight: "حرکت صفحه به چپ/راست" }, dY = { title: "پاک کردن بوم" }, DY = { title: "انتشار کتابخانه", itemName: "نام آیتم", authorName: "نام نویسنده", githubUsername: "نام کاربری گیت هاب", twitterUsername: "نام کاربری توییتر", libraryName: "نام کتابخانه", libraryDesc: "توضیحات کتابخانه", website: "تارنما", placeholder: { authorName: "نام یا نام کاربری شما", libraryName: "اسم کتابخانه", libraryDesc: "شرحی از کتابخانه شما برای کمک به مردم برای درک استفاده از آن", githubHandle: "دسته GitHub (اختیاری)، بنابراین می توانید پس از ارسال برای بررسی، کتابخانه را ویرایش کنید", twitterHandle: "نام کاربری توییتر (اختیاری)، بنابراین می دانیم هنگام تبلیغ در توییتر به چه کسی اعتبار دهیم", website: "پیوند به وب سایت شخصی شما یا هر جای دیگر (اختیاری)" }, errors: { required: "لازم", website: "وارد کردن آدرس درست" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:", atleastOneLibItem: "لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید", republishWarning: "توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام به‌روزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید." }, hY = { title: "کتابخانه ارسال شد", content: "تشکر از شما {{authorName}}. کتابخانه شما برای بررسی ارسال شده است. می توانید وضعیت را پیگیری کنید" }, wY = { resetLibrary: "تنظیم مجدد کتابخانه", removeItemsFromLib: "موارد انتخاب شده از موارد پسندیده حذف شوند" }, FY = { header: "", label: { withBackground: "پس زمینه", onlySelected: "", darkMode: "حالت تیره", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "کپی در کلیپ‌بورد" } }, pY = { tooltip: "شما در یک محیط رمزگزاری شده دو طرفه در حال طراحی هستید پس Excalidraw هرگز طرح های شما را نمیبند.", link: "پست وبلاگ در مورد رمزگذاری سرتاسر در Excalidraw" }, mY = { angle: "زاویه", element: "اِلمان", elements: "اِلمان ها", height: "ارتفاع", scene: "صحنه", selected: "انتخاب شده", storage: "حافظه", title: "آمار برای نردها", total: "مجموع", version: "نسخه", versionCopy: "برای کپی کردن کلیک کنید", versionNotAvailable: "نسخه غیرقابل دسترس", width: "عرض" }, kY = { addedToLibrary: "به مجموعه اضافه شد", copyStyles: "کپی سبک.", copyToClipboard: "در کلیپ‌بورد کپی شد.", copyToClipboardAsPng: `کپی {{exportSelection}} در کلیپبورد به عنوان PNG
({{exportColorScheme}})`, fileSaved: "فایل ذخیره شد.", fileSavedToFilename: "ذخیره در {filename}", canvas: "بوم", selection: "انتخاب", pasteAsSingleElement: `از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،
یا در یک ویرایشگر متن موجود جایگذاری کنید`, unableToEmbed: "", unrecognizedLinkFormat: "" }, yY = { transparent: "شفاف", black: "سیاه", white: "سفید", red: "قرمز", pink: "صورتی", grape: "یاقوتی", violet: "بنفش", gray: "خاکستری", blue: "آبی", cyan: "فیروزه‌ای", teal: "سبزآبی", green: "سبز", yellow: "زرد", orange: "نارنجی", bronze: "برنزی" }, bY = { app: { center_heading: "تمام داده های شما به صورت محلی در مرورگر شما ذخیره می شود.", center_heading_plus: "آیا می‌خواهید به جای آن به Excalidraw+ بروید؟", menuHint: "خروجی، ترجیحات، زبان ها، ..." }, defaults: { menuHint: "خروجی، ترجیحات، وبیشتر ...", center_heading: "نمودارها .ساخته شده. ساده.", toolbarHint: "ابزاری را انتخاب کنید و نقاشی را شروع کنید!", helpHint: "میانبرها و راهنما" } }, UY = { mostUsedCustomColors: "", colors: "رنگ‌ها", shades: "جلوه‌ها", hexCode: "کدِ هگز", noShades: "" }, GY = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "ذخیره در دیسک", button: "ذخیره در دیسک", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "بارگذاری از فایل", button: "بارگذاری از فایل", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fY = { title: "", button: "", description: "", syntax: "", preview: "پیش‌نمایش" }, MmA = { labels: BY, library: gY, buttons: tY, alerts: iY, errors: EY, toolBar: aY, headings: IY, hints: oY, canvasError: QY, errorSplash: nY, roomDialog: rY, errorDialog: sY, exportDialog: lY, helpDialog: cY, clearCanvasDialog: dY, publishDialog: DY, publishSuccessDialog: hY, confirmDialog: wY, imageExportDialog: FY, encrypted: pY, stats: mY, toast: kY, colors: yY, welcomeScreen: bY, colorPicker: UY, overwriteConfirm: GY, mermaid: fY };
const YmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iY,
  buttons: tY,
  canvasError: QY,
  clearCanvasDialog: dY,
  colorPicker: UY,
  colors: yY,
  confirmDialog: wY,
  default: MmA,
  encrypted: pY,
  errorDialog: sY,
  errorSplash: nY,
  errors: EY,
  exportDialog: lY,
  headings: IY,
  helpDialog: cY,
  hints: oY,
  imageExportDialog: FY,
  labels: BY,
  library: gY,
  mermaid: fY,
  overwriteConfirm: GY,
  publishDialog: DY,
  publishSuccessDialog: hY,
  roomDialog: rY,
  stats: mY,
  toast: kY,
  toolBar: aY,
  welcomeScreen: bY
}, Symbol.toStringTag, { value: "Module" }));
var LY = { paste: "Liitä", pasteAsPlaintext: "Liitä pelkkänä tekstinä", pasteCharts: "Liitä kaaviot", selectAll: "Valitse kaikki", multiSelect: "Lisää kohde valintaan", moveCanvas: "Siirrä piirtoaluetta", cut: "Leikkaa", copy: "Kopioi", copyAsPng: "Kopioi leikepöydälle PNG-tiedostona", copyAsSvg: "Kopioi leikepöydälle SVG-tiedostona", copyText: "Kopioi tekstinä", copySource: "", convertToCode: "", bringForward: "Tuo eteenpäin", sendToBack: "Vie taakse", bringToFront: "Tuo eteen", sendBackward: "Vie taaksepäin", delete: "Poista", copyStyles: "Kopioi tyyli", pasteStyles: "Liitä tyyli", stroke: "Piirto", background: "Tausta", fill: "Täyttö", strokeWidth: "Viivan leveys", strokeStyle: "Viivan tyyli", strokeStyle_solid: "Yhtenäinen", strokeStyle_dashed: "Katkoviiva", strokeStyle_dotted: "Pisteviiva", sloppiness: "Viivan tarkkuus", opacity: "Peittävyys", textAlign: "Tekstin tasaus", edges: "Reunat", sharp: "Terävä", round: "Pyöristetty", arrowheads: "Nuolenkärjet", arrowhead_none: "Ei mitään", arrowhead_arrow: "Nuoli", arrowhead_bar: "Tasapää", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Kolmio", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Kirjasinkoko", fontFamily: "Kirjasintyyppi", addWatermark: 'Lisää "Tehty Excalidrawilla"', handDrawn: "Käsinpiirretty", normal: "Tavallinen", code: "Koodi", small: "Pieni", medium: "Keskikoko", large: "Suuri", veryLarge: "Erittäin suuri", solid: "Yhtenäinen", hachure: "Vinoviivoitus", zigzag: "", crossHatch: "Ristiviivoitus", thin: "Ohut", bold: "Lihavoitu", left: "Vasen", center: "Keskitä", right: "Oikea", extraBold: "Erittäin lihavoitu", architect: "Arkkitehti", artist: "Taiteilija", cartoonist: "Sarjakuva", fileTitle: "Tiedostonimi", colorPicker: "Värin valinta", canvasColors: "Käytössä piirtoalueella", canvasBackground: "Piirtoalueen tausta", drawingCanvas: "Piirtoalue", layers: "Tasot", actions: "Toiminnot", language: "Kieli", liveCollaboration: "Live Yhteistyö...", duplicateSelection: "Monista", untitled: "Nimetön", name: "Nimi", yourName: "Nimesi", madeWithExcalidraw: "Tehty Excalidrawilla", group: "Ryhmitä valinta", ungroup: "Pura valittu ryhmä", collaborators: "Yhteistyökumppanit", showGrid: "Näytä ruudukko", addToLibrary: "Lisää kirjastoon", removeFromLibrary: "Poista kirjastosta", libraryLoadingMessage: "Ladataan kirjastoa…", libraries: "Selaa kirjastoja", loadingScene: "Ladataan työtä…", align: "Tasaa", alignTop: "Tasaa ylös", alignBottom: "Tasaa alas", alignLeft: "Tasaa vasemmalle", alignRight: "Tasaa oikealle", centerVertically: "Keskitä pystysuunnassa", centerHorizontally: "Keskitä vaakasuunnassa", distributeHorizontally: "Jaa vaakasuunnassa", distributeVertically: "Jaa pystysuunnassa", flipHorizontal: "Käännä vaakasuunnassa", flipVertical: "Käännä pystysuunnassa", viewMode: "Katselutila", share: "Jaa", showStroke: "Näytä viivan värin valitsin", showBackground: "Näytä taustavärin valitsin", toggleTheme: "Vaihda teema", personalLib: "Oma kirjasto", excalidrawLib: "Excalidraw kirjasto", decreaseFontSize: "Pienennä kirjasinkokoa", increaseFontSize: "Kasvata kirjasinkokoa", unbindText: "Irroita teksti", bindText: "Kiinnitä teksti säiliöön", createContainerFromText: "", link: { edit: "Muokkaa linkkiä", editEmbed: "", create: "Luo linkki", createEmbed: "", label: "Linkki", labelEmbed: "", empty: "" }, lineEditor: { edit: "Muokkaa riviä", exit: "Poistu rivieditorista" }, elementLock: { lock: "Lukitse", unlock: "Poista lukitus", lockAll: "Lukitse kaikki", unlockAll: "Poista lukitus kaikista" }, statusPublished: "Julkaistu", sidebarLock: "Pidä sivupalkki avoinna", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xY = { noItems: "Kirjastossa ei ole vielä yhtään kohdetta...", hint_emptyLibrary: "Valitse lisättävä kohde piirtoalueelta, tai asenna alta julkinen kirjasto.", hint_emptyPrivateLibrary: "Valitse lisättävä kohde piirtoalueelta." }, SY = { clearReset: "Tyhjennä piirtoalue", exportJSON: "Vie tiedostoon", exportImage: "Vie kuva...", export: "Tallenna nimellä...", copyToClipboard: "Kopioi leikepöydälle", save: "Tallenna nykyiseen tiedostoon", saveAs: "Tallenna nimellä", load: "Avaa", getShareableLink: "Hae jaettava linkki", close: "Sulje", selectLanguage: "Valitse kieli", scrollBackToContent: "Näytä sisältö", zoomIn: "Lähennä", zoomOut: "Loitonna", resetZoom: "Nollaa suurennuksen taso", menu: "Valikko", done: "Valmis", edit: "Muokkaa", undo: "Kumoa", redo: "Tee uudelleen", resetLibrary: "Tyhjennä kirjasto", createNewRoom: "Luo huone", fullScreen: "Koko näyttö", darkMode: "Tumma tila", lightMode: "Vaalea tila", zenMode: "Zen-tila", objectsSnapMode: "", exitZenMode: "Poistu zen-tilasta", cancel: "Peruuta", clear: "Pyyhi", remove: "Poista", embed: "", publishLibrary: "Julkaise", submit: "Lähetä", confirm: "Vahvista", embeddableInteractionButton: "" }, NY = { clearReset: "Tämä tyhjentää koko piirtoalueen. Jatketaanko?", couldNotCreateShareableLink: "Jaettavan linkin luominen epäonnistui.", couldNotCreateShareableLinkTooBig: "Jaettavaa linkkiä ei voitu luoda: teos on liian suuri", couldNotLoadInvalidFile: "Virheellistä tiedostoa ei voitu avata", importBackendFailed: "Palvelimelta tuonti epäonnistui.", cannotExportEmptyCanvas: "Tyhjää piirtoaluetta ei voi viedä.", couldNotCopyToClipboard: "Leikepöydälle vieminen epäonnistui.", decryptFailed: "Salauksen purkaminen epäonnistui.", uploadedSecurly: "Lähetys on turvattu päästä-päähän-salauksella. Excalidrawin palvelin ja kolmannet osapuolet eivät voi lukea sisältöä.", loadSceneOverridePrompt: "Ulkopuolisen piirroksen lataaminen korvaa nykyisen sisältösi. Jatketaanko?", collabStopOverridePrompt: `Istunnon lopettaminen korvaa aiemman, paikallisesti tallennetun piirustuksen. Jatketaanko?

(Jos haluat säilyttää paikallisesti tallennetun piirustuksen, sulje selaimen välilehti lopettamisen sijaan.)`, errorAddingToLibrary: "Kohdetta ei voitu lisätä kirjastoon", errorRemovingFromLibrary: "Kohdetta ei voitu poistaa kirjastosta", confirmAddLibrary: "Tämä lisää {{numShapes}} muotoa kirjastoosi. Jatketaanko?", imageDoesNotContainScene: "Tämä kuva ei näytä sisältävän piirrostietoja. Oletko ottanut käyttöön piirroksen tallennuksen viennin aikana?", cannotRestoreFromImage: "Teosta ei voitu palauttaa tästä kuvatiedostosta", invalidSceneUrl: "Teosta ei voitu tuoda annetusta URL-osoitteesta. Tallenne on vioittunut, tai osoitteessa ei ole Excalidraw JSON-dataa.", resetLibrary: "Tämä tyhjentää kirjastosi. Jatketaanko?", removeItemsFromsLibrary: "Poista {{count}} kohdetta kirjastosta?", invalidEncryptionKey: "Salausavaimen on oltava 22 merkkiä pitkä. Live-yhteistyö ei ole käytössä.", collabOfflineWarning: `Internet-yhteyttä ei ole saatavilla.
Muutoksiasi ei tallenneta!` }, RY = { unsupportedFileType: "Tiedostotyyppiä ei tueta.", imageInsertError: "Kuvan lisääminen epäonnistui. Yritä myöhemmin uudelleen...", fileTooBig: "Tiedosto on liian suuri. Suurin sallittu koko on {{maxSize}}.", svgImageInsertError: "SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.", failedToFetchImage: "", invalidSVGString: "Virheellinen SVG.", cannotResolveCollabServer: "Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.", importLibraryError: "Kokoelman lataaminen epäonnistui", collabSaveFailed: "Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.", collabSaveFailed_sizeExceeded: "Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MY = { selection: "Valinta", image: "Lisää kuva", rectangle: "Suorakulmio", diamond: "Vinoneliö", ellipse: "Soikio", arrow: "Nuoli", line: "Viiva", freedraw: "Piirrä", text: "Teksti", library: "Kirjasto", lock: "Pidä valittu työkalu aktiivisena piirron jälkeen", penMode: "Kynätila - estä kosketus", link: "Lisää/päivitä linkki valitulle muodolle", eraser: "Poistotyökalu", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Käsi (panning-työkalu)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, YY = { canvasActions: "Piirtoalueen toiminnot", selectedShapeActions: "Valitun muodon toiminnot", shapes: "Muodot" }, vY = { canvasPanning: "Piirtoalueen liikuttamiseksi pidä hiiren pyörää tai välilyöntiä pohjassa tai käytä käsityökalua", linearElement: "Klikkaa piirtääksesi useampi piste, raahaa piirtääksesi yksittäinen viiva", freeDraw: "Paina ja raahaa, päästä irti kun olet valmis", text: "Vinkki: voit myös lisätä tekstiä kaksoisnapsauttamalla mihin tahansa valintatyökalulla", embeddable: "", text_selected: "Kaksoisnapsauta tai paina ENTER muokataksesi tekstiä", text_editing: "Paina Escape tai CtrlOrCmd+ENTER lopettaaksesi muokkaamisen", linearElementMulti: "Lopeta klikkaamalla viimeistä pistettä, painamalla Escape- tai Enter-näppäintä", lockAngle: "Voit rajoittaa kulmaa pitämällä SHIFT-näppäintä alaspainettuna", resize: "Voit rajoittaa mittasuhteet pitämällä SHIFT-näppäintä alaspainettuna kun muutat kokoa, pidä ALT-näppäintä alaspainettuna muuttaaksesi kokoa keskipisteen suhteen", resizeImage: "Voit muuttaa kokoa vapaasti pitämällä SHIFTiä pohjassa, pidä ALT pohjassa muuttaaksesi kokoa keskipisteen ympäri", rotate: "Voit rajoittaa kulman pitämällä SHIFT pohjassa pyörittäessäsi", lineEditor_info: "Pidä CtrlOrCmd pohjassa ja kaksoisnapsauta tai paina CtrlOrCmd + Enter muokataksesi pisteitä", lineEditor_pointSelected: "Poista piste(et) painamalla delete, monista painamalla CtrlOrCmd+D, tai liikuta raahaamalla", lineEditor_nothingSelected: "Valitse muokattava piste (monivalinta pitämällä SHIFT pohjassa), tai paina Alt ja klikkaa lisätäksesi uusia pisteitä", placeImage: "Klikkaa asettaaksesi kuvan, tai klikkaa ja raahaa asettaaksesi sen koon manuaalisesti", publishLibrary: "Julkaise oma kirjasto", bindTextToElement: "Lisää tekstiä painamalla enter", deepBoxSelect: "Käytä syvävalintaa ja estä raahaus painamalla CtrlOrCmd", eraserRevert: "Pidä Alt alaspainettuna, kumotaksesi merkittyjen elementtien poistamisen", firefox_clipboard_write: 'Tämä ominaisuus voidaan todennäköisesti ottaa käyttöön asettamalla "dom.events.asyncClipboard.clipboardItem" kohta "true":ksi. Vaihtaaksesi selaimen kohdan Firefoxissa, käy "about:config" sivulla.', disableSnapping: "" }, HY = { cannotShowPreview: "Esikatselua ei voitu näyttää", canvasTooBig: "Piirtoalue saattaa olla liian suuri.", canvasTooBigTip: "Vinkki: yritä siirtää kaukaisimpia elementtejä hieman lähemmäs toisiaan." }, KY = { headingMain: "Tapahtui virhe. Yritä <button>sivun lataamista uudelleen.</button>", clearCanvasMessage: "Mikäli sivun lataaminen uudelleen ei auta, yritä <button>tyhjentää piirtoalue.</button>", clearCanvasCaveat: " Tämä johtaa työn menetykseen ", trackedToSentry: "Virhe tunnisteella {{eventId}} tallennettiin järjestelmäämme.", openIssueMessage: "Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille <button>virheenseurantajärjestelmässämme.</button> Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.", sceneContent: "Piirroksen tiedot:" }, JY = { desc_intro: "Voit kutsua ihmisiä piirrokseesi tekemään yhteistyötä kanssasi.", desc_privacy: "Älä huoli, istunto käyttää päästä-päähän-salausta, joten mitä tahansa piirrätkin, se pysyy salassa. Edes palvelimemme eivät näe mitä keksit.", button_startSession: "Aloita istunto", button_stopSession: "Lopeta istunto", desc_inProgressIntro: "Jaettu istunto on nyt käynnissä.", desc_shareLink: "Jaa tämä linkki kenelle tahansa, jonka kanssa haluat tehdä yhteistyötä:", desc_exitSession: "Istunnon pysäyttäminen katkaisee yhteyden huoneeseen, mutta voit vielä jatkaa työskentelyä paikallisesti. Huomaa, että tämä ei vaikuta muihin käyttäjiin ja he voivat jatkaa oman versionsa parissa työskentelyä.", shareTitle: "Liity Excalidraw live-yhteistyöistuntoon" }, ZY = { title: "Virhe" }, qY = { disk_title: "Tallenna levylle", disk_details: "Vie työn tiedot tiedostoon, josta sen voi tuoda myöhemmin.", disk_button: "Tallenna tiedostoon", link_title: "Jaettava linkki", link_details: "Vie vain luku -linkkinä.", link_button: "Vie linkkinä", excalidrawplus_description: "Tallenna teos Excalidraw+ tilaan.", excalidrawplus_button: "Vie", excalidrawplus_exportError: "Ei voitu viedä Excalidraw+-palveluun tällä hetkellä..." }, WY = { blog: "Lue blogiamme", click: "klikkaa", deepSelect: "Syvävalinta", deepBoxSelect: "Käytä syvävalintaa ja estä raahaus", curvedArrow: "Kaareva nuoli", curvedLine: "Kaareva viiva", documentation: "Käyttöohjeet", doubleClick: "kaksoisnapsautus", drag: "vedä", editor: "Muokkausohjelma", editLineArrowPoints: "", editText: "", github: "Löysitkö ongelman? Kerro meille", howto: "Seuraa oppaitamme", or: "tai", preventBinding: "Estä nuolten kiinnitys", tools: "Työkalut", shortcuts: "Pikanäppäimet", textFinish: "Lopeta muokkaus (tekstieditori)", textNewLine: "Lisää uusi rivi (tekstieditori)", title: "Ohjeet", view: "Näkymä", zoomToFit: "Näytä kaikki elementit", zoomToSelection: "Näytä valinta", toggleElementLock: "Lukitse / poista lukitus valinta", movePageUpDown: "Siirrä sivua ylös/alas", movePageLeftRight: "Siirrä sivua vasemmalle/oikealle" }, jY = { title: "Pyyhi piirtoalue" }, TY = { title: "Julkaise kirjasto", itemName: "Kohteen nimi", authorName: "Tekijän nimi", githubUsername: "GitHub-käyttäjätunnus", twitterUsername: "Twitter-käyttäjätunnus", libraryName: "Kirjaston nimi", libraryDesc: "Kirjaston kuvaus", website: "Verkkosivu", placeholder: { authorName: "Nimesi tai käyttäjänimesi", libraryName: "Kirjastosi nimi", libraryDesc: "Kirjaston kuvaus, joka auttaa ihmisiä ymmärtämään sen käyttötarkoitukset", githubHandle: "GitHub-tunnuksesi (valinnainen), jotta voit muokata kirjastoa sen jälkeen kun se on lähetetty tarkastettavaksi", twitterHandle: "Twitter-tunnus (valinnainen), jotta tiedämme ketä kiittää kun viestimme Twitterissä", website: "Linkki henkilökohtaiselle verkkosivustollesi tai muualle (valinnainen)" }, errors: { required: "Pakollinen", website: "Syötä oikeamuotoinen URL-osoite" }, noteDescription: "Lähetä kirjastosi, jotta se voidaan sisällyttää <link>julkisessa kirjastolistauksessa</link>muiden käyttöön omissa piirrustuksissaan.", noteGuidelines: "Kirjasto on ensin hyväksyttävä manuaalisesti. Ole hyvä ja lue <link>ohjeet</link> ennen lähettämistä. Tarvitset GitHub-tilin, jotta voit viestiä ja tehdä muutoksia pyydettäessä, mutta se ei ole ehdottoman välttämätöntä.", noteLicense: "Lähettämällä hyväksyt että kirjasto julkaistaan <link>MIT-lisenssin </link>alla, mikä lyhyesti antaa muiden käyttää sitä ilman rajoituksia.", noteItems: "Jokaisella kirjaston kohteella on oltava oma nimensä suodatusta varten. Seuraavat kirjaston kohteet sisältyvät:", atleastOneLibItem: "Valitse vähintään yksi kirjaston kohde aloittaaksesi", republishWarning: "Huom! Osa valituista kohteista on merkitty jo julkaistu/lähetetyiksi. Lähetä kohteita uudelleen vain päivitettäessä olemassa olevaa kirjastoa tai ehdotusta." }, zY = { title: "Kirjasto lähetetty", content: "Kiitos {{authorName}}. Kirjastosi on lähetetty tarkistettavaksi. Voit seurata sen tilaa<link>täällä</link>" }, PY = { resetLibrary: "Tyhjennä kirjasto", removeItemsFromLib: "Poista valitut kohteet kirjastosta" }, OY = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, VY = { tooltip: "Piirroksesi ovat päästä-päähän-salattuja, joten Excalidrawin palvelimet eivät koskaan näe niitä.", link: "Blogiartikkeli päästä päähän -salauksesta Excalidraw:ssa" }, XY = { angle: "Kulma", element: "Elementti", elements: "Elementit", height: "Korkeus", scene: "Teos", selected: "Valitut", storage: "Tallennustila", title: "Tilastoja nörteille", total: "Yhteensä", version: "Versio", versionCopy: "Klikkaa kopioidaksesi", versionNotAvailable: "Versio ei saatavilla", width: "Leveys" }, _Y = { addedToLibrary: "Lisätty kirjastoon", copyStyles: "Tyylit kopioitiin.", copyToClipboard: "Kopioitiin leikepöydälle.", copyToClipboardAsPng: `Kopioitiin {{exportSelection}} leikepöydälle PNG:nä
({{exportColorScheme}})`, fileSaved: "Tiedosto tallennettu.", fileSavedToFilename: "Tallennettiin kohteeseen {filename}", canvas: "piirtoalue", selection: "valinta", pasteAsSingleElement: `Käytä {{shortcut}} liittääksesi yhtenä elementtinä,
tai liittääksesi olemassa olevaan tekstieditoriin`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $Y = { transparent: "Läpinäkyvä", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, Av = { app: { center_heading: "Kaikki tietosi on tallennettu paikallisesti selaimellesi.", center_heading_plus: "Haluatko sen sijaan mennä Excalidraw+:aan?", menuHint: "Vie, asetukset, kielet, ..." }, defaults: { menuHint: "Vie, asetukset ja lisää...", center_heading: "Kaaviot. Tehty. Yksinkertaiseksi.", toolbarHint: "Valitse työkalu ja aloita piirtäminen!", helpHint: "Pikanäppäimet & ohje" } }, uv = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, ev = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, Cv = { title: "", button: "", description: "", syntax: "", preview: "" }, vmA = { labels: LY, library: xY, buttons: SY, alerts: NY, errors: RY, toolBar: MY, headings: YY, hints: vY, canvasError: HY, errorSplash: KY, roomDialog: JY, errorDialog: ZY, exportDialog: qY, helpDialog: WY, clearCanvasDialog: jY, publishDialog: TY, publishSuccessDialog: zY, confirmDialog: PY, imageExportDialog: OY, encrypted: VY, stats: XY, toast: _Y, colors: $Y, welcomeScreen: Av, colorPicker: uv, overwriteConfirm: ev, mermaid: Cv };
const HmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NY,
  buttons: SY,
  canvasError: HY,
  clearCanvasDialog: jY,
  colorPicker: uv,
  colors: $Y,
  confirmDialog: PY,
  default: vmA,
  encrypted: VY,
  errorDialog: ZY,
  errorSplash: KY,
  errors: RY,
  exportDialog: qY,
  headings: YY,
  helpDialog: WY,
  hints: vY,
  imageExportDialog: OY,
  labels: LY,
  library: xY,
  mermaid: Cv,
  overwriteConfirm: ev,
  publishDialog: TY,
  publishSuccessDialog: zY,
  roomDialog: JY,
  stats: XY,
  toast: _Y,
  toolBar: MY,
  welcomeScreen: Av
}, Symbol.toStringTag, { value: "Module" }));
var Bv = { paste: "Coller", pasteAsPlaintext: "Coller comme texte brut", pasteCharts: "Coller les graphiques", selectAll: "Tout sélectionner", multiSelect: "Ajouter l'élément à la sélection", moveCanvas: "Déplacer le canevas", cut: "Couper", copy: "Copier", copyAsPng: "Copier dans le presse-papier en PNG", copyAsSvg: "Copier dans le presse-papier en SVG", copyText: "Copier dans le presse-papier en tant que texte", copySource: "Copier la source dans le presse-papiers", convertToCode: "Convertir en code", bringForward: "Envoyer vers l'avant", sendToBack: "Déplacer à l'arrière-plan", bringToFront: "Mettre au premier plan", sendBackward: "Reculer d'un plan", delete: "Supprimer", copyStyles: "Copier les styles", pasteStyles: "Coller les styles", stroke: "Trait", background: "Arrière-plan", fill: "Remplissage", strokeWidth: "Largeur du contour", strokeStyle: "Style du trait", strokeStyle_solid: "Continu", strokeStyle_dashed: "Tirets", strokeStyle_dotted: "Pointillés", sloppiness: "Style de tracé", opacity: "Transparence", textAlign: "Alignement du texte", edges: "Angles", sharp: "Pointus", round: "Arrondis", arrowheads: "Extrémités", arrowhead_none: "Sans", arrowhead_arrow: "Flèche", arrowhead_bar: "Barre", arrowhead_circle: "Cercle", arrowhead_circle_outline: "Contour du cercle", arrowhead_triangle: "Triangle", arrowhead_triangle_outline: "Triangle (contour)", arrowhead_diamond: "Losange", arrowhead_diamond_outline: "", fontSize: "Taille de la police", fontFamily: "Police", addWatermark: 'Ajouter "Réalisé avec Excalidraw"', handDrawn: "À main levée", normal: "Normale", code: "Code", small: "Petite", medium: "Moyenne", large: "Grande", veryLarge: "Très grande", solid: "Solide", hachure: "Hachures", zigzag: "Zigzag", crossHatch: "Hachures croisées", thin: "Fine", bold: "Épaisse", left: "À gauche", center: "Au centre", right: "À droite", extraBold: "Très épaisse", architect: "Architecte", artist: "Artiste", cartoonist: "Caricaturiste", fileTitle: "Nom du fichier", colorPicker: "Sélecteur de couleur", canvasColors: "Utilisé sur la zone de dessin", canvasBackground: "Arrière-plan du canevas", drawingCanvas: "Zone de dessin", layers: "Disposition", actions: "Actions", language: "Langue", liveCollaboration: "Collaboration en direct...", duplicateSelection: "Dupliquer", untitled: "Sans-titre", name: "Nom", yourName: "Votre nom", madeWithExcalidraw: "Fait avec Excalidraw", group: "Grouper la sélection", ungroup: "Dégrouper la sélection", collaborators: "Collaborateurs", showGrid: "Afficher la grille", addToLibrary: "Ajouter à la bibliothèque", removeFromLibrary: "Supprimer de la bibliothèque", libraryLoadingMessage: "Chargement de la bibliothèque…", libraries: "Parcourir les bibliothèques", loadingScene: "Chargement de la scène…", align: "Alignement", alignTop: "Aligner en haut", alignBottom: "Aligner en bas", alignLeft: "Aligner à gauche", alignRight: "Aligner à droite", centerVertically: "Centrer verticalement", centerHorizontally: "Centrer horizontalement", distributeHorizontally: "Répartir horizontalement", distributeVertically: "Répartir verticalement", flipHorizontal: "Retourner horizontalement", flipVertical: "Retourner verticalement", viewMode: "Mode présentation", share: "Partager", showStroke: "Afficher le sélecteur de couleur de trait", showBackground: "Afficher le sélecteur de couleur de fond", toggleTheme: "Changer le thème", personalLib: "Bibliothèque personnelle", excalidrawLib: "Bibliothèque Excalidraw", decreaseFontSize: "Diminuer la taille de police", increaseFontSize: "Augmenter la taille de la police", unbindText: "Dissocier le texte", bindText: "Associer le texte au conteneur", createContainerFromText: "Encadrer le texte dans un conteneur", link: { edit: "Modifier le lien", editEmbed: "Éditer le lien & intégrer", create: "Ajouter un lien", createEmbed: "Créer un lien & intégrer", label: "Lien", labelEmbed: "Lier & intégrer", empty: "Aucun lien défini" }, lineEditor: { edit: "Modifier la ligne", exit: "Quitter l'éditeur de ligne" }, elementLock: { lock: "Verrouiller", unlock: "Déverrouiller", lockAll: "Tout verrouiller", unlockAll: "Tout déverrouiller" }, statusPublished: "Publié", sidebarLock: "Maintenir la barre latérale ouverte", selectAllElementsInFrame: "Sélectionner tous les éléments du cadre", removeAllElementsFromFrame: "Supprimer tous les éléments du cadre", eyeDropper: "Choisir la couleur depuis la toile", textToDiagram: "Texte vers Diagramme", prompt: "Consignes" }, gv = { noItems: "Aucun élément n'a encore été ajouté ...", hint_emptyLibrary: "Sélectionnez un élément sur le canevas pour l'ajouter ici ou installez une bibliothèque depuis le dépôt public, ci-dessous.", hint_emptyPrivateLibrary: "Sélectionnez un élément sur le canevas pour l'ajouter ici." }, tv = { clearReset: "Réinitialiser le canevas", exportJSON: "Exporter comme fichier", exportImage: "Exporter l'image...", export: "Enregistrer sous...", copyToClipboard: "Copier dans le presse-papier", save: "Enregistrer dans le fichier actuel", saveAs: "Enregistrer sous", load: "Ouvrir", getShareableLink: "Obtenir un lien de partage", close: "Fermer", selectLanguage: "Choisir une langue", scrollBackToContent: "Revenir au contenu", zoomIn: "Zoomer", zoomOut: "Dézoomer", resetZoom: "Réinitialiser le zoom", menu: "Menu", done: "Terminé", edit: "Modifier", undo: "Annuler", redo: "Rétablir", resetLibrary: "Réinitialiser la bibliothèque", createNewRoom: "Créer une nouvelle salle", fullScreen: "Plein écran", darkMode: "Mode sombre", lightMode: "Mode clair", zenMode: "Mode zen", objectsSnapMode: "Aimanter aux objets", exitZenMode: "Quitter le mode zen", cancel: "Annuler", clear: "Effacer", remove: "Supprimer", embed: "Activer/Désactiver l'intégration", publishLibrary: "Publier", submit: "Envoyer", confirm: "Confirmer", embeddableInteractionButton: "Cliquez pour interagir" }, iv = { clearReset: "L'intégralité du canevas va être effacée. Êtes-vous sûr ?", couldNotCreateShareableLink: "Impossible de créer un lien de partage.", couldNotCreateShareableLinkTooBig: "Impossible de créer un lien de partage : la scène est trop volumineuse", couldNotLoadInvalidFile: "Impossible de charger un fichier invalide", importBackendFailed: "L'importation depuis le serveur a échoué.", cannotExportEmptyCanvas: "Impossible d'exporter un canevas vide.", couldNotCopyToClipboard: "Impossible de copier dans le presse-papiers.", decryptFailed: "Les données n'ont pas pu être déchiffrées.", uploadedSecurly: "Le téléchargement a été sécurisé avec un chiffrement de bout en bout, ce qui signifie que ni Excalidraw ni personne d'autre ne peut en lire le contenu.", loadSceneOverridePrompt: "Le chargement d'un dessin externe remplacera votre contenu actuel. Souhaitez-vous continuer ?", collabStopOverridePrompt: `Arrêter la session écrasera votre précédent dessin stocké localement. Êtes-vous sûr·e ?

(Si vous voulez garder votre dessin local, fermez simplement l'onglet du navigateur à la place.)`, errorAddingToLibrary: "Impossible d'ajouter l'élément à la bibliothèque", errorRemovingFromLibrary: "Impossible de retirer l'élément de la bibliothèque", confirmAddLibrary: "Cela va ajouter {{numShapes}} forme(s) à votre bibliothèque. Êtes-vous sûr·e ?", imageDoesNotContainScene: "Cette image ne semble pas contenir de données de scène. Avez-vous activé l'intégration de scène lors de l'exportation ?", cannotRestoreFromImage: "Impossible de restaurer la scène depuis ce fichier image", invalidSceneUrl: "Impossible d'importer la scène depuis l'URL fournie. Elle est soit incorrecte, soit ne contient pas de données JSON Excalidraw valides.", resetLibrary: "Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?", removeItemsFromsLibrary: "Supprimer {{count}} élément(s) de la bibliothèque ?", invalidEncryptionKey: "La clé de chiffrement doit comporter 22 caractères. La collaboration en direct est désactivée.", collabOfflineWarning: `Aucune connexion internet disponible.
Vos modifications ne seront pas enregistrées !` }, Ev = { unsupportedFileType: "Type de fichier non supporté.", imageInsertError: "Impossible d'insérer l'image. Réessayez plus tard...", fileTooBig: "Le fichier est trop volumineux. La taille maximale autorisée est de {{maxSize}}.", svgImageInsertError: "Impossible d'insérer l'image SVG. Le balisage SVG semble invalide.", failedToFetchImage: "Échec de récupération de l'image.", invalidSVGString: "SVG invalide.", cannotResolveCollabServer: "Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.", importLibraryError: "Impossible de charger la bibliothèque", collabSaveFailed: "Impossible d'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.", collabSaveFailed_sizeExceeded: "Impossible d'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail.", imageToolNotSupported: "Les images sont désactivées.", brave_measure_text_error: { line1: "On dirait que vous utilisez le navigateur Brave avec l'option <bold>Bloquer agressivement le fichage</bold> activée.", line2: "Cela pourrait entraîner des problèmes avec les <bold>Éléments Textuels</bold> dans vos dessins.", line3: "Nous recommandons fortement de désactiver cette option. Vous pouvez suivre <link>ces instructions</link> pour savoir comment faire.", line4: "Si désactiver cette option de résout pas le problème d'affichage des éléments textuels, veuillez ouvrir un <issueLink>ticket</issueLink> sur notre GitHub, ou écrivez-nous sur notre <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Les éléments intégrés ne peuvent pas être ajoutés à la librairie.", iframe: "", image: "Le support pour l'ajout d'images à la librairie arrive bientôt !" }, asyncPasteFailedOnRead: "Impossible de coller (impossible de lire le presse-papiers système).", asyncPasteFailedOnParse: "Impossible de coller.", copyToSystemClipboardFailed: "Échec de la copie dans le presse-papiers." }, av = { selection: "Sélection", image: "Insérer une image", rectangle: "Rectangle", diamond: "Losange", ellipse: "Ellipse", arrow: "Flèche", line: "Ligne", freedraw: "Dessiner", text: "Texte", library: "Bibliothèque", lock: "Garder l'outil sélectionné actif après le dessin", penMode: "Mode stylo - évite le toucher", link: "Ajouter/mettre à jour le lien pour une forme sélectionnée", eraser: "Gomme", frame: "Outil de cadre", magicframe: "", embeddable: "Intégration Web", laser: "Pointeur laser", hand: "Mains (outil de déplacement de la vue)", extraTools: "Plus d'outils", mermaidToExcalidraw: "De Mermaid à Excalidraw", magicSettings: "Paramètres IA" }, Iv = { canvasActions: "Actions du canevas", selectedShapeActions: "Actions pour la forme sélectionnée", shapes: "Formes" }, ov = { canvasPanning: "Pour déplacer la zone de dessin, maintenez la molette de la souris enfoncée ou la barre d'espace tout en faisant glisser, ou utiliser l'outil main.", linearElement: "Cliquez pour démarrer plusieurs points, faites glisser pour une seule ligne", freeDraw: "Cliquez et faites glissez, relâchez quand vous avez terminé", text: "Astuce : vous pouvez aussi ajouter du texte en double-cliquant n'importe où avec l'outil de sélection", embeddable: "Cliquez et glissez pour créer une intégration de site web", text_selected: "Double-cliquez ou appuyez sur ENTRÉE pour modifier le texte", text_editing: "Appuyez sur ÉCHAP ou Ctrl/Cmd+ENTRÉE pour terminer l'édition", linearElementMulti: "Cliquez sur le dernier point ou appuyez sur Échap ou Entrée pour terminer", lockAngle: "Vous pouvez restreindre l'angle en maintenant MAJ", resize: "Vous pouvez conserver les proportions en maintenant la touche MAJ pendant le redimensionnement, maintenez la touche ALT pour redimensionner par rapport au centre", resizeImage: `Vous pouvez redimensionner librement en maintenant SHIFT,
maintenez ALT pour redimensionner depuis le centre`, rotate: "Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation", lineEditor_info: "Maintenez CtrlOrCmd et Double-cliquez ou appuyez sur CtrlOrCmd + Entrée pour modifier les points", lineEditor_pointSelected: "Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer", lineEditor_nothingSelected: `Sélectionner un point pour éditer (maintenir la touche MAJ pour en sélectionner plusieurs),
ou maintenir la touche Alt enfoncée et cliquer pour ajouter de nouveaux points`, placeImage: "Cliquez pour placer l'image, ou cliquez et faites glisser pour définir sa taille manuellement", publishLibrary: "Publier votre propre bibliothèque", bindTextToElement: "Appuyer sur Entrée pour ajouter du texte", deepBoxSelect: "Maintenir Ctrl ou Cmd pour sélectionner dans les groupes et empêcher le déplacement", eraserRevert: "Maintenez Alt enfoncé pour annuler les éléments marqués pour suppression", firefox_clipboard_write: `Cette fonctionnalité devrait pouvoir être activée en définissant l'option "dom.events.asyncClipboard.clipboard.clipboardItem" à "true". Pour modifier les paramètres du navigateur dans Firefox, visitez la page "about:config".`, disableSnapping: "Maintenez CtrlOuCmd pour désactiver l'aimantation" }, Qv = { cannotShowPreview: "Impossible d’afficher l’aperçu", canvasTooBig: "Le canevas est peut-être trop grand.", canvasTooBigTip: "Astuce : essayez de rapprocher un peu les éléments les plus éloignés." }, nv = { headingMain: "Une erreur est survenue. Essayez <button>de recharger la page.</button>", clearCanvasMessage: "Si le rechargement ne résout pas l'erreur, essayez <button>effacement du canevas.</button>", clearCanvasCaveat: " Cela entraînera une perte du travail ", trackedToSentry: "L'erreur avec l'identifiant {{eventId}} a été enregistrée dans notre système.", openIssueMessage: "Nous avons fait très attention à ne pas inclure les informations de votre scène dans l'erreur. Si votre scène n'est pas privée, veuillez envisager de poursuivre sur notre <button>outil de suivi des bugs.</button> Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.", sceneContent: "Contenu de la scène :" }, rv = { desc_intro: "Vous pouvez inviter des personnes à collaborer avec vous sur votre scène actuelle.", desc_privacy: "Pas d'inquiétude, la session utilise le chiffrement de bout en bout, donc tout ce que vous dessinez restera privé. Même notre serveur ne pourra voir ce que vous faites.", button_startSession: "Démarrer la session", button_stopSession: "Arrêter la session", desc_inProgressIntro: "La session de collaboration en direct est maintenant en cours.", desc_shareLink: "Partagez ce lien avec les personnes avec lesquelles vous souhaitez collaborer :", desc_exitSession: "Arrêter la session vous déconnectera de la salle, mais vous pourrez continuer à travailler avec la scène, localement. Notez que cela n'affectera pas les autres personnes, et ils pourront toujours collaborer sur leur version.", shareTitle: "Rejoindre une session de collaboration en direct sur Excalidraw" }, sv = { title: "Erreur" }, lv = { disk_title: "Enregistrer sur le disque", disk_details: "Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement.", disk_button: "Enregistrer comme fichier", link_title: "Lien partageable", link_details: "Exporter comme un lien en lecture seule.", link_button: "Exporter comme lien", excalidrawplus_description: "Enregistrer la scène dans votre espace de travail Excalidraw+.", excalidrawplus_button: "Exporter", excalidrawplus_exportError: "Impossible d'exporter vers Excalidraw+ pour le moment..." }, cv = { blog: "Lire notre blog", click: "clic", deepSelect: "Sélection dans les groupes", deepBoxSelect: "Sélectionner dans les groupes, et empêcher le déplacement", curvedArrow: "Flèche courbée", curvedLine: "Ligne courbée", documentation: "Documentation", doubleClick: "double-clic", drag: "glisser", editor: "Éditeur", editLineArrowPoints: "Modifier les points de ligne/flèche", editText: "Modifier le texte / ajouter un libellé", github: "Problème trouvé ? Soumettre", howto: "Suivez nos guides", or: "ou", preventBinding: "Empêcher la liaison de flèche", tools: "Outils", shortcuts: "Raccourcis clavier", textFinish: "Terminer l'édition (éditeur de texte)", textNewLine: "Ajouter une nouvelle ligne (éditeur de texte)", title: "Aide", view: "Affichage", zoomToFit: "Zoomer pour voir tous les éléments", zoomToSelection: "Zoomer sur la sélection", toggleElementLock: "Verrouiller/déverrouiller la sélection", movePageUpDown: "Déplacer la page vers le haut/bas", movePageLeftRight: "Déplacer la page vers la gauche/droite" }, dv = { title: "Effacer la zone de dessin" }, Dv = { title: "Publier la bibliothèque", itemName: "Nom de l’élément", authorName: "Nom de l'auteur", githubUsername: "Nom d'utilisateur GitHub", twitterUsername: "Nom d'utilisateur Twitter", libraryName: "Nom de la bibliothèque", libraryDesc: "Description de la bibliothèque", website: "Site web", placeholder: { authorName: "Votre nom ou nom d'utilisateur", libraryName: "Nom de votre bibliothèque", libraryDesc: "Description de votre bibliothèque pour aider les gens à comprendre son usage", githubHandle: "Nom d'utilisateur GitHub (optionnel), pour que tu puisses modifier la bibliothèque une fois soumise pour vérification", twitterHandle: "Nom d'utilisateur Twitter (optionnel), pour savoir qui créditer lors de la promotion sur Twitter", website: "Lien vers votre site web personnel ou autre (optionnel)" }, errors: { required: "Requis", website: "Entrer une URL valide" }, noteDescription: "Soumets ta bibliothèque pour l'inclure au <link>dépôt de bibliothèque publique</link>pour permettre son utilisation par autrui dans leurs dessins.", noteGuidelines: "La bibliothèque doit d'abord être approuvée manuellement. Veuillez lire les <link>lignes directrices</link> avant de la soumettre. Vous aurez besoin d'un compte GitHub pour communiquer et apporter des modifications si demandé, mais ce n'est pas obligatoire.", noteLicense: "En soumettant, vous acceptez que la bibliothèque soit publiée sous la <link>Licence MIT, </link>ce qui en gros signifie que tout le monde peut l'utiliser sans restrictions.", noteItems: "Chaque élément de la bibliothèque doit avoir son propre nom afin qu'il soit filtrable. Les éléments de bibliothèque suivants seront inclus :", atleastOneLibItem: "Veuillez sélectionner au moins un élément de bibliothèque pour commencer", republishWarning: "Remarque : certains des éléments sélectionnés sont marqués comme étant déjà publiés/soumis. Vous devez uniquement resoumettre des éléments lors de la mise à jour d'une bibliothèque ou d'une soumission existante." }, hv = { title: "Bibliothèque soumise", content: "Merci {{authorName}}. Votre bibliothèque a été soumise pour examen. Vous pouvez suivre le statut<link>ici</link>" }, wv = { resetLibrary: "Réinitialiser la bibliothèque", removeItemsFromLib: "Enlever les éléments sélectionnés de la bibliothèque" }, Fv = { header: "Exporter l'image", label: { withBackground: "Fond", onlySelected: "Uniquement la sélection", darkMode: "Mode sombre", embedScene: "Intégrer la scène", scale: "Échelle", padding: "Marge interne" }, tooltip: { embedScene: `Les données de la scène seront sauvegardées dans le fichier PNG/SVG exporté afin que la scène puisse être restaurée depuis celui-ci.
Cela augmentera la taille du fichier exporté.` }, title: { exportToPng: "Exporter en PNG", exportToSvg: "Exporter en SVG", copyPngToClipboard: "Copier le PNG dans le presse-papier" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copier dans le presse-papier" } }, pv = { tooltip: "Vos dessins sont chiffrés de bout en bout, les serveurs d'Excalidraw ne les verront jamais.", link: "Article de blog sur le chiffrement de bout en bout dans Excalidraw" }, mv = { angle: "Angle", element: "Élément", elements: "Éléments", height: "Hauteur", scene: "Scène", selected: "Sélection", storage: "Stockage", title: "Stats pour les nerds", total: "Total", version: "Version", versionCopy: "Cliquer pour copier", versionNotAvailable: "Version non disponible", width: "Largeur" }, kv = { addedToLibrary: "Ajouté à la bibliothèque", copyStyles: "Styles copiés.", copyToClipboard: "Copié dans le presse-papier.", copyToClipboardAsPng: `{{exportSelection}} copié dans le presse-papier en PNG
({{exportColorScheme}})`, fileSaved: "Fichier enregistré.", fileSavedToFilename: "Enregistré sous {filename}", canvas: "canevas", selection: "sélection", pasteAsSingleElement: `Utiliser {{shortcut}} pour coller comme un seul élément,
ou coller dans un éditeur de texte existant`, unableToEmbed: "Intégrer cet URL n'est actuellement pas autorisé. Ouvrez un ticket sur GitHub pour demander son ajout à la liste blanche", unrecognizedLinkFormat: "Le lien que vous avez intégré ne correspond pas au format attendu. Veuillez essayer de coller la chaîne d'intégration fournie par le site source" }, yv = { transparent: "Transparent", black: "Noir", white: "Blanc", red: "Rouge", pink: "Rose", grape: "Mauve", violet: "Violet", gray: "Gris", blue: "Bleu", cyan: "Cyan", teal: "Turquoise", green: "Vert", yellow: "Jaune", orange: "Orange", bronze: "Bronze" }, bv = { app: { center_heading: "Toutes vos données sont sauvegardées en local dans votre navigateur.", center_heading_plus: "Vouliez-vous plutôt aller à Excalidraw+ à la place ?", menuHint: "Exportation, préférences, langues, ..." }, defaults: { menuHint: "Exportation, préférences et plus...", center_heading: "Diagrammes. Rendus. Simples.", toolbarHint: "Choisissez un outil et commencez à dessiner !", helpHint: "Raccourcis et aide" } }, Uv = { mostUsedCustomColors: "Couleurs personnalisées les plus fréquemment utilisées", colors: "Couleurs", shades: "Nuances", hexCode: "Code hex", noShades: "Aucune nuance disponible pour cette couleur" }, Gv = { action: { exportToImage: { title: "Exporter en image", button: "Exporter en image", description: "Exporter les données de la scène comme une image que vous pourrez importer ultérieurement." }, saveToDisk: { title: "Sauvegarder sur le disque", button: "Sauvegarder sur le disque", description: "Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement." }, excalidrawPlus: { title: "Excalidraw+", button: "Exporter vers Excalidraw+", description: "Enregistrer la scène dans votre espace de travail Excalidraw+." } }, modal: { loadFromFile: { title: "Charger depuis un fichier", button: "Charger depuis un fichier", description: "Charger depuis un fichier va <bold>remplacer votre contenu existant</bold>.<br></br>Vous pouvez d'abord sauvegarder votre dessin en utilisant l'une des options ci-dessous." }, shareableLink: { title: "Charger depuis un lien", button: "Remplacer mon contenu", description: "Charger un dessin externe va <bold>remplacer votre contenu existant</bold>.<br></br>Vous pouvez d'abord sauvegarder votre dessin en utilisant l'une des options ci-dessous." } } }, fv = { title: "De Mermaid à Excalidraw", button: "Insérer", description: "", syntax: "Syntaxe Mermaid", preview: "Prévisualisation" }, KmA = { labels: Bv, library: gv, buttons: tv, alerts: iv, errors: Ev, toolBar: av, headings: Iv, hints: ov, canvasError: Qv, errorSplash: nv, roomDialog: rv, errorDialog: sv, exportDialog: lv, helpDialog: cv, clearCanvasDialog: dv, publishDialog: Dv, publishSuccessDialog: hv, confirmDialog: wv, imageExportDialog: Fv, encrypted: pv, stats: mv, toast: kv, colors: yv, welcomeScreen: bv, colorPicker: Uv, overwriteConfirm: Gv, mermaid: fv };
const JmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iv,
  buttons: tv,
  canvasError: Qv,
  clearCanvasDialog: dv,
  colorPicker: Uv,
  colors: yv,
  confirmDialog: wv,
  default: KmA,
  encrypted: pv,
  errorDialog: sv,
  errorSplash: nv,
  errors: Ev,
  exportDialog: lv,
  headings: Iv,
  helpDialog: cv,
  hints: ov,
  imageExportDialog: Fv,
  labels: Bv,
  library: gv,
  mermaid: fv,
  overwriteConfirm: Gv,
  publishDialog: Dv,
  publishSuccessDialog: hv,
  roomDialog: rv,
  stats: mv,
  toast: kv,
  toolBar: av,
  welcomeScreen: bv
}, Symbol.toStringTag, { value: "Module" }));
var Lv = { paste: "Pegar", pasteAsPlaintext: "Pegar coma texto sen formato", pasteCharts: "Pegar gráficos", selectAll: "Seleccionar todo", multiSelect: "Engadir elemento á selección", moveCanvas: "Mover o lenzo", cut: "Cortar", copy: "Copiar", copyAsPng: "Copiar no portapapeis como PNG", copyAsSvg: "Copiar no portapapeis como SVG", copyText: "Copia no portapapeis como texto", copySource: "", convertToCode: "", bringForward: "Traer cara adiante", sendToBack: "Enviar cara atrás", bringToFront: "Traer á fronte", sendBackward: "Enviar ao fondo", delete: "Borrar", copyStyles: "Copiar estilo", pasteStyles: "Pegar estilo", stroke: "Trazo", background: "Fondo", fill: "Recheo", strokeWidth: "Largo do trazo", strokeStyle: "Estilo do trazo", strokeStyle_solid: "Sólido", strokeStyle_dashed: "Liña de trazos", strokeStyle_dotted: "Liña de puntos", sloppiness: "Estilo de trazo", opacity: "Opacidade", textAlign: "Aliñar texto", edges: "Bordos", sharp: "Agudo", round: "Redondo", arrowheads: "Puntas de frecha", arrowhead_none: "Ningunha", arrowhead_arrow: "Frecha", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Triángulo", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Tamaño da fonte", fontFamily: "Tipo de fonte", addWatermark: 'Engadir "Feito con Excalidraw"', handDrawn: "Debuxado a man", normal: "Normal", code: "Código", small: "Pequeno", medium: "Mediano", large: "Grande", veryLarge: "Moi grande", solid: "Sólido", hachure: "Folleto", zigzag: "Zigzag", crossHatch: "Raiado transversal", thin: "Estreito", bold: "Groso", left: "Esquerda", center: "Centrado", right: "Dereita", extraBold: "Moi groso", architect: "Arquitecto", artist: "Artista", cartoonist: "Caricatura", fileTitle: "Nome do arquivo", colorPicker: "Selector de cor", canvasColors: "Usado en lenzo", canvasBackground: "Fondo do lenzo", drawingCanvas: "Lenzo de debuxo", layers: "Capas", actions: "Accións", language: "Idioma", liveCollaboration: "Colaboración en directo...", duplicateSelection: "Duplicar", untitled: "Sen título", name: "Nome", yourName: "O teu nome", madeWithExcalidraw: "Feito con Excalidraw", group: "Agrupar selección", ungroup: "Desagrupar selección", collaborators: "Colaboradores", showGrid: "Mostrar cuadrícula", addToLibrary: "Engadir á biblioteca", removeFromLibrary: "Eliminar da biblioteca", libraryLoadingMessage: "Cargando biblioteca…", libraries: "Explorar bibliotecas", loadingScene: "Cargando escena…", align: "Aliñamento", alignTop: "Aliñamento superior", alignBottom: "Aliñamento inferior", alignLeft: "Aliñar a esquerda", alignRight: "Aliñar a dereita", centerVertically: "Centrar verticalmente", centerHorizontally: "Centrar horizontalmente", distributeHorizontally: "Distribuír horizontalmente", distributeVertically: "Distribuír verticalmente", flipHorizontal: "Virar horizontalmente", flipVertical: "Virar verticalmente", viewMode: "Modo de visualización", share: "Compartir", showStroke: "Mostrar selector de cores do trazo", showBackground: "Mostrar selector de cores do fondo", toggleTheme: "Alternar tema", personalLib: "Biblioteca Persoal", excalidrawLib: "Biblioteca Excalidraw", decreaseFontSize: "Diminuír tamaño da fonte", increaseFontSize: "Aumentar o tamaño da fonte", unbindText: "Desvincular texto", bindText: "Ligar o texto ao contedor", createContainerFromText: "Envolver o texto nun contedor", link: { edit: "Editar ligazón", editEmbed: "", create: "Crear ligazón", createEmbed: "", label: "Ligazón", labelEmbed: "", empty: "" }, lineEditor: { edit: "Editar liña", exit: "Saír do editor de liñas" }, elementLock: { lock: "Bloquear", unlock: "Desbloquear", lockAll: "Bloquear todo", unlockAll: "Desbloquear todo" }, statusPublished: "Publicado", sidebarLock: "Manter a barra lateral aberta", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xv = { noItems: "Aínda non hai elementos engadidos...", hint_emptyLibrary: "Seleccione un elemento no lenzo para engadilo aquí, ou instale unha biblioteca dende o repositorio público, como se detalla a continuación.", hint_emptyPrivateLibrary: "Seleccione un elemento do lenzo para engadilo aquí." }, Sv = { clearReset: "Limpar o lenzo", exportJSON: "Exportar a arquivo", exportImage: "Exportar imaxe...", export: "Gardar en...", copyToClipboard: "Copiar ao portapapeis", save: "Gardar no ficheiro actual", saveAs: "Gardar como", load: "Abrir", getShareableLink: "Obter unha ligazón que se poida compartir", close: "Pechar", selectLanguage: "Seleccionar idioma", scrollBackToContent: "Volver ao contido", zoomIn: "Ampliar", zoomOut: "Reducir", resetZoom: "Reiniciar zoom", menu: "Menú", done: "Feito", edit: "Editar", undo: "Desfacer", redo: "Refacer", resetLibrary: "Reiniciar biblioteca", createNewRoom: "Crear nova sala", fullScreen: "Pantalla completa", darkMode: "Modo escuro", lightMode: "Modo claro", zenMode: "Modo zen", objectsSnapMode: "", exitZenMode: "Saír do modo zen", cancel: "Cancelar", clear: "Limpar", remove: "Eliminar", embed: "", publishLibrary: "Publicar", submit: "Enviar", confirm: "Confirmar", embeddableInteractionButton: "Faga clic para interactuar" }, Nv = { clearReset: "Isto limpará todo o lenzo. Estás seguro?", couldNotCreateShareableLink: "Non se puido crear unha ligazón para compartir.", couldNotCreateShareableLinkTooBig: "Non se puido crear a ligazón para compartir: a escena é demasiado grande", couldNotLoadInvalidFile: "Non se puido cargar o ficheiro non válido", importBackendFailed: "A importación dende o backend fallou.", cannotExportEmptyCanvas: "Non se pode exportar un lenzo baleiro.", couldNotCopyToClipboard: "Non se puido copiar ao portapapeis.", decryptFailed: "Non se poideron descifrar os datos.", uploadedSecurly: "A carga foi asegurada con cifrado de extremo a extremo, o que significa que o servidor de Excalidraw e terceiros non poden ler o contido.", loadSceneOverridePrompt: "A carga dun debuxo externo substituirá o contido existente. Desexa continuar?", collabStopOverridePrompt: `Deter a sesión, sobrescribirá o seu debuxo local previamente almacenado. Está seguro?

(Se quere manter o seu debuxo local, simplemente peche a lapela do navegador.)`, errorAddingToLibrary: "Non se puido engadir o elemento á biblioteca", errorRemovingFromLibrary: "Non se puido eliminar o elemento da biblioteca", confirmAddLibrary: "Isto engadirá {{numShapes}} forma(s) a túa biblioteca. Estás seguro?", imageDoesNotContainScene: "Esta imaxe non parece conter ningún dato da escena. Activou a inserción de escenas durante a exportación?", cannotRestoreFromImage: "Non se puido restaurar a escena dende este arquivo de imaxe", invalidSceneUrl: "Non se puido importar a escena dende a URL proporcionada. Ou ben está malformada ou non contén un JSON con información válida para Excalidraw.", resetLibrary: "Isto limpará a súa biblioteca. Está seguro?", removeItemsFromsLibrary: "Eliminar {{count}} elemento(s) da biblioteca?", invalidEncryptionKey: "A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada.", collabOfflineWarning: `Non hai conexión a Internet dispoñible.
Os teus cambios non serán gardados!` }, Rv = { unsupportedFileType: "Tipo de ficheiro non soportado.", imageInsertError: "Non se puido inserir a imaxe. Probe de novo máis tarde...", fileTooBig: "O ficheiro é demasiado grande. O tamaño máximo permitido é {{maxSize}}.", svgImageInsertError: "Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.", failedToFetchImage: "", invalidSVGString: "SVG inválido.", cannotResolveCollabServer: "Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.", importLibraryError: "Non se puido cargar a biblioteca", collabSaveFailed: "Non se puido gardar na base de datos. Se o problema persiste, deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.", collabSaveFailed_sizeExceeded: "Non se puido gardar na base de datos, o lenzo semella demasiado grande. Deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, Mv = { selection: "Selección", image: "Inserir imaxe", rectangle: "Rectángulo", diamond: "Diamante", ellipse: "Elipse", arrow: "Frecha", line: "Liña", freedraw: "Debuxar", text: "Texto", library: "Biblioteca", lock: "Manter a ferramenta seleccionada activa despois de debuxar", penMode: "Modo lapis - evitar o contacto", link: "Engadir/ Actualizar ligazón para a forma seleccionada", eraser: "Goma de borrar", frame: "", magicframe: "", embeddable: "Inserir na web", laser: "Punteiro láser", hand: "Man (ferramenta de desprazamento)", extraTools: "Máis ferramentas", mermaidToExcalidraw: "", magicSettings: "" }, Yv = { canvasActions: "Accións do lenzo", selectedShapeActions: "Accións da forma seleccionada", shapes: "Formas" }, vv = { canvasPanning: "Para mover o lenzo, manteña pulsada a roda do rato ou a barra de espazo mentres arrastra, ou utilice a ferramenta da man", linearElement: "Faga clic para iniciar varios puntos, arrastre para unha sola liña", freeDraw: "Fai clic e arrastra, solta cando acabes", text: "Consello: tamén podes engadir texto facendo dobre-clic en calquera lugar coa ferramenta de selección", embeddable: "Faga clic e arrastre para crear un sitio web embebido", text_selected: "Dobre-clic ou prema ENTER para editar o texto", text_editing: "Prema Escape ou CtrlOrCmd+ENTER para finalizar a edición", linearElementMulti: "Faga clic no último punto ou prema Escape ou Enter para rematar", lockAngle: "Pode reducir o ángulo mantendo SHIFT", resize: `Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,
manteña ALT para axustalo dende o centro`, resizeImage: `Pode axustar o tamaño libremente mantendo SHIFT,
manteña ALT para axustalo dende o centro`, rotate: "Podes reducir os ángulos mantendo SHIFT mentres os rotas", lineEditor_info: "Manteña pulsado CtrlOrCmd e faga dobre clic ou prema CtrlOrCmd + Enter para editar puntos", lineEditor_pointSelected: `Prema Suprimir para eliminar o(s) punto(s)
CtrlOrCmd+D para duplicalos, ou arrastre para movelos`, lineEditor_nothingSelected: `Seleccione un punto para editar (manteña pulsado SHIFT para selección múltiple),
ou manteña pulsado Alt e faga clic para engadir novos puntos`, placeImage: "Faga clic para colocar a imaxe, ou faga clic e arrastre para establecer o seu tamaño manualmente", publishLibrary: "Publica a túa propia biblioteca", bindTextToElement: "Prema a tecla enter para engadir texto", deepBoxSelect: "Manteña pulsado CtrlOrCmd para seleccionar en profundidade e evitar o arrastre", eraserRevert: "Manteña pulsado Alt para reverter os elementos marcados para a súa eliminación", firefox_clipboard_write: 'Esta función pódese activar establecendo a opción "dom.events.asyncClipboard.clipboardItem" a "true". Para cambiar as opcións do navegador en Firefox, visita a páxina "about:config".', disableSnapping: "" }, Hv = { cannotShowPreview: "Non se pode mostrar a vista previa", canvasTooBig: "Pode que o lenzo sexa demasiado grande.", canvasTooBigTip: "Consello: Probe a acercar un pouco os elementos máis afastados." }, Kv = { headingMain: "Atopouse un erro. Probe <button>recargando a páxina.</button>", clearCanvasMessage: "Se recargar non funcionou, probe <button>limpando o lenzo.</button>", clearCanvasCaveat: " Isto resultará nunha perda do seu traballo ", trackedToSentry: "O erro con identificador {{eventId}} foi rastrexado no noso sistema.", openIssueMessage: "Fomos moi cautelosos de non incluír a información da súa escena no erro. Se a súa escena non é privada, por favor, considere o seguimento do noso <button>rastrexador de erros.</button> Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.", sceneContent: "Contido da escena:" }, Jv = { desc_intro: "Podes invitar xente a colaborar contigo na túa escena actual.", desc_privacy: "Non te preocupes, a sesión usa cifrado de punto a punto, polo que calquera cousa que debuxes mantense privada. Nin tan sequera o noso servidor será capaz de ver o que fas.", button_startSession: "Comezar sesión", button_stopSession: "Rematar sesión", desc_inProgressIntro: "A sesión de colaboración en directo está agora en progreso.", desc_shareLink: "Comparte esta ligazón con calquera que queiras colaborar:", desc_exitSession: "Deter a sesión desconectarao da sala, pero poderá seguir traballando coa escena de maneira local. Teña en conta que isto non afectará a outras persoas, que poderán seguir colaborando na súa versión.", shareTitle: "Únase a unha sesión de colaboración en directo en Excalidraw" }, Zv = { title: "Erro" }, qv = { disk_title: "Gardar no disco", disk_details: "Exporte os datos da escena a un ficheiro que poderás importar máis tarde.", disk_button: "Gardar nun ficheiro", link_title: "Ligazón para compartir", link_details: "Exportar como unha ligazón de só lectura.", link_button: "Exportar a unha ligazón", excalidrawplus_description: "Garde a escena no seu espazo de traballo en Excalidraw+.", excalidrawplus_button: "Exportar", excalidrawplus_exportError: "Non se puido exportar a Excalidraw+ neste momento..." }, Wv = { blog: "Le o noso blog", click: "clic", deepSelect: "Selección en profundidade", deepBoxSelect: "Selección en profundidade dentro da caixa, evitando o arrastre", curvedArrow: "Frecha curva", curvedLine: "Liña curva", documentation: "Documentación", doubleClick: "dobre-clic", drag: "arrastrar", editor: "Editor", editLineArrowPoints: "", editText: "", github: "Encontrou un problema? Envíeo", howto: "Sigue as nosas normas", or: "ou", preventBinding: "Evitar a unión de frechas", tools: "Ferramentas", shortcuts: "Atallos de teclado", textFinish: "Rematar de editar (editor de texto)", textNewLine: "Engadir unha nova liña (editor de texto)", title: "Axuda", view: "Vista", zoomToFit: "Zoom que se axuste a todos os elementos", zoomToSelection: "Zoom á selección", toggleElementLock: "Bloquear/desbloquear selección", movePageUpDown: "Mover páxina cara enriba/abaixo", movePageLeftRight: "Mover páxina cara a esquerda/dereita" }, jv = { title: "Limpar lenzo" }, Tv = { title: "Publicar biblioteca", itemName: "Nome do elemento", authorName: "Nome do autor", githubUsername: "Nome de usuario en Github", twitterUsername: "Nome de usuario en Twitter", libraryName: "Nome da biblioteca", libraryDesc: "Descrición da biblioteca", website: "Páxina web", placeholder: { authorName: "O seu nome ou nome de usuario", libraryName: "Nome da súa biblioteca", libraryDesc: "Descrición da súa biblioteca para axudar a xente a entender o seu uso", githubHandle: "Nome de usuario de GitHub (opcional), así poderás editar a biblioteca unha vez enviada para a súa revisión", twitterHandle: "Nome de usuario en Twitter(opcional), así sabemos a quen darlle crédito cando se lle de promoción a través de Twitter", website: "Ligazón ao teu sitio web persoal ou a outro sitio (opcional)" }, errors: { required: "Obrigatorio", website: "Introduza unha URL válida" }, noteDescription: "Envíe a súa biblioteca para que sexa incluída no <link>repositorio público de bibliotecas</link>para que outra xente a poida usar nos seus debuxos.", noteGuidelines: "A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as <link>normas</link> antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario.", noteLicense: "Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a <link>Licenza MIT, </link>o cal significa que, en resumo, calquera pode usalo sen restricións.", noteItems: "Cada elemento da biblioteca debe ter o seu nome propio para que se poida filtrar. Os seguintes elementos da biblioteca serán incluídos:", atleastOneLibItem: "Por favor seleccione polo menos un elemento da biblioteca para comezar", republishWarning: "Nota: algúns dos elementos seleccionados están marcados como xa publicados/enviados. Só deberías reenviar elementos cando se actualice unha biblioteca ou envío." }, zv = { title: "Biblioteca enviada", content: "Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estado<link>aquí</link>" }, Pv = { resetLibrary: "Restablecer biblioteca", removeItemsFromLib: "Eliminar os elementos seleccionados da biblioteca" }, Ov = { header: "Exportar imaxe", label: { withBackground: "Fondo", onlySelected: "", darkMode: "Modo escuro", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "Exportar a PNG", exportToSvg: "Exportar a SVG", copyPngToClipboard: "Copiar PNG ao portapapeis" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copiar ao portapapeis" } }, Vv = { tooltip: "Os teus debuxos están cifrados de punto a punto, polo que os servidores de Excalidraw nunca os verán.", link: "Entrada do blog acerca do cifrado de punto a punto en Excalidraw" }, Xv = { angle: "Ángulo", element: "Elemento", elements: "Elementos", height: "Alto", scene: "Escena", selected: "Seleccionado", storage: "Almacenamento", title: "Estadísticas para nerds", total: "Total", version: "Versión", versionCopy: "Faga clic para copiar", versionNotAvailable: "Versión non dispoñible", width: "Ancho" }, _v = { addedToLibrary: "Engadido á biblioteca", copyStyles: "Estilos copiados.", copyToClipboard: "Copiado ao portapapeis.", copyToClipboardAsPng: `Copiar {{exportSelection}} ao portapapeis como PNG
({{exportColorScheme}})`, fileSaved: "Ficheiro gardado.", fileSavedToFilename: "Gardado en {filename}", canvas: "lenzo", selection: "selección", pasteAsSingleElement: `Usa {{shortcut}} para pegar como un único elemento
ou pega nun editor de texto existente`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $v = { transparent: "Transparente", black: "Negro", white: "Branco", red: "Vermello", pink: "Rosa", grape: "Uva", violet: "Violeta", gray: "Gris", blue: "Azul", cyan: "", teal: "", green: "Verde", yellow: "Marelo", orange: "Laranxa", bronze: "Bronce" }, AH = { app: { center_heading: "Toda a información é gardada de maneira local no seu navegador.", center_heading_plus: "Queres ir a Excalidraw+ no seu lugar?", menuHint: "Exportar, preferencias, idiomas, ..." }, defaults: { menuHint: "Exportar, preferencias, e máis...", center_heading: "Diagramas. Feito. Sinxelo.", toolbarHint: "Escolle unha ferramenta & Comeza a debuxar!", helpHint: "Atallos & axuda" } }, uH = { mostUsedCustomColors: "", colors: "Cores", shades: "", hexCode: "", noShades: "" }, eH = { action: { exportToImage: { title: "Exportar como imaxe", button: "Exportar como imaxe", description: "" }, saveToDisk: { title: "Gardar no disco", button: "Gardar no disco", description: "" }, excalidrawPlus: { title: "Excalidraw+", button: "Exportar a Excalidraw+", description: "" } }, modal: { loadFromFile: { title: "Cargar dende arquivo", button: "Cargar dende arquivo", description: "" }, shareableLink: { title: "Cargar dende un enlace", button: "Substituír o meu contido", description: "" } } }, CH = { title: "", button: "", description: "", syntax: "", preview: "" }, ZmA = { labels: Lv, library: xv, buttons: Sv, alerts: Nv, errors: Rv, toolBar: Mv, headings: Yv, hints: vv, canvasError: Hv, errorSplash: Kv, roomDialog: Jv, errorDialog: Zv, exportDialog: qv, helpDialog: Wv, clearCanvasDialog: jv, publishDialog: Tv, publishSuccessDialog: zv, confirmDialog: Pv, imageExportDialog: Ov, encrypted: Vv, stats: Xv, toast: _v, colors: $v, welcomeScreen: AH, colorPicker: uH, overwriteConfirm: eH, mermaid: CH };
const qmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: Nv,
  buttons: Sv,
  canvasError: Hv,
  clearCanvasDialog: jv,
  colorPicker: uH,
  colors: $v,
  confirmDialog: Pv,
  default: ZmA,
  encrypted: Vv,
  errorDialog: Zv,
  errorSplash: Kv,
  errors: Rv,
  exportDialog: qv,
  headings: Yv,
  helpDialog: Wv,
  hints: vv,
  imageExportDialog: Ov,
  labels: Lv,
  library: xv,
  mermaid: CH,
  overwriteConfirm: eH,
  publishDialog: Tv,
  publishSuccessDialog: zv,
  roomDialog: Jv,
  stats: Xv,
  toast: _v,
  toolBar: Mv,
  welcomeScreen: AH
}, Symbol.toStringTag, { value: "Module" }));
var BH = { paste: "הדבק", pasteAsPlaintext: "הדבק ללא עיצוב", pasteCharts: "הדבק גרפים", selectAll: "בחר הכל", multiSelect: "הוסף רכיב לבחירה", moveCanvas: "הזז את הקנבס", cut: "גזור", copy: "העתק", copyAsPng: "העתק ללוח כ PNG", copyAsSvg: "העתק ללוח כ SVG", copyText: "העתק ללוח כטקסט", copySource: "", convertToCode: "", bringForward: "הבא שכבה קדימה", sendToBack: "שלח אחורה", bringToFront: "העבר לחזית", sendBackward: "העבר שכבה אחורה", delete: "מחק", copyStyles: "העתק סגנון", pasteStyles: "הדבק סגנון", stroke: "קו מתאר", background: "רקע", fill: "מילוי", strokeWidth: "עובי קו מתאר", strokeStyle: "סגנון קו המתאר", strokeStyle_solid: "מלא", strokeStyle_dashed: "מקווקו", strokeStyle_dotted: "מנוקד", sloppiness: "רישול", opacity: "אטימות", textAlign: "יישור טקסט", edges: "קצוות", sharp: "חד", round: "עגול", arrowheads: "ראשי חצים", arrowhead_none: "ללא", arrowhead_arrow: "חץ", arrowhead_bar: "קצה אנכי", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "משולש", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "גודל גופן", fontFamily: "גופן", addWatermark: 'הוסף "נוצר באמצעות Excalidraw"', handDrawn: "ציור יד", normal: "רגיל", code: "קוד", small: "קטן", medium: "בינוני", large: "גדול", veryLarge: "גדול מאוד", solid: "מוצק", hachure: "קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה", zigzag: "זיגזג", crossHatch: "קווים מוצלבים שתי וערב", thin: "דק", bold: "מודגש", left: "שמאל", center: "מרכז", right: "ימין", extraBold: "מודגש במיוחד", architect: "ארכיטקט", artist: "אמן", cartoonist: "קריקטוריסט", fileTitle: "שם קובץ", colorPicker: "בוחר צבעים", canvasColors: "בשימוש בקנבס", canvasBackground: "רקע קנבס", drawingCanvas: "קנבס ציור", layers: "שכבות", actions: "פעולות", language: "שפה", liveCollaboration: "התחל שיתוף חי...", duplicateSelection: "שכפל", untitled: "ללא כותרת", name: "שם", yourName: "שמך", madeWithExcalidraw: "נוצר באמצעות Excalidraw", group: "קבץ", ungroup: "פרק קבוצה", collaborators: "שותפים", showGrid: "הצג רשת", addToLibrary: "הוסף לספריה", removeFromLibrary: "הסר מספריה", libraryLoadingMessage: "טוען ספריה…", libraries: "עיין בספריות", loadingScene: "טוען תצוגה…", align: "יישר", alignTop: "יישר למעלה", alignBottom: "יישר למטה", alignLeft: "יישר לשמאל", alignRight: "יישר לימין", centerVertically: "מרכז אנכית", centerHorizontally: "מרכז אופקית", distributeHorizontally: "חלוקה אופקית", distributeVertically: "חלוקה אנכית", flipHorizontal: "הפוך אופקית", flipVertical: "הפוך אנכית", viewMode: "מצב תצוגה", share: "שתף", showStroke: "הצג בוחר צבע מברשת", showBackground: "הצג בוחר צבע רקע", toggleTheme: "שינוי ערכת העיצוב", personalLib: "ספריה פרטית", excalidrawLib: "הספריה של Excalidraw", decreaseFontSize: "הקטן את גודל הגופן", increaseFontSize: "הגדל את גודל הגופן", unbindText: "ביטול קיבוע הטקסט", bindText: "קיבוע הטקסט למיכל", createContainerFromText: "ארוז טקסט במיכל", link: { edit: "עריכת קישור", editEmbed: "ערוך קישור ושבץ", create: "יצירת קישור", createEmbed: "צור קישור ושבץ", label: "קישור", labelEmbed: "קשר ושבץ", empty: "לא נקבע קישור" }, lineEditor: { edit: "ערוך קו", exit: "צא מעורך הקו" }, elementLock: { lock: "נעילה", unlock: "ביטול נעילה", lockAll: "לנעול הכל", unlockAll: "שחרור הכול" }, statusPublished: "פורסם", sidebarLock: "שמור את סרגל הצד פתוח", selectAllElementsInFrame: "בחר את כל האלמנטים במסגרת", removeAllElementsFromFrame: "הסר את כל האלמנטים שבמסגרת", eyeDropper: "", textToDiagram: "", prompt: "" }, gH = { noItems: "עוד לא הוספת דברים...", hint_emptyLibrary: "בחר משהו בקנבס כדי להוסיף אותו לכאן, או שתתקין ספריה מהספריה הציבורית מטה.", hint_emptyPrivateLibrary: "בחר משהו בקנבס כדי להוסיף אותו לכאן." }, tH = { clearReset: "אפס את הקנבאס", exportJSON: "ייצא לקובץ", exportImage: "ייצוא התמונה...", export: "שמור ל...", copyToClipboard: "העתק ללוח", save: "שמור לקובץ נוכחי", saveAs: "שמירה בשם", load: "פתח", getShareableLink: "קבל קישור לשיתוף", close: "סגור", selectLanguage: "בחר שפה", scrollBackToContent: "גלול בחזרה לתוכן", zoomIn: "הגדל", zoomOut: "הקטן", resetZoom: "איפוס זום", menu: "תפריט", done: "בוצע", edit: "ערוך", undo: "בטל", redo: "בצע מחדש", resetLibrary: "איפוס ספריה", createNewRoom: "צור חדר חדש", fullScreen: "מסך מלא", darkMode: "מצב כהה", lightMode: "מצב בהיר", zenMode: "מצב זן", objectsSnapMode: "", exitZenMode: "צא ממצב זן", cancel: "ביטול", clear: "ניקוי", remove: "הסר", embed: "", publishLibrary: "פרסום", submit: "שליחה", confirm: "אשר", embeddableInteractionButton: "" }, iH = { clearReset: "פעולה זו תנקה את כל הקנבס. אתה בטוח?", couldNotCreateShareableLink: "יצירת קישור לשיתוף נכשל.", couldNotCreateShareableLinkTooBig: "יצירת קישור לשיתוף נכשל: התצוגה גדולה מדי", couldNotLoadInvalidFile: "טעינת קובץ לא תקין נכשלה", importBackendFailed: "ייבוא מהשרת נכשל.", cannotExportEmptyCanvas: "לא ניתן לייצא קנבאס ריק.", couldNotCopyToClipboard: "לא ניתן היה להעתיק ללוח.", decryptFailed: "פיענוח ההצפנה של המידע נכשל.", uploadedSecurly: "ההעלאה אובטחה באמצעות הצפנה מקצה לקצה, פירוש הדבר שהשרת של Excalidraw וגורמי צד ג׳ לא יכולים לקרוא את התוכן.", loadSceneOverridePrompt: "טעינה של ציור חיצוני תחליף את התוכן הקיים שלך. האם תרצה להמשיך?", collabStopOverridePrompt: `עצירת השיתוף תוביל למחיקת הציור הקודם ששמור מקומית בדפדפן. האם אתה בטוח?

(אם תרצה לשמור את הציור המקומי, סגור את הטאב של הדפדפן במקום.)`, errorAddingToLibrary: "לא ניתן להוסיף פריט לספרייה", errorRemovingFromLibrary: "לא ניתן להסיר פריט מהספריה", confirmAddLibrary: "זה יוסיף {{numShapes}} צורה(ות) לספריה שלך. האם אתה בטוח?", imageDoesNotContainScene: "נראה שהתמונה לא מכילה מידע על הסצינה. האם אפשרת הטמעת מידע הסצינה בעת השמירה?", cannotRestoreFromImage: "לא הצלחנו לשחזר את הסצנה מקובץ התמונה", invalidSceneUrl: "ייבוא מידע סצנה מהקישור שסופק כשל. או שהוא משובש, או שאינו מכיל מידע של Excalidraw בפורמט JSON.", resetLibrary: "פעולה זו תנקה את כל הספריה שלך. אתה בטוח?", removeItemsFromsLibrary: "מחק {{count}} פריט(ים) מהספריה?", invalidEncryptionKey: "מפתח ההצפנה חייב להיות בן 22 תוים. השיתוף החי מנוטרל.", collabOfflineWarning: `אין חיבור זמין לאינטרנט.
השינויים שלך לא ישמרו!` }, EH = { unsupportedFileType: "סוג הקובץ אינו נתמך.", imageInsertError: "לא ניתן היה להוסיף את התמונה. אנא נסה שוב מאוחר יותר...", fileTooBig: "הקובץ גדול מדי. הגודל המירבי המותר הינו {{maxSize}}.", svgImageInsertError: "לא ניתן היה להוסיף את תמונת ה-SVG. הסימונים בתוך קובץ ה-SVG עשויים להיות שגויים.", failedToFetchImage: "", invalidSVGString: "SVG שגוי.", cannotResolveCollabServer: "לא הצלחתי להתחבר לשרת השיתוף. אנא רענן את הדף ונסה שוב.", importLibraryError: "לא ניתן היה לטעון את הספריה", collabSaveFailed: "לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.", collabSaveFailed_sizeExceeded: "לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aH = { selection: "בחירה", image: "הוספת תמונה", rectangle: "מלבן", diamond: "יהלום", ellipse: "אליפסה", arrow: "חץ", line: "קו", freedraw: "צייר", text: "טקסט", library: "ספריה", lock: "השאר את הכלי הנבחר פעיל גם לאחר סיום הציור", penMode: "מצב עט - מנע נגיעה", link: "הוספה/עדכון קישור של הצורה שנבחרה", eraser: "מחק", frame: "", magicframe: "", embeddable: "", laser: "", hand: "יד (כלי הזזה)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IH = { canvasActions: "פעולות קנבאס", selectedShapeActions: "פעולות על הצורות שנבחרו", shapes: "צורות" }, oH = { canvasPanning: "כדי להזיז את הקנבס, החזק את גלגל העכבר לחוץ או את מקש הרווח לחוץ תוך כדי גרירה, או השתמש בכלי היד", linearElement: "לחץ להתחלת מספר נקודות, גרור לקו יחיד", freeDraw: "לחץ וגרור, שחרר כשסיימת", text: "טיפ: אפשר להוסיף טקסט על ידי לחיצה כפולה בכל מקום עם כלי הבחירה", embeddable: "", text_selected: "לחץ לחיצה כפולה או הקש על אנטר לעריכת הטקסט", text_editing: "כדי לסיים את העריכה לחץ על מקש Escape או על Ctrl (Cmd במחשבי אפל) ומקש Enter", linearElementMulti: "הקלק על הנקודה האחרונה או הקש Escape או Enter לסיום", lockAngle: "ניתן להגביל את הזוויות על ידי החזקה של מקש ה- SHIFT", resize: `ניתן להגביל פרופורציות על ידי לחיצה על SHIFT תוך כדי שינוי גודל,
החזק ALT בשביל לשנות גודל ביחס למרכז`, resizeImage: `אתה יכול לשנות את הגודל בחופשיות על ידי החזקת מקש SHIFT,
החזק את מקש ALT כדי לבצע שינוי גודל מהמרכז`, rotate: "ניתן להגביל זוויות על ידי לחיצה על SHIFT תוך כדי סיבוב", lineEditor_info: "החזק Ctrl / Cmd ובצע לחיצה כפולה או לחץ Ctrl / Cmd + Enter לעריכת נקודות", lineEditor_pointSelected: `לחץ Delete למחיקת נקודה/ות,
Ctrl / Cmd + D לשכפול, או גרור להזזה`, lineEditor_nothingSelected: `בחר נקודה כדי לערוך (החזק SHIFT לבחירת כמה),
או החזק Alt והקלק להוספת נקודות חדשות`, placeImage: "הקלק להנחת התמונה, או הקלק וגרור להגדרת הגודל שלו ידנית", publishLibrary: "פרסם ספריה משלך", bindTextToElement: "הקש Enter כדי להוספת טקסט", deepBoxSelect: "החזק Ctrl / Cmd לבחירה עמוקה ולמניעת גרירה", eraserRevert: "החזק Alt להחזרת רכיבים מסומנים למחיקה", firefox_clipboard_write: 'יכולות זה ניתנת להפעלה על ידי שינוי הדגל של "dom.events.asyncClipboard.clipboardItem" למצב "true". כדי לשנות את הדגל בדפדפן Firefox, בקר בעמוד ״about:config״.', disableSnapping: "" }, QH = { cannotShowPreview: "לא ניתן להראות תצוגה מקדימה", canvasTooBig: "הקנבס עלול להיות גדול מדי.", canvasTooBigTip: "טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני." }, nH = { headingMain: "", clearCanvasMessage: "אם טעינה מחדש לא עובדת, נסה ", clearCanvasCaveat: " זה יגרום לאובדן העבודה ", trackedToSentry: "", openIssueMessage: "", sceneContent: "תוכן הקנבאס:" }, rH = { desc_intro: "אתה יכול להזמין אנשים לקנבאס הנוכחי שלך לעבודה משותפת.", desc_privacy: "אל דאגה, השיתוף מוצפן מקצה לקצה, כך שכל מה שתצייר ישאר פרטי. אפילו השרתים שלנו לא יוכלו לראות את מה שאתה ממציא.", button_startSession: "התחל שיתוף", button_stopSession: "הפסק שיתוף", desc_inProgressIntro: "שיתוף חי פעיל כרגע.", desc_shareLink: "שתף את הקישור עם כל מי שאתה מעוניין לעבוד אתו:", desc_exitSession: "עצירת השיתוף תנתק אותך מהחדר, אבל עדיין תוכל להמשיך לעבוד על הקנבאס, מקומית. שים לב שזה לא ישפיע על אנשים אחרים, והם עדיין יוכלו לבצע שיתוף עם הגרסה שלהם.", shareTitle: "הצטרף לשיתוף לעבודה משותפת חיה, בזמן אמת, על גבי Excalidraw" }, sH = { title: "שגיאה" }, lH = { disk_title: "שמור לכונן", disk_details: "ייצא מידע של הקנבאס לקובץ שתוכל לייבא אחר כך.", disk_button: "שמירה לקובץ", link_title: "קבל קישור לשיתוף", link_details: "ייצוא כקישור לקריאה בלבד.", link_button: "ייצוא לקישור", excalidrawplus_description: "שמור את הקנבאס לסביבת העבודה שלך ב- +Excalidraw.", excalidrawplus_button: "ייצוא", excalidrawplus_exportError: "לא הצלחתי לייצא ל- +Excalidraw כרגע..." }, cH = { blog: "קרא את הבלוג שלנו", click: "קליק", deepSelect: "בחירה עמוקה", deepBoxSelect: "בחירה עמוקה בתוך קופסה ומניעת גרירה", curvedArrow: "חץ מעוגל", curvedLine: "קו מעוגל", documentation: "תיעוד", doubleClick: "לחיצה כפולה", drag: "גרור", editor: "עורך", editLineArrowPoints: "", editText: "", github: "מצאת בעיה? דווח", howto: "עקוב אחר המדריכים שלנו", or: "או", preventBinding: "למנוע נעיצת חיצים", tools: "כלים", shortcuts: "קיצורי מקלדת", textFinish: "סיים עריכה (עורך טקסט)", textNewLine: "הוסף שורה חדשה (עורך טקסט)", title: "עזרה", view: "תצוגה", zoomToFit: "זום להתאמת כל האלמנטים למסך", zoomToSelection: "התמקד בבחירה", toggleElementLock: "נעילה/ביטול הנעילה של הרכיבים הנבחרים", movePageUpDown: "זוז עמוד למעלה/למטה", movePageLeftRight: "זוז עמוד שמאלה/ימינה" }, dH = { title: "ניקוי הקנבס" }, DH = { title: "פרסם ספריה", itemName: "שם הפריט", authorName: "שם היוצר", githubUsername: "שם המשתמש שלך ב-GitHub", twitterUsername: "שם המשתמש שלך ב-Twitter", libraryName: "שם הספריה", libraryDesc: "תיאור הספריה", website: "אתר", placeholder: { authorName: "שמך או שם המשתמש שלך", libraryName: "תנו שם לספריה", libraryDesc: "תיאור של הספריה שלך כדי לסייע למשתמשים להבין את השימוש בה", githubHandle: "כינוי GitHub (לא חובה), כדי שתוכל לערוך את הספרית לאחר שנשלחה לבדיקה", twitterHandle: "שם משתמש טוויטר (לא חובה), כדי שנדע למי לתת קרדיט כשאנחנו מפרסמים בטוויטר", website: "קישור לאתר הפרטי שלך או לכל מקום אחר (אופציונאלי)" }, errors: { required: "נדרש", website: "הזינו כתובת URL תקינה" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:", atleastOneLibItem: "אנא בחר לפחות פריט אחד מספריה כדי להתחיל", republishWarning: "הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים." }, hH = { title: "הספריה הוגשה", content: "תודה {{authorName}}. הספריה שלך נשלחה לבחינה. תוכל לעקוב אחרי סטטוס הפרסום" }, wH = { resetLibrary: "איפוס ספריה", removeItemsFromLib: "הסר את הפריטים הנבחרים מהספריה" }, FH = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, pH = { tooltip: "הציורים שלך מוצפנים מקצה לקצה כך שהשרתים של Excalidraw לא יראו אותם לעולם.", link: "פוסט בבלוג על הצפנה מקצה לקצב ב-Excalidraw" }, mH = { angle: "זווית", element: "רכיב", elements: "רכיבים", height: "גובה", scene: "תצוגה", selected: "נבחר", storage: "אחסון", title: "סטטיסטיקות לחנונים", total: "סה״כ", version: "גרסה", versionCopy: "לחץ להעתקה", versionNotAvailable: "הגרסה אינה זמינה", width: "רוחב" }, kH = { addedToLibrary: "נוסף לספריה", copyStyles: "סגנונות הועתקו.", copyToClipboard: "הועתק ללוח.", copyToClipboardAsPng: `{{exportSelection}} הועתקה ללוח כ-PNG
({{exportColorScheme}})`, fileSaved: "קובץ נשמר.", fileSavedToFilename: "נשמר לקובץ {filename}", canvas: "קנבאס", selection: "בחירה", pasteAsSingleElement: `השתמש ב- {{shortcut}} כדי להדביק כפריט יחיד,
או הדבק לתוך עורך טקסט קיים`, unableToEmbed: "", unrecognizedLinkFormat: "" }, yH = { transparent: "שקוף", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, bH = { app: { center_heading: "כל המידע שלח נשמר מקומית בדפדפן.", center_heading_plus: "אתה רוצה ללכת אל Excalidraw+ במקום?", menuHint: "ייצוא, העדפות, שפות, ..." }, defaults: { menuHint: "ייצוא, העדפות, ועוד...", center_heading: "איורים. נעשים. פשוטים.", toolbarHint: "בחר כלי & והתחל לצייר!", helpHint: "קיצורים & עזרה" } }, UH = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, GH = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fH = { title: "", button: "", description: "", syntax: "", preview: "" }, WmA = { labels: BH, library: gH, buttons: tH, alerts: iH, errors: EH, toolBar: aH, headings: IH, hints: oH, canvasError: QH, errorSplash: nH, roomDialog: rH, errorDialog: sH, exportDialog: lH, helpDialog: cH, clearCanvasDialog: dH, publishDialog: DH, publishSuccessDialog: hH, confirmDialog: wH, imageExportDialog: FH, encrypted: pH, stats: mH, toast: kH, colors: yH, welcomeScreen: bH, colorPicker: UH, overwriteConfirm: GH, mermaid: fH };
const jmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iH,
  buttons: tH,
  canvasError: QH,
  clearCanvasDialog: dH,
  colorPicker: UH,
  colors: yH,
  confirmDialog: wH,
  default: WmA,
  encrypted: pH,
  errorDialog: sH,
  errorSplash: nH,
  errors: EH,
  exportDialog: lH,
  headings: IH,
  helpDialog: cH,
  hints: oH,
  imageExportDialog: FH,
  labels: BH,
  library: gH,
  mermaid: fH,
  overwriteConfirm: GH,
  publishDialog: DH,
  publishSuccessDialog: hH,
  roomDialog: rH,
  stats: mH,
  toast: kH,
  toolBar: aH,
  welcomeScreen: bH
}, Symbol.toStringTag, { value: "Module" }));
var LH = { paste: "चिपकाएँ", pasteAsPlaintext: "सादे पाठ के रूप में चिपकाएं", pasteCharts: "चार्ट चिपकाएँ", selectAll: "सभी चुनें", multiSelect: "आकार को चयन में जोड़ें", moveCanvas: "कैनवास को स्थानांतरित करें", cut: "काटें", copy: "प्रतिलिपि", copyAsPng: "क्लिपबोर्ड पर कॉपी करें ,पीएनजी के रूप में", copyAsSvg: "क्लिपबोर्ड पर कॉपी करें,एसवीजी के रूप में", copyText: "लेखन के रूप में पटल पर कॉपी करें", copySource: "स्त्रोत को प्रति-फलक पे प्रतिलिपित करे.", convertToCode: "सांकेतिक लिपि में परिवर्तित करे", bringForward: "सामने लाएं", sendToBack: "पीछे भेजें", bringToFront: "सामने लाएँ", sendBackward: "पीचे भीजे", delete: "मिटाए", copyStyles: "कॉपी स्टाइल", pasteStyles: "स्टाइल पेस्ट करें", stroke: "रेखा", background: "पृष्ठभूमि", fill: "भरें", strokeWidth: "रेखा की चौड़ाई", strokeStyle: "स्ट्रोक का आकार", strokeStyle_solid: "ठोस", strokeStyle_dashed: "डैश", strokeStyle_dotted: "बिंदीदार", sloppiness: "बेढ़ंगापन", opacity: "अपारदर्शिता", textAlign: "टेक्स्ट संरेखन", edges: "किनारा", sharp: "नुकीला", round: "गोल", arrowheads: "तीर शीर्ष", arrowhead_none: "कोई भी नहीं", arrowhead_arrow: "तीर", arrowhead_bar: "बार", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "त्रिकोण", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "फ़ॉन्ट का आकार", fontFamily: "फ़ॉन्ट का परिवार", addWatermark: 'ऐड "मेड विथ एक्सकैलिडराव"', handDrawn: "हाथ से बनाया हुआ", normal: "साधारण", code: "कोड", small: "छोटा", medium: "मध्यम", large: "बड़ा", veryLarge: "बहुत बड़ा", solid: "दृढ़", hachure: "हैशूर", zigzag: "तेढ़ी मेढ़ी", crossHatch: "क्रॉस हैच", thin: "पतला", bold: "मोटा", left: "बाएं", center: "मध्य", right: "दाएँ", extraBold: "बहुत मोटा", architect: "वास्तुकार", artist: "कलाकार", cartoonist: "व्यंग्य चित्रकार", fileTitle: "फ़ाइल का नाम", colorPicker: "रंग चयन", canvasColors: "कॅनवास पर प्रयोगित", canvasBackground: "कैनवास बैकग्राउंड", drawingCanvas: "कैनवास बना रहे हैं", layers: "परतें", actions: "कार्रवाई", language: "भाषा", liveCollaboration: "जीवंत सहयोग...", duplicateSelection: "डुप्लिकेट", untitled: "अशीर्षित", name: "नाम", yourName: "आपका नाम", madeWithExcalidraw: "मेड विथ एक्सकैलिडराव", group: "समूह चयन", ungroup: "समूह चयन असमूहीकृत करें", collaborators: "सहयोगी", showGrid: "ग्रिड दिखाएं", addToLibrary: "लाइब्रेरी से जोड़ें", removeFromLibrary: "लाइब्रेरी से निकालें", libraryLoadingMessage: "लाइब्रेरी खुल रही है", libraries: "लाइब्रेरी ब्राउज़ करें", loadingScene: "दृश्य खुल रहा है", align: "संरेखित करें", alignTop: "ऊपर संरेखित करें", alignBottom: "नीचे संरेखित करें", alignLeft: "बायें संरेखित करें", alignRight: "दायें संरेखित करें", centerVertically: "लंबवत केन्द्रित", centerHorizontally: "क्षैतिज केन्द्रित", distributeHorizontally: "क्षैतिज रूप से वितरित करें", distributeVertically: "खड़ी रूप से वितरित करें", flipHorizontal: "दायें बायें पलटे", flipVertical: "ऊपर नीचे पलटे", viewMode: "अलग अलग देखें", share: "शेयर करें", showStroke: "", showBackground: "पृष्ठभूमि रंग वरक़ दिखाये", toggleTheme: "", personalLib: "वैयक्तिक समूहकोष", excalidrawLib: "एक्सकेलीड्रॉ समूहकोष", decreaseFontSize: "आकार घटाइऐ", increaseFontSize: "फ़ॉन्ट आकार बढ़ाएँ", unbindText: "लिपि को बंधमुक्त करें", bindText: "लेखन को कोश से जोड़े", createContainerFromText: "मूलपाठ कंटेनर में मोड के दिखाए", link: { edit: "कड़ी संपादित करे", editEmbed: "", create: "", createEmbed: "", label: "", labelEmbed: "", empty: "" }, lineEditor: { edit: "रेखा संपादित करे", exit: "रेखा संपादक के बाहर" }, elementLock: { lock: "ताले में रखें", unlock: "ताले से बाहर", lockAll: "सब ताले के अंदर रखे", unlockAll: "सब ताले के बाहर निकाले" }, statusPublished: "प्रकाशित", sidebarLock: "साइडबार खुला रखे.", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "चित्रफलक से रंग चुने", textToDiagram: "", prompt: "" }, xH = { noItems: "अभी तक कोई आइटम जोडा नहीं गया.", hint_emptyLibrary: "यहाँ जोड़ने के लिए पटल से एक वस्तु चुने, अथवा जन कोष से एक संग्रह नीचे स्थापित करें.", hint_emptyPrivateLibrary: "यहाँ जोड़ने के लिए पटल से एक वस्तु चुने." }, SH = { clearReset: "कैनवास रीसेट करें", exportJSON: "", exportImage: "प्रतिमा निर्यात करे...", export: "यंहा सुरक्षित करे...", copyToClipboard: "क्लिपबोर्ड पर प्रतिलिपि बनाएँ", save: "", saveAs: "सेव करे इस तरह", load: "खोलें", getShareableLink: "साझा करने योग्य लिंक प्राप्त करें", close: "बंद करें", selectLanguage: "भाषा चुनें", scrollBackToContent: "सामग्री पर वापस स्क्रॉल करें", zoomIn: "बड़ा करें", zoomOut: "छोटा करें", resetZoom: "ज़ूम रीसेट करें", menu: "मेन्यू", done: "समाप्त", edit: "संशोधन करें", undo: "पूर्ववत् करें", redo: "फिर से करें", resetLibrary: "", createNewRoom: "एक नया कमरा बनाएं", fullScreen: "पूरी स्क्रीन", darkMode: "डार्क मोड", lightMode: "लाइट मोड", zenMode: "ज़ेन मोड", objectsSnapMode: "वस्तुओं से पकड़े", exitZenMode: "जेन मोड से बाहर निकलें", cancel: "", clear: "साफ़ करे", remove: "हटाएं", embed: "", publishLibrary: "प्रकाशित करें", submit: "प्रस्तुत करे", confirm: "पुष्टि करें", embeddableInteractionButton: "" }, NH = { clearReset: "इससे पूरा कैनवास साफ हो जाएगा। क्या आपको यकीन है?", couldNotCreateShareableLink: "साझा करने योग्य लिंक नहीं बनाया जा सका।", couldNotCreateShareableLinkTooBig: "लिंक शेयर नहीं कर सकता: दृश्य बहुत बड़ा", couldNotLoadInvalidFile: "अमान्य फ़ाइल लोड नहीं की जा सकी", importBackendFailed: "बैकएंड से आयात करना विफल रहा।", cannotExportEmptyCanvas: "खाली कैनवास निर्यात नहीं कर सकता।", couldNotCopyToClipboard: "क्लिपबोर्ड पर कॉपी नहीं किया जा सका", decryptFailed: "डेटा को डिक्रिप्ट नहीं किया जा सका।", uploadedSecurly: "अपलोड को एंड-टू-एंड एन्क्रिप्शन के साथ सुरक्षित किया गया है, जिसका मतलब है कि एक्सक्लूसिव सर्वर और थर्ड पार्टी कंटेंट नहीं पढ़ सकते हैं।", loadSceneOverridePrompt: "लोड हो रहा है बाहरी ड्राइंग आपके मौजूदा सामग्री को बदल देगा। क्या आप जारी रखना चाहते हैं?", collabStopOverridePrompt: "चालू सत्र समाप्ति से आपका संग्रहित पूर्व स्थानीय अधिलेखन नष्ट होकर पुनः अधिलेखित होगा, क्या आपको यक़ीन हैं? ( यदी आपको पूर्व स्थापित अधिलेखन सुरक्षित चाहिये तो बस ब्राउज़र टैब बंद करे)", errorAddingToLibrary: "संग्रह में जोडा न जा सका", errorRemovingFromLibrary: "संग्रह से हटाया नहीं जा सका", confirmAddLibrary: "लाइब्रेरी जोड़ें पुष्‍टि करें आकार संख्या", imageDoesNotContainScene: "ऐसा लगता है कि इस छवि में कोई दृश्य डेटा नहीं है। क्या आपने निर्यात के दौरान दृश्य एम्बेडिंग अनुमतित की है?", cannotRestoreFromImage: "छवि फ़ाइल बहाल दृश्य नहीं है", invalidSceneUrl: "दिये गये युआरेल से दृश्य आयात नहीं किया जा सका. यह या तो अनुचित है, या इसमें उचित Excalidraw JSON डेटा नहीं है।", resetLibrary: "यह पूरा संग्रह रिक्त करेगा. क्या आपको यक़ीन हैं?", removeItemsFromsLibrary: "{{count}} वस्तु(यें) संग्रह से हटायें?", invalidEncryptionKey: "कूटलेखन कुंजी 22 अक्षरों की होनी चाहिये, इसलिये जीवंत सहयोग अक्षम हैं", collabOfflineWarning: `कोई इंटरनेट कनेक्शन उपलब्ध नहीं है।
आपके बदलाव सहेजे नहीं जाएंगे!` }, RH = { unsupportedFileType: "असमर्थित फाइल प्रकार", imageInsertError: "छवि सम्मिलित नहीं की जा सकी. पुनः प्रयत्न करे...", fileTooBig: "फ़ाइल ज़रूरत से ज़्यादा बड़ी हैं. अधिकतम अनुमित परिमाण {{maxSize}} हैं", svgImageInsertError: "एसवीजी छवि सम्मिलित नहीं कर सके, एसवीजी रचना अनुचित हैं", failedToFetchImage: "", invalidSVGString: "अनुचित SVG", cannotResolveCollabServer: "कॉलेब सर्वर से कनेक्शन नहीं हो पा रहा. कृपया पृष्ठ को पुनः लाने का प्रयास करे.", importLibraryError: "संग्रह प्रतिष्ठापित नहीं किया जा सका", collabSaveFailed: "किसी कारण वश अंदरूनी डेटाबेस में सहेजा नहीं जा सका। यदि समस्या बनी रहती है, तो किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।", collabSaveFailed_sizeExceeded: "लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।", imageToolNotSupported: "प्रतिमायें अक्षम की गयी हैं", brave_measure_text_error: { line1: "लगता है कि आप Brave ब्राउज़र का उपयोग कर रहे और साथ में <bold>आक्रामक उँगलियो के छाप </bold> का चयन किया हुवा है", line2: "यह आपके चित्रों के <bold>पाठ तत्वों</bold>को खंडित कर सकता हैं", line3: "हमें आपसे ठोस आग्रह है की आप सेट्टिंग में इस विकल्प का चयन ना करे.<link> इस अनुक्रम </link> का पालन करके इसका पता लगा सकते हैं", line4: "यदि इस सेटिंग्स को अक्षम करने पर भी पृष्ठ ठीक नहीं दिखता हो तो, हमारे GitHub पर एक <issueLink>मुद्दा प्रस्तुत</issueLink> करे, या हमें <discordLink>डिस्कोर्ड</discordLink> पर लिखित सम्पर्क करें" }, libraryElementTypeError: { embeddable: "", iframe: "आयफ़्रेम तत्व समूहकोष में जोडा नहीं जा सका.", image: "" }, asyncPasteFailedOnRead: "चिपकाया नहीं जा सका (सिस्टम क्लिपबोर्ड से पढ़ा नहीं जा सका).", asyncPasteFailedOnParse: "चिपकाया नहीं जा सका.", copyToSystemClipboardFailed: "क्लिपबोर्ड पर प्रतिलिपि नहीं बनाई जा सकी." }, MH = { selection: "चयन", image: "छवि सम्मिलित करें", rectangle: "आयात", diamond: "तिर्यग्वर्ग", ellipse: "दीर्घवृत्त", arrow: "तीर", line: "रेखा", freedraw: "चित्रांतित करे", text: "पाठ", library: "लाइब्रेरी", lock: "ड्राइंग के बाद चयनित टूल को सक्रिय रखें", penMode: "पेन का मोड - स्पर्श टाले", link: "", eraser: "रबड़", frame: "", magicframe: "तारिक ढाँचें को सांकेतिक लिपि में", embeddable: "", laser: "लेसर टॉर्च", hand: "हाथ ( खिसकाने का औज़ार)", extraTools: "", mermaidToExcalidraw: "मर्मेड से एक्सकाली में", magicSettings: "कृतिम बुद्धिमत्ता सेटिंग्स" }, YH = { canvasActions: "कैनवास क्रिया", selectedShapeActions: "चयनित आकृति क्रियाएं", shapes: "आकृतियाँ" }, vH = { canvasPanning: "कैनवास को सरकाने के लिए, ड्रैग करते समय माउस व्हील को पकड़े रखे या स्पेसबार को दबाए रखे, अथवा हाथ वाले औज़ार का उपयोग करें", linearElement: "कई बिंदुओं को शुरू करने के लिए क्लिक करें, सिंगल लाइन के लिए खींचें", freeDraw: "क्लिक करें और खींचें। समाप्त करने के लिए, छोड़ो", text: "आप चयन टूल से कहीं भी डबल-क्लिक करके टेक्स्ट जोड़ सकते हैं", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "अंतिम बिंदु पर क्लिक करें या समाप्त होने के लिए एस्केप या एंटर दबाएं", lockAngle: "आप घूर्णन करते समय SHIFT पकड़कर कोणों को मोड़ सकते हैं", resize: `आकार बदलते समय आप SHIFT को पकड़ कर अनुपात में कमी कर सकते हैं,
केंद्र से आकार बदलने के लिए ALT दबाए रखें`, resizeImage: "", rotate: "आप घूर्णन करते समय SHIFT पकड़कर कोणों को विवश कर सकते हैं", lineEditor_info: "बिंदुओं को सम्पादित करने के लिए CtrlOrCmd को दबायें रखते हुये डबल क्लिक करे, अथवा CtrlOrCmd + Enter साथ दबाये", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "मिटाने के लिए चुने हुए चीजों को ना चुनने के लिए Alt साथ में दबाए", firefox_clipboard_write: '"dom.events.asyncClipboard.clipboardItem" फ़्लैग को "true" पर सेट करके इस सुविधा को संभवतः सक्षम किया जा सकता है। Firefox में ब्राउज़र फ़्लैग बदलने के लिए, "about:config" पृष्ठ पर जाएँ।', disableSnapping: "स्नैपिंग को निष्क्रिय करने के लिए CtrlOrCmd दबाए रखें" }, HH = { cannotShowPreview: "पूर्वावलोकन नहीं दिखा सकते हैं", canvasTooBig: "कैनवास बहुत बड़ा", canvasTooBigTip: "कैनवास बहुत बड़ा टिप" }, KH = { headingMain: "एक त्रुटि का सामना करना पड़ा। प्रयत्न <button>इस पृष्ठ को पुनः लोड करें</button>", clearCanvasMessage: "यदि पुनः लोड करना काम नहीं करता है, तो प्रयास करें <button>कैनवास साफ करना।</button>", clearCanvasCaveat: " इससे काम का नुकसान होगा ", trackedToSentry: "पहचानकर्ता के साथ त्रुटि {{eventId}} हमारे सिस्टम पर नज़र रखी गई थी।", openIssueMessage: "हम बहुत सतर्क थे कि त्रुटि पर आपकी दृश्य जानकारी शामिल न करें। यदि आपका दृश्य निजी नहीं है, तो कृपया हमारे बारे में विचार करें <button>बग ट्रैकर</button> कृपया GitHub मुद्दे को कॉपी और पेस्ट करके नीचे दी गई जानकारी शामिल करें।", sceneContent: "दृश्य सामग्री:" }, JH = { desc_intro: "आप अपने वर्तमान दृश्य के लोगों को अपने साथ सहयोग करने के लिए आमंत्रित कर सकते हैं।", desc_privacy: "चिंता न करें, सत्र अंत-से-अंत एन्क्रिप्शन का उपयोग करता है, इसलिए आप जो भी ड्रा करेंगे वह निजी रहेगा। यहां तक कि हमारा सर्वर भी नहीं देख पाएगा कि आप क्या कर रहे हैं।", button_startSession: "सत्र प्रारंभ करें", button_stopSession: "सत्र रुकें", desc_inProgressIntro: "लाइव सहयोग सत्र अब जारी है।", desc_shareLink: "इस लिंक को आप जिस किसी के साथ भी सहयोग करना चाहते हैं, उसके साथ साझा करें", desc_exitSession: "सत्र रोकना आपको रूम से बाहर कर देगा, लेकिन आप स्थानीय स्तर पर दृश्य के साथ काम करना जारी रख पाएंगे। ध्यान दें कि यह अन्य लोगों को प्रभावित नहीं करेगा, और वे अभी भी अपने संस्करण पर सहयोग करने में सक्षम होंगे।", shareTitle: "" }, ZH = { title: "गलती" }, qH = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, WH = { blog: "हमारा ब्लॉग पढे", click: "क्लिक करें", deepSelect: "", deepBoxSelect: "", curvedArrow: "वक्र तीर", curvedLine: "वक्र रेखा", documentation: "", doubleClick: "", drag: "खींचें", editor: "संपादक", editLineArrowPoints: "रेखा/तीर बिंदु सम्पादित करे", editText: "पाठ्य सम्पादित करे/ लेबल जोड़े", github: "मुद्दा मिला? प्रस्तुत करें", howto: "हमारे गाइड का पालन करें", or: "या", preventBinding: "तीर बंधन रोकें", tools: "औज़ार", shortcuts: "कीबोर्ड के शॉर्टकट्स", textFinish: "", textNewLine: "", title: "मदद", view: "दृश्य", zoomToFit: "सभी तत्वों को फिट करने के लिए ज़ूम करें", zoomToSelection: "चयन तक ज़ूम करे", toggleElementLock: "ताले के अंदर/बाहर चुनाव", movePageUpDown: "पृष्ठ ऊपर/नीचे करे", movePageLeftRight: "पृष्ठ बायी/दायी तरफ करे" }, jH = { title: "" }, TH = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "मान्य URL प्रविष्ट करें" }, noteDescription: "संग्रह सम्मिलित करने हेतु प्रस्तुत करें <link>सार्वजनिक संग्रहालय</link>अन्य वक्तियों को उनके चित्रकारी में उपयोग के लिये", noteGuidelines: "संग्रह को पहले स्वीकृति आवश्यक कृपया यह पढ़ें <link>दिशा-निर्देश</link>", noteLicense: "जमा करके, आप सहमत हैं कि संग्रहण को <link>MIT लाइसेंस</link> के तहत प्रकाशित किया जाएगा, जिसका संक्षिप्त अर्थ है कि कोई भी बिना किसी प्रतिबंध के उनका उपयोग कर सकता है।", noteItems: "", atleastOneLibItem: "", republishWarning: "टिप्पणी: कुछ चुने हुवे आइटम पहले ही प्रकाशित/प्रस्तुत किए जा चुके हैं। किसी प्रकाशित संग्रह को अद्यतन करते समय या पहले से प्रस्तुत आइटम को पुन्हा प्रस्तुत करते समय, आप बस उसे केवल अद्यतन करें ।" }, zH = { title: "", content: "{{authorName}} धन्यवाद. आपका संग्रहण समीक्षा के लिए दर्ज हो चुका है. समीक्षा स्थिति <link>यहाँ</link>जान सकते हैं." }, PH = { resetLibrary: "", removeItemsFromLib: "" }, OH = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, VH = { tooltip: "आपके चित्र अंत-से-अंत एन्क्रिप्टेड हैं, इसलिए एक्सक्लूसिव्रॉव के सर्वर उन्हें कभी नहीं देखेंगे।", link: "" }, XH = { angle: "कोण", element: "एलिमेंट", elements: "एलिमेंट", height: "ऊंचाई", scene: "दृश्य", selected: "चयनित", storage: "संग्रह", title: "बेवकूफ के लिए आँकड़े", total: "कुल", version: "संस्करण", versionCopy: "काॅपी करने के लिए क्लिक करें", versionNotAvailable: "संस्करण उपलब्ध नहीं है", width: "चौड़ाई" }, _H = { addedToLibrary: "", copyStyles: "काॅपी कीए स्टाइल", copyToClipboard: "क्लिपबोर्ड में कॉपी कीए", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "", selection: "", pasteAsSingleElement: `एक अवयव के रूप में चिपकाने के लिए {{shortcut}} का उपयोग करें,
या किसी मौजूदा पाठ संपादक में चिपकायें`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $H = { transparent: "", black: "काला", white: "सफ़ेद", red: "लाल", pink: "गुलाबी", grape: "अंगूरी", violet: "जामुनी", gray: "गहरा", blue: "नीला", cyan: "आसमानी", teal: "हरा-नीला", green: "हरा", yellow: "पीला", orange: "नारंगी", bronze: "कांस्य" }, AK = { app: { center_heading: "आपका सर्व डेटा ब्राउज़र के भीतर स्थानिक जगह पे सुरक्षित किया गया.", center_heading_plus: "बजाय आपको Excalidraw+ पर जाना है?", menuHint: "निर्यात, पसंद, भाषायें, ..." }, defaults: { menuHint: "निर्यात, पसंद, और भी...", center_heading: "चित्रांकन। बनाया गया। सरल।", toolbarHint: "एक औजार चुने और चित्रकारी प्रारंभ करे!", helpHint: "शॉर्ट्कट और सहाय्य" } }, uK = { mostUsedCustomColors: "अधिकांश उपयोगित रंग", colors: "रंग", shades: "छाया", hexCode: "हेक्स कोड", noShades: "इस रंग की कोई छाया उपलब्ध नहीं हैं" }, eK = { action: { exportToImage: { title: "छवि स्वरूप में निर्यात करे", button: "छवि स्वरूप निर्यात करे", description: "दृष्य डेटा छवि स्वरूप में निर्यात करे, उस स्वरूप से आप उसे पुनः आयात कर सकते हो" }, saveToDisk: { title: "डिस्क में सम्हाले", button: "डिस्क में सम्हाले", description: "दृष्य डेटा बाहरी फ़ाइल में निर्यात करे, जहाँसे आप उसे पुनः आयात कर सकते हो" }, excalidrawPlus: { title: "एक्षकालीड्रॉ+", button: "एक्षकालीड्रॉ+ में निर्यात करे", description: "दृष्य को आपके एक्षकालीड्रॉ+ के कर्यस्थल में सम्हाले" } }, modal: { loadFromFile: { title: "फ़ाइल से लोड करें:", button: "फ़ाइल से लोड करें:", description: "फ़ाइल से लोड करने पर <bold>यह आपके कार्य की जगह लेलेगा </bold><br></br>आपकी ड्रॉइंग निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हैं" }, shareableLink: { title: "लिंक से लोड करें:", button: "इस जगह प्रतिस्थापित करे", description: "बाहर का चित्र लोड करने पर <bold>यह आपके कार्य की जगह लेलेगा </bold><br></br>आप आपकी ड्रॉइंग पहले निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हों." } } }, CK = { title: "मर्मेड से एक्सकाली में", button: "अंदर डाले", description: "", syntax: "मर्मेड संरचना नियम", preview: "पूर्वावलोकन" }, TmA = { labels: LH, library: xH, buttons: SH, alerts: NH, errors: RH, toolBar: MH, headings: YH, hints: vH, canvasError: HH, errorSplash: KH, roomDialog: JH, errorDialog: ZH, exportDialog: qH, helpDialog: WH, clearCanvasDialog: jH, publishDialog: TH, publishSuccessDialog: zH, confirmDialog: PH, imageExportDialog: OH, encrypted: VH, stats: XH, toast: _H, colors: $H, welcomeScreen: AK, colorPicker: uK, overwriteConfirm: eK, mermaid: CK };
const zmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NH,
  buttons: SH,
  canvasError: HH,
  clearCanvasDialog: jH,
  colorPicker: uK,
  colors: $H,
  confirmDialog: PH,
  default: TmA,
  encrypted: VH,
  errorDialog: ZH,
  errorSplash: KH,
  errors: RH,
  exportDialog: qH,
  headings: YH,
  helpDialog: WH,
  hints: vH,
  imageExportDialog: OH,
  labels: LH,
  library: xH,
  mermaid: CK,
  overwriteConfirm: eK,
  publishDialog: TH,
  publishSuccessDialog: zH,
  roomDialog: JH,
  stats: XH,
  toast: _H,
  toolBar: MH,
  welcomeScreen: AK
}, Symbol.toStringTag, { value: "Module" }));
var BK = { paste: "Beillesztés", pasteAsPlaintext: "Beillesztés formázatlan szövegként", pasteCharts: "Grafikon beillesztése", selectAll: "Összes kijelölése", multiSelect: "Elem hozzáadása a kijelöléshez", moveCanvas: "Vászon mozgatása", cut: "Kivágás", copy: "Másolás", copyAsPng: "Vágólapra másolás mint PNG", copyAsSvg: "Vágólapra másolás mint SVG", copyText: "Vágólapra másolás szövegként", copySource: "", convertToCode: "", bringForward: "Előrébb hozás", sendToBack: "Hátraküldés", bringToFront: "Előrehozás", sendBackward: "Hátrébb küldés", delete: "Törlés", copyStyles: "Stílus másolása", pasteStyles: "Stílus beillesztése", stroke: "Körvonal", background: "Háttér", fill: "Kitöltés", strokeWidth: "Körvonal vastagsága", strokeStyle: "Körvonal stílusa", strokeStyle_solid: "Kitöltött", strokeStyle_dashed: "Szaggatott", strokeStyle_dotted: "Pontozott", sloppiness: "Stílus", opacity: "Áttetszőség", textAlign: "Szöveg igazítása", edges: "Szélek", sharp: "Éles", round: "Kerek", arrowheads: "Nyílhegyek", arrowhead_none: "Nincs", arrowhead_arrow: "Nyíl", arrowhead_bar: "Oszlop", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Háromszög", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Betűméret", fontFamily: "Betűkészlet család", addWatermark: 'Add hozzá, hogy "Excalidraw-val készült"', handDrawn: "Kézzel rajzolt", normal: "Normál", code: "Kód", small: "Kicsi", medium: "Közepes", large: "Nagy", veryLarge: "Nagyon nagy", solid: "Kitöltött", hachure: "Vonalkázott", zigzag: "Cikkcakk", crossHatch: "Keresztcsíkozott", thin: "Vékony", bold: "Félkövér", left: "Bal", center: "Közép", right: "Jobb", extraBold: "Extra Félkövér", architect: "Tervezői", artist: "Művészi", cartoonist: "Karikatúrás", fileTitle: "Fájlnév", colorPicker: "Színválasztó", canvasColors: "Rajzvászonon használt", canvasBackground: "Vászon háttérszíne", drawingCanvas: "Rajzvászon", layers: "Rétegek", actions: "Műveletek", language: "Nyelv", liveCollaboration: "Élő együttműködés...", duplicateSelection: "Duplikálás", untitled: "Névtelen", name: "Név", yourName: "Neved", madeWithExcalidraw: "Excalidraw-val készült", group: "Csoportosítás", ungroup: "Csoportbontás", collaborators: "Közreműködők", showGrid: "Rács megjelenítése", addToLibrary: "Hozzáadás a könyvtárhoz", removeFromLibrary: "Eltávólítás a könyvtárból", libraryLoadingMessage: "Könyvtár betöltése…", libraries: "Könyvtárak böngészése", loadingScene: "Jelenet betöltése…", align: "Igazítás", alignTop: "Felülre igazítás", alignBottom: "Alulra igazítás", alignLeft: "Balra igazítás", alignRight: "Jobbra igazítás", centerVertically: "Függőlegesen középre igazított", centerHorizontally: "Vízszintesen középre igazított", distributeHorizontally: "Vízszintes elosztás", distributeVertically: "Függőleges elosztás", flipHorizontal: "Vízszintes tükrözés", flipVertical: "Függőleges tükrözés", viewMode: "Nézet", share: "Megosztás", showStroke: "Körvonal színválasztó megjelenítése", showBackground: "Háttérszín-választó megjelenítése", toggleTheme: "Téma váltása", personalLib: "Személyes könyvtár", excalidrawLib: "Excalidraw könyvtár", decreaseFontSize: "Betűméret csökkentése", increaseFontSize: "Betűméret növelése", unbindText: "Szövegkötés feloldása", bindText: "", createContainerFromText: "Szöveg bekeretezése", link: { edit: "Hivatkozás szerkesztése", editEmbed: "Link szerkesztése / beágyazása", create: "Hivatkozás létrehozása", createEmbed: "Link létrehozása / beágyazása", label: "Hivatkozás", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "Rögzítés", unlock: "Rögzítés feloldása", lockAll: "Összes rögzítése", unlockAll: "Összes feloldása" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gK = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, tK = { clearReset: "Vászon törlése", exportJSON: "Exportálás fájlba", exportImage: "Kép exportálása...", export: "Mentés másként...", copyToClipboard: "Vágólapra másolás", save: "Mentés az aktuális fájlba", saveAs: "Mentés másként", load: "Megnyitás", getShareableLink: "Megosztható link létrehozása", close: "Bezárás", selectLanguage: "Nyelv kiválasztása", scrollBackToContent: "Visszagörgetés a tartalomhoz", zoomIn: "Nagyítás", zoomOut: "Kicsinyítés", resetZoom: "Nagyítás alaphelyzetbe", menu: "Menü", done: "Kész", edit: "Szerkesztés", undo: "Vissza", redo: "Újra", resetLibrary: "Könyvtár alaphelyzetbe állítása", createNewRoom: "Új szoba létrehozása", fullScreen: "Teljes képernyő", darkMode: "Sötét mód", lightMode: "Világos mód", zenMode: "Letisztult mód", objectsSnapMode: "", exitZenMode: "Kilépés a letisztult módból", cancel: "Mégsem", clear: "Kiűrítés", remove: "Eltávolítás", embed: "", publishLibrary: "Közzététel", submit: "Elküldés", confirm: "Megerősítés", embeddableInteractionButton: "" }, iK = { clearReset: "Ez a művelet törli a vászont. Biztos benne?", couldNotCreateShareableLink: "Nem sikerült megosztható linket létrehozni.", couldNotCreateShareableLinkTooBig: "Nem sikerült megosztható linket látrehozni: túl nagy a jelenet", couldNotLoadInvalidFile: "Nem sikerült betölteni a helytelen fájlt", importBackendFailed: "Nem sikerült betölteni a szerverről.", cannotExportEmptyCanvas: "Üres vászont nem lehet exportálni.", couldNotCopyToClipboard: "", decryptFailed: "Nem sikerült visszafejteni a titkosított adatot.", uploadedSecurly: "A feltöltést végpontok közötti titkosítással biztosítottuk, ami azt jelenti, hogy egy harmadik fél nem tudja megnézni a tartalmát, beleértve az Excalidraw szervereit is.", loadSceneOverridePrompt: "A betöltött külső rajz felül fogja írnia meglévőt. Szeretnéd folytatni?", collabStopOverridePrompt: `A munkamenet leállítása felül fogja írni az előzőleg helyben tárolt rajzot. Biztosan ezt akarod?
(Ha meg akarod tartani a helyben tárolt rajzot, egyszerűen csak zárd be a böngésző fület)`, errorAddingToLibrary: "A tétel nem addható hozzá a könyvtárhoz", errorRemovingFromLibrary: "A tétel nem távolítható el a könyvtárból", confirmAddLibrary: "Ez a művelet {{numShapes}} formát fog hozzáadni a könyvtáradhoz. Biztos vagy benne?", imageDoesNotContainScene: "Úgy tűnik, hogy ez a kép nem tartalmaz jelenetadatokat. Engedélyezted a jelenetbeágyazást az exportálás során?", cannotRestoreFromImage: "A jelenet visszaállítása nem sikerült ebből a kép fájlból", invalidSceneUrl: "Nem sikerült importálni a jelenetet a megadott URL-ről. Rossz formátumú, vagy nem tartalmaz érvényes Excalidraw JSON-adatokat.", resetLibrary: "Ezzel törlöd a könyvtárát. biztos vagy ebben?", removeItemsFromsLibrary: "{{count}} elemet törölsz a könyvtárból?", invalidEncryptionKey: "A titkosítási kulcsnak 22 karakterből kell állnia. Az élő együttműködés le van tiltva.", collabOfflineWarning: "" }, EK = { unsupportedFileType: "Nem támogatott fájltípus.", imageInsertError: "Nem sikerült beszúrni a képet. Próbáld újra később...", fileTooBig: "A fájl túl nagy. A megengedett maximális méret {{maxSize}}.", svgImageInsertError: "Nem sikerült beszúrni az SVG-képet. Az SVG szintaktika érvénytelennek tűnik.", failedToFetchImage: "", invalidSVGString: "Érvénytelen SVG.", cannotResolveCollabServer: "", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aK = { selection: "Kijelölés", image: "Kép beszúrása", rectangle: "Téglalap", diamond: "Rombusz", ellipse: "Ellipszis", arrow: "Nyíl", line: "Vonal", freedraw: "Rajzolás", text: "Szöveg", library: "Könyvtár", lock: "Rajzolás után az aktív eszközt tartsa kijelölve", penMode: "", link: "Hivatkozás hozzáadása/frissítése a kiválasztott alakzathoz", eraser: "Radír", frame: "", magicframe: "", embeddable: "Weblap beágyazása", laser: "Lézermutató", hand: "", extraTools: "További eszközök", mermaidToExcalidraw: "", magicSettings: "" }, IK = { canvasActions: "Vászon műveletek", selectedShapeActions: "Kijelölt forma műveletei", shapes: "Alakzatok" }, oK = { canvasPanning: "", linearElement: "Kattintással görbe, az eger húzásával pedig egyenes nyilat rajzolhatsz", freeDraw: "Kattints és húzd, majd engedd el, amikor végeztél", text: "Tipp: A kijelölés eszközzel a dupla kattintás új szöveget hoz létre", embeddable: "", text_selected: "Kattints duplán, vagy nyomj entert a szöveg szerkesztéséhez", text_editing: "Nyomjd meg az Escape vagy a Ctrl/Cmd+ENTER billentyűkombinációt a szerkesztés befejezéséhez", linearElementMulti: "Kattints a következő ív pozíciójára, vagy fejezd be a nyilat az Escape vagy Enter megnyomásával", lockAngle: "A SHIFT billentyű lenyomva tartásával korlátozhatja forgatás szögét", resize: `A SHIFT billentyű lenyomva tartásával az átméretezés megtartja az arányokat,
az ALT lenyomva tartásával pedig a középpont egy helyben marad`, resizeImage: `A SHIFT billentyű lenyomva tartásával szabadon átméretezheted,
tartsd lenyomva az ALT billentyűt a középről való átméretezéshez`, rotate: "A SHIFT billentyű lenyomva tartásával korlátozhatja a szögek illesztését", lineEditor_info: "", lineEditor_pointSelected: `Nyomd meg a Törlés gombot a pont(ok) eltávolításához,
A Ctrl/Cmd+D a többszörözéshez, vagy húzással mozgathatja`, lineEditor_nothingSelected: `Válaszd ki a szerkeszteni kívánt pontot (több kijelöléséhez tartsd lenyomva a SHIFT billentyűt),
vagy Alt, és kattintson az új pontok hozzáadásához`, placeImage: "Kattints a kép elhelyezéséhez, vagy kattints és méretezd manuálisan", publishLibrary: "Tedd közzé saját könyvtáradat", bindTextToElement: "Nyomd meg az Entert szöveg hozzáadáshoz", deepBoxSelect: "Tartsd lenyomva a Ctrl/Cmd billentyűt a mély kijelöléshez és a húzás megakadályozásához", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, QK = { cannotShowPreview: "Előnézet nem jeleníthető meg", canvasTooBig: "A vászon talán túl nagy.", canvasTooBigTip: "Tipp: próbáld meg a legtávolabbi elemeket közelebb hozni egy máshoz." }, nK = { headingMain: "Hiba történt. Próbáld <button>újratölteni az oldalt.</button>", clearCanvasMessage: "Ha az újratöltés nem működik, próbáld <button>letörölni a vászont.</button>", clearCanvasCaveat: " Ezzel az eddigi munka elveszik ", trackedToSentry: "A hibakód azonosítóval {{eventId}} nyomon van követve a rendszerünkben.", openIssueMessage: "Vigyáztunk arra, hogy a jelenthez tartozó információ ne jelenjen meg a hibaüzenetben. Ha a jeleneted nem bizalmas, kérjük add hozzá a <button>hibakövető rendszerünkhöz.</button> Kérjük, másolja be az alábbi információkat a GitHub problémába.", sceneContent: "Jelenet tartalma:" }, rK = { desc_intro: "Meghívhat embereket a jelenlegi jelenetbe, hogy együttműködjenek önnel.", desc_privacy: "Ne aggódj, a munkamenet végpontok közötti titkosítást használ, tehát bármit rajzolsz, privát marad. Még a szerverünkről se lehet belenézni.", button_startSession: "Munkamenet indítása", button_stopSession: "Munkamenet leállítása", desc_inProgressIntro: "Az élő együttműködési munkamenet folyamatban van.", desc_shareLink: "Ossza meg ezt a linket bárkivel, akivel együtt szeretne működni:", desc_exitSession: "Az munkamenet leállítása kilépteti önt a szobából, de folytathatja a munkát a saját gépén. Vegye figyelembe, hogy ez nem érinti más emberek munkáját és ők továbbra is együttműködhetnek a saját változatukon.", shareTitle: "Csatlakozás egy élő együttműködési munkamenethez az Excalidraw-ban" }, sK = { title: "Hiba" }, lK = { disk_title: "Mentés lemezre", disk_details: "Exportálja a jelenetadatokat egy fájlba, amelyből később importálhatja.", disk_button: "Mentés fájlba", link_title: "Megosztható hivatkozás", link_details: "Exportálás csak olvasható hivatkozásként.", link_button: "Exportálás hivatkozásba", excalidrawplus_description: "Mentse el a jelenetet az Excalidraw+ munkaterületére.", excalidrawplus_button: "Exportálás", excalidrawplus_exportError: "Jelenleg nem lehet exportálni az Excalidraw+-ba..." }, cK = { blog: "Olvasd a blogunkat", click: "kattintás", deepSelect: "Mély kijelölés", deepBoxSelect: "Mély kijelölés a dobozon belül, és a húzás megakadályozása", curvedArrow: "Ívelt nyíl", curvedLine: "Ívelt vonal", documentation: "Dokumentáció", doubleClick: "dupla kattintás", drag: "vonszolás", editor: "Szerkesztő", editLineArrowPoints: "", editText: "", github: "Hibát találtál? Küld be", howto: "Kövesd az útmutatóinkat", or: "vagy", preventBinding: "A nyíl ne ragadjon", tools: "", shortcuts: "Gyorsbillentyűk", textFinish: "Szerkesztés befejezése (szöveg)", textNewLine: "Új sor hozzáadása (szöveg)", title: "Segítség", view: "Nézet", zoomToFit: "Az összes elem látótérbe hozása", zoomToSelection: "Kijelölésre nagyítás", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dK = { title: "Rajzvászon alaphelyzetbe" }, DK = { title: "Könyvtár közzététele", itemName: "Tétel neve", authorName: "Szerző neve", githubUsername: "GitHub felhasználónév", twitterUsername: "Twitter felhasználónév", libraryName: "Könyvtár neve", libraryDesc: "Könyvtár leírása", website: "Weboldal", placeholder: { authorName: "Neved vagy felhasználóneved", libraryName: "A könyvtárad neve", libraryDesc: "A könyvtárad használatát segítő leírás", githubHandle: "GitHub-handle(opcionális), így szerkesztheted a könyvtárat, miután elküldted ellenőrzésre", twitterHandle: "Twitter-felhasználónév (opcionális), így tudjuk, kinek kell jóváírni a Twitteren keresztüli reklámozást", website: "Hivatkozás személyes webhelyedre vagy máshová (nem kötelező)" }, errors: { required: "Kötelező", website: "Adj meg egy érvényes URL-t" }, noteDescription: "Küld be könyvtáradat, hogy bekerüljön a <link>nyilvános könyvtár tárolóba</link>hogy mások is felhasználhassák a rajzaikban.", noteGuidelines: "A könyvtárat először manuálisan kell jóváhagyni. Kérjük, olvassa el a <link>segédletet</link> benyújtása előtt. Szüksége lesz egy GitHub-fiókra a kommunikációhoz és a módosításokhoz, ha kérik, de ez nem feltétlenül szükséges.", noteLicense: "A beküldéssel elfogadja, hogy a könyvtár a következő alatt kerül közzétételre <link>MIT Licensz </link>ami röviden azt jelenti, hogy bárki korlátozás nélkül használhatja őket.", noteItems: "Minden könyvtárelemnek saját nevével kell rendelkeznie, hogy szűrhető legyen. A következő könyvtári tételek kerülnek bele:", atleastOneLibItem: "A kezdéshez válassz ki legalább egy könyvtári elemet", republishWarning: "" }, hK = { title: "A könyvtár beküldve", content: "Köszönjük {{authorName}}. Könyvtáradat elküldtük felülvizsgálatra. Nyomon követheted az állapotot<link>itt</link>" }, wK = { resetLibrary: "Könyvtár alaphelyzetbe állítása", removeItemsFromLib: "A kiválasztott elemek eltávolítása a könyvtárból" }, FK = { header: "Kép exportálása", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Vágólapra másolás" } }, pK = { tooltip: "A rajzaidat végpontok közötti titkosítással tároljuk, tehát az Excalidraw szervereiről se tud más belenézni.", link: "Blogbejegyzés a végpontok közötti titkosításról az Excalidraw-ban" }, mK = { angle: "Szög", element: "Elem", elements: "Elemek", height: "Magasság", scene: "Jelenet", selected: "Kijelölt", storage: "Tárhely", title: "Statisztikák", total: "Összesen", version: "Verzió", versionCopy: "Kattints a másoláshoz", versionNotAvailable: "A verzió nem elérhető", width: "Szélesség" }, kK = { addedToLibrary: "Könyvtárhoz adva", copyStyles: "Másolt stílusok.", copyToClipboard: "Vágólapra másolva.", copyToClipboardAsPng: `Az {{exportSelection}} PNG formátumban a vágólapra másolva 
({{exportColorScheme}})`, fileSaved: "Fájl elmentve.", fileSavedToFilename: "Mentve mint {filename}", canvas: "rajzvászon", selection: "kijelölés", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yK = { transparent: "Átlátszó", black: "Fekete", white: "Fehér", red: "Piros", pink: "Rózsaszín", grape: "", violet: "Ibolya", gray: "Szürke", blue: "Kék", cyan: "Cián", teal: "Kékes-zöld", green: "Zöld", yellow: "Sárga", orange: "Narancssárga", bronze: "Bronz" }, bK = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, UK = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "Hexadecimális kód", noShades: "" }, GK = { action: { exportToImage: { title: "Exportálás képként", button: "Exportálás képként", description: "" }, saveToDisk: { title: "Mentés a lemezre", button: "Mentés a lemezre", description: "" }, excalidrawPlus: { title: "Excalidraw+", button: "", description: "" } }, modal: { loadFromFile: { title: "Betöltés fájlból", button: "Betöltés fájlból", description: "" }, shareableLink: { title: "Feltöltás linkből", button: "", description: "" } } }, fK = { title: "", button: "", description: "", syntax: "", preview: "" }, PmA = { labels: BK, library: gK, buttons: tK, alerts: iK, errors: EK, toolBar: aK, headings: IK, hints: oK, canvasError: QK, errorSplash: nK, roomDialog: rK, errorDialog: sK, exportDialog: lK, helpDialog: cK, clearCanvasDialog: dK, publishDialog: DK, publishSuccessDialog: hK, confirmDialog: wK, imageExportDialog: FK, encrypted: pK, stats: mK, toast: kK, colors: yK, welcomeScreen: bK, colorPicker: UK, overwriteConfirm: GK, mermaid: fK };
const OmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iK,
  buttons: tK,
  canvasError: QK,
  clearCanvasDialog: dK,
  colorPicker: UK,
  colors: yK,
  confirmDialog: wK,
  default: PmA,
  encrypted: pK,
  errorDialog: sK,
  errorSplash: nK,
  errors: EK,
  exportDialog: lK,
  headings: IK,
  helpDialog: cK,
  hints: oK,
  imageExportDialog: FK,
  labels: BK,
  library: gK,
  mermaid: fK,
  overwriteConfirm: GK,
  publishDialog: DK,
  publishSuccessDialog: hK,
  roomDialog: rK,
  stats: mK,
  toast: kK,
  toolBar: aK,
  welcomeScreen: bK
}, Symbol.toStringTag, { value: "Module" }));
var LK = { paste: "Tempel", pasteAsPlaintext: "Tempel sebagai teks biasa", pasteCharts: "Tempel diagram", selectAll: "Pilih semua", multiSelect: "Tambahkan elemen ke pilihan", moveCanvas: "Pindahkan kanvas", cut: "Potong", copy: "Salin", copyAsPng: "Salin ke papan klip sebagai PNG", copyAsSvg: "Salin ke papan klip sebagai SVG", copyText: "Salin ke papan klip sebagai teks", copySource: "", convertToCode: "", bringForward: "Bawa maju", sendToBack: "Kirim ke belakang", bringToFront: "Bawa ke depan", sendBackward: "Kirim mundur", delete: "Hapus", copyStyles: "Salin gaya", pasteStyles: "Tempelkan gaya", stroke: "Guratan", background: "Latar", fill: "Isian", strokeWidth: "Lebar guratan", strokeStyle: "Gaya guratan", strokeStyle_solid: "Padat", strokeStyle_dashed: "Putus-putus", strokeStyle_dotted: "Titik-titik", sloppiness: "Kecerobohan", opacity: "Keburaman", textAlign: "Perataan teks", edges: "Tepi", sharp: "Tajam", round: "Bulat", arrowheads: "Mata panah", arrowhead_none: "Tidak ada", arrowhead_arrow: "Panah", arrowhead_bar: "Batang", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Segitiga", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Ukuran font", fontFamily: "Jenis font", addWatermark: 'Tambahkan "Dibuat dengan Excalidraw"', handDrawn: "Tulisan tangan", normal: "Normal", code: "Kode", small: "Kecil", medium: "Sedang", large: "Besar", veryLarge: "Sangat besar", solid: "Padat", hachure: "Garis-garis", zigzag: "Zigzag", crossHatch: "Asiran silang", thin: "Lembut", bold: "Tebal", left: "Kiri", center: "Tengah", right: "Kanan", extraBold: "Sangat tebal", architect: "Arsitek", artist: "Artis", cartoonist: "Kartunis", fileTitle: "Nama file", colorPicker: "Pilihan Warna", canvasColors: "Digunakan di kanvas", canvasBackground: "Latar Kanvas", drawingCanvas: "Kanvas", layers: "Lapisan", actions: "Aksi", language: "Bahasa", liveCollaboration: "Kolaborasi langsung...", duplicateSelection: "Duplikat", untitled: "Tanpa judul", name: "Nama", yourName: "Nama Anda", madeWithExcalidraw: "Dibuat dengan Excalidraw", group: "Kelompokan pilihan", ungroup: "Pisahkan pilihan", collaborators: "Kolaborator", showGrid: "Tampilkan grid", addToLibrary: "Tambahkan ke pustaka", removeFromLibrary: "Hapus dari pustaka", libraryLoadingMessage: "Memuat pustaka…", libraries: "Telusur pustaka", loadingScene: "Memuat pemandangan…", align: "Perataan", alignTop: "Rata atas", alignBottom: "Rata bawah", alignLeft: "Rata kiri", alignRight: "Rata kanan", centerVertically: "Pusatkan secara vertikal", centerHorizontally: "Pusatkan secara horizontal", distributeHorizontally: "Distribusikan horizontal", distributeVertically: "Distribusikan vertikal", flipHorizontal: "Balikkan horizontal", flipVertical: "Balikkan vertikal", viewMode: "Mode tampilan", share: "Bagikan", showStroke: "Tampilkan garis pengambil warna", showBackground: "Tampilkan latar pengambil warna", toggleTheme: "Ubah tema", personalLib: "Pustaka Pribadi", excalidrawLib: "Pustaka Excalidraw", decreaseFontSize: "Kecilkan ukuran font", increaseFontSize: "Besarkan ukuran font", unbindText: "Lepas teks", bindText: "Kunci teks ke kontainer", createContainerFromText: "Bungkus teks dalam kontainer", link: { edit: "Edit tautan", editEmbed: "", create: "Buat tautan", createEmbed: "", label: "Tautan", labelEmbed: "", empty: "" }, lineEditor: { edit: "Edit tautan", exit: "Keluar editor garis" }, elementLock: { lock: "Kunci", unlock: "Lepas", lockAll: "Kunci semua", unlockAll: "Lepas semua" }, statusPublished: "Telah terbit", sidebarLock: "Biarkan sidebar tetap terbuka", selectAllElementsInFrame: "Pilih semua elemen di bingkai", removeAllElementsFromFrame: "Hapus semua elemen dari bingkai", eyeDropper: "Ambil warna dari kanvas", textToDiagram: "", prompt: "" }, xK = { noItems: "Belum ada item yang ditambahkan...", hint_emptyLibrary: "Pilih item pada kanvas untuk menambahkan nya di sini, atau pasang pustaka dari gudang di bawah ini.", hint_emptyPrivateLibrary: "Pilih item pada kanvas untuk menambahkan nya di sini." }, SK = { clearReset: "Setel Ulang Kanvas", exportJSON: "Ekspor ke file", exportImage: "Ekspor gambar...", export: "Simpan ke...", copyToClipboard: "Salin ke Papan Klip", save: "Simpan ke file sekarang", saveAs: "Simpan sebagai", load: "Buka", getShareableLink: "Buat Tautan yang Bisa Dibagian", close: "Tutup", selectLanguage: "Pilih bahasa", scrollBackToContent: "Gulir kembali ke konten", zoomIn: "Besarkan", zoomOut: "Kecilkan", resetZoom: "Reset Pembesaran", menu: "Menu", done: "Selesai", edit: "Edit", undo: "Urungkan", redo: "Ulangi", resetLibrary: "Reset pustaka", createNewRoom: "Buat ruang baru", fullScreen: "Layar penuh", darkMode: "Mode gelap", lightMode: "Mode terang", zenMode: "Mode zen", objectsSnapMode: "", exitZenMode: "Keluar dari mode zen", cancel: "Batal", clear: "Hapus", remove: "Hapus", embed: "", publishLibrary: "Terbitkan", submit: "Kirimkan", confirm: "Konfirmasi", embeddableInteractionButton: "" }, NK = { clearReset: "Ini akan menghapus semua yang ada dikanvas. Apakah kamu yakin ?", couldNotCreateShareableLink: "Tidak bisa membuat tautan yang bisa dibagikan", couldNotCreateShareableLinkTooBig: "Tidak dapat membuat tautan yang dapat dibagikan: pemandangan terlalu besar", couldNotLoadInvalidFile: "Tidak dapat memuat berkas yang tidak valid", importBackendFailed: "Gagal mengimpor dari backend", cannotExportEmptyCanvas: "Tidak bisa mengekspor kanvas kosong", couldNotCopyToClipboard: "Tidak bisa menyalin ke papan klip.", decryptFailed: "Tidak dapat mengdekripsi data.", uploadedSecurly: "Pengunggahan ini telah diamankan menggunakan enkripsi end-to-end, artinya server Excalidraw dan pihak ketiga tidak data membaca nya", loadSceneOverridePrompt: "Memuat gambar external akan mengganti konten Anda yang ada. Apakah Anda ingin melanjutkan?", collabStopOverridePrompt: `Menghentikan sesi akan menimpa gambar Anda yang tersimpan secara lokal. Anda yakin?

(Jika Anda ingin menyimpan gambar lokal Anda, gantinya cukup tutup tab browser.)`, errorAddingToLibrary: "Tidak dapat menambahkan item ke pustaka", errorRemovingFromLibrary: "Tidak dapat membuang item dari pustaka", confirmAddLibrary: "Ini akan menambahkan {{numShapes}} bentuk ke pustaka Anda. Anda yakin?", imageDoesNotContainScene: "Gambar ini sepertinya tidak terdapat data pemandangan. Sudahkah Anda mengaktifkan penyematan pemandangan ketika ekspor?", cannotRestoreFromImage: "Pemandangan tidak dapat dipulihkan dari file gambar ini", invalidSceneUrl: "Tidak dapat impor pemandangan dari URL. Kemungkinan URL itu rusak atau tidak berisi data JSON Excalidraw yang valid.", resetLibrary: "Ini akan menghapus pustaka Anda. Anda yakin?", removeItemsFromsLibrary: "Hapus {{count}} item dari pustaka?", invalidEncryptionKey: "Sandi enkripsi harus 22 karakter. Kolaborasi langsung dinonaktifkan.", collabOfflineWarning: `Tidak ada koneksi internet.
Perubahan tidak akan disimpan!` }, RK = { unsupportedFileType: "Tipe file tidak didukung.", imageInsertError: "Tidak dapat menyisipkan gambar. Coba lagi nanti...", fileTooBig: "File terlalu besar. Ukuran maksimum yang dibolehkan {{maxSize}}.", svgImageInsertError: "Tidak dapat menyisipkan gambar SVG. Markup SVG sepertinya tidak valid.", failedToFetchImage: "", invalidSVGString: "SVG tidak valid.", cannotResolveCollabServer: "Tidak dapat terhubung ke server kolab. Muat ulang laman dan coba lagi.", importLibraryError: "Tidak dapat memuat pustaka", collabSaveFailed: "Tidak dapat menyimpan ke dalam basis data server. Jika masih berlanjut, Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.", collabSaveFailed_sizeExceeded: "Tidak dapat menyimpan ke dalam basis data server, tampaknya ukuran kanvas terlalu besar. Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.", imageToolNotSupported: "", brave_measure_text_error: { line1: "Sepertinya Anda menggunkan peramban Brave dengan pengaturan <bold>Blokir Fingerprinting yang Agresif</bold> diaktifkan.", line2: "Ini dapat membuat <bold>Elemen Teks</bold> dalam gambar mu.", line3: "Kami sangat menyarankan mematikan pengaturan ini. Anda dapat mengikuti <link>langkah-langkah ini</link> untuk melakukannya.", line4: `Jika mematikan pengaturan ini tidak membenarkan tampilan elemen teks, mohon buka
<issueLink>isu</issueLink> di GitHub kami, atau chat kami di <discordLink>Discord</discordLink>` }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MK = { selection: "Pilihan", image: "Sisipkan gambar", rectangle: "Persegi", diamond: "Berlian", ellipse: "Elips", arrow: "Panah", line: "Garis", freedraw: "Gambar", text: "Teks", library: "Pustaka", lock: "Biarkan alat yang dipilih aktif setelah menggambar", penMode: "Mode pena - mencegah sentuhan", link: "Tambah/Perbarui tautan untuk bentuk yang dipilih", eraser: "Penghapus", frame: "Alat bingkai", magicframe: "", embeddable: "", laser: "", hand: "Tangan (alat panning)", extraTools: "Alat-alat lain", mermaidToExcalidraw: "", magicSettings: "" }, YK = { canvasActions: "Opsi Kanvas", selectedShapeActions: "Opsi bentuk yang dipilih", shapes: "Bentuk" }, vK = { canvasPanning: "Untuk memindahkan kanvas, tekan roda mouse atau spacebar sambil menyeret, atau menggunakan alat tangan", linearElement: "Klik untuk memulai banyak poin, seret untuk satu baris", freeDraw: "Klik dan seret, lepaskan jika Anda selesai", text: "Tip: Anda juga dapat menambahkan teks dengan klik ganda di mana saja dengan alat pemilihan", embeddable: "", text_selected: "Klik ganda atau tekan ENTER untuk edit teks", text_editing: "Tekan Escape atau CtrlAtauCmd+ENTER untuk selesai mengedit", linearElementMulti: "Klik pada titik akhir atau tekan Escape atau Enter untuk menyelesaikan", lockAngle: "Anda dapat menjaga sudut dengan menahan SHIFT", resize: `Anda dapat menjaga proposi dengan menekan SHIFT sambil mengubah ukuran,
tekan AlT untuk mengubah ukuran dari tengah`, resizeImage: `Anda dapat mengubah secara bebas dengan menekan SHIFT,
Tekan ALT untuk mengubah dari tengah`, rotate: "Anda dapat menjaga sudut dengan menahan SHIFT sambil memutar", lineEditor_info: "Tekan Ctrl/Cmd dan Dobel-klik atau tekan Ctrl/Cmd +Enter untuk mengedit poin", lineEditor_pointSelected: "Tekan Delete untuk menghapus titik, Ctrl/Cmd + D untuk menduplikasi, atau seret untuk memindahkan", lineEditor_nothingSelected: "Pilih titik untuk mengedit (tekan SHIFT untuk pilih banyak), atau tekan Alt dan klik untuk tambahkan titik baru", placeImage: "Klik untuk tempatkan gambar, atau klik dan jatuhkan untuk tetapkan ukuran secara manual", publishLibrary: "Terbitkan pustaka Anda", bindTextToElement: "Tekan enter untuk tambahkan teks", deepBoxSelect: "Tekan Ctrl atau Cmd untuk memilih yang di dalam, dan mencegah penggeseran", eraserRevert: "Tahan Alt untuk mengembalikan elemen yang ditandai untuk dihapus", firefox_clipboard_write: 'Fitur ini dapat diaktifkan melalui pengaturan flag "dom.events.asyncClipboard.clipboardItem" ke "true". Untuk mengganti flag di Firefox, pergi ke laman "about:config".', disableSnapping: "" }, HK = { cannotShowPreview: "Tidak dapat menampilkan pratinjau", canvasTooBig: "Kanvas mungkin terlalu besar.", canvasTooBigTip: "Tip: coba pindahkan elemen-terjauh lebih dekat bersama." }, KK = { headingMain: "Mengalami sebuah kesalahan. Cobalah <button>muat ulang halaman.</button>", clearCanvasMessage: "Jika memuat ulang tidak bekerja, cobalah <button>bersihkan canvas.</button>", clearCanvasCaveat: " Ini akan menghasilkan hilangnya pekerjaan ", trackedToSentry: "Kesalahan dengan pengidentifikasi {{eventId}} dilacak di sistem kami.", openIssueMessage: "Kami sangat berhati-hati untuk tidak menyertakan informasi pemandangan Anda pada kesalahan. Jika pemandangan Anda tidak bersifat pribadi, mohon pertimbangkan menindak lanjut pada <button>pelacak bug.</button> Mohon sertakan informasi dibawah ini dengan menyalin dan menempelkan di Github issue.", sceneContent: "Pemandangan konten:" }, JK = { desc_intro: "Anda dapat mengundang orang ke pemandangan Anda saat ini untuk berkolaborasi dengan Anda.", desc_privacy: "Jangan khawatir, sesi menggunakan enkripsi end-to-end, sehingga apa pun yang Anda gambar akan tetap bersifat pribadi. Bahkan server kami tidak dapat melihat apa yang Anda lakukan.", button_startSession: "Mulai sesi", button_stopSession: "Hentikan sesi", desc_inProgressIntro: "Sesi kolaborasi sedang berlangsung sekarang.", desc_shareLink: "Bagikan tautan ini dengan siapa pun yang Anda inginkan untuk kolaborasi bersama:", desc_exitSession: "Menghentikan sesi akan memutuskan hubungan Anda dari ruangan, tetapi Anda dapat melanjutkan bekerja dengan pemandangan Anda secara lokal. Perhatikan bahwa ini tidak memengaruhi orang lain, dan mereka masih dapat berkolaborasi pada versi mereka.", shareTitle: "Gabung sesi kolaborasi langsung di Excalidraw" }, ZK = { title: "Kesalahan" }, qK = { disk_title: "Simpan ke disk", disk_details: "Ekspor data pemandangan ke file yang mana Anda dapat impor nanti.", disk_button: "Simpan ke file", link_title: "Tautan", link_details: "Ekspor sebagai tautan yang hanya dibaca.", link_button: "Ekspor ke tautan", excalidrawplus_description: "Simpan pemandangan ke ruang kerja Excalidraw+ Anda.", excalidrawplus_button: "Ekspor", excalidrawplus_exportError: "Tidak dapat ekspor ke Excalidraw+ saat ini..." }, WK = { blog: "Baca blog kami", click: "klik", deepSelect: "Pilih dalam", deepBoxSelect: "Pilih dalam kotak, dan cegah penggeseran", curvedArrow: "Panah lengkung", curvedLine: "Garis lengkung", documentation: "Dokumentasi", doubleClick: "klik-ganda", drag: "seret", editor: "Editor", editLineArrowPoints: "Edit titik garis/panah", editText: "Edit teks / tambah label", github: "Menemukan masalah? Kirimkan", howto: "Ikuti panduan kami", or: "atau", preventBinding: "Cegah pengikatan panah", tools: "Alat", shortcuts: "Pintasan keyboard", textFinish: "Selesai mengedit (editor teks)", textNewLine: "Tambahkan garis baru (editor teks)", title: "Bantuan", view: "Tampilan", zoomToFit: "Perbesar agar sesuai dengan semua elemen", zoomToSelection: "Perbesar ke seleksi", toggleElementLock: "Kunci/lepas seleksi", movePageUpDown: "Pindah halaman keatas/kebawah", movePageLeftRight: "Pindah halaman kebawah/keatas" }, jK = { title: "Hapus kanvas" }, TK = { title: "Terbitkan pustaka", itemName: "Nama item", authorName: "Nama pembuat", githubUsername: "Nama pengguna github", twitterUsername: "Nama pengguna Twitter", libraryName: "Nama Pustaka", libraryDesc: "Deskripsi pustaka", website: "Situs Web", placeholder: { authorName: "Nama atau nama pengguna Anda", libraryName: "Nama dari pustaka Anda", libraryDesc: "Deskripsi pustaka Anda untuk membantu orang mengerti penggunaannya", githubHandle: "Akun GitHub (opsional), jadi Anda dapat mengubah pustaka ketika diserahkan untuk review", twitterHandle: "Nama pengguna Twitter (opsional), jadi kami tahu siapa dipuji ketika mempromosikannya melalui Twitter", website: "Hubungkan ke situs personal Anda atau lainnya (opsional)" }, errors: { required: "Dibutuhkan", website: "Masukkan URL valid" }, noteDescription: "Kirimkan pustaka Anda untuk disertakan di <link>repositori pustaka publik</link>untuk orang lain menggunakannya dalam gambar mereka.", noteGuidelines: "Pustaka butuh disetujui secara manual terlebih dahulu. Baca <link>pedoman</link> sebelum mengirim. Anda butuh akun GitHub untuk berkomunikasi dan membuat perubahan jika dibutuhkan, tetapi tidak wajib dibutukan.", noteLicense: "Dengan mengkirimkannya, Anda setuju pustaka akan diterbitkan dibawah <link>Lisensi MIT, </link>yang artinya siapa pun dapat menggunakannya tanpa batasan.", noteItems: "Setiap item pustaka harus memiliki nama, sehingga bisa disortir. Item pustaka di bawah ini akan dimasukan:", atleastOneLibItem: "Pilih setidaknya satu item pustaka untuk mulai", republishWarning: "Catatan: beberapa item yang dipilih telah ditandai sebagai sudah dipublikasikan/diserahkan. Anda hanya dapat menyerahkan kembali item-item ketika memperbarui pustaka atau pengumpulan." }, zK = { title: "Pustaka telah dikirm", content: "Terima kasih {{authorName}}. pustaka Anda telah diserahkan untuk ditinjau ulang. Anda dapat cek statusnya<link>di sini</link>" }, PK = { resetLibrary: "Reset pustaka", removeItemsFromLib: "Hapus item yang dipilih dari pustaka" }, OK = { header: "Ekspor gambar", label: { withBackground: "Latar", onlySelected: "Hanya yang dipilih", darkMode: "Mode gelap", embedScene: "Sematkan pemandangan", scale: "Skala", padding: "Lapisan" }, tooltip: { embedScene: `Data pemandangan akan disimpan dalam file PNG/SVG yang diekspor sehingga pemandangan itu dapat dipulihkan darinya.
Akan membesarkan ukuran file yang diekspor.` }, title: { exportToPng: "Ekspor ke PNG", exportToSvg: "Ekspor ke SVG", copyPngToClipboard: "Salin PNG ke papan klip" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Salin ke papan klip" } }, VK = { tooltip: "Gambar anda terenkripsi end-to-end sehingga server Excalidraw tidak akan pernah dapat melihatnya.", link: "Pos blog tentang enkripsi ujung ke ujung di Excalidraw" }, XK = { angle: "Sudut", element: "Elemen", elements: "Elemen", height: "Tinggi", scene: "Pemandangan", selected: "Terpilih", storage: "Penyimpanan", title: "Statistik untuk nerd", total: "Total", version: "Versi", versionCopy: "Klik untuk salin", versionNotAvailable: "Versi tidak tersedia", width: "Lebar" }, _K = { addedToLibrary: "Tambahkan ke pustaka", copyStyles: "Gaya tersalin.", copyToClipboard: "Tersalin ke papan klip.", copyToClipboardAsPng: `Tersalin {{exportSelection}} ke clipboard sebagai PNG
({{exportColorScheme}})`, fileSaved: "File tersimpan.", fileSavedToFilename: "Disimpan ke {filename}", canvas: "kanvas", selection: "pilihan", pasteAsSingleElement: `Gunakan {{shortcut}} untuk menempelkan sebagai satu elemen,
atau tempelkan ke teks editor yang ada`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $K = { transparent: "Transparan", black: "Hitam", white: "Putih", red: "Merah", pink: "Pink", grape: "Ungu", violet: "Violet", gray: "Abu-abu", blue: "Biru", cyan: "Cyan", teal: "Teal", green: "Hijau", yellow: "Kuning", orange: "Jingga", bronze: "Tembaga" }, AJ = { app: { center_heading: "Semua data Anda disimpan secara lokal di peramban Anda.", center_heading_plus: "Apa Anda ingin berpindah ke Excalidraw+?", menuHint: "Ekspor, preferensi, bahasa, ..." }, defaults: { menuHint: "Ekspor, preferensi, dan selebihnya...", center_heading: "Diagram. Menjadi. Mudah.", toolbarHint: "Pilih alat & mulai menggambar!", helpHint: "Pintasan & bantuan" } }, uJ = { mostUsedCustomColors: "Warna yang sering dipakai", colors: "Warna", shades: "Nuansa", hexCode: "Kode hexa", noShades: "Tidak ada nuansa untuk warna ini" }, eJ = { action: { exportToImage: { title: "Ekspor sebagai gambar", button: "Ekspor sebagai gambar", description: "Ekspor data pemandangan sebagai gambar yang dapat anda impor nanti." }, saveToDisk: { title: "Simpan ke disk", button: "Simpan ke disk", description: "Ekspor data pemandangan ke file yang dapat Anda dapat impor nanti." }, excalidrawPlus: { title: "Excalidraw+", button: "Ekspor ke Excalidraw+", description: "Simpan pemandangan ke ruang kerja Excalidraw+ Anda." } }, modal: { loadFromFile: { title: "Muat dari file", button: "Muat dari file", description: "Memuat dari file yang akan <bold>menggantikan konten Anda sekarang</bold>.<br></br>Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini." }, shareableLink: { title: "Muat dari link", button: "Ganti konten saya", description: "Memuat dari file yang akan <bold>menggantikan konten Anda sekarang</bold>.<br></br>Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini." } } }, CJ = { title: "", button: "", description: "", syntax: "", preview: "" }, VmA = { labels: LK, library: xK, buttons: SK, alerts: NK, errors: RK, toolBar: MK, headings: YK, hints: vK, canvasError: HK, errorSplash: KK, roomDialog: JK, errorDialog: ZK, exportDialog: qK, helpDialog: WK, clearCanvasDialog: jK, publishDialog: TK, publishSuccessDialog: zK, confirmDialog: PK, imageExportDialog: OK, encrypted: VK, stats: XK, toast: _K, colors: $K, welcomeScreen: AJ, colorPicker: uJ, overwriteConfirm: eJ, mermaid: CJ };
const XmA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NK,
  buttons: SK,
  canvasError: HK,
  clearCanvasDialog: jK,
  colorPicker: uJ,
  colors: $K,
  confirmDialog: PK,
  default: VmA,
  encrypted: VK,
  errorDialog: ZK,
  errorSplash: KK,
  errors: RK,
  exportDialog: qK,
  headings: YK,
  helpDialog: WK,
  hints: vK,
  imageExportDialog: OK,
  labels: LK,
  library: xK,
  mermaid: CJ,
  overwriteConfirm: eJ,
  publishDialog: TK,
  publishSuccessDialog: zK,
  roomDialog: JK,
  stats: XK,
  toast: _K,
  toolBar: MK,
  welcomeScreen: AJ
}, Symbol.toStringTag, { value: "Module" }));
var BJ = { paste: "Incolla", pasteAsPlaintext: "Incolla come testo normale", pasteCharts: "Incolla grafici", selectAll: "Seleziona tutto", multiSelect: "Aggiungi elemento alla selezione", moveCanvas: "Sposta tela", cut: "Taglia", copy: "Copia", copyAsPng: "Copia negli appunti come PNG", copyAsSvg: "Copia negli appunti come SVG", copyText: "Copia negli appunti come testo", copySource: "Copia sorgente negli appunti", convertToCode: "Converti in codice", bringForward: "Porta avanti", sendToBack: "Manda in fondo", bringToFront: "Porta in cima", sendBackward: "Manda dietro", delete: "Elimina", copyStyles: "Copia stili", pasteStyles: "Incolla stili", stroke: "Tratto", background: "Sfondo", fill: "Riempimento", strokeWidth: "Spessore del tratto", strokeStyle: "Stile del tratto", strokeStyle_solid: "Pieno", strokeStyle_dashed: "Tratteggiato", strokeStyle_dotted: "Punteggiato", sloppiness: "Imprecisione", opacity: "Opacità", textAlign: "Allineamento del testo", edges: "Bordi", sharp: "Acuto", round: "Rotondo", arrowheads: "Punta della freccia", arrowhead_none: "Nessuno", arrowhead_arrow: "Freccia", arrowhead_bar: "Barra", arrowhead_circle: "Cerchio", arrowhead_circle_outline: "Cerchio (contorno)", arrowhead_triangle: "Triangolo", arrowhead_triangle_outline: "Triangolo (contorno)", arrowhead_diamond: "Diamante", arrowhead_diamond_outline: "Diamante (contorno)", fontSize: "Dimensione carattere", fontFamily: "Carattere", addWatermark: 'Aggiungi "Creato con Excalidraw"', handDrawn: "A mano libera", normal: "Normale", code: "Codice", small: "Piccolo", medium: "Medio", large: "Grande", veryLarge: "Molto grande", solid: "Pieno", hachure: "Tratteggio obliquo", zigzag: "Zig zag", crossHatch: "Tratteggio incrociato", thin: "Sottile", bold: "Grassetto", left: "Sinistra", center: "Centro", right: "Destra", extraBold: "Extra Grassetto", architect: "Architetto", artist: "Artista", cartoonist: "Fumettista", fileTitle: "Nome del file", colorPicker: "Selettore colore", canvasColors: "Usato su tela", canvasBackground: "Sfondo tela", drawingCanvas: "Area di disegno", layers: "Livelli", actions: "Azioni", language: "Lingua", liveCollaboration: "Collaborazione dal vivo...", duplicateSelection: "Duplica", untitled: "Senza titolo", name: "Nome", yourName: "Il vostro nome", madeWithExcalidraw: "Creato con Excalidraw", group: "Crea gruppo da selezione", ungroup: "Dividi gruppo da selezione", collaborators: "Collaboratori", showGrid: "Visualizza griglia", addToLibrary: "Aggiungi alla libreria", removeFromLibrary: "Rimuovi dalla libreria", libraryLoadingMessage: "Caricamento libreria…", libraries: "Sfoglia librerie", loadingScene: "Caricamento della scena…", align: "Allinea", alignTop: "Allinea in alto", alignBottom: "Allinea in basso", alignLeft: "Allinea a sinistra", alignRight: "Allinea a destra", centerVertically: "Centra Verticalmente", centerHorizontally: "Centra orizzontalmente", distributeHorizontally: "Distribuisci orizzontalmente", distributeVertically: "Distribuisci verticalmente", flipHorizontal: "Capovolgi orizzontalmente", flipVertical: "Capovolgi verticalmente", viewMode: "Modalità visualizzazione", share: "Condividi", showStroke: "Mostra selettore colore del tratto", showBackground: "Mostra selettore colore di sfondo", toggleTheme: "Cambia tema", personalLib: "Libreria Personale", excalidrawLib: "Libreria di Excalidraw", decreaseFontSize: "Riduci dimensione dei caratteri", increaseFontSize: "Aumenta la dimensione dei caratteri", unbindText: "Scollega testo", bindText: "Associa il testo al container", createContainerFromText: "Avvolgi il testo in un container", link: { edit: "Modifica link", editEmbed: "Modifica collegamento e incorpora", create: "Crea link", createEmbed: "Crea collegamento e incorpora", label: "Link", labelEmbed: "Collega & incorpora", empty: "Nessun collegamento impostato" }, lineEditor: { edit: "Modifica linea", exit: "Esci dall'editor di linea" }, elementLock: { lock: "Blocca", unlock: "Sblocca", lockAll: "Blocca tutto", unlockAll: "Sblocca tutto" }, statusPublished: "Pubblicato", sidebarLock: "Mantieni aperta la barra laterale", selectAllElementsInFrame: "Seleziona tutti gli elementi nel riquadro", removeAllElementsFromFrame: "Rimuovi tutti gli elementi dal riquadro", eyeDropper: "Scegli il colore della tela", textToDiagram: "Testo a diagramma", prompt: "Prompt" }, gJ = { noItems: "Nessun elemento ancora aggiunto...", hint_emptyLibrary: "Seleziona un elemento sulla tela per aggiungerlo qui, o installa una libreria dal repository pubblico qui sotto.", hint_emptyPrivateLibrary: "Seleziona un elemento sulla tela per aggiungerlo qui." }, tJ = { clearReset: "Svuota la tela", exportJSON: "Esporta su file", exportImage: "Esporta immagine...", export: "Salva in...", copyToClipboard: "Copia negli appunti", save: "Salva sul file corrente", saveAs: "Salva con nome", load: "Apri", getShareableLink: "Ottieni link condivisibile", close: "Chiudi", selectLanguage: "Seleziona lingua", scrollBackToContent: "Scorri indietro fino al contenuto", zoomIn: "Aumenta ingrandimento", zoomOut: "Riduci ingrandimento", resetZoom: "Ripristina ingrandimento", menu: "Menù", done: "Fatto", edit: "Modifica", undo: "Annulla", redo: "Ripeti", resetLibrary: "Ripristina libreria", createNewRoom: "Crea nuova stanza", fullScreen: "Schermo intero", darkMode: "Tema scuro", lightMode: "Tema chiaro", zenMode: "Modalità Zen", objectsSnapMode: "Aggancia agli oggetti", exitZenMode: "Uscire dalla modalità zen", cancel: "Annulla", clear: "Cancella", remove: "Rimuovi", embed: "Attiva/disattiva incorporamento", publishLibrary: "Pubblica", submit: "Invia", confirm: "Conferma", embeddableInteractionButton: "Clicca per interagire" }, iJ = { clearReset: "Questa azione cancellerà l'intera tela. Sei sicuro?", couldNotCreateShareableLink: "Non riesco a creare un link condivisibile.", couldNotCreateShareableLinkTooBig: "Impossibile creare il link condivisibile: la scena è troppo grande", couldNotLoadInvalidFile: "Impossibile caricare un file no valido", importBackendFailed: "Importazione dal server fallita.", cannotExportEmptyCanvas: "Non è possibile esportare una tela vuota.", couldNotCopyToClipboard: "Impossibile copiare negli appunti.", decryptFailed: "Impossibile decriptare i dati.", uploadedSecurly: "L'upload è stato protetto con la crittografia end-to-end, il che significa che il server Excalidraw e terze parti non possono leggere il contenuto.", loadSceneOverridePrompt: "Se carichi questo disegno esterno, sostituirà quello che hai. Vuoi continuare?", collabStopOverridePrompt: `Interrompere la sessione sovrascriverà il precedente disegno memorizzato localmente. Sei sicuro?

(Se vuoi mantenere il tuo disegno locale, chiudi semplicemente la scheda del browser.)`, errorAddingToLibrary: "Impossibile aggiungere l'elemento alla libreria", errorRemovingFromLibrary: "Impossibile rimuovere l'elemento dalla libreria", confirmAddLibrary: "Questo aggiungerà {{numShapes}} forma(e) alla tua libreria. Sei sicuro?", imageDoesNotContainScene: "Questa immagine pare non contenere alcuna scena. Avevi incluso la scena durante l'esportazione?", cannotRestoreFromImage: "Impossibile ripristinare la scena da questo file immagine", invalidSceneUrl: "Impossibile importare la scena dall'URL fornito. Potrebbe essere malformato o non contenere dati JSON Excalidraw validi.", resetLibrary: "Questa azione cancellerà l'intera libreria. Sei sicuro?", removeItemsFromsLibrary: "Eliminare {{count}} elementi dalla libreria?", invalidEncryptionKey: "La chiave di cifratura deve essere composta da 22 caratteri. La collaborazione live è disabilitata.", collabOfflineWarning: `Nessuna connessione internet disponibile.
Le tue modifiche non verranno salvate!` }, EJ = { unsupportedFileType: "Tipo di file non supportato.", imageInsertError: "Non è stato possibile inserire l'immagine. Riprova più tardi...", fileTooBig: "Il file è troppo grande. La dimensione massima consentita è {{maxSize}}.", svgImageInsertError: "Impossibile inserire l'immagine SVG. Il markup SVG non sembra corretto.", failedToFetchImage: "Impossibile recuperare l'immagine.", invalidSVGString: "SVG non valido.", cannotResolveCollabServer: "Impossibile connettersi al server di collab. Ricarica la pagina e riprova.", importLibraryError: "Impossibile caricare la libreria", collabSaveFailed: "Impossibile salvare nel database di backend. Se i problemi persistono, dovresti salvare il tuo file localmente per assicurarti di non perdere il tuo lavoro.", collabSaveFailed_sizeExceeded: "Impossibile salvare nel database di backend, la tela sembra essere troppo grande. Dovresti salvare il file localmente per assicurarti di non perdere il tuo lavoro.", imageToolNotSupported: "Le immagini sono disabilitate.", brave_measure_text_error: { line1: "Sembra che tu stia utilizzando il browser Brave con l'impostazione <bold>Blocco aggressivo delle impronte digitali</bold> abilitata.", line2: "Ciò potrebbe causare la rottura degli <bold>Elementi di testo</bold> nei tuoi disegni.", line3: "Consigliamo vivamente di disabilitare questa impostazione. Puoi seguire <link>questi passaggi</link> su come farlo.", line4: "Se la disattivazione di questa impostazione non risolve la visualizzazione degli elementi di testo, apri un <issueLink>problema</issueLink> sul nostro GitHub o scrivici su <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Gli elementi incorporabili non possono essere aggiunti alla libreria.", iframe: "Gli elementi IFrame non possono essere aggiunti alla libreria.", image: "Il supporto per l'aggiunta d'immagini alla libreria verrà aggiunto a breve!" }, asyncPasteFailedOnRead: "Impossibile incollare (non è possibile leggere dagli appunti di sistema).", asyncPasteFailedOnParse: "Impossibile incollare.", copyToSystemClipboardFailed: "Impossibile copiare negli appunti." }, aJ = { selection: "Selezione", image: "Inserisci immagine", rectangle: "Rettangolo", diamond: "Rombo", ellipse: "Ellisse", arrow: "Freccia", line: "Linea", freedraw: "Disegno", text: "Testo", library: "Libreria", lock: "Mantieni lo strumento selezionato attivo dopo aver disegnato", penMode: "Modalità penna - previene il tocco", link: "Aggiungi/ aggiorna il link per una forma selezionata", eraser: "Gomma", frame: "Strumento riquadro", magicframe: "", embeddable: "Incorporamento Web", laser: "Puntatore laser", hand: "Mano (strumento di panoramica)", extraTools: "Altri strumenti", mermaidToExcalidraw: "", magicSettings: "Impostazioni di IA" }, IJ = { canvasActions: "Azioni sulla Tela", selectedShapeActions: "Impostazioni della forma selezionata", shapes: "Forme" }, oJ = { canvasPanning: "Per spostare la tela, tieni premuta la rotellina del mouse o la barra spaziatrice mentre trascini oppure usa lo strumento mano", linearElement: "Clicca per iniziare una linea in più punti, trascina per singola linea", freeDraw: "Clicca e trascina, rilascia quando avrai finito", text: "Suggerimento: puoi anche aggiungere del testo facendo doppio clic ovunque con lo strumento di selezione", embeddable: "Fare click e trascina per creare un incorporamento web", text_selected: "Fai doppio click o premi INVIO per modificare il testo", text_editing: "Premi ESC o CtrlOCmd+INVIO per completare le modifiche", linearElementMulti: "Clicca sull'ultimo punto o premi Esc o Invio per finire", lockAngle: "Puoi limitare l'angolo tenendo premuto SHIFT", resize: `Per vincolare le proporzioni, tieni premuto MAIUSC durante il ridimensionamento;
per ridimensionare dal centro, tieni premuto ALT`, resizeImage: `Puoi ridimensionare liberamente tenendo premuto SHIFT,
tieni premuto ALT per ridimensionare dal centro`, rotate: "Puoi mantenere gli angoli tenendo premuto SHIFT durante la rotazione", lineEditor_info: "Tieni premuto Ctrl o Cmd e doppio clic oppure premi Ctrl o Cmd + Invio per modificare i punti", lineEditor_pointSelected: `Premi Elimina per rimuovere il punto(i),
CtrlOCmd+D per duplicare o trascinare per spostare`, lineEditor_nothingSelected: `Seleziona un punto da modificare (tieni premuto MAIUSC per selezionare più punti),
oppure tieni premuto Alt e fai clic per aggiungere nuovi punti`, placeImage: "Fai click per posizionare l'immagine, o click e trascina per impostarne la dimensione manualmente", publishLibrary: "Pubblica la tua libreria", bindTextToElement: "Premi invio per aggiungere il testo", deepBoxSelect: "Tieni premuto CtrlOCmd per selezionare in profondità e per impedire il trascinamento", eraserRevert: "Tieni premuto Alt per ripristinare gli elementi contrassegnati per l'eliminazione", firefox_clipboard_write: 'Questa funzione può essere abilitata impostando il flag "dom.events.asyncClipboard.clipboardItem" su "true". Per modificare i flag del browser in Firefox, visitare la pagina "about:config".', disableSnapping: "Tieni premuto Ctrl o Cmd per disabilitare lo snap" }, QJ = { cannotShowPreview: "Impossibile visualizzare l'anteprima", canvasTooBig: "La tela potrebbe essere troppo grande.", canvasTooBigTip: "Suggerimento: prova a spostare gli elementi più lontani più vicini tra loro." }, nJ = { headingMain: "Si è verificato un errore. Provare <button>ricaricando la pagina.</button>", clearCanvasMessage: "Se ricaricare non funziona, prova <button>pulire la tela.</button>", clearCanvasCaveat: " Questo risulterà nella perdita del lavoro ", trackedToSentry: "L'errore con identificativo {{eventId}} è stato tracciato nel nostro sistema.", openIssueMessage: "Siamo stati molto cauti nel non includere informazioni della scena nell'errore. Se la tua scena non è privata, ti preghiamo di considerare la sua inclusione nel nostro <button>bug tracker.</button> Per favore includi le informazioni riportate qui sotto copiandole e incollandole nella issue di GitHub.", sceneContent: "Contenuto della scena:" }, rJ = { desc_intro: "Puoi invitare persone nella tua scena attuale per collaborare con te.", desc_privacy: "Non preoccuparti, la sessione utilizza la crittografia end-to-end, quindi qualsiasi cosa disegni rimarrà privata. Nemmeno il nostro server sarà in grado di vedere cosa hai creato.", button_startSession: "Avvia sessione", button_stopSession: "Termina sessione", desc_inProgressIntro: "La sessione di collaborazione è attualmente in corso.", desc_shareLink: "Condividi questo link con chiunque desideri collaborare:", desc_exitSession: "Interrompere la sessione scollegherà la tua stanza ma potrai continuare a lavorare con la scena, localmente. Tieni presente che questo non influirà sulle altre persone, e che saranno ancora in grado di collaborare alla loro versione.", shareTitle: "Partecipa a una sessione di collaborazione live su Excalidraw" }, sJ = { title: "Errore" }, lJ = { disk_title: "Salva su disco", disk_details: "Esporta i dati della scena su file, dal quale potrai importare in seguito.", disk_button: "Salva su file", link_title: "Link condivisibile", link_details: "Esporta come link di sola lettura.", link_button: "Esporta come Link", excalidrawplus_description: "Salva la scena nel tuo spazio di lavoro Excalidraw+.", excalidrawplus_button: "Esporta", excalidrawplus_exportError: "Non è stato possibile esportare su Excalidraw+ al questo momento..." }, cJ = { blog: "Leggi il nostro blog", click: "click", deepSelect: "Selezione profonda", deepBoxSelect: "Seleziona in profondità all'interno della casella e previene il trascinamento", curvedArrow: "Freccia curva", curvedLine: "Linea curva", documentation: "Documentazione", doubleClick: "doppio-click", drag: "trascina", editor: "Editor", editLineArrowPoints: "Modifica punti linea/freccia", editText: "Modifica testo / aggiungi etichetta", github: "Trovato un problema? Segnalalo", howto: "Segui le nostre guide", or: "oppure", preventBinding: "Impedisci legame della freccia", tools: "Stumenti", shortcuts: "Scorciatoie da tastiera", textFinish: "Completa la modifica (editor di testo)", textNewLine: "Aggiungi nuova riga (editor di testo)", title: "Guida", view: "Vista", zoomToFit: "Adatta zoom per mostrare tutti gli elementi", zoomToSelection: "Zoom alla selezione", toggleElementLock: "Blocca/sblocca selezione", movePageUpDown: "Sposta la pagina su/giù", movePageLeftRight: "Sposta la pagina a sinistra/destra" }, dJ = { title: "Svuota la tela" }, DJ = { title: "Pubblica la libreria", itemName: "Nome dell'elemento", authorName: "Nome dell'autore", githubUsername: "Nome utente di GitHub", twitterUsername: "Nome utente di Twitter", libraryName: "Nome della libreria", libraryDesc: "Descrizione della libreria", website: "Sito Web", placeholder: { authorName: "Il tuo nome o nome utente", libraryName: "Nome della tua libreria", libraryDesc: "Descrizione della tua libreria per aiutare le persone a comprenderne lo scopo", githubHandle: "Handle di GitHub (opzionale), così che tu possa modificare la libreria una volta inviata per la revisione", twitterHandle: "Nome utente di Twitter (opzionale), così che sappiamo chi accreditare promuovendo su Twitter", website: "Link al tuo sito web personale o altro (opzionale)" }, errors: { required: "Obbligatorio", website: "Inserisci un URL valido" }, noteDescription: "Invia la tua libreria da includere nella <link>repository della libreria pubblica</link>perché sia usata da altri nei loro disegni.", noteGuidelines: "La libreria dev'esser prima approvata manualmente. Sei pregato di leggere le <link>linee guida</link> prima di inviarla. Necessiterai di un profilo di GitHub per comunicare ed effettuare modifiche se richiesto, ma non è strettamente necessario.", noteLicense: "Inviando, acconsenti che la libreria sarà pubblicata sotto la <link>Licenza MIT, </link>che in breve significa che chiunque possa usarla senza restrizioni.", noteItems: "Ogni elemento della libreria deve avere il proprio nome, così che sia filtrabile. Gli elementi della seguente libreria saranno inclusi:", atleastOneLibItem: "Sei pregato di selezionare almeno un elemento della libreria per iniziare", republishWarning: "Nota: alcuni degli elementi selezionati sono contrassegnati come già pubblicati/presentati. È necessario reinviare gli elementi solo quando si aggiorna una libreria o una presentazione esistente." }, hJ = { title: "Libreria inviata", content: "Grazie {{authorName}}. La tua libreria è stata inviata per la revisione. Puoi monitorarne lo stato<link>qui</link>" }, wJ = { resetLibrary: "Ripristina la libreria", removeItemsFromLib: "Rimuovi gli elementi selezionati dalla libreria" }, FJ = { header: "Esporta immagine", label: { withBackground: "Sfondo", onlySelected: "Solo selezionato", darkMode: "Tema scuro", embedScene: "Includi scena", scale: "Scala", padding: "Rientro" }, tooltip: { embedScene: `I dati della scena saranno salvati nel file PNG/SVG esportato in modo che la scena possa essere ripristinata da esso.
Questo aumenterà la dimensione del file esportato.` }, title: { exportToPng: "Esporta come PNG", exportToSvg: "Esporta come SVG", copyPngToClipboard: "Copia PNG negli appunti" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copia negli appunti" } }, pJ = { tooltip: "I tuoi disegni sono crittografati end-to-end in modo che i server di Excalidraw non li possano mai vedere.", link: "Articolo del blog sulla crittografia end-to-end di Excalidraw" }, mJ = { angle: "Angolo", element: "Elemento", elements: "Elementi", height: "Altezza", scene: "Scena", selected: "Selezionato", storage: "Memoria", title: "Statistiche per nerd", total: "Totale", version: "Versione", versionCopy: "Clicca per copiare", versionNotAvailable: "Versione non disponibile", width: "Larghezza" }, kJ = { addedToLibrary: "Aggiunto alla libreria", copyStyles: "Stili copiati.", copyToClipboard: "Copiato negli appunti.", copyToClipboardAsPng: `{{exportSelection}} copiato negli appunti come PNG
({{exportColorScheme}})`, fileSaved: "File salvato.", fileSavedToFilename: "Salvato in {filename}", canvas: "tela", selection: "selezione", pasteAsSingleElement: `Usa {{shortcut}} per incollare come un singolo elemento,
o incollare in un editor di testo esistente`, unableToEmbed: "Incorporare questo url non è permesso. Crea una issue su GitHub per richiedere che l'url sia autorizzato", unrecognizedLinkFormat: "Il link che hai incorporato non corrisponde al formato previsto. Prova a incollare la stringa 'embed' fornita dal sito di origine" }, yJ = { transparent: "Trasparente", black: "Nero", white: "Bianco", red: "Rosso", pink: "Rosa", grape: "Uva", violet: "Viola", gray: "Grigio", blue: "Blu", cyan: "Ciano", teal: "Verde acqua", green: "Verde", yellow: "Giallo", orange: "Arancio", bronze: "Bronzo" }, bJ = { app: { center_heading: "Tutti i tuoi dati sono salvati localmente nel browser.", center_heading_plus: "Volevi invece andare su Excalidraw+?", menuHint: "Esporta, preferenze, lingue, ..." }, defaults: { menuHint: "Esporta, preferenze, e altro...", center_heading: "Diagrammi. Fatto. Semplice.", toolbarHint: "Scegli uno strumento & Inizia a disegnare!", helpHint: "Scorciatoie & aiuto" } }, UJ = { mostUsedCustomColors: "Colori personalizzati più utilizzati", colors: "Colori", shades: "Sfumature", hexCode: "Codice esadecimale", noShades: "Nessuna sfumatura disponibile per questo colore" }, GJ = { action: { exportToImage: { title: "Esporta come immagine", button: "Esporta come immagine", description: "Esporta i dati della scena come immagine, che potrai importare in seguito." }, saveToDisk: { title: "Salva su disco", button: "Salva su disco", description: "Esporta i dati della scena su file, che potrai importare in seguito." }, excalidrawPlus: { title: "Excalidraw+", button: "Esporta su Excalidraw+", description: "Salva la scena sul tuo spazio di lavoro Excalidraw+." } }, modal: { loadFromFile: { title: "Carica da file", button: "Carica da file", description: "Il caricamento da file sostituirà <bold>il contenuto esistente</bold>.<br></br>Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto." }, shareableLink: { title: "Carica da link", button: "Sostituisci il mio contenuto", description: "Il caricamento da file sostituirà <bold>il contenuto esistente</bold>.<br></br>Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto." } } }, fJ = { title: "", button: "Inserisci", description: "", syntax: "", preview: "Anteprima" }, _mA = { labels: BJ, library: gJ, buttons: tJ, alerts: iJ, errors: EJ, toolBar: aJ, headings: IJ, hints: oJ, canvasError: QJ, errorSplash: nJ, roomDialog: rJ, errorDialog: sJ, exportDialog: lJ, helpDialog: cJ, clearCanvasDialog: dJ, publishDialog: DJ, publishSuccessDialog: hJ, confirmDialog: wJ, imageExportDialog: FJ, encrypted: pJ, stats: mJ, toast: kJ, colors: yJ, welcomeScreen: bJ, colorPicker: UJ, overwriteConfirm: GJ, mermaid: fJ };
const $mA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iJ,
  buttons: tJ,
  canvasError: QJ,
  clearCanvasDialog: dJ,
  colorPicker: UJ,
  colors: yJ,
  confirmDialog: wJ,
  default: _mA,
  encrypted: pJ,
  errorDialog: sJ,
  errorSplash: nJ,
  errors: EJ,
  exportDialog: lJ,
  headings: IJ,
  helpDialog: cJ,
  hints: oJ,
  imageExportDialog: FJ,
  labels: BJ,
  library: gJ,
  mermaid: fJ,
  overwriteConfirm: GJ,
  publishDialog: DJ,
  publishSuccessDialog: hJ,
  roomDialog: rJ,
  stats: mJ,
  toast: kJ,
  toolBar: aJ,
  welcomeScreen: bJ
}, Symbol.toStringTag, { value: "Module" }));
var LJ = { paste: "貼り付け", pasteAsPlaintext: "書式なしテキストとして貼り付け", pasteCharts: "チャートの貼り付け", selectAll: "すべて選択", multiSelect: "複数選択", moveCanvas: "キャンバスを移動", cut: "切り取り", copy: "コピー", copyAsPng: "PNGとしてクリップボードへコピー", copyAsSvg: "SVGとしてクリップボードへコピー", copyText: "テキストとしてクリップボードにコピー", copySource: "", convertToCode: "", bringForward: "前面に移動", sendToBack: "最背面に移動", bringToFront: "最前面に移動", sendBackward: "背面に移動", delete: "削除", copyStyles: "スタイルのコピー", pasteStyles: "スタイルの貼り付け", stroke: "線", background: "背景", fill: "塗りつぶし", strokeWidth: "線の太さ", strokeStyle: "線の種類", strokeStyle_solid: "実線", strokeStyle_dashed: "破線", strokeStyle_dotted: "点線", sloppiness: "ばらつき加減", opacity: "透明度", textAlign: "文字の配置", edges: "角", sharp: "四角", round: "丸", arrowheads: "線の終点", arrowhead_none: "なし", arrowhead_arrow: "矢印", arrowhead_bar: "バー", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "三角", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "フォントの大きさ", fontFamily: "フォントの種類", addWatermark: '"Made with Excalidraw"と表示', handDrawn: "手描き風", normal: "普通", code: "コード", small: "小", medium: "中", large: "大", veryLarge: "特大", solid: "ベタ塗り", hachure: "斜線", zigzag: "ジグザグ", crossHatch: "網掛け", thin: "細", bold: "太字", left: "左寄せ", center: "中央寄せ", right: "右寄せ", extraBold: "極太", architect: "正確", artist: "アート", cartoonist: "漫画風", fileTitle: "ファイル名", colorPicker: "色選択", canvasColors: "キャンバス上で使用", canvasBackground: "キャンバスの背景", drawingCanvas: "キャンバスの描画", layers: "レイヤー", actions: "操作", language: "言語", liveCollaboration: "共同編集...", duplicateSelection: "複製", untitled: "無題", name: "名前", yourName: "あなたの名前", madeWithExcalidraw: "Excalidrawで作成", group: "グループ化", ungroup: "グループ化を解除", collaborators: "共同編集者", showGrid: "グリッドを表示", addToLibrary: "ライブラリに追加", removeFromLibrary: "ライブラリから削除", libraryLoadingMessage: "ライブラリを読み込み中…", libraries: "ライブラリを参照する", loadingScene: "シーンを読み込み中…", align: "配置", alignTop: "上揃え", alignBottom: "下揃え", alignLeft: "左揃え", alignRight: "右揃え", centerVertically: "縦方向に中央揃え", centerHorizontally: "横方向に中央揃え", distributeHorizontally: "水平方向に分散配置", distributeVertically: "垂直方向に分散配置", flipHorizontal: "水平方向に反転", flipVertical: "垂直方向に反転", viewMode: "閲覧モード", share: "共有", showStroke: "ストロークカラーピッカーを表示", showBackground: "背景色ピッカーを表示", toggleTheme: "テーマの切り替え", personalLib: "個人ライブラリ", excalidrawLib: "Excalidrawライブラリ", decreaseFontSize: "フォントサイズを縮小", increaseFontSize: "フォントサイズを拡大", unbindText: "テキストのバインド解除", bindText: "テキストをコンテナにバインド", createContainerFromText: "コンテナ内でテキストを折り返す", link: { edit: "リンクを編集", editEmbed: "リンクの編集と埋め込み", create: "リンクを作成", createEmbed: "リンクの作成と埋め込み", label: "リンク", labelEmbed: "リンクと埋め込み", empty: "リンクが設定されていません" }, lineEditor: { edit: "行を編集", exit: "行エディタを終了" }, elementLock: { lock: "ロック", unlock: "ロック解除", lockAll: "すべてロック", unlockAll: "すべてのロックを解除" }, statusPublished: "公開済み", sidebarLock: "サイドバーを開いたままにする", selectAllElementsInFrame: "フレーム内のすべての要素を選択", removeAllElementsFromFrame: "フレーム内のすべての要素を削除", eyeDropper: "キャンバスから色を選択", textToDiagram: "", prompt: "" }, xJ = { noItems: "まだアイテムが追加されていません…", hint_emptyLibrary: "キャンバス上のアイテムを選択してここに追加するか、以下の公開リポジトリからライブラリをインストールしてください。", hint_emptyPrivateLibrary: "キャンバス上のアイテムを選択すると、ここに追加されます。" }, SJ = { clearReset: "キャンバスのリセット", exportJSON: "ファイルへエクスポート", exportImage: "画像のエクスポート...", export: "名前を付けて保存...", copyToClipboard: "クリップボードにコピー", save: "現在のファイルに保存", saveAs: "名前を付けて保存", load: "開く", getShareableLink: "共有URLの取得", close: "閉じる", selectLanguage: "言語の選択", scrollBackToContent: "コンテンツまでスクロールで戻る", zoomIn: "拡大", zoomOut: "縮小", resetZoom: "拡大/縮小をリセット", menu: "メニュー", done: "完了", edit: "編集", undo: "元に戻す", redo: "やり直し", resetLibrary: "ライブラリをリセット", createNewRoom: "新しい部屋を作成する", fullScreen: "フルスクリーン", darkMode: "ダークモード", lightMode: "ライトモード", zenMode: "Zenモード", objectsSnapMode: "", exitZenMode: "集中モードをやめる", cancel: "キャンセル", clear: "消去", remove: "削除", embed: "埋め込みの切り替え", publishLibrary: "公開", submit: "送信", confirm: "確認", embeddableInteractionButton: "" }, NJ = { clearReset: "この操作によってキャンバス全体が消えます。よろしいですか？", couldNotCreateShareableLink: "共有URLを作成できませんでした。", couldNotCreateShareableLinkTooBig: "共有可能なリンクを作成できませんでした: シーンが大きすぎます", couldNotLoadInvalidFile: "無効なファイルを読み込めませんでした。", importBackendFailed: "サーバーからの読み込みに失敗しました。", cannotExportEmptyCanvas: "空のキャンバスはエクスポートできません。", couldNotCopyToClipboard: "クリップボードにコピーできませんでした。", decryptFailed: "データを復号できませんでした。", uploadedSecurly: "データのアップロードはエンドツーエンド暗号化によって保護されています。Excalidrawサーバーと第三者はデータの内容を見ることができません。", loadSceneOverridePrompt: "外部図面を読み込むと、既存のコンテンツが置き換わります。続行しますか？", collabStopOverridePrompt: `セッションを停止すると、ローカルに保存されている図が上書きされます。 本当によろしいですか？

(ローカルの図を保持したい場合は、セッションを停止せずにブラウザタブを閉じてください。)`, errorAddingToLibrary: "アイテムをライブラリに追加できませんでした", errorRemovingFromLibrary: "ライブラリからアイテムを削除できませんでした", confirmAddLibrary: "{{numShapes}} 個の図形をライブラリに追加します。よろしいですか？", imageDoesNotContainScene: "この画像にはシーンデータが含まれていないようです。エクスポート時にシーンの埋め込みを有効にしましたか？", cannotRestoreFromImage: "このイメージファイルからシーンを復元できませんでした", invalidSceneUrl: "指定された URL からシーンをインポートできませんでした。不正な形式であるか、有効な Excalidraw JSON データが含まれていません。", resetLibrary: "ライブラリを消去します。本当によろしいですか？", removeItemsFromsLibrary: "{{count}} 個のアイテムをライブラリから削除しますか？", invalidEncryptionKey: "暗号化キーは22文字でなければなりません。ライブコラボレーションは無効化されています。", collabOfflineWarning: `インターネットに接続されていません。
変更は保存されません！` }, RJ = { unsupportedFileType: "サポートされていないファイル形式です。", imageInsertError: "画像を挿入できませんでした。後でもう一度お試しください...", fileTooBig: "ファイルが大きすぎます。許可される最大サイズは {{maxSize}} です。", svgImageInsertError: "SVGイメージを挿入できませんでした。SVGマークアップは無効に見えます。", failedToFetchImage: "", invalidSVGString: "無効なSVGです。", cannotResolveCollabServer: "コラボレーションサーバに接続できませんでした。ページを再読み込みして、もう一度お試しください。", importLibraryError: "ライブラリを読み込めませんでした。", collabSaveFailed: "バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。", collabSaveFailed_sizeExceeded: "キャンバスが大きすぎるため、バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。", imageToolNotSupported: "", brave_measure_text_error: { line1: "<bold>Aggressly Block Fingerprinting</bold> の設定が有効なBraveブラウザを使用しているようです。", line2: "これにより、図面の <bold>テキスト要素</bold> が壊れる可能性があります。", line3: "この設定を無効にすることを強く推奨します。 <link>設定手順</link> をこちらから確認できます。", line4: "この設定を無効にすると、テキスト要素の表示が修正されません。 GitHub で <issueLink>Issue</issueLink> を開くか、 <discordLink>Discord</discordLink> にご記入ください" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MJ = { selection: "選択", image: "画像を挿入", rectangle: "矩形", diamond: "ひし形", ellipse: "楕円", arrow: "矢印", line: "直線", freedraw: "描画", text: "テキスト", library: "ライブラリ", lock: "描画後も使用中のツールを選択したままにする", penMode: "ペンモード - タッチ防止", link: "選択した図形のリンクを追加/更新", eraser: "消しゴム", frame: "フレームツール", magicframe: "", embeddable: "Web埋め込み", laser: "", hand: "手 (パンニングツール)", extraTools: "その他のツール", mermaidToExcalidraw: "", magicSettings: "" }, YJ = { canvasActions: "キャンバス操作", selectedShapeActions: "選択された図形に対する操作", shapes: "図形" }, vJ = { canvasPanning: "キャンバスを移動するには、マウスホイールまたはスペースバーを押しながらドラッグするか、手ツールを使用します", linearElement: "クリックすると複数の頂点からなる曲線を開始、ドラッグすると直線", freeDraw: "クリックしてドラッグします。離すと終了します", text: "ヒント: 選択ツールを使用して任意の場所をダブルクリックしてテキストを追加することもできます", embeddable: "", text_selected: "テキストを編集するには、ダブルクリックまたはEnterキーを押します", text_editing: "Esc キーまたは CtrlOrCmd+ENTER キーを押して編集を終了します", linearElementMulti: "最後のポイントをクリックするか、エスケープまたはEnterを押して終了します", lockAngle: "SHIFTを押したままにすると、角度を制限することができます", resize: "サイズを変更中にSHIFTを押すと縦横比を固定できます。Altを押すと中央からサイズを変更できます", resizeImage: `SHIFTを長押しすると自由にサイズを変更できます。
中央からサイズを変更するにはALTを長押しします`, rotate: "回転中にSHIFT キーを押すと角度を制限することができます", lineEditor_info: "CtrlOrCmd を押したままダブルクリックするか、CtrlOrCmd + Enter を押して点を編集します", lineEditor_pointSelected: "Deleteキーを押すと点を削除、CtrlOrCmd+Dで複製、マウスドラッグで移動", lineEditor_nothingSelected: `編集する点を選択（SHIFTを押したままで複数選択）、
Altキーを押しながらクリックすると新しい点を追加`, placeImage: "クリックして画像を配置するか、クリックしてドラッグしてサイズを手動で設定します", publishLibrary: "自分のライブラリを公開", bindTextToElement: "Enterを押してテキストを追加", deepBoxSelect: "CtrlOrCmd を押し続けることでドラッグを抑止し、深い選択を行います", eraserRevert: "Alt を押し続けることで削除マークされた要素を元に戻す", firefox_clipboard_write: 'この機能は、"dom.events.asyncClipboard.clipboardItem" フラグを "true" に設定することで有効になる可能性があります。Firefox でブラウザーの設定を変更するには、"about:config" ページを参照してください。', disableSnapping: "" }, HJ = { cannotShowPreview: "プレビューを表示できません", canvasTooBig: "キャンバスが大きすぎます。", canvasTooBigTip: "ヒント: 最も遠い要素をもう少し近づけてみてください。" }, KJ = { headingMain: "エラーが発生しました。もう一度やり直してください。 <button>ページを再読み込みする。</button>", clearCanvasMessage: "再読み込みがうまくいかない場合は、 <button>キャンバスを消去しています</button>", clearCanvasCaveat: " これにより作業が失われます ", trackedToSentry: "識別子のエラー {{eventId}} が我々のシステムで追跡されました。", openIssueMessage: "エラーに関するシーン情報を含めないように非常に慎重に設定しました。もしあなたのシーンがプライベートでない場合は、私たちのフォローアップを検討してください。 <button>バグ報告</button> GitHub のIssueに以下の情報をコピーして貼り付けてください。", sceneContent: "シーンの内容:" }, JJ = { desc_intro: "他の人を編集中のあなたの画面に招待して共同編集することができます。", desc_privacy: "このセッションはエンドツーエンド暗号化されており、描画内容は保護されています。運営サーバーからも内容は見えません。", button_startSession: "セッションを開始する", button_stopSession: "セッションを終了する", desc_inProgressIntro: "共同編集セッションが有効になっています。", desc_shareLink: "下記URLを共同編集したい人に共有してください：", desc_exitSession: "セッションを終了するとあなたはルームから切断されますが、ローカルで作業を続けることができます。セッションを終了しても他のメンバには影響はなく、引き続き共同作業を行うことができます。", shareTitle: "Excalidrawの共同編集セッションに参加する" }, ZJ = { title: "エラー" }, qJ = { disk_title: "ディスクに保存", disk_details: "シーンデータを後からインポートできるファイルにエクスポートします。", disk_button: "ファイルへ保存", link_title: "共有可能なリンク", link_details: "読み取り専用リンクとしてエクスポート", link_button: "リンクとしてエクスポート", excalidrawplus_description: "Excalidraw+ ワークスペースにシーンを保存します。", excalidrawplus_button: "エクスポート", excalidrawplus_exportError: "Excalidraw+ にエクスポートできませんでした..." }, WJ = { blog: "公式ブログを読む", click: "クリック", deepSelect: "深い選択", deepBoxSelect: "ボックス内の深い選択、およびドラッグの抑止", curvedArrow: "カーブした矢印", curvedLine: "曲線", documentation: "ドキュメント", doubleClick: "ダブルクリック", drag: "ドラッグ", editor: "エディタ", editLineArrowPoints: "", editText: "テキストの編集 / ラベルの追加", github: "不具合報告はこちら", howto: "ヘルプ・マニュアル", or: "または", preventBinding: "矢印を結合しない", tools: "ツール", shortcuts: "キーボードショートカット", textFinish: "編集を終了 (テキストエディタ)", textNewLine: "新しい行を追加 (テキスト)", title: "ヘルプ", view: "表示", zoomToFit: "すべての要素が収まるようにズーム", zoomToSelection: "選択要素にズーム", toggleElementLock: "選択したアイテムをロック/ロック解除", movePageUpDown: "ページを上下に移動", movePageLeftRight: "ページを左右に移動" }, jJ = { title: "キャンバスを消去" }, TJ = { title: "ライブラリを公開", itemName: "アイテム名", authorName: "作成者名", githubUsername: "GitHub ユーザ名", twitterUsername: "Twitter ユーザ名", libraryName: "ライブラリ名", libraryDesc: "ライブラリの説明", website: "Webサイト", placeholder: { authorName: "お名前またはユーザー名", libraryName: "あなたのライブラリ名", libraryDesc: "ライブラリの使い方を理解するための説明", githubHandle: "GitHubハンドル(任意)。一度レビューのために送信されると、ライブラリを編集できます", twitterHandle: "Twitterのユーザー名 (任意)。Twitterでプロモーションする際にクレジットする人を知っておくためのものです", website: "個人のウェブサイトまたは他のサイトへのリンク (任意)" }, errors: { required: "必須項目", website: "有効な URL を入力してください" }, noteDescription: "以下に含めるライブラリを提出してください <link>公開ライブラリのリポジトリ</link>他の人が作図に使えるようにするためです", noteGuidelines: "最初にライブラリを手動で承認する必要があります。次をお読みください <link>ガイドライン</link> 送信する前に、GitHubアカウントが必要になりますが、必須ではありません。", noteLicense: "提出することにより、ライブラリが次の下で公開されることに同意します： <link>MIT ライセンス </link>つまり誰でも制限なく使えるということです", noteItems: "各ライブラリ項目は、フィルタリングのために独自の名前を持つ必要があります。以下のライブラリアイテムが含まれます:", atleastOneLibItem: "開始するには少なくとも1つのライブラリ項目を選択してください", republishWarning: "注意: 選択された項目の中には、すでに公開/投稿済みと表示されているものがあります。既存のライブラリや投稿を更新する場合のみ、アイテムを再投稿してください。" }, zJ = { title: "ライブラリを送信しました", content: "{{authorName}} さん、ありがとうございます。あなたのライブラリはレビューのために提出されました。状況を追跡できます。<link>こちら</link>" }, PJ = { resetLibrary: "ライブラリをリセット", removeItemsFromLib: "選択したアイテムをライブラリから削除" }, OJ = { header: "画像をエクスポート", label: { withBackground: "背景", onlySelected: "", darkMode: "ダークモード", embedScene: "", scale: "スケール", padding: "余白" }, tooltip: { embedScene: "" }, title: { exportToPng: "PNG にエクスポート", exportToSvg: "SVG にエクスポート", copyPngToClipboard: "クリップボードにPNGをコピー" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "クリップボードにコピー" } }, VJ = { tooltip: "描画内容はエンドツーエンド暗号化が施されており、Excalidrawサーバーが内容を見ることはできません。", link: "Excalidrawのエンドツーエンド暗号化に関するブログ記事" }, XJ = { angle: "角度", element: "要素", elements: "要素", height: "高さ", scene: "シーン", selected: "選択済み", storage: "ストレージ", title: "詳細統計情報", total: "合計", version: "バージョン", versionCopy: "クリックしてコピー", versionNotAvailable: "利用できないバージョン", width: "幅" }, _J = { addedToLibrary: "ライブラリに追加しました", copyStyles: "スタイルをコピーしました。", copyToClipboard: "クリップボードにコピー", copyToClipboardAsPng: `{{exportSelection}} を PNG 形式でクリップボードにコピーしました
({{exportColorScheme}})`, fileSaved: "ファイルを保存しました", fileSavedToFilename: "{filename} に保存しました", canvas: "キャンバス", selection: "選択", pasteAsSingleElement: `{{shortcut}} を使用して単一の要素として貼り付けるか、
既存のテキストエディタに貼り付け`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $J = { transparent: "透明", black: "黒", white: "白", red: "赤", pink: "ピンク", grape: "グレープ", violet: "バイオレット", gray: "灰色", blue: "青", cyan: "シアン", teal: "ティール", green: "緑", yellow: "黄", orange: "オレンジ", bronze: "ブロンズ" }, AZ = { app: { center_heading: "すべてのデータはブラウザにローカル保存されます。", center_heading_plus: "代わりにExcalidraw+を開きますか？", menuHint: "エクスポート、設定、言語..." }, defaults: { menuHint: "エクスポート、設定、その他...", center_heading: "ダイアグラムを簡単に。", toolbarHint: "ツールを選んで描き始めよう！", helpHint: "ショートカットとヘルプ" } }, uZ = { mostUsedCustomColors: "最も使用されているカスタム色", colors: "色", shades: "影", hexCode: "Hexコード", noShades: "" }, eZ = { action: { exportToImage: { title: "画像としてエクスポート", button: "画像としてエクスポート", description: "" }, saveToDisk: { title: "ディスクに保存", button: "ディスクに保存", description: "" }, excalidrawPlus: { title: "Excalidraw+", button: "Excalidraw+にエクスポート", description: "Excalidraw+ ワークスペースにシーンを保存します。" } }, modal: { loadFromFile: { title: "ファイルからロード", button: "ファイルからロード", description: "" }, shareableLink: { title: "リンクからロード", button: "", description: "" } } }, CZ = { title: "", button: "", description: "", syntax: "", preview: "" }, A7A = { labels: LJ, library: xJ, buttons: SJ, alerts: NJ, errors: RJ, toolBar: MJ, headings: YJ, hints: vJ, canvasError: HJ, errorSplash: KJ, roomDialog: JJ, errorDialog: ZJ, exportDialog: qJ, helpDialog: WJ, clearCanvasDialog: jJ, publishDialog: TJ, publishSuccessDialog: zJ, confirmDialog: PJ, imageExportDialog: OJ, encrypted: VJ, stats: XJ, toast: _J, colors: $J, welcomeScreen: AZ, colorPicker: uZ, overwriteConfirm: eZ, mermaid: CZ };
const u7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NJ,
  buttons: SJ,
  canvasError: HJ,
  clearCanvasDialog: jJ,
  colorPicker: uZ,
  colors: $J,
  confirmDialog: PJ,
  default: A7A,
  encrypted: VJ,
  errorDialog: ZJ,
  errorSplash: KJ,
  errors: RJ,
  exportDialog: qJ,
  headings: YJ,
  helpDialog: WJ,
  hints: vJ,
  imageExportDialog: OJ,
  labels: LJ,
  library: xJ,
  mermaid: CZ,
  overwriteConfirm: eZ,
  publishDialog: TJ,
  publishSuccessDialog: zJ,
  roomDialog: JJ,
  stats: XJ,
  toast: _J,
  toolBar: MJ,
  welcomeScreen: AZ
}, Symbol.toStringTag, { value: "Module" }));
var BZ = { paste: "Qoyıw", pasteAsPlaintext: "Ápiwayı tekst retinde qoyıw", pasteCharts: "Diagrammalardı qoyıw", selectAll: "Barlıǵın tańlaw", multiSelect: "", moveCanvas: "", cut: "Qıyıw", copy: "Kóshirip alıw", copyAsPng: "Almasıw buferine PNG retinde kóshirip alıw", copyAsSvg: "Almasıw buferine SVG retinde kóshirip alıw", copyText: "Almasıw buferine tekst retinde kóshirip alıw", copySource: "", convertToCode: "", bringForward: "", sendToBack: "", bringToFront: "", sendBackward: "", delete: "Óshiriw", copyStyles: "", pasteStyles: "", stroke: "Jiyek", background: "Fon", fill: "", strokeWidth: "", strokeStyle: "", strokeStyle_solid: "", strokeStyle_dashed: "", strokeStyle_dotted: "", sloppiness: "", opacity: "", textAlign: "", edges: "Qırlar", sharp: "", round: "", arrowheads: "", arrowhead_none: "Joq", arrowhead_arrow: "Jebe", arrowhead_bar: "", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Shrift ólshemi", fontFamily: "Shrift toplamı", addWatermark: "", handDrawn: "", normal: "", code: "Kod", small: "", medium: "Ortasha", large: "Úlken", veryLarge: "Júdá úlken", solid: "", hachure: "", zigzag: "Zigzag", crossHatch: "", thin: "Jińishke", bold: "Qalıń", left: "", center: "", right: "", extraBold: "", architect: "", artist: "Súwretshi", cartoonist: "", fileTitle: "Fayl ataması", colorPicker: "Reńdi tańlaw", canvasColors: "", canvasBackground: "", drawingCanvas: "", layers: "Qatlamlar", actions: "Háreketler", language: "Til", liveCollaboration: "", duplicateSelection: "Nusqa", untitled: "Atamasız", name: "Ataması", yourName: "Atıńız", madeWithExcalidraw: "Excalidraw járdeminde islengen", group: "", ungroup: "", collaborators: "Qatnasıwshılar", showGrid: "", addToLibrary: "Kitapxanaǵa qosıw", removeFromLibrary: "Kitapxanadan alıp taslaw", libraryLoadingMessage: "Kitapxana júklenbekte…", libraries: "Kitapxanalardı kóriw", loadingScene: "Saxna júklenbekte…", align: "", alignTop: "", alignBottom: "", alignLeft: "", alignRight: "", centerVertically: "", centerHorizontally: "", distributeHorizontally: "", distributeVertically: "", flipHorizontal: "", flipVertical: "", viewMode: "Kóriw rejimi", share: "Bólisiw", showStroke: "", showBackground: "", toggleTheme: "Temanı ózgertiw", personalLib: "Jeke kitapxana", excalidrawLib: "Excalidraw kitapxanası", decreaseFontSize: "Shrift ólshemin kishireytiw", increaseFontSize: "Shrift ólshemin úlkeytiw", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "Siltemeni ózgertiw", editEmbed: "", create: "Siltemeni jaratıw", createEmbed: "", label: "Silteme", labelEmbed: "", empty: "" }, lineEditor: { edit: "Qatardı ózgertiw", exit: "Qatardı ózgertiw redaktorınan shıǵıw" }, elementLock: { lock: "Qulıplaw", unlock: "Qulıptan shıǵarıw", lockAll: "Barlıǵın qulıplaw", unlockAll: "Barlıǵın qulıptan shıǵarıw" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gZ = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, tZ = { clearReset: "", exportJSON: "", exportImage: "Súwretti eksportlaw...", export: "Retinde saqlaw...", copyToClipboard: "Almasıw buferine kóshirip alındı", save: "Ámeldegi faylǵa saqlaw", saveAs: "Retinde saqlaw", load: "Ashıw", getShareableLink: "", close: "Jabıw", selectLanguage: "Tildi tańlaw", scrollBackToContent: "", zoomIn: "", zoomOut: "", resetZoom: "", menu: "Menyu", done: "Tayın", edit: "Ózgertiw", undo: "", redo: "", resetLibrary: "", createNewRoom: "", fullScreen: "Tolıq ekran", darkMode: "Qarańǵı tema", lightMode: "Jaqtı tema", zenMode: "", objectsSnapMode: "", exitZenMode: "", cancel: "Biykarlaw", clear: "Tazalaw", remove: "Óshiriw", embed: "", publishLibrary: "Jariyalaw", submit: "Jiberiw", confirm: "Tastıyıqlaw", embeddableInteractionButton: "" }, iZ = { clearReset: "", couldNotCreateShareableLink: "", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "", importBackendFailed: "", cannotExportEmptyCanvas: "", couldNotCopyToClipboard: "Almasıw buferine kóshirip alıw ámelge aspadı.", decryptFailed: "", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: "", errorAddingToLibrary: "", errorRemovingFromLibrary: "", confirmAddLibrary: "", imageDoesNotContainScene: "", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, EZ = { unsupportedFileType: "", imageInsertError: "", fileTooBig: "", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "Jaramsız SVG.", cannotResolveCollabServer: "", importLibraryError: "Kitapxananı júklew ámelge aspadı", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aZ = { selection: "", image: "Súwret qoyıw", rectangle: "Tórt múyeshlik", diamond: "", ellipse: "", arrow: "", line: "Sızıq", freedraw: "Sızıw", text: "Tekst", library: "Kitapxana", lock: "", penMode: "", link: "", eraser: "Óshirgish", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IZ = { canvasActions: "", selectedShapeActions: "", shapes: "Figuralar" }, oZ = { canvasPanning: "", linearElement: "", freeDraw: "", text: "", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "Tekst qosıw ushın Enter túymesin basıń", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, QZ = { cannotShowPreview: "Aldınnan kóriwdi kórsetiw múmkin emes", canvasTooBig: "", canvasTooBigTip: "" }, nZ = { headingMain: "", clearCanvasMessage: "", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, rZ = { desc_intro: "", desc_privacy: "", button_startSession: "", button_stopSession: "", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, sZ = { title: "Qátelik" }, lZ = { disk_title: "Diskke saqlaw", disk_details: "", disk_button: "Faylǵa saqlaw", link_title: "", link_details: "", link_button: "Siltemege eksportlaw", excalidrawplus_description: "", excalidrawplus_button: "Eksportlaw", excalidrawplus_exportError: "" }, cZ = { blog: "Biziń blogtı oqıń", click: "basıw", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "Hújjetshilik", doubleClick: "", drag: "", editor: "Redaktor", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "yamasa", preventBinding: "", tools: "Ásbaplar", shortcuts: "", textFinish: "", textNewLine: "", title: "Járdem", view: "Kóriw", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dZ = { title: "" }, DZ = { title: "", itemName: "", authorName: "Avtor atı", githubUsername: "GitHub paydalanıwshı atı", twitterUsername: "Twitter paydalanıwshı atı", libraryName: "Kitapxana ataması", libraryDesc: "", website: "Veb-sayt", placeholder: { authorName: "Atıńız yamasa paydalanıwshı atı", libraryName: "Kitapxanańız ataması", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "Jeke veb-saytıńız yamasa basqa saytqa silteme (májbúriy emes)" }, errors: { required: "Májbúriy", website: "Jaramlı URL mánzil kirgiziń" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, hZ = { title: "Kitapxana jiberildi", content: "" }, wZ = { resetLibrary: "Kitapxananı qayta ornatıw", removeItemsFromLib: "" }, FZ = { header: "Súwretti eksportlaw", label: { withBackground: "Fon", onlySelected: "", darkMode: "Qarańǵı tema", embedScene: "", scale: "Kólem", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Almasıw buferine kóshirip alıw" } }, pZ = { tooltip: "", link: "" }, mZ = { angle: "", element: "Element", elements: "Elementler", height: "", scene: "Saxna", selected: "Tańlandı", storage: "", title: "", total: "", version: "Versiya", versionCopy: "Kóshirip alıw ushın basıń", versionNotAvailable: "", width: "Eni" }, kZ = { addedToLibrary: "Kitapxanaǵa qosıldı", copyStyles: "", copyToClipboard: "Almasıw buferine kóshirip alındı.", copyToClipboardAsPng: "", fileSaved: "Fayl saqlandı.", fileSavedToFilename: "{filename} saqlandı", canvas: "", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yZ = { transparent: "", black: "Qara", white: "Aq", red: "Qızıl", pink: "Qızǵılt", grape: "", violet: "Qızǵılt kók", gray: "", blue: "Kók", cyan: "Kók aspan", teal: "Piruza", green: "Jasıl", yellow: "Sarı", orange: "Qızǵılt sarı", bronze: "" }, bZ = { app: { center_heading: "", center_heading_plus: "Excalidraw+ ge ótiwdi qáleysiz be?", menuHint: "Eksportlaw, sazlawlar, tiller, ..." }, defaults: { menuHint: "Eksportlaw, sazlawlar hám basqa...", center_heading: "Diagrammalar. Ápiwayı.", toolbarHint: "", helpHint: "" } }, UZ = { mostUsedCustomColors: "Kóp qollanılatuǵın arnawlı reńler", colors: "Reńler", shades: "", hexCode: "", noShades: "" }, GZ = { action: { exportToImage: { title: "Súwret retinde eksportlaw", button: "Súwret retinde eksportlaw", description: "" }, saveToDisk: { title: "Diskke saqlaw", button: "Diskke saqlaw", description: "" }, excalidrawPlus: { title: "Excalidraw+", button: "", description: "" } }, modal: { loadFromFile: { title: "Fayldan júklew", button: "Fayldan júklew", description: "" }, shareableLink: { title: "Siltemeden júklew", button: "", description: "" } } }, fZ = { title: "", button: "", description: "", syntax: "", preview: "" }, e7A = { labels: BZ, library: gZ, buttons: tZ, alerts: iZ, errors: EZ, toolBar: aZ, headings: IZ, hints: oZ, canvasError: QZ, errorSplash: nZ, roomDialog: rZ, errorDialog: sZ, exportDialog: lZ, helpDialog: cZ, clearCanvasDialog: dZ, publishDialog: DZ, publishSuccessDialog: hZ, confirmDialog: wZ, imageExportDialog: FZ, encrypted: pZ, stats: mZ, toast: kZ, colors: yZ, welcomeScreen: bZ, colorPicker: UZ, overwriteConfirm: GZ, mermaid: fZ };
const C7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iZ,
  buttons: tZ,
  canvasError: QZ,
  clearCanvasDialog: dZ,
  colorPicker: UZ,
  colors: yZ,
  confirmDialog: wZ,
  default: e7A,
  encrypted: pZ,
  errorDialog: sZ,
  errorSplash: nZ,
  errors: EZ,
  exportDialog: lZ,
  headings: IZ,
  helpDialog: cZ,
  hints: oZ,
  imageExportDialog: FZ,
  labels: BZ,
  library: gZ,
  mermaid: fZ,
  overwriteConfirm: GZ,
  publishDialog: DZ,
  publishSuccessDialog: hZ,
  roomDialog: rZ,
  stats: mZ,
  toast: kZ,
  toolBar: aZ,
  welcomeScreen: bZ
}, Symbol.toStringTag, { value: "Module" }));
var LZ = { paste: "Senṭeḍ", pasteAsPlaintext: "", pasteCharts: "Senṭeḍ udlifen", selectAll: "Fren akk", multiSelect: "Rnu aferdis ɣer tefrayt", moveCanvas: "Smutti taɣzut n usuneɣ", cut: "Gzem", copy: "Nɣel", copyAsPng: "Nɣel ɣer tecfawit am PNG", copyAsSvg: "Nɣel ɣer tecfawit am SVG", copyText: "Nɣel ɣer tecfawit am uḍris", copySource: "", convertToCode: "", bringForward: "Awi ɣer sdat", sendToBack: "Awi s agilal", bringToFront: "Err ɣer deffir", sendBackward: "Awi ɣer deffir", delete: "Kkes", copyStyles: "Nɣel iɣunab", pasteStyles: "Senṭeḍ iɣunab", stroke: "Azizdew", background: "Agilal", fill: "Taččart", strokeWidth: "Tehri n yizirig", strokeStyle: "Aɣanib n tizirig", strokeStyle_solid: "Aččuran", strokeStyle_dashed: "S tjerriḍin", strokeStyle_dotted: "S tenqiḍin", sloppiness: "Astehzi", opacity: "Tiḍullest", textAlign: "Areyyec n uḍris", edges: "Leryuf", sharp: "Yemsed", round: "Imdewer", arrowheads: "Ixfawen n tenccabt", arrowhead_none: "Ulac", arrowhead_arrow: "Taneccabt", arrowhead_bar: "Afeggag", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Akerdis", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Tiddi n tsefsit", fontFamily: "Tawacult n tsefsiyin", addWatermark: 'Seddu "Yettwaxdem s Excalidraw"', handDrawn: "Asuneɣ s ufus", normal: "Amagnu", code: "Tangalt", small: "Meẓẓi", medium: "Alemmas", large: "Ameqran", veryLarge: "Meqqer aṭas", solid: "Aččuran", hachure: "Azerreg", zigzag: "", crossHatch: "Azerreg anmidag", thin: "Arqaq", bold: "Azuran", left: "Azelmaḍ", center: "Talemmast", right: "Ayfus", extraBold: "Azuran aṭas", architect: "Amasdag", artist: "Anaẓur", cartoonist: "Amefɣul", fileTitle: "Isem n ufaylu", colorPicker: "Amafran n yini", canvasColors: "Yettwaseqdec di teɣzut n usuneɣ", canvasBackground: "Agilal n teɣzut n usuneɣ", drawingCanvas: "Taɣzut n usuneɣ", layers: "Tissiyin", actions: "Tigawin", language: "Tutlayt", liveCollaboration: "Amɛiwen s srid...", duplicateSelection: "Sisleg", untitled: "War azwel", name: "Isem", yourName: "Isem-ik (im)", madeWithExcalidraw: "Yettwaxdem s Excalidraw", group: "Segrew tafrayt", ungroup: "Kkess asegrew i tefrayt", collaborators: "Imɛiwnen", showGrid: "Beqqeḍ aferrug", addToLibrary: "Rnu ɣer temkarḍit", removeFromLibrary: "Kkes si temkarḍit", libraryLoadingMessage: "Asali n temkarḍit…", libraries: "Snirem timkarḍiyin", loadingScene: "Asali n usayes…", align: "Reyyec", alignTop: "Areyyec uksawen", alignBottom: "Areyyec ukessar", alignLeft: "Reyyec s azelmaḍ", alignRight: "Areyyec s ayfus", centerVertically: "Di tlemmast s ibeddi", centerHorizontally: "Di tlemmast s uglawi", distributeHorizontally: "Freq s uglawi", distributeVertically: "Freq s yibeddi", flipHorizontal: "Tuttya taglawant", flipVertical: "Tuttya tubdidt", viewMode: "Askar n tmuɣli", share: "Bḍu", showStroke: "Beqqeḍ amelqaḍ n yini n yizirig", showBackground: "Beqqeḍ amelqaḍ n yini n ugilal", toggleTheme: "Snifel asentel", personalLib: "Tamkarḍit tudmawant", excalidrawLib: "Tamkarḍit n Excalidraw", decreaseFontSize: "Senqes tiddi n tsefsit", increaseFontSize: "Sali tiddi n tsefsit", unbindText: "Serreḥ iweḍris", bindText: "Arez aḍris s anagbar", createContainerFromText: "", link: { edit: "Ẓreg aseɣwen", editEmbed: "", create: "Snulfu-d aseɣwen", createEmbed: "", label: "Aseɣwen", labelEmbed: "", empty: "" }, lineEditor: { edit: "Ẓreg izirig", exit: "Ffeɣ seg umaẓrag n yizirig" }, elementLock: { lock: "Sekkeṛ", unlock: "Serreḥ", lockAll: "Sekkeṛ akk", unlockAll: "Serreḥ akk" }, statusPublished: "Yeffeɣ-d", sidebarLock: "Eǧǧ afeggag n yidis yeldi", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xZ = { noItems: "Ulac iferdisen yettwarnan yakan...", hint_emptyLibrary: "Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi, neɣ sbedd tamkarḍit seg usarsay azayez, ukessar-agi.", hint_emptyPrivateLibrary: "Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi." }, SZ = { clearReset: "Ales awennez n teɣzut n usuneɣ", exportJSON: "Sifeḍ afaylu", exportImage: "Sifeḍ tugna...", export: "Sekles di...", copyToClipboard: "Nɣel ɣer tecfawit", save: "Sekles deg ufaylu amiran", saveAs: "Sekles am", load: "Ldi", getShareableLink: "Awi-d aseɣwen n beṭṭu", close: "Mdel", selectLanguage: "Fren tutlayt", scrollBackToContent: "Uɣal s agbur", zoomIn: "Simɣur", zoomOut: "Simẓi", resetZoom: "Ales awennez n usemɣer", menu: "Umuɣ", done: "Ifukk", edit: "Ẓreg", undo: "Sefsex", redo: "Err-d", resetLibrary: "Ales awennez n temkarḍit", createNewRoom: "Snulfu-d taxxamt tamaynutt", fullScreen: "Agdil aččuran", darkMode: "Askar imsulles", lightMode: "Askar afaw", zenMode: "Askar Zen", objectsSnapMode: "", exitZenMode: "Ffeɣ seg uskar Zen", cancel: "Sefsex", clear: "Sfeḍ", remove: "Kkes", embed: "", publishLibrary: "Ẓreg", submit: "Azen", confirm: "Sentem", embeddableInteractionButton: "" }, NZ = { clearReset: "Ayagi ad isfeḍ akk taɣzut n usuneɣ. Tetḥeqqeḍ?", couldNotCreateShareableLink: "D awezɣi asnulfu n useɣwen n beṭṭu.", couldNotCreateShareableLinkTooBig: "D awezɣi asnulfu n useɣwen n beṭṭu. Asayes ɣezzif aṭas", couldNotLoadInvalidFile: "D awezɣi asali n ufaylu armeɣtu", importBackendFailed: "Takterḍ seg uɣawas n deffir ur teddi ara.", cannotExportEmptyCanvas: "D awezɣi asifeḍ n teɣzut n usuneɣ tilemt.", couldNotCopyToClipboard: "Ulamek anɣal ɣer tecfawit.", decryptFailed: "D awezɣi tukksa n uwgelhen i yisefka.", uploadedSecurly: "Asili yettwasɣelles s uwgelhen ixef s ixef, ayagi yebɣa ad d-yini belli aqeddac n Excalidraw akked medden ur zmiren ara ad ɣren agbur.", loadSceneOverridePrompt: "Asali n wunuɣ uffiɣ ad isemselsi agbur-inek (m) yellan. Tebɣiḍ ad tkemmeleḍ?", collabStopOverridePrompt: `Aḥbas n tɣimit ad yesefsex unuɣ-inek (m) yettwaḥerzen yakan s wudem adigan. Tetḥeqqeḍ?
(Ma tebɣiḍ ad teǧǧeḍ unuɣ-inek (m) adigan, mdel iccer n yiminig, deg umḍiq.)`, errorAddingToLibrary: "Ulamek ara yettwarnu uferdis ɣer temkarḍit", errorRemovingFromLibrary: "Ulamek ara yettwakkes uferdis si temkarḍit", confirmAddLibrary: "Ayagi adirnu talɣa (win) {{numShapes}} ɣer temkarḍit-inek (m). Tetḥeqqeḍ?", imageDoesNotContainScene: "Tugna-agi tettban-d ur tesɛi ara isefka n usayes. Tesremdeḍ aseddu n usayes deg usifeḍ?", cannotRestoreFromImage: "Asayes ulamek ara d-yettwarr seg ufaylu-agi n tugna", invalidSceneUrl: "Ulamek taktert n usayes seg URL i d-ittunefken. Ahat mačči d tameɣtut neɣ ur tegbir ara isefka JSON n Excalidraw.", resetLibrary: "Ayagi ad isfeḍ tamkarḍit-inek•m. Tetḥeqqeḍ?", removeItemsFromsLibrary: "Ad tekkseḍ {{count}} n uferdis (en) si temkarḍit?", invalidEncryptionKey: "Tasarut n uwgelhen isefk ad tesɛu 22 n yiekkilen. Amɛiwen srid yensa.", collabOfflineWarning: `Ulac tuqqna n internet.
Ibedilen-ik ur ttwaklasen ara!` }, RZ = { unsupportedFileType: "Anaw n ufaylu ur yettwasefrak ara.", imageInsertError: "D awezɣi tugra n tugna. Eɛreḍ tikkelt-nniḍen ardeqqal...", fileTooBig: "Afaylu meqqer aṭas. Tiddi tafellayt yurgen d {{maxSize}}.", svgImageInsertError: "D awezɣi tugra n tugna SVG. Acraḍ SVG yettban-d d armeɣtu.", failedToFetchImage: "", invalidSVGString: "SVG armeɣtu.", cannotResolveCollabServer: "Ulamek tuqqna s aqeddac n umyalel. Ma ulac uɣilif ales asali n usebter sakin eɛreḍ tikkelt-nniḍen.", importLibraryError: "Ur d-ssalay ara tamkarḍit", collabSaveFailed: "Ulamek asekles deg uzadur n yisefka deg ugilal. Ma ikemmel wugur, isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.", collabSaveFailed_sizeExceeded: "Ulamek asekles deg uzadur n yisefka deg ugilal, taɣzut n usuneɣ tettban-d temqer aṭas. Isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "Ayagi yezmer ad d-iglu s truẓi n<bold>Iferdisen n uḍris</bold>deg wunuɣen-inek.", line3: "Ad k-nsemter ad tsexsiḍ aɣewwar-agi. Tzemreḍ ad tḍefreḍ<link>isurifen-agi</link> ɣef wamek ara txedmeḍ.", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MZ = { selection: "Tafrayt", image: "Ger tugna", rectangle: "Asrem", diamond: "Ameɣṛun", ellipse: "Taglayt", arrow: "Taneccabt", line: "Izirig", freedraw: "Suneɣ", text: "Aḍris", library: "Tamkarḍit", lock: "Eǧǧ afecku n tefrayt yermed mbaɛd asuneɣ", penMode: "Askar n yimru - gdel tanalit", link: "Rnu/leqqem aseɣwen i talɣa yettwafernen", eraser: "Sfeḍ", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Afus (afecku n usmutti n tmuɣli)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, YZ = { canvasActions: "Tigawin n teɣzut n usuneɣ", selectedShapeActions: "Tigawin n talɣa yettwafernen", shapes: "Talɣiwin" }, vZ = { canvasPanning: "Akken ad tesmuttiḍ taɣzut n usuneɣ, ṭṭef ṛṛuda n umumed, neɣ seqdec afecku Afus", linearElement: "Ssit akken ad tebduḍ aṭas n tenqiḍin, zuɣer i yiwen n yizirig", freeDraw: "Ssit yerna zuɣer, serreḥ ticki tfukeḍ", text: "Tixidest: tzemreḍ daɣen ad ternuḍ aḍris s usiti snat n tikkal anida tebɣiḍ s ufecku n tefrayt", embeddable: "", text_selected: "Ssit snat n tikkal neɣ ssed taqeffalt Kcem akken ad tẓergeḍ aḍris", text_editing: "Ssit Escape neɣ CtrlOrCmd+ENTER akken ad tfakkeḍ asiẓreg", linearElementMulti: "Ssit ɣef tenqiḍt taneggarut neɣ ssed taqeffalt Escape neɣ taqeffalt Kcem akken ad tfakkeḍ", lockAngle: "Tzemreḍ ad tḥettmeḍ tiɣmert s tuṭṭfa n tqeffalt SHIFT", resize: `Tzemreḍ ad tḥettemeḍ assaɣ s tuṭṭfa n tqeffalt SHIFT mi ara tettbeddileḍ tiddi,
ma teṭṭfeḍ ALT abeddel n tiddi ad yili si tlemmast`, resizeImage: `Tzemreḍ ad talseḍ tiddi s tilelli s tuṭṭfa n SHIFT,
ṭṭef ALT akken ad talseḍ tiddi si tlemmast`, rotate: "Tzemreḍ ad tḥettemeḍ tiɣemmar s tuṭṭfa n SHIFT di tuzzya", lineEditor_info: "Ssed ɣef CtrlOrCmd yerna ssit snat n tikkal neɣ ssed ɣef CtrlOrCmd + Kcem akken ad tẓergeḍ tineqqiḍin", lineEditor_pointSelected: `Ssed taqeffalt kkes akken ad tekkseḍ tanqiḍ (tinqiḍin),
CtrlOrCmd+D akken ad tsiselgeḍ, neɣ zuɣer akken ad tesmuttiḍ`, lineEditor_nothingSelected: `Fren tanqiḍt akken ad tẓergeḍ (ṭṭef SHIFT akken ad tferneḍ aṭas),
neɣ ṭṭef Alt akken ad ternuḍ tinqiḍin timaynutin`, placeImage: "Ssit akken ad tserseḍ tugna, neɣ ssit u zuɣer akken ad tesbaduḍ tiddi-ines s ufus", publishLibrary: "Siẓreg tamkarḍit-inek•inem", bindTextToElement: "Ssed ɣef kcem akken ad ternuḍ aḍris", deepBoxSelect: "Ṭṭef CtrlOrCmd akken ad tferneḍ s telqey, yerna ad trewleḍ i uzuɣer", eraserRevert: "Ssed Alt akken ad tsefsxeḍ iferdisen yettwacerḍen i tukksa", firefox_clipboard_write: "", disableSnapping: "" }, HZ = { cannotShowPreview: "Ulamek abeqqeḍ n teskant", canvasTooBig: "Taɣzut n usuneɣ tezmer ad tili temeqqer aṭas.", canvasTooBigTip: "Tixidest: eɛreḍ ad tesqerbeḍ ciṭ iferdisen yembaɛaden." }, KZ = { headingMain: "Teḍra-d tuccḍa. Eɛreḍ <button>asali n usebter tikkelt-nniḍen.</button>", clearCanvasMessage: "Ma yella tulsa n usali ur tefri ara ugur, eɛreḍ <button>asfaḍ n teɣzut n usuneɣ.</button>", clearCanvasCaveat: " Ayagi ad d-iglu s usṛuḥu n umahil ", trackedToSentry: "Tuccḍa akked umesmagi {{eventId}} tettwasekles deg unagraw-nneɣ.", openIssueMessage: "Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ <button>afecku n weḍfar n yibugen.</button> Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.", sceneContent: "Agbur n usayes:" }, JZ = { desc_intro: "Tzemreḍ ad d-teɛerḍeḍ medden ɣer usayes-inek (m) amiran akken ad ttekkin yid-k.", desc_privacy: "Ur tqelliq ara, tiɣimit tsseqdac awgelhen ixef s ixef, dɣa ayen ara tsunɣeḍ ad iqqim d amaẓlay. Ula d aqeddac-nneɣ ur yezmir ara ad iwali acu txeddemeḍ.", button_startSession: "Bdu tiɣimit", button_stopSession: "Ḥbes tiɣimit", desc_inProgressIntro: "Tiɣimit n umɛawen s srid tetteddu akka tura.", desc_shareLink: "Bḍu aseɣwen-agi akked medden ukud tebɣiḍ ad temɛawaneḍ:", desc_exitSession: "Aḥbas n tɣimit ad k (m) yesenser si texxamt, maca ad tizmireḍ ad tkemmeleḍ amahil s usayes, s wudem adigan. Ẓer belli ayagi ur yettḥaz ara imdanen-nniḍen, yerna ad izmiren ad kemmelen ad mɛawanen di tsuffeɣt-nnsen.", shareTitle: "Rnu ɣer tɣimit n umɛiwen s srid n Excalidraw" }, ZZ = { title: "Tuccḍa" }, qZ = { disk_title: "Sekles deg uḍebsi", disk_details: "Sekles isefka n usayes deg ufaylu ansi ara tizmireḍ ad d-tketreḍ areḍqal.", disk_button: "Sekles deg ufaylu", link_title: "Aseɣwen n beṭṭu", link_details: "Sifeḍ am useɣwen n tɣuri kan.", link_button: "Sifeḍ deg useɣwen", excalidrawplus_description: "Sekles asayes-inek•inem di tallunt n umahil Excalidraw+.", excalidrawplus_button: "Sifeḍ", excalidrawplus_exportError: "Ulamek asifeḍ ɣer Excalidraw+ akka tura..." }, WZ = { blog: "Ɣeṛ ablug-nneɣ", click: "ssit", deepSelect: "Afran s telqey", deepBoxSelect: "Afran s telqey s tnaka, yerna ad tyrewleḍ i uzuɣer", curvedArrow: "Taneccabt izelgen", curvedLine: "Izirig izelgen", documentation: "Tasemlit", doubleClick: "ssit snat n tikkal", drag: "zuɣer", editor: "Amaẓrag", editLineArrowPoints: "Ẓreg tinqiḍin n yizirig/taneccabt", editText: "Ẓreg aḍris/rnu tabzimt", github: "Tufiḍ-d ugur? Azen-aɣ-d", howto: "Ḍfer imniren-nneɣ", or: "neɣ", preventBinding: "Seḥbes tuqqna n tneccabin", tools: "Ifecka", shortcuts: "Inegzumen n unasiw", textFinish: "Fak asiẓreg (amaẓrag n uḍris)", textNewLine: "Rnu ajerriḍ amaynut (amaẓrag n uḍris)", title: "Tallelt", view: "Tamuɣli", zoomToFit: "Simɣur akken ad twliḍ akk iferdisen", zoomToSelection: "Simɣur ɣer tefrayt", toggleElementLock: "Sekkeṛ/kkes asekker i tefrayt", movePageUpDown: "Smutti asebter d asawen/akessar", movePageLeftRight: "Smutti asebter s azelmaḍ/ayfus" }, jZ = { title: "Sfeḍ taɣzut n usuneɣ" }, TZ = { title: "Suffeɣ-d tamkarḍit", itemName: "Isem n uferdis", authorName: "Isem n umeskar", githubUsername: "Isem n useqdac n GitHub", twitterUsername: "Isem n useqdac n Twitter", libraryName: "Isem n temkarḍit", libraryDesc: "Aglam n temkarḍit", website: "Asmel n web", placeholder: { authorName: "Isem neɣ isem n useqdac inek•inem", libraryName: "Isem n temkarḍit-inek•inem", libraryDesc: "Aglam n temkarḍit-inek•inem akken ad tɛiwneḍ medden ad fehmen aseqdec-inec", githubHandle: "Isem n useqdac n GitHub ( d anefrunan) akken ad tizmireḍ ad tisẓrigeḍ tamkarḍit ticki tuzneḍ-tt i uselken", twitterHandle: "Isem n useqdac n Twitter (d anefrunan) akken ad nẓer anwa ara nsenmer deg udellel di Twitter", website: "Aseɣwen ɣer usmel-inek•inem neɣ wayeḍ (d anefrunan)" }, errors: { required: "Yettwasra", website: "Sekcem URL ameɣtu" }, noteDescription: "Azen tamkarḍit-inek•inem akken ad teddu di <link>akaram azayez n temkarḍit</link>i yimdanen-nniḍen ara isqedcen deg wunuɣen-nnsen.", noteGuidelines: "Tamkarḍit teḥwaǧ ad tettwaqbel s ufus qbel. Ma ulac uɣilif ɣer <link>iwellihen</link> send ad tazneḍ. Tesriḍ amiḍan n GitHub akken ad tmmeslayeḍ yerna ad tgeḍ ibeddilen ma yelaq, maca mačči d ayen yettwaḥetmen.", noteLicense: "Mi tuzneḍ ad tqebleḍ akken tamkarḍit ad d-teffeɣ s <link>Turagt MIT, </link>ayen yebɣan ad d-yini belli yal yiwen izmer ad ten-iseqdec war tilist.", noteItems: "Yal aferdis n temkarḍit isefk ad isɛu isem-is i yiman-is akken ad yili wamek ara yettusizdeg. Iferdisen-agi n temkarḍit ad ddun:", atleastOneLibItem: "Ma ulac uɣilif fern ma drus yiwen n uferdis n temkarḍit akken ad tebduḍ", republishWarning: "Tamawt: kra n yiferdisen yettwafernen ttwacerḍen ffeɣen-d/ttwaznen. Isefk ad talseḍ tuzzna n yiferdisen anagar mi ara tleqqemeḍ tamkarḍit neɣ tuzzna yellan." }, zZ = { title: "Tamkarḍit tettwazen", content: "Tanemmirt-ik•im {{authorName}}. Tamkarḍit-inek•inem tettwazen i weselken. Tzemreḍ ad tḍefreḍ aẓayer<link>dagi</link>" }, PZ = { resetLibrary: "Ales awennez n temkarḍit", removeItemsFromLib: "Kkes iferdisen yettafernen si temkarḍit" }, OZ = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, VZ = { tooltip: "Unuɣen-inek (m) ttuwgelhnen seg yixef s ixef dɣa iqeddacen n Excalidraw werǧin ad ten-walin. ", link: "Amagrad ɣef uwgelhen ixef s ixef di Excalidraw" }, XZ = { angle: "Tiɣmeṛt", element: "Aferdis", elements: "Iferdisen", height: "Tattayt", scene: "Asayes", selected: "Yettwafren", storage: "Aḥraz", title: "", total: "Aɣrud", version: "Alqem", versionCopy: "Sit ad tneɣleḍ", versionNotAvailable: "Ur inuḥ ulqem", width: "Tehri" }, _Z = { addedToLibrary: "Yettwarna ɣer temkarḍit", copyStyles: "Iɣunab yettwaneɣlen.", copyToClipboard: "Yettwaɣel ɣer tecfawit.", copyToClipboardAsPng: `{{exportSelection}} yettwanɣel ɣer tecfawit am PNG
({{exportColorScheme}})`, fileSaved: "Afaylu yettwasekles.", fileSavedToFilename: "Yettwasekles di {filename}", canvas: "taɣzut n usuneɣ", selection: "tafrayt", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, $Z = { transparent: "Afrawan", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, Aq = { app: { center_heading: "Akk isefka-inek•inem ttwakelsen s wudem adigan deg yiminig-inek•inem.", center_heading_plus: "Tebɣiḍ ad tedduḍ ɣer Excalidraw+ deg umḍiq?", menuHint: "Asifeḍ, ismenyifen, tutlayin, ..." }, defaults: { menuHint: "Asifeḍ, ismenyifen, d wayen-nniḍen...", center_heading: "", toolbarHint: "Fren afecku tebduḍ asuneɣ!", helpHint: "Inegzumen akked tallelt" } }, uq = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, eq = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, Cq = { title: "", button: "", description: "", syntax: "", preview: "" }, B7A = { labels: LZ, library: xZ, buttons: SZ, alerts: NZ, errors: RZ, toolBar: MZ, headings: YZ, hints: vZ, canvasError: HZ, errorSplash: KZ, roomDialog: JZ, errorDialog: ZZ, exportDialog: qZ, helpDialog: WZ, clearCanvasDialog: jZ, publishDialog: TZ, publishSuccessDialog: zZ, confirmDialog: PZ, imageExportDialog: OZ, encrypted: VZ, stats: XZ, toast: _Z, colors: $Z, welcomeScreen: Aq, colorPicker: uq, overwriteConfirm: eq, mermaid: Cq };
const g7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NZ,
  buttons: SZ,
  canvasError: HZ,
  clearCanvasDialog: jZ,
  colorPicker: uq,
  colors: $Z,
  confirmDialog: PZ,
  default: B7A,
  encrypted: VZ,
  errorDialog: ZZ,
  errorSplash: KZ,
  errors: RZ,
  exportDialog: qZ,
  headings: YZ,
  helpDialog: WZ,
  hints: vZ,
  imageExportDialog: OZ,
  labels: LZ,
  library: xZ,
  mermaid: Cq,
  overwriteConfirm: eq,
  publishDialog: TZ,
  publishSuccessDialog: zZ,
  roomDialog: JZ,
  stats: XZ,
  toast: _Z,
  toolBar: MZ,
  welcomeScreen: Aq
}, Symbol.toStringTag, { value: "Module" }));
var Bq = { paste: "Қою", pasteAsPlaintext: "", pasteCharts: "Диаграммаларды қою", selectAll: "Бәрін таңдау", multiSelect: "", moveCanvas: "", cut: "Қию", copy: "Көшіру", copyAsPng: "", copyAsSvg: "", copyText: "", copySource: "", convertToCode: "", bringForward: "", sendToBack: "", bringToFront: "", sendBackward: "", delete: "Жою", copyStyles: "Стильдерді көшіру", pasteStyles: "Стильдерді қою", stroke: "", background: "", fill: "", strokeWidth: "", strokeStyle: "", strokeStyle_solid: "", strokeStyle_dashed: "", strokeStyle_dotted: "", sloppiness: "", opacity: "", textAlign: "", edges: "", sharp: "", round: "", arrowheads: "Нұсқар ұштары", arrowhead_none: "Жоқ", arrowhead_arrow: "Нұсқар", arrowhead_bar: "Тосқауыл", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Қаріп өлшемі", fontFamily: "Қаріп тобы", addWatermark: "", handDrawn: "", normal: "Қалыпты", code: "", small: "Кіші", medium: "Орта", large: "Үлкен", veryLarge: "Өте үлкен", solid: "", hachure: "", zigzag: "", crossHatch: "", thin: "", bold: "", left: "Солға", center: "Ортаға", right: "Оңға", extraBold: "", architect: "", artist: "", cartoonist: "", fileTitle: "Файл атауы", colorPicker: "", canvasColors: "", canvasBackground: "", drawingCanvas: "", layers: "", actions: "", language: "Тіл", liveCollaboration: "", duplicateSelection: "Көшірме", untitled: "Атауысыз", name: "", yourName: "", madeWithExcalidraw: "", group: "", ungroup: "", collaborators: "", showGrid: "", addToLibrary: "", removeFromLibrary: "", libraryLoadingMessage: "", libraries: "", loadingScene: "", align: "", alignTop: "", alignBottom: "", alignLeft: "", alignRight: "", centerVertically: "", centerHorizontally: "", distributeHorizontally: "", distributeVertically: "", flipHorizontal: "", flipVertical: "", viewMode: "", share: "", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "", excalidrawLib: "", decreaseFontSize: "", increaseFontSize: "", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "", editEmbed: "", create: "", createEmbed: "", label: "", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "", unlock: "", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gq = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, tq = { clearReset: "", exportJSON: "", exportImage: "", export: "", copyToClipboard: "", save: "", saveAs: "", load: "", getShareableLink: "", close: "Жабу", selectLanguage: "Тілді таңдау", scrollBackToContent: "", zoomIn: "", zoomOut: "", resetZoom: "", menu: "Mәзір", done: "Дайын", edit: "", undo: "", redo: "", resetLibrary: "", createNewRoom: "", fullScreen: "", darkMode: "", lightMode: "", zenMode: "", objectsSnapMode: "", exitZenMode: "", cancel: "", clear: "", remove: "", embed: "", publishLibrary: "", submit: "", confirm: "", embeddableInteractionButton: "" }, iq = { clearReset: "", couldNotCreateShareableLink: "", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "", importBackendFailed: "", cannotExportEmptyCanvas: "", couldNotCopyToClipboard: "", decryptFailed: "", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: "", errorAddingToLibrary: "", errorRemovingFromLibrary: "", confirmAddLibrary: "", imageDoesNotContainScene: "", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, Eq = { unsupportedFileType: "", imageInsertError: "Суретті жүктеу мүмкін болмады. Кейінірек қайталап көріңіз...", fileTooBig: "Файл өте үлкен. Максималды рұқсат етілген көлем {{maxSize}}.", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "", cannotResolveCollabServer: "", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aq = { selection: "", image: "Суретті қою", rectangle: "", diamond: "", ellipse: "", arrow: "Нұсқар", line: "", freedraw: "", text: "Мәтін", library: "", lock: "", penMode: "", link: "", eraser: "", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, Iq = { canvasActions: "", selectedShapeActions: "", shapes: "" }, oq = { canvasPanning: "", linearElement: "", freeDraw: "", text: "", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, Qq = { cannotShowPreview: "", canvasTooBig: "", canvasTooBigTip: "" }, nq = { headingMain: "", clearCanvasMessage: "", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, rq = { desc_intro: "", desc_privacy: "", button_startSession: "", button_stopSession: "", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, sq = { title: "Қате" }, lq = { disk_title: "", disk_details: "Сахна деректерін кейін қайта импорттауға болатын файлға экспорттаңыз.", disk_button: "Файлға сақтау", link_title: "Ортақ сілтеме", link_details: "Тек оқуға арналған сілтеме ретінде экспорттау.", link_button: "Сілтемеге экспорттау", excalidrawplus_description: "Сахнаны өзіңіздің Excalidraw+ жұмыс кеңістігінде сақтаңыз.", excalidrawplus_button: "Экспорт", excalidrawplus_exportError: "Қазіргі уақытта Excalidraw+ үшін экспорттау мүмкін емес..." }, cq = { blog: "Біздің блогты оқу", click: "шерту", deepSelect: "", deepBoxSelect: "", curvedArrow: "Майысқан нұсқар", curvedLine: "Майысқан сызық", documentation: "Құжаттама", doubleClick: "қос шерту", drag: "апару", editor: "Өңдеу", editLineArrowPoints: "", editText: "", github: "Қате таптыңыз ба? Жолдаңыз", howto: "Біздің нұсқаулықтарды орындаңыз", or: "немесе", preventBinding: "Нұсқарды байланыстыруға жол бермеу", tools: "", shortcuts: "Пернетақта пәрмендері", textFinish: "Өңдеуді аяқтау (мәтіндік редактор)", textNewLine: "Жаңа жолға көшу (мәтіндік редактор)", title: "Көмек", view: "Көру", zoomToFit: "Барлық элементтердің көлеміне сәйкес үлкейту", zoomToSelection: "Таңдалғанды үлкейту", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dq = { title: "" }, Dq = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, hq = { title: "", content: "" }, wq = { resetLibrary: "", removeItemsFromLib: "" }, Fq = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, pq = { tooltip: "Сіздің сызбаларыңыз өтпелі шифрлеу арқылы шифрланған, сондықтан Excalidraw серверлері оларды ешқашан көрмейді.", link: "Excalidraw қолданатын өтпелі шифрлеу туралы блог жазбасы" }, mq = { angle: "Бұрыш", element: "Элемент", elements: "Элементтер", height: "Биіктігі", scene: "Сахна", selected: "Таңдалды", storage: "Сақтау көлемі", title: "", total: "Барлығы", version: "Нұсқа", versionCopy: "Көшіру үшін басыңыз", versionNotAvailable: "Бұл нұсқа қолжетімсіз", width: "Ені" }, kq = { addedToLibrary: "", copyStyles: "Стильдер көшірілді.", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "Файл сақталды.", fileSavedToFilename: "{filename} сақталды", canvas: "", selection: "таңдау", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yq = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, bq = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, Uq = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, Gq = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fq = { title: "", button: "", description: "", syntax: "", preview: "" }, t7A = { labels: Bq, library: gq, buttons: tq, alerts: iq, errors: Eq, toolBar: aq, headings: Iq, hints: oq, canvasError: Qq, errorSplash: nq, roomDialog: rq, errorDialog: sq, exportDialog: lq, helpDialog: cq, clearCanvasDialog: dq, publishDialog: Dq, publishSuccessDialog: hq, confirmDialog: wq, imageExportDialog: Fq, encrypted: pq, stats: mq, toast: kq, colors: yq, welcomeScreen: bq, colorPicker: Uq, overwriteConfirm: Gq, mermaid: fq };
const i7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iq,
  buttons: tq,
  canvasError: Qq,
  clearCanvasDialog: dq,
  colorPicker: Uq,
  colors: yq,
  confirmDialog: wq,
  default: t7A,
  encrypted: pq,
  errorDialog: sq,
  errorSplash: nq,
  errors: Eq,
  exportDialog: lq,
  headings: Iq,
  helpDialog: cq,
  hints: oq,
  imageExportDialog: Fq,
  labels: Bq,
  library: gq,
  mermaid: fq,
  overwriteConfirm: Gq,
  publishDialog: Dq,
  publishSuccessDialog: hq,
  roomDialog: rq,
  stats: mq,
  toast: kq,
  toolBar: aq,
  welcomeScreen: bq
}, Symbol.toStringTag, { value: "Module" }));
var Lq = { paste: "បិទភ្ជាប់", pasteAsPlaintext: "បិទភ្ជាប់ជាអត្ថបទធម្មតា", pasteCharts: "បិទភ្ជាប់តារាង", selectAll: "ជ្រើសរើស​ទាំងអស់", multiSelect: "បន្ថែមធាតុទៅលើការជ្រើសរើស", moveCanvas: "ផ្លាស់ទីបាវ", cut: "កាត់", copy: "ចម្លង", copyAsPng: "ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ PNG", copyAsSvg: "ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ SVG", copyText: "ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​អត្ថបទ", copySource: "", convertToCode: "", bringForward: "នាំយកទៅលើ", sendToBack: "នាំយកទៅក្រោយបង្អស់", bringToFront: "នាំយកទៅលើបង្អស់", sendBackward: "នាំយកទៅក្រោយ", delete: "លុប", copyStyles: "ចម្លងរចនាប័ទ្ម", pasteStyles: "បិទភ្ជាប់រចនាប័ទ្ម", stroke: "ខ្វាច់", background: "ផ្ទៃខាងក្រោយ", fill: "បំពេញ", strokeWidth: "ទទឹងខ្វាច់", strokeStyle: "រចនាប័ទ្មរបស់ខ្វាច់", strokeStyle_solid: "តាន់", strokeStyle_dashed: "ដាច់ៗ", strokeStyle_dotted: "ចំណុចៗ", sloppiness: "រចនាប័ទ្មបន្ទាត់", opacity: "ភាពច្បាស់", textAlign: "តម្រឹមអត្ថបទ", edges: "គែម", sharp: "មុត", round: "រាងមូល", arrowheads: "ក្បាលព្រួញ", arrowhead_none: "គ្មាន", arrowhead_arrow: "ព្រួញ", arrowhead_bar: "របារ", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "ត្រីកោណ", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "ទំហំពុម្ពអក្សរ", fontFamily: "ក្រុម​ពុម្ពអក្សរ", addWatermark: 'បន្ថែមវ៉ាត់ធើម៉ាក "Made with Excalidraw"', handDrawn: "គូរដោយដៃ", normal: "ធម្មតា", code: "កូដ", small: "តូច", medium: "មធ្យម", large: "ធំ", veryLarge: "ធំខ្លាំង", solid: "តាន់", hachure: "Hachure", zigzag: "Zigzag", crossHatch: "បន្ទាត់ឆ្នូតៗ", thin: "ស្តើង", bold: "ដឹត", left: "ខាងឆ្វេង", center: "កណ្ដាល", right: "នៅខាងស្ដាំ", extraBold: "ដិតបន្ថែម", architect: "ស្ថាបត្យករ", artist: "សិល្បៈករ", cartoonist: "អ្នកគំនូរជីវចល", fileTitle: "ឈ្មោះ​ឯកសារ", colorPicker: "ឧបករណ៍​ជ្រើស​ពណ៌", canvasColors: "ប្រើលើបាវ", canvasBackground: "ផ្ទៃខាងក្រោយបាវ", drawingCanvas: "តំបន់គំនូរ", layers: "ស្រទាប់", actions: "សកម្មភាព", language: "ភាសា", liveCollaboration: "សហការគ្នាផ្ទាល់...", duplicateSelection: "ចម្លង", untitled: "គ្មានឈ្មោះ", name: "ឈ្មោះ", yourName: "ឈ្មោះ​របស់​អ្នក", madeWithExcalidraw: "បង្កើតជាមួយ Excalidraw", group: "ការជ្រើសរើសជាក្រុម", ungroup: "បំបែកក្រុមការជ្រើសរើសជាក្រុម", collaborators: "អ្នកសហការ", showGrid: "បង្ហាញក្រឡាចត្រង្គ", addToLibrary: "បន្ថែមទៅបណ្ណាល័យ", removeFromLibrary: "លុបចេញពីបណ្ណាល័យ", libraryLoadingMessage: "កំពុងផ្ទុកបណ្ណាល័យ...", libraries: "រកមើលបណ្ណាល័យ", loadingScene: "កំពុង​ផ្ទុក​ស៊ីន...", align: "តម្រឹម", alignTop: "តម្រឹមផ្នែកខាងលើ", alignBottom: "តម្រឹមផ្នែកខាងក្រោម", alignLeft: "​តម្រឹម​ឆ្វេង", alignRight: "តម្រឹម​ស្តាំ", centerVertically: "កណ្តាល​បញ្ឈរ", centerHorizontally: "កណ្តាល​ផ្ដេក", distributeHorizontally: "ចែកចាយផ្ដេក", distributeVertically: "ចែកចាយបញ្ឈរ", flipHorizontal: "ត្រឡប់​ដោយ​ផ្ដេក", flipVertical: "ត្រឡប់​ដោយ​បញ្ឈរ", viewMode: "ម៉ូដ​បង្ហាញ", share: "ចែករំលែក", showStroke: "បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ខ្វាច់", showBackground: "បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ផ្ទៃខាងក្រោយ", toggleTheme: "បិទ/បើកប្រធានបទ", personalLib: "បណ្ណាល័យផ្ទាល់ខ្លួន", excalidrawLib: "បណ្ណាល័យ Excalidraw", decreaseFontSize: "បន្ថយទំហំពុម្ពអក្សរ", increaseFontSize: "បង្កើនទំហំពុម្ពអក្សរ", unbindText: "ស្រាយអត្ថបទ", bindText: "ភ្ជាប់អត្ថបទទៅប្រអប់", createContainerFromText: "រុំអត្ថបទក្នុងប្រអប់មួយ", link: { edit: "កែតំណភ្ជាប់", editEmbed: "", create: "បង្កើតតំណភ្ជាប់", createEmbed: "", label: "តំណ", labelEmbed: "", empty: "" }, lineEditor: { edit: "កែសម្រួលបន្ទាត់", exit: "ចាកចេញពីការកែសម្រួលបន្ទាត់" }, elementLock: { lock: "ចាក់សោ", unlock: "ដោះសោ", lockAll: "ចាក់សោទាំងអស់", unlockAll: "ដោះសោទាំងអស់" }, statusPublished: "ត្រូវបានបោះពុម្ពផ្សាយ", sidebarLock: "ទុករបារចំហៀងបើក", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xq = { noItems: "មិនទាន់មានធាតុបន្ថែមទេ...", hint_emptyLibrary: "ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ ឬដំឡើងបណ្ណាល័យពីឃ្លាំងសាធារណៈខាងក្រោម។", hint_emptyPrivateLibrary: "ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ" }, Sq = { clearReset: "កំណត់បាវឡើងវិញ", exportJSON: "នាំចេញជាឯកសារ", exportImage: "នាំរូបភាពចេញ", export: "រក្សាទុក​នៅ...", copyToClipboard: "ចម្លងទៅក្តារតម្បៀតខ្ទាស់", save: "រក្សាទុកទៅឯកសារបច្ចុប្បន្ន", saveAs: "រក្សាទុក​ជា", load: "បើក", getShareableLink: "យកតំណដែលអាចចែករំលែកបាន", close: "បិទ", selectLanguage: "រើសភាសា", scrollBackToContent: "រំកិលត្រឡប់ទៅមាតិកាវិញ", zoomIn: "ពង្រីក", zoomOut: "បង្រួម", resetZoom: "កំណត់ការពង្រីកឡើងវិញ", menu: "ម៉ឺនុយ", done: "រួចរាល់", edit: "កែ", undo: "ត្រឡប់វិញ", redo: "ធ្វើ​វិញ", resetLibrary: "កំណត់បណ្ណាល័យឡើងវិញ", createNewRoom: "បង្កើតបន្ទប់ថ្មី", fullScreen: "ពេញ​អេក្រង់", darkMode: "ម៉ូដងងឹត", lightMode: "ម៉ូដភ្លឺ", zenMode: "ម៉ូត Zen", objectsSnapMode: "", exitZenMode: "ចេញពី zen​ ម៉ូត", cancel: "បោះបង់", clear: "សម្អាត", remove: "ដកចេញ", embed: "", publishLibrary: "បោះពុម្ពផ្សាយ", submit: "ដាក់​ស្នើ", confirm: "បញ្ជាក់", embeddableInteractionButton: "" }, Nq = { clearReset: "វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?", couldNotCreateShareableLink: "មិនអាចបង្កើតតំណដែលអាចចែករំលែកបានទេ។", couldNotCreateShareableLinkTooBig: "មិន​អាច​បង្កើត​តំណ​ដែល​អាច​ចែក​រំលែក​បាន៖ ស៊ីន​ធំ​ពេក", couldNotLoadInvalidFile: "មិនអាចផ្ទុកឯកសារមិនត្រឹមត្រូវបានទេ។", importBackendFailed: "ការនាំចូលពីម៉ាស៊ីនមេបានបរាជ័យ។", cannotExportEmptyCanvas: "មិនអាចនាំចេញបាវទទេបានទេ។", couldNotCopyToClipboard: "មិនអាចចម្លងទៅក្ដារតម្បៀតខ្ទាស់បានទេ។", decryptFailed: "មិនអាចឌិគ្រីបទិន្នន័យបានទេ។", uploadedSecurly: "ការបង្ហោះត្រូវបានការពារដោយការអ៊ិនគ្រីបពីចុងដល់ចប់ មានន័យថា ទាំងម៉ាស៊ីនមេរបស់ Excalidraw ឬភាគីទីបីមិនអាចអានខ្លឹមសារបានទេ។", loadSceneOverridePrompt: "ការផ្ទុកគំនូរខាងក្រៅនឹងជំនួសមាតិកាដែលមានស្រាប់របស់អ្នក។ តើអ្នកចង់បន្តទេ?", collabStopOverridePrompt: `ការបញ្ឈប់សម័យនឹងសរសេរជាន់លើគំនូរដែលបានរក្សាទុកនៅលើកុំព្យូទ័ររបស់អ្នកពីមុន។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?

(ប្រសិនបើអ្នកចង់រក្សាគំនូរដែលនៅលើកុំព្យូទ័ររបស់អ្នក គ្រាន់តែបិទផ្ទាំងកម្មវិធីរុករក។)`, errorAddingToLibrary: "មិនអាចបន្ថែមធាតុទៅបណ្ណាល័យបានទេ", errorRemovingFromLibrary: "មិនអាចលុបធាតុចេញពីបណ្ណាល័យបានទេ", confirmAddLibrary: "វានឹងបន្ថែមរូបរាង {{numShapes}} ទៅបណ្ណាល័យរបស់អ្នក។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?", imageDoesNotContainScene: "រូបភាពនេះហាក់ដូចជាមិនមានទិន្នន័យស៊ីនណាមួយទេ។ តើអ្នកបានបើកការបង្កប់ស៊ីននៅពេលនាំចេញទេ?", cannotRestoreFromImage: "មិនអាចស្ដារស៊ីនពីឯកសាររូបភាពនេះបានទេ", invalidSceneUrl: "មិន​អាច​នាំចូល​ស៊ីន​ពី URL ដែល​បាន​ផ្តល់​ឱ្យ​ទេ។ វាមានទម្រង់ខុស ឬមិនមានទិន្នន័យ Excalidraw JSON ដែលត្រឹមត្រូវ។", resetLibrary: "វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?", removeItemsFromsLibrary: "តើអ្នកប្រាកដថាចង់លុប {{count}} ធាតុចេញពីបណ្ណាល័យទេ?", invalidEncryptionKey: "សោអ៊ីនគ្រីបត្រូវតែមាន 22 តួអក្សរ។ ការសហការផ្ទាល់ត្រូវបានបិទ។", collabOfflineWarning: `គ្មានការតភ្ជាប់អ៊ីនធឺណិត។
ការផ្លាស់ប្តូររបស់អ្នកនឹងមិនត្រូវបានរក្សាទុកទេ!` }, Rq = { unsupportedFileType: "ប្រភេទឯកសារមិនត្រូវបានគាំទ្រទេ។", imageInsertError: "មិនអាចបញ្ចូលរូបភាពបានទេ។ សូម​ព្យាយាម​ម្តង​ទៀត​នៅ​ពេល​ក្រោយ……", fileTooBig: "ឯកសារធំពេក។ ទំហំអតិបរមាដែលអនុញ្ញាតគឺ {{maxSize}}។", svgImageInsertError: "មិនអាចបញ្ចូលរូបភាព SVG បានទេ។ ស្លាក SVG ហាក់ដូចជាមិនត្រឹមត្រូវ។", failedToFetchImage: "", invalidSVGString: "SVG មិន​ត្រឹមត្រូវ។", cannotResolveCollabServer: "មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេសហការផ្ទាល់បានទេ។ សូមផ្ទុកទំព័រឡើងវិញ ហើយព្យាយាមម្តងទៀត។", importLibraryError: "មិនអាចផ្ទុកបណ្ណាល័យបានទេ។", collabSaveFailed: "មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ។ ប្រសិនបើបញ្ហានៅតែបន្តកើតមាន​ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។", collabSaveFailed_sizeExceeded: "មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ, ផ្ទាំងបាវហាក់ដូចជាធំពេក។ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។", imageToolNotSupported: "", brave_measure_text_error: { line1: "អ្នកហាក់ដូចជាកំពុងប្រើប្រាស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត Brave ជាមួយនឹងការកំណត់ <bold>ការពារស្នាមម្រាមដៃយ៉ាងធ្ងន់ធ្ងរ</bold> ត្រូវបានបើក។", line2: "វាអាចបណ្តាលឱ្យមានការបំបែក <bold>ធាតុអត្ថបទ</bold> នៅក្នុងគំនូររបស់អ្នក។", line3: "យើងណែនាំយ៉ាងមុតមាំឱ្យបិទការកំណត់នេះ។ អ្នកអាចអនុវត្តតាម <link>ជំហានទាំងនេះ</link> ដើម្បីបិទការកំណត់នេះ។", line4: "ប្រសិនបើការបិទការកំណត់នេះមិនបានជួសជុលការបង្ហាញធាតុអត្ថបទទេ សូមដាក់ <issueLink>issue</issueLink> នៅលើ GitHub ឬរាយការណ៍នៅលើ <discordLink>Discord</discordLink> របស់យើង" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, Mq = { selection: "ការជ្រើសរើស", image: "បញ្ចូលរូបភាព", rectangle: "ចតុ​កោណ​កែង​", diamond: "ពេជ្រ", ellipse: "ពងក្រពើ", arrow: "ព្រួញ", line: "បន្ទាត់", freedraw: "គូរ", text: "អត្ថបទ", library: "បណ្ណាល័យ", lock: "រក្សារឧបករណ៍ដែលបានជ្រើសរើសបន្ទាប់ពីគូររួច", penMode: "របៀបប៊ិច - ជៀសវាងការប៉ះ", link: "បន្ថែម/ធ្វើបច្ចុប្បន្នភាពតំណភ្ជាប់សម្រាប់រូបរាងដែលបានជ្រើសរើស", eraser: "ជ័រលុប", frame: "", magicframe: "", embeddable: "", laser: "", hand: "ដៃ (panning tool)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, Yq = { canvasActions: "សកម្មភាពបាវ", selectedShapeActions: "សកម្មភាពរបស់រាងដែលបានជ្រើសរើស", shapes: "រាង" }, vq = { canvasPanning: "ដើម្បីផ្លាស់ទីបាវ សូមសង្កត់កង់កណ្ដុរឬគ្រាប់ចុចspacebarខណៈពេលកំពុងអូស ឬប្រើឧបករណ៍ដៃ។", linearElement: "ចុចដើម្បីបង្កើតចំណុចច្រើន អូសដើម្បីបង្កើតបន្ទាត់មួយ", freeDraw: "ចុច​ហើយ​អូស លែង​ពេល​រួចរាល់", text: "គន្លឹះ៖ អ្នកក៏អាចបន្ថែមអត្ថបទដោយចុចពីរដងនៅកន្លែងណាមួយដោយប្រើឧបករណ៍ជ្រើសរើស", embeddable: "", text_selected: "ចុចពីរដង ឬចុច ENTER ដើម្បីកែសម្រួលអត្ថបទ", text_editing: "ចុច Escape ឬ CtrlOrCmd +ENTER ដើម្បីបញ្ចប់ការកែសម្រួល", linearElementMulti: "ចុចលើចំណុចចុងក្រោយ ឬចុច Esc/Enter ដើម្បីបញ្ចប់", lockAngle: "អ្នកអាចសង្កត់ Shift ដើម្បីកំណត់មុំ", resize: `អ្នកអាចសង្កត់ SHIFT ដើម្បីបងំ្ខឲមានសមាមាត្រ ខណៈពេលដែលប្តូរទំហំ
សង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល`, resizeImage: `អ្នកអាចប្តូរទំហំរូបភាពដោយសេរីដោយសង្កត់ SHIFT,
សង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល`, rotate: "អ្នកអាចសង្កត់ Shift ខណៈពេលកំពុងបង្វិល ដើម្បីកម្រិតមុំ", lineEditor_info: "សង្កត់ CtrlOrCmd ហើយចុចពីរដង ឬចុច CtrlOrCmd + Enter ដើម្បីកែសម្រួលចំណុច", lineEditor_pointSelected: `ចុច Delete ដើម្បីលុបចំណុច(ច្រើន)
CtrlOrCmd+D ដើម្បីចម្លង, ឬអូសដើម្បីផ្លាស់ទី`, lineEditor_nothingSelected: `ជ្រើសរើសចំណុចដែលត្រូវកែសម្រួល (សង្កត់ SHIFT ដើម្បីជ្រើសរើសច្រើនចំណុច)
ឬ សង្កត់ Alt ហើយចុចដើម្បីបន្ថែមចំណុចថ្មី។`, placeImage: "ចុចដើម្បីដាក់រូបភាព ឬចុចហើយអូសដើម្បីកំណត់ទំហំរបស់រូបភាពដោយដៃ", publishLibrary: "បោះពុម្ពផ្សាយបណ្ណាល័យផ្ទាល់ខ្លួនរបស់អ្នក", bindTextToElement: "ចុច Enter ដើម្បីបន្ថែមអត្ថបទ", deepBoxSelect: "សង្កត់ CtrlOrCmd ដើម្បីជ្រើសរើសយ៉ាងជ្រៅ និងជៀសវាងការអូស", eraserRevert: "សង្កត់ Alt ដើម្បីដកការជ្រើសរើសធាតុដែលត្រូវបានសម្គាល់សម្រាប់ការលុប", firefox_clipboard_write: `បើកមុខងារនេះដោយកំណត់ទង់ "dom.events.asyncClipboard.clipboardItem" ទៅ "true" 
ដើម្បីផ្លាស់ប្តូរទង់កម្មវិធីរុករកនៅក្នុង Firefox សូមចូលទៅកាន់ទំព័រ "about:config"។`, disableSnapping: "" }, Hq = { cannotShowPreview: "មិនអាចបង្ហាញការមើលជាមុនបាន", canvasTooBig: "បាវអាចមានទំហំធំពេក។", canvasTooBigTip: "គន្លឹះ៖ ព្យាយាមផ្លាស់ទីធាតុដែលឆ្ងាយបំផុតឱ្យទៅជិតគ្នាបន្តិច។" }, Kq = { headingMain: "បានជួបប្រទះកំហុសមួយ។ សូមព្យាយាម <button>ផ្ទុកទំព័រឡើងវិញ</button>។", clearCanvasMessage: "ប្រសិនបើការផ្ទុកឡើងវិញមិនអាចដោះស្រាយកំហុសបានទេ សូមសាកល្បង <button>សម្អាតបាវ។</button>", clearCanvasCaveat: " នេះនឹងបណ្តាលឱ្យបាត់បង់ការងារ ", trackedToSentry: "កំហុសជាមួយលេខសម្គាល់ {{eventId}} ត្រូវបានតាមដាននៅលើប្រព័ន្ធរបស់យើង។", openIssueMessage: "យើងមានការប្រុងប្រយ័ត្នខ្លាំងណាស់ក្នុងការមិនបញ្ចូលព័ត៌មានរបស់ស៊ីនរបស់អ្នកទៅលើកំហុស។ ប្រសិនបើស៊ីនរបស់អ្នកមិនមានលក្ខណៈឯកជនទេ សូមពិចារណាបន្តទៅកាន់ <button>កម្មវិធីតាមដានកំហុសរបស់យើង។</button> សូមបញ្ចូលព័ត៌មានខាងក្រោមដោយចម្លង និងបិទភ្ជាប់វាទៅក្នុងបញ្ហារបស់ GitHub។", sceneContent: "មាតិកាបាវ៖" }, Jq = { desc_intro: "អ្នកអាចអញ្ជើញអ្នកដទៃឱ្យសហការជាមួយអ្នកនៅលើស៊ីនបច្ចុប្បន្ន។", desc_privacy: "កុំបារម្ភ វគ្គប្រើការអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះអ្វីដែលអ្នកគូរនឹងនៅតែជាឯកជន។ សូម្បីតែម៉ាស៊ីនមេរបស់យើងក៏នឹងមិនអាចមើលឃើញអ្វីដែលអ្នកកំពុងធ្វើដែរ។", button_startSession: "ចាប់ផ្តើមវគ្គ", button_stopSession: "បញ្ឈប់វគ្គ", desc_inProgressIntro: "វគ្គសហការផ្ទាល់ឥឡូវនេះកំពុងដំណើរការ។", desc_shareLink: "ចែករំលែកតំណនេះជាមួយអ្នកដែលអ្នកចង់សហការជាមួយ៖", desc_exitSession: "ការបញ្ឈប់វគ្គនេះនឹងផ្តាច់អ្នកចេញពីបន្ទប់ ប៉ុន្តែអ្នកនឹងនៅតែអាចបន្តប្រើបាវនៅលើកុំព្យូទ័ររបស់អ្នក។ សូមចំណាំថាវានឹងមិនប៉ះពាល់ដល់អ្នកប្រើប្រាស់ផ្សេងទៀតទេ​ ហើយពួកគេនឹងនៅតែអាចបន្តសហការលើកំណែរបស់ពួកគេ។", shareTitle: "ចូលរួមវគ្គសហការផ្ទាល់នៅលើ Excalidraw" }, Zq = { title: "មានកំហុស" }, qq = { disk_title: "រក្សាទុកទៅថាស", disk_details: "នាំចេញទិន្នន័យរបស់ស៊ីនជាឯកសារដែលអ្នកអាចនាំចូលនៅពេលក្រោយ។", disk_button: "រក្សាទុកក្នុងឯកសារ", link_title: "តំណដែលអាចចែករំលែកបាន", link_details: "នាំចេញជាតំណបានតែមើលឬអាន។", link_button: "នាំចេញជាតំណ", excalidrawplus_description: "រក្សាទុកស៊ីនទៅកន្លែងធ្វើការ Excalidraw+ របស់អ្នក។", excalidrawplus_button: "នាំចេញ", excalidrawplus_exportError: "មិនអាចនាំចេញទៅ Excalidraw+ បានទេនៅពេលនេះ..." }, Wq = { blog: "អានប្លក់របស់យើង", click: "ចុច", deepSelect: "ការជ្រើសរើសជាក្រុម", deepBoxSelect: "ជ្រើសរើសជាក្រុម និង ជៀសវាងការអូសទាញផ្លាស់ទី", curvedArrow: "ព្រួញកោង", curvedLine: "ព្រួញកោង", documentation: "ឯកសារ", doubleClick: "ចុច​ពីរ​ដង", drag: "អូស", editor: "កម្មវិធីនិពន្ធ", editLineArrowPoints: "កែសម្រួលចំណុចនៃបន្ទាត់ ឬព្រួញ", editText: "បន្ថែម ឬកែសម្រួលអត្ថបទ", github: "រកឃើញបញ្ហា? ដាក់ស្នើ", howto: "ឯកសារជំនួយ", or: "ឬ", preventBinding: "ទប់ស្កាត់ការចងព្រួញ", tools: "ឧបករណ៍", shortcuts: "ផ្លូវកាត់ក្តារចុច", textFinish: "បញ្ចប់ការកែសម្រួល (កម្មវិធីនិពន្ធអត្ថបទ)", textNewLine: "ចុះបន្ទាត់ (កម្មវិធីនិពន្ធអត្ថបទ)", title: "ជំនួយ", view: "បង្ហាញ", zoomToFit: "ធ្វើមាត្រដ្ឋានឱ្យសមនឹងធាតុទាំងអស់។", zoomToSelection: "ពង្រីកទៅការជ្រើសរើស", toggleElementLock: "ចាក់សោ/ដោះសោការជ្រើសរើស", movePageUpDown: "ផ្លាស់ទីទំព័រឡើងលើ/ចុះក្រោម", movePageLeftRight: "ផ្លាស់ទីទំព័រទៅឆ្វេង/ស្ដាំ" }, jq = { title: "សម្អាតបាវ" }, Tq = { title: "បោះពុម្ពបណ្ណាល័យ", itemName: "ឈ្មោះ​ធាតុ", authorName: "ឈ្មោះអ្នកនិពន្ធ", githubUsername: "ឈ្មោះអ្នកប្រើ GitHub", twitterUsername: "ឈ្មោះអ្នកប្រើ Twitter", libraryName: "ឈ្មោះបណ្ណាល័យ", libraryDesc: "ការពិពណ៌នាអំពីបណ្ណាល័យ", website: "គេហទំព័រ", placeholder: { authorName: "ឈ្មោះរបស់អ្នក ឬឈ្មោះអ្នកប្រើប្រាស់", libraryName: "ឈ្មោះបណ្ណាល័យរបស់អ្នក", libraryDesc: "ការពិពណ៌នាអំពីបណ្ណាល័យរបស់អ្នក នឹងអនុញ្ញាតឱ្យអ្នក​ផ្សេងយល់ពីការប្រើប្រាស់របស់វា។", githubHandle: "ឈ្មោះអ្នកប្រើ GitHub (ជាជម្រើស) ដូច្នេះអ្នកអាចកែសម្រួលបណ្ណាល័យបាននៅពេលដាក់ស្នើសម្រាប់ការពិនិត្យ", twitterHandle: "ឈ្មោះអ្នកប្រើប្រាស់ Twitter (ជាជម្រើស) ដូច្នេះយើងដឹងថាអ្នកណាដែលត្រូវផ្តល់ក្រេឌីតនៅពេលផ្សព្វផ្សាយតាម Twitter", website: "ភ្ជាប់ទៅគេហទំព័រផ្ទាល់ខ្លួនរបស់អ្នក ឬគេហទំព័រផ្សេងទៀត (ជាជម្រើស)" }, errors: { required: "ត្រូវបានទាមទារ", website: "សូមវាយបញ្ចូល URL ​ដែលត្រឹមត្រូវ" }, noteDescription: "ដាក់ស្នើបណ្ណាល័យរបស់អ្នកដើម្បីដាក់បញ្ចូលក្នុង <link>ឃ្លាំងបណ្ណាល័យសាធារណៈ</link> សម្រាប់ឲ្យអ្នកផ្សេងប្រើក្នុងគំនូររបស់ពួកគេ។", noteGuidelines: "បណ្ណាល័យត្រូវតែអនុម័តដោយដៃជាមុនសិន។ សូមអាន <link>ការណែនាំ</link> មុនពេលដាក់ស្នើ។ ការប្រាស្រ័យទាក់ទងជាបន្តបន្ទាប់ និងការផ្លាស់ប្តូរបណ្ណាល័យទាមទារឱ្យអ្នកមានគណនី GitHub ប៉ុន្តែមិនត្រូវបានទាមទារយ៉ាងតឹងរ៉ឹងទេ។", noteLicense: "តាមរយៈការដាក់ស្នើ អ្នកយល់ព្រមថាបណ្ណាល័យនឹងត្រូវបានបោះពុម្ពផ្សាយក្រោម <link>អាជ្ញាប័ណ្ណ MIT</link> ដែលមានន័យយ៉ាងខ្លី អ្នកណាក៏អាចប្រើប្រាស់វាបានដោយគ្មានការរឹតត្បិត។", noteItems: "ធាតុនីមួយៗនៅក្នុងបណ្ណាល័យត្រូវតែមានឈ្មោះផ្ទាល់ខ្លួនដើម្បីយើងអាចត្រងវាបាន។ ធាតុខាងក្រោមនឹងត្រូវបានរួមបញ្ចូល:", atleastOneLibItem: "សូមជ្រើសរើសយ៉ាងហោចណាស់ធាតុបណ្ណាល័យមួយដើម្បីចាប់ផ្តើម", republishWarning: "ចំណាំ៖ ធាតុដែលត្រូវបានជ្រើសរើសមួយចំនួនត្រូវបានសម្គាល់ថាបានបោះពុម្ព/បញ្ជូនរួចរាល់ហើយ។ អ្នកគួរតែបញ្ជូនធាតុឡើងវិញនៅពេលដែលធ្វើបច្ចុប្បន្នភាពបណ្ណាល័យដែលមានស្រាប់ ឬការបញ្ជូន។" }, zq = { title: "បណ្ណាល័យត្រូវបានដាក់ស្នើ", content: "សូមអរគុណ {{authorName}}។ បណ្ណាល័យរបស់អ្នកត្រូវបានបញ្ជូនមកពិនិត្យ។ សូមចុច <link>ទីនេះ</link> ដើម្បីតាមដានស្ថានភាពនៃការដាក់ស្នើនេះ។" }, Pq = { resetLibrary: "កំណត់បណ្ណាល័យឡើងវិញ", removeItemsFromLib: "លុបធាតុដែលបានជ្រើសរើសចេញពីបណ្ណាល័យ" }, Oq = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, Vq = { tooltip: "គំនូររបស់អ្នកត្រូវបានអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះម៉ាស៊ីនមេរបស់ Excalidraw នឹងមិនឃើញពួកវាទេ។", link: "ប្លក់ផុសលើការអ៊ិនគ្រីបពីចុងដល់ចុងក្នុង Excalidraw" }, Xq = { angle: "មុំ", element: "ធាតុ", elements: "ធាតុច្រើន", height: "កម្ពស់", scene: "ស៊ីន", selected: "បានជ្រើសរើស", storage: "ការផ្ទុក", title: "ស្ថិតិសម្រាប់ nerds", total: "សរុប", version: "ជំនាន់:", versionCopy: "ចុចដើម្បីចម្លង", versionNotAvailable: "កំណែមិនអាចប្រើបាន", width: "ទទឹង​" }, _q = { addedToLibrary: "បានបន្ថែមទៅបណ្ណាល័យ", copyStyles: "រចនាប័ទ្មត្រូវបានចម្លង។", copyToClipboard: "បានចម្លងទៅក្ដារតម្បៀតខ្ទាស់។", copyToClipboardAsPng: `បានចម្លង {{exportSelection}} ទៅក្ដារតម្បៀតខ្ទាស់ជា PNG
({{exportColorScheme}})`, fileSaved: "ឯកសារត្រូវបានរក្សាទុក។", fileSavedToFilename: "បានរក្សាទុកនៅក្នុង {filename}", canvas: "តំបន់គំនូរ", selection: "ការជ្រើសរើស", pasteAsSingleElement: `ប្រើ {{shortcut}} ដើម្បីបិទភ្ជាប់ជាធាតុតែមួយ,
ឬបិទភ្ជាប់ទៅក្នុងកម្មវិធីនិពន្ធអត្ថបទដែលមានស្រាប់`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $q = { transparent: "ថ្លាមើលធ្លុះ", black: "ពណ៍ខ្មៅ", white: "ពណ៌ស", red: "ពណ៌ក្រហម", pink: "ពណ៌ផ្កាឈូក", grape: "ពណ៌ទំពាំងបាយជូរ", violet: "ពណ៌ស្វាយ", gray: "ពណ៌ប្រផេះ", blue: "ពណ៌ខៀវ", cyan: "ពណ៌ផ្ទៃមេឃ", teal: "ពណ៌​ខៀវបៃតង", green: "ពណ៌បៃតង", yellow: "ពណ៌លឿង", orange: "ពណ៌ទឹកក្រូច", bronze: "ពណ៌សំរិទ្ធ" }, AW = { app: { center_heading: "ទិន្នន័យទាំងអស់របស់អ្នក ត្រូវបានរក្សាទុកនៅក្នុង browser របស់អ្នក ។", center_heading_plus: "តើ​អ្នក​ចង់​ទៅ Excalidraw+ ​វិញ ឬ មែន?", menuHint: "នាំចេញ ចំណូលចិត្ត ភាសា ..." }, defaults: { menuHint: "ការនាំចេញ ចំណូលចិត្ត និង ច្រើនទៀត...", center_heading: "ងាយស្រួល ។ ធ្វើ ។​ ដ្យាក្រាម ។", toolbarHint: "ជ្រើសរើសឧបករណ៍មួយ និង ចាប់ផ្តើមគូរ!", helpHint: "ផ្លូវកាត់ &​ ជំនួយ" } }, uW = { mostUsedCustomColors: "ពណ៌ផ្ទាល់ខ្លួនដែលប្រើច្រើនបំផុត", colors: "ពណ៌", shades: "ស្រមោល", hexCode: "លេខកូដ hex", noShades: "មិនមានស្រមោលសម្រាប់ពណ៌នេះទេ" }, eW = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CW = { title: "", button: "", description: "", syntax: "", preview: "" }, E7A = { labels: Lq, library: xq, buttons: Sq, alerts: Nq, errors: Rq, toolBar: Mq, headings: Yq, hints: vq, canvasError: Hq, errorSplash: Kq, roomDialog: Jq, errorDialog: Zq, exportDialog: qq, helpDialog: Wq, clearCanvasDialog: jq, publishDialog: Tq, publishSuccessDialog: zq, confirmDialog: Pq, imageExportDialog: Oq, encrypted: Vq, stats: Xq, toast: _q, colors: $q, welcomeScreen: AW, colorPicker: uW, overwriteConfirm: eW, mermaid: CW };
const a7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: Nq,
  buttons: Sq,
  canvasError: Hq,
  clearCanvasDialog: jq,
  colorPicker: uW,
  colors: $q,
  confirmDialog: Pq,
  default: E7A,
  encrypted: Vq,
  errorDialog: Zq,
  errorSplash: Kq,
  errors: Rq,
  exportDialog: qq,
  headings: Yq,
  helpDialog: Wq,
  hints: vq,
  imageExportDialog: Oq,
  labels: Lq,
  library: xq,
  mermaid: CW,
  overwriteConfirm: eW,
  publishDialog: Tq,
  publishSuccessDialog: zq,
  roomDialog: Jq,
  stats: Xq,
  toast: _q,
  toolBar: Mq,
  welcomeScreen: AW
}, Symbol.toStringTag, { value: "Module" }));
var BW = { paste: "붙여넣기", pasteAsPlaintext: "일반 텍스트로 붙여넣기", pasteCharts: "차트 붙여넣기", selectAll: "전체 선택", multiSelect: "선택 영역에 추가하기", moveCanvas: "캔버스 이동", cut: "잘라내기", copy: "복사", copyAsPng: "클립보드로 PNG 이미지 복사", copyAsSvg: "클립보드로 SVG 이미지 복사", copyText: "클립보드로 텍스트 복사", copySource: "소스코드를 클립보드로 복사", convertToCode: "코드로 변환", bringForward: "앞으로 가져오기", sendToBack: "맨 뒤로 보내기", bringToFront: "맨 앞으로 가져오기", sendBackward: "뒤로 보내기", delete: "삭제", copyStyles: "스타일 복사하기", pasteStyles: "스타일 붙여넣기", stroke: "선 색상", background: "배경색", fill: "채우기", strokeWidth: "선 굵기", strokeStyle: "선", strokeStyle_solid: "실선", strokeStyle_dashed: "파선", strokeStyle_dotted: "점선", sloppiness: "대충 긋기", opacity: "불투명도", textAlign: "텍스트 정렬", edges: "가장자리", sharp: "뾰족하게", round: "둥글게", arrowheads: "화살촉", arrowhead_none: "없음", arrowhead_arrow: "화살표", arrowhead_bar: "막대", arrowhead_circle: "원", arrowhead_circle_outline: "원 (외곽선)", arrowhead_triangle: "삼각형", arrowhead_triangle_outline: "삼각형 (외곽선)", arrowhead_diamond: "마름모", arrowhead_diamond_outline: "마름모 (외곽선)", fontSize: "글자 크기", fontFamily: "글꼴", addWatermark: '"Made with Excalidraw" 추가', handDrawn: "손글씨", normal: "일반", code: "코드", small: "작게", medium: "보통", large: "크게", veryLarge: "매우 크게", solid: "단색", hachure: "평행선", zigzag: "지그재그", crossHatch: "교차선", thin: "얇게", bold: "굵게", left: "왼쪽", center: "가운데", right: "오른쪽", extraBold: "매우 굵게", architect: "건축가", artist: "예술가", cartoonist: "만화가", fileTitle: "파일 이름", colorPicker: "색상 선택기", canvasColors: "캔버스에서 사용되었음", canvasBackground: "캔버스 배경", drawingCanvas: "캔버스 그리기", layers: "레이어", actions: "동작", language: "언어", liveCollaboration: "실시간 협업...", duplicateSelection: "복제", untitled: "제목 없음", name: "이름", yourName: "이름 입력", madeWithExcalidraw: "Made with Excalidraw", group: "그룹 생성", ungroup: "그룹 해제", collaborators: "공동 작업자", showGrid: "그리드 보기", addToLibrary: "라이브러리에 추가", removeFromLibrary: "라이브러리에서 제거", libraryLoadingMessage: "라이브러리 불러오는 중…", libraries: "라이브러리 찾기", loadingScene: "화면 불러오는 중…", align: "정렬", alignTop: "상단 정렬", alignBottom: "하단 정렬", alignLeft: "왼쪽 정렬", alignRight: "오른쪽 정렬", centerVertically: "수직으로 중앙 정렬", centerHorizontally: "수평으로 중앙 정렬", distributeHorizontally: "수평으로 분배", distributeVertically: "수직으로 분배", flipHorizontal: "좌우반전", flipVertical: "상하반전", viewMode: "보기 모드", share: "공유", showStroke: "윤곽선 색상 선택기 열기", showBackground: "배경 색상 선택기 열기", toggleTheme: "테마 전환", personalLib: "개인 라이브러리", excalidrawLib: "Excalidraw 라이브러리", decreaseFontSize: "폰트 사이즈 줄이기", increaseFontSize: "폰트 사이즈 키우기", unbindText: "텍스트 분리", bindText: "텍스트를 컨테이너에 결합", createContainerFromText: "텍스트를 컨테이너에 담기", link: { edit: "링크 수정하기", editEmbed: "링크 & 임베드 수정하기", create: "링크 만들기", createEmbed: "링크 & 임베드 만들기", label: "링크", labelEmbed: "링크 & 임베드", empty: "링크를 지정하지 않았습니다" }, lineEditor: { edit: "선 수정하기", exit: "선 편집기 종료" }, elementLock: { lock: "잠금", unlock: "잠금 해제", lockAll: "모두 잠금", unlockAll: "모두 잠금 해제" }, statusPublished: "게시됨", sidebarLock: "사이드바 유지", selectAllElementsInFrame: "프레임의 모든 요소 선택", removeAllElementsFromFrame: "프레임의 모든 요소 삭제", eyeDropper: "캔버스에서 색상 고르기", textToDiagram: "텍스트를 다이어그램으로", prompt: "프롬프트" }, gW = { noItems: "추가된 아이템 없음", hint_emptyLibrary: "캔버스 위에서 아이템을 선택하여 여기에 추가를 하거나, 아래의 공용 저장소에서 라이브러리를 설치하세요.", hint_emptyPrivateLibrary: "캔버스 위에서 아이템을 선택하여 여기 추가하세요." }, tW = { clearReset: "캔버스 초기화", exportJSON: "파일로 내보내기", exportImage: "이미지 내보내기", export: "다른 이름으로 저장...", copyToClipboard: "클립보드로 복사", save: "현재 파일에 저장", saveAs: "다른 이름으로 저장", load: "열기", getShareableLink: "공유 가능한 링크 생성", close: "닫기", selectLanguage: "언어 선택", scrollBackToContent: "콘텐츠 영역으로 스크롤하기", zoomIn: "확대", zoomOut: "축소", resetZoom: "확대/축소 초기화", menu: "메뉴", done: "완료", edit: "수정", undo: "실행 취소", redo: "다시 실행", resetLibrary: "라이브러리 리셋", createNewRoom: "방 만들기", fullScreen: "전체화면", darkMode: "다크 모드", lightMode: "밝은 모드", zenMode: "젠 모드", objectsSnapMode: "다른 요소들에 정렬시키기", exitZenMode: "젠 모드 종료하기", cancel: "취소", clear: "지우기", remove: "삭제", embed: "임베딩 토글", publishLibrary: "게시하기", submit: "제출", confirm: "확인", embeddableInteractionButton: "클릭하여 상호작용" }, iW = { clearReset: "모든 작업 내용이 초기화됩니다. 계속하시겠습니까?", couldNotCreateShareableLink: "공유 가능한 링크를 생성할 수 없습니다.", couldNotCreateShareableLinkTooBig: "공유 가능한 링크를 생성할 수 없습니다: 화면이 너무 큽니다.", couldNotLoadInvalidFile: "유효하지 않은 파일입니다.", importBackendFailed: "서버로부터 불러 오지 못했습니다.", cannotExportEmptyCanvas: "빈 캔버스를 내보낼 수 없습니다.", couldNotCopyToClipboard: "클립보드로 복사하지 못했습니다.", decryptFailed: "데이터를 복호화하지 못했습니다.", uploadedSecurly: "업로드는 종단 간 암호화로 보호되므로 Excalidraw 서버 및 타사가 콘텐츠를 읽을 수 없습니다.", loadSceneOverridePrompt: "외부 파일을 불러 오면 기존 콘텐츠가 대체됩니다. 계속 진행할까요?", collabStopOverridePrompt: `협업 세션을 종료하면 로컬 저장소에 있는 그림이 협업 세션의 그림으로 대체됩니다. 진행하겠습니까?

(로컬 저장소에 있는 그림을 유지하려면 현재 브라우저 탭을 닫아주세요.)`, errorAddingToLibrary: "아이템을 라이브러리에 추가 할수 없습니다", errorRemovingFromLibrary: "라이브러리에서 아이템을 삭제할수 없습니다", confirmAddLibrary: "{{numShapes}}개의 모양이 라이브러리에 추가됩니다. 계속하시겠어요?", imageDoesNotContainScene: "이 이미지는 화면 데이터를 포함하고 있지 않은 것 같습니다. 내보낼 때 화면을 첨부하도록 설정하셨나요?", cannotRestoreFromImage: "이미지 파일에서 화면을 복구할 수 없었습니다", invalidSceneUrl: "제공된 URL에서 화면을 가져오는데 실패했습니다. 주소가 잘못되거나, 유효한 Excalidraw JSON 데이터를 포함하고 있지 않은 것일 수 있습니다.", resetLibrary: "당신의 라이브러리를 초기화 합니다. 계속하시겠습니까?", removeItemsFromsLibrary: "{{count}}개의 아이템을 라이브러리에서 삭제하시겠습니까?", invalidEncryptionKey: "암호화 키는 반드시 22글자여야 합니다. 실시간 협업이 비활성화됩니다.", collabOfflineWarning: `인터넷에 연결되어 있지 않습니다.
변경 사항들이 저장되지 않습니다!` }, EW = { unsupportedFileType: "지원하지 않는 파일 형식 입니다.", imageInsertError: "이미지를 삽입할 수 없습니다. 나중에 다시 시도 하십시오", fileTooBig: "파일이 너무 큽니다. 최대 크기는 {{maxSize}} 입니다.", svgImageInsertError: "SVG 이미지를 삽입하지 못했습니다. SVG 문법이 유효하지 않은 것 같습니다.", failedToFetchImage: "이미지를 가져오는데 실패했습니다.", invalidSVGString: "유효하지 않은 SVG입니다.", cannotResolveCollabServer: "협업 서버에 접속하는데 실패했습니다. 페이지를 새로고침하고 다시 시도해보세요.", importLibraryError: "라이브러리를 불러오지 못했습니다.", collabSaveFailed: "데이터베이스에 저장하지 못했습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.", collabSaveFailed_sizeExceeded: "데이터베이스에 저장하지 못했습니다. 캔버스가 너무 큰 거 같습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.", imageToolNotSupported: "이미지가 비활성화 되었습니다.", brave_measure_text_error: { line1: "귀하께서는 <bold>강력한 지문 차단 설정</bold>이 활성화된 Brave browser를 사용하고 계신 것 같습니다.", line2: "이 기능으로 인해 화이트보드의 <bold>텍스트 요소들</bold>이 손상될 수 있습니다.", line3: "저희는 해당 기능을 비활성화하는 것을 강력히 권장 드립니다. 비활성화 방법에 대해서는 <link>이 게시글</link>을 참고해주세요.", line4: "만약 이 설정을 껐음에도 텍스트 요소들이 올바르게 표시되지 않는다면, 저희 Github에 <issueLink>이슈</issueLink>를 올려주시거나 <discordLink>Discord</discordLink>로 알려주세요." }, libraryElementTypeError: { embeddable: "임베드 요소들은 라이브러리에 추가할 수 없습니다.", iframe: "IFrame 요소들은 라이브러리에 추가할 수 없습니다.", image: "라이브러리에 이미지 삽입 기능은 곧 지원될 예정입니다!" }, asyncPasteFailedOnRead: "붙여넣는데 실패했습니다. (시스템 클립보드를 읽는데 실패했습니다)", asyncPasteFailedOnParse: "붙여넣는데 실패했습니다.", copyToSystemClipboardFailed: "클립보드로 복사하는데 실패했습니다." }, aW = { selection: "선택", image: "이미지 삽입", rectangle: "사각형", diamond: "다이아몬드", ellipse: "타원", arrow: "화살표", line: "선", freedraw: "그리기", text: "텍스트", library: "라이브러리", lock: "선택된 도구 유지하기", penMode: "펜 모드 - 터치 방지", link: "선택한 도형에 대해서 링크를 추가/업데이트", eraser: "지우개", frame: "프레임 도구", magicframe: "와이어프레임을 코드로", embeddable: "웹 임베드", laser: "레이저 포인터", hand: "손 (패닝 도구)", extraTools: "다른 도구", mermaidToExcalidraw: "Mermaid에서 불러오기", magicSettings: "AI 설정" }, IW = { canvasActions: "캔버스 동작", selectedShapeActions: "선택된 모양 동작", shapes: "모양" }, oW = { canvasPanning: "캔버스를 옮기려면 마우스 휠이나 스페이스바를 누르고 드래그하거나, 손 도구를 사용하기", linearElement: "여러 점을 연결하려면 클릭하고, 직선을 그리려면 바로 드래그하세요.", freeDraw: "클릭 후 드래그하세요. 완료되면 놓으세요.", text: "팁: 선택 툴로 아무 곳이나 더블 클릭해 텍스트를 추가할 수도 있습니다.", embeddable: "클릭 및 드래그하여 웹사이트 임베드 만들기", text_selected: "더블 클릭 또는 ENTER를 눌러서 텍스트 수정", text_editing: "ESC나 CtrlOrCmd+ENTER를 눌러서 수정을 종료하기", linearElementMulti: "마지막 지점을 클릭하거나 Esc 또는 Enter 키를 눌러 완료하세요.", lockAngle: "SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.", resize: `SHIFT 키를 누르면서 조정하면 크기의 비율이 제한됩니다.
ALT를 누르면서 조정하면 중앙을 기준으로 크기를 조정합니다.`, resizeImage: `SHIFT를 눌러서 자유롭게 크기를 변경하거나,
ALT를 눌러서 중앙을 고정하고 크기를 변경하기`, rotate: "SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.", lineEditor_info: "꼭짓점을 수정하려면 CtrlOrCmd 키를 누르고 더블 클릭을 하거나 CtrlOrCmd + Enter를 누르세요.", lineEditor_pointSelected: `Delete 키로 꼭짓점을 제거하거나,
CtrlOrCmd+D 로 복제하거나, 드래그 해서 이동시키기`, lineEditor_nothingSelected: `꼭짓점을 선택해서 수정하거나 (SHIFT를 눌러서 여러개 선택),
Alt를 누르고 클릭해서 새로운 꼭짓점 추가하기`, placeImage: "클릭해서 이미지를 배치하거나, 클릭하고 드래그해서 사이즈를 조정하기", publishLibrary: "당신만의 라이브러리를 게시하기", bindTextToElement: "Enter 키를 눌러서 텍스트 추가하기", deepBoxSelect: "CtrlOrCmd 키를 눌러서 깊게 선택하고, 드래그하지 않도록 하기", eraserRevert: "Alt를 눌러서 삭제하도록 지정된 요소를 되돌리기", firefox_clipboard_write: '이 기능은 설정에서 "dom.events.asyncClipboard.clipboardItem" 플래그를 "true"로 설정하여 활성화할 수 있습니다. Firefox에서 브라우저 플래그를 수정하려면, "about:config" 페이지에 접속하세요.', disableSnapping: "CtrlOrCmd 키를 눌러서 다른 요소와의 정렬 무시하기" }, QW = { cannotShowPreview: "미리보기를 볼 수 없습니다", canvasTooBig: "캔버스가 너무 큽니다.", canvasTooBigTip: "팁: 멀리 있는 요소들을 좀 더 가까이로 붙여 보세요." }, nW = { headingMain: "오류가 발생했습니다. <button>페이지 새로고침</button>", clearCanvasMessage: "새로고침으로 해결되지 않을 경우, <button>캔버스 비우기</button>", clearCanvasCaveat: " 작업 내용을 잃게 됩니다 ", trackedToSentry: "오류 {{eventId}} 가 시스템에서 발견되었습니다.", openIssueMessage: "저희는 화면 정보를 오류에 포함하지 않도록 매우 주의하고 있습니다. 혹시 화면에 민감한 내용이 없다면 이곳에 업로드를 고려해주세요.<button>버그 트래커</button> 아래 정보를 GitHub 이슈에 복사 및 붙여넣기해 주세요.", sceneContent: "화면 내용:" }, rW = { desc_intro: "현재 화면에 공동 작업자를 초대해 협업할 수 있습니다.", desc_privacy: "안심하세요, 세션은 종단 간 암호화를 사용하므로 당신의 작업은 비공개로 유지되며 서버조차도 작업 내용을 알 수 없습니다.", button_startSession: "세션 시작", button_stopSession: "세션 중단", desc_inProgressIntro: "실시간 협업 세션이 진행 중입니다.", desc_shareLink: "공동 작업자에게 이 링크를 공유하세요.", desc_exitSession: "세션을 중단하면 연결은 끊어지나 작업을 이어갈 수 있습니다. 이 작업은 다른 작업자에게 영향을 미치지 않으며 각자의 공동 작업은 계속 유지됩니다.", shareTitle: "Excalidraw의 실시간 협업 세션에 참가하기" }, sW = { title: "오류" }, lW = { disk_title: "디스크에 저장", disk_details: "나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다.", disk_button: "파일로 저장", link_title: "공유 가능한 링크 생성", link_details: "읽기 전용 링크로 내보냅니다.", link_button: "링크로 내보내기", excalidrawplus_description: "화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다.", excalidrawplus_button: "내보내기", excalidrawplus_exportError: "지금은 Excalidraw+로 내보낼 수 없습니다..." }, cW = { blog: "블로그 읽어보기", click: "클릭", deepSelect: "깊게 선택", deepBoxSelect: "영역을 깊게 선택하고, 드래그하지 않도록 하기", curvedArrow: "곡선 화살표", curvedLine: "곡선", documentation: "설명서", doubleClick: "더블 클릭", drag: "드래그", editor: "에디터", editLineArrowPoints: "직선 / 화살표 꼭짓점 수정", editText: "텍스트 수정 / 라벨 추가", github: "문제 제보하기", howto: "가이드 참고하기", or: "또는", preventBinding: "화살표가 붙지 않게 하기", tools: "도구", shortcuts: "키보드 단축키", textFinish: "편집 완료 (텍스트 에디터)", textNewLine: "줄바꿈(텍스트 에디터)", title: "도움말", view: "보기", zoomToFit: "모든 요소가 보이도록 확대/축소", zoomToSelection: "선택 영역으로 확대/축소", toggleElementLock: "선택한 항목을 잠금/잠금 해제", movePageUpDown: "페이지 움직이기 위/아래", movePageLeftRight: "페이지 움직이기 좌/우" }, dW = { title: "캔버스 지우기" }, DW = { title: "라이브러리 게시하기", itemName: "아이템 이름", authorName: "저자명", githubUsername: "깃허브 사용자이름", twitterUsername: "트위터 사용자이름", libraryName: "라이브러리 이름", libraryDesc: "라이브러리 설명", website: "웹사이트", placeholder: { authorName: "이름 또는 사용자명", libraryName: "당신의 라이브러리 이름", libraryDesc: "사람들에게 라이브러리의 용도를 알기 쉽게 설명해주세요", githubHandle: "GitHub 사용자명 (선택), 제출한 뒤에도 심사를 위해서 라이브러리를 수정할 때 사용됩니다", twitterHandle: "Twitter 사용자명 (선택), Twitter를 통해서 홍보할 때 제작자를 밝히기 위해 사용됩니다", website: "개인 웹사이트나 다른 어딘가의 링크 (선택)" }, errors: { required: "필수사항", website: "유효한 URL을 입력하세요" }, noteDescription: "당신의 라이브러리를 제출하여 <link>공개 라이브러리 저장소</link>에서 다른 사람들의 그림에 사용할 수 있도록 하세요.", noteGuidelines: "라이브러리는 먼저 수동으로 승인되어야 합니다. 제출하기 전에 <link>가이드라인</link>을 먼저 읽어보세요. 의견을 공유하거나 변경사항을 만들기 위해선 GitHub 계정이 필요하지만, 반드시 필요하진 않습니다.", noteLicense: "제출함으로써, 당신은 라이브러리가 <link>MIT 라이선스 </link>하에 배포됨을, 즉 아무나 제약 없이 사용할 수 있음에 동의합니다.", noteItems: "각각의 라이브러리는 분류할 수 있도록 고유한 이름을 가져야 합니다. 다음의 라이브러리 항목이 포함됩니다:", atleastOneLibItem: "최소한 하나의 라이브러리를 선택해주세요", republishWarning: "참고: 선택된 항목의 일부는 이미 제출/게시되었습니다. 기존의 라이브러리나 제출물을 업데이트하는 경우에만 제출하세요." }, hW = { title: "라이브러리 제출됨", content: "{{authorName}}님 감사합니다. 당신의 라이브러리가 심사를 위해 제출되었습니다. 진행 상황을<link>여기에서 확인하실 수 있습니다.</link>" }, wW = { resetLibrary: "라이브러리 리셋", removeItemsFromLib: "선택한 항목을 라이브러리에서 제거" }, FW = { header: "이미지 내보내기", label: { withBackground: "배경", onlySelected: "선택한 항목만", darkMode: "다크 모드", embedScene: "화면을 담기", scale: "크기", padding: "여백" }, tooltip: { embedScene: "화면 정보가 내보내는 PNG/SVG 파일에 저장되어 이후에 파일에서 화면을 복구할 수 있습니다. 파일 크기가 증가합니다." }, title: { exportToPng: "PNG로 내보내기", exportToSvg: "SVG로 내보내기", copyPngToClipboard: "클립보드로 PNG 복사" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "클립보드로 복사" } }, pW = { tooltip: "그림은 종단 간 암호화되므로 Excalidraw의 서버는 절대로 내용을 알 수 없습니다.", link: "Excalidraw의 종단 간 암호화에 대한 블로그 포스트" }, mW = { angle: "각도", element: "요소", elements: "요소", height: "높이", scene: "화면", selected: "선택됨", storage: "저장공간", title: "덕후들을 위한 통계", total: "합계", version: "버전", versionCopy: "복사하려면 클릭", versionNotAvailable: "해당 버전 사용 불가능", width: "너비" }, kW = { addedToLibrary: "라이브러리에 추가되었습니다", copyStyles: "스타일 복사.", copyToClipboard: "클립보드로 복사.", copyToClipboardAsPng: `{{exportSelection}}를 클립보드에 PNG로 복사했습니다
({{exportColorScheme}})`, fileSaved: "파일이 저장되었습니다.", fileSavedToFilename: "{filename} 로 저장되었습니다", canvas: "캔버스", selection: "선택한 요소", pasteAsSingleElement: "단일 요소로 붙여넣거나, 기존 텍스트 에디터에 붙여넣으려면 {{shortcut}} 을 사용하세요.", unableToEmbed: "이 URL의 임베딩이 허용되지 않았습니다. GitHub에 이슈를 남겨서 이 URL이 화이트리스트에 등재될 수 있도록 요청하세요", unrecognizedLinkFormat: '임베딩하려는 링크의 형식이 잘못된 것 같습니다. 원본 사이트에서 제공하는 "임베딩" 텍스트를 그대로 붙여 넣어 주세요' }, yW = { transparent: "투명", black: "블랙", white: "화이트", red: "레드", pink: "핑크", grape: "그레이프", violet: "바이올렛", gray: "그레이", blue: "블루", cyan: "시안", teal: "틸", green: "그린", yellow: "옐로우", orange: "오렌지", bronze: "브론즈" }, bW = { app: { center_heading: "모든 데이터는 브라우저에 안전하게 저장됩니다.", center_heading_plus: "대신 Excalidraw+로 이동하시겠습니까?", menuHint: "내보내기, 설정, 언어, ..." }, defaults: { menuHint: "내보내기, 설정, 등등...", center_heading: "간단하게 만드는 다이어그램.", toolbarHint: "도구를 선택하고, 그리세요!", helpHint: "단축키 & 도움말" } }, UW = { mostUsedCustomColors: "가장 많이 사용된 색상들", colors: "색상", shades: "색조", hexCode: "Hex 코드", noShades: "사용할 수 있는 색조가 없음" }, GW = { action: { exportToImage: { title: "이미지로 내보내기", button: "이미지로 내보내기", description: "나중에 다시 불러올 수 있도록 화면 데이터를 이미지로 내보냅니다." }, saveToDisk: { title: "디스크에 저장", button: "디스크에 저장", description: "나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다." }, excalidrawPlus: { title: "Excalidraw+", button: "Excalidraw+로 내보내기", description: "화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다." } }, modal: { loadFromFile: { title: "파일에서 불러오기", button: "파일에서 불러오기", description: "파일을 불러오면 <bold>현재 작성된 데이터를 덮어쓰게 됩니다</bold>.<br></br>다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다." }, shareableLink: { title: "주소에서 불러오기", button: "컨텐츠를 덮어쓰기", description: "외부 작업물을 불러오면 <bold>현재 작성된 데이터를 덮어쓰게 됩니다</bold>.<br></br>다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다." } } }, fW = { title: "Mermaid에서 불러오기", button: "삽입하기", description: "지금은 <flowchartLink>순서도</flowchartLink>,<sequenceLink> 시퀀스</sequenceLink>, <classLink>클래스 </classLink>다이어그램만 지원합니다. 다른 형식들은 Excalidraw에서는 이미지로 표시됩니다.", syntax: "Mermaid 구문", preview: "미리보기" }, I7A = { labels: BW, library: gW, buttons: tW, alerts: iW, errors: EW, toolBar: aW, headings: IW, hints: oW, canvasError: QW, errorSplash: nW, roomDialog: rW, errorDialog: sW, exportDialog: lW, helpDialog: cW, clearCanvasDialog: dW, publishDialog: DW, publishSuccessDialog: hW, confirmDialog: wW, imageExportDialog: FW, encrypted: pW, stats: mW, toast: kW, colors: yW, welcomeScreen: bW, colorPicker: UW, overwriteConfirm: GW, mermaid: fW };
const o7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iW,
  buttons: tW,
  canvasError: QW,
  clearCanvasDialog: dW,
  colorPicker: UW,
  colors: yW,
  confirmDialog: wW,
  default: I7A,
  encrypted: pW,
  errorDialog: sW,
  errorSplash: nW,
  errors: EW,
  exportDialog: lW,
  headings: IW,
  helpDialog: cW,
  hints: oW,
  imageExportDialog: FW,
  labels: BW,
  library: gW,
  mermaid: fW,
  overwriteConfirm: GW,
  publishDialog: DW,
  publishSuccessDialog: hW,
  roomDialog: rW,
  stats: mW,
  toast: kW,
  toolBar: aW,
  welcomeScreen: bW
}, Symbol.toStringTag, { value: "Module" }));
var LW = { paste: "دانانەوە", pasteAsPlaintext: "دایبنێ وەک دەقی سادە", pasteCharts: "دانانەوەی خشتەکان", selectAll: "دیاریکردنی هەموو", multiSelect: "زیادکردنی بۆ دیاریکراوەکان", moveCanvas: "تابلۆ بجوڵێنە", cut: "بڕین", copy: "لەبەرگرتنەوە", copyAsPng: "PNGلەبەرگرتنەوە بۆ تەختەنووس وەک", copyAsSvg: "SVGلەبەرگرتنەوە بۆ تەختەنووس وەک", copyText: "لەبەرگرتنەوە بۆ تەختەنووس وەک نوسین", copySource: "", convertToCode: "", bringForward: "بهێنە پێشتر", sendToBack: "بنێرە دواوە", bringToFront: "بهێنە پێشەوە", sendBackward: "بنێرە دواتر", delete: "سڕینەوە", copyStyles: "لەبەرگرتنەوەی ستایل", pasteStyles: "دانانەوەی ستایل", stroke: "هێڵکار", background: "پاشبنەما", fill: "پڕکردنەوە", strokeWidth: "پانی هێڵکاری", strokeStyle: "ستایلی هێڵکاری", strokeStyle_solid: "سادە", strokeStyle_dashed: "پچڕ پچڕ", strokeStyle_dotted: "خاڵدار", sloppiness: "لێژی", opacity: "ڕوونی", textAlign: "ڕێکخستنی دەق", edges: "لێوارەکان", sharp: "تیژ", round: "چەماوە", arrowheads: "سەرەتیر", arrowhead_none: "هیچیان", arrowhead_arrow: "تیر", arrowhead_bar: "هێڵ", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "سێگۆشە", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "قەبارەی فۆنت", fontFamily: "خێزانی فۆنت", addWatermark: 'زیادبکە "Made with Excalidraw"', handDrawn: "دەست کێشراو", normal: "ئاسایی", code: "کۆد", small: "بچووک", medium: "ناوەند", large: "گه‌وره‌", veryLarge: "زۆر گه‌وره‌", solid: "سادە", hachure: "هاچور", zigzag: "زیگزاگ", crossHatch: "کرۆس هاتچ", thin: "تەنک", bold: "تۆخ", left: "چەپ", center: "ناوه‌ند", right: "ڕاست", extraBold: "زۆر تۆخ", architect: "تەلارساز", artist: "هونەرمەند", cartoonist: "کارتۆنی", fileTitle: "ناوی فایل", colorPicker: "ڕەنگ هەڵگر", canvasColors: "بەکارهاتووە لەسەر تابلۆ", canvasBackground: "پاشبنەمای تابلۆ", drawingCanvas: "کێشانی تابلۆ", layers: "چینەکان", actions: "کردارەکان", language: "زمان", liveCollaboration: "هاوکاریکردنی زیندو...", duplicateSelection: "لەبەرگرتنەوە", untitled: "بێ ناونیشان", name: "ناو", yourName: "ناوەکەت", madeWithExcalidraw: "دروستکراوە بە Excalidraw", group: "دیاریکردنی گروپ", ungroup: "گروپی دیاریکراوەکان لابەرە", collaborators: "هاوکارەکان", showGrid: "گرید نیشانبدە", addToLibrary: "زیادکردن بۆ کتێبخانە", removeFromLibrary: "لابردن لە کتێبخانە", libraryLoadingMessage: "...بارکردنی کتێبخانە", libraries: "گەڕانی کتێبخانە", loadingScene: "...بارکردنی دیمەنەکە", align: "لاچەنکردن", alignTop: "لاچەنکردن بۆ سەرەوە", alignBottom: "لاچەنکردن بۆ خوارەوە", alignLeft: "لاچەنکردن بۆ چەپ", alignRight: "لاچەنکردن بۆ ڕاست", centerVertically: "بە ستونی ناوەند بکە", centerHorizontally: "بە ئاسۆی ناوەند بکە", distributeHorizontally: "بە ئاسۆی دابەشی بکە", distributeVertically: "بە ستونی دابەشی بکە", flipHorizontal: "هەڵگەڕانەوەی ئاسۆیی", flipVertical: "هەڵگەڕانەوەی ستونی", viewMode: "دۆخی بینین", share: "هاوبەشی پێکردن", showStroke: "ڕەنگهەڵگری هێڵکار نیشانبدە", showBackground: "ڕەنگهەڵگری باکگراوند نیشانبدە", toggleTheme: "دۆخی ڕوکار بگۆڕە", personalLib: "کتێبخانەی کەسی", excalidrawLib: "کتێبخانەی Excalidraw", decreaseFontSize: "کەمکردنەوەی قەبارەی فۆنت", increaseFontSize: "زایدکردنی قەبارەی فۆنت", unbindText: "دەقەکە جیابکەرەوە", bindText: "دەقەکە ببەستەوە بە کۆنتەینەرەکەوە", createContainerFromText: "دەق لە چوارچێوەیەکدا بپێچە", link: { edit: "دەستکاریکردنی بەستەر", editEmbed: "", create: "دروستکردنی بەستەر", createEmbed: "", label: "بەستەر", labelEmbed: "", empty: "" }, lineEditor: { edit: "دەستکاری کردنی دێڕ", exit: "دەرچوون لە دەستکاریکەری دێڕ" }, elementLock: { lock: "قفڵکردن", unlock: "کردنەوە", lockAll: "قفڵکردنی هەموو", unlockAll: "کردنەوەی قفلی هەمووی" }, statusPublished: "بڵاوکراوەتەوە", sidebarLock: "هێشتنەوەی شریتی لا بە کراوەیی", selectAllElementsInFrame: "هەموو توخمەکانی ناو چوارچێوەکە دیاری بکە", removeAllElementsFromFrame: "هەموو توخمەکانی ناو چوارچێوەکە لابەرە", eyeDropper: "ڕەنگێک لەسەر تابلۆکە هەڵبژێرە", textToDiagram: "", prompt: "" }, xW = { noItems: "هێشتا هیچ بڕگەیەک زیاد نەکراوە...", hint_emptyLibrary: "شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت، یان کتێبخانەیەک لە کۆگا گشتیەکەوە دابمەزرێنە، لە خوارەوە.", hint_emptyPrivateLibrary: "شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت." }, SW = { clearReset: "تابلۆکە وەک سەرەتا لێبکەوە", exportJSON: "هەناردەکردن بۆ فایل", exportImage: "وێنە هەناردە بکە...", export: "پاشەکەوت بکە بۆ...", copyToClipboard: "له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس", save: "پاشەکەوت بکە بۆ فایلی بەردەست", saveAs: "پاشەکەوتکردن وەک", load: "بکەرەوە", getShareableLink: "بەستەری هاوبەشیپێکردن بەدەستبهێنە", close: "داخستن", selectLanguage: "دیاریکردنی زمان", scrollBackToContent: "گەڕاندنەوە بۆ ناوەڕۆک", zoomIn: "نزیک خستنەوە", zoomOut: "دوورخستنەوە", resetZoom: "ڕێستکردنی زووم", menu: "پێڕست", done: "تەواو", edit: "دەستکاری کردن", undo: "گه‌ڕانه‌وه‌ بۆ پێشوو", redo: "گه‌ڕانه‌وه‌ بۆ داهاتوو", resetLibrary: "ڕێکخستنەوەی کتێبخانە", createNewRoom: "ژوورێکی نوێ دروست بکە", fullScreen: "پڕ بە شاشە", darkMode: "دۆخی تاریک", lightMode: "دۆخی ڕووناک", zenMode: "دۆخی زێن", objectsSnapMode: "", exitZenMode: "بەجێهێشتنی دۆخی زێن", cancel: "هەڵوەشاندنەوە", clear: "خاوێنکردنەوە", remove: "لابردن", embed: "", publishLibrary: "بڵاوکردنەوە", submit: "پێشکەشکردن", confirm: "دوپاتکردنەوە", embeddableInteractionButton: "" }, NW = { clearReset: "ئەمە هەموو تابلۆکە خاوێن دەکاتەوە، دڵنیایت؟", couldNotCreateShareableLink: "نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت", couldNotCreateShareableLinkTooBig: "نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت: دیمەنەکە زۆر گەورەیە", couldNotLoadInvalidFile: "ناتوانرا باربکرێت، فایلەکە دروستنییە", importBackendFailed: "هاوردەکردن لە پاشکۆکە سەرکەوتوو نەبوو.", cannotExportEmptyCanvas: "ناتوانرێت تابلۆی بەتاڵ هەناردەبکرێت.", couldNotCopyToClipboard: "ناتوانرا لەبەربگیرێتەوە بۆ تەختەنوس", decryptFailed: "ناتوانرا داتاکان شیبکرێتەوە", uploadedSecurly: "بارکردنەکە بە کۆدکردنی کۆتایی بۆ کۆتایی پارێزراوە، ئەمەش واتە سێرڤەری Excalidraw و لایەنی سێیەم ناتوانن ناوەڕۆکەکە بخوێننەوە.", loadSceneOverridePrompt: "بارکردنی وێنەکێشانی دەرەکی جێگەی ناوەڕۆکی بەردەستت دەگرێتەوە. دەتەوێت بەردەوام بیت؟", collabStopOverridePrompt: `وەستاندنی دانیشتنەکە وێنەکێشانی پێشووت دەنووسێتەوە کە لە ناوخۆدا هەڵگیراوە. ئایا دڵنیایت?

(ئەگەر دەتەوێت وێنەکێشانی ناوخۆیی خۆت بهێڵیتەوە، لەبری ئەوە تەنها تابی وێبگەڕەکە دابخە).`, errorAddingToLibrary: "نەیتوانی بڕگە زیاد بکات بۆ کتێبخانە", errorRemovingFromLibrary: "نەیتوانی بڕگە لە کتێبخانە بسڕێتەوە", confirmAddLibrary: "ئەمە {{numShapes}} شێوە(ەکان) زیاد دەکات بۆ کتێبخانەکەت. ئایا دڵنیایت?", imageDoesNotContainScene: "وادیارە ئەم وێنەیە هیچ داتایەکی دیمەنی تێدا نییە. ئایا دیمەنی چەسپاندنت لە کاتی هەناردەدا چالاک کردووە؟", cannotRestoreFromImage: "ناتوانرێت دیمەنەکە بگەڕێندرێتەوە لەم فایلە وێنەیە", invalidSceneUrl: 'ناتوانێت دیمەنەکە هاوردە بکات لە URL ی دابینکراو. یان نادروستە، یان داتای "ئێکسکالیدراو" JSON ی دروستی تێدا نییە.', resetLibrary: "ئەمە کتێبخانەکەت خاوێن دەکاتەوە. ئایا دڵنیایت?", removeItemsFromsLibrary: "سڕینەوەی {{count}} ئایتم(ەکان) لە کتێبخانە؟", invalidEncryptionKey: "کلیلی رەمزاندن دەبێت لە 22 پیت بێت. هاوکاری ڕاستەوخۆ لە کارخراوە.", collabOfflineWarning: `هێڵی ئینتەرنێت بەردەست نییە.
 گۆڕانکارییەکانت سەیڤ ناکرێن!` }, RW = { unsupportedFileType: "جۆری فایلی پشتگیری نەکراو.", imageInsertError: "نەیتوانی وێنە داخڵ بکات. دواتر هەوڵ بدە", fileTooBig: "فایلەکە زۆر گەورەیە. زۆرترین قەبارەی ڕێگەپێدراو {{maxSize}}}.", svgImageInsertError: "نەیتوانی وێنەی SVG داخڵ بکات. نیشانەی ئێس ڤی جی نادروست دیارە.", failedToFetchImage: "", invalidSVGString: "ئێس ڤی جی نادروستە.", cannotResolveCollabServer: "ناتوانێت پەیوەندی بکات بە سێرڤەری کۆلاب. تکایە لاپەڕەکە دووبارە باربکەوە و دووبارە هەوڵ بدەوە.", importLibraryError: "نەیتوانی کتێبخانە بار بکات", collabSaveFailed: "نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت. ئەگەر کێشەکان بەردەوام بوون، پێویستە فایلەکەت لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.", collabSaveFailed_sizeExceeded: "نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت، پێدەچێت تابلۆکە زۆر گەورە بێت. پێویستە فایلەکە لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.", imageToolNotSupported: "", brave_measure_text_error: { line1: "وادیارە وێبگەڕی Brave بەکاردەهێنیت و ڕێکخستنی <bold>Aggressively Block Fingerprinting</bold> ـت چالاک کردووە.", line2: "ئەمە ئەکرێ ببێتە هۆی تێکدانی <bold>دانە دەقییەکان</bold> لە وێنەکێشانەکانتدا.", line3: "ئێمە بە توندی پێشنیاری لەکارخستنی ئەم ڕێکخستنە دەکەین. بۆ لە کارخستنی دەتوانیت بەم <link>هەنگاوانە</link>دا بڕۆیت.", line4: "ئەگەر لەکارخستنی ئەم ڕێکخستنە نەبوە هۆی چاککردنەوەی پێشاندانی دانە دەقییەکان، تکایە <issueLink>کێشە</issueLink>یەک بکەرەوە لەسەر گیتهەبەکەمان، یان بۆمان بنوسە لەسەر <discordLink>دیسکۆرد</discordLink>" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MW = { selection: "دەستنیشانکردن", image: "داخڵکردنی وێنە", rectangle: "لاکێشە", diamond: "ئەڵماس", ellipse: "هێلکەیی", arrow: "تیر", line: "هێڵ", freedraw: "کێشان", text: "دەق", library: "کتێبخانە", lock: "ئامێرە دیاریکراوەکان چالاک بهێڵەوە دوای وێنەکێشان", penMode: "شێوازی قەڵەم - دەست لێدان ڕابگرە", link: "زیادکردن/ نوێکردنەوەی لینک بۆ شێوەی دیاریکراو", eraser: "سڕەر", frame: "ئامرازی چوارچێوە", magicframe: "", embeddable: "", laser: "", hand: "دەست (ئامرازی پانکردن)", extraTools: "ئامرازی زیاتر", mermaidToExcalidraw: "", magicSettings: "" }, YW = { canvasActions: "کردارەکانی تابلۆ", selectedShapeActions: "کردارەکانی شێوەی دەستنیشانکراو", shapes: "شێوەکان" }, vW = { canvasPanning: "بۆ جوڵاندنی تابلۆ، ویلی ماوسەکەت یان دوگمەی سپەیس بگرە لەکاتی ڕاکێشاندە، یانیش ئامرازی دەستەکە بەکاربهێنە", linearElement: "کرتە بکە بۆ دەستپێکردنی چەند خاڵێک، ڕایبکێشە بۆ یەک هێڵ", freeDraw: "کرتە بکە و ڕایبکێشە، کاتێک تەواو بوویت دەست هەڵگرە", text: "زانیاری: هەروەها دەتوانیت دەق زیادبکەیت بە دوو کرتەکردن لە هەر شوێنێک لەگەڵ ئامڕازی دەستنیشانکردن", embeddable: "", text_selected: "دووجار کلیک بکە یان ENTER بکە بۆ دەستکاریکردنی دەق", text_editing: "بۆ تەواوکردنی دەستکاریکردنەکە Escape یان Ctrl/Cmd+ENTER بکە", linearElementMulti: "کلیک لەسەر کۆتا خاڵ بکە یان Escape یان Enter بکە بۆ تەواوکردن", lockAngle: "دەتوانیت گۆشە سنووردار بکەیت بە ڕاگرتنی SHIFT", resize: `دەتوانیت ڕێژەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی گۆڕینی قەبارەدا،
ALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە`, resizeImage: `دەتوانیت بە ئازادی قەبارە بگۆڕیت بە ڕاگرتنی SHIFT،
ALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە`, rotate: "دەتوانیت گۆشەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی سوڕانەوەدا", lineEditor_info: "یان Ctrl یان Cmd بگرە و دوانە کلیک بکە یانیش پەنجە بنێ بە Ctrl یان Cmd + ئینتەر بۆ دەستکاریکردنی خاڵەکان", lineEditor_pointSelected: "بۆ لابردنی خاڵەکان Delete دابگرە، Ctrl Cmd+D بکە بۆ لەبەرگرتنەوە، یان بۆ جووڵە ڕاکێشان بکە", lineEditor_nothingSelected: `خاڵێک هەڵبژێرە بۆ دەستکاریکردن (SHIFT ڕابگرە بۆ هەڵبژاردنی چەندین)،
یان Alt ڕابگرە و کلیک بکە بۆ زیادکردنی خاڵە نوێیەکان`, placeImage: "کلیک بکە بۆ دانانی وێنەکە، یان کلیک بکە و ڕایبکێشە بۆ ئەوەی قەبارەکەی بە دەستی دابنێیت", publishLibrary: "کتێبخانەی تایبەت بە خۆت بڵاوبکەرەوە", bindTextToElement: "بۆ زیادکردنی دەق enter بکە", deepBoxSelect: "CtrlOrCmd ڕابگرە بۆ هەڵبژاردنی قووڵ، و بۆ ڕێگریکردن لە ڕاکێشان", eraserRevert: "بۆ گەڕاندنەوەی ئەو توخمانەی کە بۆ سڕینەوە نیشانە کراون، Alt ڕابگرە", firefox_clipboard_write: 'ئەم تایبەتمەندییە بە ئەگەرێکی زۆرەوە دەتوانرێت چالاک بکرێت بە ڕێکخستنی ئاڵای "dom.events.asyncClipboard.clipboardItem" بۆ "true". بۆ گۆڕینی ئاڵاکانی وێبگەڕ لە فایەرفۆکسدا، سەردانی لاپەڕەی "about:config" بکە.', disableSnapping: "" }, HW = { cannotShowPreview: "ناتوانرێ پێشبینین پیشان بدرێت", canvasTooBig: "تابلۆکە لەوانەیە زۆر گەورەبێت.", canvasTooBigTip: "زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک لە یەکتر نزیک بکەوە." }, KW = { headingMain: "تووشی هەڵەیەک بوو. هەوڵ بدە <button>دووبارە بارکردنی لاپەڕەکە.</button>", clearCanvasMessage: "ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە <button>خاوێنکردنەوەی تابلۆکە.</button>", clearCanvasCaveat: " ئەمە دەبێتە هۆی لەدەستدانی ئەوەی کە کردوتە ", trackedToSentry: "هەڵەکە لەگەڵ ناسێنەری {{eventId}} لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.", openIssueMessage: "ئێمە زۆر وریا بووین کە زانیارییەکانی دیمەنەکەت لەسەر هەڵەکە نەخەینەڕوو. ئەگەر دیمەنەکەت تایبەت نییە، تکایە بیر لە بەدواداچوون بکەنەوە بۆ ئێمە <button>شوێنپێهەڵگری هەڵە.</button> تکایە ئەم زانیارییانەی خوارەوە کۆپی بکە و لە بەشی کێشەکانی Github دایبنێ.", sceneContent: "پێکهاتەی ناو دیمەنەکە:" }, JW = { desc_intro: "دەتوانیت خەڵک بانگهێشت بکەیت بۆ دیمەنی ئێستات بۆ هاوکاری کردن لەگەڵت.", desc_privacy: "نیگەران مەبە، دانیشتنەکە کۆدکردنی کۆتایی بە کۆتایی بەکاردەهێنێت، بۆیە هەرچییەک بکێشیت بە تایبەتی دەمێنێتەوە. تەنانەت سێرڤەرەکەمان ناتوانێت بزانێت کە تۆ چیت دروستکردووە.", button_startSession: "دەستپێکردنی دانیشتن", button_stopSession: "وەستاندنی دانیشتن", desc_inProgressIntro: "دانیشتنی هاوکاری ڕاستەوخۆ ئێستا لە ئارادایە.", desc_shareLink: "هاوبەشکردنی ئەم لینکە لەگەڵ هەر کەسێک کە دەتەوێت هاوکاری بکەیت لەگەڵ:", desc_exitSession: "وەستاندنی دانیشتنەکە پەیوەندیت لەگەڵ ژوورەکە دەپچڕێنێت، بەڵام تۆ دەتوانیت بەردەوام بیت لە کارکردن لەگەڵ دیمەنەکە، لە ناوخۆدا. تێبینی بکە کە ئەمە کاریگەری لەسەر کەسانی تر نابێت، وە ئەوان هێشتا دەتوانن هاوکاری بکەن لەسەر وەشانەکەیان.", shareTitle: "بەشداری بکە لە دانیشتنی هاریکاری ڕاستەوخۆ لە ئێکسکالیدراو" }, ZW = { title: "هه‌ڵه‌ ڕوویدا" }, qW = { disk_title: "پاشەکەوت بکە لە دیسک", disk_details: "هەناردەکردنی داتای دیمەنەکە بۆ فایلێک کە دواتر دەتوانیت لێی هاوردە بکەیت.", disk_button: "پاشەکەوت بکە بۆ فایل", link_title: "بەستەری هاوبەشیپێکردن", link_details: "ناردن وەک بەستەری تەنها-خوێندنەوە.", link_button: "هەناردەکردن بۆ بەستەر", excalidrawplus_description: "دیمەنەکە لە شوێنی کارکردنی Excalidraw+ هەڵبگرە.", excalidrawplus_button: "هەناردەکردن", excalidrawplus_exportError: "لەم ساتەدا نەتوانرا هەناردە بکرێت بۆ Excalidrow+..." }, WW = { blog: "بلۆگەکەمان بخوێنەوە", click: "گرتە", deepSelect: "دەستنیشانکردنی قوڵ", deepBoxSelect: "لەناو بۆکسەکەدا بە قووڵی هەڵبژێرە، و ڕێگری لە ڕاکێشان بکە", curvedArrow: "تیری نوشتاوە", curvedLine: "هێڵی نوشتاوە", documentation: "دۆکیومێنتەیشن", doubleClick: "دوو گرتە", drag: "راکێشان", editor: "دەستکاریکەر", editLineArrowPoints: "دەستکاری خاڵەکانی هێڵ/تیر بکە", editText: "دەستکاری دەق بکە / لەیبڵێک زیاد بکە", github: "کێشەیەکت دۆزیەوە؟ پێشکەشکردن", howto: "شوێن ڕینماییەکانمان بکەوە", or: "یان", preventBinding: "ڕێگریبکە لە نوشتاناوەی تیر", tools: "ئامرازەکان", shortcuts: "کورتکراوەکانی تەختەکلیل", textFinish: "تەواوکردنی دەستکاریکردن (دەستکاریکەری دەق)", textNewLine: "زیادکردنی دێڕی نوێ (دەستکاریکەری دەق)", title: "یارماتی", view: "دیمەن", zoomToFit: "زووم بکە بۆ ئەوەی لەگەڵ هەموو توخمەکاندا بگونجێت", zoomToSelection: "زووم بکە بۆ دەستنیشانکراوەکان", toggleElementLock: "قفڵ/کردنەوەی دەستنیشانکراوەکان", movePageUpDown: "لاپەڕەکە بجوڵێنە بۆ سەرەوە/خوارەوە", movePageLeftRight: "لاپەڕەکە بجوڵێنە بۆ چەپ/ڕاست" }, jW = { title: "تابلۆکە خاوێن بکەرەوە" }, TW = { title: "پێشکەشکردنی کتێبخانە", itemName: "ناوی بڕگە", authorName: "ناوی نوسەر", githubUsername: "ناوی بەکارهێنەری Github", twitterUsername: "ناوی بەکارهێنەری Twitter", libraryName: "ناوی کتێبخانە", libraryDesc: "وەسفی کتێبخانە", website: "ماڵپەڕ", placeholder: { authorName: "ناوەکات یاخود ناوی بەکارهێنەر", libraryName: "ناوی کتێبخانەکەت", libraryDesc: "وەسفی کتێبخانەکەت بۆ یارمەتیدانی خەڵک بۆ تێگەیشتن لە بەکارهێنانی", githubHandle: "ناوی GitHub (ئارەزوومەندانە)، بۆیە دەتوانیت دەستکاری کتێبخانەکە بکەیت کاتێک پێشکەش دەکرێت بۆ پێداچوونەوە", twitterHandle: "ناوی بەکارهێنەری تویتەر (ئارەزوومەندانە)، بۆیە بزانین لەکاتی بانگەشەکردن لە ڕێگەی تویتەرەوە کریدت بۆ کێ بکەین", website: "لینکی ماڵپەڕی تایبەتی خۆت یان شوێنێکی تر (ئارەزومەندانە)" }, errors: { required: "داواکراوە", website: "URLێکی دروست تێبنووسە" }, noteDescription: "کتێبخانەکەت بنێرە بۆ ئەوەی بخرێتە ناو <link>کۆگای کتێبخانەی گشتی</link>بۆ ئەوەی کەسانی تر لە وێنەکێشانەکانیاندا بەکاری بهێنن.", noteGuidelines: "کتێبخانەکە پێویستە سەرەتا بە دەست پەسەند بکرێت. تکایە بفەرمو بە خوێندنەوەی <link>ڕێنماییەکان</link> پێش پێشکەشکردن. پێویستت بە ئەژمێری GitHub دەبێت بۆ پەیوەندیکردن و گۆڕانکاری ئەگەر داوای لێکرا، بەڵام بە توندی پێویست نییە.", noteLicense: "بە پێشکەشکردن، تۆ ڕەزامەندیت لەسەر بڵاوکردنەوەی کتێبخانەکە بەپێی <link>مۆڵەتی MIT، </link>کە بە کورتی مانای ئەوەیە کە هەرکەسێک دەتوانێت بە بێ سنوور بەکاری بهێنێت", noteItems: "هەر شتێکی کتێبخانە دەبێت ناوی تایبەتی خۆی هەبێت بۆ ئەوەی بتوانرێت فلتەر بکرێت. ئەم بابەتانەی کتێبخانانەی خوارەوە لەخۆدەگرێت:", atleastOneLibItem: "تکایە بەلایەنی کەمەوە یەک بڕگەی کتێبخانە دیاریبکە بۆ دەستپێکردن", republishWarning: "تێبینی: هەندێک لە ئایتمە دیاریکراوەکان نیشانکراون وەک ئەوەی پێشتر بڵاوکراونەتەوە/نێردراون. تەنها پێویستە شتەکان دووبارە پێشکەش بکەیتەوە لە کاتی نوێکردنەوەی کتێبخانەیەکی هەبوو یان پێشکەشکردن." }, zW = { title: "کتێبخانە پێشکەش کرا", content: "سوپاس {{authorName}}. کتێبخانەکەت پێشکەش کراوە بۆ پێداچوونەوە. دەتوانیت بەدواداچوون بۆ دۆخەکە بکەیت<link>لێرە</link>" }, PW = { resetLibrary: "ڕێکخستنەوەی کتێبخانە", removeItemsFromLib: "لابردنی ئایتمە دیاریکراوەکان لە کتێبخانە" }, OW = { header: "وێنە هەناردە بکە", label: { withBackground: "پاشبنەما", onlySelected: "تەنها دیاریکراوەکان", darkMode: "دۆخی تاریک", embedScene: "دیمەنەکە بەکاربهێنەرەوە", scale: "قەبارە", padding: "بۆشایی" }, tooltip: { embedScene: `داتاکانی دیمەنەکە لە فایلە هەناردەکراوەکەی PNG/SVG هەڵدەگیرێن بۆ ئەوەی دیمەنەکە لێیەوە بگەڕێتەوە.
قەبارەی پەڕگەی هەناردەکراو زیاد دەکات.` }, title: { exportToPng: "هەناردە بکە وەک PNG", exportToSvg: "هەناردە بکە وەک SVG", copyPngToClipboard: "لەبەربگرەوە بۆ سەر تەختەنوس" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس" } }, VW = { tooltip: "وێنەکێشانەکانت لە کۆتاییەوە بۆ کۆتایی کۆد کراون بۆیە سێرڤەرەکانی ئێکسکالیدرا هەرگیز نایانبینن.", link: "بلۆگ پۆست لەسەر کۆدکردنی کۆتای بۆ کۆتای لە ئێکسکالیدرەو" }, XW = { angle: "گۆشە", element: "توخم", elements: "توخمەکان", height: "بەرزی", scene: "دیمەنەکە", selected: "دەستنیشانکراوەکان", storage: "بیرگە", title: "ئامار بۆ نێردەکان", total: "گشتی", version: "وەشان", versionCopy: "کلیک بۆ لەبەرگرتنەوە", versionNotAvailable: "وەشان بەردەست نییە", width: "پانی" }, _W = { addedToLibrary: "زیادکرا بۆ کتێبخانە", copyStyles: "ستایلی کۆپیکراو.", copyToClipboard: "لەبەرگیرایەوە بۆ تەختەنوس.", copyToClipboardAsPng: `کۆپی کراوە {{exportSelection}} بۆ کلیپبۆرد وەک PNG
({{exportColorScheme}})`, fileSaved: "فایل هەڵگیرا.", fileSavedToFilename: "هەڵگیراوە بۆ {filename}", canvas: "تابلۆ", selection: "دەستنیشانکراوەکان", pasteAsSingleElement: "بۆ دانانەوە وەکو یەک توخم یان دانانەوە بۆ نێو دەسکاریکەرێکی دەق کە بوونی هەیە {{shortcut}} بەکاربهێنە", unableToEmbed: "", unrecognizedLinkFormat: "" }, $W = { transparent: "ڕوون", black: "ڕەش", white: "سپی", red: "سور", pink: "پەمەیی", grape: "مێوژی", violet: "مۆری کاڵ", gray: "خۆڵەمێشی", blue: "شین", cyan: "شینی ئاسمانی", teal: "شەدری", green: "سه‌وز", yellow: "زەرد", orange: "پرتەقاڵی", bronze: "برۆنزی" }, Aj = { app: { center_heading: "هەموو داتاکانت لە ناوخۆی وێنگەڕەکەتدا پاشەکەوت کراوە.", center_heading_plus: "ویستت بڕۆیت بۆ Excalidraw+?", menuHint: "هەناردەکردن، ڕێکخستنەکان، زمانەکان، ..." }, defaults: { menuHint: "هەناردەکردن، ڕێکخستنەکان، و زیاتر...", center_heading: "دایاگرامەکان. ئاسان. کراون.", toolbarHint: "ئامرازێک هەڵبگرە و دەستبکە بە کێشان!", helpHint: "قەدبڕەکان و یارمەتی" } }, uj = { mostUsedCustomColors: "زۆرترین ڕەنگە باوە بەکارهاتووەکان", colors: "ڕەنگەکان", shades: "سێبەرەکان", hexCode: "کۆدی هێکس", noShades: "هیچ سێبەرێک بۆ ئەم ڕەنگە بەردەست نییە" }, ej = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, Cj = { title: "", button: "", description: "", syntax: "", preview: "" }, Q7A = { labels: LW, library: xW, buttons: SW, alerts: NW, errors: RW, toolBar: MW, headings: YW, hints: vW, canvasError: HW, errorSplash: KW, roomDialog: JW, errorDialog: ZW, exportDialog: qW, helpDialog: WW, clearCanvasDialog: jW, publishDialog: TW, publishSuccessDialog: zW, confirmDialog: PW, imageExportDialog: OW, encrypted: VW, stats: XW, toast: _W, colors: $W, welcomeScreen: Aj, colorPicker: uj, overwriteConfirm: ej, mermaid: Cj };
const n7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NW,
  buttons: SW,
  canvasError: HW,
  clearCanvasDialog: jW,
  colorPicker: uj,
  colors: $W,
  confirmDialog: PW,
  default: Q7A,
  encrypted: VW,
  errorDialog: ZW,
  errorSplash: KW,
  errors: RW,
  exportDialog: qW,
  headings: YW,
  helpDialog: WW,
  hints: vW,
  imageExportDialog: OW,
  labels: LW,
  library: xW,
  mermaid: Cj,
  overwriteConfirm: ej,
  publishDialog: TW,
  publishSuccessDialog: zW,
  roomDialog: JW,
  stats: XW,
  toast: _W,
  toolBar: MW,
  welcomeScreen: Aj
}, Symbol.toStringTag, { value: "Module" }));
var Bj = { paste: "Įklijuoti", pasteAsPlaintext: "Įklijuoti kaip paprastą tekstą", pasteCharts: "Įklijuoti diagramas", selectAll: "Pažymėti viską", multiSelect: "Pridėkite elementą prie pasirinktų", moveCanvas: "Judinti drobę", cut: "Iškirpti", copy: "Kopijuoti", copyAsPng: "Kopijuoti į iškarpinę kaip PNG", copyAsSvg: "Kopijuoti į iškarpinę kaip SVG", copyText: "Kopijuoti į iškarpinę kaip tekstą", copySource: "", convertToCode: "", bringForward: "Kelti priekio link", sendToBack: "Nustumti į užnugarį", bringToFront: "Iškelti į priekį", sendBackward: "Nustumti link užnugario", delete: "Ištrinti", copyStyles: "Kopijuoti stilius", pasteStyles: "Įklijuoti stilius", stroke: "Linija", background: "Fonas", fill: "Užpildymas", strokeWidth: "Linijos storis", strokeStyle: "Linijos stilius", strokeStyle_solid: "Ištisinė", strokeStyle_dashed: "Brūkšniuota", strokeStyle_dotted: "Taškuota", sloppiness: "Netvarkingumas", opacity: "Nepermatomumas", textAlign: "Teksto lygiavimas", edges: "Kraštai", sharp: "Aštrus", round: "Užapvalintas", arrowheads: "Rodyklės viršūnės", arrowhead_none: "Jokios", arrowhead_arrow: "Rodyklė", arrowhead_bar: "Brukšnys", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Trikampis", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Šrifto dydis", fontFamily: "Šriftas", addWatermark: "Sukurta su Excalidraw", handDrawn: "Ranka rašytas", normal: "Normalus", code: "Kodas", small: "Mažas", medium: "Vidutinis", large: "Didelis", veryLarge: "Labai didelis", solid: "", hachure: "", zigzag: "", crossHatch: "", thin: "Plonas", bold: "Pastorintas", left: "Kairėje", center: "Centre", right: "Dešinėje", extraBold: "Labiau pastorintas", architect: "Architektas", artist: "Menininkas", cartoonist: "Karikatūristas", fileTitle: "Failo pavadinimas", colorPicker: "Spalvos parinkiklis", canvasColors: "", canvasBackground: "Drobės fonas", drawingCanvas: "", layers: "Sluoksniai", actions: "Veiksmai", language: "Kalba", liveCollaboration: "Bendradarbiavimas gyvai...", duplicateSelection: "", untitled: "", name: "", yourName: "Jūsų vardas", madeWithExcalidraw: "Sukurta su Excalidraw", group: "Grupuoti pasirinkimą", ungroup: "Išgrupuoti pasirinkimą", collaborators: "Bendradarbiautojai", showGrid: "Rodyti tinklelį", addToLibrary: "Pridėti į biblioteką", removeFromLibrary: "Pašalinti iš bibliotekos", libraryLoadingMessage: "", libraries: "Naršyti bibliotekas", loadingScene: "", align: "Lygiuoti", alignTop: "Lygiuoti viršuje", alignBottom: "Lygiuoti apačioje", alignLeft: "Lygiuoti kairėje", alignRight: "Lygiuoti dešinėje", centerVertically: "Centruoti vertikaliai", centerHorizontally: "Centruoti horizontaliai", distributeHorizontally: "", distributeVertically: "", flipHorizontal: "Apversti horizontaliai", flipVertical: "Apversti vertikaliai", viewMode: "", share: "Dalintis", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "Asmeninė biblioteka", excalidrawLib: "Exaclidraw biblioteka", decreaseFontSize: "", increaseFontSize: "", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "Redeguoti nuorodą", editEmbed: "", create: "Sukurti nuorodą", createEmbed: "", label: "Nuoroda", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "Užrakinti", unlock: "Atrakinti", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gj = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, tj = { clearReset: "", exportJSON: "Eksportuoti į failą", exportImage: "", export: "", copyToClipboard: "Kopijuoti į iškarpinę", save: "", saveAs: "Išsaugoti kaip", load: "", getShareableLink: "Gauti nuorodą dalinimuisi", close: "Uždaryti", selectLanguage: "Pasirinkite kalbą", scrollBackToContent: "", zoomIn: "Priartinti", zoomOut: "Nutolinti", resetZoom: "", menu: "Meniu", done: "", edit: "Redaguoti", undo: "Anuliuoti", redo: "", resetLibrary: "Atstatyti biblioteką", createNewRoom: "Sukurti naują kambarį", fullScreen: "Visas ekranas", darkMode: "Tamsus režimas", lightMode: "Šviesus režimas", zenMode: "„Zen“ režimas", objectsSnapMode: "", exitZenMode: "Išeiti iš „Zen“ režimo", cancel: "Atšaukti", clear: "Išvalyti", remove: "Pašalinti", embed: "", publishLibrary: "Paskelbti", submit: "Pateikti", confirm: "Patvirtinti", embeddableInteractionButton: "" }, ij = { clearReset: "", couldNotCreateShareableLink: "", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "", importBackendFailed: "", cannotExportEmptyCanvas: "", couldNotCopyToClipboard: "", decryptFailed: "", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: `Sesijos nutraukimas perrašys ankstesnį, lokaliai išsaugotą piešinį. Ar tikrai to nori?

(Jei nori išlaikyti lokalų piešinį, tiesiog uždaryk naršyklės skirtuką.)`, errorAddingToLibrary: "Nepavyko įtraukti elemento į biblioteką", errorRemovingFromLibrary: "Nepavyko pašalinti elemento iš bibliotekos", confirmAddLibrary: "Tai įtrauks {{numShapes}} figūrą/-as į tavo biblioteką. Ar tikrai to nori?", imageDoesNotContainScene: "Panašu, jog šis paveiksliukas neturi scenos duomenų. Ar yra įjuntas scenos įtraukimas ekportavimo metu?", cannotRestoreFromImage: "Nepavyko atstatyti scenos iš šio nuotraukos failo", invalidSceneUrl: "Nepavyko suimportuoti scenos iš pateiktos nuorodos (URL). Ji arba blogai suformatuota, arba savyje neturi teisingų Excalidraw JSON duomenų.", resetLibrary: "Tai išvalys tavo biblioteką. Ar tikrai to nori?", removeItemsFromsLibrary: "Ištrinti {{count}} elementą/-us iš bibliotekos?", invalidEncryptionKey: "Šifravimo raktas turi būti iš 22 simbolių. Redagavimas gyvai yra išjungtas.", collabOfflineWarning: "" }, Ej = { unsupportedFileType: "Nepalaikomas failo tipas.", imageInsertError: "Nepyko įkelti paveiksliuko. Pabandyk vėliau...", fileTooBig: "Per didelis failas. Didžiausias leidžiamas dydis yra {{maxSize}}.", svgImageInsertError: "Nepavyko įtraukti SVG paveiksliuko. Panašu, jog SVG yra nevalidus.", failedToFetchImage: "", invalidSVGString: "Nevalidus SVG.", cannotResolveCollabServer: "Nepavyko prisijungti prie serverio bendradarbiavimui. Perkrauk puslapį ir pabandyk prisijungti dar kartą.", importLibraryError: "Nepavyko įkelti bibliotekos", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aj = { selection: "Žymėjimas", image: "Įkelti paveiksliuką", rectangle: "Stačiakampis", diamond: "Deimantas", ellipse: "Elipsė", arrow: "Rodyklė", line: "Linija", freedraw: "Piešti", text: "Tekstas", library: "Biblioteka", lock: "Baigus piešti, išlaikyti pasirinktą įrankį", penMode: "Rašyklio režimas - neleisti prisilietimų", link: "Pridėti / Atnaujinti pasirinktos figūros nuorodą", eraser: "Trintukas", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, Ij = { canvasActions: "Veiksmai su drobe", selectedShapeActions: "Veiksmai su pasirinkta figūra", shapes: "Figūros" }, oj = { canvasPanning: "", linearElement: "Paspaudimai sukurs papildomus taškus, nepertraukiamas tempimas sukurs liniją", freeDraw: "Spausk ir tempk, paleisk kai norėsi pabaigti", text: "Užuomina: tekstą taip pat galima pridėti bet kur su dvigubu pelės paspaudimu, kol parinkas žymėjimo įrankis", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, Qj = { cannotShowPreview: "", canvasTooBig: "", canvasTooBigTip: "" }, nj = { headingMain: "", clearCanvasMessage: "", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, rj = { desc_intro: "", desc_privacy: "", button_startSession: "Pradėti seansą", button_stopSession: "Sustabdyti seansą", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, sj = { title: "Klaida" }, lj = { disk_title: "Įrašyti į diską", disk_details: "", disk_button: "Įrašyti į failą", link_title: "Nuoroda dalinimuisi", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "Eksportuoti", excalidrawplus_exportError: "" }, cj = { blog: "", click: "paspaudimas", deepSelect: "", deepBoxSelect: "", curvedArrow: "Banguota rodyklė", curvedLine: "Banguota linija", documentation: "Dokumentacija", doubleClick: "dvigubas paspaudimas", drag: "vilkti", editor: "Redaktorius", editLineArrowPoints: "", editText: "", github: "Radai klaidą? Pateik", howto: "Vadovaukis mūsų gidu", or: "arba", preventBinding: "", tools: "Įrankiai", shortcuts: "Spartieji klavišai", textFinish: "Baigti redagavimą (teksto redaktoriuje)", textNewLine: "Pridėti naują eilutę (tekto redaktoriuje)", title: "Pagalba", view: "", zoomToFit: "", zoomToSelection: "Priartinti iki pažymėtos vietos", toggleElementLock: "", movePageUpDown: "Pajudinti puslapį aukštyn/žemyn", movePageLeftRight: "Pajudinti puslapį kairėn/dešinėn" }, dj = { title: "Išvalyti drobę" }, Dj = { title: "Paviešinti biblioteką", itemName: "Elemento pavadinimas", authorName: "Autoriaus vardas", githubUsername: "Github spalyvardis", twitterUsername: "Twitter slapyvardis", libraryName: "Bibliotekos pavadinimas", libraryDesc: "Bibliotekos aprašas", website: "Tinklalapis", placeholder: { authorName: "Tavo vardas arba spalyvardis", libraryName: "Tavo bibliotekos pavadinimas", libraryDesc: "Tavo bibliotekos aprašas, padėti žmonėms geriau suprasti jos paskirtį", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "Privalomas", website: "Įveskite teisingą nuorodą (URL)" }, noteDescription: "Pateik savo biblioteką, jog ji galėtų būti įtraukta į <link></link>jog kiti žmonės galėtų tai naudoti savo piešiniuose.", noteGuidelines: "Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti <link>gairės</link>", noteLicense: "<link>MIT licencija, </link>", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, hj = { title: "Biblioteka pateikta", content: "Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būseną<link>čia</link>" }, wj = { resetLibrary: "Atstatyti biblioteką", removeItemsFromLib: "Pašalinti pasirinktus elementus iš bibliotekos" }, Fj = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, pj = { tooltip: "", link: "" }, mj = { angle: "", element: "Elementas", elements: "Elementai", height: "Aukštis", scene: "Scena", selected: "Pasirinkta", storage: "Saugykla", title: "Informacija moksliukams", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "Plotis" }, kj = { addedToLibrary: "Pridėta į biblioteką", copyStyles: "", copyToClipboard: "Nukopijuota į iškarpinę.", copyToClipboardAsPng: "", fileSaved: "Failas išsaugotas.", fileSavedToFilename: "Išsaugota į {filename}", canvas: "drobė", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yj = { transparent: "Permatoma", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, bj = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, Uj = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, Gj = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fj = { title: "", button: "", description: "", syntax: "", preview: "" }, r7A = { labels: Bj, library: gj, buttons: tj, alerts: ij, errors: Ej, toolBar: aj, headings: Ij, hints: oj, canvasError: Qj, errorSplash: nj, roomDialog: rj, errorDialog: sj, exportDialog: lj, helpDialog: cj, clearCanvasDialog: dj, publishDialog: Dj, publishSuccessDialog: hj, confirmDialog: wj, imageExportDialog: Fj, encrypted: pj, stats: mj, toast: kj, colors: yj, welcomeScreen: bj, colorPicker: Uj, overwriteConfirm: Gj, mermaid: fj };
const s7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: ij,
  buttons: tj,
  canvasError: Qj,
  clearCanvasDialog: dj,
  colorPicker: Uj,
  colors: yj,
  confirmDialog: wj,
  default: r7A,
  encrypted: pj,
  errorDialog: sj,
  errorSplash: nj,
  errors: Ej,
  exportDialog: lj,
  headings: Ij,
  helpDialog: cj,
  hints: oj,
  imageExportDialog: Fj,
  labels: Bj,
  library: gj,
  mermaid: fj,
  overwriteConfirm: Gj,
  publishDialog: Dj,
  publishSuccessDialog: hj,
  roomDialog: rj,
  stats: mj,
  toast: kj,
  toolBar: aj,
  welcomeScreen: bj
}, Symbol.toStringTag, { value: "Module" }));
var Lj = { paste: "Ielīmēt", pasteAsPlaintext: "Ielīmēt kā vienkāršu tekstu", pasteCharts: "Ielīmēt grafikus", selectAll: "Atlasīt visu", multiSelect: "Pievienot elementu atlasei", moveCanvas: "Pārvietot tāfeli", cut: "Izgriezt", copy: "Kopēt", copyAsPng: "Kopēt starpliktuvē kā PNG", copyAsSvg: "Kopēt starpliktuvē kā SVG", copyText: "Kopēt starpliktuvē kā tekstu", copySource: "", convertToCode: "", bringForward: "Pārvietot vienu slāni augstāk", sendToBack: "Pārvietot uz zemāko slāni", bringToFront: "Pārvietot uz virsējo slāni", sendBackward: "Pārvietot par vienu slāni zemāk", delete: "Dzēst", copyStyles: "Kopēt stilus", pasteStyles: "Ielīmēt stilus", stroke: "Svītras krāsa", background: "Fona krāsa", fill: "Aizpildījums", strokeWidth: "Svītras platums", strokeStyle: "Svītras stils", strokeStyle_solid: "Vienlaidu", strokeStyle_dashed: "Raustīta līnija", strokeStyle_dotted: "Punktota līnija", sloppiness: "Precizitāte", opacity: "Necaurspīdīgums", textAlign: "Teksta līdzināšana", edges: "Malas", sharp: "Asas", round: "Apaļas", arrowheads: "Bultas", arrowhead_none: "Nekādas", arrowhead_arrow: "Bulta", arrowhead_bar: "Svītra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Trijstūris", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Teksta lielums", fontFamily: "Fontu saime", addWatermark: 'Pievienot "Radīts ar Excalidraw"', handDrawn: "Rokraksts", normal: "Parasts", code: "Kods", small: "Mazs", medium: "Vidējs", large: "Liels", veryLarge: "Ļoti liels", solid: "Pilns", hachure: "Svītrots", zigzag: "Zigzaglīnija", crossHatch: "Šķērssvītrots", thin: "Šaurs", bold: "Trekns", left: "Pa kreisi", center: "Vidū", right: "Pa labi", extraBold: "Īpaši trekns", architect: "Arhitekts", artist: "Mākslinieks", cartoonist: "Karikatūrists", fileTitle: "Datnes nosaukums", colorPicker: "Krāsu atlasītājs", canvasColors: "Izmantots tāfelei", canvasBackground: "Ainas fons", drawingCanvas: "Tāfele", layers: "Slāņi", actions: "Darbības", language: "Valoda", liveCollaboration: "Sadarbība tiešsaistē...", duplicateSelection: "Izveidot kopiju", untitled: "Bez nosaukuma", name: "Vārds", yourName: "Jūsu vārds", madeWithExcalidraw: "Radīts ar Excalidraw", group: "Grupēt atlasīto", ungroup: "Atgrupēt atlasīto", collaborators: "Dalībnieki", showGrid: "Rādīt režģi", addToLibrary: "Pievienot bibliotēkai", removeFromLibrary: "Izņemt no bibliotēkas", libraryLoadingMessage: "Ielādē bibliotēku…", libraries: "Apskatīt bibliotēkas", loadingScene: "Ielādē ainu…", align: "Līdzināt", alignTop: "Līdzināt augšpusē", alignBottom: "Līdzināt lejā", alignLeft: "Līdzināt pa kreisi", alignRight: "Līdzināt pa labi", centerVertically: "Centrēt vertikāli", centerHorizontally: "Centrēt horizontāli", distributeHorizontally: "Izdalīt horizontāli", distributeVertically: "Izdalīt vertikāli", flipHorizontal: "Apmest horizontāli", flipVertical: "Apmest vertikāli", viewMode: "Skata režīms", share: "Kopīgot", showStroke: "Rādīt svītras krāsas atlasītāju", showBackground: "Rādīt fona krāsas atlasītāju", toggleTheme: "Pārslēgt krāsu tēmu", personalLib: "Personīgā bibliotēka", excalidrawLib: "Excalidraw bibliotēka", decreaseFontSize: "Samazināt fonta izmēru", increaseFontSize: "Palielināt fonta izmēru", unbindText: "Atdalīt tekstu", bindText: "Piesaistīt tekstu figūrai", createContainerFromText: "Ietilpināt tekstu figurā", link: { edit: "Rediģēt saiti", editEmbed: "", create: "Izveidot saiti", createEmbed: "", label: "Saite", labelEmbed: "", empty: "" }, lineEditor: { edit: "Rediģēt līniju", exit: "Aizvērt līnijas redaktoru" }, elementLock: { lock: "Fiksēt", unlock: "Atbrīvot", lockAll: "Fiksēt visu", unlockAll: "Atbrīvot visu" }, statusPublished: "Publicēts", sidebarLock: "Paturēt atvērtu sānjoslu", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xj = { noItems: "Neviena vienība vēl nav pievienota...", hint_emptyLibrary: "Atlasiet objektu tāfelē, lai to šeit pievienotu, vai pievienojiet publisku bibliotēku zemāk.", hint_emptyPrivateLibrary: "Atlasiet objektu tāfelē, lai to šeit pievienotu." }, Sj = { clearReset: "Atiestatīt tāfeli", exportJSON: "Eksportēt kā failu", exportImage: "Eksportēt attēlu...", export: "Saglabāt uz...", copyToClipboard: "Kopēt starpliktuvē", save: "Saglabāt pašreizējo datni", saveAs: "Saglabāt kā", load: "Atvērt", getShareableLink: "Iegūt kopīgošanas saiti", close: "Aizvērt", selectLanguage: "Izvēlieties valodu", scrollBackToContent: "Atgriezties pie satura", zoomIn: "Tuvināt", zoomOut: "Tālināt", resetZoom: "Atiestatīt tuvinājumu", menu: "Izvēlne", done: "Gatavs", edit: "Rediģēt", undo: "Atsaukt", redo: "Atcelt atsaukšanu", resetLibrary: "Atiestatīt bibliotēku", createNewRoom: "Izveidot jaunu telpu", fullScreen: "Pilnekrāna režīms", darkMode: "Tumšais režīms", lightMode: "Gaišais režīms", zenMode: "Zen režīms", objectsSnapMode: "", exitZenMode: "Pamest Zen režīmu", cancel: "Atcelt", clear: "Notīrīt", remove: "Noņemt", embed: "", publishLibrary: "Publicēt", submit: "Iesniegt", confirm: "Apstiprināt", embeddableInteractionButton: "" }, Nj = { clearReset: "Šī funkcija notīrīs visu tāfeli. Vai turpināt?", couldNotCreateShareableLink: "Nevarēja izveidot kopīgojamo saiti.", couldNotCreateShareableLinkTooBig: "Nevarēja izveidot kopīgojamo saiti – aina ir par lielu", couldNotLoadInvalidFile: "Nevarēja ielādēt nederīgu datni", importBackendFailed: "Ielāde no krātuves neizdevās.", cannotExportEmptyCanvas: "Nevar eksportēt tukšu tāfeli.", couldNotCopyToClipboard: "Nevarēja nokopēt starpliktuvē.", decryptFailed: "Nevarēja atšifrēt datus.", uploadedSecurly: "Augšuplāde nodrošināta ar šifrēšanu no gala līdz galam, kas nozīmē, ka Excalidraw serveri un trešās puses nevar lasīt saturu.", loadSceneOverridePrompt: "Ārēja satura ielāde aizstās jūsu pašreizējo saturu. Vai vēlaties turpināt?", collabStopOverridePrompt: `Sesijas pārtraukšana pārrakstīs jūsu iepriekšējo zīmējumu, kas saglabāts jūsu pārlūkā. Vai turpināt?

(Ja vēlaties paturēt zīmējumu, kas saglabāts jūsu pārlūkā, vienkārši aizveriet pārlūka cilni.)`, errorAddingToLibrary: "Nevarēja pievienot vienumu bibliotēkai", errorRemovingFromLibrary: "Nevarēja izņemt vienumu no bibliotēkas", confirmAddLibrary: "Šī funkcija pievienos {{numShapes}} formu(-as) jūsu bibliotēkai. Vai turpināt?", imageDoesNotContainScene: "Šķiet, ka attēls nesatur ainas datus. Vai iespējojāt ainas iegulšanu, kad eksportējāt?", cannotRestoreFromImage: "Ainu nevarēja atgūt no attēla datnes", invalidSceneUrl: "Nevarēja importēt ainu no norādītā URL. Vai nu tas ir nederīgs, vai nesatur derīgus Excalidraw JSON datus.", resetLibrary: "Šī funkcija iztukšos bibliotēku. Vai turpināt?", removeItemsFromsLibrary: "Vai izņemt {{count}} vienumu(s) no bibliotēkas?", invalidEncryptionKey: "Šifrēšanas atslēgai jābūt 22 simbolus garai. Tiešsaistes sadarbība ir izslēgta.", collabOfflineWarning: `Nav pieejams interneta pieslēgums.
Jūsu izmaiņas netiks saglabātas!` }, Rj = { unsupportedFileType: "Neatbalstīts datnes veids.", imageInsertError: "Nevarēja ievietot attēlu. Mēģiniet vēlāk...", fileTooBig: "Datne ir par lielu. Lielākais atļautais izmērs ir {{maxSize}}.", svgImageInsertError: "Nevarēja ievietot SVG attēlu. Šķiet, ka SVG marķējums nav derīgs.", failedToFetchImage: "", invalidSVGString: "Nederīgs SVG.", cannotResolveCollabServer: "Nevarēja savienoties ar sadarbošanās serveri. Lūdzu, pārlādējiet lapu un mēģiniet vēlreiz.", importLibraryError: "Nevarēja ielādēt bibliotēku", collabSaveFailed: "Darbs nav saglabāts datubāzē. Ja problēma turpinās, saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.", collabSaveFailed_sizeExceeded: "Darbs nav saglabāts datubāzē, šķiet, ka tāfele ir pārāk liela. Saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, Mj = { selection: "Atlase", image: "Ievietot attēlu", rectangle: "Taisnstūris", diamond: "Rombs", ellipse: "Elipse", arrow: "Bulta", line: "Līnija", freedraw: "Zīmēt", text: "Teksts", library: "Bibliotēka", lock: "Paturēt izvēlēto rīku pēc darbības", penMode: "Pildspalvas režīms – novērst pieskaršanos", link: "Pievienot/rediģēt atlasītās figūras saiti", eraser: "Dzēšgumija", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Roka (panoramēšanas rīks)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, Yj = { canvasActions: "Tāfeles darbības", selectedShapeActions: "Izvēlētās formas darbības", shapes: "Formas" }, vj = { canvasPanning: "Lai bīdītu tāfeli, turiet nospiestu ritināšanas vai atstarpes taustiņu, vai izmanto rokas rīku", linearElement: "Klikšķiniet, lai sāktu zīmēt vairākus punktus; velciet, lai zīmētu līniju", freeDraw: "Spiediet un velciet; atlaidiet, kad pabeidzat", text: "Ieteikums: lai pievienotu tekstu, varat arī jebkur dubultklikšķināt ar atlases rīku", embeddable: "", text_selected: "Dubultklikšķiniet vai spiediet ievades taustiņu, lai rediģētu tekstu", text_editing: "Spiediet iziešanas taustiņu vai CtrlOrCmd+ENTER, lai beigtu rediģēt", linearElementMulti: "Klikšķiniet uz pēdējā punkta vai spiediet izejas vai ievades taustiņu, lai pabeigtu", lockAngle: "Varat ierobežot leņķi, turot nospiestu SHIFT", resize: `Kad maināt izmēru, varat ierobežot proporcijas, turot nospiestu SHIFT,
vai arī ALT, lai mainītu izmēru ap centru`, resizeImage: `Varat brīvi mainīt izmēru, turot nospiestu SHIFT;
turiet nospiestu ALT, lai mainītu izmēru ap centru`, rotate: "Rotējot varat ierobežot leņķi, turot nospiestu SHIFT", lineEditor_info: "Turiet CtrlOrCmd un dubultklikšķiniet, vai spiediet CtrlOrCmd + Enter, lai rediģētu punktus", lineEditor_pointSelected: "Spiediet dzēšanas taustiņu, lai noņemtu punktus, – CtrlOrCmd+D, lai to kopētu, vai velciet, lai pārvietotu", lineEditor_nothingSelected: `Atlasiet punktu, lai labotu (turiet nospiestu SHIFT, lai atlasītu vairākus),
vai turiet Alt un clikšķiniet, lai pievienotu jaunus punktus`, placeImage: "Klikšķiniet, lai novietotu attēlu, vai spiediet un velciet, lai iestatītu tā izmēru", publishLibrary: "Publicēt savu bibliotēku", bindTextToElement: "Spiediet ievades taustiņu, lai pievienotu tekstu", deepBoxSelect: "Turient nospiestu Ctrl vai Cmd, lai atlasītu dziļumā un lai nepieļautu objektu pavilkšanu", eraserRevert: "Turiet Alt, lai noņemtu elementus no dzēsšanas atlases", firefox_clipboard_write: 'Šis iestatījums var tikt ieslēgts ar "dom.events.asyncClipboard.clipboardItem" marķieri pārslēgtu uz "true". Lai mainītu pārlūka marķierus Firefox, apmeklē "about:config" lapu.', disableSnapping: "" }, Hj = { cannotShowPreview: "Nevar rādīt priekšskatījumu", canvasTooBig: "Iespējams, tāfele ir par lielu.", canvasTooBigTip: "Ieteikums: mēģiniet satuvināt pašus tālākos elementus." }, Kj = { headingMain: "Notikusi kļūda. Mēģiniet <button>pārlādēt lapu.</button>", clearCanvasMessage: "Ja pārlādēšana nestrādā, mēģiniet <button>notīrot tāfeli.</button>", clearCanvasCaveat: " Tas novedīs pie darba zaudēšanas ", trackedToSentry: "Kļūda ar kodu {{eventId}} tika noteikta mūsu sistēmā.", openIssueMessage: "Mēs uzmanījāmies, lai neiekļautu jūsu ainas informāciju šajā kļūdā. Ja jūsu aina nav privāta, lūdzu ziņojiet par šo kļūdu mūsu <button>kļūdu uzskaitē.</button> Lūdzu, miniet sekojošo informāciju to kopējot un ielīmējot jūsu ziņojumā platformā GitHub.", sceneContent: "Ainas saturs:" }, Jj = { desc_intro: "Varat ielūgt cilvēkus pašreizējajā ainā, lai sadarbotos ar tiem.", desc_privacy: "Neuztraucieties, sesija izmanto šifrēšanu no gala līdz galam, tātad jūsu zīmējums paliks privāts. Pat mūsu serveri nevarēs redzēt, ar ko esat nācis klajā.", button_startSession: "Sākt sesiju", button_stopSession: "Beigt sesiju", desc_inProgressIntro: "Notiek tiešsaistes sadarbības sesija.", desc_shareLink: "Dalieties ar šo saiti ar jebkuru, ar ko vēlaties sadarboties:", desc_exitSession: "Sesijas beigšana jūs atvienos no sadarbošanās, bet jūs vēl joprojām varēsiet strādāt ar ainu savā datorā. Ievērojiet, ka šis neietekmēs citus dalībniekus, un viņi vēl joprojām varēs sadarboties savā ainas versijā.", shareTitle: "Pievienoties tiešsaistes sadarbībai programmā Excalidraw" }, Zj = { title: "Kļūda" }, qj = { disk_title: "Saglabāt diskā", disk_details: "Eksportēt ainas datus datnē, ko vēlāk varēsiet importēt.", disk_button: "Saglabāt datnē", link_title: "Kopīgošanas saite", link_details: "Eksportēt kā tikai lasāmu saiti.", link_button: "Eksportēt kā saiti", excalidrawplus_description: "Saglabāt ainu savā Excalidraw+ darbvietā.", excalidrawplus_button: "Eksportēt", excalidrawplus_exportError: "Pašreiz nevarēja eksportēt uz Excalidraw+..." }, Wj = { blog: "Lasīt mūsu blogu", click: "klikšķis", deepSelect: "Atlasīt dziļumā", deepBoxSelect: "Atlasīt dziļumā kastes ietvaros, un nepieļaut pavilkšanu", curvedArrow: "Liekta bulta", curvedLine: "Liekta līnija", documentation: "Dokumentācija", doubleClick: "dubultklikšķis", drag: "vilkt", editor: "Redaktors", editLineArrowPoints: "Rediģēt līniju/bultu punktus", editText: "Rediģēt tekstu/pievienot birku", github: "Sastapāt kļūdu? Ziņot", howto: "Sekojiet mūsu instrukcijām", or: "vai", preventBinding: "Novērst bultu piesaistīšanos", tools: "Rīki", shortcuts: "Tastatūras saīsnes", textFinish: "Pabeigt rediģēšanu (teksta redaktorā)", textNewLine: "Nākamā rindiņa (teksta redaktorā)", title: "Palīdzība", view: "Skatīt", zoomToFit: "Iestatīt mērogu, kas iekļauj visus elementus", zoomToSelection: "Iestatīt mērogu, lai rādītu atlasi", toggleElementLock: "Fiksēt/atbrīvot atlasīto", movePageUpDown: "Pārvietot lapu augšup/lejup", movePageLeftRight: "Pārvietot lapu pa labi/kreisi" }, jj = { title: "Notīrīt tāfeli" }, Tj = { title: "Publicēt bibliotēku", itemName: "Vienuma nosaukums", authorName: "Autora vārds", githubUsername: "GitHub lietotājvārds", twitterUsername: "Twitter lietotājvārds", libraryName: "Bibliotēkas nosaukums", libraryDesc: "Bibliotēkas apraksts", website: "Mājaslapa", placeholder: { authorName: "Jūsu vārds vai lietotājvārds", libraryName: "Jūsu bibliotēkas nosaukums", libraryDesc: "Bibliotēkas apraksts, kas palīdzēs citiem saprast tās pielietojumu", githubHandle: "GitHub lietotājvārds (neobligāts), lai jūs varētu rediģēt bibliotēku pēc tās iesniegšanas izskatīšanai", twitterHandle: "Twitter lietotājvārds (neobligāts), lai mēs varētu jūs pieminēt kā autoru, kad reklamēsim bibliotēku platformā Twitter", website: "Saikne uz jūsu personīgo mājaslapu vai kādu citu lapu (neobligāta)" }, errors: { required: "Obligāts", website: "Ievadiet derīgu URL" }, noteDescription: "Iesniegt savu bibliotēku iekļaušanai <link>publiskajā bibliotēku datubāzē</link>, lai citi to varētu izmantot savos zīmējumos.", noteGuidelines: "Šai bibliotēkai vispirms jātiek manuāli apstiprinātai. Lūdzu, izlasiet <link>norādījumus</link> pirms iesniegšanas. Jums vajadzēs GitHub kontu, lai sazinātos un veiktu izmaiņas, ja tādas būs pieprasītas, bet tas nav absolūti nepieciešams.", noteLicense: "Iesniedzot bibliotēku, jūs piekrītat tās publicēšanai saskaņā ar <link>MIT Licenci, </link>kas īsumā nozīmē, ka jebkurš to varēs izmantot bez ierobežojumiem.", noteItems: "Katram bibliotēkas vienumam jābūt savam nosaukumam, lai to varētu atrast filtrējot. Tiks iekļauti sekojošie bibliotēkas vienumi:", atleastOneLibItem: "Lūdzu, atlasiet vismaz vienu bibliotēkas vienumu, lai sāktu darbu", republishWarning: "Ievēro: daži no atzīmētajiem objektiem jau atzīmēti kā publicēti vai iesniegti publicēšanai. Tos vajadzētu atkārtoti iesniegt tikai tad, ja vēlies labot esošo bibliotēku." }, zj = { title: "Bibliotēka iesniegta", content: "Paldies, {{authorName}}! Jūsu bibliotēka iesniegta izskatīšanai. Jūs varat izsekot iesnieguma statusam<link>šeit</link>" }, Pj = { resetLibrary: "Atiestatīt bibliotēku", removeItemsFromLib: "Noņemt atlasītos vienumus no bibliotēkas" }, Oj = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, Vj = { tooltip: "Jūsu zīmējumi ir šifrēti no gala līdz galam; līdz ar to Excalidraw serveri tos nekad neredzēs.", link: "Ieraksts par šifrēšanu no gala līdz galam Excalidraw blogā" }, Xj = { angle: "Leņķis", element: "Elements", elements: "Elementi", height: "Augstums", scene: "Aina", selected: "Atlasīti", storage: "Krātuve", title: "Statistika entuziastiem", total: "Kopā", version: "Versija", versionCopy: "Klikšķiniet, lai nokopētu", versionNotAvailable: "Versija nav pieejama", width: "Platums" }, _j = { addedToLibrary: "Pievienots bibliotēkai", copyStyles: "Nokopēja stilus.", copyToClipboard: "Nokopēja starpliktuvē.", copyToClipboardAsPng: "Nokopēja {{exportSelection}} starpliktuvē kā PNG ({{exportColorScheme}})", fileSaved: "Datne saglabāta.", fileSavedToFilename: "Saglabāts kā {filename}", canvas: "tāfeli", selection: "atlasi", pasteAsSingleElement: "Izmantojiet {{shortcut}}, lai ielīmētu kā jaunu elementu, vai ielīmētu esošā teksta lauciņā", unableToEmbed: "", unrecognizedLinkFormat: "" }, $j = { transparent: "Caurspīdīgs", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, AT = { app: { center_heading: "Visi jūsu dati tiek glabāti uz vietas jūsu pārlūkā.", center_heading_plus: "Vai tā vietā vēlies doties uz Excalidraw+?", menuHint: "Eksportēšana, iestatījumi, valodas..." }, defaults: { menuHint: "Eksportēšana, iestatījumi un vēl...", center_heading: "Diagrammas. Izveidotas. Vienkārši.", toolbarHint: "Izvēlies rīku un sāc zīmēt!", helpHint: "Īsceļi un palīdzība" } }, uT = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, eT = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CT = { title: "", button: "", description: "", syntax: "", preview: "" }, l7A = { labels: Lj, library: xj, buttons: Sj, alerts: Nj, errors: Rj, toolBar: Mj, headings: Yj, hints: vj, canvasError: Hj, errorSplash: Kj, roomDialog: Jj, errorDialog: Zj, exportDialog: qj, helpDialog: Wj, clearCanvasDialog: jj, publishDialog: Tj, publishSuccessDialog: zj, confirmDialog: Pj, imageExportDialog: Oj, encrypted: Vj, stats: Xj, toast: _j, colors: $j, welcomeScreen: AT, colorPicker: uT, overwriteConfirm: eT, mermaid: CT };
const c7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: Nj,
  buttons: Sj,
  canvasError: Hj,
  clearCanvasDialog: jj,
  colorPicker: uT,
  colors: $j,
  confirmDialog: Pj,
  default: l7A,
  encrypted: Vj,
  errorDialog: Zj,
  errorSplash: Kj,
  errors: Rj,
  exportDialog: qj,
  headings: Yj,
  helpDialog: Wj,
  hints: vj,
  imageExportDialog: Oj,
  labels: Lj,
  library: xj,
  mermaid: CT,
  overwriteConfirm: eT,
  publishDialog: Tj,
  publishSuccessDialog: zj,
  roomDialog: Jj,
  stats: Xj,
  toast: _j,
  toolBar: Mj,
  welcomeScreen: AT
}, Symbol.toStringTag, { value: "Module" }));
var BT = { paste: "चिटकवा", pasteAsPlaintext: "साधा मजकूर च्या रुपात पेस्ट करा", pasteCharts: "चार्ट चिकटवा", selectAll: "समस्त निवडा", multiSelect: "निवडित तत्व जोडा", moveCanvas: "पटल हलवा", cut: "कापा", copy: "प्रतिलिपी", copyAsPng: "PNG रूपे फळी वर कॉपी करा", copyAsSvg: "SVG रूपे फळी वर कॉपी करा", copyText: "लिखित रूपे फळी वर कॉपी करा", copySource: "स्त्रोत फळी वर कॉपी करा", convertToCode: "सांकेतिक लिपित रूपांतरित करा", bringForward: "पुढे पुढे आणा", sendToBack: "सर्वात मागे करा", bringToFront: "सर्वात पुढे आणा", sendBackward: "मागे मागे करा", delete: "हटवा", copyStyles: "शैली कॉपी करा", pasteStyles: "कॉपी केलेली शैली वापरा", stroke: "रेघे चा रंग", background: "पार्श्वभूमी", fill: "भरा", strokeWidth: "रेघ रुंदी", strokeStyle: "रेघ शैली", strokeStyle_solid: "भरीव", strokeStyle_dashed: "तुटित तुटित", strokeStyle_dotted: "ठिपके ठिपके", sloppiness: "गबाळेपणा", opacity: "अपारदर्शक्ता", textAlign: "मजकूर संरेखन", edges: "किनारी", sharp: "टोचरं", round: "गोलाकार", arrowheads: "बाण टोक", arrowhead_none: "कुठलाहि नाही", arrowhead_arrow: "बाण", arrowhead_bar: "दांडुक", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "त्रिकोण", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "अक्षर आकार", fontFamily: "अक्षर समूह", addWatermark: '"एक्सकेलीड्रॉ ने बनवलेलं" जोडा', handDrawn: "हातानी बनवलेलं", normal: "सामान्य", code: "सांकेतिक लिपि", small: "छोटे", medium: "मध्यम", large: "मोठं", veryLarge: "फार मोठं", solid: "भरीव", hachure: "हैशूर रेखांकन", zigzag: "वाकडी तिकड़ी", crossHatch: "आडव्या रेघा", thin: "पातळ", bold: "जाड", left: "डावं", center: "मधे", right: "उजवं", extraBold: "जास्त जाड", architect: "वास्तुविद्याविशारद", artist: "कलाकार", cartoonist: "व्यंग्य चित्रकार", fileTitle: "फाईलचे नाव", colorPicker: "रंग निवडक", canvasColors: "कॅनवास वर वापरलेले", canvasBackground: "पटल पार्श्वभूमि", drawingCanvas: "चित्र पटल", layers: "स्तर", actions: "क्रिया", language: "भाषा", liveCollaboration: "ज्वलंत सहयोग...", duplicateSelection: "प्रतिलिपि", untitled: "अशीर्षकांकित", name: "नाव", yourName: "तुमचे नाव", madeWithExcalidraw: "एक्सकेलीड्रॉ ने बनवलेलं", group: "समूह निवड", ungroup: "समूह निवड ला रद्द करा", collaborators: "Sahayog", showGrid: "ग्रिड दाखवा", addToLibrary: "संग्रह मधे सम्मिलित करा", removeFromLibrary: "संग्रहातून काढ़ा", libraryLoadingMessage: "संग्रह लोड होत आहे…", libraries: "संग्रह देखे", loadingScene: "दृश्य लोड होत आहे…", align: "संरेखित करा", alignTop: "वर संरेखित करा", alignBottom: "खाली संरेखित करा", alignLeft: "डावा बाजूला संरेखित करा", alignRight: "उजव्या बाजूला संरेखित करा", centerVertically: "मधल्या मधे उभं संरेखित करा", centerHorizontally: "मधल्या मधे आडवं संरेखित करा", distributeHorizontally: "आडवं वितरित करा", distributeVertically: "उभं वितरित करा", flipHorizontal: "आडवं फ्लिप करा", flipVertical: "उभं फ्लिप करा", viewMode: "पहायची पद्धत", share: "सामायिक करा", showStroke: "रेघ रंग निवड यंत्र दाखवा", showBackground: "पार्श्वभूमि: रंग निवड यंत्र दाखवा", toggleTheme: "शैली बदला", personalLib: "वैयक्तिक संग्रह", excalidrawLib: "एक्सकेलीड्रॉ संग्रह", decreaseFontSize: "अक्षर आकार छोटा करा", increaseFontSize: "अक्षर आकार मोठा करा", unbindText: "लेखन संबंध संपवा", bindText: "शब्द समूह ला पात्रात घ्या", createContainerFromText: "मजकूर कंटेनर मधे मोडून दाखवा", link: { edit: "दुवा संपादन", editEmbed: "कड़ी सम्पादित करा आणि रुतवा", create: "दुवा तयार करा", createEmbed: "नवीन कड़ी बनवा आणि रुतवा", label: "दुवा", labelEmbed: "कड़ी आणि रूतवणे", empty: "कुठलिही कड़ी दिली नाही" }, lineEditor: { edit: "रेघ संपादन", exit: "रेघ संपादकाबाहेर" }, elementLock: { lock: "कुलूपात ठेवा", unlock: "कुलूपातून बाहेर", lockAll: "सर्व कुलूपात ठेवा", unlockAll: "सर्व कुलूपातून बाहेर" }, statusPublished: "प्रकाशित करा", sidebarLock: "साइडबार उघडं ठेवा", selectAllElementsInFrame: "चौकटीतले सर्व तत्वांचे चयन करा", removeAllElementsFromFrame: "चौकटीतून सर्व काढून टाका", eyeDropper: "चित्रफलकातून रंग निवडा", textToDiagram: "", prompt: "" }, gT = { noItems: "अजून कोणतेही आइटम जोडलेले नाही...", hint_emptyLibrary: "पटल वर एक वस्तु निवडुन एथे जोडा, किव्हा एक संग्रह जन कोष कडुन खाली स्थापित करा.", hint_emptyPrivateLibrary: "ईथे जोडण्या साठी पटल वरून एक वस्तु निवडा." }, tT = { clearReset: "पटल पुसा", exportJSON: "फ़ाइलमधे बाहेर ठेवा", exportImage: "प्रतिमा निर्यात करा...", export: "येथे सुरक्षित करा...", copyToClipboard: "फळी वर कॉपी करा", save: "वर्तमान फ़ाइल मधे जतन करा", saveAs: "ह्या नावाने जतन करा", load: "उघडा", getShareableLink: "सामायिके साठी दुवा प्राप्त करा", close: "बंद करा", selectLanguage: "भाषा निवड करा", scrollBackToContent: "पहलेचा मजकुर वर मागे स्क्रॉल करा", zoomIn: "मोठं करून पहा", zoomOut: "छोटं करून पहा", resetZoom: "छोटं मोठं करणं बंद करा", menu: "यादि", done: "झालं", edit: "संपादित करा", undo: "पूर्ववत करा", redo: "पुन्हा करा(&R)", resetLibrary: "संग्रह पुनर्स्थित करा", createNewRoom: "एक नवी खोली बनवा", fullScreen: "पूर्ण दृश्यपटल", darkMode: "अंधार स्थिथि", lightMode: "उजेड स्थिति", zenMode: "ध्यानग्र स्थिति", objectsSnapMode: "वस्तूंपासून पकड़ा", exitZenMode: "ध्यानग्र स्थितितून बाहेर", cancel: "रद्द", clear: "स्वछ", remove: "हटवा", embed: "रुतवणे उलटे करा", publishLibrary: "प्रकाशित करा", submit: "जमा करा", confirm: "पुष्टि करा", embeddableInteractionButton: "संवादा साठी क्लिक करा" }, iT = { clearReset: "पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?", couldNotCreateShareableLink: "सामायी करण करण्या योग्य दुवा नाही बनवता आला.", couldNotCreateShareableLinkTooBig: "सामायी करण करण्या योग्य दुवा नाही बनवता आला: दृश्य फार मोठं आहे", couldNotLoadInvalidFile: "अवैध फ़ाइल लोड करता आली नाही", importBackendFailed: "बैकएंड हून मागवणे विफल झाले.", cannotExportEmptyCanvas: "रिकामा पटल जतन करता येत नाही.", couldNotCopyToClipboard: "पटल वर कॉपी नाही झाली.", decryptFailed: "डीक्रिप्ट करता आले नाही.", uploadedSecurly: "अपलोड या टोकापासून त्या टोकापर्यंत कूटबद्धित करून सुरक्षित केले गेले आहे, हयाचा अर्थ असा की एक्सकेलीड्रॉ सर्व्हर आणि तृतीय पक्ष मजकूर वाचू शकत नाहीत.", loadSceneOverridePrompt: "बाह्य रेखाचित्र लोड केल्याने तुमची तुमचा विद्यमान मजकूर बदलेल. हे काम तुम्हाला चालू ठेवायचे आहे का?", collabStopOverridePrompt: `सत्र थांबवल्याने तुमचे पूर्वीचे, स्थानिकरित्या संग्रहित रेखाचित्र अधिलिखित होईल. तुला खात्री आहे?

(तुम्हाला तुमचे स्थानिक रेखाचित्र ठेवायचे असल्यास, त्याऐवजी फक्त ब्राउझर टॅब बंद करा.)`, errorAddingToLibrary: "संग्रहात तत्व जोडू शकलो नाही", errorRemovingFromLibrary: "संग्रहातून तत्व काढू शकलो नाही", confirmAddLibrary: "हे तुमच्या संग्राहात {{numShapes}} आकार (एक किव्हा अनेक) जोडेल. तुला खात्री आहे?", imageDoesNotContainScene: "या प्रतिमेमध्ये कोणताही दृश्य डेटा असल्याचे दिसत नाही. बाहेर जतन करताना तुम्ही दृश्य रुतवले होते का?", cannotRestoreFromImage: "प्रतिमा फ़ाइल पासून दृश्य पुनः रचित नाही झाला", invalidSceneUrl: "दिलेल्या यू-आर-एल पासून दृश्य आणू शकलो नाही. तो एकतर बरोबार नाही आहे किंवा त्यात वैध एक्सकेलीड्रॉ जेसन डेटा नाही.", resetLibrary: "पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?", removeItemsFromsLibrary: "संग्रहातून {{count}} तत्व (एक किव्हा अनेक) काढू?", invalidEncryptionKey: "कूटबद्धन कुंजी 22 अक्षरांची असणे आवश्यक आहे. थेट सहयोग अक्षम केले आहे.", collabOfflineWarning: `इंटरनेट कनेक्शन उपलब्ध नाही.
तुमचे बदल जतन केले जाणार नाहीत!` }, ET = { unsupportedFileType: "असमर्थित फाइल प्रकार.", imageInsertError: "प्रतिमा आत घालता येत नाही. नंतर पुन्हा प्रयत्न करा...", fileTooBig: "फाइल फार मोठी आहे. आकाराची कमाल परवानगी {{maxSize}} आहे.", svgImageInsertError: "एस-वी-जी प्रतिमा आत घालवू शकलो नाही. एस-वी-जी-मार्क-अप यंत्र अयोग्य आहे.", failedToFetchImage: "प्रतिमा आणणे नाही जमले.", invalidSVGString: "अयोग्य एस-वी-जी.", cannotResolveCollabServer: "कॉलेब-सर्वर हे पोहोचत नाही आहे. पान परत लोड करायचा प्रयत्न करावे.", importLibraryError: "संग्रह प्रतिस्थापित नाही करता आला", collabSaveFailed: "काही कारणा निमित्त आतल्या डेटाबेसमध्ये जतन करू शकत नाही। समस्या तशिस राहिल्यास, तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही तुमची फाइल स्थानिक जतन करावी.", collabSaveFailed_sizeExceeded: `लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।

बॅकएंड डेटाबेसमध्ये जतन करू शकत नाही, कॅनव्हास खूप मोठा असल्याचे दिसते. तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही फाइल स्थानिक पातळीवर जतन करावी.`, imageToolNotSupported: "प्रतिमां अक्षम केली गेली आहेत.", brave_measure_text_error: { line1: "असं वाटते की तुम्हीं Brave ब्राउज़र वापरतात आहात आणि त्या बरोबार <bold>आक्रामक पद्धति चें बोटांचे ठसे </bold> हां सेटिंग्स चा विकल्प चयन केलेला आहे.", line2: "हे तुमच्या चित्रांच्या <bold>पाठ तत्वांनां </bold> खंडित करू शकतात.", line3: "तुम्हाला आमच्या कड़ून खूप आग्रह आहे की हे सेटिंग्स मधले चयन नका करु. <link>हे अनुक्रम </link> हे कसे करावे हे दाखवु शकते.", line4: "ही सेटिंग अक्षम करूनही पृष्ठ योग्यरित्या प्रदर्शित होत नसल्यास, आमच्या GitHub वर <issueLink>समस्या</issueLink> सबमिट करा, किव्हा <discordLink>डिस्कॉर्ड</discordLink> वर आम्हाला लिहा" }, libraryElementTypeError: { embeddable: "रुतलेले तत्व समूह कोषात जोडले जाऊ शकत नाही.", iframe: "आयफ़्रेम तत्व समूहकोषात जोडला जाऊ शकत नाही.", image: "प्रतिमा समूह कोषात जोड़ायचे लवकरच येत आहेत!" }, asyncPasteFailedOnRead: "चिटकवता नाही जमले ( सिस्टम क्लिप्बॉर्ड पासून वाचणे नाही जमले).", asyncPasteFailedOnParse: "चिटकवता नाही जमले.", copyToSystemClipboardFailed: "क्लिपबोर्ड वर प्रतिलिपि करणे नाही जमले." }, aT = { selection: "निवड", image: "प्रतिमा आत घाला", rectangle: "आयत", diamond: "चौकोन आकाराचा", ellipse: "अंडाकार", arrow: "बाण", line: "रेखा", freedraw: "रेखांकित करा", text: "टेक्स्ट", library: "संग्रह", lock: "निवडलेले यंत्र चित्रकरण झाल्या नंतर ही सक्रिय ठेवा", penMode: "पेन चा मोड - स्पर्श टाळा", link: "निवडलेल्या आकारासाठी दुवा जोडा/बदल करा", eraser: "खोड रबर", frame: "चौकट यंत्र", magicframe: "वायरफ़्रेम पासून सांकेतिक लिपि", embeddable: "वेब रुतवा", laser: "लेसर टॉर्च", hand: "हात ( सरकवण्या चे उपकरण)", extraTools: "आणिक यंत्रे", mermaidToExcalidraw: "मर्मेड पासून एक्सकाली मधे", magicSettings: "कृतिम बुद्दिवत्ता सेटिंग्स" }, IT = { canvasActions: "पटल क्रिया", selectedShapeActions: "निवडित आकार क्रिया", shapes: "आकार" }, oT = { canvasPanning: "कॅनव्हास सरकवण्या साठी, ड्रॅग करताना माउस व्हील धरा किंवा स्पेसबार दाबून ठेवा अथवा हात वालं उपकरण वापरा", linearElement: "अनेक बिंदु साठी क्लिक करा, रेघे साठी ड्रैग करा", freeDraw: "क्लिक आणि ड्रैग करा, झालं तेव्हा सोडा", text: "टीप: तुम्हीं निवड यंत्रानी कोठेही दुहेरी क्लिक करून टेक्स्ट जोडू शकता", embeddable: "वेबसाइट रुतोण्या साठी दाबून-खेचा (क्लिक-ड्रैग करा)", text_selected: "लेखन संपादन साठी दुहेरी क्लिक करा किव्हा एंटर दाबा", text_editing: "संपादन संपवायचं असल्यास एस्केप दाबा किव्हा कंट्रोल या कम्मांड बरोबार एंटर दाबा", linearElementMulti: "शेवटच्या बिंदु वर क्लिक करा किव्हा एस्केप या एंटर दाबा", lockAngle: "शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता", resize: `आकार छोटा मोठा करताना SHIFT धरून तुम्ही प्रमाण मर्यादित करू शकता, 
केंद्रापासून आकार छोटा मोठा करण्यासाठी ALT धरून ठेवा`, resizeImage: `SHIFT धरून तुम्ही मुक्तपणे आकार मोठा छोटा करु शकता,
केंद्रापासून आकार मोठा छोटा करण्यासाठी ALT धरून ठेवा`, rotate: "फिरवत असताना शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता", lineEditor_info: "पॉइंट संपादित करण्यासाठी CtrlOrCmd दाबून ठेवुन डबल-क्लिक करा किंवा CtrlOrCmd + Enter बरोबर दाबा", lineEditor_pointSelected: `बिंदु (एक किव्हा अनेक) काढ़ण्या साठी डिलीट की दाबा,
CtrlOrCmd बरोबार D प्रति साठी,
किव्हा ड्रेग हलवण्या साठी`, lineEditor_nothingSelected: `संपादित करण्यासाठी एक बिंदू निवडा (अनेक निवडण्यासाठी SHIFT धरून ठेवा),
किंवा Alt धरून ठेवा आणि नवीन बिंदू जोडण्यासाठी क्लिक करा`, placeImage: "प्रतिमा ठेवण्यासाठी क्लिक करा, किंवा त्याचा आकार बदलण्या साठी क्लिक करा आणि ड्रॅग करा", publishLibrary: "आपला खाजगी संग्रह प्रकाशित करा", bindTextToElement: "मजकूर जोडण्यासाठी एंटर की दाबा", deepBoxSelect: "खोल निवड ह्या साठी कंट्रोल किव्हा कमांड दाबून ठेवा, आणि बाहेर खेचणे वाचवण्या साठी पण", eraserRevert: "खोडण्या साठी घेतलेल्या वस्तु ना घेण्या साठी Alt दाबून ठेवावे", firefox_clipboard_write: 'हे वैशिष्ट्य "dom.events.asyncClipboard.clipboardItem" फ्लॅग "सत्य" वर सेट करून शक्यतो सक्षम केले जाऊ शकते. Firefox मध्ये ब्राउझर फ्लॅग बदलण्यासाठी, "about:config" पृष्ठावर जा.', disableSnapping: "स्नैपिंग अक्षम करण्या साठी CtrlOrCmd दाबून ठेवा" }, QT = { cannotShowPreview: "पूर्वावलोकन दाखवू शकत नाही", canvasTooBig: "पटल खूप जास्त मोठा असू शकतो.", canvasTooBigTip: "टीप: दूर चा तत्व थोडं जवळ आणण्याचा प्रयत्न करावा." }, nT = { headingMain: "त्रुटि आली. परत प्रयत्न करा <button>ह्या पानाला पुनः लोड करा.</button>", clearCanvasMessage: "रीलोडिंग होत नसल्यास, परत प्रयत्न करा <button>पटल स्वच्छ करित आहे.</button>", clearCanvasCaveat: " त्यामुळे केलेल्या कामाचे नुकसान होईल ", trackedToSentry: "त्रुटि क्रमांक के साथ त्रुटि {{eventId}} आमच्या प्रणाली नी निरीक्षण केले होते.", openIssueMessage: "त्रुटीत तुमची दृश्य माहिती समाविष्ट न करण्यासाठी आम्ही खूप सावध होतो. तुमचा सीन खाजगी नसल्यास, कृपया आम्हाला पुढ च्या कारवाई साठी सम्पर्क साधा <button>त्रुटि व्यवस्थापन.</button> कृपया गिटहब समस्येमध्ये कॉपी आणि पेस्ट करून खालिल माहिती समाविष्ट करा.", sceneContent: "दृश्य विषय:" }, rT = { desc_intro: "तुम्‍ही तुमच्‍या सध्‍याच्‍या दृश्यासाठी लोकांना आपल्‍यासह सहयोग करण्‍यासाठी आमंत्रित करू शकता.", desc_privacy: "काळजी करू नका, सत्र या टोकापासून त्या टोकापर्यंत कूटबद्धता वापरते, त्यामुळे तुम्ही जे काही काढाल ते खाजगी राहील. तुम्ही काय घेऊन आला आहात हे आमचा सर्व्हर ही देखील पाहू शकत नाही.", button_startSession: "सत्र सुरु करा", button_stopSession: "सत्र थाम्बवा", desc_inProgressIntro: "थेट सहयोग सत्र चालू आहे.", desc_shareLink: "तुम्ही ज्यांच्याशी सहयोग करू इच्छिता त्यांच्याशी ही दुवा सामायिक करा:", desc_exitSession: "सत्र थांबवल्याने तुम्हीं खोली तून बाहेर याल, तरिही तुम्ही स्थानिक पातळीवर दृश्यासह काम करु शकाल. लक्षात ठेवा की याचा इतर लोकांवर परिणाम होणार नाही आणि ते त्यांच्या आवृत्तीवर सहयोग करित राहातील.", shareTitle: "एक्सकेलीड्रॉ वर थेट सहयोग सत्रात सामील व्हा" }, sT = { title: "त्रुटि" }, lT = { disk_title: "डिस्क मधे जतन करा", disk_details: "सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुम तो डेटा नंतर परत आणु शकता.", disk_button: "फ़ाइल मधे जतन करा", link_title: "सामायिके साठी दुवा", link_details: "नुसतं वाचु देणारा दुवा चा स्वरूपे बाहेर ठेवा.", link_button: "दुवा स्वरूपे बाहेर ठेवा", excalidrawplus_description: "दृश्य तुमच्या एक्सकेलीड्रॉ कार्यक्षेत्र मधे जतन करा.", excalidrawplus_button: "बाहेर ठेवा", excalidrawplus_exportError: "एक्सकेलीड्रॉ मधे बाहेर ठेवता नाही येत..." }, cT = { blog: "आमचा ब्लॉग वाचा", click: "क्लिक करा", deepSelect: "खोल निवड", deepBoxSelect: "चौकट मधे खोल निवड करा आणि बाहेर ओढणे वाचवा", curvedArrow: "वक्र बाण", curvedLine: "वक्र रेघ", documentation: "कागदपत्रे", doubleClick: "दुहेरी क्लिक", drag: "ओढा", editor: "संपादक", editLineArrowPoints: "रेघ/तीर बिंदु सम्पादित करा", editText: "पाठ्य सम्पादित करा/ लेबल जोडा", github: "समस्या मिळाली? प्रस्तुत करा", howto: "आमच्या मार्गदर्शकाचे अनुसरण करा", or: "किंवा", preventBinding: "बाण बंधन होणं टाळा", tools: "अवजार", shortcuts: "कीबोर्ड शॉर्टकट", textFinish: "संपादन संपले (मजकूर संपादन)", textNewLine: "नवी ओळ जोडा (मजकूर संपादक)", title: "मदत", view: "दृश्य", zoomToFit: "सर्व तत्व दिसतील असे दृश्यरूप आकार करा", zoomToSelection: "निवडी प्रयंत दृश्यरूप आकार करा", toggleElementLock: "कुलूपातून आत/बाहेर निवड", movePageUpDown: "पान वर/खाली करा", movePageLeftRight: "पान डावी/उजवी कडे करा" }, dT = { title: "पटल स्वच्छ करा" }, DT = { title: "संग्रह प्रकाशित करा", itemName: "वस्तु चे नाव", authorName: "लेखक चे नाव", githubUsername: "गिटहब वापरकर्तानाव", twitterUsername: "ट्विटर वापरकर्तानाव", libraryName: "संग्रहाचे नाव", libraryDesc: "संग्रहाचे वर्णन", website: "वेबसाइट", placeholder: { authorName: "तुमचे नाव किव्हा वापरकर्तानाव", libraryName: "तुमचा संग्रहाचे नाव", libraryDesc: "तुमचा संग्रहाचे वर्णन लोकांना संग्रहा बद्दल जाणकारी देतील", githubHandle: "गिटहब हैंडल (वैकल्पिक), एकदा संग्रह पुनरावलोकना साठी जमा केल्या नंतर ही तुम्हीं सम्पादित करु शकता", twitterHandle: "ट्विटर वापरकार्यक नाव (वैकल्पिक), त्यामुळे ट्विटर वर ज़हीरांति साठी कोणाला गुण द्यायचे हे आम्हाला समजेल", website: "दुवा तुमच्या वैयक्तिक वेब-साइट किव्हा कुठे दूसरिकडे (ऐच्छिक) करावा" }, errors: { required: "आवश्यक आहे", website: "वैध यू-आर-एल द्या" }, noteDescription: "समाविष्ट करण्या साठी तुमचा संग्रह ह्याचात जमा करा <link>सार्वजनिक संग्रहाचे कोठार</link>इतर लोकांना त्यांच्या रेखाचित्रांमधे वापरण्यासाठी.", noteGuidelines: "संग्रहाला आधी स्वहस्ते स्वीकृती मिळणे आवश्यक आहे. कृपया हे वाचा <link>मार्गदर्शक तत्त्वे</link> जमा करण्या पूर्वी, तुमच्या जवळ एक गिटहब खाते असणे आवश्यक आहे जे संवादा साठी आणिक बदल करण्या साठी लागेल, तरी हे सर्व अगदी आवश्यक नाही आहे.", noteLicense: "जमा करताना तुम्हीं सहमति दाखवतात आहे की संग्रह ह्याचा खाली प्रकाशित होईल <link>एम-आइ-टी परवाना, </link>ज्याचा थोडक्यात अर्थ कोणीही निर्बंधांशिवाय वापरू शकतो.", noteItems: "प्रतैक संग्रहाचे नाव, नीट शोधनासाठी, असणे आवश्यक आहे. खाली दिलेल्या वस्तु समाविष्ट केल्या जातील:", atleastOneLibItem: "सुरु करण्यासाठी, कृपया करून, कमित कमी एक वस्तु तरी निवडा", republishWarning: "टीप: काही निवडक आयटम आधीच प्रकाशित/प्रस्तुत केलेले आहेत. विद्यमान लायब्ररी किंवा प्रस्तुतित आयटम अद्यावित करताना तुम्ही फक्त तो पुन्हा प्रस्तुत करा." }, hT = { title: "संग्रह जमा केला", content: "धन्यवाद {{authorName}}. आपला संग्रह पुनरावलोकना साठी जमा झाला आहे. तुम्हीं स्थिति सारखी तपासू सकता<link>इकडे</link>" }, wT = { resetLibrary: "संग्रह पुनर्स्थित करा", removeItemsFromLib: "निवडलेले आयटम्स संग्रहातून काढा" }, FT = { header: "प्रतिमा निर्यात करा", label: { withBackground: "पार्श्वभूमि", onlySelected: "फक्त चयन केलेले", darkMode: "अंधारमय स्थिति", embedScene: "दृश्य रुतवा", scale: "क़िती पट", padding: "ग़ादी" }, tooltip: { embedScene: "दृश्य डेटा निर्यात केलेल्या पी-एन-जी किव्हा एस-वी-जी फ़ाईल मधे सुरक्षीत केला जाईल, त्याने दृश्य पुनः परत आणता येईल. निर्यात केलेली फ़ाईल चा आकार त्याने वाढेल." }, title: { exportToPng: "पी-एन-जी स्वरूपात बाहेर ठेवा", exportToSvg: "एस-वी-जी स्वरूपात बाहेर ठेवा", copyPngToClipboard: "पी-एन-जी रूपे फळी वर कॉपी करा" }, button: { exportToPng: "पीएनजी", exportToSvg: "एसविज़ी", copyPngToClipboard: "फळी वर कॉपी करा" } }, pT = { tooltip: "तुमचे चित्रे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत, त्या कारणांनी ऐक्सकैलिड्रॉ सर्वर्स ह्यानां ते पहाणं कधीच जमणार नाही.", link: "ब्लॉग पोस्ट ऐक्सकैलिड्रॉ मधे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत" }, mT = { angle: "कोण", element: "वस्तु", elements: "वस्तु", height: "उंची", scene: "दृश्य", selected: "निवडलेले", storage: "साठवण", title: "अभ्यासू लोगो के लिये आंकडे", total: "योग", version: "आवृत्ती", versionCopy: "कॉपी करायला क्लिक करा", versionNotAvailable: "आवृति उपलब्ध नाही", width: "रुंदी" }, kT = { addedToLibrary: "संग्रह मधे सम्मिलित", copyStyles: "कॉपी केलेली शैली.", copyToClipboard: "फळी वर कॉपी झाली.", copyToClipboardAsPng: `{{exportSelection}} फळी वर पी-एन-जी स्वरूपात कॉपी झाली
({{exportColorScheme}})`, fileSaved: "फ़ाइल जतन झाली.", fileSavedToFilename: "{filename} मधे जतन झाली", canvas: "पटल", selection: "निवड", pasteAsSingleElement: `एक घटक म्हणून चिपकावण्या साठी {{shortcut}} वापरा,
किंवा विद्यमान मजकूर संपादकात चिपकवा`, unableToEmbed: "युआरेल रूतवणे प्रतिबंधित आहेत. आपली युआरेल श्वेतसूचित आणण्या साठी कृपया एक मुद्दा ग़िटहब वर उठवा", unrecognizedLinkFormat: "जी युआरेल तुम्हीं रतवली आहे, ती आपेक्षित प्रकारे नाही आहे. कृपया स्त्रोत साइट नी 'रूतवण्या साठी दिलेलि लिपि' चिपकावण्याचा प्रयास करा" }, yT = { transparent: "पारदर्शक", black: "काळा", white: "पांढरा", red: "लाल", pink: "गुलाबी", grape: "अंगूरी", violet: "जांभळा", gray: "राखाडी", blue: "निळा", cyan: "आकाशी", teal: "हिरवट निळा", green: "हिरवा", yellow: "पिवळा", orange: "केशरी", bronze: "कांस्य" }, bT = { app: { center_heading: "तुमचा सर्व डेटा तुमच्या ब्राउझरमध्ये स्थानिक पातळीवर जतन केला जातो.", center_heading_plus: "त्याऐवजी तुम्हाला Excalidraw+ वर जायचे आहे का?", menuHint: "निर्यात, आवड़ी-निवडी, भाषा, ..." }, defaults: { menuHint: "निर्यात, आवड़ी निवडी आणि आणकिही...", center_heading: "आकृत्या. काढणे. सोपे.", toolbarHint: "एक साधन निवडा आणि चित्रीकरण सुरु करा!", helpHint: "शॉर्टकट आणि सहाय्य" } }, UT = { mostUsedCustomColors: "सर्वात जास्त वापरणीस रंग", colors: "रंग", shades: "रंगछटा", hexCode: "हेक्स कोड", noShades: "ह्या रंगाच्या छटा उपलब्ध नाहित" }, GT = { action: { exportToImage: { title: "छवि स्वरूपे निर्यात करा", button: "छवि स्वरूपे निर्यात करा", description: "सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता." }, saveToDisk: { title: "डिस्क मधे जतन करा", button: "डिस्क मधे जतन करा", description: "सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता." }, excalidrawPlus: { title: "एक्षकालीड्रॉ +", button: "एक्षकाली ड्रॉ+ मधे निर्यात करा", description: "दृष्य तुमच्या एक्षकालीड्रॉ+ चा कार्यस्थल मधे जतन करा." } }, modal: { loadFromFile: { title: "फ़ाइल मधुन लोड करा", button: "फ़ाइल मधुन लोड करा", description: "फ़ाइल मधुन लोड केल्या वर ते <bold>तुमचा सध्याचा कामा ठिकाणि एईल </bold><br></br> तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता." }, shareableLink: { title: "लिंक पासून लोड करा", button: "माझ सध्याचे कार्य बदला", description: "बाहरी चित्र लोड केल्या वर ते <bold>तुमचा सध्याचा कामा ठिकाणि एईल </bold><br></br> तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता." } } }, fT = { title: "मर्मेड पासून एक्सकाली मधे", button: "शिरवा", description: "", syntax: "मर्मेड संरचना नियम", preview: "पूर्वावलोकन" }, d7A = { labels: BT, library: gT, buttons: tT, alerts: iT, errors: ET, toolBar: aT, headings: IT, hints: oT, canvasError: QT, errorSplash: nT, roomDialog: rT, errorDialog: sT, exportDialog: lT, helpDialog: cT, clearCanvasDialog: dT, publishDialog: DT, publishSuccessDialog: hT, confirmDialog: wT, imageExportDialog: FT, encrypted: pT, stats: mT, toast: kT, colors: yT, welcomeScreen: bT, colorPicker: UT, overwriteConfirm: GT, mermaid: fT };
const D7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iT,
  buttons: tT,
  canvasError: QT,
  clearCanvasDialog: dT,
  colorPicker: UT,
  colors: yT,
  confirmDialog: wT,
  default: d7A,
  encrypted: pT,
  errorDialog: sT,
  errorSplash: nT,
  errors: ET,
  exportDialog: lT,
  headings: IT,
  helpDialog: cT,
  hints: oT,
  imageExportDialog: FT,
  labels: BT,
  library: gT,
  mermaid: fT,
  overwriteConfirm: GT,
  publishDialog: DT,
  publishSuccessDialog: hT,
  roomDialog: rT,
  stats: mT,
  toast: kT,
  toolBar: aT,
  welcomeScreen: bT
}, Symbol.toStringTag, { value: "Module" }));
var LT = { paste: "ထား", pasteAsPlaintext: "", pasteCharts: "", selectAll: "အကုန်ရွေး", multiSelect: "ရွေးထားသည့်ထဲပုံထည့်", moveCanvas: "ကားချပ်ရွှေ့", cut: "", copy: "ကူး", copyAsPng: "PNG အနေဖြင့်ကူး", copyAsSvg: "SVG အနေဖြင့်ကူး", copyText: "", copySource: "", convertToCode: "", bringForward: "ရှေ့ပို့", sendToBack: "နောက်ဆုံးထား", bringToFront: "ရှေ့ဆုံးထား", sendBackward: "နောက်ပို့", delete: "ဖျက်", copyStyles: "ပုံစံကူး", pasteStyles: "ပုံစံထား", stroke: "မျဉ်း", background: "နောက်ခံ", fill: "ဖြည့်", strokeWidth: "မျဉ်းအထူ", strokeStyle: "မျဉ်းပုံစံ", strokeStyle_solid: "အပြည့်", strokeStyle_dashed: "မျဉ်းပြတ်", strokeStyle_dotted: "မျဉ်းစက်", sloppiness: "သေသပ်မှု", opacity: "ထင်ရှားမှု", textAlign: "စာသားညှိ", edges: "အစွန်း", sharp: "ထောင့်ချွန်", round: "ထောင့်ဝိုင်း", arrowheads: "မြှားခေါင်း", arrowhead_none: "ဘာမျှမရှိ", arrowhead_arrow: "မြှား", arrowhead_bar: "", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "စာလုံးအရွယ်", fontFamily: "စာလုံးပုံစံ", addWatermark: '"Excalidraw ဖြင့်ဖန်တီးသည်။" စာသားထည့်', handDrawn: "လက်ရေး", normal: "ပုံမှန်", code: "ကုဒ်", small: "အသေး", medium: "အလတ်", large: "အကြီး", veryLarge: "ပိုကြီး", solid: "အပြည့်", hachure: "မျဉ်းစောင်း", zigzag: "", crossHatch: "ဇကာကွက်", thin: "ပါး", bold: "ထူ", left: "ဘယ်", center: "အလယ်", right: "ညာ", extraBold: "ပိုထူ", architect: "ဗိသုကာ", artist: "ပန်းချီ", cartoonist: "ကာတွန်း", fileTitle: "", colorPicker: "အရောင်ရွေး", canvasColors: "", canvasBackground: "ကားချပ်နောက်ခံ", drawingCanvas: "ပုံဆွဲကားချပ်", layers: "အလွှာများ", actions: "လုပ်ဆောင်ချက်များ", language: "ဘာသာစကား", liveCollaboration: "", duplicateSelection: "ပွား", untitled: "အမည်မရှိ", name: "အမည်", yourName: "သင့်အမည်", madeWithExcalidraw: "Excalidraw ဖြင့်ဖန်တီးသည်။", group: "အုပ်စုဖွဲ့", ungroup: "အုပ်စုဖျက်သိမ်း", collaborators: "ပူးပေါင်းပါဝင်သူများ", showGrid: "", addToLibrary: "မှတ်တမ်းတင်", removeFromLibrary: "မှတ်တမ်းမှထုတ်", libraryLoadingMessage: "မှတ်တမ်းအား တင်သွင်းနေသည်…", libraries: "စာကြည့်တိုက်တွင်ရှာဖွေပါ", loadingScene: "မြင်ကွင်းဖော်နေသည်…", align: "ချိန်ညှိ", alignTop: "ထိပ်ညှိ", alignBottom: "အခြေညှိ", alignLeft: "ဘယ်ညှိ", alignRight: "ညာညှိ", centerVertically: "ဒေါင်လိုက်အလယ်ညှိ", centerHorizontally: "အလျားလိုက်အလယ်ညှိ", distributeHorizontally: "အလျားလိုက်", distributeVertically: "ထောင်လိုက်", flipHorizontal: "", flipVertical: "", viewMode: "", share: "", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "", excalidrawLib: "", decreaseFontSize: "", increaseFontSize: "", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "", editEmbed: "", create: "", createEmbed: "", label: "", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "", unlock: "", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xT = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, ST = { clearReset: "ကားချပ်ရှင်းလင်း", exportJSON: "", exportImage: "", export: "", copyToClipboard: "ကူးယူ", save: "", saveAs: "ပြောင်းသိမ်း", load: "", getShareableLink: "မျှဝေရန် လင့်ခ်ရယူ", close: "ပိတ်", selectLanguage: "ဘာသာစကားရွေးပါ", scrollBackToContent: "ကားချပ်ပြန်တည်", zoomIn: "ချဲ့", zoomOut: "ချုံ့", resetZoom: "ပုံမှန်ပြန်ထား", menu: "မီနူး", done: "ပြီးပြီ", edit: "ပြင်ဆင်", undo: "ပြန်ထား", redo: "ထပ်လုပ်", resetLibrary: "", createNewRoom: "အခန်းသစ်ဖွဲ့", fullScreen: "", darkMode: "", lightMode: "", zenMode: "", objectsSnapMode: "", exitZenMode: "ဇင်မြင်ကွင်းမှထွက်", cancel: "", clear: "", remove: "", embed: "", publishLibrary: "", submit: "", confirm: "", embeddableInteractionButton: "" }, NT = { clearReset: "ကားချပ်တစ်ခုလုံးရှင်းလင်းပါတော့မည်။ အတည်ပြုပါ။", couldNotCreateShareableLink: "မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။", couldNotCreateShareableLinkTooBig: "မြင်ကွင်းအရမ်းကြီးနေသဖြင့် မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။", couldNotLoadInvalidFile: "လွဲမှားနေသောဖိုင်အား တင်၍မရပါ။", importBackendFailed: "Backend မှမလုပ်ဆောင်နိုင်သေးပါ။", cannotExportEmptyCanvas: "ကားချပ်အလွတ်အားထုတ်ယူ၍မရပါ။", couldNotCopyToClipboard: "", decryptFailed: "အချက်အလက်ဖော်ယူ၍မရပါ။", uploadedSecurly: "တင်သွင်းအချက်အလက်များအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်စနစ်အသုံးပြု၍လုံခြုံစွာထိန်းသိမ်းထားပါသဖြင့် Excalidraw ဆာဗာနှင့်ဆက်စပ်အဖွဲ့အစည်းများပင်လျှင်မဖတ်ရှုနိုင်ပါ။", loadSceneOverridePrompt: "လက်ရှိရေးဆွဲထားသမျှအား ပြင်ပမှတင်သွင်းသောပုံနှင့်အစားထိုးပါမည်။ ဆက်လက်ဆောင်ရွက်လိုပါသလား။", collabStopOverridePrompt: "", errorAddingToLibrary: "", errorRemovingFromLibrary: "", confirmAddLibrary: "{{numShapes}} ခုသောပုံသဏ္ဌာန်အားမှတ်တမ်းတင်ပါမည်။ အတည်ပြုပါ။", imageDoesNotContainScene: "", cannotRestoreFromImage: "ဤပုံဖြင့်မြင်ကွင်းပြန်လည်မရယူနိုင်ပါ။", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, RT = { unsupportedFileType: "", imageInsertError: "", fileTooBig: "", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "", cannotResolveCollabServer: "", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MT = { selection: "ရွေးချယ်", image: "", rectangle: "စတုဂံ", diamond: "စိန်", ellipse: "အဝိုင်း", arrow: "မြှား", line: "မျဉ်း", freedraw: "", text: "စာသား", library: "မှတ်တမ်း", lock: "ရွေးချယ်ထားသောကိရိယာကိုသာဆက်သုံး", penMode: "", link: "", eraser: "", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, YT = { canvasActions: "ကားချပ်လုပ်ဆောင်ချက်", selectedShapeActions: "ပုံသဏ္ဌာန်လုပ်ဆောင်ချက်", shapes: "ပုံသဏ္ဌာန်များ" }, vT = { canvasPanning: "", linearElement: "အမှတ်များချမှတ်ရေးဆွဲရန်ကလစ်နှိပ်ပါ၊ မျဉ်းတစ်ကြောင်းတည်းအတွက် တရွတ်ဆွဲပါ။", freeDraw: "ကလစ်နှိပ်၍ တရွတ်ဆွဲပါ၊ ပြီးလျှင်လွှတ်ပါ။", text: "မှတ်ချက်။ ။မည်သည့်ကိရိယာရွေးထားသည်ဖြစ်စေ ကလစ်နှစ်ချက်နှိပ်၍စာသားထည့်နိုင်သည်", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "နောက်ဆုံးအမှတ်ပေါ်တွင်ကလစ်နှိပ်ခြင်း၊ Escape (သို့) Enter နှိပ်ခြင်းတို့ဖြင့်အဆုံးသတ်နိုင်", lockAngle: "", resize: "အချိုးအစားကန့်သတ်ရန် Shift နှင့် ဗဟိုမှချိန်ညှိရန် Alt တို့ကိုနှိပ်ထားနိုင်သည်", resizeImage: "", rotate: "Shift ကိုနှိပ်ထားခြင်းဖြင့် ထောင့်အလိုက်လှည့်နိုင်သည်", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, HT = { cannotShowPreview: "နမူနာမပြသနိုင်ပါ", canvasTooBig: "ကားချပ်အလွန်ကြီးကောင်းကြီးနေနိုင်သည်။", canvasTooBigTip: "မှတ်ချက်။ ။ဝေးကွာနေသော ပုံများ၊ စာများအား ပိုမိုနီးကပ်အောင်ရွှေ့ကြည့်ပါ။" }, KT = { headingMain: "ချို့ယွင်းမှုဖြစ်ပေါ်ခဲ့သဖြင့် ထပ်မံကြိုးစားကြည့်ရန် <button>စာမျက်နှာအား အသစ်ပြန်လည်ရယူပါ။</button>", clearCanvasMessage: "အသစ်ပြန်လည်မရယူနိုင်ပါက ထပ်မံကြိုးစားကြည့်ရန်<button>ကားချပ်အား ရှင်းလင်းပါ။</button>", clearCanvasCaveat: " ရေးဆွဲထားသည်များ ဆုံးရှုံးနိုင်သည် ", trackedToSentry: "ချို့ယွင်းမှုသတ်မှတ်ချက် {{eventId}} အားစနစ်အတွင်းခြေရာကောက်ပြီးပါပြီ။", openIssueMessage: "ချို့ယွင်းမှုမှတ်တမ်းတွင် အရေးကြီးအချက်အလက်များပါဝင်မှုမရှိစေရန်အထူးသတိပြုပါသည်။ မပါဝင်ပါက ဆက်လက်ဆောင်ရွက်ရန် <button>ချို့ယွင်းမှုအားခြေရာကောက်ပါ။</button> အောက်ပါအချက်အလက်များအား Github တွင် Issue အနေဖြင့်ဖြည့်သွင်းဖော်ပြပေးပါ။", sceneContent: "မြင်ကွင်းပါအချက်အလက်။ ။" }, JT = { desc_intro: "လက်ရှိမြင်ကွင်းတွင်ပူးပေါင်းရေးဆွဲရန် အခြားသူများအား ဖိတ်ကြားနိုင်သည်။", desc_privacy: "နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့်ရေးဆွဲသမျှအား ဆာဗာပေါ်မှပင်လျှင်ကြည့်ရှုနိုင်မည်မဟုတ်ပါ။ မစိုးရိမ်ပါနှင့်။", button_startSession: "ပူးပေါင်းမှုစတင်", button_stopSession: "ပူးပေါင်းမှုအဆုံးသတ်", desc_inProgressIntro: "တိုက်ရိုက်ပူးပေါင်းရေးဆွဲမှုများပြုလုပ်နေပါသည်။", desc_shareLink: "ဤလင့်ခ်အား ပူးပေါင်းရေးဆွဲလိုသူများထံပေးပို့ပါ။ ။ ", desc_exitSession: "ပူးပေါင်းမှုရပ်တန့်ပါက အဖွဲ့အတွင်းမှထွက်ခွာသွားမည်ဖြစ်သော်လည်း မိမိမြင်ကွင်းတွင်ဆက်လက်ရေးဆွဲနိုင်ပါမည်။ အဖွဲ့အတွင်းကျန်ရှိနေခဲ့သောအခြားပါဝင်သူများသည်လည်း ဆက်လက်ပူးပေါင်းရေးဆွဲနေနိုင်ပါလိမ့်မည်။", shareTitle: "" }, ZT = { title: "ချို့ယွင်းချက်" }, qT = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, WT = { blog: "", click: "", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, jT = { title: "" }, TT = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, zT = { title: "", content: "" }, PT = { resetLibrary: "", removeItemsFromLib: "" }, OT = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, VT = { tooltip: "ရေးဆွဲထားသောပုံများအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့် Excalidraw ၏ဆာဗာများပင်လျှင်မြင်တွေ့ရမည်မဟုတ်ပါ။", link: "" }, XT = { angle: "ထောင့်", element: "", elements: "", height: "အမြင့်", scene: "မြင်ကွင်း", selected: "ရွေးချယ်သည်", storage: "သိုလှောင်ခန်း", title: "အက္ခရာများအတွက်အချက်အလက်များ", total: "စုစုပေါင်း", version: "", versionCopy: "", versionNotAvailable: "", width: "အကျယ်" }, _T = { addedToLibrary: "", copyStyles: "", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, $T = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, Az = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, uz = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, ez = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, Cz = { title: "", button: "", description: "", syntax: "", preview: "" }, h7A = { labels: LT, library: xT, buttons: ST, alerts: NT, errors: RT, toolBar: MT, headings: YT, hints: vT, canvasError: HT, errorSplash: KT, roomDialog: JT, errorDialog: ZT, exportDialog: qT, helpDialog: WT, clearCanvasDialog: jT, publishDialog: TT, publishSuccessDialog: zT, confirmDialog: PT, imageExportDialog: OT, encrypted: VT, stats: XT, toast: _T, colors: $T, welcomeScreen: Az, colorPicker: uz, overwriteConfirm: ez, mermaid: Cz };
const w7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NT,
  buttons: ST,
  canvasError: HT,
  clearCanvasDialog: jT,
  colorPicker: uz,
  colors: $T,
  confirmDialog: PT,
  default: h7A,
  encrypted: VT,
  errorDialog: ZT,
  errorSplash: KT,
  errors: RT,
  exportDialog: qT,
  headings: YT,
  helpDialog: WT,
  hints: vT,
  imageExportDialog: OT,
  labels: LT,
  library: xT,
  mermaid: Cz,
  overwriteConfirm: ez,
  publishDialog: TT,
  publishSuccessDialog: zT,
  roomDialog: JT,
  stats: XT,
  toast: _T,
  toolBar: MT,
  welcomeScreen: Az
}, Symbol.toStringTag, { value: "Module" }));
var Bz = { paste: "Lim inn", pasteAsPlaintext: "Lim inn som klartekst", pasteCharts: "Lim inn diagrammer", selectAll: "Velg alt", multiSelect: "Legg til element i utvalg", moveCanvas: "Flytt lerretet", cut: "Klipp ut", copy: "Kopier", copyAsPng: "Kopier til PNG", copyAsSvg: "Kopier til utklippstavlen som SVG", copyText: "Kopier til utklippstavlen som tekst", copySource: "", convertToCode: "", bringForward: "Flytt framover", sendToBack: "Send bakerst", bringToFront: "Flytt forrest", sendBackward: "Send bakover", delete: "Slett", copyStyles: "Kopier stiler", pasteStyles: "Lim inn stiler", stroke: "Strek", background: "Bakgrunn", fill: "Fyll", strokeWidth: "Strektykkelse", strokeStyle: "Strekstil", strokeStyle_solid: "Heltrukket", strokeStyle_dashed: "Stiplet", strokeStyle_dotted: "Prikket", sloppiness: "Ujevnhet", opacity: "Synlighet", textAlign: "Tekstjustering", edges: "Kanter", sharp: "Skarp", round: "Rund", arrowheads: "Pilspisser", arrowhead_none: "Ingen", arrowhead_arrow: "Pil", arrowhead_bar: "Søyle", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Trekant", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Skriftstørrelse", fontFamily: "Fontfamilie", addWatermark: 'Legg til "Laget med Excalidraw"', handDrawn: "Håndtegnet", normal: "Normal", code: "Kode", small: "Liten", medium: "Medium", large: "Stor", veryLarge: "Svært stor", solid: "Helfarge", hachure: "Skravert", zigzag: "Sikk-sakk", crossHatch: "Krysskravert", thin: "Tynn", bold: "Tykk", left: "Venstre", center: "Midtstill", right: "Høyre", extraBold: "Ekstra tykk", architect: "Arkitekt", artist: "Kunstner", cartoonist: "Tegner", fileTitle: "Filnavn", colorPicker: "Fargevelger", canvasColors: "Brukes på lerretet", canvasBackground: "Lerretsbakgrunn", drawingCanvas: "Lerret", layers: "Lag", actions: "Handlinger", language: "Språk", liveCollaboration: "Sanntids-samarbeid...", duplicateSelection: "Dupliser", untitled: "Uten navn", name: "Navn", yourName: "Ditt navn", madeWithExcalidraw: "Laget med Excalidraw", group: "Gruppér utvalg", ungroup: "Avgruppér utvalg", collaborators: "Samarbeidspartnere", showGrid: "Vis rutenett", addToLibrary: "Legg til i bibliotek", removeFromLibrary: "Fjern fra bibliotek", libraryLoadingMessage: "Laster bibliotek…", libraries: "Bla gjennom biblioteker", loadingScene: "Laster inn scene…", align: "Juster", alignTop: "Juster øverst", alignBottom: "Juster nederst", alignLeft: "Juster venstre", alignRight: "Juster høyre", centerVertically: "Midtstill vertikalt", centerHorizontally: "Midtstill horisontalt", distributeHorizontally: "Distribuer horisontalt", distributeVertically: "Distribuer vertikalt", flipHorizontal: "Snu horisontalt", flipVertical: "Snu vertikalt", viewMode: "Visningsmodus", share: "Del", showStroke: "Vis fargevelger for kantfarge", showBackground: "Vis fargevelger for bakgrunnsfarge", toggleTheme: "Veksle tema", personalLib: "Personlig bibliotek", excalidrawLib: "Excalidraw-bibliotek", decreaseFontSize: "Reduser skriftstørrelse", increaseFontSize: "Øk skriftstørrelse", unbindText: "Avbind tekst", bindText: "Bind tekst til beholderen", createContainerFromText: "La tekst flyte i en beholder", link: { edit: "Rediger lenke", editEmbed: "Rediger lenke og bygg inn", create: "Opprett lenke", createEmbed: "Opprett lenke og bygg inn", label: "Lenke", labelEmbed: "Lenk & bygg inn", empty: "Ingen lenke er valgt" }, lineEditor: { edit: "Rediger linje", exit: "Avslutt linjeredigering" }, elementLock: { lock: "Lås", unlock: "Lås opp", lockAll: "Lås alle", unlockAll: "Lås opp alle" }, statusPublished: "Publisert", sidebarLock: "Holde sidemenyen åpen", selectAllElementsInFrame: "Velg alle elementene i rammen", removeAllElementsFromFrame: "Fjern alle elementer fra rammen", eyeDropper: "Velg farge fra lerretet", textToDiagram: "", prompt: "" }, gz = { noItems: "Ingen elementer lagt til ennå...", hint_emptyLibrary: "Velg et objekt på lerretet for å legge det til her, eller installer et bibliotek fra den offentlige samlingen under.", hint_emptyPrivateLibrary: "Velg et objekt på lerretet for å legge det til her." }, tz = { clearReset: "Tøm lerretet og tilbakestill bakgrunnsfargen", exportJSON: "Eksporter til fil", exportImage: "Eksporter bilde...", export: "Lagre som...", copyToClipboard: "Kopier til utklippstavle", save: "Lagre til aktiv fil", saveAs: "Lagre som", load: "Åpne", getShareableLink: "Få delingslenke", close: "Lukk", selectLanguage: "Velg språk", scrollBackToContent: "Skroll tilbake til innhold", zoomIn: "Zoom inn", zoomOut: "Zoom ut", resetZoom: "Nullstill zoom", menu: "Meny", done: "Ferdig", edit: "Rediger", undo: "Angre", redo: "Gjør om", resetLibrary: "Nullstill bibliotek", createNewRoom: "Opprett et nytt rom", fullScreen: "Fullskjerm", darkMode: "Mørk modus", lightMode: "Lys modus", zenMode: "Zen-modus", objectsSnapMode: "", exitZenMode: "Avslutt zen-modus", cancel: "Avbryt", clear: "Tøm", remove: "Fjern", embed: "Slå av/på innebygging", publishLibrary: "Publiser", submit: "Send inn", confirm: "Bekreft", embeddableInteractionButton: "Klikk for å samhandle" }, iz = { clearReset: "Dette vil tømme lerretet. Er du sikker?", couldNotCreateShareableLink: "Kunne ikke lage delbar lenke.", couldNotCreateShareableLinkTooBig: "Kunne ikke opprette lenke til deling: scenen er for stor", couldNotLoadInvalidFile: "Kunne ikke laste inn ugyldig fil", importBackendFailed: "Importering av backend feilet.", cannotExportEmptyCanvas: "Kan ikke eksportere et tomt lerret.", couldNotCopyToClipboard: "Kunne ikke kopiere til utklippstavlen.", decryptFailed: "Kunne ikke dekryptere data.", uploadedSecurly: "Opplastingen er kryptert og kan ikke leses av Excalidraw-serveren eller tredjeparter.", loadSceneOverridePrompt: "Å laste inn ekstern tegning vil erstatte det eksisterende innholdet. Ønsker du å fortsette?", collabStopOverridePrompt: `Hvis du slutter økten, overskrives din forrige, lokalt lagrede tegning. Er du sikker?

(Hvis du ønsker å beholde din lokale tegning, bare lukk nettleserfanen i stedet.)`, errorAddingToLibrary: "Kunne ikke legge element i biblioteket", errorRemovingFromLibrary: "Kunne ikke fjerne element fra biblioteket", confirmAddLibrary: "Dette vil legge til {{numShapes}} figur(er) i biblioteket ditt. Er du sikker?", imageDoesNotContainScene: "Det ser ikke ut til at dette bildet inneholder noen scenedata. Har du aktivert innebygging av scene under eksporten?", cannotRestoreFromImage: "Scenen kunne ikke gjenopprettes fra denne bildefilen", invalidSceneUrl: "Kunne ikke importere scene fra den oppgitte URL-en. Den er enten ødelagt, eller inneholder ikke gyldig Excalidraw JSON-data.", resetLibrary: "Dette vil tømme biblioteket ditt. Er du sikker?", removeItemsFromsLibrary: "Slett {{count}} element(er) fra biblioteket?", invalidEncryptionKey: "Krypteringsnøkkel må ha 22 tegn. Live-samarbeid er deaktivert.", collabOfflineWarning: `Ingen Internett-tilkobling tilgjengelig.
Endringer dine vil ikke bli lagret!` }, Ez = { unsupportedFileType: "Filtypen støttes ikke.", imageInsertError: "Kunne ikke sette inn bildet. Prøv igjen senere...", fileTooBig: "Filen er for stor. Maksimal tillatt størrelse er {{maxSize}}.", svgImageInsertError: "Kunne ikke sette inn SVG-bilde. SVG-koden ser ugyldig ut.", failedToFetchImage: "", invalidSVGString: "Ugyldig SVG.", cannotResolveCollabServer: "Kunne ikke koble til samarbeidsserveren. Vennligst oppdater siden og prøv på nytt.", importLibraryError: "Kunne ikke laste bibliotek", collabSaveFailed: "Kan ikke lagre i backend-databasen. Hvis problemer vedvarer, bør du lagre filen lokalt for å sikre at du ikke mister arbeidet.", collabSaveFailed_sizeExceeded: "Kunne ikke lagre til backend-databasen, lerretet ser ut til å være for stort. Du bør lagre filen lokalt for å sikre at du ikke mister arbeidet ditt.", imageToolNotSupported: "", brave_measure_text_error: { line1: "Ser ut som om du bruker Brave nettleser med <bold>Aggressivt Block Finger</bold> -innstillingen aktivert.", line2: "Dette kan resultere i å bryte <bold>tekst-elementene</bold> i tegningene.", line3: "Vi anbefaler på det sterkeste å deaktivere denne innstillingen. Du kan følge <link>disse trinnene</link> om hvordan du gjør det.", line4: "Hvis deaktivering av denne innstillingen ikke fikser visningen av tekstelementer, vennligst åpne en <issueLink>sak</issueLink> på vår GitHub, eller skriv oss på <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Innebygde elementer kan ikke legges til i biblioteket.", iframe: "", image: "Støtte for å legge til bilder i biblioteket kommer snart!" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, az = { selection: "Velg", image: "Sett inn bilde", rectangle: "Rektangel", diamond: "Diamant", ellipse: "Ellipse", arrow: "Pil", line: "Linje", freedraw: "Tegn", text: "Tekst", library: "Bibliotek", lock: "Behold merket verktøy som aktivt", penMode: "Pennemodus - forhindre berøring", link: "Legg til / oppdater link for en valgt figur", eraser: "Viskelær", frame: "Rammeverktøy", magicframe: "", embeddable: "Nettinnbygging", laser: "", hand: "Hånd (panoreringsverktøy)", extraTools: "Flere verktøy", mermaidToExcalidraw: "", magicSettings: "" }, Iz = { canvasActions: "Handlinger: lerret", selectedShapeActions: "Handlinger: valgt objekt", shapes: "Former" }, oz = { canvasPanning: "For å flytte lerretet, hold musehjulet eller mellomromstasten mens du drar, eller bruk hånd-verktøyet", linearElement: "Klikk for å starte linje med flere punkter, eller dra for en enkel linje", freeDraw: "Klikk og dra, slipp når du er ferdig", text: "Tips: du kan også legge til tekst ved å dobbeltklikke hvor som helst med utvalgsverktøyet", embeddable: "Klikk og dra for å opprette en nettside innebygd", text_selected: "Dobbeltklikk eller trykk ENTER for å redigere tekst", text_editing: "Trykk Escape eller Ctrl/Cmd+Enter for å fullføre redigering", linearElementMulti: "Klikk på siste punkt eller trykk Escape eller Enter for å fullføre", lockAngle: "Du kan låse vinkelen ved å holde nede SHIFT", resize: `Du kan beholde forholdet ved å trykke SHIFT mens du endrer størrelse,
trykk ALT for å endre størrelsen fra midten`, resizeImage: `Du kan endre størrelse fritt ved å holde SHIFT,
hold ALT for å endre størrelse fra midten`, rotate: "Du kan låse vinklene ved å holde SHIFT mens du roterer", lineEditor_info: "Hold Ctrl/Cmd og dobbelklikk eller trykk Ctrl/Cmd + Enter for å endre punkter", lineEditor_pointSelected: "Trykk på Slett for å fjerne punktet, Ctrl / Cmd+D for å duplisere, eller dra for å flytte", lineEditor_nothingSelected: `Velg et punkt å redigere (hold SHIFT for å velge flere),
eller hold Alt og klikk for å legge til nye punkter`, placeImage: "Klikk for å plassere bildet, eller klikk og dra for å angi størrelsen manuelt", publishLibrary: "Publiser ditt eget bibliotek", bindTextToElement: "Trykk Enter for å legge til tekst", deepBoxSelect: "Hold CTRL/CMD for å markere dypt og forhindre flytting", eraserRevert: "Hold Alt for å reversere elementene merket for sletting", firefox_clipboard_write: 'Denne funksjonen kan sannsynligvis aktiveres ved å sette "dom.events.asyncClipboard.clipboardItem" flagget til "true". For å endre nettleserens flagg i Firefox, besøk "about:config"-siden.', disableSnapping: "" }, Qz = { cannotShowPreview: "Kan ikke vise forhåndsvisning", canvasTooBig: "Lerretet kan være for stort.", canvasTooBigTip: "Tips: Prøv å flytte de ytterste elementene litt tettere sammen." }, nz = { headingMain: "En feil oppsto. Prøv <button>å laste siden på nytt.</button>", clearCanvasMessage: "Om ny sidelasting ikke fungerer, prøv <button>å tømme lerretet.</button>", clearCanvasCaveat: " Dette vil føre til tap av arbeid ", trackedToSentry: "Feilen med identifikator {{eventId}} ble logget i vårt system.", openIssueMessage: "Vi er veldig nøye med å ikke inkludere dine scene-opplysninger i feilen. Hvis din scene ikke er privat, vurder å følge opp i vårt <button>feilrapporteringssystem.</button> Ta med opplysningene nedenfor ved å kopiere og lime inn i GitHub-saken.", sceneContent: "Scene-innhold:" }, rz = { desc_intro: "Du kan invitere personer til scenen din for å samarbeide med deg.", desc_privacy: "Ta det med ro, sesjonen bruker ende-til-ende-kryptering, så alt du tegner forblir privat. Ikke en gang serveren vår kan se hva du lager.", button_startSession: "Start økt", button_stopSession: "Stopp sesjon", desc_inProgressIntro: "Sanntids-samarbeidsøkt er nå i gang.", desc_shareLink: "Del denne linken med de du vil samarbeide med:", desc_exitSession: "Dersom du avslutter sesjonen blir du frakoblet rommet, men du kan fortsette å arbeide med scenen lokalt. Vær oppmerksom på at dette ikke vil påvirke andre personer, og de vil fortsatt ha mulighet til å samarbeide på deres versjon.", shareTitle: "Bli med i en live samarbeidsøkt på Excalidraw" }, sz = { title: "Feil" }, lz = { disk_title: "Lagre til disk", disk_details: "Eksporter scene-dataene til en fil som du kan importere fra senere.", disk_button: "Lagre til fil", link_title: "Delbar lenke", link_details: "Eksporter som en skrivebeskyttet lenke.", link_button: "Eksporter til lenke", excalidrawplus_description: "Lagre scenen til ditt Excalidraw+ arbeidsområde.", excalidrawplus_button: "Eksporter", excalidrawplus_exportError: "Kunne ikke eksportere til Excalidraw+ for øyeblikket..." }, cz = { blog: "Les bloggen vår", click: "klikk", deepSelect: "Marker dypt", deepBoxSelect: "Marker dypt innad i boks og forhindre flytting", curvedArrow: "Buet pil", curvedLine: "Buet linje", documentation: "Dokumentasjon", doubleClick: "dobbeltklikk", drag: "dra", editor: "Redigeringsvisning", editLineArrowPoints: "Rediger linje/pilpunkter", editText: "Rediger tekst / legg til etikett", github: "Funnet et problem? Send inn", howto: "Følg våre veiledninger", or: "eller", preventBinding: "Forhindre pilbinding", tools: "Verktøy", shortcuts: "Tastatursnarveier", textFinish: "Fullfør redigering (teksteditor)", textNewLine: "Legg til ny linje (teksteditor)", title: "Hjelp", view: "Vis", zoomToFit: "Zoom for å se alle elementer", zoomToSelection: "Zoom til utvalg", toggleElementLock: "Lås/lås opp utvalg", movePageUpDown: "Flytt side opp/ned", movePageLeftRight: "Flytt siden til venstre/høyre" }, dz = { title: "Tøm lerret" }, Dz = { title: "Publiser bibliotek", itemName: "Elementnavn", authorName: "Forfatterens navn", githubUsername: "GitHub-brukernavnet", twitterUsername: "Twitter-brukernavn", libraryName: "Biblioteknavn", libraryDesc: "Beskrivelse av bibliotek", website: "Nettsted", placeholder: { authorName: "Ditt navn eller brukernavn", libraryName: "Navnet på biblioteket ditt", libraryDesc: "Beskrivelse av biblioteket ditt for å hjelpe folk med å forstå bruken", githubHandle: "Github-brukernavn (valgfritt), slik at du kan redigere biblioteket når du har sendt inn for gjennomgang", twitterHandle: "Twitter-brukernavn (valgfritt), slik at vi vet hvem vi skal kreditere når promotert på Twitter", website: "Lenke til din personlige nettside eller et annet sted (valgfritt)" }, errors: { required: "Påkrevd", website: "Angi en gyldig nettadresse" }, noteDescription: "Send inn biblioteket ditt som skal inkluderes i <link>kildekode for offentlig bibliotek</link>for andre å bruke dem i tegninger.", noteGuidelines: "Biblioteket må godkjennes manuelt først. Les <link>retningslinjene</link> før innsending. Du vil trenge en GitHub-konto for å kommunisere og gjøre endringer hvis ønsket, men det er ikke påkrevd.", noteLicense: "Ved å sende inn godtar du at biblioteket blir publisert under <link>MIT-lisens, </link>som kortfattet betyr at andre kan bruke dem uten begrensninger.", noteItems: "Hvert bibliotek må ha sitt eget navn, så det er filtrerbart. Følgende bibliotekselementer vil bli inkludert:", atleastOneLibItem: "Vennligst velg minst ett bibliotek for å komme i gang", republishWarning: "Merk: noen av de valgte elementene er merket som allerede publisert/sendt. Du bør kun sende inn elementer på nytt når du oppdaterer et eksisterende bibliotek eller innlevering." }, hz = { title: "Bibliotek innsendt", content: "Takk {{authorName}}. Ditt bibliotek har blitt sendt inn for gjennomgang. Du kan spore statusen<link>her</link>" }, wz = { resetLibrary: "Nullstill bibliotek", removeItemsFromLib: "Fjern valgte elementer fra bibliotek" }, Fz = { header: "Eksporter bilde", label: { withBackground: "Bakgrunn", onlySelected: "Kun valgte", darkMode: "Mørk modus", embedScene: "Bygg inn scene", scale: "Skalering", padding: "Avstand" }, tooltip: { embedScene: `Scenedata vil bli lagret i den eksporterte PNG/SVG-filen, slik at scenen kan gjenopprettes fra den.
Det vil øke den eksporterte filstørrelsen.` }, title: { exportToPng: "Eksporter til PNG", exportToSvg: "Eksporter til SVG", copyPngToClipboard: "Kopier PNG til utklippstavlen" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Kopier til utklippstavle" } }, pz = { tooltip: "Dine tegninger er ende-til-ende-krypterte slik at Excalidraw sine servere aldri vil se dem.", link: "Blogginnlegg om ende-til-ende-kryptering i Excalidraw" }, mz = { angle: "Vinkel", element: "Element", elements: "Elementer", height: "Høyde", scene: "Scene", selected: "Valgt", storage: "Lagring", title: "Statistikk for nerder", total: "Totalt", version: "Versjon", versionCopy: "Klikk for å kopiere", versionNotAvailable: "Versjon ikke tilgjengelig", width: "Bredde" }, kz = { addedToLibrary: "Lagt til i biblioteket", copyStyles: "Kopierte stiler.", copyToClipboard: "Kopiert til utklippstavlen.", copyToClipboardAsPng: `Kopierte {{exportSelection}} til utklippstavlen som PNG
({{exportColorScheme}})`, fileSaved: "Fil lagret.", fileSavedToFilename: "Lagret til {filename}", canvas: "lerret", selection: "utvalg", pasteAsSingleElement: `Bruk {{shortcut}} for å lime inn som ett enkelt element,
eller lim inn i en eksisterende tekstbehandler`, unableToEmbed: "Innbygging av denne nettadressen er ikke tillatt. Oppret en sak på GitHub for å be om url-hvitelisting", unrecognizedLinkFormat: 'Linken du bygget inn samsvarer ikke med det forventede formatet. Prøv å lime inn "bygg inn"-strengen fra kildesiden' }, yz = { transparent: "Gjennomsiktig", black: "Svart", white: "Hvit", red: "Rød", pink: "Rosa", grape: "Drue", violet: "Fiolett", gray: "Grå", blue: "Blå", cyan: "Turkis", teal: "Blågrønn", green: "Grønn", yellow: "Gul", orange: "Oransje", bronze: "Bronse" }, bz = { app: { center_heading: "Alle dine data lagres lokalt i din nettleser.", center_heading_plus: "Ønsker du å gå til Excalidraw+ i stedet?", menuHint: "Eksporter, innstillinger, språk, ..." }, defaults: { menuHint: "Eksporter, innstillinger og mer...", center_heading: "Diagrammer. Gjort. Enkelt.", toolbarHint: "Velg et verktøy og start å tegne!", helpHint: "Snarveier & hjelp" } }, Uz = { mostUsedCustomColors: "Mest brukte egendefinerte farger", colors: "Farger", shades: "Toner", hexCode: "Heksadesimal kode", noShades: "Ingen toner tilgjengelig for denne fargen" }, Gz = { action: { exportToImage: { title: "Eksporter som bilde", button: "Eksporter som bilde", description: "Eksporter scene-dataene til en fil som du kan importere fra senere." }, saveToDisk: { title: "Lagre til disk", button: "Lagre til disk", description: "Eksporter scene-dataene til en fil som du kan importere fra senere." }, excalidrawPlus: { title: "Excalidraw+", button: "Eksporter til Excalidraw+", description: "Lagre scenen til ditt Excalidraw+-arbeidsområde." } }, modal: { loadFromFile: { title: "Last inn fra fil", button: "Last inn fra fil", description: "Å laste fra en fil vil <bold>erstatte ditt eksisterende innhold</bold>.<br></br>Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene under." }, shareableLink: { title: "Last inn fra lenke", button: "Erstatt innholdet mitt", description: "Lasting av ekstern tegning vil <bold>erstatte ditt eksisterende innhold</bold>.<br></br>Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene nedenfor." } } }, fz = { title: "", button: "", description: "", syntax: "", preview: "" }, F7A = { labels: Bz, library: gz, buttons: tz, alerts: iz, errors: Ez, toolBar: az, headings: Iz, hints: oz, canvasError: Qz, errorSplash: nz, roomDialog: rz, errorDialog: sz, exportDialog: lz, helpDialog: cz, clearCanvasDialog: dz, publishDialog: Dz, publishSuccessDialog: hz, confirmDialog: wz, imageExportDialog: Fz, encrypted: pz, stats: mz, toast: kz, colors: yz, welcomeScreen: bz, colorPicker: Uz, overwriteConfirm: Gz, mermaid: fz };
const p7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iz,
  buttons: tz,
  canvasError: Qz,
  clearCanvasDialog: dz,
  colorPicker: Uz,
  colors: yz,
  confirmDialog: wz,
  default: F7A,
  encrypted: pz,
  errorDialog: sz,
  errorSplash: nz,
  errors: Ez,
  exportDialog: lz,
  headings: Iz,
  helpDialog: cz,
  hints: oz,
  imageExportDialog: Fz,
  labels: Bz,
  library: gz,
  mermaid: fz,
  overwriteConfirm: Gz,
  publishDialog: Dz,
  publishSuccessDialog: hz,
  roomDialog: rz,
  stats: mz,
  toast: kz,
  toolBar: az,
  welcomeScreen: bz
}, Symbol.toStringTag, { value: "Module" }));
var Lz = { paste: "Plakken", pasteAsPlaintext: "Plakken als platte tekst", pasteCharts: "Plak grafieken", selectAll: "Alles selecteren", multiSelect: "Voeg element toe aan selectie", moveCanvas: "Canvas verplaatsen", cut: "Knip", copy: "Kopiëren", copyAsPng: "Kopieer als PNG", copyAsSvg: "Kopieer naar klembord als SVG", copyText: "Kopieer naar klembord als tekst", copySource: "", convertToCode: "", bringForward: "Breng naar voren", sendToBack: "Stuur naar achtergrond", bringToFront: "Breng naar voorgrond", sendBackward: "Breng naar achter", delete: "Verwijderen", copyStyles: "Kopieer opmaak", pasteStyles: "Plak opmaak", stroke: "Lijn", background: "Achtergrond", fill: "Invulling", strokeWidth: "Lijnbreedte", strokeStyle: "Lijnstijl", strokeStyle_solid: "Ononderbroken", strokeStyle_dashed: "Gestreept", strokeStyle_dotted: "Gestippeld", sloppiness: "Slordigheid", opacity: "Doorzichtigheid", textAlign: "Uitlijning", edges: "Randen", sharp: "Hoekig", round: "Rond", arrowheads: "Pijlpunten", arrowhead_none: "Geen", arrowhead_arrow: "Pijl", arrowhead_bar: "Balk", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Driehoek", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Tekstgrootte", fontFamily: "Lettertype", addWatermark: 'Voeg "Gemaakt met Excalidraw" toe', handDrawn: "Handgetekend", normal: "Normaal", code: "Code", small: "Klein", medium: "Medium", large: "Groot", veryLarge: "Zeer groot", solid: "Ingekleurd", hachure: "Arcering", zigzag: "", crossHatch: "Tweemaal gearceerd", thin: "Dun", bold: "Vet", left: "Links", center: "Midden", right: "Rechts", extraBold: "Zwaar", architect: "Architect", artist: "Artiest", cartoonist: "Cartoonist", fileTitle: "Bestandsnaam", colorPicker: "Kleurenkiezer", canvasColors: "Gebruikt op canvas", canvasBackground: "Canvas achtergrond", drawingCanvas: "Canvas", layers: "Lagen", actions: "Acties", language: "Taal", liveCollaboration: "Live Samenwerking...", duplicateSelection: "Dupliceer", untitled: "Naamloos", name: "Naam", yourName: "Jouw naam", madeWithExcalidraw: "Gemaakt met Excalidraw", group: "Groeperen", ungroup: "Groep opheffen", collaborators: "Deelnemers", showGrid: "Raster weergeven", addToLibrary: "Voeg toe aan bibliotheek", removeFromLibrary: "Verwijder uit bibliotheek", libraryLoadingMessage: "Bibliotheek laden…", libraries: "Blader door bibliotheken", loadingScene: "Scène laden…", align: "Uitlijnen", alignTop: "Boven uitlijnen", alignBottom: "Onder uitlijnen", alignLeft: "Links uitlijnen", alignRight: "Rechts uitlijnen", centerVertically: "Verticaal Centreren", centerHorizontally: "Horizontaal Centreren", distributeHorizontally: "Horizontaal verspreiden", distributeVertically: "Verticaal distribueren", flipHorizontal: "Horizontaal spiegelen", flipVertical: "Verticaal spiegelen", viewMode: "Weergavemodus", share: "Deel", showStroke: "Toon lijn kleur kiezer", showBackground: "Toon achtergrondkleur kiezer", toggleTheme: "Thema aan/uit", personalLib: "Persoonlijke bibliotheek", excalidrawLib: "Excalidraw bibliotheek", decreaseFontSize: "Letters verkleinen", increaseFontSize: "Letters vergroten", unbindText: "Ontkoppel tekst", bindText: "Koppel tekst aan de container", createContainerFromText: "", link: { edit: "Wijzig link", editEmbed: "Link bewerken & insluiten", create: "Maak link", createEmbed: "Link maken en insluiten", label: "Link", labelEmbed: "Link toevoegen & insluiten", empty: "Er is geen link ingesteld" }, lineEditor: { edit: "Bewerk regel", exit: "Verlaat regel-editor" }, elementLock: { lock: "Vergrendel", unlock: "Ontgrendel", lockAll: "Vergrendel alles", unlockAll: "Ontgrendel alles" }, statusPublished: "Gepubliceerd", sidebarLock: "Zijbalk open houden", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xz = { noItems: "Nog geen items toegevoegd...", hint_emptyLibrary: "Selecteer een item op het canvas om het hier toe te voegen of installeer een bibliotheek uit de openbare repository, hieronder.", hint_emptyPrivateLibrary: "Selecteer een item op het canvas om het hier toe te voegen." }, Sz = { clearReset: "Canvas opnieuw instellen", exportJSON: "Exporteren naar bestand", exportImage: "Exporteer afbeelding...", export: "Sla op...", copyToClipboard: "Kopieer", save: "Opslaan naar huidige bestand", saveAs: "Opslaan als", load: "Open", getShareableLink: "Maak een deelbare link", close: "Sluiten", selectLanguage: "Taal selecteren", scrollBackToContent: "Scroll terug naar inhoud", zoomIn: "Inzoomen", zoomOut: "Uitzoomen", resetZoom: "Zoom terugzetten", menu: "Menu", done: "Klaar", edit: "Bewerken", undo: "Ongedaan maken", redo: "Herstel ongedaan maken", resetLibrary: "Bibliotheek Resetten", createNewRoom: "Creëer live-samenwerkingssessie", fullScreen: "Volledig scherm", darkMode: "Donkere modus", lightMode: "Lichte modus", zenMode: "Zen modus", objectsSnapMode: "", exitZenMode: "Verlaat zen modus", cancel: "Annuleren", clear: "Wissen", remove: "Verwijderen", embed: "Insluiten in-/uitschakelen", publishLibrary: "Publiceren", submit: "Versturen", confirm: "Bevestigen", embeddableInteractionButton: "Klik voor interactie" }, Nz = { clearReset: "Dit zal het hele canvas verwijderen. Weet je het zeker?", couldNotCreateShareableLink: "Kon geen deelbare link aanmaken.", couldNotCreateShareableLinkTooBig: "Kan geen deelbare link aanmaken: de scène is te groot", couldNotLoadInvalidFile: "Kan ongeldig bestand niet laden", importBackendFailed: "Importeren vanuit backend mislukt.", cannotExportEmptyCanvas: "Kan geen leeg canvas exporteren.", couldNotCopyToClipboard: "Kon niet naar klembord kopiëren.", decryptFailed: "Kan gegevens niet decoderen.", uploadedSecurly: "De upload is beveiligd met end-to-end encryptie, wat betekent dat de Excalidraw server en derden de inhoud niet kunnen lezen.", loadSceneOverridePrompt: "Het inladen van een externe tekening zal je bestaande inhoud vervangen. Wil je verdergaan?", collabStopOverridePrompt: `Wanneer de sessie wordt gestopt, overschrijft u de eerdere, lokaal opgeslagen tekening. Weet je het zeker?

(Als je de lokale tekening wilt behouden, sluit je in plaats daarvan het browsertabblad)`, errorAddingToLibrary: "Kan item niet toevoegen aan de bibliotheek", errorRemovingFromLibrary: "Kan item niet uit de bibliotheek verwijderen", confirmAddLibrary: "Dit zal {{numShapes}} vorm(en) toevoegen aan je bibliotheek. Weet je het zeker?", imageDoesNotContainScene: "Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je scène embedding tijdens het exporteren ingeschakeld?", cannotRestoreFromImage: "Scène kan niet worden hersteld vanuit dit afbeeldingsbestand", invalidSceneUrl: "Kan scène niet importeren vanuit de opgegeven URL. Het is onjuist of bevat geen geldige Excalidraw JSON-gegevens.", resetLibrary: "Dit zal je bibliotheek wissen. Weet je het zeker?", removeItemsFromsLibrary: "Verwijder {{count}} item(s) uit bibliotheek?", invalidEncryptionKey: "Encryptiesleutel moet 22 tekens zijn. Live samenwerking is uitgeschakeld.", collabOfflineWarning: `Geen internetverbinding beschikbaar.
Je wijzigingen worden niet opgeslagen!` }, Rz = { unsupportedFileType: "Niet-ondersteund bestandstype.", imageInsertError: "Afbeelding invoegen mislukt. Probeer het later opnieuw...", fileTooBig: "Bestand is te groot. Maximale grootte is {{maxSize}}.", svgImageInsertError: "Kon geen SVG-afbeelding invoegen. De SVG-opmaak ziet er niet geldig uit.", failedToFetchImage: "", invalidSVGString: "Ongeldige SVG.", cannotResolveCollabServer: "Kan geen verbinding maken met de collab server. Herlaad de pagina en probeer het opnieuw.", importLibraryError: "Kon bibliotheek niet laden", collabSaveFailed: "Kan niet opslaan in de backend database. Als de problemen blijven bestaan, moet u het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.", collabSaveFailed_sizeExceeded: "Kan de backend database niet opslaan, het canvas lijkt te groot te zijn. U moet het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "Ingesloten elementen kunnen niet worden toegevoegd aan de bibliotheek.", iframe: "", image: "Ondersteuning voor het toevoegen van afbeeldingen aan de bibliotheek komt binnenkort!" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, Mz = { selection: "Selectie", image: "Voeg afbeelding in", rectangle: "Rechthoek", diamond: "Ruit", ellipse: "Ovaal", arrow: "Pijl", line: "Lijn", freedraw: "Teken", text: "Tekst", library: "Bibliotheek", lock: "Geselecteerde tool actief houden na tekenen", penMode: "Pen modus - Blokkeer aanraken", link: "Link toevoegen / bijwerken voor een geselecteerde vorm", eraser: "Gum", frame: "", magicframe: "", embeddable: "Web insluiten", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, Yz = { canvasActions: "Canvasacties", selectedShapeActions: "Acties van geselecteerde vorm", shapes: "Vormen" }, vz = { canvasPanning: "Om de canvas te verplaatsen, houd muiswiel of spatiebalk ingedrukt tijdens slepen, of gebruik het handgereedschap", linearElement: "Klik om meerdere punten te starten, sleep voor één lijn", freeDraw: "Klik en sleep, laat los als je klaar bent", text: "Tip: je kunt tekst toevoegen door ergens dubbel te klikken met de selectietool", embeddable: "Klink-sleep om een website-insluiting te maken", text_selected: "Dubbelklik of druk op ENTER om tekst te bewerken", text_editing: "Druk op Escape of CtrlOrCmd+ENTER om het bewerken te voltooien", linearElementMulti: "Klik op het laatste punt of druk op Escape of Enter om te stoppen", lockAngle: "Je kunt de hoek beperken door SHIFT ingedrukt te houden", resize: `Houd tijdens het vergroten SHIFT ingedrukt om verhoudingen te behouden,
gebruik ALT om vanuit het midden te vergroten/verkleinen`, resizeImage: "", rotate: "Je kan hoeken beperken door SHIFT ingedrukt te houden wanneer je draait", lineEditor_info: "Houd CtrlOrCmd en Dubbelklik of druk op CtrlOrCmd + Enter om punten te bewerken", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "Publiceer je eigen bibliotheek", bindTextToElement: "Druk op enter om tekst toe te voegen", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, Hz = { cannotShowPreview: "Kan voorbeeld niet tonen", canvasTooBig: "Het canvas is mogelijk te groot.", canvasTooBigTip: "Tip: beweeg de verste elementen iets dichter bij elkaar." }, Kz = { headingMain: "Fout opgetreden. Probeer <button>de pagina opnieuw laden.</button>", clearCanvasMessage: "Als herladen niet werkt, probeer <button>het canvas te wissen.</button>", clearCanvasCaveat: " Dit zal leiden tot verlies van je werk ", trackedToSentry: "De fout met ID {{eventId}} was gevolgd op ons systeem.", openIssueMessage: "We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze <button>bugtracker.</button> Kopieer de informatie hieronder naar de GitHub issue.", sceneContent: "Scène-inhoud:" }, Jz = { desc_intro: "Je kunt mensen uitnodigen om met je samen te werken.", desc_privacy: "Geen zorgen, de sessie gebruikt end-to-end encryptie, dus wat je tekent blijft privé. Zelfs onze server zal niet kunnen zien wat je tekent.", button_startSession: "Start sessie", button_stopSession: "Stop sessie", desc_inProgressIntro: "De live-samenwerkingssessie is nu gestart.", desc_shareLink: "Deel deze link met iedereen waarmee je wil samenwerken:", desc_exitSession: `Het stoppen van de sessie zal je loskoppelen van de kamer, maar je kunt lokaal doorwerken met de scène.
Pas op: dit heeft geen invloed op andere mensen en dat zij nog steeds in staat zullen zijn om samen te werken aan hun versie.`, shareTitle: "Neem deel aan een live samenwerkingssessie op Excalidraw" }, Zz = { title: "Fout" }, qz = { disk_title: "Opslaan op schijf", disk_details: "De scènegegevens exporteren naar een bestand waaruit u later kunt importeren.", disk_button: "Opslaan naar bestand", link_title: "Deelbare link", link_details: "Exporteren als een alleen-lezen link.", link_button: "Exporteer naar link", excalidrawplus_description: "Sla de scène op in je Excalidraw+ werkruimte.", excalidrawplus_button: "Exporteer", excalidrawplus_exportError: "Kan op dit moment niet exporteren naar Excalidraw+..." }, Wz = { blog: "Lees onze blog", click: "klik", deepSelect: "Deep selecteer", deepBoxSelect: "", curvedArrow: "Gebogen pijl", curvedLine: "Kromme lijn", documentation: "Documentatie", doubleClick: "dubbelklikken", drag: "slepen", editor: "Editor", editLineArrowPoints: "", editText: "", github: "Probleem gevonden? Verzenden", howto: "Volg onze handleidingen", or: "of", preventBinding: "Pijlbinding voorkomen", tools: "Tools", shortcuts: "Sneltoetsen", textFinish: "Voltooi het bewerken (teksteditor)", textNewLine: "Nieuwe regel toevoegen (teksteditor)", title: "Help", view: "Weergave", zoomToFit: "Zoom in op alle elementen", zoomToSelection: "Inzoomen op selectie", toggleElementLock: "", movePageUpDown: "Pagina omhoog/omlaag", movePageLeftRight: "Verplaats pagina links/rechts" }, jz = { title: "Wis canvas" }, Tz = { title: "Publiceer bibliotheek", itemName: "Itemnaam", authorName: "Naam auteur", githubUsername: "GitHub gebruikersnaam", twitterUsername: "Twitter gebruikersnaam", libraryName: "Naam bibliotheek", libraryDesc: "Beschrijving van de bibliotheek", website: "Website", placeholder: { authorName: "Je naam of gebruikersnaam", libraryName: "Naam van je bibliotheek", libraryDesc: "Beschrijving van je bibliotheek om mensen te helpen het gebruik ervan te begrijpen", githubHandle: "", twitterHandle: "", website: "Link naar je persoonlijke website of elders (optioneel)" }, errors: { required: "Vereist", website: "Vul een geldige URL in" }, noteDescription: "<link>openbare repository</link>", noteGuidelines: "<link>richtlijnen</link>", noteLicense: "<link>MIT-licentie, </link>", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, zz = { title: "Bibliotheek ingediend", content: "<link>Hier</link>" }, Pz = { resetLibrary: "Reset bibliotheek", removeItemsFromLib: "Verwijder geselecteerde items uit bibliotheek" }, Oz = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, Vz = { tooltip: "Je tekeningen zijn beveiligd met end-to-end encryptie, dus Excalidraw's servers zullen nooit zien wat je tekent.", link: "Blog post over end-to-end versleuteling in Excalidraw" }, Xz = { angle: "Hoek", element: "Element", elements: "Elementen", height: "Hoogte", scene: "Scene", selected: "Geselecteerd", storage: "Opslag", title: "Statistieken voor nerds", total: "Totaal", version: "Versie", versionCopy: "Klik om te kopiëren", versionNotAvailable: "Versie niet beschikbaar", width: "Breedte" }, _z = { addedToLibrary: "Toegevoegd aan bibliotheek", copyStyles: "Stijlen gekopieerd.", copyToClipboard: "Gekopieerd naar het klembord.", copyToClipboardAsPng: `{{exportSelection}} naar klembord gekopieerd als PNG
({{exportColorScheme}})`, fileSaved: "Bestand opgeslagen.", fileSavedToFilename: "Opgeslagen als {filename}", canvas: "canvas", selection: "selectie", pasteAsSingleElement: `Gebruik {{shortcut}} om te plakken als een enkel element,
of plak in een bestaande teksteditor`, unableToEmbed: "Het insluiten van deze url is momenteel niet toegestaan. Zet een probleem op GitHub om de URL op de whitelist te zetten", unrecognizedLinkFormat: "De link die u hebt ingesloten komt niet overeen met het verwachte formaat. Probeer de 'embed' string van de bronsite te plakken" }, $z = { transparent: "Transparant", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, AP = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "Exporteren, voorkeuren en meer...", center_heading: "Diagrammen. Eenvoudig. Gemaakt.", toolbarHint: "Kies een tool & begin met tekenen!", helpHint: "Snelkoppelingen en hulp" } }, uP = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, eP = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CP = { title: "", button: "", description: "", syntax: "", preview: "" }, m7A = { labels: Lz, library: xz, buttons: Sz, alerts: Nz, errors: Rz, toolBar: Mz, headings: Yz, hints: vz, canvasError: Hz, errorSplash: Kz, roomDialog: Jz, errorDialog: Zz, exportDialog: qz, helpDialog: Wz, clearCanvasDialog: jz, publishDialog: Tz, publishSuccessDialog: zz, confirmDialog: Pz, imageExportDialog: Oz, encrypted: Vz, stats: Xz, toast: _z, colors: $z, welcomeScreen: AP, colorPicker: uP, overwriteConfirm: eP, mermaid: CP };
const k7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: Nz,
  buttons: Sz,
  canvasError: Hz,
  clearCanvasDialog: jz,
  colorPicker: uP,
  colors: $z,
  confirmDialog: Pz,
  default: m7A,
  encrypted: Vz,
  errorDialog: Zz,
  errorSplash: Kz,
  errors: Rz,
  exportDialog: qz,
  headings: Yz,
  helpDialog: Wz,
  hints: vz,
  imageExportDialog: Oz,
  labels: Lz,
  library: xz,
  mermaid: CP,
  overwriteConfirm: eP,
  publishDialog: Tz,
  publishSuccessDialog: zz,
  roomDialog: Jz,
  stats: Xz,
  toast: _z,
  toolBar: Mz,
  welcomeScreen: AP
}, Symbol.toStringTag, { value: "Module" }));
var BP = { paste: "Lim inn", pasteAsPlaintext: "", pasteCharts: "Lim inn diagram", selectAll: "Vel alt", multiSelect: "Legg til element i utval", moveCanvas: "Flytt lerretet", cut: "Klipp ut", copy: "Kopier", copyAsPng: "Kopier til utklippstavla som PNG", copyAsSvg: "Kopier til utklippstavla som SVG", copyText: "", copySource: "", convertToCode: "", bringForward: "Flytt framover", sendToBack: "Send heilt bak", bringToFront: "Flytt heilt fram", sendBackward: "Send bakover", delete: "Slett", copyStyles: "Kopier stilar", pasteStyles: "Lim inn stilar", stroke: "Strek", background: "Bakgrunn", fill: "Fyll", strokeWidth: "Strekbreidd", strokeStyle: "Strekstil", strokeStyle_solid: "Solid", strokeStyle_dashed: "Stipla", strokeStyle_dotted: "Prikka", sloppiness: "Ujamnheit", opacity: "Synlegheit", textAlign: "Tekstjustering", edges: "Kanter", sharp: "Skarp", round: "Rund", arrowheads: "Pilhovud", arrowhead_none: "Ingen", arrowhead_arrow: "Pil", arrowhead_bar: "Stolpe", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Trekant", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Skriftstorleik", fontFamily: "Skrifttype", addWatermark: "Legg til «Laga med Excalidraw»", handDrawn: "Handteikna", normal: "Normal", code: "Kode", small: "Liten", medium: "Medium", large: "Stor", veryLarge: "Svært stor", solid: "Solid", hachure: "Skravert", zigzag: "", crossHatch: "Krysskravert", thin: "Tynn", bold: "Tjukk", left: "Venstre", center: "Midstill", right: "Høgre", extraBold: "Ekstra tjukk", architect: "Arkitekt", artist: "Kunstnar", cartoonist: "Teiknar", fileTitle: "Filnamn", colorPicker: "Fargeveljar", canvasColors: "Brukt på lerretet", canvasBackground: "Lerretsbakgrunn", drawingCanvas: "Lerret", layers: "Lag", actions: "Handlingar", language: "Språk", liveCollaboration: "", duplicateSelection: "Dupliser", untitled: "Utan namn", name: "Namn", yourName: "Namnet ditt", madeWithExcalidraw: "Laga med Excalidraw", group: "Grupper utval", ungroup: "Avgrupper utval", collaborators: "Samarbeidarar", showGrid: "Vis rutenett", addToLibrary: "Legg til i bibliotek", removeFromLibrary: "Fjern frå bibliotek", libraryLoadingMessage: "Laster bibliotek…", libraries: "Blad gjennom bibliotek", loadingScene: "Laster scene…", align: "Juster", alignTop: "Juster til topp", alignBottom: "Juster til botn", alignLeft: "Juster til venstre", alignRight: "Juster til høgre", centerVertically: "Midtstill vertikalt", centerHorizontally: "Midtstill horisontalt", distributeHorizontally: "Sprei horisontalt", distributeVertically: "Sprei vertikalt", flipHorizontal: "Vipp vassrett", flipVertical: "Vipp loddrett", viewMode: "Visningsmodus", share: "Del", showStroke: "Vis fargeveljar for linjer", showBackground: "Vis fargeveljar for bakgrunn", toggleTheme: "Veksle tema", personalLib: "Personleg bibliotek", excalidrawLib: "Excalidraw-bibliotek", decreaseFontSize: "Gjer skriftstorleik mindre", increaseFontSize: "Gjer skriftstorleik større", unbindText: "Avbind tekst", bindText: "", createContainerFromText: "", link: { edit: "Rediger lenke", editEmbed: "", create: "Lag lenke", createEmbed: "", label: "Lenke", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "", unlock: "", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gP = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, tP = { clearReset: "Tilbakestill lerretet", exportJSON: "Eksporter til fil", exportImage: "", export: "", copyToClipboard: "Kopier til utklippstavla", save: "Lagre til noverande fil", saveAs: "Lagre som", load: "", getShareableLink: "Hent delingslenke", close: "Lukk", selectLanguage: "Vel språk", scrollBackToContent: "Skroll tilbake til innhald", zoomIn: "Zoom inn", zoomOut: "Zoom ut", resetZoom: "Nullstill zoom", menu: "Meny", done: "Ferdig", edit: "Rediger", undo: "Angre", redo: "Gjer om", resetLibrary: "Nullstill bibliotek", createNewRoom: "Lag nytt rom", fullScreen: "Fullskjerm", darkMode: "Mørk modus", lightMode: "Lys modus", zenMode: "Zen-modus", objectsSnapMode: "", exitZenMode: "Avslutt zen-modus", cancel: "Avbryt", clear: "Tøm", remove: "Fjern", embed: "", publishLibrary: "Publiser", submit: "Send inn", confirm: "Stadfest", embeddableInteractionButton: "" }, iP = { clearReset: "Dette vil tømme lerretet. Er du sikker?", couldNotCreateShareableLink: "Kunne ikkje lage delingslenke.", couldNotCreateShareableLinkTooBig: "Kunne ikkje opprette deleleg lenke: scena er for stor", couldNotLoadInvalidFile: "Kunne ikkje laste inn ugyldig fil", importBackendFailed: "Importering av backend feila.", cannotExportEmptyCanvas: "Kan ikkje eksportere eit tomt lerret.", couldNotCopyToClipboard: "", decryptFailed: "Kunne ikkje dekryptere data.", uploadedSecurly: "Opplastinga er kryptert og er ikkje mogleg å lese av Excalidraw-serveren eller tredjepartar.", loadSceneOverridePrompt: "Innlasting av ekstern teikning erstattar ditt eksisterande innhald. Ynskjer du å fortsette?", collabStopOverridePrompt: `Viss du avsluttar økta overskriv du den førre, lokalt lagra teikninga di. Er du sikker?

(Ønsker du å halde fram med denne? Då er det berre å lukke denne fana.)`, errorAddingToLibrary: "Kunne ikkje legge elementet i biblioteket", errorRemovingFromLibrary: "Kunne ikkje fjerne elementet frå biblioteket", confirmAddLibrary: "Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?", imageDoesNotContainScene: "Dette biletet ser ikkje ut til å ha noko scenedata. Har du skrutt på innbygging av scene medan eksporteringa heldt på?", cannotRestoreFromImage: "Scena kunne ikkje gjenopprettast frå denne biletfila", invalidSceneUrl: "Kunne ikkje hente noko scene frå den URL-en. Ho er anten øydelagd eller inneheld ikkje gyldig Excalidraw JSON-data.", resetLibrary: "Dette vil fjerne alt innhald frå biblioteket. Er du sikker?", removeItemsFromsLibrary: "Slette {{count}} element frå biblioteket?", invalidEncryptionKey: "Krypteringsnøkkelen må ha 22 teikn. Sanntidssamarbeid er deaktivert.", collabOfflineWarning: "" }, EP = { unsupportedFileType: "Filtypen er ikkje støtta.", imageInsertError: "Kunne ikkje sette inn biletet. Prøv igjen seinare...", fileTooBig: "Fila er for stor. Maksimal tillate storleik er {{maxSize}}.", svgImageInsertError: "Kunne ikkje sette inn SVG-biletet. SVG-koden ser ugyldig ut.", failedToFetchImage: "", invalidSVGString: "Ugyldig SVG.", cannotResolveCollabServer: "Kunne ikkje kople til samarbeidsserveren. Ver vennleg å oppdatere inn sida og prøv på nytt.", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aP = { selection: "Vel", image: "Sett in bilete", rectangle: "Rektangel", diamond: "Diamant", ellipse: "Ellipse", arrow: "Pil", line: "Linje", freedraw: "Teikn", text: "Tekst", library: "Bibliotek", lock: "Hald fram med valt verktøy", penMode: "", link: "Legg til/ oppdater lenke til valt figur", eraser: "Viskelêr", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IP = { canvasActions: "Handlingar: lerret", selectedShapeActions: "Handlingar: valt objekt", shapes: "Formar" }, oP = { canvasPanning: "", linearElement: "Klikk for å starte linje med fleire punkt, eller drag for ei enkel linje", freeDraw: "Klikk og drag, slepp når du er ferdig", text: "Tips: du kan òg leggje til tekst ved å dobbeltklikke kor som helst med utvalgsverktyet", embeddable: "", text_selected: "Dobbelklikk eller trykk ENTER for å redigere teksta", text_editing: "Trykk Escape eller CtrlOrCmd+ENTER for å fullføre redigeringa", linearElementMulti: "Klikk på siste punkt eller trykk Escape eller Enter for å fullføre", lockAngle: "Du kan begrense vinkelen ved å holde nede SKIFT", resize: `Du kan halde fram med forholdet ved å trykke SHIFT medan du endrar storleik,
trykk ALT for å endre storleiken frå midten`, resizeImage: `Du kan endre storleiken fritt ved å halde inne SHIFT,
hald ALT for å endre storleik frå sentrum`, rotate: "Du kan låse vinklane ved å halde SHIFT medan du roterer", lineEditor_info: "", lineEditor_pointSelected: `Trykk på Slett for å fjerne punkt(a),
Ctrl / Cmd+D for å duplisere, eller drag for å flytte`, lineEditor_nothingSelected: `Vel eit punkt å redigere (hald inne SHIFT for å velje fleire),
eller hald inne Alt og klikk for å legge til nye punkt`, placeImage: "Klikk for å plassere biletet, eller klikk og drag for å velje storleik manuelt", publishLibrary: "Publiser ditt eige bibliotek", bindTextToElement: "Trykk på enter for å legge til tekst", deepBoxSelect: "Hald inne Ctrl / Cmd for å velje djupt, og forhindre flytting", eraserRevert: "Hald inne Alt for å reversere markering av element for sletting", firefox_clipboard_write: "", disableSnapping: "" }, QP = { cannotShowPreview: "Kan ikkje vise førehandsvising", canvasTooBig: "Lerretet er mogleg for stort.", canvasTooBigTip: "Tips: prøv å flytte elementa som er lengst frå kvarandre, litt nærare kvarandre." }, nP = { headingMain: "Ein feil oppstod. Prøv <button>å laste sida på nytt.</button>", clearCanvasMessage: "Om ny sidelasting ikkje fungerer, prøv <button>å tømme lerretet.</button>", clearCanvasCaveat: " Dette vil føre til tap av arbeid ", trackedToSentry: "Feilen med identifikator {{eventId}} vart logga i systemet vårt.", openIssueMessage: "Vi er veldig nøye med å ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere å følge opp i <button>feilrapporteringssystemet vårt.</button> Ta med opplysingane nedanfor ved å kopiere og lime inn i GitHub-saka.", sceneContent: "Scene-innhald:" }, rP = { desc_intro: "Du kan invitere personar til scena di for å samarbeide med deg.", desc_privacy: "Ta det med ro; økta brukar ende-til-ende-kryptering, så alt du teiknar held fram med å vere privat. Ikkje ein gong serveren vår kan sjå kva du lagar.", button_startSession: "Start økt", button_stopSession: "Stopp økt", desc_inProgressIntro: "Sanntids-samarbeidsøkt er no i gang.", desc_shareLink: "Del denne lenka med dei du vil samarbeide med:", desc_exitSession: "Dersom du avsluttar økta blir du kopla frå rommet, men du kan halde fram med å arbeide med scena lokalt. Ver merksam på at dette ikkje vil påverke andre personar, og desse vil framleis ha moglegheit til å samarbeide på deira eigen versjon.", shareTitle: "Bli med på eit sanntidssamarbeid på Excalidraw" }, sP = { title: "Feil" }, lP = { disk_title: "Lagre til disk", disk_details: "Eksporter scenedataa til ei fil du kan importere seinare.", disk_button: "Lagre til fil", link_title: "Deleleg lenke", link_details: "Eksporter som skrivebeskytta lenke.", link_button: "Eksporter til lenke", excalidrawplus_description: "Lagre scena til Excalidraw+-arbeidsområdet ditt.", excalidrawplus_button: "Eksporter", excalidrawplus_exportError: "Kunne ikkje eksportere til Excalidraw+ akkurat no..." }, cP = { blog: "Les bloggen vår", click: "klikk", deepSelect: "Marker djupt", deepBoxSelect: "Marker djupt inni boksen og forhindr flytting", curvedArrow: "Boga pil", curvedLine: "Boga linje", documentation: "Dokumentasjon", doubleClick: "dobbelklikk", drag: "drag", editor: "Redigering", editLineArrowPoints: "", editText: "", github: "Funne eit problem? Send inn", howto: "Følg vegleiinga vår", or: "eller", preventBinding: "Hindre pilkopling", tools: "", shortcuts: "Tastatursnarvegar", textFinish: "Fullfør redigering (teksthandsamar)", textNewLine: "Legg til ny linje (teksthandsamar)", title: "Hjelp", view: "Vising", zoomToFit: "Zoom for å sjå alle elementa", zoomToSelection: "Zoom til utval", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dP = { title: "Tøm lerretet" }, DP = { title: "Publiser bibliotek", itemName: "Elementnamn", authorName: "Eigaren sitt namn", githubUsername: "GitHub-brukarnamn", twitterUsername: "Twitter-brukarnamn", libraryName: "Biblioteknamn", libraryDesc: "Bibliotekskildring", website: "Nettstad", placeholder: { authorName: "Namnet eller brukarnamnet ditt", libraryName: "Namnet på biblioteket ditt", libraryDesc: "Skildring av biblioteket ditt sånn at andre forstår bruken av det", githubHandle: "GitHub-brukarnamn (valfritt), slik at du kan redigere bibiloteket når det er sendt inn til vurdering", twitterHandle: "Twitter-brukarnamn (valfritt), så vi veit kven vi skal kreditere på Twitter", website: "Lenke til den personlege nettstaden din eller ein anna stad (valfritt)" }, errors: { required: "Kravt", website: "Fyll inn ein gyldig URL" }, noteDescription: "Send inn biblioteket ditt til inkludering i <link>den offentlege bibliotek-kjeldekoda</link>slik at andre kan bruke det i teikningane deira.", noteGuidelines: "Biblioteket må godkjennast manuelt fyrst. Ver vennleg å lese <link>retningslinjene</link> før du sender inn. Du kjem til å trenge ein GitHub-konto for å kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt.", noteLicense: "Ved å sende inn godkjenner du at biblioteket vert publisert under <link>MIT-lisensen, </link>som kort sagt betyr at kven som helst kan bruke det utan avgrensingar.", noteItems: "Kvart bibliotekselement må ha eit eige namn, slik at det er mogleg å filtrere. Dei følgande bibliotekselementa blir inkludert:", atleastOneLibItem: "Ver vennleg å markere minst eitt bibliotekselement for å starte", republishWarning: "" }, hP = { title: "Bibliotek innsendt", content: "Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr på status<link>her</link>" }, wP = { resetLibrary: "Tilbakestill bibliotek", removeItemsFromLib: "Fjern valde element frå biblioteket" }, FP = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, pP = { tooltip: "Teikningane dine er ende-til-ende-krypterte slik at Excalidraw sine serverar aldri får sjå dei.", link: "Blogginnlegg om ende-til-ende-kryptering i Excalidraw" }, mP = { angle: "Vinkel", element: "Element", elements: "Element", height: "Høgde", scene: "Scene", selected: "Valde", storage: "Lagring", title: "Statistikk for nerdar", total: "Totalt", version: "Versjon", versionCopy: "Klikk for å kopiere", versionNotAvailable: "Versjonen er ikkje tilgjengeleg", width: "Breidde" }, kP = { addedToLibrary: "Lagt til i bibliotek", copyStyles: "Kopierte stilane.", copyToClipboard: "Kopiert til utklippstavla.", copyToClipboardAsPng: `Kopierte {{exportSelection}} til utklippstavla som PNG
({{exportColorScheme}})`, fileSaved: "Fila er lagra.", fileSavedToFilename: "Lagra som {filename}", canvas: "lerret", selection: "val", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yP = { transparent: "Gjennomsiktig", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, bP = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, UP = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, GP = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fP = { title: "", button: "", description: "", syntax: "", preview: "" }, y7A = { labels: BP, library: gP, buttons: tP, alerts: iP, errors: EP, toolBar: aP, headings: IP, hints: oP, canvasError: QP, errorSplash: nP, roomDialog: rP, errorDialog: sP, exportDialog: lP, helpDialog: cP, clearCanvasDialog: dP, publishDialog: DP, publishSuccessDialog: hP, confirmDialog: wP, imageExportDialog: FP, encrypted: pP, stats: mP, toast: kP, colors: yP, welcomeScreen: bP, colorPicker: UP, overwriteConfirm: GP, mermaid: fP };
const b7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iP,
  buttons: tP,
  canvasError: QP,
  clearCanvasDialog: dP,
  colorPicker: UP,
  colors: yP,
  confirmDialog: wP,
  default: y7A,
  encrypted: pP,
  errorDialog: sP,
  errorSplash: nP,
  errors: EP,
  exportDialog: lP,
  headings: IP,
  helpDialog: cP,
  hints: oP,
  imageExportDialog: FP,
  labels: BP,
  library: gP,
  mermaid: fP,
  overwriteConfirm: GP,
  publishDialog: DP,
  publishSuccessDialog: hP,
  roomDialog: rP,
  stats: mP,
  toast: kP,
  toolBar: aP,
  welcomeScreen: bP
}, Symbol.toStringTag, { value: "Module" }));
var LP = { paste: "Pegar", pasteAsPlaintext: "Pegar en tèxt brut", pasteCharts: "Pegar los grafics", selectAll: "Tot seleccionar", multiSelect: "Apondre un element a la seleccion", moveCanvas: "Desplaçar lo canabàs", cut: "Talhar", copy: "Copiar", copyAsPng: "Copiar al quichapapièrs coma PNG", copyAsSvg: "Copiar al quichapapièrs coma SVG", copyText: "Copiar al quichapapièrs coma tèxt", copySource: "", convertToCode: "", bringForward: "En avant", sendToBack: "En arrièr", bringToFront: "A l’endavant", sendBackward: "Endarrièr", delete: "Suprimir", copyStyles: "Copiar los estiles", pasteStyles: "Pegar los estils", stroke: "Contorn", background: "Rèireplan", fill: "Empliment", strokeWidth: "Largor de contorn", strokeStyle: "Estil de contorn", strokeStyle_solid: "Solide", strokeStyle_dashed: "Tiret", strokeStyle_dotted: "Puntilhat", sloppiness: "Estil de traça", opacity: "Opacitat", textAlign: "Alinhament tèxt", edges: "Angles", sharp: "Ponchut", round: "Arredonit", arrowheads: "Cap de la flècha", arrowhead_none: "Cap", arrowhead_arrow: "Sageta", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Triangle", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Talha polissa", fontFamily: "Familha de polissa", addWatermark: "Apondre « Fabricat amb Excalidraw »", handDrawn: "A la man levada", normal: "Normala", code: "Còdi", small: "Pichona", medium: "Mejana", large: "Granda", veryLarge: "Gradassa", solid: "Solide", hachure: "Raia", zigzag: "Zigzag", crossHatch: "Raia crosada", thin: "Fin", bold: "Espés", left: "Esquèrra", center: "Centre", right: "Drecha", extraBold: "Espesàs", architect: "Arquitècte", artist: "Artista", cartoonist: "Dessenhaire", fileTitle: "Nom del fichièr", colorPicker: "Selector de color", canvasColors: "Utilizada suls canabassses", canvasBackground: "Rèireplan del canabàs", drawingCanvas: "Zòna de dessenh", layers: "Calques", actions: "Accions", language: "Lenga", liveCollaboration: "Collaboracion en dirèct...", duplicateSelection: "Duplicar", untitled: "Sens títol", name: "Nom", yourName: "Vòstre nom", madeWithExcalidraw: "Fabricat amb Excalidraw", group: "Gropar la seleccion", ungroup: "Desunir la seleccion", collaborators: "Collaborators", showGrid: "Afichar la gresilha", addToLibrary: "Apondre a la bibliotèca", removeFromLibrary: "Suprimir de la bibliotèca", libraryLoadingMessage: "Cargament de la bibliotèca…", libraries: "Percórrer las bibliotècas", loadingScene: "Cargament de la scèna…", align: "Alinhament", alignTop: "Alinhar ennaut", alignBottom: "Alinhar enbàs", alignLeft: "Alinhar a esquèrra", alignRight: "Alinhar a drecha", centerVertically: "Centrar verticalament", centerHorizontally: "Centrar orizontalament", distributeHorizontally: "Distribuir orizontalament", distributeVertically: "Distribuir verticalament", flipHorizontal: "Virar orizontalament", flipVertical: "Virar verticalament", viewMode: "Mòde de vista", share: "Partejar", showStroke: "Mostrar lo selector de color de contorn", showBackground: "Mostrar lo selector de color de fons", toggleTheme: "Alternar tèma", personalLib: "Bibliotèca personala", excalidrawLib: "Bibliotèca Excalidraw", decreaseFontSize: "Reduire talha polissa", increaseFontSize: "Aumentar talha polissa", unbindText: "Dessociar lo tèxte", bindText: "Ligar lo tèxt al contenidor", createContainerFromText: "Envelopar lo tèxte dins un contenedor", link: { edit: "Modificar lo ligam", editEmbed: "Modificar lo ligam e l’integracion", create: "Crear un ligam", createEmbed: "Crear un ligam e son integracion", label: "Ligam", labelEmbed: "Ligam e integracion", empty: "Cap de ligam pas definit" }, lineEditor: { edit: "Modificar la linha", exit: "Sortir de l’editor de linha" }, elementLock: { lock: "Verrolhar", unlock: "Desverrolhar", lockAll: "Tot verrolhar", unlockAll: "Tot desverrolhar" }, statusPublished: "Publicat", sidebarLock: "Gardar la barra laterala dobèrta", selectAllElementsInFrame: "Seleccionar totes los elements del quadre", removeAllElementsFromFrame: "Tirar totes los elements d’al quadre", eyeDropper: "Prendre la color a partir d’un canabàs", textToDiagram: "", prompt: "" }, xP = { noItems: "Cap d’element pas encara apondut...", hint_emptyLibrary: "Seleccionatz un element d’apondre aquí, o installatz una bibliotèca del depaus public, çai-jos.", hint_emptyPrivateLibrary: "Seleccionatz un element d’apondre aquí pel canabàs." }, SP = { clearReset: "Reïnicializar lo canabàs", exportJSON: "Exportar en fichièr", exportImage: "Exportar imatges...", export: "Enregistrar dins...", copyToClipboard: "Copiar al quichapapièrs", save: "Salvar al fichièr actual", saveAs: "Enregistrar jos", load: "Dobrir", getShareableLink: "Obténer lo ligam de partatge", close: "Tampar", selectLanguage: "Causir una lenga", scrollBackToContent: "Tornar al contengut", zoomIn: "Zoom avant", zoomOut: "Zoom arrièr", resetZoom: "Tirar lo zoom", menu: "Menú", done: "Acabat", edit: "Modificar", undo: "Anullar", redo: "Restablir", resetLibrary: "Reïnicializar la bibliotèca", createNewRoom: "Crear sala novèla", fullScreen: "Ecran complèt", darkMode: "Mòde escur", lightMode: "Mòde clar", zenMode: "Mòde escur", objectsSnapMode: "Ancorar als objèctes", exitZenMode: "Sortir del mòde zen", cancel: "Anullar", clear: "Escafar", remove: "Tirar", embed: "Alternar l’integracion", publishLibrary: "Publicar", submit: "Enviar", confirm: "Confirmar", embeddableInteractionButton: "Clicar per interagir" }, NP = { clearReset: "Aquò suprimirà lo canabàs complèt. O volètz vertadièrament ?", couldNotCreateShareableLink: "Creacion impossibla del ligam de partatge.", couldNotCreateShareableLinkTooBig: "Creacion impossibla del ligam de partatge : la scèna es tròp granda", couldNotLoadInvalidFile: "Cargament impossible d’un fichièr invalid", importBackendFailed: "Importacion fracassada.", cannotExportEmptyCanvas: "Impossible d’exportar los canabasses voids.", couldNotCopyToClipboard: "Còpia impossibla al quichapapièrs.", decryptFailed: "Deschiframent impossible de las donadas.", uploadedSecurly: "Lo telecargament es estat securizat amb un chiframent del cap a la fin, significa que los servidors d’Excalidraw o que quina tèrça part que siá pòdon pas legir lo contengut.", loadSceneOverridePrompt: "Cargar un dessenh extèrn remplaçarà vòstre contengut existent. Volètz contunhar ?", collabStopOverridePrompt: `Arrestar la session remplaçarà vòstre precedent dessenh gardat localament. O volètz vertadièrament ?

(Se volètz gardar vòstre dessenh local, tampatz simplament l’onglet del navegador a la plaça)`, errorAddingToLibrary: "Apondon impossible de l’element a la bibliotèca", errorRemovingFromLibrary: "Supression impossibla de l’element a la bibliotèca", confirmAddLibrary: "Apondrà {{numShapes}} forma(s) a vòstra bibliotèca. Confirmatz ?", imageDoesNotContainScene: "Aqueste imatge sembla pas conténer cap de donadas de scèna. Avètz activat l’integracion de scèna pendent l’exportacion ?", cannotRestoreFromImage: "Restauracion impossibla de la scèna a partir del fichièr imatge", invalidSceneUrl: "Importacion impossibla de la scèna a partir de l’URL provesida. Es siá mal formatada o siá conten pas cap de donada JSON Excalidraw valida.", resetLibrary: "Aquò suprimirà vòstra bibliotèca. O volètz vertadièrament ?", removeItemsFromsLibrary: "Suprimir {{count}} element(s) de la bibliotèca ?", invalidEncryptionKey: "La clau de chiframent deu conténer 22 caractèrs. La collaboracion en dirèct es desactivada.", collabOfflineWarning: `Cap de connexion pas disponibla.
Vòstras modificacions seràn pas salvadas !` }, RP = { unsupportedFileType: "Tipe de fichièr pas pres en carga.", imageInsertError: "Insercion d’imatge impossibla. Tornatz ensajar mai tard...", fileTooBig: "Fichièr tròp pesuc. La talha maximala autorizada es {{maxSize}}.", svgImageInsertError: "Insercion d’imatge SVG impossibla. Las balisas SVG semblan invalidas.", failedToFetchImage: "Fracàs de la recuperacion de l’imatge.", invalidSVGString: "SVG invalid.", cannotResolveCollabServer: "Connexion impossibla al servidor collab. Mercés de recargar la pagina e tornar ensajar.", importLibraryError: "Impossible de cargar la bibliotèca", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "Empegatge impossible (lectura impossibla a partir del quichapapièrs).", asyncPasteFailedOnParse: "Empegatge impossible.", copyToSystemClipboardFailed: "Còpia impossibla al quichapapièrs." }, MP = { selection: "Seleccion", image: "Inserir imatge", rectangle: "Rectangle", diamond: "Lausange", ellipse: "Ellipsa", arrow: "Sageta", line: "Linha", freedraw: "Dessenhar", text: "Tèxt", library: "Bibliotèca", lock: "Mantenir activa l’aisina aprèp dessenhar", penMode: "Mòde estilo - empachar lo contact", link: "Apondre/Actualizar lo ligam per una fòrma seleccionada", eraser: "Goma", frame: "Esplech quadre", magicframe: "", embeddable: "Integracion Web", laser: "Puntador laser", hand: "Man (aisina de desplaçament de la vista)", extraTools: "Mai d’aisinas", mermaidToExcalidraw: "De Mermaid cap a Excalidraw", magicSettings: "" }, YP = { canvasActions: "Accions del canabàs", selectedShapeActions: "Accions per la forma seleccionada", shapes: "Formas" }, vP = { canvasPanning: "", linearElement: "Clicatz per començar mantun punt, lisatz per una sola linha", freeDraw: "Clicatz e lisatz, relargatz un còp acabat", text: "Astúcia : podètz tanben apondre de tèxt en doble clicant ont que siá amb l’aisina de seleccion", embeddable: "", text_selected: "Clicatz dos còps o quichatz ENTRADA per modificar lo tèxt", text_editing: "Quichatz ESCAPAR o CtrlOrCmd+ENTRADA per acabar la modificacion", linearElementMulti: "Clicatz sul darrièr punt o quichatz Ecap o Entrada per acabar", lockAngle: "Podètz restrénger l’angle en mantenent MAJ", resize: `Podètz servar las proporcions en mantenent la tòca MAJ pendent lo redimensionament,
mantenètz la tòca ALT per redimensionar a partir del centre`, resizeImage: `Podètz retalhar liurament en quichant CTRL,
quichatz ALT per retalhar a partir del centre`, rotate: "Podètz restrénger los angles en mantenent MAJ pendent la rotacion", lineEditor_info: "Tenètz quichat Ctrl o Cmd e doble clic o quichatz Ctrl o Cmd + Entrada per modificar los ponches", lineEditor_pointSelected: `Quichar Suprimir per tirar lo(s) punt(s),
CtrlOCmd+D per duplicar, o lisatz per desplaçar`, lineEditor_nothingSelected: `Seleccionar un punt d’editar (manténer Maj. per ne seleccionar mantun),
o manténer Alt e clicar per n’apondre de novèls`, placeImage: "Clicatz per plaçar l’imatge, o clicatz e lisatz per definir sa talha manualament", publishLibrary: "Publicar vòstra pròpria bibliotèca", bindTextToElement: "Quichatz Entrada per apondre de tèxte", deepBoxSelect: "Gardar CtrlOCmd per una seleccion gropada e empachar lo desplaçament", eraserRevert: "Tenètz quichat Alt per anullar los elements marcats per supression", firefox_clipboard_write: "", disableSnapping: "" }, HP = { cannotShowPreview: "Afichatge impossible de l’apercebut", canvasTooBig: "Lo canabàs pòt èsser tròp grand.", canvasTooBigTip: "Astúcia : ensajatz de sarrar los elements mai alonhats." }, KP = { headingMain: "Una error s’es producha. Ensajatz <button>recargament de la pagina.</button>", clearCanvasMessage: "Se recargar fonciona pas, ensajatz <button>d’escafar los canabasses.</button>", clearCanvasCaveat: " Menarà a una pèrda del trabalh ", trackedToSentry: "Error amb l’identificant {{eventId}} es estada enregistrada sus nòstre sistèma.", openIssueMessage: "Èrem plan prudents per inclure pas d’informacions de la scèna vòstra sus l’error. Se vòstra scèna es pas privada, volgatz considerar de perseguir sus nòstre <button>traçadors d’avarias.</button> Volgatz inclure las informacions çai-jos en las copiant e pegant a l’issue GitHub.", sceneContent: "Contengut de la scèna :" }, JP = { desc_intro: "Podètz convidar lo monde a vòstra scèna actuala per participar amb vos.", desc_privacy: "Vos en fagatz pas, la session utiliza lo chiframent del cap a la fin, çò que dessenetz demorarà privat. Mai nòstres servidors poiràn pas veire vòstra creacion.", button_startSession: "Començar la session", button_stopSession: "Arrestar la session", desc_inProgressIntro: "La session de collaboracion es ara en cors.", desc_shareLink: "Partejatz aqueste ligam amb lo monde amb qui volètz collaborar :", desc_exitSession: "Arrestar la session vos desconnectarà de la sala, mas poiretz contunhar de trabalhar a la scèna, en local. Notatz qu’aquò afectarà pas los autres, e poiràn collaborar a lor version.", shareTitle: "Rejonhètz una session collaborativa sus Excalidraw" }, ZP = { title: "Error" }, qP = { disk_title: "Salvar al disc", disk_details: "Exportar las donadas de la scèna cap a un fichièr que podètz importar mai tard.", disk_button: "Salvar al fichièr", link_title: "Ligam de partejar", link_details: "Exportar coma un ligam de lectura sola.", link_button: "Exportar en ligam", excalidrawplus_description: "Enregistrar la scèna dins vòstre espaci de trabalh Excalidraw+.", excalidrawplus_button: "Exportar", excalidrawplus_exportError: "Export impossibla cap a Excalidraw+ pel moment..." }, WP = { blog: "Legir nòstre blog", click: "clic", deepSelect: "Seleccion prigonda", deepBoxSelect: "Seleccionar demest un grop e empacha lo desplaçament", curvedArrow: "Sageta corba", curvedLine: "Linha corba", documentation: "Documentacion", doubleClick: "doble clic", drag: "lisar", editor: "Editor", editLineArrowPoints: "", editText: "Modificar lo tèxte / apondre etiqueta", github: "Problèma trobat ? Senhalatz-lo", howto: "Seguissètz nòstras guidas", or: "o", preventBinding: "Empachar la fixacion de sagetas", tools: "Aisinas", shortcuts: "Acorchis clavièr", textFinish: "Terminar l’edicion (editor de tèxt)", textNewLine: "Apondre linha novèl (editor de tèxt)", title: "Ajuda", view: "Vista", zoomToFit: "Zoomar per veire totes los elements", zoomToSelection: "Zoomar la seleccion", toggleElementLock: "Verrolhar/Desverrolhar la seleccion", movePageUpDown: "Desplaçar la pagina ennaut/enbàs", movePageLeftRight: "Desplaçar la pagina a esquèrra/drecha" }, jP = { title: "Escafar canabàs" }, TP = { title: "Publicar la bibliotèca", itemName: "Nom de l’element", authorName: "Nom de l’autor", githubUsername: "Nom d’utilizaire GitHub", twitterUsername: "Nom d’utilizaire Twitter", libraryName: "Nom de la bibliotèca", libraryDesc: "Descripcion de la bibliotèca", website: "Site web", placeholder: { authorName: "Vòstre nom o nom d’utilizaire", libraryName: "Nom de vòstra bibliotèca", libraryDesc: "Descripcion de vòstra bibliotèca per ajudar lo monde a comprendre son utilizacion", githubHandle: "GitHub handle(opcional), per poder modificar la bibliotèca un còp enviada per repassa", twitterHandle: "Nom d’utilizaire Twitter (opcional), per saber qual mercejar quand ne parlam sus Twitter", website: "Ligam cap a vòstre site web personal o endacòm mai (opcional)" }, errors: { required: "Requerit", website: "Picatz una URL valida" }, noteDescription: "Enviatz vòstra bibliotèca per èsser compresa al <link>repertòri public de bibliotèca</link>per que los autres l’utilizen dins lor dessenhs.", noteGuidelines: "Qualqu’un deu aprovar la bibliotèca manualament per començar. Volgatz legir las <link>linhas directrises</link> abans de sometre. Vos farà mestièr un compte GitHub per comunicar e realizar de modificacions se demandadas, mas es pas complètament obligatòri.", noteLicense: "En sometent, acceptatz que la bibliotèca siá publicada sota la <link>Licéncia MIT, </link>que significa en brèu que qual que siá pòt l’utilizar sens cap de restriccion.", noteItems: "Cada element de bibliotèca deu aver un nom pròpri per èsser filtrable. Los elements de bibliotèca seguentas seràn incluses :", atleastOneLibItem: "Volgatz seleccionar almens un element de bibliotèca per començar", republishWarning: "Nòta : d’unes elements seleccionats son marcats ja coma publicats/enviats. Deuriatz sonque tornar enviar los elements pendent l’actualizacion d’una bibliotèca existenta o un mandadís." }, zP = { title: "Bibliotèca somesa", content: "Mercés {{authorName}}. Vòstre bibliotèca es estada somesa per repassa. Podètz seguir l’avançament<link>aquí</link>" }, PP = { resetLibrary: "Reïnicializar la bibliotèca", removeItemsFromLib: "Tirar los elements seleccionats de la bibliotèca" }, OP = { header: "Exportar imatges", label: { withBackground: "Rèireplan", onlySelected: "Seleccion sonque", darkMode: "Mòde escur", embedScene: "Embarcar la scèna", scale: "Escala", padding: "Espaçament" }, tooltip: { embedScene: "" }, title: { exportToPng: "Exportar en PNG", exportToSvg: "Exportar en SVG", copyPngToClipboard: "Copiar PNG al quichapapièrs" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copiar al quichapapièrs" } }, VP = { tooltip: "Vòstres dessenhs son chifrats del cap a la fin en consequéncia los servidors d’Excalidraw los veiràn pas jamai.", link: "Article de blòg sul chiframent del cap a la fin dins Excalidraw" }, XP = { angle: "Angle", element: "Element", elements: "Elements", height: "Nautor", scene: "Scèna", selected: "Seleccionat", storage: "Emmagazinatge", title: "Estatisticas pels nerds", total: "Total", version: "Version", versionCopy: "Clicar per copiar", versionNotAvailable: "Version pas disponibla", width: "Largor" }, _P = { addedToLibrary: "Apondut a la bibliotèca", copyStyles: "Estiles copiats.", copyToClipboard: "Copiats al quichapapièrs.", copyToClipboardAsPng: "{{exportSelection}} copiat coma PNG ({{exportColorScheme}})", fileSaved: "Fichièr enregistrat.", fileSavedToFilename: "Enregistrat jos {filename}", canvas: "canabàs", selection: "seleccion", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, $P = { transparent: "Transparéncia", black: "Negre", white: "Blanc", red: "Roge", pink: "Ròse", grape: "Bordèu", violet: "Violet", gray: "Gris", blue: "Blau", cyan: "Cian", teal: "Sarcèla", green: "Verd", yellow: "Jaune", orange: "Irange", bronze: "Bronze" }, AO = { app: { center_heading: "Totas las donadas son enregistradas dins vòstre navegador.", center_heading_plus: "Voliatz puslèu utilizar Excalidraw+ a la plaça ?", menuHint: "Exportar, preferéncias, lengas, ..." }, defaults: { menuHint: "Exportar, preferéncias, e mai...", center_heading: "Diagram. Tot. Simplament.", toolbarHint: "Prenètz un esplech e començatz de dessenhar !", helpHint: "Acorchis e ajuda" } }, uO = { mostUsedCustomColors: "Colors personalizadas mai utilizadas", colors: "Colors", shades: "Nuanças", hexCode: "Còdi exadecimal", noShades: "Cap de nuança pas disponibla per aquesta color" }, eO = { action: { exportToImage: { title: "Exportar coma imatge", button: "Exportar coma imatge", description: "" }, saveToDisk: { title: "Salvar al disc", button: "Salvar al disc", description: "Exportar las donadas de la scèna cap a un fichièr que podètz importar mai tard." }, excalidrawPlus: { title: "Excalidraw+", button: "Exportar dins Excalidraw+", description: "Enregistrar la scèna dins vòstre espaci de trabalh Excalidraw+." } }, modal: { loadFromFile: { title: "Cargar d’un fichièr", button: "Cargar d’un fichièr", description: "" }, shareableLink: { title: "Cargar d’un ligam", button: "Remplaçar mon contengut", description: "" } } }, CO = { title: "De Mermaid cap a Excalidraw", button: "Inserir", description: "", syntax: "Sintaxi Mermaid", preview: "Apercebut" }, U7A = { labels: LP, library: xP, buttons: SP, alerts: NP, errors: RP, toolBar: MP, headings: YP, hints: vP, canvasError: HP, errorSplash: KP, roomDialog: JP, errorDialog: ZP, exportDialog: qP, helpDialog: WP, clearCanvasDialog: jP, publishDialog: TP, publishSuccessDialog: zP, confirmDialog: PP, imageExportDialog: OP, encrypted: VP, stats: XP, toast: _P, colors: $P, welcomeScreen: AO, colorPicker: uO, overwriteConfirm: eO, mermaid: CO };
const G7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NP,
  buttons: SP,
  canvasError: HP,
  clearCanvasDialog: jP,
  colorPicker: uO,
  colors: $P,
  confirmDialog: PP,
  default: U7A,
  encrypted: VP,
  errorDialog: ZP,
  errorSplash: KP,
  errors: RP,
  exportDialog: qP,
  headings: YP,
  helpDialog: WP,
  hints: vP,
  imageExportDialog: OP,
  labels: LP,
  library: xP,
  mermaid: CO,
  overwriteConfirm: eO,
  publishDialog: TP,
  publishSuccessDialog: zP,
  roomDialog: JP,
  stats: XP,
  toast: _P,
  toolBar: MP,
  welcomeScreen: AO
}, Symbol.toStringTag, { value: "Module" }));
var BO = { paste: "ਪੇਸਟ ਕਰੋ", pasteAsPlaintext: "ਸਾਦੇ ਪਾਠ ਵਜੋਂ ਪੇਸਟ ਕਰੋ", pasteCharts: "ਚਾਰਟ ਪੇਸਟ ਕਰੋ", selectAll: "ਸਾਰੇ ਚੁਣੋ", multiSelect: "ਐਲੀਮੈਂਟ ਨੂੰ ਚੋਣ ਵਿੱਚ ਜੋੜੋ", moveCanvas: "ਕੈਨਵਸ ਹਿਲਾਓ", cut: "ਕੱਟੋ", copy: "ਕਾਪੀ ਕਰੋ", copyAsPng: "ਕਲਿੱਪਬੋਰਡ 'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕਰੋ", copyAsSvg: "ਕਲਿੱਪਬੋਰਡ 'ਤੇ SVG ਵਜੋਂ ਕਾਪੀ ਕਰੋ", copyText: "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਪਾਠ ਵਜੋਂ ਕਾਪੀ ਕਰੋ", copySource: "", convertToCode: "", bringForward: "ਅੱਗੇ ਲਿਆਓ", sendToBack: "ਸਭ ਤੋਂ ਪਿੱਛੇ ਭੇਜੋ", bringToFront: "ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ", sendBackward: "ਪਿੱਛੇ ਭੇਜੋ", delete: "ਮਿਟਾਓ", copyStyles: "ਸਟਾਇਲ ਕਾਪੀ ਕਰੋ", pasteStyles: "ਸਟਾਇਲ ਪੇਸਟ ਕਰੋ", stroke: "ਰੇਖਾ", background: "ਬੈਕਗਰਾਉਂਡ", fill: "ਭਰਨਾ", strokeWidth: "ਰੇਖਾ ਦੀ ਚੌੜਾਈ", strokeStyle: "ਰੇਖਾ ਦਾ ਸਟਾਇਲ", strokeStyle_solid: "ਠੋਸ", strokeStyle_dashed: "ਡੈਸ਼ ਵਾਲੀ", strokeStyle_dotted: "ਬਿੰਦੀਆਂ ਵਾਲੀ", sloppiness: "ਬੇਤਰਤੀਬੀ", opacity: "ਅਪਾਰਦਰਸ਼ਤਾ", textAlign: "ਲਿਖਤ ਇਕਸਾਰਤਾ", edges: "ਕਿਨਾਰੇ", sharp: "ਤਿੱਖੇ", round: "ਗੋਲ", arrowheads: "ਤੀਰ ਦੇ ਸਿਰੇ", arrowhead_none: "ਕੋਈ ਨਹੀਂ", arrowhead_arrow: "ਤੀਰ", arrowhead_bar: "ਡੰਡੀ", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "ਤਿਕੋਣ", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "ਫੌਂਟ ਅਕਾਰ", fontFamily: "ਫੌਂਟ ਪਰਿਵਾਰ", addWatermark: '"Excalidraw ਨਾਲ ਬਣਾਇਆ" ਜੋੜੋ', handDrawn: "ਹੱਥਲਿਖਤ", normal: "ਆਮ", code: "ਕੋਡ", small: "ਛੋਟਾ", medium: "ਮੱਧਮ", large: "ਵੱਡਾ", veryLarge: "ਬਹੁਤ ਵੱਡਾ", solid: "ਠੋਸ", hachure: "ਤਿਰਛੀਆਂ ਗਰਿੱਲਾਂ", zigzag: "ਵਿੰਗ-ਤੜਿੰਗ", crossHatch: "ਜਾਲੀ", thin: "ਪਤਲੀ", bold: "ਮੋਟੀ", left: "ਖੱਬੇ", center: "ਵਿਚਕਾਰ", right: "ਸੱਜੇ", extraBold: "ਬਹੁਤ ਮੋਟੀ", architect: "ਭਵਨ ਨਿਰਮਾਣਕਾਰੀ", artist: "ਕਲਾਕਾਰ", cartoonist: "ਕਾਰਟੂਨਿਸਟ", fileTitle: "ਫਾਈਲ ਦਾ ਨਾਂ", colorPicker: "ਰੰਗ ਚੋਣਕਾਰ", canvasColors: "ਕੈਨਵਸ 'ਤੇ ਵਰਤਿਆ", canvasBackground: "ਕੈਨਵਸ ਦਾ ਬੈਕਗਰਾਉਂਡ", drawingCanvas: "ਡਰਾਇੰਗ ਕੈਨਵਸ", layers: "ਪਰਤਾਂ", actions: "ਕਾਰਵਾਈਆਂ", language: "ਭਾਸ਼ਾ", liveCollaboration: "ਲਾਇਵ ਸਹਿਯੋਗ...", duplicateSelection: "ਡੁਪਲੀਕੇਟ ਬਣਾਓ", untitled: "ਬੇ-ਸਿਰਨਾਵਾਂ", name: "ਨਾਂ", yourName: "ਤੁਹਾਡਾ ਨਾਂ", madeWithExcalidraw: "Excalidraw ਨਾਲ ਬਣਾਇਆ", group: "ਚੋਣ ਦਾ ਗਰੁੱਪ ਬਣਾਓ", ungroup: "ਚੋਣ ਦਾ ਗਰੁੱਪ ਤੋੜੋ", collaborators: "ਸਹਿਯੋਗੀ", showGrid: "ਜਾਲੀ ਦਿਖਾਓ", addToLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜੋ", removeFromLibrary: "ਲਾਇਬ੍ਰੇਰੀ 'ਚੋਂ ਹਟਾਓ", libraryLoadingMessage: "ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…", libraries: "ਲਾਇਬ੍ਰੇਰੀਆਂ ਬਰਾਉਜ਼ ਕਰੋ", loadingScene: "ਦ੍ਰਿਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…", align: "ਇਕਸਾਰ", alignTop: "ਉੱਪਰ ਇਕਸਾਰ ਕਰੋ", alignBottom: "ਹੇਠਾਂ ਇਕਸਾਰ ਕਰੋ", alignLeft: "ਖੱਬੇ ਇਕਸਾਰ ਕਰੋ", alignRight: "ਸੱਜੇ ਇਕਸਾਰ ਕਰੋ", centerVertically: "ਲੇਟਵੇਂ ਵਿਚਕਾਰ ਕਰੋ", centerHorizontally: "ਖੜ੍ਹਵੇਂ ਵਿਚਕਾਰ ਕਰੋ", distributeHorizontally: "ਖੜ੍ਹਵੇਂ ਇਕਸਾਰ ਵੰਡੋ", distributeVertically: "ਲੇਟਵੇਂ ਇਕਸਾਰ ਵੰਡੋ", flipHorizontal: "ਲੇਟਵੇਂ ਪਾਸੇ ਪਲਟੋ", flipVertical: "ਖੜ੍ਹਵੇਂ ਪਾਸੇ ਪਲਟੋ", viewMode: "ਦੇਖਣ ਵਾਲਾ ਮੋਡ", share: "ਸਾਂਝਾ ਕਰੋ", showStroke: "ਰੇਖਾ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ", showBackground: "ਬੈਕਗਰਾਉਂਡ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ", toggleTheme: "ਥੀਮ ਬਦਲੋ", personalLib: "ਨਿੱਜੀ ਲਾਇਬ੍ਰੇਰੀ", excalidrawLib: "ਐਕਸਕਲੀਡਰਾਅ ਲਾਇਬ੍ਰੇਰੀ", decreaseFontSize: "ਫੌਂਟ ਦਾ ਅਕਾਰ ਘਟਾਓ", increaseFontSize: "ਫੌਂਟ ਦਾ ਅਕਾਰ ਵਧਾਓ", unbindText: "ਪਾਠ ਨੂੰ ਵੱਖ ਕਰੋ", bindText: "ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਨਾਲ ਬੰਨ੍ਹੋ", createContainerFromText: "ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਇਕੱਠਾ ਕਰੋ", link: { edit: "ਕੜੀ ਸੋਧੋ", editEmbed: "", create: "ਕੜੀ ਬਣਾਓ", createEmbed: "", label: "ਕੜੀ", labelEmbed: "", empty: "" }, lineEditor: { edit: "ਪੰਕਤੀ ਸੋਧੋ", exit: "ਪੰਕਤੀ ਸੋਧਕ 'ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" }, elementLock: { lock: "ਲਾਕ ਕਰੋ", unlock: "ਅਨਲਾਕ ਕਰੋ", lockAll: "ਸਭ ਲਾਕ ਕਰੋ", unlockAll: "ਸਭ ਅਨਲਾਕ ਕਰੋ" }, statusPublished: "ਪ੍ਰਕਾਸ਼ਤ ਹੈ", sidebarLock: "ਸਾਈਡਬਾਰ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖੋ", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, gO = { noItems: "ਹਾਲੇ ਤੱਕ ਕੋਈ ਚੀਜ ਜੋੜੀ ਨਹੀਂ ਗਈ...", hint_emptyLibrary: "ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ, ਜਾਂ ਹੇਠਾਂ ਪਬਲਿਕ ਰਿਪਾਜ਼ੀਟਰੀ ‘ਚੋਂ ਲਾਇਬ੍ਰੇਰੀ ਸਥਾਪਤ ਕਰੋ।", hint_emptyPrivateLibrary: "ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ।" }, tO = { clearReset: "ਕੈਨਵਸ ਰੀਸੈੱਟ ਕਰੋ", exportJSON: "ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", exportImage: "ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ...", export: "ਇਸ ਵਿੱਚ ਸਾਂਭੋ...", copyToClipboard: "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ", save: "ਮੌਜੂਦਾ ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ", saveAs: "ਇਸ ਵਜੋਂ ਸਾਂਭੋ", load: "ਖੋਲ੍ਹੋ", getShareableLink: "ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਲਵੋ", close: "ਬੰਦ ਕਰੋ", selectLanguage: "ਭਾਸ਼ਾ ਚੁਣੋ", scrollBackToContent: "ਸਮੱਗਰੀ 'ਤੇ ਵਾਪਸ ਸਕਰੋਲ ਕਰੋ", zoomIn: "ਜ਼ੂਮ ਵਧਾਓ", zoomOut: "ਜ਼ੂਮ ਘਟਾਓ", resetZoom: "ਜ਼ੂਮ ਰੀਸੈੱਟ ਕਰੋ", menu: "ਮੇਨੂ", done: "ਹੋ ਗਿਆ", edit: "ਸੋਧੋ", undo: "ਅਣਕੀਤਾ ਕਰੋ", redo: "ਮੁੜ-ਕਰੋ", resetLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ", createNewRoom: "ਨਵਾਂ ਕਮਰਾ ਬਣਾਓ", fullScreen: "ਪੂਰੀ ਸਕਰੀਨ", darkMode: "ਡਾਰਕ ਮੋਡ", lightMode: "ਲਾਇਟ ਮੋਡ", zenMode: "ਜ਼ੈੱਨ ਮੋਡ", objectsSnapMode: "", exitZenMode: "ਜ਼ੈੱਨ ਮੋਡ 'ਚੋਂ ਬਾਹਰ ਨਿਕਲੋ", cancel: "ਰੱਦ ਕਰੋ", clear: "ਸਾਫ਼ ਕਰੋ", remove: "ਹਟਾਓ", embed: "", publishLibrary: "ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ", submit: "ਜਮ੍ਹਾ ਕਰਵਾਓ", confirm: "ਪੁਸ਼ਟੀ ਕਰੋ", embeddableInteractionButton: "" }, iO = { clearReset: "ਇਹ ਸਾਰਾ ਕੈਨਵਸ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", couldNotCreateShareableLink: "ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ।", couldNotCreateShareableLinkTooBig: "ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ: ਦ੍ਰਿਸ਼ ਬਹੁਤ ਵੱਡਾ ਹੈ", couldNotLoadInvalidFile: "ਨਜਾਇਜ਼ ਫਾਈਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕੇ", importBackendFailed: "ਬੈਕਐੱਨਡ ਤੋਂ ਆਯਾਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹੇ।", cannotExportEmptyCanvas: "ਖਾਲੀ ਕੈਨਵਸ ਨੂੰ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ।", couldNotCopyToClipboard: "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।", decryptFailed: "ਡਾਟਾ ਡੀਕਰਿਪਟ ਨਹੀਂ ਕਰ ਸਕੇ।", uploadedSecurly: "ਅੱਪਲੋਡ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤੀ ਹੋਈ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ Excalidraw ਸਰਵਰ ਅਤੇ ਤੀਜੀ ਧਿਰ ਦੇ ਬੰਦੇ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹ ਨਹੀਂ ਸਕਦੇ।", loadSceneOverridePrompt: "ਬਾਹਰੀ ਡਰਾਇੰਗ ਨੂੰ ਲੋਡ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਸਮੱਗਰੀ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?", collabStopOverridePrompt: `ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਪਿਛਲੀ ਲੋਕਲ ਸਾਂਭੀ ਡਰਾਇੰਗ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?

(ਜੇ ਤੁਸੀਂ ਆਪਣੀ ਲੋਕਲ ਡਰਾਇੰਗ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਇਹ ਕਰਨ ਦੀ ਬਜਾਏ ਬੱਸ ਆਪਣਾ ਟੈਬ ਬੰਦ ਕਰ ਦਿਉ।)`, errorAddingToLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਸਮੱਗਰੀ ਨਹੀਂ ਜੋੜ ਸਕੇ", errorRemovingFromLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਸਮੱਗਰੀ ਨਹੀਂ ਹਟਾ ਸਕੇ", confirmAddLibrary: "ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ {{numShapes}} ਆਕ੍ਰਿਤੀ(ਆਂ) ਨੂੰ ਜੋੜ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", imageDoesNotContainScene: "ਇਸ ਤਸਵੀਰ ਵਿੱਚ ਦ੍ਰਿਸ਼ ਦਾ ਕੋਈ ਵੀ ਡਾਟਾ ਨਜ਼ਰ ਨਹੀਂ ਆ ਰਿਹਾ। ਕੀ ਤੁਸੀਂ ਨਿਰਯਾਤ ਕਰਦੇ ਸਮੇਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਮੜ੍ਹਣਾ ਸਮਰੱਥ ਕੀਤਾ ਸੀ?", cannotRestoreFromImage: "ਇਸ ਤਸਵੀਰ ਫਾਈਲ ਤੋਂ ਦ੍ਰਿਸ਼ ਬਹਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ", invalidSceneUrl: "ਦਿੱਤੀ ਗਈ URL 'ਚੋਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਆਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ। ਇਹ ਜਾਂ ਤਾਂ ਖਰਾਬ ਹੈ, ਜਾਂ ਇਸ ਵਿੱਚ ਜਾਇਜ਼ Excalidraw JSON ਡਾਟਾ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।", resetLibrary: "ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", removeItemsFromsLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ {{count}} ਚੀਜ਼(-ਜ਼ਾਂ) ਮਿਟਾਉਣੀਆਂ ਹਨ?", invalidEncryptionKey: "ਇਨਕਰਿਪਸ਼ਨ ਕੁੰਜੀ ‌‌22 ਅੱਖਰਾਂ ਦੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਲਾਇਵ ਸਹਿਯੋਗ ਬੰਦ ਹੈ।", collabOfflineWarning: `ਕੋਈ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ
ਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੀਆਂ ਨਹੀਂ ਜਾਣਗੀਆਂ।` }, EO = { unsupportedFileType: "ਫਾਈਲ ਦੀ ਕਿਸਮ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।", imageInsertError: "ਚਿੱਤਰ ਸ਼ਾਮਲ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ...", fileTooBig: "ਫਾਈਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ। ਵੱਧ-ਤੋਂ-ਵੱਧ ਪ੍ਰਵਾਨਤ ਅਕਾਰ {{maxSize}} ਹੈ।", svgImageInsertError: "SVG ਤਸਵੀਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕਰ ਸਕੇ। SVG ਮਾਰਕ-ਅੱਪ ਨਜਾਇਜ਼ ਲੱਗ ਰਿਹਾ ਹੈ।", failedToFetchImage: "", invalidSVGString: "SVG ਨਜਾਇਜ਼ ਹੈ।", cannotResolveCollabServer: "", importLibraryError: "ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aO = { selection: "ਚੋਣਕਾਰ", image: "ਤਸਵੀਰ ਸ਼ਾਮਲ ਕਰੋ", rectangle: "ਆਇਤ", diamond: "ਹੀਰਾ", ellipse: "ਅੰਡਾਕਾਰ", arrow: "ਤੀਰ", line: "ਲਕੀਰ", freedraw: "ਵਾਹੋ", text: "ਪਾਠ", library: "ਲਾਇਬ੍ਰੇਰੀ", lock: "ਡਰਾਇੰਗ ਤੋਂ ਬਾਅਦ ਵੀ ਚੁਣੇ ਹੋਏ ਸੰਦ ਨੂੰ ਸਰਗਰਮ ਰੱਖੋ ", penMode: "ਪੈੱਨ ਮੋਡ - ਟੱਚ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ", link: "", eraser: "ਰਬੜ", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IO = { canvasActions: "ਕੈਨਵਸ ਦੀਆਂ ਕਾਰਵਾਈਆਂ", selectedShapeActions: "ਚੁਣੀ ਆਕ੍ਰਿਤੀ ਦੀਆਂ ਕਾਰਵਾਈਆਂ", shapes: "ਆਕ੍ਰਿਤੀਆਂ" }, oO = { canvasPanning: "", linearElement: "ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਬਿੰਦੂਆਂ ਲਈ ਕਲਿੱਕ ਕਰਕੇ ਸ਼ੁਰੂਆਤ ਕਰੋ, ਇਕਹਿਰੀ ਲਕੀਰ ਲਈ ਘਸੀਟੋ", freeDraw: "ਕਲਿੱਕ ਕਰਕੇ ਘਸੀਟੋ, ਪੂਰਾ ਹੋਣ 'ਤੇ ਛੱਡ ਦਿਉ", text: "ਨੁਸਖਾ: ਤੁਸੀਂ ਚੋਣਕਾਰ ਸੰਦ ਰਾਹੀਂ ਕਿਤੇ ਵੀ ਡਬਲ-ਕਲਿੱਕ ਕਰਕੇ ਵੀ ਪਾਠ ਜੋੜ ਸਕਦੇ ਹੋ", embeddable: "", text_selected: "ਪਾਠ ਨੂੰ ਸੋਧਣ ਲਈ ਡਬਲ-ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਐਂਟਰ ਦਬਾਓ", text_editing: "ਸੋਧ ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਐਸਕੇਪ (Esc) ਜਾਂ Ctrl-ਜਾਂ-Cmd+ਐਂਟਰ (enter) ਦਬਾਓ", linearElementMulti: "ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਆਖਰੀ ਬਿੰਦੂ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਇਸਕੇਪ ਜਾਂ ਐਂਟਰ ਦਬਾਓ", lockAngle: "ਤੁਸੀਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ", resize: "ਤੁਸੀਂ ਅਕਾਰ ਬਦਲਦੇ ਸਮੇਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਅਨੁਪਾਤ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ, ਵਿਚਕਾਰ ਤੋਂ ਅਕਾਰ ਬਦਲਣ ਲਈ ALT ਦਬਾਓ", resizeImage: "", rotate: "ਤੁਸੀਂ ਘੁਮਾਉਂਦੇ ਹੋਏ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ", bindTextToElement: "ਪਾਠ ਜੋੜਨ ਲਈ ਐੰਟਰ ਦਬਾਓ", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, QO = { cannotShowPreview: "ਝਲਕ ਨਹੀਂ ਦਿਖਾ ਸਕਦੇ", canvasTooBig: "ਸ਼ਾਇਦ ਕੈਨਵਸ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡਾ ਹੈ।", canvasTooBigTip: "ਨੁਸਖਾ: ਸਭ ਤੋਂ ਦੂਰ ਸਥਿੱਤ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਨੇੜੇ ਲਿਆ ਕੇ ਦੇਖੋ।" }, nO = { headingMain: "ਕੋਈ ਸਮੱਸਿਆ ਖੜ੍ਹੀ ਹੋਈ। <button>ਪੰਨਾ ਮੁੜ-ਲੋਡ</button> ਕਰਕੇ ਦੇਖੋ।", clearCanvasMessage: "ਜੇ ਮੁੜ-ਲੋਡ ਕਰਨਾ ਕੰਮ ਨਾ ਕਰੇ, ਤਾਂ ਇਹ ਕਰਕੇ ਦੇਖੋ <button>ਕੈਨਵਸ ਸਾਫ ਕਰੋ।</button>", clearCanvasCaveat: " ਇਹ ਸਾਰਾ ਕੰਮ ਗਵਾ ਦੇਵੇਗਾ ", trackedToSentry: "ਸੂਚਕ {{eventId}} ਵਾਲੀ ਸਮੱਸਿਆ ਸਾਡੇ ਸਿਸਟਮ 'ਤੇ ਟਰੈਕ ਕੀਤੀ ਗਈ ਸੀ।", openIssueMessage: "ਅਸੀਂ ਬੜੇ ਸਾਵਧਾਨ ਸੀ ਕਿ ਗਲਤੀ ਵਿੱਚ ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਨਾ ਕਰੀਏ। ਜੇ ਤੁਹਾਡਾ ਦ੍ਰਿਸ਼ ਨਿੱਜੀ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ 'ਤੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ <button>ਬੱਗ ਟਰੈਕਰ।</button>ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਗਿੱਟਹੱਬ ਮੁੱਦੇ ਵਿੱਚ ਪੇਸਟ ਕਰਕੇ ਸ਼ਾਮਲ ਕਰੋ ਜੀ।", sceneContent: "ਦ੍ਰਿਸ਼ ਦੀ ਸਮੱਗਰੀ:" }, rO = { desc_intro: "ਤੁਸੀਂ ਲੋਕਾਂ ਨੂੰ ਆਪਣੇ ਨਾਲ ਮੌਜੂਦਾ ਦ੍ਰਿਸ਼ 'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਲਈ ਸੱਦਾ ਭੇਜ ਸਕਦੇ ਹੋ।", desc_privacy: "ਫਿਕਰ ਨਾ ਕਰੋ, ਇਜਲਾਸ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਵਰਤਦਾ ਹੈ, ਸੋ ਜੋ ਕੁਝ ਵੀ ਤੁਸੀਂ ਵਾਹੁੰਦੇ ਹੋ ਉਹ ਨਿੱਜੀ ਹੀ ਰਹਿੰਦਾ ਹੈ। ਇੱਥੋਂ ਤੱਕ ਕਿ ਸਾਡੇ ਸਰਵਰ ਵੀ ਨਹੀਂ ਜਾਣ ਸਕਣਗੇ ਕਿ ਤੁਸੀਂ ਕੀ ਬਣਾਇਆ ਹੈ।", button_startSession: "ਇਜਲਾਸ ਸ਼ੁਰੂ ਕਰੋ", button_stopSession: "ਇਜਲਾਸ ਰੋਕੋ", desc_inProgressIntro: "ਲਾਇਵ ਸਹਿਯੋਗ ਇਜਲਾਸ ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ।", desc_shareLink: "ਇਸ ਲਿੰਕ ਨੂੰ ਉਹਨਾਂ ਨਾਲ ਸਾਂਝਾ ਕਰੋ ਜਿਹਨਾਂ ਨਾਲ ਤੁਸੀਂ ਸਹਿਯੋਗ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ:", desc_exitSession: "ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਤੁਹਾਡਾ ਕਮਰੇ ਨਾਲੋਂ ਨਾਤਾ ਤੋੜ ਦੇਵੇਗਾ, ਪਰ ਤੁਸੀਂ ਸਥਾਨਕ ਪੱਧਰ 'ਤੇ ਦ੍ਰਿਸ਼ ਨਾਲ ਕੰਮ ਕਰਨਾ ਜਾਰੀ ਰੱਖ ਸਕੋਗੇ। ਇਹ ਧਿਆਨ 'ਚ ਰੱਖੋ ਕਿ ਇਹ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰੇਗਾ , ਅਤੇ ਉਹ ਹਾਲੇ ਵੀ ਆਪਣੇ ਸੰਸਕਰਨ 'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਦੇ ਕਾਬਲ ਹੋਣਗੇ।", shareTitle: "Excalidraw 'ਤੇ ਲਾਈਵ ਇਜਲਾਸ ਦਾ ਹਿੱਸਾ ਬਣੋ" }, sO = { title: "ਗਲਤੀ" }, lO = { disk_title: "ਡਿਸਕ ਵਿੱਚ ਸਾਂਭੋ", disk_details: "ਦ੍ਰਿਸ਼ ਦਾ ਡਾਟਾ ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ ਜਿੱਥੋਂ ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਆਯਾਤ ਕਰ ਸਕਦੇ ਹੋ।", disk_button: "ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ", link_title: "ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ", link_details: "ਸਿਰਫ ਦੇਖੇ-ਜਾਣ ਵਾਲੀ ਲਿੰਕ ਵਜੋਂ ਨਿਰਯਾਤ ਕਰੋ।", link_button: "ਲਿੰਕ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", excalidrawplus_description: "ਆਪਣੇ ਦ੍ਰਿਸ਼ ਦੇ ਡਾਟੇ ਨੂੰ Excalidraw+ ਵਰਕਸਪੇਸ ਵਿੱਚ ਸਾਂਭੋ।", excalidrawplus_button: "ਨਿਰਯਾਤ ਕਰੋ", excalidrawplus_exportError: "ਇਸ ਸਮੇਂ Excalidraw+ ਵਿੱਚ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ..." }, cO = { blog: "ਸਾਡਾ ਬਲੌਗ ਪੜ੍ਹੋ", click: "ਕਲਿੱਕ", deepSelect: "", deepBoxSelect: "", curvedArrow: "ਵਿੰਗਾ ਤੀਰ", curvedLine: "ਵਿੰਗੀ ਲਕੀਰ", documentation: "ਕਾਗਜ਼ਾਤ", doubleClick: "ਡਬਲ-ਕਲਿੱਕ", drag: "ਘਸੀਟੋ", editor: "ਸੋਧਕ", editLineArrowPoints: "", editText: "", github: "ਕੋਈ ਸਮੱਸਿਆ ਲੱਭੀ? ਜਮ੍ਹਾਂ ਕਰਵਾਓ", howto: "ਸਾਡੀਆਂ ਗਾਈਡਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ", or: "ਜਾਂ", preventBinding: "ਤੀਰ ਬੱਝਣਾ ਰੋਕੋ", tools: "ਟੂਲ", shortcuts: "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ", textFinish: "ਸੋਧਣਾ ਮੁਕੰਮਲ ਕਰੋ (ਪਾਠ ਸੋਧਕ)", textNewLine: "ਨਵੀਂ ਪੰਕਤੀ ਜੋੜੋ (ਪਾਠ ਸੋਧਕ)", title: "ਮਦਦ", view: "ਦਿੱਖ", zoomToFit: "ਸਾਰੇ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ", zoomToSelection: "ਚੋਣ ਤੱਕ ਜ਼ੂਮ ਕਰੋ", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, dO = { title: "ਕੈਨਵਸ ਨੂੰ ਸਾਫ਼ ਕਰੋ" }, DO = { title: "ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ", itemName: "ਚੀਜ਼ ਦਾ ਨਾਂ", authorName: "ਲੇਖਕ ਦਾ ਨਾਂ", githubUsername: "ਗਿੱਟਹੱਬ ਵਰਤੋਂਕਾਰ ਨਾਂ", twitterUsername: "ਟਵਿੱਟਰ ਦਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ", libraryName: "ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਨਾਂ", libraryDesc: "ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ", website: "ਵੈੱਬਸਾਇਟ", placeholder: { authorName: "ਤੁਹਾਡਾ ਨਾਂ ਜਾਂ ਵਰਤੋਂਕਾਰ-ਨਾਂ", libraryName: "ਤੁਹਾਡੀ ਲਾਇਬਰ੍ਰੀ ਦਾ ਨਾਂ", libraryDesc: "ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ ਤਾਂ ਜੋ ਲੋਕਾਂ ਨੂੰ ਇਸ ਤੋੰਂ ਇਸਦੀ ਵਰਤੋਂ ਕਰਨ ਸਬੰਧੀ ਮਦਦ ਮਿਲ ਸਕੇ", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "ਲੋੜੀਂਦਾ", website: "ਜਾਇਜ਼ URL ਭਰੋ" }, noteDescription: "ਹੋਰ ਲੋਕਾਂ ਵੱਲੋਂ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਵਰਤਣ ਲਈ ਸਕਣ ਇਸ ਲਈ<link>ਜਨਤਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਰਿਪਾਜ਼ੀਟਰੀ</link> ਵਿੱਚ ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਸ਼ਾਮਲ ਕਰਵਾਉਣ ਲਈ ਜਮ੍ਹਾ ਕਰਵਾਓ", noteGuidelines: "<link>ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼</link>", noteLicense: "<link>MIT ਲਾਇਸੈਂਸ, </link>", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, hO = { title: "ਲਾਇਬ੍ਰੇਰੀ ਜਮ੍ਹਾਂ ਕਰਵਾਈ", content: "ਧੰਨਵਾਦ {{authorName}} ਜੀਉ। ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਮੀਖਿਆ ਲਈ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਉਸਦੀ ਸਥਿਤੀ <link>ਇੱਥੇ</link> ਦੇਖ ਸਕਦੇ ਹੋ।" }, wO = { resetLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ", removeItemsFromLib: "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਚੁਣੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਹਟਾਓ" }, FO = { header: "ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ", label: { withBackground: "ਪਿਛੋਕੜ", onlySelected: "ਸਿਰਫ ਚੁਣੇ ਹੋਏ", darkMode: "ਡਾਰਕ ਮੋਡ", embedScene: "ਦ੍ਰਿਸ਼ ਮੜ੍ਹੋ", scale: "ਸਕੇਲ", padding: "ਪੈਡਿੰਗ" }, tooltip: { embedScene: "" }, title: { exportToPng: "PNG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", exportToSvg: "SVG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ", copyPngToClipboard: "PNG ਨੂੰ ਕਲਿੱਪੋਬਰਡ ‘ਤੇ ਕਾਪੀ ਕਰੋ" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "ਗੱਤੇ 'ਤੇ ਕਾਪੀ ਕਰੋ" } }, pO = { tooltip: "ਤੁਹਾਡੀ ਡਰਾਇੰਗਾਂ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਟ ਕੀਤੀਆਂ ਹੋਈਆਂ ਹਨ, ਇਸ ਲਈ Excalidraw ਦੇ ਸਰਵਰ ਉਹਨਾਂ ਨੂੰ ਕਦੇ ਵੀ ਨਹੀਂ ਦੇਖਣਗੇ।", link: "Excalidraw ਵਿੱਚ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕ੍ਰਿਪਸ਼ਨ 'ਤੇ ਬਲੌਗ ਸੰਪਾਦਨਾ" }, mO = { angle: "ਕੋਣ", element: "ਐਲੀਮੈਂਟ", elements: "ਐਲੀਮੈਂਟ", height: "ਉਚਾਈ", scene: "ਦ੍ਰਿਸ਼", selected: "ਚੁਣੇ", storage: "ਸਟੋਰੇਜ", title: "ਪੜਾਕੂਆਂ ਲਈ ਅੰਕੜੇ", total: "ਕੁੱਲ", version: "ਸੰਸਕਰਨ", versionCopy: "ਕਾਪੀ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ", versionNotAvailable: "ਸੰਸਕਰਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ", width: "ਚੌੜਾਈ" }, kO = { addedToLibrary: "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜਿਆ", copyStyles: "ਕਾਪੀ ਕੀਤੇ ਸਟਾਇਲ।", copyToClipboard: "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕੀਤਾ।", copyToClipboardAsPng: "{{exportSelection}} ਨੂੰ ਕਲਿੱਪਬੋਰਡ 'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕੀਤਾ ({{exportColorScheme}})", fileSaved: "ਫਾਈਲ ਸਾਂਭੀ ਗਈ।", fileSavedToFilename: "{filename} ਵਿੱਚ ਸਾਂਭੀ", canvas: "ਕੈਨਵਸ", selection: "ਚੋਣ", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yO = { transparent: "ਪਾਰਦਰਸ਼ੀ", black: "ਕਾਲੀ", white: "ਸਫ਼ੈਦ", red: "ਲਾਲ", pink: "ਗੁਲਾਬੀ", grape: "ਅੰਗੂਰੀ", violet: "ਜਾਮਣੀ", gray: "ਸੁਰਮਈ", blue: "ਨੀਲਾ", cyan: "ਫਿਰੋਜੀ", teal: "ਟੀਲ", green: "ਹਰਾ", yellow: "ਪੀਲਾ", orange: "ਸੰਤਰੀ", bronze: "ਕਾਂਸੇਰੰਗਾ" }, bO = { app: { center_heading: "ਤੁਹਾਡਾ ਸਾਰਾ ਡਾਟਾ ਤੁਹਾਡੇ ਲੋਕਲ ਬਰਾਉਜ਼ਰ ਵਿੱਚ ਸਾਂਭਿਆ ਹੋਇਆ ਹੈ।", center_heading_plus: "", menuHint: "ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਭਾਸ਼ਾਵਾਂ, …" }, defaults: { menuHint: "ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਅਤੇ ਹੋਰ ਵੀ ਬਹੁਤ ਕੁਝ…", center_heading: "ਡਾਇਆਗ੍ਰਾਮਾਂ। ਕੀਤੀਆਂ। ਸੁਖਾਲੀਆਂ।", toolbarHint: "", helpHint: "ਸ਼ਾਰਟਕੱਟ ਤੇ ਮਦਦ" } }, UO = { mostUsedCustomColors: "ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਕਸਟਮ ਰੰਗ", colors: "ਰੰਗ", shades: "ਸ਼ੇਡਾਂ", hexCode: "ਹੈਕਸ ਕੋਡ", noShades: "ਇਸ ਰੰਗ ਦੀ ਕੋਈ ਸ਼ੇਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" }, GO = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fO = { title: "", button: "", description: "", syntax: "", preview: "" }, f7A = { labels: BO, library: gO, buttons: tO, alerts: iO, errors: EO, toolBar: aO, headings: IO, hints: oO, canvasError: QO, errorSplash: nO, roomDialog: rO, errorDialog: sO, exportDialog: lO, helpDialog: cO, clearCanvasDialog: dO, publishDialog: DO, publishSuccessDialog: hO, confirmDialog: wO, imageExportDialog: FO, encrypted: pO, stats: mO, toast: kO, colors: yO, welcomeScreen: bO, colorPicker: UO, overwriteConfirm: GO, mermaid: fO };
const L7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iO,
  buttons: tO,
  canvasError: QO,
  clearCanvasDialog: dO,
  colorPicker: UO,
  colors: yO,
  confirmDialog: wO,
  default: f7A,
  encrypted: pO,
  errorDialog: sO,
  errorSplash: nO,
  errors: EO,
  exportDialog: lO,
  headings: IO,
  helpDialog: cO,
  hints: oO,
  imageExportDialog: FO,
  labels: BO,
  library: gO,
  mermaid: fO,
  overwriteConfirm: GO,
  publishDialog: DO,
  publishSuccessDialog: hO,
  roomDialog: rO,
  stats: mO,
  toast: kO,
  toolBar: aO,
  welcomeScreen: bO
}, Symbol.toStringTag, { value: "Module" })), x7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: Xb,
  en: Ob,
  kaa: Vb
}, Symbol.toStringTag, { value: "Module" }));
var LO = { paste: "Wklej", pasteAsPlaintext: "Wklej jako zwykły tekst", pasteCharts: "Wklej wykresy", selectAll: "Zaznacz wszystko", multiSelect: "Dodaj element do zaznaczenia", moveCanvas: "Przesuń obszar roboczy", cut: "Wytnij", copy: "Kopiuj", copyAsPng: "Skopiuj do schowka jako plik PNG", copyAsSvg: "Skopiuj do schowka jako plik SVG", copyText: "Skopiuj do schowka jako tekst", copySource: "Skopiuj źródło do schowka", convertToCode: "Skonwertuj do kodu", bringForward: "Przenieś wyżej", sendToBack: "Przenieś na spód", bringToFront: "Przenieś na wierzch", sendBackward: "Przenieś niżej", delete: "Usuń", copyStyles: "Kopiuj style", pasteStyles: "Wklej style", stroke: "Kolor obramowania", background: "Kolor wypełnienia", fill: "Wypełnienie", strokeWidth: "Grubość obramowania", strokeStyle: "Styl obrysu", strokeStyle_solid: "Pełny", strokeStyle_dashed: "Kreskowany", strokeStyle_dotted: "Kropkowany", sloppiness: "Styl kreski", opacity: "Przeźroczystość", textAlign: "Wyrównanie tekstu", edges: "Krawędzie", sharp: "Ostry", round: "Zaokrąglij", arrowheads: "Groty", arrowhead_none: "Brak", arrowhead_arrow: "Strzałka", arrowhead_bar: "Kreska", arrowhead_circle: "Okrąg", arrowhead_circle_outline: "Okrąg (obrys)", arrowhead_triangle: "Trójkąt", arrowhead_triangle_outline: "Trójkąt (obrys)", arrowhead_diamond: "Romb", arrowhead_diamond_outline: "Romb (obrys)", fontSize: "Rozmiar tekstu", fontFamily: "Krój pisma", addWatermark: 'Dodaj "Zrobione w Excalidraw"', handDrawn: "Odręczny", normal: "Normalny", code: "Kod", small: "Mały", medium: "Średni", large: "Duży", veryLarge: "Bardzo duży", solid: "Pełne", hachure: "Linie", zigzag: "Zygzak", crossHatch: "Zakreślone", thin: "Cienkie", bold: "Pogrubione", left: "Do lewej", center: "Do środka", right: "Do prawej", extraBold: "Ekstra pogrubione", architect: "Dokładny", artist: "Artystyczny", cartoonist: "Rysunkowy", fileTitle: "Nazwa pliku", colorPicker: "Paleta kolorów", canvasColors: "Używane na płótnie", canvasBackground: "Kolor dokumentu", drawingCanvas: "Obszar roboczy", layers: "Warstwy", actions: "Akcje", language: "Język", liveCollaboration: "Współpraca w czasie rzeczywistym...", duplicateSelection: "Powiel", untitled: "Bez tytułu", name: "Nazwa", yourName: "Twoje imię", madeWithExcalidraw: "Zrobione w Excalidraw", group: "Zgrupuj wybrane", ungroup: "Rozgrupuj wybrane", collaborators: "Współtwórcy", showGrid: "Pokaż siatkę", addToLibrary: "Dodaj do biblioteki", removeFromLibrary: "Usuń z biblioteki", libraryLoadingMessage: "Wczytywanie biblioteki…", libraries: "Przeglądaj biblioteki", loadingScene: "Wczytywanie sceny…", align: "Wyrównaj", alignTop: "Wyrównaj do góry", alignBottom: "Wyrównaj do dołu", alignLeft: "Wyrównaj do lewej", alignRight: "Wyrównaj do prawej", centerVertically: "Wyśrodkuj w pionie", centerHorizontally: "Wyśrodkuj w poziomie", distributeHorizontally: "Rozłóż poziomo", distributeVertically: "Rozłóż pionowo", flipHorizontal: "Odwróć w poziomie", flipVertical: "Odwróć w pionie", viewMode: "Tryb widoku", share: "Udostępnij", showStroke: "Pokaż próbnik kolorów obrysu", showBackground: "Pokaż próbnik koloru tła", toggleTheme: "Przełącz motyw", personalLib: "Biblioteka prywatna", excalidrawLib: "Biblioteka Excalidraw", decreaseFontSize: "Zmniejsz rozmiar czcionki", increaseFontSize: "Zwiększ rozmiar czcionki", unbindText: "Odłącz tekst od kontenera", bindText: "Połącz tekst z kontenerem", createContainerFromText: "Zawijaj tekst w kontenerze", link: { edit: "Edytuj łącze", editEmbed: "Edytuj i osadź link", create: "Utwórz łącze", createEmbed: "Stwórz i osadź link", label: "Łącze", labelEmbed: "Podlinkuj i osadź", empty: "Nie ustawiono linku" }, lineEditor: { edit: "Edytuj linię", exit: "Wyjdź z edytora linii" }, elementLock: { lock: "Zablokuj", unlock: "Odblokuj", lockAll: "Zablokuj wszystko", unlockAll: "Odblokuj wszystko" }, statusPublished: "Opublikowano", sidebarLock: "Panel boczny zawsze otwarty", selectAllElementsInFrame: "Zaznacz wszystkie elementy w ramce", removeAllElementsFromFrame: "Usuń wszystkie elementy z ramki", eyeDropper: "Wybierz kolor z płótna", textToDiagram: "Tekst do diagramu", prompt: "" }, xO = { noItems: "Nie dodano jeszcze żadnych elementów...", hint_emptyLibrary: "Wybierz element na płótnie, aby go tutaj dodać, lub zainstaluj bibliotekę z poniższego publicznego repozytorium.", hint_emptyPrivateLibrary: "Wybierz element, aby dodać go tutaj." }, SO = { clearReset: "Wyczyść dokument i zresetuj kolor dokumentu", exportJSON: "Eksportuj do pliku", exportImage: "Eksportuj obraz...", export: "Zapisz jako...", copyToClipboard: "Skopiuj do schowka", save: "Zapisz do bieżącego pliku", saveAs: "Zapisz jako", load: "Otwórz", getShareableLink: "Udostępnij", close: "Zamknij", selectLanguage: "Wybierz język", scrollBackToContent: "Wróć do obszaru roboczego", zoomIn: "Powiększ", zoomOut: "Pomniejsz", resetZoom: "Zresetuj powiększenie", menu: "Menu", done: "Gotowe", edit: "Edytuj", undo: "Cofnij", redo: "Przywróć", resetLibrary: "Resetuj bibliotekę", createNewRoom: "Utwórz nowy pokój", fullScreen: "Pełny ekran", darkMode: "Ciemny motyw", lightMode: "Jasny motyw", zenMode: "Tryb Zen", objectsSnapMode: "Przyciąganie do obiektów", exitZenMode: "Wyjdź z trybu Zen", cancel: "Anuluj", clear: "Wyczyść", remove: "Usuń", embed: "Przełącz osadzenie", publishLibrary: "Opublikuj", submit: "Prześlij", confirm: "Zatwierdź", embeddableInteractionButton: "Kliknij, aby wejść w interakcję" }, NO = { clearReset: "To spowoduje usunięcie wszystkiego z dokumentu. Czy chcesz kontynuować?", couldNotCreateShareableLink: "Wystąpił błąd przy generowaniu linka do udostępniania.", couldNotCreateShareableLinkTooBig: "Nie można utworzyć linku do udostępnienia: scena jest za duża", couldNotLoadInvalidFile: "Nie udało się otworzyć pliku. Wybrany plik jest nieprawidłowy.", importBackendFailed: "Wystąpił błąd podczas importowania pliku.", cannotExportEmptyCanvas: "Najpierw musisz coś narysować, aby zapisać dokument.", couldNotCopyToClipboard: "Nie udało się skopiować do schowka.", decryptFailed: "Nie udało się odszyfrować danych.", uploadedSecurly: "By zapewnić Ci prywatność, udostępnianie projektu jest zabezpieczone szyfrowaniem end-to-end, co oznacza, że poza tobą i osobą z którą podzielisz się linkiem, nikt nie ma dostępu do tego co udostępniasz.", loadSceneOverridePrompt: "Wczytanie zewnętrznego rysunku zastąpi istniejącą zawartość. Czy chcesz kontynuować?", collabStopOverridePrompt: `Zatrzymanie sesji nadpisze poprzedni, zapisany lokalnie rysunek. Czy jesteś pewien?

(Jeśli chcesz zachować swój lokalny rysunek, po prostu zamknij zakładkę przeglądarki.)`, errorAddingToLibrary: "Nie udało się dodać elementu do biblioteki", errorRemovingFromLibrary: "Nie udało się usunąć elementu z biblioteki", confirmAddLibrary: "To doda {{numShapes}} kształtów do twojej biblioteki. Jesteś pewien?", imageDoesNotContainScene: "Ten obraz nie zawiera żadnych informacji o scenie. Czy włączyłeś osadzanie sceny podczas eksportu?", cannotRestoreFromImage: "Scena nie mogła zostać przywrócona z pliku obrazu", invalidSceneUrl: "Nie udało się zaimportować sceny z podanego adresu URL. Jest ona wadliwa lub nie zawiera poprawnych danych Excalidraw w formacie JSON.", resetLibrary: "To wyczyści twoją bibliotekę. Jesteś pewien?", removeItemsFromsLibrary: "Usunąć {{count}} element(ów) z biblioteki?", invalidEncryptionKey: "Klucz szyfrowania musi składać się z 22 znaków. Współpraca na żywo jest wyłączona.", collabOfflineWarning: `Brak połączenia z Internetem.
Twoje zmiany nie zostaną zapisane!` }, RO = { unsupportedFileType: "Nieobsługiwany typ pliku.", imageInsertError: "Nie udało się wstawić obrazu. Spróbuj ponownie później...", fileTooBig: "Plik jest zbyt duży. Maksymalny dozwolony rozmiar to {{maxSize}}.", svgImageInsertError: "Nie udało się wstawić obrazu SVG. Znacznik SVG wygląda na nieprawidłowy.", failedToFetchImage: "Nie udało się załadować obrazu.", invalidSVGString: "Nieprawidłowy SVG.", cannotResolveCollabServer: "Nie można połączyć się z serwerem współpracy w czasie rzeczywistym. Proszę odświeżyć stronę i spróbować ponownie.", importLibraryError: "Wystąpił błąd w trakcie ładowania biblioteki", collabSaveFailed: "Nie udało się zapisać w bazie danych. Jeśli problemy nie ustąpią, zapisz plik lokalnie, aby nie utracić swojej pracy.", collabSaveFailed_sizeExceeded: "Nie udało się zapisać w bazie danych — dokument jest za duży. Zapisz plik lokalnie, aby nie utracić swojej pracy.", imageToolNotSupported: "Dodawanie obrazów jest wyłączone.", brave_measure_text_error: { line1: "Wygląda na to, że używasz przeglądarki Brave z włączonym ustawieniem <bold>Agressively Block Fingerprinting</bold>.", line2: "Może to doprowadzić do złamania <bold>elementów tekstu</bold> na rysunkach.", line3: "Zdecydowanie zalecamy wyłączenie tego ustawienia. Możesz wykonać <link>te kroki</link>, aby to zrobić.", line4: "Jeśli wyłączenie tego ustawienia nie naprawia wyświetlania elementów tekstowych, zgłoś <issueLink>problem</issueLink> na naszym GitHubie lub napisz do nas na <discordLink>Discordzie</discordLink>" }, libraryElementTypeError: { embeddable: "Elementy osadzone nie mogą zostać dodane do biblioteki.", iframe: "Elementy IFrame nie mogą zostać dodane do biblioteki.", image: "Dodawania obrazów do biblioteki nadejdzie wkrótce!" }, asyncPasteFailedOnRead: "Nie udało się wkleić (nie udało się odczytać ze schowka systemowego).", asyncPasteFailedOnParse: "Nie udało się wkleić.", copyToSystemClipboardFailed: "Nie udało się skopiować do schowka." }, MO = { selection: "Zaznaczenie", image: "Wstaw obraz", rectangle: "Prostokąt", diamond: "Romb", ellipse: "Elipsa", arrow: "Strzałka", line: "Linia", freedraw: "Rysuj", text: "Tekst", library: "Biblioteka", lock: "Zablokuj wybrane narzędzie", penMode: "Tryb pióra — zapobiegaj dotknięciom", link: "Dodaj/aktualizuj link dla wybranego kształtu", eraser: "Gumka", frame: "Ramka", magicframe: "Wireframe do kodu", embeddable: "Osadzenie z internetu", laser: "Wskaźnik laserowy", hand: "Ręka (narzędzie do przesuwania)", extraTools: "Więcej narzędzi", mermaidToExcalidraw: "Konwertuj diagram Mermaid do Excalidraw", magicSettings: "Ustawienia AI" }, YO = { canvasActions: "Narzędzia", selectedShapeActions: "Wybrane narzędzie", shapes: "Kształty" }, vO = { canvasPanning: "Aby przesunąć płótno, przytrzymaj kółko myszy lub spację podczas przeciągania, albo użyj narzędzia ręki", linearElement: "Naciśnij, aby zrobić punkt, przeciągnij, aby narysować linię", freeDraw: "Naciśnij i przeciągnij by rysować, puść kiedy skończysz", text: "Wskazówka: możesz również dodać tekst klikając dwukrotnie gdziekolwiek za pomocą narzędzia zaznaczania", embeddable: "Kliknij i przeciągnij, aby stworzyć osadzenie strony", text_selected: "Kliknij dwukrotnie lub naciśnij ENTER, aby edytować tekst", text_editing: "Naciśnij Escape lub Ctrl (Cmd w macOS) + ENTER, aby zakończyć edycję", linearElementMulti: "Aby zakończyć krzywą, ponownie kliknij w ostatni punkt, bądź naciśnij Esc albo Enter", lockAngle: "Możesz ograniczyć kąt trzymając SHIFT", resize: "Możesz zachować proporcję trzymająć wcisnięty SHIFT, przytrzymaj ALT by zmienić rozmiar względem środka", resizeImage: `Możesz zmienić rozmiar swobodnie trzymając SHIFT,
przytrzymaj ALT, aby przeskalować względem środka obiektu`, rotate: "Możesz obracać element w równych odstępach trzymając wciśnięty SHIFT", lineEditor_info: "Przytrzymaj CtrlOrCmd i kliknij dwukrotnie lub naciśnij CtrlOrCmd + Enter, aby edytować punkty", lineEditor_pointSelected: "Naciśnij przycisk Delete, aby usunąć punkt. Ctrl/Cmd+D, aby go zduplikować. Przeciągnij, aby go przenieść", lineEditor_nothingSelected: `Wybierz punkt do edycji (przytrzymaj SHIFT, aby wybrać wiele),
lub przytrzymaj Alt i kliknij, aby dodać nowe punkty`, placeImage: "Kliknij, aby umieścić obraz, lub kliknij i przeciągnij, aby ustawić jego rozmiar ręcznie", publishLibrary: "Opublikuj własną bibliotekę", bindTextToElement: "Wciśnij enter, aby dodać tekst", deepBoxSelect: "Przytrzymaj CtrlOrCmd, aby wybrać w obrębie grupy i uniknąć przeciągania", eraserRevert: "Przytrzymaj Alt, aby przywrócić elementy oznaczone do usunięcia", firefox_clipboard_write: 'Ta funkcja może być włączona poprzez ustawienie flagi "dom.events.asyncClipboard.clipboardItem" na "true". Aby zmienić flagi przeglądarki w Firefox, odwiedź stronę "about:config".', disableSnapping: "Przytrzymaj Ctrl lub Cmd, aby wyłączyć przyciąganie" }, HO = { cannotShowPreview: "Nie można wyświetlić podglądu", canvasTooBig: "Obszar roboczy może być za duży.", canvasTooBigTip: "Wskazówka: spróbuj nieco zbliżyć najdalej wysunięte elementy." }, KO = { headingMain: "Wystąpił błąd. Spróbuj <button>odświeżyć stronę.</button>", clearCanvasMessage: "Jeśli odświeżenie strony nie zadziałało, spróbuj <button>usunąć wszystko z dokumentu.</button>", clearCanvasCaveat: " Pamiętaj tylko, że spowoduje to utratę całej twojej pracy ", trackedToSentry: "Błąd o identyfikatorze {{eventId}} został zaraportowany w naszym systemie.", openIssueMessage: "Szanujemy twoją prywatność i raport nie zawierał żadnych danych dotyczących tego nad czym pracowałeś, natomiast jeżeli jesteś w stanie podzielić się tym nad czym pracowałeś, prosimy o dodatkowy raport poprzez <button>nasze narzędzie do raportowania błędów.</button> Prosimy o dołączenie poniższej informacji poprzez skopiowanie jej i umieszczenie jej w zgłoszeniu na portalu GitHub.", sceneContent: "Zawartość dokumentu:" }, JO = { desc_intro: "Będziesz w stanie pracować wraz z osobami które zaprosisz do współpracy.", desc_privacy: "By zapewnić Ci prywatność, sesja współpracy na żywo jest zabezpieczona szyfrowaniem end-to-end, co oznacza, że poza tobą i osobami z którymi podzielisz się linkiem, nikt nie ma dostępu do tego co będziecie tworzyć.", button_startSession: "Rozpocznij sesję", button_stopSession: "Zakończ sesję", desc_inProgressIntro: "Sesja współpracy na żywo właśnie się rozpoczęła.", desc_shareLink: "Udostępnij ten link osobom, z którymi chcesz współpracować:", desc_exitSession: "Zakończenie sesji spowoduje odłączenie ciebie od pokoju, ale nadal będziesz mógł lokalnie kontynuować pracę. Zauważ, że osoby z którymi współpracowałeś nadal będą mogły współpracować.", shareTitle: "Dołącz do sesji współpracy na żywo w Excalidraw" }, ZO = { title: "Wystąpił błąd" }, qO = { disk_title: "Zapisz na dysku", disk_details: "Eksportuj dane sceny do pliku, z którego możesz importować później.", disk_button: "Zapisz do pliku", link_title: "Link do udostępnienia", link_details: "Eksportuj jako link tylko do odczytu.", link_button: "Wygeneruj link", excalidrawplus_description: "Zapisz scenę do swojego obszaru roboczego Excalidraw+.", excalidrawplus_button: "Eksportuj", excalidrawplus_exportError: "W tej chwili nie można wyeksportować do Excalidraw+..." }, WO = { blog: "Przeczytaj na naszym blogu", click: "kliknięcie", deepSelect: "Wybór w obrębie grupy", deepBoxSelect: "Wybór w obrębie grupy i unikanie przeciągania", curvedArrow: "Zakrzywiona strzałka", curvedLine: "Zakrzywiona linia", documentation: "Dokumentacja", doubleClick: "podwójne kliknięcie", drag: "przeciągnij", editor: "Edytor", editLineArrowPoints: "Edytuj punkty linii/strzałki", editText: "Edytuj tekst/dodaj etykietę", github: "Znalazłeś problem? Prześlij", howto: "Skorzystaj z instrukcji", or: "lub", preventBinding: "Zapobiegaj wiązaniu strzałek", tools: "Narzędzia", shortcuts: "Skróty klawiszowe", textFinish: "Zakończ edycję (edytor tekstu)", textNewLine: "Dodaj nowy wiersz (edytor tekstu)", title: "Pomoc", view: "Widok", zoomToFit: "Powiększ, aby wyświetlić wszystkie elementy", zoomToSelection: "Przybliż do zaznaczenia", toggleElementLock: "Zablokuj/odblokuj zaznaczenie", movePageUpDown: "Przesuń stronę w górę/w dół", movePageLeftRight: "Przenieś stronę w lewo/prawo" }, jO = { title: "Wyczyść płótno" }, TO = { title: "Opublikuj bibliotekę", itemName: "Nazwa elementu", authorName: "Nazwa autora", githubUsername: "Nazwa użytkownika na GitHubie", twitterUsername: "Nazwa użytkownika Twitter", libraryName: "Nazwa biblioteki", libraryDesc: "Opis biblioteki", website: "Strona internetowa", placeholder: { authorName: "Twoje imię lub nazwa użytkownika", libraryName: "Nazwa twojej biblioteki", libraryDesc: "Opis twojej biblioteki, aby pomóc innym zrozumieć jej działanie", githubHandle: "Uchwyt GitHub (opcjonalny), dzięki czemu możesz edytować bibliotekę po przesłaniu do sprawdzenia", twitterHandle: "Nazwa użytkownika w serwisie Twitter (opcjonalna), aby wiedzieć kogo oznaczyć przy promowaniu na Twitterze", website: "Link do Twojej osobistej strony internetowej lub gdzie indziej (opcjonalnie)" }, errors: { required: "Wymagane", website: "Wprowadź prawidłowy adres URL" }, noteDescription: "<link></link>dla innych osób do wykorzystania w swoich rysunkach.", noteGuidelines: "Biblioteka musi być najpierw zatwierdzona ręcznie. Przeczytaj <link>wytyczne</link>", noteLicense: "Wysyłając zgadzasz się, że biblioteka zostanie opublikowana pod <link>Licencja MIT, </link>w skrócie, każdy może z nich korzystać bez ograniczeń.", noteItems: "Każdy element biblioteki musi mieć własną nazwę, aby był filtrowalny. Uwzględnione zostaną następujące elementy biblioteki:", atleastOneLibItem: "Proszę wybrać co najmniej jeden element biblioteki, by rozpocząć", republishWarning: "Uwaga: niektóre z wybranych elementów są oznaczone jako już opublikowane/wysłane. Powinieneś ponownie przesłać elementy tylko wtedy, gdy aktualizujesz istniejącą bibliotekę lub zgłoszenie." }, zO = { title: "Biblioteka została przesłana", content: "Dziękujemy {{authorName}}. Twoja biblioteka została przesłana do sprawdzenia. Możesz śledzić jej stan<link>tutaj</link>" }, PO = { resetLibrary: "Zresetuj Bibliotekę", removeItemsFromLib: "Usuń wybrane elementy z biblioteki" }, OO = { header: "Eksportuj obraz", label: { withBackground: "Tło", onlySelected: "Tylko wybrane", darkMode: "Tryb ciemny", embedScene: "Osadź scenę", scale: "Skala", padding: "Dopełnienie" }, tooltip: { embedScene: `Dane sceny zostaną zapisane w eksportowanym pliku PNG/SVG tak, aby scena mogła zostać z niego przywrócona.
Zwiększy to rozmiar eksportowanego pliku.` }, title: { exportToPng: "Zapisz jako PNG", exportToSvg: "Zapisz jako SVG", copyPngToClipboard: "Skopiuj do schowka jako PNG" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Skopiuj do schowka" } }, VO = { tooltip: "Twoje rysunki są zabezpieczone szyfrowaniem end-to-end, tak więc nawet w Excalidraw nie jesteśmy w stanie zobaczyć tego co tworzysz.", link: "Wpis na blogu dotyczący szyfrowania end-to-end w Excalidraw" }, XO = { angle: "Kąt", element: "Element", elements: "Elementy", height: "Wysokość", scene: "Scena", selected: "Zaznaczenie", storage: "Pamięć", title: "Statystyki dla nerdów", total: "Łącznie", version: "Wersja", versionCopy: "Kliknij, aby skopiować", versionNotAvailable: "Wersja niedostępna", width: "Szerokość" }, _O = { addedToLibrary: "Dodano do biblioteki", copyStyles: "Skopiowano style.", copyToClipboard: "Skopiowano do schowka.", copyToClipboardAsPng: `Skopiowano {{exportSelection}} do schowka jako PNG
({{exportColorScheme}})`, fileSaved: "Zapisano plik.", fileSavedToFilename: "Zapisano jako {filename}", canvas: "płótno", selection: "zaznaczenie", pasteAsSingleElement: `Użyj {{shortcut}}, aby wkleić jako pojedynczy element,
lub wklej do istniejącego edytora tekstu`, unableToEmbed: "Osadzenie tego linku jest obecnie niedozwolone. Zgłoś propozycję na portalu GitHub, aby dodać go do listy dozwolonych wyjątków", unrecognizedLinkFormat: 'Osadzony link ma niewłaściwy format. Spróbuj wkleić całą zawartość pola "embed" z oryginalnej strony.' }, $O = { transparent: "Przezroczysty", black: "Czarny", white: "Biały", red: "Czerwony", pink: "Różowy", grape: "Winogronowy", violet: "Fioletowy", gray: "Szary", blue: "Niebieski", cyan: "Cyjanowy", teal: "Turkusowy", green: "Zielony", yellow: "Żółty", orange: "Pomarańczowy", bronze: "Brązowy" }, AV = { app: { center_heading: "Wszystkie dane są zapisywane lokalnie w przeglądarce.", center_heading_plus: "Czy zamiast tego chcesz przejść do Excalidraw+?", menuHint: "Eksportuj, preferencje, języki..." }, defaults: { menuHint: "Eksportuj, preferencje i więcej...", center_heading: "Schematy uproszczone.", toolbarHint: "Wybierz narzędzie i zacznij rysować!", helpHint: "Skróty klawiaturowe i pomoc" } }, uV = { mostUsedCustomColors: "Najczęściej używane kolory", colors: "Kolory", shades: "Odcienie", hexCode: "Kod HEX", noShades: "Brak dostępnych odcieni dla tego koloru" }, eV = { action: { exportToImage: { title: "Eksportuj jako obraz", button: "Eksportuj jako obraz", description: "Eksportuj zawartość sceny jako obraz z możliwością importowania." }, saveToDisk: { title: "Zapisz na dysku", button: "Zapisz na dysku", description: "Eksportuj zawartość sceny jako plik z możliwością importowania." }, excalidrawPlus: { title: "Excalidraw+", button: "Eksportuj do Excalidraw+", description: "Zapisz scenę do swojego obszaru roboczego Excalidraw+." } }, modal: { loadFromFile: { title: "Wczytaj z pliku", button: "Wczytaj z pliku", description: "Wczytanie z pliku <bold>nadpisze istniejącą zawartość</bold>.<br></br>Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji." }, shareableLink: { title: "Wczytaj z linku", button: "Nadpisz moją zawartość", description: "Wczytanie zewnętrznego pliku <bold>nadpisze istniejącą zawartość</bold>.<br></br>Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji." } } }, CV = { title: "Konwertuj diagram Mermaid do Excalidraw", button: "Wstaw", description: "Obecnie wspierane są jedynie <flowchartLink>proste grafy</flowchartLink>, <sequenceLink>sekwencje</sequenceLink> i <classLink>diagramy klas</classLink>. Pozostałe typy będą wyświetlane jako obrazy w Excalidraw.", syntax: "Składnia diagramów Mermaid", preview: "Podgląd" }, S7A = { labels: LO, library: xO, buttons: SO, alerts: NO, errors: RO, toolBar: MO, headings: YO, hints: vO, canvasError: HO, errorSplash: KO, roomDialog: JO, errorDialog: ZO, exportDialog: qO, helpDialog: WO, clearCanvasDialog: jO, publishDialog: TO, publishSuccessDialog: zO, confirmDialog: PO, imageExportDialog: OO, encrypted: VO, stats: XO, toast: _O, colors: $O, welcomeScreen: AV, colorPicker: uV, overwriteConfirm: eV, mermaid: CV };
const N7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NO,
  buttons: SO,
  canvasError: HO,
  clearCanvasDialog: jO,
  colorPicker: uV,
  colors: $O,
  confirmDialog: PO,
  default: S7A,
  encrypted: VO,
  errorDialog: ZO,
  errorSplash: KO,
  errors: RO,
  exportDialog: qO,
  headings: YO,
  helpDialog: WO,
  hints: vO,
  imageExportDialog: OO,
  labels: LO,
  library: xO,
  mermaid: CV,
  overwriteConfirm: eV,
  publishDialog: TO,
  publishSuccessDialog: zO,
  roomDialog: JO,
  stats: XO,
  toast: _O,
  toolBar: MO,
  welcomeScreen: AV
}, Symbol.toStringTag, { value: "Module" }));
var BV = { paste: "Colar", pasteAsPlaintext: "Colar como texto sem formatação", pasteCharts: "Colar gráficos", selectAll: "Selecionar tudo", multiSelect: "Adicionar elemento à seleção", moveCanvas: "Mover tela", cut: "Recortar", copy: "Copiar", copyAsPng: "Copiar para a área de transferência como PNG", copyAsSvg: "Copiar para a área de transferência como SVG", copyText: "Copiar para área de transferência como texto", copySource: "", convertToCode: "", bringForward: "Trazer para a frente", sendToBack: "Enviar para o fundo", bringToFront: "Trazer para o primeiro plano", sendBackward: "Enviar para trás", delete: "Apagar", copyStyles: "Copiar os estilos", pasteStyles: "Colar os estilos", stroke: "Contorno", background: "Fundo", fill: "Preenchimento", strokeWidth: "Espessura do traço", strokeStyle: "Estilo de traço", strokeStyle_solid: "Sólido", strokeStyle_dashed: "Tracejado", strokeStyle_dotted: "Pontilhado", sloppiness: "Precisão do traço", opacity: "Opacidade", textAlign: "Alinhamento do texto", edges: "Arestas", sharp: "Pontudo", round: "Arredondado", arrowheads: "Pontas", arrowhead_none: "Nenhuma", arrowhead_arrow: "Flecha", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Triângulo", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Tamanho da fonte", fontFamily: "Família da fonte", addWatermark: 'Adicionar "Feito com Excalidraw"', handDrawn: "Manuscrito", normal: "Normal", code: "Código", small: "Pequeno", medium: "Médio", large: "Grande", veryLarge: "Muito grande", solid: "Sólido", hachure: "Hachura", zigzag: "Zigue-zague", crossHatch: "Hachura cruzada", thin: "Fino", bold: "Espesso", left: "Esquerda", center: "Centralizar", right: "Direita", extraBold: "Muito espesso", architect: "Arquiteto", artist: "Artista", cartoonist: "Cartunista", fileTitle: "Nome do arquivo", colorPicker: "Seletor de cores", canvasColors: "Usado na tela", canvasBackground: "Fundo da tela", drawingCanvas: "Tela de desenho", layers: "Camadas", actions: "Ações", language: "Idioma", liveCollaboration: "Colaboração ao vivo...", duplicateSelection: "Duplicar", untitled: "Sem título", name: "Nome", yourName: "Seu nome", madeWithExcalidraw: "Feito com Excalidraw", group: "Agrupar seleção", ungroup: "Desagrupar seleção", collaborators: "Colaboradores", showGrid: "Mostrar grade", addToLibrary: "Adicionar à biblioteca", removeFromLibrary: "Remover da biblioteca", libraryLoadingMessage: "Carregando biblioteca…", libraries: "Procurar bibliotecas", loadingScene: "Carregando cena…", align: "Alinhamento", alignTop: "Alinhar ao topo", alignBottom: "Alinhar embaixo", alignLeft: "Alinhar à esquerda", alignRight: "Alinhar à direita", centerVertically: "Centralizar verticalmente", centerHorizontally: "Centralizar horizontalmente", distributeHorizontally: "Distribuir horizontalmente", distributeVertically: "Distribuir verticalmente", flipHorizontal: "Inverter horizontalmente", flipVertical: "Inverter verticalmente", viewMode: "Modo de visualização", share: "Compartilhar", showStroke: "Exibir seletor de cores do traço", showBackground: "Exibir seletor de cores do fundo", toggleTheme: "Alternar tema", personalLib: "Biblioteca Pessoal", excalidrawLib: "Biblioteca do Excalidraw", decreaseFontSize: "Diminuir o tamanho da fonte", increaseFontSize: "Aumentar o tamanho da fonte", unbindText: "Desvincular texto", bindText: "Vincular texto ao contêiner", createContainerFromText: "Envolver texto em um contêiner", link: { edit: "Editar link", editEmbed: "", create: "Criar link", createEmbed: "", label: "Link", labelEmbed: "", empty: "" }, lineEditor: { edit: "Editar linha", exit: "Sair do editor de linha" }, elementLock: { lock: "Bloquear", unlock: "Desbloquear", lockAll: "Bloquear tudo", unlockAll: "Desbloquear tudo" }, statusPublished: "Publicado", sidebarLock: "Manter barra lateral aberta", selectAllElementsInFrame: "Selecionar todos os elementos no quadro", removeAllElementsFromFrame: "Remover todos os elementos do quadro", eyeDropper: "Escolher cor da tela", textToDiagram: "", prompt: "" }, gV = { noItems: "Nenhum item adicionado ainda...", hint_emptyLibrary: "Selecione um item na tela para adicioná-lo aqui, ou instale uma biblioteca do repositório público, abaixo.", hint_emptyPrivateLibrary: "Selecione um item na tela para adicioná-lo aqui." }, tV = { clearReset: "Limpar o canvas e redefinir a cor de fundo", exportJSON: "Exportar arquivo", exportImage: "Exportar imagem...", export: "Salvar como...", copyToClipboard: "Copiar para o clipboard", save: "Salvar para o arquivo atual", saveAs: "Salvar como", load: "Abrir", getShareableLink: "Obter um link de compartilhamento", close: "Fechar", selectLanguage: "Selecionar idioma", scrollBackToContent: "Voltar para o conteúdo", zoomIn: "Aumentar zoom", zoomOut: "Diminuir zoom", resetZoom: "Redefinir zoom", menu: "Menu", done: "Concluído", edit: "Editar", undo: "Desfazer", redo: "Refazer", resetLibrary: "Redefinir biblioteca", createNewRoom: "Criar nova sala", fullScreen: "Tela cheia", darkMode: "Modo escuro", lightMode: "Modo claro", zenMode: "Modo Zen", objectsSnapMode: "", exitZenMode: "Sair do modo zen", cancel: "Cancelar", clear: "Limpar", remove: "Remover", embed: "", publishLibrary: "Publicar", submit: "Enviar", confirm: "Confirmar", embeddableInteractionButton: "" }, iV = { clearReset: "Isto irá limpar toda a tela. Você tem certeza?", couldNotCreateShareableLink: "Não foi possível criar um link de compartilhamento.", couldNotCreateShareableLinkTooBig: "Não foi possível criar um link compartilhável: a cena é muito grande", couldNotLoadInvalidFile: "Não foi possível carregar o arquivo inválido", importBackendFailed: "A importação do servidor falhou.", cannotExportEmptyCanvas: "Não é possível exportar um canvas vazio.", couldNotCopyToClipboard: "Não foi possível copiar para a área de transferência.", decryptFailed: "Não foi possível descriptografar os dados.", uploadedSecurly: "O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.", loadSceneOverridePrompt: "Carregar um desenho externo substituirá o seu conteúdo existente. Deseja continuar?", collabStopOverridePrompt: `Ao interromper a sessão, você substituirá seu desenho anterior, armazenado localmente. Você tem certeza?

(Se você deseja manter seu desenho local, simplesmente feche a aba do navegador.)`, errorAddingToLibrary: "Não foi possível adicionar o item à biblioteca", errorRemovingFromLibrary: "Não foi possível remover o item da biblioteca", confirmAddLibrary: "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?", imageDoesNotContainScene: "Esta imagem parece não conter dados de cenas. Você ativou a incorporação da cena durante a exportação?", cannotRestoreFromImage: "Não foi possível restaurar a cena deste arquivo de imagem", invalidSceneUrl: "Não foi possível importar a cena da URL fornecida. Ela está incompleta ou não contém dados JSON válidos do Excalidraw.", resetLibrary: "Isto limpará a sua biblioteca. Você tem certeza?", removeItemsFromsLibrary: "Excluir {{count}} item(ns) da biblioteca?", invalidEncryptionKey: "A chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desabilitada.", collabOfflineWarning: `Sem conexão com a internet disponível.
Suas alterações não serão salvas!` }, EV = { unsupportedFileType: "Tipo de arquivo não suportado.", imageInsertError: "Não foi possível inserir imagem. Tente novamente mais tarde...", fileTooBig: "O arquivo é muito grande. O tamanho máximo permitido é {{maxSize}}.", svgImageInsertError: "Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.", failedToFetchImage: "", invalidSVGString: "SVG Inválido.", cannotResolveCollabServer: "Não foi possível conectar-se ao servidor colaborativo. Por favor, recarregue a página e tente novamente.", importLibraryError: "Não foi possível carregar a biblioteca", collabSaveFailed: "Não foi possível salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.", collabSaveFailed_sizeExceeded: "Não foi possível salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.", imageToolNotSupported: "", brave_measure_text_error: { line1: "Parece que você está usando o navegador Brave com a configuração <bold>Bloquear Impressões Digitais</bold> no modo agressivo.", line2: "Isso pode acabar quebrando <bold>Elementos de Texto</bold> em seus desenhos.", line3: "Recomendamos fortemente desativar essa configuração. Você pode acessar o <link>passo a passo</link> sobre como fazer isso.", line4: "Se desativar essa configuração não corrigir a exibição de elementos de texto, por favor abra uma <issueLink>issue</issueLink> em nosso GitHub, ou mande uma mensagem em nosso <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aV = { selection: "Seleção", image: "Inserir imagem", rectangle: "Retângulo", diamond: "Losango", ellipse: "Elipse", arrow: "Flecha", line: "Linha", freedraw: "Desenhar", text: "Texto", library: "Biblioteca", lock: "Manter ativa a ferramenta selecionada após desenhar", penMode: "Modo caneta — impede o toque", link: "Adicionar/Atualizar link para uma forma selecionada", eraser: "Borracha", frame: "Ferramenta de quadro", magicframe: "", embeddable: "", laser: "", hand: "Mão (ferramenta de rolagem)", extraTools: "Mais ferramentas", mermaidToExcalidraw: "", magicSettings: "" }, IV = { canvasActions: "Ações da tela", selectedShapeActions: "Ações das formas selecionadas", shapes: "Formas" }, oV = { canvasPanning: "Para mover a tela, segure a roda do mouse ou a barra de espaço enquanto arrasta ou use a ferramenta de mão", linearElement: "Clique para iniciar vários pontos, arraste para uma única linha", freeDraw: "Toque e arraste, solte quando terminar", text: "Dica: você também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção", embeddable: "", text_selected: "Clique duplo ou tecle ENTER para editar o texto", text_editing: "Pressione Esc ou Ctrl/Cmd+ENTER para encerrar a edição", linearElementMulti: "Clique no último ponto ou pressione Escape ou Enter para terminar", lockAngle: "Você pode restringir o ângulo segurando o SHIFT", resize: `Você pode restringir proporções segurando SHIFT enquanto redimensiona,
segure ALT para redimensionar do centro`, resizeImage: `Você pode redimensionar livremente segurando SHIFT,
segure ALT para redimensionar a partir do centro`, rotate: "Você pode restringir os ângulos segurando SHIFT enquanto gira", lineEditor_info: "Pressione CtrlOuCmd e duplo-clique ou pressione CtrlOuCmd + Enter para editar pontos", lineEditor_pointSelected: `Pressione Delete para remover o(s) ponto(s),
Ctrl/Cmd+D para duplicar ou arraste para mover`, lineEditor_nothingSelected: "Selecione um ponto para editar (segure SHIFT para selecionar vários) ou segure Alt e clique para adicionar novos pontos", placeImage: "Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho", publishLibrary: "Publicar sua própria biblioteca", bindTextToElement: "Pressione Enter para adicionar o texto", deepBoxSelect: "Segure Ctrl/Cmd para seleção profunda e para evitar arrastar", eraserRevert: "Segure a tecla Alt para inverter os elementos marcados para exclusão", firefox_clipboard_write: 'Esse recurso pode ser ativado configurando a opção "dom.events.asyncClipboard.clipboardItem" como "true". Para alterar os sinalizadores do navegador no Firefox, visite a página "about:config".', disableSnapping: "" }, QV = { cannotShowPreview: "Não é possível mostrar pré-visualização", canvasTooBig: "A tela pode ser muito grande.", canvasTooBigTip: "Dica: tente aproximar um pouco os elementos mais distantes." }, nV = { headingMain: "Foi encontrado um erro. Tente <button>recarregar a página.</button>", clearCanvasMessage: "Se recarregar a página não funcionar, tente <button>limpando a tela.</button>", clearCanvasCaveat: " Isso resultará em perda de trabalho ", trackedToSentry: "O erro com o identificador {{eventId}} foi rastreado no nosso sistema.", openIssueMessage: "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso <button>rastreador de bugs.</button> Por favor, inclua informações abaixo, copiando e colando para a issue do GitHub.", sceneContent: "Conteúdo da cena:" }, rV = { desc_intro: "Você pode convidar pessoas para sua cena atual para colaborar com você.", desc_privacy: "Não se preocupe, a sessão usa criptografia de ponta a ponta; portanto, o que você desenhar permanecerá privado. Nem mesmo nosso servidor poderá ver o que você cria.", button_startSession: "Iniciar sessão", button_stopSession: "Parar sessão", desc_inProgressIntro: "A sessão de colaboração ao vivo está agora em andamento.", desc_shareLink: "Compartilhe este link com qualquer pessoa com quem você queira colaborar:", desc_exitSession: "Interrompendo a sessão você irá se desconectar da sala, mas você poderá continuar trabalhando com a cena localmente. Observe que isso não afetará outras pessoas, e elas ainda poderão colaborar em suas versões.", shareTitle: "Participe de uma sessão ao vivo de colaboração no Excalidraw" }, sV = { title: "Erro" }, lV = { disk_title: "Salvar no computador", disk_details: "Exportar os dados da cena para um arquivo que você poderá importar mais tarde.", disk_button: "Salvar em um arquivo", link_title: "Link compartilhável", link_details: "Exportar como link de apenas leitura.", link_button: "Exportar link", excalidrawplus_description: "Salvar a cena na sua área de trabalho Excalidraw+.", excalidrawplus_button: "Exportar", excalidrawplus_exportError: "Não é possível exportar para o Excalidraw+ neste momento..." }, cV = { blog: "Leia o nosso blog", click: "clicar", deepSelect: "Seleção profunda", deepBoxSelect: "Use a seleção profunda dentro da caixa para previnir arrastar", curvedArrow: "Seta curva", curvedLine: "Linha curva", documentation: "Documentação", doubleClick: "clique duplo", drag: "arrastar", editor: "Editor", editLineArrowPoints: "Editar linha/ponta da seta", editText: "Editar texto / adicionar etiqueta", github: "Encontrou algum problema? Nos informe", howto: "Siga nossos guias", or: "ou", preventBinding: "Evitar fixação de seta", tools: "Ferramentas", shortcuts: "Atalhos de teclado", textFinish: "Encerrar edição (editor de texto)", textNewLine: "Adicionar nova linha (editor de texto)", title: "Ajudar", view: "Visualizar", zoomToFit: "Ampliar para encaixar todos os elementos", zoomToSelection: "Ampliar a seleção", toggleElementLock: "Bloquear/desbloquear seleção", movePageUpDown: "Mover a página para cima/baixo", movePageLeftRight: "Mover a página para esquerda/direita" }, dV = { title: "Limpar a tela" }, DV = { title: "Publicar biblioteca", itemName: "Nome do item", authorName: "Nome do autor", githubUsername: "Nome de usuário do GitHub", twitterUsername: "Nome de usuário do Twitter", libraryName: "Nome da Biblioteca", libraryDesc: "Descrição da biblioteca", website: "Site", placeholder: { authorName: "Seu nome ou nome de usuário", libraryName: "Nome da sua biblioteca", libraryDesc: "Descrição para ajudar as pessoas a entenderem o uso da sua da sua biblioteca", githubHandle: "Identificador do GitHub (opcional), para que você possa editar a biblioteca depois de enviar para revisão", twitterHandle: "Nome de usuário do Twitter (opcional), para que saibamos quem deve ser creditado se promovermos no Twitter", website: "Link para o seu site pessoal ou outro lugar (opcional)" }, errors: { required: "Obrigatório", website: "Informe uma URL válida" }, noteDescription: "Envie sua biblioteca para ser incluída no <link>repositório de biblioteca pública</link>para outras pessoas usarem em seus desenhos.", noteGuidelines: "A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o <link>orientações</link> antes de enviar. Você precisará de uma conta do GitHub para se comunicar e fazer alterações quando solicitado, mas não é estritamente necessário.", noteLicense: "Ao enviar, você concorda que a biblioteca será publicada sob a <link>Licença MIT, </link>o que, em suma, significa que qualquer pessoa pode utilizá-los sem restrições.", noteItems: "Cada item da biblioteca deve ter seu próprio nome para que seja filtrável. Os seguintes itens da biblioteca serão incluídos:", atleastOneLibItem: "Por favor, selecione pelo menos um item da biblioteca para começar", republishWarning: "Nota: alguns dos itens selecionados estão marcados como já publicado/enviado. Você só deve reenviar itens ao atualizar uma biblioteca existente ou submissão." }, hV = { title: "Biblioteca enviada", content: "Obrigado {{authorName}}. Sua biblioteca foi enviada para análise. Você pode acompanhar o status<link>aqui</link>" }, wV = { resetLibrary: "Redefinir biblioteca", removeItemsFromLib: "Remover itens selecionados da biblioteca" }, FV = { header: "Exportar imagem", label: { withBackground: "Fundo", onlySelected: "Somente selecionados", darkMode: "Modo escuro", embedScene: "Incorporar cena", scale: "Escala", padding: "Margem interna" }, tooltip: { embedScene: `Os dados da cena serão salvos no arquivo PNG/SVG exportado para que a cena possa ser restaurada a partir dele.
Isso aumentará o tamanho do arquivo exportado.` }, title: { exportToPng: "Exportar como PNG", exportToSvg: "Exportar como SVG", copyPngToClipboard: "Copiar PNG para área de transferência" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copiar para a área de transferência" } }, pV = { tooltip: "Seus desenhos são criptografados de ponta a ponta, então os servidores do Excalidraw nunca os verão.", link: "Publicação de blog com criptografia de ponta a ponta no Excalidraw" }, mV = { angle: "Ângulo", element: "Elemento", elements: "Elementos", height: "Altura", scene: "Cena", selected: "Selecionado", storage: "Armazenamento", title: "Estatísticas para nerds", total: "Total", version: "Versão", versionCopy: "Clique para copiar", versionNotAvailable: "Versão não disponível", width: "Largura" }, kV = { addedToLibrary: "Adicionado à biblioteca", copyStyles: "Estilos copiados.", copyToClipboard: "Copiado para área de transferência.", copyToClipboardAsPng: "{{exportSelection}} copiado para a área de transferência como PNG ({{exportColorScheme}})", fileSaved: "Arquivo salvo.", fileSavedToFilename: "Salvo em {filename}", canvas: "tela", selection: "seleção", pasteAsSingleElement: `Use {{shortcut}} para colar como um único elemento,
ou cole em um editor de texto já existente`, unableToEmbed: "", unrecognizedLinkFormat: "" }, yV = { transparent: "Transparente", black: "Preto", white: "Branco", red: "Vermelho", pink: "Rosa", grape: "Uva", violet: "Violeta", gray: "Cinza", blue: "Azul", cyan: "Ciano", teal: "Verde-azulado", green: "Verde", yellow: "Amarelo", orange: "Laranja", bronze: "Bronze" }, bV = { app: { center_heading: "Todos os dados são salvos localmente no seu navegador.", center_heading_plus: "Você queria ir para o Excalidraw+ em vez disso?", menuHint: "Exportar, preferências, idiomas..." }, defaults: { menuHint: "Exportar, preferências e mais...", center_heading: "Diagramas, Feito. Simples.", toolbarHint: "Escolha uma ferramenta e comece a desenhar!", helpHint: "Atalhos e ajuda" } }, UV = { mostUsedCustomColors: "Cores personalizadas mais usadas", colors: "Cores", shades: "Tons", hexCode: "Código hexadecimal", noShades: "Sem tons disponíveis para essa cor" }, GV = { action: { exportToImage: { title: "Exportar como imagem", button: "Exportar como imagem", description: "Exportar os dados da cena para um arquivo que você poderá importar mais tarde." }, saveToDisk: { title: "Salvar no computador", button: "Salvar no computador", description: "Exportar os dados da cena para um arquivo que você poderá importar mais tarde." }, excalidrawPlus: { title: "Excalidraw+", button: "Exportar para Excalidraw+", description: "Salvar a cena na sua área de trabalho Excalidraw+." } }, modal: { loadFromFile: { title: "Carregar de arquivo", button: "Carregar de arquivo", description: "Carregar de um arquivo irá <bold> substituir o conteúdo existente</bold>.<br></br>Você pode salvar seu desenho primeiro usando uma das opções abaixo." }, shareableLink: { title: "Carregar de um link", button: "Substituir meu conteúdo", description: "Carregar um desenho externo irá <bold> substituir seu conteúdo existente</bold>.<br></br>Você pode salvar seu desenho antes utilizando uma das opções abaixo." } } }, fV = { title: "", button: "", description: "", syntax: "", preview: "" }, R7A = { labels: BV, library: gV, buttons: tV, alerts: iV, errors: EV, toolBar: aV, headings: IV, hints: oV, canvasError: QV, errorSplash: nV, roomDialog: rV, errorDialog: sV, exportDialog: lV, helpDialog: cV, clearCanvasDialog: dV, publishDialog: DV, publishSuccessDialog: hV, confirmDialog: wV, imageExportDialog: FV, encrypted: pV, stats: mV, toast: kV, colors: yV, welcomeScreen: bV, colorPicker: UV, overwriteConfirm: GV, mermaid: fV };
const M7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iV,
  buttons: tV,
  canvasError: QV,
  clearCanvasDialog: dV,
  colorPicker: UV,
  colors: yV,
  confirmDialog: wV,
  default: R7A,
  encrypted: pV,
  errorDialog: sV,
  errorSplash: nV,
  errors: EV,
  exportDialog: lV,
  headings: IV,
  helpDialog: cV,
  hints: oV,
  imageExportDialog: FV,
  labels: BV,
  library: gV,
  mermaid: fV,
  overwriteConfirm: GV,
  publishDialog: DV,
  publishSuccessDialog: hV,
  roomDialog: rV,
  stats: mV,
  toast: kV,
  toolBar: aV,
  welcomeScreen: bV
}, Symbol.toStringTag, { value: "Module" }));
var LV = { paste: "Colar", pasteAsPlaintext: "Colar como texto simples", pasteCharts: "Colar gráficos", selectAll: "Selecionar tudo", multiSelect: "Adicionar elemento à seleção", moveCanvas: "Mover tela", cut: "Cortar", copy: "Copiar", copyAsPng: "Copiar para a área de transferência como PNG", copyAsSvg: "Copiar para a área de transferência como SVG", copyText: "Copiar para Área de Transferência como texto", copySource: "", convertToCode: "", bringForward: "Trazer para o primeiro plano", sendToBack: "Enviar para o plano de fundo", bringToFront: "Trazer para o primeiro plano", sendBackward: "Enviar para trás", delete: "Apagar", copyStyles: "Copiar os estilos", pasteStyles: "Colar os estilos", stroke: "Contornos", background: "Fundo", fill: "Preenchimento", strokeWidth: "Espessura do traço", strokeStyle: "Estilo de traço", strokeStyle_solid: "Sólido", strokeStyle_dashed: "Tracejado", strokeStyle_dotted: "Pontilhado", sloppiness: "Desleixo", opacity: "Opacidade", textAlign: "Alinhamento do texto", edges: "Arestas", sharp: "Aguçado", round: "Redondo", arrowheads: "Pontas", arrowhead_none: "Nenhuma", arrowhead_arrow: "Seta", arrowhead_bar: "Barra", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Triângulo", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Tamanho da fonte", fontFamily: "Família da fontes", addWatermark: 'Adicionar "Feito com Excalidraw"', handDrawn: "Manuscrito", normal: "Normal", code: "Código", small: "Pequeno", medium: "Médio", large: "Grande", veryLarge: "Muito grande", solid: "Sólido", hachure: "Eclosão", zigzag: "ziguezague", crossHatch: "Sombreado", thin: "Fino", bold: "Espesso", left: "Esquerda", center: "Centralizar", right: "Direita", extraBold: "Muito espesso", architect: "Arquitecto", artist: "Artista", cartoonist: "Caricaturista", fileTitle: "Nome do ficheiro", colorPicker: "Seletor de cores", canvasColors: "Usado na tela", canvasBackground: "Fundo da área de desenho", drawingCanvas: "Área de desenho", layers: "Camadas", actions: "Ações", language: "Idioma", liveCollaboration: "Colaboração ao vivo...", duplicateSelection: "Duplicar", untitled: "Sem título", name: "Nome", yourName: "O seu nome", madeWithExcalidraw: "Feito com Excalidraw", group: "Agrupar seleção", ungroup: "Desagrupar seleção", collaborators: "Colaboradores", showGrid: "Mostrar grelha", addToLibrary: "Adicionar à biblioteca", removeFromLibrary: "Remover da biblioteca", libraryLoadingMessage: "A carregar a biblioteca…", libraries: "Procurar bibliotecas", loadingScene: "A carregar a cena…", align: "Alinhamento", alignTop: "Alinhar ao topo", alignBottom: "Alinhar ao fundo", alignLeft: "Alinhar à esquerda", alignRight: "Alinhar à direita", centerVertically: "Centrar verticalmente", centerHorizontally: "Centrar horizontalmente", distributeHorizontally: "Distribuir horizontalmente", distributeVertically: "Distribuir verticalmente", flipHorizontal: "Inverter horizontalmente", flipVertical: "Inverter verticalmente", viewMode: "Modo de visualização", share: "Partilhar", showStroke: "Mostrar seletor de cores do traço", showBackground: "Mostrar seletor de cores do fundo", toggleTheme: "Alternar tema", personalLib: "Biblioteca pessoal", excalidrawLib: "Biblioteca do Excalidraw", decreaseFontSize: "Reduzir o tamanho do tipo de letra", increaseFontSize: "Aumentar o tamanho do tipo de letra", unbindText: "Desvincular texto", bindText: "Ligar texto ao recipiente", createContainerFromText: "Envolver texto num recipiente", link: { edit: "Editar ligação", editEmbed: "", create: "Criar ligação", createEmbed: "", label: "Ligação", labelEmbed: "", empty: "" }, lineEditor: { edit: "Editar linha", exit: "Sair do editor de linha" }, elementLock: { lock: "Bloquear", unlock: "Desbloquear", lockAll: "Bloquear todos", unlockAll: "Desbloquear todos" }, statusPublished: "Publicado", sidebarLock: "Manter a barra lateral aberta", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xV = { noItems: "Ainda não foram adicionados nenhuns itens...", hint_emptyLibrary: "Seleccione um item na tela para adicioná-lo aqui, ou então instale uma biblioteca do repositório público abaixo.", hint_emptyPrivateLibrary: "Seleccione um item na tela para adicioná-lo aqui." }, SV = { clearReset: "Limpar a área de desenho e redefinir a cor de fundo", exportJSON: "Exportar para ficheiro", exportImage: "Exportar imagem...", export: "Guardar para...", copyToClipboard: "Copiar para o clipboard", save: "Guardar no ficheiro atual", saveAs: "Guardar como", load: "Abrir", getShareableLink: "Obter um link de partilha", close: "Fechar", selectLanguage: "Selecionar idioma", scrollBackToContent: "Voltar ao conteúdo", zoomIn: "Aumentar zoom", zoomOut: "Diminuir zoom", resetZoom: "Redefinir zoom", menu: "Menu", done: "Concluído", edit: "Editar", undo: "Desfazer", redo: "Refazer", resetLibrary: "Repor a biblioteca", createNewRoom: "Criar nova sala", fullScreen: "Ecrã inteiro", darkMode: "Modo escuro", lightMode: "Modo claro", zenMode: "Modo zen", objectsSnapMode: "", exitZenMode: "Sair do modo zen", cancel: "Cancelar", clear: "Limpar", remove: "Remover", embed: "", publishLibrary: "Publicar", submit: "Enviar", confirm: "Confirmar", embeddableInteractionButton: "" }, NV = { clearReset: "Isto irá limpar toda a área de desenho. Tem a certeza?", couldNotCreateShareableLink: "Não foi possível criar um link partilhável.", couldNotCreateShareableLinkTooBig: "Não foi possível criar um link partilhável: a cena é muito grande", couldNotLoadInvalidFile: "Não foi possível carregar o ficheiro inválido", importBackendFailed: "A importação do servidor falhou.", cannotExportEmptyCanvas: "Não é possível exportar uma área de desenho vazia.", couldNotCopyToClipboard: "Não foi possível copiar para a área de transferência.", decryptFailed: "Não foi possível desencriptar os dados.", uploadedSecurly: "O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.", loadSceneOverridePrompt: "Se carregar um desenho externo substituirá o conteúdo existente. Quer continuar?", collabStopOverridePrompt: `Ao interromper a sessão irá substituir o último desenho guardado. Tem a certeza?

(Caso queira manter o último desenho, simplesmente feche a janela do navegador.)`, errorAddingToLibrary: "Não foi possível adicionar o item à biblioteca", errorRemovingFromLibrary: "Não foi possível remover o item da biblioteca", confirmAddLibrary: "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem a certeza?", imageDoesNotContainScene: "Esta imagem parece não conter dados de cenas. Ativou a incorporação da cena durante a exportação?", cannotRestoreFromImage: "Não foi possível restaurar a cena deste ficheiro de imagem", invalidSceneUrl: "Não foi possível importar a cena a partir do URL fornecido. Ou está mal formado ou não contém dados JSON do Excalidraw válidos.", resetLibrary: "Isto irá limpar a sua biblioteca. Tem a certeza?", removeItemsFromsLibrary: "Apagar {{count}} item(ns) da biblioteca?", invalidEncryptionKey: "Chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desativada.", collabOfflineWarning: `Sem ligação à internet disponível.
As suas alterações não serão salvas!` }, RV = { unsupportedFileType: "Tipo de ficheiro não suportado.", imageInsertError: "Não foi possível inserir a imagem, tente novamente mais tarde...", fileTooBig: "O ficheiro é muito grande. O tamanho máximo permitido é {{maxSize}}.", svgImageInsertError: "Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.", failedToFetchImage: "", invalidSVGString: "SVG inválido.", cannotResolveCollabServer: "Não foi possível fazer a ligação ao servidor colaborativo. Por favor, volte a carregar a página e tente novamente.", importLibraryError: "Não foi possível carregar a biblioteca", collabSaveFailed: "Não foi possível guardar na base de dados de backend. Se os problemas persistirem, guarde o ficheiro localmente para garantir que não perde o seu trabalho.", collabSaveFailed_sizeExceeded: "Não foi possível guardar na base de dados de backend, o ecrã parece estar muito grande. Deve guardar o ficheiro localmente para garantir que não perde o seu trabalho.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MV = { selection: "Seleção", image: "Inserir imagem", rectangle: "Retângulo", diamond: "Losango", ellipse: "Elipse", arrow: "Flecha", line: "Linha", freedraw: "Desenhar", text: "Texto", library: "Biblioteca", lock: "Manter a ferramenta selecionada ativa após desenhar", penMode: "Modo caneta - impedir toque", link: "Acrescentar/ Adicionar ligação para uma forma seleccionada", eraser: "Borracha", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Mão (ferramenta de movimento da tela)", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, YV = { canvasActions: "Ações da área de desenho", selectedShapeActions: "Ações das formas selecionadas", shapes: "Formas" }, vV = { canvasPanning: "Para mover a tela, carregue na roda do rato ou na barra de espaço enquanto arrasta, ou use a ferramenta da mão", linearElement: "Clique para iniciar vários pontos, arraste para uma única linha", freeDraw: "Clique e arraste, large quando terminar", text: "Dica: também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção", embeddable: "", text_selected: "Clique duas vezes ou pressione a tecla Enter para editar o texto", text_editing: "Pressione a tecla Escape ou CtrlOrCmd+ENTER para terminar a edição", linearElementMulti: "Clique no último ponto ou pressione Escape ou Enter para terminar", lockAngle: "Pode restringir o ângulo mantendo premida a tecla SHIFT", resize: `Pode restringir as proporções mantendo a tecla SHIFT premida enquanto redimensiona,
mantenha a tecla ALT premida para redimensionar a partir do centro`, resizeImage: `Pode redimensionar livremente mantendo pressionada a tecla SHIFT,
mantenha pressionada a tecla ALT para redimensionar do centro`, rotate: "Pode restringir os ângulos mantendo a tecla SHIFT premida enquanto roda", lineEditor_info: "Pressione CtrlOrCmd e faça um duplo-clique ou pressione CtrlOrCmd + Enter para editar pontos", lineEditor_pointSelected: "Carregue na tecla Delete para remover o(s) ponto(s), CtrlOuCmd+D para duplicar, ou arraste para mover", lineEditor_nothingSelected: `Seleccione um ponto para editar (carregue em SHIFT para seleccionar vários),
ou carregue em Alt e clique para acrescentar novos pontos`, placeImage: "Clique para colocar a imagem ou clique e arraste para definir o seu tamanho manualmente", publishLibrary: "Publique a sua própria biblioteca", bindTextToElement: "Carregue Enter para acrescentar texto", deepBoxSelect: "Mantenha a tecla CtrlOrCmd carregada para selecção profunda, impedindo o arrastamento", eraserRevert: "Carregue também em Alt para reverter os elementos marcados para serem apagados", firefox_clipboard_write: 'Esta função pode provavelmente ser ativada definindo a opção "dom.events.asyncClipboard.clipboardItem" como "true". Para alterar os sinalizadores do navegador no Firefox, visite a página "about:config".', disableSnapping: "" }, HV = { cannotShowPreview: "Não é possível mostrar uma pré-visualização", canvasTooBig: "A área de desenho pode ser muito grande.", canvasTooBigTip: "Dica: tente aproximar um pouco os elementos mais distantes." }, KV = { headingMain: "Foi encontrado um erro. Tente <button>recarregar a página.</button>", clearCanvasMessage: "Se a recarga não funcionar, tente <button>a limpar a área de desenho.</button>", clearCanvasCaveat: " Isso resultará em perda de trabalho ", trackedToSentry: "O erro com o identificador {{eventId}} foi rastreado no nosso sistema.", openIssueMessage: "Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso <button>rastreador de bugs.</button> Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.", sceneContent: "Conteúdo da cena:" }, JV = { desc_intro: "Pode convidar pessoas para colaborarem na sua cena atual.", desc_privacy: "Não se preocupe, a sessão usa criptografia de ponta-a-ponta, por isso o que desenhar permanecerá privado. Nem mesmo o nosso servidor poderá ver o que cria.", button_startSession: "Iniciar sessão", button_stopSession: "Parar sessão", desc_inProgressIntro: "A sessão de colaboração ao vivo está agora em andamento.", desc_shareLink: "Partilhe este link com qualquer pessoa com quem queira colaborar:", desc_exitSession: "Interrompendo a sessão irá desconectar-se da sala, mas poderá continuar a trabalhar com a cena localmente. Note que isso não afetará outras pessoas e elas ainda poderão colaborar nas versões deles.", shareTitle: "Participe numa sessão de colaboração ao vivo no Excalidraw" }, ZV = { title: "Erro" }, qV = { disk_title: "Guardar no disco", disk_details: "Exportar os dados da cena para um ficheiro do qual poderá importar mais tarde.", disk_button: "Guardar num ficheiro", link_title: "Link partilhável", link_details: "Exportar como um link de apenas leitura.", link_button: "Exportar para link", excalidrawplus_description: "Guardar a cena no seu espaço de trabalho Excalidraw+", excalidrawplus_button: "Exportar", excalidrawplus_exportError: "Não foi possível exportar para o Excalidraw+ neste momento..." }, WV = { blog: "Leia o nosso blogue", click: "clicar", deepSelect: "Selecção profunda", deepBoxSelect: "Selecção profunda dentro da caixa, impedindo que seja arrastada", curvedArrow: "Seta curva", curvedLine: "Linha curva", documentation: "Documentação", doubleClick: "clique duplo", drag: "arrastar", editor: "Editor", editLineArrowPoints: "Editar pontos de linha/seta", editText: "Editar texto / adicionar etiqueta", github: "Encontrou algum problema? Informe-nos", howto: "Siga os nossos guias", or: "ou", preventBinding: "Prevenir fixação de seta", tools: "Ferramentas", shortcuts: "Atalhos de teclado", textFinish: "Finalizar edição (editor texto)", textNewLine: "Adicionar nova linha (editor de texto)", title: "Ajuda", view: "Visualizar", zoomToFit: "Ajustar para todos os elementos caberem", zoomToSelection: "Ampliar a seleção", toggleElementLock: "Trancar/destrancar selecção", movePageUpDown: "Mover página para cima / baixo", movePageLeftRight: "Mover página para esquerda / direita" }, jV = { title: "Apagar tela" }, TV = { title: "Publicar biblioteca", itemName: "Nome do item", authorName: "Nome do autor", githubUsername: "Nome de utilizador do GitHub", twitterUsername: "Nome de utilizador no Twitter", libraryName: "Nome da biblioteca", libraryDesc: "Descrição da biblioteca", website: "Página web", placeholder: { authorName: "Introduza o seu nome ou nome de utilizador", libraryName: "Nome da sua biblioteca", libraryDesc: "Descrição da sua biblioteca para ajudar as pessoas a entender a utilização dela", githubHandle: "Identificador do GitHub (opcional), para que possa editar a biblioteca depois desta ser enviada para revisão", twitterHandle: "Nome do Twitter (opcional), para que saibamos quem merece os créditos na promoção via Twitter", website: "Ligação para a sua página pessoal ou qualquer outra (opcional)" }, errors: { required: "Obrigatório", website: "Introduza um URL válido" }, noteDescription: "Envie a sua biblioteca para ser incluída no <link>repositório de bibliotecas públicas</link>para outras pessoas a poderem usar nos seus próprios desenhos.", noteGuidelines: "A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia <link>orientações</link> antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária.", noteLicense: "Ao enviar, concorda que a biblioteca será publicada sob a <link>Licença MIT, </link>o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições.", noteItems: "Cada item da biblioteca deve ter o seu próprio nome para que este seja pesquisável com filtros. Os seguintes itens da biblioteca serão incluídos:", atleastOneLibItem: "Por favor, seleccione pelo menos um item da biblioteca para começar", republishWarning: "Nota: alguns dos itens seleccionados estão marcados como já publicados/enviados. Só deve reenviar itens ao actualizar uma biblioteca existente ou submissão." }, zV = { title: "Biblioteca enviada", content: "Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o status<link>aqui</link>" }, PV = { resetLibrary: "Repor a biblioteca", removeItemsFromLib: "Remover os itens seleccionados da biblioteca" }, OV = { header: "Exportar imagem", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "Cena embutida", scale: "", padding: "Espaçamento" }, tooltip: { embedScene: "" }, title: { exportToPng: "Exportar em PNG", exportToSvg: "Exportar em SVG", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "" } }, VV = { tooltip: "Os seus desenhos são encriptados de ponta-a-ponta, por isso os servidores do Excalidraw nunca os verão.", link: "Publicação de blogue na encriptação ponta-a-ponta no Excalidraw" }, XV = { angle: "Ângulo", element: "Elemento", elements: "Elementos", height: "Altura", scene: "Cena", selected: "Selecionado", storage: "Armazenamento", title: "Estatísticas para nerds", total: "Total", version: "Versão", versionCopy: "Clique para copiar", versionNotAvailable: "Versão não disponível", width: "Largura" }, _V = { addedToLibrary: "Acrescentado à biblioteca", copyStyles: "Estilos copiados.", copyToClipboard: "Copiado para a área de transferência.", copyToClipboardAsPng: `{{exportSelection}} copiado para a área de transferência como PNG
({{exportColorScheme}})`, fileSaved: "Ficheiro guardado.", fileSavedToFilename: "Guardado como {filename}", canvas: "área de desenho", selection: "seleção", pasteAsSingleElement: `Usar {{shortcut}} para colar como um único elemento,
ou colar num editor de texto existente`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $V = { transparent: "Transparente", black: "Preto", white: "Branco", red: "Vermelho", pink: "Rosa", grape: "Uva", violet: "Violeta", gray: "Cinza", blue: "Azul", cyan: "", teal: "", green: "Verde", yellow: "Amarelo", orange: "Laranja", bronze: "Bronze" }, AX = { app: { center_heading: "Todos os dados são guardados no seu navegador local.", center_heading_plus: "Queria antes ir para o Excalidraw+?", menuHint: "Exportar, preferências, idiomas..." }, defaults: { menuHint: "Exportar, preferências e outros...", center_heading: "Diagramas. Feito. Simples.", toolbarHint: "Escolha uma ferramenta e comece a desenhar!", helpHint: "Atalhos e ajuda" } }, uX = { mostUsedCustomColors: "", colors: "Cores", shades: "Tons", hexCode: "", noShades: "" }, eX = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "Guardar no disco", button: "Guardar no disco", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "Carregar a partir de ficheiro", button: "Carregar a partir de ficheiro", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CX = { title: "", button: "", description: "", syntax: "", preview: "" }, Y7A = { labels: LV, library: xV, buttons: SV, alerts: NV, errors: RV, toolBar: MV, headings: YV, hints: vV, canvasError: HV, errorSplash: KV, roomDialog: JV, errorDialog: ZV, exportDialog: qV, helpDialog: WV, clearCanvasDialog: jV, publishDialog: TV, publishSuccessDialog: zV, confirmDialog: PV, imageExportDialog: OV, encrypted: VV, stats: XV, toast: _V, colors: $V, welcomeScreen: AX, colorPicker: uX, overwriteConfirm: eX, mermaid: CX };
const v7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NV,
  buttons: SV,
  canvasError: HV,
  clearCanvasDialog: jV,
  colorPicker: uX,
  colors: $V,
  confirmDialog: PV,
  default: Y7A,
  encrypted: VV,
  errorDialog: ZV,
  errorSplash: KV,
  errors: RV,
  exportDialog: qV,
  headings: YV,
  helpDialog: WV,
  hints: vV,
  imageExportDialog: OV,
  labels: LV,
  library: xV,
  mermaid: CX,
  overwriteConfirm: eX,
  publishDialog: TV,
  publishSuccessDialog: zV,
  roomDialog: JV,
  stats: XV,
  toast: _V,
  toolBar: MV,
  welcomeScreen: AX
}, Symbol.toStringTag, { value: "Module" }));
var BX = { paste: "Lipire", pasteAsPlaintext: "Inserare ca text simplu", pasteCharts: "Lipire diagrame", selectAll: "Selectare totală", multiSelect: "Adaugă element la selecție", moveCanvas: "Mutare pânză", cut: "Decupare", copy: "Copiere", copyAsPng: "Copiere în memoria temporară ca PNG", copyAsSvg: "Copiere în memoria temporară ca SVG", copyText: "Copiere în memoria temporară ca text", copySource: "Copiere sursă în memoria temporară", convertToCode: "Convertire în cod", bringForward: "Aducere în plan apropiat", sendToBack: "Trimitere în ultimul plan", bringToFront: "Aducere în prim plan", sendBackward: "Trimitere în plan secundar", delete: "Ștergere", copyStyles: "Copiere stiluri", pasteStyles: "Lipire stiluri", stroke: "Contur", background: "Fundal", fill: "Umplere", strokeWidth: "Lățimea conturului", strokeStyle: "Stilul conturului", strokeStyle_solid: "Neîntrerupt", strokeStyle_dashed: "Liniuțe", strokeStyle_dotted: "Punctat", sloppiness: "Aspectul trasării", opacity: "Opacitate", textAlign: "Alinierea textului", edges: "Margini", sharp: "Ascuțite", round: "Rotunde", arrowheads: "Vârfuri de săgeată", arrowhead_none: "Niciunul", arrowhead_arrow: "Săgeată", arrowhead_bar: "Bară", arrowhead_circle: "Cerc", arrowhead_circle_outline: "Cerc (contur)", arrowhead_triangle: "Triunghi", arrowhead_triangle_outline: "Triunghi (contur)", arrowhead_diamond: "Romb", arrowhead_diamond_outline: "Romb (contur)", fontSize: "Dimensiune font", fontFamily: "Familia de fonturi", addWatermark: "Adaugă „Realizat cu Excalidraw”", handDrawn: "Scris de mână", normal: "Normal", code: "Cod", small: "Mică", medium: "Medie", large: "Mare", veryLarge: "Foarte mare", solid: "Plină", hachure: "Hașură", zigzag: "Zigzag", crossHatch: "Hașură transversală", thin: "Subțire", bold: "Îngroșată", left: "Stânga", center: "Centru", right: "Dreapta", extraBold: "Extra îngroșată", architect: "Arhitect", artist: "Artist", cartoonist: "Caricaturist", fileTitle: "Nume de fișier", colorPicker: "Selector de culoare", canvasColors: "Folosite pe pânză", canvasBackground: "Fundalul pânzei", drawingCanvas: "Pânză pentru desenat", layers: "Straturi", actions: "Acțiuni", language: "Limbă", liveCollaboration: "Colaborare în direct...", duplicateSelection: "Duplicare", untitled: "Nedenumit", name: "Nume", yourName: "Numele tău", madeWithExcalidraw: "Realizat cu Excalidraw", group: "Grupare selecție", ungroup: "Degrupare selecție", collaborators: "Colaboratori", showGrid: "Afișare grilă", addToLibrary: "Adăugare la bibliotecă", removeFromLibrary: "Eliminare din bibliotecă", libraryLoadingMessage: "Se încarcă biblioteca…", libraries: "Răsfoiește bibliotecile", loadingScene: "Se încarcă scena…", align: "Aliniere", alignTop: "Aliniere sus", alignBottom: "Aliniere jos", alignLeft: "Aliniere la stânga", alignRight: "Aliniere la dreapta", centerVertically: "Centrare verticală", centerHorizontally: "Centrare orizontală", distributeHorizontally: "Distribuie orizontal", distributeVertically: "Distribuie vertical", flipHorizontal: "Răsturnare orizontală", flipVertical: "Răsturnare verticală", viewMode: "Mod de vizualizare", share: "Distribuie", showStroke: "Afișare selector culoare contur", showBackground: "Afișare selector culoare fundal", toggleTheme: "Comutare temă", personalLib: "Biblioteca personală", excalidrawLib: "Biblioteca Excalidraw", decreaseFontSize: "Micșorează dimensiunea fontului", increaseFontSize: "Mărește dimensiunea fontului", unbindText: "Deconectare text", bindText: "Legare text de container", createContainerFromText: "Încadrare text într-un container", link: { edit: "Editare URL", editEmbed: "Editare URL și încorporare", create: "Creare URL", createEmbed: "Creare URL și încorporare", label: "URL", labelEmbed: "URL și încorporare", empty: "Nu este setat niciun URL" }, lineEditor: { edit: "Editare linie", exit: "Părăsire editor de linii" }, elementLock: { lock: "Blocare", unlock: "Deblocare", lockAll: "Blocare toate", unlockAll: "Deblocare toate" }, statusPublished: "Publicat", sidebarLock: "Păstrează deschisă bara laterală", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "Alegere culoare din pânză", textToDiagram: "Text la diagramă", prompt: "Solicitare" }, gX = { noItems: "Niciun element adăugat încă...", hint_emptyLibrary: "Selectează un element de pe pânză pentru a-l adăuga aici sau instalează o bibliotecă din depozitul public, de mai jos.", hint_emptyPrivateLibrary: "Selectează un element de pe pânză pentru a-l adăuga aici." }, tX = { clearReset: "Resetare pânză", exportJSON: "Exportare la fișiere", exportImage: "Exportare imagine...", export: "Salvare în...", copyToClipboard: "Copiere în memoria temporară", save: "Salvare în fișierul curent", saveAs: "Salvare ca", load: "Deschidere", getShareableLink: "Obține URL partajabil", close: "Închidere", selectLanguage: "Selectare limbă", scrollBackToContent: "Derulare înapoi la conținut", zoomIn: "Apropiere", zoomOut: "Depărtare", resetZoom: "Resetare transfocare", menu: "Meniu", done: "Efectuat", edit: "Edit", undo: "Anulare", redo: "Refacere", resetLibrary: "Resetare bibliotecă", createNewRoom: "Creare cameră nouă", fullScreen: "Ecran complet", darkMode: "Mod întunecat", lightMode: "Mod luminos", zenMode: "Mod zen", objectsSnapMode: "Ancorare la obiecte", exitZenMode: "Ieșire din modul zen", cancel: "Anulare", clear: "Ștergere", remove: "Eliminare", embed: "Comutare încorporare", publishLibrary: "Publicare", submit: "Trimitere", confirm: "Confirmare", embeddableInteractionButton: "Clic pentru interacționare" }, iX = { clearReset: "Această opțiune va șterge întreaga pânză. Confirmi?", couldNotCreateShareableLink: "Nu s-a putut crea un URL partajabil.", couldNotCreateShareableLinkTooBig: "Nu s-a putut crea un URL partajabil: scena este prea mare", couldNotLoadInvalidFile: "Fișierul invalid nu a putut fi încărcat", importBackendFailed: "Importarea de la nivel de server a eșuat.", cannotExportEmptyCanvas: "Nu se poate exporta pânza goală.", couldNotCopyToClipboard: "Nu s-a putut copia în memoria temporară.", decryptFailed: "Datele nu au putut fi decriptate.", uploadedSecurly: "Încărcarea a fost securizată prin criptare integrală, însemnând că serverul Excalidraw și terții nu pot citi conținutul.", loadSceneOverridePrompt: "Încărcarea desenului extern va înlocui conținutul existent. Dorești să continui?", collabStopOverridePrompt: `Oprirea sesiunii va suprascrie desenul anterior stocat local. Confirmi alegerea?

(Dacă vrei să păstrezi desenul local, pur și simplu închide fila navigatorului în schimb.)`, errorAddingToLibrary: "Elementul nu a putut fi adăugat în bibliotecă", errorRemovingFromLibrary: "Elementul nu a putut fi eliminat din bibliotecă", confirmAddLibrary: "Această acțiune va adăuga {{numShapes}} formă(e) la biblioteca ta. Confirmi?", imageDoesNotContainScene: "Această imagine nu pare să conțină date de scenă. Ai activat încorporarea scenei în timpul exportului?", cannotRestoreFromImage: "Scena nu a putut fi restaurată din acest fișier de imagine", invalidSceneUrl: "Scena nu a putut fi importată din URL-ul furnizat. Este fie incorect formată, fie nu conține date JSON Excalidraw valide.", resetLibrary: "Această opțiune va elimina conținutul din bibliotecă. Confirmi?", removeItemsFromsLibrary: "Ștergi {{count}} element(e) din bibliotecă?", invalidEncryptionKey: "Cheia de criptare trebuie să aibă 22 de caractere. Colaborarea în direct este dezactivată.", collabOfflineWarning: `Nu este disponibilă nicio conexiune la internet.
Modificările nu vor fi salvate!` }, EX = { unsupportedFileType: "Tip de fișier neacceptat.", imageInsertError: "Imaginea nu a putut fi introdusă. Reîncearcă mai târziu...", fileTooBig: "Fișierul este prea mare. Dimensiunea maximă permisă este de {{maxSize}}.", svgImageInsertError: "Imaginea SVG nu a putut fi introdus. Marcajul SVG pare invalid.", failedToFetchImage: "Preluarea imaginii a eșuat.", invalidSVGString: "SVG invalid.", cannotResolveCollabServer: "Nu a putut fi realizată conexiunea la serverul de colaborare. Reîncarcă pagina și încearcă din nou.", importLibraryError: "Biblioteca nu a putut fi încărcată", collabSaveFailed: "Nu s-a putut salva în baza de date la nivel de server. Dacă problemele persistă, ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.", collabSaveFailed_sizeExceeded: "Nu s-a putut salva în baza de date la nivel de server, întrucât se pare că pânza este prea mare. Ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.", imageToolNotSupported: "Imaginile sunt dezactivate.", brave_measure_text_error: { line1: "Se pare că folosești navigatorul Brave cu opțiunea <bold>strictă pentru blocarea amprentării</bold>.", line2: "Acest lucru poate duce la întreruperea <bold>elementelor text</bold> din desene.", line3: "Îți recomandăm ferm să dezactivezi această setare. Poți urma <link>acești pași</link> pentru a face acest lucru.", line4: "Dacă dezactivarea acestei setări nu duce la remedierea afișării elementelor text, deschide un tichet de <issueLink>problemă</issueLink> pe pagina noastră de GitHub sau scrie-ne pe <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Elementele încorporabile nu pot fi adăugate la bibliotecă.", iframe: "Elementele iFrame nu pot fi adăugate la bibliotecă.", image: "În curând vor putea fi adăugate imagini în bibliotecă!" }, asyncPasteFailedOnRead: "Lipirea nu a putut fi efectuată (nu s-a putut citit din memoria temporară a sistemului).", asyncPasteFailedOnParse: "Lipirea nu a putut fi efectuată.", copyToSystemClipboardFailed: "Nu s-a putut copia în memoria temporară." }, aX = { selection: "Selecție", image: "Introducere imagine", rectangle: "Dreptunghi", diamond: "Romb", ellipse: "Elipsă", arrow: "Săgeată", line: "Linie", freedraw: "Desenare", text: "Text", library: "Bibliotecă", lock: "Menține activ instrumentul selectat după desenare", penMode: "Mod stilou – împiedică atingerea", link: "Adăugare/actualizare URL pentru forma selectată", eraser: "Radieră", frame: "", magicframe: "Structură-de-fire la cod", embeddable: "Încorporare web", laser: "Indicator laser", hand: "Mână (instrument de panoramare)", extraTools: "", mermaidToExcalidraw: "Mermaid la Excalidraw", magicSettings: "Setări IA" }, IX = { canvasActions: "Acțiuni pentru pânză", selectedShapeActions: "Acțiuni pentru forma selectată", shapes: "Forme" }, oX = { canvasPanning: "Pentru a muta pânză, ține apăsată rotița mausului sau bara de spațiu sau folosește instrumentul în formă de mână", linearElement: "Dă clic pentru a crea mai multe puncte, glisează pentru a forma o singură linie", freeDraw: "Dă clic pe pânză și glisează cursorul, apoi eliberează-l când ai terminat", text: "Sfat: poți adăuga text și dând dublu clic oriunde cu instrumentul de selecție", embeddable: "Dă clic și trage pentru a crea un cod de încorporare de pagină web", text_selected: "Dă dublu clic sau apasă tasta Enter pentru a edita textul", text_editing: "Apasă tasta Escape sau Ctrl sau Cmd + Enter pentru a finaliza editarea", linearElementMulti: "Dă clic pe ultimul punct sau apasă tasta Escape sau tasta Enter pentru a termina", lockAngle: "Poți constrânge unghiul prin ținerea apăsată a tastei SHIFT", resize: `Poți constrânge proporțiile, ținând apăsată tasta SHIFT în timp ce redimensionezi,
ține apăsată tasta ALT pentru a redimensiona de la centru`, resizeImage: `Poți redimensiona liber ținând apăsată tasta SHIFT,
ține apăsată tasta ALT pentru a redimensiona din centru`, rotate: "Poți constrânge unghiurile, ținând apăsată tasta SHIFT în timp ce rotești", lineEditor_info: "Ține apăsată tasta Ctrl sau Cmd și dă dublu clic sau apasă tasta Ctrl sau Cmd + Enter pentru a edita puncte", lineEditor_pointSelected: `Apasă tasta Delete pentru a elimina punctele,
combinația de taste Ctrl sau Cmd + D pentru a le duplica sau glisează-le pentru a le schimba poziția`, lineEditor_nothingSelected: `Selectează un punct pentru a-l edita (ține apăsată tasta SHIFT pentru a selecta mai multe),
sau ține apăsată tasta Alt și dă clic pentru a adăuga puncte noi`, placeImage: "Dă clic pentru a poziționa imaginea sau dă clic și glisează pentru a seta manual dimensiunea imaginii", publishLibrary: "Publică propria bibliotecă", bindTextToElement: "Apasă tasta Enter pentru a adăuga text", deepBoxSelect: "Ține apăsată tasta Ctrl sau Cmd pentru a efectua selectarea de adâncime și pentru a preveni glisarea", eraserRevert: "Ține apăsată tasta Alt pentru a anula elementele marcate pentru ștergere", firefox_clipboard_write: "Această caracteristică poate fi probabil activată prin setarea preferinței „dom.events.asyncClipboard.clipboardItem” ca „true”. Pentru a schimba preferințele navigatorului în Firefox, accesează pagina „about:config”.", disableSnapping: "Ține apăsat CtrlOrCmd pentru a dezactiva ancorarea" }, QX = { cannotShowPreview: "Nu se poate afișa previzualizarea", canvasTooBig: "Pânza poate fi prea mare.", canvasTooBigTip: "Sfat: încearcă să apropii puțin mai mult elementele cele mai îndepărtate." }, nX = { headingMain: "A apărut o eroare. Încearcă <button>să reîncarci pagina</button>.", clearCanvasMessage: "Dacă reîncărcarea nu funcționează, încearcă <button>să ștergi pânza</button>.", clearCanvasCaveat: " Acest lucru va duce la pierderea progresului ", trackedToSentry: "Eroarea cu identificatorul {{eventId}} a fost urmărită în sistemul nostru.", openIssueMessage: "Am luat măsuri de precauție pentru a nu include informații despre scenă în eroare. Dacă scena nu este privată, oferă-ne mai multe informații în <button>monitorul nostru pentru erori</button>. Include informațiile de mai jos copiindu-le și lipindu-le în tichetul cu problemă de pe GitHub.", sceneContent: "Conținutul scenei:" }, rX = { desc_intro: "Poți invita alte persoane pentru a colabora la scena actuală.", desc_privacy: "Nu te îngrijora. Sesiunea utilizează criptarea integrală, astfel încât orice desenezi va rămâne privat. Nici măcar serverul nostru nu va putea vedea pe ce ai lucrat.", button_startSession: "Pornire sesiune", button_stopSession: "Oprire sesiune", desc_inProgressIntro: "Sesiunea de colaborare în direct este în curs de desfășurare.", desc_shareLink: "Distribuie acest URL persoanelor cu care dorești să colaborezi:", desc_exitSession: "Oprirea sesiunii te va deconecta de la sală, însă vei putea lucra în continuare, pe plan local, cu scena. Reține că această opțiune nu va afecta alte persoane, iar acestea vor putea să colaboreze în continuare pe versiunea lor.", shareTitle: "Alătură-te unei sesiuni de colaborare în direct pe Excalidraw" }, sX = { title: "Eroare" }, lX = { disk_title: "Salvare pe disc", disk_details: "Exportă datele scenei pe un fișier din care poți importa mai târziu.", disk_button: "Salvare în fișier", link_title: "URL partajabil", link_details: "Exportă ca URL doar în citire.", link_button: "Exportare în URL", excalidrawplus_description: "Salvează scena în spațiul de lucru Excalidraw+.", excalidrawplus_button: "Exportare", excalidrawplus_exportError: "Excalidraw+ nu a putut fi exportat în acest moment..." }, cX = { blog: "Citește blogul nostru", click: "clic", deepSelect: "Selectare de adâncime", deepBoxSelect: "Selectare de adâncime în casetă și prevenire glisare", curvedArrow: "Săgeată curbată", curvedLine: "Linie curbată", documentation: "Documentație", doubleClick: "dublu clic", drag: "glisare", editor: "Editor", editLineArrowPoints: "Editare puncte de săgeată/rând", editText: "Editare text/adăugare etichetă", github: "Ai întâmpinat o problemă? Trimite un raport", howto: "Urmărește ghidurile noastre", or: "sau", preventBinding: "Împiedică legarea săgeții", tools: "Instrumente", shortcuts: "Comenzi rapide de la tastatură", textFinish: "Finalizează editarea (editor de text)", textNewLine: "Adaugă o linie nouă (editor de text)", title: "Ajutor", view: "Vizualizare", zoomToFit: "Transfocare pentru a cuprinde totul", zoomToSelection: "Transfocare la selecție", toggleElementLock: "Blocare/deblocare selecție", movePageUpDown: "Deplasare pagină sus/jos", movePageLeftRight: "Deplasare pagină stânga/dreapta" }, dX = { title: "Ștergere pânză" }, DX = { title: "Publicare bibliotecă", itemName: "Denumirea elementului", authorName: "Numele autorului", githubUsername: "Numele de utilizator GitHub", twitterUsername: "Numele de utilizator Twitter", libraryName: "Denumirea bibliotecii", libraryDesc: "Descrierea bibliotecii", website: "Pagină de internet", placeholder: { authorName: "Numele sau numele tău de utilizator", libraryName: "Numele bibliotecii tale", libraryDesc: "Descrierea bibliotecii tale pentru a ajuta oamenii să înțeleagă utilizarea acesteia", githubHandle: "Numele de utilizator GitHub (opțional), pentru a putea edita biblioteca odată ce este trimisă spre revizuire", twitterHandle: "Numele de utilizator Twitter (opțional), pentru a indica sursa la promovarea pe Twitter", website: "Trimitere către pagina ta personală de internet sau altundeva (opțional)" }, errors: { required: "Obligatoriu", website: "Introdu un URL valid" }, noteDescription: "Trimite-ți biblioteca pentru a fi inclusă în <link>depozitul de biblioteci publice</link> în vederea utilizării de către alte persoane în desenele lor.", noteGuidelines: "Biblioteca trebuie aprobată manual mai întâi. Citește <link>orientările</link> înainte de trimitere. Vei avea nevoie de un cont GitHub pentru a comunica și efectua modificări, dacă este cazul, însă nu este strict necesar.", noteLicense: "Prin trimiterea bibliotecii, ești de acord că aceasta va fi publicată sub <link>Licența MIT, </link>care, pe scurt, înseamnă că oricine o poate folosi fără restricții.", noteItems: "Fiecare element din bibliotecă trebuie să aibă propriul nume astfel încât să fie filtrabil. Următoarele elemente din bibliotecă vor fi incluse:", atleastOneLibItem: "Selectează cel puțin un element din bibliotecă pentru a începe", republishWarning: "Observație: unele dintre elementele selectate sunt marcate ca fiind deja publicate/trimise. Ar trebui să retrimiți elemente numai atunci când actualizezi o trimitere sau o bibliotecă existentă." }, hX = { title: "Bibliotecă trimisă", content: "Îți mulțumim, {{authorName}}. Biblioteca a fost trimisă spre revizuire. Poți urmări starea <link>aici</link>" }, wX = { resetLibrary: "Resetare bibliotecă", removeItemsFromLib: "Elimină elementele selectate din bibliotecă" }, FX = { header: "Exportare imagine", label: { withBackground: "Fundal", onlySelected: "Numai selecția", darkMode: "Mod întunecat", embedScene: "Încorporare scenă", scale: "Scală", padding: "Spațiere" }, tooltip: { embedScene: `Datele scenei vor fi salvate în fișierul PNG/SVG exportat, astfel că scena va putea fi restaurată din acesta.
Va crește dimensiunea fișierului exportat.` }, title: { exportToPng: "Exportare ca PNG", exportToSvg: "Exportare ca SVG", copyPngToClipboard: "Copiere PNG în memoria temporară" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Copiere în memoria temporară" } }, pX = { tooltip: "Desenele tale sunt criptate integral, astfel că serverele Excalidraw nu le vor vedea niciodată.", link: "Articol de blog pe criptarea integrală din Excalidraw" }, mX = { angle: "Unghi", element: "Element", elements: "Elemente", height: "Înălțime", scene: "Scenă", selected: "Selectate", storage: "Stocare", title: "Statistici pentru pasionați", total: "Total", version: "Versiune", versionCopy: "Clic pentru copiere", versionNotAvailable: "Versiune indisponibilă", width: "Lățime" }, kX = { addedToLibrary: "Adăugat în bibliotecă", copyStyles: "Stiluri copiate.", copyToClipboard: "Copiat în memoria temporară.", copyToClipboardAsPng: `S-a copiat {{exportSelection}} în memoria temporară sub formă de PNG
({{exportColorScheme}})`, fileSaved: "Fișier salvat.", fileSavedToFilename: "Salvat în {filename}", canvas: "pânza", selection: "selecția", pasteAsSingleElement: `Folosește {{shortcut}} pentru a insera ca un singur element
sau insera într-un editor de text existent`, unableToEmbed: "Încorporarea acestui URL nu este permisă momentan. Deschideți un tichet cu probleme pe GitHub pentru a solicita adăugarea acestui URL în lista albă", unrecognizedLinkFormat: "URL-ul pe care l-ai încorporat nu coincide cu formatul așteptat. Încearcă să lipești șirul „de încorporat” furnizat de pagina sursă" }, yX = { transparent: "Transparent", black: "Negru", white: "Alb", red: "Roșu", pink: "Roz", grape: "Struguriu", violet: "Violet", gray: "Gri", blue: "Albastru", cyan: "Cyan", teal: "Cyan-verde", green: "Verde", yellow: "Galben", orange: "Portocaliu", bronze: "Bronz" }, bX = { app: { center_heading: "Toate datele tale sunt salvate local în navigatorul tău.", center_heading_plus: "Ai vrut să mergi în schimb la Excalidraw+?", menuHint: "Exportare, preferințe, limbi, ..." }, defaults: { menuHint: "Exportare, preferințe și mai multe...", center_heading: "Diagrame. Făcute. Simple.", toolbarHint: "Alege un instrument și începe să desenezi!", helpHint: "Comenzi rapide și ajutor" } }, UX = { mostUsedCustomColors: "Cele mai utilizate culori personalizate", colors: "Culori", shades: "Nuanțe", hexCode: "Cod hexa", noShades: "Nu este disponibilă nicio nuanță pentru această culoare" }, GX = { action: { exportToImage: { title: "Exportare ca imagine", button: "Exportare ca imagine", description: "Exportă datele scenei ca fișier din care poți importa mai târziu." }, saveToDisk: { title: "Salvare pe disc", button: "Salvare pe disc", description: "Exportă datele scenei pe un fișier din care poți importa mai târziu." }, excalidrawPlus: { title: "Excalidraw+", button: "Exportare în Excalidraw+", description: "Salvează scena în spațiul de lucru Excalidraw+." } }, modal: { loadFromFile: { title: "Încărcare din fișier", button: "Încărcare din fișier", description: "Încărcarea dintr-un fișier va <bold>înlocui conținutul existent</bold>.<br></br>Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos." }, shareableLink: { title: "Încărcare din lnk", button: "Înlocuiește conținutul meu", description: "Încărcarea unui desen extern va <bold>înlocui conținutul existent</bold>.<br></br>Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos." } } }, fX = { title: "Mermaid la Excalidraw", button: "Introducere", description: "În prezent, numai <flowchartLink>Organigramele</flowchartLink>, <sequenceLink>Diagramele de secvență</sequenceLink> și <classLink>Diagramele de clasă</classLink> sunt acceptate. Celelalte tipuri vor fi redate ca imagine în Excalidraw.", syntax: "Sintaxă Mermaid", preview: "Previzualizare" }, H7A = { labels: BX, library: gX, buttons: tX, alerts: iX, errors: EX, toolBar: aX, headings: IX, hints: oX, canvasError: QX, errorSplash: nX, roomDialog: rX, errorDialog: sX, exportDialog: lX, helpDialog: cX, clearCanvasDialog: dX, publishDialog: DX, publishSuccessDialog: hX, confirmDialog: wX, imageExportDialog: FX, encrypted: pX, stats: mX, toast: kX, colors: yX, welcomeScreen: bX, colorPicker: UX, overwriteConfirm: GX, mermaid: fX };
const K7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iX,
  buttons: tX,
  canvasError: QX,
  clearCanvasDialog: dX,
  colorPicker: UX,
  colors: yX,
  confirmDialog: wX,
  default: H7A,
  encrypted: pX,
  errorDialog: sX,
  errorSplash: nX,
  errors: EX,
  exportDialog: lX,
  headings: IX,
  helpDialog: cX,
  hints: oX,
  imageExportDialog: FX,
  labels: BX,
  library: gX,
  mermaid: fX,
  overwriteConfirm: GX,
  publishDialog: DX,
  publishSuccessDialog: hX,
  roomDialog: rX,
  stats: mX,
  toast: kX,
  toolBar: aX,
  welcomeScreen: bX
}, Symbol.toStringTag, { value: "Module" }));
var LX = { paste: "Вставить", pasteAsPlaintext: "Вставить как обычный текст", pasteCharts: "Вставить диаграммы", selectAll: "Выбрать всё", multiSelect: "Добавить элемент в выделенный фрагмент", moveCanvas: "Переместить холст", cut: "Вырезать", copy: "Копировать", copyAsPng: "Скопировать в буфер обмена как PNG", copyAsSvg: "Скопировать в буфер обмена как SVG", copyText: "Скопировать в буфер обмена как текст", copySource: "Копировать источник в буфер обмена", convertToCode: "Преобразовать в код", bringForward: "Переместить вперед", sendToBack: "На задний план", bringToFront: "На передний план", sendBackward: "Переместить назад", delete: "Удалить", copyStyles: "Скопировать стили", pasteStyles: "Вставить стили", stroke: "Обводка", background: "Фон", fill: "Заливка", strokeWidth: "Толщина штриха", strokeStyle: "Стиль обводки", strokeStyle_solid: "Сплошная", strokeStyle_dashed: "Пунктирная", strokeStyle_dotted: "Точечная", sloppiness: "Стиль обводки", opacity: "Непрозрачность", textAlign: "Выравнивание текста", edges: "Края", sharp: "Острые", round: "Скругленные", arrowheads: "Стрелка", arrowhead_none: "Нет", arrowhead_arrow: "Cтрелка", arrowhead_bar: "Черта", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Треугольник", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Размер шрифта", fontFamily: "Семейство шрифтов", addWatermark: "Добавить «Создано в Excalidraw»", handDrawn: "От руки", normal: "Обычный", code: "Код", small: "Малый", medium: "Средний", large: "Большой", veryLarge: "Очень большой", solid: "Однотонная", hachure: "Штрихованная", zigzag: "Зигзаг", crossHatch: "Перекрестная", thin: "Тонкая", bold: "Жирная", left: "Слева", center: "Центр", right: "Справа", extraBold: "Очень жирная", architect: "Архитектор", artist: "Художник", cartoonist: "Карикатурист", fileTitle: "Имя файла", colorPicker: "Выбор цвета", canvasColors: "Используется на холсте", canvasBackground: "Фон холста", drawingCanvas: "Полотно", layers: "Слои", actions: "Действия", language: "Язык", liveCollaboration: "Онлайн взаимодействие...", duplicateSelection: "Дубликат", untitled: "Безымянный", name: "Имя", yourName: "Ваше имя", madeWithExcalidraw: "Сделано в Excalidraw", group: "Сгруппировать выделение", ungroup: "Разделить выделение", collaborators: "Участники", showGrid: "Показать сетку", addToLibrary: "Добавить в библиотеку", removeFromLibrary: "Удалить из библиотеки", libraryLoadingMessage: "Загрузка библиотеки…", libraries: "Просмотреть библиотеки", loadingScene: "Загрузка сцены…", align: "Выровнять", alignTop: "Выровнять по верхнему краю", alignBottom: "Выровнять по нижнему краю", alignLeft: "Выровнять по левому краю", alignRight: "Выровнять по правому краю", centerVertically: "Центрировать по вертикали", centerHorizontally: "Центрировать по горизонтали", distributeHorizontally: "Распределить по горизонтали", distributeVertically: "Распределить по вертикали", flipHorizontal: "Переворот по горизонтали", flipVertical: "Переворот по вертикали", viewMode: "Вид", share: "Поделиться", showStroke: "Показать выбор цвета обводки", showBackground: "Показать выбор цвета фона", toggleTheme: "Переключить тему", personalLib: "Личная библиотека", excalidrawLib: "Библиотека Excalidraw", decreaseFontSize: "Уменьшить шрифт", increaseFontSize: "Увеличить шрифт", unbindText: "Отвязать текст", bindText: "Привязать текст к контейнеру", createContainerFromText: "Поместить текст в контейнер", link: { edit: "Редактировать ссылку", editEmbed: "", create: "Создать ссылку", createEmbed: "", label: "Ссылка", labelEmbed: "", empty: "" }, lineEditor: { edit: "Редактирование строки", exit: "Выход из редактора строки" }, elementLock: { lock: "Блокировать", unlock: "Разблокировать", lockAll: "Заблокировать все", unlockAll: "Разблокировать все" }, statusPublished: "Опубликовано", sidebarLock: "Держать боковую панель открытой", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "Взять образец цвета с холста", textToDiagram: "Текст в диаграмму", prompt: "" }, xX = { noItems: "Пока ничего не добавлено...", hint_emptyLibrary: "Выберите объект на холсте, чтобы добавить его сюда, или установите библиотеку из публичного репозитория ниже.", hint_emptyPrivateLibrary: "Выберите объект на холсте, чтобы добавить его сюда." }, SX = { clearReset: "Очистить холст и сбросить цвет фона", exportJSON: "Сохранить в", exportImage: "Экспортировать изображение...", export: "Сохранить как...", copyToClipboard: "Скопировать в буфер обмена", save: "Сохранить в текущий файл", saveAs: "Сохранить как", load: "Открыть", getShareableLink: "Получить доступ по ссылке", close: "Закрыть", selectLanguage: "Выбрать язык", scrollBackToContent: "Вернуться к содержимому", zoomIn: "Увеличить", zoomOut: "Уменьшить", resetZoom: "Сбросить масштаб", menu: "Меню", done: "Готово", edit: "Изменить", undo: "Шаг назад", redo: "Шаг вперед", resetLibrary: "Сброс библиотеки", createNewRoom: "Создать новую комнату", fullScreen: "Полный экран", darkMode: "Темная тема", lightMode: "Светлая тема", zenMode: "Режим Дзен", objectsSnapMode: "Привязка к объектам", exitZenMode: "Выключить режим концентрации внимания", cancel: "Отменить", clear: "Очистить", remove: "Удалить", embed: "", publishLibrary: "Опубликовать", submit: "Отправить", confirm: "Подтвердить", embeddableInteractionButton: "" }, NX = { clearReset: "Это очистит весь холст. Вы уверены?", couldNotCreateShareableLink: "Не удалось создать общедоступную ссылку.", couldNotCreateShareableLinkTooBig: "Нельзя создать ссылку, чтобы поделиться. Сцена слишком большая", couldNotLoadInvalidFile: "Не удалось загрузить недопустимый файл", importBackendFailed: "Не удалось импортировать из бэкэнда.", cannotExportEmptyCanvas: "Не может экспортировать пустой холст.", couldNotCopyToClipboard: "Не удалось скопировать в буфер обмена.", decryptFailed: "Не удалось расшифровать данные.", uploadedSecurly: "Загружаемые данные защищена сквозным шифрованием, что означает, что сервер Excalidraw и третьи стороны не могут прочитать содержимое.", loadSceneOverridePrompt: "Загрузка рисунка приведёт к замене имеющегося содержимого. Вы хотите продолжить?", collabStopOverridePrompt: `Остановка сессии перезапишет ваш предыдущий, локально сохранённый рисунок. Вы уверены? 

(Если вы хотите оставить ваш локальный рисунок, просто закройте вкладку браузера)`, errorAddingToLibrary: "Не удалось добавить объект в библиотеку", errorRemovingFromLibrary: "Не удалось удалить объект из библиотеки", confirmAddLibrary: "Будет добавлено {{numShapes}} фигур в вашу библиотеку. Продолжить?", imageDoesNotContainScene: "Это изображение не содержит данных сцены. Вы включили встраивание сцены во время экспорта?", cannotRestoreFromImage: "Сцена не может быть восстановлена из этого изображения", invalidSceneUrl: "Невозможно импортировать сцену с предоставленного URL. Неверный формат, или не содержит верных Excalidraw JSON данных.", resetLibrary: "Это очистит вашу библиотеку. Вы уверены?", removeItemsFromsLibrary: "Удалить {{count}} объект(ов) из библиотеки?", invalidEncryptionKey: "Ключ шифрования должен состоять из 22 символов. Одновременное редактирование отключено.", collabOfflineWarning: `Отсутствует интернет-соединение.
Ваши изменения не будут сохранены!` }, RX = { unsupportedFileType: "Неподдерживаемый тип файла.", imageInsertError: "Не удалось вставить изображение. Попробуйте позже...", fileTooBig: "Очень большой файл. Максимально разрешенный размер {{maxSize}}.", svgImageInsertError: "Не удалось вставить изображение SVG. Разметка SVG выглядит недействительной.", failedToFetchImage: "Не удалось получить изображение.", invalidSVGString: "Некорректный SVG.", cannotResolveCollabServer: "Не удалось подключиться к серверу совместного редактирования. Перезагрузите страницу и повторите попытку.", importLibraryError: "Не удалось загрузить библиотеку", collabSaveFailed: "Не удалось сохранить в базу данных. Если проблема повторится, нужно будет сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.", collabSaveFailed_sizeExceeded: "Не удалось сохранить в базу данных. Похоже, что холст слишком большой. Нужно сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.", imageToolNotSupported: "Изображения отключены.", brave_measure_text_error: { line1: "Похоже, вы используете браузер Brave с включенной опцией <bold>Агрессивно блокировать отслеживание</bold>.", line2: "Это может привести к поломке <bold>Текстовых объектов</bold> на рисунке.", line3: "Мы настоятельно рекомендуем отключить эту настройку. Для этого нужно выполнить <link>эти шаги</link>.", line4: "Если отключение этой настройки не исправит отображение текстовых объектов, создайте <issueLink>issue</issueLink> на нашем GitHub или напишите нам в <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "", iframe: "Элементы IFrame не могут быть добавлены в библиотеку.", image: "" }, asyncPasteFailedOnRead: "Не удалось вставить (невозможно прочитать из системного буфера обмена).", asyncPasteFailedOnParse: "Не удалось вставить.", copyToSystemClipboardFailed: "Не удалось скопировать в буфер обмена." }, MX = { selection: "Выделение области", image: "Вставить изображение", rectangle: "Прямоугольник", diamond: "Ромб", ellipse: "Эллипс", arrow: "Cтрелка", line: "Линия", freedraw: "Чертить", text: "Текст", library: "Библиотека", lock: "Сохранять выбранный инструмент активным после рисования", penMode: "Режим пера - предотвращение касания", link: "Добавить/обновить ссылку для выбранной фигуры", eraser: "Ластик", frame: "", magicframe: "", embeddable: "", laser: "Лазерная указка", hand: "Рука (перемещение холста)", extraTools: "", mermaidToExcalidraw: "Из Mermaid в Excalidraw", magicSettings: "Параметры AI" }, YX = { canvasActions: "Операции холста", selectedShapeActions: "Операции выбранной фигуры", shapes: "Фигуры" }, vX = { canvasPanning: 'Чтобы двигать холст, удерживайте колесо мыши или пробел во время перетаскивания, или используйте инструмент "Рука"', linearElement: "Нажмите, чтобы начать несколько точек, перетащите для одной линии", freeDraw: "Нажмите и перетаскивайте, отпустите по завершении", text: "Совет: при выбранном инструменте выделения дважды щёлкните в любом месте, чтобы добавить текст", embeddable: "", text_selected: "Дважды щелкните мышью или нажмите ENTER, чтобы редактировать текст", text_editing: "Нажмите Escape либо Ctrl или Cmd + ENTER для завершения редактирования", linearElementMulti: "Кликните на последней точке или нажмите Escape или Enter чтобы закончить", lockAngle: "Вы можете ограничить угол удерживая SHIFT", resize: `Вы можете ограничить пропорции, удерживая SHIFT во время изменения размеров,
удерживайте ALT чтобы изменить размер из центра`, resizeImage: `Вы можете свободно изменять размеры, удерживая кнопку SHIFT,
удерживайте кнопку ALT, чтобы изменять размер относительно центра`, rotate: "Вы можете ограничить углы, удерживая SHIFT во время вращения", lineEditor_info: "Удерживайте CtrlOrCmd и дважды кликните или нажмите CtrlOrCmd + Enter для редактирования точек", lineEditor_pointSelected: `Нажмите Delete для удаления точки (точек),
Ctrl+D или Cmd+D для дублирования, перетащите для перемещения`, lineEditor_nothingSelected: `Выберите точку для редактирования (удерживайте SHIFT выбора нескольких точек),
или удерживайте Alt и кликните для добавления новых точек`, placeImage: "Щелкните, чтобы разместить изображение, или нажмите и перетащите, чтобы установить его размер вручную", publishLibrary: "Опубликовать свою собственную библиотеку", bindTextToElement: "Нажмите Enter для добавления текста", deepBoxSelect: "Удерживайте Ctrl или Cmd для глубокого выделения, чтобы предотвратить перетаскивание", eraserRevert: "Удерживайте Alt, чтобы вернуть элементы, отмеченные для удаления", firefox_clipboard_write: 'Эта функция может быть включена при изменении значения флага "dom.events.asyncClipboard.clipboardItem" на "true". Чтобы изменить флаги браузера в Firefox, посетите страницу "about:config".', disableSnapping: "" }, HX = { cannotShowPreview: "Не удается отобразить предпросмотр", canvasTooBig: "Сцена слишком большая.", canvasTooBigTip: "Совет: попробуйте сблизить элементы рисунка." }, KX = { headingMain: "Возникла ошибка. Попробуйте <button>перезагрузить страницу.</button>", clearCanvasMessage: "Если перезагрузка страницы не помогла, попробуйте <button>очистить холст.</button>", clearCanvasCaveat: " Текущая работа будет утеряна ", trackedToSentry: "Ошибка с идентификатором {{eventId}} отслеживается в нашей системе.", openIssueMessage: "Для безопасности информация о вашей сцене не включена в ошибку. Если в сцене нет ничего конфиденциального, пожалуйста следуйте нашим <button>баг трекере.</button> Пожалуйста, приложите информацию ниже, скопировав и вставив её, в issue GitHub.", sceneContent: "Содержание сцены:" }, JX = { desc_intro: "Вы можете пригласить людей в текущую сцену для совместной работы.", desc_privacy: "Не беспокойтесь — во время сеанса используется сквозное шифрование. Всё, что вы нарисуете, останется конфиденциальным и не будет доступно даже нашему серверу.", button_startSession: "Начать сеанс", button_stopSession: "Завершить сеанс", desc_inProgressIntro: "Сеанс совместной работы запущен.", desc_shareLink: "Поделитесь этой ссылкой со всеми участниками:", desc_exitSession: "Завершив сеанс, вы выйдете из комнаты, но сможете продолжить работать с документом локально. Это не повлияет на работу других пользователей — они смогут продолжить совместную работу с их версией документа.", shareTitle: "Присоединиться к активной совместной сессии на Excalidraw" }, ZX = { title: "Ошибка" }, qX = { disk_title: "Сохранить на диск", disk_details: "Экспортировать данные сцены в файл, из которого можно импортировать позже.", disk_button: "Сохранить в файл", link_title: "Поделитесь ссылкой", link_details: "Экспорт ссылки только для чтения.", link_button: "Экспорт в ссылку", excalidrawplus_description: "Сохраните сцену в ваше рабочее пространство Excalidraw+.", excalidrawplus_button: "Экспорт", excalidrawplus_exportError: "Не удалось экспортировать в Excalidraw+ на данный момент..." }, WX = { blog: "Прочитайте наш блог", click: "нажать", deepSelect: "Глубокое выделение", deepBoxSelect: "Глубокое выделение рамкой, и предотвращение перетаскивания", curvedArrow: "Изогнутая стрелка", curvedLine: "Изогнутая линия", documentation: "Документация", doubleClick: "двойной клик", drag: "перетащить", editor: "Редактор", editLineArrowPoints: "Редактировать концы линий/стрелок", editText: "Редактировать текст / добавить метку", github: "Нашли проблему? Отправьте", howto: "Следуйте нашим инструкциям", or: "или", preventBinding: "Предотвращать привязку стрелок", tools: "Инструменты", shortcuts: "Горячие клавиши", textFinish: "Закончить редактирование (текстовый редактор)", textNewLine: "Добавить новую строку (текстовый редактор)", title: "Помощь", view: "Просмотр", zoomToFit: "Отмастштабировать, чтобы поместились все элементы", zoomToSelection: "Увеличить до выделенного", toggleElementLock: "Заблокировать/разблокировать выделение", movePageUpDown: "Сдвинуть страницу вверх/вниз", movePageLeftRight: "Сдвинуть страницу вправо/влево" }, jX = { title: "Очистить холст" }, TX = { title: "Опубликовать библиотеку", itemName: "Название объекта", authorName: "Имя автора", githubUsername: "Имя пользователя GitHub", twitterUsername: "Имя пользователя в Twitter", libraryName: "Название библиотеки", libraryDesc: "Описание библиотеки", website: "Веб-сайт", placeholder: { authorName: "Ваше имя или имя пользователя", libraryName: "Название вашей библиотеки", libraryDesc: "Описание вашей библиотеки, которое поможет людям понять её назначение", githubHandle: "Имя пользователя GitHub (необязательно), чтобы вы смогли редактировать библиотеку после её отправки на проверку", twitterHandle: "Имя пользователя в Twitter (необязательно), чтобы мы знали, кого упомянуть при продвижении в Twitter", website: "Ссылка на ваш личный или какой-то другой сайт (необязательно)" }, errors: { required: "Обязательно", website: "Введите допустимый URL-адрес" }, noteDescription: "Отправить вашу библиотеку для включения в <link>хранилище публичных библиотек</link>, чтобы другие люди могли использовать объекты из вашей библиотеки в своих рисунках.", noteGuidelines: "Библиотека должна быть подтверждена вручную. Пожалуйста, прочтите <link>рекомендации</link> перед отправкой. Вам понадобится учетная запись GitHub, чтобы общаться и вносить изменения при необходимости, но это не обязательно.", noteLicense: "Выполняя отправку, вы соглашаетесь с тем, что библиотека будет опубликована под <link>лицензией MIT, </link>, что, вкратце, означает, что каждый может использовать её без ограничений.", noteItems: "Каждый объект в библиотеке должен иметь свое собственное имя, чтобы по нему можно было фильтровать. Следующие объекты библиотеки будут включены:", atleastOneLibItem: "Пожалуйста, выберите хотя бы один объект в библиотеке, чтобы начать", republishWarning: "Примечание: некоторые из выбранных элементов помечены как уже опубликованные/отправленные. Вы должны повторно отправить элементы только при обновлении существующей библиотеки или сдаче работы." }, zX = { title: "Библиотека отправлена", content: "Благодарим вас, {{authorName}}. Ваша библиотека была отправлена на проверку. Вы можете отслеживать статус<link>здесь</link>" }, PX = { resetLibrary: "Сброс библиотеки", removeItemsFromLib: "Удалить выбранные объекты из библиотеки" }, OX = { header: "Экспортировать изображение", label: { withBackground: "Фон", onlySelected: "Только выделенное", darkMode: "Темная тема", embedScene: "Встроить сцену", scale: "Масштаб", padding: "Отступ" }, tooltip: { embedScene: "Сцена будет сохранена в PNG/SVG файл так, чтобы всю сцену можно будет восстановить из этого файла. Это увеличит размер файла." }, title: { exportToPng: "Экспорт в PNG", exportToSvg: "Экспорт в SVG", copyPngToClipboard: "Скопировать PNG в буфер обмена" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Скопировать в буфер обмена" } }, VX = { tooltip: "Ваши данные защищены сквозным (End-to-end) шифрованием. Серверы Excalidraw никогда не получат доступ к ним.", link: "Запись блога о сквозном шифровании в Excalidraw" }, XX = { angle: "Угол", element: "Элемент", elements: "Элементы", height: "Высота", scene: "Сцены", selected: "Выбран", storage: "Хранилище", title: "Статистика для ботаников", total: "Всего", version: "Версия", versionCopy: "Копировать", versionNotAvailable: "Версия не доступна", width: "Ширина" }, _X = { addedToLibrary: "Добавлено в библиотеку", copyStyles: "Скопированы стили.", copyToClipboard: "Скопировано в буфер обмена.", copyToClipboardAsPng: "{{exportSelection}} скопировано как PNG ({{exportColorScheme}})", fileSaved: "Файл сохранён.", fileSavedToFilename: "Сохранено в {filename}", canvas: "холст", selection: "выделение", pasteAsSingleElement: `Используйте {{shortcut}}, чтобы вставить один объект,
или вставьте в существующий текстовый редактор`, unableToEmbed: "", unrecognizedLinkFormat: "" }, $X = { transparent: "Прозрачный", black: "Чёрный", white: "Белый", red: "Красный", pink: "Розовый", grape: "Виноградный", violet: "Фиолетовый", gray: "Серый", blue: "Синий", cyan: "Голубой", teal: "Бирюзовый", green: "Зелёный", yellow: "Жёлтый", orange: "Оранжевый", bronze: "Бронзовый" }, A_ = { app: { center_heading: "Все ваши данные сохраняются локально в вашем браузере.", center_heading_plus: "Хотите перейти на Excalidraw+?", menuHint: "Экспорт, настройки, языки, ..." }, defaults: { menuHint: "Экспорт, настройки и другое...", center_heading: "Диаграммы. Просто.", toolbarHint: "Выберите инструмент и начните рисовать!", helpHint: "Сочетания клавиш и помощь" } }, u_ = { mostUsedCustomColors: "Часто используемые пользовательские цвета", colors: "Цвета", shades: "Оттенки", hexCode: "Шестнадцатеричный код", noShades: "Нет доступных оттенков для этого цвета" }, e_ = { action: { exportToImage: { title: "Экспортировать как изображение", button: "Экспортировать как изображение", description: "" }, saveToDisk: { title: "Сохранить на диск", button: "Сохранить на диск", description: "" }, excalidrawPlus: { title: "Excalidraw+", button: "Экспорт в Excalidraw+", description: "" } }, modal: { loadFromFile: { title: "Загрузить из файла", button: "Загрузить из файла", description: "" }, shareableLink: { title: "Загрузить по ссылке", button: "", description: "" } } }, C_ = { title: "Из Mermaid в Excalidraw", button: "Вставить", description: "", syntax: "Синтаксис Mermaid", preview: "Предпросмотр" }, J7A = { labels: LX, library: xX, buttons: SX, alerts: NX, errors: RX, toolBar: MX, headings: YX, hints: vX, canvasError: HX, errorSplash: KX, roomDialog: JX, errorDialog: ZX, exportDialog: qX, helpDialog: WX, clearCanvasDialog: jX, publishDialog: TX, publishSuccessDialog: zX, confirmDialog: PX, imageExportDialog: OX, encrypted: VX, stats: XX, toast: _X, colors: $X, welcomeScreen: A_, colorPicker: u_, overwriteConfirm: e_, mermaid: C_ };
const Z7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NX,
  buttons: SX,
  canvasError: HX,
  clearCanvasDialog: jX,
  colorPicker: u_,
  colors: $X,
  confirmDialog: PX,
  default: J7A,
  encrypted: VX,
  errorDialog: ZX,
  errorSplash: KX,
  errors: RX,
  exportDialog: qX,
  headings: YX,
  helpDialog: WX,
  hints: vX,
  imageExportDialog: OX,
  labels: LX,
  library: xX,
  mermaid: C_,
  overwriteConfirm: e_,
  publishDialog: TX,
  publishSuccessDialog: zX,
  roomDialog: JX,
  stats: XX,
  toast: _X,
  toolBar: MX,
  welcomeScreen: A_
}, Symbol.toStringTag, { value: "Module" }));
var B_ = { paste: "අලවන්න", pasteAsPlaintext: "", pasteCharts: "ප්‍රස්ථාරය", selectAll: "සියල්ලම", multiSelect: "තෝරා ගැනීමට අංගය එකතු කරන්න", moveCanvas: "කැන්වසය චලනය කරන්න", cut: "කපන්න", copy: "පිටපත් කරන්න", copyAsPng: "PNG ලෙස පිටපත් කරන්න", copyAsSvg: "SVG ලෙස පිටපත් කරන්න", copyText: "", copySource: "", convertToCode: "", bringForward: "ඉදිරියට ගෙන්න", sendToBack: "පසුපසටම ගෙනියන්න", bringToFront: "ඉදිරියටම ගෙන්න", sendBackward: "පසුපසට ගෙනියන්න", delete: "මකන්න", copyStyles: "", pasteStyles: "", stroke: "", background: "", fill: "", strokeWidth: "", strokeStyle: "", strokeStyle_solid: "", strokeStyle_dashed: "", strokeStyle_dotted: "", sloppiness: "", opacity: "", textAlign: "", edges: "", sharp: "", round: "", arrowheads: "", arrowhead_none: "", arrowhead_arrow: "", arrowhead_bar: "", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "", fontFamily: "", addWatermark: "", handDrawn: "", normal: "", code: "", small: "", medium: "", large: "", veryLarge: "ඉතා විශාල", solid: "විශාල", hachure: "මධ්‍යම", zigzag: "", crossHatch: "", thin: "කෙට්ටු", bold: "තද", left: "වම", center: "මැද", right: "දකුණ", extraBold: "ඉතා තද", architect: "වාස්තුවේදීයා", artist: "කලාකරු", cartoonist: "සැකිලිරූකරු", fileTitle: "ගොනු නාමය", colorPicker: "පාට තෝරකය", canvasColors: "", canvasBackground: "කැන්වස පසුබිම", drawingCanvas: "චිත්‍රක කැන්වසය", layers: "ලේයර", actions: "ක්‍රියාකාරකම", language: "භාෂාව ", liveCollaboration: "", duplicateSelection: "", untitled: "", name: "නම", yourName: "", madeWithExcalidraw: "", group: "", ungroup: "", collaborators: "", showGrid: "", addToLibrary: "", removeFromLibrary: "", libraryLoadingMessage: "", libraries: "", loadingScene: "", align: "", alignTop: "", alignBottom: "", alignLeft: "", alignRight: "", centerVertically: "", centerHorizontally: "", distributeHorizontally: "", distributeVertically: "", flipHorizontal: "", flipVertical: "", viewMode: "", share: "", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "", excalidrawLib: "", decreaseFontSize: "", increaseFontSize: "", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "", editEmbed: "", create: "", createEmbed: "", label: "", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "", unlock: "", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, g_ = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, t_ = { clearReset: "", exportJSON: "", exportImage: "", export: "", copyToClipboard: "", save: "", saveAs: "", load: "", getShareableLink: "", close: "", selectLanguage: "", scrollBackToContent: "", zoomIn: "", zoomOut: "", resetZoom: "", menu: "", done: "", edit: "", undo: "", redo: "", resetLibrary: "", createNewRoom: "", fullScreen: "", darkMode: "", lightMode: "", zenMode: "", objectsSnapMode: "", exitZenMode: "", cancel: "", clear: "", remove: "", embed: "", publishLibrary: "", submit: "", confirm: "", embeddableInteractionButton: "" }, i_ = { clearReset: "", couldNotCreateShareableLink: "", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "", importBackendFailed: "", cannotExportEmptyCanvas: "", couldNotCopyToClipboard: "", decryptFailed: "", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: "", errorAddingToLibrary: "", errorRemovingFromLibrary: "", confirmAddLibrary: "", imageDoesNotContainScene: "", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, E_ = { unsupportedFileType: "", imageInsertError: "", fileTooBig: "", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "", cannotResolveCollabServer: "", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, a_ = { selection: "", image: "", rectangle: "", diamond: "", ellipse: "", arrow: "", line: "", freedraw: "", text: "", library: "", lock: "", penMode: "", link: "", eraser: "", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, I_ = { canvasActions: "", selectedShapeActions: "", shapes: "" }, o_ = { canvasPanning: "", linearElement: "", freeDraw: "", text: "", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, Q_ = { cannotShowPreview: "", canvasTooBig: "", canvasTooBigTip: "" }, n_ = { headingMain: "", clearCanvasMessage: "", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, r_ = { desc_intro: "", desc_privacy: "", button_startSession: "", button_stopSession: "", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, s_ = { title: "" }, l_ = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, c_ = { blog: "", click: "", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, d_ = { title: "" }, D_ = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, h_ = { title: "", content: "" }, w_ = { resetLibrary: "", removeItemsFromLib: "" }, F_ = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, p_ = { tooltip: "", link: "" }, m_ = { angle: "", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "" }, k_ = { addedToLibrary: "", copyStyles: "", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, y_ = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, b_ = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, U_ = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, G_ = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, f_ = { title: "", button: "", description: "", syntax: "", preview: "" }, q7A = { labels: B_, library: g_, buttons: t_, alerts: i_, errors: E_, toolBar: a_, headings: I_, hints: o_, canvasError: Q_, errorSplash: n_, roomDialog: r_, errorDialog: s_, exportDialog: l_, helpDialog: c_, clearCanvasDialog: d_, publishDialog: D_, publishSuccessDialog: h_, confirmDialog: w_, imageExportDialog: F_, encrypted: p_, stats: m_, toast: k_, colors: y_, welcomeScreen: b_, colorPicker: U_, overwriteConfirm: G_, mermaid: f_ };
const W7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: i_,
  buttons: t_,
  canvasError: Q_,
  clearCanvasDialog: d_,
  colorPicker: U_,
  colors: y_,
  confirmDialog: w_,
  default: q7A,
  encrypted: p_,
  errorDialog: s_,
  errorSplash: n_,
  errors: E_,
  exportDialog: l_,
  headings: I_,
  helpDialog: c_,
  hints: o_,
  imageExportDialog: F_,
  labels: B_,
  library: g_,
  mermaid: f_,
  overwriteConfirm: G_,
  publishDialog: D_,
  publishSuccessDialog: h_,
  roomDialog: r_,
  stats: m_,
  toast: k_,
  toolBar: a_,
  welcomeScreen: b_
}, Symbol.toStringTag, { value: "Module" }));
var L_ = { paste: "Vložiť", pasteAsPlaintext: "Vložiť ako obyčajný text", pasteCharts: "Vložiť grafy", selectAll: "Vybrať všetko", multiSelect: "Pridať prvok do výberu", moveCanvas: "Pohyb plátna", cut: "Vystrihnúť", copy: "Kopírovať", copyAsPng: "Kopírovať do schránky ako PNG", copyAsSvg: "Kopírovať do schránky ako SVG", copyText: "Kopírovať do schránky ako text", copySource: "Kopírovať kód do schránky", convertToCode: "Konvertovať na kód", bringForward: "Presunúť o úroveň dopredu", sendToBack: "Presunúť dozadu", bringToFront: "Presunúť dopredu", sendBackward: "Presunúť o úroveň dozadu", delete: "Vymazať", copyStyles: "Kopírovať štýly", pasteStyles: "Vložiť štýly", stroke: "Obrys", background: "Pozadie", fill: "Výplň", strokeWidth: "Hrúbka obrysu", strokeStyle: "Štýl obrysu", strokeStyle_solid: "Plný", strokeStyle_dashed: "Čiarkovaný", strokeStyle_dotted: "Bodkovaný", sloppiness: "Štylizácia", opacity: "Priehľadnosť", textAlign: "Zarovnanie textu", edges: "Okraje", sharp: "Ostré", round: "Zaokrúhlené", arrowheads: "Zakončenie šípky", arrowhead_none: "Žiadne", arrowhead_arrow: "Šípka", arrowhead_bar: "Čiara", arrowhead_circle: "Kruh", arrowhead_circle_outline: "Kruh (obrys)", arrowhead_triangle: "Trojuholník", arrowhead_triangle_outline: "Trojuholník (obrys)", arrowhead_diamond: "Diamant", arrowhead_diamond_outline: "Diamant (obrys)", fontSize: "Veľkosť písma", fontFamily: "Písmo", addWatermark: 'Pridať "Vytvorené s Excalidraw"', handDrawn: "Ručne písané", normal: "Normálne", code: "Kód", small: "Malé", medium: "Stredné", large: "Veľké", veryLarge: "Veľmi veľké", solid: "Plná", hachure: "Šrafovaná", zigzag: "Cik-cak", crossHatch: "Mriežkovaná", thin: "Tenká", bold: "Hrubá", left: "Doľava", center: "Na stred", right: "Doprava", extraBold: "Veľmi hrubá", architect: "Architekt", artist: "Umelec", cartoonist: "Ilustrátor", fileTitle: "Názov súboru", colorPicker: "Výber farby", canvasColors: "Použité na plátne", canvasBackground: "Pozadie plátna", drawingCanvas: "Kresliace plátno", layers: "Vrstvy", actions: "Akcie", language: "Jazyk", liveCollaboration: "Živá spolupráca...", duplicateSelection: "Duplikovať", untitled: "Bez názvu", name: "Meno", yourName: "Vaše meno", madeWithExcalidraw: "Vytvorené s Excalidraw", group: "Zoskupiť", ungroup: "Zrušiť zoskupenie", collaborators: "Spolupracovníci", showGrid: "Zobraziť mriežku", addToLibrary: "Pridať do knižnice", removeFromLibrary: "Odstrániť z knižnice", libraryLoadingMessage: "Načítavanie knižnice…", libraries: "Prehliadať knižnice", loadingScene: "Načítavanie scény…", align: "Zarovnanie", alignTop: "Zarovnať nahor", alignBottom: "Zarovnať nadol", alignLeft: "Zarovnať doľava", alignRight: "Zarovnať doprava", centerVertically: "Zarovnať zvislo na stred", centerHorizontally: "Zarovnať vodorovne na stred", distributeHorizontally: "Rozmiestniť vodorovne", distributeVertically: "Rozmiestniť zvisle", flipHorizontal: "Prevrátiť vodorovne", flipVertical: "Prevrátiť zvislo", viewMode: "Režim zobrazenia", share: "Zdieľať", showStroke: "Zobraziť výber farby pre obrys", showBackground: "Zobraziť výber farby pre pozadie", toggleTheme: "Prepnúť tému", personalLib: "Moja knižnica", excalidrawLib: "Excalidraw knižnica", decreaseFontSize: "Zmenšiť veľkosť písma", increaseFontSize: "Zväčšiť veľkosť písma", unbindText: "Zrušiť previazanie textu", bindText: "Previazať text s kontajnerom", createContainerFromText: "Zabaliť text do kontajneru", link: { edit: "Upraviť odkaz", editEmbed: "Editovať a zapustiť odkaz", create: "Vytvoriť odkaz", createEmbed: "Vytvoriť a zapustiť odkaz", label: "Odkaz", labelEmbed: "Zapustiť odkaz", empty: "Nie je nastavený žiaden odkaz" }, lineEditor: { edit: "Upraviť čiaru", exit: "Ukončiť editovanie čiary" }, elementLock: { lock: "Zamknúť", unlock: "Odomknúť", lockAll: "Zamknúť všetko", unlockAll: "Odomknúť všetko" }, statusPublished: "Zverejnené", sidebarLock: "Nechať bočný panel otvorený", selectAllElementsInFrame: "Vybrať všetky prvky v ráme", removeAllElementsFromFrame: "Odstrániť všetky prvky z rámu", eyeDropper: "Vybrať farbu z plátna", textToDiagram: "Text na diagram", prompt: "Inštrukcia" }, x_ = { noItems: "Zatiaľ neboli pridané žiadne položky...", hint_emptyLibrary: "Vyberte položku z plátna pre jej pridanie do knižnice alebo použite knižnicu z verejného zoznamu knižníc nižšie.", hint_emptyPrivateLibrary: "Vyberte položku z plátna pre jej pridanie do knižnice." }, S_ = { clearReset: "Obnoviť plátno", exportJSON: "Exportovať do súboru", exportImage: "Exportovať obrázok...", export: "Uložiť do...", copyToClipboard: "Kopírovať do schránky", save: "Uložiť do aktuálneho súboru", saveAs: "Uložiť ako", load: "Otvoriť", getShareableLink: "Získať odkaz na zdieľanie", close: "Zavrieť", selectLanguage: "Zvoliť jazyk", scrollBackToContent: "Vrátiť sa späť na obsah", zoomIn: "Priblížiť", zoomOut: "Oddialiť", resetZoom: "Obnoviť priblíženie", menu: "Ponuka", done: "Hotovo", edit: "Upraviť", undo: "Späť", redo: "Znova", resetLibrary: "Obnoviť knižnicu", createNewRoom: "Vytvoriť novú miestnosť", fullScreen: "Celá obrazovka", darkMode: "Tmavý režim", lightMode: "Svetlý režim", zenMode: "Režim zen", objectsSnapMode: "Prichytiť k objektom", exitZenMode: "Zrušiť režim zen", cancel: "Zrušiť", clear: "Vymazať", remove: "Odstrániť", embed: "Prepnúť zapustenie", publishLibrary: "Uverejniť", submit: "Potvrdiť", confirm: "Potvrdiť", embeddableInteractionButton: "Kliknite pre interakciu" }, N_ = { clearReset: "Týmto sa vyčistí celé plátno. Ste si istí?", couldNotCreateShareableLink: "Nepodarilo sa vytvoriť odkaz na zdieľanie.", couldNotCreateShareableLinkTooBig: "Nepodarilo sa vytvoriť odkaz na zdieľanie: scéna je príliš veľká", couldNotLoadInvalidFile: "Nepodarilo sa načítať nevalidný súbor", importBackendFailed: "Nepdarilo sa importovanie zo serveru.", cannotExportEmptyCanvas: "Nie je možné exportovať prázdne plátno.", couldNotCopyToClipboard: "Kopírovanie do schránky sa nepodarilo.", decryptFailed: "Nepodarilo sa rozšifrovať údaje.", uploadedSecurly: "Nahratie je zabezpečené end-to-end šifrovaním, takže Excalidraw server a tretie strany nedokážu prečítať jeho obsah.", loadSceneOverridePrompt: "Nahratie externej kresby nahradí existujúci obsah. Prajete si pokračovať?", collabStopOverridePrompt: `Ukončenie schôdze nahradí vašu predchádzajúcu lokálne uloženú scénu. Ste si istý?

(Ak si chcete ponechať lokálnu scénu, jednoducho iba zavrite kartu prehliadača.)`, errorAddingToLibrary: "Nepodarilo sa pridať položku do knižnice", errorRemovingFromLibrary: "Nepodarilo sa odstrániť položku z knižnice", confirmAddLibrary: "Týmto sa pridá {{numShapes}} tvar(ov) do vašej knižnice. Ste si istí?", imageDoesNotContainScene: "Tento obrázok neobsahuje žiadne údaje scény. Zvolili ste možnosť zahrnúť scénu počas exportu?", cannotRestoreFromImage: "Nepodarilo sa obnoviť scénu z tohto obrázkového súboru", invalidSceneUrl: "Nepodarilo sa načítať scénu z poskytnutej URL. Je nevalidná alebo neobsahuje žiadne validné Excalidraw JSON dáta.", resetLibrary: "Týmto vyprázdnite vašu knižnicu. Ste si istý?", removeItemsFromsLibrary: "Odstrániť {{count}} položiek z knižnice?", invalidEncryptionKey: "Šifrovací kľúč musí mať 22 znakov. Živá spolupráca je vypnutá.", collabOfflineWarning: `Internetové pripojenie nie je dostupné.
Vaše zmeny nebudú uložené!` }, R_ = { unsupportedFileType: "Nepodporovaný typ súboru.", imageInsertError: "Nepodarilo sa vložiť obrázok. Skúste to znova neskôr...", fileTooBig: "Súbor je príliš veľký. Maximálna povolená veľkosť je {{maxSize}}.", svgImageInsertError: "Nepodarilo sa vložiť SVG obrázok. SVG formát je pravdepodobne nevalidný.", failedToFetchImage: "Načítanie obrázka zlyhalo.", invalidSVGString: "Nevalidné SVG.", cannotResolveCollabServer: "Nepodarilo sa pripojiť ku kolaboračnému serveru. Prosím obnovte stránku a skúste to znovu.", importLibraryError: "Nepodarilo sa načítať knižnicu", collabSaveFailed: "Uloženie do databázy sa nepodarilo. Ak tento problém pretrváva uložte si váš súbor lokálne aby ste nestratili vašu prácu.", collabSaveFailed_sizeExceeded: "Uloženie do databázy sa nepodarilo, pretože veľkosť plátna je príliš veľká. Uložte si váš súbor lokálne aby ste nestratili vašu prácu.", imageToolNotSupported: "Obrázky sú vypnuté.", brave_measure_text_error: { line1: "Vyzerá to, že používate prehliadač Brave so zapnutým nastavením pre <bold>agresívne blokovanie</bold>.", line2: "To môže spôsobiť nesprávne zobrazenie <bold>textových prvkov</bold> vo vašej kresbe.", line3: "Dôrazne odporúčame vypnutie toho nastavenia. Môžete tak spraviť vykonaním <link>týchto krokov</link>.", line4: "Ak vypnutie toho nastavenia nevyrieši problém so zobrazením textových prvkov, prosím ohláste <issueLink>problém</issueLink> na našom GitHub-e alebo nám napíšte na náš <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Zapustené prvky nie je možné pridať do knižnice.", iframe: "Vložené rámce IFrame nie je možné pridať do knižnice.", image: "Podpora pre pridávanie obrázkov do knižnice bude dostupná už čoskoro!" }, asyncPasteFailedOnRead: "Vloženie sa nepodarilo (nebolo možné prečítať obsah schránky).", asyncPasteFailedOnParse: "Vloženie sa nepodarilo.", copyToSystemClipboardFailed: "Kopírovanie do schránky sa nepodarilo." }, M_ = { selection: "Výber", image: "Vložiť obrázok", rectangle: "Obdĺžnik", diamond: "Diamant", ellipse: "Elipsa", arrow: "Šípka", line: "Čiara", freedraw: "Kresliť", text: "Text", library: "Knižnica", lock: "Nechať zvolený nástroj aktívny po skončení kreslenia", penMode: "Režim pera – zabrániť dotyku", link: "Pridať/ Upraviť odkaz pre vybraný tvar", eraser: "Guma", frame: "Nástroj rám", magicframe: "Drôtený model na kód", embeddable: "Web Embed", laser: "Laserový ukazovateľ", hand: "Ruka (nástroj pre pohyb plátna)", extraTools: "Ďalšie nástroje", mermaidToExcalidraw: "Mermaid do Excalidraw", magicSettings: "AI nastavenia" }, Y_ = { canvasActions: "Akcie plátna", selectedShapeActions: "Akcie tvarov z výberu", shapes: "Tvary" }, v_ = { canvasPanning: "Pre pohyb plátna podržte koliesko myši alebo medzerník počas ťahania, alebo použite nástroj ruka", linearElement: "Kliknite na vloženie viacerých bodov, potiahnite na vytvorenie jednej priamky", freeDraw: "Kliknite a ťahajte, pustite na ukončenie", text: "Tip: text môžete pridať aj dvojklikom kdekoľvek, ak je zvolený nástroj výber", embeddable: "Kliknite a ťahajte pre zapustenie webovej stránky", text_selected: "Použite dvojklik alebo stlačte Enter na editáciu textu", text_editing: "Stlačte Escape alebo CtrlOrCmd+ENTER na ukončenie editovania", linearElementMulti: "Kliknite na počiatočný bod alebo stlačte Escape alebo Enter na ukončenie", lockAngle: "Počas rotácie obmedzíte uhol podržaním SHIFT", resize: "Počas zmeny veľkosti zachováte proporcie podržaním SHIFT,\\npodržaním ALT meníte veľkosť so zachovaním stredu", resizeImage: "Podržte SHIFT pre voľnú zmenu veľkosti, podržte ALT pre zmenu veľkosti od stredu", rotate: "Počas rotácie obmedzíte uhol podržaním SHIFT", lineEditor_info: "Podržte CtrlOrCmd a kliknite dva krát alebo stlačte CtrlOrCmd + Enter pre editáciu bodov", lineEditor_pointSelected: "Stačte Delete na vymazanie bodu (bodov), CtrlOrCmd+D na duplikovanie, alebo potiahnite na presunutie", lineEditor_nothingSelected: "Zvoľte bod na upravovanie (podržte SHIFT pre zvolenie viacerých bodov) alebo podržte Alt a kliknite na pridanie nového bodu", placeImage: "Kliknite pre umiestnenie obrázka alebo kliknite a ťahajte pre zmenu jeho veľkosti", publishLibrary: "Uverejniť vašu knižnicu", bindTextToElement: "Stlačte enter na pridanie textu", deepBoxSelect: "Podržte CtrlOrCmd na výber v skupine alebo zamedzeniu poťiahnutia", eraserRevert: "Podržte Alt pre prehodenie položiek určených na vymazanie", firefox_clipboard_write: 'Táto sa funkcionalita sa dá zapnúť nastavením "dom.events.asyncClipboard.clipboardItem" na "true". Pre zmenu nastavení vo Firefox-e otvorte stránku "about:config".', disableSnapping: "Podržte CtrlOrCmd pre vypnutie prichytávania" }, H_ = { cannotShowPreview: "Nie je možné zobraziť náhľad plátna", canvasTooBig: "Plátno je možno príliš veľké.", canvasTooBigTip: "Tip: skúste presunúť najvzdialenejšie prvky bližšie k sebe." }, K_ = { headingMain: "Nastala chyba. Vyskúšajte <button>obnoviť stránku.</button>", clearCanvasMessage: "Ak obnovenie stránky nepomáha, vyskúšajte <button>vyčistiť plátno.</button>", clearCanvasCaveat: " To bude mať za následok stratu práce ", trackedToSentry: "Chyba s identifikátorom {{eventId}} bola zaznamenaná v našom systéme.", openIssueMessage: "Boli sme veľmi opatrní, aby informácie vašej scény neboli v chybe zaznamenané. Ak vaša scéna nie je súkromná, prosím zvážte pokračovanie na naše <button>hlásenie chýb.</button> Prosím zahrňte informácie nižšie pomocou kopírovania a prilepenia do GitHub issue.", sceneContent: "Obsah scény:" }, J_ = { desc_intro: "Pozvite niekoho do svojej aktuálnej scény a pracujte spoločne.", desc_privacy: "Nemajte obavy, schôdza používa end-to-end šifrovanie, takže všetko čo nakreslíte je súkromné. Dokonca, ani náš server dedokáže prečítať, čo ste vytvorili.", button_startSession: "Začať schôdzu", button_stopSession: "Ukončiť schôdzu", desc_inProgressIntro: "Práve prebieha živá schôdza.", desc_shareLink: "Zdieľajte tento odkaz s osobou, s ktorou chcete spolupracovať:", desc_exitSession: "Ukončenie schôdze vás odpojí z miestnosti, avšak naďalej budete môcť pokračovať v práci na scéne lokálne. Toto neovplyvní ostatných spolupracovníkov a stále budú môcť spolupracovať na ich verzii.", shareTitle: "Pripojiť sa k živej schôdzi na Excalidraw" }, Z_ = { title: "Chyba" }, q_ = { disk_title: "Uložiť na disk", disk_details: "Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované.", disk_button: "Uložiť do súboru", link_title: "Odkaz na zdieľanie", link_details: "Exportovať ako odkaz iba na čítanie.", link_button: "Exportovať ako odkaz", excalidrawplus_description: "Uložiť scénu do vášho Excalidraw+ pracovného priestoru.", excalidrawplus_button: "Exportovať", excalidrawplus_exportError: "Nepodarilo sa vykonať export do Excalidraw+..." }, W_ = { blog: "Prečítajte si náš blog", click: "kliknutie", deepSelect: "Výber v skupine", deepBoxSelect: "Výber v skupine alebo zamedzenie poťiahnutia", curvedArrow: "Zakrivená šípka", curvedLine: "Zakrivená čiara", documentation: "Dokumentácia", doubleClick: "dvojklik", drag: "potiahnutie", editor: "Editovanie", editLineArrowPoints: "Editácia bodov čiary/šípky", editText: "Editácia textu / pridanie štítku", github: "Objavili ste problém? Nahláste ho", howto: "Postupujte podľa naších návodov", or: "alebo", preventBinding: "Zakázať pripájanie šípky", tools: "Nástroje", shortcuts: "Klávesové skratky", textFinish: "Ukončenie editovania (text editor)", textNewLine: "Vložiť nový riadok (text editor)", title: "Pomocník", view: "Zobrazenie", zoomToFit: "Priblížiť aby boli zahrnuté všetky prvky", zoomToSelection: "Priblížiť na výber", toggleElementLock: "Zamknúť/odomknúť vybrané", movePageUpDown: "Posunúť stranu hore/dole", movePageLeftRight: "Posunúť stranu doľava/doprava" }, j_ = { title: "Vyčistiť plátno" }, T_ = { title: "Uverejniť knižnicu", itemName: "Názov položky", authorName: "Meno autora", githubUsername: "Github užívateľské meno", twitterUsername: "Twitter užívateľské meno", libraryName: "Názov knižnice", libraryDesc: "Popis knižnice", website: "Webová stránka", placeholder: { authorName: "Vaše meno alebo užívateľské meno", libraryName: "Názov vašej knižnice", libraryDesc: "Popis vašej knižnice, ktorý ostatným pomôže porozumieť jej vhodnému použitiu", githubHandle: "GitHub užívateľské meno (nepovinné), aby ste mohli robiť úpravy po tom, čo bude knižnica uverejnená na schválenie", twitterHandle: "Twitter užívateľské meno (nepovinné), aby sme vedeli komu pripísať zásluhu pri propagovaní cez Twitter", website: "Odkaz na vašu osobnú webovú stránku alebo niekam inam (nepovinné)" }, errors: { required: "Povinné", website: "Zadajte platnú adresu URL" }, noteDescription: "Uverejnite vašu knižnicu vo <link>verejnom zozname knižníc</link>aby ju aj ostatní mohli použiť v ich náčrtoch.", noteGuidelines: "Knižnica musí byť najprv manuálne schválená. Prosím prečítajte si <link>pokyny</link> pred uverejnením. Budete potrebovať Github účet na komunikáciu a vykonanie zmien, ak budú potrebné, avšak nie je to úplne povinné.", noteLicense: "Potvrdením súhlasíte, že knižnica bude zverejnená s <link>MIT licenciou, </link>čo v skratke znamená, že ju môže použiť hocikto bez obmedzení.", noteItems: "Každá položka v knižnici musí mať svoje vlastné meno, aby sa dala vyhľadať. Súčasťou knižnice budú nasledujúce položky:", atleastOneLibItem: "Začnite prosím zvolením aspoň jednej položky z knižnice", republishWarning: "Poznámka: Niektoré z vybraných položiek sú už označené ako zverejnené. Ich znovu uverejnenie by ste mali vykovať iba vtedy ak aktualizujete už existujúcu knižnicu alebo požiadavku na uverejnenie." }, z_ = { title: "Knižnica uverejnená", content: "Ďakujeme vám {{authorName}}. Vaša knižnica bola uverejnená na posúdenie. Stav môžete skontrolovať<link>tu</link>" }, P_ = { resetLibrary: "Obnoviť knižnicu", removeItemsFromLib: "Odstrániť zvolené položky z knižnice" }, O_ = { header: "Exportovať obrázok", label: { withBackground: "Pozadie", onlySelected: "Iba vybrané", darkMode: "Tmavý režim", embedScene: "Zahrnúť scénu", scale: "Mierka", padding: "Odsadenie" }, tooltip: { embedScene: `Údaje scény budú uložené do exportovaného PNG/SVG súboru, takže scéna z neho môže byť opäť obnovená.
Bude to mať za následok zvýšenie veľkosti súboru.` }, title: { exportToPng: "Exportovať do PNG", exportToSvg: "Exportovať do SVG", copyPngToClipboard: "Kopírovať PNG do schránky" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Kopírovať do schránky" } }, V_ = { tooltip: "Vaše kresby používajú end-to-end šifrovanie, takže ich Excalidraw server nedokáže prečítať.", link: "Blog o end-to-end šifrovaní v Excalidraw" }, X_ = { angle: "Uhol", element: "Prvok", elements: "Prvky", height: "Výška", scene: "Scéna", selected: "Vybrané", storage: "Úložisko", title: "Štatistiky", total: "Celkom", version: "Verzia", versionCopy: "Kliknutím skopírujete", versionNotAvailable: "Verzia nie je k dispozícii", width: "Šírka" }, __ = { addedToLibrary: "Pridané do knižnice", copyStyles: "Štýly skopírované.", copyToClipboard: "Skopírované do schránky.", copyToClipboardAsPng: `Kopírovanie {{exportSelection}} do schránky ako PNG prebehlo úspešne
({{exportColorScheme}})`, fileSaved: "Súbor uložený.", fileSavedToFilename: "Uložený ako {filename}", canvas: "plátna", selection: "výberu", pasteAsSingleElement: "Použitím {{shortcut}} vložte ako samostatný prvok alebo vložte do existujúceho editovaného textu", unableToEmbed: "Zapustenie tejto URL nie je povolené. Vytvorte issue na GitHub-e a požiadajte povolenie tejto URL", unrecognizedLinkFormat: "Odkaz, ktorý sa snažíte zapustiť nie je v očakávanom formáte. Prosím skúste vložiť 'odkaz na zdieľanie' poskytnutý zdrojovou webovou stránkou" }, $_ = { transparent: "Priehľadná", black: "Čierna", white: "Biela", red: "Červená", pink: "Ružová", grape: "Hroznová fialová", violet: "Fialová", gray: "Sivá", blue: "Modrá", cyan: "Azúrová", teal: "Modrozelená", green: "Zelená", yellow: "Žltá", orange: "Oranžová", bronze: "Bronzová" }, A$ = { app: { center_heading: "Všetky vaše dáta sú uložené lokálne vo vašom prehliadači.", center_heading_plus: "Chceli ste namiesto toho prejsť do Excalidraw+?", menuHint: "Exportovanie, nastavenia, jazyky, ..." }, defaults: { menuHint: "Exportovanie, nastavenia a ďalšie...", center_heading: "Diagramy. Jednoducho.", toolbarHint: "Zvoľte nástroj a začnite kresliť!", helpHint: "Klávesové skratky a pomocník" } }, u$ = { mostUsedCustomColors: "Najpoužívanejšie vlastné farby", colors: "Farby", shades: "Odtiene", hexCode: "Hex kód", noShades: "Pre túto farbu nie sú dostupné žiadne odtiene" }, e$ = { action: { exportToImage: { title: "Exportovať ako obrázok", button: "Exportovať ako obrázok", description: "Exportovať údaje scény ako obrázok, z ktorého môžu byť neskôr importované." }, saveToDisk: { title: "Uložiť na disk", button: "Uložiť na disk", description: "Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované." }, excalidrawPlus: { title: "Excalidraw+", button: "Exportovať ako Excalidraw+", description: "Uložiť scénu do vášho Excalidraw+ pracovného priestoru." } }, modal: { loadFromFile: { title: "Načítať zo súboru", button: "Načítať zo súboru", description: "Načítanie zo súboru <bold>nahradí váš existujúci obsah</bold>.<br></br>Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností." }, shareableLink: { title: "Načítať z odkazu", button: "Nahradiť môj obsah", description: "Načítanie externej kresby <bold>nahradí váš existujúci obsah</bold>.<br></br>Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností." } } }, C$ = { title: "Mermaid do Excalidraw", button: "Vložiť", description: "Aktuálne sú podporované iba <flowchartLink>vývojové diagramy</flowchartLink>, <sequenceLink>sekvenčné diagramy</sequenceLink> a <classLink>diagramy tried</classLink>. Ostatné typy budú v Excalidraw vykreslené ako obrázky.", syntax: "Mermaid syntax", preview: "Ukážka" }, j7A = { labels: L_, library: x_, buttons: S_, alerts: N_, errors: R_, toolBar: M_, headings: Y_, hints: v_, canvasError: H_, errorSplash: K_, roomDialog: J_, errorDialog: Z_, exportDialog: q_, helpDialog: W_, clearCanvasDialog: j_, publishDialog: T_, publishSuccessDialog: z_, confirmDialog: P_, imageExportDialog: O_, encrypted: V_, stats: X_, toast: __, colors: $_, welcomeScreen: A$, colorPicker: u$, overwriteConfirm: e$, mermaid: C$ };
const T7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: N_,
  buttons: S_,
  canvasError: H_,
  clearCanvasDialog: j_,
  colorPicker: u$,
  colors: $_,
  confirmDialog: P_,
  default: j7A,
  encrypted: V_,
  errorDialog: Z_,
  errorSplash: K_,
  errors: R_,
  exportDialog: q_,
  headings: Y_,
  helpDialog: W_,
  hints: v_,
  imageExportDialog: O_,
  labels: L_,
  library: x_,
  mermaid: C$,
  overwriteConfirm: e$,
  publishDialog: T_,
  publishSuccessDialog: z_,
  roomDialog: J_,
  stats: X_,
  toast: __,
  toolBar: M_,
  welcomeScreen: A$
}, Symbol.toStringTag, { value: "Module" }));
var B$ = { paste: "Prilepi", pasteAsPlaintext: "Prilepi kot navadno besedilo", pasteCharts: "Prilepi grafikone", selectAll: "Izberi vse", multiSelect: "Dodaj element v izbor", moveCanvas: "Premakni platno", cut: "Izreži", copy: "Kopiraj", copyAsPng: "Kopiraj v odložišče kot PNG", copyAsSvg: "Kopiraj v odložišče kot SVG", copyText: "Kopiraj v odložišče kot besedilo", copySource: "Kopiraj vir v odložišče", convertToCode: "Pretvori v kodo", bringForward: "Postavi naprej", sendToBack: "Pomakni v ozadje", bringToFront: "Pomakni v ospredje", sendBackward: "Pošlji nazaj", delete: "Izbriši", copyStyles: "Kopiraj slog", pasteStyles: "Prilepi slog", stroke: "Poteza", background: "Ozadje", fill: "Polnilo", strokeWidth: "Debelina poteze", strokeStyle: "Slog poteze", strokeStyle_solid: "Polna", strokeStyle_dashed: "Črtkana", strokeStyle_dotted: "Pikasta", sloppiness: "Površnost", opacity: "Prekrivnost", textAlign: "Poravnava besedila", edges: "Robovi", sharp: "Ostri", round: "Okrogli", arrowheads: "Puščice", arrowhead_none: "Brez", arrowhead_arrow: "Puščica", arrowhead_bar: "Palica", arrowhead_circle: "Krog", arrowhead_circle_outline: "Krog (oris)", arrowhead_triangle: "Trikotnik", arrowhead_triangle_outline: "Trikotnik (oris)", arrowhead_diamond: "Diamant", arrowhead_diamond_outline: "Diamant (oris)", fontSize: "Velikost pisave", fontFamily: "Družina pisave", addWatermark: 'Dodaj "Izdelano z Excalidraw"', handDrawn: "Ročno narisano", normal: "Običajno", code: "Koda", small: "Majhna", medium: "Srednja", large: "Velika", veryLarge: "Zelo velika", solid: "Polno", hachure: "Šrafura", zigzag: "Cikcak", crossHatch: "Križno", thin: "Tanko", bold: "Krepko", left: "Levo", center: "Sredina", right: "Desno", extraBold: "Ekstra krepko", architect: "Arhitekt", artist: "Umetnik", cartoonist: "Risar", fileTitle: "Ime datoteke", colorPicker: "Izbor barve", canvasColors: "Uporabljeno na platnu", canvasBackground: "Ozadje platna", drawingCanvas: "Platno za risanje", layers: "Plasti", actions: "Dejanja", language: "Jezik", liveCollaboration: "Sodelovanje v živo...", duplicateSelection: "Podvoji", untitled: "Neimenovana", name: "Ime", yourName: "Vaše ime", madeWithExcalidraw: "Izdelano z Excalidraw", group: "Združi izbor", ungroup: "Razdruži izbor", collaborators: "Sodelavci", showGrid: "Prikaži mrežo", addToLibrary: "Dodaj v knjižnico", removeFromLibrary: "Odstrani iz knjižnice", libraryLoadingMessage: "Nalaganje knjižnice ...", libraries: "Brskaj po knjižnicah", loadingScene: "Nalaganje scene...", align: "Poravnava", alignTop: "Poravnaj na vrh", alignBottom: "Poravnaj na dno", alignLeft: "Poravnaj levo", alignRight: "Poravnaj desno", centerVertically: "Navpično na sredini", centerHorizontally: "Vodoravno na sredini", distributeHorizontally: "Porazdeli vodoravno", distributeVertically: "Porazdeli navpično", flipHorizontal: "Obrni vodoravno", flipVertical: "Obrni navpično", viewMode: "Način ogleda", share: "Deli", showStroke: "Prikaži izbirnik barv poteze", showBackground: "Prikaži izbirnik barv ozadja", toggleTheme: "Obrni temo", personalLib: "Osebna knjižnica", excalidrawLib: "Knjižnica Excalidraw", decreaseFontSize: "Zmanjšaj velikost pisave", increaseFontSize: "Povečaj velikost pisave", unbindText: "Veži besedilo", bindText: "Veži besedilo na element", createContainerFromText: "Zavij besedilo v vsebnik", link: { edit: "Uredi povezavo", editEmbed: "Uredi povezavo in vdelaj", create: "Ustvari povezavo", createEmbed: "Ustvari povezavo in vdelaj", label: "Povezava", labelEmbed: "Povezava in vdelovanje", empty: "Povezava ni nastavljena" }, lineEditor: { edit: "Uredi črto", exit: "Zapri urejanje črte" }, elementLock: { lock: "Zakleni", unlock: "Odkleni", lockAll: "Zakleni vse", unlockAll: "Odkleni vse" }, statusPublished: "Objavljeno", sidebarLock: "Obdrži stransko vrstico odprto", selectAllElementsInFrame: "Izberi vse elemente v okvirju", removeAllElementsFromFrame: "Izbriši vse elemente v okvirju", eyeDropper: "Izberi barvo s platna", textToDiagram: "Besedilo v diagram", prompt: "Poziv" }, g$ = { noItems: "Dodan še ni noben element...", hint_emptyLibrary: "Izberite element na platnu, da ga dodate sem, ali namestite knjižnico iz javnega skladišča spodaj.", hint_emptyPrivateLibrary: "Izberite element na platnu, da ga dodate sem." }, t$ = { clearReset: "Ponastavi platno", exportJSON: "Izvozi v datoteko", exportImage: "Izvozi sliko...", export: "Shrani v...", copyToClipboard: "Kopiraj v odložišče", save: "Shrani v trenutno datoteko", saveAs: "Shrani kot", load: "Odpri", getShareableLink: "Pridobi povezavo za deljenje", close: "Zapri", selectLanguage: "Izberi jezik", scrollBackToContent: "Pomakni se nazaj na vsebino", zoomIn: "Povečaj", zoomOut: "Pomanjšaj", resetZoom: "Ponastavi povečavo", menu: "Meni", done: "Končano", edit: "Uredi", undo: "Razveljavi", redo: "Ponovi", resetLibrary: "Ponastavi knjižnico", createNewRoom: "Ustvari novo sobo", fullScreen: "Celozaslonski način", darkMode: "Temni način", lightMode: "Svetli način", zenMode: "Način Zen", objectsSnapMode: "Pripenjanje na predmete", exitZenMode: "Zapri način Zen", cancel: "Prekliči", clear: "Počisti", remove: "Odstrani", embed: "Preklopi vdelavo", publishLibrary: "Objavi", submit: "Pošlji", confirm: "Potrdi", embeddableInteractionButton: "Kliknite za interakcijo" }, i$ = { clearReset: "To bo počistilo celotno platno. Ali ste prepričani?", couldNotCreateShareableLink: "Povezave za deljenje ni bilo mogoče ustvariti.", couldNotCreateShareableLinkTooBig: "Povezave za deljenje ni bilo mogoče ustvariti: scena je prevelika", couldNotLoadInvalidFile: "Neveljavne datoteke ni bilo mogoče naložiti", importBackendFailed: "Uvoz iz zaledja ni uspel.", cannotExportEmptyCanvas: "Izvoz prazne scene ni mogoč.", couldNotCopyToClipboard: "Kopiranje v odložišče ni uspelo.", decryptFailed: "Dešifriranje podatkov ni uspelo.", uploadedSecurly: "Nalaganje je bilo zaščiteno s šifriranjem od konca do konca, kar pomeni, da strežnik Excalidraw in tretje osebe ne morejo brati vsebine.", loadSceneOverridePrompt: "Nalaganje zunanje risbe bo nadomestilo vašo obstoječo vsebino. Ali želite nadaljevati?", collabStopOverridePrompt: `Ustavitev seje bo prepisala vašo prejšnjo, lokalno shranjeno risbo. Ali ste prepričani?

(Če želite obdržati lokalno risbo, preprosto zaprite zavihek brskalnika.)`, errorAddingToLibrary: "Elementa ni bilo mogoče dodati v knjižnico", errorRemovingFromLibrary: "Elementa ni bilo mogoče izbrisati iz knjižnice", confirmAddLibrary: "S tem boste v vašo knjižnico dodali oblike ({{numShapes}}). Ali ste prepričani?", imageDoesNotContainScene: "Zdi se, da ta slika ne vsebuje podatkov o sceni. Ali ste med izvozom omogočili vdelavo scene?", cannotRestoreFromImage: "Scene ni bilo mogoče obnoviti iz te slikovne datoteke", invalidSceneUrl: "S priloženega URL-ja ni bilo mogoče uvoziti scene. Je napačno oblikovana ali pa ne vsebuje veljavnih podatkov Excalidraw JSON.", resetLibrary: "To bo počistilo vašo knjižnico. Ali ste prepričani?", removeItemsFromsLibrary: "Izbriši elemente ({{count}}) iz knjižnice?", invalidEncryptionKey: "Ključ za šifriranje mora vsebovati 22 znakov. Sodelovanje v živo je onemogočeno.", collabOfflineWarning: `Internetna povezava ni na voljo.
Vaše spremembe ne bodo shranjene!` }, E$ = { unsupportedFileType: "Nepodprt tip datoteke.", imageInsertError: "Vstavljanje slike ni bilo uspešno. Poskusite ponovno kasneje...", fileTooBig: "Datoteka je prevelika. Največja dovoljena velikost je {{maxSize}}.", svgImageInsertError: "Vstavljanje slike SVG ni uspelo. Oznake SVG so videti neveljavne.", failedToFetchImage: "Pridobivanje slike ni uspelo.", invalidSVGString: "Neveljaven SVG.", cannotResolveCollabServer: "Povezave s strežnikom za sodelovanje ni bilo mogoče vzpostaviti. Ponovno naložite stran in poskusite znova.", importLibraryError: "Nalaganje knjižnice ni uspelo", collabSaveFailed: "Ni bilo mogoče shraniti v zaledno bazo podatkov. Če se težave nadaljujejo, shranite datoteko lokalno, da ne boste izgubili svojega dela.", collabSaveFailed_sizeExceeded: "Ni bilo mogoče shraniti v zaledno bazo podatkov, zdi se, da je platno preveliko. Datoteko shranite lokalno, da ne izgubite svojega dela.", imageToolNotSupported: "Slike so onemogočene.", brave_measure_text_error: { line1: "Videti je, da uporabljate brskalnik Brave z omogočeno nastavitvijo <bold>Agresivno blokiranje prstnih odtisov</bold>.", line2: "To bi lahko povzročilo motnje v obnašanju <bold>besedilnih elementov</bold> v vaših risbah.", line3: "Močno priporočamo, da onemogočite to nastavitev. Sledite <link>tem korakom</link>, kako to storiti.", line4: "Če onemogočanje te nastavitve ne popravi prikaza besedilnih elementov, odprite <issueLink>vprašanje</issueLink> na našem GitHubu ali nam pišite na <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Vdelani elementi ne morejo biti dodani v knjižnico.", iframe: "Elementov iFrame ni mogoče dodati v knjižnico.", image: "Podpora za dodajanje slik v knjižnico prihaja kmalu!" }, asyncPasteFailedOnRead: "Ni bilo mogoče prilepiti (ni bilo mogoče brati iz sistemskega odložišča).", asyncPasteFailedOnParse: "Ni bilo mogoče prilepiti.", copyToSystemClipboardFailed: "Ni bilo mogoče kopirati v odložišče." }, a$ = { selection: "Izbor", image: "Vstavi sliko", rectangle: "Pravokotnik", diamond: "Diamant", ellipse: "Elipsa", arrow: "Puščica", line: "Črta", freedraw: "Risanje", text: "Besedilo", library: "Knjižnica", lock: "Ohrani izbrano orodje aktivno po risanju", penMode: "Način peresa - prepreči dotik", link: "Dodaj/posodobi povezavo za izbrano obliko", eraser: "Radirka", frame: "Okvir", magicframe: "Žični okvir v kodo", embeddable: "Spletna vdelava", laser: "Laserski kazalec", hand: "Roka (orodje za premikanje)", extraTools: "Več orodij", mermaidToExcalidraw: "Mermaid v Excalidraw", magicSettings: "Nastavitve AI" }, I$ = { canvasActions: "Dejanja za platno", selectedShapeActions: "Dejanja za izbrane oblike", shapes: "Oblike" }, o$ = { canvasPanning: "Za premikanje platna med vlečenjem držite kolesce miške ali preslednico ali uporabite orodje roka", linearElement: "Kliknite za začetek več točk, povlecite za posamezno črto", freeDraw: "Kliknite in povlecite, spustite, ko končate", text: "Namig: besedilo lahko dodate tudi z dvoklikom kjer koli z orodjem za izbiro", embeddable: "Kliknite in povlecite, da ustvarite spletno vdelavo", text_selected: "Dvokliknite ali pritisnite tipko Enter, da uredite besedilo", text_editing: "Pritisnite tipko Escape ali CtrlOrCmd+Enter za zaključek urejanja", linearElementMulti: "Kliknite zadnjo točko ali pritisnite Escape ali Enter, da končate", lockAngle: "Kot lahko omejite tako, da držite tipko Shift", resize: "Razmerja lahko omejite tako, da držite tipko Shift med spreminjanjem velikosti. Držite tipko Alt, da spremenite velikost od središča", resizeImage: "Velikost lahko prosto spreminjate tako, da držite tipko Shift. Držite tipko Alt, da spremenite velikost od središča", rotate: "Kote lahko omejite tako, da med vrtenjem držite tipko Shift", lineEditor_info: "Držite CtrlOrCmd in dvokliknite ali pritisnite CtrlOrCmd + Enter za urejanje točk", lineEditor_pointSelected: "Pritisnite tipko Delete, da odstranite točko(e), CtrlOrCmd+D za podvojitev ali povlecite za premikanje", lineEditor_nothingSelected: "Izberite točko za urejanje (pridržite tipko Shift za izbiro več točk), ali držite tipko Alt in kliknite za dodajanje novih točk", placeImage: "Kliknite, da postavite sliko, ali kliknite in povlecite, da ročno nastavite njeno velikost", publishLibrary: "Objavi svojo knjižnico", bindTextToElement: "Pritisnite tipko Enter za dodajanje besedila", deepBoxSelect: "Držite tipko CtrlOrCmd za globoko izbiro in preprečitev vlečenja", eraserRevert: "Pridržite tipko Alt, da razveljavite elemente, označene za brisanje", firefox_clipboard_write: 'To funkcijo lahko verjetno omogočite z nastavitvijo zastavice "dom.events.asyncClipboard.clipboardItem" na "true". Če želite spremeniti zastavice brskalnika v Firefoxu, obiščite stran "about:config".', disableSnapping: "Držite CtrlOrCmd, da onemogočite pripenjanje" }, Q$ = { cannotShowPreview: "Predogleda ni bilo mogoče prikazati", canvasTooBig: "Morda je platno preveliko.", canvasTooBigTip: "Nasvet: poskusite premakniti najbolj oddaljene elemente nekoliko bližje skupaj." }, n$ = { headingMain: "Prišlo je do napake. Poskusite <button>ponovno naložiti stran.</button>", clearCanvasMessage: "Če ponovno nalaganje ne deluje, poskusite <button>počistiti platno.</button>", clearCanvasCaveat: " To bo povzročilo izgubo dela ", trackedToSentry: "Napaka z identifikatorjem {{eventId}} smo zabeležili v naš sistem.", openIssueMessage: "Zelo smo bili previdni, da v podatke o napaki nismo vključili vaših podatkov o sceni. Če vaša scena ni zasebna, vas prosimo, da napišete več podrobnosti na našem <button>sledilniku hroščev.</button> Prosimo, vključite spodnje informacije tako, da jih kopirate in prilepite v GitHub vprašanje.", sceneContent: "Vsebina scene:" }, r$ = { desc_intro: "Na vašo trenutno sceno lahko povabite osebe, ki bodo sodelovale z vami.", desc_privacy: "Brez skrbi. Seja uporablja šifriranje od konca do konca, tako da bo vse, kar narišete, ostalo zasebno. Niti naš strežnik ne bo mogel videti, kaj si izmislite.", button_startSession: "Začni sejo", button_stopSession: "Ustavi sejo", desc_inProgressIntro: "Seja sodelovanja v živo je v teku.", desc_shareLink: "Delite to povezavo z vsemi, s katerimi želite sodelovati:", desc_exitSession: "Ustavitev seje vas bo odklopila od sobe, vendar boste lahko lokalno nadaljevali delo s sceno. To pa ne bo vplivalo na druge osebe. Druge osebe bodo še vedno lahko sodelovale v svoji različici.", shareTitle: "Pridruži se seji sodelovanja v živo na Excalidraw" }, s$ = { title: "Napaka" }, l$ = { disk_title: "Shrani na disk", disk_details: "Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite.", disk_button: "Shrani v datoteko", link_title: "Povezava za deljenje", link_details: "Izvoz kot povezava samo za branje.", link_button: "Izvoz kot povezava", excalidrawplus_description: "Shrani sceno v svoj delovni prostor Excalidraw+.", excalidrawplus_button: "Izvoz", excalidrawplus_exportError: "Trenutno ni bilo mogoče izvoziti v Excalidraw+..." }, c$ = { blog: "Preberite naš blog", click: "klik", deepSelect: "Globoka izbira", deepBoxSelect: "Globoka izbira znotraj polja in preprečitev vlečenja", curvedArrow: "Ukrivljena puščica", curvedLine: "Ukrivljena črta", documentation: "Dokumentacija", doubleClick: "dvojni klik", drag: "vleci", editor: "Urejevalnik", editLineArrowPoints: "Uredi črto/točke puščice", editText: "Uredi besedilo / dodaj oznako", github: "Ste našli težavo? Pošljite", howto: "Sledite našim vodičem", or: "ali", preventBinding: "Prepreči vezanje puščice", tools: "Orodja", shortcuts: "Bližnjice na tipkovnici", textFinish: "Zaključi urejanje (urejevalnik besedila)", textNewLine: "Dodaj novo vrstico (urejevalnik besedila)", title: "Pomoč", view: "Pogled", zoomToFit: "Približaj na vse elemente", zoomToSelection: "Približaj na izbor", toggleElementLock: "Zakleni/odkleni izbor", movePageUpDown: "Premakni stran gor/dol", movePageLeftRight: "Premakni stran levo/desno" }, d$ = { title: "Počisti platno" }, D$ = { title: "Objavi knjižnico", itemName: "Ime elementa", authorName: "Ime avtorja", githubUsername: "GitHub uporabniško ime", twitterUsername: "Twitter uporabniško ime", libraryName: "Ime knjižnice", libraryDesc: "Opis knijžnice", website: "Spletna stran", placeholder: { authorName: "Vaše ime ali uporabniško ime", libraryName: "Ime vaše knjižnice", libraryDesc: "Opis vaše knjižnice, da bodo ljudje lažje razumeli njeno uporabo", githubHandle: "GitHub uporabniško ime (neobvezno), tako da lahko urejate knjižnico potem, ko jo pošljete v pregled", twitterHandle: "Twitter uporabniško ime (neobvezno), tako da vemo, koga omeniti pri promociji prek Twitterja", website: "Povezava na vašo osebno spletno stran ali drugam (neobvezno)" }, errors: { required: "Obvezno", website: "Vnesite veljaven URL" }, noteDescription: "Predložite svojo knjižnico, da bo vključena v <link>javno skladišče knjižnic,</link>da jih drugi lahko uporabljajo v svojih risbah.", noteGuidelines: "Knjižnica mora biti najprej ročno odobrena. Prosimo vas, da pred oddajanjem preberete naše <link>smernice.</link>Za komunikacijo in spreminjanje po potrebi boste potrebovali račun GitHub, vendar to ni obvezno.", noteLicense: "Z oddajo se strinjate, da bo knjižnica objavljena pod <link>licenco MIT, </link>kar na kratko pomeni, da jo lahko kdorkoli uporablja brez omejitev.", noteItems: "Vsak element knjižnice mora imeti svoje ime, tako da ga je mogoče filtrirati. Vključeni bodo naslednji elementi knjižnice:", atleastOneLibItem: "Za začetek izberite vsaj en element knjižnice", republishWarning: "Opomba: nekateri izbrani predmeti so označeni kot že objavljeni/oddani. Elemente lahko znova oddate samo, ko posodabljate obstoječo knjižnico ali oddajo." }, h$ = { title: "Knjižnica oddana", content: "{{authorName}}, hvala. Vaša knjižnica je bila poslana v pregled. Stanje lahko spremljate<link>tukaj</link>" }, w$ = { resetLibrary: "Ponastavi knjižnico", removeItemsFromLib: "Odstran izbrane elemente iz knjižnice" }, F$ = { header: "Izvozi sliko", label: { withBackground: "Ozadje", onlySelected: "Samo izbor", darkMode: "Temni način", embedScene: "Vdelaj sceno", scale: "Povečava", padding: "Odmik" }, tooltip: { embedScene: `Podatki o sceni bodo shranjeni v izvoženo datoteko PNG/SVG, tako da bo sceno mogoče obnoviti iz nje.
To bo povečalo velikost izvožene datoteke.` }, title: { exportToPng: "Izvozi v PNG", exportToSvg: "Izvozi v SVG", copyPngToClipboard: "Kopiraj PNG v odložišče" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Kopiraj v odložišče" } }, p$ = { tooltip: "Vaše risbe so šifrirane od konca do konca, tako da jih strežniki Excalidraw nikoli ne bodo videli.", link: "Blog objava o šifriranju od konca do konca v Excalidraw" }, m$ = { angle: "Kot", element: "Element", elements: "Elementi", height: "Višina", scene: "Scena", selected: "Izbrano", storage: "Shramba", title: "Statistika za napredne uporabnike", total: "Skupaj", version: "Različica", versionCopy: "Kliknite za kopiranje", versionNotAvailable: "Različica ni na voljo", width: "Širina" }, k$ = { addedToLibrary: "Dodano v knjižnico", copyStyles: "Slogi kopirani.", copyToClipboard: "Kopirano v odložišče.", copyToClipboardAsPng: "Kopirano v odložišče kot PNG ({{exportSelection}}, {{exportColorScheme}})", fileSaved: "Datoteka shranjena.", fileSavedToFilename: "Shranjeno v {filename}", canvas: "platno", selection: "izbor", pasteAsSingleElement: `Uporabite {{shortcut}}, da prilepite kot en element,
 ali prilepite v obstoječ urejevalnik besedil`, unableToEmbed: "Vdelava tega URL-ja trenutno ni dovoljena. Ustvarite vprašanje na GitHub-u in prosite za vmestitev URL-ja na seznam dovoljenih", unrecognizedLinkFormat: "Povezava, ki ste jo vdelali, se ne ujema s pričakovano obliko. Poskusite prilepiti niz za vdelavo, ki ste ga prejeli na izvorni strani" }, y$ = { transparent: "Prosojno", black: "Črna", white: "Bela", red: "Rdeča", pink: "Roza", grape: "Grozdje", violet: "Vijolična", gray: "Siva", blue: "Modra", cyan: "Cijan", teal: "Turkizna", green: "Zelena", yellow: "Rumena", orange: "Oranžna", bronze: "Bronasta" }, b$ = { app: { center_heading: "Vsi vaši podatki so shranjeni lokalno v vašem brskalniku.", center_heading_plus: "Ste namesto tega želeli odpreti Excalidraw+?", menuHint: "Izvoz, nastavitve, jeziki, ..." }, defaults: { menuHint: "Izvoz, nastavitve in več ...", center_heading: "Diagrami. Enostavno.", toolbarHint: "Izberi orodje in začni z risanjem!", helpHint: "Bližnjice in pomoč" } }, U$ = { mostUsedCustomColors: "Najpogosteje uporabljene barve po meri", colors: "Barve", shades: "Odtenki", hexCode: "Hex koda", noShades: "Odtenki za to barvo niso na voljo" }, G$ = { action: { exportToImage: { title: "Izvozi kot sliko", button: "Izvozi kot sliko", description: "Izvozite podatke scene kot sliko, iz katere jo lahko pozneje uvozite." }, saveToDisk: { title: "Shrani na disk", button: "Shrani na disk", description: "Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite." }, excalidrawPlus: { title: "Excalidraw+", button: "Izvozi v Excalidraw+", description: "Shrani sceno v svoj delovni prostor Excalidraw+." } }, modal: { loadFromFile: { title: "Naloži iz datoteke", button: "Naloži iz datoteke", description: "Nalaganje iz datoteke bo <bold>prepisalo vašo obstoječo vsebino</bold>.<br></br>Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti." }, shareableLink: { title: "Naloži iz povezave", button: "Zamenjaj mojo vsebino", description: "Nalaganje zunanje risbe bo <bold>prepisalo vašo obstoječo vsebino</bold>.<br></br>Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti." } } }, f$ = { title: "Mermaid v Excalidraw", button: "Vstavi", description: "Trenutno so podprti samo <flowchartLink>diagrami poteka</flowchartLink>, <sequenceLink>diagrami zaporedij</sequenceLink> in <classLink>Razredni diagrami</classLink>. Druge vrste bodo upodobljene kot slike v Excalidraw.", syntax: "Sintaksa Mermaid", preview: "Predogled" }, z7A = { labels: B$, library: g$, buttons: t$, alerts: i$, errors: E$, toolBar: a$, headings: I$, hints: o$, canvasError: Q$, errorSplash: n$, roomDialog: r$, errorDialog: s$, exportDialog: l$, helpDialog: c$, clearCanvasDialog: d$, publishDialog: D$, publishSuccessDialog: h$, confirmDialog: w$, imageExportDialog: F$, encrypted: p$, stats: m$, toast: k$, colors: y$, welcomeScreen: b$, colorPicker: U$, overwriteConfirm: G$, mermaid: f$ };
const P7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: i$,
  buttons: t$,
  canvasError: Q$,
  clearCanvasDialog: d$,
  colorPicker: U$,
  colors: y$,
  confirmDialog: w$,
  default: z7A,
  encrypted: p$,
  errorDialog: s$,
  errorSplash: n$,
  errors: E$,
  exportDialog: l$,
  headings: I$,
  helpDialog: c$,
  hints: o$,
  imageExportDialog: F$,
  labels: B$,
  library: g$,
  mermaid: f$,
  overwriteConfirm: G$,
  publishDialog: D$,
  publishSuccessDialog: h$,
  roomDialog: r$,
  stats: m$,
  toast: k$,
  toolBar: a$,
  welcomeScreen: b$
}, Symbol.toStringTag, { value: "Module" }));
var L$ = { paste: "Klistra in", pasteAsPlaintext: "Klistra som oformaterad text", pasteCharts: "Klistra in diagram", selectAll: "Markera alla", multiSelect: "Lägg till element till markering", moveCanvas: "Flytta canvas", cut: "Klipp ut", copy: "Kopiera", copyAsPng: "Kopiera till urklipp som PNG", copyAsSvg: "Kopiera till urklipp som SVG", copyText: "Kopiera till urklipp som text", copySource: "Kopiera källa till urklipp", convertToCode: "Konvertera till kod", bringForward: "Flytta framåt", sendToBack: "Flytta underst", bringToFront: "Flytta främst", sendBackward: "Skicka bakåt", delete: "Ta bort", copyStyles: "Kopiera stil", pasteStyles: "Klistra in stil", stroke: "Linje", background: "Bakgrund", fill: "Fyllnad", strokeWidth: "Linjebredd", strokeStyle: "Linjestil", strokeStyle_solid: "Solid", strokeStyle_dashed: "Streckad", strokeStyle_dotted: "Punktad", sloppiness: "Slarvighet", opacity: "Genomskinlighet", textAlign: "Textjustering", edges: "Kanter", sharp: "Skarp", round: "Rund", arrowheads: "Pilhuvuden", arrowhead_none: "Inga", arrowhead_arrow: "Pil", arrowhead_bar: "Stolpe", arrowhead_circle: "Cirkel", arrowhead_circle_outline: "Cirkel (kontur)", arrowhead_triangle: "Triangel", arrowhead_triangle_outline: "Triangel (kontur)", arrowhead_diamond: "Diamant", arrowhead_diamond_outline: "Diamant (kontur)", fontSize: "Teckenstorlek", fontFamily: "Teckensnitt", addWatermark: 'Lägg till "Skapad med Excalidraw"', handDrawn: "Handritad", normal: "Normal", code: "Kod", small: "Liten", medium: "Medium", large: "Stor", veryLarge: "Mycket stor", solid: "Solid", hachure: "Skraffering", zigzag: "Sicksack", crossHatch: "Skraffera med kors", thin: "Tunn", bold: "Fet", left: "Vänster", center: "Centrera", right: "Höger", extraBold: "Extra fet", architect: "Arkitekt", artist: "Artist", cartoonist: "Serietecknare", fileTitle: "Filnamn", colorPicker: "Färgväljare", canvasColors: "Används på canvas", canvasBackground: "Canvas-bakgrund", drawingCanvas: "Ritar canvas", layers: "Lager", actions: "Åtgärder", language: "Språk", liveCollaboration: "Samarbeta live...", duplicateSelection: "Duplicera", untitled: "Namnlös", name: "Namn", yourName: "Ditt namn", madeWithExcalidraw: "Skapad med Excalidraw", group: "Gruppera markering", ungroup: "Avgruppera markering", collaborators: "Medarbetare", showGrid: "Visa rutnät", addToLibrary: "Lägg till i biblioteket", removeFromLibrary: "Ta bort från bibliotek", libraryLoadingMessage: "Laddar bibliotek…", libraries: "Bläddra i bibliotek", loadingScene: "Laddar skiss…", align: "Justera", alignTop: "Justera överkant", alignBottom: "Justera underkant", alignLeft: "Justera vänster", alignRight: "Justera höger", centerVertically: "Centrera vertikalt", centerHorizontally: "Centrera horisontellt", distributeHorizontally: "Fördela horisontellt", distributeVertically: "Fördela vertikalt", flipHorizontal: "Vänd horisontellt", flipVertical: "Vänd vertikalt", viewMode: "Visningsläge", share: "Dela", showStroke: "Visa färgväljare för linjefärg", showBackground: "Visa färgväljare för bakgrundsfärg", toggleTheme: "Växla tema", personalLib: "Personligt bibliotek", excalidrawLib: "Excalidraw bibliotek", decreaseFontSize: "Minska fontstorleken", increaseFontSize: "Öka fontstorleken", unbindText: "Koppla bort text", bindText: "Bind texten till behållaren", createContainerFromText: "Radbryt text i en avgränsad yta", link: { edit: "Redigera länk", editEmbed: "Redigera länk & bädda in", create: "Skapa länk", createEmbed: "Skapa länk & bädda in", label: "Länk", labelEmbed: "Länka & bädda in", empty: "Ingen länk är angiven" }, lineEditor: { edit: "Redigera linje", exit: "Avsluta linjeredigerare" }, elementLock: { lock: "Lås", unlock: "Lås upp", lockAll: "Lås alla", unlockAll: "Lås upp alla" }, statusPublished: "Publicerad", sidebarLock: "Håll sidofältet öppet", selectAllElementsInFrame: "Markera alla element i rutan", removeAllElementsFromFrame: "Ta bort alla element från rutan", eyeDropper: "Välj färg från canvas", textToDiagram: "Text till diagram", prompt: "Fråga" }, x$ = { noItems: "Inga objekt tillagda ännu...", hint_emptyLibrary: "Välj ett objekt på canvasen för att lägga till det här, eller installera ett bibliotek från det publika arkivet, nedan.", hint_emptyPrivateLibrary: "Välj ett objekt på canvasen för att lägga till det här." }, S$ = { clearReset: "Återställ canvasen", exportJSON: "Exportera till fil", exportImage: "Exportera bild...", export: "Spara till...", copyToClipboard: "Kopiera till urklipp", save: "Spara till aktuell fil", saveAs: "Spara som", load: "Öppna", getShareableLink: "Hämta delbar länk", close: "Stäng", selectLanguage: "Välj språk", scrollBackToContent: "Bläddra tillbaka till innehållet", zoomIn: "Zooma in", zoomOut: "Zooma ut", resetZoom: "Återställ zoom", menu: "Meny", done: "Klart", edit: "Redigera", undo: "Ångra", redo: "Gör om", resetLibrary: "Återställ bibliotek", createNewRoom: "Skapa ett nytt rum", fullScreen: "Helskärm", darkMode: "Mörkt läge", lightMode: "Ljust läge", zenMode: "Zen-läge", objectsSnapMode: "Fäst mot objekt", exitZenMode: "Gå ur zen-läge", cancel: "Avbryt", clear: "Rensa", remove: "Ta bort", embed: "Växla inbäddning", publishLibrary: "Publicera", submit: "Skicka", confirm: "Bekräfta", embeddableInteractionButton: "Klicka för att interagera" }, N$ = { clearReset: "Detta rensar hela canvasen. Är du säker?", couldNotCreateShareableLink: "Kunde inte skapa delbar länk.", couldNotCreateShareableLinkTooBig: "Kunde inte skapa delbar länk: skissen är för stor", couldNotLoadInvalidFile: "Kunde inte ladda ogiltig fil", importBackendFailed: "Importering från backend misslyckades.", cannotExportEmptyCanvas: "Kan inte exportera tom canvas.", couldNotCopyToClipboard: "Kunde inte kopiera till urklipp.", decryptFailed: "Kunde inte avkryptera data.", uploadedSecurly: "Uppladdning har säkrats med kryptering från ände till ände. vilket innebär att Excalidraw server och tredje part inte kan läsa innehållet.", loadSceneOverridePrompt: "Laddning av extern skiss kommer att ersätta ditt befintliga innehåll. Vill du fortsätta?", collabStopOverridePrompt: `Att stoppa sessionen kommer att skriva över din föregående, lokalt lagrade skiss. Är du säker?

(Om du vill behålla din lokala skiss, stäng bara webbläsarfliken istället.)`, errorAddingToLibrary: "Kunde inte lägga till objekt i biblioteket", errorRemovingFromLibrary: "Kunde inte ta bort objekt från biblioteket", confirmAddLibrary: "Detta kommer att lägga till {{numShapes}} form(er) till ditt bibliotek. Är du säker?", imageDoesNotContainScene: "Den här bilden verkar inte innehålla någon skissdata. Har du aktiverat inbäddning av skiss under export?", cannotRestoreFromImage: "Skiss kunde inte återställas från denna bildfil", invalidSceneUrl: "Det gick inte att importera skiss från den angivna webbadressen. Antingen har den fel format, eller så innehåller den ingen giltig Excalidraw JSON data.", resetLibrary: "Detta kommer att rensa ditt bibliotek. Är du säker?", removeItemsFromsLibrary: "Ta bort {{count}} objekt från biblioteket?", invalidEncryptionKey: "Krypteringsnyckeln måste vara 22 tecken. Livesamarbetet är inaktiverat.", collabOfflineWarning: `Ingen internetanslutning tillgänglig.
Dina ändringar kommer inte att sparas!` }, R$ = { unsupportedFileType: "Filtypen stöds inte.", imageInsertError: "Kunde inte infoga bild. Försök igen senare...", fileTooBig: "Filen är för stor. Maximal tillåten storlek är {{maxSize}}.", svgImageInsertError: "Kunde inte infoga SVG-bild. SVG-koden ser ogiltig ut.", failedToFetchImage: "Kunde inte hämta bilden.", invalidSVGString: "Ogiltig SVG.", cannotResolveCollabServer: "Det gick inte att ansluta till samarbets-servern. Ladda om sidan och försök igen.", importLibraryError: "Kunde inte ladda bibliotek", collabSaveFailed: "Det gick inte att spara i backend-databasen. Om problemen kvarstår bör du spara filen lokalt för att se till att du inte förlorar ditt arbete.", collabSaveFailed_sizeExceeded: "Det gick inte att spara till backend-databasen, whiteboarden verkar vara för stor. Du bör spara filen lokalt för att du inte ska förlora ditt arbete.", imageToolNotSupported: "Bilder är inaktiverade.", brave_measure_text_error: { line1: "Det ser ut som om du använder Brave-webbläsaren med <bold>Aggressivt Blockera fingeravtryck</bold> inställningen aktiverad.", line2: "Detta kan resultera i trasiga <bold>Textelement</bold> i dina ritningar.", line3: "Vi rekommenderar starkt att du inaktiverar den här inställningen. Du kan följa <link>dessa steg</link> för att inaktivera den.", line4: "Om inaktivering av denna inställning inte åtgärdar visningen av textelement, öppna ett <issueLink>ärende</issueLink> på vår GitHub, eller skriv till oss på <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Inbäddbara element kan inte läggas till i biblioteket.", iframe: "IFrame-element kan inte läggas till i biblioteket.", image: "Stöd för att lägga till bilder till biblioteket kommer snart!" }, asyncPasteFailedOnRead: "Kunde inte klistra in (kunde inte läsa från urklipp).", asyncPasteFailedOnParse: "Kunde inte klistra in.", copyToSystemClipboardFailed: "Kunde inte kopiera till urklipp." }, M$ = { selection: "Markering", image: "Infoga bild", rectangle: "Rektangel", diamond: "Diamant", ellipse: "Ellips", arrow: "Pil", line: "Linje", freedraw: "Rita", text: "Text", library: "Bibliotek", lock: "Håll valt verktyg aktivt efter ritande", penMode: "Pennläge - förhindra touch", link: "Lägg till / Uppdatera länk för en vald form", eraser: "Radergummi", frame: "Rutverktyg", magicframe: "Trådram till kod", embeddable: "Bädda in (web)", laser: "Laserpekare", hand: "Hand (panoreringsverktyg)", extraTools: "Fler verktyg", mermaidToExcalidraw: "Mermaid till Excalidraw", magicSettings: "AI-inställningar" }, Y$ = { canvasActions: "Canvas-åtgärder", selectedShapeActions: "Valda formåtgärder", shapes: "Former" }, v$ = { canvasPanning: "För att flytta whiteboarden, håll mushjulet eller mellanslagstangenten medan du drar eller använd handverktyget", linearElement: "Klicka för att starta flera punkter, dra för en linje", freeDraw: "Klicka och dra, släpp när du är klar", text: "Tips: du kan också lägga till text genom att dubbelklicka var som helst med markeringsverktyget", embeddable: "Klicka-dra för att skapa en webbplats-inbäddning", text_selected: "Dubbelklicka eller tryck ENTER för att redigera text", text_editing: "Tryck Escape eller CtrlOrCmd + ENTER för att slutföra redigeringen", linearElementMulti: "Klicka på sista punkten eller tryck Escape eller Enter för att avsluta", lockAngle: "Du kan begränsa vinkeln genom att hålla SKIFT", resize: `Du kan behålla proportioner genom att hålla SHIFT medan du ändrar storlek,
håller du ALT ändras storlek relativt mitten`, resizeImage: `Du kan ändra storlek fritt genom att hålla SHIFT,
håll ALT för att ändra storlek från mitten`, rotate: "Du kan begränsa vinklar genom att hålla SHIFT medan du roterar", lineEditor_info: "Håll Ctrl/Cmd och dubbelklicka eller tryck på Ctrl/Cmd + Enter för att redigera punkter", lineEditor_pointSelected: "Tryck på Ta bort för att ta bort punkt(er), Ctrl + D eller Cmd + D för att duplicera, eller dra för att flytta", lineEditor_nothingSelected: `Välj en punkt att redigera (håll SHIFT för att välja flera),
eller håll ned Alt och klicka för att lägga till nya punkter`, placeImage: "Klicka för att placera bilden, eller klicka och dra för att ställa in dess storlek manuellt", publishLibrary: "Publicera ditt eget bibliotek", bindTextToElement: "Tryck på Enter för att lägga till text", deepBoxSelect: "Håll Ctrl eller Cmd för att djupvälja, och för att förhindra att dra", eraserRevert: "Håll Alt för att återställa de element som är markerade för borttagning", firefox_clipboard_write: 'Denna funktion kan sannolikt aktiveras genom att ställa in "dom.events.asyncClipboard.clipboardItem" flaggan till "true". För att ändra webbläsarens flaggor i Firefox, besök "about:config" sidan.', disableSnapping: "Håll Ctrl eller Cmd för att inaktivera fästning" }, H$ = { cannotShowPreview: "Kan inte visa förhandsgranskning", canvasTooBig: "Canvasen kan vara för stor.", canvasTooBigTip: "Tips: prova att flytta de mest avlägsna elementen lite närmare varandra." }, K$ = { headingMain: "Ett fel uppstod. Försök <button>med att läsa in sidan på nytt.</button>", clearCanvasMessage: "Om omladdning inte fungerar, försök <button>rensa canvasen.</button>", clearCanvasCaveat: " Detta kommer att leda till förlust av arbete ", trackedToSentry: "Felet med identifieraren {{eventId}} spårades på vårt system.", openIssueMessage: "Vi var mycket försiktiga med att inte inkludera din skissinformation om felet. Om din skiss inte är privat, vänligen överväga att följa upp på vår <button>buggspårare.</button> Vänligen inkludera information nedan genom att kopiera och klistra in i GitHub-problemet.", sceneContent: "Skissinnehåll:" }, J$ = { desc_intro: "Du kan bjuda in personer till din nuvarande skiss för att samarbeta med dig.", desc_privacy: "Oroa dig inte, sessionen använder kryptering från ände till ände, så vad du än ritar kommer att förbli privat. Inte ens vår server kommer att kunna se vad du skissar.", button_startSession: "Starta sessionen", button_stopSession: "Stoppa session", desc_inProgressIntro: "Nu pågår en live-samarbetssession.", desc_shareLink: "Dela denna länk med någon du vill samarbeta med:", desc_exitSession: "Att avbryta sessionen kommer att koppla bort dig från rummet, men du kommer att kunna fortsätta arbeta med skissen, lokalt. Observera att detta inte påverkar andra människor, och de kommer fortfarande att kunna samarbeta på deras version.", shareTitle: "Delta i en live-samarbetssession på Excalidraw" }, Z$ = { title: "Fel" }, q$ = { disk_title: "Spara till disk", disk_details: "Exportera skissdata till en fil som du kan importera från senare.", disk_button: "Spara till fil", link_title: "Delbar länk", link_details: "Exportera som en skrivskyddad länk.", link_button: "Exportera till länk", excalidrawplus_description: "Spara skissen till din Excalidraw+ arbetsyta.", excalidrawplus_button: "Exportera", excalidrawplus_exportError: "Det gick inte att exportera till Excalidraw+ just nu..." }, W$ = { blog: "Läs vår blogg", click: "klicka", deepSelect: "Djupval", deepBoxSelect: "Djupval inom boxen, och förhindra att dra", curvedArrow: "Böjd pil", curvedLine: "Böjd linje", documentation: "Dokumentation", doubleClick: "dubbelklicka", drag: "dra", editor: "Redigerare", editLineArrowPoints: "Redigera linje-/pilpunkter", editText: "Redigera text / lägg till etikett", github: "Hittat ett problem? Rapportera", howto: "Följ våra guider", or: "eller", preventBinding: "Förhindra pilbindning", tools: "Verktyg", shortcuts: "Tangentbordsgenvägar", textFinish: "Slutför redigering (text)", textNewLine: "Lägg till ny rad (text)", title: "Hjälp", view: "Visa", zoomToFit: "Zooma för att rymma alla element", zoomToSelection: "Zooma till markering", toggleElementLock: "Lås/Lås upp valda", movePageUpDown: "Flytta sida upp/ner", movePageLeftRight: "Flytta sida vänster/höger" }, j$ = { title: "Rensa canvas" }, T$ = { title: "Publicera bibliotek", itemName: "Objektnamn", authorName: "Upphovsmannens namn", githubUsername: "GitHub-användarnamn", twitterUsername: "Twitter-användarnamn", libraryName: "Biblioteksnamn", libraryDesc: "Biblioteksbeskrivning", website: "Webbplats", placeholder: { authorName: "Ditt namn eller användarnamn", libraryName: "Namn på ditt bibliotek", libraryDesc: "Beskrivning av ditt bibliotek för att hjälpa människor att förstå dess användning", githubHandle: "Github-användarnamn (valfritt), så att du kan redigera biblioteket när du har skickat in det för granskning", twitterHandle: "Twitter-användarnamn (valfritt), så vi vet vem att kreditera när du marknadsför på Twitter", website: "Länk till din personliga webbplats eller någon annan (valfritt)" }, errors: { required: "Obligatoriskt", website: "Ange en giltig URL" }, noteDescription: "Skicka ditt bibliotek för att inkluderas i <link>det offentliga bibliotekets arkiv</link>för andra människor att använda i sina skisser.", noteGuidelines: "Biblioteket måste godkännas manuellt först. Vänligen läs <link>riktlinjerna</link> innan du skickar in. Du behöver ett GitHub-konto för att kommunicera och göra ändringar om så önskas, men det krävs inte.", noteLicense: "Genom att skicka in godkänner du att biblioteket kommer att publiceras under <link>MIT-licens, </link>vilket kort sagt betyder att vem som helst kan använda det utan restriktioner.", noteItems: "Varje objekt måste ha sitt eget namn så att det är filtrerbart. Följande objekt kommer att inkluderas:", atleastOneLibItem: "Välj minst ett biblioteksobjekt för att komma igång", republishWarning: "Obs: några av de markerade objekten är redan markerade som publicerade/skickade. Du bör endast skicka objekt igen när du uppdaterar ett befintligt bibliotek eller inlämning." }, z$ = { title: "Bibliotek inskickat", content: "Tack {{authorName}}. Ditt bibliotek har skickats för granskning. Du kan följa status<link>här</link>" }, P$ = { resetLibrary: "Återställ bibliotek", removeItemsFromLib: "Ta bort markerade objekt från biblioteket" }, O$ = { header: "Exportera bild", label: { withBackground: "Bakgrund", onlySelected: "Endast markerade", darkMode: "Mörkt läge", embedScene: "Bädda in skiss", scale: "Skala", padding: "Utfyllnad" }, tooltip: { embedScene: `Skissdata kommer att sparas i den exporterade PNG/SVG-filen så att skissen kan återställas från den.
Kommer att öka exporterad filstorlek.` }, title: { exportToPng: "Exportera till PNG", exportToSvg: "Exportera till SVG", copyPngToClipboard: "Kopiera PNG till urklipp" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Kopiera till urklipp" } }, V$ = { tooltip: "Dina skisser är krypterade från ände till ände så Excalidraws servrar kommer aldrig att se dem.", link: "Blogginlägg om kryptering från ände till ände i Excalidraw" }, X$ = { angle: "Vinkel", element: "Element", elements: "Element", height: "Höjd", scene: "Skiss", selected: "Valda", storage: "Lagring", title: "Statistik för nördar", total: "Totalt", version: "Version", versionCopy: "Klicka för att kopiera", versionNotAvailable: "Versionen är inte tillgänglig", width: "Bredd" }, _$ = { addedToLibrary: "Tillagd i biblioteket", copyStyles: "Kopierade stilar.", copyToClipboard: "Kopierad till urklipp.", copyToClipboardAsPng: `Kopierade {{exportSelection}} till urklipp som PNG
({{exportColorScheme}})`, fileSaved: "Fil sparad.", fileSavedToFilename: "Sparad till {filename}", canvas: "canvas", selection: "markering", pasteAsSingleElement: `Använd {{shortcut}} för att klistra in som ett enda element,
eller klistra in i en befintlig textredigerare`, unableToEmbed: "Att bädda in denna webbadress är för närvarande inte tillåtet. Skapa en problemrapport på GitHub för att begära att webbadressen vitlistas.", unrecognizedLinkFormat: "Länken du bäddade in matchar inte det förväntade formatet. Försök klistra in 'embed'-strängen som tillhandahålls av källwebbplatsen" }, $$ = { transparent: "Genomskinlig", black: "Svart", white: "Vit", red: "Röd", pink: "Rosa", grape: "Lila", violet: "Violett", gray: "Grå", blue: "Blå", cyan: "Turkos", teal: "Blågrön", green: "Grön", yellow: "Gul", orange: "Orange", bronze: "Brons" }, AAA = { app: { center_heading: "All data sparas lokalt i din webbläsare.", center_heading_plus: "Ville du gå till Excalidraw+ istället?", menuHint: "Exportera, inställningar, språk, ..." }, defaults: { menuHint: "Exportera, inställningar och mer...", center_heading: "Förenklade. Diagram.", toolbarHint: "Välj ett verktyg & börja rita!", helpHint: "Genvägar & hjälp" } }, uAA = { mostUsedCustomColors: "Mest frekvent använda anpassade färger", colors: "Färger", shades: "Nyanser", hexCode: "Hex-kod", noShades: "Inga nyanser tillgängliga för denna färg" }, eAA = { action: { exportToImage: { title: "Exportera som bild", button: "Exportera som bild", description: "Exportera scendata som en bild från vilken du kan importera senare." }, saveToDisk: { title: "Spara till disk", button: "Spara till disk", description: "Exportera scendata till en fil från vilken du kan importera senare." }, excalidrawPlus: { title: "Excalidraw+", button: "Exportera till Excalidraw+", description: "Spara skissen till din Excalidraw+ arbetsyta." } }, modal: { loadFromFile: { title: "Läs in från fil", button: "Läs in från fil", description: "Laddar från en fil kommer <bold>ersätta ditt befintliga innehåll</bold>.<br></br>Du kan säkerhetskopiera din ritning först med hjälp av ett av alternativen nedan." }, shareableLink: { title: "Läs in från länk", button: "Ersätt mitt innehåll", description: "Inläsning av en extern ritning kommer <bold>ersätta ditt befintliga innehåll</bold>.<br></br>Du kan säkerhetskopiera din ritning först genom att använda ett av alternativen nedan." } } }, CAA = { title: "Mermaid till Excalidraw", button: "Infoga", description: "För närvarande stöds endast <flowchartLink>Flödesdiagram</flowchartLink>,<sequenceLink> Sekvensdiagram </sequenceLink> och <classLink>Klassdiagram</classLink>. De andra typerna kommer att återges som bild i Excalidraw.", syntax: "Mermaid-syntax", preview: "Förhandsgranska" }, O7A = { labels: L$, library: x$, buttons: S$, alerts: N$, errors: R$, toolBar: M$, headings: Y$, hints: v$, canvasError: H$, errorSplash: K$, roomDialog: J$, errorDialog: Z$, exportDialog: q$, helpDialog: W$, clearCanvasDialog: j$, publishDialog: T$, publishSuccessDialog: z$, confirmDialog: P$, imageExportDialog: O$, encrypted: V$, stats: X$, toast: _$, colors: $$, welcomeScreen: AAA, colorPicker: uAA, overwriteConfirm: eAA, mermaid: CAA };
const V7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: N$,
  buttons: S$,
  canvasError: H$,
  clearCanvasDialog: j$,
  colorPicker: uAA,
  colors: $$,
  confirmDialog: P$,
  default: O7A,
  encrypted: V$,
  errorDialog: Z$,
  errorSplash: K$,
  errors: R$,
  exportDialog: q$,
  headings: Y$,
  helpDialog: W$,
  hints: v$,
  imageExportDialog: O$,
  labels: L$,
  library: x$,
  mermaid: CAA,
  overwriteConfirm: eAA,
  publishDialog: T$,
  publishSuccessDialog: z$,
  roomDialog: J$,
  stats: X$,
  toast: _$,
  toolBar: M$,
  welcomeScreen: AAA
}, Symbol.toStringTag, { value: "Module" }));
var BAA = { paste: "ஒட்டு", pasteAsPlaintext: "அலங்காரமின்றி ஒட்டு", pasteCharts: "விளக்கப்படங்களை ஒட்டு", selectAll: "எல்லாம் தேர்ந்தெடு", multiSelect: "உறுப்பைத் தெரிவில் சேர்", moveCanvas: "கித்தானை நகர்த்து", cut: "வெட்டு", copy: "நகலெடு", copyAsPng: "நகலகத்திற்கு PNG ஆக நகலெடு", copyAsSvg: "நகலகத்திற்கு SVG ஆக நகலெடு", copyText: "நகலகத்திற்கு உரையாக நகலெடு", copySource: "", convertToCode: "", bringForward: "முன்நோக்கி கொண்டுவா", sendToBack: "பின்னே அனுப்பு", bringToFront: "முன்னே கொண்டுவா", sendBackward: "பின்நோக்கி அனுப்பு", delete: "அழி", copyStyles: "ஒயில்களை நகலெடு", pasteStyles: "ஒயில்களை ஒட்டு", stroke: "கீறல்", background: "பின்புலம்", fill: "நிரப்பல்", strokeWidth: "கீறல் அகலம்", strokeStyle: "கீறல் ஒயில்", strokeStyle_solid: "திடமான", strokeStyle_dashed: "கோடிட்ட", strokeStyle_dotted: "புள்ளியிட்ட", sloppiness: "அசட்டுத்தனம்", opacity: "ஒளிபுகாவியல்பு", textAlign: "உரைச் சீரமைப்பு", edges: "விளிம்புகள்", sharp: "கூர்மை", round: "வட்டம்", arrowheads: "அம்புத்தலைகள்", arrowhead_none: "ஏதுமில்லை", arrowhead_arrow: "அம்பு", arrowhead_bar: "பட்டை", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "முக்கோணம்", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "எழுத்துரு அளவு", fontFamily: "எழுத்துரு குடும்பம்", addWatermark: '"எக்ஸ்கேலிட்ரா கொண்டு ஆனது"-ஐச் சேர்', handDrawn: "கையால்-வரைந்த", normal: "இயல்பு", code: "குறியீடு", small: "சிறிய", medium: "நடுத்தரமான", large: "பெரிய", veryLarge: "மிகப் பெரிய", solid: "திடமான", hachure: "மலைக்குறிக்கோடு", zigzag: "கோணல்மாணல்", crossHatch: "குறுக்குகதவு", thin: "மெல்லிய", bold: "பட்டை", left: "இடது", center: "மையம்", right: "வலது", extraBold: "கூடுதல் பட்டை", architect: "கட்டடக்கலைஞர்", artist: "கலைஞர்", cartoonist: "கேலிச்சித்திர ஓவியர்", fileTitle: "கோப்புப் பெயர்", colorPicker: "நிறத் தேர்வி", canvasColors: "கித்தானில் பயன்படுத்தப்பட்டது", canvasBackground: "கித்தான் பின்னணி", drawingCanvas: "கித்தான் வரைகிறது", layers: "அடுக்குகள்", actions: "செயல்கள்", language: "மொழி", liveCollaboration: "நேரடி கூட்டுப்பணி...", duplicateSelection: "நகலாக்கு", untitled: "தலைப்பற்றது", name: "பெயர்", yourName: "உங்கள் பெயர்", madeWithExcalidraw: "எக்ஸ்கேலிட்ரா கொண்டு ஆனது", group: "தேர்ந்ததை ஒன்றிணை", ungroup: "தேர்ந்ததைப் பிரி", collaborators: "கூட்டுப்பணியினர்", showGrid: "கட்டதைக் காட்டு", addToLibrary: "நூலகத்தில் சேர்", removeFromLibrary: "நூலகத்திலிருந்து நீக்கு", libraryLoadingMessage: "நூலகத்தை ஏற்றுகிறது…", libraries: "நூலகங்களை உலாவு", loadingScene: "காட்சியை ஏற்றுகிறது…", align: "சீரமை", alignTop: "மேலே சீரமை", alignBottom: "கீழே சீரமை", alignLeft: "இடதில் சீரமை", alignRight: "வலதில் சீரமை", centerVertically: "செங்குத்தாக மையப்படுத்து", centerHorizontally: "கிடைமட்டமாக மையப்படுத்து", distributeHorizontally: "கிடைமட்டமாக விநியோகி", distributeVertically: "செங்குத்தாக விநியோகி", flipHorizontal: "கிடைமட்டமாக புரட்டு", flipVertical: "செங்குத்தாக புரட்டு", viewMode: "பார்வை பயன்முறை", share: "பகிர்", showStroke: "கீறல் நிற எடுப்பானைக் காட்டு", showBackground: "பின்னணி நிற எடுப்பானைக் காட்டு", toggleTheme: "தோற்றத்தை நிலைமாற்று", personalLib: "தனக்குரிய நூலகம்", excalidrawLib: "எக்ஸ்கேலிட்ரா நூலகம்", decreaseFontSize: "எழுத்துரு அளவைக் குறை", increaseFontSize: "எழுத்துரு அளவை அதிகரி", unbindText: "உரையைப் பிணைவவிழ்", bindText: "உரையைக் கொள்கலனுக்குப் பிணை", createContainerFromText: "உரையைக் கொள்கலனுள் சுருட்டு", link: { edit: "தொடுப்பைத் திருத்து", editEmbed: "", create: "தொடுப்பைப் படை", createEmbed: "", label: "தொடுப்பு", labelEmbed: "", empty: "" }, lineEditor: { edit: "தொடுப்பைத் திருத்து", exit: "வரி திருத்தியிலிருந்து வெளியேறு" }, elementLock: { lock: "பூட்டு", unlock: "பூட்டவிழ்", lockAll: "எல்லாம் பூட்டு", unlockAll: "எல்லாம் பூட்டவிழ்" }, statusPublished: "வெளியிடப்பட்டது", sidebarLock: "பக்கப்பட்டையைத் திறந்தே வை", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "கித்தானிலிருந்து நிறம் தேர்ந்தெடு", textToDiagram: "", prompt: "" }, gAA = { noItems: "இதுவரை உருப்படிகள் சேரக்கப்படவில்லை...", hint_emptyLibrary: "கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு, அல்லது கீழுள்ள பொது களஞ்சியத்திலிருந்து நூலகத்தை நிறுவு.", hint_emptyPrivateLibrary: "கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு." }, tAA = { clearReset: "கித்தானை அகரமாக்கு", exportJSON: "கோப்புக்கு ஏற்றுமதிசெய்", exportImage: "படத்தை ஏற்றுமதிசெய்...", export: "இதில் சேமி...", copyToClipboard: "நகலகத்திற்கு நகலெடு", save: "தற்போதைய கோப்புக்குச் சேமி", saveAs: "இப்படி சேமி", load: "திற", getShareableLink: "பகிரக்கூடிய தொடுப்பைப் பெறு", close: "மூடு", selectLanguage: "மொழியைத் தேர்ந்தெடு", scrollBackToContent: "உருட்டி உள்ளடக்கத்துக்குத் திரும்பு", zoomIn: "பெரிதாக்கு", zoomOut: "சிறிதாக்கு", resetZoom: "உருவளவை அகரமாக்கு", menu: "சிறுபட்டி", done: "முடிந்தது", edit: "திருத்து", undo: "செயல்தவிர்", redo: "மீண்டும்செய்", resetLibrary: "நூலகத்தை அகரமாக்கு", createNewRoom: "புதிய அறையை உருவாக்கு", fullScreen: "முழுத் திரை", darkMode: "கருமை பயன்முறை", lightMode: "வெளிர்ந்த பயன்முறை", zenMode: "ஜென் பயன்முறை", objectsSnapMode: "", exitZenMode: "ஜென் பயன்முறையை விலகு", cancel: "ரத்துசெய்", clear: "துடை", remove: "நீக்கு", embed: "", publishLibrary: "பிரசுரி", submit: "சமர்ப்பி", confirm: "உறுதிசெய்", embeddableInteractionButton: "" }, iAA = { clearReset: "இது முழு கித்தானையும் துடைக்கும். நீங்கள் உறுதியா?", couldNotCreateShareableLink: "பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை.", couldNotCreateShareableLinkTooBig: "பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை: காட்சி மிகப்பெரிதாக உள்ளது", couldNotLoadInvalidFile: "செல்லாத கோப்பை ஏற்ற முடியவில்லை", importBackendFailed: "தேகத்திலிருந்து இறக்குமதி தோல்வி.", cannotExportEmptyCanvas: "காலியான கித்தானை ஏற்றுமதிசெய்ய முடியாது.", couldNotCopyToClipboard: "நகலகத்திற்கு நகலெடுக்க முடியவில்லை.", decryptFailed: "தரவை மறைநீக்க முடியவில்லை.", uploadedSecurly: "பதிவேற்றம் இருமுனை மறையாகத்தால் பாதுகாக்கப்பட்டுள்ளது, எனவே எக்ஸ்கேலிட்ரா சேவையகமும் மூன்றாம் தரப்பினரும் உள்ளடக்கத்தை வாசிக்கமுடியாது.", loadSceneOverridePrompt: "வெளிப்புறச்சித்திரமேற்றல் இருக்கிற உள்ளடக்கத்தை இடங்கொள்ளும். தொடர விருப்பமா?", collabStopOverridePrompt: `அமர்வை நிறுத்துதல் முன்னர் அகமாக தேக்கிய உம் சித்திரத்தை மேலெழுதும். நீங்கள் உறுதியா?

(உம் அக சித்திரத்தை வைக்கவேண்டுமெனில், சும்மா உலாவி தாவலை மூடுக அதற்குபதிலாக.)`, errorAddingToLibrary: "உருப்படியை நூலகத்தில் சேர்க்க இயலா", errorRemovingFromLibrary: "உருப்படியை நூலகத்திலிருந்து நீக்க இயலா", confirmAddLibrary: "இதனால் {{numShapes}} வடிவம்(கள்) உம் நூலகத்தில் சேரும். நீங்கள் உறுதியா?", imageDoesNotContainScene: "இப்படத்தில் காட்சி தரவு ஏதும் இருப்பதுபோல் தெரியவில்லை. ஏற்றுமதியின்போது காட்சி உட்பதிதலை இயக்கினீரா?", cannotRestoreFromImage: "இப்படக்கோப்பிலிருந்து காட்சி மீட்டெடுக்கப்பட முடியாது", invalidSceneUrl: "வழங்கப்பட்ட உரலியிலிருந்து காட்சியை இறக்கவியலா. இது தவறான வடிவத்தில் உள்ளது, அ செல்லத்தக்க எக்ஸ்கேலிட்ரா JSON தரவைக் கொண்டில்லை.", resetLibrary: "இது உங்கள் நுலகத்தைத் துடைக்கும். நீங்கள் உறுதியா?", removeItemsFromsLibrary: "{{count}} உருப்படி(கள்)-ஐ உம் நூலகத்திலிருந்து அழிக்கவா?", invalidEncryptionKey: "மறையாக்க விசை 22 வரியுருக்கள் கொண்டிருக்கவேண்டும். நேரடி கூட்டுப்பணி முடக்கப்பட்டது.", collabOfflineWarning: `இணைய இணைப்பு இல்லை.
உமது மாற்றங்கள் சேமிக்கப்படா!` }, EAA = { unsupportedFileType: "ஆதரிக்கப்படா கோப்பு வகை.", imageInsertError: "படத்தைப் புகுத்தவியலா. பிறகு மீண்டும் முயலவும்...", fileTooBig: "கோப்பு மிகப்பெரிது. அனுமதிக்கப்பட்ட அதிகபட்ச அளவு {{maxSize}}.", svgImageInsertError: "எஸ்விஜி படத்தைப் புகுத்தவியலா. எஸ்விஜியின் மார்க்அப் செல்லாததாக தெரிகிறது.", failedToFetchImage: "", invalidSVGString: "செல்லாத SVG.", cannotResolveCollabServer: "கூட்டுப்பணிச் சேவையகத்துடன் இணைக்க முடியவில்லை. பக்கத்தை மீளேற்றி மீண்டும் முயலவும்.", importLibraryError: "நூலகத்தை ஏற்ற முடியவில்லை", collabSaveFailed: "பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை. சிக்கல்கள் நீடித்தால், உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.", collabSaveFailed_sizeExceeded: "பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை, கித்தான் மிகப்பெரிதாகத் தெரிகிறது. உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aAA = { selection: "தெரிவு", image: "படத்தைப் புகுத்து", rectangle: "செவ்வகம்", diamond: "வைரம்", ellipse: "நீள்வட்டம்", arrow: "அம்பு", line: "வரி", freedraw: "வரை", text: "உரை", library: "நூலகம்", lock: "தேர்ந்த கருவியை வரைந்த பின்பும் வைத்திரு", penMode: "பேனா - தடுப்பு தொடுதல்", link: "தேர்தெடுத்த வடிவத்திற்குத் தொடுப்பைச் சேர்/ புதுப்பி", eraser: "அழிப்பி", frame: "சட்டகம் கருவி", magicframe: "", embeddable: "", laser: "", hand: "கை (பார்வை நகர்கும் கருவி)", extraTools: "மற்ற கருவிகள்", mermaidToExcalidraw: "", magicSettings: "" }, IAA = { canvasActions: "கித்தான் செயல்கள்", selectedShapeActions: "தேர்ந்த வடிவம் செயல்கள்", shapes: "வடிவங்கள்" }, oAA = { canvasPanning: "", linearElement: "பல புள்ளிகளைத் துவக்க சொடுக்கு, ஒற்றை வரிக்கு பிடித்திழு", freeDraw: "சொடுக்கி பிடித்திழு, முடித்ததும் விடுவி", text: "துணுக்குதவி: தெரிவு கருவி கொண்டு எங்காவது இரு-சொடுக்கி உரையைச் சேர்க்கலாம்", embeddable: "", text_selected: "உரையைத் திருத்த இரு-சொடுக்கு அ ENTERஐ அழுத்து", text_editing: "திருத்துவதை முடிக்க Escape அ CtrlOrCmd+ENTERஐ அழுத்து", linearElementMulti: "கடைசி புள்ளியில் சொடுக்கு அ முடிக்க Escape அ Enter அழுத்து", lockAngle: "SHIFTஐ அழுத்திப்பிடித்து கோணத்தை வற்புறுத்தலாம்", resize: `மறுஅளவிடுகையில் SHIFTஐ அழுத்திப்பிடித்து விகிதசமத்தை வற்புறுத்தலாம்,
மையத்திலிருந்து மறுஅளவிட ALTஐ அழுத்திப்பிடி`, resizeImage: `SHIFTஐ நீண்டழுத்தி கட்டற்று அளவுமாற்றலாம்,
மையத்திலிருந்து அளவுமாற்ற ALTஐ நீண்டழுத்துக`, rotate: "சுழற்றுகையில் SHIFTஐ அழுத்திப்பிடித்து கோணங்களை வற்புறுத்தலாம்", lineEditor_info: "", lineEditor_pointSelected: `புள்ளி(கள்)ஐ நீக்க Deleteஐ அழுத்து,
நகலாக்க CtrlOrCmd+D, அ நகர்த்த பிடித்திழு`, lineEditor_nothingSelected: `திருத்த புள்ளியைத் தேர்ந்தெடு (பலவற்றை தேர SHIFTஐ அழுத்திப்பிடி),
அ புதிய புள்ளிகளைச் சேர்க்க Altஐ அழுத்திப்பிடித்துச் சொடுக்கு`, placeImage: "படத்தை வைக்கச் சொடுக்கு, அ கைமுறையாக அளவு அமைக்க சொடுக்கி பிடித்திழு", publishLibrary: "உம் சொந்த நூலகத்தைப் பிரசுரி", bindTextToElement: "உரையைச் சேர்க்க enterஐ அழுத்து", deepBoxSelect: "ஆழ்ந்துத் தேரவும் பிடித்திழுத்தலைத் தவிர்க்கவும் CtrlOrCmdஐ அழுத்திப்பிடி", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, QAA = { cannotShowPreview: "முன்னோட்டம் காட்ட இயலவில்லை", canvasTooBig: "கித்தான் மிகப்பெரிதாக இருக்கலாம்.", canvasTooBigTip: "துணுக்குதவி: தூரத்திலுள்ள உறுப்புகளைப் நெருக்கமாக நகர்த்தப்பார்." }, nAA = { headingMain: "பிழையைச் சந்தித்தீரா. முயலவும் <button>பக்கத்தை மீண்டுமேற்றுகிறது.</button>", clearCanvasMessage: "மீண்டுமேற்றல் வேலைசெய்யவிட்டால், முயற்சி <button>கித்தானைத் துடைக்கிறது.</button>", clearCanvasCaveat: " இது வேலையை இழக்கக்கூடும் ", trackedToSentry: "இனங்காணியில் பிழை {{eventId}} எங்கள் இயங்குதளத்தில் தடமறியப்பட்டது.", openIssueMessage: "பிழையில் உம் காட்சி தகவலை உள்ளடக்காமலிருக்க நாங்கள் மிக எச்சரிக்கையாக இருந்தோம். உம் காட்சி தனிப்பட்டதில்லையெனில், பின்தொடர்வதற்கு பரிசீலிக்கவும் எங்கள் <button>பிழை தடமி.</button> கீழுள்ள தகவலை நகலெடுத்து ஒட்டி GitHub சிக்கலுள் உள்ளடக்கவும்.", sceneContent: "காட்சி உள்ளடக்கம்:" }, rAA = { desc_intro: "உம்முடன் கூட்டுப்பணிசெய்ய மக்களை தற்போதைய காட்சிக்கு அழைப்பிடலாம்.", desc_privacy: "வருந்தாதீர், அமர்வு இருமுனை மறையகத்தைப் பயன்படுத்துகிறது, ஆக நீங்கள் வரைவது எதுவும் தனிப்பட்டதாக இருக்கும். எங்கள் சேவையகத்தால் கூட நீங்கள் என்ன செய்ததைப் பார்க்கவியலாது.", button_startSession: "அமர்வைத் துவக்கு", button_stopSession: "அமர்வை நிறுத்து", desc_inProgressIntro: "நேரடி-கூட்டுப்பணி அமர்வு தற்போது செயலிலுள்ளது.", desc_shareLink: "கூட்டுப்பணிபுரிய விரும்பும் எவருனும் இத்தொடுப்பைப் பகிர்க:", desc_exitSession: "அமர்வை நிறுத்தல் உம்மை அறையிலிருந்து துண்டிக்கும், ஆனால் காட்சியுடன் தொடர்ந்து பணிபுரிய உம்மாலியலும், அகமாக. இது பிற மக்களைப் பாதிக்காதென்பதைக் குறி, மற்றும் அவர்களாலவர்களுடைய பதிப்பில் இன்னும் கூட்டுப்பணிபுரியவியலும்.", shareTitle: "எக்ஸ்கேலிட்ராவில் நேரடி கூட்டுப்பணி அமர்வில் சேர்" }, sAA = { title: "பிழை" }, lAA = { disk_title: "வட்டில் சேமி", disk_details: "காட்சித் தரவை நீங்கள் பின்னர் இறக்குமதி செய்யக்கூடிய ஒரு கோப்பிற்கு ஏற்றுமதிசெய்க.", disk_button: "கோப்பில் சேமி", link_title: "பகிரக்கூடிய தொடுப்பு", link_details: "வாசிக்க-மட்டும் தொடுப்பாக ஏற்றுமதிசெய்.", link_button: "தொடுப்புக்கு ஏற்றுமதிசெய்", excalidrawplus_description: "காட்சியை உன் எக்ஸ்கேலிட்ரா பணியிடத்தில் சேமி.", excalidrawplus_button: "ஏற்றுமதி", excalidrawplus_exportError: "இத்தருணத்தில் எக்ஸ்கேலிட்ரா+ க்கு ஏற்றுமதிசெய்ய முடியவில்லை..." }, cAA = { blog: "எமது வலைப்பூவை வாசி", click: "சொடுக்கு", deepSelect: "ஆழ்ந்துத் தேர்", deepBoxSelect: "பெட்டியினுள் ஆழ்ந்துத் தேர், மற்றும் பிடித்திழுத்தலைத் தவிர்", curvedArrow: "வளைந்த அம்பு", curvedLine: "வளைந்த வரி", documentation: "ஆவணமாக்கல்", doubleClick: "இரு-சொடுக்கு", drag: "பிடித்திழு", editor: "திருத்தி", editLineArrowPoints: "", editText: "", github: "சிக்கலைக் கண்டீரா? சமர்ப்பி", howto: "எங்கள் கையேடுகளைப் பின்பற்றுக", or: "அ", preventBinding: "அம்பு பிணைதலைத் தவிர்", tools: "கருவிகள்", shortcuts: "விசைப்பலகை குறுக்குவழிகள்", textFinish: "திருத்துதலை முடி (உரை திருத்தி)", textNewLine: "புதிய வரியைச் சேர் (உரை திருத்தி)", title: "உதவி", view: "பார்", zoomToFit: "அனைத்துறுப்புகளும் பொருந்தும்படி விரிவாக்கு", zoomToSelection: "தெரிவுக்கு விரிவாக்கு", toggleElementLock: "தேர்ந்தெடுப்பைப் பூட்டு/பூட்டவிழ்", movePageUpDown: "மேலே/கீழே நகர்த்தவும்", movePageLeftRight: "இடது/வலது பக்கம் நகர்த்தவும்" }, dAA = { title: "கித்தானைத் துடை" }, DAA = { title: "நூலகத்தைப் பிரசுரி", itemName: "உருப்படியின் பெயர்", authorName: "ஆசிரியர் பெயர்", githubUsername: "GitHub பயனர்பெயர்", twitterUsername: "டுவிட்டர் பயனர்பெயர்", libraryName: "நூலக பெயர்", libraryDesc: "நூலக விவரிப்பு", website: "வலைத்தளம்", placeholder: { authorName: "உம் பெயர் அ பயனர்பெயர்", libraryName: "உம் நூலகத்தின் பெயர்", libraryDesc: "உம் நூலகத்தின் விவரிப்பு இதன் பயன்பாட்டை மக்கள் புரிந்துகொள்ளவுதவ", githubHandle: "GitHub கைப்பிடி (விரும்பினால்), ஆதலால் நீங்கள் நூலகத்தை மதிப்பாய்விற்காக சமர்ப்பித்தவுடன் திருத்தமுடியும்", twitterHandle: "டுவிட்டர் பயனர்பெயர் (விரும்பினால்), ஆதலால் டுவிட்டரில் முன்னிறுத்தும்போது யாமெவரைப் புகழ்வதென்றறிவோம்", website: "உமக்குரிய வலைத்தளத்திற்கு அ வேறெங்கிற்குமான தொடுப்பு (விரும்பினால்)" }, errors: { required: "தேவைப்டுகிறது", website: "செல்லத்தக்க உரலியை உள்ளிடு" }, noteDescription: "உம் நூலகத்தைச் சமர்ப்பி உள்ளடக்குவதற்கு <link>பொது நூலக களஞ்சியத்தில்</link>பிற மக்களவர்களின் சித்திரங்களில் பயன்படுத்த.", noteGuidelines: "நூலகம் முதலில் கைமுறையாக ஒப்புக்கொள்ளப்படவேண்டும். வாசிக்கவும் <link>வழிகாட்டுதல்களைச்</link> சமர்ப்பிக்கும் முன்பு. கோரப்பட்டால் தொடர்புகொள்ள மற்றும் மாற்றங்கள் செய்ய உமக்கொரு GitHub கணக்கு தேவை, ஆனால் அது கண்டிப்பாக தேவையல்ல.", noteLicense: "சமர்ப்பிப்பதனால், நூலகம் இதனடியில் பிரசரிக்கப்பட ஏற்கிறீர்கள் <link>MIT உரிமம், </link>சுருக்கமாக எவருமிதைப் வரையறையின்றி பயன்படுத்தலாமென குறிக்கிறது.", noteItems: "வடிக்கட்டக்கூடியதாகவிருக்க ஒவ்வொரு நூலகவுருப்படிக்கும் சொந்த பெயர் இருக்கவேண்டும். பின்வரும் நூலகவுருப்படிகள் உள்ளடக்கப்படும்:", atleastOneLibItem: "ஆரம்பிக்க ஒரு நூலக உருப்படியையாவது தேர்ந்தெடுக்கவும்", republishWarning: "" }, hAA = { title: "நூலகம் சமர்ப்பிக்கப்பட்டது", content: "நன்றி {{authorName}}. உமது நூலகம் மதிப்பாய்விற்காக சமர்ப்பிக்கப்பட்டது. நிலையை நீங்கள் தடமறியலாம்<link>இங்கே</link>" }, wAA = { resetLibrary: "நூலகத்தை அகரமாக்கு", removeItemsFromLib: "நூலகத்திலிருந்து தேர்ந்தெடுத்த உருப்படிகளை நீக்கு" }, FAA = { header: "படத்தை ஏற்றுமதிதல", label: { withBackground: "பின்னணி", onlySelected: "தேர்ந்ததை மட்டும்", darkMode: "இருள் பயன்முறை", embedScene: "காட்சியை உட்பொதி", scale: "அளவுகோல்", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "PNGக்கு ஏற்றுமதிசெய்", exportToSvg: "SVGக்கு ஏற்றுமதிசெய்", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "" } }, pAA = { tooltip: "உம் சித்திரங்கள் இருமுனை மறையாக்கம் செய்யப்பட்டவையாதலால் எக்ஸ்கேலிட்ராவின் சேவையகங்கள் அவற்றை ஒருபோதும் பார்க்கா.", link: "எக்ஸ்கேலிட்ராவில் இருமுனை மறையாக்கம் மீதான வலைப்பூ இடுகை" }, mAA = { angle: "கோணம்", element: "உறுப்பு", elements: "உறுப்புகள்", height: "உயரம்", scene: "காட்சி", selected: "தேர்ந்தவை", storage: "சேமிப்பகம்", title: "மேதாவிகளுக்கான புள்ளிவிவரங்கள்", total: "மொத்தம்", version: "பதிப்பு", versionCopy: "நகலெடுக்க சொடுக்கு", versionNotAvailable: "பதிப்பு கிடைக்கவில்லை", width: "அகலம்" }, kAA = { addedToLibrary: "நூலகத்தில் சேர்க்கப்பட்டது", copyStyles: "ஒயில்கள் நகலெடுக்கப்பட்டன.", copyToClipboard: "நகலகத்திற்கு நகலெடுக்கப்பட்டது.", copyToClipboardAsPng: `{{exportSelection}}-ஐ நகலகத்திற்கு PNG ஆக நகலெடுத்தது
({{exportColorScheme}})`, fileSaved: "கோப்பு சேமிக்கப்பட்டது.", fileSavedToFilename: "{filename}-க்கு சேமிக்கப்பட்டது", canvas: "கித்தான்", selection: "தெரிவு", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yAA = { transparent: "ஒளிபுகுத்தன்மை", black: "கருப்பு", white: "வெள்ளை", red: "சிவப்பு", pink: "இளஞ்சிவப்பு", grape: "திராட்சை", violet: "ஊதா", gray: "சாம்பல்", blue: "நீலம்", cyan: "மயில்நிறம்", teal: "டீல்", green: "பச்சை", yellow: "மஞ்சள்", orange: "ஆரஞ்சு", bronze: "வெண்கலம்" }, bAA = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "எளிமையாக வரைபடங்கள் உருவாக்க!", toolbarHint: "கருவியைத் தேர்ந்தெடு & வரை!", helpHint: "குறுக்குவழிகள் & உதவி" } }, UAA = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, GAA = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fAA = { title: "", button: "", description: "", syntax: "", preview: "" }, X7A = { labels: BAA, library: gAA, buttons: tAA, alerts: iAA, errors: EAA, toolBar: aAA, headings: IAA, hints: oAA, canvasError: QAA, errorSplash: nAA, roomDialog: rAA, errorDialog: sAA, exportDialog: lAA, helpDialog: cAA, clearCanvasDialog: dAA, publishDialog: DAA, publishSuccessDialog: hAA, confirmDialog: wAA, imageExportDialog: FAA, encrypted: pAA, stats: mAA, toast: kAA, colors: yAA, welcomeScreen: bAA, colorPicker: UAA, overwriteConfirm: GAA, mermaid: fAA };
const _7A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iAA,
  buttons: tAA,
  canvasError: QAA,
  clearCanvasDialog: dAA,
  colorPicker: UAA,
  colors: yAA,
  confirmDialog: wAA,
  default: X7A,
  encrypted: pAA,
  errorDialog: sAA,
  errorSplash: nAA,
  errors: EAA,
  exportDialog: lAA,
  headings: IAA,
  helpDialog: cAA,
  hints: oAA,
  imageExportDialog: FAA,
  labels: BAA,
  library: gAA,
  mermaid: fAA,
  overwriteConfirm: GAA,
  publishDialog: DAA,
  publishSuccessDialog: hAA,
  roomDialog: rAA,
  stats: mAA,
  toast: kAA,
  toolBar: aAA,
  welcomeScreen: bAA
}, Symbol.toStringTag, { value: "Module" }));
var LAA = { paste: "วาง", pasteAsPlaintext: "วางโดยไม่มีการจัดรูปแบบ", pasteCharts: "วางแผนภูมิ", selectAll: "เลือกทั้งหมด", multiSelect: "", moveCanvas: "", cut: "ตัด", copy: "คัดลอก", copyAsPng: "คัดลองไปยังคลิปบอร์ดเป็น PNG", copyAsSvg: "คัดลองไปยังคลิปบอร์ดเป็น SVG", copyText: "คัดลองไปยังคลิปบอร์ดเป็นข้อความ", copySource: "", convertToCode: "", bringForward: "นำขึ้นข้างบน", sendToBack: "ย้ายไปข้างล่าง", bringToFront: "นำขึ้นข้างหน้า", sendBackward: "ย้ายไปข้างหลัง", delete: "ลบ", copyStyles: "คัดลอกรูปแบบ", pasteStyles: "วางรูปแบบ", stroke: "เส้นขอบ", background: "พื้นหลัง", fill: "เติมสี", strokeWidth: "น้ำหนักเส้นขอบ", strokeStyle: "รูปแบบเส้น", strokeStyle_solid: "เส้นทึบ", strokeStyle_dashed: "เส้นประ", strokeStyle_dotted: "จุด", sloppiness: "ความเลอะเทอะ", opacity: "ความทึบแสง", textAlign: "จัดข้อความ", edges: "ขอบ", sharp: "", round: "", arrowheads: "หัวลูกศร", arrowhead_none: "ไม่มี", arrowhead_arrow: "ลูกศร", arrowhead_bar: "แถบ", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "สามเหลี่ยม", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "ขนาดตัวอักษร", fontFamily: "แบบตัวอักษร", addWatermark: 'เพิ่มลายน้ำ "สร้างด้วย Excalidraw"', handDrawn: "ลายมือ", normal: "ปกติ", code: "โค้ด", small: "เล็ก", medium: "กลาง", large: "ใหญ่", veryLarge: "ใหญ่มาก", solid: "", hachure: "", zigzag: "", crossHatch: "", thin: "บาง", bold: "หนา", left: "ซ้าย", center: "กลาง", right: "ขวา", extraBold: "หนาพิเศษ", architect: "", artist: "ศิลปิน", cartoonist: "", fileTitle: "ชื่อไฟล์", colorPicker: "เลือกสีที่กำหนดเอง", canvasColors: "", canvasBackground: "", drawingCanvas: "", layers: "", actions: "การกระทำ", language: "ภาษา", liveCollaboration: "", duplicateSelection: "ทำสำเนา", untitled: "ไม่มีชื่อ", name: "ชื่อ", yourName: "ชื่อของคุณ", madeWithExcalidraw: "", group: "จัดกลุ่ม", ungroup: "ยกเลิกการจัดกลุ่ม", collaborators: "", showGrid: "แสดงเส้นตาราง", addToLibrary: "เพิ่มไปในคลัง", removeFromLibrary: "นำออกจากคลัง", libraryLoadingMessage: "กำลังโหลดคลัง...", libraries: "", loadingScene: "กำลังโหลดฉาก", align: "จัดตำแหน่ง", alignTop: "จัดชิดด้านบน", alignBottom: "จัดชิดด้านล่าง", alignLeft: "จัดชิดซ้าย", alignRight: "จัดชิดขวา", centerVertically: "กึ่งกลางแนวตั้ง", centerHorizontally: "กึ่งกลางแนวนอน", distributeHorizontally: "กระจายแนวนอน", distributeVertically: "กระจายแนวตั้ง", flipHorizontal: "พลิกแนวนอน", flipVertical: "พลิกแนวตั้ง", viewMode: "โหมดมุมมอง", share: "แชร์", showStroke: "", showBackground: "", toggleTheme: "สลับธีม", personalLib: "คลังของฉัน", excalidrawLib: "คลังของ Excalidraw", decreaseFontSize: "ลดขนาดตัวอักษร", increaseFontSize: "เพิ่มขนาดตัวอักษร", unbindText: "ยกเลิกการผูกติด", bindText: "", createContainerFromText: "", link: { edit: "แก้ไขลิงก์", editEmbed: "แก้ไขลิงค์และการฝัง", create: "สร้างลิงค์", createEmbed: "สร้างลิงค์และการฝัง", label: "ลิงค์", labelEmbed: "ลิงค์และการฝัง", empty: "ไม่ได้ใส่ลิงค์" }, lineEditor: { edit: "แก้ไขเส้น", exit: "" }, elementLock: { lock: "ล็อก", unlock: "ปลดล็อก", lockAll: "ล็อกทั้งหมด", unlockAll: "ปลดล็อกทั้งหมด" }, statusPublished: "เผยแพร่", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, xAA = { noItems: "ยังไม่มีรายการที่เพิ่มเข้าไปได้", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, SAA = { clearReset: "รีเซ็ทผืนผ้าใบ", exportJSON: "ส่งออกไปยังไฟล์", exportImage: "ส่งออกเป็นรูปภาพ", export: "บันทึกไปยัง", copyToClipboard: "คัดลอกไปยังคลิปบอร์ด", save: "บันทึกเป็นไฟล์ปัจจุบัน", saveAs: "บันทึกเป็น", load: "เปิด", getShareableLink: "สร้างลิงค์ที่แชร์ได้", close: "ปิด", selectLanguage: "เลือกภาษา", scrollBackToContent: "เลื่อนกลับไปด้านบน", zoomIn: "ซูมเข้า", zoomOut: "ซูมออก", resetZoom: "รีเซ็ตการซูม", menu: "เมนู", done: "เสร็จสิ้น", edit: "แก้ไข", undo: "เลิกทำ", redo: "ทำซ้ำ", resetLibrary: "รีเซ็ตคลัง", createNewRoom: "สร้างห้องใหม่", fullScreen: "เต็มหน้าจอ", darkMode: "โหมดกลางคืน", lightMode: "โหมดกลางวัน", zenMode: "โหมด Zen", objectsSnapMode: "", exitZenMode: "ออกจากโหมด Zen", cancel: "ยกเลิก", clear: "เคลียร์", remove: "ลบ", embed: "สลับการฝัง", publishLibrary: "เผยแพร่", submit: "ตกลง", confirm: "ยืนยัน", embeddableInteractionButton: "คลิกเพื่อปฏิสัมพันธ์" }, NAA = { clearReset: "", couldNotCreateShareableLink: "ไม่สามารถสร้างลิงค์ได้", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "ไม่สามารถโหลดไฟล์ที่ผิดพลาดได้", importBackendFailed: "เกิดข้อผิดพลาดจากการนำเข้าจากระบบหลังบ้าน", cannotExportEmptyCanvas: "ไม่สามารถนำออกจากผืนผ้าใบที่ว่างเปล่าได้", couldNotCopyToClipboard: "ไม่สามารถคัดลอกไปยังคลิปบอร์ดได้", decryptFailed: "ไม่สามารถถอดรหัสข้อมูลได้", uploadedSecurly: "การอัพโหลดได้ถูกเข้ารหัสแบบ end-to-end หมายความว่าเซิร์ฟเวอร์ของ Excalidraw และบุคคลอื่นไม่สามารถอ่านข้อมูลได้", loadSceneOverridePrompt: "", collabStopOverridePrompt: "", errorAddingToLibrary: "ไม่สามารถเพิ่มรายการเข้าไปในคลังได้", errorRemovingFromLibrary: "ไม่สามารถลบรายการนี้ออกจากคลังได้", confirmAddLibrary: "", imageDoesNotContainScene: "", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, RAA = { unsupportedFileType: "ไม่รองรับชนิดของไฟล์นี้", imageInsertError: "ไม่สามารถเพิ่มรูปภาพได้ ลองอีกครั้งในภายหลัง", fileTooBig: "", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "ไฟล์ SVG ผิดพลาด", cannotResolveCollabServer: "ไม่สามารถเชื่อต่อกับ collab เซิร์ฟเวอร์ได้ โปรดลองโหลดหน้านี้ใหม่และลองอีกครั้ง", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "การเพิ่มองค์ประกอบที่ฝังยังไม่สามารถเพิ่มเข้าไปในไลบลารีได้", iframe: "", image: "การสนับสนุนสำหรับเพิ่มรูปภาพลงในไลบลารีจะมาในเร็ว ๆ นี้" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MAA = { selection: "", image: "", rectangle: "สี่เหลี่ยมผืนผ้า", diamond: "", ellipse: "วงรี", arrow: "ลูกศร", line: "", freedraw: "", text: "ข้อความ", library: "คลัง", lock: "", penMode: "", link: "", eraser: "ยางลบ", frame: "", magicframe: "", embeddable: "ฝังเว็บ", laser: "", hand: "", extraTools: "เครื่องมืออื่นๆ", mermaidToExcalidraw: "", magicSettings: "" }, YAA = { canvasActions: "", selectedShapeActions: "", shapes: "รูปร่าง" }, vAA = { canvasPanning: "", linearElement: "", freeDraw: "", text: "", embeddable: "คลิกและลากเพื่อสร้างการฝังสำหรับเว็บไซต์", text_selected: "คลิกสองครั้งหรือกด ENTER เพื่อแก้ไขข้อความ", text_editing: "กดปุ่ม Esc หรือกด Ctrl, Cmd + Enter เพื่อเสร็จการแก้ไข", linearElementMulti: "คลิกที่จุดสุดท้ายหรือกด Escape หรือ Enter เพื่อเสร็จสิ้น", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: `กดปุ่ม Delete เพื่อลบจุด
กด Ctrl หรือ Cmd + D เพื่อทำซ้ำหรือลากเพื่อเคลื่อนย้าย`, lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, HAA = { cannotShowPreview: "", canvasTooBig: "", canvasTooBigTip: "" }, KAA = { headingMain: "<button>กำลังรีโหลดหน้า</button>", clearCanvasMessage: "ถ้าโหลดไม่ได้ ให้ลอง <button>เคลียร์ผืนผ้าใบ</button>", clearCanvasCaveat: "", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, JAA = { desc_intro: "", desc_privacy: "", button_startSession: "เริ่มเซสชัน", button_stopSession: "หยุดเซสชัน", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, ZAA = { title: "" }, qAA = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "ไม่สามารถส่งออกไปที่ Excalidraw+ ได้ในขณะนี้" }, WAA = { blog: "อ่านบล็อกของพวกเรา", click: "คลิก", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "ดับเบิลคลิก", drag: "ลาก", editor: "", editLineArrowPoints: "", editText: "แก้ไขข้อความ / เพิ่มข้อความ", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "ช่วยเหลือ", view: "ดู", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "ย้ายหน้าไปด้าน ซ้าย/ขวา" }, jAA = { title: "" }, TAA = { title: "", itemName: "", authorName: "ชื่อเจ้าของ", githubUsername: "ชื่อผู้ใช้ GitHub", twitterUsername: "ชื่อผู้ใช้ Twitter", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, zAA = { title: "", content: "" }, PAA = { resetLibrary: "", removeItemsFromLib: "" }, OAA = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "โหมดกลางคืน", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "ส่งออกไปเป็น SVG", exportToSvg: "ส่งออกไปเป็น SVG", copyPngToClipboard: "คัดลอก PNG ไปยังคลิปบอร์ด" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "คัดลอกไปยังคลิปบอร์ด" } }, VAA = { tooltip: "", link: "" }, XAA = { angle: "", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "" }, _AA = { addedToLibrary: "", copyStyles: "", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, $AA = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "ฟ้าน้ำทะเล", green: "เขียว", yellow: "เหลือง", orange: "ส้ม", bronze: "ทองแดง" }, AuA = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, uuA = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, euA = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, CuA = { title: "", button: "", description: "", syntax: "", preview: "" }, $7A = { labels: LAA, library: xAA, buttons: SAA, alerts: NAA, errors: RAA, toolBar: MAA, headings: YAA, hints: vAA, canvasError: HAA, errorSplash: KAA, roomDialog: JAA, errorDialog: ZAA, exportDialog: qAA, helpDialog: WAA, clearCanvasDialog: jAA, publishDialog: TAA, publishSuccessDialog: zAA, confirmDialog: PAA, imageExportDialog: OAA, encrypted: VAA, stats: XAA, toast: _AA, colors: $AA, welcomeScreen: AuA, colorPicker: uuA, overwriteConfirm: euA, mermaid: CuA };
const A8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NAA,
  buttons: SAA,
  canvasError: HAA,
  clearCanvasDialog: jAA,
  colorPicker: uuA,
  colors: $AA,
  confirmDialog: PAA,
  default: $7A,
  encrypted: VAA,
  errorDialog: ZAA,
  errorSplash: KAA,
  errors: RAA,
  exportDialog: qAA,
  headings: YAA,
  helpDialog: WAA,
  hints: vAA,
  imageExportDialog: OAA,
  labels: LAA,
  library: xAA,
  mermaid: CuA,
  overwriteConfirm: euA,
  publishDialog: TAA,
  publishSuccessDialog: zAA,
  roomDialog: JAA,
  stats: XAA,
  toast: _AA,
  toolBar: MAA,
  welcomeScreen: AuA
}, Symbol.toStringTag, { value: "Module" }));
var BuA = { paste: "Yapıştır", pasteAsPlaintext: "Düz metin olarak yapıştır", pasteCharts: "Grafikleri yapıştır", selectAll: "Tümünü seç", multiSelect: "Seçime öge ekle", moveCanvas: "Tuvali taşı", cut: "Kes", copy: "Kopyala", copyAsPng: "Panoya PNG olarak kopyala", copyAsSvg: "Panoya SVG olarak kopyala", copyText: "Panoya metin olarak kopyala", copySource: "", convertToCode: "", bringForward: "Bir öne getir", sendToBack: "Arkaya gönder", bringToFront: "En öne getir", sendBackward: "Bir geriye gönder", delete: "Sil", copyStyles: "Stilleri kopyala", pasteStyles: "Stilleri yapıştır", stroke: "Vurgu", background: "Arka plan", fill: "Doldur", strokeWidth: "Kontur genişliği", strokeStyle: "Kontur stili", strokeStyle_solid: "Dolu", strokeStyle_dashed: "Kesik çizgili", strokeStyle_dotted: "Noktalı", sloppiness: "Üstün körülük", opacity: "Opaklık", textAlign: "Metin hizala", edges: "Kenarlar", sharp: "Keskin", round: "Yuvarlak", arrowheads: "Ok uçları", arrowhead_none: "Yok", arrowhead_arrow: "Ok", arrowhead_bar: "Çizgi", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Üçgen", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Yazı tipi boyutu", fontFamily: "Yazı tipi ailesi", addWatermark: '"Excalidraw ile yapıldı" yazısını ekle', handDrawn: "El-yazısı", normal: "Normal", code: "Kod", small: "Küçük", medium: "Orta", large: "Büyük", veryLarge: "Çok geniş", solid: "Dolu", hachure: "Taralı", zigzag: "Zikzak", crossHatch: "Çapraz-taralı", thin: "İnce", bold: "Kalın", left: "Sol", center: "Ortala", right: "Sağ", extraBold: "Ekstra kalın", architect: "Mimar", artist: "Sanatçı", cartoonist: "Karikatürist", fileTitle: "Dosya adı", colorPicker: "Renk seçici", canvasColors: "Tuvalin üzerinde kullanıldı", canvasBackground: "Tuval arka planı", drawingCanvas: "Çizim tuvali", layers: "Katmanlar", actions: "Eylemler", language: "Dil", liveCollaboration: "Canlı ortak çalışma alanı...", duplicateSelection: "Çoğalt", untitled: "Adsız", name: "İsim", yourName: "İsminiz", madeWithExcalidraw: "Excalidraw ile yapıldı", group: "Seçimi grup yap", ungroup: "Seçilen grubu dağıt", collaborators: "Ortaklar", showGrid: "Izgarayı göster", addToLibrary: "Kütüphaneye ekle", removeFromLibrary: "Kütüphaneden kaldır", libraryLoadingMessage: "Kütüphane yükleniyor…", libraries: "Kütüphanelere gözat", loadingScene: "Sahne yükleniyor…", align: "Hizala", alignTop: "Yukarı hizala", alignBottom: "Aşağı hizala", alignLeft: "Sola hizala", alignRight: "Sağa hizala", centerVertically: "Dikeyde ortala", centerHorizontally: "Yatayda ortala", distributeHorizontally: "Yatay dağıt", distributeVertically: "Dikey dağıt", flipHorizontal: "Yatay döndür", flipVertical: "Dikey döndür", viewMode: "Görünüm modu", share: "Paylaş", showStroke: "Kontur için renk seçiciyi göster", showBackground: "Arkaplan için renk seçiciyi göster", toggleTheme: "Temayı etkinleştir/devre dışı bırak", personalLib: "Kişisel Kitaplık", excalidrawLib: "Excalidraw Kitaplığı", decreaseFontSize: "Yazı Tipi Boyutunu Küçült", increaseFontSize: "Yazı Tipi Boyutunu Büyült", unbindText: "Metni çöz", bindText: "Metni taşıyıcıya bağla", createContainerFromText: "Metni bileşen içinde sar", link: { edit: "Bağlantıyı düzenle", editEmbed: "Bağlantıyı düzenle & yerleştir", create: "Bağlantı oluştur", createEmbed: "Bağlantı oluştur & yerleştir", label: "Bağlantı", labelEmbed: "Bağlantı & yerleştirme", empty: "Herhangi bir bağlantı oluşturulmadı" }, lineEditor: { edit: "Çizgiyi düzenle", exit: "Çizgi düzenlemeden çık" }, elementLock: { lock: "Kilitle", unlock: "Kilidi Kaldır", lockAll: "Hepsini kilitle", unlockAll: "Hepsinin kilidini kaldır" }, statusPublished: "Yayınlandı", sidebarLock: "Kenar çubuğu açık kalsın", selectAllElementsInFrame: "Çerçevedeki tüm bileşenleri seç", removeAllElementsFromFrame: "Çerçevedeki tüm bileşenleri sil", eyeDropper: "Tuvalden renk seç", textToDiagram: "", prompt: "" }, guA = { noItems: "Öğe eklenmedi...", hint_emptyLibrary: "Öğelerden birini eklemek için öğeyi seçiniz veya aşağıdaki genel kütüphaneden öğeleri ekleyin.", hint_emptyPrivateLibrary: "Tuvalden bir eleman seçerek sayfaya ekleyin." }, tuA = { clearReset: "Tuvali sıfırla", exportJSON: "Dosyaya aktar", exportImage: "Resimleri dışa aktar...", export: "Şuraya kaydet...", copyToClipboard: "Panoya kopyala", save: "Geçerli dosyaya kaydet", saveAs: "Farklı kaydet", load: "Aç", getShareableLink: "Paylaşılabilir bağlantı al", close: "Kapat", selectLanguage: "Dil seçin", scrollBackToContent: "İçeriğe geri dön", zoomIn: "Yakınlaştır", zoomOut: "Uzaklaştır", resetZoom: "Yakınlaştırmayı sıfırla", menu: "Menü", done: "Tamam", edit: "Düzenle", undo: "Geri Al", redo: "Yeniden yap", resetLibrary: "Kütüphaneyi sıfırla", createNewRoom: "Yeni oda oluştur", fullScreen: "Tam ekran", darkMode: "Koyu tema", lightMode: "Açık tema", zenMode: "Zen modu", objectsSnapMode: "Nesnelere hizala", exitZenMode: "Zen modundan çık", cancel: "İptal", clear: "Temizle", remove: "Kaldır", embed: "", publishLibrary: "Yayınla", submit: "Gönder", confirm: "Onayla", embeddableInteractionButton: "Etkileşime girmek için tıkla" }, iuA = { clearReset: "Tuvalin tamamı temizlenecek. Emin misiniz?", couldNotCreateShareableLink: "Paylaşılabilir bağlantı oluşturulamadı.", couldNotCreateShareableLinkTooBig: "Paylaşılabilir bağlantı oluşturulamadı: sahne çok büyük", couldNotLoadInvalidFile: "Bilinmeyen dosya yüklenemiyor", importBackendFailed: "Sunucudan içe aktarma başarısız.", cannotExportEmptyCanvas: "Boş tuval dışarıya aktarılamaz.", couldNotCopyToClipboard: "Panoya kopyalanamıyor.", decryptFailed: "Şifrelenmiş veri çözümlenemedi.", uploadedSecurly: "Yükleme uçtan uca şifreleme ile korunmaktadır. Excalidraw sunucusu ve üçüncül şahıslar içeriği okuyamayacaktır.", loadSceneOverridePrompt: "Harici çizimler yüklemek mevcut olan içeriği değiştirecektir. Devam etmek istiyor musunuz?", collabStopOverridePrompt: `Oturumu sonlandırmak daha önceki, yerel olarak kaydedilmiş çizimin üzerine kaydedilmesine sebep olacak. Emin misiniz?

(Yerel çiziminizi kaybetmemek için tarayıcı sekmesini kapatabilirsiniz.)`, errorAddingToLibrary: "Öğe kütüphaneye eklenemedi", errorRemovingFromLibrary: "Öğe kütüphaneden silinemedi", confirmAddLibrary: "Bu, kitaplığınıza {{numShapes}} tane şekil ekleyecek. Emin misiniz?", imageDoesNotContainScene: "Bu görüntü herhangi bir sahne verisi içermiyor gibi görünüyor. Dışa aktarma sırasında sahne yerleştirmeyi etkinleştirdiniz mi?", cannotRestoreFromImage: "Sahne bu resim dosyasından geri yüklenemedi", invalidSceneUrl: "Verilen bağlantıdan çalışma alanı yüklenemedi. Dosya bozuk olabilir veya geçerli bir Excalidraw JSON verisi bulundurmuyor olabilir.", resetLibrary: "Bu işlem kütüphanenizi sıfırlayacak. Emin misiniz?", removeItemsFromsLibrary: "{{count}} öğe(ler) kitaplıktan kaldırılsın mı?", invalidEncryptionKey: "Şifreleme anahtarı 22 karakter olmalı. Canlı işbirliği devre dışı bırakıldı.", collabOfflineWarning: "İnternet bağlantısı bulunamadı. Değişiklikleriniz kaydedilmeyecek!" }, EuA = { unsupportedFileType: "Desteklenmeyen dosya türü.", imageInsertError: "Görsel eklenemedi. Daha sonra tekrar deneyin...", fileTooBig: "Dosya çok büyük. İzin verilen maksimum boyut {{maxSize}}.", svgImageInsertError: "SVG resmi eklenemedi. SVG işaretlemesi geçersiz görünüyor.", failedToFetchImage: "", invalidSVGString: "Geçersiz SVG.", cannotResolveCollabServer: "İş birliği sunucusuna bağlanılamıyor. Lütfen sayfayı yenileyip tekrar deneyin.", importLibraryError: "Kütüphane yüklenemedi", collabSaveFailed: "Backend veritabanına kaydedilemedi. Eğer problem devam ederse, çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.", collabSaveFailed_sizeExceeded: "Backend veritabanına kaydedilemedi; tuval çok büyük. Çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "Resimleri kütüphaneye ekleme desteği yakında geliyor!" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, auA = { selection: "Seçme", image: "Görsel ekle", rectangle: "Dikdörtgen", diamond: "Elmas", ellipse: "Elips", arrow: "Ok", line: "Çizgi", freedraw: "Çiz", text: "Yazı", library: "Kütüphane", lock: "Seçilen aracı çizimden sonra aktif tut", penMode: "Kalem modu - dokunmayı engelle", link: "Seçilen şekil için bağlantı Ekle/Güncelle", eraser: "Silgi", frame: "Çerçeve aracı", magicframe: "", embeddable: "Web Yerleştirme", laser: "Lazer işaretçisi", hand: "", extraTools: "Daha fazla araç", mermaidToExcalidraw: "", magicSettings: "" }, IuA = { canvasActions: "Tuval eylemleri", selectedShapeActions: "Seçilen şekil aksiyonları", shapes: "Şekiller" }, ouA = { canvasPanning: "", linearElement: "Birden fazla nokta için tıklayın, tek çizgi için sürükleyin", freeDraw: "Tıkla ve sürükle, bitirdiğinde serbest bırak", text: "İpucu: seçme aracıyla herhangi bir yere çift tıklayarak da yazı ekleyebilirsin", embeddable: "Web sitesi yerleştirmek için sürükle bırak", text_selected: "Metni düzenlemek için çift tıklayın veya ENTER'a basın", text_editing: "Düzenlemeyi bitirmek için ESC veya Ctrl/Cmd+ENTER tuşlarına basın", linearElementMulti: "Bitirmek için son noktaya tıklayın ya da Escape veya Enter tuşuna basın", lockAngle: "SHIFT tuşuna basılı tutarak açıyı koruyabilirsiniz", resize: `Yeniden boyutlandırırken SHIFT tuşunu basılı tutarak oranları sınırlayabilirsiniz,
merkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun`, resizeImage: "SHIFT'e basılı tutarak serbestçe yeniden boyutlandırabilirsiniz, merkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun", rotate: "Döndürürken SHIFT tuşuna basılı tutarak açıları koruyabilirsiniz", lineEditor_info: "Puanları düzenlemek için ctrl veya cmd tuşuna basılı tutup çift tıklayın veya enter tuşuna basın", lineEditor_pointSelected: `Sil tuşuna basarak noktaları silin,
Ctrl/Cmd + D ile çoğaltın, ya da sürükleyerek taşıyın`, lineEditor_nothingSelected: `Düzenlemek için bir nokta seçin (birden fazla seçmek için SHIFT tuşunu basılı tutun),
veya Alt tuşunu basılı tutun ve yeni noktalar eklemek için tıklayın`, placeImage: "Resmi yerleştirmek için tıklayın ya da boyutunu manuel olarak ayarlamak için tıklayıp sürükleyin", publishLibrary: "Kendi kitaplığınızı yayınlayın", bindTextToElement: "Enter tuşuna basarak metin ekleyin", deepBoxSelect: "Ctrl/Cmd tuşuna basılı tutarak derin seçim yapın ya da sürüklemeyi engelleyin", eraserRevert: "Alt tuşuna basılı tutarak silinme için işaretlenmiş ögeleri tersine çevirin", firefox_clipboard_write: "", disableSnapping: "" }, QuA = { cannotShowPreview: "Önizleme gösterilemiyor", canvasTooBig: "Kanvas çok büyük olabilir.", canvasTooBigTip: "İpucu: En uzaktaki elemanları birbirine yakınlaştırmayı deneyin." }, nuA = { headingMain: "Hata oluştu. Lütfen <button>sayfayı yenilemeyi deneyin.</button>", clearCanvasMessage: "Yenileme sonrası sorun devam ediyorsa, lütfen <button>çizim alanını temizlemeyi deneyin.</button>", clearCanvasCaveat: " Bu, yaptığınız değişiklikleri sıfırlayacak ", trackedToSentry: "Tanımlayıcı ile ilgili hata {{eventId}} sistemimize yakalandı.", openIssueMessage: "Sahne bilginizi hata mesajına yansıtmamak için oldukça dikkatli davrandık. Eğer sahneniz gizli değilse hatayı lütfen şuradan takip edin <button>hata takibi.</button> Lütfen aşağıya GitHub sorununa kopyalayarak ve yapıştırarak bilgi ekleyin.", sceneContent: "Sahne içeriği:" }, ruA = { desc_intro: "Çalışma alanınıza, sizinle birlikte çalışabilmeleri için başkalarını da ekleyebilirsiniz.", desc_privacy: "Çalışma ortamında yaptıklarınız ve çizimleriniz uçtan uca şifrelemeyle saklanmaktadır. Sunucularımız dahi bu verileri şifrelenmemiş haliyle göremez.", button_startSession: "Oturumu başlat", button_stopSession: "Oturumu sonlandır", desc_inProgressIntro: "Ortak çalışma ortamı oluşturuldu.", desc_shareLink: "Bu bağlantıyı birlikte çalışacağınız kişilerle paylaşabilirsiniz:", desc_exitSession: "Çalışma ortamını kapattığınızda ortak çalışmadan ayrılmış olursunuz ancak kendi versiyonunuzda çalışmaya devam edebilirsiniz. Bu durumda ortak çalıştığınız diğer kişiler etkilenmeyecek, çalışma ortamındaki versiyon üzerinden çalışmaya devam edebilecekler.", shareTitle: "Excalidraw'da canlı ortak calışma oturumuna katıl" }, suA = { title: "Hata" }, luA = { disk_title: "Belleğe kaydet", disk_details: "Sahne verilerini daha sonra içe aktarabileceğiniz bir dosyaya aktarın.", disk_button: "Dosyaya kaydet", link_title: "Paylaşılabilir bağlantı", link_details: "Salt okunur bir bağlantı olarak dışa aktarın.", link_button: "Bağlantı olarak dışa aktar", excalidrawplus_description: "Sahneyi Excalidraw+ çalışma alanınıza kaydedin.", excalidrawplus_button: "Dışa aktar", excalidrawplus_exportError: "Şu anda Excalidraw+'a aktarılamadı..." }, cuA = { blog: "Blog'umuzu okuyun", click: "tıkla", deepSelect: "Derin seçim", deepBoxSelect: "Kutu içerisinde derin seçim yapın, sürüklemeyi engelleyin", curvedArrow: "Eğri ok", curvedLine: "Eğri çizgi", documentation: "Dokümantasyon", doubleClick: "çift-tıklama", drag: "sürükle", editor: "Düzenleyici", editLineArrowPoints: "Çizgi/ok noktalarını düzenle", editText: "Etiket / metin düzenle", github: "Bir hata mı buldun? Bildir", howto: "Rehberlerimizi takip edin", or: "veya", preventBinding: "Ok bağlamayı önleyin", tools: "Araçlar", shortcuts: "Klavye kısayolları", textFinish: "Düzenlemeyi bitir (metin düzenleyici)", textNewLine: "Yeni satır ekle (metin düzenleyici)", title: "Yardım", view: "Görünüm", zoomToFit: "Tüm öğeleri sığdırmak için yakınlaştır", zoomToSelection: "Seçime yakınlaş", toggleElementLock: "Seçimi Kilitle/çöz", movePageUpDown: "Sayfayı yukarı/aşağı kaydır", movePageLeftRight: "Sayfayı sola/sağa kaydır" }, duA = { title: "Tuvali temizle" }, DuA = { title: "Kitaplığı yayınla", itemName: "Öğe adı", authorName: "Yazar adı", githubUsername: "GıtHub kullanıcı adı", twitterUsername: "Twitter kullanıcı adı", libraryName: "Kitaplık adı", libraryDesc: "Kitaplık açıklaması", website: "Web sitesi", placeholder: { authorName: "Adınız ya da kullanıcı adınız", libraryName: "Kitaplığınızın adı", libraryDesc: "İnsanların kullanımını anlamasına yardımcı olmak için kitaplığınızın açıklaması", githubHandle: "Github bağlantısı ( tercihe bağlı), kütüphane gözden geçirme için onaylandığında düzenleyebiliesiniz diye", twitterHandle: "Twitter kullanıcı adı ( tercihe bağlı), bu sayede Twitter üzerinde paylaşıren çalışmanızı size atfedebiliriz", website: "Kişisel web sayfanızı ya da başka bir yeri bağlayın (tercihe bağlı)" }, errors: { required: "Gerekli", website: "Geçerli bir URL girin" }, noteDescription: "Submit your library to be included in the <link>genel kütüphane reposu</link>diğer insanlar çizimlerinde kullanabilsin diye.", noteGuidelines: "Önce kütüphane elle onaylanmalı. şunu okuyun <link>yönergeler</link> onaylamadan önce. gerekli olması halinde iletişim kurmak için ve değişiklik için Github hesabı gerekli, ama çok da illaki olmalı değil.", noteLicense: "Bunu onaylayarak, kütüğhanenin şu lisansla yayınlanmasını onaylıyorsunuz <link>MIT Lisans, </link>ki bu kısaca herkesin onu kısıtlama olmaksızın kullanabileceği anlamına gelmektedir.", noteItems: "Her kütüphane kendi ismine sahip olmalı ki tarama yapabilelim. Şu kütüphane ögeleri dahil edilecek:", atleastOneLibItem: "Lütfen başlamak için en az bir tane kütüphane ögesi seçin", republishWarning: "Not: seçilen ögelerden bir kısmı zaten yayınlanmış/gönderilmiş. Yalnızca mevcut kütüphane ve gönderileri güncellerken yeniden gönderme işlemi yapmalısınız." }, huA = { title: "Kütüphane gönderildi", content: "Teşekkürler {{authorName}}. Kütüphaneniz gözden geçirme için alındı. Durumu takip edebilirsiniz<link>burada</link>" }, wuA = { resetLibrary: "Kütüphaneyi sıfırla", removeItemsFromLib: "Seçilen ögeleri kütüphaneden kaldır" }, FuA = { header: "Resmi dışa aktar", label: { withBackground: "Arka plan", onlySelected: "Sadece seçilen", darkMode: "Karanlık mod", embedScene: "Sahne yerleştir", scale: "Ölçeklendir", padding: "Dış boşluk" }, tooltip: { embedScene: "Sahne verisi, sahnenin geri yüklenebilmesi için dışarı aktarılan PNG/SVG dosyasına kaydedilecektir. Bu, dışa aktarılan dosya boyutunu arttıracaktır." }, title: { exportToPng: "PNG olarak dışa aktar", exportToSvg: "SVG olarak dışa aktar", copyPngToClipboard: "" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Panoya kopyala" } }, puA = { tooltip: "Çizimleriniz uçtan-uca şifrelenmiştir, Excalidraw'ın sunucuları bile onları göremez.", link: "Excalidraw'da uçtan uca şifreleme hakkında blog yazısı" }, muA = { angle: "Açı", element: "Bileşen", elements: "Bileşenler", height: "Yükseklik", scene: "Sahne", selected: "Seçili", storage: "Depolama", title: "İnekler için istatistikler", total: "Toplam", version: "Sürüm", versionCopy: "Kopyalamak için tıkla", versionNotAvailable: "Sürüm mevcut değil", width: "Genişlik" }, kuA = { addedToLibrary: "Kütüphaneye eklendi", copyStyles: "Stiller kopyalandı.", copyToClipboard: "Panoya kopyalandı.", copyToClipboardAsPng: `{{exportSelection}} panoya PNG olarak
({{exportColorScheme}}) kopyalandı`, fileSaved: "Dosya kaydedildi.", fileSavedToFilename: "{filename} kaydedildi", canvas: "tuval", selection: "seçim", pasteAsSingleElement: "Tekil obje olarak yapıştırmak için veya var olan bir metin editörüne yapıştırmak için {{shortcut}} kullanın", unableToEmbed: "", unrecognizedLinkFormat: "" }, yuA = { transparent: "Şeffaf", black: "Siyah", white: "Beyaz", red: "Kırmızı", pink: "Pembe", grape: "Koyu Mor", violet: "Menekşe rengi", gray: "Gri", blue: "Mavi", cyan: "Camgöbeği", teal: "Deniz mavisi", green: "Yeşil", yellow: "Sarı", orange: "Turuncu", bronze: "" }, buA = { app: { center_heading: "", center_heading_plus: "Ecalidraw+'a mı gitmek istediniz?", menuHint: "Dışa aktar, seçenekler, diller, ..." }, defaults: { menuHint: "Dışa aktar, seçenekler, ve daha fazlası...", center_heading: "", toolbarHint: "Bir araç seçin ve çizime başlayın!", helpHint: "Kısayollar & yardım" } }, UuA = { mostUsedCustomColors: "En çok kullanılan özel renkler", colors: "Renkler", shades: "", hexCode: "Hex kodu", noShades: "" }, GuA = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "Diske Kaydet", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, fuA = { title: "", button: "", description: "", syntax: "", preview: "" }, u8A = { labels: BuA, library: guA, buttons: tuA, alerts: iuA, errors: EuA, toolBar: auA, headings: IuA, hints: ouA, canvasError: QuA, errorSplash: nuA, roomDialog: ruA, errorDialog: suA, exportDialog: luA, helpDialog: cuA, clearCanvasDialog: duA, publishDialog: DuA, publishSuccessDialog: huA, confirmDialog: wuA, imageExportDialog: FuA, encrypted: puA, stats: muA, toast: kuA, colors: yuA, welcomeScreen: buA, colorPicker: UuA, overwriteConfirm: GuA, mermaid: fuA };
const e8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: iuA,
  buttons: tuA,
  canvasError: QuA,
  clearCanvasDialog: duA,
  colorPicker: UuA,
  colors: yuA,
  confirmDialog: wuA,
  default: u8A,
  encrypted: puA,
  errorDialog: suA,
  errorSplash: nuA,
  errors: EuA,
  exportDialog: luA,
  headings: IuA,
  helpDialog: cuA,
  hints: ouA,
  imageExportDialog: FuA,
  labels: BuA,
  library: guA,
  mermaid: fuA,
  overwriteConfirm: GuA,
  publishDialog: DuA,
  publishSuccessDialog: huA,
  roomDialog: ruA,
  stats: muA,
  toast: kuA,
  toolBar: auA,
  welcomeScreen: buA
}, Symbol.toStringTag, { value: "Module" }));
var LuA = { paste: "Вставити", pasteAsPlaintext: "Вставити як простий текст", pasteCharts: "Вставити діаграми", selectAll: "Вибрати все", multiSelect: "Додати елемент до вибраного", moveCanvas: "Перемістити полотно", cut: "Вирізати", copy: "Копіювати", copyAsPng: "Копіювати як PNG", copyAsSvg: "Копіювати як SVG", copyText: "Копіювати в буфер обміну як текст", copySource: "", convertToCode: "", bringForward: "Перемістити вперед", sendToBack: "На задній план", bringToFront: "На передній план", sendBackward: "Перемістити назад", delete: "Видалити", copyStyles: "Копіювати стилі", pasteStyles: "Вставити стилі", stroke: "Контур", background: "Тло", fill: "Заповнити", strokeWidth: "Товщина контуру", strokeStyle: "Стиль контуру", strokeStyle_solid: "Суцільний", strokeStyle_dashed: "Пунктир", strokeStyle_dotted: "Крапки", sloppiness: "Охайність", opacity: "Прозорість", textAlign: "Вирівнювання тексту", edges: "Краї", sharp: "Гострі", round: "Круглі", arrowheads: "Закінчення стрілки", arrowhead_none: "Жоден", arrowhead_arrow: "Стрілка", arrowhead_bar: "Колона", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Трикутник", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Розмір шрифту", fontFamily: "Шрифт", addWatermark: "Додати «Накреслене в Excalidraw»", handDrawn: "Ручний апарат", normal: "Звичайний", code: "Код", small: "Малий", medium: "Середній", large: "Великий", veryLarge: "Дуже великий", solid: "Суцільна", hachure: "Штриховка", zigzag: "Зиґзаґ", crossHatch: "Перехресна штриховка", thin: "Тонкий", bold: "Жирний", left: "Зліва", center: "По центру", right: "Справа", extraBold: "Товстий", architect: "Архітектор", artist: "Художник", cartoonist: "Карикатурист", fileTitle: "Назва файла", colorPicker: "Палітра кольорів", canvasColors: "Використовується на полотні", canvasBackground: "Тло полотна", drawingCanvas: "Полотно", layers: "Шари", actions: "Дії", language: "Мова", liveCollaboration: "Спільна робота наживо...", duplicateSelection: "Дублювати", untitled: "Без назви", name: "Ім’я", yourName: "Ваше ім’я", madeWithExcalidraw: "Накреслене в Excalidraw", group: "Групувати виділене", ungroup: "Розгрупувати виділене", collaborators: "Співавтори", showGrid: "Показати сітку", addToLibrary: "Додати до бібліотеки", removeFromLibrary: "Видалити з бібліотеки", libraryLoadingMessage: "Завантажити бібліотеку…", libraries: "Всі бібліотеки", loadingScene: "Завантаження сцени…", align: "Вирівнювання", alignTop: "Вирівняти по верхньому краю", alignBottom: "Вирівняти по нижньому краю", alignLeft: "Вирівняти по лівому краю", alignRight: "Вирівнювання по правому краю", centerVertically: "Центрувати по вертикалі", centerHorizontally: "Центрувати по горизонталі", distributeHorizontally: "Розподілити по горизонталі", distributeVertically: "Розподілити вертикально", flipHorizontal: "Віддзеркалити горизонтально", flipVertical: "Віддзеркалити вертикально", viewMode: "Режим перегляду", share: "Поділитися", showStroke: "Показати палітру для контура", showBackground: "Показати палітру для фону", toggleTheme: "Перемкнути тему", personalLib: "Персональна бібліотека", excalidrawLib: "Бібліотека Excalidraw", decreaseFontSize: "Зменшити розмір шрифту", increaseFontSize: "Збільшити розмір шрифту", unbindText: "Відв'язати текст", bindText: "Прив’язати текст до контейнера", createContainerFromText: "Огорнути текст у контейнер", link: { edit: "Редагування посилання", editEmbed: "Редагування посилання і вкладення", create: "Створити посилання", createEmbed: "Створити посилання і вкладення", label: "Посилання", labelEmbed: "Посилання і вкладення", empty: "Посилання відсутнє" }, lineEditor: { edit: "Редагувати лінію", exit: "Закінчити редагування лінії" }, elementLock: { lock: "Блокувати", unlock: "Розблокувати", lockAll: "Заблокувати все", unlockAll: "Розблокувати все" }, statusPublished: "Опубліковано", sidebarLock: "Не закривати бокове меню", selectAllElementsInFrame: "Обрати всі елементи у фреймі", removeAllElementsFromFrame: "Видалити всі елементи з фрейму", eyeDropper: "Вибрати колір з полотна", textToDiagram: "", prompt: "" }, xuA = { noItems: "Тут поки пусто...", hint_emptyLibrary: "Виберіть об'єкт на полотні, щоб додати його сюди або встановіть бібліотеку з публічного репозиторію, що нижче.", hint_emptyPrivateLibrary: "Виберіть елемент на полотні, щоб додати його сюди." }, SuA = { clearReset: "Очистити полотно", exportJSON: "Експорт у файл", exportImage: "Експорт зображення...", export: "Зберегти як...", copyToClipboard: "Скопіювати до буферу обміну", save: "Зберегти до поточного файлу", saveAs: "Зберегти як", load: "Відкрити", getShareableLink: "Отримати посилання", close: "Закрити", selectLanguage: "Обрати мову", scrollBackToContent: "Повернутися до вмісту", zoomIn: "Збільшити", zoomOut: "Зменшити", resetZoom: "Скинути масштаб", menu: "Меню", done: "Готово", edit: "Редагувати", undo: "Відмінити", redo: "Повторити", resetLibrary: "Очистити бібліотеку", createNewRoom: "Створити нову кімнату", fullScreen: "Повноекранний режим", darkMode: "Темна тема", lightMode: "Світла тема", zenMode: "Режим Дзен", objectsSnapMode: "", exitZenMode: "Вийти з дзен-режиму", cancel: "Скасувати", clear: "Очистити", remove: "Видалити", embed: "Перемкнути вкладення", publishLibrary: "Опублікувати", submit: "Надіслати", confirm: "Підтвердити", embeddableInteractionButton: "Натисніть для взаємодії" }, NuA = { clearReset: "Це очистить все полотно. Впевнені?", couldNotCreateShareableLink: "Не вдалося створити посилання.", couldNotCreateShareableLinkTooBig: "Не вдалося створити посилання для обміну: сцена занадто велика", couldNotLoadInvalidFile: "Файл з помилками не відкрився", importBackendFailed: "Імпортування невдале.", cannotExportEmptyCanvas: "Не вийшло експортувати пусте полотно.", couldNotCopyToClipboard: "Не вдалося скопіювати до буфера обміну.", decryptFailed: "Не вдалося розшифрувати дані.", uploadedSecurly: "Це завантаження було захищене наскрізним шифруванням, а це означає що сервер Excalidraw та інші не зможуть прочитати вміст.", loadSceneOverridePrompt: "Завантаження зовнішнього креслення замінить ваш наявний контент. Продовжити?", collabStopOverridePrompt: `Зупинка сесії перезапише ваш попередній, локально збережений малюнок. Ви впевнені?

(Якщо ви хочете зберегти локальний малюнок, просто закрийте замість нього вкладку браузера.)`, errorAddingToLibrary: "Не вдалося додати елемент до бібліотеки", errorRemovingFromLibrary: "Не вдалося видалити елемент з бібліотеки", confirmAddLibrary: "Це призведе до додавання {{numShapes}} фігур до вашої бібліотеки. Ви впевнені?", imageDoesNotContainScene: "Виглядає ніби зображення не містить корисної інформації. Ви увімкнули вбудовування сцени при експорті?", cannotRestoreFromImage: "Сцена не може бути відновлена з цього файлу зображення", invalidSceneUrl: "Не вдалося імпортувати сцену з наданого URL. Він або недоформований, або не містить дійсних даних Excalidraw JSON.", resetLibrary: "Це призведе до очищення бібліотеки. Ви впевнені?", removeItemsFromsLibrary: "Видалити {{count}} елемент(ів) з бібліотеки?", invalidEncryptionKey: "Ключ шифрування повинен бути довжиною до 22 символів. Спільну роботу вимкнено.", collabOfflineWarning: `Немає підключення до Інтернету.
Ваші зміни не будуть збережені!` }, RuA = { unsupportedFileType: "Непідтримуваний тип файлу.", imageInsertError: "Не вдалося вставити зображення. Повторіть спробу пізніше...", fileTooBig: "Занадто великий розмір файлу, максимальний розмір файлу {{maxSize}}.", svgImageInsertError: "Не вдалося вставити SVG-зображення. Помилка розмітки SVG.", failedToFetchImage: "", invalidSVGString: "Недійсний SVG.", cannotResolveCollabServer: "Не вдалося приєднатися до сервера. Перезавантажте сторінку та повторіть спробу.", importLibraryError: "Не вдалося завантажити бібліотеку", collabSaveFailed: "Не вдалося зберегти у базу даних сервера. Якщо проблеми не зникнуть, Вам слід зберегти файл локально, щоб не втратити роботу.", collabSaveFailed_sizeExceeded: "Полотно завелике! Не вдалося зберегти у базу даних сервера. Вам слід зберегти файл локально, щоб не втратити свою роботу.", imageToolNotSupported: "", brave_measure_text_error: { line1: "Ви використовуєте браузер Brave з увімкненим налаштуванням <bold>Агресивного Блокування Розпізнавання Пристрою</bold>.", line2: "Це може нашкодити <bold>текстовим елементам</bold> у ваших малюнках.", line3: "Ми наполегливо рекомендуємо вимкнути це налаштування. Виконайте наступні <link>кроки</link>, щоб виправити це.", line4: "Якщо вимкнення цього параметра не вирішує показ текстових елементів, тоді створіть, будь ласка, <issueLink>запит на розв'язання проблеми</issueLink> на нашому GitHub або напишіть нам у <discordLink>Discord</discordLink>" }, libraryElementTypeError: { embeddable: "Вбудовані елементи не можна додати в бібліотеку.", iframe: "", image: "Підтримка додавання зображень в бібліотеку найближчим часом!" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, MuA = { selection: "Виділення", image: "Вставити зображення", rectangle: "Прямокутник", diamond: "Ромб", ellipse: "Еліпс", arrow: "Стрілка", line: "Лінія", freedraw: "Малювати", text: "Текст", library: "Бібліотека", lock: "Залишити обраний інструмент після креслення", penMode: "Режим пера - запобігання дотику", link: "Додати/Оновити посилання для вибраної форми", eraser: "Очищувач", frame: "Інструмент фрейму", magicframe: "", embeddable: "Веб вкладення", laser: "", hand: "Рука (інструмент для панорамування)", extraTools: "Інші інструменти", mermaidToExcalidraw: "", magicSettings: "" }, YuA = { canvasActions: "Дії з полотном", selectedShapeActions: "Вибрані дії з фігурою", shapes: "Фігури" }, vuA = { canvasPanning: "Щоб перемістити полотно, утримуйте коліщатко миші або пробіл під час перетягування, або скористайтеся інструментом Рука", linearElement: "Натисніть щоб додати кілька точок. Перетягніть щоб намалювати одну лінію", freeDraw: "Натисніть і потягніть, відпустіть коли завершите", text: "Порада: можна також додати текст, двічі клацнувши по будь-якому місці інструментом вибору", embeddable: "Клікніть та перетягніть для створення вбудованого вебсайту", text_selected: "Подвійний клік або натисніть клавішу ENTER, щоб редагувати текст", text_editing: "Натисніть клавішу Escape або Ctrl/Cmd+ENTER, щоб завершити редагування", linearElementMulti: "Натисніть на останню точку, клацніть Esc або Enter щоб завершити", lockAngle: "Ви можете обмежити кут, утримуюючи SHIFT", resize: `Ви можете зберегти пропорції, утримуючи SHIFT під час зміни розміру,
утримуйте ALT для змінення розміру від центру`, resizeImage: "Ви можете змінювати розміри утримуючи клавішу SHIFT, втримуйте клавішу ALT щоб змінювати розмір відносно центру", rotate: "Ви можете обмежити кути, утримуючи SHIFT під час обертання", lineEditor_info: "Утримуйте CtrlOrCmd і двічі клацніть або натисніть CtrlOrCmd + Enter, щоб редагувати цятки", lineEditor_pointSelected: "Натисніть Delete для видалення точку (точок), або Ctrl/Cmd+D для дублювання, перетаскування працює як звично", lineEditor_nothingSelected: "Виберіть точку для редагування (втримуйте клавішу SHIFT для вибору кількох точок), або клавішу Alt для додавання нових точок", placeImage: "Клацніть, щоб розмістити зображення, або натисніть та потягніть щоб змінити його розмір", publishLibrary: "Опублікувати свою власну бібліотеку", bindTextToElement: "Натисніть Enter, щоб додати текст", deepBoxSelect: "Втримуйте Ctrl/Cmd для глибокого виділення та щоб попередити перетягування", eraserRevert: "Втримуйте клавішу Alt, щоб повернути елементи позначені для видалення", firefox_clipboard_write: 'Цю функцію можна ввімкнути, встановивши значення "true" для налаштування "dom.events.asyncClipboard.clipboardItem". Перейдіть на сторінку «about:config», щоб змінити налаштування браузера у Firefox.', disableSnapping: "" }, HuA = { cannotShowPreview: "Не вдається показати попередній перегляд", canvasTooBig: "Полотно може бути завеликим.", canvasTooBigTip: "Порада: спробуйте підсунути найвіддаленіші елементи ближче один до одного." }, KuA = { headingMain: "Сталася помилка. Спробуйте <button>перезавантажити сторінку.</button>", clearCanvasMessage: "Якщо перезавантаження не допоможе, спробуйте <button>очистити полотно.</button>", clearCanvasCaveat: " Це призведе до втрати роботи ", trackedToSentry: "Помилка з ідентифікатором {{eventId}} було відслідковано в нашій системі.", openIssueMessage: "Ми були дуже обережні, щоб не включати інформацію про ваші сцени в текст помилки. Якщо ваша сцена не була приватна, будь ласка, розгляньте можливість продовження на нашому <button>трекер помилок.</button> Будь ласка, додайте інформацію нижче, скопіюючи і вставляючи у GitHub issue.", sceneContent: "Вміст сцени:" }, JuA = { desc_intro: "Ви можете запросити людей для спільної роботи.", desc_privacy: "Не хвилюйтеся, сесія захищена наскрізним шифруванням, тому ваше креслення залишиться приватним. Навіть наш сервер не побачить вашу роботу.", button_startSession: "Почати сесію", button_stopSession: "Закрити сесію", desc_inProgressIntro: "Сесія спільної роботи над кресленням триває.", desc_shareLink: "Поділіться цим посиланням з будь-ким для спільної роботи:", desc_exitSession: "Зупинка сесії відключить вас від кімнати, але ви зможете продовжити роботу з полотном локально. Зверніть увагу, що це не вплине на інших людей, і вони все одно зможуть працювати над їх версією.", shareTitle: "Приєднатися до сеансу спільної роботи на Excalidraw" }, ZuA = { title: "Помилка" }, quA = { disk_title: "Зберегти на диск", disk_details: "Експорт даних сцени в файл, з якого можна імпортувати пізніше.", disk_button: "Зберегти до файлу", link_title: "Доступ за посиланням", link_details: "Експортувати як посилання тільки для читання.", link_button: "Експортувати у посилання", excalidrawplus_description: "Збережіть сцену у вашому обліковому записі Excalidraw+.", excalidrawplus_button: "Експортувати", excalidrawplus_exportError: "Не вдалося експортувати у Excalidraw+..." }, WuA = { blog: "Наш блог", click: "натиснути", deepSelect: "Глибокий вибір", deepBoxSelect: "Глибоке виділення в межах рамки, та обмеження перетягування", curvedArrow: "Крива стрілка", curvedLine: "Крива лінія", documentation: "Документація", doubleClick: "подвійний клік", drag: "перетягнути", editor: "Редактор", editLineArrowPoints: "Редагувати лінію/стрілки", editText: "Редагувати текст / додати позначку", github: "Знайшли помилку? Повідомте", howto: "Дотримуйтесь наших інструкцій", or: "або", preventBinding: "Запобігти зв'язування зі стрілками", tools: "Інструменти", shortcuts: "Гарячі клавіші", textFinish: "Завершити редагування (текстовий редактор)", textNewLine: "Додати новий рядок (текстовий редактор)", title: "Допомога", view: "Вигляд", zoomToFit: "Збільшити щоб умістити всі елементи", zoomToSelection: "Наблизити вибране", toggleElementLock: "Заблокувати/розблокувати вибране", movePageUpDown: "Пересунути сторінку вгору/вниз", movePageLeftRight: "Пересунути сторінку вліво/вправо" }, juA = { title: "Очистити полотно" }, TuA = { title: "Опублікувати бібліотеку", itemName: "Назва елементу", authorName: "Ім'я автора", githubUsername: "Ім'я користувача Github", twitterUsername: "Ім'я користувача Твитер", libraryName: "Назва бібліотеки", libraryDesc: "Опис бібліотеки", website: "Вебсайт", placeholder: { authorName: "Ваше ім'я або ім'я користувача", libraryName: "Назва вашої бібліотеки", libraryDesc: "Опис вашої бібліотеки, щоб допомогти людям зрозуміти її використання", githubHandle: "Ім'я користувача в GitHub (необов'язково), щоб ви могли редагувати бібліотеку під час перевірки", twitterHandle: "Ім'я користувача у Twitter (необов'язково), щоб ми могли згадати вас під час промоції у Twitter", website: "Посилання на ваш особистий сайт або інший сайт (опціонально)" }, errors: { required: "Обов’язково", website: "Введіть дійсну URL-адресу" }, noteDescription: "Подати бібліотеку, щоб вона була включена до <link>публічного репозиторія бібліотек</link>для інших людей, для використання у їхніх полотнах.", noteGuidelines: "Спочатку бібліотека повинна бути підтверджена. Будь ласка, прочитайте <link>настанови</link> перед відправкою. Вам знадобиться обліковий запис на GitHub, щоб колаборувати та вносити зміни, але це не обов'язково.", noteLicense: "Публікуючи, ви погоджуєтеся, що бібліотека буде опублікована під <link>Ліцензія MIT, </link>, простими словами, це означає що нею зможе користуватися будь-хто без обмежень.", noteItems: "Кожен об'єкт в бібліотеці повинен мати назву, це потрібно для пошуку та фільтрування. Наступні об'єкти бібліотеки будуть включені:", atleastOneLibItem: "Будь ласка, виберіть принаймні один елемент бібліотеки, щоб почати", republishWarning: "Зауважте, деякі з вибраних елементів позначені як вже опубліковані/надіслані. Ви повинні повторно надсилати елементи тільки при оновленні вже опублікованої бібліотеки чи при публікації бібліотеки." }, zuA = { title: "Бібліотека відправлена", content: "Дякуємо, {{authorName}}. Ваша бібліотека була відправлена для розгляду. Ви можете відстежувати статус<link>тут</link>" }, PuA = { resetLibrary: "Очистити бібліотеку", removeItemsFromLib: "Видалити вибрані елементи з бібліотеки" }, OuA = { header: "Експортувати зображення", label: { withBackground: "Тло", onlySelected: "Тільки вибране", darkMode: "Темний режим", embedScene: "Вбудована сцена", scale: "Масштабування", padding: "Відступ" }, tooltip: { embedScene: "Дані сцени будуть збережені в експортований файл PNG/SVG. Ця сцена може бути відновлена з нього, однак це збільшить розмір експортованого файлу." }, title: { exportToPng: "Експортувати в PNG", exportToSvg: "Експортувати у SVG", copyPngToClipboard: "Скопіювати PNG в буфер обміну" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "Копіювати в буфер обміну" } }, VuA = { tooltip: "Ваші креслення захищені наскрізним шифруванням — сервери Excalidraw ніколи їх не побачать.", link: "Допис у блозі на наскрізному шифруванні в Excalidraw" }, XuA = { angle: "Кут", element: "Елемент", elements: "Елементи", height: "Висота", scene: "Сцена", selected: "Обрано", storage: "Сховище", title: "Статистика", total: "Всього", version: "Версія", versionCopy: "Натисніть, щоб скопіювати", versionNotAvailable: "Версія недоступна", width: "Ширина" }, _uA = { addedToLibrary: "Додано до бібліотеки", copyStyles: "Скопійовані стилі.", copyToClipboard: "Скопіювати до буферу обміну.", copyToClipboardAsPng: `Скопійовано {{exportSelection}} до буфера обміну як PNG
({{exportColorScheme}})`, fileSaved: "Файл збережено.", fileSavedToFilename: "Збережено в {filename}", canvas: "полотно", selection: "виділення", pasteAsSingleElement: "Використайте {{shortcut}} для вставки самостійного зразка або використайте в текстовому редакторі", unableToEmbed: "Вбудування цієї url на даний час не допускається. Підніміть питання на GitHub, щоб попросити внести URL-адресу до білого списку", unrecognizedLinkFormat: 'Посилання, яке ви вставили, не відповідає очікуваному формату. Будь ласка, спробуйте вставити рядок "embed", наданий сайтом-джерелом' }, $uA = { transparent: "Прозорий", black: "Чорний", white: "Білий", red: "Червоний", pink: "Рожевий", grape: "Виноградний", violet: "Фіолетовий", gray: "Сірий", blue: "Синій", cyan: "Ціан", teal: "Бірюзовий", green: "Зелений", yellow: "Жовтий", orange: "Помаранчевий", bronze: "Бронзовий" }, A0A = { app: { center_heading: "Всі ваші дані збережено локально у Вашому браузері.", center_heading_plus: "Чи бажаєте перейти до Excalidraw+?", menuHint: "Експорт, налаштування, мови, ..." }, defaults: { menuHint: "Експорт, налаштування та багато іншого...", center_heading: "Діаграми. Робити. Просто.", toolbarHint: "Оберіть інструмент і почніть малювати!", helpHint: "Гарячі клавіші і допомога" } }, u0A = { mostUsedCustomColors: "Найбільш використовувані користувацькі кольори", colors: "Кольори", shades: "Тіні", hexCode: "Hex-код", noShades: "Немає доступних відтінків цього кольору" }, e0A = { action: { exportToImage: { title: "Експортувати як зображення", button: "Експортувати як зображення", description: "Експорт даних сцени у вигляді зображення, з якого можна імпортувати пізніше." }, saveToDisk: { title: "Зберегти на диск", button: "Зберегти на диск", description: "Експорт даних сцени в файл, з якого можна імпортувати пізніше." }, excalidrawPlus: { title: "Excalidraw+", button: "Експортувати до Excalidraw+", description: "Зберегти сцену до робочого простору Excalidraw+." } }, modal: { loadFromFile: { title: "Завантажити з файлу", button: "Завантажити з файлу", description: "Завантаження з файлу <bold>замінить наявний вміст</bold>.<br></br>Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів." }, shareableLink: { title: "Завантажити з посилання", button: "Замінити мій контент", description: "Завантаження зовнішнього малюнка <bold>замінить ваш наявний вміст</bold>.<br></br>Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів." } } }, C0A = { title: "", button: "", description: "", syntax: "", preview: "" }, C8A = { labels: LuA, library: xuA, buttons: SuA, alerts: NuA, errors: RuA, toolBar: MuA, headings: YuA, hints: vuA, canvasError: HuA, errorSplash: KuA, roomDialog: JuA, errorDialog: ZuA, exportDialog: quA, helpDialog: WuA, clearCanvasDialog: juA, publishDialog: TuA, publishSuccessDialog: zuA, confirmDialog: PuA, imageExportDialog: OuA, encrypted: VuA, stats: XuA, toast: _uA, colors: $uA, welcomeScreen: A0A, colorPicker: u0A, overwriteConfirm: e0A, mermaid: C0A };
const B8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NuA,
  buttons: SuA,
  canvasError: HuA,
  clearCanvasDialog: juA,
  colorPicker: u0A,
  colors: $uA,
  confirmDialog: PuA,
  default: C8A,
  encrypted: VuA,
  errorDialog: ZuA,
  errorSplash: KuA,
  errors: RuA,
  exportDialog: quA,
  headings: YuA,
  helpDialog: WuA,
  hints: vuA,
  imageExportDialog: OuA,
  labels: LuA,
  library: xuA,
  mermaid: C0A,
  overwriteConfirm: e0A,
  publishDialog: TuA,
  publishSuccessDialog: zuA,
  roomDialog: JuA,
  stats: XuA,
  toast: _uA,
  toolBar: MuA,
  welcomeScreen: A0A
}, Symbol.toStringTag, { value: "Module" }));
var B0A = { paste: "Dán", pasteAsPlaintext: "Dán kiểu văn bản thuần", pasteCharts: "Dán biểu đồ", selectAll: "Chọn tất cả", multiSelect: "Thêm mới vào Select", moveCanvas: "Di chuyển canvas", cut: "Cắt", copy: "Sao chép", copyAsPng: "Sao chép vào bộ nhớ tạm dưới dạng PNG", copyAsSvg: "Sao chép vào bộ nhớ tạm dưới dạng SVG", copyText: "Sao chép vào bộ nhớ tạm dưới dạng chữ", copySource: "", convertToCode: "", bringForward: "Đưa ra trước", sendToBack: "Hạ xuống dưới", bringToFront: "Đưa ra đầu tiên", sendBackward: "Hạ xuống cuối", delete: "Xóa", copyStyles: "Sao chép định dạng", pasteStyles: "Dán định dạng", stroke: "Nét", background: "Nền", fill: "Fill", strokeWidth: "Độ dày nét", strokeStyle: "Kiểu nét", strokeStyle_solid: "Khối", strokeStyle_dashed: "Gạch ngang", strokeStyle_dotted: "Nhiều chấm", sloppiness: "Hoa văn nét", opacity: "Độ trong suốt", textAlign: "Căn chỉnh văn bản", edges: "Cạnh", sharp: "Nhọn", round: "Tròn", arrowheads: "Đầu mũi tên", arrowhead_none: "Không", arrowhead_arrow: "Mũi tên", arrowhead_bar: "Thanh", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "Tam giác", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "Cỡ chữ", fontFamily: "Phông chữ", addWatermark: 'Làm với Excalidraw"', handDrawn: "Vẽ tay", normal: "Bình thường", code: "Mã", small: "Nhỏ", medium: "Vừa", large: "Lớn", veryLarge: "Rất lớn", solid: "Đặc", hachure: "Nét gạch gạch", zigzag: "Zigzag", crossHatch: "Nét gạch chéo", thin: "Mỏng", bold: "In đậm", left: "Trái", center: "Giữa", right: "Phải", extraBold: "Nét siêu đậm", architect: "Kiến trúc sư", artist: "Nghệ sỹ", cartoonist: "Hoạt hình", fileTitle: "Tên tập tin", colorPicker: "Chọn màu", canvasColors: "Đã dùng trên canvas", canvasBackground: "Nền canvas", drawingCanvas: "Canvas vẽ", layers: "Lớp", actions: "Chức năng", language: "Ngôn ngữ", liveCollaboration: "Hợp tác trực tiếp...", duplicateSelection: "Tạo bản sao", untitled: "Không có tiêu đề", name: "Tên", yourName: "Tên của bạn", madeWithExcalidraw: "Làm với Excalidraw", group: "Gộp nhóm lại lựa chọn", ungroup: "Tách nhóm lựa chọn", collaborators: "Cộng tác viên", showGrid: "Hiển thị lưới", addToLibrary: "Thêm vào thư viện", removeFromLibrary: "Xóa khỏi thư viện", libraryLoadingMessage: "Đang tải thư viện…", libraries: "Xem thư viện", loadingScene: "Đang tải về…", align: "Căn chỉnh", alignTop: "Căn trên", alignBottom: "Căn dưới", alignLeft: "Canh trái", alignRight: "Canh phải", centerVertically: "Giữa theo chiều dọc", centerHorizontally: "Giữa theo chiều ngang", distributeHorizontally: "Phân bố theo chiều ngang", distributeVertically: "Phân bố theo chiều dọc", flipHorizontal: "Lật ngang", flipVertical: "Lật dọc", viewMode: "Chế độ xem", share: "Chia sẻ", showStroke: "Hiển thị chọn màu", showBackground: "Hiện thị chọn màu nền", toggleTheme: "", personalLib: "Thư viện cá nhân", excalidrawLib: "Thư viện Excalidraw", decreaseFontSize: "Giảm cỡ chữ", increaseFontSize: "Tăng cỡ chữ", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "Sửa liên kết", editEmbed: "", create: "Tạo liên kết", createEmbed: "", label: "Liên kết", labelEmbed: "", empty: "" }, lineEditor: { edit: "Điều chỉnh nét", exit: "Thoát chỉnh nét" }, elementLock: { lock: "Khoá", unlock: "Mở khoá", lockAll: "Khóa tất cả", unlockAll: "Mở khóa tất cả" }, statusPublished: "Đã đăng tải", sidebarLock: "Giữ thanh bên luôn mở", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, g0A = { noItems: "Chưa có món nào...", hint_emptyLibrary: "Chọn một món trên canvas để thêm nó vào đây, hoặc cài đặt thư viện từ kho lưu trữ công cộng, ở bên dưới.", hint_emptyPrivateLibrary: "Chọn một món trên canvas để thêm nó vào đây." }, t0A = { clearReset: "Reset canvas", exportJSON: "Xuất ra tập tin", exportImage: "Xuất file ảnh...", export: "Lưu vào...", copyToClipboard: "Sao chép vào bộ nhớ tạm", save: "Lưu vào tập tin hiện tại", saveAs: "Lưu thành", load: "Mở", getShareableLink: "Tạo liên kết để chia sẻ", close: "Đóng", selectLanguage: "Chọn ngôn ngữ", scrollBackToContent: "Cuộn về nội dung chính", zoomIn: "Phóng to", zoomOut: "Thu nhỏ", resetZoom: "Đặt lại thu phóng", menu: "Bảng chọn", done: "Xong", edit: "Chỉnh sửa", undo: "Hoàn tác", redo: "Làm lại", resetLibrary: "", createNewRoom: "Tạo phòng mới", fullScreen: "Toàn màn hình", darkMode: "Chế độ tối", lightMode: "Chế độ sáng", zenMode: "Chế độ zen", objectsSnapMode: "", exitZenMode: "Thoát chể độ zen", cancel: "Hủy", clear: "Làm sạch", remove: "Xóa", embed: "", publishLibrary: "Đăng tải", submit: "Gửi", confirm: "Xác nhận", embeddableInteractionButton: "" }, i0A = { clearReset: "Điều này sẽ dọn hết canvas. Bạn có chắc không?", couldNotCreateShareableLink: "Không thể tạo đường dẫn chia sẻ.", couldNotCreateShareableLinkTooBig: "Không thể tạo đường dẫn chia sẻ: bản vẽ quá lớn", couldNotLoadInvalidFile: "Không thể load tập tin không hợp lệ", importBackendFailed: "", cannotExportEmptyCanvas: "Không thể xuất canvas trống.", couldNotCopyToClipboard: "", decryptFailed: "Không thể giải mã dữ liệu.", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: `Dừng phiên sẽ ghi đè lên bản vẽ được lưu trữ cục bộ trước đó của bạn. Bạn có chắc không?

(Nếu bạn muốn giữ bản vẽ cục bộ của mình, chỉ cần đóng tab trình duyệt.)`, errorAddingToLibrary: "Không thể thêm món vào thư viện", errorRemovingFromLibrary: "Không thể xoá món khỏi thư viện", confirmAddLibrary: "Hình {{numShapes}} sẽ được thêm vào thư viện. Bạn chắc chứ?", imageDoesNotContainScene: "Hình ảnh này dường như không chứa bất kỳ dữ liệu cảnh nào. Bạn đã bật tính năng nhúng cảnh khi xuất chưa?", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "Xoá {{count}} món từ thư viện?", invalidEncryptionKey: "Khóa mã hóa phải có 22 ký tự. Hợp tác trực tiếp bị vô hiệu hóa.", collabOfflineWarning: `Không có kết nối internet.
Thay đổi của bạn sẽ không được lưu!` }, E0A = { unsupportedFileType: "Loại tập tin không được hỗ trợ.", imageInsertError: "Không thể thêm ảnh. Hãy thử lại sau...", fileTooBig: "Tệp tin quá lớn. Dung lượng tối đa cho phép là {{maxSize}}.", svgImageInsertError: "Không thể thêm ảnh SVG. Mã SVG có vẻ sai.", failedToFetchImage: "", invalidSVGString: "SVG không hợp lệ.", cannotResolveCollabServer: "Không thể kết nối với máy chủ hợp tác. Hãy tải lại trang và thử lại.", importLibraryError: "Không thể tải thư viện", collabSaveFailed: "Không thể lưu vào cơ sở dữ liệu. Nếu vấn đề tiếp tục xảy ra, bạn nên lưu tệp vào máy để đảm bảo bạn không bị mất công việc.", collabSaveFailed_sizeExceeded: "Không thể lưu vào cơ sở dữ liệu, canvas có vẻ quá lớn. Bạn nên lưu tệp cục bộ để đảm bảo bạn không bị mất công việc.", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, a0A = { selection: "Lựa chọn", image: "Chèn ảnh", rectangle: "Hình chữ nhật", diamond: "Kim cương", ellipse: "Hình elíp", arrow: "Mũi tên", line: "Đường kẻ", freedraw: "Vẽ", text: "Văn bản", library: "Thư viện", lock: "Giữ dụng cũ hiện tại sau khi vẽ", penMode: "Chế độ bút vẽ - ngăn ngừa chạm nhầm", link: "Thêm/ Chỉnh sửa liên kết cho hình được chọn", eraser: "Xóa", frame: "", magicframe: "", embeddable: "", laser: "", hand: "Tay kéo", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, I0A = { canvasActions: "Hành động canvas", selectedShapeActions: "Các hành động cho hình dạng đã chọn", shapes: "Các hình khối" }, o0A = { canvasPanning: "Để di chuyển canvas, giữ con lăn chuột hoặc phím cách trong khi kéo, hoặc sử dụng công cụ cầm tay", linearElement: "Ấn để bắt đầu nhiểm điểm vẽ, kéo để vẽ một đường thẳng", freeDraw: "Ấn bà kéo, thả khi bạn xong", text: "Mẹo: bạn có thể thêm văn bản tại bất cứ đâu bằng cách ấn hai lần bằng tool lựa chọn", embeddable: "", text_selected: "Ấn 2 lần hoặc nhấn ENTER để chỉnh văn bản", text_editing: "Nhấn Escape hoặc Ctrl/Cmd+ENTER để hoàn thành chỉnh sửa", linearElementMulti: "Nhấn vào điểm cuối hoặc nhấn Escape hoặc Enter để kết thúc", lockAngle: "Bạn có thể chỉnh lại góc bằng cách giữ phím SHIFT", resize: `Bạn có thể chỉnh tỷ lệ bằng cách giữ SHIFT khi chỉnh kích cỡ,
giữ ALT để chỉnh kích cỡ từ trung tâm`, resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: 'Tính năng này có thể được bật bằng cách đặt cờ "dom.events.asyncClipboard.clipboardItem" thành "true". Để thay đổi cờ trình duyệt trong Firefox, hãy truy cập trang "about:config".', disableSnapping: "" }, Q0A = { cannotShowPreview: "Không thể xem trước", canvasTooBig: "Canvas này có thể hơi lớn.", canvasTooBigTip: "Mẹo: hãy thử di chuyển các elements nhất lại gần nhau hơn một chút." }, n0A = { headingMain: "", clearCanvasMessage: "Nếu không tải lại được, hãy thử <button>dọn canvas.</button>", clearCanvasCaveat: " Điều này sẽ dẫn đến mất dữ liệu bạn đã làm ", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, r0A = { desc_intro: "", desc_privacy: "", button_startSession: "", button_stopSession: "", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, s0A = { title: "" }, l0A = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, c0A = { blog: "", click: "", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, d0A = { title: "Dọn canvas" }, D0A = { title: "", itemName: "Tên món", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "Từng món trong thư viện phải có tên riêng để có thể lọc. Các món thư viện sau đây sẽ thêm:", atleastOneLibItem: "Vui lòng chọn ít nhất một món thư viện để bắt đầu", republishWarning: "Lưu ý: một số món đã chọn được đánh dấu là đã xuất bản/đã gửi. Bạn chỉ nên gửi lại các món khi cập nhật thư viện hiện có hoặc gửi." }, h0A = { title: "", content: "" }, w0A = { resetLibrary: "", removeItemsFromLib: "Xóa món đã chọn khỏi thư viện" }, F0A = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, p0A = { tooltip: "", link: "" }, m0A = { angle: "", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "" }, k0A = { addedToLibrary: "", copyStyles: "", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "canvas", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, y0A = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, b0A = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, U0A = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, G0A = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, f0A = { title: "", button: "", description: "", syntax: "", preview: "" }, g8A = { labels: B0A, library: g0A, buttons: t0A, alerts: i0A, errors: E0A, toolBar: a0A, headings: I0A, hints: o0A, canvasError: Q0A, errorSplash: n0A, roomDialog: r0A, errorDialog: s0A, exportDialog: l0A, helpDialog: c0A, clearCanvasDialog: d0A, publishDialog: D0A, publishSuccessDialog: h0A, confirmDialog: w0A, imageExportDialog: F0A, encrypted: p0A, stats: m0A, toast: k0A, colors: y0A, welcomeScreen: b0A, colorPicker: U0A, overwriteConfirm: G0A, mermaid: f0A };
const t8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: i0A,
  buttons: t0A,
  canvasError: Q0A,
  clearCanvasDialog: d0A,
  colorPicker: U0A,
  colors: y0A,
  confirmDialog: w0A,
  default: g8A,
  encrypted: p0A,
  errorDialog: s0A,
  errorSplash: n0A,
  errors: E0A,
  exportDialog: l0A,
  headings: I0A,
  helpDialog: c0A,
  hints: o0A,
  imageExportDialog: F0A,
  labels: B0A,
  library: g0A,
  mermaid: f0A,
  overwriteConfirm: G0A,
  publishDialog: D0A,
  publishSuccessDialog: h0A,
  roomDialog: r0A,
  stats: m0A,
  toast: k0A,
  toolBar: a0A,
  welcomeScreen: b0A
}, Symbol.toStringTag, { value: "Module" }));
var L0A = { paste: "粘贴", pasteAsPlaintext: "粘贴为纯文本", pasteCharts: "粘贴图表", selectAll: "全部选中", multiSelect: "添加元素到选区", moveCanvas: "移动画布", cut: "剪切", copy: "拷贝", copyAsPng: "复制为 PNG 到剪贴板", copyAsSvg: "复制为 SVG 到剪贴板", copyText: "复制文本到剪贴板", copySource: "复制源码到剪贴板", convertToCode: "转换成代码", bringForward: "上移一层", sendToBack: "置于底层", bringToFront: "置于顶层", sendBackward: "下移一层", delete: "删除", copyStyles: "拷贝样式", pasteStyles: "粘贴样式", stroke: "描边", background: "背景", fill: "填充", strokeWidth: "描边宽度", strokeStyle: "边框样式", strokeStyle_solid: "实线", strokeStyle_dashed: "虚线", strokeStyle_dotted: "点虚线", sloppiness: "线条风格", opacity: "透明度", textAlign: "文本对齐", edges: "边角", sharp: "尖锐", round: "圆润", arrowheads: "端点", arrowhead_none: "无", arrowhead_arrow: "箭头", arrowhead_bar: "条状", arrowhead_circle: "圆点", arrowhead_circle_outline: "圆点（空心）", arrowhead_triangle: "三角箭头", arrowhead_triangle_outline: "三角箭头（空心）", arrowhead_diamond: "菱形", arrowhead_diamond_outline: "菱形（空心）", fontSize: "字体大小", fontFamily: "字体", addWatermark: "添加 “使用 Excalidraw 创建” 水印", handDrawn: "手写", normal: "普通", code: "代码", small: "小", medium: "中", large: "大", veryLarge: "加大", solid: "实心", hachure: "线条", zigzag: "之字形折线", crossHatch: "交叉线条", thin: "细", bold: "粗", left: "左对齐", center: "居中", right: "右对齐", extraBold: "特粗", architect: "朴素", artist: "艺术", cartoonist: "漫画家", fileTitle: "文件名", colorPicker: "取色器", canvasColors: "画布上的", canvasBackground: "画布背景", drawingCanvas: "绘制 Canvas", layers: "图层", actions: "操作", language: "语言", liveCollaboration: "实时协作...", duplicateSelection: "复制", untitled: "无标题", name: "名字", yourName: "您的姓名", madeWithExcalidraw: "使用 Excalidraw 创建", group: "编组", ungroup: "解除编组", collaborators: "协作者", showGrid: "显示网格", addToLibrary: "添加到素材库中", removeFromLibrary: "从素材库中移除", libraryLoadingMessage: "正在加载素材库…", libraries: "浏览素材库", loadingScene: "正在加载绘图…", align: "对齐", alignTop: "顶部对齐", alignBottom: "底端对齐", alignLeft: "左对齐", alignRight: "右对齐", centerVertically: "垂直居中", centerHorizontally: "水平居中", distributeHorizontally: "水平等距分布", distributeVertically: "垂直等距分布", flipHorizontal: "水平翻转", flipVertical: "垂直翻转", viewMode: "查看模式", share: "分享", showStroke: "显示描边颜色选择器", showBackground: "显示背景颜色选择器", toggleTheme: "切换主题", personalLib: "个人素材库", excalidrawLib: "Excalidraw 素材库", decreaseFontSize: "缩小字体大小", increaseFontSize: "放大字体大小", unbindText: "取消文本绑定", bindText: "将文本绑定到容器", createContainerFromText: "将文本包围在容器中", link: { edit: "编辑链接", editEmbed: "编辑链接与嵌入", create: "新建链接", createEmbed: "创建链接与嵌入", label: "链接", labelEmbed: "链接与嵌入", empty: "未设定链接" }, lineEditor: { edit: "编辑线条", exit: "退出线条编辑" }, elementLock: { lock: "锁定", unlock: "解除锁定", lockAll: "全部锁定", unlockAll: "全部解锁" }, statusPublished: "已发布", sidebarLock: "侧边栏常驻", selectAllElementsInFrame: "选择画框中的所有元素", removeAllElementsFromFrame: "分离出画框中的所有元素", eyeDropper: "从画布上取色", textToDiagram: "文字至图表", prompt: "Prompt" }, x0A = { noItems: "尚未添加任何项目……", hint_emptyLibrary: "选中画布上的项目添加到此处，或从下方的公共素材库中导入。", hint_emptyPrivateLibrary: "选中画布上的项目添加到此处。" }, S0A = { clearReset: "重置画布", exportJSON: "导出为文件", exportImage: "导出图片...", export: "保存到...", copyToClipboard: "复制到剪贴板", save: "保存至当前文件", saveAs: "保存为", load: "打开", getShareableLink: "获取共享链接", close: "关闭", selectLanguage: "选择语言", scrollBackToContent: "滚动回到内容", zoomIn: "放大", zoomOut: "缩小", resetZoom: "重置缩放", menu: "菜单", done: "完成", edit: "编辑", undo: "撤销", redo: "重做", resetLibrary: "重置素材库", createNewRoom: "新建会议室", fullScreen: "全屏", darkMode: "深色模式", lightMode: "浅色模式", zenMode: "禅模式", objectsSnapMode: "吸附至对象", exitZenMode: "退出禅模式", cancel: "取消", clear: "清除", remove: "删除", embed: "切换嵌入", publishLibrary: "发布", submit: "提交", confirm: "确定", embeddableInteractionButton: "点击以开始交互" }, N0A = { clearReset: "这将会清除整个画布。您是否要继续?", couldNotCreateShareableLink: "无法创建共享链接", couldNotCreateShareableLinkTooBig: "无法创建可共享链接：画布过大", couldNotLoadInvalidFile: "无法加载无效的文件", importBackendFailed: "从后端导入失败。", cannotExportEmptyCanvas: "无法导出空白画布。", couldNotCopyToClipboard: "无法复制到剪贴板。", decryptFailed: "无法解密数据。", uploadedSecurly: "上传已被端到端加密保护，这意味着 Excalidraw 的服务器和第三方都无法读取内容。", loadSceneOverridePrompt: "加载外部绘图将取代您现有的内容。您想要继续吗？", collabStopOverridePrompt: `停止会话将覆盖您先前本地存储的绘图。 您确定吗？

(如果您想保持本地绘图，只需关闭浏览器选项卡。)`, errorAddingToLibrary: "无法将项目添加到素材库中", errorRemovingFromLibrary: "无法从素材库中移除项目", confirmAddLibrary: "这将添加 {{numShapes}} 个形状到您的素材库中。您确定吗？", imageDoesNotContainScene: "此图像似乎不包含任何画布数据。您是否在导出时启用了画布嵌入功能？", cannotRestoreFromImage: "无法从此图像文件恢复画布", invalidSceneUrl: "无法从提供的 URL 导入场景。它或者格式不正确，或者不包含有效的 Excalidraw JSON 数据。", resetLibrary: "这将会清除你的素材库。你确定要这么做吗？", removeItemsFromsLibrary: "确定要从素材库中删除 {{count}} 个项目吗？", invalidEncryptionKey: "密钥必须包含22个字符。实时协作已被禁用。", collabOfflineWarning: `无网络连接。
您的改动将不会被保存！` }, R0A = { unsupportedFileType: "不支持的文件格式。", imageInsertError: "无法插入图像。请稍后再试……", fileTooBig: "文件过大。最大允许的大小为 {{maxSize}}。", svgImageInsertError: "无法插入 SVG 图像。该 SVG 标记似乎是无效的。", failedToFetchImage: "无法获取图片。", invalidSVGString: "无效的 SVG。", cannotResolveCollabServer: "无法连接到实时协作服务器。请重新加载页面并重试。", importLibraryError: "无法加载素材库", collabSaveFailed: "无法保存到后端数据库。如果问题持续存在，您应该保存文件到本地，以确保您的工作不会丢失。", collabSaveFailed_sizeExceeded: "无法保存到后端数据库，画布似乎过大。您应该保存文件到本地，以确保您的工作不会丢失。", imageToolNotSupported: "图片已被禁用。", brave_measure_text_error: { line1: "您似乎正在使用 Brave 浏览器并启用了<bold>积极阻止指纹识别</bold>的设置。", line2: "这可能会破坏绘图中的 <bold>文本元素</bold>。", line3: "我们强烈建议禁用此设置。您可以按照<link>这些步骤</link>来设置。", line4: "如果禁用此设置无法修复文本元素的显示，请在 GitHub 上提交一个 <issueLink>issue</issueLink> ，或者在 <discordLink>Discord</discordLink> 上反馈" }, libraryElementTypeError: { embeddable: "嵌入的元素不能被添加到素材库。", iframe: "不能将 IFrame 元素添加到素材库中。", image: "我们不久将支持添加图片到素材库" }, asyncPasteFailedOnRead: "无法粘贴（无法读取系统剪贴板）。", asyncPasteFailedOnParse: "无法粘贴。", copyToSystemClipboardFailed: "无法复制到剪贴板。" }, M0A = { selection: "选择", image: "插入图像", rectangle: "矩形", diamond: "菱形", ellipse: "椭圆", arrow: "箭头", line: "线条", freedraw: "自由书写", text: "文字", library: "素材库", lock: "绘制后保持所选的工具栏状态", penMode: "笔模式 – 避免误触", link: "为选中的形状添加/更新链接", eraser: "橡皮", frame: "画框工具", magicframe: "线框图至代码", embeddable: "嵌入网页", laser: "激光笔", hand: "抓手（平移工具）", extraTools: "更多工具", mermaidToExcalidraw: "Mermaid 至 Excalidraw", magicSettings: "AI 设置" }, Y0A = { canvasActions: "画布动作", selectedShapeActions: "选定形状操作", shapes: "形状" }, v0A = { canvasPanning: "要移动画布，请按住鼠标滚轮或空格键同时拖拽鼠标，或使用抓手工具。", linearElement: "点击创建多个点 拖动创建直线", freeDraw: "点击并拖动，完成时松开", text: "提示：您也可以使用选择工具双击任意位置来添加文字", embeddable: "点击并拖动以创建嵌入网页", text_selected: "双击或按回车键以编辑文本", text_editing: "按下 Escape 或 CtrlOrCmd+ENTER 完成编辑", linearElementMulti: "点击最后一个点或按下 Esc/Enter 来完成", lockAngle: "可以按住 Shift 来约束角度", resize: `您可以按住SHIFT来限制比例大小，
按住ALT来调整中心大小`, resizeImage: `按住SHIFT可以自由缩放，
按住ALT可以从中间缩放`, rotate: "旋转时可以按住 Shift 来约束角度", lineEditor_info: "按住 CtrlOrCmd 并双击或按 CtrlOrCmd + Enter 来编辑点", lineEditor_pointSelected: "按下 Delete 移除点，CtrlOrCmd+D 以复制，拖动以移动", lineEditor_nothingSelected: `选择要编辑的点 (按住 SHIFT 选择多个)，
或按住 Alt 并点击以添加新点`, placeImage: "点击放置图像，或者点击并拖动以手动设置图像大小", publishLibrary: "发布您自己的素材库", bindTextToElement: "按下 Enter 以添加文本", deepBoxSelect: "按住 CtrlOrCmd 以深度选择，并避免拖拽", eraserRevert: "按住 Alt 以反选被标记删除的元素", firefox_clipboard_write: "将高级配置首选项“dom.events.asyncClipboard.clipboardItem”设置为“true”可以启用此功能。要更改 Firefox 的高级配置首选项，请前往“about:config”页面。", disableSnapping: "按住 Ctrl 或 Cmd 以禁用吸附" }, H0A = { cannotShowPreview: "无法显示预览", canvasTooBig: "画布可能过大。", canvasTooBigTip: "提示：尝试将最远的元素移动到和其它元素更近一些。" }, K0A = { headingMain: "遇到异常。请尝试<button>重新加载页面</button>。", clearCanvasMessage: "如果重新加载页面无效，请尝试<button>清除画布</button>。", clearCanvasCaveat: "这会造成当前工作丢失", trackedToSentry: "标识符为{{eventId}}的错误已在我们的系统中被记录", openIssueMessage: "我们非常谨慎地处理错误信息，您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密，请考虑在我们的 <button>bug 跟踪系统</button>上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。", sceneContent: "画布内容:" }, J0A = { desc_intro: "你可以邀请其他人到目前的画面中与你协作。", desc_privacy: "别担心，该会话使用端到端加密，无论绘制什么都将保持私密，甚至连我们的服务器也无法查看。", button_startSession: "开始会话", button_stopSession: "结束会话", desc_inProgressIntro: "实时协作会话进行中。", desc_shareLink: "分享此链接给你要协作的用户", desc_exitSession: "停止会话将中断您与房间的连接，但您依然可以在本地继续使用画布。请注意，这不会影响到其他用户，他们仍可以在他们的版本上继续协作。", shareTitle: "加入 Excalidraw 实时协作会话" }, Z0A = { title: "错误" }, q0A = { disk_title: "保存到本地", disk_details: "将画布数据导出为文件，以便以后导入", disk_button: "保存为文件", link_title: "分享链接", link_details: "导出为只读链接。", link_button: "导出链接", excalidrawplus_description: "将画布保存到您的 Excalidraw+ 工作区。", excalidrawplus_button: "导出", excalidrawplus_exportError: "暂时无法导出到 Excalidraw+ ..." }, W0A = { blog: "浏览我们的博客", click: "单击", deepSelect: "深度选择", deepBoxSelect: "在方框内深度选择并避免拖拽", curvedArrow: "曲线箭头", curvedLine: "曲线", documentation: "文档", doubleClick: "双击", drag: "拖动", editor: "编辑器", editLineArrowPoints: "编辑线条或箭头的点", editText: "添加或编辑文本", github: "发现问题？提交反馈", howto: "帮助文档", or: "或", preventBinding: "禁用箭头吸附", tools: "工具", shortcuts: "快捷键列表", textFinish: "完成编辑 (文本编辑器)", textNewLine: "添加新行(文本编辑器)", title: "帮助", view: "视图", zoomToFit: "缩放以适应所有元素", zoomToSelection: "缩放到选区", toggleElementLock: "锁定/解锁", movePageUpDown: "上下移动页面", movePageLeftRight: "左右移动页面" }, j0A = { title: "清除画布" }, T0A = { title: "发布素材库", itemName: "项目名称", authorName: "作者名", githubUsername: "GitHub 用户名", twitterUsername: "Twitter 用户名", libraryName: "名称", libraryDesc: "简介", website: "网址", placeholder: { authorName: "您的名字或用户名", libraryName: "素材库名称", libraryDesc: "介绍您的素材库，让人们了解其用途", githubHandle: "GitHub 用户名（可选），填写后，您可以编辑已提交待审的素材库", twitterHandle: "Twitter 用户名（可选），填写后，当我们在Twitter发布推广信息时便可提及您", website: "您个人网站的或任意的链接（可选）" }, errors: { required: "必填", website: "输入一个有效的URL" }, noteDescription: "提交后，您的素材库将被包含在<link>公共素材库广场</link>以供其他人在绘图中使用。", noteGuidelines: "提交的素材库需先经人工审核。在提交之前，请先阅读<link>指南</link> 。后续沟通和对库的修改需要 GitHub 账号，但这不是必须的。", noteLicense: "提交即表明您已同意素材库将遵循 <link>MIT 许可证</link>，简而言之，任何人都可以不受限制地使用它们。", noteItems: "素材库中每个项目都有各自的名称以供筛选。以下项目将被包含：", atleastOneLibItem: "请选择至少一个素材库以开始", republishWarning: "注意：部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。" }, z0A = { title: "素材库已提交", content: "谢谢你 {{authorName}}。您的素材库已被提交审核。请点击<link>此处</link>跟进此次提交的状态" }, P0A = { resetLibrary: "重置素材库", removeItemsFromLib: "从素材库中删除选中的项目" }, O0A = { header: "导出图片", label: { withBackground: "背景", onlySelected: "仅选中", darkMode: "深色模式", embedScene: "包含画布数据", scale: "缩放比例", padding: "内边距" }, tooltip: { embedScene: `画布数据将被保存到导出的 PNG/SVG 文件，以便恢复。
将会增加导出文件的大小。` }, title: { exportToPng: "导出为 PNG", exportToSvg: "导出为 SVG", copyPngToClipboard: "复制 PNG 到剪切板" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "复制到剪贴板" } }, V0A = { tooltip: "您的绘图采用端到端加密，其内容对于 Excalidraw 服务器是不可见的。", link: "Excalidraw 中关于端到端加密的博客" }, X0A = { angle: "角度", element: "元素", elements: "元素", height: "高度", scene: "画布", selected: "选中", storage: "存储", title: "详细统计信息", total: "总计", version: "版本", versionCopy: "点击复制", versionNotAvailable: "版本不可用", width: "宽度" }, _0A = { addedToLibrary: "添加到素材库中", copyStyles: "样式已拷贝。", copyToClipboard: "已复制到剪切板。", copyToClipboardAsPng: `已将 {{exportSelection}} 作为 PNG 复制到剪贴板
({{exportColorScheme}})`, fileSaved: "文件已保存。", fileSavedToFilename: "保存到 {filename}", canvas: "画布", selection: "所选项", pasteAsSingleElement: `使用 {{shortcut}} 粘贴为单个元素，
或粘贴到现有的文本编辑器里`, unableToEmbed: "目前不允许嵌入此网址。请在 GitHub 上提 issue 请求将此网址加入白名单", unrecognizedLinkFormat: "您嵌入的链接不符合格式要求。请尝试粘贴源网站提供的“嵌入 (embed)”字符串" }, $0A = { transparent: "透明", black: "黑", white: "白", red: "红", pink: "粉红", grape: "紫红", violet: "蓝紫", gray: "灰", blue: "蓝", cyan: "青", teal: "蓝绿", green: "绿", yellow: "黄", orange: "橙", bronze: "古铜" }, AeA = { app: { center_heading: "您的所有数据都储存在浏览器本地。", center_heading_plus: "是否前往 Excalidraw+ ？", menuHint: "导出、首选项、语言……" }, defaults: { menuHint: "导出、首选项……", center_heading: "图，化繁为简。", toolbarHint: "选择工具并开始绘图！", helpHint: "快捷键和帮助" } }, ueA = { mostUsedCustomColors: "常用自定义颜色", colors: "颜色", shades: "色调明暗", hexCode: "十六进制值", noShades: "此颜色没有可用的明暗变化" }, eeA = { action: { exportToImage: { title: "导出为图片", button: "导出为图片", description: "将画布数据导出为图片，以便以后导入。" }, saveToDisk: { title: "保存到本地", button: "保存到本地", description: "将画布数据导出为文件，以便以后导入。" }, excalidrawPlus: { title: "Excalidraw+", button: "导出到 Excalidraw+", description: "将画布保存到您的 Excalidraw+ 工作区。" } }, modal: { loadFromFile: { title: "从文件加载", button: "从文件加载", description: "从文件加载将<bold>替换您现有的内容</bold>。<br></br>您可以先使用下列方式备份您的绘图。" }, shareableLink: { title: "从链接加载", button: "替换我的内容", description: "加载外部绘图将<bold>替换您现有的内容</bold>。<br></br>您可以先使用下列方式备份您的绘图。" } } }, CeA = { title: "Mermaid 至 Excalidraw", button: "插入", description: "目前仅支持<flowchartLink>流程图</flowchartLink>、<sequenceLink>序列图</sequenceLink>和<classLink>类图</classLink>。其他类型在 Excalidraw 中将以图像呈现。", syntax: "Mermaid 语法", preview: "预览" }, i8A = { labels: L0A, library: x0A, buttons: S0A, alerts: N0A, errors: R0A, toolBar: M0A, headings: Y0A, hints: v0A, canvasError: H0A, errorSplash: K0A, roomDialog: J0A, errorDialog: Z0A, exportDialog: q0A, helpDialog: W0A, clearCanvasDialog: j0A, publishDialog: T0A, publishSuccessDialog: z0A, confirmDialog: P0A, imageExportDialog: O0A, encrypted: V0A, stats: X0A, toast: _0A, colors: $0A, welcomeScreen: AeA, colorPicker: ueA, overwriteConfirm: eeA, mermaid: CeA };
const E8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: N0A,
  buttons: S0A,
  canvasError: H0A,
  clearCanvasDialog: j0A,
  colorPicker: ueA,
  colors: $0A,
  confirmDialog: P0A,
  default: i8A,
  encrypted: V0A,
  errorDialog: Z0A,
  errorSplash: K0A,
  errors: R0A,
  exportDialog: q0A,
  headings: Y0A,
  helpDialog: W0A,
  hints: v0A,
  imageExportDialog: O0A,
  labels: L0A,
  library: x0A,
  mermaid: CeA,
  overwriteConfirm: eeA,
  publishDialog: T0A,
  publishSuccessDialog: z0A,
  roomDialog: J0A,
  stats: X0A,
  toast: _0A,
  toolBar: M0A,
  welcomeScreen: AeA
}, Symbol.toStringTag, { value: "Module" }));
var BeA = { paste: "貼上", pasteAsPlaintext: "", pasteCharts: "貼上圖表", selectAll: "全選", multiSelect: "多重選取", moveCanvas: "移動畫布", cut: "剪下", copy: "複製", copyAsPng: "以 PNG 格式複製", copyAsSvg: "以 SVG 格式複製", copyText: "", copySource: "", convertToCode: "", bringForward: "往上一層移動", sendToBack: "移到最底層", bringToFront: "移到最上層", sendBackward: "往下一層移動", delete: "刪除", copyStyles: "複製樣式", pasteStyles: "套用樣式", stroke: "筆跡顏色", background: "填充顏色", fill: "背景樣式", strokeWidth: "筆跡寬度", strokeStyle: "筆跡線條", strokeStyle_solid: "實線", strokeStyle_dashed: "虛線（較密）", strokeStyle_dotted: "虛線（較疏）", sloppiness: "筆跡風格", opacity: "透明度", textAlign: "文字對齊", edges: "邊角樣式", sharp: "銳角", round: "圓角", arrowheads: "箭嘴", arrowhead_none: "無箭嘴", arrowhead_arrow: "普通箭嘴", arrowhead_bar: "平頭條狀", arrowhead_circle: "", arrowhead_circle_outline: "", arrowhead_triangle: "三角箭嘴", arrowhead_triangle_outline: "", arrowhead_diamond: "", arrowhead_diamond_outline: "", fontSize: "字型大小", fontFamily: "字體", addWatermark: "加入「使用 Excalidraw 製圖」水印", handDrawn: "手繪體", normal: "電腦字體", code: "等寬體", small: "細", medium: "中", large: "大", veryLarge: "勁大", solid: "實心", hachure: "斜線", zigzag: "", crossHatch: "交叉格仔", thin: "幼", bold: "粗", left: "靠左對齊", center: "置中對齊", right: "靠右對齊", extraBold: "勁粗", architect: "手繪風格", artist: "藝術家風格", cartoonist: "卡通風格", fileTitle: "檔案名稱", colorPicker: "", canvasColors: "", canvasBackground: "畫布背景顏色", drawingCanvas: "畫布", layers: "圖層", actions: "動作", language: "🌏 語言", liveCollaboration: "", duplicateSelection: "製作副本", untitled: "未命名的作品", name: "", yourName: "你的名稱", madeWithExcalidraw: "使用 Excalidraw 製圖", group: "建立物件群組", ungroup: "取消物件群組", collaborators: "已連線的協作者", showGrid: "顯示網格", addToLibrary: "加入作品庫", removeFromLibrary: "從作品庫中移除", libraryLoadingMessage: "正在載入作品庫…", libraries: "瀏覽作品庫", loadingScene: "載入畫布中…", align: "物件對齊", alignTop: "水平置頂", alignBottom: "水平置底", alignLeft: "垂直靠左對齊", alignRight: "垂直靠右對齊", centerVertically: "垂直置中", centerHorizontally: "水平置中", distributeHorizontally: "左右等距", distributeVertically: "上下等距", flipHorizontal: "左右反轉", flipVertical: "上下反轉", viewMode: "唯讀模式", share: "", showStroke: "", showBackground: "", toggleTheme: "", personalLib: "", excalidrawLib: "", decreaseFontSize: "", increaseFontSize: "", unbindText: "", bindText: "", createContainerFromText: "", link: { edit: "", editEmbed: "", create: "", createEmbed: "", label: "", labelEmbed: "", empty: "" }, lineEditor: { edit: "", exit: "" }, elementLock: { lock: "", unlock: "", lockAll: "", unlockAll: "" }, statusPublished: "", sidebarLock: "", selectAllElementsInFrame: "", removeAllElementsFromFrame: "", eyeDropper: "", textToDiagram: "", prompt: "" }, geA = { noItems: "", hint_emptyLibrary: "", hint_emptyPrivateLibrary: "" }, teA = { clearReset: "清空畫布", exportJSON: "", exportImage: "", export: "", copyToClipboard: "", save: "", saveAs: "", load: "", getShareableLink: "", close: "", selectLanguage: "", scrollBackToContent: "", zoomIn: "", zoomOut: "", resetZoom: "", menu: "", done: "", edit: "", undo: "", redo: "", resetLibrary: "", createNewRoom: "", fullScreen: "", darkMode: "", lightMode: "", zenMode: "", objectsSnapMode: "", exitZenMode: "", cancel: "", clear: "", remove: "", embed: "", publishLibrary: "", submit: "", confirm: "", embeddableInteractionButton: "" }, ieA = { clearReset: "【‼️ 警告 ‼️ 無法復原的動作】你確定要清空呢塊畫布嗎？", couldNotCreateShareableLink: "", couldNotCreateShareableLinkTooBig: "", couldNotLoadInvalidFile: "", importBackendFailed: "", cannotExportEmptyCanvas: "無嘢可以匯出喎～畫吓嘢先？", couldNotCopyToClipboard: "", decryptFailed: "", uploadedSecurly: "", loadSceneOverridePrompt: "", collabStopOverridePrompt: "", errorAddingToLibrary: "", errorRemovingFromLibrary: "", confirmAddLibrary: "", imageDoesNotContainScene: "", cannotRestoreFromImage: "", invalidSceneUrl: "", resetLibrary: "", removeItemsFromsLibrary: "", invalidEncryptionKey: "", collabOfflineWarning: "" }, EeA = { unsupportedFileType: "", imageInsertError: "", fileTooBig: "", svgImageInsertError: "", failedToFetchImage: "", invalidSVGString: "", cannotResolveCollabServer: "", importLibraryError: "", collabSaveFailed: "", collabSaveFailed_sizeExceeded: "", imageToolNotSupported: "", brave_measure_text_error: { line1: "", line2: "", line3: "", line4: "" }, libraryElementTypeError: { embeddable: "", iframe: "", image: "" }, asyncPasteFailedOnRead: "", asyncPasteFailedOnParse: "", copyToSystemClipboardFailed: "" }, aeA = { selection: "", image: "", rectangle: "", diamond: "", ellipse: "", arrow: "", line: "", freedraw: "", text: "", library: "", lock: "", penMode: "", link: "", eraser: "", frame: "", magicframe: "", embeddable: "", laser: "", hand: "", extraTools: "", mermaidToExcalidraw: "", magicSettings: "" }, IeA = { canvasActions: "畫布動作", selectedShapeActions: "", shapes: "" }, oeA = { canvasPanning: "", linearElement: "", freeDraw: "", text: "", embeddable: "", text_selected: "", text_editing: "", linearElementMulti: "", lockAngle: "", resize: "", resizeImage: "", rotate: "", lineEditor_info: "", lineEditor_pointSelected: "", lineEditor_nothingSelected: "", placeImage: "", publishLibrary: "", bindTextToElement: "", deepBoxSelect: "", eraserRevert: "", firefox_clipboard_write: "", disableSnapping: "" }, QeA = { cannotShowPreview: "無法顯示預覽", canvasTooBig: "塊畫布太大啦，縮細啲先啦？", canvasTooBigTip: "" }, neA = { headingMain: "", clearCanvasMessage: "如果重新整理頁面都係睇唔到，你可以<button>清空畫布</button>", clearCanvasCaveat: "（注意：呢個動作會直接丟棄你嘅作品，並且無法復原）", trackedToSentry: "", openIssueMessage: "", sceneContent: "" }, reA = { desc_intro: "", desc_privacy: "", button_startSession: "", button_stopSession: "", desc_inProgressIntro: "", desc_shareLink: "", desc_exitSession: "", shareTitle: "" }, seA = { title: "" }, leA = { disk_title: "", disk_details: "", disk_button: "", link_title: "", link_details: "", link_button: "", excalidrawplus_description: "", excalidrawplus_button: "", excalidrawplus_exportError: "" }, ceA = { blog: "", click: "", deepSelect: "", deepBoxSelect: "", curvedArrow: "", curvedLine: "", documentation: "", doubleClick: "", drag: "", editor: "", editLineArrowPoints: "", editText: "", github: "", howto: "", or: "", preventBinding: "", tools: "", shortcuts: "", textFinish: "", textNewLine: "", title: "", view: "", zoomToFit: "", zoomToSelection: "", toggleElementLock: "", movePageUpDown: "", movePageLeftRight: "" }, deA = { title: "" }, DeA = { title: "", itemName: "", authorName: "", githubUsername: "", twitterUsername: "", libraryName: "", libraryDesc: "", website: "", placeholder: { authorName: "", libraryName: "", libraryDesc: "", githubHandle: "", twitterHandle: "", website: "" }, errors: { required: "", website: "" }, noteDescription: "", noteGuidelines: "", noteLicense: "", noteItems: "", atleastOneLibItem: "", republishWarning: "" }, heA = { title: "", content: "" }, weA = { resetLibrary: "", removeItemsFromLib: "" }, FeA = { header: "", label: { withBackground: "", onlySelected: "", darkMode: "", embedScene: "", scale: "", padding: "" }, tooltip: { embedScene: "" }, title: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" }, button: { exportToPng: "", exportToSvg: "", copyPngToClipboard: "" } }, peA = { tooltip: "", link: "" }, meA = { angle: "", element: "", elements: "", height: "", scene: "", selected: "", storage: "", title: "", total: "", version: "", versionCopy: "", versionNotAvailable: "", width: "" }, keA = { addedToLibrary: "", copyStyles: "", copyToClipboard: "", copyToClipboardAsPng: "", fileSaved: "", fileSavedToFilename: "", canvas: "畫布", selection: "", pasteAsSingleElement: "", unableToEmbed: "", unrecognizedLinkFormat: "" }, yeA = { transparent: "", black: "", white: "", red: "", pink: "", grape: "", violet: "", gray: "", blue: "", cyan: "", teal: "", green: "", yellow: "", orange: "", bronze: "" }, beA = { app: { center_heading: "", center_heading_plus: "", menuHint: "" }, defaults: { menuHint: "", center_heading: "", toolbarHint: "", helpHint: "" } }, UeA = { mostUsedCustomColors: "", colors: "", shades: "", hexCode: "", noShades: "" }, GeA = { action: { exportToImage: { title: "", button: "", description: "" }, saveToDisk: { title: "", button: "", description: "" }, excalidrawPlus: { title: "", button: "", description: "" } }, modal: { loadFromFile: { title: "", button: "", description: "" }, shareableLink: { title: "", button: "", description: "" } } }, feA = { title: "", button: "", description: "", syntax: "", preview: "" }, a8A = { labels: BeA, library: geA, buttons: teA, alerts: ieA, errors: EeA, toolBar: aeA, headings: IeA, hints: oeA, canvasError: QeA, errorSplash: neA, roomDialog: reA, errorDialog: seA, exportDialog: leA, helpDialog: ceA, clearCanvasDialog: deA, publishDialog: DeA, publishSuccessDialog: heA, confirmDialog: weA, imageExportDialog: FeA, encrypted: peA, stats: meA, toast: keA, colors: yeA, welcomeScreen: beA, colorPicker: UeA, overwriteConfirm: GeA, mermaid: feA };
const I8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: ieA,
  buttons: teA,
  canvasError: QeA,
  clearCanvasDialog: deA,
  colorPicker: UeA,
  colors: yeA,
  confirmDialog: weA,
  default: a8A,
  encrypted: peA,
  errorDialog: seA,
  errorSplash: neA,
  errors: EeA,
  exportDialog: leA,
  headings: IeA,
  helpDialog: ceA,
  hints: oeA,
  imageExportDialog: FeA,
  labels: BeA,
  library: geA,
  mermaid: feA,
  overwriteConfirm: GeA,
  publishDialog: DeA,
  publishSuccessDialog: heA,
  roomDialog: reA,
  stats: meA,
  toast: keA,
  toolBar: aeA,
  welcomeScreen: beA
}, Symbol.toStringTag, { value: "Module" }));
var LeA = { paste: "貼上", pasteAsPlaintext: "以純文字貼上", pasteCharts: "貼上圖表", selectAll: "全選", multiSelect: "將物件加入選取範圍", moveCanvas: "移動畫布", cut: "剪下", copy: "複製", copyAsPng: "以PNG格式儲存到剪貼板", copyAsSvg: "以SVG格式複製到剪貼板", copyText: "以文字格式複製至剪貼簿", copySource: "複製來源至剪貼簿", convertToCode: "轉換為程式碼", bringForward: "上移一層", sendToBack: "移到最底層", bringToFront: "置於最頂層", sendBackward: "往後移一層", delete: "刪除", copyStyles: "複製樣式", pasteStyles: "貼上樣式", stroke: "筆畫", background: "背景", fill: "填滿", strokeWidth: "筆跡寬度", strokeStyle: "筆畫樣式", strokeStyle_solid: "實線", strokeStyle_dashed: "虛線", strokeStyle_dotted: "點線", sloppiness: "線條風格", opacity: "透明度", textAlign: "文字對齊", edges: "邊緣", sharp: "尖銳", round: "平滑", arrowheads: "箭頭", arrowhead_none: "無", arrowhead_arrow: "箭頭", arrowhead_bar: "條狀箭頭", arrowhead_circle: "圓形", arrowhead_circle_outline: "圓形（外框）", arrowhead_triangle: "三角形", arrowhead_triangle_outline: "三角形（外框）", arrowhead_diamond: "菱形", arrowhead_diamond_outline: "菱形（外框）", fontSize: "字型大小", fontFamily: "字體集", addWatermark: '加上 "Made with Excalidraw" 浮水印', handDrawn: "手寫", normal: "一般", code: "代碼", small: "小", medium: "中", large: "大", veryLarge: "特大", solid: "實心", hachure: "斜線筆觸", zigzag: "Ｚ字形", crossHatch: "交叉筆觸", thin: "細", bold: "粗", left: "左側", center: "置中", right: "右側", extraBold: "極粗", architect: "精確", artist: "藝術", cartoonist: "卡通", fileTitle: "檔案名稱", colorPicker: "色彩選擇工具", canvasColors: "使用於畫布", canvasBackground: "Canvas 背景", drawingCanvas: "繪圖 canvas", layers: "圖層", actions: "動作", language: "語言", liveCollaboration: "即時協作...", duplicateSelection: "複製", untitled: "無標題", name: "名稱", yourName: "你的名稱", madeWithExcalidraw: "以 Excalidraw 製作", group: "建立群組", ungroup: "取消群組", collaborators: "協作者", showGrid: "顯示格線", addToLibrary: "加入資料庫", removeFromLibrary: "從資料庫中移除", libraryLoadingMessage: "資料庫讀取中…", libraries: "瀏覽資料庫", loadingScene: "場景讀取中…", align: "對齊", alignTop: "對齊頂部", alignBottom: "對齊底部", alignLeft: "對齊左側", alignRight: "對齊右側", centerVertically: "垂直置中", centerHorizontally: "水平置中", distributeHorizontally: "水平分布", distributeVertically: "垂直分布", flipHorizontal: "水平翻轉", flipVertical: "垂直翻轉", viewMode: "檢視模式", share: "共享", showStroke: "顯示線條檢色器", showBackground: "顯示背景檢色器", toggleTheme: "切換主題", personalLib: "個人資料庫", excalidrawLib: "Excalidraw 資料庫", decreaseFontSize: "縮小文字", increaseFontSize: "放大文字", unbindText: "取消綁定文字", bindText: "結合文字至容器", createContainerFromText: "將文字包於容器中", link: { edit: "編輯連結", editEmbed: "編輯連結&嵌入", create: "建立連結", createEmbed: "建立連結&嵌入", label: "連結", labelEmbed: "連結&嵌入", empty: "未設定連結" }, lineEditor: { edit: "編輯線條", exit: "結束線條編輯" }, elementLock: { lock: "鎖定", unlock: "解鎖", lockAll: "全部鎖定", unlockAll: "全部解鎖" }, statusPublished: "已發布", sidebarLock: "側欄維持開啟", selectAllElementsInFrame: "選取框架內的所有元素", removeAllElementsFromFrame: "從框架內移除所有元素", eyeDropper: "從畫布中選取顏色", textToDiagram: "文字轉圖表", prompt: "提示詞" }, xeA = { noItems: "尚未加入任何物件...", hint_emptyLibrary: "選取畫布上的物件以加入，或從下方的公開 repository 中安裝資料庫", hint_emptyPrivateLibrary: "選擇畫布上的物件以在此加入" }, SeA = { clearReset: "重置 canvas", exportJSON: "匯出至檔案", exportImage: "匯出圖片", export: "儲存至...", copyToClipboard: "複製至剪貼簿", save: "儲存目前檔案", saveAs: "儲存為", load: "開啟", getShareableLink: "取得共享連結", close: "關閉", selectLanguage: "選擇語言", scrollBackToContent: "捲動回到內容", zoomIn: "放大", zoomOut: "縮小", resetZoom: "重設縮放", menu: "選單", done: "完成", edit: "編輯", undo: "復原", redo: "重做", resetLibrary: "重設資料庫", createNewRoom: "建立新協作會議室", fullScreen: "全螢幕", darkMode: "深色模式", lightMode: "淺色模式", zenMode: "專注模式", objectsSnapMode: "吸附至物件", exitZenMode: "離開專注模式", cancel: "取消", clear: "清除", remove: "刪除", embed: "切換嵌入", publishLibrary: "發布", submit: "送出", confirm: "確認", embeddableInteractionButton: "點擊以互動" }, NeA = { clearReset: "這將會清除整個 canvas。你確定嗎？", couldNotCreateShareableLink: "無法建立共享連結。", couldNotCreateShareableLinkTooBig: "無法建立共享連結：場景太大", couldNotLoadInvalidFile: "無法讀取失效的檔案。", importBackendFailed: "後端讀取失敗。", cannotExportEmptyCanvas: "無法輸出空白的 canvas。", couldNotCopyToClipboard: "無法複製到剪貼簿", decryptFailed: "無法解密資料。", uploadedSecurly: "上傳已通過 end-to-end 加密，Excalidraw 伺服器和第三方無法皆讀取其內容。", loadSceneOverridePrompt: "讀取外部圖樣將取代目前的內容。是否要繼續？", collabStopOverridePrompt: `停止連線將覆蓋您先前於本機儲存的繪圖進度，是否確認？

（如要保留原有的本機繪圖進度，直接關閉瀏覽器分頁即可。）`, errorAddingToLibrary: "無法於此資料庫加入項目", errorRemovingFromLibrary: "無法由此資料庫移除項目", confirmAddLibrary: "這將會將 {{numShapes}} 個圖形加入你的資料庫，你確定嗎？", imageDoesNotContainScene: "此圖檔中未包含場景資料。輸出檔案時是否有包含場景資料？", cannotRestoreFromImage: "無法由此檔案回復場景。", invalidSceneUrl: "無法由提供的 URL 匯入場景。可能是發生異常，或未包含有效的 Excalidraw JSON 資料。", resetLibrary: "這會清除您的資料庫，是否確定？", removeItemsFromsLibrary: "從資料庫刪除 {{count}} 項？", invalidEncryptionKey: "加密鍵必須為22字元。即時協作已停用。", collabOfflineWarning: `沒有可用的網路連線。
變更無法儲存！` }, ReA = { unsupportedFileType: "不支援的檔案類型。", imageInsertError: "無法插入圖片。請稍後再試…", fileTooBig: "檔案過大。可接受的最大尺寸為 {{maxSize}} 。", svgImageInsertError: "無法插入 SVG 圖片。此 SVG 檔案有問題。", failedToFetchImage: "無法獲取圖片。", invalidSVGString: "無效的 SVG。", cannotResolveCollabServer: "無法連結至 collab 伺服器。請重新整理後再試一次。", importLibraryError: "無法載入資料庫", collabSaveFailed: "無法儲存至後端資料庫。若此問題持續發生，請將檔案儲存於本機以確保資料不會遺失。", collabSaveFailed_sizeExceeded: "無法儲存至後端資料庫，可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。", imageToolNotSupported: "圖片已停用", brave_measure_text_error: { line1: "看起來您開啟了 Brave 瀏覽器的 <bold>Aggressively Block Fingerprinting</bold> 設定。", line2: "這可能造成您畫布中 <bold>文字元素</bold> 的異常。", line3: "我們強烈建議您關閉此設定。您可以依照 <link>這些步驟</link> 來進行。", line4: "若關閉此設定並未修復文字元素的顯示問題，請回報於我們 GitHub 上的 <issueLink>issue</issueLink>，或在 <discordLink>Discord</discordLink> 上告訴我們。" }, libraryElementTypeError: { embeddable: "可嵌入元素無法加入資料庫", iframe: "IFrame 元素無法加入資料庫", image: "即將支援加入圖片至資料庫！" }, asyncPasteFailedOnRead: "無法貼上（無法由系統剪貼簿讀入）", asyncPasteFailedOnParse: "無法貼上", copyToSystemClipboardFailed: "無法複製至剪貼簿" }, MeA = { selection: "選取", image: "插入圖片", rectangle: "長方形", diamond: "菱形", ellipse: "橢圓", arrow: "箭頭", line: "線條", freedraw: "繪圖", text: "文字", library: "資料庫", lock: "可連續使用選取的工具", penMode: "筆模式 - 避免觸摸", link: "為所選的形狀增加\b/更新連結", eraser: "橡皮擦", frame: "框架工具", magicframe: "線框稿轉為程式碼", embeddable: "嵌入網站", laser: "雷射筆", hand: "手形（平移工具）", extraTools: "更多工具", mermaidToExcalidraw: "Mermaid 至 Excalidraw", magicSettings: "AI 設定" }, YeA = { canvasActions: "canvas 動作", selectedShapeActions: "選取圖形動作", shapes: "形狀" }, veA = { canvasPanning: "若要移動畫布，請在拖曳時按住滑鼠滾輪或空白鍵，或使用手形工具", linearElement: "點擊以繪製多點曲線；或拖曳以繪製直線", freeDraw: "點擊並拖曳來繪圖，放開即結束", text: "提示：亦可使用選取工具在任何地方雙擊來加入文字", embeddable: "點擊並拖移以建立嵌入網站", text_selected: "雙擊滑鼠或按 Enter 以編輯文字", text_editing: "按跳脫鍵或 Ctrl 或 Cmd + Enter 以結束編輯", linearElementMulti: "按下 Escape 或 Enter 以結束繪製", lockAngle: "按住 SHIFT 可限制旋轉角度", resize: "縮放時按住 Shift 可保持原比例縮放；\\n按住 Alt 可由中心點進行縮放", resizeImage: "按住 SHIFT 可任意縮放，按住 ALT 可由中央縮放。", rotate: "旋轉時按住 Shift 可限制旋轉角度", lineEditor_info: "按住 Ctrl 或 Cmd 並雙擊或按住 Ctrl 或 Cmd + Enter 來編輯控制點", lineEditor_pointSelected: "按下 Delete 可移除錨點；Ctrl 或 Cmd + D 可複製；或可拖曳來移動", lineEditor_nothingSelected: `選擇要編輯的錨點（按住 SHIFT 可多選），
或按住 Alt 並點擊以增加新錨點。`, placeImage: "點擊以放置圖片，或點擊並拖曳以手動調整其尺寸。", publishLibrary: "發布個人資料庫", bindTextToElement: "按下 Enter 以加入文字。", deepBoxSelect: "按住 Ctrl 或 Cmd 以深度選取並避免拖曳", eraserRevert: "按住 Alt 以反選取已標記待刪除的元素", firefox_clipboard_write: `此功能有機會透過將 "dom.events.asyncClipboard.clipboardItem" 設定為 "true" 來開啟。
若要變更 Firefox 瀏覽器的此設定值，請至 "about:config" 頁面。`, disableSnapping: "按住 Ctrl 或 Cmd 以禁用吸附" }, HeA = { cannotShowPreview: "無法顯示預覽", canvasTooBig: "畫布可能過大", canvasTooBigTip: "提示：可嘗試將最遠的元素移動至較集中的位置" }, KeA = { headingMain: "發生錯誤，嘗試<button>重新載入頁面。</button>", clearCanvasMessage: "若重新載入仍無法解決問題，嘗試<button>清除 canvas。</button>", clearCanvasCaveat: "此動作將造成目前的作品被移除。", trackedToSentry: "此錯誤與其識別碼{{eventId}}將由系統記錄。", openIssueMessage: "我們將謹慎處理，你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密，請考慮使用我們的<button>bug tracker。</button>請將下列資訊複製貼上至 GitHub issue 中。", sceneContent: "作品內容：" }, JeA = { desc_intro: "你可以邀請其他人一起協作目前的作品。", desc_privacy: "連線使用 end-to-end 加密故無須擔心作品的安全性。即使是我們的伺服器也無法取得其內容。", button_startSession: "開始連線", button_stopSession: "停止連線", desc_inProgressIntro: "即時協作連線正在進行中。", desc_shareLink: "將此連結分享給欲協作的對象：", desc_exitSession: "停止連線將中斷你與協作會議室的連結，但你仍可於本機編輯此作品。意指停止連線後你的編輯不會被先前共同協作的人看見，且他們可繼續共同協作另一個版本。", shareTitle: "加入 Excalidraw 上的即時協作會議室" }, ZeA = { title: "錯誤" }, qeA = { disk_title: "儲存至硬碟", disk_details: "將場景匯出為可供匯入之檔案", disk_button: "儲存至檔案", link_title: "可共享連結", link_details: "匯出為唯讀連結", link_button: "匯出為連結", excalidrawplus_description: "將此場景儲存至你的 Excalidraw+ 工作區", excalidrawplus_button: "輸出", excalidrawplus_exportError: "目前無法輸出至 Excalidraw+" }, WeA = { blog: "閱讀部落格", click: "點擊", deepSelect: "深度選取", deepBoxSelect: "在容器內深度選取並避免拖曳", curvedArrow: "曲箭頭", curvedLine: "曲線", documentation: "文件", doubleClick: "雙擊", drag: "拖曳", editor: "編輯器", editLineArrowPoints: "編輯線/箭頭控制點", editText: "編輯文字/增加標籤", github: "發現異常？回報問題", howto: "參照我們的說明", or: "或", preventBinding: "避免箭號連結", tools: "工具", shortcuts: "鍵盤快速鍵", textFinish: "完成編輯（文字編輯器）", textNewLine: "換行（文字編輯器）", title: "說明", view: "檢視", zoomToFit: "放大至填滿畫面", zoomToSelection: "縮放至選取區", toggleElementLock: "鎖定/解鎖已選的項目", movePageUpDown: "向上/下移動頁面", movePageLeftRight: "向左/右移動頁面" }, jeA = { title: "清除畫布" }, TeA = { title: "發布資料庫", itemName: "項目名稱", authorName: "作者名稱", githubUsername: "GitHub 帳號", twitterUsername: "Twitter 帳號", libraryName: "資料庫名稱", libraryDesc: "資料庫說明", website: "網站", placeholder: { authorName: "您的名稱或帳號", libraryName: "您的資料庫名稱", libraryDesc: "提供您的資料庫說明以利他人理解其用途", githubHandle: "Github handle（選填），填寫後您可編輯已送出待審查的資料庫", twitterHandle: "Twitter 帳號（選填），填寫後若我們在 Twitter 推廣時可提及您", website: "您個人網站或其他網站的連結（選填）" }, errors: { required: "必填", website: "請輸入有效的 URL" }, noteDescription: "送出您的資料庫後將被包含於<link>公開資料庫 repository</link>以利他人在其繪圖中使用。", noteGuidelines: "資料庫需先經人工審查。請閱讀<link>說明文件</link>再送出。若需溝通與修改時要透過 GitHub 帳號來進行，但並非強制需求。", noteLicense: "送出即代表您同意此資料庫將發布時使用 <link>MIT 授權，</link>簡單來說是指任何人都能不受限制的使用。", noteItems: "每個資料庫項目都有獨立的名稱故可篩選。會包含下列資料庫項目：", atleastOneLibItem: "請選擇至少一項資料庫項目", republishWarning: "注意：部分選取中的物件先前已發布/送出過。建議僅在要更新現存資料庫或已送出的物件時才重新送出這些物件。" }, zeA = { title: "資料庫已送出", content: "感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態<link>在此</link>" }, PeA = { resetLibrary: "重設資料庫", removeItemsFromLib: "從資料庫移除所選的項目" }, OeA = { header: "匯出圖片", label: { withBackground: "背景", onlySelected: "僅選取物件", darkMode: "深色模式", embedScene: "嵌入場景", scale: "縮放比例", padding: "內間距" }, tooltip: { embedScene: `用於回復場景的場景資料會被包含在輸出的 PNG/SVG 檔案中。
會增加輸出的檔案大小。` }, title: { exportToPng: "輸出成 PNG", exportToSvg: "輸出成 SVG", copyPngToClipboard: "複製 PNG 至剪貼簿" }, button: { exportToPng: "PNG", exportToSvg: "SVG", copyPngToClipboard: "複製至剪貼簿" } }, VeA = { tooltip: "你的作品已使用 end-to-end 方式加密，Excalidraw 的伺服器也無法取得其內容。", link: "Excalidraw 端到端加密的相關部落格文章" }, XeA = { angle: "角度", element: "元素", elements: "元素", height: "高度", scene: "場景", selected: "已選", storage: "儲存", title: "詳細統計", total: "合計", version: "版本", versionCopy: "點擊複製", versionNotAvailable: "無法取得版本", width: "寬度" }, _eA = { addedToLibrary: "加入資料庫", copyStyles: "已複製樣式", copyToClipboard: "複製至剪貼簿。", copyToClipboardAsPng: `以 PNG 格式將 {{exportSelection}} 複製至剪貼簿
({{exportColorScheme}})`, fileSaved: "已儲存檔案。", fileSavedToFilename: "儲存為 {filename}", canvas: "畫布", selection: "已選項目", pasteAsSingleElement: `使用 {{shortcut}} 以做為單一物件貼上，
或貼上至現有的文字編輯器`, unableToEmbed: "目前不允許嵌入此網址。您可至 GitHub 提出 issue 以要求將此網址加入合格名單。", unrecognizedLinkFormat: "您嵌入的連結格式不符。請嘗試貼入原網站所提供的「嵌入」字串。" }, $eA = { transparent: "透明", black: "黑", white: "白", red: "紅", pink: "粉紅", grape: "深紫", violet: "藍紫", gray: "灰", blue: "藍", cyan: "青", teal: "藍綠", green: "綠", yellow: "黃", orange: "橘", bronze: "銅" }, ACA = { app: { center_heading: "所有資料皆已在瀏覽器中儲存於本機", center_heading_plus: "您是否是要前往 Excalidraw+ ？", menuHint: "輸出、偏好設定、語言..." }, defaults: { menuHint: "輸出、偏好設定及其他...", center_heading: "圖表。製作。超簡單。", toolbarHint: "選個工具開始畫圖吧！", helpHint: "快速鍵與說明" } }, uCA = { mostUsedCustomColors: "最常使用的自訂顏色", colors: "顏色", shades: "漸變色", hexCode: "Hex 碼", noShades: "沒有此顏色的漸變色" }, eCA = { action: { exportToImage: { title: "匯出為圖片", button: "匯出為圖片", description: "將場景匯出為可供匯入的圖片檔案" }, saveToDisk: { title: "儲存至硬碟", button: "儲存至硬碟", description: "將場景匯出為可供匯入的檔案" }, excalidrawPlus: { title: "Excalidraw+", button: "匯出至 Excalidraw+", description: "將此場景儲存至您的 Excalidraw+ 工作區" } }, modal: { loadFromFile: { title: "從檔案載入", button: "從檔案載入", description: "從檔案載入將<bold>取代您目前的內容</bold>。<br></br>可先使用下方的選項備份您的繪圖。" }, shareableLink: { title: "從連結載入", button: "取代我的內容", description: "載入外部繪圖將<bold>取代您目前的內容</bold>。<br></br>可先使用下方的選項備份您的繪圖。" } } }, CCA = { title: "Mermaid 至 Excalidraw", button: "插入", description: "目前僅支援 <flowchartLink>Flowchart</flowchartLink> 、 <sequenceLink>Sequence</sequenceLink> 及 <classLink>Class </classLink> 圖表。其餘檔案類型在 Excalidraw 將會以圖像呈現。", syntax: "Mermaid 語法", preview: "預覽" }, o8A = { labels: LeA, library: xeA, buttons: SeA, alerts: NeA, errors: ReA, toolBar: MeA, headings: YeA, hints: veA, canvasError: HeA, errorSplash: KeA, roomDialog: JeA, errorDialog: ZeA, exportDialog: qeA, helpDialog: WeA, clearCanvasDialog: jeA, publishDialog: TeA, publishSuccessDialog: zeA, confirmDialog: PeA, imageExportDialog: OeA, encrypted: VeA, stats: XeA, toast: _eA, colors: $eA, welcomeScreen: ACA, colorPicker: uCA, overwriteConfirm: eCA, mermaid: CCA };
const Q8A = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  alerts: NeA,
  buttons: SeA,
  canvasError: HeA,
  clearCanvasDialog: jeA,
  colorPicker: uCA,
  colors: $eA,
  confirmDialog: PeA,
  default: o8A,
  encrypted: VeA,
  errorDialog: ZeA,
  errorSplash: KeA,
  errors: ReA,
  exportDialog: qeA,
  headings: YeA,
  helpDialog: WeA,
  hints: veA,
  imageExportDialog: OeA,
  labels: LeA,
  library: xeA,
  mermaid: CCA,
  overwriteConfirm: eCA,
  publishDialog: TeA,
  publishSuccessDialog: zeA,
  roomDialog: JeA,
  stats: XeA,
  toast: _eA,
  toolBar: MeA,
  welcomeScreen: ACA
}, Symbol.toStringTag, { value: "Module" }));
export {
  VpA as I,
  m8A as J,
  x as a,
  Yy as b,
  oEA as d,
  Ze as f,
  r as j,
  h8A as n,
  BBA as r,
  x2 as t
};
