{
  "version": 3,
  "sources": ["ssg:https://app.framerstatic.com/chunk-BLFSVU7M.mjs", "ssg:https://ga.jspm.io/npm:react-dom@18.2.0/index.js", "ssg:https://ga.jspm.io/npm:scheduler@0.23.0/index.js", "ssg:https://app.framerstatic.com/framer.IBYFR5C4.mjs"],
  "sourcesContent": ["import {\n  __commonJS,\n  __export\n} from \"./chunk-YNHG2PI6.mjs\";\n\n// ../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\nvar require_memoize_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function memoize(fn) {\n      var cache = {};\n      return function(arg) {\n        if (cache[arg] === void 0) cache[arg] = fn(arg);\n        return cache[arg];\n      };\n    }\n    exports.default = memoize;\n  }\n});\n\n// ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\nvar require_is_prop_valid_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function _interopDefault(ex) {\n      return ex && typeof ex === \"object\" && \"default\" in ex ? ex[\"default\"] : ex;\n    }\n    var memoize = _interopDefault(require_memoize_browser_cjs());\n    var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\n    var index = memoize(\n      function(prop) {\n        return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n      }\n      /* Z+1 */\n    );\n    exports.default = index;\n  }\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\nimport { createContext } from \"react\";\nvar LayoutGroupContext = createContext({});\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs\nvar isBrowser = typeof window !== \"undefined\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs\nimport { useLayoutEffect, useEffect } from \"react\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\n// ../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs\nimport { createContext as createContext2 } from \"react\";\nvar PresenceContext = /* @__PURE__ */ createContext2(null);\n\n// ../../../node_modules/motion-utils/dist/es/array.mjs\nfunction addUniqueItem(arr, item) {\n  if (arr.indexOf(item) === -1)\n    arr.push(item);\n}\nfunction removeItem(arr, item) {\n  const index = arr.indexOf(item);\n  if (index > -1)\n    arr.splice(index, 1);\n}\nfunction moveItem([...arr], fromIndex, toIndex) {\n  const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n  if (startIndex >= 0 && startIndex < arr.length) {\n    const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n    const [item] = arr.splice(fromIndex, 1);\n    arr.splice(endIndex, 0, item);\n  }\n  return arr;\n}\n\n// ../../../node_modules/motion-utils/dist/es/clamp.mjs\nvar clamp = (min, max, v) => {\n  if (v > max)\n    return max;\n  if (v < min)\n    return min;\n  return v;\n};\n\n// ../../../node_modules/motion-utils/dist/es/errors.mjs\nvar warning = () => {\n};\nvar invariant = () => {\n};\nif (false) {\n  warning = (check, message) => {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = (check, message) => {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// ../../../node_modules/motion-utils/dist/es/global-config.mjs\nvar MotionGlobalConfig = {};\n\n// ../../../node_modules/motion-utils/dist/es/is-numerical-string.mjs\nvar isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\n// ../../../node_modules/motion-utils/dist/es/is-object.mjs\nfunction isObject(value) {\n  return typeof value === \"object\" && value !== null;\n}\n\n// ../../../node_modules/motion-utils/dist/es/is-zero-value-string.mjs\nvar isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\n// ../../../node_modules/motion-utils/dist/es/memo.mjs\n// @__NO_SIDE_EFFECTS__\nfunction memo(callback) {\n  let result;\n  return () => {\n    if (result === void 0)\n      result = callback();\n    return result;\n  };\n}\n\n// ../../../node_modules/motion-utils/dist/es/noop.mjs\nvar noop = /* @__NO_SIDE_EFFECTS__ */ (any) => any;\n\n// ../../../node_modules/motion-utils/dist/es/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/motion-utils/dist/es/progress.mjs\nvar progress = /* @__NO_SIDE_EFFECTS__ */ (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/motion-utils/dist/es/subscription-manager.mjs\nvar SubscriptionManager = class {\n  constructor() {\n    this.subscriptions = [];\n  }\n  add(handler) {\n    addUniqueItem(this.subscriptions, handler);\n    return () => removeItem(this.subscriptions, handler);\n  }\n  notify(a, b, c) {\n    const numSubscriptions = this.subscriptions.length;\n    if (!numSubscriptions)\n      return;\n    if (numSubscriptions === 1) {\n      this.subscriptions[0](a, b, c);\n    } else {\n      for (let i = 0; i < numSubscriptions; i++) {\n        const handler = this.subscriptions[i];\n        handler && handler(a, b, c);\n      }\n    }\n  }\n  getSize() {\n    return this.subscriptions.length;\n  }\n  clear() {\n    this.subscriptions.length = 0;\n  }\n};\n\n// ../../../node_modules/motion-utils/dist/es/time-conversion.mjs\nvar secondsToMilliseconds = /* @__NO_SIDE_EFFECTS__ */ (seconds) => seconds * 1e3;\nvar millisecondsToSeconds = /* @__NO_SIDE_EFFECTS__ */ (milliseconds) => milliseconds / 1e3;\n\n// ../../../node_modules/motion-utils/dist/es/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/motion-utils/dist/es/warn-once.mjs\nvar warned = /* @__PURE__ */ new Set();\nfunction hasWarned(message) {\n  return warned.has(message);\n}\nfunction warnOnce(condition, message, element) {\n  if (condition || warned.has(message))\n    return;\n  console.warn(message);\n  if (element)\n    console.warn(element);\n  warned.add(message);\n}\n\n// ../../../node_modules/motion-utils/dist/es/wrap.mjs\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/motion-utils/dist/es/easing/cubic-bezier.mjs\nvar calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;\nvar subdivisionPrecision = 1e-7;\nvar subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n  let currentX;\n  let currentT;\n  let i = 0;\n  do {\n    currentT = lowerBound + (upperBound - lowerBound) / 2;\n    currentX = calcBezier(currentT, mX1, mX2) - x;\n    if (currentX > 0) {\n      upperBound = currentT;\n    } else {\n      lowerBound = currentT;\n    }\n  } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n  return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n  if (mX1 === mY1 && mX2 === mY2)\n    return noop;\n  const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n  return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// ../../../node_modules/motion-utils/dist/es/easing/modifiers/mirror.mjs\nvar mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\n// ../../../node_modules/motion-utils/dist/es/easing/modifiers/reverse.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\n// ../../../node_modules/motion-utils/dist/es/easing/back.mjs\nvar backOut = /* @__PURE__ */ cubicBezier(0.33, 1.53, 0.69, 0.99);\nvar backIn = /* @__PURE__ */ reverseEasing(backOut);\nvar backInOut = /* @__PURE__ */ mirrorEasing(backIn);\n\n// ../../../node_modules/motion-utils/dist/es/easing/anticipate.mjs\nvar anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\n// ../../../node_modules/motion-utils/dist/es/easing/circ.mjs\nvar circIn = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circIn);\n\n// ../../../node_modules/motion-utils/dist/es/easing/ease.mjs\nvar easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1);\nvar easeOut = /* @__PURE__ */ cubicBezier(0, 0, 0.58, 1);\nvar easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);\n\n// ../../../node_modules/motion-utils/dist/es/easing/steps.mjs\nfunction steps(numSteps, direction = \"end\") {\n  return (progress2) => {\n    progress2 = direction === \"end\" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);\n    const expanded = progress2 * numSteps;\n    const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n    return clamp(0, 1, rounded / numSteps);\n  };\n}\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/is-easing-array.mjs\nvar isEasingArray = (ease2) => {\n  return Array.isArray(ease2) && typeof ease2[0] !== \"number\";\n};\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs\nfunction getEasingForSegment(easing, i) {\n  return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs\nvar isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/map.mjs\nvar easingLookup = {\n  linear: noop,\n  easeIn,\n  easeInOut,\n  easeOut,\n  circIn,\n  circInOut,\n  circOut,\n  backIn,\n  backInOut,\n  backOut,\n  anticipate\n};\nvar isValidEasing = (easing) => {\n  return typeof easing === \"string\";\n};\nvar easingDefinitionToFunction = (definition) => {\n  if (isBezierDefinition(definition)) {\n    invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n    const [x1, y1, x2, y2] = definition;\n    return cubicBezier(x1, y1, x2, y2);\n  } else if (isValidEasing(definition)) {\n    invariant(easingLookup[definition] !== void 0, `Invalid easing type '${definition}'`);\n    return easingLookup[definition];\n  }\n  return definition;\n};\n\n// ../../../node_modules/motion-dom/dist/es/stats/buffer.mjs\nvar statsBuffer = {\n  value: null,\n  addProjectionMetrics: null\n};\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/order.mjs\nvar stepsOrder = [\n  \"setup\",\n  // Compute\n  \"read\",\n  // Read\n  \"resolveKeyframes\",\n  // Write/Read/Write/Read\n  \"preUpdate\",\n  // Compute\n  \"update\",\n  // Compute\n  \"preRender\",\n  // Compute\n  \"render\",\n  // Write\n  \"postRender\"\n  // Compute\n];\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/render-step.mjs\nfunction createRenderStep(runNextFrame, stepName) {\n  let thisFrame = /* @__PURE__ */ new Set();\n  let nextFrame = /* @__PURE__ */ new Set();\n  let isProcessing = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  let latestFrameData = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  let numCalls = 0;\n  function triggerCallback(callback) {\n    if (toKeepAlive.has(callback)) {\n      step.schedule(callback);\n      runNextFrame();\n    }\n    numCalls++;\n    callback(latestFrameData);\n  }\n  const step = {\n    /**\n     * Schedule a process to run on the next frame.\n     */\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing;\n      const queue = addToCurrentFrame ? thisFrame : nextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (!queue.has(callback))\n        queue.add(callback);\n      return callback;\n    },\n    /**\n     * Cancel the provided callback from running on the next frame.\n     */\n    cancel: (callback) => {\n      nextFrame.delete(callback);\n      toKeepAlive.delete(callback);\n    },\n    /**\n     * Execute all schedule callbacks.\n     */\n    process: (frameData2) => {\n      latestFrameData = frameData2;\n      if (isProcessing) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing = true;\n      [thisFrame, nextFrame] = [nextFrame, thisFrame];\n      thisFrame.forEach(triggerCallback);\n      if (stepName && statsBuffer.value) {\n        statsBuffer.value.frameloop[stepName].push(numCalls);\n      }\n      numCalls = 0;\n      thisFrame.clear();\n      isProcessing = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/batcher.mjs\nvar maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n  let runNextFrame = false;\n  let useDefaultElapsed = true;\n  const state = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  const flagRunNextFrame = () => runNextFrame = true;\n  const steps2 = stepsOrder.reduce((acc, key) => {\n    acc[key] = createRenderStep(flagRunNextFrame, allowKeepAlive ? key : void 0);\n    return acc;\n  }, {});\n  const { setup, read, resolveKeyframes, preUpdate, update, preRender, render, postRender } = steps2;\n  const processBatch = () => {\n    const timestamp = MotionGlobalConfig.useManualTiming ? state.timestamp : performance.now();\n    runNextFrame = false;\n    if (!MotionGlobalConfig.useManualTiming) {\n      state.delta = useDefaultElapsed ? 1e3 / 60 : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n    }\n    state.timestamp = timestamp;\n    state.isProcessing = true;\n    setup.process(state);\n    read.process(state);\n    resolveKeyframes.process(state);\n    preUpdate.process(state);\n    update.process(state);\n    preRender.process(state);\n    render.process(state);\n    postRender.process(state);\n    state.isProcessing = false;\n    if (runNextFrame && allowKeepAlive) {\n      useDefaultElapsed = false;\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const wake = () => {\n    runNextFrame = true;\n    useDefaultElapsed = true;\n    if (!state.isProcessing) {\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const schedule = stepsOrder.reduce((acc, key) => {\n    const step = steps2[key];\n    acc[key] = (process2, keepAlive = false, immediate = false) => {\n      if (!runNextFrame)\n        wake();\n      return step.schedule(process2, keepAlive, immediate);\n    };\n    return acc;\n  }, {});\n  const cancel = (process2) => {\n    for (let i = 0; i < stepsOrder.length; i++) {\n      steps2[stepsOrder[i]].cancel(process2);\n    }\n  };\n  return { schedule, cancel, state, steps: steps2 };\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/frame.mjs\nvar { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/sync-time.mjs\nvar now;\nfunction clearTime() {\n  now = void 0;\n}\nvar time = {\n  now: () => {\n    if (now === void 0) {\n      time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());\n    }\n    return now;\n  },\n  set: (newTime) => {\n    now = newTime;\n    queueMicrotask(clearTime);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/stats/animation-count.mjs\nvar activeAnimations = {\n  layout: 0,\n  mainThread: 0,\n  waapi: 0\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/is-css-variable.mjs\nvar checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nvar isCSSVariableName = /* @__PURE__ */ checkStringStartsWith(\"--\");\nvar startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith(\"var(--\");\nvar isCSSVariableToken = (value) => {\n  const startsWithToken = startsAsVariableToken(value);\n  if (!startsWithToken)\n    return false;\n  return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nvar singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/numbers/index.mjs\nvar number = {\n  test: (v) => typeof v === \"number\",\n  parse: parseFloat,\n  transform: (v) => v\n};\nvar alpha = {\n  ...number,\n  transform: (v) => clamp(0, 1, v)\n};\nvar scale = {\n  ...number,\n  default: 1\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/sanitize.mjs\nvar sanitize = (v) => Math.round(v * 1e5) / 1e5;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/float-regex.mjs\nvar floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/is-nullish.mjs\nfunction isNullish(v) {\n  return v == null;\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.mjs\nvar singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(typeof v === \"string\" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (typeof v !== \"string\")\n    return v;\n  const [a, b, c, alpha2] = v.match(floatRegex);\n  return {\n    [aName]: parseFloat(a),\n    [bName]: parseFloat(b),\n    [cName]: parseFloat(c),\n    alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1\n  };\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/rgba.mjs\nvar clampRgbUnit = (v) => clamp(0, 255, v);\nvar rgbUnit = {\n  ...number,\n  transform: (v) => Math.round(clampRgbUnit(v))\n};\nvar rgba = {\n  test: /* @__PURE__ */ isColorString(\"rgb\", \"red\"),\n  parse: /* @__PURE__ */ splitColor(\"red\", \"green\", \"blue\"),\n  transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" + rgbUnit.transform(red) + \", \" + rgbUnit.transform(green) + \", \" + rgbUnit.transform(blue) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\"\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/hex.mjs\nfunction parseHex(v) {\n  let r = \"\";\n  let g = \"\";\n  let b = \"\";\n  let a = \"\";\n  if (v.length > 5) {\n    r = v.substring(1, 3);\n    g = v.substring(3, 5);\n    b = v.substring(5, 7);\n    a = v.substring(7, 9);\n  } else {\n    r = v.substring(1, 2);\n    g = v.substring(2, 3);\n    b = v.substring(3, 4);\n    a = v.substring(4, 5);\n    r += r;\n    g += g;\n    b += b;\n    a += a;\n  }\n  return {\n    red: parseInt(r, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: a ? parseInt(a, 16) / 255 : 1\n  };\n}\nvar hex = {\n  test: /* @__PURE__ */ isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/numbers/units.mjs\nvar createUnitType = /* @__NO_SIDE_EFFECTS__ */ (unit) => ({\n  test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = /* @__PURE__ */ createUnitType(\"deg\");\nvar percent = /* @__PURE__ */ createUnitType(\"%\");\nvar px = /* @__PURE__ */ createUnitType(\"px\");\nvar vh = /* @__PURE__ */ createUnitType(\"vh\");\nvar vw = /* @__PURE__ */ createUnitType(\"vw\");\nvar progressPercentage = /* @__PURE__ */ (() => ({\n  ...percent,\n  parse: (v) => percent.parse(v) / 100,\n  transform: (v) => percent.transform(v * 100)\n}))();\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/hsla.mjs\nvar hsla = {\n  test: /* @__PURE__ */ isColorString(\"hsl\", \"hue\"),\n  parse: /* @__PURE__ */ splitColor(\"hue\", \"saturation\", \"lightness\"),\n  transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n    return \"hsla(\" + Math.round(hue) + \", \" + percent.transform(sanitize(saturation)) + \", \" + percent.transform(sanitize(lightness)) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\";\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/index.mjs\nvar color = {\n  test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n  parse: (v) => {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else {\n      return hex.parse(v);\n    }\n  },\n  transform: (v) => {\n    return typeof v === \"string\" ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/color-regex.mjs\nvar colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/complex/index.mjs\nfunction test(v) {\n  var _a, _b;\n  return isNaN(v) && typeof v === \"string\" && (((_a = v.match(floatRegex)) == null ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) == null ? void 0 : _b.length) || 0) > 0;\n}\nvar NUMBER_TOKEN = \"number\";\nvar COLOR_TOKEN = \"color\";\nvar VAR_TOKEN = \"var\";\nvar VAR_FUNCTION_TOKEN = \"var(\";\nvar SPLIT_TOKEN = \"${}\";\nvar complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n  const originalValue = value.toString();\n  const values = [];\n  const indexes = {\n    color: [],\n    number: [],\n    var: []\n  };\n  const types = [];\n  let i = 0;\n  const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n    if (color.test(parsedValue)) {\n      indexes.color.push(i);\n      types.push(COLOR_TOKEN);\n      values.push(color.parse(parsedValue));\n    } else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n      indexes.var.push(i);\n      types.push(VAR_TOKEN);\n      values.push(parsedValue);\n    } else {\n      indexes.number.push(i);\n      types.push(NUMBER_TOKEN);\n      values.push(parseFloat(parsedValue));\n    }\n    ++i;\n    return SPLIT_TOKEN;\n  });\n  const split = tokenised.split(SPLIT_TOKEN);\n  return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n  return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n  const { split, types } = analyseComplexValue(source);\n  const numSections = split.length;\n  return (v) => {\n    let output = \"\";\n    for (let i = 0; i < numSections; i++) {\n      output += split[i];\n      if (v[i] !== void 0) {\n        const type = types[i];\n        if (type === NUMBER_TOKEN) {\n          output += sanitize(v[i]);\n        } else if (type === COLOR_TOKEN) {\n          output += color.transform(v[i]);\n        } else {\n          output += v[i];\n        }\n      }\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parseComplexValue(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = {\n  test,\n  parse: parseComplexValue,\n  createTransformer,\n  getAnimatableNone\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.mjs\nfunction hueToRgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {\n  hue /= 360;\n  saturation /= 100;\n  lightness /= 100;\n  let red = 0;\n  let green = 0;\n  let blue = 0;\n  if (!saturation) {\n    red = green = blue = lightness;\n  } else {\n    const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;\n    const p = 2 * lightness - q;\n    red = hueToRgb(p, q, hue + 1 / 3);\n    green = hueToRgb(p, q, hue);\n    blue = hueToRgb(p, q, hue - 1 / 3);\n  }\n  return {\n    red: Math.round(red * 255),\n    green: Math.round(green * 255),\n    blue: Math.round(blue * 255),\n    alpha: alpha2\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/immediate.mjs\nfunction mixImmediate(a, b) {\n  return (p) => p > 0 ? b : a;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/number.mjs\nvar mixNumber = (from, to, progress2) => {\n  return from + (to - from) * progress2;\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  const expo = v * (to * to - fromExpo) + fromExpo;\n  return expo < 0 ? 0 : Math.sqrt(expo);\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color2) {\n  const type = getColorType(color2);\n  warning(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);\n  if (!Boolean(type))\n    return false;\n  let model = type.parse(color2);\n  if (type === hsla) {\n    model = hslaToRgba(model);\n  }\n  return model;\n}\nvar mixColor = (from, to) => {\n  const fromRGBA = asRGBA(from);\n  const toRGBA = asRGBA(to);\n  if (!fromRGBA || !toRGBA) {\n    return mixImmediate(from, to);\n  }\n  const blended = { ...fromRGBA };\n  return (v) => {\n    blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n    blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n    blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n    blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n    return rgba.transform(blended);\n  };\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/visibility.mjs\nvar invisibleValues = /* @__PURE__ */ new Set([\"none\", \"hidden\"]);\nfunction mixVisibility(origin, target) {\n  if (invisibleValues.has(origin)) {\n    return (p) => p <= 0 ? origin : target;\n  } else {\n    return (p) => p >= 1 ? target : origin;\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/complex.mjs\nfunction mixNumber2(a, b) {\n  return (p) => mixNumber(a, b, p);\n}\nfunction getMixer(a) {\n  if (typeof a === \"number\") {\n    return mixNumber2;\n  } else if (typeof a === \"string\") {\n    return isCSSVariableToken(a) ? mixImmediate : color.test(a) ? mixColor : mixComplex;\n  } else if (Array.isArray(a)) {\n    return mixArray;\n  } else if (typeof a === \"object\") {\n    return color.test(a) ? mixColor : mixObject;\n  }\n  return mixImmediate;\n}\nfunction mixArray(a, b) {\n  const output = [...a];\n  const numValues = output.length;\n  const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n  return (p) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](p);\n    }\n    return output;\n  };\n}\nfunction mixObject(a, b) {\n  const output = { ...a, ...b };\n  const blendValue = {};\n  for (const key in output) {\n    if (a[key] !== void 0 && b[key] !== void 0) {\n      blendValue[key] = getMixer(a[key])(a[key], b[key]);\n    }\n  }\n  return (v) => {\n    for (const key in blendValue) {\n      output[key] = blendValue[key](v);\n    }\n    return output;\n  };\n}\nfunction matchOrder(origin, target) {\n  const orderedOrigin = [];\n  const pointers = { color: 0, var: 0, number: 0 };\n  for (let i = 0; i < target.values.length; i++) {\n    const type = target.types[i];\n    const originIndex = origin.indexes[type][pointers[type]];\n    const originValue = origin.values[originIndex] ?? 0;\n    orderedOrigin[i] = originValue;\n    pointers[type]++;\n  }\n  return orderedOrigin;\n}\nvar mixComplex = (origin, target) => {\n  const template = complex.createTransformer(target);\n  const originStats = analyseComplexValue(origin);\n  const targetStats = analyseComplexValue(target);\n  const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length && originStats.indexes.color.length === targetStats.indexes.color.length && originStats.indexes.number.length >= targetStats.indexes.number.length;\n  if (canInterpolate) {\n    if (invisibleValues.has(origin) && !targetStats.values.length || invisibleValues.has(target) && !originStats.values.length) {\n      return mixVisibility(origin, target);\n    }\n    return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n  } else {\n    warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n    return mixImmediate(origin, target);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/index.mjs\nfunction mix(from, to, p) {\n  if (typeof from === \"number\" && typeof to === \"number\" && typeof p === \"number\") {\n    return mixNumber(from, to, p);\n  }\n  const mixer = getMixer(from);\n  return mixer(from, to);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs\nvar generateLinearEasing = (easing, duration, resolution = 10) => {\n  let points = \"\";\n  const numPoints = Math.max(Math.round(duration / resolution), 2);\n  for (let i = 0; i < numPoints; i++) {\n    points += easing(i / (numPoints - 1)) + \", \";\n  }\n  return `linear(${points.substring(0, points.length - 2)})`;\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs\nvar maxGeneratorDuration = 2e4;\nfunction calcGeneratorDuration(generator) {\n  let duration = 0;\n  const timeStep = 50;\n  let state = generator.next(duration);\n  while (!state.done && duration < maxGeneratorDuration) {\n    duration += timeStep;\n    state = generator.next(duration);\n  }\n  return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs\nfunction createGeneratorEasing(options, scale2 = 100, createGenerator) {\n  const generator = createGenerator({ ...options, keyframes: [0, scale2] });\n  const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n  return {\n    type: \"keyframes\",\n    ease: (progress2) => {\n      return generator.next(duration * progress2).value / scale2;\n    },\n    duration: millisecondsToSeconds(duration)\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs\nvar velocitySampleDuration = 5;\nfunction calcGeneratorVelocity(resolveValue, t, current2) {\n  const prevT = Math.max(t - velocitySampleDuration, 0);\n  return velocityPerSecond(current2 - resolveValue(prevT), t - prevT);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/spring/defaults.mjs\nvar springDefaults = {\n  // Default spring physics\n  stiffness: 100,\n  damping: 10,\n  mass: 1,\n  velocity: 0,\n  // Default duration/bounce-based options\n  duration: 800,\n  // in ms\n  bounce: 0.3,\n  visualDuration: 0.3,\n  // in seconds\n  // Rest thresholds\n  restSpeed: {\n    granular: 0.01,\n    default: 2\n  },\n  restDelta: {\n    granular: 5e-3,\n    default: 0.5\n  },\n  // Limits\n  minDuration: 0.01,\n  // in seconds\n  maxDuration: 10,\n  // in seconds\n  minDamping: 0.05,\n  maxDamping: 1\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/spring/find.mjs\nvar safeMin = 1e-3;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass }) {\n  let envelope;\n  let derivative;\n  warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n  duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));\n  if (dampingRatio < 1) {\n    envelope = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const a = exponentialDecay - velocity;\n      const b = calcAngularFreq(undampedFreq2, dampingRatio);\n      const c = Math.exp(-delta);\n      return safeMin - a / b * c;\n    };\n    derivative = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const d = delta * velocity + velocity;\n      const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;\n      const f = Math.exp(-delta);\n      const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);\n      const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;\n      return factor * ((d - e) * f) / g;\n    };\n  } else {\n    envelope = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (undampedFreq2 - velocity) * duration + 1;\n      return -safeMin + a * b;\n    };\n    derivative = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (velocity - undampedFreq2) * (duration * duration);\n      return a * b;\n    };\n  }\n  const initialGuess = 5 / duration;\n  const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n  duration = secondsToMilliseconds(duration);\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: springDefaults.stiffness,\n      damping: springDefaults.damping,\n      duration\n    };\n  } else {\n    const stiffness = Math.pow(undampedFreq, 2) * mass;\n    return {\n      stiffness,\n      damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n      duration\n    };\n  }\n}\nvar rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n  let result = initialGuess;\n  for (let i = 1; i < rootIterations; i++) {\n    result = result - envelope(result) / derivative(result);\n  }\n  return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n  return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/spring/index.mjs\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys2) {\n  return keys2.some((key) => options[key] !== void 0);\n}\nfunction getSpringOptions(options) {\n  let springOptions = {\n    velocity: springDefaults.velocity,\n    stiffness: springDefaults.stiffness,\n    damping: springDefaults.damping,\n    mass: springDefaults.mass,\n    isResolvedFromDuration: false,\n    ...options\n  };\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    if (options.visualDuration) {\n      const visualDuration = options.visualDuration;\n      const root = 2 * Math.PI / (visualDuration * 1.2);\n      const stiffness = root * root;\n      const damping = 2 * clamp(0.05, 1, 1 - (options.bounce || 0)) * Math.sqrt(stiffness);\n      springOptions = {\n        ...springOptions,\n        mass: springDefaults.mass,\n        stiffness,\n        damping\n      };\n    } else {\n      const derived = findSpring(options);\n      springOptions = {\n        ...springOptions,\n        ...derived,\n        mass: springDefaults.mass\n      };\n      springOptions.isResolvedFromDuration = true;\n    }\n  }\n  return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n  const options = typeof optionsOrVisualDuration !== \"object\" ? {\n    visualDuration: optionsOrVisualDuration,\n    keyframes: [0, 1],\n    bounce\n  } : optionsOrVisualDuration;\n  let { restSpeed, restDelta } = options;\n  const origin = options.keyframes[0];\n  const target = options.keyframes[options.keyframes.length - 1];\n  const state = { done: false, value: origin };\n  const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({\n    ...options,\n    velocity: -millisecondsToSeconds(options.velocity || 0)\n  });\n  const initialVelocity = velocity || 0;\n  const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n  const initialDelta = target - origin;\n  const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n  const isGranularScale = Math.abs(initialDelta) < 5;\n  restSpeed || (restSpeed = isGranularScale ? springDefaults.restSpeed.granular : springDefaults.restSpeed.default);\n  restDelta || (restDelta = isGranularScale ? springDefaults.restDelta.granular : springDefaults.restDelta.default);\n  let resolveSpring;\n  if (dampingRatio < 1) {\n    const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n    };\n  } else if (dampingRatio === 1) {\n    resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);\n  } else {\n    const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      const freqForT = Math.min(dampedAngularFreq * t, 300);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;\n    };\n  }\n  const generator = {\n    calculatedDuration: isResolvedFromDuration ? duration || null : null,\n    next: (t) => {\n      const current2 = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        let currentVelocity = t === 0 ? initialVelocity : 0;\n        if (dampingRatio < 1) {\n          currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current2);\n        }\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(target - current2) <= restDelta;\n        state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state.done = t >= duration;\n      }\n      state.value = state.done ? target : current2;\n      return state;\n    },\n    toString: () => {\n      const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n      const easing = generateLinearEasing((progress2) => generator.next(calculatedDuration * progress2).value, calculatedDuration, 30);\n      return calculatedDuration + \"ms \" + easing;\n    },\n    toTransition: () => {\n    }\n  };\n  return generator;\n}\nspring.applyToOptions = (options) => {\n  const generatorOptions = createGeneratorEasing(options, 100, spring);\n  options.ease = generatorOptions.ease;\n  options.duration = secondsToMilliseconds(generatorOptions.duration);\n  options.type = \"keyframes\";\n  return options;\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/inertia.mjs\nfunction inertia({ keyframes: keyframes2, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {\n  const origin = keyframes2[0];\n  const state = {\n    done: false,\n    value: origin\n  };\n  const isOutOfBounds = (v) => min !== void 0 && v < min || max !== void 0 && v > max;\n  const nearestBoundary = (v) => {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  };\n  let amplitude = power * velocity;\n  const ideal = origin + amplitude;\n  const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);\n  if (target !== ideal)\n    amplitude = target - origin;\n  const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n  const calcLatest = (t) => target + calcDelta(t);\n  const applyFriction = (t) => {\n    const delta = calcDelta(t);\n    const latest = calcLatest(t);\n    state.done = Math.abs(delta) <= restDelta;\n    state.value = state.done ? target : latest;\n  };\n  let timeReachedBoundary;\n  let spring$1;\n  const checkCatchBoundary = (t) => {\n    if (!isOutOfBounds(state.value))\n      return;\n    timeReachedBoundary = t;\n    spring$1 = spring({\n      keyframes: [state.value, nearestBoundary(state.value)],\n      velocity: calcGeneratorVelocity(calcLatest, t, state.value),\n      // TODO: This should be passing * 1000\n      damping: bounceDamping,\n      stiffness: bounceStiffness,\n      restDelta,\n      restSpeed\n    });\n  };\n  checkCatchBoundary(0);\n  return {\n    calculatedDuration: null,\n    next: (t) => {\n      let hasUpdatedFrame = false;\n      if (!spring$1 && timeReachedBoundary === void 0) {\n        hasUpdatedFrame = true;\n        applyFriction(t);\n        checkCatchBoundary(t);\n      }\n      if (timeReachedBoundary !== void 0 && t >= timeReachedBoundary) {\n        return spring$1.next(t - timeReachedBoundary);\n      } else {\n        !hasUpdatedFrame && applyFriction(t);\n        return state;\n      }\n    }\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/interpolate.mjs\nfunction createMixers(output, ease2, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || MotionGlobalConfig.mix || mix;\n  const numMixers = output.length - 1;\n  for (let i = 0; i < numMixers; i++) {\n    let mixer = mixerFactory(output[i], output[i + 1]);\n    if (ease2) {\n      const easingFunction = Array.isArray(ease2) ? ease2[i] || noop : ease2;\n      mixer = pipe(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease: ease2, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  if (inputLength === 1)\n    return () => output[0];\n  if (inputLength === 2 && output[0] === output[1])\n    return () => output[1];\n  const isZeroDeltaRange = input[0] === input[1];\n  if (input[0] > input[inputLength - 1]) {\n    input = [...input].reverse();\n    output = [...output].reverse();\n  }\n  const mixers = createMixers(output, ease2, mixer);\n  const numMixers = mixers.length;\n  const interpolator = (v) => {\n    if (isZeroDeltaRange && v < input[0])\n      return output[0];\n    let i = 0;\n    if (numMixers > 1) {\n      for (; i < input.length - 2; i++) {\n        if (v < input[i + 1])\n          break;\n      }\n    }\n    const progressInRange = progress(input[i], input[i + 1], v);\n    return mixers[i](progressInRange);\n  };\n  return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress(0, remaining, i);\n    offset.push(mixNumber(min, 1, offsetProgress));\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.mjs\nfunction defaultOffset(arr) {\n  const offset = [0];\n  fillOffset(offset, arr.length - 1);\n  return offset;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease: ease2 = \"easeInOut\" }) {\n  const easingFunctions = isEasingArray(ease2) ? ease2.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease2);\n  const state = {\n    done: false,\n    value: keyframeValues[0]\n  };\n  const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),\n    duration\n  );\n  const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n    ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)\n  });\n  return {\n    calculatedDuration: duration,\n    next: (t) => {\n      state.value = mapTimeToKeyframe(t);\n      state.done = t >= duration;\n      return state;\n    }\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/drivers/frame.mjs\nvar frameloopDriver = (update) => {\n  const passTimestamp = ({ timestamp }) => update(timestamp);\n  return {\n    start: (keepAlive = true) => frame.update(passTimestamp, keepAlive),\n    stop: () => cancelFrame(passTimestamp),\n    /**\n     * If we're processing this frame we can use the\n     * framelocked timestamp to keep things in sync.\n     */\n    now: () => frameData.isProcessing ? frameData.timestamp : time.now()\n  };\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs\nvar isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes2, { repeat, repeatType = \"loop\" }, finalKeyframe, speed = 1) {\n  const resolvedKeyframes = keyframes2.filter(isNotNull);\n  const useFirstKeyframe = speed < 0 || repeat && repeatType !== \"loop\" && repeat % 2 === 1;\n  const index = useFirstKeyframe ? 0 : resolvedKeyframes.length - 1;\n  return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.mjs\nvar transitionTypeMap = {\n  decay: inertia,\n  inertia,\n  tween: keyframes,\n  keyframes,\n  spring\n};\nfunction replaceTransitionType(transition) {\n  if (typeof transition.type === \"string\") {\n    transition.type = transitionTypeMap[transition.type];\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs\nvar WithPromise = class {\n  constructor() {\n    this.updateFinished();\n  }\n  get finished() {\n    return this._finished;\n  }\n  updateFinished() {\n    this._finished = new Promise((resolve) => {\n      this.resolve = resolve;\n    });\n  }\n  notifyFinished() {\n    this.resolve();\n  }\n  /**\n   * Allows the animation to be awaited.\n   *\n   * @deprecated Use `finished` instead.\n   */\n  then(onResolve, onReject) {\n    return this.finished.then(onResolve, onReject);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/JSAnimation.mjs\nvar percentToProgress = (percent2) => percent2 / 100;\nvar JSAnimation = class extends WithPromise {\n  constructor(options) {\n    super();\n    this.state = \"idle\";\n    this.startTime = null;\n    this.isStopped = false;\n    this.currentTime = 0;\n    this.holdTime = null;\n    this.playbackSpeed = 1;\n    this.stop = () => {\n      var _a, _b;\n      const { motionValue: motionValue2 } = this.options;\n      if (motionValue2 && motionValue2.updatedAt !== time.now()) {\n        this.tick(time.now());\n      }\n      this.isStopped = true;\n      if (this.state === \"idle\")\n        return;\n      this.teardown();\n      (_b = (_a = this.options).onStop) == null ? void 0 : _b.call(_a);\n    };\n    activeAnimations.mainThread++;\n    this.options = options;\n    this.initAnimation();\n    this.play();\n    if (options.autoplay === false)\n      this.pause();\n  }\n  initAnimation() {\n    const { options } = this;\n    replaceTransitionType(options);\n    const { type = keyframes, repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = options;\n    let { keyframes: keyframes$1 } = options;\n    const generatorFactory = type || keyframes;\n    if (false) {\n      invariant(keyframes$1.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n    }\n    if (generatorFactory !== keyframes && typeof keyframes$1[0] !== \"number\") {\n      this.mixKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n      keyframes$1 = [0, 100];\n    }\n    const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n    if (repeatType === \"mirror\") {\n      this.mirroredGenerator = generatorFactory({\n        ...options,\n        keyframes: [...keyframes$1].reverse(),\n        velocity: -velocity\n      });\n    }\n    if (generator.calculatedDuration === null) {\n      generator.calculatedDuration = calcGeneratorDuration(generator);\n    }\n    const { calculatedDuration } = generator;\n    this.calculatedDuration = calculatedDuration;\n    this.resolvedDuration = calculatedDuration + repeatDelay;\n    this.totalDuration = this.resolvedDuration * (repeat + 1) - repeatDelay;\n    this.generator = generator;\n  }\n  updateTime(timestamp) {\n    const animationTime = Math.round(timestamp - this.startTime) * this.playbackSpeed;\n    if (this.holdTime !== null) {\n      this.currentTime = this.holdTime;\n    } else {\n      this.currentTime = animationTime;\n    }\n  }\n  tick(timestamp, sample = false) {\n    const { generator, totalDuration, mixKeyframes, mirroredGenerator, resolvedDuration, calculatedDuration } = this;\n    if (this.startTime === null)\n      return generator.next(0);\n    const { delay: delay2 = 0, keyframes: keyframes2, repeat, repeatType, repeatDelay, type, onUpdate, finalKeyframe } = this.options;\n    if (this.speed > 0) {\n      this.startTime = Math.min(this.startTime, timestamp);\n    } else if (this.speed < 0) {\n      this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n    }\n    if (sample) {\n      this.currentTime = timestamp;\n    } else {\n      this.updateTime(timestamp);\n    }\n    const timeWithoutDelay = this.currentTime - delay2 * (this.playbackSpeed >= 0 ? 1 : -1);\n    const isInDelayPhase = this.playbackSpeed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n    this.currentTime = Math.max(timeWithoutDelay, 0);\n    if (this.state === \"finished\" && this.holdTime === null) {\n      this.currentTime = totalDuration;\n    }\n    let elapsed = this.currentTime;\n    let frameGenerator = generator;\n    if (repeat) {\n      const progress2 = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n      let currentIteration = Math.floor(progress2);\n      let iterationProgress = progress2 % 1;\n      if (!iterationProgress && progress2 >= 1) {\n        iterationProgress = 1;\n      }\n      iterationProgress === 1 && currentIteration--;\n      currentIteration = Math.min(currentIteration, repeat + 1);\n      const isOddIteration = Boolean(currentIteration % 2);\n      if (isOddIteration) {\n        if (repeatType === \"reverse\") {\n          iterationProgress = 1 - iterationProgress;\n          if (repeatDelay) {\n            iterationProgress -= repeatDelay / resolvedDuration;\n          }\n        } else if (repeatType === \"mirror\") {\n          frameGenerator = mirroredGenerator;\n        }\n      }\n      elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n    }\n    const state = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);\n    if (mixKeyframes) {\n      state.value = mixKeyframes(state.value);\n    }\n    let { done } = state;\n    if (!isInDelayPhase && calculatedDuration !== null) {\n      done = this.playbackSpeed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;\n    }\n    const isAnimationFinished = this.holdTime === null && (this.state === \"finished\" || this.state === \"running\" && done);\n    if (isAnimationFinished && type !== inertia) {\n      state.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe, this.speed);\n    }\n    if (onUpdate) {\n      onUpdate(state.value);\n    }\n    if (isAnimationFinished) {\n      this.finish();\n    }\n    return state;\n  }\n  /**\n   * Allows the returned animation to be awaited or promise-chained. Currently\n   * resolves when the animation finishes at all but in a future update could/should\n   * reject if its cancels.\n   */\n  then(resolve, reject) {\n    return this.finished.then(resolve, reject);\n  }\n  get duration() {\n    return millisecondsToSeconds(this.calculatedDuration);\n  }\n  get time() {\n    return millisecondsToSeconds(this.currentTime);\n  }\n  set time(newTime) {\n    var _a;\n    newTime = secondsToMilliseconds(newTime);\n    this.currentTime = newTime;\n    if (this.startTime === null || this.holdTime !== null || this.playbackSpeed === 0) {\n      this.holdTime = newTime;\n    } else if (this.driver) {\n      this.startTime = this.driver.now() - newTime / this.playbackSpeed;\n    }\n    (_a = this.driver) == null ? void 0 : _a.start(false);\n  }\n  get speed() {\n    return this.playbackSpeed;\n  }\n  set speed(newSpeed) {\n    this.updateTime(time.now());\n    const hasChanged = this.playbackSpeed !== newSpeed;\n    this.playbackSpeed = newSpeed;\n    if (hasChanged) {\n      this.time = millisecondsToSeconds(this.currentTime);\n    }\n  }\n  play() {\n    var _a, _b;\n    if (this.isStopped)\n      return;\n    const { driver = frameloopDriver, startTime } = this.options;\n    if (!this.driver) {\n      this.driver = driver((timestamp) => this.tick(timestamp));\n    }\n    (_b = (_a = this.options).onPlay) == null ? void 0 : _b.call(_a);\n    const now2 = this.driver.now();\n    if (this.state === \"finished\") {\n      this.updateFinished();\n      this.startTime = now2;\n    } else if (this.holdTime !== null) {\n      this.startTime = now2 - this.holdTime;\n    } else if (!this.startTime) {\n      this.startTime = startTime ?? now2;\n    }\n    if (this.state === \"finished\" && this.speed < 0) {\n      this.startTime += this.calculatedDuration;\n    }\n    this.holdTime = null;\n    this.state = \"running\";\n    this.driver.start();\n  }\n  pause() {\n    this.state = \"paused\";\n    this.updateTime(time.now());\n    this.holdTime = this.currentTime;\n  }\n  complete() {\n    if (this.state !== \"running\") {\n      this.play();\n    }\n    this.state = \"finished\";\n    this.holdTime = null;\n  }\n  finish() {\n    var _a, _b;\n    this.notifyFinished();\n    this.teardown();\n    this.state = \"finished\";\n    (_b = (_a = this.options).onComplete) == null ? void 0 : _b.call(_a);\n  }\n  cancel() {\n    var _a, _b;\n    this.holdTime = null;\n    this.startTime = 0;\n    this.tick(0);\n    this.teardown();\n    (_b = (_a = this.options).onCancel) == null ? void 0 : _b.call(_a);\n  }\n  teardown() {\n    this.state = \"idle\";\n    this.stopDriver();\n    this.startTime = this.holdTime = null;\n    activeAnimations.mainThread--;\n  }\n  stopDriver() {\n    if (!this.driver)\n      return;\n    this.driver.stop();\n    this.driver = void 0;\n  }\n  sample(sampleTime) {\n    this.startTime = 0;\n    return this.tick(sampleTime, true);\n  }\n  attachTimeline(timeline) {\n    var _a;\n    if (this.options.allowFlatten) {\n      this.options.type = \"keyframes\";\n      this.options.ease = \"linear\";\n      this.initAnimation();\n    }\n    (_a = this.driver) == null ? void 0 : _a.stop();\n    return timeline.observe(this);\n  }\n};\nfunction animateValue(options) {\n  return new JSAnimation(options);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs\nfunction fillWildcards(keyframes2) {\n  for (let i = 1; i < keyframes2.length; i++) {\n    keyframes2[i] ?? (keyframes2[i] = keyframes2[i - 1]);\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs\nvar radToDeg = (rad) => rad * 180 / Math.PI;\nvar rotate = (v) => {\n  const angle = radToDeg(Math.atan2(v[1], v[0]));\n  return rebaseAngle(angle);\n};\nvar matrix2dParsers = {\n  x: 4,\n  y: 5,\n  translateX: 4,\n  translateY: 5,\n  scaleX: 0,\n  scaleY: 3,\n  scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2,\n  rotate,\n  rotateZ: rotate,\n  skewX: (v) => radToDeg(Math.atan(v[1])),\n  skewY: (v) => radToDeg(Math.atan(v[2])),\n  skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2\n};\nvar rebaseAngle = (angle) => {\n  angle = angle % 360;\n  if (angle < 0)\n    angle += 360;\n  return angle;\n};\nvar rotateZ = rotate;\nvar scaleX = (v) => Math.sqrt(v[0] * v[0] + v[1] * v[1]);\nvar scaleY = (v) => Math.sqrt(v[4] * v[4] + v[5] * v[5]);\nvar matrix3dParsers = {\n  x: 12,\n  y: 13,\n  z: 14,\n  translateX: 12,\n  translateY: 13,\n  translateZ: 14,\n  scaleX,\n  scaleY,\n  scale: (v) => (scaleX(v) + scaleY(v)) / 2,\n  rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))),\n  rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))),\n  rotateZ,\n  rotate: rotateZ,\n  skewX: (v) => radToDeg(Math.atan(v[4])),\n  skewY: (v) => radToDeg(Math.atan(v[1])),\n  skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2\n};\nfunction defaultTransformValue(name) {\n  return name.includes(\"scale\") ? 1 : 0;\n}\nfunction parseValueFromTransform(transform2, name) {\n  if (!transform2 || transform2 === \"none\") {\n    return defaultTransformValue(name);\n  }\n  const matrix3dMatch = transform2.match(/^matrix3d\\(([-\\d.e\\s,]+)\\)$/u);\n  let parsers;\n  let match;\n  if (matrix3dMatch) {\n    parsers = matrix3dParsers;\n    match = matrix3dMatch;\n  } else {\n    const matrix2dMatch = transform2.match(/^matrix\\(([-\\d.e\\s,]+)\\)$/u);\n    parsers = matrix2dParsers;\n    match = matrix2dMatch;\n  }\n  if (!match) {\n    return defaultTransformValue(name);\n  }\n  const valueParser = parsers[name];\n  const values = match[1].split(\",\").map(convertTransformToNumber);\n  return typeof valueParser === \"function\" ? valueParser(values) : values[valueParser];\n}\nvar readTransformValue = (instance, name) => {\n  const { transform: transform2 = \"none\" } = getComputedStyle(instance);\n  return parseValueFromTransform(transform2, name);\n};\nfunction convertTransformToNumber(value) {\n  return parseFloat(value.trim());\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/utils/keys-transform.mjs\nvar transformPropOrder = [\n  \"transformPerspective\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"translateX\",\n  \"translateY\",\n  \"translateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\"\n];\nvar transformProps = /* @__PURE__ */ (() => new Set(transformPropOrder))();\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs\nvar isNumOrPxType = (v) => v === number || v === px;\nvar transformKeys = /* @__PURE__ */ new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n  const removedTransforms = [];\n  nonTranslationalTransformKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (value !== void 0) {\n      removedTransforms.push([key, value.get()]);\n      value.set(key.startsWith(\"scale\") ? 1 : 0);\n    }\n  });\n  return removedTransforms;\n}\nvar positionalValues = {\n  // Dimensions\n  width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n  height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n  top: (_bbox, { top }) => parseFloat(top),\n  left: (_bbox, { left }) => parseFloat(left),\n  bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n  right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n  // Transform\n  x: (_bbox, { transform: transform2 }) => parseValueFromTransform(transform2, \"x\"),\n  y: (_bbox, { transform: transform2 }) => parseValueFromTransform(transform2, \"y\")\n};\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs\nvar toResolve = /* @__PURE__ */ new Set();\nvar isScheduled = false;\nvar anyNeedsMeasurement = false;\nvar isForced = false;\nfunction measureAllKeyframes() {\n  if (anyNeedsMeasurement) {\n    const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n    const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n    const transformsToRestore = /* @__PURE__ */ new Map();\n    elementsToMeasure.forEach((element) => {\n      const removedTransforms = removeNonTranslationalTransform(element);\n      if (!removedTransforms.length)\n        return;\n      transformsToRestore.set(element, removedTransforms);\n      element.render();\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n    elementsToMeasure.forEach((element) => {\n      element.render();\n      const restore = transformsToRestore.get(element);\n      if (restore) {\n        restore.forEach(([key, value]) => {\n          var _a;\n          (_a = element.getValue(key)) == null ? void 0 : _a.set(value);\n        });\n      }\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n    resolversToMeasure.forEach((resolver) => {\n      if (resolver.suspendedScrollY !== void 0) {\n        window.scrollTo(0, resolver.suspendedScrollY);\n      }\n    });\n  }\n  anyNeedsMeasurement = false;\n  isScheduled = false;\n  toResolve.forEach((resolver) => resolver.complete(isForced));\n  toResolve.clear();\n}\nfunction readAllKeyframes() {\n  toResolve.forEach((resolver) => {\n    resolver.readKeyframes();\n    if (resolver.needsMeasurement) {\n      anyNeedsMeasurement = true;\n    }\n  });\n}\nfunction flushKeyframeResolvers() {\n  isForced = true;\n  readAllKeyframes();\n  measureAllKeyframes();\n  isForced = false;\n}\nvar KeyframeResolver = class {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {\n    this.state = \"pending\";\n    this.isAsync = false;\n    this.needsMeasurement = false;\n    this.unresolvedKeyframes = [...unresolvedKeyframes];\n    this.onComplete = onComplete;\n    this.name = name;\n    this.motionValue = motionValue2;\n    this.element = element;\n    this.isAsync = isAsync;\n  }\n  scheduleResolve() {\n    this.state = \"scheduled\";\n    if (this.isAsync) {\n      toResolve.add(this);\n      if (!isScheduled) {\n        isScheduled = true;\n        frame.read(readAllKeyframes);\n        frame.resolveKeyframes(measureAllKeyframes);\n      }\n    } else {\n      this.readKeyframes();\n      this.complete();\n    }\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;\n    if (unresolvedKeyframes[0] === null) {\n      const currentValue = motionValue2 == null ? void 0 : motionValue2.get();\n      const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n      if (currentValue !== void 0) {\n        unresolvedKeyframes[0] = currentValue;\n      } else if (element && name) {\n        const valueAsRead = element.readValue(name, finalKeyframe);\n        if (valueAsRead !== void 0 && valueAsRead !== null) {\n          unresolvedKeyframes[0] = valueAsRead;\n        }\n      }\n      if (unresolvedKeyframes[0] === void 0) {\n        unresolvedKeyframes[0] = finalKeyframe;\n      }\n      if (motionValue2 && currentValue === void 0) {\n        motionValue2.set(unresolvedKeyframes[0]);\n      }\n    }\n    fillWildcards(unresolvedKeyframes);\n  }\n  setFinalKeyframe() {\n  }\n  measureInitialState() {\n  }\n  renderEndStyles() {\n  }\n  measureEndState() {\n  }\n  complete(isForcedComplete = false) {\n    this.state = \"complete\";\n    this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete);\n    toResolve.delete(this);\n  }\n  cancel() {\n    if (this.state === \"scheduled\") {\n      toResolve.delete(this);\n      this.state = \"pending\";\n    }\n  }\n  resume() {\n    if (this.state === \"pending\")\n      this.scheduleResolve();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/is-css-var.mjs\nvar isCSSVar = (name) => name.startsWith(\"--\");\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/style-set.mjs\nfunction setStyle(element, name, value) {\n  isCSSVar(name) ? element.style.setProperty(name, value) : element.style[name] = value;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs\nvar supportsScrollTimeline = /* @__PURE__ */ memo(() => window.ScrollTimeline !== void 0);\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/flags.mjs\nvar supportsFlags = {};\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/memo.mjs\nfunction memoSupports(callback, supportsFlag) {\n  const memoized = memo(callback);\n  return () => supportsFlags[supportsFlag] ?? memoized();\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs\nvar supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n  } catch (e) {\n    return false;\n  }\n  return true;\n}, \"linearEasing\");\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/supported.mjs\nvar supportedWaapiEasing = {\n  linear: \"linear\",\n  ease: \"ease\",\n  easeIn: \"ease-in\",\n  easeOut: \"ease-out\",\n  easeInOut: \"ease-in-out\",\n  circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),\n  circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),\n  backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n  backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs\nfunction mapEasingToNativeEasing(easing, duration) {\n  if (!easing) {\n    return void 0;\n  } else if (typeof easing === \"function\") {\n    return supportsLinearEasing() ? generateLinearEasing(easing, duration) : \"ease-out\";\n  } else if (isBezierDefinition(easing)) {\n    return cubicBezierAsString(easing);\n  } else if (Array.isArray(easing)) {\n    return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);\n  } else {\n    return supportedWaapiEasing[easing];\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs\nfunction startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease: ease2 = \"easeOut\", times } = {}, pseudoElement = void 0) {\n  const keyframeOptions = {\n    [valueName]: keyframes2\n  };\n  if (times)\n    keyframeOptions.offset = times;\n  const easing = mapEasingToNativeEasing(ease2, duration);\n  if (Array.isArray(easing))\n    keyframeOptions.easing = easing;\n  if (statsBuffer.value) {\n    activeAnimations.waapi++;\n  }\n  const options = {\n    delay: delay2,\n    duration,\n    easing: !Array.isArray(easing) ? easing : \"linear\",\n    fill: \"both\",\n    iterations: repeat + 1,\n    direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\"\n  };\n  if (pseudoElement)\n    options.pseudoElement = pseudoElement;\n  const animation = element.animate(keyframeOptions, options);\n  if (statsBuffer.value) {\n    animation.finished.finally(() => {\n      activeAnimations.waapi--;\n    });\n  }\n  return animation;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs\nfunction isGenerator(type) {\n  return typeof type === \"function\" && \"applyToOptions\" in type;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs\nfunction applyGeneratorOptions({ type, ...options }) {\n  if (isGenerator(type) && supportsLinearEasing()) {\n    return type.applyToOptions(options);\n  } else {\n    options.duration ?? (options.duration = 300);\n    options.ease ?? (options.ease = \"easeOut\");\n  }\n  return options;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs\nvar NativeAnimation = class extends WithPromise {\n  constructor(options) {\n    super();\n    this.finishedTime = null;\n    this.isStopped = false;\n    if (!options)\n      return;\n    const { element, name, keyframes: keyframes2, pseudoElement, allowFlatten = false, finalKeyframe, onComplete } = options;\n    this.isPseudoElement = Boolean(pseudoElement);\n    this.allowFlatten = allowFlatten;\n    this.options = options;\n    invariant(typeof options.type !== \"string\", `animateMini doesn't support \"type\" as a string. Did you mean to import { spring } from \"motion\"?`);\n    const transition = applyGeneratorOptions(options);\n    this.animation = startWaapiAnimation(element, name, keyframes2, transition, pseudoElement);\n    if (transition.autoplay === false) {\n      this.animation.pause();\n    }\n    this.animation.onfinish = () => {\n      this.finishedTime = this.time;\n      if (!pseudoElement) {\n        const keyframe = getFinalKeyframe(keyframes2, this.options, finalKeyframe, this.speed);\n        if (this.updateMotionValue) {\n          this.updateMotionValue(keyframe);\n        } else {\n          setStyle(element, name, keyframe);\n        }\n        this.animation.cancel();\n      }\n      onComplete == null ? void 0 : onComplete();\n      this.notifyFinished();\n    };\n  }\n  play() {\n    if (this.isStopped)\n      return;\n    this.animation.play();\n    if (this.state === \"finished\") {\n      this.updateFinished();\n    }\n  }\n  pause() {\n    this.animation.pause();\n  }\n  complete() {\n    var _a, _b;\n    (_b = (_a = this.animation).finish) == null ? void 0 : _b.call(_a);\n  }\n  cancel() {\n    try {\n      this.animation.cancel();\n    } catch (e) {\n    }\n  }\n  stop() {\n    if (this.isStopped)\n      return;\n    this.isStopped = true;\n    const { state } = this;\n    if (state === \"idle\" || state === \"finished\") {\n      return;\n    }\n    if (this.updateMotionValue) {\n      this.updateMotionValue();\n    } else {\n      this.commitStyles();\n    }\n    if (!this.isPseudoElement)\n      this.cancel();\n  }\n  /**\n   * WAAPI doesn't natively have any interruption capabilities.\n   *\n   * In this method, we commit styles back to the DOM before cancelling\n   * the animation.\n   *\n   * This is designed to be overridden by NativeAnimationExtended, which\n   * will create a renderless JS animation and sample it twice to calculate\n   * its current value, \"previous\" value, and therefore allow\n   * Motion to also correctly calculate velocity for any subsequent animation\n   * while deferring the commit until the next animation frame.\n   */\n  commitStyles() {\n    var _a, _b;\n    if (!this.isPseudoElement) {\n      (_b = (_a = this.animation).commitStyles) == null ? void 0 : _b.call(_a);\n    }\n  }\n  get duration() {\n    var _a, _b;\n    const duration = ((_b = (_a = this.animation.effect) == null ? void 0 : _a.getComputedTiming) == null ? void 0 : _b.call(_a).duration) || 0;\n    return millisecondsToSeconds(Number(duration));\n  }\n  get time() {\n    return millisecondsToSeconds(Number(this.animation.currentTime) || 0);\n  }\n  set time(newTime) {\n    this.finishedTime = null;\n    this.animation.currentTime = secondsToMilliseconds(newTime);\n  }\n  /**\n   * The playback speed of the animation.\n   * 1 = normal speed, 2 = double speed, 0.5 = half speed.\n   */\n  get speed() {\n    return this.animation.playbackRate;\n  }\n  set speed(newSpeed) {\n    if (newSpeed < 0)\n      this.finishedTime = null;\n    this.animation.playbackRate = newSpeed;\n  }\n  get state() {\n    return this.finishedTime !== null ? \"finished\" : this.animation.playState;\n  }\n  get startTime() {\n    return Number(this.animation.startTime);\n  }\n  set startTime(newStartTime) {\n    this.animation.startTime = newStartTime;\n  }\n  /**\n   * Attaches a timeline to the animation, for instance the `ScrollTimeline`.\n   */\n  attachTimeline({ timeline, observe }) {\n    var _a;\n    if (this.allowFlatten) {\n      (_a = this.animation.effect) == null ? void 0 : _a.updateTiming({ easing: \"linear\" });\n    }\n    this.animation.onfinish = null;\n    if (timeline && supportsScrollTimeline()) {\n      this.animation.timeline = timeline;\n      return noop;\n    } else {\n      return observe(this);\n    }\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs\nvar unsupportedEasingFunctions = {\n  anticipate,\n  backInOut,\n  circInOut\n};\nfunction isUnsupportedEase(key) {\n  return key in unsupportedEasingFunctions;\n}\nfunction replaceStringEasing(transition) {\n  if (typeof transition.ease === \"string\" && isUnsupportedEase(transition.ease)) {\n    transition.ease = unsupportedEasingFunctions[transition.ease];\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs\nvar sampleDelta = 10;\nvar NativeAnimationExtended = class extends NativeAnimation {\n  constructor(options) {\n    replaceStringEasing(options);\n    replaceTransitionType(options);\n    super(options);\n    if (options.startTime) {\n      this.startTime = options.startTime;\n    }\n    this.options = options;\n  }\n  /**\n   * WAAPI doesn't natively have any interruption capabilities.\n   *\n   * Rather than read commited styles back out of the DOM, we can\n   * create a renderless JS animation and sample it twice to calculate\n   * its current value, \"previous\" value, and therefore allow\n   * Motion to calculate velocity for any subsequent animation.\n   */\n  updateMotionValue(value) {\n    const { motionValue: motionValue2, onUpdate, onComplete, element, ...options } = this.options;\n    if (!motionValue2)\n      return;\n    if (value !== void 0) {\n      motionValue2.set(value);\n      return;\n    }\n    const sampleAnimation = new JSAnimation({\n      ...options,\n      autoplay: false\n    });\n    const sampleTime = secondsToMilliseconds(this.finishedTime ?? this.time);\n    motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n    sampleAnimation.stop();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/is-html-element.mjs\nfunction isHTMLElement(element) {\n  return isObject(element) && \"offsetHeight\" in element;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs\nvar acceleratedValues = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\"\n  // TODO: Could be re-enabled now we have support for linear() easing\n  // \"background-color\"\n]);\nvar supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\nfunction supportsBrowserAnimation(options) {\n  var _a;\n  const { motionValue: motionValue2, name, repeatDelay, repeatType, damping, type } = options;\n  if (!isHTMLElement((_a = motionValue2 == null ? void 0 : motionValue2.owner) == null ? void 0 : _a.current)) {\n    return false;\n  }\n  const { onUpdate, transformTemplate } = motionValue2.owner.getProps();\n  return supportsWaapi() && name && acceleratedValues.has(name) && (name !== \"transform\" || !transformTemplate) && /**\n   * If we're outputting values to onUpdate then we can't use WAAPI as there's\n   * no way to read the value from WAAPI every frame.\n   */\n  !onUpdate && !repeatDelay && repeatType !== \"mirror\" && damping !== 0 && type !== \"inertia\";\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/is-animatable.mjs\nvar isAnimatable = (value, name) => {\n  if (name === \"zIndex\")\n    return false;\n  if (typeof value === \"number\" || Array.isArray(value))\n    return true;\n  if (typeof value === \"string\" && // It's animatable if we have a string\n  (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n  !value.startsWith(\"url(\")) {\n    return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs\nfunction hasKeyframesChanged(keyframes2) {\n  const current2 = keyframes2[0];\n  if (keyframes2.length === 1)\n    return true;\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] !== current2)\n      return true;\n  }\n}\nfunction canAnimate(keyframes2, name, type, velocity) {\n  const originKeyframe = keyframes2[0];\n  if (originKeyframe === null)\n    return false;\n  if (name === \"display\" || name === \"visibility\")\n    return true;\n  const targetKeyframe = keyframes2[keyframes2.length - 1];\n  const isOriginAnimatable = isAnimatable(originKeyframe, name);\n  const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n  warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n  if (!isOriginAnimatable || !isTargetAnimatable) {\n    return false;\n  }\n  return hasKeyframesChanged(keyframes2) || (type === \"spring\" || isGenerator(type)) && velocity;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs\nvar MAX_RESOLVE_DELAY = 40;\nvar AsyncMotionValueAnimation = class extends WithPromise {\n  constructor({ autoplay = true, delay: delay2 = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", keyframes: keyframes2, name, motionValue: motionValue2, element, ...options }) {\n    var _a;\n    super();\n    this.stop = () => {\n      var _a2, _b;\n      if (this._animation) {\n        this._animation.stop();\n        (_a2 = this.stopTimeline) == null ? void 0 : _a2.call(this);\n      }\n      (_b = this.keyframeResolver) == null ? void 0 : _b.cancel();\n    };\n    this.createdAt = time.now();\n    const optionsWithDefaults = {\n      autoplay,\n      delay: delay2,\n      type,\n      repeat,\n      repeatDelay,\n      repeatType,\n      name,\n      motionValue: motionValue2,\n      element,\n      ...options\n    };\n    const KeyframeResolver$1 = (element == null ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n    this.keyframeResolver = new KeyframeResolver$1(keyframes2, (resolvedKeyframes, finalKeyframe, forced) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe, optionsWithDefaults, !forced), name, motionValue2, element);\n    (_a = this.keyframeResolver) == null ? void 0 : _a.scheduleResolve();\n  }\n  onKeyframesResolved(keyframes2, finalKeyframe, options, sync2) {\n    this.keyframeResolver = void 0;\n    const { name, type, velocity, delay: delay2, isHandoff, onUpdate } = options;\n    this.resolvedAt = time.now();\n    if (!canAnimate(keyframes2, name, type, velocity)) {\n      if (MotionGlobalConfig.instantAnimations || !delay2) {\n        onUpdate == null ? void 0 : onUpdate(getFinalKeyframe(keyframes2, options, finalKeyframe));\n      }\n      keyframes2[0] = keyframes2[keyframes2.length - 1];\n      options.duration = 0;\n      options.repeat = 0;\n    }\n    const startTime = sync2 ? !this.resolvedAt ? this.createdAt : this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt : void 0;\n    const resolvedOptions = {\n      startTime,\n      finalKeyframe,\n      ...options,\n      keyframes: keyframes2\n    };\n    const animation = !isHandoff && supportsBrowserAnimation(resolvedOptions) ? new NativeAnimationExtended({\n      ...resolvedOptions,\n      element: resolvedOptions.motionValue.owner.current\n    }) : new JSAnimation(resolvedOptions);\n    animation.finished.then(() => this.notifyFinished()).catch(noop);\n    if (this.pendingTimeline) {\n      this.stopTimeline = animation.attachTimeline(this.pendingTimeline);\n      this.pendingTimeline = void 0;\n    }\n    this._animation = animation;\n  }\n  get finished() {\n    if (!this._animation) {\n      return this._finished;\n    } else {\n      return this.animation.finished;\n    }\n  }\n  then(onResolve, _onReject) {\n    return this.finished.finally(onResolve).then(() => {\n    });\n  }\n  get animation() {\n    var _a;\n    if (!this._animation) {\n      (_a = this.keyframeResolver) == null ? void 0 : _a.resume();\n      flushKeyframeResolvers();\n    }\n    return this._animation;\n  }\n  get duration() {\n    return this.animation.duration;\n  }\n  get time() {\n    return this.animation.time;\n  }\n  set time(newTime) {\n    this.animation.time = newTime;\n  }\n  get speed() {\n    return this.animation.speed;\n  }\n  get state() {\n    return this.animation.state;\n  }\n  set speed(newSpeed) {\n    this.animation.speed = newSpeed;\n  }\n  get startTime() {\n    return this.animation.startTime;\n  }\n  attachTimeline(timeline) {\n    if (this._animation) {\n      this.stopTimeline = this.animation.attachTimeline(timeline);\n    } else {\n      this.pendingTimeline = timeline;\n    }\n    return () => this.stop();\n  }\n  play() {\n    this.animation.play();\n  }\n  pause() {\n    this.animation.pause();\n  }\n  complete() {\n    this.animation.complete();\n  }\n  cancel() {\n    var _a;\n    if (this._animation) {\n      this.animation.cancel();\n    }\n    (_a = this.keyframeResolver) == null ? void 0 : _a.cancel();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/GroupAnimation.mjs\nvar GroupAnimation = class {\n  constructor(animations2) {\n    this.stop = () => this.runAll(\"stop\");\n    this.animations = animations2.filter(Boolean);\n  }\n  get finished() {\n    return Promise.all(this.animations.map((animation) => animation.finished));\n  }\n  /**\n   * TODO: Filter out cancelled or stopped animations before returning\n   */\n  getAll(propName) {\n    return this.animations[0][propName];\n  }\n  setAll(propName, newValue) {\n    for (let i = 0; i < this.animations.length; i++) {\n      this.animations[i][propName] = newValue;\n    }\n  }\n  attachTimeline(timeline) {\n    const subscriptions = this.animations.map((animation) => animation.attachTimeline(timeline));\n    return () => {\n      subscriptions.forEach((cancel, i) => {\n        cancel && cancel();\n        this.animations[i].stop();\n      });\n    };\n  }\n  get time() {\n    return this.getAll(\"time\");\n  }\n  set time(time2) {\n    this.setAll(\"time\", time2);\n  }\n  get speed() {\n    return this.getAll(\"speed\");\n  }\n  set speed(speed) {\n    this.setAll(\"speed\", speed);\n  }\n  get state() {\n    return this.getAll(\"state\");\n  }\n  get startTime() {\n    return this.getAll(\"startTime\");\n  }\n  get duration() {\n    let max = 0;\n    for (let i = 0; i < this.animations.length; i++) {\n      max = Math.max(max, this.animations[i].duration);\n    }\n    return max;\n  }\n  runAll(methodName) {\n    this.animations.forEach((controls) => controls[methodName]());\n  }\n  play() {\n    this.runAll(\"play\");\n  }\n  pause() {\n    this.runAll(\"pause\");\n  }\n  cancel() {\n    this.runAll(\"cancel\");\n  }\n  complete() {\n    this.runAll(\"complete\");\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs\nvar GroupAnimationWithThen = class extends GroupAnimation {\n  then(onResolve, _onReject) {\n    return this.finished.finally(onResolve).then(() => {\n    });\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs\nvar NativeAnimationWrapper = class extends NativeAnimation {\n  constructor(animation) {\n    super();\n    this.animation = animation;\n    animation.onfinish = () => {\n      this.finishedTime = this.time;\n      this.notifyFinished();\n    };\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/active-animations.mjs\nvar animationMaps = /* @__PURE__ */ new WeakMap();\nvar animationMapKey = (name, pseudoElement = \"\") => `${name}:${pseudoElement}`;\nfunction getAnimationMap(element) {\n  const map = animationMaps.get(element) || /* @__PURE__ */ new Map();\n  animationMaps.set(element, map);\n  return map;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs\nvar splitCSSVariableRegex = (\n  // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n  /^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u\n);\nfunction parseCSSVariable(current2) {\n  const match = splitCSSVariableRegex.exec(current2);\n  if (!match)\n    return [,];\n  const [, token1, token2, fallback] = match;\n  return [`--${token1 ?? token2}`, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current2, element, depth = 1) {\n  invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current2}\". This may indicate a circular fallback dependency.`);\n  const [token, fallback] = parseCSSVariable(current2);\n  if (!token)\n    return;\n  const resolved = window.getComputedStyle(element).getPropertyValue(token);\n  if (resolved) {\n    const trimmed = resolved.trim();\n    return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n  }\n  return isCSSVariableToken(fallback) ? getVariableValue(fallback, element, depth + 1) : fallback;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs\nfunction getValueTransition(transition, key) {\n  return (transition == null ? void 0 : transition[key]) ?? (transition == null ? void 0 : transition[\"default\"]) ?? transition;\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/utils/keys-position.mjs\nvar positionalKeys = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"top\",\n  \"left\",\n  \"right\",\n  \"bottom\",\n  ...transformPropOrder\n]);\n\n// ../../../node_modules/motion-dom/dist/es/value/types/test.mjs\nvar testValueType = (v) => (type) => type.test(v);\n\n// ../../../node_modules/motion-dom/dist/es/value/types/auto.mjs\nvar auto = {\n  test: (v) => v === \"auto\",\n  parse: (v) => v\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/dimensions.mjs\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\nvar findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\n// ../../../node_modules/motion-dom/dist/es/value/types/maps/transform.mjs\nvar transformValueTypes = {\n  rotate: degrees,\n  rotateX: degrees,\n  rotateY: degrees,\n  rotateZ: degrees,\n  scale,\n  scaleX: scale,\n  scaleY: scale,\n  scaleZ: scale,\n  skew: degrees,\n  skewX: degrees,\n  skewY: degrees,\n  distance: px,\n  translateX: px,\n  translateY: px,\n  translateZ: px,\n  x: px,\n  y: px,\n  z: px,\n  perspective: px,\n  transformPerspective: px,\n  opacity: alpha,\n  originX: progressPercentage,\n  originY: progressPercentage,\n  originZ: px\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/int.mjs\nvar int = {\n  ...number,\n  transform: Math.round\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/maps/number.mjs\nvar numberValueTypes = {\n  // Border props\n  borderWidth: px,\n  borderTopWidth: px,\n  borderRightWidth: px,\n  borderBottomWidth: px,\n  borderLeftWidth: px,\n  borderRadius: px,\n  radius: px,\n  borderTopLeftRadius: px,\n  borderTopRightRadius: px,\n  borderBottomRightRadius: px,\n  borderBottomLeftRadius: px,\n  // Positioning props\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  // Spacing props\n  padding: px,\n  paddingTop: px,\n  paddingRight: px,\n  paddingBottom: px,\n  paddingLeft: px,\n  margin: px,\n  marginTop: px,\n  marginRight: px,\n  marginBottom: px,\n  marginLeft: px,\n  // Misc\n  backgroundPositionX: px,\n  backgroundPositionY: px,\n  ...transformValueTypes,\n  zIndex: int,\n  // SVG\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/complex/filter.mjs\nvar maxDefaults = /* @__PURE__ */ new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n  const [name, value] = v.slice(0, -1).split(\"(\");\n  if (name === \"drop-shadow\")\n    return v;\n  const [number2] = value.match(floatRegex) || [];\n  if (!number2)\n    return v;\n  const unit = value.replace(number2, \"\");\n  let defaultValue = maxDefaults.has(name) ? 1 : 0;\n  if (number2 !== value)\n    defaultValue *= 100;\n  return name + \"(\" + defaultValue + unit + \")\";\n}\nvar functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nvar filter = {\n  ...complex,\n  getAnimatableNone: (v) => {\n    const functions = v.match(functionRegex);\n    return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/maps/defaults.mjs\nvar defaultValueTypes = {\n  ...numberValueTypes,\n  // Color props\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  // Border props\n  borderColor: color,\n  borderTopColor: color,\n  borderRightColor: color,\n  borderBottomColor: color,\n  borderLeftColor: color,\n  filter,\n  WebkitFilter: filter\n};\nvar getDefaultValueType = (key) => defaultValueTypes[key];\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/animatable-none.mjs\nfunction getAnimatableNone2(key, value) {\n  let defaultValueType = getDefaultValueType(key);\n  if (defaultValueType !== filter)\n    defaultValueType = complex;\n  return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs\nfunction isNone(value) {\n  if (typeof value === \"number\") {\n    return value === 0;\n  } else if (value !== null) {\n    return value === \"none\" || value === \"0\" || isZeroValueString(value);\n  } else {\n    return true;\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs\nvar invalidTemplates = /* @__PURE__ */ new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n  let i = 0;\n  let animatableTemplate = void 0;\n  while (i < unresolvedKeyframes.length && !animatableTemplate) {\n    const keyframe = unresolvedKeyframes[i];\n    if (typeof keyframe === \"string\" && !invalidTemplates.has(keyframe) && analyseComplexValue(keyframe).values.length) {\n      animatableTemplate = unresolvedKeyframes[i];\n    }\n    i++;\n  }\n  if (animatableTemplate && name) {\n    for (const noneIndex of noneKeyframeIndexes) {\n      unresolvedKeyframes[noneIndex] = getAnimatableNone2(name, animatableTemplate);\n    }\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs\nvar DOMKeyframesResolver = class extends KeyframeResolver {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element) {\n    super(unresolvedKeyframes, onComplete, name, motionValue2, element, true);\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, element, name } = this;\n    if (!element || !element.current)\n      return;\n    super.readKeyframes();\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      let keyframe = unresolvedKeyframes[i];\n      if (typeof keyframe === \"string\") {\n        keyframe = keyframe.trim();\n        if (isCSSVariableToken(keyframe)) {\n          const resolved = getVariableValue(keyframe, element.current);\n          if (resolved !== void 0) {\n            unresolvedKeyframes[i] = resolved;\n          }\n          if (i === unresolvedKeyframes.length - 1) {\n            this.finalKeyframe = keyframe;\n          }\n        }\n      }\n    }\n    this.resolveNoneKeyframes();\n    if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n      return;\n    }\n    const [origin, target] = unresolvedKeyframes;\n    const originType = findDimensionValueType(origin);\n    const targetType = findDimensionValueType(target);\n    if (originType === targetType)\n      return;\n    if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n      for (let i = 0; i < unresolvedKeyframes.length; i++) {\n        const value = unresolvedKeyframes[i];\n        if (typeof value === \"string\") {\n          unresolvedKeyframes[i] = parseFloat(value);\n        }\n      }\n    } else if (positionalValues[name]) {\n      this.needsMeasurement = true;\n    }\n  }\n  resolveNoneKeyframes() {\n    const { unresolvedKeyframes, name } = this;\n    const noneKeyframeIndexes = [];\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      if (unresolvedKeyframes[i] === null || isNone(unresolvedKeyframes[i])) {\n        noneKeyframeIndexes.push(i);\n      }\n    }\n    if (noneKeyframeIndexes.length) {\n      makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n    }\n  }\n  measureInitialState() {\n    const { element, unresolvedKeyframes, name } = this;\n    if (!element || !element.current)\n      return;\n    if (name === \"height\") {\n      this.suspendedScrollY = window.pageYOffset;\n    }\n    this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    unresolvedKeyframes[0] = this.measuredOrigin;\n    const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n    if (measureKeyframe !== void 0) {\n      element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n    }\n  }\n  measureEndState() {\n    var _a;\n    const { element, name, unresolvedKeyframes } = this;\n    if (!element || !element.current)\n      return;\n    const value = element.getValue(name);\n    value && value.jump(this.measuredOrigin, false);\n    const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n    const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n    unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    if (finalKeyframe !== null && this.finalKeyframe === void 0) {\n      this.finalKeyframe = finalKeyframe;\n    }\n    if ((_a = this.removedTransforms) == null ? void 0 : _a.length) {\n      this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n        element.getValue(unsetTransformName).set(unsetTransformValue);\n      });\n    }\n    this.resolveNoneKeyframes();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/px-values.mjs\nvar pxValues = /* @__PURE__ */ new Set([\n  // Border props\n  \"borderWidth\",\n  \"borderTopWidth\",\n  \"borderRightWidth\",\n  \"borderBottomWidth\",\n  \"borderLeftWidth\",\n  \"borderRadius\",\n  \"radius\",\n  \"borderTopLeftRadius\",\n  \"borderTopRightRadius\",\n  \"borderBottomRightRadius\",\n  \"borderBottomLeftRadius\",\n  // Positioning props\n  \"width\",\n  \"maxWidth\",\n  \"height\",\n  \"maxHeight\",\n  \"top\",\n  \"right\",\n  \"bottom\",\n  \"left\",\n  // Spacing props\n  \"padding\",\n  \"paddingTop\",\n  \"paddingRight\",\n  \"paddingBottom\",\n  \"paddingLeft\",\n  \"margin\",\n  \"marginTop\",\n  \"marginRight\",\n  \"marginBottom\",\n  \"marginLeft\",\n  // Misc\n  \"backgroundPositionX\",\n  \"backgroundPositionY\"\n]);\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs\nfunction applyPxDefaults(keyframes2, name) {\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (typeof keyframes2[i] === \"number\" && pxValues.has(name)) {\n      keyframes2[i] = keyframes2[i] + \"px\";\n    }\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs\nfunction isWaapiSupportedEasing(easing) {\n  return Boolean(typeof easing === \"function\" && supportsLinearEasing() || !easing || typeof easing === \"string\" && (easing in supportedWaapiEasing || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/supports/partial-keyframes.mjs\nvar supportsPartialKeyframes = /* @__PURE__ */ memo(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: [1] });\n  } catch (e) {\n    return false;\n  }\n  return true;\n});\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs\nvar acceleratedValues2 = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\"\n  // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n  // or until we implement support for linear() easing.\n  // \"background-color\"\n]);\n\n// ../../../node_modules/motion-dom/dist/es/utils/resolve-elements.mjs\nfunction resolveElements(elementOrSelector, scope, selectorCache) {\n  if (elementOrSelector instanceof EventTarget) {\n    return [elementOrSelector];\n  } else if (typeof elementOrSelector === \"string\") {\n    let root = document;\n    if (scope) {\n      root = scope.current;\n    }\n    const elements = (selectorCache == null ? void 0 : selectorCache[elementOrSelector]) ?? root.querySelectorAll(elementOrSelector);\n    return elements ? Array.from(elements) : [];\n  }\n  return Array.from(elementOrSelector);\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/get-as-type.mjs\nvar getValueAsType = (value, type) => {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs\nfunction camelToDash(str) {\n  return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`);\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/utils/create-dom-effect.mjs\nfunction createSelectorEffect(subjectEffect) {\n  return (subject, values) => {\n    const elements = resolveElements(subject);\n    const subscriptions = [];\n    for (const element of elements) {\n      const remove = subjectEffect(element, values);\n      subscriptions.push(remove);\n    }\n    return () => {\n      for (const remove of subscriptions)\n        remove();\n    };\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/MotionValueState.mjs\nvar MotionValueState = class {\n  constructor() {\n    this.latest = {};\n    this.values = /* @__PURE__ */ new Map();\n  }\n  set(name, value, render, computed, useDefaultValueType = true) {\n    const existingValue = this.values.get(name);\n    if (existingValue) {\n      existingValue.onRemove();\n    }\n    const onChange = () => {\n      const v = value.get();\n      if (useDefaultValueType) {\n        this.latest[name] = getValueAsType(v, numberValueTypes[name]);\n      } else {\n        this.latest[name] = v;\n      }\n      render && frame.render(render);\n    };\n    onChange();\n    const cancelOnChange = value.on(\"change\", onChange);\n    computed && value.addDependent(computed);\n    const remove = () => {\n      cancelOnChange();\n      render && cancelFrame(render);\n      this.values.delete(name);\n      computed && value.removeDependent(computed);\n    };\n    this.values.set(name, { value, onRemove: remove });\n    return remove;\n  }\n  get(name) {\n    var _a;\n    return (_a = this.values.get(name)) == null ? void 0 : _a.value;\n  }\n  destroy() {\n    for (const value of this.values.values()) {\n      value.onRemove();\n    }\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/effects/utils/create-effect.mjs\nfunction createEffect(addValue) {\n  const stateCache = /* @__PURE__ */ new WeakMap();\n  const subscriptions = [];\n  return (subject, values) => {\n    const state = stateCache.get(subject) ?? new MotionValueState();\n    stateCache.set(subject, state);\n    for (const key in values) {\n      const value = values[key];\n      const remove = addValue(subject, state, key, value);\n      subscriptions.push(remove);\n    }\n    return () => {\n      for (const cancel of subscriptions)\n        cancel();\n    };\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/attr/index.mjs\nfunction canSetAsProperty(element, name) {\n  if (!(name in element))\n    return false;\n  const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(element), name) || Object.getOwnPropertyDescriptor(element, name);\n  return descriptor && typeof descriptor.set === \"function\";\n}\nvar addAttrValue = (element, state, key, value) => {\n  const isProp = canSetAsProperty(element, key);\n  const name = isProp ? key : key.startsWith(\"data\") || key.startsWith(\"aria\") ? camelToDash(key) : key;\n  const render = isProp ? () => {\n    element[name] = state.latest[key];\n  } : () => {\n    const v = state.latest[key];\n    if (v === null || v === void 0) {\n      element.removeAttribute(name);\n    } else {\n      element.setAttribute(name, String(v));\n    }\n  };\n  return state.set(key, value, render);\n};\nvar attrEffect = /* @__PURE__ */ createSelectorEffect(\n  /* @__PURE__ */ createEffect(addAttrValue)\n);\n\n// ../../../node_modules/motion-dom/dist/es/effects/prop/index.mjs\nvar propEffect = /* @__PURE__ */ createEffect((subject, state, key, value) => {\n  return state.set(key, value, () => {\n    subject[key] = state.latest[key];\n  }, void 0, false);\n});\n\n// ../../../node_modules/motion-dom/dist/es/value/index.mjs\nvar MAX_VELOCITY_DELTA = 30;\nvar isFloat = (value) => {\n  return !isNaN(parseFloat(value));\n};\nvar collectMotionValues = {\n  current: void 0\n};\nvar MotionValue = class {\n  /**\n   * @param init - The initiating value\n   * @param config - Optional configuration options\n   *\n   * -  `transformer`: A function to transform incoming values with.\n   */\n  constructor(init, options = {}) {\n    this.canTrackVelocity = null;\n    this.events = {};\n    this.updateAndNotify = (v, render = true) => {\n      var _a, _b;\n      const currentTime = time.now();\n      if (this.updatedAt !== currentTime) {\n        this.setPrevFrameValue();\n      }\n      this.prev = this.current;\n      this.setCurrent(v);\n      if (this.current !== this.prev) {\n        (_a = this.events.change) == null ? void 0 : _a.notify(this.current);\n        if (this.dependents) {\n          for (const dependent of this.dependents) {\n            dependent.dirty();\n          }\n        }\n      }\n      if (render) {\n        (_b = this.events.renderRequest) == null ? void 0 : _b.notify(this.current);\n      }\n    };\n    this.hasAnimated = false;\n    this.setCurrent(init);\n    this.owner = options.owner;\n  }\n  setCurrent(current2) {\n    this.current = current2;\n    this.updatedAt = time.now();\n    if (this.canTrackVelocity === null && current2 !== void 0) {\n      this.canTrackVelocity = isFloat(this.current);\n    }\n  }\n  setPrevFrameValue(prevFrameValue = this.current) {\n    this.prevFrameValue = prevFrameValue;\n    this.prevUpdatedAt = this.updatedAt;\n  }\n  /**\n   * Adds a function that will be notified when the `MotionValue` is updated.\n   *\n   * It returns a function that, when called, will cancel the subscription.\n   *\n   * When calling `onChange` inside a React component, it should be wrapped with the\n   * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n   * from the `useEffect` function to ensure you don't add duplicate subscribers..\n   *\n   * ```jsx\n   * export const MyComponent = () => {\n   *   const x = useMotionValue(0)\n   *   const y = useMotionValue(0)\n   *   const opacity = useMotionValue(1)\n   *\n   *   useEffect(() => {\n   *     function updateOpacity() {\n   *       const maxXY = Math.max(x.get(), y.get())\n   *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n   *       opacity.set(newOpacity)\n   *     }\n   *\n   *     const unsubscribeX = x.on(\"change\", updateOpacity)\n   *     const unsubscribeY = y.on(\"change\", updateOpacity)\n   *\n   *     return () => {\n   *       unsubscribeX()\n   *       unsubscribeY()\n   *     }\n   *   }, [])\n   *\n   *   return <motion.div style={{ x }} />\n   * }\n   * ```\n   *\n   * @param subscriber - A function that receives the latest value.\n   * @returns A function that, when called, will cancel this subscription.\n   *\n   * @deprecated\n   */\n  onChange(subscription) {\n    if (false) {\n      warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n    }\n    return this.on(\"change\", subscription);\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    const unsubscribe = this.events[eventName].add(callback);\n    if (eventName === \"change\") {\n      return () => {\n        unsubscribe();\n        frame.read(() => {\n          if (!this.events.change.getSize()) {\n            this.stop();\n          }\n        });\n      };\n    }\n    return unsubscribe;\n  }\n  clearListeners() {\n    for (const eventManagers in this.events) {\n      this.events[eventManagers].clear();\n    }\n  }\n  /**\n   * Attaches a passive effect to the `MotionValue`.\n   */\n  attach(passiveEffect, stopPassiveEffect) {\n    this.passiveEffect = passiveEffect;\n    this.stopPassiveEffect = stopPassiveEffect;\n  }\n  /**\n   * Sets the state of the `MotionValue`.\n   *\n   * @remarks\n   *\n   * ```jsx\n   * const x = useMotionValue(0)\n   * x.set(10)\n   * ```\n   *\n   * @param latest - Latest value to set.\n   * @param render - Whether to notify render subscribers. Defaults to `true`\n   *\n   * @public\n   */\n  set(v, render = true) {\n    if (!render || !this.passiveEffect) {\n      this.updateAndNotify(v, render);\n    } else {\n      this.passiveEffect(v, this.updateAndNotify);\n    }\n  }\n  setWithVelocity(prev, current2, delta) {\n    this.set(current2);\n    this.prev = void 0;\n    this.prevFrameValue = prev;\n    this.prevUpdatedAt = this.updatedAt - delta;\n  }\n  /**\n   * Set the state of the `MotionValue`, stopping any active animations,\n   * effects, and resets velocity to `0`.\n   */\n  jump(v, endAnimation = true) {\n    this.updateAndNotify(v);\n    this.prev = v;\n    this.prevUpdatedAt = this.prevFrameValue = void 0;\n    endAnimation && this.stop();\n    if (this.stopPassiveEffect)\n      this.stopPassiveEffect();\n  }\n  dirty() {\n    var _a;\n    (_a = this.events.change) == null ? void 0 : _a.notify(this.current);\n  }\n  addDependent(dependent) {\n    if (!this.dependents) {\n      this.dependents = /* @__PURE__ */ new Set();\n    }\n    this.dependents.add(dependent);\n  }\n  removeDependent(dependent) {\n    if (this.dependents) {\n      this.dependents.delete(dependent);\n    }\n  }\n  /**\n   * Returns the latest state of `MotionValue`\n   *\n   * @returns - The latest state of `MotionValue`\n   *\n   * @public\n   */\n  get() {\n    if (collectMotionValues.current) {\n      collectMotionValues.current.push(this);\n    }\n    return this.current;\n  }\n  /**\n   * @public\n   */\n  getPrevious() {\n    return this.prev;\n  }\n  /**\n   * Returns the latest velocity of `MotionValue`\n   *\n   * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n   *\n   * @public\n   */\n  getVelocity() {\n    const currentTime = time.now();\n    if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n      return 0;\n    }\n    const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n    return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);\n  }\n  /**\n   * Registers a new animation to control this `MotionValue`. Only one\n   * animation can drive a `MotionValue` at one time.\n   *\n   * ```jsx\n   * value.start()\n   * ```\n   *\n   * @param animation - A function that starts the provided animation\n   */\n  start(startAnimation) {\n    this.stop();\n    return new Promise((resolve) => {\n      this.hasAnimated = true;\n      this.animation = startAnimation(resolve);\n      if (this.events.animationStart) {\n        this.events.animationStart.notify();\n      }\n    }).then(() => {\n      if (this.events.animationComplete) {\n        this.events.animationComplete.notify();\n      }\n      this.clearAnimation();\n    });\n  }\n  /**\n   * Stop the currently active animation.\n   *\n   * @public\n   */\n  stop() {\n    if (this.animation) {\n      this.animation.stop();\n      if (this.events.animationCancel) {\n        this.events.animationCancel.notify();\n      }\n    }\n    this.clearAnimation();\n  }\n  /**\n   * Returns `true` if this value is currently animating.\n   *\n   * @public\n   */\n  isAnimating() {\n    return !!this.animation;\n  }\n  clearAnimation() {\n    delete this.animation;\n  }\n  /**\n   * Destroy and clean up subscribers to this `MotionValue`.\n   *\n   * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n   * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n   * created a `MotionValue` via the `motionValue` function.\n   *\n   * @public\n   */\n  destroy() {\n    var _a, _b;\n    (_a = this.dependents) == null ? void 0 : _a.clear();\n    (_b = this.events.destroy) == null ? void 0 : _b.notify();\n    this.clearListeners();\n    this.stop();\n    if (this.stopPassiveEffect) {\n      this.stopPassiveEffect();\n    }\n  }\n};\nfunction motionValue(init, options) {\n  return new MotionValue(init, options);\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/style/transform.mjs\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nfunction buildTransform(state) {\n  let transform2 = \"\";\n  let transformIsDefault = true;\n  for (let i = 0; i < transformPropOrder.length; i++) {\n    const key = transformPropOrder[i];\n    const value = state.latest[key];\n    if (value === void 0)\n      continue;\n    let valueIsDefault = true;\n    if (typeof value === \"number\") {\n      valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n    } else {\n      valueIsDefault = parseFloat(value) === 0;\n    }\n    if (!valueIsDefault) {\n      transformIsDefault = false;\n      const transformName = translateAlias[key] || key;\n      const valueToRender = state.latest[key];\n      transform2 += `${transformName}(${valueToRender}) `;\n    }\n  }\n  return transformIsDefault ? \"none\" : transform2.trim();\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/style/index.mjs\nvar originProps = /* @__PURE__ */ new Set([\"originX\", \"originY\", \"originZ\"]);\nvar addStyleValue = (element, state, key, value) => {\n  let render = void 0;\n  let computed = void 0;\n  if (transformProps.has(key)) {\n    if (!state.get(\"transform\")) {\n      if (!isHTMLElement(element) && !state.get(\"transformBox\")) {\n        addStyleValue(element, state, \"transformBox\", new MotionValue(\"fill-box\"));\n      }\n      state.set(\"transform\", new MotionValue(\"none\"), () => {\n        element.style.transform = buildTransform(state);\n      });\n    }\n    computed = state.get(\"transform\");\n  } else if (originProps.has(key)) {\n    if (!state.get(\"transformOrigin\")) {\n      state.set(\"transformOrigin\", new MotionValue(\"\"), () => {\n        const originX = state.latest.originX ?? \"50%\";\n        const originY = state.latest.originY ?? \"50%\";\n        const originZ = state.latest.originZ ?? 0;\n        element.style.transformOrigin = `${originX} ${originY} ${originZ}`;\n      });\n    }\n    computed = state.get(\"transformOrigin\");\n  } else if (isCSSVar(key)) {\n    render = () => {\n      element.style.setProperty(key, state.latest[key]);\n    };\n  } else {\n    render = () => {\n      element.style[key] = state.latest[key];\n    };\n  }\n  return state.set(key, value, render, computed);\n};\nvar styleEffect = /* @__PURE__ */ createSelectorEffect(\n  /* @__PURE__ */ createEffect(addStyleValue)\n);\n\n// ../../../node_modules/motion-dom/dist/es/effects/svg/index.mjs\nvar toPx = px.transform;\nfunction addSVGPathValue(element, state, key, value) {\n  frame.render(() => element.setAttribute(\"pathLength\", \"1\"));\n  if (key === \"pathOffset\") {\n    return state.set(key, value, () => element.setAttribute(\"stroke-dashoffset\", toPx(-state.latest[key])));\n  } else {\n    if (!state.get(\"stroke-dasharray\")) {\n      state.set(\"stroke-dasharray\", new MotionValue(\"1 1\"), () => {\n        const { pathLength = 1, pathSpacing } = state.latest;\n        element.setAttribute(\"stroke-dasharray\", `${toPx(pathLength)} ${toPx(pathSpacing ?? 1 - Number(pathLength))}`);\n      });\n    }\n    return state.set(key, value, void 0, state.get(\"stroke-dasharray\"));\n  }\n}\nvar addSVGValue = (element, state, key, value) => {\n  if (key.startsWith(\"path\")) {\n    return addSVGPathValue(element, state, key, value);\n  } else if (key.startsWith(\"attr\")) {\n    return addAttrValue(element, state, convertAttrKey(key), value);\n  }\n  const handler = key in element.style ? addStyleValue : addAttrValue;\n  return handler(element, state, key, value);\n};\nvar svgEffect = /* @__PURE__ */ createSelectorEffect(\n  /* @__PURE__ */ createEffect(addSVGValue)\n);\nfunction convertAttrKey(key) {\n  return key.replace(/^attr([A-Z])/, (_, firstChar) => firstChar.toLowerCase());\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/microtask.mjs\nvar { schedule: microtask, cancel: cancelMicrotask } = /* @__PURE__ */ createRenderBatcher(queueMicrotask, false);\n\n// ../../../node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs\nvar isDragging = {\n  x: false,\n  y: false\n};\nfunction isDragActive() {\n  return isDragging.x || isDragging.y;\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs\nfunction setDragLock(axis) {\n  if (axis === \"x\" || axis === \"y\") {\n    if (isDragging[axis]) {\n      return null;\n    } else {\n      isDragging[axis] = true;\n      return () => {\n        isDragging[axis] = false;\n      };\n    }\n  } else {\n    if (isDragging.x || isDragging.y) {\n      return null;\n    } else {\n      isDragging.x = isDragging.y = true;\n      return () => {\n        isDragging.x = isDragging.y = false;\n      };\n    }\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/utils/setup.mjs\nfunction setupGesture(elementOrSelector, options) {\n  const elements = resolveElements(elementOrSelector);\n  const gestureAbortController = new AbortController();\n  const eventOptions = {\n    passive: true,\n    ...options,\n    signal: gestureAbortController.signal\n  };\n  const cancel = () => gestureAbortController.abort();\n  return [elements, eventOptions, cancel];\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/hover.mjs\nfunction isValidHover(event) {\n  return !(event.pointerType === \"touch\" || isDragActive());\n}\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n  const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n  const onPointerEnter = (enterEvent) => {\n    if (!isValidHover(enterEvent))\n      return;\n    const { target } = enterEvent;\n    const onHoverEnd = onHoverStart(target, enterEvent);\n    if (typeof onHoverEnd !== \"function\" || !target)\n      return;\n    const onPointerLeave = (leaveEvent) => {\n      if (!isValidHover(leaveEvent))\n        return;\n      onHoverEnd(leaveEvent);\n      target.removeEventListener(\"pointerleave\", onPointerLeave);\n    };\n    target.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n  };\n  elements.forEach((element) => {\n    element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n  });\n  return cancel;\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs\nvar isNodeOrChild = (parent, child) => {\n  if (!child) {\n    return false;\n  } else if (parent === child) {\n    return true;\n  } else {\n    return isNodeOrChild(parent, child.parentElement);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs\nvar isPrimaryPointer = (event) => {\n  if (event.pointerType === \"mouse\") {\n    return typeof event.button !== \"number\" || event.button <= 0;\n  } else {\n    return event.isPrimary !== false;\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs\nvar focusableElements = /* @__PURE__ */ new Set([\n  \"BUTTON\",\n  \"INPUT\",\n  \"SELECT\",\n  \"TEXTAREA\",\n  \"A\"\n]);\nfunction isElementKeyboardAccessible(element) {\n  return focusableElements.has(element.tagName) || element.tabIndex !== -1;\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs\nvar isPressing = /* @__PURE__ */ new WeakSet();\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs\nfunction filterEvents(callback) {\n  return (event) => {\n    if (event.key !== \"Enter\")\n      return;\n    callback(event);\n  };\n}\nfunction firePointerEvent(target, type) {\n  target.dispatchEvent(new PointerEvent(\"pointer\" + type, { isPrimary: true, bubbles: true }));\n}\nvar enableKeyboardPress = (focusEvent, eventOptions) => {\n  const element = focusEvent.currentTarget;\n  if (!element)\n    return;\n  const handleKeydown = filterEvents(() => {\n    if (isPressing.has(element))\n      return;\n    firePointerEvent(element, \"down\");\n    const handleKeyup = filterEvents(() => {\n      firePointerEvent(element, \"up\");\n    });\n    const handleBlur = () => firePointerEvent(element, \"cancel\");\n    element.addEventListener(\"keyup\", handleKeyup, eventOptions);\n    element.addEventListener(\"blur\", handleBlur, eventOptions);\n  });\n  element.addEventListener(\"keydown\", handleKeydown, eventOptions);\n  element.addEventListener(\"blur\", () => element.removeEventListener(\"keydown\", handleKeydown), eventOptions);\n};\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/index.mjs\nfunction isValidPressEvent(event) {\n  return isPrimaryPointer(event) && !isDragActive();\n}\nfunction press(targetOrSelector, onPressStart, options = {}) {\n  const [targets, eventOptions, cancelEvents] = setupGesture(targetOrSelector, options);\n  const startPress = (startEvent) => {\n    const target = startEvent.currentTarget;\n    if (!isValidPressEvent(startEvent))\n      return;\n    isPressing.add(target);\n    const onPressEnd = onPressStart(target, startEvent);\n    const onPointerEnd = (endEvent, success) => {\n      window.removeEventListener(\"pointerup\", onPointerUp);\n      window.removeEventListener(\"pointercancel\", onPointerCancel);\n      if (isPressing.has(target)) {\n        isPressing.delete(target);\n      }\n      if (!isValidPressEvent(endEvent)) {\n        return;\n      }\n      if (typeof onPressEnd === \"function\") {\n        onPressEnd(endEvent, { success });\n      }\n    };\n    const onPointerUp = (upEvent) => {\n      onPointerEnd(upEvent, target === window || target === document || options.useGlobalTarget || isNodeOrChild(target, upEvent.target));\n    };\n    const onPointerCancel = (cancelEvent) => {\n      onPointerEnd(cancelEvent, false);\n    };\n    window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n    window.addEventListener(\"pointercancel\", onPointerCancel, eventOptions);\n  };\n  targets.forEach((target) => {\n    const pointerDownTarget = options.useGlobalTarget ? window : target;\n    pointerDownTarget.addEventListener(\"pointerdown\", startPress, eventOptions);\n    if (isHTMLElement(target)) {\n      target.addEventListener(\"focus\", (event) => enableKeyboardPress(event, eventOptions));\n      if (!isElementKeyboardAccessible(target) && !target.hasAttribute(\"tabindex\")) {\n        target.tabIndex = 0;\n      }\n    }\n  });\n  return cancelEvents;\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/style-computed.mjs\nfunction getComputedStyle2(element, name) {\n  const computedStyle = window.getComputedStyle(element);\n  return isCSSVar(name) ? computedStyle.getPropertyValue(name) : computedStyle[name];\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/is-svg-element.mjs\nfunction isSVGElement(element) {\n  return isObject(element) && \"ownerSVGElement\" in element;\n}\n\n// ../../../node_modules/motion-dom/dist/es/resize/handle-element.mjs\nvar resizeHandlers = /* @__PURE__ */ new WeakMap();\nvar observer;\nvar getSize = (borderBoxAxis, svgAxis, htmlAxis) => (target, borderBoxSize) => {\n  if (borderBoxSize && borderBoxSize[0]) {\n    return borderBoxSize[0][borderBoxAxis + \"Size\"];\n  } else if (isSVGElement(target) && \"getBBox\" in target) {\n    return target.getBBox()[svgAxis];\n  } else {\n    return target[htmlAxis];\n  }\n};\nvar getWidth = /* @__PURE__ */ getSize(\"inline\", \"width\", \"offsetWidth\");\nvar getHeight = /* @__PURE__ */ getSize(\"block\", \"height\", \"offsetHeight\");\nfunction notifyTarget({ target, borderBoxSize }) {\n  var _a;\n  (_a = resizeHandlers.get(target)) == null ? void 0 : _a.forEach((handler) => {\n    handler(target, {\n      get width() {\n        return getWidth(target, borderBoxSize);\n      },\n      get height() {\n        return getHeight(target, borderBoxSize);\n      }\n    });\n  });\n}\nfunction notifyAll(entries) {\n  entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n  if (typeof ResizeObserver === \"undefined\")\n    return;\n  observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n  if (!observer)\n    createResizeObserver();\n  const elements = resolveElements(target);\n  elements.forEach((element) => {\n    let elementHandlers = resizeHandlers.get(element);\n    if (!elementHandlers) {\n      elementHandlers = /* @__PURE__ */ new Set();\n      resizeHandlers.set(element, elementHandlers);\n    }\n    elementHandlers.add(handler);\n    observer == null ? void 0 : observer.observe(element);\n  });\n  return () => {\n    elements.forEach((element) => {\n      const elementHandlers = resizeHandlers.get(element);\n      elementHandlers == null ? void 0 : elementHandlers.delete(handler);\n      if (!(elementHandlers == null ? void 0 : elementHandlers.size)) {\n        observer == null ? void 0 : observer.unobserve(element);\n      }\n    });\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/resize/handle-window.mjs\nvar windowCallbacks = /* @__PURE__ */ new Set();\nvar windowResizeHandler;\nfunction createWindowResizeHandler() {\n  windowResizeHandler = () => {\n    const info = {\n      get width() {\n        return window.innerWidth;\n      },\n      get height() {\n        return window.innerHeight;\n      }\n    };\n    windowCallbacks.forEach((callback) => callback(info));\n  };\n  window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n  windowCallbacks.add(callback);\n  if (!windowResizeHandler)\n    createWindowResizeHandler();\n  return () => {\n    windowCallbacks.delete(callback);\n    if (!windowCallbacks.size && typeof windowResizeHandler === \"function\") {\n      window.removeEventListener(\"resize\", windowResizeHandler);\n      windowResizeHandler = void 0;\n    }\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/resize/index.mjs\nfunction resize(a, b) {\n  return typeof a === \"function\" ? resizeWindow(a) : resizeElement(a, b);\n}\n\n// ../../../node_modules/motion-dom/dist/es/scroll/observe.mjs\nfunction observeTimeline(update, timeline) {\n  let prevProgress;\n  const onFrame = () => {\n    const { currentTime } = timeline;\n    const percentage = currentTime === null ? 0 : currentTime.value;\n    const progress2 = percentage / 100;\n    if (prevProgress !== progress2) {\n      update(progress2);\n    }\n    prevProgress = progress2;\n  };\n  frame.preUpdate(onFrame, true);\n  return () => cancelFrame(onFrame);\n}\n\n// ../../../node_modules/motion-dom/dist/es/stats/index.mjs\nfunction record() {\n  const { value } = statsBuffer;\n  if (value === null) {\n    cancelFrame(record);\n    return;\n  }\n  value.frameloop.rate.push(frameData.delta);\n  value.animations.mainThread.push(activeAnimations.mainThread);\n  value.animations.waapi.push(activeAnimations.waapi);\n  value.animations.layout.push(activeAnimations.layout);\n}\nfunction mean(values) {\n  return values.reduce((acc, value) => acc + value, 0) / values.length;\n}\nfunction summarise(values, calcAverage = mean) {\n  if (values.length === 0) {\n    return {\n      min: 0,\n      max: 0,\n      avg: 0\n    };\n  }\n  return {\n    min: Math.min(...values),\n    max: Math.max(...values),\n    avg: calcAverage(values)\n  };\n}\nvar msToFps = (ms) => Math.round(1e3 / ms);\nfunction clearStatsBuffer() {\n  statsBuffer.value = null;\n  statsBuffer.addProjectionMetrics = null;\n}\nfunction reportStats() {\n  const { value } = statsBuffer;\n  if (!value) {\n    throw new Error(\"Stats are not being measured\");\n  }\n  clearStatsBuffer();\n  cancelFrame(record);\n  const summary = {\n    frameloop: {\n      setup: summarise(value.frameloop.setup),\n      rate: summarise(value.frameloop.rate),\n      read: summarise(value.frameloop.read),\n      resolveKeyframes: summarise(value.frameloop.resolveKeyframes),\n      preUpdate: summarise(value.frameloop.preUpdate),\n      update: summarise(value.frameloop.update),\n      preRender: summarise(value.frameloop.preRender),\n      render: summarise(value.frameloop.render),\n      postRender: summarise(value.frameloop.postRender)\n    },\n    animations: {\n      mainThread: summarise(value.animations.mainThread),\n      waapi: summarise(value.animations.waapi),\n      layout: summarise(value.animations.layout)\n    },\n    layoutProjection: {\n      nodes: summarise(value.layoutProjection.nodes),\n      calculatedTargetDeltas: summarise(value.layoutProjection.calculatedTargetDeltas),\n      calculatedProjections: summarise(value.layoutProjection.calculatedProjections)\n    }\n  };\n  const { rate } = summary.frameloop;\n  rate.min = msToFps(rate.min);\n  rate.max = msToFps(rate.max);\n  rate.avg = msToFps(rate.avg);\n  [rate.min, rate.max] = [rate.max, rate.min];\n  return summary;\n}\nfunction recordStats() {\n  if (statsBuffer.value) {\n    clearStatsBuffer();\n    throw new Error(\"Stats are already being measured\");\n  }\n  const newStatsBuffer = statsBuffer;\n  newStatsBuffer.value = {\n    frameloop: {\n      setup: [],\n      rate: [],\n      read: [],\n      resolveKeyframes: [],\n      preUpdate: [],\n      update: [],\n      preRender: [],\n      render: [],\n      postRender: []\n    },\n    animations: {\n      mainThread: [],\n      waapi: [],\n      layout: []\n    },\n    layoutProjection: {\n      nodes: [],\n      calculatedTargetDeltas: [],\n      calculatedProjections: []\n    }\n  };\n  newStatsBuffer.addProjectionMetrics = (metrics2) => {\n    const { layoutProjection } = newStatsBuffer.value;\n    layoutProjection.nodes.push(metrics2.nodes);\n    layoutProjection.calculatedTargetDeltas.push(metrics2.calculatedTargetDeltas);\n    layoutProjection.calculatedProjections.push(metrics2.calculatedProjections);\n  };\n  frame.postRender(record, true);\n  return reportStats;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/is-svg-svg-element.mjs\nfunction isSVGSVGElement(element) {\n  return isSVGElement(element) && element.tagName === \"svg\";\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/transform.mjs\nfunction transform(...args) {\n  const useImmediate = !Array.isArray(args[0]);\n  const argOffset = useImmediate ? 0 : -1;\n  const inputValue = args[0 + argOffset];\n  const inputRange = args[1 + argOffset];\n  const outputRange = args[2 + argOffset];\n  const options = args[3 + argOffset];\n  const interpolator = interpolate(inputRange, outputRange, options);\n  return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/subscribe-value.mjs\nfunction subscribeValue(inputValues, outputValue, getLatest) {\n  const update = () => outputValue.set(getLatest());\n  const scheduleUpdate = () => frame.preRender(update, false, true);\n  const subscriptions = inputValues.map((v) => v.on(\"change\", scheduleUpdate));\n  outputValue.on(\"destroy\", () => {\n    subscriptions.forEach((unsubscribe) => unsubscribe());\n    cancelFrame(update);\n  });\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/transform-value.mjs\nfunction transformValue(transform2) {\n  const collectedValues = [];\n  collectMotionValues.current = collectedValues;\n  const initialValue = transform2();\n  collectMotionValues.current = void 0;\n  const value = motionValue(initialValue);\n  subscribeValue(collectedValues, value, transform2);\n  return value;\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/map-value.mjs\nfunction mapValue(inputValue, inputRange, outputRange, options) {\n  const map = transform(inputRange, outputRange, options);\n  return transformValue(() => map(inputValue.get()));\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/utils/is-motion-value.mjs\nvar isMotionValue = (value) => Boolean(value && value.getVelocity);\n\n// ../../../node_modules/motion-dom/dist/es/value/spring-value.mjs\nfunction springValue(source, options) {\n  const initialValue = isMotionValue(source) ? source.get() : source;\n  const value = motionValue(initialValue);\n  attachSpring(value, source, options);\n  return value;\n}\nfunction attachSpring(value, source, options) {\n  const initialValue = value.get();\n  let activeAnimation = null;\n  let latestValue = initialValue;\n  let latestSetter;\n  const unit = typeof initialValue === \"string\" ? initialValue.replace(/[\\d.-]/g, \"\") : void 0;\n  const stopAnimation2 = () => {\n    if (activeAnimation) {\n      activeAnimation.stop();\n      activeAnimation = null;\n    }\n  };\n  const startAnimation = () => {\n    stopAnimation2();\n    activeAnimation = new JSAnimation({\n      keyframes: [asNumber(value.get()), asNumber(latestValue)],\n      velocity: value.getVelocity(),\n      type: \"spring\",\n      restDelta: 1e-3,\n      restSpeed: 0.01,\n      ...options,\n      onUpdate: latestSetter\n    });\n  };\n  value.attach((v, set) => {\n    latestValue = v;\n    latestSetter = (latest) => set(parseValue(latest, unit));\n    frame.postRender(startAnimation);\n    return value.get();\n  }, stopAnimation2);\n  let unsubscribe = void 0;\n  if (isMotionValue(source)) {\n    unsubscribe = source.on(\"change\", (v) => value.set(parseValue(v, unit)));\n    value.on(\"destroy\", unsubscribe);\n  }\n  return unsubscribe;\n}\nfunction parseValue(v, unit) {\n  return unit ? v + unit : v;\n}\nfunction asNumber(v) {\n  return typeof v === \"number\" ? v : parseFloat(v);\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/find.mjs\nvar valueTypes = [...dimensionValueTypes, color, complex];\nvar findValueType = (v) => valueTypes.find(testValueType(v));\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/choose-layer-type.mjs\nfunction chooseLayerType(valueName) {\n  if (valueName === \"layout\")\n    return \"group\";\n  if (valueName === \"enter\" || valueName === \"new\")\n    return \"new\";\n  if (valueName === \"exit\" || valueName === \"old\")\n    return \"old\";\n  return \"group\";\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/css.mjs\nvar pendingRules = {};\nvar style = null;\nvar css = {\n  set: (selector, values) => {\n    pendingRules[selector] = values;\n  },\n  commit: () => {\n    if (!style) {\n      style = document.createElement(\"style\");\n      style.id = \"motion-view\";\n    }\n    let cssText = \"\";\n    for (const selector in pendingRules) {\n      const rule = pendingRules[selector];\n      cssText += `${selector} {\n`;\n      for (const [property, value] of Object.entries(rule)) {\n        cssText += `  ${property}: ${value};\n`;\n      }\n      cssText += \"}\\n\";\n    }\n    style.textContent = cssText;\n    document.head.appendChild(style);\n    pendingRules = {};\n  },\n  remove: () => {\n    if (style && style.parentElement) {\n      style.parentElement.removeChild(style);\n    }\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/get-layer-name.mjs\nfunction getLayerName(pseudoElement) {\n  const match = pseudoElement.match(/::view-transition-(old|new|group|image-pair)\\((.*?)\\)/);\n  if (!match)\n    return null;\n  return { layer: match[2], type: match[1] };\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/get-view-animations.mjs\nfunction filterViewAnimations(animation) {\n  var _a;\n  const { effect } = animation;\n  if (!effect)\n    return false;\n  return effect.target === document.documentElement && ((_a = effect.pseudoElement) == null ? void 0 : _a.startsWith(\"::view-transition\"));\n}\nfunction getViewAnimations() {\n  return document.getAnimations().filter(filterViewAnimations);\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/has-target.mjs\nfunction hasTarget(target, targets) {\n  return targets.has(target) && Object.keys(targets.get(target)).length > 0;\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/start.mjs\nvar definitionNames = [\"layout\", \"enter\", \"exit\", \"new\", \"old\"];\nfunction startViewAnimation(builder) {\n  const { update, targets, options: defaultOptions } = builder;\n  if (!document.startViewTransition) {\n    return new Promise(async (resolve) => {\n      await update();\n      resolve(new GroupAnimation([]));\n    });\n  }\n  if (!hasTarget(\"root\", targets)) {\n    css.set(\":root\", {\n      \"view-transition-name\": \"none\"\n    });\n  }\n  css.set(\"::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*)\", { \"animation-timing-function\": \"linear !important\" });\n  css.commit();\n  const transition = document.startViewTransition(async () => {\n    await update();\n  });\n  transition.finished.finally(() => {\n    css.remove();\n  });\n  return new Promise((resolve) => {\n    transition.ready.then(() => {\n      const generatedViewAnimations = getViewAnimations();\n      const animations2 = [];\n      targets.forEach((definition, target) => {\n        for (const key of definitionNames) {\n          if (!definition[key])\n            continue;\n          const { keyframes: keyframes2, options } = definition[key];\n          for (let [valueName, valueKeyframes] of Object.entries(keyframes2)) {\n            if (!valueKeyframes)\n              continue;\n            const valueOptions = {\n              ...getValueTransition(defaultOptions, valueName),\n              ...getValueTransition(options, valueName)\n            };\n            const type = chooseLayerType(key);\n            if (valueName === \"opacity\" && !Array.isArray(valueKeyframes)) {\n              const initialValue = type === \"new\" ? 0 : 1;\n              valueKeyframes = [initialValue, valueKeyframes];\n            }\n            if (typeof valueOptions.delay === \"function\") {\n              valueOptions.delay = valueOptions.delay(0, 1);\n            }\n            valueOptions.duration && (valueOptions.duration = secondsToMilliseconds(valueOptions.duration));\n            valueOptions.delay && (valueOptions.delay = secondsToMilliseconds(valueOptions.delay));\n            const animation = new NativeAnimation({\n              ...valueOptions,\n              element: document.documentElement,\n              name: valueName,\n              pseudoElement: `::view-transition-${type}(${target})`,\n              keyframes: valueKeyframes\n            });\n            animations2.push(animation);\n          }\n        }\n      });\n      for (const animation of generatedViewAnimations) {\n        if (animation.playState === \"finished\")\n          continue;\n        const { effect } = animation;\n        if (!effect || !(effect instanceof KeyframeEffect))\n          continue;\n        const { pseudoElement } = effect;\n        if (!pseudoElement)\n          continue;\n        const name = getLayerName(pseudoElement);\n        if (!name)\n          continue;\n        const targetDefinition = targets.get(name.layer);\n        if (!targetDefinition) {\n          const transitionName = name.type === \"group\" ? \"layout\" : \"\";\n          let animationTransition = {\n            ...getValueTransition(defaultOptions, transitionName)\n          };\n          animationTransition.duration && (animationTransition.duration = secondsToMilliseconds(animationTransition.duration));\n          animationTransition = applyGeneratorOptions(animationTransition);\n          const easing = mapEasingToNativeEasing(animationTransition.ease, animationTransition.duration);\n          effect.updateTiming({\n            delay: secondsToMilliseconds(animationTransition.delay ?? 0),\n            duration: animationTransition.duration,\n            easing\n          });\n          animations2.push(new NativeAnimationWrapper(animation));\n        } else if (hasOpacity(targetDefinition, \"enter\") && hasOpacity(targetDefinition, \"exit\") && effect.getKeyframes().some((keyframe) => keyframe.mixBlendMode)) {\n          animations2.push(new NativeAnimationWrapper(animation));\n        } else {\n          animation.cancel();\n        }\n      }\n      resolve(new GroupAnimation(animations2));\n    });\n  });\n}\nfunction hasOpacity(target, key) {\n  var _a;\n  return (_a = target == null ? void 0 : target[key]) == null ? void 0 : _a.keyframes.opacity;\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/queue.mjs\nvar builders = [];\nvar current = null;\nfunction next() {\n  current = null;\n  const [nextBuilder] = builders;\n  if (nextBuilder)\n    start(nextBuilder);\n}\nfunction start(builder) {\n  removeItem(builders, builder);\n  current = builder;\n  startViewAnimation(builder).then((animation) => {\n    builder.notifyReady(animation);\n    animation.finished.finally(next);\n  });\n}\nfunction processQueue() {\n  var _a;\n  for (let i = builders.length - 1; i >= 0; i--) {\n    const builder = builders[i];\n    const { interrupt } = builder.options;\n    if (interrupt === \"immediate\") {\n      const batchedUpdates = builders.slice(0, i + 1).map((b) => b.update);\n      const remaining = builders.slice(i + 1);\n      builder.update = () => {\n        batchedUpdates.forEach((update) => update());\n      };\n      builders = [builder, ...remaining];\n      break;\n    }\n  }\n  if (!current || ((_a = builders[0]) == null ? void 0 : _a.options.interrupt) === \"immediate\") {\n    next();\n  }\n}\nfunction addToQueue(builder) {\n  builders.push(builder);\n  microtask.render(processQueue);\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/index.mjs\nvar ViewTransitionBuilder = class {\n  constructor(update, options = {}) {\n    this.currentTarget = \"root\";\n    this.targets = /* @__PURE__ */ new Map();\n    this.notifyReady = noop;\n    this.readyPromise = new Promise((resolve) => {\n      this.notifyReady = resolve;\n    });\n    this.update = update;\n    this.options = {\n      interrupt: \"wait\",\n      ...options\n    };\n    addToQueue(this);\n  }\n  get(selector) {\n    this.currentTarget = selector;\n    return this;\n  }\n  layout(keyframes2, options) {\n    this.updateTarget(\"layout\", keyframes2, options);\n    return this;\n  }\n  new(keyframes2, options) {\n    this.updateTarget(\"new\", keyframes2, options);\n    return this;\n  }\n  old(keyframes2, options) {\n    this.updateTarget(\"old\", keyframes2, options);\n    return this;\n  }\n  enter(keyframes2, options) {\n    this.updateTarget(\"enter\", keyframes2, options);\n    return this;\n  }\n  exit(keyframes2, options) {\n    this.updateTarget(\"exit\", keyframes2, options);\n    return this;\n  }\n  crossfade(options) {\n    this.updateTarget(\"enter\", { opacity: 1 }, options);\n    this.updateTarget(\"exit\", { opacity: 0 }, options);\n    return this;\n  }\n  updateTarget(target, keyframes2, options = {}) {\n    const { currentTarget, targets } = this;\n    if (!targets.has(currentTarget)) {\n      targets.set(currentTarget, {});\n    }\n    const targetData = targets.get(currentTarget);\n    targetData[target] = { keyframes: keyframes2, options };\n  }\n  then(resolve, reject) {\n    return this.readyPromise.then(resolve, reject);\n  }\n};\nfunction animateView(update, defaultOptions = {}) {\n  return new ViewTransitionBuilder(update, defaultOptions);\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/index-legacy.mjs\nvar sync = frame;\nvar cancelSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = (process2) => cancelFrame(process2);\n  return acc;\n}, {});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\nimport { createContext as createContext3 } from \"react\";\nvar MotionConfigContext = createContext3({\n  transformPagePoint: (p) => p,\n  isStatic: false,\n  reducedMotion: \"never\"\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs\nimport { useContext, useId, useEffect as useEffect2, useCallback } from \"react\";\nfunction usePresence(subscribe = true) {\n  const context = useContext(PresenceContext);\n  if (context === null)\n    return [true, null];\n  const { isPresent: isPresent2, onExitComplete, register } = context;\n  const id4 = useId();\n  useEffect2(() => {\n    if (subscribe) {\n      return register(id4);\n    }\n  }, [subscribe]);\n  const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id4), [id4, onExitComplete, subscribe]);\n  return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];\n}\nfunction useIsPresent() {\n  return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n  return context === null ? true : context.isPresent;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nimport { jsx as jsx3, Fragment } from \"react/jsx-runtime\";\nimport { useMemo as useMemo2, useRef as useRef3, useState, useContext as useContext3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs\nimport { useRef } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nimport * as React2 from \"react\";\nimport { useId as useId3, useMemo } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\nimport { jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { useId as useId2, useRef as useRef2, useContext as useContext2, useInsertionEffect } from \"react\";\nvar PopChildMeasure = class extends React.Component {\n  getSnapshotBeforeUpdate(prevProps) {\n    const element = this.props.childRef.current;\n    if (element && prevProps.isPresent && !this.props.isPresent) {\n      const parent = element.offsetParent;\n      const parentWidth = isHTMLElement(parent) ? parent.offsetWidth || 0 : 0;\n      const size = this.props.sizeRef.current;\n      size.height = element.offsetHeight || 0;\n      size.width = element.offsetWidth || 0;\n      size.top = element.offsetTop;\n      size.left = element.offsetLeft;\n      size.right = parentWidth - size.width - size.left;\n    }\n    return null;\n  }\n  /**\n   * Required with getSnapshotBeforeUpdate to stop React complaining.\n   */\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\nfunction PopChild({ children, isPresent: isPresent2, anchorX }) {\n  const id4 = useId2();\n  const ref = useRef2(null);\n  const size = useRef2({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0,\n    right: 0\n  });\n  const { nonce } = useContext2(MotionConfigContext);\n  useInsertionEffect(() => {\n    const { width, height, top, left, right } = size.current;\n    if (isPresent2 || !ref.current || !width || !height)\n      return;\n    const x = anchorX === \"left\" ? `left: ${left}` : `right: ${right}`;\n    ref.current.dataset.motionPopId = id4;\n    const style2 = document.createElement(\"style\");\n    if (nonce)\n      style2.nonce = nonce;\n    document.head.appendChild(style2);\n    if (style2.sheet) {\n      style2.sheet.insertRule(`\n          [data-motion-pop-id=\"${id4}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            ${x}px !important;\n            top: ${top}px !important;\n          }\n        `);\n    }\n    return () => {\n      if (document.head.contains(style2)) {\n        document.head.removeChild(style2);\n      }\n    };\n  }, [isPresent2]);\n  return jsx(PopChildMeasure, { isPresent: isPresent2, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nvar PresenceChild = ({ children, initial, isPresent: isPresent2, onExitComplete, custom, presenceAffectsLayout, mode, anchorX }) => {\n  const presenceChildren = useConstant(newChildrenMap);\n  const id4 = useId3();\n  let isReusedContext = true;\n  let context = useMemo(() => {\n    isReusedContext = false;\n    return {\n      id: id4,\n      initial,\n      isPresent: isPresent2,\n      custom,\n      onExitComplete: (childId) => {\n        presenceChildren.set(childId, true);\n        for (const isComplete of presenceChildren.values()) {\n          if (!isComplete)\n            return;\n        }\n        onExitComplete && onExitComplete();\n      },\n      register: (childId) => {\n        presenceChildren.set(childId, false);\n        return () => presenceChildren.delete(childId);\n      }\n    };\n  }, [isPresent2, presenceChildren, onExitComplete]);\n  if (presenceAffectsLayout && isReusedContext) {\n    context = { ...context };\n  }\n  useMemo(() => {\n    presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n  }, [isPresent2]);\n  React2.useEffect(() => {\n    !isPresent2 && !presenceChildren.size && onExitComplete && onExitComplete();\n  }, [isPresent2]);\n  if (mode === \"popLayout\") {\n    children = jsx2(PopChild, { isPresent: isPresent2, anchorX, children });\n  }\n  return jsx2(PresenceContext.Provider, { value: context, children });\n};\nfunction newChildrenMap() {\n  return /* @__PURE__ */ new Map();\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs\nimport { Children, isValidElement } from \"react\";\nvar getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n  const filtered = [];\n  Children.forEach(children, (child) => {\n    if (isValidElement(child))\n      filtered.push(child);\n  });\n  return filtered;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nvar AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, anchorX = \"left\" }) => {\n  const [isParentPresent, safeToRemove] = usePresence(propagate);\n  const presentChildren = useMemo2(() => onlyElements(children), [children]);\n  const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n  const isInitialRender = useRef3(true);\n  const pendingPresentChildren = useRef3(presentChildren);\n  const exitComplete = useConstant(() => /* @__PURE__ */ new Map());\n  const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n  const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n  useIsomorphicLayoutEffect(() => {\n    isInitialRender.current = false;\n    pendingPresentChildren.current = presentChildren;\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const key = getChildKey(renderedChildren[i]);\n      if (!presentKeys.includes(key)) {\n        if (exitComplete.get(key) !== true) {\n          exitComplete.set(key, false);\n        }\n      } else {\n        exitComplete.delete(key);\n      }\n    }\n  }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n  const exitingChildren = [];\n  if (presentChildren !== diffedChildren) {\n    let nextChildren = [...presentChildren];\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const child = renderedChildren[i];\n      const key = getChildKey(child);\n      if (!presentKeys.includes(key)) {\n        nextChildren.splice(i, 0, child);\n        exitingChildren.push(child);\n      }\n    }\n    if (mode === \"wait\" && exitingChildren.length) {\n      nextChildren = exitingChildren;\n    }\n    setRenderedChildren(onlyElements(nextChildren));\n    setDiffedChildren(presentChildren);\n    return null;\n  }\n  if (false) {\n    console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n  }\n  const { forceRender } = useContext3(LayoutGroupContext);\n  return jsx3(Fragment, { children: renderedChildren.map((child) => {\n    const key = getChildKey(child);\n    const isPresent2 = propagate && !isParentPresent ? false : presentChildren === renderedChildren || presentKeys.includes(key);\n    const onExit = () => {\n      if (exitComplete.has(key)) {\n        exitComplete.set(key, true);\n      } else {\n        return;\n      }\n      let isEveryExitComplete = true;\n      exitComplete.forEach((isExitComplete) => {\n        if (!isExitComplete)\n          isEveryExitComplete = false;\n      });\n      if (isEveryExitComplete) {\n        forceRender == null ? void 0 : forceRender();\n        setRenderedChildren(pendingPresentChildren.current);\n        propagate && (safeToRemove == null ? void 0 : safeToRemove());\n        onExitComplete && onExitComplete();\n      }\n    };\n    return jsx3(PresenceChild, { isPresent: isPresent2, initial: !isInitialRender.current || initial ? void 0 : false, custom, presenceAffectsLayout, mode, onExitComplete: isPresent2 ? void 0 : onExit, anchorX, children: child }, key);\n  }) });\n};\n\n// ../../../node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs\nimport { createContext as createContext4 } from \"react\";\nvar DeprecatedLayoutGroupContext = createContext4(null);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nimport { useState as useState2, useCallback as useCallback2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs\nimport { useRef as useRef4 } from \"react\";\nfunction useIsMounted() {\n  const isMounted = useRef4(false);\n  useIsomorphicLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nfunction useForceUpdate() {\n  const isMounted = useIsMounted();\n  const [forcedRenderCount, setForcedRenderCount] = useState2(0);\n  const forceRender = useCallback2(() => {\n    isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n  }, [forcedRenderCount]);\n  const deferredForceRender = useCallback2(() => frame.postRender(forceRender), [forceRender]);\n  return [deferredForceRender, forcedRenderCount];\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nimport { useContext as useContext4, useRef as useRef5, useMemo as useMemo3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/group.mjs\nvar notify = (node) => !node.isLayoutDirty && node.willUpdate(false);\nfunction nodeGroup() {\n  const nodes = /* @__PURE__ */ new Set();\n  const subscriptions = /* @__PURE__ */ new WeakMap();\n  const dirtyAll = () => nodes.forEach(notify);\n  return {\n    add: (node) => {\n      nodes.add(node);\n      subscriptions.set(node, node.addEventListener(\"willUpdate\", dirtyAll));\n    },\n    remove: (node) => {\n      nodes.delete(node);\n      const unsubscribe = subscriptions.get(node);\n      if (unsubscribe) {\n        unsubscribe();\n        subscriptions.delete(node);\n      }\n      dirtyAll();\n    },\n    dirty: dirtyAll\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nvar shouldInheritGroup = (inherit) => inherit === true;\nvar shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === \"id\";\nvar LayoutGroup = ({ children, id: id4, inherit = true }) => {\n  const layoutGroupContext = useContext4(LayoutGroupContext);\n  const deprecatedLayoutGroupContext = useContext4(DeprecatedLayoutGroupContext);\n  const [forceRender, key] = useForceUpdate();\n  const context = useRef5(null);\n  const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;\n  if (context.current === null) {\n    if (shouldInheritId(inherit) && upstreamId) {\n      id4 = id4 ? upstreamId + \"-\" + id4 : upstreamId;\n    }\n    context.current = {\n      id: id4,\n      group: shouldInheritGroup(inherit) ? layoutGroupContext.group || nodeGroup() : nodeGroup()\n    };\n  }\n  const memoizedContext = useMemo3(() => ({ ...context.current, forceRender }), [key]);\n  return jsx4(LayoutGroupContext.Provider, { value: memoizedContext, children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nimport { jsx as jsx5 } from \"react/jsx-runtime\";\nimport { useState as useState3, useRef as useRef6, useEffect as useEffect4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs\nimport { createContext as createContext5 } from \"react\";\nvar LazyContext = createContext5({ strict: false });\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs\nvar featureProps = {\n  animation: [\n    \"animate\",\n    \"variants\",\n    \"whileHover\",\n    \"whileTap\",\n    \"exit\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileDrag\"\n  ],\n  exit: [\"exit\"],\n  drag: [\"drag\", \"dragControls\"],\n  focus: [\"whileFocus\"],\n  hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n  tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n  pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n  inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n  layout: [\"layout\", \"layoutId\"]\n};\nvar featureDefinitions = {};\nfor (const key in featureProps) {\n  featureDefinitions[key] = {\n    isEnabled: (props) => featureProps[key].some((name) => !!props[name])\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs\nfunction loadFeatures(features) {\n  for (const key in features) {\n    featureDefinitions[key] = {\n      ...featureDefinitions[key],\n      ...features[key]\n    };\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nfunction LazyMotion({ children, features, strict = false }) {\n  const [, setIsLoaded] = useState3(!isLazyBundle(features));\n  const loadedRenderer = useRef6(void 0);\n  if (!isLazyBundle(features)) {\n    const { renderer, ...loadedFeatures } = features;\n    loadedRenderer.current = renderer;\n    loadFeatures(loadedFeatures);\n  }\n  useEffect4(() => {\n    if (isLazyBundle(features)) {\n      features().then(({ renderer, ...loadedFeatures }) => {\n        loadFeatures(loadedFeatures);\n        loadedRenderer.current = renderer;\n        setIsLoaded(true);\n      });\n    }\n  }, []);\n  return jsx5(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict }, children });\n}\nfunction isLazyBundle(features) {\n  return typeof features === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs\nvar validMotionProps = /* @__PURE__ */ new Set([\n  \"animate\",\n  \"exit\",\n  \"variants\",\n  \"initial\",\n  \"style\",\n  \"values\",\n  \"variants\",\n  \"transition\",\n  \"transformTemplate\",\n  \"custom\",\n  \"inherit\",\n  \"onBeforeLayoutMeasure\",\n  \"onAnimationStart\",\n  \"onAnimationComplete\",\n  \"onUpdate\",\n  \"onDragStart\",\n  \"onDrag\",\n  \"onDragEnd\",\n  \"onMeasureDragConstraints\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"_dragX\",\n  \"_dragY\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"onViewportEnter\",\n  \"onViewportLeave\",\n  \"globalTapTarget\",\n  \"ignoreStrict\",\n  \"viewport\"\n]);\nfunction isValidMotionProp(key) {\n  return key.startsWith(\"while\") || key.startsWith(\"drag\") && key !== \"draggable\" || key.startsWith(\"layout\") || key.startsWith(\"onTap\") || key.startsWith(\"onPan\") || key.startsWith(\"onLayout\") || validMotionProps.has(key);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs\nvar shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n  if (!isValidProp)\n    return;\n  shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\ntry {\n  loadExternalIsValidProp(require_is_prop_valid_browser_cjs().default);\n} catch {\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n  const filteredProps = {};\n  for (const key in props) {\n    if (key === \"values\" && typeof props.values === \"object\")\n      continue;\n    if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || // If trying to use native HTML drag events, forward drag listeners\n    props[\"draggable\"] && key.startsWith(\"onDrag\")) {\n      filteredProps[key] = props[key];\n    }\n  }\n  return filteredProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs\nimport { jsx as jsx6 } from \"react/jsx-runtime\";\nimport { useContext as useContext5, useMemo as useMemo4 } from \"react\";\nfunction MotionConfig({ children, isValidProp, ...config }) {\n  isValidProp && loadExternalIsValidProp(isValidProp);\n  config = { ...useContext5(MotionConfigContext), ...config };\n  config.isStatic = useConstant(() => config.isStatic);\n  const context = useMemo4(() => config, [\n    JSON.stringify(config.transition),\n    config.transformPagePoint,\n    config.reducedMotion\n  ]);\n  return jsx6(MotionConfigContext.Provider, { value: context, children });\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs\nimport { createContext as createContext6 } from \"react\";\nvar MotionContext = /* @__PURE__ */ createContext6({});\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs\nvar camelToDash2 = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs\nvar optimizedAppearDataId = \"framerAppearId\";\nvar optimizedAppearDataAttribute = \"data-\" + camelToDash2(optimizedAppearDataId);\n\n// ../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs\nimport { createContext as createContext7 } from \"react\";\nvar SwitchLayoutGroupContext = createContext7({});\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nimport { jsxs, jsx as jsx7 } from \"react/jsx-runtime\";\nimport { forwardRef, useContext as useContext8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nimport { useContext as useContext6, useMemo as useMemo5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs\nfunction isAnimationControls(v) {\n  return v !== null && typeof v === \"object\" && typeof v.start === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs\nfunction isVariantLabel(v) {\n  return typeof v === \"string\" || Array.isArray(v);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs\nvar variantPriorityOrder = [\n  \"animate\",\n  \"whileInView\",\n  \"whileFocus\",\n  \"whileHover\",\n  \"whileTap\",\n  \"whileDrag\",\n  \"exit\"\n];\nvar variantProps = [\"initial\", ...variantPriorityOrder];\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs\nfunction isControllingVariants(props) {\n  return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));\n}\nfunction isVariantNode(props) {\n  return Boolean(isControllingVariants(props) || props.variants);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs\nfunction getCurrentTreeVariants(props, context) {\n  if (isControllingVariants(props)) {\n    const { initial, animate: animate2 } = props;\n    return {\n      initial: initial === false || isVariantLabel(initial) ? initial : void 0,\n      animate: isVariantLabel(animate2) ? animate2 : void 0\n    };\n  }\n  return props.inherit !== false ? context : {};\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nfunction useCreateMotionContext(props) {\n  const { initial, animate: animate2 } = getCurrentTreeVariants(props, useContext6(MotionContext));\n  return useMemo5(() => ({ initial, animate: animate2 }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate2)]);\n}\nfunction variantLabelsAsDependency(prop) {\n  return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs\nvar motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nimport { useCallback as useCallback3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs\nfunction isRefObject(ref) {\n  return ref && typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nfunction useMotionRef(visualState, visualElement, externalRef) {\n  return useCallback3(\n    (instance) => {\n      if (instance) {\n        visualState.onMount && visualState.onMount(instance);\n      }\n      if (visualElement) {\n        if (instance) {\n          visualElement.mount(instance);\n        } else {\n          visualElement.unmount();\n        }\n      }\n      if (externalRef) {\n        if (typeof externalRef === \"function\") {\n          externalRef(instance);\n        } else if (isRefObject(externalRef)) {\n          externalRef.current = instance;\n        }\n      }\n    },\n    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]\n  );\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nimport { useContext as useContext7, useRef as useRef7, useInsertionEffect as useInsertionEffect2, useEffect as useEffect5 } from \"react\";\nfunction useVisualElement(Component3, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n  var _a, _b;\n  const { visualElement: parent } = useContext7(MotionContext);\n  const lazyContext = useContext7(LazyContext);\n  const presenceContext = useContext7(PresenceContext);\n  const reducedMotionConfig = useContext7(MotionConfigContext).reducedMotion;\n  const visualElementRef = useRef7(null);\n  createVisualElement = createVisualElement || lazyContext.renderer;\n  if (!visualElementRef.current && createVisualElement) {\n    visualElementRef.current = createVisualElement(Component3, {\n      visualState,\n      parent,\n      props,\n      presenceContext,\n      blockInitialAnimation: presenceContext ? presenceContext.initial === false : false,\n      reducedMotionConfig\n    });\n  }\n  const visualElement = visualElementRef.current;\n  const initialLayoutGroupConfig = useContext7(SwitchLayoutGroupContext);\n  if (visualElement && !visualElement.projection && ProjectionNodeConstructor && (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n    createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n  }\n  const isMounted = useRef7(false);\n  useInsertionEffect2(() => {\n    if (visualElement && isMounted.current) {\n      visualElement.update(props, presenceContext);\n    }\n  });\n  const optimisedAppearId = props[optimizedAppearDataAttribute];\n  const wantsHandoff = useRef7(Boolean(optimisedAppearId) && !((_a = window.MotionHandoffIsComplete) == null ? void 0 : _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) == null ? void 0 : _b.call(window, optimisedAppearId)));\n  useIsomorphicLayoutEffect(() => {\n    if (!visualElement)\n      return;\n    isMounted.current = true;\n    window.MotionIsMounted = true;\n    visualElement.updateFeatures();\n    microtask.render(visualElement.render);\n    if (wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n  });\n  useEffect5(() => {\n    if (!visualElement)\n      return;\n    if (!wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n    if (wantsHandoff.current) {\n      queueMicrotask(() => {\n        var _a2;\n        (_a2 = window.MotionHandoffMarkAsComplete) == null ? void 0 : _a2.call(window, optimisedAppearId);\n      });\n      wantsHandoff.current = false;\n    }\n  });\n  return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n  const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot, layoutCrossfade } = props;\n  visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"] ? void 0 : getClosestProjectingNode(visualElement.parent));\n  visualElement.projection.setOptions({\n    layoutId,\n    layout: layout2,\n    alwaysMeasureLayout: Boolean(drag2) || dragConstraints && isRefObject(dragConstraints),\n    visualElement,\n    /**\n     * TODO: Update options in an effect. This could be tricky as it'll be too late\n     * to update by the time layout animations run.\n     * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n     * ensuring it gets called if there's no potential layout animations.\n     *\n     */\n    animationType: typeof layout2 === \"string\" ? layout2 : \"both\",\n    initialPromotionConfig,\n    crossfade: layoutCrossfade,\n    layoutScroll,\n    layoutRoot\n  });\n}\nfunction getClosestProjectingNode(visualElement) {\n  if (!visualElement)\n    return void 0;\n  return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState: useVisualState2, Component: Component3 }) {\n  preloadedFeatures && loadFeatures(preloadedFeatures);\n  function MotionComponent(props, externalRef) {\n    let MeasureLayout2;\n    const configAndProps = {\n      ...useContext8(MotionConfigContext),\n      ...props,\n      layoutId: useLayoutId(props)\n    };\n    const { isStatic } = configAndProps;\n    const context = useCreateMotionContext(props);\n    const visualState = useVisualState2(props, isStatic);\n    if (!isStatic && isBrowser) {\n      useStrictMode(configAndProps, preloadedFeatures);\n      const layoutProjection = getProjectionFunctionality(configAndProps);\n      MeasureLayout2 = layoutProjection.MeasureLayout;\n      context.visualElement = useVisualElement(Component3, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n    }\n    return jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout2 && context.visualElement ? jsx7(MeasureLayout2, { visualElement: context.visualElement, ...configAndProps }) : null, useRender(Component3, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] });\n  }\n  MotionComponent.displayName = `motion.${typeof Component3 === \"string\" ? Component3 : `create(${Component3.displayName ?? Component3.name ?? \"\"})`}`;\n  const ForwardRefMotionComponent = forwardRef(MotionComponent);\n  ForwardRefMotionComponent[motionComponentSymbol] = Component3;\n  return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n  const layoutGroupId = useContext8(LayoutGroupContext).id;\n  return layoutGroupId && layoutId !== void 0 ? layoutGroupId + \"-\" + layoutId : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n  const isStrict = useContext8(LazyContext).strict;\n  if (false) {\n    const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n    configAndProps.ignoreStrict ? warning(false, strictMessage) : invariant(false, strictMessage);\n  }\n}\nfunction getProjectionFunctionality(props) {\n  const { drag: drag2, layout: layout2 } = featureDefinitions;\n  if (!drag2 && !layout2)\n    return {};\n  const combined = { ...drag2, ...layout2 };\n  return {\n    MeasureLayout: (drag2 == null ? void 0 : drag2.isEnabled(props)) || (layout2 == null ? void 0 : layout2.isEnabled(props)) ? combined.MeasureLayout : void 0,\n    ProjectionNode: combined.ProjectionNode\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs\nvar scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n  for (const key in correctors) {\n    scaleCorrectors[key] = correctors[key];\n    if (isCSSVariableName(key)) {\n      scaleCorrectors[key].isCSSVariable = true;\n    }\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs\nvar translateAlias2 = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nvar numTransforms = transformPropOrder.length;\nfunction buildTransform2(latestValues, transform2, transformTemplate) {\n  let transformString = \"\";\n  let transformIsDefault = true;\n  for (let i = 0; i < numTransforms; i++) {\n    const key = transformPropOrder[i];\n    const value = latestValues[key];\n    if (value === void 0)\n      continue;\n    let valueIsDefault = true;\n    if (typeof value === \"number\") {\n      valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n    } else {\n      valueIsDefault = parseFloat(value) === 0;\n    }\n    if (!valueIsDefault || transformTemplate) {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (!valueIsDefault) {\n        transformIsDefault = false;\n        const transformName = translateAlias2[key] || key;\n        transformString += `${transformName}(${valueAsType}) `;\n      }\n      if (transformTemplate) {\n        transform2[key] = valueAsType;\n      }\n    }\n  }\n  transformString = transformString.trim();\n  if (transformTemplate) {\n    transformString = transformTemplate(transform2, transformIsDefault ? \"\" : transformString);\n  } else if (transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs\nfunction resolveMotionValue(value) {\n  return isMotionValue(value) ? value.get() : value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nimport { useContext as useContext9 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs\nfunction getValueState(visualElement) {\n  const state = [{}, {}];\n  visualElement == null ? void 0 : visualElement.values.forEach((value, key) => {\n    state[0][key] = value.get();\n    state[1][key] = value.getVelocity();\n  });\n  return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n  if (typeof definition === \"function\") {\n    const [current2, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current2, velocity);\n  }\n  if (typeof definition === \"string\") {\n    definition = props.variants && props.variants[definition];\n  }\n  if (typeof definition === \"function\") {\n    const [current2, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current2, velocity);\n  }\n  return definition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nfunction makeState({ scrapeMotionValuesFromProps: scrapeMotionValuesFromProps3, createRenderState }, props, context, presenceContext) {\n  const state = {\n    latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps3),\n    renderState: createRenderState()\n  };\n  return state;\n}\nvar makeUseVisualState = (config) => (props, isStatic) => {\n  const context = useContext9(MotionContext);\n  const presenceContext = useContext9(PresenceContext);\n  const make = () => makeState(config, props, context, presenceContext);\n  return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n  const values = {};\n  const motionValues = scrapeMotionValues(props, {});\n  for (const key in motionValues) {\n    values[key] = resolveMotionValue(motionValues[key]);\n  }\n  let { initial, animate: animate2 } = props;\n  const isControllingVariants$1 = isControllingVariants(props);\n  const isVariantNode$1 = isVariantNode(props);\n  if (context && isVariantNode$1 && !isControllingVariants$1 && props.inherit !== false) {\n    if (initial === void 0)\n      initial = context.initial;\n    if (animate2 === void 0)\n      animate2 = context.animate;\n  }\n  let isInitialAnimationBlocked = presenceContext ? presenceContext.initial === false : false;\n  isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n  const variantToSet = isInitialAnimationBlocked ? animate2 : initial;\n  if (variantToSet && typeof variantToSet !== \"boolean\" && !isAnimationControls(variantToSet)) {\n    const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n    for (let i = 0; i < list.length; i++) {\n      const resolved = resolveVariantFromProps(props, list[i]);\n      if (resolved) {\n        const { transitionEnd, transition, ...target } = resolved;\n        for (const key in target) {\n          let valueTarget = target[key];\n          if (Array.isArray(valueTarget)) {\n            const index = isInitialAnimationBlocked ? valueTarget.length - 1 : 0;\n            valueTarget = valueTarget[index];\n          }\n          if (valueTarget !== null) {\n            values[key] = valueTarget;\n          }\n        }\n        for (const key in transitionEnd) {\n          values[key] = transitionEnd[key];\n        }\n      }\n    }\n  }\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs\nfunction createDOMMotionComponentProxy(componentFactory) {\n  if (typeof Proxy === \"undefined\") {\n    return componentFactory;\n  }\n  const componentCache = /* @__PURE__ */ new Map();\n  const deprecatedFactoryFunction = (...args) => {\n    if (false) {\n      warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n    }\n    return componentFactory(...args);\n  };\n  return new Proxy(deprecatedFactoryFunction, {\n    /**\n     * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n     * The prop name is passed through as `key` and we can use that to generate a `motion`\n     * DOM component with that name.\n     */\n    get: (_target, key) => {\n      if (key === \"create\")\n        return componentFactory;\n      if (!componentCache.has(key)) {\n        componentCache.set(key, componentFactory(key));\n      }\n      return componentCache.get(key);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nimport { Fragment as Fragment2, useMemo as useMemo8, createElement } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nimport { useMemo as useMemo6 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs\nfunction isForcedMotionValue(key, { layout: layout2, layoutId }) {\n  return transformProps.has(key) || key.startsWith(\"origin\") || (layout2 || layoutId !== void 0) && (!!scaleCorrectors[key] || key === \"opacity\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n  const { style: style2, vars, transformOrigin } = state;\n  let hasTransform2 = false;\n  let hasTransformOrigin = false;\n  for (const key in latestValues) {\n    const value = latestValues[key];\n    if (transformProps.has(key)) {\n      hasTransform2 = true;\n      continue;\n    } else if (isCSSVariableName(key)) {\n      vars[key] = value;\n      continue;\n    } else {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (key.startsWith(\"origin\")) {\n        hasTransformOrigin = true;\n        transformOrigin[key] = valueAsType;\n      } else {\n        style2[key] = valueAsType;\n      }\n    }\n  }\n  if (!latestValues.transform) {\n    if (hasTransform2 || transformTemplate) {\n      style2.transform = buildTransform2(latestValues, state.transform, transformTemplate);\n    } else if (style2.transform) {\n      style2.transform = \"none\";\n    }\n  }\n  if (hasTransformOrigin) {\n    const { originX = \"50%\", originY = \"50%\", originZ = 0 } = transformOrigin;\n    style2.transformOrigin = `${originX} ${originY} ${originZ}`;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs\nvar createHtmlRenderState = () => ({\n  style: {},\n  transform: {},\n  transformOrigin: {},\n  vars: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nfunction copyRawValuesOnly(target, source, props) {\n  for (const key in source) {\n    if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n      target[key] = source[key];\n    }\n  }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n  return useMemo6(() => {\n    const state = createHtmlRenderState();\n    buildHTMLStyles(state, visualState, transformTemplate);\n    return Object.assign({}, state.vars, state.style);\n  }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n  const styleProp = props.style || {};\n  const style2 = {};\n  copyRawValuesOnly(style2, styleProp, props);\n  Object.assign(style2, useInitialMotionValues(props, visualState));\n  return style2;\n}\nfunction useHTMLProps(props, visualState) {\n  const htmlProps = {};\n  const style2 = useStyle(props, visualState);\n  if (props.drag && props.dragListener !== false) {\n    htmlProps.draggable = false;\n    style2.userSelect = style2.WebkitUserSelect = style2.WebkitTouchCallout = \"none\";\n    style2.touchAction = props.drag === true ? \"none\" : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n  }\n  if (props.tabIndex === void 0 && (props.onTap || props.onTapStart || props.whileTap)) {\n    htmlProps.tabIndex = 0;\n  }\n  htmlProps.style = style2;\n  return htmlProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nimport { useMemo as useMemo7 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs\nvar dashKeys = {\n  offset: \"stroke-dashoffset\",\n  array: \"stroke-dasharray\"\n};\nvar camelKeys = {\n  offset: \"strokeDashoffset\",\n  array: \"strokeDasharray\"\n};\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n  attrs.pathLength = 1;\n  const keys2 = useDashCase ? dashKeys : camelKeys;\n  attrs[keys2.offset] = px.transform(-offset);\n  const pathLength = px.transform(length);\n  const pathSpacing = px.transform(spacing);\n  attrs[keys2.array] = `${pathLength} ${pathSpacing}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs\nfunction buildSVGAttrs(state, {\n  attrX,\n  attrY,\n  attrScale,\n  pathLength,\n  pathSpacing = 1,\n  pathOffset = 0,\n  // This is object creation, which we try to avoid per-frame.\n  ...latest\n}, isSVGTag2, transformTemplate, styleProp) {\n  buildHTMLStyles(state, latest, transformTemplate);\n  if (isSVGTag2) {\n    if (state.style.viewBox) {\n      state.attrs.viewBox = state.style.viewBox;\n    }\n    return;\n  }\n  state.attrs = state.style;\n  state.style = {};\n  const { attrs, style: style2 } = state;\n  if (attrs.transform) {\n    style2.transform = attrs.transform;\n    delete attrs.transform;\n  }\n  if (style2.transform || attrs.transformOrigin) {\n    style2.transformOrigin = attrs.transformOrigin ?? \"50% 50%\";\n    delete attrs.transformOrigin;\n  }\n  if (style2.transform) {\n    style2.transformBox = (styleProp == null ? void 0 : styleProp.transformBox) ?? \"fill-box\";\n    delete attrs.transformBox;\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (attrScale !== void 0)\n    attrs.scale = attrScale;\n  if (pathLength !== void 0) {\n    buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs\nvar createSvgRenderState = () => ({\n  ...createHtmlRenderState(),\n  attrs: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs\nvar isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nfunction useSVGProps(props, visualState, _isStatic, Component3) {\n  const visualProps = useMemo7(() => {\n    const state = createSvgRenderState();\n    buildSVGAttrs(state, visualState, isSVGTag(Component3), props.transformTemplate, props.style);\n    return {\n      ...state.attrs,\n      style: { ...state.style }\n    };\n  }, [visualState]);\n  if (props.style) {\n    const rawStyles = {};\n    copyRawValuesOnly(rawStyles, props.style, props);\n    visualProps.style = { ...rawStyles, ...visualProps.style };\n  }\n  return visualProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs\nvar lowercaseSVGElements = [\n  \"animate\",\n  \"circle\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"g\",\n  \"image\",\n  \"line\",\n  \"filter\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"rect\",\n  \"stop\",\n  \"switch\",\n  \"symbol\",\n  \"svg\",\n  \"text\",\n  \"tspan\",\n  \"use\",\n  \"view\"\n];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs\nfunction isSVGComponent(Component3) {\n  if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component3 !== \"string\" || /**\n     * If it contains a dash, the element is a custom HTML webcomponent.\n     */\n    Component3.includes(\"-\")\n  ) {\n    return false;\n  } else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component3) > -1 || /**\n     * If it contains a capital letter, it's an SVG component\n     */\n    /[A-Z]/u.test(Component3)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nfunction createUseRender(forwardMotionProps = false) {\n  const useRender = (Component3, props, ref, { latestValues }, isStatic) => {\n    const useVisualProps = isSVGComponent(Component3) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component3);\n    const filteredProps = filterProps(props, typeof Component3 === \"string\", forwardMotionProps);\n    const elementProps = Component3 !== Fragment2 ? { ...filteredProps, ...visualProps, ref } : {};\n    const { children } = props;\n    const renderedChildren = useMemo8(() => isMotionValue(children) ? children.get() : children, [children]);\n    return createElement(Component3, {\n      ...elementProps,\n      children: renderedChildren\n    });\n  };\n  return useRender;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n  var _a;\n  const { style: style2 } = props;\n  const newValues = {};\n  for (const key in style2) {\n    if (isMotionValue(style2[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props) || ((_a = visualElement == null ? void 0 : visualElement.getValue(key)) == null ? void 0 : _a.liveStyle) !== void 0) {\n      newValues[key] = style2[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs\nvar htmlMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps,\n    createRenderState: createHtmlRenderState\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps2(props, prevProps, visualElement) {\n  const newValues = scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  for (const key in props) {\n    if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n      const targetKey = transformPropOrder.indexOf(key) !== -1 ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1) : key;\n      newValues[targetKey] = props[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs\nvar svgMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeMotionValuesFromProps2,\n    createRenderState: createSvgRenderState\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-factory.mjs\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n  return function createMotionComponent2(Component3, { forwardMotionProps } = { forwardMotionProps: false }) {\n    const baseConfig = isSVGComponent(Component3) ? svgMotionConfig : htmlMotionConfig;\n    const config = {\n      ...baseConfig,\n      preloadedFeatures,\n      useRender: createUseRender(forwardMotionProps),\n      createVisualElement,\n      Component: Component3\n    };\n    return createRendererMotionComponent(config);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/create.mjs\nvar createMinimalMotionComponent = /* @__PURE__ */ createMotionComponentFactory();\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\nvar m = /* @__PURE__ */ createDOMMotionComponentProxy(createMinimalMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs\nfunction resolveVariant(visualElement, definition, custom) {\n  const props = visualElement.getProps();\n  return resolveVariantFromProps(props, definition, custom !== void 0 ? custom : props.custom, visualElement);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs\nvar isKeyframesTarget = (v) => {\n  return Array.isArray(v);\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/setters.mjs\nfunction setMotionValue(visualElement, key, value) {\n  if (visualElement.hasValue(key)) {\n    visualElement.getValue(key).set(value);\n  } else {\n    visualElement.addValue(key, motionValue(value));\n  }\n}\nfunction resolveFinalValueInKeyframes(v) {\n  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n}\nfunction setTarget(visualElement, definition) {\n  const resolved = resolveVariant(visualElement, definition);\n  let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n  target = { ...target, ...transitionEnd };\n  for (const key in target) {\n    const value = resolveFinalValueInKeyframes(target[key]);\n    setMotionValue(visualElement, key, value);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs\nfunction isWillChangeMotionValue(value) {\n  return Boolean(isMotionValue(value) && value.add);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs\nfunction addValueToWillChange(visualElement, key) {\n  const willChange = visualElement.getValue(\"willChange\");\n  if (isWillChangeMotionValue(willChange)) {\n    return willChange.add(key);\n  } else if (!willChange && MotionGlobalConfig.WillChange) {\n    const newWillChange = new MotionGlobalConfig.WillChange(\"auto\");\n    visualElement.addValue(\"willChange\", newWillChange);\n    newWillChange.add(key);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs\nfunction getOptimisedAppearId(visualElement) {\n  return visualElement.props[optimizedAppearDataAttribute];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs\nvar isNotNull2 = (value) => value !== null;\nfunction getFinalKeyframe2(keyframes2, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n  const resolvedKeyframes = keyframes2.filter(isNotNull2);\n  const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;\n  return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs\nvar underDampedSpring = {\n  type: \"spring\",\n  stiffness: 500,\n  damping: 25,\n  restSpeed: 10\n};\nvar criticallyDampedSpring = (target) => ({\n  type: \"spring\",\n  stiffness: 550,\n  damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n  restSpeed: 10\n});\nvar keyframesTransition = {\n  type: \"keyframes\",\n  duration: 0.8\n};\nvar ease = {\n  type: \"keyframes\",\n  ease: [0.25, 0.1, 0.35, 1],\n  duration: 0.3\n};\nvar getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {\n  if (keyframes2.length > 2) {\n    return keyframesTransition;\n  } else if (transformProps.has(valueKey)) {\n    return valueKey.startsWith(\"scale\") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;\n  }\n  return ease;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n  return !!Object.keys(transition).length;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs\nvar animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n  const valueTransition = getValueTransition(transition, name) || {};\n  const delay2 = valueTransition.delay || transition.delay || 0;\n  let { elapsed = 0 } = transition;\n  elapsed = elapsed - secondsToMilliseconds(delay2);\n  const options = {\n    keyframes: Array.isArray(target) ? target : [null, target],\n    ease: \"easeOut\",\n    velocity: value.getVelocity(),\n    ...valueTransition,\n    delay: -elapsed,\n    onUpdate: (v) => {\n      value.set(v);\n      valueTransition.onUpdate && valueTransition.onUpdate(v);\n    },\n    onComplete: () => {\n      onComplete();\n      valueTransition.onComplete && valueTransition.onComplete();\n    },\n    name,\n    motionValue: value,\n    element: isHandoff ? void 0 : element\n  };\n  if (!isTransitionDefined(valueTransition)) {\n    Object.assign(options, getDefaultTransition(name, options));\n  }\n  options.duration && (options.duration = secondsToMilliseconds(options.duration));\n  options.repeatDelay && (options.repeatDelay = secondsToMilliseconds(options.repeatDelay));\n  if (options.from !== void 0) {\n    options.keyframes[0] = options.from;\n  }\n  let shouldSkip = false;\n  if (options.type === false || options.duration === 0 && !options.repeatDelay) {\n    options.duration = 0;\n    if (options.delay === 0) {\n      shouldSkip = true;\n    }\n  }\n  if (MotionGlobalConfig.instantAnimations || MotionGlobalConfig.skipAnimations) {\n    shouldSkip = true;\n    options.duration = 0;\n    options.delay = 0;\n  }\n  options.allowFlatten = !valueTransition.type && !valueTransition.ease;\n  if (shouldSkip && !isHandoff && value.get() !== void 0) {\n    const finalKeyframe = getFinalKeyframe2(options.keyframes, valueTransition);\n    if (finalKeyframe !== void 0) {\n      frame.update(() => {\n        options.onUpdate(finalKeyframe);\n        options.onComplete();\n      });\n      return;\n    }\n  }\n  return valueTransition.isSync ? new JSAnimation(options) : new AsyncMotionValueAnimation(options);\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n  const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n  needsAnimating[key] = false;\n  return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay: delay2 = 0, transitionOverride, type } = {}) {\n  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n  if (transitionOverride)\n    transition = transitionOverride;\n  const animations2 = [];\n  const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];\n  for (const key in target) {\n    const value = visualElement.getValue(key, visualElement.latestValues[key] ?? null);\n    const valueTarget = target[key];\n    if (valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {\n      continue;\n    }\n    const valueTransition = {\n      delay: delay2,\n      ...getValueTransition(transition || {}, key)\n    };\n    const currentValue = value.get();\n    if (currentValue !== void 0 && !value.isAnimating && !Array.isArray(valueTarget) && valueTarget === currentValue && !valueTransition.velocity) {\n      continue;\n    }\n    let isHandoff = false;\n    if (window.MotionHandoffAnimation) {\n      const appearId = getOptimisedAppearId(visualElement);\n      if (appearId) {\n        const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n        if (startTime !== null) {\n          valueTransition.startTime = startTime;\n          isHandoff = true;\n        }\n      }\n    }\n    addValueToWillChange(visualElement, key);\n    value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && positionalKeys.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));\n    const animation = value.animation;\n    if (animation) {\n      animations2.push(animation);\n    }\n  }\n  if (transitionEnd) {\n    Promise.all(animations2).then(() => {\n      frame.update(() => {\n        transitionEnd && setTarget(visualElement, transitionEnd);\n      });\n    });\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs\nfunction animateVariant(visualElement, variant, options = {}) {\n  var _a;\n  const resolved = resolveVariant(visualElement, variant, options.type === \"exit\" ? (_a = visualElement.presenceContext) == null ? void 0 : _a.custom : void 0);\n  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n  if (options.transitionOverride) {\n    transition = options.transitionOverride;\n  }\n  const getAnimation = resolved ? () => Promise.all(animateTarget(visualElement, resolved, options)) : () => Promise.resolve();\n  const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size ? (forwardDelay = 0) => {\n    const { delayChildren = 0, staggerChildren, staggerDirection } = transition;\n    return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n  } : () => Promise.resolve();\n  const { when } = transition;\n  if (when) {\n    const [first, last] = when === \"beforeChildren\" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation];\n    return first().then(() => last());\n  } else {\n    return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n  }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n  const animations2 = [];\n  const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n  const generateStaggerDuration = staggerDirection === 1 ? (i = 0) => i * staggerChildren : (i = 0) => maxStaggerDuration - i * staggerChildren;\n  Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach((child, i) => {\n    child.notify(\"AnimationStart\", variant);\n    animations2.push(animateVariant(child, variant, {\n      ...options,\n      delay: delayChildren + generateStaggerDuration(i)\n    }).then(() => child.notify(\"AnimationComplete\", variant)));\n  });\n  return Promise.all(animations2);\n}\nfunction sortByTreeOrder(a, b) {\n  return a.sortNodePosition(b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs\nfunction animateVisualElement(visualElement, definition, options = {}) {\n  visualElement.notify(\"AnimationStart\", definition);\n  let animation;\n  if (Array.isArray(definition)) {\n    const animations2 = definition.map((variant) => animateVariant(visualElement, variant, options));\n    animation = Promise.all(animations2);\n  } else if (typeof definition === \"string\") {\n    animation = animateVariant(visualElement, definition, options);\n  } else {\n    const resolvedDefinition = typeof definition === \"function\" ? resolveVariant(visualElement, definition, options.custom) : definition;\n    animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n  }\n  return animation.then(() => {\n    visualElement.notify(\"AnimationComplete\", definition);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs\nfunction shallowCompare(next2, prev) {\n  if (!Array.isArray(prev))\n    return false;\n  const prevLength = prev.length;\n  if (prevLength !== next2.length)\n    return false;\n  for (let i = 0; i < prevLength; i++) {\n    if (prev[i] !== next2[i])\n      return false;\n  }\n  return true;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs\nvar numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n  if (!visualElement)\n    return void 0;\n  if (!visualElement.isControllingVariants) {\n    const context2 = visualElement.parent ? getVariantContext(visualElement.parent) || {} : {};\n    if (visualElement.props.initial !== void 0) {\n      context2.initial = visualElement.props.initial;\n    }\n    return context2;\n  }\n  const context = {};\n  for (let i = 0; i < numVariantProps; i++) {\n    const name = variantProps[i];\n    const prop = visualElement.props[name];\n    if (isVariantLabel(prop) || prop === false) {\n      context[name] = prop;\n    }\n  }\n  return context;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs\nvar reversePriorityOrder = [...variantPriorityOrder].reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n  return (animations2) => Promise.all(animations2.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n  let animate2 = animateList(visualElement);\n  let state = createState();\n  let isInitialRender = true;\n  const buildResolvedTypeValues = (type) => (acc, definition) => {\n    var _a;\n    const resolved = resolveVariant(visualElement, definition, type === \"exit\" ? (_a = visualElement.presenceContext) == null ? void 0 : _a.custom : void 0);\n    if (resolved) {\n      const { transition, transitionEnd, ...target } = resolved;\n      acc = { ...acc, ...target, ...transitionEnd };\n    }\n    return acc;\n  };\n  function setAnimateFunction(makeAnimator) {\n    animate2 = makeAnimator(visualElement);\n  }\n  function animateChanges(changedActiveType) {\n    const { props } = visualElement;\n    const context = getVariantContext(visualElement.parent) || {};\n    const animations2 = [];\n    const removedKeys = /* @__PURE__ */ new Set();\n    let encounteredKeys = {};\n    let removedVariantIndex = Infinity;\n    for (let i = 0; i < numAnimationTypes; i++) {\n      const type = reversePriorityOrder[i];\n      const typeState = state[type];\n      const prop = props[type] !== void 0 ? props[type] : context[type];\n      const propIsVariant = isVariantLabel(prop);\n      const activeDelta = type === changedActiveType ? typeState.isActive : null;\n      if (activeDelta === false)\n        removedVariantIndex = i;\n      let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n      if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) {\n        isInherited = false;\n      }\n      typeState.protectedKeys = { ...encounteredKeys };\n      if (\n        // If it isn't active and hasn't *just* been set as inactive\n        !typeState.isActive && activeDelta === null || // If we didn't and don't have any defined prop for this animation type\n        !prop && !typeState.prevProp || // Or if the prop doesn't define an animation\n        isAnimationControls(prop) || typeof prop === \"boolean\"\n      ) {\n        continue;\n      }\n      const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n      let shouldAnimateType = variantDidChange || // If we're making this variant active, we want to always make it active\n      type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || // If we removed a higher-priority variant (i is in reverse order)\n      i > removedVariantIndex && propIsVariant;\n      let handledRemovedValues = false;\n      const definitionList = Array.isArray(prop) ? prop : [prop];\n      let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n      if (activeDelta === false)\n        resolvedValues = {};\n      const { prevResolvedValues = {} } = typeState;\n      const allKeys = {\n        ...prevResolvedValues,\n        ...resolvedValues\n      };\n      const markToAnimate = (key) => {\n        shouldAnimateType = true;\n        if (removedKeys.has(key)) {\n          handledRemovedValues = true;\n          removedKeys.delete(key);\n        }\n        typeState.needsAnimating[key] = true;\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = false;\n      };\n      for (const key in allKeys) {\n        const next2 = resolvedValues[key];\n        const prev = prevResolvedValues[key];\n        if (encounteredKeys.hasOwnProperty(key))\n          continue;\n        let valueHasChanged = false;\n        if (isKeyframesTarget(next2) && isKeyframesTarget(prev)) {\n          valueHasChanged = !shallowCompare(next2, prev);\n        } else {\n          valueHasChanged = next2 !== prev;\n        }\n        if (valueHasChanged) {\n          if (next2 !== void 0 && next2 !== null) {\n            markToAnimate(key);\n          } else {\n            removedKeys.add(key);\n          }\n        } else if (next2 !== void 0 && removedKeys.has(key)) {\n          markToAnimate(key);\n        } else {\n          typeState.protectedKeys[key] = true;\n        }\n      }\n      typeState.prevProp = prop;\n      typeState.prevResolvedValues = resolvedValues;\n      if (typeState.isActive) {\n        encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n      }\n      if (isInitialRender && visualElement.blockInitialAnimation) {\n        shouldAnimateType = false;\n      }\n      const willAnimateViaParent = isInherited && variantDidChange;\n      const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n      if (shouldAnimateType && needsAnimating) {\n        animations2.push(...definitionList.map((animation) => ({\n          animation,\n          options: { type }\n        })));\n      }\n    }\n    if (removedKeys.size) {\n      const fallbackAnimation = {};\n      if (typeof props.initial !== \"boolean\") {\n        const initialTransition = resolveVariant(visualElement, Array.isArray(props.initial) ? props.initial[0] : props.initial);\n        if (initialTransition && initialTransition.transition) {\n          fallbackAnimation.transition = initialTransition.transition;\n        }\n      }\n      removedKeys.forEach((key) => {\n        const fallbackTarget = visualElement.getBaseTarget(key);\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = true;\n        fallbackAnimation[key] = fallbackTarget ?? null;\n      });\n      animations2.push({ animation: fallbackAnimation });\n    }\n    let shouldAnimate = Boolean(animations2.length);\n    if (isInitialRender && (props.initial === false || props.initial === props.animate) && !visualElement.manuallyAnimateOnMount) {\n      shouldAnimate = false;\n    }\n    isInitialRender = false;\n    return shouldAnimate ? animate2(animations2) : Promise.resolve();\n  }\n  function setActive(type, isActive) {\n    var _a;\n    if (state[type].isActive === isActive)\n      return Promise.resolve();\n    (_a = visualElement.variantChildren) == null ? void 0 : _a.forEach((child) => {\n      var _a2;\n      return (_a2 = child.animationState) == null ? void 0 : _a2.setActive(type, isActive);\n    });\n    state[type].isActive = isActive;\n    const animations2 = animateChanges(type);\n    for (const key in state) {\n      state[key].protectedKeys = {};\n    }\n    return animations2;\n  }\n  return {\n    animateChanges,\n    setActive,\n    setAnimateFunction,\n    getState: () => state,\n    reset: () => {\n      state = createState();\n      isInitialRender = true;\n    }\n  };\n}\nfunction checkVariantsDidChange(prev, next2) {\n  if (typeof next2 === \"string\") {\n    return next2 !== prev;\n  } else if (Array.isArray(next2)) {\n    return !shallowCompare(next2, prev);\n  }\n  return false;\n}\nfunction createTypeState(isActive = false) {\n  return {\n    isActive,\n    protectedKeys: {},\n    needsAnimating: {},\n    prevResolvedValues: {}\n  };\n}\nfunction createState() {\n  return {\n    animate: createTypeState(true),\n    whileInView: createTypeState(),\n    whileHover: createTypeState(),\n    whileTap: createTypeState(),\n    whileDrag: createTypeState(),\n    whileFocus: createTypeState(),\n    exit: createTypeState()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs\nvar Feature = class {\n  constructor(node) {\n    this.isMounted = false;\n    this.node = node;\n  }\n  update() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs\nvar AnimationFeature = class extends Feature {\n  /**\n   * We dynamically generate the AnimationState manager as it contains a reference\n   * to the underlying animation library. We only want to load that if we load this,\n   * so people can optionally code split it out using the `m` component.\n   */\n  constructor(node) {\n    super(node);\n    node.animationState || (node.animationState = createAnimationState(node));\n  }\n  updateAnimationControlsSubscription() {\n    const { animate: animate2 } = this.node.getProps();\n    if (isAnimationControls(animate2)) {\n      this.unmountControls = animate2.subscribe(this.node);\n    }\n  }\n  /**\n   * Subscribe any provided AnimationControls to the component's VisualElement\n   */\n  mount() {\n    this.updateAnimationControlsSubscription();\n  }\n  update() {\n    const { animate: animate2 } = this.node.getProps();\n    const { animate: prevAnimate } = this.node.prevProps || {};\n    if (animate2 !== prevAnimate) {\n      this.updateAnimationControlsSubscription();\n    }\n  }\n  unmount() {\n    var _a;\n    this.node.animationState.reset();\n    (_a = this.unmountControls) == null ? void 0 : _a.call(this);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs\nvar id = 0;\nvar ExitAnimationFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.id = id++;\n  }\n  update() {\n    if (!this.node.presenceContext)\n      return;\n    const { isPresent: isPresent2, onExitComplete } = this.node.presenceContext;\n    const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n    if (!this.node.animationState || isPresent2 === prevIsPresent) {\n      return;\n    }\n    const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent2);\n    if (onExitComplete && !isPresent2) {\n      exitAnimation.then(() => {\n        onExitComplete(this.id);\n      });\n    }\n  }\n  mount() {\n    const { register, onExitComplete } = this.node.presenceContext || {};\n    if (onExitComplete) {\n      onExitComplete(this.id);\n    }\n    if (register) {\n      this.unmount = register(this.id);\n    }\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nvar animations = {\n  animation: {\n    Feature: AnimationFeature\n  },\n  exit: {\n    Feature: ExitAnimationFeature\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/event-info.mjs\nfunction extractEventInfo(event) {\n  return {\n    point: {\n      x: event.pageX,\n      y: event.pageY\n    }\n  };\n}\nvar addPointerInfo = (handler) => {\n  return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n  target.addEventListener(eventName, handler, options);\n  return () => target.removeEventListener(eventName, handler);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs\nvar SCALE_PRECISION = 1e-4;\nvar SCALE_MIN = 1 - SCALE_PRECISION;\nvar SCALE_MAX = 1 + SCALE_PRECISION;\nvar TRANSLATE_PRECISION = 0.01;\nvar TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nvar TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n  return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n  return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n  delta.origin = origin;\n  delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n  delta.scale = calcLength(target) / calcLength(source);\n  delta.translate = mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n  if (delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX || isNaN(delta.scale)) {\n    delta.scale = 1;\n  }\n  if (delta.translate >= TRANSLATE_MIN && delta.translate <= TRANSLATE_MAX || isNaN(delta.translate)) {\n    delta.translate = 0;\n  }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n  calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);\n  calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n  target.min = parent.min + relative.min;\n  target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n  calcRelativeAxis(target.x, relative.x, parent.x);\n  calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout2, parent) {\n  target.min = layout2.min - parent.min;\n  target.max = target.min + calcLength(layout2);\n}\nfunction calcRelativePosition(target, layout2, parent) {\n  calcRelativeAxisPosition(target.x, layout2.x, parent.x);\n  calcRelativeAxisPosition(target.y, layout2.y, parent.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs\nvar createAxisDelta = () => ({\n  translate: 0,\n  scale: 1,\n  origin: 0,\n  originPoint: 0\n});\nvar createDelta = () => ({\n  x: createAxisDelta(),\n  y: createAxisDelta()\n});\nvar createAxis = () => ({ min: 0, max: 0 });\nvar createBox = () => ({\n  x: createAxis(),\n  y: createAxis()\n});\n\n// ../../../node_modules/framer-motion/dist/es/utils/distance.mjs\nvar distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n  const xDelta = distance(a.x, b.x);\n  const yDelta = distance(a.y, b.y);\n  return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs\nvar compareByDepth = (a, b) => a.depth - b.depth;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs\nvar FlatTree = class {\n  constructor() {\n    this.children = [];\n    this.isDirty = false;\n  }\n  add(child) {\n    addUniqueItem(this.children, child);\n    this.isDirty = true;\n  }\n  remove(child) {\n    removeItem(this.children, child);\n    this.isDirty = true;\n  }\n  forEach(callback) {\n    this.isDirty && this.children.sort(compareByDepth);\n    this.isDirty = false;\n    this.children.forEach(callback);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/delay.mjs\nfunction delay(callback, timeout) {\n  const start2 = time.now();\n  const checkElapsed = ({ timestamp }) => {\n    const elapsed = timestamp - start2;\n    if (elapsed >= timeout) {\n      cancelFrame(checkElapsed);\n      callback(elapsed - timeout);\n    }\n  };\n  frame.setup(checkElapsed, true);\n  return () => cancelFrame(checkElapsed);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/store.mjs\nvar visualElementStore = /* @__PURE__ */ new WeakMap();\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs\nvar prefersReducedMotion = { current: null };\nvar hasReducedMotionListener = { current: false };\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs\nfunction initPrefersReducedMotion() {\n  hasReducedMotionListener.current = true;\n  if (!isBrowser)\n    return;\n  if (window.matchMedia) {\n    const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n    const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;\n    motionMediaQuery.addListener(setReducedMotionPreferences);\n    setReducedMotionPreferences();\n  } else {\n    prefersReducedMotion.current = false;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs\nfunction updateMotionValuesFromProps(element, next2, prev) {\n  for (const key in next2) {\n    const nextValue = next2[key];\n    const prevValue = prev[key];\n    if (isMotionValue(nextValue)) {\n      element.addValue(key, nextValue);\n    } else if (isMotionValue(prevValue)) {\n      element.addValue(key, motionValue(nextValue, { owner: element }));\n    } else if (prevValue !== nextValue) {\n      if (element.hasValue(key)) {\n        const existingValue = element.getValue(key);\n        if (existingValue.liveStyle === true) {\n          existingValue.jump(nextValue);\n        } else if (!existingValue.hasAnimated) {\n          existingValue.set(nextValue);\n        }\n      } else {\n        const latestValue = element.getStaticValue(key);\n        element.addValue(key, motionValue(latestValue !== void 0 ? latestValue : nextValue, { owner: element }));\n      }\n    }\n  }\n  for (const key in prev) {\n    if (next2[key] === void 0)\n      element.removeValue(key);\n  }\n  return next2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nvar propEventHandlers = [\n  \"AnimationStart\",\n  \"AnimationComplete\",\n  \"Update\",\n  \"BeforeLayoutMeasure\",\n  \"LayoutMeasure\",\n  \"LayoutAnimationStart\",\n  \"LayoutAnimationComplete\"\n];\nvar VisualElement = class {\n  /**\n   * This method takes React props and returns found MotionValues. For example, HTML\n   * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n   *\n   * This isn't an abstract method as it needs calling in the constructor, but it is\n   * intended to be one.\n   */\n  scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n    return {};\n  }\n  constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState }, options = {}) {\n    this.current = null;\n    this.children = /* @__PURE__ */ new Set();\n    this.isVariantNode = false;\n    this.isControllingVariants = false;\n    this.shouldReduceMotion = null;\n    this.values = /* @__PURE__ */ new Map();\n    this.KeyframeResolver = KeyframeResolver;\n    this.features = {};\n    this.valueSubscriptions = /* @__PURE__ */ new Map();\n    this.prevMotionValues = {};\n    this.events = {};\n    this.propEventSubscriptions = {};\n    this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n    this.render = () => {\n      if (!this.current)\n        return;\n      this.triggerBuild();\n      this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n    };\n    this.renderScheduledAt = 0;\n    this.scheduleRender = () => {\n      const now2 = time.now();\n      if (this.renderScheduledAt < now2) {\n        this.renderScheduledAt = now2;\n        frame.render(this.render, false, true);\n      }\n    };\n    const { latestValues, renderState } = visualState;\n    this.latestValues = latestValues;\n    this.baseTarget = { ...latestValues };\n    this.initialValues = props.initial ? { ...latestValues } : {};\n    this.renderState = renderState;\n    this.parent = parent;\n    this.props = props;\n    this.presenceContext = presenceContext;\n    this.depth = parent ? parent.depth + 1 : 0;\n    this.reducedMotionConfig = reducedMotionConfig;\n    this.options = options;\n    this.blockInitialAnimation = Boolean(blockInitialAnimation);\n    this.isControllingVariants = isControllingVariants(props);\n    this.isVariantNode = isVariantNode(props);\n    if (this.isVariantNode) {\n      this.variantChildren = /* @__PURE__ */ new Set();\n    }\n    this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n    const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n    for (const key in initialMotionValues) {\n      const value = initialMotionValues[key];\n      if (latestValues[key] !== void 0 && isMotionValue(value)) {\n        value.set(latestValues[key], false);\n      }\n    }\n  }\n  mount(instance) {\n    this.current = instance;\n    visualElementStore.set(instance, this);\n    if (this.projection && !this.projection.instance) {\n      this.projection.mount(instance);\n    }\n    if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n      this.removeFromVariantTree = this.parent.addVariantChild(this);\n    }\n    this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n    if (!hasReducedMotionListener.current) {\n      initPrefersReducedMotion();\n    }\n    this.shouldReduceMotion = this.reducedMotionConfig === \"never\" ? false : this.reducedMotionConfig === \"always\" ? true : prefersReducedMotion.current;\n    if (false) {\n      warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n    }\n    if (this.parent)\n      this.parent.children.add(this);\n    this.update(this.props, this.presenceContext);\n  }\n  unmount() {\n    this.projection && this.projection.unmount();\n    cancelFrame(this.notifyUpdate);\n    cancelFrame(this.render);\n    this.valueSubscriptions.forEach((remove) => remove());\n    this.valueSubscriptions.clear();\n    this.removeFromVariantTree && this.removeFromVariantTree();\n    this.parent && this.parent.children.delete(this);\n    for (const key in this.events) {\n      this.events[key].clear();\n    }\n    for (const key in this.features) {\n      const feature = this.features[key];\n      if (feature) {\n        feature.unmount();\n        feature.isMounted = false;\n      }\n    }\n    this.current = null;\n  }\n  bindToMotionValue(key, value) {\n    if (this.valueSubscriptions.has(key)) {\n      this.valueSubscriptions.get(key)();\n    }\n    const valueIsTransform = transformProps.has(key);\n    if (valueIsTransform && this.onBindTransform) {\n      this.onBindTransform();\n    }\n    const removeOnChange = value.on(\"change\", (latestValue) => {\n      this.latestValues[key] = latestValue;\n      this.props.onUpdate && frame.preRender(this.notifyUpdate);\n      if (valueIsTransform && this.projection) {\n        this.projection.isTransformDirty = true;\n      }\n    });\n    const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n    let removeSyncCheck;\n    if (window.MotionCheckAppearSync) {\n      removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n    }\n    this.valueSubscriptions.set(key, () => {\n      removeOnChange();\n      removeOnRenderRequest();\n      if (removeSyncCheck)\n        removeSyncCheck();\n      if (value.owner)\n        value.stop();\n    });\n  }\n  sortNodePosition(other) {\n    if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {\n      return 0;\n    }\n    return this.sortInstanceNodePosition(this.current, other.current);\n  }\n  updateFeatures() {\n    let key = \"animation\";\n    for (key in featureDefinitions) {\n      const featureDefinition = featureDefinitions[key];\n      if (!featureDefinition)\n        continue;\n      const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n      if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {\n        this.features[key] = new FeatureConstructor(this);\n      }\n      if (this.features[key]) {\n        const feature = this.features[key];\n        if (feature.isMounted) {\n          feature.update();\n        } else {\n          feature.mount();\n          feature.isMounted = true;\n        }\n      }\n    }\n  }\n  triggerBuild() {\n    this.build(this.renderState, this.latestValues, this.props);\n  }\n  /**\n   * Measure the current viewport box with or without transforms.\n   * Only measures axis-aligned boxes, rotate and skew must be manually\n   * removed with a re-render to work.\n   */\n  measureViewportBox() {\n    return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();\n  }\n  getStaticValue(key) {\n    return this.latestValues[key];\n  }\n  setStaticValue(key, value) {\n    this.latestValues[key] = value;\n  }\n  /**\n   * Update the provided props. Ensure any newly-added motion values are\n   * added to our map, old ones removed, and listeners updated.\n   */\n  update(props, presenceContext) {\n    if (props.transformTemplate || this.props.transformTemplate) {\n      this.scheduleRender();\n    }\n    this.prevProps = this.props;\n    this.props = props;\n    this.prevPresenceContext = this.presenceContext;\n    this.presenceContext = presenceContext;\n    for (let i = 0; i < propEventHandlers.length; i++) {\n      const key = propEventHandlers[i];\n      if (this.propEventSubscriptions[key]) {\n        this.propEventSubscriptions[key]();\n        delete this.propEventSubscriptions[key];\n      }\n      const listenerName = \"on\" + key;\n      const listener = props[listenerName];\n      if (listener) {\n        this.propEventSubscriptions[key] = this.on(key, listener);\n      }\n    }\n    this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n    if (this.handleChildMotionValue) {\n      this.handleChildMotionValue();\n    }\n  }\n  getProps() {\n    return this.props;\n  }\n  /**\n   * Returns the variant definition with a given name.\n   */\n  getVariant(name) {\n    return this.props.variants ? this.props.variants[name] : void 0;\n  }\n  /**\n   * Returns the defined default transition on this component.\n   */\n  getDefaultTransition() {\n    return this.props.transition;\n  }\n  getTransformPagePoint() {\n    return this.props.transformPagePoint;\n  }\n  getClosestVariantNode() {\n    return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : void 0;\n  }\n  /**\n   * Add a child visual element to our set of children.\n   */\n  addVariantChild(child) {\n    const closestVariantNode = this.getClosestVariantNode();\n    if (closestVariantNode) {\n      closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);\n      return () => closestVariantNode.variantChildren.delete(child);\n    }\n  }\n  /**\n   * Add a motion value and bind it to this visual element.\n   */\n  addValue(key, value) {\n    const existingValue = this.values.get(key);\n    if (value !== existingValue) {\n      if (existingValue)\n        this.removeValue(key);\n      this.bindToMotionValue(key, value);\n      this.values.set(key, value);\n      this.latestValues[key] = value.get();\n    }\n  }\n  /**\n   * Remove a motion value and unbind any active subscriptions.\n   */\n  removeValue(key) {\n    this.values.delete(key);\n    const unsubscribe = this.valueSubscriptions.get(key);\n    if (unsubscribe) {\n      unsubscribe();\n      this.valueSubscriptions.delete(key);\n    }\n    delete this.latestValues[key];\n    this.removeValueFromRenderState(key, this.renderState);\n  }\n  /**\n   * Check whether we have a motion value for this key\n   */\n  hasValue(key) {\n    return this.values.has(key);\n  }\n  getValue(key, defaultValue) {\n    if (this.props.values && this.props.values[key]) {\n      return this.props.values[key];\n    }\n    let value = this.values.get(key);\n    if (value === void 0 && defaultValue !== void 0) {\n      value = motionValue(defaultValue === null ? void 0 : defaultValue, { owner: this });\n      this.addValue(key, value);\n    }\n    return value;\n  }\n  /**\n   * If we're trying to animate to a previously unencountered value,\n   * we need to check for it in our state and as a last resort read it\n   * directly from the instance (which might have performance implications).\n   */\n  readValue(key, target) {\n    let value = this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : this.getBaseTargetFromProps(this.props, key) ?? this.readValueFromInstance(this.current, key, this.options);\n    if (value !== void 0 && value !== null) {\n      if (typeof value === \"string\" && (isNumericalString(value) || isZeroValueString(value))) {\n        value = parseFloat(value);\n      } else if (!findValueType(value) && complex.test(target)) {\n        value = getAnimatableNone2(key, target);\n      }\n      this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n    }\n    return isMotionValue(value) ? value.get() : value;\n  }\n  /**\n   * Set the base target to later animate back to. This is currently\n   * only hydrated on creation and when we first read a value.\n   */\n  setBaseTarget(key, value) {\n    this.baseTarget[key] = value;\n  }\n  /**\n   * Find the base target for a value thats been removed from all animation\n   * props.\n   */\n  getBaseTarget(key) {\n    var _a;\n    const { initial } = this.props;\n    let valueFromInitial;\n    if (typeof initial === \"string\" || typeof initial === \"object\") {\n      const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) == null ? void 0 : _a.custom);\n      if (variant) {\n        valueFromInitial = variant[key];\n      }\n    }\n    if (initial && valueFromInitial !== void 0) {\n      return valueFromInitial;\n    }\n    const target = this.getBaseTargetFromProps(this.props, key);\n    if (target !== void 0 && !isMotionValue(target))\n      return target;\n    return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    return this.events[eventName].add(callback);\n  }\n  notify(eventName, ...args) {\n    if (this.events[eventName]) {\n      this.events[eventName].notify(...args);\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs\nfunction convertBoundingBoxToBox({ top, left, right, bottom }) {\n  return {\n    x: { min: left, max: right },\n    y: { min: top, max: bottom }\n  };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n  return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\nfunction transformBoxPoints(point2, transformPoint2) {\n  if (!transformPoint2)\n    return point2;\n  const topLeft = transformPoint2({ x: point2.left, y: point2.top });\n  const bottomRight = transformPoint2({ x: point2.right, y: point2.bottom });\n  return {\n    top: topLeft.y,\n    left: topLeft.x,\n    bottom: bottomRight.y,\n    right: bottomRight.x\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs\nfunction eachAxis(callback) {\n  return [callback(\"x\"), callback(\"y\")];\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs\nfunction isIdentityScale(scale2) {\n  return scale2 === void 0 || scale2 === 1;\n}\nfunction hasScale({ scale: scale2, scaleX: scaleX2, scaleY: scaleY2 }) {\n  return !isIdentityScale(scale2) || !isIdentityScale(scaleX2) || !isIdentityScale(scaleY2);\n}\nfunction hasTransform(values) {\n  return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY || values.skewX || values.skewY;\n}\nfunction has2DTranslate(values) {\n  return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n  return value && value !== \"0%\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs\nfunction scalePoint(point2, scale2, originPoint) {\n  const distanceFromOrigin = point2 - originPoint;\n  const scaled = scale2 * distanceFromOrigin;\n  return originPoint + scaled;\n}\nfunction applyPointDelta(point2, translate, scale2, originPoint, boxScale) {\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, boxScale, originPoint);\n  }\n  return scalePoint(point2, scale2, originPoint) + translate;\n}\nfunction applyAxisDelta(axis, translate = 0, scale2 = 1, originPoint, boxScale) {\n  axis.min = applyPointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = applyPointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction applyBoxDelta(box, { x, y }) {\n  applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n  applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nvar TREE_SCALE_SNAP_MIN = 0.999999999999;\nvar TREE_SCALE_SNAP_MAX = 1.0000000000001;\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n  const treeLength = treePath.length;\n  if (!treeLength)\n    return;\n  treeScale.x = treeScale.y = 1;\n  let node;\n  let delta;\n  for (let i = 0; i < treeLength; i++) {\n    node = treePath[i];\n    delta = node.projectionDelta;\n    const { visualElement } = node.options;\n    if (visualElement && visualElement.props.style && visualElement.props.style.display === \"contents\") {\n      continue;\n    }\n    if (isSharedTransition && node.options.layoutScroll && node.scroll && node !== node.root) {\n      transformBox(box, {\n        x: -node.scroll.offset.x,\n        y: -node.scroll.offset.y\n      });\n    }\n    if (delta) {\n      treeScale.x *= delta.x.scale;\n      treeScale.y *= delta.y.scale;\n      applyBoxDelta(box, delta);\n    }\n    if (isSharedTransition && hasTransform(node.latestValues)) {\n      transformBox(box, node.latestValues);\n    }\n  }\n  if (treeScale.x < TREE_SCALE_SNAP_MAX && treeScale.x > TREE_SCALE_SNAP_MIN) {\n    treeScale.x = 1;\n  }\n  if (treeScale.y < TREE_SCALE_SNAP_MAX && treeScale.y > TREE_SCALE_SNAP_MIN) {\n    treeScale.y = 1;\n  }\n}\nfunction translateAxis(axis, distance2) {\n  axis.min = axis.min + distance2;\n  axis.max = axis.max + distance2;\n}\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n  const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n  applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\nfunction transformBox(box, transform2) {\n  transformAxis(box.x, transform2.x, transform2.scaleX, transform2.scale, transform2.originX);\n  transformAxis(box.y, transform2.y, transform2.scaleY, transform2.scale, transform2.originY);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs\nfunction measureViewportBox(instance, transformPoint2) {\n  return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint2));\n}\nfunction measurePageBox(element, rootProjectionNode2, transformPagePoint) {\n  const viewportBox = measureViewportBox(element, transformPagePoint);\n  const { scroll: scroll2 } = rootProjectionNode2;\n  if (scroll2) {\n    translateAxis(viewportBox.x, scroll2.offset.x);\n    translateAxis(viewportBox.y, scroll2.offset.y);\n  }\n  return viewportBox;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/get-context-window.mjs\nvar getContextWindow = ({ current: current2 }) => {\n  return current2 ? current2.ownerDocument.defaultView : null;\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs\nvar PanSession = class {\n  constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n    this.startEvent = null;\n    this.lastMoveEvent = null;\n    this.lastMoveEventInfo = null;\n    this.handlers = {};\n    this.contextWindow = window;\n    this.updatePoint = () => {\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const info2 = getPanInfo(this.lastMoveEventInfo, this.history);\n      const isPanStarted = this.startEvent !== null;\n      const isDistancePastThreshold = distance2D(info2.offset, { x: 0, y: 0 }) >= 3;\n      if (!isPanStarted && !isDistancePastThreshold)\n        return;\n      const { point: point3 } = info2;\n      const { timestamp: timestamp2 } = frameData;\n      this.history.push({ ...point3, timestamp: timestamp2 });\n      const { onStart, onMove } = this.handlers;\n      if (!isPanStarted) {\n        onStart && onStart(this.lastMoveEvent, info2);\n        this.startEvent = this.lastMoveEvent;\n      }\n      onMove && onMove(this.lastMoveEvent, info2);\n    };\n    this.handlePointerMove = (event2, info2) => {\n      this.lastMoveEvent = event2;\n      this.lastMoveEventInfo = transformPoint(info2, this.transformPagePoint);\n      frame.update(this.updatePoint, true);\n    };\n    this.handlePointerUp = (event2, info2) => {\n      this.end();\n      const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n      if (this.dragSnapToOrigin)\n        resumeAnimation && resumeAnimation();\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const panInfo = getPanInfo(event2.type === \"pointercancel\" ? this.lastMoveEventInfo : transformPoint(info2, this.transformPagePoint), this.history);\n      if (this.startEvent && onEnd) {\n        onEnd(event2, panInfo);\n      }\n      onSessionEnd && onSessionEnd(event2, panInfo);\n    };\n    if (!isPrimaryPointer(event))\n      return;\n    this.dragSnapToOrigin = dragSnapToOrigin;\n    this.handlers = handlers;\n    this.transformPagePoint = transformPagePoint;\n    this.contextWindow = contextWindow || window;\n    const info = extractEventInfo(event);\n    const initialInfo = transformPoint(info, this.transformPagePoint);\n    const { point: point2 } = initialInfo;\n    const { timestamp } = frameData;\n    this.history = [{ ...point2, timestamp }];\n    const { onSessionStart } = handlers;\n    onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history));\n    this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n  }\n  updateHandlers(handlers) {\n    this.handlers = handlers;\n  }\n  end() {\n    this.removeListeners && this.removeListeners();\n    cancelFrame(this.updatePoint);\n  }\n};\nfunction transformPoint(info, transformPagePoint) {\n  return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n  return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point: point2 }, history) {\n  return {\n    point: point2,\n    delta: subtractPoint(point2, lastDevicePoint(history)),\n    offset: subtractPoint(point2, startDevicePoint(history)),\n    velocity: getVelocity(history, 0.1)\n  };\n}\nfunction startDevicePoint(history) {\n  return history[0];\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n  if (history.length < 2) {\n    return { x: 0, y: 0 };\n  }\n  let i = history.length - 1;\n  let timestampedPoint = null;\n  const lastPoint = lastDevicePoint(history);\n  while (i >= 0) {\n    timestampedPoint = history[i];\n    if (lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta)) {\n      break;\n    }\n    i--;\n  }\n  if (!timestampedPoint) {\n    return { x: 0, y: 0 };\n  }\n  const time2 = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n  if (time2 === 0) {\n    return { x: 0, y: 0 };\n  }\n  const currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time2,\n    y: (lastPoint.y - timestampedPoint.y) / time2\n  };\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n  return currentVelocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs\nfunction applyConstraints(point2, { min, max }, elastic) {\n  if (min !== void 0 && point2 < min) {\n    point2 = elastic ? mixNumber(min, point2, elastic.min) : Math.max(point2, min);\n  } else if (max !== void 0 && point2 > max) {\n    point2 = elastic ? mixNumber(max, point2, elastic.max) : Math.min(point2, max);\n  }\n  return point2;\n}\nfunction calcRelativeAxisConstraints(axis, min, max) {\n  return {\n    min: min !== void 0 ? axis.min + min : void 0,\n    max: max !== void 0 ? axis.max + max - (axis.max - axis.min) : void 0\n  };\n}\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n  return {\n    x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n    y: calcRelativeAxisConstraints(layoutBox.y, top, bottom)\n  };\n}\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n  let min = constraintsAxis.min - layoutAxis.min;\n  let max = constraintsAxis.max - layoutAxis.max;\n  if (constraintsAxis.max - constraintsAxis.min < layoutAxis.max - layoutAxis.min) {\n    [min, max] = [max, min];\n  }\n  return { min, max };\n}\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n  return {\n    x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n    y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y)\n  };\n}\nfunction calcOrigin(source, target) {\n  let origin = 0.5;\n  const sourceLength = calcLength(source);\n  const targetLength = calcLength(target);\n  if (targetLength > sourceLength) {\n    origin = progress(target.min, target.max - sourceLength, source.min);\n  } else if (sourceLength > targetLength) {\n    origin = progress(source.min, source.max - targetLength, target.min);\n  }\n  return clamp(0, 1, origin);\n}\nfunction rebaseAxisConstraints(layout2, constraints) {\n  const relativeConstraints = {};\n  if (constraints.min !== void 0) {\n    relativeConstraints.min = constraints.min - layout2.min;\n  }\n  if (constraints.max !== void 0) {\n    relativeConstraints.max = constraints.max - layout2.min;\n  }\n  return relativeConstraints;\n}\nvar defaultElastic = 0.35;\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n  if (dragElastic === false) {\n    dragElastic = 0;\n  } else if (dragElastic === true) {\n    dragElastic = defaultElastic;\n  }\n  return {\n    x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n    y: resolveAxisElastic(dragElastic, \"top\", \"bottom\")\n  };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n  return {\n    min: resolvePointElastic(dragElastic, minLabel),\n    max: resolvePointElastic(dragElastic, maxLabel)\n  };\n}\nfunction resolvePointElastic(dragElastic, label) {\n  return typeof dragElastic === \"number\" ? dragElastic : dragElastic[label] || 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs\nvar elementDragControls = /* @__PURE__ */ new WeakMap();\nvar VisualElementDragControls = class {\n  constructor(visualElement) {\n    this.openDragLock = null;\n    this.isDragging = false;\n    this.currentDirection = null;\n    this.originPoint = { x: 0, y: 0 };\n    this.constraints = false;\n    this.hasMutatedConstraints = false;\n    this.elastic = createBox();\n    this.visualElement = visualElement;\n  }\n  start(originEvent, { snapToCursor = false } = {}) {\n    const { presenceContext } = this.visualElement;\n    if (presenceContext && presenceContext.isPresent === false)\n      return;\n    const onSessionStart = (event) => {\n      const { dragSnapToOrigin: dragSnapToOrigin2 } = this.getProps();\n      dragSnapToOrigin2 ? this.pauseAnimation() : this.stopAnimation();\n      if (snapToCursor) {\n        this.snapToCursor(extractEventInfo(event).point);\n      }\n    };\n    const onStart = (event, info) => {\n      const { drag: drag2, dragPropagation, onDragStart } = this.getProps();\n      if (drag2 && !dragPropagation) {\n        if (this.openDragLock)\n          this.openDragLock();\n        this.openDragLock = setDragLock(drag2);\n        if (!this.openDragLock)\n          return;\n      }\n      this.isDragging = true;\n      this.currentDirection = null;\n      this.resolveConstraints();\n      if (this.visualElement.projection) {\n        this.visualElement.projection.isAnimationBlocked = true;\n        this.visualElement.projection.target = void 0;\n      }\n      eachAxis((axis) => {\n        let current2 = this.getAxisMotionValue(axis).get() || 0;\n        if (percent.test(current2)) {\n          const { projection } = this.visualElement;\n          if (projection && projection.layout) {\n            const measuredAxis = projection.layout.layoutBox[axis];\n            if (measuredAxis) {\n              const length = calcLength(measuredAxis);\n              current2 = length * (parseFloat(current2) / 100);\n            }\n          }\n        }\n        this.originPoint[axis] = current2;\n      });\n      if (onDragStart) {\n        frame.postRender(() => onDragStart(event, info));\n      }\n      addValueToWillChange(this.visualElement, \"transform\");\n      const { animationState } = this.visualElement;\n      animationState && animationState.setActive(\"whileDrag\", true);\n    };\n    const onMove = (event, info) => {\n      const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps();\n      if (!dragPropagation && !this.openDragLock)\n        return;\n      const { offset } = info;\n      if (dragDirectionLock && this.currentDirection === null) {\n        this.currentDirection = getCurrentDirection(offset);\n        if (this.currentDirection !== null) {\n          onDirectionLock && onDirectionLock(this.currentDirection);\n        }\n        return;\n      }\n      this.updateAxis(\"x\", info.point, offset);\n      this.updateAxis(\"y\", info.point, offset);\n      this.visualElement.render();\n      onDrag && onDrag(event, info);\n    };\n    const onSessionEnd = (event, info) => this.stop(event, info);\n    const resumeAnimation = () => eachAxis((axis) => {\n      var _a;\n      return this.getAnimationState(axis) === \"paused\" && ((_a = this.getAxisMotionValue(axis).animation) == null ? void 0 : _a.play());\n    });\n    const { dragSnapToOrigin } = this.getProps();\n    this.panSession = new PanSession(originEvent, {\n      onSessionStart,\n      onStart,\n      onMove,\n      onSessionEnd,\n      resumeAnimation\n    }, {\n      transformPagePoint: this.visualElement.getTransformPagePoint(),\n      dragSnapToOrigin,\n      contextWindow: getContextWindow(this.visualElement)\n    });\n  }\n  stop(event, info) {\n    const isDragging2 = this.isDragging;\n    this.cancel();\n    if (!isDragging2)\n      return;\n    const { velocity } = info;\n    this.startAnimation(velocity);\n    const { onDragEnd } = this.getProps();\n    if (onDragEnd) {\n      frame.postRender(() => onDragEnd(event, info));\n    }\n  }\n  cancel() {\n    this.isDragging = false;\n    const { projection, animationState } = this.visualElement;\n    if (projection) {\n      projection.isAnimationBlocked = false;\n    }\n    this.panSession && this.panSession.end();\n    this.panSession = void 0;\n    const { dragPropagation } = this.getProps();\n    if (!dragPropagation && this.openDragLock) {\n      this.openDragLock();\n      this.openDragLock = null;\n    }\n    animationState && animationState.setActive(\"whileDrag\", false);\n  }\n  updateAxis(axis, _point, offset) {\n    const { drag: drag2 } = this.getProps();\n    if (!offset || !shouldDrag(axis, drag2, this.currentDirection))\n      return;\n    const axisValue = this.getAxisMotionValue(axis);\n    let next2 = this.originPoint[axis] + offset[axis];\n    if (this.constraints && this.constraints[axis]) {\n      next2 = applyConstraints(next2, this.constraints[axis], this.elastic[axis]);\n    }\n    axisValue.set(next2);\n  }\n  resolveConstraints() {\n    var _a;\n    const { dragConstraints, dragElastic } = this.getProps();\n    const layout2 = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(false) : (_a = this.visualElement.projection) == null ? void 0 : _a.layout;\n    const prevConstraints = this.constraints;\n    if (dragConstraints && isRefObject(dragConstraints)) {\n      if (!this.constraints) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    } else {\n      if (dragConstraints && layout2) {\n        this.constraints = calcRelativeConstraints(layout2.layoutBox, dragConstraints);\n      } else {\n        this.constraints = false;\n      }\n    }\n    this.elastic = resolveDragElastic(dragElastic);\n    if (prevConstraints !== this.constraints && layout2 && this.constraints && !this.hasMutatedConstraints) {\n      eachAxis((axis) => {\n        if (this.constraints !== false && this.getAxisMotionValue(axis)) {\n          this.constraints[axis] = rebaseAxisConstraints(layout2.layoutBox[axis], this.constraints[axis]);\n        }\n      });\n    }\n  }\n  resolveRefConstraints() {\n    const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n    if (!constraints || !isRefObject(constraints))\n      return false;\n    const constraintsElement = constraints.current;\n    invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n    const { projection } = this.visualElement;\n    if (!projection || !projection.layout)\n      return false;\n    const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n    let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n    if (onMeasureDragConstraints) {\n      const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n      this.hasMutatedConstraints = !!userConstraints;\n      if (userConstraints) {\n        measuredConstraints = convertBoundingBoxToBox(userConstraints);\n      }\n    }\n    return measuredConstraints;\n  }\n  startAnimation(velocity) {\n    const { drag: drag2, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd } = this.getProps();\n    const constraints = this.constraints || {};\n    const momentumAnimations = eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, this.currentDirection)) {\n        return;\n      }\n      let transition = constraints && constraints[axis] || {};\n      if (dragSnapToOrigin)\n        transition = { min: 0, max: 0 };\n      const bounceStiffness = dragElastic ? 200 : 1e6;\n      const bounceDamping = dragElastic ? 40 : 1e7;\n      const inertia2 = {\n        type: \"inertia\",\n        velocity: dragMomentum ? velocity[axis] : 0,\n        bounceStiffness,\n        bounceDamping,\n        timeConstant: 750,\n        restDelta: 1,\n        restSpeed: 10,\n        ...dragTransition,\n        ...transition\n      };\n      return this.startAxisValueAnimation(axis, inertia2);\n    });\n    return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n  }\n  startAxisValueAnimation(axis, transition) {\n    const axisValue = this.getAxisMotionValue(axis);\n    addValueToWillChange(this.visualElement, axis);\n    return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n  }\n  stopAnimation() {\n    eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n  }\n  pauseAnimation() {\n    eachAxis((axis) => {\n      var _a;\n      return (_a = this.getAxisMotionValue(axis).animation) == null ? void 0 : _a.pause();\n    });\n  }\n  getAnimationState(axis) {\n    var _a;\n    return (_a = this.getAxisMotionValue(axis).animation) == null ? void 0 : _a.state;\n  }\n  /**\n   * Drag works differently depending on which props are provided.\n   *\n   * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n   * - Otherwise, we apply the delta to the x/y motion values.\n   */\n  getAxisMotionValue(axis) {\n    const dragKey = `_drag${axis.toUpperCase()}`;\n    const props = this.visualElement.getProps();\n    const externalMotionValue = props[dragKey];\n    return externalMotionValue ? externalMotionValue : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : void 0) || 0);\n  }\n  snapToCursor(point2) {\n    eachAxis((axis) => {\n      const { drag: drag2 } = this.getProps();\n      if (!shouldDrag(axis, drag2, this.currentDirection))\n        return;\n      const { projection } = this.visualElement;\n      const axisValue = this.getAxisMotionValue(axis);\n      if (projection && projection.layout) {\n        const { min, max } = projection.layout.layoutBox[axis];\n        axisValue.set(point2[axis] - mixNumber(min, max, 0.5));\n      }\n    });\n  }\n  /**\n   * When the viewport resizes we want to check if the measured constraints\n   * have changed and, if so, reposition the element within those new constraints\n   * relative to where it was before the resize.\n   */\n  scalePositionWithinConstraints() {\n    if (!this.visualElement.current)\n      return;\n    const { drag: drag2, dragConstraints } = this.getProps();\n    const { projection } = this.visualElement;\n    if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n      return;\n    this.stopAnimation();\n    const boxProgress = { x: 0, y: 0 };\n    eachAxis((axis) => {\n      const axisValue = this.getAxisMotionValue(axis);\n      if (axisValue && this.constraints !== false) {\n        const latest = axisValue.get();\n        boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n      }\n    });\n    const { transformTemplate } = this.visualElement.getProps();\n    this.visualElement.current.style.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n    projection.root && projection.root.updateScroll();\n    projection.updateLayout();\n    this.resolveConstraints();\n    eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, null))\n        return;\n      const axisValue = this.getAxisMotionValue(axis);\n      const { min, max } = this.constraints[axis];\n      axisValue.set(mixNumber(min, max, boxProgress[axis]));\n    });\n  }\n  addListeners() {\n    if (!this.visualElement.current)\n      return;\n    elementDragControls.set(this.visualElement, this);\n    const element = this.visualElement.current;\n    const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n      const { drag: drag2, dragListener = true } = this.getProps();\n      drag2 && dragListener && this.start(event);\n    });\n    const measureDragConstraints = () => {\n      const { dragConstraints } = this.getProps();\n      if (isRefObject(dragConstraints) && dragConstraints.current) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    };\n    const { projection } = this.visualElement;\n    const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n    if (projection && !projection.layout) {\n      projection.root && projection.root.updateScroll();\n      projection.updateLayout();\n    }\n    frame.read(measureDragConstraints);\n    const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n    const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged }) => {\n      if (this.isDragging && hasLayoutChanged) {\n        eachAxis((axis) => {\n          const motionValue2 = this.getAxisMotionValue(axis);\n          if (!motionValue2)\n            return;\n          this.originPoint[axis] += delta[axis].translate;\n          motionValue2.set(motionValue2.get() + delta[axis].translate);\n        });\n        this.visualElement.render();\n      }\n    });\n    return () => {\n      stopResizeListener();\n      stopPointerListener();\n      stopMeasureLayoutListener();\n      stopLayoutUpdateListener && stopLayoutUpdateListener();\n    };\n  }\n  getProps() {\n    const props = this.visualElement.getProps();\n    const { drag: drag2 = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true } = props;\n    return {\n      ...props,\n      drag: drag2,\n      dragDirectionLock,\n      dragPropagation,\n      dragConstraints,\n      dragElastic,\n      dragMomentum\n    };\n  }\n};\nfunction shouldDrag(direction, drag2, currentDirection) {\n  return (drag2 === true || drag2 === direction) && (currentDirection === null || currentDirection === direction);\n}\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n  let direction = null;\n  if (Math.abs(offset.y) > lockThreshold) {\n    direction = \"y\";\n  } else if (Math.abs(offset.x) > lockThreshold) {\n    direction = \"x\";\n  }\n  return direction;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/index.mjs\nvar DragGesture = class extends Feature {\n  constructor(node) {\n    super(node);\n    this.removeGroupControls = noop;\n    this.removeListeners = noop;\n    this.controls = new VisualElementDragControls(node);\n  }\n  mount() {\n    const { dragControls } = this.node.getProps();\n    if (dragControls) {\n      this.removeGroupControls = dragControls.subscribe(this.controls);\n    }\n    this.removeListeners = this.controls.addListeners() || noop;\n  }\n  unmount() {\n    this.removeGroupControls();\n    this.removeListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs\nvar asyncHandler = (handler) => (event, info) => {\n  if (handler) {\n    frame.postRender(() => handler(event, info));\n  }\n};\nvar PanGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removePointerDownListener = noop;\n  }\n  onPointerDown(pointerDownEvent) {\n    this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n      transformPagePoint: this.node.getTransformPagePoint(),\n      contextWindow: getContextWindow(this.node)\n    });\n  }\n  createPanHandlers() {\n    const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n    return {\n      onSessionStart: asyncHandler(onPanSessionStart),\n      onStart: asyncHandler(onPanStart),\n      onMove: onPan,\n      onEnd: (event, info) => {\n        delete this.session;\n        if (onPanEnd) {\n          frame.postRender(() => onPanEnd(event, info));\n        }\n      }\n    };\n  }\n  mount() {\n    this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n  }\n  update() {\n    this.session && this.session.updateHandlers(this.createPanHandlers());\n  }\n  unmount() {\n    this.removePointerDownListener();\n    this.session && this.session.end();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nimport { jsx as jsx8 } from \"react/jsx-runtime\";\nimport { useContext as useContext10, Component as Component2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/state.mjs\nvar globalProjectionState = {\n  /**\n   * Global flag as to whether the tree has animated since the last time\n   * we resized the window\n   */\n  hasAnimatedSinceResize: true,\n  /**\n   * We set this to true once, on the first update. Any nodes added to the tree beyond that\n   * update will be given a `data-projection-id` attribute.\n   */\n  hasEverUpdated: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs\nfunction pixelsToPercent(pixels, axis) {\n  if (axis.max === axis.min)\n    return 0;\n  return pixels / (axis.max - axis.min) * 100;\n}\nvar correctBorderRadius = {\n  correct: (latest, node) => {\n    if (!node.target)\n      return latest;\n    if (typeof latest === \"string\") {\n      if (px.test(latest)) {\n        latest = parseFloat(latest);\n      } else {\n        return latest;\n      }\n    }\n    const x = pixelsToPercent(latest, node.target.x);\n    const y = pixelsToPercent(latest, node.target.y);\n    return `${x}% ${y}%`;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs\nvar correctBoxShadow = {\n  correct: (latest, { treeScale, projectionDelta }) => {\n    const original = latest;\n    const shadow = complex.parse(latest);\n    if (shadow.length > 5)\n      return original;\n    const template = complex.createTransformer(latest);\n    const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n    const xScale = projectionDelta.x.scale * treeScale.x;\n    const yScale = projectionDelta.y.scale * treeScale.y;\n    shadow[0 + offset] /= xScale;\n    shadow[1 + offset] /= yScale;\n    const averageScale = mixNumber(xScale, yScale, 0.5);\n    if (typeof shadow[2 + offset] === \"number\")\n      shadow[2 + offset] /= averageScale;\n    if (typeof shadow[3 + offset] === \"number\")\n      shadow[3 + offset] /= averageScale;\n    return template(shadow);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nvar MeasureLayoutWithContext = class extends Component2 {\n  /**\n   * This only mounts projection nodes for components that\n   * need measuring, we might want to do it for all components\n   * in order to incorporate transforms\n   */\n  componentDidMount() {\n    const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n    const { projection } = visualElement;\n    addScaleCorrector(defaultScaleCorrectors);\n    if (projection) {\n      if (layoutGroup.group)\n        layoutGroup.group.add(projection);\n      if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n        switchLayoutGroup.register(projection);\n      }\n      projection.root.didUpdate();\n      projection.addEventListener(\"animationComplete\", () => {\n        this.safeToRemove();\n      });\n      projection.setOptions({\n        ...projection.options,\n        onExitComplete: () => this.safeToRemove()\n      });\n    }\n    globalProjectionState.hasEverUpdated = true;\n  }\n  getSnapshotBeforeUpdate(prevProps) {\n    const { layoutDependency, visualElement, drag: drag2, isPresent: isPresent2 } = this.props;\n    const { projection } = visualElement;\n    if (!projection)\n      return null;\n    projection.isPresent = isPresent2;\n    if (drag2 || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0 || prevProps.isPresent !== isPresent2) {\n      projection.willUpdate();\n    } else {\n      this.safeToRemove();\n    }\n    if (prevProps.isPresent !== isPresent2) {\n      if (isPresent2) {\n        projection.promote();\n      } else if (!projection.relegate()) {\n        frame.postRender(() => {\n          const stack = projection.getStack();\n          if (!stack || !stack.members.length) {\n            this.safeToRemove();\n          }\n        });\n      }\n    }\n    return null;\n  }\n  componentDidUpdate() {\n    const { projection } = this.props.visualElement;\n    if (projection) {\n      projection.root.didUpdate();\n      microtask.postRender(() => {\n        if (!projection.currentAnimation && projection.isLead()) {\n          this.safeToRemove();\n        }\n      });\n    }\n  }\n  componentWillUnmount() {\n    const { visualElement, layoutGroup, switchLayoutGroup: promoteContext } = this.props;\n    const { projection } = visualElement;\n    if (projection) {\n      projection.scheduleCheckAfterUnmount();\n      if (layoutGroup && layoutGroup.group)\n        layoutGroup.group.remove(projection);\n      if (promoteContext && promoteContext.deregister)\n        promoteContext.deregister(projection);\n    }\n  }\n  safeToRemove() {\n    const { safeToRemove } = this.props;\n    safeToRemove && safeToRemove();\n  }\n  render() {\n    return null;\n  }\n};\nfunction MeasureLayout(props) {\n  const [isPresent2, safeToRemove] = usePresence();\n  const layoutGroup = useContext10(LayoutGroupContext);\n  return jsx8(MeasureLayoutWithContext, { ...props, layoutGroup, switchLayoutGroup: useContext10(SwitchLayoutGroupContext), isPresent: isPresent2, safeToRemove });\n}\nvar defaultScaleCorrectors = {\n  borderRadius: {\n    ...correctBorderRadius,\n    applyTo: [\n      \"borderTopLeftRadius\",\n      \"borderTopRightRadius\",\n      \"borderBottomLeftRadius\",\n      \"borderBottomRightRadius\"\n    ]\n  },\n  borderTopLeftRadius: correctBorderRadius,\n  borderTopRightRadius: correctBorderRadius,\n  borderBottomLeftRadius: correctBorderRadius,\n  borderBottomRightRadius: correctBorderRadius,\n  boxShadow: correctBoxShadow\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/single-value.mjs\nfunction animateSingleValue(value, keyframes2, options) {\n  const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n  motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes2, options));\n  return motionValue$1.animation;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber2 = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nvar isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress2, shouldCrossfadeOpacity, isOnlyMember) {\n  if (shouldCrossfadeOpacity) {\n    target.opacity = mixNumber(0, lead.opacity ?? 1, easeCrossfadeIn(progress2));\n    target.opacityExit = mixNumber(follow.opacity ?? 1, 0, easeCrossfadeOut(progress2));\n  } else if (isOnlyMember) {\n    target.opacity = mixNumber(follow.opacity ?? 1, lead.opacity ?? 1, progress2);\n  }\n  for (let i = 0; i < numBorders; i++) {\n    const borderLabel = `border${borders[i]}Radius`;\n    let followRadius = getRadius(follow, borderLabel);\n    let leadRadius = getRadius(lead, borderLabel);\n    if (followRadius === void 0 && leadRadius === void 0)\n      continue;\n    followRadius || (followRadius = 0);\n    leadRadius || (leadRadius = 0);\n    const canMix = followRadius === 0 || leadRadius === 0 || isPx(followRadius) === isPx(leadRadius);\n    if (canMix) {\n      target[borderLabel] = Math.max(mixNumber(asNumber2(followRadius), asNumber2(leadRadius), progress2), 0);\n      if (percent.test(leadRadius) || percent.test(followRadius)) {\n        target[borderLabel] += \"%\";\n      }\n    } else {\n      target[borderLabel] = leadRadius;\n    }\n  }\n  if (follow.rotate || lead.rotate) {\n    target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress2);\n  }\n}\nfunction getRadius(values, radiusName) {\n  return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;\n}\nvar easeCrossfadeIn = /* @__PURE__ */ compress(0, 0.5, circOut);\nvar easeCrossfadeOut = /* @__PURE__ */ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n  return (p) => {\n    if (p < min)\n      return 0;\n    if (p > max)\n      return 1;\n    return easing(progress(min, max, p));\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs\nfunction copyAxisInto(axis, originAxis) {\n  axis.min = originAxis.min;\n  axis.max = originAxis.max;\n}\nfunction copyBoxInto(box, originBox) {\n  copyAxisInto(box.x, originBox.x);\n  copyAxisInto(box.y, originBox.y);\n}\nfunction copyAxisDeltaInto(delta, originDelta) {\n  delta.translate = originDelta.translate;\n  delta.scale = originDelta.scale;\n  delta.originPoint = originDelta.originPoint;\n  delta.origin = originDelta.origin;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs\nfunction removePointDelta(point2, translate, scale2, originPoint, boxScale) {\n  point2 -= translate;\n  point2 = scalePoint(point2, 1 / scale2, originPoint);\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, 1 / boxScale, originPoint);\n  }\n  return point2;\n}\nfunction removeAxisDelta(axis, translate = 0, scale2 = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n  if (percent.test(translate)) {\n    translate = parseFloat(translate);\n    const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n    translate = relativeProgress - sourceAxis.min;\n  }\n  if (typeof translate !== \"number\")\n    return;\n  let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n  if (axis === originAxis)\n    originPoint -= translate;\n  axis.min = removePointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = removePointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n  removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n  removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : void 0, sourceBox ? sourceBox.x : void 0);\n  removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : void 0, sourceBox ? sourceBox.y : void 0);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs\nfunction isAxisDeltaZero(delta) {\n  return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n  return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n  return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n  return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n  return Math.round(a.min) === Math.round(b.min) && Math.round(a.max) === Math.round(b.max);\n}\nfunction boxEqualsRounded(a, b) {\n  return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n  return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n  return a.translate === b.translate && a.scale === b.scale && a.originPoint === b.originPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs\nvar NodeStack = class {\n  constructor() {\n    this.members = [];\n  }\n  add(node) {\n    addUniqueItem(this.members, node);\n    node.scheduleRender();\n  }\n  remove(node) {\n    removeItem(this.members, node);\n    if (node === this.prevLead) {\n      this.prevLead = void 0;\n    }\n    if (node === this.lead) {\n      const prevLead = this.members[this.members.length - 1];\n      if (prevLead) {\n        this.promote(prevLead);\n      }\n    }\n  }\n  relegate(node) {\n    const indexOfNode = this.members.findIndex((member) => node === member);\n    if (indexOfNode === 0)\n      return false;\n    let prevLead;\n    for (let i = indexOfNode; i >= 0; i--) {\n      const member = this.members[i];\n      if (member.isPresent !== false) {\n        prevLead = member;\n        break;\n      }\n    }\n    if (prevLead) {\n      this.promote(prevLead);\n      return true;\n    } else {\n      return false;\n    }\n  }\n  promote(node, preserveFollowOpacity) {\n    const prevLead = this.lead;\n    if (node === prevLead)\n      return;\n    this.prevLead = prevLead;\n    this.lead = node;\n    node.show();\n    if (prevLead) {\n      prevLead.instance && prevLead.scheduleRender();\n      node.scheduleRender();\n      node.resumeFrom = prevLead;\n      if (preserveFollowOpacity) {\n        node.resumeFrom.preserveOpacity = true;\n      }\n      if (prevLead.snapshot) {\n        node.snapshot = prevLead.snapshot;\n        node.snapshot.latestValues = prevLead.animationValues || prevLead.latestValues;\n      }\n      if (node.root && node.root.isUpdating) {\n        node.isLayoutDirty = true;\n      }\n      const { crossfade } = node.options;\n      if (crossfade === false) {\n        prevLead.hide();\n      }\n    }\n  }\n  exitAnimationComplete() {\n    this.members.forEach((node) => {\n      const { options, resumingFrom } = node;\n      options.onExitComplete && options.onExitComplete();\n      if (resumingFrom) {\n        resumingFrom.options.onExitComplete && resumingFrom.options.onExitComplete();\n      }\n    });\n  }\n  scheduleRender() {\n    this.members.forEach((node) => {\n      node.instance && node.scheduleRender(false);\n    });\n  }\n  /**\n   * Clear any leads that have been removed this render to prevent them from being\n   * used in future animations and to prevent memory leaks\n   */\n  removeLeadSnapshot() {\n    if (this.lead && this.lead.snapshot) {\n      this.lead.snapshot = void 0;\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n  let transform2 = \"\";\n  const xTranslate = delta.x.translate / treeScale.x;\n  const yTranslate = delta.y.translate / treeScale.y;\n  const zTranslate = (latestTransform == null ? void 0 : latestTransform.z) || 0;\n  if (xTranslate || yTranslate || zTranslate) {\n    transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n  }\n  if (treeScale.x !== 1 || treeScale.y !== 1) {\n    transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n  }\n  if (latestTransform) {\n    const { transformPerspective, rotate: rotate2, rotateX, rotateY, skewX, skewY } = latestTransform;\n    if (transformPerspective)\n      transform2 = `perspective(${transformPerspective}px) ${transform2}`;\n    if (rotate2)\n      transform2 += `rotate(${rotate2}deg) `;\n    if (rotateX)\n      transform2 += `rotateX(${rotateX}deg) `;\n    if (rotateY)\n      transform2 += `rotateY(${rotateY}deg) `;\n    if (skewX)\n      transform2 += `skewX(${skewX}deg) `;\n    if (skewY)\n      transform2 += `skewY(${skewY}deg) `;\n  }\n  const elementScaleX = delta.x.scale * treeScale.x;\n  const elementScaleY = delta.y.scale * treeScale.y;\n  if (elementScaleX !== 1 || elementScaleY !== 1) {\n    transform2 += `scale(${elementScaleX}, ${elementScaleY})`;\n  }\n  return transform2 || \"none\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs\nvar metrics = {\n  nodes: 0,\n  calculatedTargetDeltas: 0,\n  calculatedProjections: 0\n};\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nvar hiddenVisibility = { visibility: \"hidden\" };\nvar animationTarget = 1e3;\nvar id2 = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n  const { latestValues } = visualElement;\n  if (latestValues[key]) {\n    values[key] = latestValues[key];\n    visualElement.setStaticValue(key, 0);\n    if (sharedAnimationValues) {\n      sharedAnimationValues[key] = 0;\n    }\n  }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n  projectionNode.hasCheckedOptimisedAppear = true;\n  if (projectionNode.root === projectionNode)\n    return;\n  const { visualElement } = projectionNode.options;\n  if (!visualElement)\n    return;\n  const appearId = getOptimisedAppearId(visualElement);\n  if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n    const { layout: layout2, layoutId } = projectionNode.options;\n    window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout2 || layoutId));\n  }\n  const { parent } = projectionNode;\n  if (parent && !parent.hasCheckedOptimisedAppear) {\n    cancelTreeOptimisedTransformAnimations(parent);\n  }\n}\nfunction createProjectionNode2({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {\n  return class ProjectionNode {\n    constructor(latestValues = {}, parent = defaultParent == null ? void 0 : defaultParent()) {\n      this.id = id2++;\n      this.animationId = 0;\n      this.children = /* @__PURE__ */ new Set();\n      this.options = {};\n      this.isTreeAnimating = false;\n      this.isAnimationBlocked = false;\n      this.isLayoutDirty = false;\n      this.isProjectionDirty = false;\n      this.isSharedProjectionDirty = false;\n      this.isTransformDirty = false;\n      this.updateManuallyBlocked = false;\n      this.updateBlockedByResize = false;\n      this.isUpdating = false;\n      this.isSVG = false;\n      this.needsReset = false;\n      this.shouldResetTransform = false;\n      this.hasCheckedOptimisedAppear = false;\n      this.treeScale = { x: 1, y: 1 };\n      this.eventHandlers = /* @__PURE__ */ new Map();\n      this.hasTreeAnimated = false;\n      this.updateScheduled = false;\n      this.scheduleUpdate = () => this.update();\n      this.projectionUpdateScheduled = false;\n      this.checkUpdateFailed = () => {\n        if (this.isUpdating) {\n          this.isUpdating = false;\n          this.clearAllSnapshots();\n        }\n      };\n      this.updateProjection = () => {\n        this.projectionUpdateScheduled = false;\n        if (statsBuffer.value) {\n          metrics.nodes = metrics.calculatedTargetDeltas = metrics.calculatedProjections = 0;\n        }\n        this.nodes.forEach(propagateDirtyNodes);\n        this.nodes.forEach(resolveTargetDelta);\n        this.nodes.forEach(calcProjection);\n        this.nodes.forEach(cleanDirtyNodes);\n        if (statsBuffer.addProjectionMetrics) {\n          statsBuffer.addProjectionMetrics(metrics);\n        }\n      };\n      this.resolvedRelativeTargetAt = 0;\n      this.hasProjected = false;\n      this.isVisible = true;\n      this.animationProgress = 0;\n      this.sharedNodes = /* @__PURE__ */ new Map();\n      this.latestValues = latestValues;\n      this.root = parent ? parent.root || parent : this;\n      this.path = parent ? [...parent.path, parent] : [];\n      this.parent = parent;\n      this.depth = parent ? parent.depth + 1 : 0;\n      for (let i = 0; i < this.path.length; i++) {\n        this.path[i].shouldResetTransform = true;\n      }\n      if (this.root === this)\n        this.nodes = new FlatTree();\n    }\n    addEventListener(name, handler) {\n      if (!this.eventHandlers.has(name)) {\n        this.eventHandlers.set(name, new SubscriptionManager());\n      }\n      return this.eventHandlers.get(name).add(handler);\n    }\n    notifyListeners(name, ...args) {\n      const subscriptionManager = this.eventHandlers.get(name);\n      subscriptionManager && subscriptionManager.notify(...args);\n    }\n    hasListeners(name) {\n      return this.eventHandlers.has(name);\n    }\n    /**\n     * Lifecycles\n     */\n    mount(instance) {\n      if (this.instance)\n        return;\n      this.isSVG = isSVGElement(instance) && !isSVGSVGElement(instance);\n      this.instance = instance;\n      const { layoutId, layout: layout2, visualElement } = this.options;\n      if (visualElement && !visualElement.current) {\n        visualElement.mount(instance);\n      }\n      this.root.nodes.add(this);\n      this.parent && this.parent.children.add(this);\n      if (this.root.hasTreeAnimated && (layout2 || layoutId)) {\n        this.isLayoutDirty = true;\n      }\n      if (attachResizeListener) {\n        let cancelDelay;\n        const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;\n        attachResizeListener(instance, () => {\n          this.root.updateBlockedByResize = true;\n          cancelDelay && cancelDelay();\n          cancelDelay = delay(resizeUnblockUpdate, 250);\n          if (globalProjectionState.hasAnimatedSinceResize) {\n            globalProjectionState.hasAnimatedSinceResize = false;\n            this.nodes.forEach(finishAnimation);\n          }\n        });\n      }\n      if (layoutId) {\n        this.root.registerSharedNode(layoutId, this);\n      }\n      if (this.options.animate !== false && visualElement && (layoutId || layout2)) {\n        this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeLayoutChanged, layout: newLayout }) => {\n          if (this.isTreeAnimationBlocked()) {\n            this.target = void 0;\n            this.relativeTarget = void 0;\n            return;\n          }\n          const layoutTransition = this.options.transition || visualElement.getDefaultTransition() || defaultLayoutTransition;\n          const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();\n          const hasTargetChanged = !this.targetLayout || !boxEqualsRounded(this.targetLayout, newLayout);\n          const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeLayoutChanged;\n          if (this.options.layoutRoot || this.resumeFrom || hasOnlyRelativeTargetChanged || hasLayoutChanged && (hasTargetChanged || !this.currentAnimation)) {\n            if (this.resumeFrom) {\n              this.resumingFrom = this.resumeFrom;\n              this.resumingFrom.resumingFrom = void 0;\n            }\n            const animationOptions = {\n              ...getValueTransition(layoutTransition, \"layout\"),\n              onPlay: onLayoutAnimationStart,\n              onComplete: onLayoutAnimationComplete\n            };\n            if (visualElement.shouldReduceMotion || this.options.layoutRoot) {\n              animationOptions.delay = 0;\n              animationOptions.type = false;\n            }\n            this.startAnimation(animationOptions);\n            this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n          } else {\n            if (!hasLayoutChanged) {\n              finishAnimation(this);\n            }\n            if (this.isLead() && this.options.onExitComplete) {\n              this.options.onExitComplete();\n            }\n          }\n          this.targetLayout = newLayout;\n        });\n      }\n    }\n    unmount() {\n      this.options.layoutId && this.willUpdate();\n      this.root.nodes.remove(this);\n      const stack = this.getStack();\n      stack && stack.remove(this);\n      this.parent && this.parent.children.delete(this);\n      this.instance = void 0;\n      this.eventHandlers.clear();\n      cancelFrame(this.updateProjection);\n    }\n    // only on the root\n    blockUpdate() {\n      this.updateManuallyBlocked = true;\n    }\n    unblockUpdate() {\n      this.updateManuallyBlocked = false;\n    }\n    isUpdateBlocked() {\n      return this.updateManuallyBlocked || this.updateBlockedByResize;\n    }\n    isTreeAnimationBlocked() {\n      return this.isAnimationBlocked || this.parent && this.parent.isTreeAnimationBlocked() || false;\n    }\n    // Note: currently only running on root node\n    startUpdate() {\n      if (this.isUpdateBlocked())\n        return;\n      this.isUpdating = true;\n      this.nodes && this.nodes.forEach(resetSkewAndRotation);\n      this.animationId++;\n    }\n    getTransformTemplate() {\n      const { visualElement } = this.options;\n      return visualElement && visualElement.getProps().transformTemplate;\n    }\n    willUpdate(shouldNotifyListeners = true) {\n      this.root.hasTreeAnimated = true;\n      if (this.root.isUpdateBlocked()) {\n        this.options.onExitComplete && this.options.onExitComplete();\n        return;\n      }\n      if (window.MotionCancelOptimisedAnimation && !this.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(this);\n      }\n      !this.root.isUpdating && this.root.startUpdate();\n      if (this.isLayoutDirty)\n        return;\n      this.isLayoutDirty = true;\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        node.shouldResetTransform = true;\n        node.updateScroll(\"snapshot\");\n        if (node.options.layoutRoot) {\n          node.willUpdate(false);\n        }\n      }\n      const { layoutId, layout: layout2 } = this.options;\n      if (layoutId === void 0 && !layout2)\n        return;\n      const transformTemplate = this.getTransformTemplate();\n      this.prevTransformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      this.updateSnapshot();\n      shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n    }\n    update() {\n      this.updateScheduled = false;\n      const updateWasBlocked = this.isUpdateBlocked();\n      if (updateWasBlocked) {\n        this.unblockUpdate();\n        this.clearAllSnapshots();\n        this.nodes.forEach(clearMeasurements);\n        return;\n      }\n      if (!this.isUpdating) {\n        this.nodes.forEach(clearIsLayoutDirty);\n      }\n      this.isUpdating = false;\n      this.nodes.forEach(resetTransformStyle);\n      this.nodes.forEach(updateLayout);\n      this.nodes.forEach(notifyLayoutUpdate);\n      this.clearAllSnapshots();\n      const now2 = time.now();\n      frameData.delta = clamp(0, 1e3 / 60, now2 - frameData.timestamp);\n      frameData.timestamp = now2;\n      frameData.isProcessing = true;\n      frameSteps.update.process(frameData);\n      frameSteps.preRender.process(frameData);\n      frameSteps.render.process(frameData);\n      frameData.isProcessing = false;\n    }\n    didUpdate() {\n      if (!this.updateScheduled) {\n        this.updateScheduled = true;\n        microtask.read(this.scheduleUpdate);\n      }\n    }\n    clearAllSnapshots() {\n      this.nodes.forEach(clearSnapshot);\n      this.sharedNodes.forEach(removeLeadSnapshots);\n    }\n    scheduleUpdateProjection() {\n      if (!this.projectionUpdateScheduled) {\n        this.projectionUpdateScheduled = true;\n        frame.preRender(this.updateProjection, false, true);\n      }\n    }\n    scheduleCheckAfterUnmount() {\n      frame.postRender(() => {\n        if (this.isLayoutDirty) {\n          this.root.didUpdate();\n        } else {\n          this.root.checkUpdateFailed();\n        }\n      });\n    }\n    /**\n     * Update measurements\n     */\n    updateSnapshot() {\n      if (this.snapshot || !this.instance)\n        return;\n      this.snapshot = this.measure();\n      if (this.snapshot && !calcLength(this.snapshot.measuredBox.x) && !calcLength(this.snapshot.measuredBox.y)) {\n        this.snapshot = void 0;\n      }\n    }\n    updateLayout() {\n      if (!this.instance)\n        return;\n      this.updateScroll();\n      if (!(this.options.alwaysMeasureLayout && this.isLead()) && !this.isLayoutDirty) {\n        return;\n      }\n      if (this.resumeFrom && !this.resumeFrom.instance) {\n        for (let i = 0; i < this.path.length; i++) {\n          const node = this.path[i];\n          node.updateScroll();\n        }\n      }\n      const prevLayout = this.layout;\n      this.layout = this.measure(false);\n      this.layoutCorrected = createBox();\n      this.isLayoutDirty = false;\n      this.projectionDelta = void 0;\n      this.notifyListeners(\"measure\", this.layout.layoutBox);\n      const { visualElement } = this.options;\n      visualElement && visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : void 0);\n    }\n    updateScroll(phase = \"measure\") {\n      let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n      if (this.scroll && this.scroll.animationId === this.root.animationId && this.scroll.phase === phase) {\n        needsMeasurement = false;\n      }\n      if (needsMeasurement && this.instance) {\n        const isRoot = checkIsScrollRoot(this.instance);\n        this.scroll = {\n          animationId: this.root.animationId,\n          phase,\n          isRoot,\n          offset: measureScroll(this.instance),\n          wasRoot: this.scroll ? this.scroll.isRoot : isRoot\n        };\n      }\n    }\n    resetTransform() {\n      if (!resetTransform)\n        return;\n      const isResetRequested = this.isLayoutDirty || this.shouldResetTransform || this.options.alwaysMeasureLayout;\n      const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n      const transformTemplate = this.getTransformTemplate();\n      const transformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n      if (isResetRequested && this.instance && (hasProjection || hasTransform(this.latestValues) || transformTemplateHasChanged)) {\n        resetTransform(this.instance, transformTemplateValue);\n        this.shouldResetTransform = false;\n        this.scheduleRender();\n      }\n    }\n    measure(removeTransform = true) {\n      const pageBox = this.measurePageBox();\n      let layoutBox = this.removeElementScroll(pageBox);\n      if (removeTransform) {\n        layoutBox = this.removeTransform(layoutBox);\n      }\n      roundBox(layoutBox);\n      return {\n        animationId: this.root.animationId,\n        measuredBox: pageBox,\n        layoutBox,\n        latestValues: {},\n        source: this.id\n      };\n    }\n    measurePageBox() {\n      var _a;\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return createBox();\n      const box = visualElement.measureViewportBox();\n      const wasInScrollRoot = ((_a = this.scroll) == null ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n      if (!wasInScrollRoot) {\n        const { scroll: scroll2 } = this.root;\n        if (scroll2) {\n          translateAxis(box.x, scroll2.offset.x);\n          translateAxis(box.y, scroll2.offset.y);\n        }\n      }\n      return box;\n    }\n    removeElementScroll(box) {\n      var _a;\n      const boxWithoutScroll = createBox();\n      copyBoxInto(boxWithoutScroll, box);\n      if ((_a = this.scroll) == null ? void 0 : _a.wasRoot) {\n        return boxWithoutScroll;\n      }\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        const { scroll: scroll2, options } = node;\n        if (node !== this.root && scroll2 && options.layoutScroll) {\n          if (scroll2.wasRoot) {\n            copyBoxInto(boxWithoutScroll, box);\n          }\n          translateAxis(boxWithoutScroll.x, scroll2.offset.x);\n          translateAxis(boxWithoutScroll.y, scroll2.offset.y);\n        }\n      }\n      return boxWithoutScroll;\n    }\n    applyTransform(box, transformOnly = false) {\n      const withTransforms = createBox();\n      copyBoxInto(withTransforms, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!transformOnly && node.options.layoutScroll && node.scroll && node !== node.root) {\n          transformBox(withTransforms, {\n            x: -node.scroll.offset.x,\n            y: -node.scroll.offset.y\n          });\n        }\n        if (!hasTransform(node.latestValues))\n          continue;\n        transformBox(withTransforms, node.latestValues);\n      }\n      if (hasTransform(this.latestValues)) {\n        transformBox(withTransforms, this.latestValues);\n      }\n      return withTransforms;\n    }\n    removeTransform(box) {\n      const boxWithoutTransform = createBox();\n      copyBoxInto(boxWithoutTransform, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!node.instance)\n          continue;\n        if (!hasTransform(node.latestValues))\n          continue;\n        hasScale(node.latestValues) && node.updateSnapshot();\n        const sourceBox = createBox();\n        const nodeBox = node.measurePageBox();\n        copyBoxInto(sourceBox, nodeBox);\n        removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : void 0, sourceBox);\n      }\n      if (hasTransform(this.latestValues)) {\n        removeBoxTransforms(boxWithoutTransform, this.latestValues);\n      }\n      return boxWithoutTransform;\n    }\n    setTargetDelta(delta) {\n      this.targetDelta = delta;\n      this.root.scheduleUpdateProjection();\n      this.isProjectionDirty = true;\n    }\n    setOptions(options) {\n      this.options = {\n        ...this.options,\n        ...options,\n        crossfade: options.crossfade !== void 0 ? options.crossfade : true\n      };\n    }\n    clearMeasurements() {\n      this.scroll = void 0;\n      this.layout = void 0;\n      this.snapshot = void 0;\n      this.prevTransformTemplateValue = void 0;\n      this.targetDelta = void 0;\n      this.target = void 0;\n      this.isLayoutDirty = false;\n    }\n    forceRelativeParentToResolveTarget() {\n      if (!this.relativeParent)\n        return;\n      if (this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp) {\n        this.relativeParent.resolveTargetDelta(true);\n      }\n    }\n    resolveTargetDelta(forceRecalculation = false) {\n      var _a;\n      const lead = this.getLead();\n      this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n      this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n      this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      const canSkip = !(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || ((_a = this.parent) == null ? void 0 : _a.isProjectionDirty) || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize);\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      this.resolvedRelativeTargetAt = frameData.timestamp;\n      if (!this.targetDelta && !this.relativeTarget) {\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (!this.relativeTarget && !this.targetDelta)\n        return;\n      if (!this.target) {\n        this.target = createBox();\n        this.targetWithTransforms = createBox();\n      }\n      if (this.relativeTarget && this.relativeTargetOrigin && this.relativeParent && this.relativeParent.target) {\n        this.forceRelativeParentToResolveTarget();\n        calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n      } else if (this.targetDelta) {\n        if (Boolean(this.resumingFrom)) {\n          this.target = this.applyTransform(this.layout.layoutBox);\n        } else {\n          copyBoxInto(this.target, this.layout.layoutBox);\n        }\n        applyBoxDelta(this.target, this.targetDelta);\n      } else {\n        copyBoxInto(this.target, this.layout.layoutBox);\n      }\n      if (this.attemptToResolveRelativeTarget) {\n        this.attemptToResolveRelativeTarget = false;\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (statsBuffer.value) {\n        metrics.calculatedTargetDeltas++;\n      }\n    }\n    getClosestProjectingParent() {\n      if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues)) {\n        return void 0;\n      }\n      if (this.parent.isProjecting()) {\n        return this.parent;\n      } else {\n        return this.parent.getClosestProjectingParent();\n      }\n    }\n    isProjecting() {\n      return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);\n    }\n    calcProjection() {\n      var _a;\n      const lead = this.getLead();\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      let canSkip = true;\n      if (this.isProjectionDirty || ((_a = this.parent) == null ? void 0 : _a.isProjectionDirty)) {\n        canSkip = false;\n      }\n      if (isShared && (this.isSharedProjectionDirty || this.isTransformDirty)) {\n        canSkip = false;\n      }\n      if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n        canSkip = false;\n      }\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      this.isTreeAnimating = Boolean(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation);\n      if (!this.isTreeAnimating) {\n        this.targetDelta = this.relativeTarget = void 0;\n      }\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n      const prevTreeScaleX = this.treeScale.x;\n      const prevTreeScaleY = this.treeScale.y;\n      applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n      if (lead.layout && !lead.target && (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n        lead.target = lead.layout.layoutBox;\n        lead.targetWithTransforms = createBox();\n      }\n      const { target } = lead;\n      if (!target) {\n        if (this.prevProjectionDelta) {\n          this.createProjectionDeltas();\n          this.scheduleRender();\n        }\n        return;\n      }\n      if (!this.projectionDelta || !this.prevProjectionDelta) {\n        this.createProjectionDeltas();\n      } else {\n        copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n        copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n      }\n      calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n      if (this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY || !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) || !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n        this.hasProjected = true;\n        this.scheduleRender();\n        this.notifyListeners(\"projectionUpdate\", target);\n      }\n      if (statsBuffer.value) {\n        metrics.calculatedProjections++;\n      }\n    }\n    hide() {\n      this.isVisible = false;\n    }\n    show() {\n      this.isVisible = true;\n    }\n    scheduleRender(notifyAll2 = true) {\n      var _a;\n      (_a = this.options.visualElement) == null ? void 0 : _a.scheduleRender();\n      if (notifyAll2) {\n        const stack = this.getStack();\n        stack && stack.scheduleRender();\n      }\n      if (this.resumingFrom && !this.resumingFrom.instance) {\n        this.resumingFrom = void 0;\n      }\n    }\n    createProjectionDeltas() {\n      this.prevProjectionDelta = createDelta();\n      this.projectionDelta = createDelta();\n      this.projectionDeltaWithTransform = createDelta();\n    }\n    setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n      const snapshot = this.snapshot;\n      const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n      const mixedValues = { ...this.latestValues };\n      const targetDelta = createDelta();\n      if (!this.relativeParent || !this.relativeParent.options.layoutRoot) {\n        this.relativeTarget = this.relativeTargetOrigin = void 0;\n      }\n      this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n      const relativeLayout = createBox();\n      const snapshotSource = snapshot ? snapshot.source : void 0;\n      const layoutSource = this.layout ? this.layout.source : void 0;\n      const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n      const stack = this.getStack();\n      const isOnlyMember = !stack || stack.members.length <= 1;\n      const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));\n      this.animationProgress = 0;\n      let prevRelativeTarget;\n      this.mixTargetDelta = (latest) => {\n        const progress2 = latest / 1e3;\n        mixAxisDelta(targetDelta.x, delta.x, progress2);\n        mixAxisDelta(targetDelta.y, delta.y, progress2);\n        this.setTargetDelta(targetDelta);\n        if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {\n          calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n          mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress2);\n          if (prevRelativeTarget && boxEquals(this.relativeTarget, prevRelativeTarget)) {\n            this.isProjectionDirty = false;\n          }\n          if (!prevRelativeTarget)\n            prevRelativeTarget = createBox();\n          copyBoxInto(prevRelativeTarget, this.relativeTarget);\n        }\n        if (isSharedLayoutAnimation) {\n          this.animationValues = mixedValues;\n          mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress2, shouldCrossfadeOpacity, isOnlyMember);\n        }\n        this.root.scheduleUpdateProjection();\n        this.scheduleRender();\n        this.animationProgress = progress2;\n      };\n      this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);\n    }\n    startAnimation(options) {\n      var _a, _b, _c;\n      this.notifyListeners(\"animationStart\");\n      (_a = this.currentAnimation) == null ? void 0 : _a.stop();\n      (_c = (_b = this.resumingFrom) == null ? void 0 : _b.currentAnimation) == null ? void 0 : _c.stop();\n      if (this.pendingAnimation) {\n        cancelFrame(this.pendingAnimation);\n        this.pendingAnimation = void 0;\n      }\n      this.pendingAnimation = frame.update(() => {\n        globalProjectionState.hasAnimatedSinceResize = true;\n        activeAnimations.layout++;\n        this.motionValue || (this.motionValue = motionValue(0));\n        this.currentAnimation = animateSingleValue(this.motionValue, [0, 1e3], {\n          ...options,\n          velocity: 0,\n          isSync: true,\n          onUpdate: (latest) => {\n            this.mixTargetDelta(latest);\n            options.onUpdate && options.onUpdate(latest);\n          },\n          onStop: () => {\n            activeAnimations.layout--;\n          },\n          onComplete: () => {\n            activeAnimations.layout--;\n            options.onComplete && options.onComplete();\n            this.completeAnimation();\n          }\n        });\n        if (this.resumingFrom) {\n          this.resumingFrom.currentAnimation = this.currentAnimation;\n        }\n        this.pendingAnimation = void 0;\n      });\n    }\n    completeAnimation() {\n      if (this.resumingFrom) {\n        this.resumingFrom.currentAnimation = void 0;\n        this.resumingFrom.preserveOpacity = void 0;\n      }\n      const stack = this.getStack();\n      stack && stack.exitAnimationComplete();\n      this.resumingFrom = this.currentAnimation = this.animationValues = void 0;\n      this.notifyListeners(\"animationComplete\");\n    }\n    finishAnimation() {\n      if (this.currentAnimation) {\n        this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n        this.currentAnimation.stop();\n      }\n      this.completeAnimation();\n    }\n    applyTransformsToTarget() {\n      const lead = this.getLead();\n      let { targetWithTransforms, target, layout: layout2, latestValues } = lead;\n      if (!targetWithTransforms || !target || !layout2)\n        return;\n      if (this !== lead && this.layout && layout2 && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout2.layoutBox)) {\n        target = this.target || createBox();\n        const xLength = calcLength(this.layout.layoutBox.x);\n        target.x.min = lead.target.x.min;\n        target.x.max = target.x.min + xLength;\n        const yLength = calcLength(this.layout.layoutBox.y);\n        target.y.min = lead.target.y.min;\n        target.y.max = target.y.min + yLength;\n      }\n      copyBoxInto(targetWithTransforms, target);\n      transformBox(targetWithTransforms, latestValues);\n      calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n    }\n    registerSharedNode(layoutId, node) {\n      if (!this.sharedNodes.has(layoutId)) {\n        this.sharedNodes.set(layoutId, new NodeStack());\n      }\n      const stack = this.sharedNodes.get(layoutId);\n      stack.add(node);\n      const config = node.options.initialPromotionConfig;\n      node.promote({\n        transition: config ? config.transition : void 0,\n        preserveFollowOpacity: config && config.shouldPreserveFollowOpacity ? config.shouldPreserveFollowOpacity(node) : void 0\n      });\n    }\n    isLead() {\n      const stack = this.getStack();\n      return stack ? stack.lead === this : true;\n    }\n    getLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? ((_a = this.getStack()) == null ? void 0 : _a.lead) || this : this;\n    }\n    getPrevLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? (_a = this.getStack()) == null ? void 0 : _a.prevLead : void 0;\n    }\n    getStack() {\n      const { layoutId } = this.options;\n      if (layoutId)\n        return this.root.sharedNodes.get(layoutId);\n    }\n    promote({ needsReset, transition, preserveFollowOpacity } = {}) {\n      const stack = this.getStack();\n      if (stack)\n        stack.promote(this, preserveFollowOpacity);\n      if (needsReset) {\n        this.projectionDelta = void 0;\n        this.needsReset = true;\n      }\n      if (transition)\n        this.setOptions({ transition });\n    }\n    relegate() {\n      const stack = this.getStack();\n      if (stack) {\n        return stack.relegate(this);\n      } else {\n        return false;\n      }\n    }\n    resetSkewAndRotation() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return;\n      let hasDistortingTransform = false;\n      const { latestValues } = visualElement;\n      if (latestValues.z || latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ || latestValues.skewX || latestValues.skewY) {\n        hasDistortingTransform = true;\n      }\n      if (!hasDistortingTransform)\n        return;\n      const resetValues = {};\n      if (latestValues.z) {\n        resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n      }\n      for (let i = 0; i < transformAxes.length; i++) {\n        resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n        resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n      }\n      visualElement.render();\n      for (const key in resetValues) {\n        visualElement.setStaticValue(key, resetValues[key]);\n        if (this.animationValues) {\n          this.animationValues[key] = resetValues[key];\n        }\n      }\n      visualElement.scheduleRender();\n    }\n    getProjectionStyles(styleProp) {\n      if (!this.instance || this.isSVG)\n        return void 0;\n      if (!this.isVisible) {\n        return hiddenVisibility;\n      }\n      const styles = {\n        visibility: \"\"\n      };\n      const transformTemplate = this.getTransformTemplate();\n      if (this.needsReset) {\n        this.needsReset = false;\n        styles.opacity = \"\";\n        styles.pointerEvents = resolveMotionValue(styleProp == null ? void 0 : styleProp.pointerEvents) || \"\";\n        styles.transform = transformTemplate ? transformTemplate(this.latestValues, \"\") : \"none\";\n        return styles;\n      }\n      const lead = this.getLead();\n      if (!this.projectionDelta || !this.layout || !lead.target) {\n        const emptyStyles = {};\n        if (this.options.layoutId) {\n          emptyStyles.opacity = this.latestValues.opacity !== void 0 ? this.latestValues.opacity : 1;\n          emptyStyles.pointerEvents = resolveMotionValue(styleProp == null ? void 0 : styleProp.pointerEvents) || \"\";\n        }\n        if (this.hasProjected && !hasTransform(this.latestValues)) {\n          emptyStyles.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n          this.hasProjected = false;\n        }\n        return emptyStyles;\n      }\n      const valuesToRender = lead.animationValues || lead.latestValues;\n      this.applyTransformsToTarget();\n      styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n      if (transformTemplate) {\n        styles.transform = transformTemplate(valuesToRender, styles.transform);\n      }\n      const { x, y } = this.projectionDelta;\n      styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n      if (lead.animationValues) {\n        styles.opacity = lead === this ? valuesToRender.opacity ?? this.latestValues.opacity ?? 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit;\n      } else {\n        styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : \"\" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;\n      }\n      for (const key in scaleCorrectors) {\n        if (valuesToRender[key] === void 0)\n          continue;\n        const { correct, applyTo, isCSSVariable } = scaleCorrectors[key];\n        const corrected = styles.transform === \"none\" ? valuesToRender[key] : correct(valuesToRender[key], lead);\n        if (applyTo) {\n          const num = applyTo.length;\n          for (let i = 0; i < num; i++) {\n            styles[applyTo[i]] = corrected;\n          }\n        } else {\n          if (isCSSVariable) {\n            this.options.visualElement.renderState.vars[key] = corrected;\n          } else {\n            styles[key] = corrected;\n          }\n        }\n      }\n      if (this.options.layoutId) {\n        styles.pointerEvents = lead === this ? resolveMotionValue(styleProp == null ? void 0 : styleProp.pointerEvents) || \"\" : \"none\";\n      }\n      return styles;\n    }\n    clearSnapshot() {\n      this.resumeFrom = this.snapshot = void 0;\n    }\n    // Only run on root\n    resetTree() {\n      this.root.nodes.forEach((node) => {\n        var _a;\n        return (_a = node.currentAnimation) == null ? void 0 : _a.stop();\n      });\n      this.root.nodes.forEach(clearMeasurements);\n      this.root.sharedNodes.clear();\n    }\n  };\n}\nfunction updateLayout(node) {\n  node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n  var _a;\n  const snapshot = ((_a = node.resumeFrom) == null ? void 0 : _a.snapshot) || node.snapshot;\n  if (node.isLead() && node.layout && snapshot && node.hasListeners(\"didUpdate\")) {\n    const { layoutBox: layout2, measuredBox: measuredLayout } = node.layout;\n    const { animationType } = node.options;\n    const isShared = snapshot.source !== node.layout.source;\n    if (animationType === \"size\") {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(axisSnapshot);\n        axisSnapshot.min = layout2[axis].min;\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout2)) {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(layout2[axis]);\n        axisSnapshot.max = axisSnapshot.min + length;\n        if (node.relativeTarget && !node.currentAnimation) {\n          node.isProjectionDirty = true;\n          node.relativeTarget[axis].max = node.relativeTarget[axis].min + length;\n        }\n      });\n    }\n    const layoutDelta = createDelta();\n    calcBoxDelta(layoutDelta, layout2, snapshot.layoutBox);\n    const visualDelta = createDelta();\n    if (isShared) {\n      calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n    } else {\n      calcBoxDelta(visualDelta, layout2, snapshot.layoutBox);\n    }\n    const hasLayoutChanged = !isDeltaZero(layoutDelta);\n    let hasRelativeLayoutChanged = false;\n    if (!node.resumeFrom) {\n      const relativeParent = node.getClosestProjectingParent();\n      if (relativeParent && !relativeParent.resumeFrom) {\n        const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n        if (parentSnapshot && parentLayout) {\n          const relativeSnapshot = createBox();\n          calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n          const relativeLayout = createBox();\n          calcRelativePosition(relativeLayout, layout2, parentLayout.layoutBox);\n          if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n            hasRelativeLayoutChanged = true;\n          }\n          if (relativeParent.options.layoutRoot) {\n            node.relativeTarget = relativeLayout;\n            node.relativeTargetOrigin = relativeSnapshot;\n            node.relativeParent = relativeParent;\n          }\n        }\n      }\n    }\n    node.notifyListeners(\"didUpdate\", {\n      layout: layout2,\n      snapshot,\n      delta: visualDelta,\n      layoutDelta,\n      hasLayoutChanged,\n      hasRelativeLayoutChanged\n    });\n  } else if (node.isLead()) {\n    const { onExitComplete } = node.options;\n    onExitComplete && onExitComplete();\n  }\n  node.options.transition = void 0;\n}\nfunction propagateDirtyNodes(node) {\n  if (statsBuffer.value) {\n    metrics.nodes++;\n  }\n  if (!node.parent)\n    return;\n  if (!node.isProjecting()) {\n    node.isProjectionDirty = node.parent.isProjectionDirty;\n  }\n  node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || node.parent.isProjectionDirty || node.parent.isSharedProjectionDirty));\n  node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n  node.isProjectionDirty = node.isSharedProjectionDirty = node.isTransformDirty = false;\n}\nfunction clearSnapshot(node) {\n  node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n  node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n  node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n  const { visualElement } = node.options;\n  if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n    visualElement.notify(\"BeforeLayoutMeasure\");\n  }\n  node.resetTransform();\n}\nfunction finishAnimation(node) {\n  node.finishAnimation();\n  node.targetDelta = node.relativeTarget = node.target = void 0;\n  node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n  node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n  node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n  node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n  stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n  output.translate = mixNumber(delta.translate, 0, p);\n  output.scale = mixNumber(delta.scale, 1, p);\n  output.origin = delta.origin;\n  output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n  output.min = mixNumber(from.min, to.min, p);\n  output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n  mixAxis(output.x, from.x, to.x, p);\n  mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n  return node.animationValues && node.animationValues.opacityExit !== void 0;\n}\nvar defaultLayoutTransition = {\n  duration: 0.45,\n  ease: [0.4, 0, 0.1, 1]\n};\nvar userAgentContains = (string) => typeof navigator !== \"undefined\" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(string);\nvar roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\") ? Math.round : noop;\nfunction roundAxis(axis) {\n  axis.min = roundPoint(axis.min);\n  axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n  roundAxis(box.x);\n  roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout2) {\n  return animationType === \"position\" || animationType === \"preserve-aspect\" && !isNear(aspectRatio(snapshot), aspectRatio(layout2), 0.2);\n}\nfunction checkNodeWasScrollRoot(node) {\n  var _a;\n  return node !== node.root && ((_a = node.scroll) == null ? void 0 : _a.wasRoot);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs\nvar DocumentProjectionNode = createProjectionNode2({\n  attachResizeListener: (ref, notify2) => addDomEvent(ref, \"resize\", notify2),\n  measureScroll: () => ({\n    x: document.documentElement.scrollLeft || document.body.scrollLeft,\n    y: document.documentElement.scrollTop || document.body.scrollTop\n  }),\n  checkIsScrollRoot: () => true\n});\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs\nvar rootProjectionNode = {\n  current: void 0\n};\nvar HTMLProjectionNode = createProjectionNode2({\n  measureScroll: (instance) => ({\n    x: instance.scrollLeft,\n    y: instance.scrollTop\n  }),\n  defaultParent: () => {\n    if (!rootProjectionNode.current) {\n      const documentNode = new DocumentProjectionNode({});\n      documentNode.mount(window);\n      documentNode.setOptions({ layoutScroll: true });\n      rootProjectionNode.current = documentNode;\n    }\n    return rootProjectionNode.current;\n  },\n  resetTransform: (instance, value) => {\n    instance.style.transform = value !== void 0 ? value : \"none\";\n  },\n  checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\")\n});\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/drag.mjs\nvar drag = {\n  pan: {\n    Feature: PanGesture\n  },\n  drag: {\n    Feature: DragGesture,\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/hover.mjs\nfunction handleHoverEvent(node, event, lifecycle) {\n  const { props } = node;\n  if (node.animationState && props.whileHover) {\n    node.animationState.setActive(\"whileHover\", lifecycle === \"Start\");\n  }\n  const eventName = \"onHover\" + lifecycle;\n  const callback = props[eventName];\n  if (callback) {\n    frame.postRender(() => callback(event, extractEventInfo(event)));\n  }\n}\nvar HoverGesture = class extends Feature {\n  mount() {\n    const { current: current2 } = this.node;\n    if (!current2)\n      return;\n    this.unmount = hover(current2, (_element, startEvent) => {\n      handleHoverEvent(this.node, startEvent, \"Start\");\n      return (endEvent) => handleHoverEvent(this.node, endEvent, \"End\");\n    });\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/focus.mjs\nvar FocusGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.isActive = false;\n  }\n  onFocus() {\n    let isFocusVisible = false;\n    try {\n      isFocusVisible = this.node.current.matches(\":focus-visible\");\n    } catch (e) {\n      isFocusVisible = true;\n    }\n    if (!isFocusVisible || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", true);\n    this.isActive = true;\n  }\n  onBlur() {\n    if (!this.isActive || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", false);\n    this.isActive = false;\n  }\n  mount() {\n    this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/press.mjs\nfunction handlePressEvent(node, event, lifecycle) {\n  const { props } = node;\n  if (node.current instanceof HTMLButtonElement && node.current.disabled) {\n    return;\n  }\n  if (node.animationState && props.whileTap) {\n    node.animationState.setActive(\"whileTap\", lifecycle === \"Start\");\n  }\n  const eventName = \"onTap\" + (lifecycle === \"End\" ? \"\" : lifecycle);\n  const callback = props[eventName];\n  if (callback) {\n    frame.postRender(() => callback(event, extractEventInfo(event)));\n  }\n}\nvar PressGesture = class extends Feature {\n  mount() {\n    const { current: current2 } = this.node;\n    if (!current2)\n      return;\n    this.unmount = press(current2, (_element, startEvent) => {\n      handlePressEvent(this.node, startEvent, \"Start\");\n      return (endEvent, { success }) => handlePressEvent(this.node, endEvent, success ? \"End\" : \"Cancel\");\n    }, { useGlobalTarget: this.node.props.globalTapTarget });\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs\nvar observerCallbacks = /* @__PURE__ */ new WeakMap();\nvar observers = /* @__PURE__ */ new WeakMap();\nvar fireObserverCallback = (entry) => {\n  const callback = observerCallbacks.get(entry.target);\n  callback && callback(entry);\n};\nvar fireAllObserverCallbacks = (entries) => {\n  entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n  const lookupRoot = root || document;\n  if (!observers.has(lookupRoot)) {\n    observers.set(lookupRoot, {});\n  }\n  const rootObservers = observers.get(lookupRoot);\n  const key = JSON.stringify(options);\n  if (!rootObservers[key]) {\n    rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n  }\n  return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n  const rootInteresectionObserver = initIntersectionObserver(options);\n  observerCallbacks.set(element, callback);\n  rootInteresectionObserver.observe(element);\n  return () => {\n    observerCallbacks.delete(element);\n    rootInteresectionObserver.unobserve(element);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs\nvar thresholdNames = {\n  some: 0,\n  all: 1\n};\nvar InViewFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.hasEnteredView = false;\n    this.isInView = false;\n  }\n  startObserver() {\n    this.unmount();\n    const { viewport = {} } = this.node.getProps();\n    const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n    const options = {\n      root: root ? root.current : void 0,\n      rootMargin,\n      threshold: typeof amount === \"number\" ? amount : thresholdNames[amount]\n    };\n    const onIntersectionUpdate = (entry) => {\n      const { isIntersecting } = entry;\n      if (this.isInView === isIntersecting)\n        return;\n      this.isInView = isIntersecting;\n      if (once && !isIntersecting && this.hasEnteredView) {\n        return;\n      } else if (isIntersecting) {\n        this.hasEnteredView = true;\n      }\n      if (this.node.animationState) {\n        this.node.animationState.setActive(\"whileInView\", isIntersecting);\n      }\n      const { onViewportEnter, onViewportLeave } = this.node.getProps();\n      const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n      callback && callback(entry);\n    };\n    return observeIntersection(this.node.current, options, onIntersectionUpdate);\n  }\n  mount() {\n    this.startObserver();\n  }\n  update() {\n    if (typeof IntersectionObserver === \"undefined\")\n      return;\n    const { props, prevProps } = this.node;\n    const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n    if (hasOptionsChanged) {\n      this.startObserver();\n    }\n  }\n  unmount() {\n  }\n};\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n  return (name) => viewport[name] !== prevViewport[name];\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs\nvar gestureAnimations = {\n  inView: {\n    Feature: InViewFeature\n  },\n  tap: {\n    Feature: PressGesture\n  },\n  focus: {\n    Feature: FocusGesture\n  },\n  hover: {\n    Feature: HoverGesture\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout.mjs\nvar layout = {\n  layout: {\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nimport { Fragment as Fragment3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs\nvar DOMVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.KeyframeResolver = DOMKeyframesResolver;\n  }\n  sortInstanceNodePosition(a, b) {\n    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props.style ? props.style[key] : void 0;\n  }\n  removeValueFromRenderState(key, { vars, style: style2 }) {\n    delete vars[key];\n    delete style2[key];\n  }\n  handleChildMotionValue() {\n    if (this.childSubscription) {\n      this.childSubscription();\n      delete this.childSubscription;\n    }\n    const { children } = this.props;\n    if (isMotionValue(children)) {\n      this.childSubscription = children.on(\"change\", (latest) => {\n        if (this.current) {\n          this.current.textContent = `${latest}`;\n        }\n      });\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs\nfunction renderHTML(element, { style: style2, vars }, styleProp, projection) {\n  Object.assign(element.style, style2, projection && projection.getProjectionStyles(styleProp));\n  for (const key in vars) {\n    element.style.setProperty(key, vars[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs\nfunction getComputedStyle3(element) {\n  return window.getComputedStyle(element);\n}\nvar HTMLVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"html\";\n    this.renderInstance = renderHTML;\n  }\n  readValueFromInstance(instance, key) {\n    var _a;\n    if (transformProps.has(key)) {\n      return ((_a = this.projection) == null ? void 0 : _a.isProjecting) ? defaultTransformValue(key) : readTransformValue(instance, key);\n    } else {\n      const computedStyle = getComputedStyle3(instance);\n      const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;\n      return typeof value === \"string\" ? value.trim() : value;\n    }\n  }\n  measureInstanceViewportBox(instance, { transformPagePoint }) {\n    return measureViewportBox(instance, transformPagePoint);\n  }\n  build(renderState, latestValues, props) {\n    buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs\nvar camelCaseAttributes = /* @__PURE__ */ new Set([\n  \"baseFrequency\",\n  \"diffuseConstant\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerWidth\",\n  \"numOctaves\",\n  \"targetX\",\n  \"targetY\",\n  \"surfaceScale\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"stdDeviation\",\n  \"tableValues\",\n  \"viewBox\",\n  \"gradientTransform\",\n  \"pathLength\",\n  \"startOffset\",\n  \"textLength\",\n  \"lengthAdjust\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs\nfunction renderSVG(element, renderState, _styleProp, projection) {\n  renderHTML(element, renderState, void 0, projection);\n  for (const key in renderState.attrs) {\n    element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash2(key) : key, renderState.attrs[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs\nvar SVGVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"svg\";\n    this.isSVGTag = false;\n    this.measureInstanceViewportBox = createBox;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props[key];\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    }\n    key = !camelCaseAttributes.has(key) ? camelToDash2(key) : key;\n    return instance.getAttribute(key);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps2(props, prevProps, visualElement);\n  }\n  build(renderState, latestValues, props) {\n    buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate, props.style);\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderSVG(instance, renderState, styleProp, projection);\n  }\n  mount(instance) {\n    this.isSVGTag = isSVGTag(instance.tagName);\n    super.mount(instance);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nvar createDomVisualElement = (Component3, options) => {\n  return isSVGComponent(Component3) ? new SVGVisualElement(options) : new HTMLVisualElement(options, {\n    allowProjection: Component3 !== Fragment3\n  });\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/create.mjs\nvar createMotionComponent = /* @__PURE__ */ createMotionComponentFactory({\n  ...animations,\n  ...gestureAnimations,\n  ...drag,\n  ...layout\n}, createDomVisualElement);\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\nvar motion = /* @__PURE__ */ createDOMMotionComponentProxy(createMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs\nimport { useEffect as useEffect6 } from \"react\";\nfunction useUnmountEffect(callback) {\n  return useEffect6(() => () => callback(), []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\nvar domAnimation = {\n  renderer: createDomVisualElement,\n  ...animations,\n  ...gestureAnimations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-max.mjs\nvar domMax = {\n  ...domAnimation,\n  ...drag,\n  ...layout\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-min.mjs\nvar domMin = {\n  renderer: createDomVisualElement,\n  ...animations\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs\nimport { useInsertionEffect as useInsertionEffect3 } from \"react\";\nfunction useMotionValueEvent(value, event, callback) {\n  useInsertionEffect3(() => value.on(event, callback), [value, event, callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs\nvar maxElapsed2 = 50;\nvar createAxisInfo = () => ({\n  current: 0,\n  offset: [],\n  progress: 0,\n  scrollLength: 0,\n  targetOffset: 0,\n  targetLength: 0,\n  containerLength: 0,\n  velocity: 0\n});\nvar createScrollInfo = () => ({\n  time: 0,\n  x: createAxisInfo(),\n  y: createAxisInfo()\n});\nvar keys = {\n  x: {\n    length: \"Width\",\n    position: \"Left\"\n  },\n  y: {\n    length: \"Height\",\n    position: \"Top\"\n  }\n};\nfunction updateAxisInfo(element, axisName, info, time2) {\n  const axis = info[axisName];\n  const { length, position } = keys[axisName];\n  const prev = axis.current;\n  const prevTime = info.time;\n  axis.current = element[`scroll${position}`];\n  axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];\n  axis.offset.length = 0;\n  axis.offset[0] = 0;\n  axis.offset[1] = axis.scrollLength;\n  axis.progress = progress(0, axis.scrollLength, axis.current);\n  const elapsed = time2 - prevTime;\n  axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time2) {\n  updateAxisInfo(element, \"x\", info, time2);\n  updateAxisInfo(element, \"y\", info, time2);\n  info.time = time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs\nfunction calcInset(element, container) {\n  const inset = { x: 0, y: 0 };\n  let current2 = element;\n  while (current2 && current2 !== container) {\n    if (isHTMLElement(current2)) {\n      inset.x += current2.offsetLeft;\n      inset.y += current2.offsetTop;\n      current2 = current2.offsetParent;\n    } else if (current2.tagName === \"svg\") {\n      const svgBoundingBox = current2.getBoundingClientRect();\n      current2 = current2.parentElement;\n      const parentBoundingBox = current2.getBoundingClientRect();\n      inset.x += svgBoundingBox.left - parentBoundingBox.left;\n      inset.y += svgBoundingBox.top - parentBoundingBox.top;\n    } else if (current2 instanceof SVGGraphicsElement) {\n      const { x, y } = current2.getBBox();\n      inset.x += x;\n      inset.y += y;\n      let svg = null;\n      let parent = current2.parentNode;\n      while (!svg) {\n        if (parent.tagName === \"svg\") {\n          svg = parent;\n        }\n        parent = current2.parentNode;\n      }\n      current2 = svg;\n    } else {\n      break;\n    }\n  }\n  return inset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs\nvar namedEdges = {\n  start: 0,\n  center: 0.5,\n  end: 1\n};\nfunction resolveEdge(edge, length, inset = 0) {\n  let delta = 0;\n  if (edge in namedEdges) {\n    edge = namedEdges[edge];\n  }\n  if (typeof edge === \"string\") {\n    const asNumber3 = parseFloat(edge);\n    if (edge.endsWith(\"px\")) {\n      delta = asNumber3;\n    } else if (edge.endsWith(\"%\")) {\n      edge = asNumber3 / 100;\n    } else if (edge.endsWith(\"vw\")) {\n      delta = asNumber3 / 100 * document.documentElement.clientWidth;\n    } else if (edge.endsWith(\"vh\")) {\n      delta = asNumber3 / 100 * document.documentElement.clientHeight;\n    } else {\n      edge = asNumber3;\n    }\n  }\n  if (typeof edge === \"number\") {\n    delta = length * edge;\n  }\n  return inset + delta;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs\nvar defaultOffset2 = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n  let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;\n  let targetPoint = 0;\n  let containerPoint = 0;\n  if (typeof offset === \"number\") {\n    offsetDefinition = [offset, offset];\n  } else if (typeof offset === \"string\") {\n    offset = offset.trim();\n    if (offset.includes(\" \")) {\n      offsetDefinition = offset.split(\" \");\n    } else {\n      offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];\n    }\n  }\n  targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n  containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n  return targetPoint - containerPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs\nvar ScrollOffset = {\n  Enter: [\n    [0, 1],\n    [1, 1]\n  ],\n  Exit: [\n    [0, 0],\n    [1, 0]\n  ],\n  Any: [\n    [1, 0],\n    [0, 1]\n  ],\n  All: [\n    [0, 0],\n    [1, 1]\n  ]\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs\nvar point = { x: 0, y: 0 };\nfunction getTargetSize(target) {\n  return \"getBBox\" in target && target.tagName !== \"svg\" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };\n}\nfunction resolveOffsets(container, info, options) {\n  const { offset: offsetDefinition = ScrollOffset.All } = options;\n  const { target = container, axis = \"y\" } = options;\n  const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n  const inset = target !== container ? calcInset(target, container) : point;\n  const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);\n  const containerSize = {\n    width: container.clientWidth,\n    height: container.clientHeight\n  };\n  info[axis].offset.length = 0;\n  let hasChanged = !info[axis].interpolate;\n  const numOffsets = offsetDefinition.length;\n  for (let i = 0; i < numOffsets; i++) {\n    const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n    if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n      hasChanged = true;\n    }\n    info[axis].offset[i] = offset;\n  }\n  if (hasChanged) {\n    info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition), { clamp: false });\n    info[axis].interpolatorOffsets = [...info[axis].offset];\n  }\n  info[axis].progress = clamp(0, 1, info[axis].interpolate(info[axis].current));\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs\nfunction measure(container, target = container, info) {\n  info.x.targetOffset = 0;\n  info.y.targetOffset = 0;\n  if (target !== container) {\n    let node = target;\n    while (node && node !== container) {\n      info.x.targetOffset += node.offsetLeft;\n      info.y.targetOffset += node.offsetTop;\n      node = node.offsetParent;\n    }\n  }\n  info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;\n  info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;\n  info.x.containerLength = container.clientWidth;\n  info.y.containerLength = container.clientHeight;\n  if (false) {\n    if (container && target && target !== container) {\n      warnOnce(getComputedStyle(container).position !== \"static\", \"Please ensure that the container has a non-static position, like 'relative', 'fixed', or 'absolute' to ensure scroll offset is calculated correctly.\");\n    }\n  }\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n  return {\n    measure: (time2) => {\n      measure(element, options.target, info);\n      updateScrollInfo(element, info, time2);\n      if (options.offset || options.target) {\n        resolveOffsets(element, info, options);\n      }\n    },\n    notify: () => onScroll(info)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getEventTarget = (element) => element === document.scrollingElement ? window : element;\nfunction scrollInfo(onScroll, { container = document.scrollingElement, ...options } = {}) {\n  if (!container)\n    return noop;\n  let containerHandlers = onScrollHandlers.get(container);\n  if (!containerHandlers) {\n    containerHandlers = /* @__PURE__ */ new Set();\n    onScrollHandlers.set(container, containerHandlers);\n  }\n  const info = createScrollInfo();\n  const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n  containerHandlers.add(containerHandler);\n  if (!scrollListeners.has(container)) {\n    const measureAll = () => {\n      for (const handler of containerHandlers) {\n        handler.measure(frameData.timestamp);\n      }\n      frame.preUpdate(notifyAll2);\n    };\n    const notifyAll2 = () => {\n      for (const handler of containerHandlers) {\n        handler.notify();\n      }\n    };\n    const listener2 = () => frame.read(measureAll);\n    scrollListeners.set(container, listener2);\n    const target = getEventTarget(container);\n    window.addEventListener(\"resize\", listener2, { passive: true });\n    if (container !== document.documentElement) {\n      resizeListeners.set(container, resize(container, listener2));\n    }\n    target.addEventListener(\"scroll\", listener2, { passive: true });\n    listener2();\n  }\n  const listener = scrollListeners.get(container);\n  frame.read(listener, false, true);\n  return () => {\n    var _a;\n    cancelFrame(listener);\n    const currentHandlers = onScrollHandlers.get(container);\n    if (!currentHandlers)\n      return;\n    currentHandlers.delete(containerHandler);\n    if (currentHandlers.size)\n      return;\n    const scrollListener = scrollListeners.get(container);\n    scrollListeners.delete(container);\n    if (scrollListener) {\n      getEventTarget(container).removeEventListener(\"scroll\", scrollListener);\n      (_a = resizeListeners.get(container)) == null ? void 0 : _a();\n      window.removeEventListener(\"resize\", scrollListener);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs\nvar timelineCache = /* @__PURE__ */ new Map();\nfunction scrollTimelineFallback(options) {\n  const currentTime = { value: 0 };\n  const cancel = scrollInfo((info) => {\n    currentTime.value = info[options.axis].progress * 100;\n  }, options);\n  return { currentTime, cancel };\n}\nfunction getTimeline({ source, container, ...options }) {\n  const { axis } = options;\n  if (source)\n    container = source;\n  const containerCache = timelineCache.get(container) ?? /* @__PURE__ */ new Map();\n  timelineCache.set(container, containerCache);\n  const targetKey = options.target ?? \"self\";\n  const targetCache = containerCache.get(targetKey) ?? {};\n  const axisKey = axis + (options.offset ?? []).join(\",\");\n  if (!targetCache[axisKey]) {\n    targetCache[axisKey] = !options.target && supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ container, ...options });\n  }\n  return targetCache[axisKey];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs\nfunction attachToAnimation(animation, options) {\n  const timeline = getTimeline(options);\n  return animation.attachTimeline({\n    timeline: options.target ? void 0 : timeline,\n    observe: (valueAnimation) => {\n      valueAnimation.pause();\n      return observeTimeline((progress2) => {\n        valueAnimation.time = valueAnimation.duration * progress2;\n      }, timeline);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/attach-function.mjs\nfunction isOnScrollWithInfo(onScroll) {\n  return onScroll.length === 2;\n}\nfunction attachToFunction(onScroll, options) {\n  if (isOnScrollWithInfo(onScroll)) {\n    return scrollInfo((info) => {\n      onScroll(info[options.axis].progress, info);\n    }, options);\n  } else {\n    return observeTimeline(onScroll, getTimeline(options));\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs\nfunction scroll(onScroll, { axis = \"y\", container = document.scrollingElement, ...options } = {}) {\n  if (!container)\n    return noop;\n  const optionsWithDefaults = { axis, container, ...options };\n  return typeof onScroll === \"function\" ? attachToFunction(onScroll, optionsWithDefaults) : attachToAnimation(onScroll, optionsWithDefaults);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-scroll.mjs\nimport { useEffect as useEffect7 } from \"react\";\nfunction refWarning(name, ref) {\n  warning(Boolean(!ref || ref.current), `You have defined a ${name} options but the provided ref is not yet hydrated, probably because it's defined higher up the tree. Try calling useScroll() in the same component as the ref, or setting its \\`layoutEffect: false\\` option.`);\n}\nvar createScrollMotionValues = () => ({\n  scrollX: motionValue(0),\n  scrollY: motionValue(0),\n  scrollXProgress: motionValue(0),\n  scrollYProgress: motionValue(0)\n});\nfunction useScroll({ container, target, layoutEffect = true, ...options } = {}) {\n  const values = useConstant(createScrollMotionValues);\n  const useLifecycleEffect = layoutEffect ? useIsomorphicLayoutEffect : useEffect7;\n  useLifecycleEffect(() => {\n    refWarning(\"target\", target);\n    refWarning(\"container\", container);\n    return scroll((_progress, { x, y }) => {\n      values.scrollX.set(x.current);\n      values.scrollXProgress.set(x.progress);\n      values.scrollY.set(y.current);\n      values.scrollYProgress.set(y.progress);\n    }, {\n      ...options,\n      container: (container == null ? void 0 : container.current) || void 0,\n      target: (target == null ? void 0 : target.current) || void 0\n    });\n  }, [container, target, JSON.stringify(options.offset)]);\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.mjs\nfunction useElementScroll(ref) {\n  if (false) {\n    warnOnce(false, \"useElementScroll is deprecated. Convert to useScroll({ container: ref }).\");\n  }\n  return useScroll({ container: ref });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs\nfunction useViewportScroll() {\n  if (false) {\n    warnOnce(false, \"useViewportScroll is deprecated. Convert to useScroll().\");\n  }\n  return useScroll();\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-value.mjs\nimport { useContext as useContext11, useState as useState4, useEffect as useEffect8 } from \"react\";\nfunction useMotionValue(initial) {\n  const value = useConstant(() => motionValue(initial));\n  const { isStatic } = useContext11(MotionConfigContext);\n  if (isStatic) {\n    const [, setLatest] = useState4(initial);\n    useEffect8(() => value.on(\"change\", setLatest), []);\n  }\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-combine-values.mjs\nfunction useCombineMotionValues(values, combineValues) {\n  const value = useMotionValue(combineValues());\n  const updateValue = () => value.set(combineValues());\n  updateValue();\n  useIsomorphicLayoutEffect(() => {\n    const scheduleUpdate = () => frame.preRender(updateValue, false, true);\n    const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n    return () => {\n      subscriptions.forEach((unsubscribe) => unsubscribe());\n      cancelFrame(updateValue);\n    };\n  });\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-template.mjs\nfunction useMotionTemplate(fragments, ...values) {\n  const numFragments = fragments.length;\n  function buildValue() {\n    let output = ``;\n    for (let i = 0; i < numFragments; i++) {\n      output += fragments[i];\n      const value = values[i];\n      if (value) {\n        output += isMotionValue(value) ? value.get() : value;\n      }\n    }\n    return output;\n  }\n  return useCombineMotionValues(values.filter(isMotionValue), buildValue);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-computed.mjs\nfunction useComputed(compute) {\n  collectMotionValues.current = [];\n  compute();\n  const value = useCombineMotionValues(collectMotionValues.current, compute);\n  collectMotionValues.current = void 0;\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n  if (typeof input === \"function\") {\n    return useComputed(input);\n  }\n  const transformer = typeof inputRangeOrTransformer === \"function\" ? inputRangeOrTransformer : transform(inputRangeOrTransformer, outputRange, options);\n  return Array.isArray(input) ? useListTransform(input, transformer) : useListTransform([input], ([latest]) => transformer(latest));\n}\nfunction useListTransform(values, transformer) {\n  const latest = useConstant(() => []);\n  return useCombineMotionValues(values, () => {\n    latest.length = 0;\n    const numValues = values.length;\n    for (let i = 0; i < numValues; i++) {\n      latest[i] = values[i].get();\n    }\n    return transformer(latest);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-spring.mjs\nimport { useContext as useContext12, useInsertionEffect as useInsertionEffect4 } from \"react\";\nfunction useSpring(source, options = {}) {\n  const { isStatic } = useContext12(MotionConfigContext);\n  const getFromSource = () => isMotionValue(source) ? source.get() : source;\n  if (isStatic) {\n    return useTransform(getFromSource);\n  }\n  const value = useMotionValue(getFromSource());\n  useInsertionEffect4(() => {\n    return attachSpring(value, source, options);\n  }, [value, JSON.stringify(options)]);\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs\nimport { useRef as useRef8, useContext as useContext13, useEffect as useEffect9 } from \"react\";\nfunction useAnimationFrame(callback) {\n  const initialTimestamp = useRef8(0);\n  const { isStatic } = useContext13(MotionConfigContext);\n  useEffect9(() => {\n    if (isStatic)\n      return;\n    const provideTimeSinceStart = ({ timestamp, delta }) => {\n      if (!initialTimestamp.current)\n        initialTimestamp.current = timestamp;\n      callback(timestamp - initialTimestamp.current, delta);\n    };\n    frame.update(provideTimeSinceStart, true);\n    return () => cancelFrame(provideTimeSinceStart);\n  }, [callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-time.mjs\nfunction useTime() {\n  const time2 = useMotionValue(0);\n  useAnimationFrame((t) => time2.set(t));\n  return time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-velocity.mjs\nfunction useVelocity(value) {\n  const velocity = useMotionValue(value.getVelocity());\n  const updateVelocity = () => {\n    const latest = value.getVelocity();\n    velocity.set(latest);\n    if (latest)\n      frame.update(updateVelocity);\n  };\n  useMotionValueEvent(value, \"change\", () => {\n    frame.update(updateVelocity, false, true);\n  });\n  return velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs\nvar WillChangeMotionValue = class extends MotionValue {\n  constructor() {\n    super(...arguments);\n    this.isEnabled = false;\n  }\n  add(name) {\n    if (transformProps.has(name) || acceleratedValues2.has(name)) {\n      this.isEnabled = true;\n      this.update();\n    }\n  }\n  update() {\n    this.set(this.isEnabled ? \"transform\" : \"auto\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/index.mjs\nfunction useWillChange() {\n  return useConstant(() => new WillChangeMotionValue(\"auto\"));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs\nimport { useState as useState5 } from \"react\";\nfunction useReducedMotion() {\n  !hasReducedMotionListener.current && initPrefersReducedMotion();\n  const [shouldReduceMotion] = useState5(prefersReducedMotion.current);\n  if (false) {\n    warnOnce(shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n  }\n  return shouldReduceMotion;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs\nimport { useContext as useContext14 } from \"react\";\nfunction useReducedMotionConfig() {\n  const reducedMotionPreference = useReducedMotion();\n  const { reducedMotion } = useContext14(MotionConfigContext);\n  if (reducedMotion === \"never\") {\n    return false;\n  } else if (reducedMotion === \"always\") {\n    return true;\n  } else {\n    return reducedMotionPreference;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs\nfunction stopAnimation(visualElement) {\n  visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n  const reversedLabels = [...variantLabels].reverse();\n  reversedLabels.forEach((key) => {\n    const variant = visualElement.getVariant(key);\n    variant && setTarget(visualElement, variant);\n    if (visualElement.variantChildren) {\n      visualElement.variantChildren.forEach((child) => {\n        setVariants(child, variantLabels);\n      });\n    }\n  });\n}\nfunction setValues(visualElement, definition) {\n  if (Array.isArray(definition)) {\n    return setVariants(visualElement, definition);\n  } else if (typeof definition === \"string\") {\n    return setVariants(visualElement, [definition]);\n  } else {\n    setTarget(visualElement, definition);\n  }\n}\nfunction animationControls() {\n  let hasMounted = false;\n  const subscribers = /* @__PURE__ */ new Set();\n  const controls = {\n    subscribe(visualElement) {\n      subscribers.add(visualElement);\n      return () => void subscribers.delete(visualElement);\n    },\n    start(definition, transitionOverride) {\n      invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      const animations2 = [];\n      subscribers.forEach((visualElement) => {\n        animations2.push(animateVisualElement(visualElement, definition, {\n          transitionOverride\n        }));\n      });\n      return Promise.all(animations2);\n    },\n    set(definition) {\n      invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      return subscribers.forEach((visualElement) => {\n        setValues(visualElement, definition);\n      });\n    },\n    stop() {\n      subscribers.forEach((visualElement) => {\n        stopAnimation(visualElement);\n      });\n    },\n    mount() {\n      hasMounted = true;\n      return () => {\n        hasMounted = false;\n        controls.stop();\n      };\n    }\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs\nfunction isDOMKeyframes(keyframes2) {\n  return typeof keyframes2 === \"object\" && !Array.isArray(keyframes2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs\nfunction resolveSubjects(subject, keyframes2, scope, selectorCache) {\n  if (typeof subject === \"string\" && isDOMKeyframes(keyframes2)) {\n    return resolveElements(subject, scope, selectorCache);\n  } else if (subject instanceof NodeList) {\n    return Array.from(subject);\n  } else if (Array.isArray(subject)) {\n    return subject;\n  } else {\n    return [subject];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs\nfunction calculateRepeatDuration(duration, repeat, _repeatDelay) {\n  return duration * (repeat + 1);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs\nfunction calcNextTime(current2, next2, prev, labels) {\n  if (typeof next2 === \"number\") {\n    return next2;\n  } else if (next2.startsWith(\"-\") || next2.startsWith(\"+\")) {\n    return Math.max(0, current2 + parseFloat(next2));\n  } else if (next2 === \"<\") {\n    return prev;\n  } else {\n    return labels.get(next2) ?? current2;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs\nfunction eraseKeyframes(sequence, startTime, endTime) {\n  for (let i = 0; i < sequence.length; i++) {\n    const keyframe = sequence[i];\n    if (keyframe.at > startTime && keyframe.at < endTime) {\n      removeItem(sequence, keyframe);\n      i--;\n    }\n  }\n}\nfunction addKeyframes(sequence, keyframes2, easing, offset, startTime, endTime) {\n  eraseKeyframes(sequence, startTime, endTime);\n  for (let i = 0; i < keyframes2.length; i++) {\n    sequence.push({\n      value: keyframes2[i],\n      at: mixNumber(startTime, endTime, offset[i]),\n      easing: getEasingForSegment(easing, i)\n    });\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs\nfunction normalizeTimes(times, repeat) {\n  for (let i = 0; i < times.length; i++) {\n    times[i] = times[i] / (repeat + 1);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs\nfunction compareByTime(a, b) {\n  if (a.at === b.at) {\n    if (a.value === null)\n      return 1;\n    if (b.value === null)\n      return -1;\n    return 0;\n  } else {\n    return a.at - b.at;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/create.mjs\nvar defaultSegmentEasing = \"easeInOut\";\nvar MAX_REPEAT = 20;\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) {\n  const defaultDuration = defaultTransition.duration || 0.3;\n  const animationDefinitions = /* @__PURE__ */ new Map();\n  const sequences = /* @__PURE__ */ new Map();\n  const elementCache = {};\n  const timeLabels = /* @__PURE__ */ new Map();\n  let prevTime = 0;\n  let currentTime = 0;\n  let totalDuration = 0;\n  for (let i = 0; i < sequence.length; i++) {\n    const segment = sequence[i];\n    if (typeof segment === \"string\") {\n      timeLabels.set(segment, currentTime);\n      continue;\n    } else if (!Array.isArray(segment)) {\n      timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n      continue;\n    }\n    let [subject, keyframes2, transition = {}] = segment;\n    if (transition.at !== void 0) {\n      currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n    }\n    let maxDuration = 0;\n    const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {\n      const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n      const { delay: delay2 = 0, times = defaultOffset(valueKeyframesAsList), type = \"keyframes\", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition;\n      let { ease: ease2 = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n      const calculatedDelay = typeof delay2 === \"function\" ? delay2(elementIndex, numSubjects) : delay2;\n      const numKeyframes = valueKeyframesAsList.length;\n      const createGenerator = isGenerator(type) ? type : generators == null ? void 0 : generators[type];\n      if (numKeyframes <= 2 && createGenerator) {\n        let absoluteDelta = 100;\n        if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {\n          const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n          absoluteDelta = Math.abs(delta);\n        }\n        const springTransition = { ...remainingTransition };\n        if (duration !== void 0) {\n          springTransition.duration = secondsToMilliseconds(duration);\n        }\n        const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);\n        ease2 = springEasing.ease;\n        duration = springEasing.duration;\n      }\n      duration ?? (duration = defaultDuration);\n      const startTime = currentTime + calculatedDelay;\n      if (times.length === 1 && times[0] === 0) {\n        times[1] = 1;\n      }\n      const remainder = times.length - valueKeyframesAsList.length;\n      remainder > 0 && fillOffset(times, remainder);\n      valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);\n      if (repeat) {\n        invariant(repeat < MAX_REPEAT, \"Repeat count too high, must be less than 20\");\n        duration = calculateRepeatDuration(duration, repeat);\n        const originalKeyframes = [...valueKeyframesAsList];\n        const originalTimes = [...times];\n        ease2 = Array.isArray(ease2) ? [...ease2] : [ease2];\n        const originalEase = [...ease2];\n        for (let repeatIndex = 0; repeatIndex < repeat; repeatIndex++) {\n          valueKeyframesAsList.push(...originalKeyframes);\n          for (let keyframeIndex = 0; keyframeIndex < originalKeyframes.length; keyframeIndex++) {\n            times.push(originalTimes[keyframeIndex] + (repeatIndex + 1));\n            ease2.push(keyframeIndex === 0 ? \"linear\" : getEasingForSegment(originalEase, keyframeIndex - 1));\n          }\n        }\n        normalizeTimes(times, repeat);\n      }\n      const targetTime = startTime + duration;\n      addKeyframes(valueSequence, valueKeyframesAsList, ease2, times, startTime, targetTime);\n      maxDuration = Math.max(calculatedDelay + duration, maxDuration);\n      totalDuration = Math.max(targetTime, totalDuration);\n    };\n    if (isMotionValue(subject)) {\n      const subjectSequence = getSubjectSequence(subject, sequences);\n      resolveValueSequence(keyframes2, transition, getValueSequence(\"default\", subjectSequence));\n    } else {\n      const subjects = resolveSubjects(subject, keyframes2, scope, elementCache);\n      const numSubjects = subjects.length;\n      for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) {\n        keyframes2 = keyframes2;\n        transition = transition;\n        const thisSubject = subjects[subjectIndex];\n        const subjectSequence = getSubjectSequence(thisSubject, sequences);\n        for (const key in keyframes2) {\n          resolveValueSequence(keyframes2[key], getValueTransition2(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);\n        }\n      }\n    }\n    prevTime = currentTime;\n    currentTime += maxDuration;\n  }\n  sequences.forEach((valueSequences, element) => {\n    for (const key in valueSequences) {\n      const valueSequence = valueSequences[key];\n      valueSequence.sort(compareByTime);\n      const keyframes2 = [];\n      const valueOffset = [];\n      const valueEasing = [];\n      for (let i = 0; i < valueSequence.length; i++) {\n        const { at, value, easing } = valueSequence[i];\n        keyframes2.push(value);\n        valueOffset.push(progress(0, totalDuration, at));\n        valueEasing.push(easing || \"easeOut\");\n      }\n      if (valueOffset[0] !== 0) {\n        valueOffset.unshift(0);\n        keyframes2.unshift(keyframes2[0]);\n        valueEasing.unshift(defaultSegmentEasing);\n      }\n      if (valueOffset[valueOffset.length - 1] !== 1) {\n        valueOffset.push(1);\n        keyframes2.push(null);\n      }\n      if (!animationDefinitions.has(element)) {\n        animationDefinitions.set(element, {\n          keyframes: {},\n          transition: {}\n        });\n      }\n      const definition = animationDefinitions.get(element);\n      definition.keyframes[key] = keyframes2;\n      definition.transition[key] = {\n        ...defaultTransition,\n        duration: totalDuration,\n        ease: valueEasing,\n        times: valueOffset,\n        ...sequenceTransition\n      };\n    }\n  });\n  return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n  !sequences.has(subject) && sequences.set(subject, {});\n  return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n  if (!sequences[name])\n    sequences[name] = [];\n  return sequences[name];\n}\nfunction keyframesAsList(keyframes2) {\n  return Array.isArray(keyframes2) ? keyframes2 : [keyframes2];\n}\nfunction getValueTransition2(transition, key) {\n  return transition && transition[key] ? {\n    ...transition,\n    ...transition[key]\n  } : { ...transition };\n}\nvar isNumber = (keyframe) => typeof keyframe === \"number\";\nvar isNumberKeyframesArray = (keyframes2) => keyframes2.every(isNumber);\n\n// ../../../node_modules/framer-motion/dist/es/render/object/ObjectVisualElement.mjs\nfunction isObjectKey(key, object) {\n  return key in object;\n}\nvar ObjectVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"object\";\n  }\n  readValueFromInstance(instance, key) {\n    if (isObjectKey(key, instance)) {\n      const value = instance[key];\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        return value;\n      }\n    }\n    return void 0;\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  removeValueFromRenderState(key, renderState) {\n    delete renderState.output[key];\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  build(renderState, latestValues) {\n    Object.assign(renderState.output, latestValues);\n  }\n  renderInstance(instance, { output }) {\n    Object.assign(instance, output);\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs\nfunction createDOMVisualElement(element) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        transform: {},\n        transformOrigin: {},\n        style: {},\n        vars: {},\n        attrs: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = isSVGElement(element) && !isSVGSVGElement(element) ? new SVGVisualElement(options) : new HTMLVisualElement(options);\n  node.mount(element);\n  visualElementStore.set(element, node);\n}\nfunction createObjectVisualElement(subject) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        output: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = new ObjectVisualElement(options);\n  node.mount(subject);\n  visualElementStore.set(subject, node);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/subject.mjs\nfunction isSingleValue(subject, keyframes2) {\n  return isMotionValue(subject) || typeof subject === \"number\" || typeof subject === \"string\" && !isDOMKeyframes(keyframes2);\n}\nfunction animateSubject(subject, keyframes2, options, scope) {\n  const animations2 = [];\n  if (isSingleValue(subject, keyframes2)) {\n    animations2.push(animateSingleValue(subject, isDOMKeyframes(keyframes2) ? keyframes2.default || keyframes2 : keyframes2, options ? options.default || options : options));\n  } else {\n    const subjects = resolveSubjects(subject, keyframes2, scope);\n    const numSubjects = subjects.length;\n    invariant(Boolean(numSubjects), \"No valid elements provided.\");\n    for (let i = 0; i < numSubjects; i++) {\n      const thisSubject = subjects[i];\n      const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;\n      if (!visualElementStore.has(thisSubject)) {\n        createVisualElement(thisSubject);\n      }\n      const visualElement = visualElementStore.get(thisSubject);\n      const transition = { ...options };\n      if (\"delay\" in transition && typeof transition.delay === \"function\") {\n        transition.delay = transition.delay(i, numSubjects);\n      }\n      animations2.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));\n    }\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/sequence.mjs\nfunction animateSequence(sequence, options, scope) {\n  const animations2 = [];\n  const animationDefinitions = createAnimationsFromSequence(sequence, options, scope, { spring });\n  animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {\n    animations2.push(...animateSubject(subject, keyframes2, transition));\n  });\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/index.mjs\nfunction isSequence(value) {\n  return Array.isArray(value) && value.some(Array.isArray);\n}\nfunction createScopedAnimate(scope) {\n  function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {\n    let animations2 = [];\n    if (isSequence(subjectOrSequence)) {\n      animations2 = animateSequence(subjectOrSequence, optionsOrKeyframes, scope);\n    } else {\n      animations2 = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope);\n    }\n    const animation = new GroupAnimationWithThen(animations2);\n    if (scope) {\n      scope.animations.push(animation);\n    }\n    return animation;\n  }\n  return scopedAnimate;\n}\nvar animate = createScopedAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate.mjs\nfunction useAnimate() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs\nfunction animateElements(elementOrSelector, keyframes2, options, scope) {\n  const elements = resolveElements(elementOrSelector, scope);\n  const numElements = elements.length;\n  invariant(Boolean(numElements), \"No valid element provided.\");\n  const animationDefinitions = [];\n  for (let i = 0; i < numElements; i++) {\n    const element = elements[i];\n    const elementTransition = { ...options };\n    if (typeof elementTransition.delay === \"function\") {\n      elementTransition.delay = elementTransition.delay(i, numElements);\n    }\n    for (const valueName in keyframes2) {\n      let valueKeyframes = keyframes2[valueName];\n      if (!Array.isArray(valueKeyframes)) {\n        valueKeyframes = [valueKeyframes];\n      }\n      const valueOptions = {\n        ...getValueTransition(elementTransition, valueName)\n      };\n      valueOptions.duration && (valueOptions.duration = secondsToMilliseconds(valueOptions.duration));\n      valueOptions.delay && (valueOptions.delay = secondsToMilliseconds(valueOptions.delay));\n      const map = getAnimationMap(element);\n      const key = animationMapKey(valueName, valueOptions.pseudoElement || \"\");\n      const currentAnimation = map.get(key);\n      currentAnimation && currentAnimation.stop();\n      animationDefinitions.push({\n        map,\n        key,\n        unresolvedKeyframes: valueKeyframes,\n        options: {\n          ...valueOptions,\n          element,\n          name: valueName,\n          allowFlatten: !elementTransition.type && !elementTransition.ease\n        }\n      });\n    }\n  }\n  for (let i = 0; i < animationDefinitions.length; i++) {\n    const { unresolvedKeyframes, options: animationOptions } = animationDefinitions[i];\n    const { element, name, pseudoElement } = animationOptions;\n    if (!pseudoElement && unresolvedKeyframes[0] === null) {\n      unresolvedKeyframes[0] = getComputedStyle2(element, name);\n    }\n    fillWildcards(unresolvedKeyframes);\n    applyPxDefaults(unresolvedKeyframes, name);\n    if (!pseudoElement && unresolvedKeyframes.length < 2) {\n      unresolvedKeyframes.unshift(getComputedStyle2(element, name));\n    }\n    animationOptions.keyframes = unresolvedKeyframes;\n  }\n  const animations2 = [];\n  for (let i = 0; i < animationDefinitions.length; i++) {\n    const { map, key, options: animationOptions } = animationDefinitions[i];\n    const animation = new NativeAnimation(animationOptions);\n    map.set(key, animation);\n    animation.finished.finally(() => map.delete(key));\n    animations2.push(animation);\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs\nvar createScopedWaapiAnimate = (scope) => {\n  function scopedAnimate(elementOrSelector, keyframes2, options) {\n    return new GroupAnimationWithThen(animateElements(elementOrSelector, keyframes2, options, scope));\n  }\n  return scopedAnimate;\n};\nvar animateMini = /* @__PURE__ */ createScopedWaapiAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate-style.mjs\nfunction useAnimateMini() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedWaapiAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs\nfunction useAnimationControls() {\n  const controls = useConstant(animationControls);\n  useIsomorphicLayoutEffect(controls.mount, []);\n  return controls;\n}\nvar useAnimation = useAnimationControls;\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence-data.mjs\nimport { useContext as useContext15 } from \"react\";\nfunction usePresenceData() {\n  const context = useContext15(PresenceContext);\n  return context ? context.custom : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs\nimport { useEffect as useEffect10 } from \"react\";\nfunction useDomEvent(ref, eventName, handler, options) {\n  useEffect10(() => {\n    const element = ref.current;\n    if (handler && element) {\n      return addDomEvent(element, eventName, handler, options);\n    }\n  }, [ref, eventName, handler, options]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs\nvar DragControls = class {\n  constructor() {\n    this.componentControls = /* @__PURE__ */ new Set();\n  }\n  /**\n   * Subscribe a component's internal `VisualElementDragControls` to the user-facing API.\n   *\n   * @internal\n   */\n  subscribe(controls) {\n    this.componentControls.add(controls);\n    return () => this.componentControls.delete(controls);\n  }\n  /**\n   * Start a drag gesture on every `motion` component that has this set of drag controls\n   * passed into it via the `dragControls` prop.\n   *\n   * ```jsx\n   * dragControls.start(e, {\n   *   snapToCursor: true\n   * })\n   * ```\n   *\n   * @param event - PointerEvent\n   * @param options - Options\n   *\n   * @public\n   */\n  start(event, options) {\n    this.componentControls.forEach((controls) => {\n      controls.start(event.nativeEvent || event, options);\n    });\n  }\n};\nvar createDragControls = () => new DragControls();\nfunction useDragControls() {\n  return useConstant(createDragControls);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-motion-component.mjs\nfunction isMotionComponent(component) {\n  return component !== null && typeof component === \"object\" && motionComponentSymbol in component;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs\nfunction unwrapMotionComponent(component) {\n  if (isMotionComponent(component)) {\n    return component[motionComponentSymbol];\n  }\n  return void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-instant-layout-transition.mjs\nfunction useInstantLayoutTransition() {\n  return startTransition;\n}\nfunction startTransition(callback) {\n  if (!rootProjectionNode.current)\n    return;\n  rootProjectionNode.current.isUpdating = false;\n  rootProjectionNode.current.blockUpdate();\n  callback && callback();\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-reset-projection.mjs\nimport { useCallback as useCallback4 } from \"react\";\nfunction useResetProjection() {\n  const reset = useCallback4(() => {\n    const root = rootProjectionNode.current;\n    if (!root)\n      return;\n    root.resetTree();\n  }, []);\n  return reset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-cycle.mjs\nimport { useRef as useRef9, useState as useState6, useCallback as useCallback5 } from \"react\";\nfunction useCycle(...items) {\n  const index = useRef9(0);\n  const [item, setItem] = useState6(items[index.current]);\n  const runCycle = useCallback5(\n    (next2) => {\n      index.current = typeof next2 !== \"number\" ? wrap(0, items.length, index.current + 1) : next2;\n      setItem(items[index.current]);\n    },\n    // The array will change on each call, but by putting items.length at\n    // the front of this array, we guarantee the dependency comparison will match up\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [items.length, ...items]\n  );\n  return [item, runCycle];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs\nvar thresholds = {\n  some: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\n  const elements = resolveElements(elementOrSelector);\n  const activeIntersections = /* @__PURE__ */ new WeakMap();\n  const onIntersectionChange = (entries) => {\n    entries.forEach((entry) => {\n      const onEnd = activeIntersections.get(entry.target);\n      if (entry.isIntersecting === Boolean(onEnd))\n        return;\n      if (entry.isIntersecting) {\n        const newOnEnd = onStart(entry.target, entry);\n        if (typeof newOnEnd === \"function\") {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer2.unobserve(entry.target);\n        }\n      } else if (typeof onEnd === \"function\") {\n        onEnd(entry);\n        activeIntersections.delete(entry.target);\n      }\n    });\n  };\n  const observer2 = new IntersectionObserver(onIntersectionChange, {\n    root,\n    rootMargin,\n    threshold: typeof amount === \"number\" ? amount : thresholds[amount]\n  });\n  elements.forEach((element) => observer2.observe(element));\n  return () => observer2.disconnect();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs\nimport { useState as useState7, useEffect as useEffect11 } from \"react\";\nfunction useInView(ref, { root, margin, amount, once = false, initial = false } = {}) {\n  const [isInView, setInView] = useState7(initial);\n  useEffect11(() => {\n    if (!ref.current || once && isInView)\n      return;\n    const onEnter = () => {\n      setInView(true);\n      return once ? void 0 : () => setInView(false);\n    };\n    const options = {\n      root: root && root.current || void 0,\n      margin,\n      amount\n    };\n    return inView(ref.current, onEnter, options);\n  }, [root, ref, margin, once, amount]);\n  return isInView;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs\nimport { useRef as useRef10, useEffect as useEffect12 } from \"react\";\nfunction useInstantTransition() {\n  const [forceUpdate, forcedRenderCount] = useForceUpdate();\n  const startInstantLayoutTransition = useInstantLayoutTransition();\n  const unlockOnFrameRef = useRef10(-1);\n  useEffect12(() => {\n    frame.postRender(() => frame.postRender(() => {\n      if (forcedRenderCount !== unlockOnFrameRef.current)\n        return;\n      MotionGlobalConfig.instantAnimations = false;\n    }));\n  }, [forcedRenderCount]);\n  return (callback) => {\n    startInstantLayoutTransition(() => {\n      MotionGlobalConfig.instantAnimations = true;\n      forceUpdate();\n      callback();\n      unlockOnFrameRef.current = forcedRenderCount + 1;\n    });\n  };\n}\nfunction disableInstantTransitions() {\n  MotionGlobalConfig.instantAnimations = false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store.mjs\nvar appearAnimationStore = /* @__PURE__ */ new Map();\nvar appearComplete = /* @__PURE__ */ new Map();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs\nvar appearStoreId = (elementId, valueName) => {\n  const key = transformProps.has(valueName) ? \"transform\" : valueName;\n  return `${elementId}: ${key}`;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs\nfunction handoffOptimizedAppearAnimation(elementId, valueName, frame2) {\n  var _a;\n  const storeId = appearStoreId(elementId, valueName);\n  const optimisedAnimation = appearAnimationStore.get(storeId);\n  if (!optimisedAnimation) {\n    return null;\n  }\n  const { animation, startTime } = optimisedAnimation;\n  function cancelAnimation() {\n    var _a2;\n    (_a2 = window.MotionCancelOptimisedAnimation) == null ? void 0 : _a2.call(window, elementId, valueName, frame2);\n  }\n  animation.onfinish = cancelAnimation;\n  if (startTime === null || ((_a = window.MotionHandoffIsComplete) == null ? void 0 : _a.call(window, elementId))) {\n    cancelAnimation();\n    return null;\n  } else {\n    return startTime;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs\nvar startFrameTime;\nvar readyAnimation;\nvar suspendedAnimations = /* @__PURE__ */ new Set();\nfunction resumeSuspendedAnimations() {\n  suspendedAnimations.forEach((data) => {\n    data.animation.play();\n    data.animation.startTime = data.startTime;\n  });\n  suspendedAnimations.clear();\n}\nfunction startOptimizedAppearAnimation(element, name, keyframes2, options, onReady) {\n  if (window.MotionIsMounted) {\n    return;\n  }\n  const id4 = element.dataset[optimizedAppearDataId];\n  if (!id4)\n    return;\n  window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n  const storeId = appearStoreId(id4, name);\n  if (!readyAnimation) {\n    readyAnimation = startWaapiAnimation(\n      element,\n      name,\n      [keyframes2[0], keyframes2[0]],\n      /**\n       * 10 secs is basically just a super-safe duration to give Chrome\n       * long enough to get the animation ready.\n       */\n      { duration: 1e4, ease: \"linear\" }\n    );\n    appearAnimationStore.set(storeId, {\n      animation: readyAnimation,\n      startTime: null\n    });\n    window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n    window.MotionHasOptimisedAnimation = (elementId, valueName) => {\n      if (!elementId)\n        return false;\n      if (!valueName) {\n        return appearComplete.has(elementId);\n      }\n      const animationId = appearStoreId(elementId, valueName);\n      return Boolean(appearAnimationStore.get(animationId));\n    };\n    window.MotionHandoffMarkAsComplete = (elementId) => {\n      if (appearComplete.has(elementId)) {\n        appearComplete.set(elementId, true);\n      }\n    };\n    window.MotionHandoffIsComplete = (elementId) => {\n      return appearComplete.get(elementId) === true;\n    };\n    window.MotionCancelOptimisedAnimation = (elementId, valueName, frame2, canResume) => {\n      const animationId = appearStoreId(elementId, valueName);\n      const data = appearAnimationStore.get(animationId);\n      if (!data)\n        return;\n      if (frame2 && canResume === void 0) {\n        frame2.postRender(() => {\n          frame2.postRender(() => {\n            data.animation.cancel();\n          });\n        });\n      } else {\n        data.animation.cancel();\n      }\n      if (frame2 && canResume) {\n        suspendedAnimations.add(data);\n        frame2.render(resumeSuspendedAnimations);\n      } else {\n        appearAnimationStore.delete(animationId);\n        if (!appearAnimationStore.size) {\n          window.MotionCancelOptimisedAnimation = void 0;\n        }\n      }\n    };\n    window.MotionCheckAppearSync = (visualElement, valueName, value) => {\n      var _a, _b;\n      const appearId = getOptimisedAppearId(visualElement);\n      if (!appearId)\n        return;\n      const valueIsOptimised = (_a = window.MotionHasOptimisedAnimation) == null ? void 0 : _a.call(window, appearId, valueName);\n      const externalAnimationValue = (_b = visualElement.props.values) == null ? void 0 : _b[valueName];\n      if (!valueIsOptimised || !externalAnimationValue)\n        return;\n      const removeSyncCheck = value.on(\"change\", (latestValue) => {\n        var _a2;\n        if (externalAnimationValue.get() !== latestValue) {\n          (_a2 = window.MotionCancelOptimisedAnimation) == null ? void 0 : _a2.call(window, appearId, valueName);\n          removeSyncCheck();\n        }\n      });\n      return removeSyncCheck;\n    };\n  }\n  const startAnimation = () => {\n    readyAnimation.cancel();\n    const appearAnimation = startWaapiAnimation(element, name, keyframes2, options);\n    if (startFrameTime === void 0) {\n      startFrameTime = performance.now();\n    }\n    appearAnimation.startTime = startFrameTime;\n    appearAnimationStore.set(storeId, {\n      animation: appearAnimation,\n      startTime: startFrameTime\n    });\n    if (onReady)\n      onReady(appearAnimation);\n  };\n  appearComplete.set(id4, false);\n  if (readyAnimation.ready) {\n    readyAnimation.ready.then(startAnimation).catch(noop);\n  } else {\n    startAnimation();\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs\nimport { useState as useState8, useLayoutEffect as useLayoutEffect2 } from \"react\";\nvar createObject = () => ({});\nvar StateVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.measureInstanceViewportBox = createBox;\n  }\n  build() {\n  }\n  resetTransform() {\n  }\n  restoreTransform() {\n  }\n  removeValueFromRenderState() {\n  }\n  renderInstance() {\n  }\n  scrapeMotionValuesFromProps() {\n    return createObject();\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  readValueFromInstance(_state, key, options) {\n    return options.initialState[key] || 0;\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\nvar useVisualState = makeUseVisualState({\n  scrapeMotionValuesFromProps: createObject,\n  createRenderState: createObject\n});\nfunction useAnimatedState(initialState) {\n  const [animationState, setAnimationState] = useState8(initialState);\n  const visualState = useVisualState({}, false);\n  const element = useConstant(() => {\n    return new StateVisualElement({\n      props: {\n        onUpdate: (v) => {\n          setAnimationState({ ...v });\n        }\n      },\n      visualState,\n      presenceContext: null\n    }, { initialState });\n  });\n  useLayoutEffect2(() => {\n    element.mount({});\n    return () => element.unmount();\n  }, [element]);\n  const startAnimation = useConstant(() => (animationDefinition) => {\n    return animateVisualElement(element, animationDefinition);\n  });\n  return [animationState, startAnimation];\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimateSharedLayout.mjs\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nimport * as React3 from \"react\";\nvar id3 = 0;\nvar AnimateSharedLayout = ({ children }) => {\n  React3.useEffect(() => {\n    invariant(false, \"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations\");\n  }, []);\n  return jsx9(LayoutGroup, { id: useConstant(() => `asl-${id3++}`), children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs\nimport { useContext as useContext16 } from \"react\";\nvar maxScale = 1e5;\nvar invertScale = (scale2) => scale2 > 1e-3 ? 1 / scale2 : maxScale;\nvar hasWarned2 = false;\nfunction useInvertedScale(scale2) {\n  let parentScaleX = useMotionValue(1);\n  let parentScaleY = useMotionValue(1);\n  const { visualElement } = useContext16(MotionContext);\n  invariant(!!(scale2 || visualElement), \"If no scale values are provided, useInvertedScale must be used within a child of another motion component.\");\n  warning(hasWarned2, \"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead.\");\n  hasWarned2 = true;\n  if (scale2) {\n    parentScaleX = scale2.scaleX || parentScaleX;\n    parentScaleY = scale2.scaleY || parentScaleY;\n  } else if (visualElement) {\n    parentScaleX = visualElement.getValue(\"scaleX\", 1);\n    parentScaleY = visualElement.getValue(\"scaleY\", 1);\n  }\n  const scaleX2 = useTransform(parentScaleX, invertScale);\n  const scaleY2 = useTransform(parentScaleY, invertScale);\n  return { scaleX: scaleX2, scaleY: scaleY2 };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/namespace.mjs\nvar namespace_exports = {};\n__export(namespace_exports, {\n  Group: () => ReorderGroup,\n  Item: () => ReorderItem\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef2, useRef as useRef11, useEffect as useEffect14 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/ReorderContext.mjs\nimport { createContext as createContext8 } from \"react\";\nvar ReorderContext = createContext8(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs\nfunction checkReorder(order, value, offset, velocity) {\n  if (!velocity)\n    return order;\n  const index = order.findIndex((item2) => item2.value === value);\n  if (index === -1)\n    return order;\n  const nextOffset = velocity > 0 ? 1 : -1;\n  const nextItem = order[index + nextOffset];\n  if (!nextItem)\n    return order;\n  const item = order[index];\n  const nextLayout = nextItem.layout;\n  const nextItemCenter = mixNumber(nextLayout.min, nextLayout.max, 0.5);\n  if (nextOffset === 1 && item.layout.max + offset > nextItemCenter || nextOffset === -1 && item.layout.min + offset < nextItemCenter) {\n    return moveItem(order, index, index + nextOffset);\n  }\n  return order;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nfunction ReorderGroupComponent({ children, as = \"ul\", axis = \"y\", onReorder, values, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const order = [];\n  const isReordering = useRef11(false);\n  invariant(Boolean(values), \"Reorder.Group must be provided a values prop\");\n  const context = {\n    axis,\n    registerItem: (value, layout2) => {\n      const idx = order.findIndex((entry) => value === entry.value);\n      if (idx !== -1) {\n        order[idx].layout = layout2[axis];\n      } else {\n        order.push({ value, layout: layout2[axis] });\n      }\n      order.sort(compareMin);\n    },\n    updateOrder: (item, offset, velocity) => {\n      if (isReordering.current)\n        return;\n      const newOrder = checkReorder(order, item, offset, velocity);\n      if (order !== newOrder) {\n        isReordering.current = true;\n        onReorder(newOrder.map(getValue).filter((value) => values.indexOf(value) !== -1));\n      }\n    }\n  };\n  useEffect14(() => {\n    isReordering.current = false;\n  });\n  return jsx10(Component3, { ...props, ref: externalRef, ignoreStrict: true, children: jsx10(ReorderContext.Provider, { value: context, children }) });\n}\nvar ReorderGroup = /* @__PURE__ */ forwardRef2(ReorderGroupComponent);\nfunction getValue(item) {\n  return item.value;\n}\nfunction compareMin(a, b) {\n  return a.layout.min - b.layout.min;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Item.mjs\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef3, useContext as useContext17 } from \"react\";\nfunction useDefaultMotionValue(value, defaultValue = 0) {\n  return isMotionValue(value) ? value : useMotionValue(defaultValue);\n}\nfunction ReorderItemComponent({ children, style: style2 = {}, value, as = \"li\", onDrag, layout: layout2 = true, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const context = useContext17(ReorderContext);\n  const point2 = {\n    x: useDefaultMotionValue(style2.x),\n    y: useDefaultMotionValue(style2.y)\n  };\n  const zIndex = useTransform([point2.x, point2.y], ([latestX, latestY]) => latestX || latestY ? 1 : \"unset\");\n  invariant(Boolean(context), \"Reorder.Item must be a child of Reorder.Group\");\n  const { axis, registerItem, updateOrder } = context;\n  return jsx11(Component3, { drag: axis, ...props, dragSnapToOrigin: true, style: { ...style2, x: point2.x, y: point2.y, zIndex }, layout: layout2, onDrag: (event, gesturePoint) => {\n    const { velocity } = gesturePoint;\n    velocity[axis] && updateOrder(value, point2[axis].get(), velocity[axis]);\n    onDrag && onDrag(event, gesturePoint);\n  }, onLayoutMeasure: (measured) => registerItem(value, measured), ref: externalRef, ignoreStrict: true, children });\n}\nvar ReorderItem = /* @__PURE__ */ forwardRef3(ReorderItemComponent);\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/stagger.mjs\nfunction getOriginIndex(from, total) {\n  if (from === \"first\") {\n    return 0;\n  } else {\n    const lastIndex = total - 1;\n    return from === \"last\" ? lastIndex : lastIndex / 2;\n  }\n}\nfunction stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {\n  return (i, total) => {\n    const fromIndex = typeof from === \"number\" ? from : getOriginIndex(from, total);\n    const distance2 = Math.abs(fromIndex - i);\n    let delay2 = duration * distance2;\n    if (ease2) {\n      const maxDelay = total * duration;\n      const easingFunction = easingDefinitionToFunction(ease2);\n      delay2 = easingFunction(delay2 / maxDelay) * maxDelay;\n    }\n    return startDelay + delay2;\n  };\n}\n\nexport {\n  LayoutGroupContext,\n  isBrowser,\n  useIsomorphicLayoutEffect,\n  PresenceContext,\n  addUniqueItem,\n  removeItem,\n  moveItem,\n  clamp,\n  warning,\n  invariant,\n  MotionGlobalConfig,\n  isNumericalString,\n  isObject,\n  isZeroValueString,\n  memo,\n  noop,\n  pipe,\n  progress,\n  SubscriptionManager,\n  secondsToMilliseconds,\n  millisecondsToSeconds,\n  velocityPerSecond,\n  hasWarned,\n  warnOnce,\n  wrap,\n  cubicBezier,\n  mirrorEasing,\n  reverseEasing,\n  backOut,\n  backIn,\n  backInOut,\n  anticipate,\n  circIn,\n  circOut,\n  circInOut,\n  easeIn,\n  easeOut,\n  easeInOut,\n  steps,\n  isEasingArray,\n  getEasingForSegment,\n  isBezierDefinition,\n  easingDefinitionToFunction,\n  statsBuffer,\n  createRenderBatcher,\n  frame,\n  cancelFrame,\n  frameData,\n  frameSteps,\n  time,\n  activeAnimations,\n  isCSSVariableName,\n  isCSSVariableToken,\n  number,\n  alpha,\n  scale,\n  rgbUnit,\n  rgba,\n  hex,\n  degrees,\n  percent,\n  px,\n  vh,\n  vw,\n  progressPercentage,\n  hsla,\n  color,\n  analyseComplexValue,\n  complex,\n  hslaToRgba,\n  mixImmediate,\n  mixNumber,\n  mixLinearColor,\n  mixColor,\n  invisibleValues,\n  mixVisibility,\n  getMixer,\n  mixArray,\n  mixObject,\n  mixComplex,\n  mix,\n  generateLinearEasing,\n  maxGeneratorDuration,\n  calcGeneratorDuration,\n  createGeneratorEasing,\n  spring,\n  inertia,\n  interpolate,\n  fillOffset,\n  defaultOffset,\n  convertOffsetToTimes,\n  defaultEasing,\n  keyframes,\n  JSAnimation,\n  animateValue,\n  fillWildcards,\n  defaultTransformValue,\n  parseValueFromTransform,\n  readTransformValue,\n  transformPropOrder,\n  transformProps,\n  flushKeyframeResolvers,\n  KeyframeResolver,\n  setStyle,\n  supportsScrollTimeline,\n  supportsFlags,\n  supportsLinearEasing,\n  cubicBezierAsString,\n  supportedWaapiEasing,\n  mapEasingToNativeEasing,\n  startWaapiAnimation,\n  isGenerator,\n  NativeAnimation,\n  NativeAnimationExtended,\n  isHTMLElement,\n  supportsBrowserAnimation,\n  AsyncMotionValueAnimation,\n  GroupAnimation,\n  GroupAnimationWithThen,\n  NativeAnimationWrapper,\n  animationMapKey,\n  getAnimationMap,\n  parseCSSVariable,\n  getVariableValue,\n  getValueTransition,\n  positionalKeys,\n  testValueType,\n  dimensionValueTypes,\n  findDimensionValueType,\n  transformValueTypes,\n  numberValueTypes,\n  defaultValueTypes,\n  getDefaultValueType,\n  getAnimatableNone2 as getAnimatableNone,\n  DOMKeyframesResolver,\n  applyPxDefaults,\n  isWaapiSupportedEasing,\n  supportsPartialKeyframes,\n  acceleratedValues2 as acceleratedValues,\n  resolveElements,\n  getValueAsType,\n  addAttrValue,\n  attrEffect,\n  propEffect,\n  collectMotionValues,\n  MotionValue,\n  motionValue,\n  addStyleValue,\n  styleEffect,\n  svgEffect,\n  microtask,\n  cancelMicrotask,\n  isDragging,\n  isDragActive,\n  setDragLock,\n  hover,\n  isNodeOrChild,\n  isPrimaryPointer,\n  press,\n  getComputedStyle2 as getComputedStyle,\n  isSVGElement,\n  resize,\n  observeTimeline,\n  recordStats,\n  isSVGSVGElement,\n  transform,\n  transformValue,\n  mapValue,\n  isMotionValue,\n  springValue,\n  attachSpring,\n  findValueType,\n  ViewTransitionBuilder,\n  animateView,\n  sync,\n  cancelSync,\n  MotionConfigContext,\n  usePresence,\n  useIsPresent,\n  AnimatePresence,\n  DeprecatedLayoutGroupContext,\n  useForceUpdate,\n  LayoutGroup,\n  LazyMotion,\n  isValidMotionProp,\n  filterProps,\n  MotionConfig,\n  MotionContext,\n  optimizedAppearDataAttribute,\n  SwitchLayoutGroupContext,\n  createRendererMotionComponent,\n  addScaleCorrector,\n  buildTransform2 as buildTransform,\n  resolveMotionValue,\n  makeUseVisualState,\n  m,\n  animateVisualElement,\n  animations,\n  addPointerInfo,\n  addPointerEvent,\n  calcLength,\n  createBox,\n  distance,\n  distance2D,\n  FlatTree,\n  delay,\n  visualElementStore,\n  VisualElement,\n  motion,\n  useUnmountEffect,\n  domAnimation,\n  domMax,\n  domMin,\n  useMotionValueEvent,\n  scrollInfo,\n  scroll,\n  useScroll,\n  useElementScroll,\n  useViewportScroll,\n  useMotionValue,\n  useMotionTemplate,\n  useTransform,\n  useSpring,\n  useAnimationFrame,\n  useTime,\n  useVelocity,\n  WillChangeMotionValue,\n  useWillChange,\n  useReducedMotion,\n  useReducedMotionConfig,\n  animationControls,\n  createScopedAnimate,\n  animate,\n  useAnimate,\n  animateMini,\n  useAnimateMini,\n  useAnimationControls,\n  useAnimation,\n  usePresenceData,\n  useDomEvent,\n  DragControls,\n  useDragControls,\n  isMotionComponent,\n  unwrapMotionComponent,\n  useInstantLayoutTransition,\n  useResetProjection,\n  useCycle,\n  inView,\n  useInView,\n  useInstantTransition,\n  disableInstantTransitions,\n  startOptimizedAppearAnimation,\n  useAnimatedState,\n  AnimateSharedLayout,\n  useInvertedScale,\n  namespace_exports,\n  stagger\n};\n//# sourceMappingURL=chunk-BLFSVU7M.mjs.map\n", "import*as a from\"react\";import*as i from\"scheduler\";var u=\"default\"in a?a.default:a;var o=\"default\"in i?i.default:i;var s={};var w=u,x=o;function p(a){for(var i=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,u=1;u<arguments.length;u++)i+=\"&args[]=\"+encodeURIComponent(arguments[u]);return\"Minified React error #\"+a+\"; visit \"+i+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var C=new Set,z={};function fa(a,i){ha(a,i);ha(a+\"Capture\",i)}function ha(a,i){z[a]=i;for(a=0;a<i.length;a++)C.add(i[a])}var N=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),_=Object.prototype.hasOwnProperty,j=/^[: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]*$/,P={},T={};function oa(a){if(_.call(T,a))return!0;if(_.call(P,a))return!1;if(j.test(a))return T[a]=!0;P[a]=!0;return!1}function pa(a,i,u,o){if(null!==u&&0===u.type)return!1;switch(typeof i){case\"function\":case\"symbol\":return!0;case\"boolean\":if(o)return!1;if(null!==u)return!u.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}function qa(a,i,u,o){if(null===i||\"undefined\"===typeof i||pa(a,i,u,o))return!0;if(o)return!1;if(null!==u)switch(u.type){case 3:return!i;case 4:return!1===i;case 5:return isNaN(i);case 6:return isNaN(i)||1>i}return!1}function v(a,i,u,o,s,w,x){this.acceptsBooleans=2===i||3===i||4===i;this.attributeName=o;this.attributeNamespace=s;this.mustUseProperty=u;this.propertyName=a;this.type=i;this.sanitizeURL=w;this.removeEmptyString=x}var M={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(a){M[a]=new v(a,0,!1,a,null,!1,!1)}));[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(a){var i=a[0];M[i]=new v(i,1,!1,a[1],null,!1,!1)}));[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(a){M[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)}));[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(a){M[a]=new v(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){M[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)}));[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(a){M[a]=new v(a,3,!0,a,null,!1,!1)}));[\"capture\",\"download\"].forEach((function(a){M[a]=new v(a,4,!1,a,null,!1,!1)}));[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(a){M[a]=new v(a,6,!1,a,null,!1,!1)}));[\"rowSpan\",\"start\"].forEach((function(a){M[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)}));var F=/[\\-:]([a-z])/g;function sa(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 i=a.replace(F,sa);M[i]=new v(i,1,!1,a,null,!1,!1)}));\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)}));[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)}));[\"tabIndex\",\"crossOrigin\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)}));M.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)}));function ta(a,i,u,o){var s=M.hasOwnProperty(i)?M[i]:null;(null!==s?0!==s.type:o||!(2<i.length)||\"o\"!==i[0]&&\"O\"!==i[0]||\"n\"!==i[1]&&\"N\"!==i[1])&&(qa(i,u,s,o)&&(u=null),o||null===s?oa(i)&&(null===u?a.removeAttribute(i):a.setAttribute(i,\"\"+u)):s.mustUseProperty?a[s.propertyName]=null===u?3!==s.type&&\"\":u:(i=s.attributeName,o=s.attributeNamespace,null===u?a.removeAttribute(i):(s=s.type,u=3===s||4===s&&!0===u?\"\":\"\"+u,o?a.setAttributeNS(o,i,u):a.setAttribute(i,u))))}var R=w.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,O=Symbol.for(\"react.element\"),I=Symbol.for(\"react.portal\"),U=Symbol.for(\"react.fragment\"),V=Symbol.for(\"react.strict_mode\"),A=Symbol.for(\"react.profiler\"),B=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),$=Symbol.for(\"react.forward_ref\"),K=Symbol.for(\"react.suspense\"),Y=Symbol.for(\"react.suspense_list\"),Z=Symbol.for(\"react.memo\"),X=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");var ee=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var le=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=le&&a[le]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var ae,ie=Object.assign;function Ma(a){if(void 0===ae)try{throw Error()}catch(a){var i=a.stack.trim().match(/\\n( *(at )?)/);ae=i&&i[1]||\"\"}return\"\\n\"+ae+a}var ce=!1;function Oa(a,i){if(!a||ce)return\"\";ce=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(i,[])}catch(a){var o=a}Reflect.construct(a,[],i)}else{try{i.call()}catch(a){o=a}a.call(i.prototype)}else{try{throw Error()}catch(a){o=a}a()}}catch(i){if(i&&o&&\"string\"===typeof i.stack){for(var s=i.stack.split(\"\\n\"),w=o.stack.split(\"\\n\"),x=s.length-1,C=w.length-1;1<=x&&0<=C&&s[x]!==w[C];)C--;for(;1<=x&&0<=C;x--,C--)if(s[x]!==w[C]){if(1!==x||1!==C)do{if(x--,C--,0>C||s[x]!==w[C]){var z=\"\\n\"+s[x].replace(\" at new \",\" at \");a.displayName&&z.includes(\"<anonymous>\")&&(z=z.replace(\"<anonymous>\",a.displayName));return z}}while(1<=x&&0<=C);break}}}finally{ce=!1,Error.prepareStackTrace=u}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}function Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}function Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case U:return\"Fragment\";case I:return\"Portal\";case A:return\"Profiler\";case V:return\"StrictMode\";case K:return\"Suspense\";case Y:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case H:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case $:var i=a.render;a=a.displayName;a||(a=i.displayName||i.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Z:return i=a.displayName||null,null!==i?i:Qa(a.type)||\"Memo\";case X:i=a._payload;a=a._init;try{return Qa(a(i))}catch(a){}}return null}function Ra(a){var i=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(i.displayName||\"Context\")+\".Consumer\";case 10:return(i._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=i.render,a=a.displayName||a.name||\"\",i.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return i;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(i);case 8:return i===V?\"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(\"function\"===typeof i)return i.displayName||i.name||null;if(\"string\"===typeof i)return i}return null}function Sa(a){switch(typeof a){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return a;case\"object\":return a;default:return\"\"}}function Ta(a){var i=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===i||\"radio\"===i)}function Ua(a){var i=Ta(a)?\"checked\":\"value\",u=Object.getOwnPropertyDescriptor(a.constructor.prototype,i),o=\"\"+a[i];if(!a.hasOwnProperty(i)&&\"undefined\"!==typeof u&&\"function\"===typeof u.get&&\"function\"===typeof u.set){var s=u.get,w=u.set;Object.defineProperty(a,i,{configurable:!0,get:function(){return s.call(this)},set:function(a){o=\"\"+a;w.call(this,a)}});Object.defineProperty(a,i,{enumerable:u.enumerable});return{getValue:function(){return o},setValue:function(a){o=\"\"+a},stopTracking:function(){a._valueTracker=null;delete a[i]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var i=a._valueTracker;if(!i)return!0;var u=i.getValue();var o=\"\";a&&(o=Ta(a)?a.checked?\"true\":\"false\":a.value);a=o;return a!==u&&(i.setValue(a),!0)}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(i){return a.body}}function Ya(a,i){var u=i.checked;return ie({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=u?u:a._wrapperState.initialChecked})}function Za(a,i){var u=null==i.defaultValue?\"\":i.defaultValue,o=null!=i.checked?i.checked:i.defaultChecked;u=Sa(null!=i.value?i.value:u);a._wrapperState={initialChecked:o,initialValue:u,controlled:\"checkbox\"===i.type||\"radio\"===i.type?null!=i.checked:null!=i.value}}function ab(a,i){i=i.checked;null!=i&&ta(a,\"checked\",i,!1)}function bb(a,i){ab(a,i);var u=Sa(i.value),o=i.type;if(null!=u)\"number\"===o?(0===u&&\"\"===a.value||a.value!=u)&&(a.value=\"\"+u):a.value!==\"\"+u&&(a.value=\"\"+u);else if(\"submit\"===o||\"reset\"===o){a.removeAttribute(\"value\");return}i.hasOwnProperty(\"value\")?cb(a,i.type,u):i.hasOwnProperty(\"defaultValue\")&&cb(a,i.type,Sa(i.defaultValue));null==i.checked&&null!=i.defaultChecked&&(a.defaultChecked=!!i.defaultChecked)}function db(a,i,u){if(i.hasOwnProperty(\"value\")||i.hasOwnProperty(\"defaultValue\")){var o=i.type;if(!(\"submit\"!==o&&\"reset\"!==o||void 0!==i.value&&null!==i.value))return;i=\"\"+a._wrapperState.initialValue;u||i===a.value||(a.value=i);a.defaultValue=i}u=a.name;\"\"!==u&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==u&&(a.name=u)}function cb(a,i,u){\"number\"===i&&Xa(a.ownerDocument)===a||(null==u?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+u&&(a.defaultValue=\"\"+u))}var fe=Array.isArray;function fb(a,i,u,o){a=a.options;if(i){i={};for(var s=0;s<u.length;s++)i[\"$\"+u[s]]=!0;for(u=0;u<a.length;u++)s=i.hasOwnProperty(\"$\"+a[u].value),a[u].selected!==s&&(a[u].selected=s),s&&o&&(a[u].defaultSelected=!0)}else{u=\"\"+Sa(u);i=null;for(s=0;s<a.length;s++){if(a[s].value===u){a[s].selected=!0;o&&(a[s].defaultSelected=!0);return}null!==i||a[s].disabled||(i=a[s])}null!==i&&(i.selected=!0)}}function gb(a,i){if(null!=i.dangerouslySetInnerHTML)throw Error(p(91));return ie({},i,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,i){var u=i.value;if(null==u){u=i.children;i=i.defaultValue;if(null!=u){if(null!=i)throw Error(p(92));if(fe(u)){if(1<u.length)throw Error(p(93));u=u[0]}i=u}null==i&&(i=\"\");u=i}a._wrapperState={initialValue:Sa(u)}}function ib(a,i){var u=Sa(i.value),o=Sa(i.defaultValue);null!=u&&(u=\"\"+u,u!==a.value&&(a.value=u),null==i.defaultValue&&a.defaultValue!==u&&(a.defaultValue=u));null!=o&&(a.defaultValue=\"\"+o)}function jb(a){var i=a.textContent;i===a._wrapperState.initialValue&&\"\"!==i&&null!==i&&(a.value=i)}function kb(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 lb(a,i){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(i):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===i?\"http://www.w3.org/1999/xhtml\":a}var de,pe=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(i,u,o,s){MSApp.execUnsafeLocalFunction((function(){return a(i,u,o,s)}))}:a}((function(a,i){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=i;else{de=de||document.createElement(\"div\");de.innerHTML=\"<svg>\"+i.valueOf().toString()+\"</svg>\";for(i=de.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;i.firstChild;)a.appendChild(i.firstChild)}}));function ob(a,i){if(i){var u=a.firstChild;if(u&&u===a.lastChild&&3===u.nodeType){u.nodeValue=i;return}}a.textContent=i}var be={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},ye=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(be).forEach((function(a){ye.forEach((function(i){i=i+a.charAt(0).toUpperCase()+a.substring(1);be[i]=be[a]}))}));function rb(a,i,u){return null==i||\"boolean\"===typeof i||\"\"===i?\"\":u||\"number\"!==typeof i||0===i||be.hasOwnProperty(a)&&be[a]?(\"\"+i).trim():i+\"px\"}function sb(a,i){a=a.style;for(var u in i)if(i.hasOwnProperty(u)){var o=0===u.indexOf(\"--\"),s=rb(u,i[u],o);\"float\"===u&&(u=\"cssFloat\");o?a.setProperty(u,s):a[u]=s}}var we=ie({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 ub(a,i){if(i){if(we[a]&&(null!=i.children||null!=i.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=i.dangerouslySetInnerHTML){if(null!=i.children)throw Error(p(60));if(\"object\"!==typeof i.dangerouslySetInnerHTML||!(\"__html\"in i.dangerouslySetInnerHTML))throw Error(p(61))}if(null!=i.style&&\"object\"!==typeof i.style)throw Error(p(62))}}function vb(a,i){if(-1===a.indexOf(\"-\"))return\"string\"===typeof i.is;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 Se=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xe=null,ze=null,_e=null;function Bb(a){if(a=Cb(a)){if(\"function\"!==typeof xe)throw Error(p(280));var i=a.stateNode;i&&(i=Db(i),xe(a.stateNode,a.type,i))}}function Eb(a){ze?_e?_e.push(a):_e=[a]:ze=a}function Fb(){if(ze){var a=ze,i=_e;_e=ze=null;Bb(a);if(i)for(a=0;a<i.length;a++)Bb(i[a])}}function Gb(a,i){return a(i)}function Hb(){}var Pe=!1;function Jb(a,i,u){if(Pe)return a(i,u);Pe=!0;try{return Gb(a,i,u)}finally{(Pe=!1,null!==ze||null!==_e)&&(Hb(),Fb())}}function Kb(a,i){var u=a.stateNode;if(null===u)return null;var o=Db(u);if(null===o)return null;u=o[i];e:switch(i){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(o=!o.disabled)||(a=a.type,o=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!o;break e;default:a=!1}if(a)return null;if(u&&\"function\"!==typeof u)throw Error(p(231,i,typeof u));return u}var Te=!1;if(N)try{var Re={};Object.defineProperty(Re,\"passive\",{get:function(){Te=!0}});window.addEventListener(\"test\",Re,Re);window.removeEventListener(\"test\",Re,Re)}catch(a){Te=!1}function Nb(a,i,u,o,s,w,x,C,z){var N=Array.prototype.slice.call(arguments,3);try{i.apply(u,N)}catch(a){this.onError(a)}}var We=!1,Qe=null,He=!1,$e=null,Ye={onError:function(a){We=!0;Qe=a}};function Tb(a,i,u,o,s,w,x,C,z){We=!1;Qe=null;Nb.apply(Ye,arguments)}function Ub(a,i,u,o,s,w,x,C,z){Tb.apply(this,arguments);if(We){if(!We)throw Error(p(198));var N=Qe;We=!1;Qe=null;He||(He=!0,$e=N)}}function Vb(a){var i=a,u=a;if(a.alternate)for(;i.return;)i=i.return;else{a=i;do{i=a,0!==(4098&i.flags)&&(u=i.return),a=i.return}while(a)}return 3===i.tag?u:null}function Wb(a){if(13===a.tag){var i=a.memoizedState;null===i&&(a=a.alternate,null!==a&&(i=a.memoizedState));if(null!==i)return i.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188))}function Yb(a){var i=a.alternate;if(!i){i=Vb(a);if(null===i)throw Error(p(188));return i!==a?null:a}for(var u=a,o=i;;){var s=u.return;if(null===s)break;var w=s.alternate;if(null===w){o=s.return;if(null!==o){u=o;continue}break}if(s.child===w.child){for(w=s.child;w;){if(w===u)return Xb(s),a;if(w===o)return Xb(s),i;w=w.sibling}throw Error(p(188))}if(u.return!==o.return)u=s,o=w;else{for(var x=!1,C=s.child;C;){if(C===u){x=!0;u=s;o=w;break}if(C===o){x=!0;o=s;u=w;break}C=C.sibling}if(!x){for(C=w.child;C;){if(C===u){x=!0;u=w;o=s;break}if(C===o){x=!0;o=w;u=s;break}C=C.sibling}if(!x)throw Error(p(189))}}if(u.alternate!==o)throw Error(p(190))}if(3!==u.tag)throw Error(p(188));return u.stateNode.current===u?a:i}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var i=$b(a);if(null!==i)return i;a=a.sibling}return null}var qe=x.unstable_scheduleCallback,Xe=x.unstable_cancelCallback,en=x.unstable_shouldYield,nn=x.unstable_requestPaint,tn=x.unstable_now,rn=x.unstable_getCurrentPriorityLevel,ln=x.unstable_ImmediatePriority,an=x.unstable_UserBlockingPriority,un=x.unstable_NormalPriority,on=x.unstable_LowPriority,sn=x.unstable_IdlePriority,cn=null,fn=null;function mc(a){if(fn&&\"function\"===typeof fn.onCommitFiberRoot)try{fn.onCommitFiberRoot(cn,a,void 0,128===(128&a.current.flags))}catch(a){}}var dn=Math.clz32?Math.clz32:nc,pn=Math.log,hn=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pn(a)/hn|0)|0}var gn=64,mn=4194304;function tc(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 4194240&a;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&a;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return a}}function uc(a,i){var u=a.pendingLanes;if(0===u)return 0;var o=0,s=a.suspendedLanes,w=a.pingedLanes,x=268435455&u;if(0!==x){var C=x&~s;0!==C?o=tc(C):(w&=x,0!==w&&(o=tc(w)))}else x=u&~s,0!==x?o=tc(x):0!==w&&(o=tc(w));if(0===o)return 0;if(0!==i&&i!==o&&0===(i&s)&&(s=o&-o,w=i&-i,s>=w||16===s&&0!==(4194240&w)))return i;0!==(4&o)&&(o|=16&u);i=a.entangledLanes;if(0!==i)for(a=a.entanglements,i&=o;0<i;)u=31-dn(i),s=1<<u,o|=a[u],i&=~s;return o}function vc(a,i){switch(a){case 1:case 2:case 4:return i+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 i+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 wc(a,i){for(var u=a.suspendedLanes,o=a.pingedLanes,s=a.expirationTimes,w=a.pendingLanes;0<w;){var x=31-dn(w),C=1<<x,z=s[x];-1===z?0!==(C&u)&&0===(C&o)||(s[x]=vc(C,i)):z<=i&&(a.expiredLanes|=C);w&=~C}}function xc(a){a=-1073741825&a.pendingLanes;return 0!==a?a:1073741824&a?1073741824:0}function yc(){var a=gn;gn<<=1;0===(4194240&gn)&&(gn=64);return a}function zc(a){for(var i=[],u=0;31>u;u++)i.push(a);return i}function Ac(a,i,u){a.pendingLanes|=i;536870912!==i&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;i=31-dn(i);a[i]=u}function Bc(a,i){var u=a.pendingLanes&~i;a.pendingLanes=i;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=i;a.mutableReadLanes&=i;a.entangledLanes&=i;i=a.entanglements;var o=a.eventTimes;for(a=a.expirationTimes;0<u;){var s=31-dn(u),w=1<<s;i[s]=0;o[s]=-1;a[s]=-1;u&=~w}}function Cc(a,i){var u=a.entangledLanes|=i;for(a=a.entanglements;u;){var o=31-dn(u),s=1<<o;s&i|a[o]&i&&(a[o]|=i);u&=~s}}var vn=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(268435455&a)?16:536870912:4:1}var bn,yn,kn,wn,Sn,En=!1,xn=[],Cn=null,zn=null,Nn=null,Ln=new Map,_n=new Map,jn=[],Pn=\"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 Sc(a,i){switch(a){case\"focusin\":case\"focusout\":Cn=null;break;case\"dragenter\":case\"dragleave\":zn=null;break;case\"mouseover\":case\"mouseout\":Nn=null;break;case\"pointerover\":case\"pointerout\":Ln.delete(i.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":_n.delete(i.pointerId)}}function Tc(a,i,u,o,s,w){if(null===a||a.nativeEvent!==w)return a={blockedOn:i,domEventName:u,eventSystemFlags:o,nativeEvent:w,targetContainers:[s]},null!==i&&(i=Cb(i),null!==i&&yn(i)),a;a.eventSystemFlags|=o;i=a.targetContainers;null!==s&&-1===i.indexOf(s)&&i.push(s);return a}function Uc(a,i,u,o,s){switch(i){case\"focusin\":return Cn=Tc(Cn,a,i,u,o,s),!0;case\"dragenter\":return zn=Tc(zn,a,i,u,o,s),!0;case\"mouseover\":return Nn=Tc(Nn,a,i,u,o,s),!0;case\"pointerover\":var w=s.pointerId;Ln.set(w,Tc(Ln.get(w)||null,a,i,u,o,s));return!0;case\"gotpointercapture\":return w=s.pointerId,_n.set(w,Tc(_n.get(w)||null,a,i,u,o,s)),!0}return!1}function Vc(a){var i=Wc(a.target);if(null!==i){var u=Vb(i);if(null!==u)if(i=u.tag,13===i){if(i=Wb(u),null!==i){a.blockedOn=i;Sn(a.priority,(function(){kn(u)}));return}}else if(3===i&&u.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===u.tag?u.stateNode.containerInfo:null;return}}a.blockedOn=null}function Xc(a){if(null!==a.blockedOn)return!1;for(var i=a.targetContainers;0<i.length;){var u=Yc(a.domEventName,a.eventSystemFlags,i[0],a.nativeEvent);if(null!==u)return i=Cb(u),null!==i&&yn(i),a.blockedOn=u,!1;u=a.nativeEvent;var o=new u.constructor(u.type,u);Se=o;u.target.dispatchEvent(o);Se=null;i.shift()}return!0}function Zc(a,i,u){Xc(a)&&u.delete(i)}function $c(){En=!1;null!==Cn&&Xc(Cn)&&(Cn=null);null!==zn&&Xc(zn)&&(zn=null);null!==Nn&&Xc(Nn)&&(Nn=null);Ln.forEach(Zc);_n.forEach(Zc)}function ad(a,i){a.blockedOn===i&&(a.blockedOn=null,En||(En=!0,x.unstable_scheduleCallback(x.unstable_NormalPriority,$c)))}function bd(a){function b(i){return ad(i,a)}if(0<xn.length){ad(xn[0],a);for(var i=1;i<xn.length;i++){var u=xn[i];u.blockedOn===a&&(u.blockedOn=null)}}null!==Cn&&ad(Cn,a);null!==zn&&ad(zn,a);null!==Nn&&ad(Nn,a);Ln.forEach(b);_n.forEach(b);for(i=0;i<jn.length;i++)u=jn[i],u.blockedOn===a&&(u.blockedOn=null);for(;0<jn.length&&(i=jn[0],null===i.blockedOn);)Vc(i),null===i.blockedOn&&jn.shift()}var Tn=R.ReactCurrentBatchConfig,Dn=!0;function ed(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=1,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function gd(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=4,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function fd(a,i,u,o){if(Dn){var s=Yc(a,i,u,o);if(null===s)hd(a,i,o,Mn,u),Sc(a,o);else if(Uc(s,a,i,u,o))o.stopPropagation();else if(Sc(a,o),4&i&&-1<Pn.indexOf(a)){for(;null!==s;){var w=Cb(s);null!==w&&bn(w);w=Yc(a,i,u,o);null===w&&hd(a,i,o,Mn,u);if(w===s)break;s=w}null!==s&&o.stopPropagation()}else hd(a,i,o,null,u)}}var Mn=null;function Yc(a,i,u,o){Mn=null;a=xb(o);a=Wc(a);if(null!==a)if(i=Vb(a),null===i)a=null;else if(u=i.tag,13===u){a=Wb(i);if(null!==a)return a;a=null}else if(3===u){if(i.stateNode.current.memoizedState.isDehydrated)return 3===i.tag?i.stateNode.containerInfo:null;a=null}else i!==a&&(a=null);Mn=a;return null}function jd(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(rn()){case ln:return 1;case an:return 4;case un:case on:return 16;case sn:return 536870912;default:return 16}default:return 16}}var Fn=null,Rn=null,On=null;function nd(){if(On)return On;var a,i,u=Rn,o=u.length,s=\"value\"in Fn?Fn.value:Fn.textContent,w=s.length;for(a=0;a<o&&u[a]===s[a];a++);var x=o-a;for(i=1;i<=x&&u[o-i]===s[w-i];i++);return On=s.slice(a,1<i?1-i:void 0)}function od(a){var i=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===i&&(a=13)):a=i;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}function rd(a){function b(i,u,o,s,w){this._reactName=i;this._targetInst=o;this.type=u;this.nativeEvent=s;this.target=w;this.currentTarget=null;for(var x in a)a.hasOwnProperty(x)&&(i=a[x],this[x]=i?i(s):s[x]);this.isDefaultPrevented=(null!=s.defaultPrevented?s.defaultPrevented:!1===s.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}ie(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}var In,Un,Vn,Wn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qn=rd(Wn),An=ie({},Wn,{view:0,detail:0}),Bn=rd(An),Hn=ie({},An,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in a)return a.movementX;a!==Vn&&(Vn&&\"mousemove\"===a.type?(In=a.screenX-Vn.screenX,Un=a.screenY-Vn.screenY):Un=In=0,Vn=a);return In},movementY:function(a){return\"movementY\"in a?a.movementY:Un}}),$n=rd(Hn),Kn=ie({},Hn,{dataTransfer:0}),Yn=rd(Kn),Zn=ie({},An,{relatedTarget:0}),Gn=rd(Zn),qn=ie({},Wn,{animationName:0,elapsedTime:0,pseudoElement:0}),Xn=rd(qn),Jn=ie({},Wn,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),et=rd(Jn),nt=ie({},Wn,{data:0}),tt=rd(nt),rt={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},lt={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\"},at={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var i=this.nativeEvent;return i.getModifierState?i.getModifierState(a):!!(a=at[a])&&!!i[a]}function zd(){return Pd}var it=ie({},An,{key:function(a){if(a.key){var i=rt[a.key]||a.key;if(\"Unidentified\"!==i)return i}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?lt[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),ut=rd(it),ot=ie({},Hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),st=rd(ot),ct=ie({},An,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),ft=rd(ct),dt=ie({},Wn,{propertyName:0,elapsedTime:0,pseudoElement:0}),pt=rd(dt),ht=ie({},Hn,{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}),gt=rd(ht),mt=[9,13,27,32],vt=N&&\"CompositionEvent\"in window,bt=null;N&&\"documentMode\"in document&&(bt=document.documentMode);var yt=N&&\"TextEvent\"in window&&!bt,kt=N&&(!vt||bt&&8<bt&&11>=bt),wt=String.fromCharCode(32),St=!1;function ge(a,i){switch(a){case\"keyup\":return-1!==mt.indexOf(i.keyCode);case\"keydown\":return 229!==i.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Et=!1;function je(a,i){switch(a){case\"compositionend\":return he(i);case\"keypress\":if(32!==i.which)return null;St=!0;return wt;case\"textInput\":return a=i.data,a===wt&&St?null:a;default:return null}}function ke(a,i){if(Et)return\"compositionend\"===a||!vt&&ge(a,i)?(a=nd(),On=Rn=Fn=null,Et=!1,a):null;switch(a){case\"paste\":return null;case\"keypress\":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1<i.char.length)return i.char;if(i.which)return String.fromCharCode(i.which)}return null;case\"compositionend\":return kt&&\"ko\"!==i.locale?null:i.data;default:return null}}var xt={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 me(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===i?!!xt[a.type]:\"textarea\"===i}function ne(a,i,u,o){Eb(o);i=oe(i,\"onChange\");0<i.length&&(u=new Qn(\"onChange\",\"change\",null,u,o),a.push({event:u,listeners:i}))}var Ct=null,zt=null;function re(a){se(a,0)}function te(a){var i=ue(a);if(Wa(i))return a}function ve(a,i){if(\"change\"===a)return i}var Nt=!1;if(N){var Lt;if(N){var _t=\"oninput\"in document;if(!_t){var jt=document.createElement(\"div\");jt.setAttribute(\"oninput\",\"return;\");_t=\"function\"===typeof jt.oninput}Lt=_t}else Lt=!1;Nt=Lt&&(!document.documentMode||9<document.documentMode)}function Ae(){Ct&&(Ct.detachEvent(\"onpropertychange\",Be),zt=Ct=null)}function Be(a){if(\"value\"===a.propertyName&&te(zt)){var i=[];ne(i,zt,a,xb(a));Jb(re,i)}}function Ce(a,i,u){\"focusin\"===a?(Ae(),Ct=i,zt=u,Ct.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(zt)}function Ee(a,i){if(\"click\"===a)return te(i)}function Fe(a,i){if(\"input\"===a||\"change\"===a)return te(i)}function Ge(a,i){return a===i&&(0!==a||1/a===1/i)||a!==a&&i!==i}var Pt=\"function\"===typeof Object.is?Object.is:Ge;function Ie(a,i){if(Pt(a,i))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof i||null===i)return!1;var u=Object.keys(a),o=Object.keys(i);if(u.length!==o.length)return!1;for(o=0;o<u.length;o++){var s=u[o];if(!_.call(i,s)||!Pt(a[s],i[s]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Ke(a,i){var u=Je(a);a=0;for(var o;u;){if(3===u.nodeType){o=a+u.textContent.length;if(a<=i&&o>=i)return{node:u,offset:i-a};a=o}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=Je(u)}}function Le(a,i){return!(!a||!i)&&(a===i||(!a||3!==a.nodeType)&&(i&&3===i.nodeType?Le(a,i.parentNode):\"contains\"in a?a.contains(i):!!a.compareDocumentPosition&&!!(16&a.compareDocumentPosition(i))))}function Me(){for(var a=window,i=Xa();i instanceof a.HTMLIFrameElement;){try{var u=\"string\"===typeof i.contentWindow.location.href}catch(a){u=!1}if(!u)break;a=i.contentWindow;i=Xa(a.document)}return i}function Ne(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(\"input\"===i&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===i||\"true\"===a.contentEditable)}function Oe(a){var i=Me(),u=a.focusedElem,o=a.selectionRange;if(i!==u&&u&&u.ownerDocument&&Le(u.ownerDocument.documentElement,u)){if(null!==o&&Ne(u))if(i=o.start,a=o.end,void 0===a&&(a=i),\"selectionStart\"in u)u.selectionStart=i,u.selectionEnd=Math.min(a,u.value.length);else if(a=(i=u.ownerDocument||document)&&i.defaultView||window,a.getSelection){a=a.getSelection();var s=u.textContent.length,w=Math.min(o.start,s);o=void 0===o.end?w:Math.min(o.end,s);!a.extend&&w>o&&(s=o,o=w,w=s);s=Ke(u,w);var x=Ke(u,o);s&&x&&(1!==a.rangeCount||a.anchorNode!==s.node||a.anchorOffset!==s.offset||a.focusNode!==x.node||a.focusOffset!==x.offset)&&(i=i.createRange(),i.setStart(s.node,s.offset),a.removeAllRanges(),w>o?(a.addRange(i),a.extend(x.node,x.offset)):(i.setEnd(x.node,x.offset),a.addRange(i)))}i=[];for(a=u;a=a.parentNode;)1===a.nodeType&&i.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof u.focus&&u.focus();for(u=0;u<i.length;u++)a=i[u],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}var Tt=N&&\"documentMode\"in document&&11>=document.documentMode,Dt=null,Mt=null,Ft=null,Rt=!1;function Ue(a,i,u){var o=u.window===u?u.document:9===u.nodeType?u:u.ownerDocument;Rt||null==Dt||Dt!==Xa(o)||(o=Dt,\"selectionStart\"in o&&Ne(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Ft&&Ie(Ft,o)||(Ft=o,o=oe(Mt,\"onSelect\"),0<o.length&&(i=new Qn(\"onSelect\",\"select\",null,i,u),a.push({event:i,listeners:o}),i.target=Dt)))}function Ve(a,i){var u={};u[a.toLowerCase()]=i.toLowerCase();u[\"Webkit\"+a]=\"webkit\"+i;u[\"Moz\"+a]=\"moz\"+i;return u}var Ot={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},It={},Ut={};N&&(Ut=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ot.animationend.animation,delete Ot.animationiteration.animation,delete Ot.animationstart.animation),\"TransitionEvent\"in window||delete Ot.transitionend.transition);function Ze(a){if(It[a])return It[a];if(!Ot[a])return a;var i,u=Ot[a];for(i in u)if(u.hasOwnProperty(i)&&i in Ut)return It[a]=u[i];return a}var Vt=Ze(\"animationend\"),Wt=Ze(\"animationiteration\"),Qt=Ze(\"animationstart\"),At=Ze(\"transitionend\"),Bt=new Map,Ht=\"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 ff(a,i){Bt.set(a,i);fa(i,[a])}for(var $t=0;$t<Ht.length;$t++){var Kt=Ht[$t],Yt=Kt.toLowerCase(),Zt=Kt[0].toUpperCase()+Kt.slice(1);ff(Yt,\"on\"+Zt)}ff(Vt,\"onAnimationEnd\");ff(Wt,\"onAnimationIteration\");ff(Qt,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(At,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Gt=\"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(\" \"),qt=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Gt));function nf(a,i,u){var o=a.type||\"unknown-event\";a.currentTarget=u;Ub(o,i,void 0,a);a.currentTarget=null}function se(a,i){i=0!==(4&i);for(var u=0;u<a.length;u++){var o=a[u],s=o.event;o=o.listeners;e:{var w=void 0;if(i)for(var x=o.length-1;0<=x;x--){var C=o[x],z=C.instance,N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}else for(x=0;x<o.length;x++){C=o[x];z=C.instance;N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}}}if(He)throw a=$e,He=!1,$e=null,a}function D(a,i){var u=i[fr];void 0===u&&(u=i[fr]=new Set);var o=a+\"__bubble\";u.has(o)||(pf(i,a,2,!1),u.add(o))}function qf(a,i,u){var o=0;i&&(o|=4);pf(u,a,o,i)}var Xt=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[Xt]){a[Xt]=!0;C.forEach((function(i){\"selectionchange\"!==i&&(qt.has(i)||qf(i,!1,a),qf(i,!0,a))}));var i=9===a.nodeType?a:a.ownerDocument;null===i||i[Xt]||(i[Xt]=!0,qf(\"selectionchange\",!1,i))}}function pf(a,i,u,o){switch(jd(i)){case 1:var s=ed;break;case 4:s=gd;break;default:s=fd}u=s.bind(null,i,u,a);s=void 0;!Te||\"touchstart\"!==i&&\"touchmove\"!==i&&\"wheel\"!==i||(s=!0);o?void 0!==s?a.addEventListener(i,u,{capture:!0,passive:s}):a.addEventListener(i,u,!0):void 0!==s?a.addEventListener(i,u,{passive:s}):a.addEventListener(i,u,!1)}function hd(a,i,u,o,s){var w=o;if(0===(1&i)&&0===(2&i)&&null!==o)e:for(;;){if(null===o)return;var x=o.tag;if(3===x||4===x){var C=o.stateNode.containerInfo;if(C===s||8===C.nodeType&&C.parentNode===s)break;if(4===x)for(x=o.return;null!==x;){var z=x.tag;if((3===z||4===z)&&(z=x.stateNode.containerInfo,z===s||8===z.nodeType&&z.parentNode===s))return;x=x.return}for(;null!==C;){x=Wc(C);if(null===x)return;z=x.tag;if(5===z||6===z){o=w=x;continue e}C=C.parentNode}}o=o.return}Jb((function(){var o=w,s=xb(u),x=[];e:{var C=Bt.get(a);if(void 0!==C){var z=Qn,N=a;switch(a){case\"keypress\":if(0===od(u))break e;case\"keydown\":case\"keyup\":z=ut;break;case\"focusin\":N=\"focus\";z=Gn;break;case\"focusout\":N=\"blur\";z=Gn;break;case\"beforeblur\":case\"afterblur\":z=Gn;break;case\"click\":if(2===u.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":z=$n;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":z=Yn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":z=ft;break;case Vt:case Wt:case Qt:z=Xn;break;case At:z=pt;break;case\"scroll\":z=Bn;break;case\"wheel\":z=gt;break;case\"copy\":case\"cut\":case\"paste\":z=et;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":z=st}var _=0!==(4&i),j=!_&&\"scroll\"===a,P=_?null!==C?C+\"Capture\":null:C;_=[];for(var T,M=o;null!==M;){T=M;var F=T.stateNode;5===T.tag&&null!==F&&(T=F,null!==P&&(F=Kb(M,P),null!=F&&_.push(tf(M,F,T))));if(j)break;M=M.return}0<_.length&&(C=new z(C,N,null,u,s),x.push({event:C,listeners:_}))}}if(0===(7&i)){C=\"mouseover\"===a||\"pointerover\"===a;z=\"mouseout\"===a||\"pointerout\"===a;if((!C||u===Se||!(N=u.relatedTarget||u.fromElement)||!Wc(N)&&!N[cr])&&(z||C)){C=s.window===s?s:(C=s.ownerDocument)?C.defaultView||C.parentWindow:window;z?(N=u.relatedTarget||u.toElement,z=o,N=N?Wc(N):null,null!==N&&(j=Vb(N),N!==j||5!==N.tag&&6!==N.tag))&&(N=null):(z=null,N=o);if(z!==N){_=$n;F=\"onMouseLeave\";P=\"onMouseEnter\";M=\"mouse\";\"pointerout\"!==a&&\"pointerover\"!==a||(_=st,F=\"onPointerLeave\",P=\"onPointerEnter\",M=\"pointer\");j=null==z?C:ue(z);T=null==N?C:ue(N);C=new _(F,M+\"leave\",z,u,s);C.target=j;C.relatedTarget=T;F=null;Wc(s)===o&&(_=new _(P,M+\"enter\",N,u,s),_.target=T,_.relatedTarget=j,F=_);j=F;if(z&&N)e:{_=z;P=N;M=0;for(T=_;T;T=vf(T))M++;T=0;for(F=P;F;F=vf(F))T++;for(;0<M-T;)_=vf(_),M--;for(;0<T-M;)P=vf(P),T--;for(;M--;){if(_===P||null!==P&&_===P.alternate)break e;_=vf(_);P=vf(P)}_=null}else _=null;null!==z&&wf(x,C,z,_,!1);null!==N&&null!==j&&wf(x,j,N,_,!0)}}C=o?ue(o):window;z=C.nodeName&&C.nodeName.toLowerCase();if(\"select\"===z||\"input\"===z&&\"file\"===C.type)var R=ve;else if(me(C))if(Nt)R=Fe;else{R=De;var O=Ce}else(z=C.nodeName)&&\"input\"===z.toLowerCase()&&(\"checkbox\"===C.type||\"radio\"===C.type)&&(R=Ee);if(R&&(R=R(a,o)))ne(x,R,u,s);else{O&&O(a,C,o);\"focusout\"===a&&(O=C._wrapperState)&&O.controlled&&\"number\"===C.type&&cb(C,\"number\",C.value)}O=o?ue(o):window;switch(a){case\"focusin\":(me(O)||\"true\"===O.contentEditable)&&(Dt=O,Mt=o,Ft=null);break;case\"focusout\":Ft=Mt=Dt=null;break;case\"mousedown\":Rt=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":Rt=!1;Ue(x,u,s);break;case\"selectionchange\":if(Tt)break;case\"keydown\":case\"keyup\":Ue(x,u,s)}var I;if(vt)e:{switch(a){case\"compositionstart\":var U=\"onCompositionStart\";break e;case\"compositionend\":U=\"onCompositionEnd\";break e;case\"compositionupdate\":U=\"onCompositionUpdate\";break e}U=void 0}else Et?ge(a,u)&&(U=\"onCompositionEnd\"):\"keydown\"===a&&229===u.keyCode&&(U=\"onCompositionStart\");U&&(kt&&\"ko\"!==u.locale&&(Et||\"onCompositionStart\"!==U?\"onCompositionEnd\"===U&&Et&&(I=nd()):(Fn=s,Rn=\"value\"in Fn?Fn.value:Fn.textContent,Et=!0)),O=oe(o,U),0<O.length&&(U=new tt(U,a,null,u,s),x.push({event:U,listeners:O}),I?U.data=I:(I=he(u),null!==I&&(U.data=I))));(I=yt?je(a,u):ke(a,u))&&(o=oe(o,\"onBeforeInput\"),0<o.length&&(s=new tt(\"onBeforeInput\",\"beforeinput\",null,u,s),x.push({event:s,listeners:o}),s.data=I))}se(x,i)}))}function tf(a,i,u){return{instance:a,listener:i,currentTarget:u}}function oe(a,i){for(var u=i+\"Capture\",o=[];null!==a;){var s=a,w=s.stateNode;5===s.tag&&null!==w&&(s=w,w=Kb(a,u),null!=w&&o.unshift(tf(a,w,s)),w=Kb(a,i),null!=w&&o.push(tf(a,w,s)));a=a.return}return o}function vf(a){if(null===a)return null;do{a=a.return}while(a&&5!==a.tag);return a||null}function wf(a,i,u,o,s){for(var w=i._reactName,x=[];null!==u&&u!==o;){var C=u,z=C.alternate,N=C.stateNode;if(null!==z&&z===o)break;5===C.tag&&null!==N&&(C=N,s?(z=Kb(u,w),null!=z&&x.unshift(tf(u,z,C))):s||(z=Kb(u,w),null!=z&&x.push(tf(u,z,C))));u=u.return}0!==x.length&&a.push({event:i,listeners:x})}var Jt=/\\r\\n?/g,er=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(Jt,\"\\n\").replace(er,\"\")}function Af(a,i,u){i=zf(i);if(zf(a)!==i&&u)throw Error(p(425))}function Bf(){}var nr=null,tr=null;function Ef(a,i){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof i.children||\"number\"===typeof i.children||\"object\"===typeof i.dangerouslySetInnerHTML&&null!==i.dangerouslySetInnerHTML&&null!=i.dangerouslySetInnerHTML.__html}var rr=\"function\"===typeof setTimeout?setTimeout:void 0,lr=\"function\"===typeof clearTimeout?clearTimeout:void 0,ar=\"function\"===typeof Promise?Promise:void 0,ir=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof ar?function(a){return ar.resolve(null).then(a).catch(If)}:rr;function If(a){setTimeout((function(){throw a}))}function Kf(a,i){var u=i,o=0;do{var s=u.nextSibling;a.removeChild(u);if(s&&8===s.nodeType)if(u=s.data,\"/$\"===u){if(0===o){a.removeChild(s);bd(i);return}o--}else\"$\"!==u&&\"$?\"!==u&&\"$!\"!==u||o++;u=s}while(u);bd(i)}function Lf(a){for(;null!=a;a=a.nextSibling){var i=a.nodeType;if(1===i||3===i)break;if(8===i){i=a.data;if(\"$\"===i||\"$!\"===i||\"$?\"===i)break;if(\"/$\"===i)return null}}return a}function Mf(a){a=a.previousSibling;for(var i=0;a;){if(8===a.nodeType){var u=a.data;if(\"$\"===u||\"$!\"===u||\"$?\"===u){if(0===i)return a;i--}else\"/$\"===u&&i++}a=a.previousSibling}return null}var ur=Math.random().toString(36).slice(2),or=\"__reactFiber$\"+ur,sr=\"__reactProps$\"+ur,cr=\"__reactContainer$\"+ur,fr=\"__reactEvents$\"+ur,dr=\"__reactListeners$\"+ur,pr=\"__reactHandles$\"+ur;function Wc(a){var i=a[or];if(i)return i;for(var u=a.parentNode;u;){if(i=u[cr]||u[or]){u=i.alternate;if(null!==i.child||null!==u&&null!==u.child)for(a=Mf(a);null!==a;){if(u=a[or])return u;a=Mf(a)}return i}a=u;u=a.parentNode}return null}function Cb(a){a=a[or]||a[cr];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33))}function Db(a){return a[sr]||null}var hr=[],gr=-1;function Uf(a){return{current:a}}function E(a){0>gr||(a.current=hr[gr],hr[gr]=null,gr--)}function G(a,i){gr++;hr[gr]=a.current;a.current=i}var mr={},vr=Uf(mr),br=Uf(!1),yr=mr;function Yf(a,i){var u=a.type.contextTypes;if(!u)return mr;var o=a.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===i)return o.__reactInternalMemoizedMaskedChildContext;var s,w={};for(s in u)w[s]=i[s];o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=i,a.__reactInternalMemoizedMaskedChildContext=w);return w}function Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(br);E(vr)}function ag(a,i,u){if(vr.current!==mr)throw Error(p(168));G(vr,i);G(br,u)}function bg(a,i,u){var o=a.stateNode;i=i.childContextTypes;if(\"function\"!==typeof o.getChildContext)return u;o=o.getChildContext();for(var s in o)if(!(s in i))throw Error(p(108,Ra(a)||\"Unknown\",s));return ie({},u,o)}function cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||mr;yr=vr.current;G(vr,a);G(br,br.current);return!0}function dg(a,i,u){var o=a.stateNode;if(!o)throw Error(p(169));u?(a=bg(a,i,yr),o.__reactInternalMemoizedMergedChildContext=a,E(br),E(vr),G(vr,a)):E(br);G(br,u)}var kr=null,wr=!1,Sr=!1;function hg(a){null===kr?kr=[a]:kr.push(a)}function ig(a){wr=!0;hg(a)}function jg(){if(!Sr&&null!==kr){Sr=!0;var a=0,i=vn;try{var u=kr;for(vn=1;a<u.length;a++){var o=u[a];do{o=o(!0)}while(null!==o)}kr=null;wr=!1}catch(i){throw null!==kr&&(kr=kr.slice(a+1)),qe(ln,jg),i}finally{vn=i,Sr=!1}}return null}var Er=[],xr=0,Cr=null,zr=0,Nr=[],Lr=0,_r=null,jr=1,Pr=\"\";function tg(a,i){Er[xr++]=zr;Er[xr++]=Cr;Cr=a;zr=i}function ug(a,i,u){Nr[Lr++]=jr;Nr[Lr++]=Pr;Nr[Lr++]=_r;_r=a;var o=jr;a=Pr;var s=32-dn(o)-1;o&=~(1<<s);u+=1;var w=32-dn(i)+s;if(30<w){var x=s-s%5;w=(o&(1<<x)-1).toString(32);o>>=x;s-=x;jr=1<<32-dn(i)+s|u<<s|o;Pr=w+a}else jr=1<<w|u<<s|o,Pr=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===Cr;)Cr=Er[--xr],Er[xr]=null,zr=Er[--xr],Er[xr]=null;for(;a===_r;)_r=Nr[--Lr],Nr[Lr]=null,Pr=Nr[--Lr],Nr[Lr]=null,jr=Nr[--Lr],Nr[Lr]=null}var Tr=null,Dr=null,Mr=!1,Fr=null;function Ag(a,i){var u=Bg(5,null,null,0);u.elementType=\"DELETED\";u.stateNode=i;u.return=a;i=a.deletions;null===i?(a.deletions=[u],a.flags|=16):i.push(u)}function Cg(a,i){switch(a.tag){case 5:var u=a.type;i=1!==i.nodeType||u.toLowerCase()!==i.nodeName.toLowerCase()?null:i;return null!==i&&(a.stateNode=i,Tr=a,Dr=Lf(i.firstChild),!0);case 6:return i=\"\"===a.pendingProps||3!==i.nodeType?null:i,null!==i&&(a.stateNode=i,Tr=a,Dr=null,!0);case 13:return i=8!==i.nodeType?null:i,null!==i&&(u=null!==_r?{id:jr,overflow:Pr}:null,a.memoizedState={dehydrated:i,treeContext:u,retryLane:1073741824},u=Bg(18,null,null,0),u.stateNode=i,u.return=a,a.child=u,Tr=a,Dr=null,!0);default:return!1}}function Dg(a){return 0!==(1&a.mode)&&0===(128&a.flags)}function Eg(a){if(Mr){var i=Dr;if(i){var u=i;if(!Cg(a,i)){if(Dg(a))throw Error(p(418));i=Lf(u.nextSibling);var o=Tr;i&&Cg(a,i)?Ag(o,u):(a.flags=-4097&a.flags|2,Mr=!1,Tr=a)}}else{if(Dg(a))throw Error(p(418));a.flags=-4097&a.flags|2;Mr=!1;Tr=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Tr=a}function Gg(a){if(a!==Tr)return!1;if(!Mr)return Fg(a),Mr=!0,!1;var i;(i=3!==a.tag)&&!(i=5!==a.tag)&&(i=a.type,i=\"head\"!==i&&\"body\"!==i&&!Ef(a.type,a.memoizedProps));if(i&&(i=Dr)){if(Dg(a))throw Hg(),Error(p(418));for(;i;)Ag(a,i),i=Lf(i.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));e:{a=a.nextSibling;for(i=0;a;){if(8===a.nodeType){var u=a.data;if(\"/$\"===u){if(0===i){Dr=Lf(a.nextSibling);break e}i--}else\"$\"!==u&&\"$!\"!==u&&\"$?\"!==u||i++}a=a.nextSibling}Dr=null}}else Dr=Tr?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=Dr;a;)a=Lf(a.nextSibling)}function Ig(){Dr=Tr=null;Mr=!1}function Jg(a){null===Fr?Fr=[a]:Fr.push(a)}var Rr=R.ReactCurrentBatchConfig;function Lg(a,i){if(a&&a.defaultProps){i=ie({},i);a=a.defaultProps;for(var u in a)void 0===i[u]&&(i[u]=a[u]);return i}return i}var Or=Uf(null),Ir=null,Ur=null,Vr=null;function Qg(){Vr=Ur=Ir=null}function Rg(a){var i=Or.current;E(Or);a._currentValue=i}function Sg(a,i,u){for(;null!==a;){var o=a.alternate;(a.childLanes&i)!==i?(a.childLanes|=i,null!==o&&(o.childLanes|=i)):null!==o&&(o.childLanes&i)!==i&&(o.childLanes|=i);if(a===u)break;a=a.return}}function Tg(a,i){Ir=a;Vr=Ur=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&i)&&(Tl=!0),a.firstContext=null)}function Vg(a){var i=a._currentValue;if(Vr!==a)if(a={context:a,memoizedValue:i,next:null},null===Ur){if(null===Ir)throw Error(p(308));Ur=a;Ir.dependencies={lanes:0,firstContext:a}}else Ur=Ur.next=a;return i}var Wr=null;function Xg(a){null===Wr?Wr=[a]:Wr.push(a)}function Yg(a,i,u,o){var s=i.interleaved;null===s?(u.next=u,Xg(i)):(u.next=s.next,s.next=u);i.interleaved=u;return Zg(a,o)}function Zg(a,i){a.lanes|=i;var u=a.alternate;null!==u&&(u.lanes|=i);u=a;for(a=a.return;null!==a;)a.childLanes|=i,u=a.alternate,null!==u&&(u.childLanes|=i),u=a,a=a.return;return 3===u.tag?u.stateNode:null}var Qr=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function bh(a,i){a=a.updateQueue;i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,i){return{eventTime:a,lane:i,tag:0,payload:null,callback:null,next:null}}function dh(a,i,u){var o=a.updateQueue;if(null===o)return null;o=o.shared;if(0!==(2&Zl)){var s=o.pending;null===s?i.next=i:(i.next=s.next,s.next=i);o.pending=i;return Zg(a,u)}s=o.interleaved;null===s?(i.next=i,Xg(o)):(i.next=s.next,s.next=i);o.interleaved=i;return Zg(a,u)}function eh(a,i,u){i=i.updateQueue;if(null!==i&&(i=i.shared,0!==(4194240&u))){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}function fh(a,i){var u=a.updateQueue,o=a.alternate;if(null===o||(o=o.updateQueue,u!==o)){a=u.lastBaseUpdate;null===a?u.firstBaseUpdate=i:a.next=i;u.lastBaseUpdate=i}else{var s=null,w=null;u=u.firstBaseUpdate;if(null!==u){do{var x={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};null===w?s=w=x:w=w.next=x;u=u.next}while(null!==u);null===w?s=w=i:w=w.next=i}else s=w=i;u={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:w,shared:o.shared,effects:o.effects};a.updateQueue=u}}function gh(a,i,u,o){var s=a.updateQueue;Qr=!1;var w=s.firstBaseUpdate,x=s.lastBaseUpdate,C=s.shared.pending;if(null!==C){s.shared.pending=null;var z=C,N=z.next;z.next=null;null===x?w=N:x.next=N;x=z;var _=a.alternate;null!==_&&(_=_.updateQueue,C=_.lastBaseUpdate,C!==x&&(null===C?_.firstBaseUpdate=N:C.next=N,_.lastBaseUpdate=z))}if(null!==w){var j=s.baseState;x=0;_=N=z=null;C=w;do{var P=C.lane,T=C.eventTime;if((o&P)===P){null!==_&&(_=_.next={eventTime:T,lane:0,tag:C.tag,payload:C.payload,callback:C.callback,next:null});e:{var M=a,F=C;P=i;T=u;switch(F.tag){case 1:M=F.payload;if(\"function\"===typeof M){j=M.call(T,j,P);break e}j=M;break e;case 3:M.flags=-65537&M.flags|128;case 0:M=F.payload;P=\"function\"===typeof M?M.call(T,j,P):M;if(null===P||void 0===P)break e;j=ie({},j,P);break e;case 2:Qr=!0}}null!==C.callback&&0!==C.lane&&(a.flags|=64,P=s.effects,null===P?s.effects=[C]:P.push(C))}else T={eventTime:T,lane:P,tag:C.tag,payload:C.payload,callback:C.callback,next:null},null===_?(N=_=T,z=j):_=_.next=T,x|=P;C=C.next;if(null===C){if(C=s.shared.pending,null===C)break;P=C,C=P.next,P.next=null,s.lastBaseUpdate=P,s.shared.pending=null}}while(1);null===_&&(z=j);s.baseState=z;s.firstBaseUpdate=N;s.lastBaseUpdate=_;i=s.shared.interleaved;if(null!==i){s=i;do{x|=s.lane,s=s.next}while(s!==i)}else null===w&&(s.shared.lanes=0);aa|=x;a.lanes=x;a.memoizedState=j}}function ih(a,i,u){a=i.effects;i.effects=null;if(null!==a)for(i=0;i<a.length;i++){var o=a[i],s=o.callback;if(null!==s){o.callback=null;o=u;if(\"function\"!==typeof s)throw Error(p(191,s));s.call(o)}}}var Ar=(new w.Component).refs;function kh(a,i,u,o){i=a.memoizedState;u=u(o,i);u=null===u||void 0===u?i:ie({},i,u);a.memoizedState=u;0===a.lanes&&(a.updateQueue.baseState=u)}var Br={isMounted:function(a){return!!(a=a._reactInternals)&&Vb(a)===a},enqueueSetState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueReplaceState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.tag=1;w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueForceUpdate:function(a,i){a=a._reactInternals;var u=L(),o=lh(a),s=ch(u,o);s.tag=2;void 0!==i&&null!==i&&(s.callback=i);i=dh(a,s,o);null!==i&&(mh(i,a,o,u),eh(i,a,o))}};function oh(a,i,u,o,s,w,x){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(o,w,x):!i.prototype||!i.prototype.isPureReactComponent||(!Ie(u,o)||!Ie(s,w))}function ph(a,i,u){var o=!1,s=mr;var w=i.contextType;\"object\"===typeof w&&null!==w?w=Vg(w):(s=Zf(i)?yr:vr.current,o=i.contextTypes,w=(o=null!==o&&void 0!==o)?Yf(a,s):mr);i=new i(u,w);a.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;i.updater=Br;a.stateNode=i;i._reactInternals=a;o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=s,a.__reactInternalMemoizedMaskedChildContext=w);return i}function qh(a,i,u,o){a=i.state;\"function\"===typeof i.componentWillReceiveProps&&i.componentWillReceiveProps(u,o);\"function\"===typeof i.UNSAFE_componentWillReceiveProps&&i.UNSAFE_componentWillReceiveProps(u,o);i.state!==a&&Br.enqueueReplaceState(i,i.state,null)}function rh(a,i,u,o){var s=a.stateNode;s.props=u;s.state=a.memoizedState;s.refs=Ar;ah(a);var w=i.contextType;\"object\"===typeof w&&null!==w?s.context=Vg(w):(w=Zf(i)?yr:vr.current,s.context=Yf(a,w));s.state=a.memoizedState;w=i.getDerivedStateFromProps;\"function\"===typeof w&&(kh(a,i,w,u),s.state=a.memoizedState);\"function\"===typeof i.getDerivedStateFromProps||\"function\"===typeof s.getSnapshotBeforeUpdate||\"function\"!==typeof s.UNSAFE_componentWillMount&&\"function\"!==typeof s.componentWillMount||(i=s.state,\"function\"===typeof s.componentWillMount&&s.componentWillMount(),\"function\"===typeof s.UNSAFE_componentWillMount&&s.UNSAFE_componentWillMount(),i!==s.state&&Br.enqueueReplaceState(s,s.state,null),gh(a,u,s,o),s.state=a.memoizedState);\"function\"===typeof s.componentDidMount&&(a.flags|=4194308)}function sh(a,i,u){a=u.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(u._owner){u=u._owner;if(u){if(1!==u.tag)throw Error(p(309));var o=u.stateNode}if(!o)throw Error(p(147,a));var s=o,w=\"\"+a;if(null!==i&&null!==i.ref&&\"function\"===typeof i.ref&&i.ref._stringRef===w)return i.ref;i=function(a){var i=s.refs;i===Ar&&(i=s.refs={});null===a?delete i[w]:i[w]=a};i._stringRef=w;return i}if(\"string\"!==typeof a)throw Error(p(284));if(!u._owner)throw Error(p(290,a))}return a}function th(a,i){a=Object.prototype.toString.call(i);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(i).join(\", \")+\"}\":a))}function uh(a){var i=a._init;return i(a._payload)}function vh(a){function b(i,u){if(a){var o=i.deletions;null===o?(i.deletions=[u],i.flags|=16):o.push(u)}}function c(i,u){if(!a)return null;for(;null!==u;)b(i,u),u=u.sibling;return null}function d(a,i){for(a=new Map;null!==i;)null!==i.key?a.set(i.key,i):a.set(i.index,i),i=i.sibling;return a}function e(a,i){a=wh(a,i);a.index=0;a.sibling=null;return a}function f(i,u,o){i.index=o;if(!a)return i.flags|=1048576,u;o=i.alternate;if(null!==o)return o=o.index,o<u?(i.flags|=2,u):o;i.flags|=2;return u}function g(i){a&&null===i.alternate&&(i.flags|=2);return i}function h(a,i,u,o){if(null===i||6!==i.tag)return i=xh(u,a.mode,o),i.return=a,i;i=e(i,u);i.return=a;return i}function k(a,i,u,o){var s=u.type;if(s===U)return m(a,i,u.props.children,o,u.key);if(null!==i&&(i.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===i.type))return o=e(i,u.props),o.ref=sh(a,i,u),o.return=a,o;o=yh(u.type,u.key,u.props,null,a.mode,o);o.ref=sh(a,i,u);o.return=a;return o}function l(a,i,u,o){if(null===i||4!==i.tag||i.stateNode.containerInfo!==u.containerInfo||i.stateNode.implementation!==u.implementation)return i=zh(u,a.mode,o),i.return=a,i;i=e(i,u.children||[]);i.return=a;return i}function m(a,i,u,o,s){if(null===i||7!==i.tag)return i=Ah(u,a.mode,o,s),i.return=a,i;i=e(i,u);i.return=a;return i}function q(a,i,u){if(\"string\"===typeof i&&\"\"!==i||\"number\"===typeof i)return i=xh(\"\"+i,a.mode,u),i.return=a,i;if(\"object\"===typeof i&&null!==i){switch(i.$$typeof){case O:return u=yh(i.type,i.key,i.props,null,a.mode,u),u.ref=sh(a,null,i),u.return=a,u;case I:return i=zh(i,a.mode,u),i.return=a,i;case X:var o=i._init;return q(a,o(i._payload),u)}if(fe(i)||Ka(i))return i=Ah(i,a.mode,u,null),i.return=a,i;th(a,i)}return null}function r(a,i,u,o){var s=null!==i?i.key:null;if(\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u)return null!==s?null:h(a,i,\"\"+u,o);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:return u.key===s?k(a,i,u,o):null;case I:return u.key===s?l(a,i,u,o):null;case X:return s=u._init,r(a,i,s(u._payload),o)}if(fe(u)||Ka(u))return null!==s?null:m(a,i,u,o,null);th(a,u)}return null}function y(a,i,u,o,s){if(\"string\"===typeof o&&\"\"!==o||\"number\"===typeof o)return a=a.get(u)||null,h(i,a,\"\"+o,s);if(\"object\"===typeof o&&null!==o){switch(o.$$typeof){case O:return a=a.get(null===o.key?u:o.key)||null,k(i,a,o,s);case I:return a=a.get(null===o.key?u:o.key)||null,l(i,a,o,s);case X:var w=o._init;return y(a,i,u,w(o._payload),s)}if(fe(o)||Ka(o))return a=a.get(u)||null,m(i,a,o,s,null);th(i,o)}return null}function n(i,u,o,s){for(var w=null,x=null,C=u,z=u=0,N=null;null!==C&&z<o.length;z++){C.index>z?(N=C,C=null):N=C.sibling;var _=r(i,C,o[z],s);if(null===_){null===C&&(C=N);break}a&&C&&null===_.alternate&&b(i,C);u=f(_,u,z);null===x?w=_:x.sibling=_;x=_;C=N}if(z===o.length)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;z<o.length;z++)C=q(i,o[z],s),null!==C&&(u=f(C,u,z),null===x?w=C:x.sibling=C,x=C);Mr&&tg(i,z);return w}for(C=d(i,C);z<o.length;z++)N=y(C,i,z,o[z],s),null!==N&&(a&&null!==N.alternate&&C.delete(null===N.key?z:N.key),u=f(N,u,z),null===x?w=N:x.sibling=N,x=N);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function t(i,u,o,s){var w=Ka(o);if(\"function\"!==typeof w)throw Error(p(150));o=w.call(o);if(null==o)throw Error(p(151));for(var x=w=null,C=u,z=u=0,N=null,_=o.next();null!==C&&!_.done;z++,_=o.next()){C.index>z?(N=C,C=null):N=C.sibling;var j=r(i,C,_.value,s);if(null===j){null===C&&(C=N);break}a&&C&&null===j.alternate&&b(i,C);u=f(j,u,z);null===x?w=j:x.sibling=j;x=j;C=N}if(_.done)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;!_.done;z++,_=o.next())_=q(i,_.value,s),null!==_&&(u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);Mr&&tg(i,z);return w}for(C=d(i,C);!_.done;z++,_=o.next())_=y(C,i,z,_.value,s),null!==_&&(a&&null!==_.alternate&&C.delete(null===_.key?z:_.key),u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function J(a,i,u,o){\"object\"===typeof u&&null!==u&&u.type===U&&null===u.key&&(u=u.props.children);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:e:{for(var s=u.key,w=i;null!==w;){if(w.key===s){s=u.type;if(s===U){if(7===w.tag){c(a,w.sibling);i=e(w,u.props.children);i.return=a;a=i;break e}}else if(w.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===w.type){c(a,w.sibling);i=e(w,u.props);i.ref=sh(a,w,u);i.return=a;a=i;break e}c(a,w);break}b(a,w);w=w.sibling}u.type===U?(i=Ah(u.props.children,a.mode,o,u.key),i.return=a,a=i):(o=yh(u.type,u.key,u.props,null,a.mode,o),o.ref=sh(a,i,u),o.return=a,a=o)}return g(a);case I:e:{for(w=u.key;null!==i;){if(i.key===w){if(4===i.tag&&i.stateNode.containerInfo===u.containerInfo&&i.stateNode.implementation===u.implementation){c(a,i.sibling);i=e(i,u.children||[]);i.return=a;a=i;break e}c(a,i);break}b(a,i);i=i.sibling}i=zh(u,a.mode,o);i.return=a;a=i}return g(a);case X:return w=u._init,J(a,i,w(u._payload),o)}if(fe(u))return n(a,i,u,o);if(Ka(u))return t(a,i,u,o);th(a,u)}return\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u?(u=\"\"+u,null!==i&&6===i.tag?(c(a,i.sibling),i=e(i,u),i.return=a,a=i):(c(a,i),i=xh(u,a.mode,o),i.return=a,a=i),g(a)):c(a,i)}return J}var Hr=vh(!0),$r=vh(!1),Kr={},Yr=Uf(Kr),Zr=Uf(Kr),Gr=Uf(Kr);function Hh(a){if(a===Kr)throw Error(p(174));return a}function Ih(a,i){G(Gr,i);G(Zr,a);G(Yr,Kr);a=i.nodeType;switch(a){case 9:case 11:i=(i=i.documentElement)?i.namespaceURI:lb(null,\"\");break;default:a=8===a?i.parentNode:i,i=a.namespaceURI||null,a=a.tagName,i=lb(i,a)}E(Yr);G(Yr,i)}function Jh(){E(Yr);E(Zr);E(Gr)}function Kh(a){Hh(Gr.current);var i=Hh(Yr.current);var u=lb(i,a.type);i!==u&&(G(Zr,a),G(Yr,u))}function Lh(a){Zr.current===a&&(E(Yr),E(Zr))}var qr=Uf(0);function Mh(a){for(var i=a;null!==i;){if(13===i.tag){var u=i.memoizedState;if(null!==u&&(u=u.dehydrated,null===u||\"$?\"===u.data||\"$!\"===u.data))return i}else if(19===i.tag&&void 0!==i.memoizedProps.revealOrder){if(0!==(128&i.flags))return i}else if(null!==i.child){i.child.return=i;i=i.child;continue}if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return null;i=i.return}i.sibling.return=i.return;i=i.sibling}return null}var Xr=[];function Oh(){for(var a=0;a<Xr.length;a++)Xr[a]._workInProgressVersionPrimary=null;Xr.length=0}var Jr=R.ReactCurrentDispatcher,tl=R.ReactCurrentBatchConfig,ll=0,ul=null,vl=null,yl=null,wl=!1,Sl=!1,El=0,xl=0;function Q(){throw Error(p(321))}function Wh(a,i){if(null===i)return!1;for(var u=0;u<i.length&&u<a.length;u++)if(!Pt(a[u],i[u]))return!1;return!0}function Xh(a,i,u,o,s,w){ll=w;ul=i;i.memoizedState=null;i.updateQueue=null;i.lanes=0;Jr.current=null===a||null===a.memoizedState?zl:Nl;a=u(o,s);if(Sl){w=0;do{Sl=!1;El=0;if(25<=w)throw Error(p(301));w+=1;yl=vl=null;i.updateQueue=null;Jr.current=Ll;a=u(o,s)}while(Sl)}Jr.current=Cl;i=null!==vl&&null!==vl.next;ll=0;yl=vl=ul=null;wl=!1;if(i)throw Error(p(300));return a}function bi(){var a=0!==El;El=0;return a}function ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a;return yl}function di(){if(null===vl){var a=ul.alternate;a=null!==a?a.memoizedState:null}else a=vl.next;var i=null===yl?ul.memoizedState:yl.next;if(null!==i)yl=i,vl=a;else{if(null===a)throw Error(p(310));vl=a;a={memoizedState:vl.memoizedState,baseState:vl.baseState,baseQueue:vl.baseQueue,queue:vl.queue,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a}return yl}function ei(a,i){return\"function\"===typeof i?i(a):i}function fi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=vl,s=o.baseQueue,w=u.pending;if(null!==w){if(null!==s){var x=s.next;s.next=w.next;w.next=x}o.baseQueue=s=w;u.pending=null}if(null!==s){w=s.next;o=o.baseState;var C=x=null,z=null,N=w;do{var _=N.lane;if((ll&_)===_)null!==z&&(z=z.next={lane:0,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null}),o=N.hasEagerState?N.eagerState:a(o,N.action);else{var j={lane:_,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null};null===z?(C=z=j,x=o):z=z.next=j;ul.lanes|=_;aa|=_}N=N.next}while(null!==N&&N!==w);null===z?x=o:z.next=C;Pt(o,i.memoizedState)||(Tl=!0);i.memoizedState=o;i.baseState=x;i.baseQueue=z;u.lastRenderedState=o}a=u.interleaved;if(null!==a){s=a;do{w=s.lane,ul.lanes|=w,aa|=w,s=s.next}while(s!==a)}else null===s&&(u.lanes=0);return[i.memoizedState,u.dispatch]}function gi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=u.dispatch,s=u.pending,w=i.memoizedState;if(null!==s){u.pending=null;var x=s=s.next;do{w=a(w,x.action),x=x.next}while(x!==s);Pt(w,i.memoizedState)||(Tl=!0);i.memoizedState=w;null===i.baseQueue&&(i.baseState=w);u.lastRenderedState=w}return[w,o]}function hi(){}function ii(a,i){var u=ul,o=di(),s=i(),w=!Pt(o.memoizedState,s);w&&(o.memoizedState=s,Tl=!0);o=o.queue;ji(ki.bind(null,u,o,a),[a]);if(o.getSnapshot!==i||w||null!==yl&&1&yl.memoizedState.tag){u.flags|=2048;li(9,mi.bind(null,u,o,s,i),void 0,null);if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(u,i,s)}return s}function ni(a,i,u){a.flags|=16384;a={getSnapshot:i,value:u};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.stores=[a]):(u=i.stores,null===u?i.stores=[a]:u.push(a))}function mi(a,i,u,o){i.value=u;i.getSnapshot=o;oi(i)&&pi(a)}function ki(a,i,u){return u((function(){oi(i)&&pi(a)}))}function oi(a){var i=a.getSnapshot;a=a.value;try{var u=i();return!Pt(a,u)}catch(a){return!0}}function pi(a){var i=Zg(a,1);null!==i&&mh(i,a,1,-1)}function qi(a){var i=ci();\"function\"===typeof a&&(a=a());i.memoizedState=i.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};i.queue=a;a=a.dispatch=ri.bind(null,ul,a);return[i.memoizedState,a]}function li(a,i,u,o){a={tag:a,create:i,destroy:u,deps:o,next:null};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.lastEffect=a.next=a):(u=i.lastEffect,null===u?i.lastEffect=a.next=a:(o=u.next,u.next=a,a.next=o,i.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,i,u,o){var s=ci();ul.flags|=a;s.memoizedState=li(1|i,u,void 0,void 0===o?null:o)}function ui(a,i,u,o){var s=di();o=void 0===o?null:o;var w=void 0;if(null!==vl){var x=vl.memoizedState;w=x.destroy;if(null!==o&&Wh(o,x.deps)){s.memoizedState=li(i,u,w,o);return}}ul.flags|=a;s.memoizedState=li(1|i,u,w,o)}function vi(a,i){return ti(8390656,8,a,i)}function ji(a,i){return ui(2048,8,a,i)}function wi(a,i){return ui(4,2,a,i)}function xi(a,i){return ui(4,4,a,i)}function yi(a,i){return\"function\"===typeof i?(a=a(),i(a),function(){i(null)}):null!==i&&void 0!==i?(a=a(),i.current=a,function(){i.current=null}):void 0}function zi(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ui(4,4,yi.bind(null,i,a),u)}function Ai(){}function Bi(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];u.memoizedState=[a,i];return a}function Ci(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];a=a();u.memoizedState=[a,i];return a}function Di(a,i,u){if(0===(21&ll))return a.baseState&&(a.baseState=!1,Tl=!0),a.memoizedState=u;Pt(u,i)||(u=yc(),ul.lanes|=u,aa|=u,a.baseState=!0);return i}function Ei(a,i){var u=vn;vn=0!==u&&4>u?u:4;a(!0);var o=tl.transition;tl.transition={};try{a(!1),i()}finally{vn=u,tl.transition=o}}function Fi(){return di().memoizedState}function Gi(a,i,u){var o=lh(a);u={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,u);else if(u=Yg(a,i,u,o),null!==u){var s=L();mh(u,a,o,s);Ji(u,i,o)}}function ri(a,i,u){var o=lh(a),s={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,s);else{var w=a.alternate;if(0===a.lanes&&(null===w||0===w.lanes)&&(w=i.lastRenderedReducer,null!==w))try{var x=i.lastRenderedState,C=w(x,u);s.hasEagerState=!0;s.eagerState=C;if(Pt(C,x)){var z=i.interleaved;null===z?(s.next=s,Xg(i)):(s.next=z.next,z.next=s);i.interleaved=s;return}}catch(a){}u=Yg(a,i,s,o);null!==u&&(s=L(),mh(u,a,o,s),Ji(u,i,o))}}function Hi(a){var i=a.alternate;return a===ul||null!==i&&i===ul}function Ii(a,i){Sl=wl=!0;var u=a.pending;null===u?i.next=i:(i.next=u.next,u.next=i);a.pending=i}function Ji(a,i,u){if(0!==(4194240&u)){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}var Cl={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},zl={readContext:Vg,useCallback:function(a,i){ci().memoizedState=[a,void 0===i?null:i];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ti(4194308,4,yi.bind(null,i,a),u)},useLayoutEffect:function(a,i){return ti(4194308,4,a,i)},useInsertionEffect:function(a,i){return ti(4,2,a,i)},useMemo:function(a,i){var u=ci();i=void 0===i?null:i;a=a();u.memoizedState=[a,i];return a},useReducer:function(a,i,u){var o=ci();i=void 0!==u?u(i):i;o.memoizedState=o.baseState=i;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:i};o.queue=a;a=a.dispatch=Gi.bind(null,ul,a);return[o.memoizedState,a]},useRef:function(a){var i=ci();a={current:a};return i.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),i=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[i,a]},useMutableSource:function(){},useSyncExternalStore:function(a,i,u){var o=ul,s=ci();if(Mr){if(void 0===u)throw Error(p(407));u=u()}else{u=i();if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(o,i,u)}s.memoizedState=u;var w={value:u,getSnapshot:i};s.queue=w;vi(ki.bind(null,o,w,a),[a]);o.flags|=2048;li(9,mi.bind(null,o,w,u,i),void 0,null);return u},useId:function(){var a=ci(),i=Gl.identifierPrefix;if(Mr){var u=Pr;var o=jr;u=(o&~(1<<32-dn(o)-1)).toString(32)+u;i=\":\"+i+\"R\"+u;u=El++;0<u&&(i+=\"H\"+u.toString(32));i+=\":\"}else u=xl++,i=\":\"+i+\"r\"+u.toString(32)+\":\";return a.memoizedState=i},unstable_isNewReconciler:!1},Nl={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return Di(i,vl.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},Ll={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return null===vl?i.memoizedState=a:Di(i,vl.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,i){try{var u=\"\",o=i;do{u+=Pa(o),o=o.return}while(o);var s=u}catch(a){s=\"\\nError generating stack: \"+a.message+\"\\n\"+a.stack}return{value:a,source:i,stack:s,digest:null}}function Li(a,i,u){return{value:a,source:null,stack:null!=u?u:null,digest:null!=i?i:null}}function Mi(a,i){try{console.error(i.value)}catch(a){setTimeout((function(){throw a}))}}var _l=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,i,u){u=ch(-1,u);u.tag=3;u.payload={element:null};var o=i.value;u.callback=function(){ba||(ba=!0,ya=o);Mi(a,i)};return u}function Ri(a,i,u){u=ch(-1,u);u.tag=3;var o=a.type.getDerivedStateFromError;if(\"function\"===typeof o){var s=i.value;u.payload=function(){return o(s)};u.callback=function(){Mi(a,i)}}var w=a.stateNode;null!==w&&\"function\"===typeof w.componentDidCatch&&(u.callback=function(){Mi(a,i);\"function\"!==typeof o&&(null===ka?ka=new Set([this]):ka.add(this));var u=i.stack;this.componentDidCatch(i.value,{componentStack:null!==u?u:\"\"})});return u}function Ti(a,i,u){var o=a.pingCache;if(null===o){o=a.pingCache=new _l;var s=new Set;o.set(i,s)}else s=o.get(i),void 0===s&&(s=new Set,o.set(i,s));s.has(u)||(s.add(u),a=Ui.bind(null,a,i,u),i.then(a,a))}function Vi(a){do{var i;(i=13===a.tag)&&(i=a.memoizedState,i=null===i||null!==i.dehydrated);if(i)return a;a=a.return}while(null!==a);return null}function Wi(a,i,u,o,s){if(0===(1&a.mode))return a===i?a.flags|=65536:(a.flags|=128,u.flags|=131072,u.flags&=-52805,1===u.tag&&(null===u.alternate?u.tag=17:(i=ch(-1,1),i.tag=2,dh(u,i,1))),u.lanes|=1),a;a.flags|=65536;a.lanes=s;return a}var Pl=R.ReactCurrentOwner,Tl=!1;function Yi(a,i,u,o){i.child=null===a?$r(i,null,u,o):Hr(i,a.child,u,o)}function Zi(a,i,u,o,s){u=u.render;var w=i.ref;Tg(i,s);o=Xh(a,i,u,o,w,s);u=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&u&&vg(i);i.flags|=1;Yi(a,i,o,s);return i.child}function aj(a,i,u,o,s){if(null===a){var w=u.type;if(\"function\"===typeof w&&!bj(w)&&void 0===w.defaultProps&&null===u.compare&&void 0===u.defaultProps)return i.tag=15,i.type=w,cj(a,i,w,o,s);a=yh(u.type,null,o,i,i.mode,s);a.ref=i.ref;a.return=i;return i.child=a}w=a.child;if(0===(a.lanes&s)){var x=w.memoizedProps;u=u.compare;u=null!==u?u:Ie;if(u(x,o)&&a.ref===i.ref)return $i(a,i,s)}i.flags|=1;a=wh(w,o);a.ref=i.ref;a.return=i;return i.child=a}function cj(a,i,u,o,s){if(null!==a){var w=a.memoizedProps;if(Ie(w,o)&&a.ref===i.ref){if(Tl=!1,i.pendingProps=o=w,0===(a.lanes&s))return i.lanes=a.lanes,$i(a,i,s);0!==(131072&a.flags)&&(Tl=!0)}}return dj(a,i,u,o,s)}function ej(a,i,u){var o=i.pendingProps,s=o.children,w=null!==a?a.memoizedState:null;if(\"hidden\"===o.mode)if(0===(1&i.mode))i.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(na,ea),ea|=u;else{if(0===(1073741824&u))return a=null!==w?w.baseLanes|u:u,i.lanes=i.childLanes=1073741824,i.memoizedState={baseLanes:a,cachePool:null,transitions:null},i.updateQueue=null,G(na,ea),ea|=a,null;i.memoizedState={baseLanes:0,cachePool:null,transitions:null};o=null!==w?w.baseLanes:u;G(na,ea);ea|=o}else null!==w?(o=w.baseLanes|u,i.memoizedState=null):o=u,G(na,ea),ea|=o;Yi(a,i,s,u);return i.child}function hj(a,i){var u=i.ref;(null===a&&null!==u||null!==a&&a.ref!==u)&&(i.flags|=512,i.flags|=2097152)}function dj(a,i,u,o,s){var w=Zf(u)?yr:vr.current;w=Yf(i,w);Tg(i,s);u=Xh(a,i,u,o,w,s);o=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&o&&vg(i);i.flags|=1;Yi(a,i,u,s);return i.child}function ij(a,i,u,o,s){if(Zf(u)){var w=!0;cg(i)}else w=!1;Tg(i,s);if(null===i.stateNode)jj(a,i),ph(i,u,o),rh(i,u,o,s),o=!0;else if(null===a){var x=i.stateNode,C=i.memoizedProps;x.props=C;var z=x.context,N=u.contextType;\"object\"===typeof N&&null!==N?N=Vg(N):(N=Zf(u)?yr:vr.current,N=Yf(i,N));var _=u.getDerivedStateFromProps,j=\"function\"===typeof _||\"function\"===typeof x.getSnapshotBeforeUpdate;j||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==o||z!==N)&&qh(i,x,o,N);Qr=!1;var P=i.memoizedState;x.state=P;gh(i,o,x,s);z=i.memoizedState;C!==o||P!==z||br.current||Qr?(\"function\"===typeof _&&(kh(i,u,_,o),z=i.memoizedState),(C=Qr||oh(i,u,C,o,P,z,N))?(j||\"function\"!==typeof x.UNSAFE_componentWillMount&&\"function\"!==typeof x.componentWillMount||(\"function\"===typeof x.componentWillMount&&x.componentWillMount(),\"function\"===typeof x.UNSAFE_componentWillMount&&x.UNSAFE_componentWillMount()),\"function\"===typeof x.componentDidMount&&(i.flags|=4194308)):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),i.memoizedProps=o,i.memoizedState=z),x.props=o,x.state=z,x.context=N,o=C):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),o=!1)}else{x=i.stateNode;bh(a,i);C=i.memoizedProps;N=i.type===i.elementType?C:Lg(i.type,C);x.props=N;j=i.pendingProps;P=x.context;z=u.contextType;\"object\"===typeof z&&null!==z?z=Vg(z):(z=Zf(u)?yr:vr.current,z=Yf(i,z));var T=u.getDerivedStateFromProps;(_=\"function\"===typeof T||\"function\"===typeof x.getSnapshotBeforeUpdate)||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==j||P!==z)&&qh(i,x,o,z);Qr=!1;P=i.memoizedState;x.state=P;gh(i,o,x,s);var M=i.memoizedState;C!==j||P!==M||br.current||Qr?(\"function\"===typeof T&&(kh(i,u,T,o),M=i.memoizedState),(N=Qr||oh(i,u,N,o,P,M,z)||!1)?(_||\"function\"!==typeof x.UNSAFE_componentWillUpdate&&\"function\"!==typeof x.componentWillUpdate||(\"function\"===typeof x.componentWillUpdate&&x.componentWillUpdate(o,M,z),\"function\"===typeof x.UNSAFE_componentWillUpdate&&x.UNSAFE_componentWillUpdate(o,M,z)),\"function\"===typeof x.componentDidUpdate&&(i.flags|=4),\"function\"===typeof x.getSnapshotBeforeUpdate&&(i.flags|=1024)):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),i.memoizedProps=o,i.memoizedState=M),x.props=o,x.state=M,x.context=z,o=N):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),o=!1)}return kj(a,i,u,o,w,s)}function kj(a,i,u,o,s,w){hj(a,i);var x=0!==(128&i.flags);if(!o&&!x)return s&&dg(i,u,!1),$i(a,i,w);o=i.stateNode;Pl.current=i;var C=x&&\"function\"!==typeof u.getDerivedStateFromError?null:o.render();i.flags|=1;null!==a&&x?(i.child=Hr(i,a.child,null,w),i.child=Hr(i,null,C,w)):Yi(a,i,C,w);i.memoizedState=o.state;s&&dg(i,u,!0);return i.child}function lj(a){var i=a.stateNode;i.pendingContext?ag(a,i.pendingContext,i.pendingContext!==i.context):i.context&&ag(a,i.context,!1);Ih(a,i.containerInfo)}function mj(a,i,u,o,s){Ig();Jg(s);i.flags|=256;Yi(a,i,u,o);return i.child}var Dl={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}function pj(a,i,u){var o,s=i.pendingProps,w=qr.current,x=!1,C=0!==(128&i.flags);(o=C)||(o=(null===a||null!==a.memoizedState)&&0!==(2&w));o?(x=!0,i.flags&=-129):null!==a&&null===a.memoizedState||(w|=1);G(qr,1&w);if(null===a){Eg(i);a=i.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(1&i.mode)?i.lanes=1:\"$!\"===a.data?i.lanes=8:i.lanes=1073741824,null;C=s.children;a=s.fallback;return x?(s=i.mode,x=i.child,C={mode:\"hidden\",children:C},0===(1&s)&&null!==x?(x.childLanes=0,x.pendingProps=C):x=qj(C,s,0,null),a=Ah(a,s,u,null),x.return=i,a.return=i,x.sibling=a,i.child=x,i.child.memoizedState=oj(u),i.memoizedState=Dl,a):rj(i,C)}w=a.memoizedState;if(null!==w&&(o=w.dehydrated,null!==o))return sj(a,i,C,s,o,w,u);if(x){x=s.fallback;C=i.mode;w=a.child;o=w.sibling;var z={mode:\"hidden\",children:s.children};0===(1&C)&&i.child!==w?(s=i.child,s.childLanes=0,s.pendingProps=z,i.deletions=null):(s=wh(w,z),s.subtreeFlags=14680064&w.subtreeFlags);null!==o?x=wh(o,x):(x=Ah(x,C,u,null),x.flags|=2);x.return=i;s.return=i;s.sibling=x;i.child=s;s=x;x=i.child;C=a.child.memoizedState;C=null===C?oj(u):{baseLanes:C.baseLanes|u,cachePool:null,transitions:C.transitions};x.memoizedState=C;x.childLanes=a.childLanes&~u;i.memoizedState=Dl;return s}x=a.child;a=x.sibling;s=wh(x,{mode:\"visible\",children:s.children});0===(1&i.mode)&&(s.lanes=u);s.return=i;s.sibling=null;null!==a&&(u=i.deletions,null===u?(i.deletions=[a],i.flags|=16):u.push(a));i.child=s;i.memoizedState=null;return s}function rj(a,i){i=qj({mode:\"visible\",children:i},a.mode,0,null);i.return=a;return a.child=i}function tj(a,i,u,o){null!==o&&Jg(o);Hr(i,a.child,null,u);a=rj(i,i.pendingProps.children);a.flags|=2;i.memoizedState=null;return a}function sj(a,i,u,o,s,w,x){if(u){if(256&i.flags)return i.flags&=-257,o=Li(Error(p(422))),tj(a,i,x,o);if(null!==i.memoizedState)return i.child=a.child,i.flags|=128,null;w=o.fallback;s=i.mode;o=qj({mode:\"visible\",children:o.children},s,0,null);w=Ah(w,s,x,null);w.flags|=2;o.return=i;w.return=i;o.sibling=w;i.child=o;0!==(1&i.mode)&&Hr(i,a.child,null,x);i.child.memoizedState=oj(x);i.memoizedState=Dl;return w}if(0===(1&i.mode))return tj(a,i,x,null);if(\"$!\"===s.data){o=s.nextSibling&&s.nextSibling.dataset;if(o)var C=o.dgst;o=C;w=Error(p(419));o=Li(w,o,void 0);return tj(a,i,x,o)}C=0!==(x&a.childLanes);if(Tl||C){o=Gl;if(null!==o){switch(x&-x){case 4:s=2;break;case 16:s=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:s=32;break;case 536870912:s=268435456;break;default:s=0}s=0!==(s&(o.suspendedLanes|x))?0:s;0!==s&&s!==w.retryLane&&(w.retryLane=s,Zg(a,s),mh(o,a,s,-1))}uj();o=Li(Error(p(421)));return tj(a,i,x,o)}if(\"$?\"===s.data)return i.flags|=128,i.child=a.child,i=vj.bind(null,a),s._reactRetry=i,null;a=w.treeContext;Dr=Lf(s.nextSibling);Tr=i;Mr=!0;Fr=null;null!==a&&(Nr[Lr++]=jr,Nr[Lr++]=Pr,Nr[Lr++]=_r,jr=a.id,Pr=a.overflow,_r=i);i=rj(i,o.children);i.flags|=4096;return i}function wj(a,i,u){a.lanes|=i;var o=a.alternate;null!==o&&(o.lanes|=i);Sg(a.return,i,u)}function xj(a,i,u,o,s){var w=a.memoizedState;null===w?a.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:o,tail:u,tailMode:s}:(w.isBackwards=i,w.rendering=null,w.renderingStartTime=0,w.last=o,w.tail=u,w.tailMode=s)}function yj(a,i,u){var o=i.pendingProps,s=o.revealOrder,w=o.tail;Yi(a,i,o.children,u);o=qr.current;if(0!==(2&o))o=1&o|2,i.flags|=128;else{if(null!==a&&0!==(128&a.flags))e:for(a=i.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,u,i);else if(19===a.tag)wj(a,u,i);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===i)break e;for(;null===a.sibling;){if(null===a.return||a.return===i)break e;a=a.return}a.sibling.return=a.return;a=a.sibling}o&=1}G(qr,o);if(0===(1&i.mode))i.memoizedState=null;else switch(s){case\"forwards\":u=i.child;for(s=null;null!==u;)a=u.alternate,null!==a&&null===Mh(a)&&(s=u),u=u.sibling;u=s;null===u?(s=i.child,i.child=null):(s=u.sibling,u.sibling=null);xj(i,!1,s,u,w);break;case\"backwards\":u=null;s=i.child;for(i.child=null;null!==s;){a=s.alternate;if(null!==a&&null===Mh(a)){i.child=s;break}a=s.sibling;s.sibling=u;u=s;s=a}xj(i,!0,u,null,w);break;case\"together\":xj(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function jj(a,i){0===(1&i.mode)&&null!==a&&(a.alternate=null,i.alternate=null,i.flags|=2)}function $i(a,i,u){null!==a&&(i.dependencies=a.dependencies);aa|=i.lanes;if(0===(u&i.childLanes))return null;if(null!==a&&i.child!==a.child)throw Error(p(153));if(null!==i.child){a=i.child;u=wh(a,a.pendingProps);i.child=u;for(u.return=i;null!==a.sibling;)a=a.sibling,u=u.sibling=wh(a,a.pendingProps),u.return=i;u.sibling=null}return i.child}function zj(a,i,u){switch(i.tag){case 3:lj(i);Ig();break;case 5:Kh(i);break;case 1:Zf(i.type)&&cg(i);break;case 4:Ih(i,i.stateNode.containerInfo);break;case 10:var o=i.type._context,s=i.memoizedProps.value;G(Or,o._currentValue);o._currentValue=s;break;case 13:o=i.memoizedState;if(null!==o){if(null!==o.dehydrated)return G(qr,1&qr.current),i.flags|=128,null;if(0!==(u&i.child.childLanes))return pj(a,i,u);G(qr,1&qr.current);a=$i(a,i,u);return null!==a?a.sibling:null}G(qr,1&qr.current);break;case 19:o=0!==(u&i.childLanes);if(0!==(128&a.flags)){if(o)return yj(a,i,u);i.flags|=128}s=i.memoizedState;null!==s&&(s.rendering=null,s.tail=null,s.lastEffect=null);G(qr,qr.current);if(o)break;return null;case 22:case 23:return i.lanes=0,ej(a,i,u)}return $i(a,i,u)}var Ml,Fl,Rl,Ol;Ml=function(a,i){for(var u=i.child;null!==u;){if(5===u.tag||6===u.tag)a.appendChild(u.stateNode);else if(4!==u.tag&&null!==u.child){u.child.return=u;u=u.child;continue}if(u===i)break;for(;null===u.sibling;){if(null===u.return||u.return===i)return;u=u.return}u.sibling.return=u.return;u=u.sibling}};Fl=function(){};Rl=function(a,i,u,o){var s=a.memoizedProps;if(s!==o){a=i.stateNode;Hh(Yr.current);var w=null;switch(u){case\"input\":s=Ya(a,s);o=Ya(a,o);w=[];break;case\"select\":s=ie({},s,{value:void 0});o=ie({},o,{value:void 0});w=[];break;case\"textarea\":s=gb(a,s);o=gb(a,o);w=[];break;default:\"function\"!==typeof s.onClick&&\"function\"===typeof o.onClick&&(a.onclick=Bf)}ub(u,o);var x;u=null;for(_ in s)if(!o.hasOwnProperty(_)&&s.hasOwnProperty(_)&&null!=s[_])if(\"style\"===_){var C=s[_];for(x in C)C.hasOwnProperty(x)&&(u||(u={}),u[x]=\"\")}else\"dangerouslySetInnerHTML\"!==_&&\"children\"!==_&&\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&\"autoFocus\"!==_&&(z.hasOwnProperty(_)?w||(w=[]):(w=w||[]).push(_,null));for(_ in o){var N=o[_];C=null!=s?s[_]:void 0;if(o.hasOwnProperty(_)&&N!==C&&(null!=N||null!=C))if(\"style\"===_)if(C){for(x in C)!C.hasOwnProperty(x)||N&&N.hasOwnProperty(x)||(u||(u={}),u[x]=\"\");for(x in N)N.hasOwnProperty(x)&&C[x]!==N[x]&&(u||(u={}),u[x]=N[x])}else u||(w||(w=[]),w.push(_,u)),u=N;else\"dangerouslySetInnerHTML\"===_?(N=N?N.__html:void 0,C=C?C.__html:void 0,null!=N&&C!==N&&(w=w||[]).push(_,N)):\"children\"===_?\"string\"!==typeof N&&\"number\"!==typeof N||(w=w||[]).push(_,\"\"+N):\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&(z.hasOwnProperty(_)?(null!=N&&\"onScroll\"===_&&D(\"scroll\",a),w||C===N||(w=[])):(w=w||[]).push(_,N))}u&&(w=w||[]).push(\"style\",u);var _=w;(i.updateQueue=_)&&(i.flags|=4)}};Ol=function(a,i,u,o){u!==o&&(i.flags|=4)};function Ej(a,i){if(!Mr)switch(a.tailMode){case\"hidden\":i=a.tail;for(var u=null;null!==i;)null!==i.alternate&&(u=i),i=i.sibling;null===u?a.tail=null:u.sibling=null;break;case\"collapsed\":u=a.tail;for(var o=null;null!==u;)null!==u.alternate&&(o=u),u=u.sibling;null===o?i||null===a.tail?a.tail=null:a.tail.sibling=null:o.sibling=null}}function S(a){var i=null!==a.alternate&&a.alternate.child===a.child,u=0,o=0;if(i)for(var s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=14680064&s.subtreeFlags,o|=14680064&s.flags,s.return=a,s=s.sibling;else for(s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=s.subtreeFlags,o|=s.flags,s.return=a,s=s.sibling;a.subtreeFlags|=o;a.childLanes=u;return i}function Fj(a,i,u){var o=i.pendingProps;wg(i);switch(i.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(i),null;case 1:return Zf(i.type)&&$f(),S(i),null;case 3:o=i.stateNode;Jh();E(br);E(vr);Oh();o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null);null!==a&&null!==a.child||(Gg(i)?i.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(256&i.flags)||(i.flags|=1024,null!==Fr&&(Gj(Fr),Fr=null)));Fl(a,i);S(i);return null;case 5:Lh(i);var s=Hh(Gr.current);u=i.type;if(null!==a&&null!=i.stateNode)Rl(a,i,u,o,s),a.ref!==i.ref&&(i.flags|=512,i.flags|=2097152);else{if(!o){if(null===i.stateNode)throw Error(p(166));S(i);return null}a=Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.type;var w=i.memoizedProps;o[or]=i;o[sr]=w;a=0!==(1&i.mode);switch(u){case\"dialog\":D(\"cancel\",o);D(\"close\",o);break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",o);break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],o);break;case\"source\":D(\"error\",o);break;case\"img\":case\"image\":case\"link\":D(\"error\",o);D(\"load\",o);break;case\"details\":D(\"toggle\",o);break;case\"input\":Za(o,w);D(\"invalid\",o);break;case\"select\":o._wrapperState={wasMultiple:!!w.multiple};D(\"invalid\",o);break;case\"textarea\":hb(o,w),D(\"invalid\",o)}ub(u,w);s=null;for(var x in w)if(w.hasOwnProperty(x)){var C=w[x];\"children\"===x?\"string\"===typeof C?o.textContent!==C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",C]):\"number\"===typeof C&&o.textContent!==\"\"+C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",\"\"+C]):z.hasOwnProperty(x)&&null!=C&&\"onScroll\"===x&&D(\"scroll\",o)}switch(u){case\"input\":Va(o);db(o,w,!0);break;case\"textarea\":Va(o);jb(o);break;case\"select\":case\"option\":break;default:\"function\"===typeof w.onClick&&(o.onclick=Bf)}o=s;i.updateQueue=o;null!==o&&(i.flags|=4)}else{x=9===s.nodeType?s:s.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(u));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===u?(a=x.createElement(\"div\"),a.innerHTML=\"<script><\\/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof o.is?a=x.createElement(u,{is:o.is}):(a=x.createElement(u),\"select\"===u&&(x=a,o.multiple?x.multiple=!0:o.size&&(x.size=o.size))):a=x.createElementNS(a,u);a[or]=i;a[sr]=o;Ml(a,i,!1,!1);i.stateNode=a;e:{x=vb(u,o);switch(u){case\"dialog\":D(\"cancel\",a);D(\"close\",a);s=o;break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",a);s=o;break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],a);s=o;break;case\"source\":D(\"error\",a);s=o;break;case\"img\":case\"image\":case\"link\":D(\"error\",a);D(\"load\",a);s=o;break;case\"details\":D(\"toggle\",a);s=o;break;case\"input\":Za(a,o);s=Ya(a,o);D(\"invalid\",a);break;case\"option\":s=o;break;case\"select\":a._wrapperState={wasMultiple:!!o.multiple};s=ie({},o,{value:void 0});D(\"invalid\",a);break;case\"textarea\":hb(a,o);s=gb(a,o);D(\"invalid\",a);break;default:s=o}ub(u,s);C=s;for(w in C)if(C.hasOwnProperty(w)){var N=C[w];\"style\"===w?sb(a,N):\"dangerouslySetInnerHTML\"===w?(N=N?N.__html:void 0,null!=N&&pe(a,N)):\"children\"===w?\"string\"===typeof N?(\"textarea\"!==u||\"\"!==N)&&ob(a,N):\"number\"===typeof N&&ob(a,\"\"+N):\"suppressContentEditableWarning\"!==w&&\"suppressHydrationWarning\"!==w&&\"autoFocus\"!==w&&(z.hasOwnProperty(w)?null!=N&&\"onScroll\"===w&&D(\"scroll\",a):null!=N&&ta(a,w,N,x))}switch(u){case\"input\":Va(a);db(a,o,!1);break;case\"textarea\":Va(a);jb(a);break;case\"option\":null!=o.value&&a.setAttribute(\"value\",\"\"+Sa(o.value));break;case\"select\":a.multiple=!!o.multiple;w=o.value;null!=w?fb(a,!!o.multiple,w,!1):null!=o.defaultValue&&fb(a,!!o.multiple,o.defaultValue,!0);break;default:\"function\"===typeof s.onClick&&(a.onclick=Bf)}switch(u){case\"button\":case\"input\":case\"select\":case\"textarea\":o=!!o.autoFocus;break e;case\"img\":o=!0;break e;default:o=!1}}o&&(i.flags|=4)}null!==i.ref&&(i.flags|=512,i.flags|=2097152)}S(i);return null;case 6:if(a&&null!=i.stateNode)Ol(a,i,a.memoizedProps,o);else{if(\"string\"!==typeof o&&null===i.stateNode)throw Error(p(166));u=Hh(Gr.current);Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.memoizedProps;o[or]=i;if((w=o.nodeValue!==u)&&(a=Tr,null!==a))switch(a.tag){case 3:Af(o.nodeValue,u,0!==(1&a.mode));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(o.nodeValue,u,0!==(1&a.mode))}w&&(i.flags|=4)}else o=(9===u.nodeType?u:u.ownerDocument).createTextNode(o),o[or]=i,i.stateNode=o}S(i);return null;case 13:E(qr);o=i.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(Mr&&null!==Dr&&0!==(1&i.mode)&&0===(128&i.flags))Hg(),Ig(),i.flags|=98560,w=!1;else if(w=Gg(i),null!==o&&null!==o.dehydrated){if(null===a){if(!w)throw Error(p(318));w=i.memoizedState;w=null!==w?w.dehydrated:null;if(!w)throw Error(p(317));w[or]=i}else Ig(),0===(128&i.flags)&&(i.memoizedState=null),i.flags|=4;S(i);w=!1}else null!==Fr&&(Gj(Fr),Fr=null),w=!0;if(!w)return 65536&i.flags?i:null}if(0!==(128&i.flags))return i.lanes=u,i;o=null!==o;o!==(null!==a&&null!==a.memoizedState)&&o&&(i.child.flags|=8192,0!==(1&i.mode)&&(null===a||0!==(1&qr.current)?0===ra&&(ra=3):uj()));null!==i.updateQueue&&(i.flags|=4);S(i);return null;case 4:return Jh(),Fl(a,i),null===a&&sf(i.stateNode.containerInfo),S(i),null;case 10:return Rg(i.type._context),S(i),null;case 17:return Zf(i.type)&&$f(),S(i),null;case 19:E(qr);w=i.memoizedState;if(null===w)return S(i),null;o=0!==(128&i.flags);x=w.rendering;if(null===x)if(o)Ej(w,!1);else{if(0!==ra||null!==a&&0!==(128&a.flags))for(a=i.child;null!==a;){x=Mh(a);if(null!==x){i.flags|=128;Ej(w,!1);o=x.updateQueue;null!==o&&(i.updateQueue=o,i.flags|=4);i.subtreeFlags=0;o=u;for(u=i.child;null!==u;)w=u,a=o,w.flags&=14680066,x=w.alternate,null===x?(w.childLanes=0,w.lanes=a,w.child=null,w.subtreeFlags=0,w.memoizedProps=null,w.memoizedState=null,w.updateQueue=null,w.dependencies=null,w.stateNode=null):(w.childLanes=x.childLanes,w.lanes=x.lanes,w.child=x.child,w.subtreeFlags=0,w.deletions=null,w.memoizedProps=x.memoizedProps,w.memoizedState=x.memoizedState,w.updateQueue=x.updateQueue,w.type=x.type,a=x.dependencies,w.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),u=u.sibling;G(qr,1&qr.current|2);return i.child}a=a.sibling}null!==w.tail&&tn()>ma&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304)}else{if(!o)if(a=Mh(x),null!==a){if(i.flags|=128,o=!0,u=a.updateQueue,null!==u&&(i.updateQueue=u,i.flags|=4),Ej(w,!0),null===w.tail&&\"hidden\"===w.tailMode&&!x.alternate&&!Mr)return S(i),null}else 2*tn()-w.renderingStartTime>ma&&1073741824!==u&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304);w.isBackwards?(x.sibling=i.child,i.child=x):(u=w.last,null!==u?u.sibling=x:i.child=x,w.last=x)}if(null!==w.tail)return i=w.tail,w.rendering=i,w.tail=i.sibling,w.renderingStartTime=tn(),i.sibling=null,u=qr.current,G(qr,o?1&u|2:1&u),i;S(i);return null;case 22:case 23:return Ij(),o=null!==i.memoizedState,null!==a&&null!==a.memoizedState!==o&&(i.flags|=8192),o&&0!==(1&i.mode)?0!==(1073741824&ea)&&(S(i),6&i.subtreeFlags&&(i.flags|=8192)):S(i),null;case 24:return null;case 25:return null}throw Error(p(156,i.tag))}function Jj(a,i){wg(i);switch(i.tag){case 1:return Zf(i.type)&&$f(),a=i.flags,65536&a?(i.flags=-65537&a|128,i):null;case 3:return Jh(),E(br),E(vr),Oh(),a=i.flags,0!==(65536&a)&&0===(128&a)?(i.flags=-65537&a|128,i):null;case 5:return Lh(i),null;case 13:E(qr);a=i.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===i.alternate)throw Error(p(340));Ig()}a=i.flags;return 65536&a?(i.flags=-65537&a|128,i):null;case 19:return E(qr),null;case 4:return Jh(),null;case 10:return Rg(i.type._context),null;case 22:case 23:return Ij(),null;case 24:return null;default:return null}}var Il=!1,Ul=!1,Vl=\"function\"===typeof WeakSet?WeakSet:Set,Wl=null;function Mj(a,i){var u=a.ref;if(null!==u)if(\"function\"===typeof u)try{u(null)}catch(u){W(a,i,u)}else u.current=null}function Nj(a,i,u){try{u()}catch(u){W(a,i,u)}}var Ql=!1;function Pj(a,i){nr=Dn;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var u={start:a.selectionStart,end:a.selectionEnd};else e:{u=(u=a.ownerDocument)&&u.defaultView||window;var o=u.getSelection&&u.getSelection();if(o&&0!==o.rangeCount){u=o.anchorNode;var s=o.anchorOffset,w=o.focusNode;o=o.focusOffset;try{u.nodeType,w.nodeType}catch(a){u=null;break e}var x=0,C=-1,z=-1,N=0,_=0,j=a,P=null;n:for(;;){for(var T;;){j!==u||0!==s&&3!==j.nodeType||(C=x+s);j!==w||0!==o&&3!==j.nodeType||(z=x+o);3===j.nodeType&&(x+=j.nodeValue.length);if(null===(T=j.firstChild))break;P=j;j=T}for(;;){if(j===a)break n;P===u&&++N===s&&(C=x);P===w&&++_===o&&(z=x);if(null!==(T=j.nextSibling))break;j=P;P=j.parentNode}j=T}u=-1===C||-1===z?null:{start:C,end:z}}else u=null}u=u||{start:0,end:0}}else u=null;tr={focusedElem:a,selectionRange:u};Dn=!1;for(Wl=i;null!==Wl;)if(i=Wl,a=i.child,0!==(1028&i.subtreeFlags)&&null!==a)a.return=i,Wl=a;else for(;null!==Wl;){i=Wl;try{var M=i.alternate;if(0!==(1024&i.flags))switch(i.tag){case 0:case 11:case 15:break;case 1:if(null!==M){var F=M.memoizedProps,R=M.memoizedState,O=i.stateNode,I=O.getSnapshotBeforeUpdate(i.elementType===i.type?F:Lg(i.type,F),R);O.__reactInternalSnapshotBeforeUpdate=I}break;case 3:var U=i.stateNode.containerInfo;1===U.nodeType?U.textContent=\"\":9===U.nodeType&&U.documentElement&&U.removeChild(U.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163))}}catch(a){W(i,i.return,a)}a=i.sibling;if(null!==a){a.return=i.return;Wl=a;break}Wl=i.return}M=Ql;Ql=!1;return M}function Qj(a,i,u){var o=i.updateQueue;o=null!==o?o.lastEffect:null;if(null!==o){var s=o=o.next;do{if((s.tag&a)===a){var w=s.destroy;s.destroy=void 0;void 0!==w&&Nj(i,u,w)}s=s.next}while(s!==o)}}function Rj(a,i){i=i.updateQueue;i=null!==i?i.lastEffect:null;if(null!==i){var u=i=i.next;do{if((u.tag&a)===a){var o=u.create;u.destroy=o()}u=u.next}while(u!==i)}}function Sj(a){var i=a.ref;if(null!==i){var u=a.stateNode;switch(a.tag){case 5:a=u;break;default:a=u}\"function\"===typeof i?i(a):i.current=a}}function Tj(a){var i=a.alternate;null!==i&&(a.alternate=null,Tj(i));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(i=a.stateNode,null!==i&&(delete i[or],delete i[sr],delete i[fr],delete i[dr],delete i[pr]));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 Uj(a){return 5===a.tag||3===a.tag||4===a.tag}function Vj(a){e:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(2&a.flags)continue e;if(null===a.child||4===a.tag)continue e;a.child.return=a,a=a.child}if(!(2&a.flags))return a.stateNode}}function Wj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?8===u.nodeType?u.parentNode.insertBefore(a,i):u.insertBefore(a,i):(8===u.nodeType?(i=u.parentNode,i.insertBefore(a,u)):(i=u,i.appendChild(a)),u=u._reactRootContainer,null!==u&&void 0!==u||null!==i.onclick||(i.onclick=Bf));else if(4!==o&&(a=a.child,null!==a))for(Wj(a,i,u),a=a.sibling;null!==a;)Wj(a,i,u),a=a.sibling}function Xj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?u.insertBefore(a,i):u.appendChild(a);else if(4!==o&&(a=a.child,null!==a))for(Xj(a,i,u),a=a.sibling;null!==a;)Xj(a,i,u),a=a.sibling}var Al=null,Bl=!1;function Zj(a,i,u){for(u=u.child;null!==u;)ak(a,i,u),u=u.sibling}function ak(a,i,u){if(fn&&\"function\"===typeof fn.onCommitFiberUnmount)try{fn.onCommitFiberUnmount(cn,u)}catch(a){}switch(u.tag){case 5:Ul||Mj(u,i);case 6:var o=Al,s=Bl;Al=null;Zj(a,i,u);Al=o;Bl=s;null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?a.parentNode.removeChild(u):a.removeChild(u)):Al.removeChild(u.stateNode));break;case 18:null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?Kf(a.parentNode,u):1===a.nodeType&&Kf(a,u),bd(a)):Kf(Al,u.stateNode));break;case 4:o=Al;s=Bl;Al=u.stateNode.containerInfo;Bl=!0;Zj(a,i,u);Al=o;Bl=s;break;case 0:case 11:case 14:case 15:if(!Ul&&(o=u.updateQueue,null!==o&&(o=o.lastEffect,null!==o))){s=o=o.next;do{var w=s,x=w.destroy;w=w.tag;void 0!==x&&(0!==(2&w)||0!==(4&w))&&Nj(u,i,x);s=s.next}while(s!==o)}Zj(a,i,u);break;case 1:if(!Ul&&(Mj(u,i),o=u.stateNode,\"function\"===typeof o.componentWillUnmount))try{o.props=u.memoizedProps,o.state=u.memoizedState,o.componentWillUnmount()}catch(a){W(u,i,a)}Zj(a,i,u);break;case 21:Zj(a,i,u);break;case 22:1&u.mode?(Ul=(o=Ul)||null!==u.memoizedState,Zj(a,i,u),Ul=o):Zj(a,i,u);break;default:Zj(a,i,u)}}function bk(a){var i=a.updateQueue;if(null!==i){a.updateQueue=null;var u=a.stateNode;null===u&&(u=a.stateNode=new Vl);i.forEach((function(i){var o=ck.bind(null,a,i);u.has(i)||(u.add(i),i.then(o,o))}))}}function dk(a,i){var u=i.deletions;if(null!==u)for(var o=0;o<u.length;o++){var s=u[o];try{var w=a,x=i,C=x;e:for(;null!==C;){switch(C.tag){case 5:Al=C.stateNode;Bl=!1;break e;case 3:Al=C.stateNode.containerInfo;Bl=!0;break e;case 4:Al=C.stateNode.containerInfo;Bl=!0;break e}C=C.return}if(null===Al)throw Error(p(160));ak(w,x,s);Al=null;Bl=!1;var z=s.alternate;null!==z&&(z.return=null);s.return=null}catch(a){W(s,i,a)}}if(12854&i.subtreeFlags)for(i=i.child;null!==i;)ek(i,a),i=i.sibling}function ek(a,i){var u=a.alternate,o=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(i,a);fk(a);if(4&o){try{Qj(3,a,a.return),Rj(3,a)}catch(i){W(a,a.return,i)}try{Qj(5,a,a.return)}catch(i){W(a,a.return,i)}}break;case 1:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);break;case 5:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);if(32&a.flags){var s=a.stateNode;try{ob(s,\"\")}catch(i){W(a,a.return,i)}}if(4&o&&(s=a.stateNode,null!=s)){var w=a.memoizedProps,x=null!==u?u.memoizedProps:w,C=a.type,z=a.updateQueue;a.updateQueue=null;if(null!==z)try{\"input\"===C&&\"radio\"===w.type&&null!=w.name&&ab(s,w);vb(C,x);var N=vb(C,w);for(x=0;x<z.length;x+=2){var _=z[x],j=z[x+1];\"style\"===_?sb(s,j):\"dangerouslySetInnerHTML\"===_?pe(s,j):\"children\"===_?ob(s,j):ta(s,_,j,N)}switch(C){case\"input\":bb(s,w);break;case\"textarea\":ib(s,w);break;case\"select\":var P=s._wrapperState.wasMultiple;s._wrapperState.wasMultiple=!!w.multiple;var T=w.value;null!=T?fb(s,!!w.multiple,T,!1):P!==!!w.multiple&&(null!=w.defaultValue?fb(s,!!w.multiple,w.defaultValue,!0):fb(s,!!w.multiple,w.multiple?[]:\"\",!1))}s[sr]=w}catch(i){W(a,a.return,i)}}break;case 6:dk(i,a);fk(a);if(4&o){if(null===a.stateNode)throw Error(p(162));s=a.stateNode;w=a.memoizedProps;try{s.nodeValue=w}catch(i){W(a,a.return,i)}}break;case 3:dk(i,a);fk(a);if(4&o&&null!==u&&u.memoizedState.isDehydrated)try{bd(i.containerInfo)}catch(i){W(a,a.return,i)}break;case 4:dk(i,a);fk(a);break;case 13:dk(i,a);fk(a);s=a.child;8192&s.flags&&(w=null!==s.memoizedState,s.stateNode.isHidden=w,!w||null!==s.alternate&&null!==s.alternate.memoizedState||(ga=tn()));4&o&&bk(a);break;case 22:_=null!==u&&null!==u.memoizedState;1&a.mode?(Ul=(N=Ul)||_,dk(i,a),Ul=N):dk(i,a);fk(a);if(8192&o){N=null!==a.memoizedState;if((a.stateNode.isHidden=N)&&!_&&0!==(1&a.mode))for(Wl=a,_=a.child;null!==_;){for(j=Wl=_;null!==Wl;){P=Wl;T=P.child;switch(P.tag){case 0:case 11:case 14:case 15:Qj(4,P,P.return);break;case 1:Mj(P,P.return);var M=P.stateNode;if(\"function\"===typeof M.componentWillUnmount){o=P;u=P.return;try{i=o,M.props=i.memoizedProps,M.state=i.memoizedState,M.componentWillUnmount()}catch(a){W(o,u,a)}}break;case 5:Mj(P,P.return);break;case 22:if(null!==P.memoizedState){hk(j);continue}}null!==T?(T.return=P,Wl=T):hk(j)}_=_.sibling}e:for(_=null,j=a;;){if(5===j.tag){if(null===_){_=j;try{s=j.stateNode,N?(w=s.style,\"function\"===typeof w.setProperty?w.setProperty(\"display\",\"none\",\"important\"):w.display=\"none\"):(C=j.stateNode,z=j.memoizedProps.style,x=void 0!==z&&null!==z&&z.hasOwnProperty(\"display\")?z.display:null,C.style.display=rb(\"display\",x))}catch(i){W(a,a.return,i)}}}else if(6===j.tag){if(null===_)try{j.stateNode.nodeValue=N?\"\":j.memoizedProps}catch(i){W(a,a.return,i)}}else if((22!==j.tag&&23!==j.tag||null===j.memoizedState||j===a)&&null!==j.child){j.child.return=j;j=j.child;continue}if(j===a)break e;for(;null===j.sibling;){if(null===j.return||j.return===a)break e;_===j&&(_=null);j=j.return}_===j&&(_=null);j.sibling.return=j.return;j=j.sibling}}break;case 19:dk(i,a);fk(a);4&o&&bk(a);break;case 21:break;default:dk(i,a),fk(a)}}function fk(a){var i=a.flags;if(2&i){try{e:{for(var u=a.return;null!==u;){if(Uj(u)){var o=u;break e}u=u.return}throw Error(p(160))}switch(o.tag){case 5:var s=o.stateNode;32&o.flags&&(ob(s,\"\"),o.flags&=-33);var w=Vj(a);Xj(a,w,s);break;case 3:case 4:var x=o.stateNode.containerInfo,C=Vj(a);Wj(a,C,x);break;default:throw Error(p(161))}}catch(i){W(a,a.return,i)}a.flags&=-3}4096&i&&(a.flags&=-4097)}function ik(a,i,u){Wl=a;jk(a,i,u)}function jk(a,i,u){for(var o=0!==(1&a.mode);null!==Wl;){var s=Wl,w=s.child;if(22===s.tag&&o){var x=null!==s.memoizedState||Il;if(!x){var C=s.alternate,z=null!==C&&null!==C.memoizedState||Ul;C=Il;var N=Ul;Il=x;if((Ul=z)&&!N)for(Wl=s;null!==Wl;)x=Wl,z=x.child,22===x.tag&&null!==x.memoizedState?kk(s):null!==z?(z.return=x,Wl=z):kk(s);for(;null!==w;)Wl=w,jk(w,i,u),w=w.sibling;Wl=s;Il=C;Ul=N}lk(a,i,u)}else 0!==(8772&s.subtreeFlags)&&null!==w?(w.return=s,Wl=w):lk(a,i,u)}}function lk(a){for(;null!==Wl;){var i=Wl;if(0!==(8772&i.flags)){var u=i.alternate;try{if(0!==(8772&i.flags))switch(i.tag){case 0:case 11:case 15:Ul||Rj(5,i);break;case 1:var o=i.stateNode;if(4&i.flags&&!Ul)if(null===u)o.componentDidMount();else{var s=i.elementType===i.type?u.memoizedProps:Lg(i.type,u.memoizedProps);o.componentDidUpdate(s,u.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var w=i.updateQueue;null!==w&&ih(i,w,o);break;case 3:var x=i.updateQueue;if(null!==x){u=null;if(null!==i.child)switch(i.child.tag){case 5:u=i.child.stateNode;break;case 1:u=i.child.stateNode}ih(i,x,u)}break;case 5:var C=i.stateNode;if(null===u&&4&i.flags){u=C;var z=i.memoizedProps;switch(i.type){case\"button\":case\"input\":case\"select\":case\"textarea\":z.autoFocus&&u.focus();break;case\"img\":z.src&&(u.src=z.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===i.memoizedState){var N=i.alternate;if(null!==N){var _=N.memoizedState;if(null!==_){var j=_.dehydrated;null!==j&&bd(j)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(p(163))}Ul||512&i.flags&&Sj(i)}catch(a){W(i,i.return,a)}}if(i===a){Wl=null;break}u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function hk(a){for(;null!==Wl;){var i=Wl;if(i===a){Wl=null;break}var u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function kk(a){for(;null!==Wl;){var i=Wl;try{switch(i.tag){case 0:case 11:case 15:var u=i.return;try{Rj(4,i)}catch(a){W(i,u,a)}break;case 1:var o=i.stateNode;if(\"function\"===typeof o.componentDidMount){var s=i.return;try{o.componentDidMount()}catch(a){W(i,s,a)}}var w=i.return;try{Sj(i)}catch(a){W(i,w,a)}break;case 5:var x=i.return;try{Sj(i)}catch(a){W(i,x,a)}}}catch(a){W(i,i.return,a)}if(i===a){Wl=null;break}var C=i.sibling;if(null!==C){C.return=i.return;Wl=C;break}Wl=i.return}}var Hl=Math.ceil,$l=R.ReactCurrentDispatcher,Kl=R.ReactCurrentOwner,Yl=R.ReactCurrentBatchConfig,Zl=0,Gl=null,Xl=null,Jl=0,ea=0,na=Uf(0),ra=0,la=null,aa=0,ia=0,ua=0,ca=null,da=null,ga=0,ma=Infinity,va=null,ba=!1,ya=null,ka=null,wa=!1,Ea=null,xa=0,Ca=0,za=null,Na=-1,La=0;function L(){return 0!==(6&Zl)?tn():-1!==Na?Na:Na=tn()}function lh(a){if(0===(1&a.mode))return 1;if(0!==(2&Zl)&&0!==Jl)return Jl&-Jl;if(null!==Rr.transition)return 0===La&&(La=yc()),La;a=vn;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,i,u,o){if(50<Ca)throw Ca=0,za=null,Error(p(185));Ac(a,u,o);0!==(2&Zl)&&a===Gl||(a===Gl&&(0===(2&Zl)&&(ia|=u),4===ra&&Dk(a,Jl)),Ek(a,o),1===u&&0===Zl&&0===(1&i.mode)&&(ma=tn()+500,wr&&jg()))}function Ek(a,i){var u=a.callbackNode;wc(a,i);var o=uc(a,a===Gl?Jl:0);if(0===o)null!==u&&Xe(u),a.callbackNode=null,a.callbackPriority=0;else if(i=o&-o,a.callbackPriority!==i){null!=u&&Xe(u);if(1===i)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),ir((function(){0===(6&Zl)&&jg()})),u=null;else{switch(Dc(o)){case 1:u=ln;break;case 4:u=an;break;case 16:u=un;break;case 536870912:u=sn;break;default:u=un}u=Gk(u,Hk.bind(null,a))}a.callbackPriority=i;a.callbackNode=u}}function Hk(a,i){Na=-1;La=0;if(0!==(6&Zl))throw Error(p(327));var u=a.callbackNode;if(Ik()&&a.callbackNode!==u)return null;var o=uc(a,a===Gl?Jl:0);if(0===o)return null;if(0!==(30&o)||0!==(o&a.expiredLanes)||i)i=Jk(a,o);else{i=o;var s=Zl;Zl|=2;var w=Kk();Gl===a&&Jl===i||(va=null,ma=tn()+500,Lk(a,i));do{try{Mk();break}catch(i){Nk(a,i)}}while(1);Qg();$l.current=w;Zl=s;null!==Xl?i=0:(Gl=null,Jl=0,i=ra)}if(0!==i){2===i&&(s=xc(a),0!==s&&(o=s,i=Ok(a,s)));if(1===i)throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;if(6===i)Dk(a,o);else{s=a.current.alternate;if(0===(30&o)&&!Pk(s)&&(i=Jk(a,o),2===i&&(w=xc(a),0!==w&&(o=w,i=Ok(a,w))),1===i))throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;a.finishedWork=s;a.finishedLanes=o;switch(i){case 0:case 1:throw Error(p(345));case 2:Qk(a,da,va);break;case 3:Dk(a,o);if((130023424&o)===o&&(i=ga+500-tn(),10<i)){if(0!==uc(a,0))break;s=a.suspendedLanes;if((s&o)!==o){L();a.pingedLanes|=a.suspendedLanes&s;break}a.timeoutHandle=rr(Qk.bind(null,a,da,va),i);break}Qk(a,da,va);break;case 4:Dk(a,o);if((4194240&o)===o)break;i=a.eventTimes;for(s=-1;0<o;){var x=31-dn(o);w=1<<x;x=i[x];x>s&&(s=x);o&=~w}o=s;o=tn()-o;o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Hl(o/1960))-o;if(10<o){a.timeoutHandle=rr(Qk.bind(null,a,da,va),o);break}Qk(a,da,va);break;case 5:Qk(a,da,va);break;default:throw Error(p(329))}}}Ek(a,tn());return a.callbackNode===u?Hk.bind(null,a):null}function Ok(a,i){var u=ca;a.current.memoizedState.isDehydrated&&(Lk(a,i).flags|=256);a=Jk(a,i);2!==a&&(i=da,da=u,null!==i&&Gj(i));return a}function Gj(a){null===da?da=a:da.push.apply(da,a)}function Pk(a){for(var i=a;;){if(16384&i.flags){var u=i.updateQueue;if(null!==u&&(u=u.stores,null!==u))for(var o=0;o<u.length;o++){var s=u[o],w=s.getSnapshot;s=s.value;try{if(!Pt(w(),s))return!1}catch(a){return!1}}}u=i.child;if(16384&i.subtreeFlags&&null!==u)u.return=i,i=u;else{if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return!0;i=i.return}i.sibling.return=i.return;i=i.sibling}}return!0}function Dk(a,i){i&=~ua;i&=~ia;a.suspendedLanes|=i;a.pingedLanes&=~i;for(a=a.expirationTimes;0<i;){var u=31-dn(i),o=1<<u;a[u]=-1;i&=~o}}function Fk(a){if(0!==(6&Zl))throw Error(p(327));Ik();var i=uc(a,0);if(0===(1&i))return Ek(a,tn()),null;var u=Jk(a,i);if(0!==a.tag&&2===u){var o=xc(a);0!==o&&(i=o,u=Ok(a,o))}if(1===u)throw u=la,Lk(a,0),Dk(a,i),Ek(a,tn()),u;if(6===u)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=i;Qk(a,da,va);Ek(a,tn());return null}function Rk(a,i){var u=Zl;Zl|=1;try{return a(i)}finally{Zl=u,0===Zl&&(ma=tn()+500,wr&&jg())}}function Sk(a){null!==Ea&&0===Ea.tag&&0===(6&Zl)&&Ik();var i=Zl;Zl|=1;var u=Yl.transition,o=vn;try{if(Yl.transition=null,vn=1,a)return a()}finally{vn=o,Yl.transition=u,Zl=i,0===(6&Zl)&&jg()}}function Ij(){ea=na.current;E(na)}function Lk(a,i){a.finishedWork=null;a.finishedLanes=0;var u=a.timeoutHandle;-1!==u&&(a.timeoutHandle=-1,lr(u));if(null!==Xl)for(u=Xl.return;null!==u;){var o=u;wg(o);switch(o.tag){case 1:o=o.type.childContextTypes;null!==o&&void 0!==o&&$f();break;case 3:Jh();E(br);E(vr);Oh();break;case 5:Lh(o);break;case 4:Jh();break;case 13:E(qr);break;case 19:E(qr);break;case 10:Rg(o.type._context);break;case 22:case 23:Ij()}u=u.return}Gl=a;Xl=a=wh(a.current,null);Jl=ea=i;ra=0;la=null;ua=ia=aa=0;da=ca=null;if(null!==Wr){for(i=0;i<Wr.length;i++)if(u=Wr[i],o=u.interleaved,null!==o){u.interleaved=null;var s=o.next,w=u.pending;if(null!==w){var x=w.next;w.next=s;o.next=x}u.pending=o}Wr=null}return a}function Nk(a,i){do{var u=Xl;try{Qg();Jr.current=Cl;if(wl){for(var o=ul.memoizedState;null!==o;){var s=o.queue;null!==s&&(s.pending=null);o=o.next}wl=!1}ll=0;yl=vl=ul=null;Sl=!1;El=0;Kl.current=null;if(null===u||null===u.return){ra=1;la=i;Xl=null;break}e:{var w=a,x=u.return,C=u,z=i;i=Jl;C.flags|=32768;if(null!==z&&\"object\"===typeof z&&\"function\"===typeof z.then){var N=z,_=C,j=_.tag;if(0===(1&_.mode)&&(0===j||11===j||15===j)){var P=_.alternate;P?(_.updateQueue=P.updateQueue,_.memoizedState=P.memoizedState,_.lanes=P.lanes):(_.updateQueue=null,_.memoizedState=null)}var T=Vi(x);if(null!==T){T.flags&=-257;Wi(T,x,C,w,i);1&T.mode&&Ti(w,N,i);i=T;z=N;var M=i.updateQueue;if(null===M){var F=new Set;F.add(z);i.updateQueue=F}else M.add(z);break e}if(0===(1&i)){Ti(w,N,i);uj();break e}z=Error(p(426))}else if(Mr&&1&C.mode){var R=Vi(x);if(null!==R){0===(65536&R.flags)&&(R.flags|=256);Wi(R,x,C,w,i);Jg(Ki(z,C));break e}}w=z=Ki(z,C);4!==ra&&(ra=2);null===ca?ca=[w]:ca.push(w);w=x;do{switch(w.tag){case 3:w.flags|=65536;i&=-i;w.lanes|=i;var O=Oi(w,z,i);fh(w,O);break e;case 1:C=z;var I=w.type,U=w.stateNode;if(0===(128&w.flags)&&(\"function\"===typeof I.getDerivedStateFromError||null!==U&&\"function\"===typeof U.componentDidCatch&&(null===ka||!ka.has(U)))){w.flags|=65536;i&=-i;w.lanes|=i;var V=Ri(w,C,i);fh(w,V);break e}}w=w.return}while(null!==w)}Tk(u)}catch(a){i=a;Xl===u&&null!==u&&(Xl=u=u.return);continue}break}while(1)}function Kk(){var a=$l.current;$l.current=Cl;return null===a?Cl:a}function uj(){0!==ra&&3!==ra&&2!==ra||(ra=4);null===Gl||0===(268435455&aa)&&0===(268435455&ia)||Dk(Gl,Jl)}function Jk(a,i){var u=Zl;Zl|=2;var o=Kk();Gl===a&&Jl===i||(va=null,Lk(a,i));do{try{Uk();break}catch(i){Nk(a,i)}}while(1);Qg();Zl=u;$l.current=o;if(null!==Xl)throw Error(p(261));Gl=null;Jl=0;return ra}function Uk(){for(;null!==Xl;)Vk(Xl)}function Mk(){for(;null!==Xl&&!en();)Vk(Xl)}function Vk(a){var i=_a(a.alternate,a,ea);a.memoizedProps=a.pendingProps;null===i?Tk(a):Xl=i;Kl.current=null}function Tk(a){var i=a;do{var u=i.alternate;a=i.return;if(0===(32768&i.flags)){if(u=Fj(u,i,ea),null!==u){Xl=u;return}}else{u=Jj(u,i);if(null!==u){u.flags&=32767;Xl=u;return}if(null===a){ra=6;Xl=null;return}a.flags|=32768,a.subtreeFlags=0,a.deletions=null}i=i.sibling;if(null!==i){Xl=i;return}Xl=i=a}while(null!==i);0===ra&&(ra=5)}function Qk(a,i,u){var o=vn,s=Yl.transition;try{Yl.transition=null,vn=1,Xk(a,i,u,o)}finally{Yl.transition=s,vn=o}return null}function Xk(a,i,u,o){do{Ik()}while(null!==Ea);if(0!==(6&Zl))throw Error(p(327));u=a.finishedWork;var s=a.finishedLanes;if(null===u)return null;a.finishedWork=null;a.finishedLanes=0;if(u===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var w=u.lanes|u.childLanes;Bc(a,w);a===Gl&&(Xl=Gl=null,Jl=0);0===(2064&u.subtreeFlags)&&0===(2064&u.flags)||wa||(wa=!0,Gk(un,(function(){Ik();return null})));w=0!==(15990&u.flags);if(0!==(15990&u.subtreeFlags)||w){w=Yl.transition;Yl.transition=null;var x=vn;vn=1;var C=Zl;Zl|=4;Kl.current=null;Pj(a,u);ek(u,a);Oe(tr);Dn=!!nr;tr=nr=null;a.current=u;ik(u,a,s);nn();Zl=C;vn=x;Yl.transition=w}else a.current=u;wa&&(wa=!1,Ea=a,xa=s);w=a.pendingLanes;0===w&&(ka=null);mc(u.stateNode,o);Ek(a,tn());if(null!==i)for(o=a.onRecoverableError,u=0;u<i.length;u++)s=i[u],o(s.value,{componentStack:s.stack,digest:s.digest});if(ba)throw ba=!1,a=ya,ya=null,a;0!==(1&xa)&&0!==a.tag&&Ik();w=a.pendingLanes;0!==(1&w)?a===za?Ca++:(Ca=0,za=a):Ca=0;jg();return null}function Ik(){if(null!==Ea){var a=Dc(xa),i=Yl.transition,u=vn;try{Yl.transition=null;vn=16>a?16:a;if(null===Ea)var o=!1;else{a=Ea;Ea=null;xa=0;if(0!==(6&Zl))throw Error(p(331));var s=Zl;Zl|=4;for(Wl=a.current;null!==Wl;){var w=Wl,x=w.child;if(0!==(16&Wl.flags)){var C=w.deletions;if(null!==C){for(var z=0;z<C.length;z++){var N=C[z];for(Wl=N;null!==Wl;){var _=Wl;switch(_.tag){case 0:case 11:case 15:Qj(8,_,w)}var j=_.child;if(null!==j)j.return=_,Wl=j;else for(;null!==Wl;){_=Wl;var P=_.sibling,T=_.return;Tj(_);if(_===N){Wl=null;break}if(null!==P){P.return=T;Wl=P;break}Wl=T}}}var M=w.alternate;if(null!==M){var F=M.child;if(null!==F){M.child=null;do{var R=F.sibling;F.sibling=null;F=R}while(null!==F)}}Wl=w}}if(0!==(2064&w.subtreeFlags)&&null!==x)x.return=w,Wl=x;else e:for(;null!==Wl;){w=Wl;if(0!==(2048&w.flags))switch(w.tag){case 0:case 11:case 15:Qj(9,w,w.return)}var O=w.sibling;if(null!==O){O.return=w.return;Wl=O;break e}Wl=w.return}}var I=a.current;for(Wl=I;null!==Wl;){x=Wl;var U=x.child;if(0!==(2064&x.subtreeFlags)&&null!==U)U.return=x,Wl=U;else e:for(x=I;null!==Wl;){C=Wl;if(0!==(2048&C.flags))try{switch(C.tag){case 0:case 11:case 15:Rj(9,C)}}catch(a){W(C,C.return,a)}if(C===x){Wl=null;break e}var V=C.sibling;if(null!==V){V.return=C.return;Wl=V;break e}Wl=C.return}}Zl=s;jg();if(fn&&\"function\"===typeof fn.onPostCommitFiberRoot)try{fn.onPostCommitFiberRoot(cn,a)}catch(a){}o=!0}return o}finally{vn=u,Yl.transition=i}}return!1}function Yk(a,i,u){i=Ki(u,i);i=Oi(a,i,1);a=dh(a,i,1);i=L();null!==a&&(Ac(a,1,i),Ek(a,i))}function W(a,i,u){if(3===a.tag)Yk(a,a,u);else for(;null!==i;){if(3===i.tag){Yk(i,a,u);break}if(1===i.tag){var o=i.stateNode;if(\"function\"===typeof i.type.getDerivedStateFromError||\"function\"===typeof o.componentDidCatch&&(null===ka||!ka.has(o))){a=Ki(u,a);a=Ri(i,a,1);i=dh(i,a,1);a=L();null!==i&&(Ac(i,1,a),Ek(i,a));break}}i=i.return}}function Ui(a,i,u){var o=a.pingCache;null!==o&&o.delete(i);i=L();a.pingedLanes|=a.suspendedLanes&u;Gl===a&&(Jl&u)===u&&(4===ra||3===ra&&(130023424&Jl)===Jl&&500>tn()-ga?Lk(a,0):ua|=u);Ek(a,i)}function Zk(a,i){0===i&&(0===(1&a.mode)?i=1:(i=mn,mn<<=1,0===(130023424&mn)&&(mn=4194304)));var u=L();a=Zg(a,i);null!==a&&(Ac(a,i,u),Ek(a,u))}function vj(a){var i=a.memoizedState,u=0;null!==i&&(u=i.retryLane);Zk(a,u)}function ck(a,i){var u=0;switch(a.tag){case 13:var o=a.stateNode;var s=a.memoizedState;null!==s&&(u=s.retryLane);break;case 19:o=a.stateNode;break;default:throw Error(p(314))}null!==o&&o.delete(i);Zk(a,u)}var _a;_a=function(a,i,u){if(null!==a)if(a.memoizedProps!==i.pendingProps||br.current)Tl=!0;else{if(0===(a.lanes&u)&&0===(128&i.flags))return Tl=!1,zj(a,i,u);Tl=0!==(131072&a.flags)}else Tl=!1,Mr&&0!==(1048576&i.flags)&&ug(i,zr,i.index);i.lanes=0;switch(i.tag){case 2:var o=i.type;jj(a,i);a=i.pendingProps;var s=Yf(i,vr.current);Tg(i,u);s=Xh(null,i,o,a,s,u);var w=bi();i.flags|=1;\"object\"===typeof s&&null!==s&&\"function\"===typeof s.render&&void 0===s.$$typeof?(i.tag=1,i.memoizedState=null,i.updateQueue=null,Zf(o)?(w=!0,cg(i)):w=!1,i.memoizedState=null!==s.state&&void 0!==s.state?s.state:null,ah(i),s.updater=Br,i.stateNode=s,s._reactInternals=i,rh(i,o,a,u),i=kj(null,i,o,!0,w,u)):(i.tag=0,Mr&&w&&vg(i),Yi(null,i,s,u),i=i.child);return i;case 16:o=i.elementType;e:{jj(a,i);a=i.pendingProps;s=o._init;o=s(o._payload);i.type=o;s=i.tag=$k(o);a=Lg(o,a);switch(s){case 0:i=dj(null,i,o,a,u);break e;case 1:i=ij(null,i,o,a,u);break e;case 11:i=Zi(null,i,o,a,u);break e;case 14:i=aj(null,i,o,Lg(o.type,a),u);break e}throw Error(p(306,o,\"\"))}return i;case 0:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),dj(a,i,o,s,u);case 1:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),ij(a,i,o,s,u);case 3:e:{lj(i);if(null===a)throw Error(p(387));o=i.pendingProps;w=i.memoizedState;s=w.element;bh(a,i);gh(i,o,null,u);var x=i.memoizedState;o=x.element;if(w.isDehydrated){if(w={element:o,isDehydrated:!1,cache:x.cache,pendingSuspenseBoundaries:x.pendingSuspenseBoundaries,transitions:x.transitions},i.updateQueue.baseState=w,i.memoizedState=w,256&i.flags){s=Ki(Error(p(423)),i);i=mj(a,i,o,u,s);break e}if(o!==s){s=Ki(Error(p(424)),i);i=mj(a,i,o,u,s);break e}for(Dr=Lf(i.stateNode.containerInfo.firstChild),Tr=i,Mr=!0,Fr=null,u=$r(i,null,o,u),i.child=u;u;)u.flags=-3&u.flags|4096,u=u.sibling}else{Ig();if(o===s){i=$i(a,i,u);break e}Yi(a,i,o,u)}i=i.child}return i;case 5:return Kh(i),null===a&&Eg(i),o=i.type,s=i.pendingProps,w=null!==a?a.memoizedProps:null,x=s.children,Ef(o,s)?x=null:null!==w&&Ef(o,w)&&(i.flags|=32),hj(a,i),Yi(a,i,x,u),i.child;case 6:return null===a&&Eg(i),null;case 13:return pj(a,i,u);case 4:return Ih(i,i.stateNode.containerInfo),o=i.pendingProps,null===a?i.child=Hr(i,null,o,u):Yi(a,i,o,u),i.child;case 11:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),Zi(a,i,o,s,u);case 7:return Yi(a,i,i.pendingProps,u),i.child;case 8:return Yi(a,i,i.pendingProps.children,u),i.child;case 12:return Yi(a,i,i.pendingProps.children,u),i.child;case 10:e:{o=i.type._context;s=i.pendingProps;w=i.memoizedProps;x=s.value;G(Or,o._currentValue);o._currentValue=x;if(null!==w)if(Pt(w.value,x)){if(w.children===s.children&&!br.current){i=$i(a,i,u);break e}}else for(w=i.child,null!==w&&(w.return=i);null!==w;){var C=w.dependencies;if(null!==C){x=w.child;for(var z=C.firstContext;null!==z;){if(z.context===o){if(1===w.tag){z=ch(-1,u&-u);z.tag=2;var N=w.updateQueue;if(null!==N){N=N.shared;var _=N.pending;null===_?z.next=z:(z.next=_.next,_.next=z);N.pending=z}}w.lanes|=u;z=w.alternate;null!==z&&(z.lanes|=u);Sg(w.return,u,i);C.lanes|=u;break}z=z.next}}else if(10===w.tag)x=w.type===i.type?null:w.child;else if(18===w.tag){x=w.return;if(null===x)throw Error(p(341));x.lanes|=u;C=x.alternate;null!==C&&(C.lanes|=u);Sg(x,u,i);x=w.sibling}else x=w.child;if(null!==x)x.return=w;else for(x=w;null!==x;){if(x===i){x=null;break}w=x.sibling;if(null!==w){w.return=x.return;x=w;break}x=x.return}w=x}Yi(a,i,s.children,u);i=i.child}return i;case 9:return s=i.type,o=i.pendingProps.children,Tg(i,u),s=Vg(s),o=o(s),i.flags|=1,Yi(a,i,o,u),i.child;case 14:return o=i.type,s=Lg(o,i.pendingProps),s=Lg(o.type,s),aj(a,i,o,s,u);case 15:return cj(a,i,i.type,i.pendingProps,u);case 17:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),jj(a,i),i.tag=1,Zf(o)?(a=!0,cg(i)):a=!1,Tg(i,u),ph(i,o,s),rh(i,o,s,u),kj(null,i,o,!0,a,u);case 19:return yj(a,i,u);case 22:return ej(a,i,u)}throw Error(p(156,i.tag))};function Gk(a,i){return qe(a,i)}function al(a,i,u,o){this.tag=a;this.key=u;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=i;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=o;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,i,u,o){return new al(a,i,u,o)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}function $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===$)return 11;if(a===Z)return 14}return 2}function wh(a,i){var u=a.alternate;null===u?(u=Bg(a.tag,i,a.key,a.mode),u.elementType=a.elementType,u.type=a.type,u.stateNode=a.stateNode,u.alternate=a,a.alternate=u):(u.pendingProps=i,u.type=a.type,u.flags=0,u.subtreeFlags=0,u.deletions=null);u.flags=14680064&a.flags;u.childLanes=a.childLanes;u.lanes=a.lanes;u.child=a.child;u.memoizedProps=a.memoizedProps;u.memoizedState=a.memoizedState;u.updateQueue=a.updateQueue;i=a.dependencies;u.dependencies=null===i?null:{lanes:i.lanes,firstContext:i.firstContext};u.sibling=a.sibling;u.index=a.index;u.ref=a.ref;return u}function yh(a,i,u,o,s,w){var x=2;o=a;if(\"function\"===typeof a)bj(a)&&(x=1);else if(\"string\"===typeof a)x=5;else e:switch(a){case U:return Ah(u.children,s,w,i);case V:x=8;s|=8;break;case A:return a=Bg(12,u,i,2|s),a.elementType=A,a.lanes=w,a;case K:return a=Bg(13,u,i,s),a.elementType=K,a.lanes=w,a;case Y:return a=Bg(19,u,i,s),a.elementType=Y,a.lanes=w,a;case ee:return qj(u,s,w,i);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case B:x=10;break e;case H:x=9;break e;case $:x=11;break e;case Z:x=14;break e;case X:x=16;o=null;break e}throw Error(p(130,null==a?a:typeof a,\"\"))}i=Bg(x,u,i,s);i.elementType=a;i.type=o;i.lanes=w;return i}function Ah(a,i,u,o){a=Bg(7,a,o,i);a.lanes=u;return a}function qj(a,i,u,o){a=Bg(22,a,o,i);a.elementType=ee;a.lanes=u;a.stateNode={isHidden:!1};return a}function xh(a,i,u){a=Bg(6,a,null,i);a.lanes=u;return a}function zh(a,i,u){i=Bg(4,null!==a.children?a.children:[],a.key,i);i.lanes=u;i.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return i}function bl(a,i,u,o,s){this.tag=i;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=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=o;this.onRecoverableError=s;this.mutableSourceEagerHydrationData=null}function cl(a,i,u,o,s,w,x,C,z){a=new bl(a,i,u,C,z);1===i?(i=1,!0===w&&(i|=8)):i=0;w=Bg(3,null,null,i);a.current=w;w.stateNode=a;w.memoizedState={element:o,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(w);return a}function dl(a,i,u){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:I,key:null==o?null:\"\"+o,children:a,containerInfo:i,implementation:u}}function el(a){if(!a)return mr;a=a._reactInternals;e:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var i=a;do{switch(i.tag){case 3:i=i.stateNode.context;break e;case 1:if(Zf(i.type)){i=i.stateNode.__reactInternalMemoizedMergedChildContext;break e}}i=i.return}while(null!==i);throw Error(p(171))}if(1===a.tag){var u=a.type;if(Zf(u))return bg(a,u,i)}return i}function fl(a,i,u,o,s,w,x,C,z){a=cl(u,o,!0,a,s,w,x,C,z);a.context=el(null);u=a.current;o=L();s=lh(u);w=ch(o,s);w.callback=void 0!==i&&null!==i?i:null;dh(u,w,s);a.current.lanes=s;Ac(a,s,o);Ek(a,o);return a}function gl(a,i,u,o){var s=i.current,w=L(),x=lh(s);u=el(u);null===i.context?i.context=u:i.pendingContext=u;i=ch(w,x);i.payload={element:a};o=void 0===o?null:o;null!==o&&(i.callback=o);a=dh(s,i,x);null!==a&&(mh(a,s,x,w),eh(a,s,x));return x}function hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,i){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var u=a.retryLane;a.retryLane=0!==u&&u<i?u:i}}function jl(a,i){il(a,i);(a=a.alternate)&&il(a,i)}function kl(){return null}var ja=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}nl.prototype.render=ml.prototype.render=function(a){var i=this._internalRoot;if(null===i)throw Error(p(409));gl(a,i,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var i=a.containerInfo;Sk((function(){gl(null,a,null,null)}));i[cr]=null}};function nl(a){this._internalRoot=a}nl.prototype.unstable_scheduleHydration=function(a){if(a){var i=wn();a={blockedOn:null,target:a,priority:i};for(var u=0;u<jn.length&&0!==i&&i<jn[u].priority;u++);jn.splice(u,0,a);0===u&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}function rl(a,i,u,o,s){if(s){if(\"function\"===typeof o){var w=o;o=function(){var a=hl(x);w.call(a)}}var x=fl(i,o,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=x;a[cr]=x.current;sf(8===a.nodeType?a.parentNode:a);Sk();return x}for(;s=a.lastChild;)a.removeChild(s);if(\"function\"===typeof o){var C=o;o=function(){var a=hl(z);C.call(a)}}var z=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=z;a[cr]=z.current;sf(8===a.nodeType?a.parentNode:a);Sk((function(){gl(i,z,u,o)}));return z}function sl(a,i,u,o,s){var w=u._reactRootContainer;if(w){var x=w;if(\"function\"===typeof s){var C=s;s=function(){var a=hl(x);C.call(a)}}gl(i,x,a,s)}else x=rl(u,i,a,s,o);return hl(x)}bn=function(a){switch(a.tag){case 3:var i=a.stateNode;if(i.current.memoizedState.isDehydrated){var u=tc(i.pendingLanes);0!==u&&(Cc(i,1|u),Ek(i,tn()),0===(6&Zl)&&(ma=tn()+500,jg()))}break;case 13:Sk((function(){var i=Zg(a,1);if(null!==i){var u=L();mh(i,a,1,u)}})),jl(a,1)}};yn=function(a){if(13===a.tag){var i=Zg(a,134217728);if(null!==i){var u=L();mh(i,a,134217728,u)}jl(a,134217728)}};kn=function(a){if(13===a.tag){var i=lh(a),u=Zg(a,i);if(null!==u){var o=L();mh(u,a,i,o)}jl(a,i)}};wn=function(){return vn};Sn=function(a,i){var u=vn;try{return vn=a,i()}finally{vn=u}};xe=function(a,i,u){switch(i){case\"input\":bb(a,u);i=u.name;if(\"radio\"===u.type&&null!=i){for(u=a;u.parentNode;)u=u.parentNode;u=u.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+i)+'][type=\"radio\"]');for(i=0;i<u.length;i++){var o=u[i];if(o!==a&&o.form===a.form){var s=Db(o);if(!s)throw Error(p(90));Wa(o);bb(o,s)}}}break;case\"textarea\":ib(a,u);break;case\"select\":i=u.value,null!=i&&fb(a,!!u.multiple,i,!1)}};Gb=Rk;Hb=Sk;var Da={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},Fa={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};var Ia={bundleType:Fa.bundleType,version:Fa.version,rendererPackageName:Fa.rendererPackageName,rendererConfig:Fa.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:R.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:Fa.findFiberByHostInstance||kl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Aa=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Aa.isDisabled&&Aa.supportsFiber)try{cn=Aa.inject(Ia),fn=Aa}catch(a){}}s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Da;s.createPortal=function(a,i){var u=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(i))throw Error(p(200));return dl(a,i,null,u)};s.createRoot=function(a,i){if(!ol(a))throw Error(p(299));var u=!1,o=\"\",s=ja;null!==i&&void 0!==i&&(!0===i.unstable_strictMode&&(u=!0),void 0!==i.identifierPrefix&&(o=i.identifierPrefix),void 0!==i.onRecoverableError&&(s=i.onRecoverableError));i=cl(a,1,!1,null,null,u,!1,o,s);a[cr]=i.current;sf(8===a.nodeType?a.parentNode:a);return new ml(i)};s.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var i=a._reactInternals;if(void 0===i){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a))}a=Zb(i);a=null===a?null:a.stateNode;return a};s.flushSync=function(a){return Sk(a)};s.hydrate=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!0,u)};s.hydrateRoot=function(a,i,u){if(!ol(a))throw Error(p(405));var o=null!=u&&u.hydratedSources||null,s=!1,w=\"\",x=ja;null!==u&&void 0!==u&&(!0===u.unstable_strictMode&&(s=!0),void 0!==u.identifierPrefix&&(w=u.identifierPrefix),void 0!==u.onRecoverableError&&(x=u.onRecoverableError));i=fl(i,null,a,1,null!=u?u:null,s,!1,w,x);a[cr]=i.current;sf(a);if(o)for(a=0;a<o.length;a++)u=o[a],s=u._getVersion,s=s(u._source),null==i.mutableSourceEagerHydrationData?i.mutableSourceEagerHydrationData=[u,s]:i.mutableSourceEagerHydrationData.push(u,s);return new nl(i)};s.render=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!1,u)};s.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return!!a._reactRootContainer&&(Sk((function(){sl(null,null,a,!1,(function(){a._reactRootContainer=null;a[cr]=null}))})),!0)};s.unstable_batchedUpdates=Rk;s.unstable_renderSubtreeIntoContainer=function(a,i,u,o){if(!pl(u))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,i,u,!1,o)};s.version=\"18.2.0-next-9e3b772b8-20220608\";function checkDCE(){if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(a){console.error(a)}}checkDCE();var Ba=s;var Ha=Ba;const $a=Ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga=Ba.createPortal,Ja=Ba.createRoot,ai=Ba.findDOMNode,Si=Ba.flushSync,Ni=Ba.hydrate,_i=Ba.hydrateRoot,Pi=Ba.render,Qi=Ba.unmountComponentAtNode,Xi=Ba.unstable_batchedUpdates,eu=Ba.unstable_renderSubtreeIntoContainer,nu=Ba.version;export{$a as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga as createPortal,Ja as createRoot,Ha as default,ai as findDOMNode,Si as flushSync,Ni as hydrate,_i as hydrateRoot,Pi as render,Qi as unmountComponentAtNode,Xi as unstable_batchedUpdates,eu as unstable_renderSubtreeIntoContainer,nu as version};\n\n//# sourceMappingURL=index.js.map", "var e={};function f(e,n){var t=e.length;e.push(n);e:for(;0<t;){var a=t-1>>>1,l=e[a];if(!(0<g(l,n)))break e;e[a]=n,e[t]=l,t=a}}function h(e){return 0===e.length?null:e[0]}function k(e){if(0===e.length)return null;var n=e[0],t=e.pop();if(t!==n){e[0]=t;e:for(var a=0,l=e.length,r=l>>>1;a<r;){var i=2*(a+1)-1,u=e[i],o=i+1,s=e[o];if(0>g(u,t))o<l&&0>g(s,u)?(e[a]=s,e[o]=t,a=o):(e[a]=u,e[i]=t,a=i);else{if(!(o<l&&0>g(s,t)))break e;e[a]=s,e[o]=t,a=o}}}return n}function g(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var n=performance;e.unstable_now=function(){return n.now()}}else{var t=Date,a=t.now();e.unstable_now=function(){return t.now()-a}}var l=[],r=[],i=1,u=null,o=3,s=!1,c=!1,b=!1,d=\"function\"===typeof setTimeout?setTimeout:null,_=\"function\"===typeof clearTimeout?clearTimeout:null,v=\"undefined\"!==typeof setImmediate?setImmediate:null;\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(e){for(var n=h(r);null!==n;){if(null===n.callback)k(r);else{if(!(n.startTime<=e))break;k(r),n.sortIndex=n.expirationTime,f(l,n)}n=h(r)}}function H(e){b=!1;G(e);if(!c)if(null!==h(l))c=!0,I(J);else{var n=h(r);null!==n&&K(H,n.startTime-e)}}function J(n,t){c=!1;b&&(b=!1,_(m),m=-1);s=!0;var a=o;try{G(t);for(u=h(l);null!==u&&(!(u.expirationTime>t)||n&&!M());){var i=u.callback;if(\"function\"===typeof i){u.callback=null;o=u.priorityLevel;var d=i(u.expirationTime<=t);t=e.unstable_now();\"function\"===typeof d?u.callback=d:u===h(l)&&k(l);G(t)}else k(l);u=h(l)}if(null!==u)var v=!0;else{var p=h(r);null!==p&&K(H,p.startTime-t);v=!1}return v}finally{u=null,o=a,s=!1}}var p=!1,y=null,m=-1,w=5,P=-1;function M(){return!(e.unstable_now()-P<w)}function R(){if(null!==y){var n=e.unstable_now();P=n;var t=!0;try{t=y(!0,n)}finally{t?x():(p=!1,y=null)}}else p=!1}var x;if(\"function\"===typeof v)x=function(){v(R)};else if(\"undefined\"!==typeof MessageChannel){var C=new MessageChannel,T=C.port2;C.port1.onmessage=R;x=function(){T.postMessage(null)}}else x=function(){d(R,0)};function I(e){y=e;p||(p=!0,x())}function K(n,t){m=d((function(){n(e.unstable_now())}),t)}e.unstable_IdlePriority=5;e.unstable_ImmediatePriority=1;e.unstable_LowPriority=4;e.unstable_NormalPriority=3;e.unstable_Profiling=null;e.unstable_UserBlockingPriority=2;e.unstable_cancelCallback=function(e){e.callback=null};e.unstable_continueExecution=function(){c||s||(c=!0,I(J))};e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):w=0<e?Math.floor(1e3/e):5};e.unstable_getCurrentPriorityLevel=function(){return o};e.unstable_getFirstCallbackNode=function(){return h(l)};e.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var t=o;o=n;try{return e()}finally{o=t}};e.unstable_pauseExecution=function(){};e.unstable_requestPaint=function(){};e.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var t=o;o=e;try{return n()}finally{o=t}};e.unstable_scheduleCallback=function(n,t,a){var u=e.unstable_now();\"object\"===typeof a&&null!==a?(a=a.delay,a=\"number\"===typeof a&&0<a?u+a:u):a=u;switch(n){case 1:var o=-1;break;case 2:o=250;break;case 5:o=1073741823;break;case 4:o=1e4;break;default:o=5e3}o=a+o;n={id:i++,callback:t,priorityLevel:n,startTime:a,expirationTime:o,sortIndex:-1};a>u?(n.sortIndex=a,f(r,n),null===h(l)&&n===h(r)&&(b?(_(m),m=-1):b=!0,K(H,a-u))):(n.sortIndex=o,f(l,n),c||s||(c=!0,I(J)));return n};e.unstable_shouldYield=M;e.unstable_wrapCallback=function(e){var n=o;return function(){var t=o;o=n;try{return e.apply(this,arguments)}finally{o=t}}};const L=e.unstable_now,F=e.unstable_IdlePriority,E=e.unstable_ImmediatePriority,N=e.unstable_LowPriority,j=e.unstable_NormalPriority,q=e.unstable_Profiling,B=e.unstable_UserBlockingPriority,U=e.unstable_cancelCallback,W=e.unstable_continueExecution,Y=e.unstable_forceFrameRate,D=e.unstable_getCurrentPriorityLevel,z=e.unstable_getFirstCallbackNode,A=e.unstable_next,O=e.unstable_pauseExecution,Q=e.unstable_requestPaint,S=e.unstable_runWithPriority,V=e.unstable_scheduleCallback,X=e.unstable_shouldYield,Z=e.unstable_wrapCallback;export{e as default,F as unstable_IdlePriority,E as unstable_ImmediatePriority,N as unstable_LowPriority,j as unstable_NormalPriority,q as unstable_Profiling,B as unstable_UserBlockingPriority,U as unstable_cancelCallback,W as unstable_continueExecution,Y as unstable_forceFrameRate,D as unstable_getCurrentPriorityLevel,z as unstable_getFirstCallbackNode,A as unstable_next,L as unstable_now,O as unstable_pauseExecution,Q as unstable_requestPaint,S as unstable_runWithPriority,V as unstable_scheduleCallback,X as unstable_shouldYield,Z as unstable_wrapCallback};\n\n//# sourceMappingURL=index.js.map", "import {\n  AnimatePresence,\n  AsyncMotionValueAnimation,\n  DOMKeyframesResolver,\n  DeprecatedLayoutGroupContext,\n  DragControls,\n  FlatTree,\n  GroupAnimation,\n  GroupAnimationWithThen,\n  JSAnimation,\n  KeyframeResolver,\n  LayoutGroup,\n  LazyMotion,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionValue,\n  NativeAnimation,\n  NativeAnimationExtended,\n  NativeAnimationWrapper,\n  PresenceContext,\n  SubscriptionManager,\n  SwitchLayoutGroupContext,\n  ViewTransitionBuilder,\n  VisualElement,\n  WillChangeMotionValue,\n  acceleratedValues,\n  activeAnimations,\n  addAttrValue,\n  addPointerEvent,\n  addPointerInfo,\n  addScaleCorrector,\n  addStyleValue,\n  addUniqueItem,\n  alpha,\n  analyseComplexValue,\n  animate,\n  animateMini,\n  animateValue,\n  animateView,\n  animateVisualElement,\n  animationControls,\n  animationMapKey,\n  animations,\n  anticipate,\n  applyPxDefaults,\n  attachSpring,\n  attrEffect,\n  backIn,\n  backInOut,\n  backOut,\n  buildTransform,\n  calcGeneratorDuration,\n  calcLength,\n  cancelFrame,\n  cancelMicrotask,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  collectMotionValues,\n  color,\n  complex,\n  convertOffsetToTimes,\n  createBox,\n  createGeneratorEasing,\n  createRenderBatcher,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cubicBezier,\n  cubicBezierAsString,\n  defaultEasing,\n  defaultOffset,\n  defaultTransformValue,\n  defaultValueTypes,\n  degrees,\n  delay,\n  dimensionValueTypes,\n  disableInstantTransitions,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  easingDefinitionToFunction,\n  fillOffset,\n  fillWildcards,\n  filterProps,\n  findDimensionValueType,\n  findValueType,\n  flushKeyframeResolvers,\n  frame,\n  frameData,\n  frameSteps,\n  generateLinearEasing,\n  getAnimatableNone,\n  getAnimationMap,\n  getComputedStyle as getComputedStyle2,\n  getDefaultValueType,\n  getEasingForSegment,\n  getMixer,\n  getValueAsType,\n  getValueTransition,\n  getVariableValue,\n  hasWarned,\n  hex,\n  hover,\n  hsla,\n  hslaToRgba,\n  inView,\n  inertia,\n  interpolate,\n  invariant,\n  invisibleValues,\n  isBezierDefinition,\n  isBrowser,\n  isCSSVariableName,\n  isCSSVariableToken,\n  isDragActive,\n  isDragging,\n  isEasingArray,\n  isGenerator,\n  isHTMLElement,\n  isMotionComponent,\n  isMotionValue,\n  isNodeOrChild,\n  isNumericalString,\n  isObject,\n  isPrimaryPointer,\n  isSVGElement,\n  isSVGSVGElement,\n  isValidMotionProp,\n  isWaapiSupportedEasing,\n  isZeroValueString,\n  keyframes,\n  m,\n  makeUseVisualState,\n  mapEasingToNativeEasing,\n  mapValue,\n  maxGeneratorDuration,\n  memo,\n  microtask,\n  millisecondsToSeconds,\n  mirrorEasing,\n  mix,\n  mixArray,\n  mixColor,\n  mixComplex,\n  mixImmediate,\n  mixLinearColor,\n  mixNumber,\n  mixObject,\n  mixVisibility,\n  motion,\n  motionValue,\n  moveItem,\n  namespace_exports,\n  noop,\n  number,\n  numberValueTypes,\n  observeTimeline,\n  optimizedAppearDataAttribute,\n  parseCSSVariable,\n  parseValueFromTransform,\n  percent,\n  pipe,\n  positionalKeys,\n  press,\n  progress,\n  progressPercentage,\n  propEffect,\n  px,\n  readTransformValue,\n  recordStats,\n  removeItem,\n  resize,\n  resolveElements,\n  resolveMotionValue,\n  reverseEasing,\n  rgbUnit,\n  rgba,\n  scale,\n  scroll,\n  scrollInfo,\n  secondsToMilliseconds,\n  setDragLock,\n  setStyle,\n  spring,\n  springValue,\n  stagger,\n  startOptimizedAppearAnimation,\n  startWaapiAnimation,\n  statsBuffer,\n  steps,\n  styleEffect,\n  supportedWaapiEasing,\n  supportsBrowserAnimation,\n  supportsFlags,\n  supportsLinearEasing,\n  supportsPartialKeyframes,\n  supportsScrollTimeline,\n  svgEffect,\n  sync,\n  testValueType,\n  time,\n  transform,\n  transformPropOrder,\n  transformProps,\n  transformValue,\n  transformValueTypes,\n  unwrapMotionComponent,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useCycle,\n  useDomEvent,\n  useDragControls,\n  useElementScroll,\n  useForceUpdate,\n  useInView,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  usePresence,\n  usePresenceData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useResetProjection,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  velocityPerSecond,\n  vh,\n  visualElementStore,\n  vw,\n  warnOnce,\n  warning,\n  wrap\n} from \"./chunk-BLFSVU7M.mjs\";\nimport {\n  __commonJS,\n  __decorateElement,\n  __decoratorMetadata,\n  __decoratorStart,\n  __privateAdd,\n  __privateGet,\n  __privateMethod,\n  __privateSet,\n  __publicField,\n  __runInitializers,\n  __toESM\n} from \"./chunk-YNHG2PI6.mjs\";\n\n// ../../../node_modules/hsluv/dist/hsluv.cjs\nvar require_hsluv = __commonJS({\n  \"../../../node_modules/hsluv/dist/hsluv.cjs\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.Hsluv = void 0;\n    var Hsluv2 = class _Hsluv {\n      constructor() {\n        this.hex = \"#000000\";\n        this.rgb_r = 0;\n        this.rgb_g = 0;\n        this.rgb_b = 0;\n        this.xyz_x = 0;\n        this.xyz_y = 0;\n        this.xyz_z = 0;\n        this.luv_l = 0;\n        this.luv_u = 0;\n        this.luv_v = 0;\n        this.lch_l = 0;\n        this.lch_c = 0;\n        this.lch_h = 0;\n        this.hsluv_h = 0;\n        this.hsluv_s = 0;\n        this.hsluv_l = 0;\n        this.hpluv_h = 0;\n        this.hpluv_p = 0;\n        this.hpluv_l = 0;\n        this.r0s = 0;\n        this.r0i = 0;\n        this.r1s = 0;\n        this.r1i = 0;\n        this.g0s = 0;\n        this.g0i = 0;\n        this.g1s = 0;\n        this.g1i = 0;\n        this.b0s = 0;\n        this.b0i = 0;\n        this.b1s = 0;\n        this.b1i = 0;\n      }\n      static fromLinear(c) {\n        if (c <= 31308e-7) {\n          return 12.92 * c;\n        } else {\n          return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n        }\n      }\n      static toLinear(c) {\n        if (c > 0.04045) {\n          return Math.pow((c + 0.055) / 1.055, 2.4);\n        } else {\n          return c / 12.92;\n        }\n      }\n      static yToL(Y) {\n        if (Y <= _Hsluv.epsilon) {\n          return Y / _Hsluv.refY * _Hsluv.kappa;\n        } else {\n          return 116 * Math.pow(Y / _Hsluv.refY, 1 / 3) - 16;\n        }\n      }\n      static lToY(L) {\n        if (L <= 8) {\n          return _Hsluv.refY * L / _Hsluv.kappa;\n        } else {\n          return _Hsluv.refY * Math.pow((L + 16) / 116, 3);\n        }\n      }\n      static rgbChannelToHex(chan) {\n        const c = Math.round(chan * 255);\n        const digit2 = c % 16;\n        const digit1 = (c - digit2) / 16 | 0;\n        return _Hsluv.hexChars.charAt(digit1) + _Hsluv.hexChars.charAt(digit2);\n      }\n      static hexToRgbChannel(hex2, offset) {\n        const digit1 = _Hsluv.hexChars.indexOf(hex2.charAt(offset));\n        const digit2 = _Hsluv.hexChars.indexOf(hex2.charAt(offset + 1));\n        const n = digit1 * 16 + digit2;\n        return n / 255;\n      }\n      static distanceFromOriginAngle(slope, intercept, angle) {\n        const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n        if (d < 0) {\n          return Infinity;\n        } else {\n          return d;\n        }\n      }\n      static distanceFromOrigin(slope, intercept) {\n        return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n      }\n      static min6(f1, f2, f3, f4, f5, f6) {\n        return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n      }\n      rgbToHex() {\n        this.hex = \"#\";\n        this.hex += _Hsluv.rgbChannelToHex(this.rgb_r);\n        this.hex += _Hsluv.rgbChannelToHex(this.rgb_g);\n        this.hex += _Hsluv.rgbChannelToHex(this.rgb_b);\n      }\n      hexToRgb() {\n        this.hex = this.hex.toLowerCase();\n        this.rgb_r = _Hsluv.hexToRgbChannel(this.hex, 1);\n        this.rgb_g = _Hsluv.hexToRgbChannel(this.hex, 3);\n        this.rgb_b = _Hsluv.hexToRgbChannel(this.hex, 5);\n      }\n      xyzToRgb() {\n        this.rgb_r = _Hsluv.fromLinear(_Hsluv.m_r0 * this.xyz_x + _Hsluv.m_r1 * this.xyz_y + _Hsluv.m_r2 * this.xyz_z);\n        this.rgb_g = _Hsluv.fromLinear(_Hsluv.m_g0 * this.xyz_x + _Hsluv.m_g1 * this.xyz_y + _Hsluv.m_g2 * this.xyz_z);\n        this.rgb_b = _Hsluv.fromLinear(_Hsluv.m_b0 * this.xyz_x + _Hsluv.m_b1 * this.xyz_y + _Hsluv.m_b2 * this.xyz_z);\n      }\n      rgbToXyz() {\n        const lr = _Hsluv.toLinear(this.rgb_r);\n        const lg = _Hsluv.toLinear(this.rgb_g);\n        const lb = _Hsluv.toLinear(this.rgb_b);\n        this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n        this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n        this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n      }\n      xyzToLuv() {\n        const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n        let varU = 4 * this.xyz_x;\n        let varV = 9 * this.xyz_y;\n        if (divider !== 0) {\n          varU /= divider;\n          varV /= divider;\n        } else {\n          varU = NaN;\n          varV = NaN;\n        }\n        this.luv_l = _Hsluv.yToL(this.xyz_y);\n        if (this.luv_l === 0) {\n          this.luv_u = 0;\n          this.luv_v = 0;\n        } else {\n          this.luv_u = 13 * this.luv_l * (varU - _Hsluv.refU);\n          this.luv_v = 13 * this.luv_l * (varV - _Hsluv.refV);\n        }\n      }\n      luvToXyz() {\n        if (this.luv_l === 0) {\n          this.xyz_x = 0;\n          this.xyz_y = 0;\n          this.xyz_z = 0;\n          return;\n        }\n        const varU = this.luv_u / (13 * this.luv_l) + _Hsluv.refU;\n        const varV = this.luv_v / (13 * this.luv_l) + _Hsluv.refV;\n        this.xyz_y = _Hsluv.lToY(this.luv_l);\n        this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n        this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n      }\n      luvToLch() {\n        this.lch_l = this.luv_l;\n        this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n        if (this.lch_c < 1e-8) {\n          this.lch_h = 0;\n        } else {\n          const hrad = Math.atan2(this.luv_v, this.luv_u);\n          this.lch_h = hrad * 180 / Math.PI;\n          if (this.lch_h < 0) {\n            this.lch_h = 360 + this.lch_h;\n          }\n        }\n      }\n      lchToLuv() {\n        const hrad = this.lch_h / 180 * Math.PI;\n        this.luv_l = this.lch_l;\n        this.luv_u = Math.cos(hrad) * this.lch_c;\n        this.luv_v = Math.sin(hrad) * this.lch_c;\n      }\n      calculateBoundingLines(l) {\n        const sub1 = Math.pow(l + 16, 3) / 1560896;\n        const sub2 = sub1 > _Hsluv.epsilon ? sub1 : l / _Hsluv.kappa;\n        const s1r = sub2 * (284517 * _Hsluv.m_r0 - 94839 * _Hsluv.m_r2);\n        const s2r = sub2 * (838422 * _Hsluv.m_r2 + 769860 * _Hsluv.m_r1 + 731718 * _Hsluv.m_r0);\n        const s3r = sub2 * (632260 * _Hsluv.m_r2 - 126452 * _Hsluv.m_r1);\n        const s1g = sub2 * (284517 * _Hsluv.m_g0 - 94839 * _Hsluv.m_g2);\n        const s2g = sub2 * (838422 * _Hsluv.m_g2 + 769860 * _Hsluv.m_g1 + 731718 * _Hsluv.m_g0);\n        const s3g = sub2 * (632260 * _Hsluv.m_g2 - 126452 * _Hsluv.m_g1);\n        const s1b = sub2 * (284517 * _Hsluv.m_b0 - 94839 * _Hsluv.m_b2);\n        const s2b = sub2 * (838422 * _Hsluv.m_b2 + 769860 * _Hsluv.m_b1 + 731718 * _Hsluv.m_b0);\n        const s3b = sub2 * (632260 * _Hsluv.m_b2 - 126452 * _Hsluv.m_b1);\n        this.r0s = s1r / s3r;\n        this.r0i = s2r * l / s3r;\n        this.r1s = s1r / (s3r + 126452);\n        this.r1i = (s2r - 769860) * l / (s3r + 126452);\n        this.g0s = s1g / s3g;\n        this.g0i = s2g * l / s3g;\n        this.g1s = s1g / (s3g + 126452);\n        this.g1i = (s2g - 769860) * l / (s3g + 126452);\n        this.b0s = s1b / s3b;\n        this.b0i = s2b * l / s3b;\n        this.b1s = s1b / (s3b + 126452);\n        this.b1i = (s2b - 769860) * l / (s3b + 126452);\n      }\n      calcMaxChromaHpluv() {\n        const r0 = _Hsluv.distanceFromOrigin(this.r0s, this.r0i);\n        const r1 = _Hsluv.distanceFromOrigin(this.r1s, this.r1i);\n        const g0 = _Hsluv.distanceFromOrigin(this.g0s, this.g0i);\n        const g1 = _Hsluv.distanceFromOrigin(this.g1s, this.g1i);\n        const b0 = _Hsluv.distanceFromOrigin(this.b0s, this.b0i);\n        const b1 = _Hsluv.distanceFromOrigin(this.b1s, this.b1i);\n        return _Hsluv.min6(r0, r1, g0, g1, b0, b1);\n      }\n      calcMaxChromaHsluv(h) {\n        const hueRad = h / 360 * Math.PI * 2;\n        const r0 = _Hsluv.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n        const r1 = _Hsluv.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n        const g0 = _Hsluv.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n        const g1 = _Hsluv.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n        const b0 = _Hsluv.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n        const b1 = _Hsluv.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n        return _Hsluv.min6(r0, r1, g0, g1, b0, b1);\n      }\n      hsluvToLch() {\n        if (this.hsluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hsluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hsluv_l;\n          this.calculateBoundingLines(this.hsluv_l);\n          const max = this.calcMaxChromaHsluv(this.hsluv_h);\n          this.lch_c = max / 100 * this.hsluv_s;\n        }\n        this.lch_h = this.hsluv_h;\n      }\n      lchToHsluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHsluv(this.lch_h);\n          this.hsluv_s = this.lch_c / max * 100;\n          this.hsluv_l = this.lch_l;\n        }\n        this.hsluv_h = this.lch_h;\n      }\n      hpluvToLch() {\n        if (this.hpluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hpluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hpluv_l;\n          this.calculateBoundingLines(this.hpluv_l);\n          const max = this.calcMaxChromaHpluv();\n          this.lch_c = max / 100 * this.hpluv_p;\n        }\n        this.lch_h = this.hpluv_h;\n      }\n      lchToHpluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHpluv();\n          this.hpluv_p = this.lch_c / max * 100;\n          this.hpluv_l = this.lch_l;\n        }\n        this.hpluv_h = this.lch_h;\n      }\n      hsluvToRgb() {\n        this.hsluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hpluvToRgb() {\n        this.hpluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hsluvToHex() {\n        this.hsluvToRgb();\n        this.rgbToHex();\n      }\n      hpluvToHex() {\n        this.hpluvToRgb();\n        this.rgbToHex();\n      }\n      rgbToHsluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHsluv();\n      }\n      rgbToHpluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHpluv();\n      }\n      hexToHsluv() {\n        this.hexToRgb();\n        this.rgbToHsluv();\n      }\n      hexToHpluv() {\n        this.hexToRgb();\n        this.rgbToHpluv();\n      }\n    };\n    exports.Hsluv = Hsluv2;\n    Hsluv2.hexChars = \"0123456789abcdef\";\n    Hsluv2.refY = 1;\n    Hsluv2.refU = 0.19783000664283;\n    Hsluv2.refV = 0.46831999493879;\n    Hsluv2.kappa = 903.2962962;\n    Hsluv2.epsilon = 0.0088564516;\n    Hsluv2.m_r0 = 3.240969941904521;\n    Hsluv2.m_r1 = -1.537383177570093;\n    Hsluv2.m_r2 = -0.498610760293;\n    Hsluv2.m_g0 = -0.96924363628087;\n    Hsluv2.m_g1 = 1.87596750150772;\n    Hsluv2.m_g2 = 0.041555057407175;\n    Hsluv2.m_b0 = 0.055630079696993;\n    Hsluv2.m_b1 = -0.20397695888897;\n    Hsluv2.m_b2 = 1.056971514242878;\n  }\n});\n\n// ../../../node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n  \"../../../node_modules/eventemitter3/index.js\"(exports, module) {\n    \"use strict\";\n    var has = Object.prototype.hasOwnProperty;\n    var prefix2 = \"~\";\n    function Events() {\n    }\n    if (Object.create) {\n      Events.prototype = /* @__PURE__ */ Object.create(null);\n      if (!new Events().__proto__) prefix2 = false;\n    }\n    function EE(fn, context, once) {\n      this.fn = fn;\n      this.context = context;\n      this.once = once || false;\n    }\n    function addListener(emitter, event, fn, context, once) {\n      if (typeof fn !== \"function\") {\n        throw new TypeError(\"The listener must be a function\");\n      }\n      var listener = new EE(fn, context || emitter, once), evt = prefix2 ? prefix2 + event : event;\n      if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n      else emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0) emitter._events = new Events();\n      else delete emitter._events[evt];\n    }\n    function EventEmitter2() {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    EventEmitter2.prototype.eventNames = function eventNames() {\n      var names = [], events, name;\n      if (this._eventsCount === 0) return names;\n      for (name in events = this._events) {\n        if (has.call(events, name)) names.push(prefix2 ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events));\n      }\n      return names;\n    };\n    EventEmitter2.prototype.listeners = function listeners(event) {\n      var evt = prefix2 ? prefix2 + event : event, handlers = this._events[evt];\n      if (!handlers) return [];\n      if (handlers.fn) return [handlers.fn];\n      for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n        ee[i] = handlers[i].fn;\n      }\n      return ee;\n    };\n    EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n      var evt = prefix2 ? prefix2 + event : event, listeners = this._events[evt];\n      if (!listeners) return 0;\n      if (listeners.fn) return 1;\n      return listeners.length;\n    };\n    EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt]) return false;\n      var listeners = this._events[evt], len = arguments.length, args, i;\n      if (listeners.fn) {\n        if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);\n        switch (len) {\n          case 1:\n            return listeners.fn.call(listeners.context), true;\n          case 2:\n            return listeners.fn.call(listeners.context, a1), true;\n          case 3:\n            return listeners.fn.call(listeners.context, a1, a2), true;\n          case 4:\n            return listeners.fn.call(listeners.context, a1, a2, a3), true;\n          case 5:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n          case 6:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n        }\n        for (i = 1, args = new Array(len - 1); i < len; i++) {\n          args[i - 1] = arguments[i];\n        }\n        listeners.fn.apply(listeners.context, args);\n      } else {\n        var length = listeners.length, j;\n        for (i = 0; i < length; i++) {\n          if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true);\n          switch (len) {\n            case 1:\n              listeners[i].fn.call(listeners[i].context);\n              break;\n            case 2:\n              listeners[i].fn.call(listeners[i].context, a1);\n              break;\n            case 3:\n              listeners[i].fn.call(listeners[i].context, a1, a2);\n              break;\n            case 4:\n              listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n              break;\n            default:\n              if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {\n                args[j - 1] = arguments[j];\n              }\n              listeners[i].fn.apply(listeners[i].context, args);\n          }\n        }\n      }\n      return true;\n    };\n    EventEmitter2.prototype.on = function on(event, fn, context) {\n      return addListener(this, event, fn, context, false);\n    };\n    EventEmitter2.prototype.once = function once(event, fn, context) {\n      return addListener(this, event, fn, context, true);\n    };\n    EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt]) return this;\n      if (!fn) {\n        clearEvent(this, evt);\n        return this;\n      }\n      var listeners = this._events[evt];\n      if (listeners.fn) {\n        if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n          clearEvent(this, evt);\n        }\n      } else {\n        for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n          if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n            events.push(listeners[i]);\n          }\n        }\n        if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n        else clearEvent(this, evt);\n      }\n      return this;\n    };\n    EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n      var evt;\n      if (event) {\n        evt = prefix2 ? prefix2 + event : event;\n        if (this._events[evt]) clearEvent(this, evt);\n      } else {\n        this._events = new Events();\n        this._eventsCount = 0;\n      }\n      return this;\n    };\n    EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n    EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n    EventEmitter2.prefixed = prefix2;\n    EventEmitter2.EventEmitter = EventEmitter2;\n    if (\"undefined\" !== typeof module) {\n      module.exports = EventEmitter2;\n    }\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\nvar require_react_is_production_min = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\"(exports) {\n    \"use strict\";\n    var b = \"function\" === typeof Symbol && Symbol.for;\n    var c = b ? Symbol.for(\"react.element\") : 60103;\n    var d = b ? Symbol.for(\"react.portal\") : 60106;\n    var e = b ? Symbol.for(\"react.fragment\") : 60107;\n    var f = b ? Symbol.for(\"react.strict_mode\") : 60108;\n    var g = b ? Symbol.for(\"react.profiler\") : 60114;\n    var h = b ? Symbol.for(\"react.provider\") : 60109;\n    var k = b ? Symbol.for(\"react.context\") : 60110;\n    var l = b ? Symbol.for(\"react.async_mode\") : 60111;\n    var m2 = b ? Symbol.for(\"react.concurrent_mode\") : 60111;\n    var n = b ? Symbol.for(\"react.forward_ref\") : 60112;\n    var p = b ? Symbol.for(\"react.suspense\") : 60113;\n    var q = b ? Symbol.for(\"react.suspense_list\") : 60120;\n    var r = b ? Symbol.for(\"react.memo\") : 60115;\n    var t = b ? Symbol.for(\"react.lazy\") : 60116;\n    var v = b ? Symbol.for(\"react.block\") : 60121;\n    var w = b ? Symbol.for(\"react.fundamental\") : 60117;\n    var x = b ? Symbol.for(\"react.responder\") : 60118;\n    var y = b ? Symbol.for(\"react.scope\") : 60119;\n    function z(a) {\n      if (\"object\" === typeof a && null !== a) {\n        var u = a.$$typeof;\n        switch (u) {\n          case c:\n            switch (a = a.type, a) {\n              case l:\n              case m2:\n              case e:\n              case g:\n              case f:\n              case p:\n                return a;\n              default:\n                switch (a = a && a.$$typeof, a) {\n                  case k:\n                  case n:\n                  case t:\n                  case r:\n                  case h:\n                    return a;\n                  default:\n                    return u;\n                }\n            }\n          case d:\n            return u;\n        }\n      }\n    }\n    function A(a) {\n      return z(a) === m2;\n    }\n    exports.AsyncMode = l;\n    exports.ConcurrentMode = m2;\n    exports.ContextConsumer = k;\n    exports.ContextProvider = h;\n    exports.Element = c;\n    exports.ForwardRef = n;\n    exports.Fragment = e;\n    exports.Lazy = t;\n    exports.Memo = r;\n    exports.Portal = d;\n    exports.Profiler = g;\n    exports.StrictMode = f;\n    exports.Suspense = p;\n    exports.isAsyncMode = function(a) {\n      return A(a) || z(a) === l;\n    };\n    exports.isConcurrentMode = A;\n    exports.isContextConsumer = function(a) {\n      return z(a) === k;\n    };\n    exports.isContextProvider = function(a) {\n      return z(a) === h;\n    };\n    exports.isElement = function(a) {\n      return \"object\" === typeof a && null !== a && a.$$typeof === c;\n    };\n    exports.isForwardRef = function(a) {\n      return z(a) === n;\n    };\n    exports.isFragment = function(a) {\n      return z(a) === e;\n    };\n    exports.isLazy = function(a) {\n      return z(a) === t;\n    };\n    exports.isMemo = function(a) {\n      return z(a) === r;\n    };\n    exports.isPortal = function(a) {\n      return z(a) === d;\n    };\n    exports.isProfiler = function(a) {\n      return z(a) === g;\n    };\n    exports.isStrictMode = function(a) {\n      return z(a) === f;\n    };\n    exports.isSuspense = function(a) {\n      return z(a) === p;\n    };\n    exports.isValidElementType = function(a) {\n      return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m2 || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n    };\n    exports.typeOf = z;\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js\"(exports, module) {\n    \"use strict\";\n    if (true) {\n      module.exports = require_react_is_production_min();\n    } else {\n      module.exports = null;\n    }\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar require_hoist_non_react_statics_cjs = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\"(exports, module) {\n    \"use strict\";\n    var reactIs = require_react_is();\n    var REACT_STATICS = {\n      childContextTypes: true,\n      contextType: true,\n      contextTypes: true,\n      defaultProps: true,\n      displayName: true,\n      getDefaultProps: true,\n      getDerivedStateFromError: true,\n      getDerivedStateFromProps: true,\n      mixins: true,\n      propTypes: true,\n      type: true\n    };\n    var KNOWN_STATICS = {\n      name: true,\n      length: true,\n      prototype: true,\n      caller: true,\n      callee: true,\n      arguments: true,\n      arity: true\n    };\n    var FORWARD_REF_STATICS = {\n      \"$$typeof\": true,\n      render: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true\n    };\n    var MEMO_STATICS = {\n      \"$$typeof\": true,\n      compare: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true,\n      type: true\n    };\n    var TYPE_STATICS = {};\n    TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n    TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n    function getStatics(component) {\n      if (reactIs.isMemo(component)) {\n        return MEMO_STATICS;\n      }\n      return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n    }\n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = Object.prototype;\n    function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n      if (typeof sourceComponent !== \"string\") {\n        if (objectPrototype) {\n          var inheritedComponent = getPrototypeOf(sourceComponent);\n          if (inheritedComponent && inheritedComponent !== objectPrototype) {\n            hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n          }\n        }\n        var keys3 = getOwnPropertyNames(sourceComponent);\n        if (getOwnPropertySymbols) {\n          keys3 = keys3.concat(getOwnPropertySymbols(sourceComponent));\n        }\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n        for (var i = 0; i < keys3.length; ++i) {\n          var key7 = keys3[i];\n          if (!KNOWN_STATICS[key7] && !(blacklist && blacklist[key7]) && !(sourceStatics && sourceStatics[key7]) && !(targetStatics && targetStatics[key7])) {\n            var descriptor = getOwnPropertyDescriptor(sourceComponent, key7);\n            try {\n              defineProperty(targetComponent, key7, descriptor);\n            } catch (e) {\n            }\n          }\n        }\n      }\n      return targetComponent;\n    }\n    module.exports = hoistNonReactStatics;\n  }\n});\n\n// ../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\nvar require_fontfaceobserver_standalone = __commonJS({\n  \"../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\"(exports, module) {\n    \"use strict\";\n    (function() {\n      function p(a, c) {\n        document.addEventListener ? a.addEventListener(\"scroll\", c, false) : a.attachEvent(\"scroll\", c);\n      }\n      function u(a) {\n        document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function b() {\n          document.removeEventListener(\"DOMContentLoaded\", b);\n          a();\n        }) : document.attachEvent(\"onreadystatechange\", function g() {\n          if (\"interactive\" == document.readyState || \"complete\" == document.readyState) document.detachEvent(\"onreadystatechange\", g), a();\n        });\n      }\n      ;\n      function w(a) {\n        this.g = document.createElement(\"div\");\n        this.g.setAttribute(\"aria-hidden\", \"true\");\n        this.g.appendChild(document.createTextNode(a));\n        this.h = document.createElement(\"span\");\n        this.i = document.createElement(\"span\");\n        this.m = document.createElement(\"span\");\n        this.j = document.createElement(\"span\");\n        this.l = -1;\n        this.h.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.i.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.j.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.m.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n        this.h.appendChild(this.m);\n        this.i.appendChild(this.j);\n        this.g.appendChild(this.h);\n        this.g.appendChild(this.i);\n      }\n      function x(a, c) {\n        a.g.style.cssText = \"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\" + c + \";\";\n      }\n      function B(a) {\n        var c = a.g.offsetWidth, b = c + 100;\n        a.j.style.width = b + \"px\";\n        a.i.scrollLeft = b;\n        a.h.scrollLeft = a.h.scrollWidth + 100;\n        return a.l !== c ? (a.l = c, true) : false;\n      }\n      function C(a, c) {\n        function b() {\n          var e = g;\n          B(e) && null !== e.g.parentNode && c(e.l);\n        }\n        var g = a;\n        p(a.h, b);\n        p(a.i, b);\n        B(a);\n      }\n      ;\n      function D(a, c, b) {\n        c = c || {};\n        b = b || window;\n        this.family = a;\n        this.style = c.style || \"normal\";\n        this.weight = c.weight || \"normal\";\n        this.stretch = c.stretch || \"normal\";\n        this.context = b;\n      }\n      var E = null, F = null, G = null, H = null;\n      function I(a) {\n        null === F && (M(a) && /Apple/.test(window.navigator.vendor) ? (a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent), F = !!a && 603 > parseInt(a[1], 10)) : F = false);\n        return F;\n      }\n      function M(a) {\n        null === H && (H = !!a.document.fonts);\n        return H;\n      }\n      function N(a, c) {\n        var b = a.style, g = a.weight;\n        if (null === G) {\n          var e = document.createElement(\"div\");\n          try {\n            e.style.font = \"condensed 100px sans-serif\";\n          } catch (q) {\n          }\n          G = \"\" !== e.style.font;\n        }\n        return [b, g, G ? a.stretch : \"\", \"100px\", c].join(\" \");\n      }\n      D.prototype.load = function(a, c) {\n        var b = this, g = a || \"BESbswy\", e = 0, q = c || 3e3, J = (/* @__PURE__ */ new Date()).getTime();\n        return new Promise(function(K, L) {\n          if (M(b.context) && !I(b.context)) {\n            var O = new Promise(function(r, t) {\n              function h() {\n                (/* @__PURE__ */ new Date()).getTime() - J >= q ? t(Error(\"\" + q + \"ms timeout exceeded\")) : b.context.document.fonts.load(N(b, '\"' + b.family + '\"'), g).then(function(n) {\n                  1 <= n.length ? r() : setTimeout(h, 25);\n                }, t);\n              }\n              h();\n            }), P = new Promise(function(r, t) {\n              e = setTimeout(function() {\n                t(Error(\"\" + q + \"ms timeout exceeded\"));\n              }, q);\n            });\n            Promise.race([P, O]).then(function() {\n              clearTimeout(e);\n              K(b);\n            }, L);\n          } else u(function() {\n            function r() {\n              var d;\n              if (d = -1 != k && -1 != l || -1 != k && -1 != m2 || -1 != l && -1 != m2) (d = k != l && k != m2 && l != m2) || (null === E && (d = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), E = !!d && (536 > parseInt(d[1], 10) || 536 === parseInt(d[1], 10) && 11 >= parseInt(d[2], 10))), d = E && (k == y && l == y && m2 == y || k == z && l == z && m2 == z || k == A && l == A && m2 == A)), d = !d;\n              d && (null !== f.parentNode && f.parentNode.removeChild(f), clearTimeout(e), K(b));\n            }\n            function t() {\n              if ((/* @__PURE__ */ new Date()).getTime() - J >= q) null !== f.parentNode && f.parentNode.removeChild(f), L(Error(\"\" + q + \"ms timeout exceeded\"));\n              else {\n                var d = b.context.document.hidden;\n                if (true === d || void 0 === d) k = h.g.offsetWidth, l = n.g.offsetWidth, m2 = v.g.offsetWidth, r();\n                e = setTimeout(t, 50);\n              }\n            }\n            var h = new w(g), n = new w(g), v = new w(g), k = -1, l = -1, m2 = -1, y = -1, z = -1, A = -1, f = document.createElement(\"div\");\n            f.dir = \"ltr\";\n            x(h, N(b, \"sans-serif\"));\n            x(n, N(b, \"serif\"));\n            x(v, N(b, \"monospace\"));\n            f.appendChild(h.g);\n            f.appendChild(n.g);\n            f.appendChild(v.g);\n            b.context.document.body.appendChild(f);\n            y = h.g.offsetWidth;\n            z = n.g.offsetWidth;\n            A = v.g.offsetWidth;\n            t();\n            C(h, function(d) {\n              k = d;\n              r();\n            });\n            x(h, N(b, '\"' + b.family + '\",sans-serif'));\n            C(n, function(d) {\n              l = d;\n              r();\n            });\n            x(n, N(b, '\"' + b.family + '\",serif'));\n            C(v, function(d) {\n              m2 = d;\n              r();\n            });\n            x(v, N(b, '\"' + b.family + '\",monospace'));\n          });\n        });\n      };\n      \"object\" === typeof module ? module.exports = D : (window.FontFaceObserver = D, window.FontFaceObserver.prototype.load = D.prototype.load);\n    })();\n  }\n});\n\n// ../../library/src/router/lazy.tsx\nimport { lazy as ReactLazy, forwardRef, isValidElement, useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar preloadKey = \"preload\";\nfunction isLazyComponentType(componentType) {\n  return typeof componentType === \"object\" && componentType !== null && !isValidElement(componentType) && preloadKey in componentType;\n}\nfunction lazy(factory) {\n  const LazyComponent = ReactLazy(factory);\n  let factoryPromise;\n  let LoadedComponent;\n  let hasRendered = false;\n  const Component17 = forwardRef(function LazyWithPreload(props, ref) {\n    useEffect(() => {\n      hasRendered = true;\n    }, []);\n    const Comp = LoadedComponent ?? LazyComponent;\n    return /* @__PURE__ */ jsx(Comp, { ref, ...props });\n  });\n  Component17.preload = () => {\n    if (!factoryPromise) {\n      factoryPromise = factory().then((module) => {\n        LoadedComponent = module.default;\n        return LoadedComponent;\n      });\n    }\n    return factoryPromise;\n  };\n  Component17.getStatus = () => {\n    return {\n      hasLoaded: LoadedComponent !== void 0,\n      hasRendered\n    };\n  };\n  return Component17;\n}\n\n// ../../library/src/router/useRouteElementId.ts\nimport React4 from \"react\";\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport React3, { useContext, useMemo as useMemo2 } from \"react\";\n\n// ../../library/src/utils/objectKeys.ts\nvar objectKeys = Object.keys;\n\n// ../../library/src/render/utils/isEqual.ts\nfunction hasProp(o, prop) {\n  return Object.prototype.hasOwnProperty.call(o, prop);\n}\nvar equalsKey = \"equals\";\nfunction withEquals(o) {\n  if (o === null) return false;\n  if (!(equalsKey in o)) return false;\n  return typeof o.equals === \"function\";\n}\nfunction valueEqual(a, b) {\n  if (a === b) return true;\n  return a !== a && b !== b;\n}\nfunction arrayShallowEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length) return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!valueEqual(a[i], b[i])) return false;\n  }\n  return true;\n}\nfunction arrayDeepEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length) return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!equal(a[i], b[i], true)) return false;\n  }\n  return true;\n}\nfunction mapShallowEqual(a, b) {\n  if (a.size !== b.size) return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!valueEqual(aValue, b.get(key7))) return false;\n  }\n  return true;\n}\nfunction mapDeepEqual(a, b) {\n  if (a.size !== b.size) return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!equal(aValue, b.get(key7), true)) return false;\n  }\n  return true;\n}\nfunction setEqual(a, b) {\n  if (a.size !== b.size) return false;\n  for (const aValue of a.keys()) {\n    if (!b.has(aValue)) return false;\n  }\n  return true;\n}\nfunction objectShallowEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length) return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7)) return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!valueEqual(a[key7], b[key7])) return false;\n  }\n  return true;\n}\nfunction objectDeepEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length) return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7)) return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!equal(a[key7], b[key7], true)) return false;\n  }\n  return true;\n}\nfunction equal(a, b, deep) {\n  if (a === b) return true;\n  if (!a || !b) return a !== a && b !== b;\n  const typeA = typeof a;\n  const typeB = typeof b;\n  if (typeA !== typeB) return false;\n  if (typeA !== \"object\") return false;\n  const aIsArray = Array.isArray(a);\n  const bIsArray = Array.isArray(b);\n  if (aIsArray && bIsArray) {\n    if (deep) {\n      return arrayDeepEqual(a, b);\n    } else {\n      return arrayShallowEqual(a, b);\n    }\n  } else if (aIsArray !== bIsArray) {\n    return false;\n  }\n  const aIsMap = a instanceof Map;\n  const bIsMap = b instanceof Map;\n  if (aIsMap && bIsMap) {\n    if (deep) {\n      return mapDeepEqual(a, b);\n    } else {\n      return mapShallowEqual(a, b);\n    }\n  } else if (aIsMap !== bIsMap) {\n    return false;\n  }\n  const aIsSet = a instanceof Set;\n  const bIsSet = b instanceof Set;\n  if (aIsSet && bIsSet) {\n    return setEqual(a, b);\n  } else if (aIsSet !== bIsSet) {\n    return false;\n  }\n  const dateA = a instanceof Date;\n  const dateB = b instanceof Date;\n  if (dateA && dateB) {\n    return a.getTime() === b.getTime();\n  } else if (dateA !== dateB) {\n    return false;\n  }\n  const regexpA = a instanceof RegExp;\n  const regexpB = b instanceof RegExp;\n  if (regexpA && regexpB) {\n    return a.toString() === b.toString();\n  } else if (regexpA !== regexpB) {\n    return false;\n  }\n  if (withEquals(a) && withEquals(b)) {\n    return a.equals(b);\n  }\n  if (deep) {\n    return objectDeepEqual(a, b);\n  } else {\n    return objectShallowEqual(a, b);\n  }\n}\nfunction isEqual(a, b, deep = true) {\n  try {\n    return equal(a, b, deep);\n  } catch (error) {\n    if (error instanceof Error && /stack|recursion/iu.exec(error.message)) {\n      console.warn(\"Warning: isEqual does not handle circular references.\", error.name, error.message);\n      return false;\n    }\n    throw error;\n  }\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport React2, { useMemo } from \"react\";\n\n// ../../library/src/router/useGetRouteCallback.ts\nimport React from \"react\";\nfunction useGetRouteCallback(routes) {\n  return React.useCallback((routeId) => routes[routeId], [routes]);\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar RouterContext = /* @__PURE__ */ (() => React2.createContext({}))();\nfunction RouterAPIProvider({ api, children }) {\n  return /* @__PURE__ */ jsx2(RouterContext.Provider, { value: api, children });\n}\nfunction useRouter() {\n  return React2.useContext(RouterContext);\n}\nfunction RoutesProvider({ routes, children }) {\n  const getRoute = useGetRouteCallback(routes);\n  const api = useMemo(() => ({ getRoute }), [getRoute]);\n  return /* @__PURE__ */ jsx2(RouterContext.Provider, { value: api, children });\n}\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar CurrentRouteContext = /* @__PURE__ */ (() => React3.createContext({}))();\nfunction useCurrentRoute() {\n  var _a;\n  const router = useRouter();\n  const override = useContext(CurrentRouteContext);\n  const id = (override == null ? void 0 : override.routeId) ?? router.currentRouteId;\n  const pathVariables = (override == null ? void 0 : override.routeId) ? override.pathVariables : router.currentPathVariables;\n  const route = id ? (_a = router.getRoute) == null ? void 0 : _a.call(router, id) : void 0;\n  return useMemo2(() => {\n    if (!id || !route) return void 0;\n    return {\n      ...route,\n      id,\n      pathVariables\n    };\n  }, [id, pathVariables, route]);\n}\nfunction useCurrentRouteKey() {\n  const currentRoute = useCurrentRoute();\n  if (!currentRoute) return void 0;\n  return `${currentRoute.id}-${JSON.stringify(currentRoute.pathVariables)}`;\n}\nfunction useCurrentRouteId() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.id;\n}\nfunction useOnRouteChange(cb) {\n  const currentRoute = useCurrentRoute();\n  const lastRoute = React3.useRef(currentRoute);\n  if (isEqual(lastRoute.current, currentRoute) || !currentRoute) return;\n  lastRoute.current = currentRoute;\n  cb(currentRoute);\n}\n\n// ../../library/src/router/useRoute.ts\nfunction useRoute(routeId) {\n  var _a;\n  const routerAPI = useRouter();\n  if (!routeId) return void 0;\n  return (_a = routerAPI.getRoute) == null ? void 0 : _a.call(routerAPI, routeId);\n}\n\n// ../../library/src/router/utils.ts\nfunction getRouteElementId(route, hash2) {\n  if (hash2 && route) {\n    if (route.elements && hash2 in route.elements) {\n      return route.elements[hash2];\n    } else {\n      return hash2;\n    }\n  }\n  return void 0;\n}\nvar EMPTY_ARRAY = [];\nfunction monitorINPRelatedInputs(signal) {\n  const inpRelatedInputs = [\"pointerdown\", \"pointerup\", \"keydown\", \"keyup\"];\n  const inpRelatedInputHandler = (event) => {\n    const type = event.type;\n    if (!inpRelatedInputs.includes(type)) return;\n    performance.mark(`framer-navigation-input`, {\n      detail: {\n        type\n      }\n    });\n  };\n  for (let i = 0; i < inpRelatedInputs.length; i++) {\n    document.addEventListener(inpRelatedInputs[i], inpRelatedInputHandler, { signal });\n  }\n  return () => {\n    for (let i = 0; i < inpRelatedInputs.length; i++) {\n      document.removeEventListener(inpRelatedInputs[i], inpRelatedInputHandler);\n    }\n  };\n}\n\n// ../../library/src/router/useRouteElementId.ts\nfunction useRouteElementId(id, targetRouteId) {\n  const currentRoute = useCurrentRoute();\n  const route = useRoute(targetRouteId) ?? currentRoute;\n  return React4.useMemo(() => {\n    if (!route) return id;\n    return getRouteElementId(route, id);\n  }, [id, route]);\n}\n\n// ../../library/src/router/useCurrentPathVariables.tsx\nfunction useCurrentPathVariables() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n}\n\n// ../../library/src/router/useRouteHandler.ts\nimport React5 from \"react\";\n\n// ../../library/src/router/useRoutePreloader.ts\nimport { useEffect as useEffect2 } from \"react\";\n\n// ../../library/src/utils/utils.ts\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isBoolean(value) {\n  return typeof value === \"boolean\";\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return Number.isFinite(value);\n}\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isObject2(value) {\n  return value !== null && typeof value === \"object\" && !isArray(value);\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\";\n}\nfunction isNull(value) {\n  return value === null;\n}\nfunction isNullish(value) {\n  return value == null;\n}\nfunction isValidDate(value) {\n  return value instanceof Date && !Number.isNaN(value.getTime());\n}\nfunction isGenerator2(value) {\n  return isObject2(value) && isFunction(value.return);\n}\nvar noop2 = () => {\n};\nvar isWindow = typeof window !== \"undefined\";\nvar isBot = /* @__PURE__ */ (() => isWindow && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent))();\nvar supportsRequestIdleCallback = isWindow && typeof window.requestIdleCallback === \"function\";\nvar requestIdleCallback = /* @__PURE__ */ (() => (\n  // eslint-disable-next-line compat/compat,framer-studio/tscompat\n  supportsRequestIdleCallback ? window.requestIdleCallback : setTimeout\n))();\nfunction encodeSVGForCSS(svg) {\n  return `url('data:image/svg+xml,${svg.replaceAll(\"#\", \"%23\").replaceAll(\"'\", \"%27\")}')`;\n}\n\n// ../../library/src/utils/safeWindow.ts\nvar mockWindow = {\n  addEventListener: () => {\n  },\n  removeEventListener: () => {\n  },\n  dispatchEvent: () => false,\n  ResizeObserver: void 0,\n  onpointerdown: false,\n  onpointermove: false,\n  onpointerup: false,\n  ontouchstart: false,\n  ontouchmove: false,\n  ontouchend: false,\n  onmousedown: false,\n  onmousemove: false,\n  onmouseup: false,\n  devicePixelRatio: 1,\n  scrollX: 0,\n  scrollY: 0,\n  location: {\n    hash: \"\",\n    hostname: \"\",\n    href: \"\",\n    origin: \"\",\n    pathname: \"\",\n    search: \"\"\n  },\n  document: {\n    baseURI: \"\",\n    cookie: \"\",\n    referrer: null\n  },\n  setTimeout: () => 0,\n  clearTimeout: () => {\n  },\n  setInterval: () => 0,\n  clearInterval: () => {\n  },\n  requestAnimationFrame: () => 0,\n  cancelAnimationFrame: () => {\n  },\n  requestIdleCallback: () => 0,\n  getSelection: () => null,\n  matchMedia: (query) => {\n    return {\n      matches: false,\n      media: query,\n      onchange: () => {\n      },\n      addEventListener: () => {\n      },\n      removeEventListener: () => {\n      },\n      addListener: () => {\n      },\n      removeListener: () => {\n      },\n      dispatchEvent: () => false\n    };\n  },\n  innerHeight: 0,\n  innerWidth: 0,\n  SVGSVGElement: {},\n  scheduler: void 0,\n  open: function(_url, _target, _features) {\n  },\n  __framer_events: []\n};\nvar safeWindow = !isWindow ? mockWindow : window;\n\n// ../../library/src/utils/yield.ts\nvar canUseYield = /* @__PURE__ */ (() => safeWindow.scheduler && \"yield\" in safeWindow.scheduler)();\nvar canUsePostTask = /* @__PURE__ */ (() => safeWindow.scheduler && \"postTask\" in safeWindow.scheduler)();\nvar pendingResolvers = /* @__PURE__ */ new Set();\nfunction resolvePendingPromises() {\n  for (const resolve of pendingResolvers) resolve();\n  pendingResolvers.clear();\n}\nfunction yieldUnlessUrgent(options) {\n  return new Promise((resolve) => {\n    pendingResolvers.add(resolve);\n    if (document.hidden) {\n      resolvePendingPromises();\n      return;\n    }\n    document.addEventListener(\"visibilitychange\", resolvePendingPromises);\n    document.addEventListener(\"pagehide\", resolvePendingPromises);\n    frame.read(() => {\n      const resolveFn = () => {\n        var _a;\n        pendingResolvers.delete(resolve);\n        if ((_a = options == null ? void 0 : options.signal) == null ? void 0 : _a.aborted) return;\n        resolve();\n      };\n      void schedulerYield(options).then(resolveFn);\n    });\n    return;\n  });\n}\nfunction interactionResponse(options) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, 100);\n    frame.read(\n      () => {\n        void schedulerYield(options).then(resolve);\n      },\n      false,\n      // In some cases, interactionResponse might be called in a rAF. This means, we should right away call `schedulerYield`, as the next paint follows immediately.\n      true\n    );\n  });\n}\nfunction schedulerYield(options) {\n  const priority = options == null ? void 0 : options.priority;\n  const canUseModernAPI = canUseYield || canUsePostTask;\n  if (!canUseModernAPI) {\n    if (priority === \"user-blocking\") {\n      return Promise.resolve();\n    }\n    return new Promise((resolve) => {\n      setTimeout(resolve, priority === \"background\" ? 1 : 0);\n    });\n  }\n  if (priority === \"background\") {\n    return new Promise((resolve) => {\n      setTimeout(resolve, 1);\n    });\n  }\n  if (canUseYield) {\n    return safeWindow.scheduler.yield(options).catch(noop2);\n  }\n  return safeWindow.scheduler.postTask(() => {\n  }, options).catch(noop2);\n}\nfunction yieldToMain(options) {\n  const { continueAfter, ensureContinueBeforeUnload, ...schedulerOptions } = options ?? {};\n  if (ensureContinueBeforeUnload) {\n    return yieldUnlessUrgent(schedulerOptions);\n  }\n  if (continueAfter === \"paint\") {\n    return interactionResponse(schedulerOptions);\n  }\n  return schedulerYield(schedulerOptions);\n}\n\n// ../../library/src/router/useRoutePreloader.ts\nvar shouldPreloadBasedOnUA = !isBot;\nfunction useRoutePreloader(routeIds, enabled = true) {\n  const { getRoute } = useRouter();\n  useEffect2(() => {\n    if (!getRoute || !enabled || !shouldPreloadBasedOnUA) return;\n    for (const routeId of routeIds) {\n      void preloadRoute(getRoute(routeId));\n    }\n  }, [routeIds, getRoute, enabled]);\n}\nasync function preloadRoute(route) {\n  if (!shouldPreloadBasedOnUA || !route) return;\n  const component = route.page;\n  if (!component || !isLazyComponentType(component)) return;\n  await yieldToMain();\n  try {\n    await component.preload();\n  } catch (e) {\n    if (false) console.warn(\"Preload failed\", route, e);\n  }\n}\n\n// ../../library/src/router/useRouteHandler.ts\nfunction useRouteHandler(routeId, preload = false, elementId) {\n  const { navigate } = useRouter();\n  useRoutePreloader([routeId], preload);\n  const handler = React5.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId]);\n  return handler;\n}\n\n// ../../library/src/router/history.ts\nimport { useCallback as useCallback3, useEffect as useEffect4, useLayoutEffect as useLayoutEffect2, useRef as useRef3 } from \"react\";\n\n// ../../library/src/utils/sendTrackingEvent.ts\nvar pageviewEventVersion = 2;\nfunction sendTrackingEvent(eventType, eventData, sendOn = \"lazy\") {\n  var _a;\n  (_a = safeWindow.__framer_events) == null ? void 0 : _a.push([eventType, eventData, sendOn]);\n  switch (eventType) {\n    case \"published_site_click\": {\n      const { trackingId, href } = eventData;\n      if (trackingId) {\n        document.dispatchEvent(new CustomEvent(\"framer:click\", { detail: { trackingId, href } }));\n      }\n      break;\n    }\n    case \"published_site_form_submit\": {\n      const { trackingId } = eventData;\n      if (trackingId) {\n        document.dispatchEvent(new CustomEvent(\"framer:formsubmit\", { detail: { trackingId } }));\n      }\n      break;\n    }\n    // NOTE: keep in sync with exportToHTML.ts, the initial pageview is sent from there\n    case \"published_site_pageview\": {\n      const { framerLocale } = eventData;\n      document.dispatchEvent(new CustomEvent(\"framer:pageview\", { detail: { framerLocale } }));\n      break;\n    }\n  }\n}\n\n// ../../library/src/router/computeRelativePath.ts\nfunction computeRelativePath(from, to) {\n  if (!from.startsWith(\"/\") || !to.startsWith(\"/\")) {\n    throw new Error(\"from/to paths are expected to be absolute\");\n  }\n  const [fromDir] = getDirAndFile(from);\n  const [toDir, toFile] = getDirAndFile(to);\n  let relativePath = relative(fromDir, toDir);\n  if (relativePath === \"\") relativePath = \".\";\n  if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n    relativePath = \"./\" + relativePath;\n  }\n  return relativePath + \"/\" + toFile;\n}\nfunction getDirAndFile(path) {\n  const index = path.lastIndexOf(\"/\");\n  return [path.substring(0, index + 1), path.substring(index + 1)];\n}\nvar CHAR_DOT = 46;\nvar CHAR_FORWARD_SLASH = 47;\nvar StringPrototypeCharCodeAt = (str, index) => str.charCodeAt(index);\nvar StringPrototypeLastIndexOf = (str, searchString) => str.lastIndexOf(searchString);\nvar StringPrototypeSlice = (str, start, end) => str.slice(start, end);\nfunction relative(from, to) {\n  if (from === to) return \"\";\n  from = \"/\" + normalizeString(from);\n  to = \"/\" + normalizeString(to);\n  if (from === to) return \"\";\n  const fromStart = 1;\n  const fromEnd = from.length;\n  const fromLen = fromEnd - fromStart;\n  const toStart = 1;\n  const toLen = to.length - toStart;\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for (; i < length; i++) {\n    const fromCode = StringPrototypeCharCodeAt(from, fromStart + i);\n    if (fromCode !== StringPrototypeCharCodeAt(to, toStart + i)) break;\n    else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i;\n  }\n  if (i === length) {\n    if (toLen > length) {\n      if (StringPrototypeCharCodeAt(to, toStart + i) === CHAR_FORWARD_SLASH) {\n        return StringPrototypeSlice(to, toStart + i + 1);\n      }\n      if (i === 0) {\n        return StringPrototypeSlice(to, toStart + i);\n      }\n    } else if (fromLen > length) {\n      if (StringPrototypeCharCodeAt(from, fromStart + i) === CHAR_FORWARD_SLASH) {\n        lastCommonSep = i;\n      } else if (i === 0) {\n        lastCommonSep = 0;\n      }\n    }\n  }\n  let out = \"\";\n  for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n    if (i === fromEnd || StringPrototypeCharCodeAt(from, i) === CHAR_FORWARD_SLASH) {\n      out += out.length === 0 ? \"..\" : \"/..\";\n    }\n  }\n  return `${out}${StringPrototypeSlice(to, toStart + lastCommonSep)}`;\n}\nvar allowAboveRoot = false;\nvar separator = \"/\";\nvar isPathSeparator = (code) => code === CHAR_FORWARD_SLASH;\nfunction normalizeString(path) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code = 0;\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length) code = StringPrototypeCharCodeAt(path, i);\n    else if (isPathSeparator(code)) break;\n    else code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) {\n      } else if (dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT || StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = StringPrototypeSlice(res, 0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - StringPrototypeLastIndexOf(res, separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length !== 0) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          res += res.length > 0 ? `${separator}..` : \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0) res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n        else res = StringPrototypeSlice(path, lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// ../../library/src/router/customNotFoundPagePaths.ts\nvar customNotFoundPagePaths = /* @__PURE__ */ new Set([\"/404.html\", \"/404\", \"/404/\"]);\n\n// ../../library/src/router/pathVariables.ts\nvar pathVariablesRegExpRaw = \":([a-z]\\\\w*)\";\nvar pathVariablesRegExp = /* @__PURE__ */ new RegExp(pathVariablesRegExpRaw, \"gi\");\n\n// ../../library/src/router/fillPathVariables.ts\nfunction fillPathVariables(path, variables) {\n  return path.replace(pathVariablesRegExp, (match, name) => {\n    const value = variables[name];\n    if (typeof value !== \"string\" || value.length === 0) return match;\n    return encodeURIComponent(value);\n  });\n}\n\n// ../../library/src/router/forwardQueryParams.ts\nfunction forwardCurrentQueryParams(href) {\n  const queryParamsString = typeof window !== \"undefined\" ? window.location.search : \"\";\n  if (!queryParamsString) {\n    return href;\n  }\n  return forwardQueryParams(queryParamsString, href);\n}\nfunction forwardQueryParams(queryParamsString, href) {\n  const startOfHash = href.indexOf(\"#\");\n  const hrefWithoutHash = startOfHash === -1 ? href : href.substring(0, startOfHash);\n  const hash2 = startOfHash === -1 ? \"\" : href.substring(startOfHash);\n  const startOfSearch = hrefWithoutHash.indexOf(\"?\");\n  if (startOfSearch === -1) {\n    return hrefWithoutHash + queryParamsString + hash2;\n  }\n  const currentSearchParams = new URLSearchParams(queryParamsString);\n  const newSearchString = hrefWithoutHash.substring(startOfSearch + 1);\n  const newSearchParams = new URLSearchParams(newSearchString);\n  for (const [key7, value] of currentSearchParams) {\n    if (!newSearchParams.has(key7)) {\n      newSearchParams.append(key7, value);\n    }\n  }\n  return hrefWithoutHash.substring(0, startOfSearch + 1) + newSearchParams.toString() + hash2;\n}\n\n// ../../library/src/router/getLocalizedNavigationPath.ts\nasync function replacePathVariables(path, currentLocale, nextLocale, defaultLocale, collectionId, pathVariables, collectionUtils) {\n  var _a;\n  let resultPath = path;\n  let isMissingInLocale = false;\n  const resultPathVariables = { ...pathVariables };\n  const matches = Array.from(resultPath.matchAll(pathVariablesRegExp));\n  const replacements = await Promise.all(\n    matches.map(async (match) => {\n      var _a2;\n      const pathVariableWithDelimiter = match == null ? void 0 : match[0];\n      const pathVariableValue = match == null ? void 0 : match[1];\n      if (!pathVariableWithDelimiter || !pathVariableValue) {\n        throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n      }\n      const currentSlug = pathVariables[pathVariableValue];\n      if (!currentSlug || !isString(currentSlug)) {\n        throw new Error(`No slug found for path variable ${pathVariableValue}`);\n      }\n      const utils = await ((_a2 = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a2.call(collectionUtils));\n      if (!utils || !currentLocale) {\n        return currentSlug;\n      }\n      const recordId = await utils.getRecordIdBySlug(currentSlug, currentLocale);\n      if (!recordId) return currentSlug;\n      const nextSlug = await utils.getSlugByRecordId(recordId, nextLocale);\n      if (!nextSlug) {\n        isMissingInLocale = true;\n        const defaultLocaleSlug = await utils.getSlugByRecordId(recordId, defaultLocale);\n        if (defaultLocaleSlug) {\n          resultPathVariables[pathVariableValue] = defaultLocaleSlug;\n        }\n        return defaultLocaleSlug ?? currentSlug;\n      }\n      resultPathVariables[pathVariableValue] = nextSlug;\n      return nextSlug;\n    })\n  );\n  let lastIndex = 0;\n  let replacedPath = \"\";\n  let hasMatch = false;\n  for (let i = 0; i < matches.length; i++) {\n    const match = matches[i];\n    const replacement = replacements[i];\n    if (!match || !replacement) continue;\n    replacedPath += resultPath.substring(lastIndex, match.index);\n    lastIndex = (match.index ?? 0) + (((_a = match[0]) == null ? void 0 : _a.length) ?? 0);\n    replacedPath += replacements[i];\n    hasMatch = true;\n  }\n  if (hasMatch) {\n    replacedPath += resultPath.substring(lastIndex);\n    resultPath = replacedPath;\n  }\n  return {\n    path: resultPath,\n    pathVariables: resultPathVariables,\n    isMissingInLocale\n  };\n}\nasync function getLocalizedNavigationPath({\n  currentLocale,\n  nextLocale,\n  defaultLocale,\n  route,\n  pathVariables,\n  collectionUtils,\n  preserveQueryParams\n}) {\n  const { path } = route;\n  let result = {\n    path,\n    pathVariables,\n    isMissingInLocale: false\n  };\n  if (!path) return result;\n  if (pathVariables && route.collectionId) {\n    try {\n      const pathReplacement = await replacePathVariables(\n        path,\n        currentLocale,\n        nextLocale,\n        defaultLocale,\n        route.collectionId,\n        pathVariables,\n        collectionUtils\n      );\n      result = pathReplacement;\n    } catch {\n    }\n  }\n  if (nextLocale.slug) {\n    result.path = \"/\" + nextLocale.slug + result.path;\n  }\n  if (preserveQueryParams && result.path) {\n    result.path = forwardCurrentQueryParams(result.path);\n  }\n  return result;\n}\n\n// ../../library/src/router/getSitePrefix.ts\nfunction getSitePrefix(siteCanonicalURL) {\n  if (!siteCanonicalURL) return \"\";\n  let url;\n  try {\n    url = new URL(siteCanonicalURL);\n  } catch {\n    return \"\";\n  }\n  if (url.pathname === \"/\" || window.location.origin !== url.origin) return \"\";\n  return url.pathname.endsWith(\"/\") ? url.pathname.slice(0, -1) : url.pathname;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nimport { useCallback, useEffect as useEffect3, useRef } from \"react\";\n\n// ../../library/src/router/pageEffects/PageEffectsContext.tsx\nimport React6 from \"react\";\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nvar defaultSitePageEffects = { global: void 0, routes: {} };\nvar PageEffectsContext = /* @__PURE__ */ React6.createContext(defaultSitePageEffects);\nfunction PageEffectsProvider({ children, value }) {\n  return /* @__PURE__ */ jsx4(PageEffectsContext.Provider, { value, children });\n}\nfunction usePageEffects() {\n  return React6.useContext(PageEffectsContext);\n}\n\n// ../../library/src/router/pageEffects/getPageEffect.ts\nfunction getPageEffectForRoute(currentRouteId, nextRouteId, { global, routes }) {\n  var _a;\n  return ((_a = routes[currentRouteId]) == null ? void 0 : _a[nextRouteId]) || global;\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/linearEasing.ts\nvar step = 10;\nvar maxDuration = 1e4;\nfunction createLinearEasing(generator) {\n  let time2 = step;\n  let state = generator.next(0);\n  const keyframes2 = [state.value];\n  while (!state.done && time2 < maxDuration) {\n    state = generator.next(time2);\n    keyframes2.push(state.value);\n    time2 += step;\n  }\n  if (keyframes2.length === 1) keyframes2.push(state.value);\n  return {\n    easing: `linear(${keyframes2.join(\",\")})`,\n    duration: time2 - step\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/masks.ts\nvar cssVariable = (name) => `--view-transition-${name}`;\nfunction parseUnit(value) {\n  return [parseFloat(value), value.endsWith(\"px\") ? \"px\" : \"%\"];\n}\nfunction calcMaskPosition(mask) {\n  const { innerWidth, innerHeight } = window;\n  const [x, xUnit] = parseUnit(mask.x);\n  const [y, yUnit] = parseUnit(mask.y);\n  return {\n    x: xUnit === \"px\" ? x : innerWidth * (x / 100),\n    y: yUnit === \"px\" ? y : innerHeight * (y / 100)\n  };\n}\nvar conic = {\n  makeKeyframe: (mask, progress2, page) => {\n    let percentage = 0;\n    if (page === \"exit\" && mask.angularDirection === \"clockwise\" && progress2 === \"start\" || page === \"exit\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"end\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"start\" || page === \"enter\" && mask.angularDirection === \"clockwise\" && progress2 === \"end\") {\n      percentage = mask.sweepAngle / 360 * 100;\n    }\n    return `${cssVariable(\"conic-offset\")}: ${percentage}%;`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"conic-offset\")})`;\n    const isTransparentToBlack = page === \"exit\" && mask.angularDirection === \"clockwise\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\";\n    const firstColor = isTransparentToBlack ? \"transparent\" : \"black\";\n    const secondColor = isTransparentToBlack ? \"black\" : \"transparent\";\n    let gradient = `conic-gradient(from `;\n    gradient += `${mask.angle}deg at ${mask.x} ${mask.y}, `;\n    gradient += `${firstColor} 0%, ${firstColor} ${offsetToken}, `;\n    gradient += `${secondColor} ${offsetToken}, ${secondColor} 100%)`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => `\n        @property ${cssVariable(\"conic-offset\")} {\n            syntax: '<percentage>';\n            initial-value: 0%;\n            inherits: false;\n        }\n    `\n};\nvar circle = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    if (progress2 === \"start\") {\n      return `clip-path: circle(0 at ${x}px ${y}px);`;\n    } else {\n      const endRadius = Math.hypot(Math.max(x, window.innerWidth - x), Math.max(y, window.innerHeight - y));\n      return `clip-path: circle(${endRadius}px at ${x}px ${y}px);`;\n    }\n  }\n};\nvar inset = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    const bottom = window.innerHeight - y;\n    const right = window.innerWidth - x;\n    return progress2 === \"start\" ? `clip-path: inset(${y}px ${right}px ${bottom}px ${x}px round ${mask.round}px);` : `clip-path: inset(0 round 0);`;\n  }\n};\nvar blinds = {\n  makeKeyframe: (mask, progress2, page) => {\n    const [, unit] = parseUnit(mask.width);\n    let width = `0${unit}`;\n    if (progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\") {\n      width = mask.width;\n    }\n    return `${cssVariable(\"blinds-width\")}: ${width};`;\n  },\n  makeStyles: (mask, page) => {\n    const widthToken = `var(${cssVariable(\"blinds-width\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `repeating-linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} 0px, ${firstColor} ${widthToken}, `;\n    gradient += `${secondColor} ${widthToken}, ${secondColor} ${mask.width})`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"blinds-width\")} {\n                syntax: '<length-percentage>';\n                initial-value: 0px;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar wipe = {\n  makeKeyframe: (_mask, progress2, page) => {\n    const offset = progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\" ? 1 : 0;\n    return `${cssVariable(\"wipe-offset\")}: ${offset};`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"wipe-offset\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} calc(calc(0% - ${mask.width}) + calc(calc(100% + ${mask.width}) * ${offsetToken})), `;\n    gradient += `${secondColor} calc(calc(100% + ${mask.width}) * ${offsetToken}))`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"wipe-offset\")} {\n                syntax: '<number>';\n                initial-value: 0;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar maskGenerators = { circle, conic, inset, blinds, wipe };\n\n// ../../library/src/router/pageEffects/cssGeneration/page.ts\nvar restState = {\n  opacity: 1,\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0\n};\nfunction valuesToCSSKeyframes(values, progress2, page, maskGenerator) {\n  var _a;\n  let keyframes2 = `\n      opacity: ${values.opacity};\n      transform: translate(${values.x}, ${values.y}) scale(${values.scale}) rotateX(${values.rotateX}deg) rotateY(${values.rotateY}deg) rotateZ(${values.rotate}deg);\n    `;\n  if (values.mask) {\n    keyframes2 += ((_a = maskGenerator == null ? void 0 : maskGenerator.makeKeyframe) == null ? void 0 : _a.call(maskGenerator, values.mask, progress2, page)) || \"\";\n  }\n  return keyframes2;\n}\nfunction getMaskGenerator(type) {\n  return type ? maskGenerators[type] : void 0;\n}\nfunction createPageTransitionRules(page, { transition, ...values }) {\n  var _a;\n  const name = \"view-transition-\" + page;\n  const settings = { duration: \"0s\", easing: \"linear\" };\n  if (transition.type === \"tween\") {\n    settings.duration = transition.duration + \"s\";\n    settings.easing = `cubic-bezier(${transition.ease.join(\",\")})`;\n  } else if (isSpringTransition(transition)) {\n    const { easing, duration } = createLinearEasing(\n      spring({\n        keyframes: [0, 1],\n        ...getSpringOptions(transition),\n        restDelta: 1e-3,\n        restSpeed: 1e-4\n      })\n    );\n    settings.duration = duration + \"ms\";\n    settings.easing = easing;\n  }\n  const maskGenerator = getMaskGenerator((_a = values == null ? void 0 : values.mask) == null ? void 0 : _a.type);\n  let startKeyframes = valuesToCSSKeyframes(values, \"start\", page, maskGenerator);\n  let endKeyframes = valuesToCSSKeyframes({ ...restState, mask: values.mask }, \"end\", page, maskGenerator);\n  if (page === \"exit\") {\n    ;\n    [startKeyframes, endKeyframes] = [endKeyframes, startKeyframes];\n  }\n  return `\n        ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makePropertyRules) ? maskGenerator.makePropertyRules(values.mask) : \"\"}\n\n        @keyframes ${name} {\n            0% {\n                ${startKeyframes}\n            }\n\n            100% {\n                ${endKeyframes}\n            }\n        }\n\n        ::view-transition-${page === \"enter\" ? \"new\" : \"old\"}(root) {\n            animation-name: ${name};\n            animation-duration: ${settings.duration};\n            animation-delay: ${transition.delay}s;\n            animation-timing-function: ${settings.easing};\n            animation-fill-mode: both;\n            ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makeStyles) ? maskGenerator.makeStyles(values.mask, page) : \"\"}\n        }\n    `;\n}\nfunction isSpringTransition(transition) {\n  return transition.type === \"spring\";\n}\nfunction getSpringOptions(transition) {\n  if (transition.durationBasedSpring) {\n    return {\n      duration: transition.duration * 1e3,\n      bounce: transition.bounce\n    };\n  }\n  return {\n    stiffness: transition.stiffness,\n    damping: transition.damping,\n    mass: transition.mass\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/index.ts\nvar VIEW_TRANSITION_STYLES_ID = \"view-transition-styles\";\nvar defaultPageTransition = {\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  opacity: 1,\n  rotate3d: false,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0,\n  transition: {\n    type: \"tween\",\n    delay: 0,\n    duration: 0.2,\n    ease: [0.27, 0, 0.51, 1],\n    stiffness: 400,\n    damping: 30,\n    mass: 1\n  }\n};\nfunction createViewTransitionStylesheet({ exit = defaultPageTransition, enter }) {\n  const styleElement = document.createElement(\"style\");\n  styleElement.id = VIEW_TRANSITION_STYLES_ID;\n  let styleContent = `\n        @media (prefers-reduced-motion) {\n            ::view-transition-group(*),\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                animation: none !important;\n            }\n        }\n    `;\n  const disableMixPlusLighter = exit.mask || enter.mask || exit.opacity || enter.opacity || exit.transition.delay || enter.transition.delay;\n  if (disableMixPlusLighter) {\n    styleContent += `\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                mix-blend-mode: normal;\n            }\n        `;\n  }\n  styleContent += `\n        ::view-transition-old(*),\n        ::view-transition-new(*) {\n            backface-visibility: hidden;\n        }\n    `;\n  styleContent += createPageTransitionRules(\"exit\", exit);\n  styleContent += createPageTransitionRules(\"enter\", enter);\n  styleElement.textContent = styleContent;\n  document.head.appendChild(styleElement);\n}\nfunction removeViewTransitionStylesheet() {\n  requestIdleCallback(() => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-remove\");\n      const element = document.getElementById(VIEW_TRANSITION_STYLES_ID);\n      if (element) {\n        document.head.removeChild(element);\n      }\n    });\n  });\n}\n\n// ../../library/src/router/pageEffects/viewTransition.ts\nvar noop3 = () => {\n};\nfunction supportsViewTransitions() {\n  return Boolean(document.startViewTransition);\n}\nfunction addVTStylesheetAfterInRender(effect) {\n  return new Promise((resolve) => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-style\");\n      createViewTransitionStylesheet(effect);\n      resolve();\n    });\n  });\n}\nasync function startViewTransition(updateView, effect, signal) {\n  if (!supportsViewTransitions()) {\n    void updateView();\n    return;\n  }\n  await addVTStylesheetAfterInRender(effect);\n  if (signal == null ? void 0 : signal.aborted) return;\n  performance.mark(\"framer-vt\");\n  const transition = document.startViewTransition(async () => {\n    performance.mark(\"framer-vt-freeze\");\n    if (signal == null ? void 0 : signal.aborted) return;\n    else signal == null ? void 0 : signal.addEventListener(\"abort\", () => transition.skipTransition());\n    await updateView();\n  });\n  transition.updateCallbackDone.then(() => {\n    performance.mark(\"framer-vt-unfreeze\");\n  }).catch(noop3);\n  Promise.all([transition.ready, transition.finished]).then(() => {\n    performance.mark(\"framer-vt-finished\");\n    removeViewTransitionStylesheet();\n  }).catch(noop3);\n  return transition;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nfunction useViewTransition() {\n  const sitePageEffects = usePageEffects();\n  const resolveHasPainted = useRef(void 0);\n  useEffect3(() => {\n    if (resolveHasPainted.current) {\n      resolveHasPainted.current();\n      resolveHasPainted.current = void 0;\n    }\n  });\n  return useCallback(\n    (currentRouteId, nextRouteId, update, signal) => {\n      const pageEffect = getPageEffectForRoute(currentRouteId, nextRouteId, sitePageEffects);\n      if (pageEffect) {\n        const hasPainted = new Promise((resolve) => {\n          resolveHasPainted.current = resolve;\n        });\n        return startViewTransition(\n          async () => {\n            update();\n            await hasPainted;\n          },\n          pageEffect,\n          signal\n        );\n      }\n      update();\n    },\n    [sitePageEffects]\n  );\n}\n\n// ../../library/src/router/routerDomUtils.ts\nfunction updateCanonicalURL(url, prevUrl) {\n  requestIdleCallback(() => {\n    const canonical = document.querySelector(\"link[rel='canonical']\");\n    if (!canonical) return;\n    const newURL = new URL(url, prevUrl);\n    newURL.search = \"\";\n    canonical.setAttribute(\"href\", newURL.toString());\n  });\n}\nvar announceDiv;\nvar announceNavigation = () => {\n  if (!announceDiv) {\n    announceDiv = document.createElement(\"div\");\n    announceDiv.setAttribute(\"aria-live\", \"assertive\");\n    announceDiv.setAttribute(\"aria-atomic\", \"true\");\n    announceDiv.style.position = \"absolute\";\n    announceDiv.style.transform = \"scale(0)\";\n    document.body.append(announceDiv);\n  }\n  setTimeout(() => {\n    announceDiv.textContent = document.title;\n  }, 60);\n};\n\n// ../../library/src/router/useMonitorNextPaintAfterRender.ts\nimport { useCallback as useCallback2, useRef as useRef2 } from \"react\";\n\n// ../../library/src/utils/useAfterPaintEffect.ts\nimport { useLayoutEffect } from \"react\";\nfunction useAfterPaintEffect(effectFn, deps, options, useEffectFn = useLayoutEffect) {\n  useEffectFn(() => {\n    const runAfterPaint = async (fn) => {\n      await yieldToMain({ ...options, continueAfter: \"paint\" });\n      return fn();\n    };\n    const runPromise = runAfterPaint(effectFn);\n    return () => {\n      void (async () => {\n        const cleanup = await runPromise;\n        if (!cleanup) return;\n        void runAfterPaint(cleanup);\n      })();\n    };\n  }, deps);\n}\n\n// ../../library/src/router/useMonitorNextPaintAfterRender.ts\nfunction useMonitorNextPaintAfterRender(label) {\n  const resolveHasPainted = useRef2(void 0);\n  useAfterPaintEffect(\n    () => {\n      if (resolveHasPainted.current) {\n        resolveHasPainted.current();\n        resolveHasPainted.current = void 0;\n      }\n    },\n    void 0,\n    // user-blocking ensures we get the correct timings here. Other priorities might delay this effect a little bit.\n    { priority: \"user-blocking\" }\n  );\n  return useCallback2(\n    (measureDetail) => {\n      const hasPainted = new Promise((resolve) => {\n        resolveHasPainted.current = resolve;\n      });\n      if (!label) return { promise: hasPainted, measureDetail, ignore: null };\n      const startLabel = `${label}-start`;\n      const endLabel = `${label}-end`;\n      let ignore = false;\n      performance.mark(startLabel);\n      hasPainted.finally(() => {\n        if (ignore) return;\n        performance.mark(endLabel);\n        performance.measure(label, {\n          start: startLabel,\n          end: endLabel,\n          detail: measureDetail\n        });\n      }).catch((e) => {\n        console.error(e);\n      });\n      return {\n        promise: hasPainted,\n        measureDetail,\n        ignore: () => {\n          var _a;\n          ignore = true;\n          (_a = resolveHasPainted.current) == null ? void 0 : _a.call(resolveHasPainted);\n          resolveHasPainted.current = void 0;\n        }\n      };\n    },\n    [label]\n  );\n}\n\n// ../../library/src/router/history.ts\nasync function pushRouteState(routeId, route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  localeId,\n  preserveQueryParams,\n  siteCanonicalURL\n}, isNavigationTransition = false) {\n  const { path } = route;\n  if (!path) return;\n  const newPath = getPathForRoute(route, {\n    currentRoutePath,\n    currentPathVariables,\n    hash: hash2,\n    pathVariables,\n    preserveQueryParams,\n    siteCanonicalURL\n  });\n  try {\n    return await pushHistoryState({ routeId, hash: hash2, pathVariables, localeId }, newPath, isNavigationTransition);\n  } catch {\n  }\n}\nfunction isHistoryState(data2) {\n  const routeIdKey = \"routeId\";\n  return isObject2(data2) && isString(data2[routeIdKey]);\n}\nfunction replaceHistoryState(data2, url, ignoreReplaceStateWrapper = false) {\n  performance.mark(\"framer-history-replace\");\n  const replaceState = ignoreReplaceStateWrapper ? window.history.__proto__.replaceState : window.history.replaceState;\n  replaceState.call(window.history, data2, \"\", url);\n}\nvar maybeHasPopstateBug = true;\nvar isImpactedPopstateBugChromiumVersion = /* @__PURE__ */ (() => {\n  if (typeof navigator === \"undefined\") return false;\n  const userAgent = navigator.userAgent;\n  const chromePos = userAgent.indexOf(\"Chrome/\");\n  const chromiumVersion = +userAgent.slice(chromePos + 7, userAgent.indexOf(\".\", chromePos));\n  return chromiumVersion > 101 && chromiumVersion < 128;\n})();\nasync function pushHistoryState(data2, url, isNavigationTransition = false) {\n  performance.mark(\"framer-history-push\");\n  updateCanonicalURL(url, window.location.href);\n  if (!isNavigationTransition) {\n    window.history.pushState(data2, \"\", url);\n    return;\n  }\n  let popstateCalled = false, popstateListener;\n  if (maybeHasPopstateBug) {\n    popstateListener = () => {\n      popstateCalled = true;\n      if (isImpactedPopstateBugChromiumVersion) return;\n      const msg = \"Popstate called after intercept(). Please report this to the Framer team.\";\n      console.error(msg);\n      sendTrackingEvent(\"published_site_load_recoverable_error\", {\n        message: msg\n      });\n    };\n    window.addEventListener(\"popstate\", popstateListener, { once: true });\n  }\n  if (isImpactedPopstateBugChromiumVersion && maybeHasPopstateBug) {\n    window.history.__proto__.pushState.call(window.history, data2, \"\", url);\n  } else {\n    window.history.pushState(data2, \"\", url);\n  }\n  if (maybeHasPopstateBug) {\n    queueMicrotask(() => {\n      if (popstateCalled) return;\n      maybeHasPopstateBug = false;\n      window.removeEventListener(\"popstate\", popstateListener);\n      return;\n    });\n  }\n}\nfunction useReplaceInitialState({\n  disabled,\n  routeId,\n  initialPathVariables,\n  initialLocaleId\n}) {\n  useLayoutEffect2(() => {\n    if (disabled) return;\n    performance.mark(\"framer-history-set-initial-state\");\n    replaceHistoryState(\n      { routeId, pathVariables: initialPathVariables, localeId: initialLocaleId },\n      void 0,\n      true\n    );\n  }, []);\n}\nvar supportsNavigationAPI = /* @__PURE__ */ (() => {\n  var _a;\n  return isWindow && typeof ((_a = window.navigation) == null ? void 0 : _a.back) === \"function\";\n})();\nfunction usePopStateHandler(currentRouteId, setCurrentRouteId) {\n  const startViewTransition2 = useViewTransition();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change\");\n  const viewTransitionReady = useRef3(void 0);\n  const popStateHandler = useCallback3(\n    async ({ state }) => {\n      var _a, _b, _c, _d, _e, _f;\n      if (((_a = window.navigation) == null ? void 0 : _a.transition) && ((_c = (_b = window.navigation) == null ? void 0 : _b.transition) == null ? void 0 : _c.navigationType) !== \"traverse\") return;\n      if (!isObject2(state)) return;\n      const { routeId, hash: hash2, pathVariables, localeId } = state;\n      if (!isString(routeId)) return;\n      const nextRender = monitorNextPaintAfterRender({\n        popstate: true\n      });\n      const stopMonitoringINPRelatedInputs = monitorINPRelatedInputs();\n      void nextRender.promise.finally(stopMonitoringINPRelatedInputs);\n      const changeRoute = () => {\n        setCurrentRouteId(\n          routeId,\n          isString(localeId) ? localeId : void 0,\n          isString(hash2) ? hash2 : void 0,\n          window.location.pathname + window.location.search + window.location.hash,\n          isObject2(pathVariables) ? pathVariables : void 0,\n          true,\n          nextRender,\n          false\n        );\n      };\n      const viewTransition = await startViewTransition2(currentRouteId.current, routeId, changeRoute);\n      const navigationTransition = (_d = window.navigation) == null ? void 0 : _d.transition;\n      await ((viewTransition == null ? void 0 : viewTransition.updateCallbackDone) ?? Promise.resolve()).then((_e = viewTransitionReady.current) == null ? void 0 : _e.resolve).catch((_f = viewTransitionReady.current) == null ? void 0 : _f.reject);\n      await nextRender.promise;\n      try {\n        await (navigationTransition == null ? void 0 : navigationTransition.finished);\n      } catch (error) {\n        console.warn(\"Popstate transition failed\", error);\n      }\n      announceNavigation();\n      updateCanonicalURL(window.location.href);\n    },\n    [currentRouteId, monitorNextPaintAfterRender, setCurrentRouteId, startViewTransition2]\n  );\n  const traversalHandler = useCallback3((event) => {\n    if (event.navigationType !== \"traverse\" || !event.canIntercept) return;\n    event.intercept({\n      async handler() {\n        await new Promise((resolve, reject) => {\n          viewTransitionReady.current = { resolve, reject };\n        });\n        viewTransitionReady.current = void 0;\n      },\n      scroll: \"after-transition\"\n    });\n  }, []);\n  useEffect4(() => {\n    window.addEventListener(\"popstate\", popStateHandler);\n    if (supportsNavigationAPI) window.navigation.addEventListener(\"navigate\", traversalHandler);\n    return () => {\n      window.removeEventListener(\"popstate\", popStateHandler);\n      if (supportsNavigationAPI) window.navigation.removeEventListener(\"navigate\", traversalHandler);\n    };\n  }, [popStateHandler, traversalHandler]);\n}\nfunction getHashForRoute(hash2, route, hashVariables) {\n  const resolvedHash = getRouteElementId(route, hash2);\n  if (!resolvedHash) return void 0;\n  const variables = Object.assign({}, route == null ? void 0 : route.elements, hashVariables);\n  return resolvedHash.replace(pathVariablesRegExp, (m2, p1) => variables[p1] ?? m2);\n}\nfunction getPathForRoute(route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  hashVariables,\n  relative: relative2 = true,\n  preserveQueryParams,\n  onlyHash = false,\n  siteCanonicalURL\n}) {\n  const resolvedHash = getHashForRoute(hash2, route, hashVariables);\n  if (onlyHash) return resolvedHash ?? \"\";\n  let currentPath = currentRoutePath ?? \"/\";\n  if (currentPathVariables) {\n    currentPath = currentPath.replace(pathVariablesRegExp, (m2, p1) => String(currentPathVariables[p1] || m2));\n  }\n  const targetPath = (route == null ? void 0 : route.path) ?? \"/\";\n  let path = targetPath;\n  if (pathVariables) {\n    path = path.replace(pathVariablesRegExp, (m2, p1) => String(pathVariables[p1] || m2));\n  }\n  const isSamePageHashNavigation = currentPath === path && resolvedHash;\n  if (relative2) {\n    if (customNotFoundPagePaths.has(currentPath) && typeof window !== \"undefined\") {\n      const sitePrefix = getSitePrefix(siteCanonicalURL);\n      path = computeRelativePath(window.location.pathname, sitePrefix + path);\n    } else {\n      path = computeRelativePath(currentPath, path);\n    }\n  }\n  if (preserveQueryParams || isSamePageHashNavigation) {\n    path = forwardCurrentQueryParams(path);\n  }\n  if (resolvedHash) {\n    path = `${path}#${resolvedHash}`;\n  }\n  return path;\n}\nasync function handleRedirectForMissingSlugs(route, pathVariables, nextLocale) {\n  if (!route.path) return false;\n  if (!pathVariables) return false;\n  const prefix2 = nextLocale.slug ? `/${nextLocale.slug}` : \"\";\n  const nextLocaleWithDefaultSlugPath = `${prefix2}${fillPathVariables(route.path, pathVariables)}`;\n  const response = await fetch(nextLocaleWithDefaultSlugPath, {\n    method: \"HEAD\",\n    redirect: \"manual\"\n  });\n  const isRedirect = response.type === \"opaqueredirect\";\n  if (isRedirect) {\n    window.location.href = window.location.origin + nextLocaleWithDefaultSlugPath;\n    return true;\n  }\n  return false;\n}\nasync function switchLocale(options) {\n  const result = await getLocalizedNavigationPath(options);\n  if (!result) return;\n  try {\n    localStorage.setItem(\"preferredLocale\", options.nextLocale.code);\n  } catch {\n  }\n  try {\n    if (!isString(result.path)) {\n      throw new Error(\"Expected result.path to be a string\");\n    }\n    if (result.isMissingInLocale) {\n      const hasRedirect = await handleRedirectForMissingSlugs(\n        options.route,\n        result.pathVariables,\n        options.nextLocale\n      );\n      if (hasRedirect) return;\n    }\n  } catch {\n  }\n  return result;\n}\nfunction pushLoadMoreHistory(hash2, paginationInfo) {\n  try {\n    const currentHistoryState = window.history.state;\n    if (!isHistoryState(currentHistoryState)) return;\n    const isInitialLoad = (currentHistoryState == null ? void 0 : currentHistoryState.paginationInfo) === void 0 || currentHistoryState.paginationInfo[hash2] === void 0;\n    const newPaginationInfo = { ...currentHistoryState.paginationInfo, [hash2]: paginationInfo };\n    replaceHistoryState({ ...currentHistoryState, paginationInfo: newPaginationInfo }, void 0, isInitialLoad);\n  } catch {\n  }\n}\nfunction useNativeLoadingSpinner() {\n  const navigationPromise = useRef3(Promise.resolve());\n  const navigationController = useRef3();\n  const navigateListener = useCallback3((navigateEvent) => {\n    if (navigateEvent.navigationType === \"traverse\" || !navigateEvent.canIntercept) return;\n    const controller = navigationController.current;\n    controller == null ? void 0 : controller.signal.addEventListener(\"abort\", () => {\n      controller.abort(\"user aborted\");\n    });\n    navigateEvent.intercept({\n      handler: () => navigationPromise.current\n    });\n  }, []);\n  return useCallback3(\n    (promise, updateURL, controller) => {\n      if (!supportsNavigationAPI) {\n        void updateURL();\n        return;\n      }\n      navigationPromise.current = promise;\n      navigationController.current = controller;\n      window.navigation.addEventListener(\"navigate\", navigateListener);\n      void updateURL(true);\n      void promise.finally(() => {\n        window.navigation.removeEventListener(\"navigate\", navigateListener);\n      });\n    },\n    [navigateListener]\n  );\n}\n\n// ../../library/src/modules/useTracking.ts\nimport { useCallback as useCallback4, useContext as useContext2 } from \"react\";\n\n// ../../library/src/utils/slugify.ts\nvar nonSlugCharactersRegExp = /[^\\p{Letter}\\p{Number}()]+/gu;\nvar trimSlugRegExp = /^-+|-+$/gu;\nfunction slugify(value) {\n  return value.toLowerCase().replace(nonSlugCharactersRegExp, \"-\").replace(trimSlugRegExp, \"\");\n}\n\n// ../../library/src/modules/NodeIdContext.tsx\nimport React7 from \"react\";\nvar NodeIdContext = /* @__PURE__ */ React7.createContext(null);\n\n// ../../library/src/modules/useTracking.ts\nfunction useTracking() {\n  const router = useRouter();\n  const nodeId = useContext2(NodeIdContext);\n  return useCallback4(\n    (trackingId) => {\n      var _a;\n      if (!((_a = router.pageviewEventData) == null ? void 0 : _a.current)) return;\n      if (slugify(trackingId) !== trackingId) {\n        throw new Error(`Invalid tracking ID: ${trackingId}`);\n      }\n      if (router.pageviewEventData.current instanceof Promise) {\n        void router.pageviewEventData.current.then(\n          (eventData) => sendCustomTrackingEvent(eventData, nodeId, trackingId)\n        );\n      } else {\n        sendCustomTrackingEvent(router.pageviewEventData.current, nodeId, trackingId);\n      }\n    },\n    [router, nodeId]\n  );\n}\nfunction sendCustomTrackingEvent(eventData, nodeId, trackingId) {\n  sendTrackingEvent(\n    \"published_site_custom_event\",\n    {\n      ...eventData,\n      nodeId,\n      // Don't attach a tracking ID if it's empty\n      trackingId: trackingId || null\n    },\n    \"eager\"\n  );\n}\n\n// ../../library/src/router/useRouteAnchor.ts\nimport React8 from \"react\";\nfunction useRouteAnchor(routeId, { elementId, hash: linkHash } = {}) {\n  const { navigate, currentPathVariables, preserveQueryParams, siteCanonicalURL } = useRouter();\n  const route = useRoute(routeId);\n  const currentRouteId = useCurrentRouteId();\n  const currentRoute = useRoute(currentRouteId ?? \"\");\n  useRoutePreloader([routeId], true);\n  const hash2 = linkHash ?? elementId;\n  const href = React8.useMemo(\n    () => getPathForRoute(route, {\n      currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n      currentPathVariables,\n      hash: hash2,\n      preserveQueryParams,\n      siteCanonicalURL\n    }),\n    [currentRoute, currentPathVariables, hash2, preserveQueryParams, route, siteCanonicalURL]\n  );\n  const navigateToRoute = React8.useCallback(() => navigate == null ? void 0 : navigate(routeId, hash2), [hash2, navigate, routeId]);\n  const onClick = React8.useCallback(\n    (event) => {\n      event.preventDefault();\n      navigateToRoute();\n    },\n    [navigateToRoute]\n  );\n  return { onClick, href };\n}\n\n// ../../library/src/router/useLocale.ts\nimport React9 from \"react\";\n\n// ../../library/src/router/getLocalesForCurrentRoute.ts\nasync function getLocalesForCurrentRoute(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  if (!currentRoute) return locales;\n  const slugByLocaleIfCollectionPage = await getSlugByLocaleIfCollectionPage(\n    activeLocale,\n    locales,\n    currentRoute,\n    pathVariables,\n    collectionUtils\n  );\n  const includedLocalesForCurrentRoute = currentRoute.includedLocales;\n  const localesForCurrentRoute = [];\n  for (const locale of locales) {\n    if (includedLocalesForCurrentRoute) {\n      if (!includedLocalesForCurrentRoute.includes(locale.id)) continue;\n    }\n    if (slugByLocaleIfCollectionPage) {\n      const hasSlug = slugByLocaleIfCollectionPage.has(locale.id);\n      if (!hasSlug) continue;\n    }\n    localesForCurrentRoute.push(locale);\n  }\n  return localesForCurrentRoute;\n}\nasync function getSlugByLocaleIfCollectionPage(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  var _a;\n  const { collectionId } = currentRoute;\n  if (!collectionId) return null;\n  if (!activeLocale) return null;\n  if (!pathVariables) return null;\n  const { path } = currentRoute;\n  if (!path) return null;\n  const matches = Array.from(path.matchAll(pathVariablesRegExp));\n  const lastMatch = matches.pop();\n  if (!lastMatch) return null;\n  const pathVariableWithDelimiter = lastMatch == null ? void 0 : lastMatch[0];\n  const pathVariableValue = lastMatch == null ? void 0 : lastMatch[1];\n  if (!pathVariableWithDelimiter || !pathVariableValue) {\n    throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n  }\n  const currentSlug = pathVariables[pathVariableValue];\n  if (!currentSlug || !isString(currentSlug)) {\n    throw new Error(`No slug found for path variable ${pathVariableValue}`);\n  }\n  const utils = await ((_a = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a.call(collectionUtils));\n  if (!utils) return null;\n  const recordId = await utils.getRecordIdBySlug(currentSlug, activeLocale);\n  if (!recordId) return null;\n  const slugById = /* @__PURE__ */ new Map();\n  await Promise.all(\n    locales.map(async (locale) => {\n      const slug = await utils.getSlugByRecordId(recordId, locale);\n      if (!slug) return;\n      slugById.set(locale.id, slug);\n    })\n  );\n  return slugById;\n}\n\n// ../../library/src/router/useLocale.ts\nvar noopAsync = async () => {\n};\nvar defaultLocaleInfo = {\n  activeLocale: null,\n  locales: [],\n  setLocale: noopAsync\n};\nvar LocaleInfoContext = /* @__PURE__ */ React9.createContext(defaultLocaleInfo);\nfunction useLocaleInfo() {\n  return React9.useContext(LocaleInfoContext);\n}\nfunction useLocalesForCurrentRoute() {\n  const { currentRouteId, routes, collectionUtils, currentPathVariables } = useRouter();\n  const { activeLocale, locales } = useLocaleInfo();\n  const [localesForCurrentRoute, setLocalesForCurrentRoute] = React9.useState(\n    () => activeLocale ? [activeLocale] : []\n  );\n  const currentRoute = currentRouteId ? routes == null ? void 0 : routes[currentRouteId] : void 0;\n  React9.useEffect(() => {\n    let active = true;\n    getLocalesForCurrentRoute(activeLocale, locales, currentRoute, currentPathVariables, collectionUtils).then((localesSubset) => {\n      if (!active) return;\n      React9.startTransition(() => {\n        if (localesSubset) {\n          setLocalesForCurrentRoute(localesSubset);\n        } else {\n          setLocalesForCurrentRoute(activeLocale ? [activeLocale] : []);\n        }\n      });\n    }).catch(() => {\n    });\n    return () => {\n      active = false;\n    };\n  }, [activeLocale, locales, collectionUtils, currentRoute, currentPathVariables]);\n  return localesForCurrentRoute;\n}\nfunction useLocalizationInfo() {\n  const { activeLocale, locales, setLocale } = useLocaleInfo();\n  return {\n    activeLocalization: activeLocale,\n    localizations: locales,\n    setLocalization: setLocale\n  };\n}\nfunction useLocaleCode() {\n  var _a;\n  return ((_a = useLocaleInfo().activeLocale) == null ? void 0 : _a.code) ?? \"en-US\";\n}\nfunction useLocale() {\n  return useLocaleCode();\n}\n\n// ../../library/src/router/hydration/reactHydrationINPOptimizer.ts\nimport { useEffect as useEffect5 } from \"react\";\nvar eventsToStop = [\n  \"mousedown\",\n  \"mouseup\",\n  \"touchcancel\",\n  \"touchend\",\n  \"touchstart\",\n  \"auxclick\",\n  \"dblclick\",\n  \"pointercancel\",\n  \"pointerdown\",\n  \"pointerup\",\n  \"dragend\",\n  \"dragstart\",\n  \"drop\",\n  \"compositionend\",\n  \"compositionstart\",\n  \"keydown\",\n  \"keypress\",\n  \"keyup\",\n  \"input\",\n  \"textInput\",\n  // Intentionally camelCase\n  \"copy\",\n  \"cut\",\n  \"paste\",\n  \"click\",\n  \"change\",\n  \"contextmenu\",\n  \"reset\"\n];\nvar stopFn = (event) => {\n  var _a, _b;\n  if (!((_b = (_a = event.target) == null ? void 0 : _a.closest) == null ? void 0 : _b.call(_a, \"#main\"))) return;\n  event.stopPropagation();\n  performance.mark(\"framer-react-event-handling-prevented\");\n};\nvar shouldTurnOnEventHandling = false;\nfunction turnOffReactEventHandling() {\n  if (!eventsToStop) return;\n  shouldTurnOnEventHandling = true;\n  performance.mark(\"framer-react-event-handling-start\");\n  const options = { capture: true };\n  const body = document.body;\n  eventsToStop.forEach((event) => body.addEventListener(event, stopFn, options));\n}\nfunction TurnOnReactEventHandling() {\n  useEffect5(() => {\n    if (!shouldTurnOnEventHandling || !eventsToStop) return;\n    const options = { capture: true };\n    const body = document.body;\n    eventsToStop.forEach((event) => body.removeEventListener(event, stopFn, options));\n    eventsToStop = void 0;\n    performance.mark(\"framer-react-event-handling-end\");\n  }, []);\n  return null;\n}\n\n// ../../library/src/router/hydration/hydrationTimings.ts\nimport { useEffect as useEffect6, useInsertionEffect, useLayoutEffect as useLayoutEffect3 } from \"react\";\n\n// ../../library/src/router/hydration/onlyRunOnce.ts\nfunction onlyRunOnce(originalMethod) {\n  let hasRun = false;\n  return function(...args) {\n    if (hasRun) return;\n    hasRun = true;\n    return originalMethod.apply(this, args);\n  };\n}\n\n// ../../library/src/router/hydration/hydrationTimings.ts\nfunction measureSafe(name, start, end) {\n  try {\n    performance.measure(name, start, end);\n  } catch (e) {\n    console.warn(`Could not measure ${name}`, e);\n  }\n}\nvar _measureUnattributedHydrationOverhead_dec, _measureMutationEffects_dec, _markLayoutStylePaintEnd_dec, _markRafEnd_dec, _markRafStart_dec, _markUseEffectsEnd_dec, _markUseEffectsAreSynchronous_dec, _markUseEffectsRouterStart_dec, _markUseEffectsStart_dec, _markUseLayoutEffectsEnd_dec, _markRouterUseLayoutEffectStart_dec, _markUseLayoutEffectsStart_dec, _markUseInsertionEffectsEnd_dec, _markUseInsertionEffectRouterStart_dec, _markUseInsertionEffectsStart_dec, _markRenderEnd_dec, _markRenderStart_dec, _init;\n_markRenderStart_dec = [onlyRunOnce], _markRenderEnd_dec = [onlyRunOnce], _markUseInsertionEffectsStart_dec = [onlyRunOnce], _markUseInsertionEffectRouterStart_dec = [onlyRunOnce], _markUseInsertionEffectsEnd_dec = [onlyRunOnce], _markUseLayoutEffectsStart_dec = [onlyRunOnce], _markRouterUseLayoutEffectStart_dec = [onlyRunOnce], _markUseLayoutEffectsEnd_dec = [onlyRunOnce], _markUseEffectsStart_dec = [onlyRunOnce], _markUseEffectsRouterStart_dec = [onlyRunOnce], _markUseEffectsAreSynchronous_dec = [onlyRunOnce], _markUseEffectsEnd_dec = [onlyRunOnce], _markRafStart_dec = [onlyRunOnce], _markRafEnd_dec = [onlyRunOnce], _markLayoutStylePaintEnd_dec = [onlyRunOnce], _measureMutationEffects_dec = [onlyRunOnce], _measureUnattributedHydrationOverhead_dec = [onlyRunOnce];\nvar HydrationMarker = class {\n  constructor() {\n    __runInitializers(_init, 5, this);\n    __publicField(this, \"render\", {\n      markStart: () => this.markRenderStart(),\n      markEnd: () => this.markRenderEnd()\n    });\n    __publicField(this, \"mutationEffects\", {\n      measure: () => this.measureMutationEffects()\n    });\n    __publicField(this, \"useInsertionEffects\", {\n      markStart: () => this.markUseInsertionEffectsStart(),\n      markRouterStart: () => this.markUseInsertionEffectRouterStart(),\n      markEnd: () => this.markUseInsertionEffectsEnd()\n    });\n    __publicField(this, \"useLayoutEffects\", {\n      markStart: () => this.markUseLayoutEffectsStart(),\n      markRouterStart: () => this.markRouterUseLayoutEffectStart(),\n      markEnd: () => this.markUseLayoutEffectsEnd()\n    });\n    __publicField(this, \"useEffects\", {\n      markStart: () => this.markUseEffectsStart(),\n      markRouterStart: () => this.markUseEffectsRouterStart(),\n      markEnd: () => this.markUseEffectsEnd(),\n      markAreSynchronous: () => this.markUseEffectsAreSynchronous()\n    });\n    __publicField(this, \"browserRendering\", {\n      hasStarted: false,\n      requestAnimationFrame: {\n        markStart: () => this.markRafStart(),\n        markEnd: () => this.markRafEnd()\n      },\n      layoutStylePaint: {\n        markEnd: () => this.markLayoutStylePaintEnd()\n      }\n    });\n    __publicField(this, \"unattributedHydrationOverhead\", {\n      measure: () => this.measureUnattributedHydrationOverhead()\n    });\n  }\n  markRenderStart() {\n    performance.mark(\"framer-hydration-start\" /* Hydration_Start */);\n  }\n  markRenderEnd() {\n    performance.mark(\"framer-hydration-render-end\" /* ReactRender_End */);\n    measureSafe(\"framer-hydration-render\" /* ReactRender */, \"framer-hydration-start\" /* Hydration_Start */, \"framer-hydration-render-end\" /* ReactRender_End */);\n  }\n  markUseInsertionEffectsStart() {\n    performance.mark(\"framer-hydration-insertion-effects-start\" /* UseInsertionEffects_Start */);\n  }\n  markUseInsertionEffectRouterStart() {\n    performance.mark(\"framer-hydration-router-insertion-effect\" /* UseInsertionEffect_RouterStart */);\n  }\n  markUseInsertionEffectsEnd() {\n    performance.mark(\"framer-hydration-insertion-effects-end\" /* UseInsertionEffects_End */);\n    measureSafe(\n      \"framer-hydration-insertion-effects\" /* UseInsertionEffects */,\n      \"framer-hydration-insertion-effects-start\" /* UseInsertionEffects_Start */,\n      \"framer-hydration-insertion-effects-end\" /* UseInsertionEffects_End */\n    );\n  }\n  markUseLayoutEffectsStart() {\n    performance.mark(\"framer-hydration-layout-effects-start\" /* UseLayoutEffects_Start */);\n  }\n  markRouterUseLayoutEffectStart() {\n    performance.mark(\"framer-hydration-router-layout-effect\" /* UseLayoutEffect_RouterStart */);\n  }\n  markUseLayoutEffectsEnd() {\n    performance.mark(\"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */);\n    measureSafe(\"framer-hydration-layout-effects\" /* UseLayoutEffects */, \"framer-hydration-layout-effects-start\" /* UseLayoutEffects_Start */, \"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */);\n  }\n  markUseEffectsStart() {\n    performance.mark(\"framer-hydration-effects-start\" /* UseEffects_Start */);\n  }\n  markUseEffectsRouterStart() {\n    performance.mark(\"framer-hydration-router-effect\" /* UseEffects_RouterStart */);\n  }\n  markUseEffectsAreSynchronous() {\n    performance.mark(\"framer-hydration-effects-sync\" /* UseEffectsAreSynchronous */);\n  }\n  markUseEffectsEnd() {\n    var _a, _b;\n    performance.mark(\"framer-hydration-effects-end\" /* UseEffects_End */);\n    measureSafe(\n      \"framer-hydration-effects\" /* UseEffects */,\n      ((_a = performance.getEntriesByName(\"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(\"framer-hydration-effects-start\" /* UseEffects_Start */)[0]) == null ? void 0 : _b.name),\n      \"framer-hydration-effects-end\" /* UseEffects_End */\n    );\n  }\n  markRafStart() {\n    this.browserRendering.hasStarted = true;\n    performance.mark(\"framer-hydration-browser-render-start\" /* BrowserRender_RafStart */);\n  }\n  markRafEnd() {\n    performance.mark(\"framer-hydration-browser-raf-end\" /* BrowserRender_RafEnd */);\n    measureSafe(\n      \"framer-hydration-raf\" /* BrowserRender_RafDuration */,\n      \"framer-hydration-browser-render-start\" /* BrowserRender_RafStart */,\n      \"framer-hydration-browser-raf-end\" /* BrowserRender_RafEnd */\n    );\n  }\n  markLayoutStylePaintEnd() {\n    performance.mark(\"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */);\n    measureSafe(\"framer-hydration-time-to-first-paint\" /* TimeToFirstPaint */, \"framer-hydration-start\" /* Hydration_Start */, \"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */);\n    measureSafe(\n      \"framer-hydration-browser-render\" /* BrowserRender_LayoutStylePaintDuration */,\n      \"framer-hydration-browser-raf-end\" /* BrowserRender_RafEnd */,\n      \"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */\n    );\n  }\n  measureMutationEffects() {\n    measureSafe(\"framer-hydration-commit\" /* MutationEffects */, \"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */, \"framer-hydration-effects-start\" /* UseEffects_Start */);\n  }\n  measureUnattributedHydrationOverhead() {\n    var _a, _b;\n    measureSafe(\n      \"framer-hydration-uho\" /* UnattributedHydrationOverhead */,\n      // If effects have run before the start of the render pipeline, we measure from the effects end.\n      // If not, the paint will happen before effects run, so we measure from the layout effects end.\n      ((_a = performance.getEntriesByName(\"framer-hydration-effects-end\" /* UseEffects_End */)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(\"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */)[0]) == null ? void 0 : _b.name),\n      \"framer-hydration-browser-render-start\" /* BrowserRender_RafStart */\n    );\n  }\n};\n_init = __decoratorStart(null);\n__decorateElement(_init, 1, \"markRenderStart\", _markRenderStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRenderEnd\", _markRenderEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseInsertionEffectsStart\", _markUseInsertionEffectsStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseInsertionEffectRouterStart\", _markUseInsertionEffectRouterStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseInsertionEffectsEnd\", _markUseInsertionEffectsEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseLayoutEffectsStart\", _markUseLayoutEffectsStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRouterUseLayoutEffectStart\", _markRouterUseLayoutEffectStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseLayoutEffectsEnd\", _markUseLayoutEffectsEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsStart\", _markUseEffectsStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsRouterStart\", _markUseEffectsRouterStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsAreSynchronous\", _markUseEffectsAreSynchronous_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsEnd\", _markUseEffectsEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRafStart\", _markRafStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRafEnd\", _markRafEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markLayoutStylePaintEnd\", _markLayoutStylePaintEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"measureMutationEffects\", _measureMutationEffects_dec, HydrationMarker);\n__decorateElement(_init, 1, \"measureUnattributedHydrationOverhead\", _measureUnattributedHydrationOverhead_dec, HydrationMarker);\n__decoratorMetadata(_init, HydrationMarker);\nvar hydrationMarker;\nfunction markHydrationStart() {\n  hydrationMarker = new HydrationMarker();\n  hydrationMarker.render.markStart();\n}\nfunction useMarkRouterEffects() {\n  useInsertionEffect(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useInsertionEffects.markRouterStart();\n  }, []);\n  useLayoutEffect3(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useLayoutEffects.markRouterStart();\n  }, []);\n  useEffect6(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markRouterStart();\n  }, []);\n}\nvar wasInBackground = false;\nfunction useMarkSuspenseEffectsStart() {\n  useInsertionEffect(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.render.markEnd();\n    hydrationMarker == null ? void 0 : hydrationMarker.useInsertionEffects.markStart();\n  }, []);\n  useLayoutEffect3(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useLayoutEffects.markStart();\n    if (document.visibilityState !== \"visible\") {\n      wasInBackground = true;\n      return;\n    }\n    frame.read(() => {\n      hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.requestAnimationFrame.markStart();\n      hydrationMarker == null ? void 0 : hydrationMarker.unattributedHydrationOverhead.measure();\n    });\n  }, []);\n  useEffect6(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markStart();\n    if (!(hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.hasStarted)) {\n      hydrationMarker == null ? void 0 : hydrationMarker.mutationEffects.measure();\n      hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markAreSynchronous();\n    }\n  }, []);\n}\nfunction useMarkSuspenseEffectEnd() {\n  useInsertionEffect(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useInsertionEffects.markEnd();\n  }, []);\n  useLayoutEffect3(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useLayoutEffects.markEnd();\n    if (wasInBackground || document.visibilityState !== \"visible\") return;\n    frame.read(() => {\n      hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.requestAnimationFrame.markEnd();\n      void yieldToMain().then(() => {\n        hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.layoutStylePaint.markEnd();\n      });\n    });\n  }, []);\n  useEffect6(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markEnd();\n  }, []);\n}\nfunction MarkSuspenseEffectsStart() {\n  useMarkSuspenseEffectsStart();\n  return null;\n}\nfunction MarkSuspenseEffectsEnd() {\n  useMarkSuspenseEffectEnd();\n  return null;\n}\nvar MarkSuspenseEffects = { Start: MarkSuspenseEffectsStart, End: MarkSuspenseEffectsEnd };\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nimport { Component } from \"react\";\n\n// ../../library/src/router/renderPage.tsx\nimport React10 from \"react\";\nimport { jsx as jsx5 } from \"react/jsx-runtime\";\nfunction renderPage(Page4, defaultPageStyle) {\n  const props = { style: defaultPageStyle, \"data-framer-root\": \"\" };\n  return React10.isValidElement(Page4) ? React10.cloneElement(Page4, props) : /* @__PURE__ */ jsx5(Page4, { ...props });\n}\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nvar NotFoundError = class extends Error {\n};\nvar NotFoundErrorBoundary = class extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: void 0, forceUpdateKey: props.forceUpdateKey };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  /** Resets the error when forceUpdateKey gets bumped. */\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (nextProps.forceUpdateKey !== prevState.forceUpdateKey) {\n      const newState = {\n        forceUpdateKey: nextProps.forceUpdateKey\n      };\n      if (prevState.error) {\n        newState.error = void 0;\n      }\n      return newState;\n    }\n    return null;\n  }\n  render() {\n    if (this.state.error === void 0) {\n      return this.props.children;\n    }\n    if (!(this.state.error instanceof NotFoundError)) {\n      throw this.state.error;\n    }\n    const { notFoundPage, defaultPageStyle } = this.props;\n    if (!notFoundPage) {\n      throw this.state.error;\n    }\n    return renderPage(notFoundPage, defaultPageStyle);\n  }\n};\n\n// ../../library/src/router/inferInitialRouteFromPath.ts\nvar memoPathRoutes;\nvar memoPaths;\nvar lastRoutes;\nfunction getRouteInfoMemo(routes) {\n  if (lastRoutes !== routes) {\n    memoPathRoutes = {};\n    for (const [routeId, { path }] of Object.entries(routes)) {\n      if (path) memoPathRoutes[path] = { path, depth: pathDepth(path), routeId };\n    }\n    memoPaths = Object.values(memoPathRoutes);\n    memoPaths.sort(({ depth: depth1 }, { depth: depth2 }) => depth2 - depth1);\n    lastRoutes = routes;\n  }\n  return [memoPathRoutes, memoPaths];\n}\nfunction inferInitialRouteFromPath(routes, decodedLocationPath, fallback = true, locales = []) {\n  const [pathRoutes, paths] = getRouteInfoMemo(routes);\n  let activeLocale;\n  let localeId;\n  let locationPath = decodedLocationPath;\n  if (locales.length > 0) {\n    const firstPathSegment = locationPath.split(\"/\").find(Boolean);\n    if (firstPathSegment) {\n      activeLocale = locales.find(({ slug }) => slug === firstPathSegment);\n      if (activeLocale) {\n        localeId = activeLocale.id;\n        locationPath = locationPath.substring(activeLocale.slug.length + 1);\n      }\n    }\n    if (!localeId) {\n      const defaultLocale = locales.find(({ slug }) => slug === \"\");\n      if (defaultLocale) {\n        localeId = defaultLocale.id;\n      }\n    }\n  }\n  const exactMatch = pathRoutes[locationPath];\n  if (exactMatch) {\n    const match = matchPath(locationPath, exactMatch.path);\n    if (match.isMatch) return { routeId: exactMatch.routeId, localeId, pathVariables: match.pathVariables };\n  }\n  for (const { path, routeId } of paths) {\n    const match = matchPath(locationPath, path);\n    if (match.isMatch) return { routeId, localeId, pathVariables: match.pathVariables };\n  }\n  if (!fallback) throw new Error(\"No exact match found for path\");\n  const rootPath = pathRoutes[\"/\"];\n  if (rootPath) return { routeId: rootPath.routeId, localeId };\n  const firstRoute = Object.keys(routes)[0];\n  if (!firstRoute) throw new Error(\"Router should not have undefined routes\");\n  return { routeId: firstRoute, localeId };\n}\nfunction pathDepth(path) {\n  const pathWithTrimmedSlashes = path.replace(/^\\/|\\/$/gu, \"\");\n  if (pathWithTrimmedSlashes === \"\") return 0;\n  return pathWithTrimmedSlashes.split(\"/\").length;\n}\nfunction matchPath(path, routePath) {\n  const pathVariablesKeys = [];\n  const safeRoutePath = escapeStringRegExp(routePath);\n  const routePathRegExpString = safeRoutePath.replace(pathVariablesRegExp, (_, name) => {\n    pathVariablesKeys.push(name);\n    return \"([^/]+)\";\n  });\n  const routePathRegExp = new RegExp(routePathRegExpString + \"$\");\n  const matches = path.match(routePathRegExp);\n  if (!matches) return { isMatch: false };\n  if (matches.length === 1) return { isMatch: true };\n  const pathVariables = {};\n  const pathVariablesValues = matches.slice(1);\n  for (let i = 0; i < pathVariablesKeys.length; ++i) {\n    const key7 = pathVariablesKeys[i];\n    if (key7 === void 0) continue;\n    const value = pathVariablesValues[i];\n    const existingValue = pathVariables[key7];\n    if (existingValue) {\n      if (existingValue !== value) {\n        return { isMatch: false };\n      } else {\n        continue;\n      }\n    }\n    if (value === void 0) {\n      throw new Error(\"Path variable values cannot be undefined\");\n    }\n    pathVariables[key7] = value;\n  }\n  return { isMatch: true, pathVariables };\n}\nfunction escapeStringRegExp(string) {\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/gu, \"\\\\$&\").replace(/-/gu, \"\\\\x2d\");\n}\n\n// ../../library/src/router/routeVariants.ts\nfunction getVariantsFromServerTiming() {\n  var _a;\n  if (\"PerformanceServerTiming\" in window) {\n    const serverTiming = (_a = performance.getEntriesByType(\"navigation\")[0]) == null ? void 0 : _a.serverTiming;\n    if (!serverTiming || serverTiming.length === 0) return new URLSearchParams();\n    const entry = serverTiming.find((it) => it.name === \"abtests\");\n    if (!entry) return new URLSearchParams();\n    return new URLSearchParams(entry.description);\n  }\n  return new URLSearchParams();\n}\nfunction patchRoute(routes, abTestId, abTestingVariantId) {\n  const route = routes[abTestingVariantId];\n  if (!route) return;\n  const routeId = route.abTestingParentId ?? abTestingVariantId;\n  if (!routes[routeId]) return;\n  const { abTestingParentId, ...patchingRoute } = route;\n  const elements = routes[routeId].elements || route.elements ? { ...routes[routeId].elements, ...route.elements } : void 0;\n  routes[routeId] = {\n    ...patchingRoute,\n    elements,\n    abTestingVariantId,\n    abTestId\n  };\n}\nfunction patchRoutesFromSearchParams(routes, variants) {\n  for (const [abTestId, abTestingVariantId] of variants) {\n    patchRoute(routes, abTestId, abTestingVariantId);\n  }\n}\nfunction removeRoutesVariants(routes) {\n  var _a;\n  for (const routeId in routes) {\n    if ((_a = routes[routeId]) == null ? void 0 : _a.abTestingParentId) {\n      delete routes[routeId];\n    }\n  }\n}\nfunction patchInitialRoute(routes, routeId) {\n  var _a, _b;\n  if (!routes[routeId]) return;\n  if (!routes[routeId].abTestingParentId) return;\n  const parentId = routes[routeId].abTestingParentId;\n  const { abTestingParentId, ...route } = routes[routeId];\n  const elements = ((_a = routes[parentId]) == null ? void 0 : _a.elements) || route.elements ? { ...(_b = routes[parentId]) == null ? void 0 : _b.elements, ...route.elements } : void 0;\n  routes[parentId] = {\n    ...route,\n    elements,\n    abTestingVariantId: routeId\n  };\n}\nfunction patchRoutesForABTesting(routes, initialRouteId) {\n  var _a;\n  if (typeof window === \"undefined\") return initialRouteId;\n  let resolvedInitialRouteId = initialRouteId;\n  if (initialRouteId) {\n    patchInitialRoute(routes, initialRouteId);\n    const parentRouteId = (_a = routes[initialRouteId]) == null ? void 0 : _a.abTestingParentId;\n    if (parentRouteId) {\n      resolvedInitialRouteId = parentRouteId;\n    }\n  }\n  patchRoutesFromSearchParams(routes, getVariantsFromServerTiming());\n  removeRoutesVariants(routes);\n  return resolvedInitialRouteId;\n}\n\n// ../../shared/src/ssg/constants.ts\nvar mainTagId = \"main\";\nvar generatedPageDatasetKey = \"framerGeneratedPage\";\nvar searchIndexMetaName = \"framer-search-index\";\nvar searchIndexMetaSelector = `meta[name=\"${searchIndexMetaName}\"]`;\nvar endOfHeadStartMarker = \"<!-- End of headStart -->\";\nvar endOfHeadEndMarker = \"<!-- End of headEnd -->\";\nvar endOfBodyStartMarker = \"<!-- End of bodyStart -->\";\nvar endOfBodyEndMarker = \"<!-- End of bodyEnd -->\";\n\n// ../../library/src/router/useMetadata.ts\nimport * as React11 from \"react\";\n\n// ../../library/src/utils/assert.ts\nfunction assert(condition, ...msg) {\n  var _a, _b;\n  if (condition) return;\n  const e = Error(\"Assertion Error\" + (msg.length > 0 ? \": \" + msg.join(\" \") : \"\"));\n  if (e.stack) {\n    try {\n      const lines = e.stack.split(\"\\n\");\n      if ((_a = lines[1]) == null ? void 0 : _a.includes(\"assert\")) {\n        lines.splice(1, 1);\n        e.stack = lines.join(\"\\n\");\n      } else if ((_b = lines[0]) == null ? void 0 : _b.includes(\"assert\")) {\n        lines.splice(0, 1);\n        e.stack = lines.join(\"\\n\");\n      }\n    } catch {\n    }\n  }\n  throw e;\n}\nfunction assertNever(x, error) {\n  throw error || new Error(x ? `Unexpected value: ${x}` : \"Application entered invalid state\");\n}\n\n// ../../library/src/utils/insertHTML.ts\nasync function insertHTML(html, referenceNode, position = \"beforeend\") {\n  let insertionParent, insertionPoint;\n  switch (position) {\n    case \"beforebegin\":\n      assert(referenceNode.parentNode, \"Can't use 'beforebegin' with a referenceNode at the top level\");\n      insertionParent = referenceNode.parentNode;\n      insertionPoint = referenceNode;\n      break;\n    case \"afterend\":\n      assert(referenceNode.parentNode, \"Can't use 'afterend' with a referenceNode at the top level\");\n      insertionParent = referenceNode.parentNode;\n      insertionPoint = referenceNode.nextSibling;\n      break;\n    case \"afterbegin\":\n      insertionParent = referenceNode;\n      insertionPoint = referenceNode.firstChild;\n      break;\n    case \"beforeend\":\n      insertionParent = referenceNode;\n      insertionPoint = null;\n      break;\n    default:\n      assertNever(position);\n  }\n  const range = document.createRange();\n  range.selectNodeContents(insertionParent);\n  const fragment = range.createContextualFragment(html);\n  await pump(fragment, insertionParent, insertionPoint);\n}\nasync function pump(sourceNode, targetParent, beforeNode) {\n  for (let node = sourceNode.firstChild; node; node = node.nextSibling) {\n    if (node instanceof HTMLScriptElement) {\n      const needsWait = handleScript(node, targetParent, beforeNode);\n      if (needsWait !== void 0) {\n        await needsWait;\n      }\n      continue;\n    }\n    const clone = node.cloneNode(false);\n    targetParent.insertBefore(clone, beforeNode);\n    if (node.firstChild) {\n      await pump(node, clone, null);\n    }\n  }\n}\nfunction handleScript(node, parent, beforeNode) {\n  var _a;\n  const script = node.cloneNode(true);\n  if (!node.hasAttribute(\"src\") || // external\n  node.hasAttribute(\"async\") || // async\n  node.hasAttribute(\"defer\") || // defer\n  ((_a = node.getAttribute(\"type\")) == null ? void 0 : _a.toLowerCase()) === \"module\") {\n    parent.insertBefore(script, beforeNode);\n  } else {\n    return execExternalBlockingScript(script, parent, beforeNode);\n  }\n}\nfunction execExternalBlockingScript(script, parent, beforeNode) {\n  return new Promise((resolve) => {\n    script.onload = script.onerror = resolve;\n    parent.insertBefore(script, beforeNode);\n  });\n}\n\n// ../../library/src/router/useMetadata.ts\nfunction useMetadata(metadata) {\n  const { isInitialNavigation } = useRouter();\n  React11.useEffect(() => {\n    if (metadata.robots) {\n      let robotsTag = document.querySelector('meta[name=\"robots\"]');\n      if (robotsTag) {\n        robotsTag.setAttribute(\"content\", metadata.robots);\n      } else {\n        robotsTag = document.createElement(\"meta\");\n        robotsTag.setAttribute(\"name\", \"robots\");\n        robotsTag.setAttribute(\"content\", metadata.robots);\n        document.head.appendChild(robotsTag);\n      }\n    }\n  }, [metadata.robots]);\n  React11.useInsertionEffect(() => {\n    var _a;\n    document.title = metadata.title || \"\";\n    if (metadata.viewport) {\n      (_a = document.querySelector('meta[name=\"viewport\"]')) == null ? void 0 : _a.setAttribute(\"content\", metadata.viewport);\n    }\n  }, [metadata.title, metadata.viewport]);\n  React11.useEffect(() => {\n    if (!isInitialNavigation) return;\n    const mainTag = document.getElementById(mainTagId);\n    const isGeneratedPage = mainTag && mainTag.dataset[generatedPageDatasetKey] !== void 0;\n    if (isGeneratedPage) return;\n    void insertCustomHTML(\n      metadata.customHTMLHeadStart,\n      metadata.customHTMLHeadEnd,\n      metadata.customHTMLBodyStart,\n      metadata.customHTMLBodyEnd\n    );\n  }, []);\n}\nasync function insertCustomHTML(customHTMLHeadStart, customHTMLHeadEnd, customHTMLBodyStart, customHTMLBodyEnd) {\n  let endOfHeadStart;\n  let endOfHeadEnd;\n  let endOfBodyStart;\n  let endOfBodyEnd;\n  if (customHTMLHeadStart || customHTMLHeadEnd) {\n    const { start, end } = findCommentMarkers(\n      document.head.childNodes,\n      customHTMLHeadStart ? endOfHeadStartMarker : void 0,\n      customHTMLHeadEnd ? endOfHeadEndMarker : void 0\n    );\n    endOfHeadStart = start;\n    endOfHeadEnd = end;\n  }\n  if (customHTMLBodyStart || customHTMLBodyEnd) {\n    const { start, end } = findCommentMarkers(\n      document.body.childNodes,\n      customHTMLBodyStart ? endOfBodyStartMarker : void 0,\n      customHTMLBodyEnd ? endOfBodyEndMarker : void 0\n    );\n    endOfBodyStart = start;\n    endOfBodyEnd = end;\n  }\n  if (customHTMLHeadStart && endOfHeadStart) {\n    await insertHTML(customHTMLHeadStart, endOfHeadStart, \"beforebegin\");\n  }\n  if (customHTMLHeadEnd && endOfHeadEnd) {\n    await insertHTML(customHTMLHeadEnd, endOfHeadEnd, \"beforebegin\");\n  }\n  if (customHTMLBodyStart && endOfBodyStart) {\n    await insertHTML(customHTMLBodyStart, endOfBodyStart, \"beforebegin\");\n  }\n  if (customHTMLBodyEnd && endOfBodyEnd) {\n    await insertHTML(customHTMLBodyEnd, endOfBodyEnd, \"beforebegin\");\n  }\n}\nfunction findCommentMarkers(nodes, startMarker, endMarker) {\n  if (!startMarker && !endMarker) return { start: void 0, end: void 0 };\n  let start;\n  let end;\n  let i = 0;\n  let j = nodes.length - 1;\n  while (i <= j) {\n    const startNode = nodes[i];\n    const endNode = nodes[j];\n    if (!start && (startNode == null ? void 0 : startNode.nodeType) === Node.COMMENT_NODE && startMarker && `<!--${startNode.nodeValue}-->` === startMarker) {\n      start = startNode;\n      if (!endMarker) break;\n    }\n    if (!end && (endNode == null ? void 0 : endNode.nodeType) === Node.COMMENT_NODE && endMarker && `<!--${endNode.nodeValue}-->` === endMarker) {\n      end = endNode;\n      if (!startMarker) break;\n    }\n    if (start && end) break;\n    i++;\n    j--;\n  }\n  return { start, end };\n}\n\n// ../../library/src/utils/warnOnce.ts\nvar warningMessages = /* @__PURE__ */ new Set();\nfunction warnOnce2(keyMessage, ...rest) {\n  if (warningMessages.has(keyMessage)) return;\n  warningMessages.add(keyMessage);\n  console.warn(keyMessage, ...rest);\n}\n\n// ../../library/src/utils/deprecation.ts\nfunction deprecationWarning(removedItem, removalVersion, replacement) {\n  const replacementText = replacement ? `, use ${replacement} instead` : \"\";\n  const warningText = `Deprecation warning: ${removedItem} will be removed in version ${removalVersion}${replacementText}.`;\n  warnOnce2(warningText);\n}\n\n// ../../library/src/animation/Animatable/Observers.ts\nvar Observers = class {\n  constructor() {\n    __publicField(this, \"observers\", /* @__PURE__ */ new Set());\n    __publicField(this, \"transactions\", {});\n  }\n  add(observer) {\n    this.observers.add(observer);\n    let isCalled = false;\n    return () => {\n      if (isCalled) {\n        return;\n      }\n      isCalled = true;\n      this.remove(observer);\n    };\n  }\n  remove(observer) {\n    this.observers.delete(observer);\n  }\n  notify(change, transaction) {\n    if (transaction) {\n      const accumulatedChange = this.transactions[transaction] || change;\n      accumulatedChange.value = change.value;\n      this.transactions[transaction] = accumulatedChange;\n    } else {\n      this.callObservers(change);\n    }\n  }\n  finishTransaction(transaction) {\n    const accumulatedChange = this.transactions[transaction];\n    delete this.transactions[transaction];\n    return this.callObservers(accumulatedChange, transaction);\n  }\n  callObservers(change, transaction) {\n    const finishObservers = [];\n    new Set(this.observers).forEach((observer) => {\n      if (typeof observer === \"function\") {\n        observer(change, transaction);\n      } else {\n        observer.update(change, transaction);\n        finishObservers.push(observer.finish);\n      }\n    });\n    return finishObservers;\n  }\n};\n\n// ../../library/src/animation/Animatable/Animatable.ts\nvar Animatable = /* @__PURE__ */ (() => {\n  function Animatable2(value) {\n    deprecationWarning(\"Animatable()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n    return isAnimatable(value) ? value : new AnimatableValue(value);\n  }\n  Animatable2.transaction = (update) => {\n    const transactionId = Math.random();\n    const updatedValues = /* @__PURE__ */ new Set();\n    const updater = (animatable, value) => {\n      animatable.set(value, transactionId);\n      updatedValues.add(animatable);\n    };\n    update(updater, transactionId);\n    const finishObservers = [];\n    updatedValues.forEach((value) => {\n      finishObservers.push(...value.finishTransaction(transactionId));\n    });\n    finishObservers.forEach((finish) => {\n      finish(transactionId);\n    });\n  };\n  Animatable2.getNumber = (value, defaultValue = 0) => {\n    return Animatable2.get(value, defaultValue);\n  };\n  Animatable2.get = (value, defaultValue) => {\n    if (value === void 0 || value === null) {\n      return defaultValue;\n    }\n    if (isAnimatable(value)) {\n      return value.get();\n    }\n    return value;\n  };\n  Animatable2.objectToValues = (object) => {\n    if (!object) {\n      return object;\n    }\n    const result = {};\n    for (const key7 in object) {\n      const value = object[key7];\n      if (isAnimatable(value)) {\n        result[key7] = value.get();\n      } else {\n        result[key7] = value;\n      }\n    }\n    return result;\n  };\n  return Animatable2;\n})();\nvar onUpdateKey = \"onUpdate\";\nvar finishTransactionKey = \"finishTransaction\";\nfunction isAnimatable(value) {\n  return value !== null && typeof value === \"object\" && onUpdateKey in value && value[onUpdateKey] instanceof Function && finishTransactionKey in value && value[finishTransactionKey] instanceof Function;\n}\nfunction animatableInterpolation(value, currentInterpolation) {\n  return {\n    interpolate(from, to) {\n      const fromValue = from.get();\n      const toValue = to.get();\n      const result = Animatable(fromValue);\n      return (progress2) => {\n        const v = currentInterpolation.interpolate(fromValue, toValue)(progress2);\n        result.set(v);\n        return result;\n      };\n    },\n    difference(from, to) {\n      const v = from.get();\n      return currentInterpolation.difference(v, to.get());\n    }\n  };\n}\nvar AnimatableValue = class {\n  constructor(value) {\n    this.value = value;\n    __publicField(this, \"observers\", new Observers());\n  }\n  static interpolationFor(value, currentInterpolation) {\n    if (isAnimatable(value)) {\n      return animatableInterpolation(value, currentInterpolation);\n    }\n  }\n  get() {\n    return this.value;\n  }\n  set(value, transaction) {\n    const oldValue = this.value;\n    if (isAnimatable(value)) {\n      value = value.get();\n    }\n    this.value = value;\n    const change = {\n      value,\n      oldValue\n    };\n    this.observers.notify(change, transaction);\n  }\n  finishTransaction(transaction) {\n    return this.observers.finishTransaction(transaction);\n  }\n  onUpdate(handler) {\n    return this.observers.add(handler);\n  }\n};\n\n// ../../library/src/render/utils/roundedNumber.ts\nfunction roundedNumber(value, decimals) {\n  const d = Math.round(Math.abs(decimals));\n  const multiplier = 10 ** d;\n  return Math.round(value * multiplier) / multiplier;\n}\nfunction roundedNumberString(value, decimals) {\n  const result = value.toFixed(decimals);\n  return decimals === 0 ? result : `${+result}`;\n}\nfunction roundWithOffset(value, offset) {\n  if (offset === 0) {\n    return Math.round(value);\n  }\n  offset -= offset | 0;\n  if (offset < 0) {\n    offset = 1 - offset;\n  }\n  return Math.round(value - offset) + offset;\n}\nfunction roundToHalfPixel(value) {\n  return Math.round(value * 2) / 2;\n}\n\n// ../../library/src/render/types/Point.ts\nfunction Point(x, y) {\n  return { x, y };\n}\n((Point2) => {\n  Point2.isQuadrilateralPoints = (points) => {\n    return (points == null ? void 0 : points.length) === 4;\n  };\n  Point2.add = (...args) => {\n    return args.reduce(\n      (previousValue, currentValue) => {\n        return { x: previousValue.x + currentValue.x, y: previousValue.y + currentValue.y };\n      },\n      { x: 0, y: 0 }\n    );\n  };\n  Point2.subtract = (a, b) => {\n    return { x: a.x - b.x, y: a.y - b.y };\n  };\n  Point2.multiply = (a, b) => {\n    return { x: a.x * b, y: a.y * b };\n  };\n  Point2.divide = (a, b) => {\n    return { x: a.x / b, y: a.y / b };\n  };\n  Point2.absolute = (point) => {\n    return {\n      x: Math.abs(point.x),\n      y: Math.abs(point.y)\n    };\n  };\n  Point2.reverse = (point) => {\n    return {\n      x: point.x * -1,\n      y: point.y * -1\n    };\n  };\n  Point2.pixelAligned = (point, offset = { x: 0, y: 0 }) => {\n    return {\n      x: roundWithOffset(point.x, offset.x),\n      y: roundWithOffset(point.y, offset.y)\n    };\n  };\n  Point2.distance = (a, b) => {\n    const deltaX = Math.abs(a.x - b.x);\n    const deltaY = Math.abs(a.y - b.y);\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  };\n  Point2.angle = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;\n  };\n  Point2.angleFromX = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;\n  };\n  Point2.isEqual = (a, b) => {\n    return a.x === b.x && a.y === b.y;\n  };\n  Point2.rotationNormalizer = () => {\n    let lastValue;\n    return (value) => {\n      if (typeof lastValue !== \"number\") {\n        lastValue = value;\n      }\n      const diff = lastValue - value;\n      const maxDiff = Math.abs(diff) + 180;\n      const nTimes = Math.floor(maxDiff / 360);\n      if (diff < 180) {\n        value -= nTimes * 360;\n      }\n      if (diff > 180) {\n        value += nTimes * 360;\n      }\n      lastValue = value;\n      return value;\n    };\n  };\n  function center(a, b) {\n    return {\n      x: (a.x + b.x) / 2,\n      y: (a.y + b.y) / 2\n    };\n  }\n  Point2.center = center;\n  function centroid(points) {\n    let sumX = 0;\n    let sumY = 0;\n    points.forEach((point) => {\n      sumX += point.x;\n      sumY += point.y;\n    });\n    const centroidX = sumX / points.length;\n    const centroidY = sumY / points.length;\n    return { x: centroidX, y: centroidY };\n  }\n  Point2.centroid = centroid;\n  function sortClockwise(points) {\n    const centerPoint = Point2.centroid(points);\n    const angles = /* @__PURE__ */ new Map();\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i];\n      if (!point) continue;\n      angles.set(point, Math.atan2(point.y - centerPoint.y, point.x - centerPoint.x));\n    }\n    return points.sort((a, b) => (angles.get(a) ?? 0) - (angles.get(b) ?? 0));\n  }\n  Point2.sortClockwise = sortClockwise;\n})(Point || (Point = {}));\n\n// ../../library/src/animation/Animators/BezierAnimator.ts\nvar BezierDefaults = {\n  curve: \"ease\" /* Ease */,\n  duration: 1\n};\nfunction controlPointsForCurve(curve) {\n  switch (curve) {\n    case \"linear\" /* Linear */:\n      return [0, 0, 1, 1];\n    case \"ease\" /* Ease */:\n      return [0.25, 0.1, 0.25, 1];\n    case \"ease-in\" /* EaseIn */:\n      return [0.42, 0, 1, 1];\n    case \"ease-out\" /* EaseOut */:\n      return [0, 0, 0.58, 1];\n    case \"ease-in-out\" /* EaseInOut */:\n      return [0.42, 0, 0.58, 1];\n  }\n}\nvar BezierAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    __publicField(this, \"unitBezier\");\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"interpolator\");\n    __publicField(this, \"progress\", 0);\n    __publicField(this, \"next\", (delta) => {\n      const { duration } = this.options;\n      this.progress += delta / duration;\n      const value = this.unitBezier.solve(this.progress, this.solveEpsilon(duration));\n      assert(this.interpolator !== void 0, \"setFrom() or setTo() must be called before next()\");\n      this.current = this.interpolator(value);\n      return this.current;\n    });\n    this.options = { ...BezierDefaults, ...options };\n    let controlPoints;\n    if (typeof this.options.curve === \"string\") {\n      controlPoints = controlPointsForCurve(this.options.curve);\n    } else {\n      controlPoints = this.options.curve;\n    }\n    const [p1x, p1y, p2x, p2y] = controlPoints;\n    this.unitBezier = new UnitBezier(Point(p1x, p1y), Point(p2x, p2y));\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setTo(value) {\n    this.destination = value;\n    this.updateInterpolator();\n  }\n  isReady() {\n    return this.interpolator !== void 0;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n  isFinished() {\n    return this.progress >= 1;\n  }\n  solveEpsilon(duration) {\n    return 1 / (200 * duration);\n  }\n};\nvar UnitBezier = class {\n  constructor(point1, point2) {\n    __publicField(this, \"a\");\n    __publicField(this, \"b\");\n    __publicField(this, \"c\");\n    this.c = Point.multiply(point1, 3);\n    this.b = Point.subtract(Point.multiply(Point.subtract(point2, point1), 3), this.c);\n    this.a = Point.subtract(Point.subtract(Point(1, 1), this.c), this.b);\n  }\n  solve(x, epsilon2) {\n    return this.sampleY(this.solveForT(x, epsilon2));\n  }\n  sampleX(t) {\n    return ((this.a.x * t + this.b.x) * t + this.c.x) * t;\n  }\n  sampleY(t) {\n    return ((this.a.y * t + this.b.y) * t + this.c.y) * t;\n  }\n  sampleDerivativeX(t) {\n    return (3 * this.a.x * t + 2 * this.b.x) * t + this.c.x;\n  }\n  solveForT(x, epsilon2) {\n    let t0, t1, t2, x2, d2, i;\n    t2 = x;\n    for (i = 0; i < 8; ++i) {\n      x2 = this.sampleX(t2) - x;\n      if (Math.abs(x2) < epsilon2) return t2;\n      d2 = this.sampleDerivativeX(t2);\n      if (Math.abs(d2) < epsilon2) break;\n      t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0) return t0;\n    if (t2 > t1) return t1;\n    while (t0 < t1) {\n      x2 = this.sampleX(t2);\n      if (Math.abs(x2 - x) < epsilon2) return t2;\n      if (x > x2) t0 = t2;\n      else t1 = t2;\n      t2 = (t1 - t0) * 0.5 + t0;\n    }\n    return t2;\n  }\n};\n\n// ../../library/src/animation/Animators/Integrator.ts\nvar Integrator = class {\n  constructor(accelerationFunction) {\n    __publicField(this, \"accelerationForState\");\n    this.accelerationForState = accelerationFunction;\n  }\n  integrateState(state, dt) {\n    const a = this.evaluateState(state);\n    const b = this.evaluateStateWithDerivative(state, dt * 0.5, a);\n    const c = this.evaluateStateWithDerivative(state, dt * 0.5, b);\n    const d = this.evaluateStateWithDerivative(state, dt, c);\n    const dxdt = 1 / 6 * (a.dx + 2 * (b.dx + c.dx) + d.dx);\n    const dvdt = 1 / 6 * (a.dv + 2 * (b.dv + c.dv) + d.dv);\n    state.x = state.x + dxdt * dt;\n    state.v = state.v + dvdt * dt;\n    return state;\n  }\n  evaluateState(initialState2) {\n    const dv = this.accelerationForState(initialState2);\n    return { dx: initialState2.v, dv };\n  }\n  evaluateStateWithDerivative(initialState2, dt, derivative) {\n    const state = {\n      x: initialState2.x + derivative.dx * dt,\n      v: initialState2.v + derivative.dv * dt\n    };\n    const output = {\n      dx: state.v,\n      dv: this.accelerationForState(state)\n    };\n    return output;\n  }\n};\n\n// ../../library/src/animation/Animators/FrictionAnimator.ts\nvar FrictionAnimator = class {\n  constructor(options) {\n    __publicField(this, \"options\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    this.options = {\n      velocity: 0,\n      friction: 2,\n      tolerance: 1 / 10\n    };\n    Object.assign(this.options, options);\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -(this.options.friction * state.v));\n  }\n  setFrom(value) {\n    this.state.x = value;\n  }\n  setTo(value) {\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  getState() {\n    return this.state;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    return this.state.x;\n  }\n  isFinished() {\n    return Math.abs(this.state.v) < this.options.tolerance;\n  }\n};\n\n// ../../library/src/interpolation/Interpolation.ts\nfunction isInterpolatable(value) {\n  return typeof value === \"function\" && value.interpolationFor && typeof value.interpolationFor === \"function\";\n}\nvar Interpolation = {\n  /**\n   * @param from -\n   * @param to -\n   * @internal\n   */\n  handleUndefined: (from, to) => {\n    if (from === void 0) {\n      from = to;\n    }\n    if (to === void 0) {\n      to = from;\n    }\n    return [from, to];\n  }\n};\n\n// ../../library/src/interpolation/NumberInterpolation.ts\nvar NumberInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    const a1 = from;\n    const b1 = to - a1;\n    return (progress2) => {\n      const value = a1 + b1 * progress2;\n      return value;\n    };\n  },\n  difference(from, to) {\n    return to - from;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringCurveValueConverter.ts\nvar epsilon = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration2 = 10;\nvar minDamping = /* @__PURE__ */ (() => Number.MIN_VALUE)();\nvar maxDamping = 1;\nfunction approximateRoot(func, derivative, initialGuess, times = 12) {\n  let result = initialGuess;\n  for (let i = 1, end = times, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n    result = result - func(result) / derivative(result);\n  }\n  return result;\n}\nfunction angularFrequency(undampedFrequency, dampingRatio) {\n  return undampedFrequency * Math.sqrt(1 - Math.pow(dampingRatio, 2));\n}\nvar SpringCurveValueConverter = {\n  computeDampingRatio: (tension, friction, mass = 1) => {\n    return friction / (2 * Math.sqrt(mass * tension));\n  },\n  // Tries to compute the duration of a spring,\n  // but can't for certain velocities and if dampingRatio >= 1\n  // In those cases it will return null\n  computeDuration: (tension, friction, velocity = 0, mass = 1) => {\n    let duration;\n    const dampingRatio = SpringCurveValueConverter.computeDampingRatio(tension, friction);\n    const undampedFrequency = Math.sqrt(tension / mass);\n    if (dampingRatio < 1) {\n      const a = Math.sqrt(1 - Math.pow(dampingRatio, 2));\n      const b = velocity / (a * undampedFrequency);\n      const c = dampingRatio / a;\n      const d = -((b - c) / epsilon);\n      if (d <= 0) {\n        return null;\n      }\n      duration = Math.log(d) / (dampingRatio * undampedFrequency);\n    } else {\n      return null;\n    }\n    return duration;\n  },\n  computeDerivedCurveOptions: (dampingRatio, duration, velocity = 0, mass = 1) => {\n    let derivative, envelope;\n    dampingRatio = Math.max(Math.min(dampingRatio, maxDamping), minDamping);\n    duration = Math.max(Math.min(duration, maxDuration2), minDuration);\n    if (dampingRatio < 1) {\n      envelope = function(envelopeUndampedFrequency) {\n        const exponentialDecay = envelopeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const a = exponentialDecay - velocity;\n        const b = angularFrequency(envelopeUndampedFrequency, dampingRatio);\n        const c = Math.exp(-currentDisplacement);\n        return epsilon - a / b * c;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const exponentialDecay = derivativeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const d = currentDisplacement * velocity + velocity;\n        const e = Math.pow(dampingRatio, 2) * Math.pow(derivativeUndampedFrequency, 2) * duration;\n        const f = Math.exp(-currentDisplacement);\n        const g = angularFrequency(Math.pow(derivativeUndampedFrequency, 2), dampingRatio);\n        const factor = -envelope(derivativeUndampedFrequency) + epsilon > 0 ? -1 : 1;\n        return factor * ((d - e) * f) / g;\n      };\n    } else {\n      envelope = function(envelopeUndampedFrequency) {\n        const a = Math.exp(-envelopeUndampedFrequency * duration);\n        const b = (envelopeUndampedFrequency - velocity) * duration + 1;\n        return -epsilon + a * b;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const a = Math.exp(-derivativeUndampedFrequency * duration);\n        const b = (velocity - derivativeUndampedFrequency) * Math.pow(duration, 2);\n        return a * b;\n      };\n    }\n    const result = {\n      tension: 100,\n      friction: 10,\n      velocity\n    };\n    const initialGuess = 5 / duration;\n    const undampedFrequency = approximateRoot(envelope, derivative, initialGuess);\n    if (!Number.isNaN(undampedFrequency)) {\n      result.tension = Math.pow(undampedFrequency, 2) * mass;\n      result.friction = dampingRatio * 2 * Math.sqrt(mass * result.tension);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringAnimator.ts\nvar SpringTensionFrictionDefaults = /* @__PURE__ */ (() => ({\n  tension: 500,\n  friction: 10,\n  tolerance: 1 / 1e4,\n  velocity: 0\n}))();\nvar SpringDampingDurationDefaults = {\n  dampingRatio: 1,\n  duration: 1,\n  velocity: 0,\n  mass: 1\n};\nfunction isDampingDurationSpringOptions(options) {\n  if (!options) {\n    return false;\n  }\n  return typeof options.dampingRatio === \"number\" || typeof options.duration === \"number\" || typeof options.mass === \"number\";\n}\nvar SpringAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"difference\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    __publicField(this, \"interpolator\");\n    let _opt;\n    if (isDampingDurationSpringOptions(options)) {\n      const toPass = { ...SpringDampingDurationDefaults, ...options };\n      _opt = SpringCurveValueConverter.computeDerivedCurveOptions(\n        toPass.dampingRatio,\n        toPass.duration,\n        toPass.velocity,\n        toPass.mass\n      );\n    } else {\n      _opt = options;\n    }\n    this.options = { ...SpringTensionFrictionDefaults, ..._opt };\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -this.options.tension * state.x - this.options.friction * state.v);\n  }\n  isReady() {\n    return this.interpolator !== void 0 && this.difference !== void 0;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    assert(this.interpolator !== void 0, \"setFrom() or setTo() must be called before next()\");\n    const value = this.interpolator(this.progress());\n    return value;\n  }\n  isFinished() {\n    const positionNearZero = Math.abs(this.state.x) < this.options.tolerance;\n    const velocityNearZero = Math.abs(this.state.v) < this.options.tolerance;\n    return positionNearZero && velocityNearZero;\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  progress() {\n    assert(this.difference !== void 0, \"setTo() must be called before progress()\");\n    return 1 - this.state.x / this.difference;\n  }\n  // The spring always settles to 0, so we create an interpolation to the destination\n  // And calculate the progress based on the current state and the span of the interpolation\n  // This lets us integrate over state.x, even though Value is generic\n  setTo(value) {\n    assert(this.current !== void 0, \"setFrom() must be called before setTo()\");\n    this.destination = value;\n    this.difference = this.interpolation.difference(this.destination, this.current);\n    this.state.x = this.difference;\n    this.updateInterpolator();\n  }\n  /** @internal */\n  getState() {\n    return this.state;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n};\n\n// ../../library/src/animation/Animators/InertialScrollAnimator.ts\nvar Defaults = {\n  velocity: 0,\n  min: 0,\n  max: 0,\n  momentum: {\n    friction: 2,\n    tolerance: 10\n  },\n  bounce: {\n    tension: 500,\n    friction: 10,\n    tolerance: 1\n  }\n};\nvar InertialScrollAnimator = class {\n  constructor(options) {\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"frictionAnimator\");\n    __publicField(this, \"springAnimator\");\n    __publicField(this, \"useSpring\");\n    this.options = Object.assign({ ...Defaults }, options);\n    this.frictionAnimator = new FrictionAnimator({\n      friction: this.options.momentum.friction,\n      tolerance: this.options.momentum.tolerance,\n      velocity: this.options.velocity\n    });\n    this.springAnimator = new SpringAnimator(\n      {\n        tension: this.options.bounce.tension,\n        friction: this.options.bounce.friction,\n        tolerance: this.options.bounce.tolerance,\n        velocity: this.options.velocity\n      },\n      NumberInterpolation\n    );\n    this.useSpring = false;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.current = this.currentAnimator.next(delta);\n    if (!this.useSpring) {\n      this.tryTransitionToSpring();\n    }\n    return this.current;\n  }\n  get currentAnimator() {\n    if (this.useSpring) {\n      return this.springAnimator;\n    }\n    return this.frictionAnimator;\n  }\n  isFinished() {\n    return this.currentAnimator.isFinished();\n  }\n  get state() {\n    return this.currentAnimator.getState();\n  }\n  setFrom(value) {\n    this.setState({ x: value, v: this.state.v });\n  }\n  setState(state) {\n    this.frictionAnimator.setFrom(state.x);\n    this.frictionAnimator.setVelocity(state.v);\n    if (this.isValidState()) {\n      return this.tryTransitionToSpring();\n    } else {\n      let bound = 0;\n      if (this.state.x <= this.options.min) {\n        bound = this.options.min;\n      }\n      if (this.state.x >= this.options.max) {\n        bound = this.options.max;\n      }\n      return this.transitionToSpring(bound);\n    }\n  }\n  setTo(destination) {\n    this.frictionAnimator.setTo(destination);\n    this.springAnimator.setTo(destination);\n  }\n  setLimits(min, max) {\n    this.options.min = min;\n    this.options.max = max;\n  }\n  // If the position is outside the min and max bounds, and traveling\n  // further away, then transition from friction to spring animation\n  tryTransitionToSpring() {\n    const belowMinWithVelocity = this.state.x < this.options.min && this.state.v <= 0;\n    const aboveMaxWithVelocity = this.state.x > this.options.max && this.state.v >= 0;\n    if (belowMinWithVelocity || aboveMaxWithVelocity) {\n      let bound;\n      if (belowMinWithVelocity) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      this.transitionToSpring(bound);\n    } else {\n      this.useSpring = false;\n    }\n  }\n  transitionToSpring(bound) {\n    this.springAnimator.setFrom(this.state.x);\n    this.springAnimator.setVelocity(this.state.v);\n    this.springAnimator.setTo(bound);\n    this.useSpring = true;\n  }\n  // If the position is outside the min and max bounds, but traveling\n  // back towards the bounds, check if the velocity is sufficient to\n  // carry the position back within bounds. If it is, let friction do the\n  // work. If not, the state is invalid, so use the spring.\n  isValidState() {\n    const belowMinTravelingBack = this.state.x < this.options.min && this.state.v > 0;\n    const aboveMaxTravelingBack = this.state.x > this.options.max && this.state.v < 0;\n    if (belowMinTravelingBack || aboveMaxTravelingBack) {\n      let bound;\n      if (belowMinTravelingBack) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      const friction = this.frictionAnimator.options.friction;\n      const solution = 1 - friction * (bound - this.state.x) / this.state.v;\n      return solution > 0;\n    }\n    return true;\n  }\n  // The math behind _isValidState:\n  //\n  // 1. Integrate the friction animator's acceleration to find velocity\n  //\n  //         a = - k * v\n  //     dv/dt = - k * v\n  // Int(dv/v) = - k * Int(dt)\n  //      ln v = - k * t + C\n  //\n  // => Solve for C at t = 0\n  //\n  // ln v(0) = - k * 0 + C\n  // ln v(0) = C\n  //\n  // => Plug C back into v(t)\n  //\n  //     ln v = - k * t + ln v(0)\n  // e^(ln v) = e^(- k * t) + e^(ln v(0))\n  //        v = v(0) * e^(- k * t)\n  //\n  // 2. Integrate velocity to find position\n  //\n  // Int(v) = v(0) * Int(e^(- k * t))\n  //      x = - v(0) * e^(-k * t) / k + C\n  //\n  // => Solve for C at t = 0\n  //\n  //            x(0) = - v(0) * e^(-k * 0) / k + C\n  //            x(0) = - v(0) / k + C\n  // x(0) + v(0) / k = C\n  //\n  // => Plug C back into x(t)\n  //\n  // x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //\n  // 3. Check if a (real) solution exists for t for position x\n  //\n  //                                x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //                         x - x(0) = - v(0) * e^(-k * t) / k + v(0) / k\n  //                   k * (x - x(0)) = - v(0) * e^(-k * t) + v(0)\n  //            k * (x - x(0)) - v(0) = - v(0) * e^(-k * t)\n  // (k * (x - x(0)) - v(0)) / - v(0) = e^(-k * t)\n  //       1 - (k * (x - x(0)) / v(0) = e^(-k * t)\n  //   ln(1 - (k * (x - x(0)) / v(0)) = -k * t\n  //\n  // Therefore, a real solution exists if 1 - (k * (x - x(0)) / v(0) > 0\n};\n\n// ../../library/src/render/types/Color/CSSNames.ts\nvar cssNames = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\"\n};\n\n// ../../library/src/render/types/Color/Utils.ts\nfunction modulate(value, rangeA, rangeB, limit = false) {\n  const [fromLow, fromHigh] = rangeA;\n  const [toLow, toHigh] = rangeB;\n  const fromDelta = fromHigh - fromLow;\n  if (fromDelta === 0) return (toHigh + toLow) / 2;\n  const toDelta = toHigh - toLow;\n  if (toDelta === 0) return toLow;\n  const result = toLow + (value - fromLow) / fromDelta * toDelta;\n  if (limit === true) {\n    if (toLow < toHigh) {\n      if (result < toLow) {\n        return toLow;\n      }\n      if (result > toHigh) {\n        return toHigh;\n      }\n    } else {\n      if (result > toLow) {\n        return toLow;\n      }\n      if (result < toHigh) {\n        return toHigh;\n      }\n    }\n  }\n  return result;\n}\nfunction isNumeric(value) {\n  return !Number.isNaN(value) && Number.isFinite(value);\n}\nfunction percentToFraction(val) {\n  const digits = numberFromString(val);\n  if (digits !== void 0) {\n    if (val.includes(\"%\")) {\n      return digits / 100;\n    }\n    return digits;\n  }\n  return 0;\n}\nfunction numberFromString(input) {\n  const match = /\\d?\\.?\\d+/u.exec(input);\n  return match ? Number(match[0]) : void 0;\n}\n\n// ../../library/src/render/types/Color/types.ts\nvar ColorFormat = /* @__PURE__ */ ((ColorFormat2) => {\n  ColorFormat2[\"RGB\"] = \"rgb\";\n  ColorFormat2[\"HSL\"] = \"hsl\";\n  ColorFormat2[\"HSV\"] = \"hsv\";\n  ColorFormat2[\"HEX\"] = \"hex\";\n  ColorFormat2[\"NAME\"] = \"name\";\n  return ColorFormat2;\n})(ColorFormat || {});\nvar ColorMixModelType = /* @__PURE__ */ ((ColorMixModelType2) => {\n  ColorMixModelType2[\"RGB\"] = \"rgb\";\n  ColorMixModelType2[\"RGBA\"] = \"rgba\";\n  ColorMixModelType2[\"HSL\"] = \"hsl\";\n  ColorMixModelType2[\"HSLA\"] = \"hsla\";\n  ColorMixModelType2[\"HUSL\"] = \"husl\";\n  return ColorMixModelType2;\n})(ColorMixModelType || {});\n\n// ../../library/src/render/types/Color/converters.ts\nvar Hsluv = /* @__PURE__ */ (() => require_hsluv().Hsluv)();\nvar hsluvConverter = /* @__PURE__ */ new Hsluv();\nfunction rgbToHsluv(r, g, b) {\n  hsluvConverter.rgb_r = r / 255;\n  hsluvConverter.rgb_g = g / 255;\n  hsluvConverter.rgb_b = b / 255;\n  hsluvConverter.rgbToHsluv();\n  return {\n    h: hsluvConverter.hsluv_h,\n    s: hsluvConverter.hsluv_s,\n    l: hsluvConverter.hsluv_l\n  };\n}\nfunction rgbaFromHusl(h, s, l, a = 1) {\n  hsluvConverter.hsluv_h = h;\n  hsluvConverter.hsluv_s = s;\n  hsluvConverter.hsluv_l = l;\n  hsluvConverter.hsluvToRgb();\n  return {\n    r: hsluvConverter.rgb_r * 255,\n    g: hsluvConverter.rgb_g * 255,\n    b: hsluvConverter.rgb_b * 255,\n    a\n  };\n}\nfunction hsvToStr(h, s, v, a) {\n  const _h = Math.round(h);\n  const _s = Math.round(s * 100);\n  const _v = Math.round(v * 100);\n  return a === void 0 || a === 1 ? \"hsv(\" + _h + \", \" + _s + \"%, \" + _v + \"%)\" : \"hsva(\" + _h + \", \" + _s + \"%, \" + _v + \"%, \" + a + \")\";\n}\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: isNumeric(r) ? bound01(r, 255) * 255 : 0,\n    g: isNumeric(g) ? bound01(g, 255) * 255 : 0,\n    b: isNumeric(b) ? bound01(b, 255) * 255 : 0\n  };\n}\nfunction rgbToHex(r, g, b, allow3Char) {\n  const hex2 = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16))\n  ];\n  if (allow3Char && hex2[0].charAt(0) === hex2[0].charAt(1) && hex2[1].charAt(0) === hex2[1].charAt(1) && hex2[2].charAt(0) === hex2[2].charAt(1)) {\n    return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0);\n  }\n  return hex2.join(\"\");\n}\nfunction rgbToHsl(r, g, b) {\n  let l;\n  let s;\n  const _r = bound01(r, 255);\n  const _g = bound01(g, 255);\n  const _b = bound01(b, 255);\n  const max = Math.max(_r, _g, _b);\n  const min = Math.min(_r, _g, _b);\n  let h = s = l = (max + min) / 2;\n  if (max === min) {\n    h = s = 0;\n  } else {\n    const d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case _r:\n        h = (_g - _b) / d + (_g < _b ? 6 : 0);\n        break;\n      case _g:\n        h = (_b - _r) / d + 2;\n        break;\n      case _b:\n        h = (_r - _g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h: h * 360, s, l };\n}\nfunction hue2rgb(p, q, t) {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\nfunction hslToRgb(h, s, l) {\n  let r;\n  let g;\n  let b;\n  h = bound01(h, 360);\n  s = bound01(s * 100, 100);\n  l = bound01(l * 100, 100);\n  if (s === 0) {\n    r = g = b = l;\n  } else {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h = 0;\n  const s = max === 0 ? 0 : d / max;\n  const v = max;\n  if (max === min) {\n    h = 0;\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h, s, v };\n}\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s * 100, 100);\n  v = bound01(v * 100, 100);\n  const i = Math.floor(h);\n  const f = h - i;\n  const p = v * (1 - s);\n  const q = v * (1 - f * s);\n  const t = v * (1 - (1 - f) * s);\n  const mod = i % 6;\n  const r = [v, q, p, p, t, v][mod];\n  const g = [t, v, v, q, p, p][mod];\n  const b = [p, p, t, v, v, q][mod];\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction bound01(n, max) {\n  let _max;\n  let _n;\n  if (typeof max === \"string\") _max = parseFloat(max);\n  else _max = max;\n  if (typeof n === \"string\") {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n    const processPercent = isPercentage(n);\n    _n = Math.min(_max, Math.max(0, parseFloat(n)));\n    if (processPercent) {\n      _n = Math.floor(_n * _max) / 100;\n    }\n  } else {\n    _n = n;\n  }\n  if (Math.abs(_n - _max) < 1e-6) {\n    return 1;\n  }\n  return _n % _max / _max;\n}\nfunction isOnePointZero(n) {\n  return typeof n === \"string\" && n.includes(\".\") && parseFloat(n) === 1;\n}\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.includes(\"%\");\n}\nfunction pad2(char) {\n  if (char.length === 1) {\n    return \"0\" + char;\n  } else {\n    return \"\" + char;\n  }\n}\nvar matchers = /* @__PURE__ */ (() => {\n  const cssInteger = \"[-\\\\+]?\\\\d+%?\";\n  const cssNumber = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n  const cssUnit = \"(?:\" + cssNumber + \")|(?:\" + cssInteger + \")\";\n  const permissiveMatch3 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  const permissiveMatch4 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  return {\n    rgb: new RegExp(\"rgb\" + permissiveMatch3),\n    rgba: new RegExp(\"rgba\" + permissiveMatch4),\n    hsl: new RegExp(\"hsl\" + permissiveMatch3),\n    hsla: new RegExp(\"hsla\" + permissiveMatch4),\n    hsv: new RegExp(\"hsv\" + permissiveMatch3),\n    hsva: new RegExp(\"hsva\" + permissiveMatch4),\n    hex3: /^([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex6: /^([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu,\n    hex4: /^#?([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex8: /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu\n  };\n})();\nfunction stringToObject(inputColor) {\n  if (inputColor.includes(\"gradient(\")) return false;\n  if (inputColor.includes(\"var(\")) return false;\n  const trimLeft = /^[\\s,#]+/u;\n  let color2 = inputColor.replace(trimLeft, \"\").trimEnd().toLowerCase();\n  const namedColor = cssNames[color2];\n  if (namedColor) {\n    color2 = namedColor;\n  }\n  if (color2 === \"transparent\") {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: \"name\" /* NAME */\n    };\n  }\n  let match;\n  if (match = matchers.rgb.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: 1,\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.rgba.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.hsl.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsla.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsv.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hsva.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hex8.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: convertHexToDecimal(match[4] ?? \"\"),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex6.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: 1,\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex4.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex3.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: 1,\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  } else {\n    return false;\n  }\n}\nfunction parseIntFromHex(hex2) {\n  return parseInt(hex2, 16);\n}\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\n// ../../library/src/render/types/Color/p3.ts\nvar p3Matcher = /^color\\(display-p3\\s+(?<r>\\d+\\.\\d+|\\d+|\\.\\d+)\\s+(?<g>\\d+\\.\\d+|\\d+|\\.\\d+)\\s+(?<b>\\d+\\.\\d+|\\d+|\\.\\d+)(?:\\s*\\/\\s*(?<a>\\d+\\.\\d+|\\d+|\\.\\d+))?\\)$/u;\nfunction parseP3(color2) {\n  const match = p3Matcher.exec(color2);\n  if (!match) return null;\n  const { r = \"0\", g = \"0\", b = \"0\", a } = match.groups ?? {};\n  return {\n    r: parseFloat(r),\n    g: parseFloat(g),\n    b: parseFloat(b),\n    a: a ? parseFloat(a) : 1\n  };\n}\nfunction convertRGBChannelToLrgb(c = 0) {\n  const abs = Math.abs(c);\n  if (abs <= 0.04045) return c / 12.92;\n  return (Math.sign(c) || 1) * ((abs + 0.055) / 1.055) ** 2.4;\n}\nfunction convertRgbToLrgb({ r, g, b, a }) {\n  return {\n    r: convertRGBChannelToLrgb(r),\n    g: convertRGBChannelToLrgb(g),\n    b: convertRGBChannelToLrgb(b),\n    a\n  };\n}\nfunction convertLrgbChannelToRgb(c = 0) {\n  const abs = Math.abs(c);\n  if (abs > 31308e-7) return (Math.sign(c) || 1) * (1.055 * abs ** (1 / 2.4) - 0.055);\n  return c * 12.92;\n}\nfunction convertLrgbToRgb({ r, g, b, a }) {\n  return {\n    r: convertLrgbChannelToRgb(r),\n    g: convertLrgbChannelToRgb(g),\n    b: convertLrgbChannelToRgb(b),\n    a\n  };\n}\nvar convertP3ToXyz65 = (color2) => {\n  const { r, g, b, a } = convertRgbToLrgb(color2);\n  return {\n    x: 0.486570948648216 * r + 0.265667693169093 * g + 0.1982172852343625 * b,\n    y: 0.2289745640697487 * r + 0.6917385218365062 * g + 0.079286914093745 * b,\n    z: 0 * r + 0.0451133818589026 * g + 1.043944368900976 * b,\n    a\n  };\n};\nvar convertXyz65ToRgb = ({ x = 0, y = 0, z = 0, a = 1 }) => {\n  return convertLrgbToRgb({\n    r: x * 3.2409699419045226 - y * 1.537383177570094 - 0.4986107602930034 * z,\n    g: x * -0.9692436362808796 + y * 1.8759675015077204 + 0.0415550574071756 * z,\n    b: x * 0.0556300796969936 - y * 0.2039769588889765 + 1.0569715142428784 * z,\n    a\n  });\n};\nvar convertRgbToXyz65 = (color2) => {\n  const { r, g, b, a } = convertRgbToLrgb(color2);\n  return {\n    x: 0.4123907992659593 * r + 0.357584339383878 * g + 0.1804807884018343 * b,\n    y: 0.2126390058715102 * r + 0.715168678767756 * g + 0.0721923153607337 * b,\n    z: 0.0193308187155918 * r + 0.119194779794626 * g + 0.9505321522496607 * b,\n    a\n  };\n};\nvar convertXyz65ToP3 = ({ x = 0, y = 0, z = 0, a = 1 }) => {\n  return convertLrgbToRgb({\n    r: x * 2.4934969119414263 - y * 0.9313836179191242 - 0.402710784450717 * z,\n    g: x * -0.8294889695615749 + y * 1.7626640603183465 + 0.0236246858419436 * z,\n    b: x * 0.0358458302437845 - y * 0.0761723892680418 + 0.9568845240076871 * z,\n    a\n  });\n};\nfunction convertRGBToHSV({ r, g, b, a }) {\n  const M = Math.max(r, g, b), m2 = Math.min(r, g, b);\n  const res = {\n    h: 0,\n    s: M === 0 ? 0 : 1 - m2 / M,\n    v: M,\n    a\n  };\n  if (M - m2 !== 0) {\n    res.h = (M === r ? (g - b) / (M - m2) + (g < b ? 6 : 0) : M === g ? (b - r) / (M - m2) + 2 : (r - g) / (M - m2) + 4) * 60;\n  }\n  return res;\n}\nfunction normalizeHue(hue) {\n  return (hue = hue % 360) < 0 ? hue + 360 : hue;\n}\nfunction convertHsvToRgb({ h = 0, s = 0, v = 0, a = 1 }) {\n  const hue = normalizeHue(h);\n  const f = Math.abs(hue / 60 % 2 - 1);\n  switch (Math.floor(hue / 60)) {\n    case 0:\n      return { r: v, g: v * (1 - s * f), b: v * (1 - s), a };\n    case 1:\n      return { r: v * (1 - s * f), g: v, b: v * (1 - s), a };\n    case 2:\n      return { r: v * (1 - s), g: v, b: v * (1 - s * f), a };\n    case 3:\n      return { r: v * (1 - s), g: v * (1 - s * f), b: v, a };\n    case 4:\n      return { r: v * (1 - s * f), g: v * (1 - s), b: v, a };\n    case 5:\n      return { r: v, g: v * (1 - s), b: v * (1 - s * f), a };\n    default:\n      return { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s), a };\n  }\n}\nfunction convertRgbToP3(color2) {\n  return convertXyz65ToP3(convertRgbToXyz65(color2));\n}\nfunction convertP3ToRgb(color2) {\n  return convertXyz65ToRgb(convertP3ToXyz65(color2));\n}\n\n// ../../library/src/render/types/Color/Color.ts\nvar P3Color = class _P3Color {\n  constructor(color2) {\n    __publicField(this, \"format\", \"p3\");\n    __publicField(this, \"r\");\n    __publicField(this, \"g\");\n    __publicField(this, \"b\");\n    __publicField(this, \"a\");\n    this.r = color2.r ?? 0;\n    this.g = color2.g ?? 0;\n    this.b = color2.b ?? 0;\n    this.a = color2.a ?? 1;\n  }\n  hsv() {\n    return convertRGBToHSV(this);\n  }\n  rgb() {\n    return convertP3ToRgb(this);\n  }\n  hsl() {\n    return rgbToHsl(this.r, this.g, this.b);\n  }\n  toString(space = \"p3\", overrides) {\n    switch (space) {\n      case \"p3\": {\n        const r = (overrides == null ? void 0 : overrides.r) ?? this.r;\n        const g = (overrides == null ? void 0 : overrides.g) ?? this.g;\n        const b = (overrides == null ? void 0 : overrides.b) ?? this.b;\n        const a = (overrides == null ? void 0 : overrides.a) ?? this.a;\n        return a === 1 ? `color(display-p3 ${r} ${g} ${b})` : `color(display-p3 ${r} ${g} ${b} / ${a})`;\n      }\n      case \"srgb\": {\n        const color2 = this.rgb();\n        const clampedR = Math.round(Math.max(0, Math.min(color2.r, 1)) * 100) / 100;\n        const clampedG = Math.round(Math.max(0, Math.min(color2.g, 1)) * 100) / 100;\n        const clampedB = Math.round(Math.max(0, Math.min(color2.b, 1)) * 100) / 100;\n        const r = (overrides == null ? void 0 : overrides.r) ?? clampedR * 255;\n        const g = (overrides == null ? void 0 : overrides.g) ?? clampedG * 255;\n        const b = (overrides == null ? void 0 : overrides.b) ?? clampedB * 255;\n        const a = (overrides == null ? void 0 : overrides.a) ?? color2.a ?? 1;\n        return a === 1 ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`;\n      }\n    }\n  }\n  static isP3String(color2) {\n    return color2.startsWith(\"color(display-p3\");\n  }\n  static fromHSV(color2, space = \"p3\") {\n    switch (space) {\n      case \"p3\":\n        return new _P3Color(convertHsvToRgb(color2));\n      case \"srgb\":\n        return new _P3Color(convertRgbToP3(convertHsvToRgb(color2)));\n    }\n  }\n  static fromRGB(color2) {\n    return new _P3Color(\n      convertRgbToP3({\n        // Converted an rgb value between 0-255 to a 0-1 decimal with 5 decimal places -> 0.78607.\n        r: Math.round(color2.r / 255 * 1e4) / 1e4,\n        g: Math.round(color2.g / 255 * 1e4) / 1e4,\n        b: Math.round(color2.b / 255 * 1e4) / 1e4,\n        a: color2.a ?? 1\n      })\n    );\n  }\n  static fromRGBString(color2) {\n    const value = Color(color2);\n    if (!value) return void 0;\n    return _P3Color.fromRGB(value);\n  }\n  static fromString(color2) {\n    if (!_P3Color.isP3String(color2)) return void 0;\n    const parsed = parseP3(color2);\n    if (!parsed) return void 0;\n    return new _P3Color({ r: parsed.r, g: parsed.g, b: parsed.b, a: parsed.a });\n  }\n  static srgbFromValue(color2) {\n    if (!isString(color2) || !Color.isP3String(color2)) return color2;\n    const value = _P3Color.fromString(color2);\n    if (!value) return color2;\n    return value.toString(\"srgb\");\n  }\n  static multiplyAlpha(color2, alpha2) {\n    return new _P3Color({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a: color2.a * alpha2\n    });\n  }\n};\nfunction clampRGB(color2) {\n  return P3Color.srgbFromValue(color2);\n}\nvar cache = /* @__PURE__ */ new Map();\nvar Color = /* @__PURE__ */ (() => {\n  function Color2(color2, r, g, b) {\n    if (typeof color2 === \"string\") {\n      let c = cache.get(color2);\n      if (c) return c;\n      c = createColor(color2);\n      if (c === void 0) return { ...Color2(\"black\"), isValid: false };\n      cache.set(color2, c);\n      return c;\n    }\n    const created = createColor(color2, r, g, b);\n    return created !== void 0 ? created : { ...Color2(\"black\"), isValid: false };\n  }\n  function createColor(color2, r, g, b) {\n    if (color2 === \"\") return void 0;\n    const colorData = getCompleteColorStrategy(color2, r, g, b);\n    if (colorData) {\n      const newColor = {\n        r: colorData.r,\n        g: colorData.g,\n        b: colorData.b,\n        a: colorData.a,\n        h: colorData.h,\n        s: colorData.s,\n        l: colorData.l,\n        initialValue: typeof color2 === \"string\" && colorData.format !== \"hsv\" /* HSV */ ? color2 : void 0,\n        roundA: Math.round(100 * colorData.a) / 100,\n        format: colorData.format,\n        mix: Color2.mix,\n        toValue: () => Color2.toRgbString(newColor)\n      };\n      return newColor;\n    } else {\n      return void 0;\n    }\n  }\n  const ColorMixModel = {\n    isRGB(colorModel) {\n      return colorModel === \"rgb\" /* RGB */ || colorModel === \"rgba\" /* RGBA */;\n    },\n    isHSL(colorModel) {\n      return colorModel === \"hsl\" /* HSL */ || colorModel === \"hsla\" /* HSLA */;\n    }\n  };\n  Color2.inspect = (color2, initialValue) => {\n    if (color2.format === \"hsl\" /* HSL */) {\n      return `<${color2.constructor.name} h:${color2.h} s:${color2.s} l:${color2.l} a:${color2.a}>`;\n    } else if (color2.format === \"hex\" /* HEX */ || color2.format === \"name\" /* NAME */) {\n      return `<${color2.constructor.name} \"${initialValue}\">`;\n    } else {\n      return `<${color2.constructor.name} r:${color2.r} g:${color2.g} b:${color2.b} a:${color2.a}>`;\n    }\n  };\n  Color2.isColor = (color2) => {\n    if (typeof color2 === \"string\") {\n      return Color2.isColorString(color2);\n    } else {\n      return Color2.isColorObject(color2);\n    }\n  };\n  Color2.isColorString = (colorString) => {\n    if (typeof colorString === \"string\") {\n      return stringToObject(colorString) !== false;\n    }\n    return false;\n  };\n  Color2.isColorObject = (color2) => {\n    return isObject2(color2) && typeof color2.r === \"number\" && typeof color2.g === \"number\" && typeof color2.b === \"number\" && typeof color2.h === \"number\" && typeof color2.s === \"number\" && typeof color2.l === \"number\" && typeof color2.a === \"number\" && typeof color2.roundA === \"number\" && typeof color2.format === \"string\";\n  };\n  Color2.toString = (color2) => {\n    return Color2.toRgbString(color2);\n  };\n  Color2.toHex = (color2, allow3Char = false) => {\n    return rgbToHex(color2.r, color2.g, color2.b, allow3Char);\n  };\n  Color2.toHexString = (color2, allow3Char = false) => {\n    return `#${Color2.toHex(color2, allow3Char)}`;\n  };\n  Color2.isP3String = (color2) => {\n    if (typeof color2 !== \"string\") return false;\n    return P3Color.isP3String(color2);\n  };\n  Color2.toRgbString = (color2) => {\n    return color2.a === 1 ? \"rgb(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \")\" : \"rgba(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \", \" + color2.roundA + \")\";\n  };\n  Color2.toHusl = (color2) => {\n    return {\n      ...rgbToHsluv(color2.r, color2.g, color2.b),\n      a: color2.roundA\n    };\n  };\n  Color2.toHslString = (color2) => {\n    const hsl = Color2.toHsl(color2);\n    const h = Math.round(hsl.h);\n    const s = Math.round(hsl.s * 100);\n    const l = Math.round(hsl.l * 100);\n    return color2.a === 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toHsv = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: color2.a };\n  };\n  Color2.toHsvString = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    const h = Math.round(hsv.h * 360);\n    const s = Math.round(hsv.s * 100);\n    const v = Math.round(hsv.v * 100);\n    return color2.a === 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toName = (color2) => {\n    if (color2.a === 0) {\n      return \"transparent\";\n    }\n    if (color2.a < 1) {\n      return false;\n    }\n    const hex2 = rgbToHex(color2.r, color2.g, color2.b, true);\n    for (const key7 of Object.keys(cssNames)) {\n      const value = cssNames[key7];\n      if (value === hex2) {\n        return key7;\n      }\n    }\n    return false;\n  };\n  Color2.toHsl = (color2) => {\n    return {\n      h: Math.round(color2.h),\n      s: color2.s,\n      l: color2.l,\n      a: color2.a\n    };\n  };\n  Color2.toRgb = (color2) => {\n    return {\n      r: Math.round(color2.r),\n      g: Math.round(color2.g),\n      b: Math.round(color2.b),\n      a: color2.a\n    };\n  };\n  Color2.brighten = (color2, amount = 10) => {\n    const rgb = Color2.toRgb(color2);\n    rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n    rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n    rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n    return Color2(rgb);\n  };\n  Color2.lighten = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l += amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.darken = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l -= amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.saturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s += amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.desaturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s -= amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.grayscale = (color2) => {\n    return Color2.desaturate(color2, 100);\n  };\n  Color2.hueRotate = (color2, angle) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.h += angle;\n    hsl.h = hsl.h > 360 ? hsl.h - 360 : hsl.h;\n    return Color2(hsl);\n  };\n  Color2.alpha = (color2, a = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a\n    });\n  };\n  Color2.transparent = (color2) => {\n    return Color2.alpha(color2, 0);\n  };\n  Color2.multiplyAlpha = (color2, alphaValue = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a: color2.a * alphaValue\n    });\n  };\n  Color2.interpolate = (colorA, colorB, model = \"rgb\" /* RGB */) => {\n    if (!Color2.isColorObject(colorA) || !Color2.isColorObject(colorB)) {\n      throw new TypeError(\"Both arguments for Color.interpolate must be Color objects\");\n    }\n    return (progress2) => {\n      const color2 = Color2.mixAsColor(colorA, colorB, progress2, false, model);\n      return color2;\n    };\n  };\n  Color2.mix = (from, toColor, { model = \"rgb\" /* RGB */ } = {}) => {\n    const fromColor = typeof from === \"string\" ? Color2(from) : from;\n    const mixer = Color2.interpolate(fromColor, toColor, model);\n    return (p) => Color2.toRgbString(mixer(p));\n  };\n  Color2.mixAsColor = (colorA, colorB, fraction2 = 0.5, limit = false, model = \"rgb\" /* RGB */) => {\n    let result = null;\n    if (ColorMixModel.isRGB(model)) {\n      result = Color2({\n        r: modulate(fraction2, [0, 1], [colorA.r, colorB.r], limit),\n        g: modulate(fraction2, [0, 1], [colorA.g, colorB.g], limit),\n        b: modulate(fraction2, [0, 1], [colorA.b, colorB.b], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      });\n    } else {\n      let hslA, hslB;\n      if (ColorMixModel.isHSL(model)) {\n        hslA = Color2.toHsl(colorA);\n        hslB = Color2.toHsl(colorB);\n      } else {\n        hslA = Color2.toHusl(colorA);\n        hslB = Color2.toHusl(colorB);\n      }\n      if (hslA.s === 0) {\n        hslA.h = hslB.h;\n      } else if (hslB.s === 0) {\n        hslB.h = hslA.h;\n      }\n      const fromH = hslA.h;\n      const toH = hslB.h;\n      let deltaH = toH - fromH;\n      if (deltaH > 180) {\n        deltaH = toH - 360 - fromH;\n      } else if (deltaH < -180) {\n        deltaH = toH + 360 - fromH;\n      }\n      const tween = {\n        h: modulate(fraction2, [0, 1], [fromH, fromH + deltaH], limit),\n        s: modulate(fraction2, [0, 1], [hslA.s, hslB.s], limit),\n        l: modulate(fraction2, [0, 1], [hslA.l, hslB.l], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      };\n      if (ColorMixModel.isHSL(model)) {\n        result = Color2(tween);\n      } else {\n        result = Color2(rgbaFromHusl(tween.h, tween.s, tween.l, tween.a));\n      }\n    }\n    return result;\n  };\n  Color2.random = (alphaValue = 1) => {\n    function gen() {\n      return Math.floor(Math.random() * 255);\n    }\n    return Color2(\"rgba(\" + gen() + \", \" + gen() + \", \" + gen() + \", \" + alphaValue + \")\");\n  };\n  Color2.grey = (amount = 0.5, alphaValue = 1) => {\n    amount = Math.floor(amount * 255);\n    return Color2(\"rgba(\" + amount + \", \" + amount + \", \" + amount + \", \" + alphaValue + \")\");\n  };\n  Color2.gray = Color2.grey;\n  Color2.rgbToHsl = (r, g, b) => {\n    return rgbToHsl(r, g, b);\n  };\n  Color2.isValidColorProperty = (name, value) => {\n    const isColorKey = name.toLowerCase().slice(-5) === \"color\" || name === \"fill\" || name === \"stroke\";\n    if (isColorKey && typeof value === \"string\" && Color2.isColorString(value)) {\n      return true;\n    }\n    return false;\n  };\n  Color2.difference = (colorA, colorB) => {\n    const _r = (colorA.r + colorB.r) / 2;\n    const deltaR = colorA.r - colorB.r;\n    const deltaG = colorA.g - colorB.g;\n    const deltaB = colorA.b - colorB.b;\n    const deltaR2 = Math.pow(deltaR, 2);\n    const deltaG2 = Math.pow(deltaG, 2);\n    const deltaB2 = Math.pow(deltaB, 2);\n    return Math.sqrt(2 * deltaR2 + 4 * deltaG2 + 3 * deltaB2 + _r * (deltaR2 - deltaB2) / 256);\n  };\n  Color2.equal = (colorA, colorB, tolerance = 0.1) => {\n    if (Math.abs(colorA.r - colorB.r) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.g - colorB.g) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.b - colorB.b) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.a - colorB.a) * 256 >= tolerance) {\n      return false;\n    }\n    return true;\n  };\n  const channelToDecimal = interpolate([0, 255], [0, 1]);\n  function convertChannelToLinearRgb(channel) {\n    channel = channelToDecimal(channel);\n    const abs = Math.abs(channel);\n    if (abs < 0.04045) return channel / 12.92;\n    return (Math.sign(channel) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n  }\n  Color2.luminance = (color2) => {\n    const { r, g, b } = Color2.toRgb(color2);\n    return 0.2126 * convertChannelToLinearRgb(r) + 0.7152 * convertChannelToLinearRgb(g) + 0.0722 * convertChannelToLinearRgb(b);\n  };\n  Color2.contrast = (a, b) => {\n    const l1 = Color2.luminance(a);\n    const l2 = Color2.luminance(b);\n    return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);\n  };\n  return Color2;\n})();\nfunction getCompleteColorStrategy(colorOrR, g, b, a = 1) {\n  let completeColor;\n  if (typeof colorOrR === \"number\" && !Number.isNaN(colorOrR) && typeof g === \"number\" && !Number.isNaN(g) && typeof b === \"number\" && !Number.isNaN(b)) {\n    const _r = colorOrR;\n    const _g = g;\n    const _b = b;\n    const _a = a;\n    completeColor = getCompleteColorFromRGB({ r: _r, g: _g, b: _b, a: _a });\n  } else if (typeof colorOrR === \"string\") {\n    completeColor = getCompleteColorFromString(colorOrR);\n  } else if (typeof colorOrR === \"object\") {\n    if (colorOrR.hasOwnProperty(\"r\") && colorOrR.hasOwnProperty(\"g\") && colorOrR.hasOwnProperty(\"b\")) {\n      completeColor = getCompleteColorFromRGB(colorOrR);\n    } else {\n      completeColor = getCompleteColorFromHSL(colorOrR);\n    }\n  }\n  return completeColor;\n}\nfunction getCompleteColorFromString(color2) {\n  const result = stringToObject(color2);\n  if (result) {\n    if (result.format === \"hsl\" /* HSL */) {\n      return getCompleteColorFromHSL(result);\n    } else if (result.format === \"hsv\" /* HSV */) {\n      return getCompleteColorFromHSV(result);\n    } else {\n      return getCompleteColorFromRGB(result);\n    }\n  }\n}\nfunction getCompleteColorFromHSV(color2) {\n  const rgb = hsvToRgb(color2.h, color2.s, color2.v);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromRGB(color2) {\n  const rgb = rgbToRgb(color2.r, color2.g, color2.b);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromHSL(color2) {\n  let h;\n  let s;\n  let l;\n  let rgb = { r: 0, g: 0, b: 0 };\n  let hsl = { h: 0, s: 0, l: 0 };\n  h = isNumeric(color2.h) ? color2.h : 0;\n  h = (h + 360) % 360;\n  s = isNumeric(color2.s) ? color2.s : 1;\n  if (typeof color2.s === \"string\") {\n    s = numberFromString(color2.s);\n  }\n  l = isNumeric(color2.l) ? color2.l : 0.5;\n  if (typeof color2.l === \"string\") {\n    l = numberFromString(color2.l);\n  }\n  rgb = hslToRgb(h, s, l);\n  hsl = {\n    h,\n    s,\n    l\n  };\n  return {\n    ...rgb,\n    ...hsl,\n    a: color2.a === void 0 ? 1 : color2.a,\n    format: \"hsl\" /* HSL */\n  };\n}\nfunction correctAlpha(alphaValue) {\n  alphaValue = parseFloat(alphaValue);\n  if (alphaValue < 0) {\n    alphaValue = 0;\n  }\n  if (Number.isNaN(alphaValue) || alphaValue > 1) {\n    alphaValue = 1;\n  }\n  return alphaValue;\n}\n\n// ../../library/src/interpolation/ColorInterpolation.ts\nvar ColorInterpolation = (type = \"husl\" /* HUSL */) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return Color.interpolate(Color(from), Color(to), type);\n    },\n    difference(from, to) {\n      return Color.difference(Color(from), Color(to));\n    }\n  };\n};\n\n// ../../library/src/interpolation/NoInterpolation.ts\nvar NoInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    return (progress2) => {\n      return progress2 < 0.5 ? from : to;\n    };\n  },\n  difference(from, to) {\n    return from === to ? 0 : 1;\n  }\n};\n\n// ../../library/src/interpolation/ObjectInterpolation.ts\nvar ObjectInterpolation = (valueInterpolation) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      const result = Object.assign({}, from);\n      const interpolations = {};\n      const keys3 = /* @__PURE__ */ new Set();\n      for (const key7 in from) {\n        interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n        keys3.add(key7);\n      }\n      for (const key7 in to) {\n        if (!keys3.has(key7)) {\n          interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n          keys3.add(key7);\n        }\n      }\n      return (progress2) => {\n        for (const key7 in interpolations) {\n          result[key7] = interpolations[key7](progress2);\n        }\n        return result;\n      };\n    },\n    difference(from, to) {\n      let sum = 0;\n      for (const key7 in from) {\n        const difference = valueInterpolation.difference(from[key7], to[key7]);\n        sum += Math.pow(difference, 2);\n      }\n      return Math.sqrt(sum);\n    }\n  };\n};\n\n// ../../library/src/interpolation/ValueInterpolation.ts\nvar DefaultInterpolationOptions = {\n  colorModel: \"husl\" /* HUSL */\n};\nvar ValueInterpolation = class _ValueInterpolation {\n  /**\n   * @internal\n   */\n  constructor(options = DefaultInterpolationOptions) {\n    __publicField(this, \"options\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"interpolate\", (from, to) => {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return this.interPolationForValue(from).interpolate(from, to);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"difference\", (from, to) => {\n      const interpolation = this.interPolationForValue(from);\n      return interpolation.difference(from, to);\n    });\n    this.options = { ...DefaultInterpolationOptions, ...options };\n  }\n  /**\n   * @internal\n   */\n  interPolationForValue(value) {\n    const type = typeof value;\n    if (type === \"number\") {\n      return NumberInterpolation;\n    } else if (type === \"boolean\" || type === \"function\") {\n      return NoInterpolation;\n    } else if (Color.isColor(value)) {\n      return ColorInterpolation(this.options.colorModel);\n    } else if (type === \"object\") {\n      if (value === null) {\n        return NoInterpolation;\n      }\n      const constructor = value.constructor;\n      if (constructor && isInterpolatable(constructor)) {\n        const interpolation = constructor.interpolationFor(value, this);\n        if (interpolation && interpolation !== this && interpolation.constructor !== _ValueInterpolation) {\n          return interpolation;\n        }\n      }\n      return ObjectInterpolation(this);\n    }\n    console.warn(`No interpolation defined for ${value}`);\n    return NoInterpolation;\n  }\n};\nvar AnyInterpolation = /* @__PURE__ */ new ValueInterpolation();\n\n// ../../library/src/render/utils/isMotionValue.ts\nvar isMotionValue2 = (v) => v instanceof MotionValue;\n\n// ../../library/src/animation/Animators/PrecalculatedAnimator.ts\nvar Defaults2 = /* @__PURE__ */ (() => ({\n  delta: 1 / 60,\n  maxValues: 1e4\n}))();\nvar PrecalculatedAnimator = class {\n  constructor(options) {\n    __publicField(this, \"animator\");\n    __publicField(this, \"values\");\n    __publicField(this, \"currentTime\", 0);\n    __publicField(this, \"totalTime\");\n    __publicField(this, \"options\");\n    this.options = { ...Defaults2, ...options };\n    this.animator = options.animator;\n  }\n  preCalculate() {\n    if (!this.animator.isReady()) {\n      return;\n    }\n    const { delta } = this.options;\n    this.values = [];\n    while (!this.animator.isFinished() && this.values.length < this.options.maxValues) {\n      let value = this.animator.next(this.options.delta);\n      if (typeof value === \"object\" && value) {\n        const object = value;\n        const copy = { ...object };\n        value = copy;\n      }\n      this.values.push(value);\n    }\n    this.totalTime = this.values.length * delta;\n  }\n  indexForTime(time2) {\n    assert(this.values !== void 0, \"values must be set before calling indexForTime()\");\n    assert(this.totalTime !== void 0, \"totalTime must be set before calling indexForTime()\");\n    return Math.max(\n      0,\n      Math.min(this.values.length - 1, Math.round(this.values.length * (time2 / this.totalTime)) - 1)\n    );\n  }\n  valueForTime(time2) {\n    assert(this.values !== void 0, \"values must be set before calling valueForTime()\");\n    const index = this.indexForTime(time2);\n    const value = this.values[index];\n    return value;\n  }\n  setFrom(value) {\n    this.animator.setFrom(value);\n    this.preCalculate();\n  }\n  setTo(end) {\n    this.animator.setTo(end);\n    this.preCalculate();\n  }\n  isReady() {\n    assert(this.totalTime !== void 0, \"totalTime must be set before calling isReady()\");\n    return this.values !== void 0 && this.values.length > 0 && this.totalTime > 0;\n  }\n  next(delta) {\n    this.currentTime += delta;\n    return this.valueForTime(this.currentTime);\n  }\n  isFinished() {\n    assert(this.totalTime !== void 0, \"totalTime must be set before calling isFinished()\");\n    return this.totalTime === 0 || this.currentTime >= this.totalTime;\n  }\n  get endValue() {\n    this.preCalculate();\n    assert(this.totalTime !== void 0, \"expecting totalTime to be set after calling preCalculate()\");\n    const value = this.valueForTime(this.totalTime);\n    assert(this.values !== void 0, \"expecting values to be set after calling preCalculate()\");\n    return this.values.length > 0 ? value : this.animator.next(0);\n  }\n};\n\n// ../../library/src/core/EventEmitter.ts\nvar EventEmitter3 = /* @__PURE__ */ (() => require_eventemitter3().EventEmitter)();\nvar EventEmitter = class {\n  constructor() {\n    __publicField(this, \"_emitter\", new EventEmitter3());\n  }\n  eventNames() {\n    return this._emitter.eventNames();\n  }\n  eventListeners() {\n    const listeners = {};\n    for (const eventName of this._emitter.eventNames()) {\n      listeners[eventName] = this._emitter.listeners(eventName);\n    }\n    return listeners;\n  }\n  on(eventName, fn) {\n    this.addEventListener(eventName, fn, false, false, this);\n  }\n  off(eventName, fn) {\n    this.removeEventListeners(eventName, fn);\n  }\n  once(eventName, fn) {\n    this.addEventListener(eventName, fn, true, false, this);\n  }\n  unique(eventName, fn) {\n    this.addEventListener(eventName, fn, false, true, this);\n  }\n  addEventListener(eventName, fn, once, unique, context) {\n    if (unique) {\n      for (const name of this._emitter.eventNames()) {\n        if (fn === this._emitter.listeners(name)) {\n          return;\n        }\n      }\n    }\n    if (once === true) {\n      this._emitter.once(eventName, fn, context);\n    } else {\n      this._emitter.addListener(eventName, fn, context);\n    }\n  }\n  removeEventListeners(eventName, fn) {\n    if (eventName) {\n      this._emitter.removeListener(eventName, fn);\n    } else {\n      this.removeAllEventListeners();\n    }\n  }\n  removeAllEventListeners() {\n    this._emitter.removeAllListeners();\n  }\n  countEventListeners(eventName) {\n    if (eventName) {\n      return this._emitter.listeners(eventName).length;\n    } else {\n      let count = 0;\n      for (const name of this._emitter.eventNames()) {\n        count += this._emitter.listeners(name).length;\n      }\n      return count;\n    }\n  }\n  emit(eventName, ...args) {\n    this._emitter.emit(eventName, ...args);\n  }\n};\n\n// ../../library/src/core/Time.ts\nvar _raf = (f) => {\n  setTimeout(f, 1 / 60);\n};\nvar __raf = /* @__PURE__ */ (() => safeWindow[\"requestAnimationFrame\"] || _raf)();\nvar raf = (f) => __raf(f);\n\n// ../../library/src/core/Loop.ts\nvar LoopTimeStep = /* @__PURE__ */ (() => 1 / 60)();\nvar Loop = class extends EventEmitter {\n  /**\n   * @internal\n   */\n  constructor(start = false) {\n    super();\n    __publicField(this, \"_started\", false);\n    __publicField(this, \"_frame\", 0);\n    __publicField(this, \"_frameTasks\", []);\n    /**\n     * @internal\n     */\n    __publicField(this, \"tick\", () => {\n      if (!this._started) return;\n      raf(this.tick);\n      this.emit(\"update\", this._frame, LoopTimeStep);\n      this.emit(\"render\", this._frame, LoopTimeStep);\n      this._processFrameTasks();\n      this._frame++;\n    });\n    if (start) {\n      this.start();\n    }\n  }\n  /**\n   * To add a task to be done at the end of a frame.\n   * Tasks added from a task will be ignored. These will run after loop events have been processed.\n   * @internal\n   */\n  addFrameTask(task) {\n    this._frameTasks.push(task);\n  }\n  _processFrameTasks() {\n    var _a;\n    const postEventTasks = this._frameTasks;\n    const length = postEventTasks.length;\n    if (length === 0) return;\n    for (let i = 0; i < length; i++) {\n      (_a = postEventTasks[i]) == null ? void 0 : _a.call(postEventTasks);\n    }\n    postEventTasks.length = 0;\n  }\n  /**\n   * @internal\n   */\n  static set TimeStep(value) {\n    LoopTimeStep = value;\n  }\n  /**\n   * @internal\n   */\n  static get TimeStep() {\n    return LoopTimeStep;\n  }\n  /**\n   * @internal\n   */\n  start() {\n    if (this._started) return this;\n    this._frame = 0;\n    this._started = true;\n    raf(this.tick);\n    return this;\n  }\n  /**\n   * @internal\n   * @deprecated Don\u2019t use `stop` as you could be stopping the MainLoop for others.\n   */\n  stop() {\n    this._started = false;\n    return this;\n  }\n  /**\n   * @internal\n   */\n  get frame() {\n    return this._frame;\n  }\n  /**\n   * @internal\n   */\n  get time() {\n    return this._frame * LoopTimeStep;\n  }\n};\nvar MainLoop = /* @__PURE__ */ new Loop();\n\n// ../../library/src/render/types/RenderEnvironment.ts\nvar RenderEnvironment = {\n  target: (\n    // Enable static renderer when taking screenshots\n    // in screenshot-site lambda\n    safeWindow.location.origin === \"https://screenshot.framer.invalid\" ? \"EXPORT\" /* export */ : \"PREVIEW\" /* preview */\n  ),\n  zoom: 1\n};\nfunction executeInRenderEnvironment(customEnvironment, task) {\n  const previousEnvironment = Object.assign({}, RenderEnvironment);\n  Object.assign(RenderEnvironment, customEnvironment);\n  const result = task();\n  Object.assign(RenderEnvironment, previousEnvironment);\n  return result;\n}\nfunction setGlobalRenderEnvironment(environment2) {\n  Object.assign(RenderEnvironment, environment2);\n}\nfunction useRenderEnvironment(target, zoom) {\n  let willChangeElements = false;\n  if (RenderEnvironment.target !== target) {\n    RenderEnvironment.target = target;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.zoom !== zoom) {\n    RenderEnvironment.zoom = zoom;\n  }\n  return { willChangeElements };\n}\nvar RenderTarget = {\n  /**\n   * The component is to be rendered for the Framer canvas.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.canvas) {\n   *     return <CanvasComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  canvas: \"CANVAS\" /* canvas */,\n  /**\n   * The component is to be rendered for export.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.export) {\n   *     return <ExportComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  export: \"EXPORT\" /* export */,\n  /**\n   * The component is to be rendered as a preview thumbnail, for example in the\n   * component panel.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <Thumbnail />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  thumbnail: \"THUMBNAIL\" /* thumbnail */,\n  /**\n   * The component is being rendered in the preview window.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   React.useEffect(() => {\n   *     if (RenderTarget.current() === RenderTarget.preview) {\n   *       // Do something in preview.\n   *     }\n   *   })\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  preview: \"PREVIEW\" /* preview */,\n  /**\n   * Returns the current `RenderTarget` allowing components to apply\n   * different behaviors depending on the environment.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <PreviewIcon />\n   *   }\n   *   return <Frame>...</Frame>\n   * }\n   * ```\n   */\n  current: () => RenderEnvironment.target,\n  /**\n   * Returns true if the current `RenderTarget` has performance restrictions.\n   * Use this to avoid doing heavy work in these contexts because they may\n   * bail on the rendering if the component takes too long.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.hasRestrictions()) {\n   *     return <SomePlaceholder />\n   *   }\n   *   return <RichPreviewContent />\n   * }\n   * ```\n   */\n  hasRestrictions: () => {\n    const target = RenderEnvironment.target;\n    if (target === \"CANVAS\" /* canvas */) return true;\n    if (target === \"EXPORT\" /* export */) return true;\n    return false;\n  }\n};\n\n// ../../library/src/animation/Drivers/AnimationDriver.ts\nvar AnimationDriver = class {\n  constructor(animator, updateCallback, finishedCallback) {\n    this.animator = animator;\n    this.updateCallback = updateCallback;\n    this.finishedCallback = finishedCallback;\n    __publicField(this, \"update\", (frame2, elapsed) => {\n      if (this.animator.isFinished()) {\n        this.finish();\n      } else {\n        const value = this.animator.next(elapsed);\n        this.updateCallback(value);\n      }\n    });\n    if (!this.animator.isReady()) {\n      console.warn(\"AnimationDriver initialized with animator that isn't ready\");\n    }\n  }\n  finish() {\n    if (this.finishedCallback) {\n      this.finishedCallback(this.animator.isFinished());\n    }\n  }\n  isFinished() {\n    return this.animator.isFinished();\n  }\n};\n\n// ../../library/src/animation/Drivers/MainLoopDriver.ts\nvar MainLoopAnimationDriver = class extends AnimationDriver {\n  play() {\n    if (RenderEnvironment.target !== RenderTarget.preview) {\n      this.finishedCallback && this.finishedCallback(false);\n      return;\n    }\n    MainLoop.on(\"update\", this.update);\n  }\n  cancel() {\n    MainLoop.off(\"update\", this.update);\n  }\n  finish() {\n    MainLoop.off(\"update\", this.update);\n    super.finish();\n  }\n};\n\n// ../../library/src/animation/FramerAnimation.ts\nvar DefaultDeprecatedAnimationOptions = {\n  precalculate: false,\n  colorModel: \"husl\" /* HUSL */\n};\nvar FramerAnimation = class _FramerAnimation {\n  /**\n   * @internal\n   */\n  constructor(target, from, to, animatorClass, options, driverClass = MainLoopAnimationDriver) {\n    /**\n     * @internal\n     */\n    __publicField(this, \"driver\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"playStateSource\", \"idle\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"onfinish\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"oncancel\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyPromise\", Promise.resolve());\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyResolve\", null);\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedPromise\", Promise.resolve());\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedResolve\", null);\n    /**\n     * @internal\n     */\n    // biome-ignore lint/suspicious/noExplicitAny: deprecated\n    __publicField(this, \"finishedReject\", null);\n    this.resetFinishedPromise();\n    const deprecatedAnimationOptions = { ...DefaultDeprecatedAnimationOptions };\n    const animatorOptions = {};\n    if (options) {\n      Object.assign(deprecatedAnimationOptions, options);\n      Object.assign(animatorOptions, options);\n    }\n    let interpolation;\n    if (deprecatedAnimationOptions.customInterpolation) {\n      interpolation = deprecatedAnimationOptions.customInterpolation;\n    } else {\n      interpolation = new ValueInterpolation(options);\n    }\n    let animator;\n    if (!animatorClass) {\n      animator = new BezierAnimator({}, interpolation);\n    } else {\n      animator = new animatorClass(animatorOptions, interpolation);\n    }\n    if (deprecatedAnimationOptions.precalculate) {\n      animator = new PrecalculatedAnimator({ animator });\n    }\n    animator.setFrom(from);\n    animator.setTo(to);\n    const updateCallback = (value) => {\n      _FramerAnimation.driverCallbackHandler(target, value);\n    };\n    const finishedCallback = (isFinished) => {\n      if (isFinished) {\n        _FramerAnimation.driverCallbackHandler(target, to);\n        if (this.playStateSource === \"running\") {\n          this.playStateValue = \"finished\";\n        }\n      }\n    };\n    this.driver = new driverClass(animator, updateCallback, finishedCallback);\n  }\n  /**\n   * @internal\n   */\n  static driverCallbackHandler(target, value) {\n    if (isAnimatable(target) || isMotionValue2(target)) {\n      target.set(value);\n    } else {\n      const targetObject = target;\n      Animatable.transaction((update) => {\n        for (const key7 in targetObject) {\n          const targetValue = targetObject[key7];\n          if (isAnimatable(targetValue)) {\n            update(targetValue, value[key7]);\n          } else {\n            targetObject[key7] = value[key7];\n          }\n        }\n      });\n    }\n  }\n  /**\n   * @internal\n   */\n  get playStateValue() {\n    return this.playStateSource;\n  }\n  /**\n   * @internal\n   */\n  set playStateValue(value) {\n    if (value !== this.playStateSource) {\n      const oldValue = value;\n      this.playStateSource = value;\n      switch (value) {\n        case \"idle\":\n          if (oldValue === \"running\") {\n            this.oncancel && this.oncancel();\n          }\n          this.readyResolve && this.readyResolve();\n          this.resetReadyPromise();\n          break;\n        case \"finished\":\n          if (oldValue === \"idle\") {\n            console.warn(\"Bad state transition\");\n            break;\n          }\n          this.onfinish && this.onfinish();\n          this.finishedResolve && this.finishedResolve();\n          break;\n        case \"running\":\n          this.resetReadyPromise();\n          break;\n      }\n      if (oldValue === \"finished\") {\n        this.resetFinishedPromise();\n      }\n      if (value === \"finished\") {\n        this.playStateValue = \"idle\";\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  get playState() {\n    return this.playStateValue;\n  }\n  /**\n   * @internal\n   */\n  resetReadyPromise() {\n    this.readyResolve = null;\n    this.readyPromise = new Promise((resolve, reject) => {\n      this.readyResolve = resolve;\n    });\n  }\n  /**\n       * Wait for the animation to be ready to play.\n       * @remarks\n       * ```jsx\n       * const animation = animate.ease(value, 100)\n       * animation.ready().then(() => {\n       *    // Animation is ready\n       * })\n  \n       * // async/await syntax\n       * const animation = animate.ease(value, 100)\n       * await animation.ready()\n       * // Animation is ready\n       * ```\n       * @returns Promise that is resolved when the animation is ready to play\n       * @public\n       */\n  get ready() {\n    return this.readyPromise;\n  }\n  /**\n   * @internal\n   */\n  resetFinishedPromise() {\n    this.finishedResolve = null;\n    this.finishedReject = null;\n    this.finishedPromise = new Promise((resolve, reject) => {\n      this.finishedResolve = resolve;\n      this.finishedReject = reject;\n    });\n    this.finishedPromise.catch((reason) => {\n    });\n  }\n  /**\n   * Wait for the animation to be finished.\n   * @remarks\n   * ```jsx\n   * // async/await syntax\n   * const animation = animate.ease(value, 100)\n   * await animation.finished()\n   * // Animation is finished\n   *\n   *\n   * const animation = animate.ease(value, 100)\n   * animation.ready().then(() => {\n   *    // Animation is finished\n   * })\n   * ```\n   * @returns Promise that is resolved when the animation is ready to play\n   * @public\n   */\n  get finished() {\n    return this.finishedPromise;\n  }\n  /**\n   * @internal\n   */\n  play() {\n    this.playStateValue = \"running\";\n    this.driver.play();\n  }\n  /**\n   * Cancels the animation if it is still running.\n   * @remarks\n   * ```jsx\n   * const animation = animate.ease(value, 100, {duration: 3})\n   * setTimeout(() => animation.cancel(), 500)\n   * ```\n   * @public\n   */\n  cancel() {\n    if (this.playStateValue !== \"running\") {\n      return;\n    }\n    this.driver.cancel();\n    if (this.playState !== \"idle\") {\n      const reason = \"AbortError\";\n      this.finishedReject && this.finishedReject(reason);\n    }\n    this.playStateValue = \"idle\";\n  }\n  /**\n   * @internal\n   */\n  finish() {\n    if (this.playStateSource === \"running\") {\n      this.playStateValue = \"finished\";\n      this.driver.finish();\n    }\n  }\n  /**\n   * @internal\n   */\n  isFinished() {\n    return this.playStateValue === \"finished\";\n  }\n};\n\n// ../../library/src/animation/Motion/autoValueHandlers.ts\nvar correctBorderScale = (axis) => ({\n  correct: (latest, { delta, treeScale }) => {\n    if (typeof latest === \"string\") latest = parseFloat(latest);\n    if (latest === 0) return \"0px\";\n    let corrected = latest;\n    if (delta && treeScale) {\n      corrected = Math.round(latest / delta[axis].scale / treeScale[axis]);\n      corrected = Math.max(corrected, 1);\n    }\n    return corrected + \"px\";\n  }\n});\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\nimport { Fragment, jsx as jsx6 } from \"react/jsx-runtime\";\naddScaleCorrector({\n  borderTopWidth: correctBorderScale(\"y\"),\n  borderLeftWidth: correctBorderScale(\"x\"),\n  borderRightWidth: correctBorderScale(\"x\"),\n  borderBottomWidth: correctBorderScale(\"y\")\n});\nfunction MotionSetup({ children }) {\n  return /* @__PURE__ */ jsx6(Fragment, { children });\n}\n\n// ../../library/src/animation/Motion/startAnimation.ts\nfunction startAnimation(_key, value, target, transition = {}) {\n  warnOnce2(\n    `\"startAnimation\" is unsupported. Use \"animate\" instead: https://www.framer.com/api/motion/utilities/#animate`\n  );\n  return new Promise((resolve) => {\n    animate(value, target, {\n      ...transition,\n      onComplete: () => resolve()\n    });\n  });\n}\n\n// ../../library/src/animation/animate.ts\nfunction deprecatedAnimate(from, to, animator, options) {\n  deprecationWarning(\"animate()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n  const target = from;\n  let fromValue;\n  if (isAnimatable(from) || isMotionValue2(from)) {\n    fromValue = from.get();\n  } else {\n    fromValue = Animatable.objectToValues(from);\n  }\n  const animation = new FramerAnimation(target, fromValue, to, animator, options);\n  animation.play();\n  return animation;\n}\nvar animate2 = /* @__PURE__ */ (() => {\n  function animate3(from, to, animatorOrTransition, options) {\n    return isAnimatable(from) ? deprecatedAnimate(from, to, animatorOrTransition, options) : animate(from, to, animatorOrTransition);\n  }\n  animate3.spring = (from, to, options) => {\n    return animate3(from, to, SpringAnimator, options);\n  };\n  animate3.bezier = (from, to, options) => {\n    return animate3(from, to, BezierAnimator, options);\n  };\n  animate3.linear = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"linear\" /* Linear */ });\n  };\n  animate3.ease = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease\" /* Ease */ });\n  };\n  animate3.easeIn = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in\" /* EaseIn */ });\n  };\n  animate3.easeOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-out\" /* EaseOut */ });\n  };\n  animate3.easeInOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in-out\" /* EaseInOut */ });\n  };\n  return animate3;\n})();\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport React12, { useCallback as useCallback5, useContext as useContext3, useMemo as useMemo3, useRef as useRef4 } from \"react\";\nimport { Fragment as Fragment2, jsx as jsx7 } from \"react/jsx-runtime\";\nvar LayoutIdContext = /* @__PURE__ */ React12.createContext({\n  getLayoutId: (args) => null,\n  persistLayoutIdCache: () => {\n  },\n  top: false,\n  enabled: true\n});\nfunction LayoutIdProvider({ children }) {\n  const context = useContext3(LayoutIdContext);\n  if (context.top) return /* @__PURE__ */ jsx7(Fragment2, { children });\n  const cache2 = useRef4({\n    // When we provide a layoutId for a node based on it's first\n    // duplicatedFrom id, we save it's layoutId mapped to it's actual id.\n    // Future screen's nodes will check this cache first, to see if they've\n    // previously been assigned a layoutId, or if any of there other\n    // duplicatedFrom ids matched a node that was previously assigned a\n    // layoutId.\n    byId: {},\n    byName: {},\n    // When we navigate from screens that were duplicated from a future\n    // screen, to that future screen, we want to do a reverse lookup on the\n    // last duplicatedFrom id, rather than the id. We need to keep them\n    // separate so they don't overlap.\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {},\n    // When we don't have a cached layoutId for all duplicatedFrom ids, we\n    // need to increment and save it so that we don't create clashing\n    // layoutIds. We also need to reset name counts between screens, so we\n    // record those separately.\n    count: {\n      byId: {},\n      byName: {}\n    }\n  });\n  const screen = useRef4({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {}\n  });\n  const usedIds = useRef4(/* @__PURE__ */ new Set()).current;\n  const getLayoutId = useCallback5(({ id, name, duplicatedFrom }) => {\n    if (!id) return null;\n    const cacheKey = name ? \"byName\" : \"byId\";\n    const previousId = cache2.current[cacheKey][id];\n    if (previousId) return previousId;\n    const nodeIdentifier = name || id;\n    if (!duplicatedFrom && !usedIds.has(nodeIdentifier) && (!cache2.current.byLayoutId[nodeIdentifier] || cache2.current.byLayoutId[nodeIdentifier] === nodeIdentifier)) {\n      if (cache2.current.count[cacheKey][nodeIdentifier] === void 0) {\n        cache2.current.count[cacheKey][nodeIdentifier] = 0;\n        cache2.current.byLayoutId[nodeIdentifier] = nodeIdentifier;\n        screen.current[cacheKey][id] = nodeIdentifier;\n      }\n      usedIds.add(nodeIdentifier);\n      return nodeIdentifier;\n    }\n    let possibleMatch = void 0;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      for (let index = duplicatedFrom.length - 1; index >= 0; index--) {\n        const duplicatedId = duplicatedFrom[index];\n        assert(!!duplicatedId, `duplicatedId must be defined`);\n        const match = cache2.current[cacheKey][duplicatedId];\n        const byLastIdMatch = cache2.current.byLastId[duplicatedId];\n        if (byLastIdMatch && !possibleMatch) {\n          const matchedLayoutId = cache2.current.byLayoutId[byLastIdMatch];\n          const shouldUseNamedLastIdMatch = !matchedLayoutId || matchedLayoutId === name;\n          if (byLastIdMatch && !usedIds.has(byLastIdMatch) && (name ? shouldUseNamedLastIdMatch : true)) {\n            possibleMatch = [byLastIdMatch, duplicatedId];\n          }\n        }\n        const previousLayoutId = match ? cache2.current.byLayoutId[match] : void 0;\n        const shouldUseNamedMatch = !previousLayoutId || previousLayoutId === name;\n        if (match && !usedIds.has(match) && (name ? shouldUseNamedMatch : true)) {\n          screen.current[cacheKey][id] = match;\n          screen.current.byLastId[duplicatedId] = match;\n          usedIds.add(match);\n          return match;\n        }\n      }\n    }\n    const last = cache2.current.byLastId[id];\n    if (last && !usedIds.has(last)) {\n      usedIds.add(last);\n      screen.current.byId[id] = last;\n      return last;\n    }\n    if (possibleMatch) {\n      const [match, duplicatedId] = possibleMatch;\n      screen.current[cacheKey][id] = match;\n      screen.current.byLastId[duplicatedId] = match;\n      usedIds.add(match);\n      return match;\n    }\n    const possible = cache2.current.byPossibleId[id];\n    if (possible && !usedIds.has(possible)) {\n      usedIds.add(possible);\n      screen.current.byId[id] = possible;\n      return possible;\n    }\n    const rootDuplicatedId = duplicatedFrom == null ? void 0 : duplicatedFrom[0];\n    const identifier = name || rootDuplicatedId || id;\n    const value = (cache2.current.count[cacheKey][identifier] ?? -1) + 1;\n    const { layoutId, value: nextValue } = nextLayoutId(identifier, value, usedIds);\n    cache2.current.count[cacheKey][identifier] = nextValue;\n    screen.current[cacheKey][id] = layoutId;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      if (!name) {\n        const lastId = duplicatedFrom[duplicatedFrom.length - 1];\n        if (lastId) {\n          screen.current.byLastId[lastId] = layoutId;\n        }\n        if (duplicatedFrom.length > 1) {\n          for (let index = 0; index < duplicatedFrom.length - 1; index++) {\n            const possibleId = duplicatedFrom[index];\n            if (possibleId === void 0) continue;\n            if (!screen.current.byPossibleId[possibleId]) {\n              screen.current.byPossibleId[possibleId] = layoutId;\n            }\n          }\n        }\n      }\n    }\n    screen.current.byLayoutId[layoutId] = nodeIdentifier;\n    usedIds.add(layoutId);\n    return layoutId;\n  }, []);\n  const persistLayoutIdCache = useCallback5(() => {\n    cache2.current = {\n      byId: {\n        ...cache2.current.byId,\n        ...screen.current.byId\n      },\n      byLastId: {\n        ...cache2.current.byLastId,\n        ...screen.current.byLastId\n      },\n      byPossibleId: {\n        ...cache2.current.byPossibleId,\n        ...screen.current.byPossibleId\n      },\n      byName: {\n        ...cache2.current.byName,\n        ...screen.current.byName\n      },\n      byLastName: { ...cache2.current.byLastName, ...screen.current.byLastName },\n      byLayoutId: { ...cache2.current.byLayoutId, ...screen.current.byLayoutId },\n      // Unlike the count.byId, we need to reset the count.byName because\n      // named layers might not have duplicatedFrom ids (e.g. imported\n      // from Figma). When we can use duplicatedFrom ids to check if an id\n      // was assigned on a previous screen, we don't increment the count,\n      // which means that the count only increments for new items, and\n      // only increments on a new screen if the node is new. Since named\n      // layers need to always match in some way between screens, we reset\n      // the count so that the second named layer on a second screen is\n      // always name-1 if it doesn't have any duplicatedFrom ids.\n      count: {\n        ...cache2.current.count,\n        byName: {}\n      }\n    };\n    screen.current = {\n      byId: {},\n      byName: {},\n      byLastId: {},\n      byPossibleId: {},\n      byLastName: {},\n      byLayoutId: {}\n    };\n    usedIds.clear();\n  }, []);\n  const contextValue = useRef4({\n    getLayoutId,\n    persistLayoutIdCache,\n    top: true,\n    enabled: true\n  }).current;\n  return /* @__PURE__ */ jsx7(LayoutIdContext.Provider, { value: contextValue, children });\n}\nfunction nextLayoutId(identifier, initialValue, usedIds) {\n  let value = initialValue;\n  let layoutId = value ? `${identifier}-${value}` : identifier;\n  while (usedIds.has(layoutId)) {\n    value++;\n    layoutId = `${identifier}-${value}`;\n  }\n  return { layoutId, value };\n}\nfunction AutomaticLayoutIds({ enabled = true, ...props }) {\n  const context = useContext3(LayoutIdContext);\n  const contextValue = useMemo3(() => {\n    return {\n      ...context,\n      enabled\n    };\n  }, [enabled]);\n  return /* @__PURE__ */ jsx7(LayoutIdContext.Provider, { ...props, value: contextValue });\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport React13, { Component as Component2 } from \"react\";\n\n// ../../library/src/components/utils/useConstant.ts\nimport { useRef as useRef5 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef5(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../library/src/components/Device/ErrorPlaceholder.tsx\nimport { jsx as jsx8, jsxs } from \"react/jsx-runtime\";\nvar baseStyle = {\n  background: void 0,\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  lineHeight: \"1.4em\",\n  textOverflow: \"ellipsis\",\n  overflow: \"hidden\",\n  minHeight: 0,\n  width: \"100%\",\n  height: \"100%\"\n};\nvar errorStyle = /* @__PURE__ */ (() => ({\n  ...baseStyle,\n  border: \"1px solid rgba(149, 149, 149, 0.15)\",\n  borderRadius: 6,\n  fontSize: \"12px\",\n  backgroundColor: \"rgba(149, 149, 149, 0.1)\",\n  color: \"#a5a5a5\"\n}))();\nvar textStyle = {\n  overflow: \"hidden\",\n  whiteSpace: \"nowrap\",\n  textOverflow: \"ellipsis\",\n  maxWidth: \"100%\",\n  flexShrink: 0,\n  padding: `0 10px`\n};\nvar titleStyle = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  // TODO: Use Fresco tokens for this.\n  fontWeight: 500\n}))();\nvar messageStyle = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  whiteSpace: \"pre\",\n  maxHeight: \"calc(50% - calc(20px * var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)))\",\n  WebkitMaskImage: \"linear-gradient(to bottom, black 80%, transparent 100%)\"\n}))();\nfunction ErrorPlaceholder(props) {\n  const { error, file } = props;\n  const title = file ? `Error in ${stripSlash(file)}` : \"Error\";\n  const message = error instanceof Error ? error.message : \"\" + error;\n  return /* @__PURE__ */ jsxs(\"div\", { style: errorStyle, children: [\n    /* @__PURE__ */ jsx8(\"div\", { className: \"text\", style: titleStyle, children: title }),\n    message && /* @__PURE__ */ jsx8(\"div\", { className: \"text\", style: messageStyle, children: message })\n  ] });\n}\nfunction stripSlash(title) {\n  if (title.startsWith(\"./\")) {\n    return title.replace(\"./\", \"\");\n  }\n  return title;\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport { jsx as jsx9, jsxs as jsxs2 } from \"react/jsx-runtime\";\nfunction getScaleData(deviceOptions, containerSize) {\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const scaleX = containerSize.width / componentWidth;\n  const scaleY = containerSize.height / componentHeight;\n  const scale2 = Math.min(scaleX, scaleY, 1);\n  let screenScalePixelFix = 1;\n  if (scale2 < 1) {\n    const actualScreenWidth = deviceOptions.screenWidth * scale2;\n    const desiredScreenWidth = actualScreenWidth + 1;\n    const screenScaleX = desiredScreenWidth / actualScreenWidth;\n    const actualScreenHeight = deviceOptions.screenHeight * scale2;\n    const desiredScreenHeight = actualScreenHeight + 1;\n    const screenScaleY = desiredScreenHeight / actualScreenHeight;\n    const screenScale = Math.max(screenScaleX, screenScaleY);\n    screenScalePixelFix = screenScale;\n  }\n  return {\n    scale: scale2,\n    screenScalePixelFix,\n    scaledComponentWidth: componentWidth * scale2,\n    scaledComponentHeight: componentHeight * scale2,\n    scaledDeviceWidth: deviceOptions.deviceWidth * scale2,\n    scaledDeviceHeight: deviceOptions.deviceHeight * scale2\n  };\n}\nfunction getColorsFromTheme(theme, type) {\n  if (type === \"none\") return {};\n  if (!theme) return {};\n  const isDarkTheme = theme === \"dark\";\n  return {\n    shadowColor: isDarkTheme ? \"rgba(0, 0, 0, 0.55)\" : \"rgba(0, 0, 0, 0.15)\",\n    bezelColor: isDarkTheme ? \"#222\" : \"#fff\",\n    bezelShadeColor: isDarkTheme ? \"#000\" : \"rgba(0, 0, 0, 0.2)\",\n    screenColor: isDarkTheme ? \"#333\" : \"#eee\"\n  };\n}\nvar ErrorBoundary = class extends Component2 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", {});\n  }\n  componentDidCatch(error, info) {\n    var _a;\n    let stack = (_a = info.componentStack) == null ? void 0 : _a.split(\"\\n\").filter((line) => line.length !== 0);\n    let currentIndex = 0;\n    if (stack) {\n      for (const line of stack) {\n        if (line.startsWith(`    in ${this.constructor.name}`)) {\n          break;\n        }\n        currentIndex++;\n      }\n      stack = stack.slice(0, currentIndex);\n    }\n    this.setState({\n      lastError: {\n        error,\n        componentStack: stack\n      }\n    });\n  }\n  componentDidUpdate(_, prevState) {\n    if (this.state.lastError === void 0) return;\n    if (prevState.lastError === this.state.lastError) this.setState({ lastError: void 0 });\n  }\n  render() {\n    if (this.state.lastError) {\n      return /* @__PURE__ */ jsx9(ErrorPlaceholder, { error: this.state.lastError.error.message, file: \"Prototype\" });\n    }\n    return this.props.children;\n  }\n};\nfunction Device({\n  canResize = false,\n  children,\n  ResizeObserver: ResizeObserver2 = safeWindow.ResizeObserver,\n  ...options\n}) {\n  var _a, _b;\n  const optionsRef = React13.useRef(void 0);\n  if (optionsRef.current === void 0) optionsRef.current = options;\n  const deviceAppearance = (_a = options.deviceOptions) == null ? void 0 : _a.appearance.type;\n  const scaleDataRef = React13.useRef();\n  const containerRef = React13.useRef(null);\n  const deviceRef = React13.useRef(null);\n  const screenRef = React13.useRef(null);\n  const updateImperativeScale = React13.useCallback(({ scale: scale2, screenScalePixelFix }) => {\n    if (!scaleDataRef.current || !deviceRef.current || !screenRef.current) return;\n    deviceRef.current.style.transform = `scale(${scale2})`;\n    screenRef.current.style.transform = `scale(${screenScalePixelFix})`;\n  }, []);\n  if (scaleDataRef.current === void 0 && options.deviceOptions && options.scaleTo && options.scaleTo !== \"dynamic\") {\n    const scale2 = scaleDataRef.current = getScaleData(options.deviceOptions, options.scaleTo);\n    updateImperativeScale(scale2);\n  }\n  const invertScale = React13.useCallback((point) => {\n    if (!scaleDataRef.current) return point;\n    const { scale: scale2 = 1 } = scaleDataRef.current;\n    return { x: point.x / scale2, y: point.y / scale2 };\n  }, []);\n  const updateScale = React13.useCallback(() => {\n    const { deviceOptions, scaleTo } = optionsRef.current ?? {};\n    if (!deviceOptions || !scaleTo || scaleTo !== \"dynamic\" || !containerRef.current) return;\n    if (containerRef.current.offsetWidth === 0 || containerRef.current.offsetHeight === 0) return;\n    const scaleData = scaleDataRef.current = getScaleData(deviceOptions, {\n      width: containerRef.current.offsetWidth,\n      height: containerRef.current.offsetHeight\n    });\n    updateImperativeScale(scaleData);\n  }, [updateImperativeScale]);\n  const observer = useConstant(() => {\n    if (!ResizeObserver2) {\n      return;\n    }\n    return new ResizeObserver2(() => updateScale());\n  });\n  React13.useLayoutEffect(() => {\n    optionsRef.current = {\n      deviceOptions: options.deviceOptions,\n      overrideTheme: options.overrideTheme,\n      scaleTo: options.scaleTo\n    };\n  }, [options.deviceOptions, options.overrideTheme, options.scaleTo]);\n  React13.useLayoutEffect(() => {\n    updateScale();\n  }, [updateScale]);\n  React13.useEffect(() => {\n    if (!observer || !containerRef.current) return;\n    observer.observe(containerRef.current);\n    return () => observer.disconnect();\n  }, []);\n  const { containerStyle, handStyle, deviceStyle, deviceImageStyle, screenStyle } = getDeviceStyle(options);\n  const resizeStyles = canResize ? {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  } : {};\n  const screenBackground = ((_b = options.deviceOptions) == null ? void 0 : _b.transparentBackground) ? \"transparent\" : \"white\";\n  return /* @__PURE__ */ jsx9(\"div\", { style: { ...containerStyle, ...resizeStyles }, ref: containerRef, children: /* @__PURE__ */ jsxs2(\"div\", { style: { ...deviceStyle }, ref: deviceRef, children: [\n    handStyle && /* @__PURE__ */ jsx9(\"div\", { style: handStyle }),\n    deviceAppearance === \"external-clay\" && deviceImageStyle && /* @__PURE__ */ jsx9(\"div\", { style: deviceImageStyle }),\n    /* @__PURE__ */ jsx9(\n      \"div\",\n      {\n        style: {\n          ...screenStyle,\n          pointerEvents: void 0,\n          backgroundColor: children ? screenBackground : screenStyle.backgroundColor\n        },\n        ref: screenRef,\n        children: /* @__PURE__ */ jsx9(MotionConfig, { transformPagePoint: invertScale, children: /* @__PURE__ */ jsx9(ErrorBoundary, { children }) })\n      }\n    ),\n    deviceAppearance === \"realistic\" && deviceImageStyle && /* @__PURE__ */ jsx9(\"div\", { style: deviceImageStyle })\n  ] }) });\n}\nvar DEVICE_PADDING = 45;\nvar HAND_IMG_WIDTH = 2400;\nvar HAND_IMG_HEIGHT = 3740;\nvar HAND_IMG_GAP_WIDTH = 859;\nvar HAND_IMG_GAP_LEFT = 772;\nvar HAND_IMG_GAP_BOTTOM = /* @__PURE__ */ (() => 992 - 5)();\nvar noDeviceSize = { componentWidth: 500, componentHeight: 500 };\nfunction getComponentSize(options) {\n  if (!options) return noDeviceSize;\n  const { deviceWidth, deviceHeight, noPadding } = options;\n  const padding = noPadding ? 0 : DEVICE_PADDING * 2;\n  return {\n    componentWidth: deviceWidth + padding,\n    componentHeight: deviceHeight + padding\n  };\n}\nfunction getDeviceStyle({ scaleTo, deviceOptions, overrideTheme } = {}) {\n  const noDeviceStyle = { containerStyle: {}, deviceStyle: {}, screenStyle: {} };\n  if (!deviceOptions) return noDeviceStyle;\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const overriddenColors = getColorsFromTheme(overrideTheme, deviceOptions.appearance.type);\n  const {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenMaxHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius,\n    screenMaskImage,\n    screenColor,\n    shadow,\n    background,\n    hand\n  } = deviceOptions;\n  const boxShadows = [];\n  if (appearance.type === \"clay\" && shadow) {\n    boxShadows.push(shadow);\n  }\n  let bezelStyle = void 0;\n  if (appearance.type === \"clay\") {\n    bezelStyle = {\n      borderRadius: appearance.bezelRadius,\n      backgroundColor: overriddenColors.bezelColor || appearance.bezelColor\n    };\n    if (overriddenColors.bezelShadeColor || appearance.bezelShadeColor) {\n      boxShadows.push(`inset 0 0 15px ${overriddenColors.bezelShadeColor || appearance.bezelShadeColor}`);\n    }\n  }\n  const handOffsetLeft = (hand == null ? void 0 : hand.offsetLeft) ?? 0;\n  const handOffsetRight = (hand == null ? void 0 : hand.offsetRight) ?? 0;\n  const handOffsetBottom = (hand == null ? void 0 : hand.offsetBottom) ?? 0;\n  const handScale = (deviceWidth - handOffsetLeft - handOffsetRight) / HAND_IMG_GAP_WIDTH;\n  return {\n    containerStyle: {\n      width: scaleTo ? \"100%\" : componentWidth,\n      height: scaleTo ? \"100%\" : componentHeight,\n      flex: \"1 1 0\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      background\n    },\n    handStyle: hand && {\n      width: HAND_IMG_WIDTH * handScale,\n      height: HAND_IMG_HEIGHT * handScale,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      backgroundImage: `url(\"${hand.imageUrl}\")`,\n      backgroundSize: \"contain\",\n      backgroundRepeat: \"no-repeat\",\n      left: -HAND_IMG_GAP_LEFT * handScale + handOffsetLeft,\n      bottom: -HAND_IMG_GAP_BOTTOM * handScale + handOffsetBottom\n    },\n    deviceStyle: {\n      width: deviceWidth,\n      height: deviceHeight,\n      flexShrink: 0,\n      position: \"absolute\",\n      boxShadow: boxShadows.join(\",\"),\n      ...bezelStyle\n    },\n    deviceImageStyle: appearance.type === \"realistic\" || appearance.type === \"external-clay\" ? {\n      width: appearance.imageWidth,\n      height: appearance.imageHeight,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      overflow: \"hidden\",\n      backgroundImage: `url(\"${appearance.imageUrl}\")`,\n      backgroundPosition: \"top left\",\n      backgroundRepeat: \"no-repeat\",\n      backgroundSize: `${appearance.imageWidth}px ${appearance.imageHeight}px`,\n      // Rotate 90 degrees counter-clockwise around (0,0), then move the\n      // result down into the viewport (rightmost transform is applied first).\n      transformOrigin: \"top left\",\n      transform: appearance.rotateImage ? `translateY(${appearance.imageWidth}px) rotate(-90deg)` : void 0\n    } : void 0,\n    screenStyle: {\n      width: screenWidth,\n      height: screenHeight,\n      maxHeight: screenMaxHeight,\n      position: \"absolute\",\n      top: screenOffsetTop,\n      left: screenOffsetLeft,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      borderRadius: screenRadius,\n      backgroundColor: overriddenColors.screenColor || screenColor,\n      ...screenMaskImage && {\n        maskImage: screenMaskImage,\n        WebkitMaskImage: screenMaskImage,\n        maskSize: \"contain\",\n        WebkitMaskSize: \"contain\"\n      }\n    }\n  };\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport React17 from \"react\";\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport React14 from \"react\";\n\n// ../../library/src/render/utils/isFiniteNumber.ts\nfunction isFiniteNumber(value) {\n  return Number.isFinite(value);\n}\nfunction finiteNumber(value) {\n  return isFiniteNumber(value) ? value : void 0;\n}\n\n// ../../library/src/utils/type-guards.ts\nfunction isEmpty(obj) {\n  return !obj || !Object.keys(obj).length && obj.constructor === Object;\n}\nfunction isReactElement(test) {\n  return typeof test !== \"string\" && typeof test !== \"number\";\n}\nfunction isReactChild(test) {\n  return test !== null && typeof test !== \"undefined\" && typeof test !== \"boolean\" && !isEmpty(test);\n}\n\n// ../../library/src/render/utils/degreesToRadians.ts\nfunction degreesToRadians(degrees2) {\n  return degrees2 * (Math.PI / 180);\n}\n\n// ../../library/src/render/types/Line.ts\nvar Line = /* @__PURE__ */ (() => {\n  function Line2(a, b) {\n    return { a, b };\n  }\n  Line2.offset = (line, offset) => {\n    const angle = Point.angleFromX(line.a, line.b);\n    const rad = degreesToRadians(angle);\n    const x = offset * Math.sin(rad);\n    const y = offset * Math.cos(rad);\n    return Line2(\n      { x: line.a.x + x, y: line.a.y - y },\n      {\n        x: line.b.x + x,\n        y: line.b.y - y\n      }\n    );\n  };\n  Line2.intersection = (lineA, lineB, segments) => {\n    const x1 = lineA.a.x;\n    const y1 = lineA.a.y;\n    const x2 = lineA.b.x;\n    const y2 = lineA.b.y;\n    const x3 = lineB.a.x;\n    const y3 = lineB.a.y;\n    const x4 = lineB.b.x;\n    const y4 = lineB.b.y;\n    const a1 = (x4 - x3) * (y3 - y1) - (y4 - y3) * (x3 - x1);\n    const b1 = (x4 - x3) * (y2 - y1) - (y4 - y3) * (x2 - x1);\n    const c1 = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);\n    if (a1 === 0 && b1 === 0) return null;\n    if (b1 === 0) return null;\n    const alpha2 = a1 / b1;\n    const beta = c1 / b1;\n    if (segments && (alpha2 < 0 || alpha2 > 1 || beta < 0 || beta > 1)) return null;\n    return {\n      x: x1 + alpha2 * (x2 - x1),\n      y: y1 + alpha2 * (y2 - y1)\n    };\n  };\n  Line2.intersectionAngle = (lineA, lineB) => {\n    const deltaAX = lineA.b.x - lineA.a.x;\n    const deltaAY = lineA.b.y - lineA.a.y;\n    const deltaBX = lineB.b.x - lineB.a.x;\n    const deltaBY = lineB.b.y - lineB.a.y;\n    const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);\n    return angle * (180 / Math.PI);\n  };\n  Line2.isOrthogonal = (line) => {\n    return line.a.x === line.b.x || line.a.y === line.b.y;\n  };\n  Line2.perpendicular = (line, pointOnLine) => {\n    const deltaX = line.a.x - line.b.x;\n    const deltaY = line.a.y - line.b.y;\n    const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);\n    return Line2(pointB, pointOnLine);\n  };\n  Line2.projectPoint = (line, point) => {\n    const perp = Line2.perpendicular(line, point);\n    return Line2.intersection(line, perp);\n  };\n  Line2.pointAtPercentDistance = (line, distance2) => {\n    const hypotenuse = Line2.distance(line);\n    const r = distance2 * hypotenuse / hypotenuse;\n    return {\n      x: r * line.b.x + (1 - r) * line.a.x,\n      y: r * line.b.y + (1 - r) * line.a.y\n    };\n  };\n  Line2.distance = (line) => {\n    return Point.distance(line.a, line.b);\n  };\n  return Line2;\n})();\n\n// ../../library/src/render/types/Rect.ts\nvar Rect = {\n  /**\n   *\n   * @param rect -\n   * @param other -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   */\n  equals: function(rect, other) {\n    if (rect === other) return true;\n    if (!rect || !other) return false;\n    return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;\n  },\n  /** @internal */\n  from: (rect) => {\n    return {\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    };\n  },\n  /** @internal */\n  atOrigin: (size) => {\n    return {\n      x: 0,\n      y: 0,\n      width: size.width,\n      height: size.height\n    };\n  },\n  /** @internal */\n  fromTwoPoints: (a, b) => {\n    return {\n      x: Math.min(a.x, b.x),\n      y: Math.min(a.y, b.y),\n      width: Math.abs(a.x - b.x),\n      height: Math.abs(a.y - b.y)\n    };\n  },\n  /** @internal */\n  fromRect: (rect) => {\n    return {\n      x: rect.left,\n      y: rect.top,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n  },\n  /** @internal */\n  multiply: (rect, n) => {\n    return {\n      x: rect.x * n,\n      y: rect.y * n,\n      width: rect.width * n,\n      height: rect.height * n\n    };\n  },\n  /** @internal */\n  divide: (rect, n) => {\n    return Rect.multiply(rect, 1 / n);\n  },\n  /** @internal */\n  offset: (rect, delta) => {\n    const xOffset = typeof delta.x === \"number\" ? delta.x : 0;\n    const yOffset = typeof delta.y === \"number\" ? delta.y : 0;\n    return {\n      ...rect,\n      x: rect.x + xOffset,\n      y: rect.y + yOffset\n    };\n  },\n  /** @internal */\n  inflate: (rect, value) => {\n    if (value === 0) return rect;\n    const doubleValue = 2 * value;\n    return {\n      x: rect.x - value,\n      y: rect.y - value,\n      width: rect.width + doubleValue,\n      height: rect.height + doubleValue\n    };\n  },\n  /** @internal */\n  pixelAligned: (rect) => {\n    const x = Math.round(rect.x);\n    const y = Math.round(rect.y);\n    const rectMaxX = Math.round(rect.x + rect.width);\n    const rectMaxY = Math.round(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  halfPixelAligned: (rect) => {\n    const x = Math.round(rect.x * 2) / 2;\n    const y = Math.round(rect.y * 2) / 2;\n    const rectMaxX = Math.round((rect.x + rect.width) * 2) / 2;\n    const rectMaxY = Math.round((rect.y + rect.height) * 2) / 2;\n    const width = Math.max(rectMaxX - x, 1);\n    const height = Math.max(rectMaxY - y, 1);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  round: (rect, decimals = 0) => {\n    const x = roundedNumber(rect.x, decimals);\n    const y = roundedNumber(rect.y, decimals);\n    const width = roundedNumber(rect.width, decimals);\n    const height = roundedNumber(rect.height, decimals);\n    return { x, y, width, height };\n  },\n  /** @internal */\n  roundToOutside: (rect) => {\n    const x = Math.floor(rect.x);\n    const y = Math.floor(rect.y);\n    const rectMaxX = Math.ceil(rect.x + rect.width);\n    const rectMaxY = Math.ceil(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minX: (rect) => {\n    return rect.x;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxX: (rect) => {\n    return rect.x + rect.width;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minY: (rect) => {\n    return rect.y;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxY: (rect) => {\n    return rect.y + rect.height;\n  },\n  /** @internal */\n  positions: (rect) => {\n    return {\n      minX: rect.x,\n      midX: rect.x + rect.width / 2,\n      maxX: Rect.maxX(rect),\n      minY: rect.y,\n      midY: rect.y + rect.height / 2,\n      maxY: Rect.maxY(rect)\n    };\n  },\n  /**\n   *\n   * @param rect -\n   * @internal\n   */\n  center: (rect) => {\n    return {\n      x: rect.x + rect.width / 2,\n      y: rect.y + rect.height / 2\n    };\n  },\n  /** @internal */\n  boundingRectFromPoints: (points) => {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i];\n      minX = Math.min(minX, point.x);\n      maxX = Math.max(maxX, point.x);\n      minY = Math.min(minY, point.y);\n      maxY = Math.max(maxY, point.y);\n    }\n    return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n  },\n  /**\n   * Returns the precise box defined by the given points, starting from the top-left point. This produces the same\n   * Rect as Rect.boundingRectFromPoints *only* when the rect described by the points is not rotated.\n   *\n   * @internal\n   */\n  fromPoints: (ps) => {\n    const [tl, tr, _, bl] = ps;\n    const { x, y } = tl;\n    const width = Point.distance(tl, tr);\n    const height = Point.distance(tl, bl);\n    return { x, y, width, height };\n  },\n  /**\n   * Returns a rect containing all input rects\n   * @param rect - a list of rectangles\n   * @returns A rectangle that fits exactly around the input rects\n   * @internal\n   */\n  merge: (...rect) => {\n    const min = {\n      x: Math.min(...rect.map(Rect.minX)),\n      y: Math.min(...rect.map(Rect.minY))\n    };\n    const max = {\n      x: Math.max(...rect.map(Rect.maxX)),\n      y: Math.max(...rect.map(Rect.maxY))\n    };\n    return Rect.fromTwoPoints(min, max);\n  },\n  /** @internal */\n  intersection: (rect1, rect2) => {\n    const x = Math.max(rect1.x, rect2.x);\n    const x2 = Math.min(rect1.x + rect1.width, rect2.x + rect2.width);\n    const y = Math.max(rect1.y, rect2.y);\n    const y2 = Math.min(rect1.y + rect1.height, rect2.y + rect2.height);\n    return { x, y, width: x2 - x, height: y2 - y };\n  },\n  /**\n   * Returns all the corner points for a rect\n   * @param rect -\n   * @internal\n   */\n  points: (rect) => {\n    return [\n      { x: Rect.minX(rect), y: Rect.minY(rect) },\n      { x: Rect.minX(rect), y: Rect.maxY(rect) },\n      { x: Rect.maxX(rect), y: Rect.minY(rect) },\n      { x: Rect.maxX(rect), y: Rect.maxY(rect) }\n    ];\n  },\n  /**\n   * Returns all the corner points for a rect at the origin.\n   * @internal\n   */\n  pointsAtOrigin: (rect) => {\n    return [\n      { x: 0, y: 0 },\n      { x: rect.width, y: 0 },\n      { x: rect.width, y: rect.height },\n      { x: 0, y: rect.height }\n    ];\n  },\n  /** Takes a rect and transforms it by a matrix, resulting in the bounding rectangle of the\n   * rotated and/or translated original.\n   * @param rect - rectangle to transform\n   * @param matrix - matrix to transform by\n   * @returns The bounding rectangle of the rotated and/or translated rect.\n   */\n  transform: (rect, matrix) => {\n    const { x: x1, y: y1 } = matrix.transformPoint({ x: rect.x, y: rect.y });\n    const { x: x2, y: y2 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y });\n    const { x: x3, y: y3 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y + rect.height });\n    const { x: x4, y: y4 } = matrix.transformPoint({ x: rect.x, y: rect.y + rect.height });\n    const x = Math.min(x1, x2, x3, x4);\n    const width = Math.max(x1, x2, x3, x4) - x;\n    const y = Math.min(y1, y2, y3, y4);\n    const height = Math.max(y1, y2, y3, y4) - y;\n    return { x, y, width, height };\n  },\n  /**\n   * Checks if a rectangle contains a point\n   * @param rect - The rectangle to check\n   * @param point - The point to check\n   * @returns true if the provided rectangle contains the provided point\n   * @internal\n   */\n  containsPoint: (rect, point) => {\n    if (point.x < Rect.minX(rect)) {\n      return false;\n    }\n    if (point.x > Rect.maxX(rect)) {\n      return false;\n    }\n    if (point.y < Rect.minY(rect)) {\n      return false;\n    }\n    if (point.y > Rect.maxY(rect)) {\n      return false;\n    }\n    if (Number.isNaN(rect.x)) {\n      return false;\n    }\n    if (Number.isNaN(rect.y)) {\n      return false;\n    }\n    return true;\n  },\n  /**\n   * Returns wether a rect contains another rect entirely\n   * @param rectA -\n   * @param rectB -\n   * @returns true if rectA contains rectB\n   */\n  containsRect: (rectA, rectB) => {\n    for (const point of Rect.points(rectB)) {\n      if (!Rect.containsPoint(rectA, point)) {\n        return false;\n      }\n    }\n    return true;\n  },\n  /** @internal */\n  toCSS: (rect) => {\n    return {\n      display: \"block\",\n      transform: `translate(${rect.x}px, ${rect.y}px)`,\n      width: `${rect.width}px`,\n      height: `${rect.height}px`\n    };\n  },\n  /** @internal */\n  inset: (rect, n) => {\n    return {\n      x: rect.x + n,\n      y: rect.y + n,\n      width: Math.max(0, rect.width - 2 * n),\n      height: Math.max(0, rect.height - 2 * n)\n    };\n  },\n  /** @internal */\n  intersects: (rectA, rectB) => {\n    return !(rectB.x >= Rect.maxX(rectA) || Rect.maxX(rectB) <= rectA.x || rectB.y >= Rect.maxY(rectA) || Rect.maxY(rectB) <= rectA.y);\n  },\n  /** @internal */\n  overlapHorizontally: (rectA, rectB) => {\n    const aMax = Rect.maxX(rectA);\n    const bMax = Rect.maxX(rectB);\n    return aMax > rectB.x && bMax > rectA.x;\n  },\n  /** @internal */\n  overlapVertically: (rectA, rectB) => {\n    const aMax = Rect.maxY(rectA);\n    const bMax = Rect.maxY(rectB);\n    return aMax > rectB.y && bMax > rectA.y;\n  },\n  /** @internal */\n  doesNotIntersect: (rect, rects) => {\n    return rects.find((comparingRect) => {\n      return Rect.intersects(comparingRect, rect);\n    }) === void 0;\n  },\n  /**\n   *\n   * @param rectA -\n   * @param rectB -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   * @deprecated: please use Rect.equals instead\n   */\n  isEqual: (rectA, rectB) => {\n    return Rect.equals(rectA, rectB);\n  },\n  // @TODO: duplicate of points()\n  /**\n   * @returns [tl, tr, br, bl]\n   * @internal\n   */\n  cornerPoints: (rect) => {\n    const rectMinX = rect.x;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMaxY = rect.y + rect.height;\n    const corner1 = { x: rectMinX, y: rectMinY };\n    const corner2 = { x: rectMaxX, y: rectMinY };\n    const corner3 = { x: rectMaxX, y: rectMaxY };\n    const corner4 = { x: rectMinX, y: rectMaxY };\n    return [corner1, corner2, corner3, corner4];\n  },\n  /** @internal */\n  midPoints: (rect) => {\n    const rectMinX = rect.x;\n    const rectMidX = rect.x + rect.width / 2;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMidY = rect.y + rect.height / 2;\n    const rectMaxY = rect.y + rect.height;\n    const top = { x: rectMidX, y: rectMinY };\n    const right = { x: rectMaxX, y: rectMidY };\n    const bottom = { x: rectMidX, y: rectMaxY };\n    const left = { x: rectMinX, y: rectMidY };\n    return [top, right, bottom, left];\n  },\n  /** @internal */\n  pointDistance: (rect, point) => {\n    let x = 0;\n    let y = 0;\n    if (point.x < rect.x) {\n      x = rect.x - point.x;\n    } else if (point.x > Rect.maxX(rect)) {\n      x = point.x - Rect.maxX(rect);\n    }\n    if (point.y < rect.y) {\n      y = rect.y - point.y;\n    } else if (point.y > Rect.maxY(rect)) {\n      y = point.y - Rect.maxY(rect);\n    }\n    return Point.distance({ x, y }, { x: 0, y: 0 });\n  },\n  delta: (a, b) => {\n    const pointA = { x: Rect.minX(a), y: Rect.minY(a) };\n    const pointB = { x: Rect.minX(b), y: Rect.minY(b) };\n    return {\n      x: pointA.x - pointB.x,\n      y: pointA.y - pointB.y\n    };\n  },\n  /** @internal */\n  withMinSize: (rect, minSize) => {\n    const { width: minWidth, height: minHeight } = minSize;\n    const diffX = rect.width - minWidth;\n    const diffY = rect.height - minHeight;\n    return {\n      width: Math.max(rect.width, minWidth),\n      height: Math.max(rect.height, minHeight),\n      x: rect.width < minWidth ? rect.x + diffX / 2 : rect.x,\n      y: rect.height < minHeight ? rect.y + diffY / 2 : rect.y\n    };\n  },\n  /**\n   * Return false if any point is not inside or on the provided rect.\n   * @internal\n   */\n  anyPointsOutsideRect: (rect, ps) => {\n    const rectMinX = Rect.minX(rect);\n    const rectMinY = Rect.minY(rect);\n    const rectMaxX = Rect.maxX(rect);\n    const rectMaxY = Rect.maxY(rect);\n    for (const point of ps) {\n      if (point.x < rectMinX || point.x > rectMaxX) {\n        return true;\n      }\n      if (point.y < rectMinY || point.y > rectMaxY) {\n        return true;\n      }\n    }\n    return false;\n  },\n  /** @internal */\n  edges: (rect) => {\n    const [tl, tr, br, bl] = Rect.cornerPoints(rect);\n    return [Line(tl, tr), Line(tr, br), Line(br, bl), Line(bl, tl)];\n  },\n  /**\n   * Return a new rect projected into a new position based on the anchor rect and the given direction/alignment.\n   * @internal\n   */\n  rebaseRectOnto: (rect, anchorRect, direction, alignment) => {\n    const rebasedRect = { ...rect };\n    switch (direction) {\n      case \"bottom\":\n      case \"top\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.x = anchorRect.x;\n            break;\n          case \"center\":\n            rebasedRect.x = anchorRect.x + anchorRect.width / 2 - rect.width / 2;\n            break;\n          case \"end\":\n            rebasedRect.x = anchorRect.x + anchorRect.width - rect.width;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"left\":\n        rebasedRect.x = anchorRect.x - rect.width;\n        break;\n      case \"right\":\n        rebasedRect.x = anchorRect.x + anchorRect.width;\n        break;\n      default:\n        assertNever(direction);\n    }\n    switch (direction) {\n      case \"left\":\n      case \"right\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.y = anchorRect.y;\n            break;\n          case \"center\":\n            rebasedRect.y = anchorRect.y + anchorRect.height / 2 - rect.height / 2;\n            break;\n          case \"end\":\n            rebasedRect.y = anchorRect.y + anchorRect.height - rect.height;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"top\":\n        rebasedRect.y = anchorRect.y - rect.height;\n        break;\n      case \"bottom\":\n        rebasedRect.y = anchorRect.y + anchorRect.height;\n        break;\n      default:\n        assertNever(direction);\n    }\n    return rebasedRect;\n  }\n};\n\n// ../../library/src/render/types/Constraints.ts\nvar constraintDefaults = {\n  left: null,\n  right: null,\n  top: null,\n  bottom: null,\n  centerX: \"50%\",\n  centerY: \"50%\",\n  aspectRatio: null,\n  parentSize: null,\n  width: 100,\n  height: 100\n};\nvar DimensionType = /* @__PURE__ */ ((DimensionType2) => {\n  DimensionType2[DimensionType2[\"FixedNumber\"] = 0] = \"FixedNumber\";\n  DimensionType2[DimensionType2[\"Percentage\"] = 1] = \"Percentage\";\n  DimensionType2[DimensionType2[\"Auto\"] = 2] = \"Auto\";\n  DimensionType2[DimensionType2[\"FractionOfFreeSpace\"] = 3] = \"FractionOfFreeSpace\";\n  DimensionType2[DimensionType2[\"Viewport\"] = 4] = \"Viewport\";\n  DimensionType2[DimensionType2[\"FitImage\"] = 5] = \"FitImage\";\n  return DimensionType2;\n})(DimensionType || {});\nfunction isAutoDimensionType(dimensionType) {\n  if (isUndefined(dimensionType)) return false;\n  return dimensionType === 2 /* Auto */ || dimensionType === 5 /* FitImage */;\n}\nfunction isConstraintSupportingChild(child) {\n  if (!isReactChild(child) || !isReactElement(child)) {\n    return false;\n  }\n  return true;\n}\nvar ConstraintMask = {\n  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.\n  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.\n  quickfix: (constraints) => {\n    if (isAutoDimensionType(constraints.widthType) || isAutoDimensionType(constraints.heightType)) {\n      constraints.aspectRatio = null;\n    }\n    if (isFiniteNumber(constraints.aspectRatio)) {\n      if (constraints.left && constraints.right) {\n        constraints.widthType = 0 /* FixedNumber */;\n      }\n      if (constraints.top && constraints.bottom) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n      if (constraints.left && constraints.right && constraints.top && constraints.bottom) {\n        constraints.bottom = false;\n      }\n      if (constraints.widthType !== 0 /* FixedNumber */ && constraints.heightType !== 0 /* FixedNumber */) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n    }\n    if (constraints.left && constraints.right) {\n      if (constraints.fixedSize || isAutoDimensionType(constraints.widthType) || isFiniteNumber(constraints.maxWidth)) {\n        constraints.right = false;\n      }\n      constraints.widthType = 0 /* FixedNumber */;\n    }\n    if (constraints.top && constraints.bottom) {\n      if (constraints.fixedSize || isAutoDimensionType(constraints.heightType) || isFiniteNumber(constraints.maxHeight)) {\n        constraints.bottom = false;\n      }\n      constraints.heightType = 0 /* FixedNumber */;\n    }\n    return constraints;\n  }\n};\nfunction valueToDimensionType(value) {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    if (trimmedValue === \"auto\") return 2 /* Auto */;\n    if (trimmedValue.endsWith(\"fr\")) return 3 /* FractionOfFreeSpace */;\n    if (trimmedValue.endsWith(\"%\")) return 1 /* Percentage */;\n    if (trimmedValue.endsWith(\"vw\") || trimmedValue.endsWith(\"vh\")) return 4 /* Viewport */;\n  }\n  return 0 /* FixedNumber */;\n}\nvar ConstraintValues = {\n  // Returns concrete current values given some ConstraintProperties.\n  fromProperties: (props) => {\n    const { left, right, top, bottom, width, height, centerX, centerY, aspectRatio, autoSize } = props;\n    const constraints = ConstraintMask.quickfix({\n      left: isFiniteNumber(left) || isAnimatable(left),\n      right: isFiniteNumber(right) || isAnimatable(right),\n      top: isFiniteNumber(top) || isAnimatable(top),\n      bottom: isFiniteNumber(bottom) || isAnimatable(bottom),\n      widthType: valueToDimensionType(width),\n      heightType: valueToDimensionType(height),\n      aspectRatio: aspectRatio || null,\n      fixedSize: autoSize === true\n    });\n    let widthValue = null;\n    let heightValue = null;\n    let widthType = 0 /* FixedNumber */;\n    let heightType = 0 /* FixedNumber */;\n    if (constraints.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n      const parsedWidth = parseFloat(width);\n      if (width.endsWith(\"fr\")) {\n        widthType = 3 /* FractionOfFreeSpace */;\n        widthValue = parsedWidth;\n      } else if (width === \"auto\") {\n        widthType = 2 /* Auto */;\n      } else {\n        widthType = 1 /* Percentage */;\n        widthValue = parsedWidth / 100;\n      }\n    } else if (width !== void 0 && typeof width !== \"string\") {\n      widthValue = Animatable.getNumber(width);\n    }\n    if (constraints.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n      const parsedHeight = parseFloat(height);\n      if (height.endsWith(\"fr\")) {\n        heightType = 3 /* FractionOfFreeSpace */;\n        heightValue = parsedHeight;\n      } else if (height === \"auto\") {\n        heightType = 2 /* Auto */;\n      } else {\n        heightType = 1 /* Percentage */;\n        heightValue = parseFloat(height) / 100;\n      }\n    } else if (height !== void 0 && typeof height !== \"string\") {\n      heightValue = Animatable.getNumber(height);\n    }\n    let centerAnchorX = 0.5;\n    let centerAnchorY = 0.5;\n    if (centerX) {\n      centerAnchorX = parseFloat(centerX) / 100;\n    }\n    if (centerY) {\n      centerAnchorY = parseFloat(centerY) / 100;\n    }\n    return {\n      left: constraints.left ? Animatable.getNumber(left) : null,\n      right: constraints.right ? Animatable.getNumber(right) : null,\n      top: constraints.top ? Animatable.getNumber(top) : null,\n      bottom: constraints.bottom ? Animatable.getNumber(bottom) : null,\n      widthType,\n      heightType,\n      width: widthValue,\n      height: heightValue,\n      aspectRatio: constraints.aspectRatio || null,\n      centerAnchorX,\n      centerAnchorY\n    };\n  },\n  toSize: (values, parentSizeInfo, autoSize, freeSpace) => {\n    let width = null;\n    let height = null;\n    const parentWidth = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.width) : null;\n    const parentHeight = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.height) : null;\n    const hOpposingPinsOffset = pinnedOffset(values.left, values.right);\n    if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {\n      width = parentWidth - hOpposingPinsOffset;\n    } else if (autoSize && isAutoDimensionType(values.widthType)) {\n      width = autoSize.width;\n    } else if (isFiniteNumber(values.width)) {\n      switch (values.widthType) {\n        case 0 /* FixedNumber */:\n          width = values.width;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          width = freeSpace ? freeSpace.freeSpaceInParent.width / freeSpace.freeSpaceUnitDivisor.width * values.width : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentWidth) {\n            width = parentWidth * values.width;\n          }\n          break;\n        case 2 /* Auto */:\n        case 5 /* FitImage */:\n          break;\n        default:\n          assertNever(values.widthType);\n      }\n    }\n    const vOpposingPinsOffset = pinnedOffset(values.top, values.bottom);\n    if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {\n      height = parentHeight - vOpposingPinsOffset;\n    } else if (autoSize && isAutoDimensionType(values.heightType)) {\n      height = autoSize.height;\n    } else if (isFiniteNumber(values.height)) {\n      switch (values.heightType) {\n        case 0 /* FixedNumber */:\n          height = values.height;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          height = freeSpace ? freeSpace.freeSpaceInParent.height / freeSpace.freeSpaceUnitDivisor.height * values.height : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentHeight) {\n            height = parentHeight * values.height;\n          }\n          break;\n        case 2 /* Auto */:\n        case 5 /* FitImage */:\n          break;\n        default:\n          assertNever(values.heightType);\n      }\n    }\n    return sizeAfterApplyingConstraintsAndAspectRatio(\n      width,\n      height,\n      values,\n      {\n        height: parentHeight ?? 0,\n        width: parentWidth ?? 0\n      },\n      parentSizeInfo == null ? void 0 : parentSizeInfo.viewport\n    );\n  },\n  // Returns a parent-relative rect given concrete ConstraintValues.\n  toRect: (values, parentSizeInfo = null, autoSize = null, pixelAlign = false, freeSpace = null) => {\n    let x = values.left || 0;\n    let y = values.top || 0;\n    const { width, height } = ConstraintValues.toSize(values, parentSizeInfo, autoSize, freeSpace);\n    const parentSizeForPositioning = (parentSizeInfo == null ? void 0 : parentSizeInfo.positioning) ?? null;\n    const positioningParentWidth = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.width) : null;\n    const positioningParentHeight = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.height) : null;\n    if (values.left !== null) {\n      x = values.left;\n    } else if (positioningParentWidth && values.right !== null) {\n      x = positioningParentWidth - values.right - width;\n    } else if (positioningParentWidth) {\n      x = values.centerAnchorX * positioningParentWidth - width / 2;\n    }\n    if (values.top !== null) {\n      y = values.top;\n    } else if (positioningParentHeight && values.bottom !== null) {\n      y = positioningParentHeight - values.bottom - height;\n    } else if (positioningParentHeight) {\n      y = values.centerAnchorY * positioningParentHeight - height / 2;\n    }\n    const f = { x, y, width, height };\n    if (pixelAlign) {\n      return Rect.pixelAligned(f);\n    }\n    return f;\n  }\n};\nvar defaultWidth = 200;\nvar defaultHeight = 200;\nfunction getConstraintValue(constraint, value, parentSize, viewport) {\n  if (typeof value === \"string\") {\n    if (value.endsWith(\"%\") && parentSize) {\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * parentSize.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * parentSize.height;\n        default:\n          break;\n      }\n    }\n    if (value.endsWith(\"vh\")) {\n      if (!viewport) return constraintValueForUncalculatedViewport(constraint);\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * viewport.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * viewport.height;\n        default:\n          break;\n      }\n    }\n    return parseFloat(value);\n  }\n  return value;\n}\nfunction constraintValueForUncalculatedViewport(constraint) {\n  switch (constraint) {\n    case \"minWidth\":\n    case \"minHeight\":\n      return Number.NEGATIVE_INFINITY;\n    case \"maxWidth\":\n    case \"maxHeight\":\n      return Number.POSITIVE_INFINITY;\n    default:\n      assertNever(constraint, \"unknown constraint key\");\n  }\n}\nfunction constrainHeight(height, values, parentSize, viewport) {\n  if (values.minHeight) {\n    height = Math.max(getConstraintValue(\"minHeight\", values.minHeight, parentSize, viewport), height);\n  }\n  if (values.maxHeight) {\n    height = Math.min(getConstraintValue(\"maxHeight\", values.maxHeight, parentSize, viewport), height);\n  }\n  return height;\n}\nfunction constrainWidth(width, values, parentSize, viewport) {\n  if (values.minWidth) {\n    width = Math.max(getConstraintValue(\"minWidth\", values.minWidth, parentSize, viewport), width);\n  }\n  if (values.maxWidth) {\n    width = Math.min(getConstraintValue(\"maxWidth\", values.maxWidth, parentSize, viewport), width);\n  }\n  return width;\n}\nfunction sizeAfterApplyingConstraintsAndAspectRatio(width, height, values, parentSize, viewport) {\n  let w = constrainWidth(isFiniteNumber(width) ? width : defaultWidth, values, parentSize, viewport);\n  let h = constrainHeight(isFiniteNumber(height) ? height : defaultHeight, values, parentSize, viewport);\n  if (isFiniteNumber(values.aspectRatio) && values.aspectRatio > 0) {\n    if (isFiniteNumber(values.left) && isFiniteNumber(values.right)) {\n      h = w / values.aspectRatio;\n    } else if (isFiniteNumber(values.top) && isFiniteNumber(values.bottom)) {\n      w = h * values.aspectRatio;\n    } else if (values.widthType !== 0 /* FixedNumber */) {\n      h = w / values.aspectRatio;\n    } else {\n      w = h * values.aspectRatio;\n    }\n  }\n  return {\n    width: w,\n    height: h\n  };\n}\nfunction pinnedOffset(start, end) {\n  if (!isFiniteNumber(start) || !isFiniteNumber(end)) return null;\n  return start + end;\n}\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport { Fragment as Fragment3, jsx as jsx10 } from \"react/jsx-runtime\";\nfunction containsInvalidStringValues(props) {\n  if (typeof props.right === \"string\") return true;\n  if (typeof props.bottom === \"string\") return true;\n  if (typeof props.left === \"string\" && (!props.center || props.center === \"y\")) {\n    return true;\n  }\n  if (typeof props.top === \"string\" && (!props.center || props.center === \"x\")) {\n    return true;\n  }\n  return false;\n}\nfunction constraintsEnabled(props) {\n  if (!props._constraints) return false;\n  if (containsInvalidStringValues(props)) return false;\n  return props._constraints.enabled;\n}\nfunction sizeFromFiniteNumberProps(props) {\n  const { size } = props;\n  let { width, height } = props;\n  if (isFiniteNumber(size)) {\n    if (width === void 0) {\n      width = size;\n    }\n    if (height === void 0) {\n      height = size;\n    }\n  }\n  if (isFiniteNumber(width) && isFiniteNumber(height)) {\n    return {\n      width,\n      height\n    };\n  }\n  return null;\n}\nfunction rectFromFiniteNumberProps(props) {\n  const size = sizeFromFiniteNumberProps(props);\n  if (size === null) {\n    return null;\n  }\n  const { left, top } = props;\n  if (isFiniteNumber(left) && isFiniteNumber(top)) {\n    return {\n      x: left,\n      y: top,\n      ...size\n    };\n  }\n  return null;\n}\nfunction calculateRect(props, parentSize, pixelAlign = true) {\n  if (props.positionFixed || props.positionAbsolute) return null;\n  const parentSizeDisabled = parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */;\n  if (!constraintsEnabled(props) || parentSizeDisabled) {\n    return rectFromFiniteNumberProps(props);\n  }\n  const constraintValues = getConstraintValues(props);\n  const enabledParentSize = deprecatedParentSize(parentSize);\n  const parentSizeInfo = enabledParentSize ? { sizing: enabledParentSize, positioning: enabledParentSize, viewport: null } : null;\n  return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, pixelAlign, null);\n}\nfunction getConstraintValues(props) {\n  const { left, right, top, bottom, center, _constraints, size } = props;\n  let { width, height } = props;\n  if (width === void 0) {\n    width = size;\n  }\n  if (height === void 0) {\n    height = size;\n  }\n  const { aspectRatio, autoSize } = _constraints;\n  const constraintMask = ConstraintMask.quickfix({\n    left: isFiniteNumber(left),\n    right: isFiniteNumber(right),\n    top: isFiniteNumber(top),\n    bottom: isFiniteNumber(bottom),\n    widthType: valueToDimensionType(width),\n    heightType: valueToDimensionType(height),\n    aspectRatio: aspectRatio || null,\n    fixedSize: autoSize === true\n  });\n  let widthValue = null;\n  let heightValue = null;\n  let widthType = 0 /* FixedNumber */;\n  let heightType = 0 /* FixedNumber */;\n  if (constraintMask.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n    const parsedWidth = parseFloat(width);\n    if (width.endsWith(\"fr\")) {\n      widthType = 3 /* FractionOfFreeSpace */;\n      widthValue = parsedWidth;\n    } else if (width === \"auto\") {\n      widthType = 2 /* Auto */;\n    } else {\n      widthType = 1 /* Percentage */;\n      widthValue = parsedWidth / 100;\n    }\n  } else if (width !== void 0 && typeof width !== \"string\") {\n    widthValue = width;\n  }\n  if (constraintMask.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n    const parsedHeight = parseFloat(height);\n    if (height.endsWith(\"fr\")) {\n      heightType = 3 /* FractionOfFreeSpace */;\n      heightValue = parsedHeight;\n    } else if (height === \"auto\") {\n      heightType = 2 /* Auto */;\n    } else {\n      heightType = 1 /* Percentage */;\n      heightValue = parseFloat(height) / 100;\n    }\n  } else if (height !== void 0 && typeof height !== \"string\") {\n    heightValue = height;\n  }\n  let centerAnchorX = 0.5;\n  let centerAnchorY = 0.5;\n  if (center === true || center === \"x\") {\n    constraintMask.left = false;\n    if (typeof left === \"string\") {\n      centerAnchorX = parseFloat(left) / 100;\n    }\n  }\n  if (center === true || center === \"y\") {\n    constraintMask.top = false;\n    if (typeof top === \"string\") {\n      centerAnchorY = parseFloat(top) / 100;\n    }\n  }\n  return {\n    // Because we check isFiniteNumber when creating the masks,\n    // We know that left, right, top and bottom are numbers if the mask is true for the corresponding value\n    // We need to cast this because typescript does not understand that\n    left: constraintMask.left ? left : null,\n    right: constraintMask.right ? right : null,\n    top: constraintMask.top ? top : null,\n    bottom: constraintMask.bottom ? bottom : null,\n    widthType,\n    heightType,\n    width: widthValue,\n    height: heightValue,\n    aspectRatio: constraintMask.aspectRatio || null,\n    centerAnchorX,\n    centerAnchorY,\n    minHeight: props.minHeight,\n    maxHeight: props.maxHeight,\n    minWidth: props.minWidth,\n    maxWidth: props.maxWidth\n  };\n}\nvar ParentSizeState = /* @__PURE__ */ ((ParentSizeState2) => {\n  ParentSizeState2[ParentSizeState2[\"Unknown\"] = 0] = \"Unknown\";\n  ParentSizeState2[ParentSizeState2[\"Disabled\"] = 1] = \"Disabled\";\n  ParentSizeState2[ParentSizeState2[\"DisabledForCurrentLevel\"] = 2] = \"DisabledForCurrentLevel\";\n  return ParentSizeState2;\n})(ParentSizeState || {});\nvar ConstraintsContext = /* @__PURE__ */ React14.createContext({\n  parentSize: 0 /* Unknown */\n});\nfunction deprecatedParentSize(parentSize) {\n  if (parentSize === 0 /* Unknown */ || parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */) {\n    return null;\n  }\n  return parentSize;\n}\nfunction useParentSize() {\n  return React14.useContext(ConstraintsContext).parentSize;\n}\nfunction isSize(o) {\n  return typeof o === \"object\";\n}\nvar ProvideParentSize = (props) => {\n  const currentParentSize = useParentSize();\n  const { parentSize, children } = props;\n  const value = React14.useMemo(\n    () => ({ parentSize }),\n    [getParentWidth(parentSize), getParentHeight(parentSize)]\n  );\n  if (currentParentSize === 1 /* Disabled */) {\n    return children ? /* @__PURE__ */ jsx10(Fragment3, { children }) : null;\n  }\n  return /* @__PURE__ */ jsx10(ConstraintsContext.Provider, { value, children });\n};\nfunction getParentWidth(parentSize) {\n  return isSize(parentSize) ? parentSize.width : parentSize;\n}\nfunction getParentHeight(parentSize) {\n  return isSize(parentSize) ? parentSize.height : parentSize;\n}\nfunction useProvideParentSize(node, parentSize) {\n  return /* @__PURE__ */ jsx10(ProvideParentSize, { parentSize, children: node });\n}\nfunction useConstraints(props) {\n  const parentSize = useParentSize();\n  const calculatedRect = calculateRect(props, parentSize, true);\n  return calculatedRect;\n}\nfunction isAutoSized({\n  width,\n  height\n}) {\n  return width === \"auto\" || width === \"min-content\" || height === \"auto\" || height === \"min-content\";\n}\n\n// ../../library/src/render/types/PropertyControls.ts\nvar ControlType = /* @__PURE__ */ ((ControlType2) => {\n  ControlType2[\"Boolean\"] = \"boolean\";\n  ControlType2[\"Number\"] = \"number\";\n  ControlType2[\"String\"] = \"string\";\n  ControlType2[\"RichText\"] = \"richtext\";\n  ControlType2[\"FusedNumber\"] = \"fusednumber\";\n  ControlType2[\"Enum\"] = \"enum\";\n  ControlType2[\"SegmentedEnum\"] = \"segmentedenum\";\n  ControlType2[\"Color\"] = \"color\";\n  ControlType2[\"Image\"] = \"image\";\n  ControlType2[\"ResponsiveImage\"] = \"responsiveimage\";\n  ControlType2[\"File\"] = \"file\";\n  ControlType2[\"ComponentInstance\"] = \"componentinstance\";\n  ControlType2[\"Slot\"] = \"slot\";\n  ControlType2[\"Array\"] = \"array\";\n  ControlType2[\"EventHandler\"] = \"eventhandler\";\n  ControlType2[\"Transition\"] = \"transition\";\n  ControlType2[\"BoxShadow\"] = \"boxshadow\";\n  ControlType2[\"Link\"] = \"link\";\n  ControlType2[\"Date\"] = \"date\";\n  ControlType2[\"Object\"] = \"object\";\n  ControlType2[\"Font\"] = \"font\";\n  ControlType2[\"PageScope\"] = \"pagescope\";\n  ControlType2[\"ScrollSectionRef\"] = \"scrollsectionref\";\n  ControlType2[\"CustomCursor\"] = \"customcursor\";\n  ControlType2[\"Border\"] = \"border\";\n  ControlType2[\"Cursor\"] = \"cursor\";\n  ControlType2[\"Padding\"] = \"padding\";\n  ControlType2[\"BorderRadius\"] = \"borderradius\";\n  ControlType2[\"Gap\"] = \"gap\";\n  ControlType2[\"CollectionReference\"] = \"collectionreference\";\n  ControlType2[\"MultiCollectionReference\"] = \"multicollectionreference\";\n  ControlType2[\"TrackingId\"] = \"trackingid\";\n  ControlType2[\"VectorSetItem\"] = \"vectorsetitem\";\n  ControlType2[\"LinkRelValues\"] = \"linkrelvalues\";\n  return ControlType2;\n})(ControlType || {});\n\n// ../../library/src/modules/isFlexboxGapSupported.ts\nvar isFlexboxGapSupportedCached;\nfunction isFlexboxGapSupported() {\n  if (isFlexboxGapSupportedCached !== void 0) {\n    return isFlexboxGapSupportedCached;\n  }\n  const flex = document.createElement(\"div\");\n  Object.assign(flex.style, {\n    position: \"absolute\",\n    // avoid layout shift\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"1px\"\n  });\n  flex.appendChild(document.createElement(\"div\"));\n  flex.appendChild(document.createElement(\"div\"));\n  document.body.appendChild(flex);\n  const isSupported = flex.scrollHeight === 1;\n  if (flex.parentNode) {\n    flex.parentNode.removeChild(flex);\n  }\n  isFlexboxGapSupportedCached = isSupported;\n  return isSupported;\n}\n\n// ../../library/src/modules/workaroundFlexboxGapNotSupported.ts\nvar flexboxGapNotSupportedClass = \"flexbox-gap-not-supported\";\nvar initialized = false;\nfunction installFlexboxGapWorkaroundIfNeeded() {\n  if (initialized) return;\n  initialized = true;\n  if (isFlexboxGapSupported()) return;\n  document.body.classList.add(flexboxGapNotSupportedClass);\n}\n\n// ../../library/src/render/utils/injectDeprecatedRichTextRules.ts\nvar richTextStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6,\n[data-framer-component-type=\"DeprecatedRichText\"] li,\n[data-framer-component-type=\"DeprecatedRichText\"] ol,\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] span:not([data-text-fill]) {\n    font-family: var(--framer-font-family, Inter, Inter Placeholder, sans-serif);\n    font-style: var(--framer-font-style, normal);\n    font-weight: var(--framer-font-weight, 400);\n    color: var(--framer-text-color, #000);\n    font-size: var(--framer-font-size, 16px);\n    letter-spacing: var(--framer-letter-spacing, 0);\n    text-transform: var(--framer-text-transform, none);\n    text-decoration: var(--framer-text-decoration, none);\n    line-height: var(--framer-line-height, 1.2em);\n    text-align: var(--framer-text-alignment, start);\n}\n`;\nvar richTextParagraphSpacingStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] div:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h1:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h2:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h3:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h4:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h5:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h6:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ol:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ul:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image:not(:first-child) {\n    margin-top: var(--framer-paragraph-spacing, 0);\n}\n`;\nvar richTextBackgroundMaskStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] span[data-text-fill] {\n    display: inline-block;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n}\n`;\nvar richTextLinkStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a,\n[data-framer-component-type=\"DeprecatedRichText\"] a span:not([data-text-fill]) {\n    font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n    font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n    font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n    color: var(--framer-link-text-color, var(--framer-text-color, #000));\n    font-size: var(--framer-link-font-size, var(--framer-font-size, 16px));\n    text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n    text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n}\n`;\nvar richTextLinkHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current],\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current] span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n    color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n}\n`;\nvar richTextBoldStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] strong {\n    font-weight: bolder;\n}\n`;\nvar richTextItalicStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] em {\n    font-style: italic;\n}\n`;\nvar richTextImageRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}\n`;\nvar richTextBlockElementResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6 {\n    margin: 0;\n    padding: 0;\n}\n`;\nvar richTextStylesPresetResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .text-styles-preset-reset {\n    --framer-font-family: Inter, Inter Placeholder, sans-serif;\n    --framer-font-style: normal;\n    --framer-font-weight: 500;\n    --framer-text-color: #000;\n    --framer-font-size: 16px;\n    --framer-letter-spacing: 0;\n    --framer-text-transform: none;\n    --framer-text-decoration: none;\n    --framer-line-height: 1.2em;\n    --framer-text-alignment: start;\n    --framer-font-open-type-features: normal;\n    --font-variation-settings: normal;\n}\n`;\nvar richTextStylesList = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] ol {\n    display: table;\n    width: 100%;\n    padding-left: 0;\n    margin: 0;\n}\n`;\nvar richTextStylesListItem = `\n[data-framer-component-type=\"DeprecatedRichText\"] li {\n    display: table-row;\n    counter-increment: list-item;\n    list-style: none;\n}\n`;\nvar richTextStylesNumberedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ol > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: counter(list-item) \".\";\n    white-space: nowrap;\n}\n`;\nvar richTextStylesBulletedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: \"\\u2022\";\n}\n`;\nvar deprecatedRichTextCSSRules = [\n  `[data-framer-component-type=\"DeprecatedRichText\"] { cursor: inherit; }`,\n  richTextStylesPresetResetRule,\n  richTextBlockElementResetRule,\n  richTextStylesRule,\n  richTextParagraphSpacingStylesRule,\n  richTextBackgroundMaskStylesRule,\n  richTextLinkStylesRule,\n  richTextLinkHoverStylesRule,\n  richTextLinkCurrentStylesRule,\n  richTextLinkCurrentHoverStylesRule,\n  richTextBoldStylesRule,\n  richTextItalicStylesRule,\n  richTextImageRule,\n  richTextStylesList,\n  richTextStylesListItem,\n  richTextStylesNumberedListMarker,\n  richTextStylesBulletedListMarker\n];\n\n// ../../library/src/render/presentation/Forms/shared.ts\nimport React15 from \"react\";\nvar FormInputStyleVariableNames = /* @__PURE__ */ ((FormInputStyleVariableNames2) => {\n  FormInputStyleVariableNames2[\"Padding\"] = \"--framer-input-padding\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopLeft\"] = \"--framer-input-border-radius-top-left\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopRight\"] = \"--framer-input-border-radius-top-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomRight\"] = \"--framer-input-border-radius-bottom-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomLeft\"] = \"--framer-input-border-radius-bottom-left\";\n  FormInputStyleVariableNames2[\"BorderColor\"] = \"--framer-input-border-color\";\n  FormInputStyleVariableNames2[\"BorderTopWidth\"] = \"--framer-input-border-top-width\";\n  FormInputStyleVariableNames2[\"BorderRightWidth\"] = \"--framer-input-border-right-width\";\n  FormInputStyleVariableNames2[\"BorderBottomWidth\"] = \"--framer-input-border-bottom-width\";\n  FormInputStyleVariableNames2[\"BorderLeftWidth\"] = \"--framer-input-border-left-width\";\n  FormInputStyleVariableNames2[\"BorderStyle\"] = \"--framer-input-border-style\";\n  FormInputStyleVariableNames2[\"Background\"] = \"--framer-input-background\";\n  FormInputStyleVariableNames2[\"FontFamily\"] = \"--framer-input-font-family\";\n  FormInputStyleVariableNames2[\"FontWeight\"] = \"--framer-input-font-weight\";\n  FormInputStyleVariableNames2[\"FontSize\"] = \"--framer-input-font-size\";\n  FormInputStyleVariableNames2[\"FontColor\"] = \"--framer-input-font-color\";\n  FormInputStyleVariableNames2[\"FontStyle\"] = \"--framer-input-font-style\";\n  FormInputStyleVariableNames2[\"FontLetterSpacing\"] = \"--framer-input-font-letter-spacing\";\n  FormInputStyleVariableNames2[\"FontTextAlignment\"] = \"--framer-input-font-text-alignment\";\n  FormInputStyleVariableNames2[\"FontLineHeight\"] = \"--framer-input-font-line-height\";\n  FormInputStyleVariableNames2[\"FontOpenType\"] = \"--framer-input-font-open-type-features\";\n  FormInputStyleVariableNames2[\"PlaceholderColor\"] = \"--framer-input-placeholder-color\";\n  FormInputStyleVariableNames2[\"BoxShadow\"] = \"--framer-input-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedBorderColor\"] = \"--framer-input-focused-border-color\";\n  FormInputStyleVariableNames2[\"FocusedBorderWidth\"] = \"--framer-input-focused-border-width\";\n  FormInputStyleVariableNames2[\"FocusedBorderStyle\"] = \"--framer-input-focused-border-style\";\n  FormInputStyleVariableNames2[\"FocusedBackground\"] = \"--framer-input-focused-background\";\n  FormInputStyleVariableNames2[\"FocusedBoxShadow\"] = \"--framer-input-focused-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedTransition\"] = \"--framer-input-focused-transition\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBackground\"] = \"--framer-input-boolean-checked-background\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderColor\"] = \"--framer-input-boolean-checked-border-color\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderWidth\"] = \"--framer-input-boolean-checked-border-width\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderStyle\"] = \"--framer-input-boolean-checked-border-style\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBoxShadow\"] = \"--framer-input-boolean-checked-box-shadow\";\n  FormInputStyleVariableNames2[\"BooleanCheckedTransition\"] = \"--framer-input-boolean-checked-transition\";\n  FormInputStyleVariableNames2[\"InvalidTextColor\"] = \"--framer-input-invalid-text-color\";\n  FormInputStyleVariableNames2[\"IconBackgroundImage\"] = \"--framer-input-icon-image\";\n  FormInputStyleVariableNames2[\"IconMaskImage\"] = \"--framer-input-icon-mask-image\";\n  FormInputStyleVariableNames2[\"IconColor\"] = \"--framer-input-icon-color\";\n  FormInputStyleVariableNames2[\"WrapperHeight\"] = \"--framer-input-wrapper-height\";\n  return FormInputStyleVariableNames2;\n})(FormInputStyleVariableNames || {});\nvar Var = FormInputStyleVariableNames;\nvar inputClassName = \"framer-form-input\";\nvar inputWrapperClassName = \"framer-form-input-wrapper\";\nvar emptyValueClassName = \"framer-form-input-empty\";\nvar forcedFocusClassName = \"framer-form-input-forced-focus\";\nvar forcedCheckedClassName = \"framer-form-input-forced-checked\";\nfunction cssValue(value) {\n  if (typeof value === \"number\") return value;\n  if (value.startsWith(\"--\")) return css.variable(value);\n  if (value === \"\") return '\"\"';\n  return value;\n}\nfunction css(selector, declaration) {\n  let output = \" \";\n  for (const key7 in declaration) {\n    const value = declaration[key7];\n    output += `${key7.replace(/([A-Z])/gu, \"-$1\").toLowerCase()}: ${cssValue(value)}; `;\n  }\n  return selector + \" {\" + output + \"}\";\n}\n((css2) => {\n  function variable(...variables) {\n    const lastItem = variables[variables.length - 1];\n    let value = lastItem.startsWith(\"--\") ? `var(${lastItem})` : lastItem;\n    for (let index = variables.length - 2; index >= 0; index--) {\n      const element = variables[index];\n      value = `var(${element}, ${value})`;\n    }\n    return value;\n  }\n  css2.variable = variable;\n})(css || (css = {}));\nvar sharedInputCSS = [\n  css(`.${inputClassName}`, {\n    padding: css.variable(Var.Padding),\n    background: \"transparent\",\n    fontFamily: css.variable(Var.FontFamily),\n    fontWeight: css.variable(Var.FontWeight),\n    fontSize: css.variable(Var.FontSize),\n    fontStyle: css.variable(Var.FontStyle),\n    color: css.variable(Var.FontColor),\n    fontFeatureSettings: css.variable(Var.FontOpenType),\n    border: \"none\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    width: \"100%\",\n    height: css.variable(Var.WrapperHeight, \"100%\"),\n    letterSpacing: css.variable(Var.FontLetterSpacing),\n    textAlign: css.variable(Var.FontTextAlignment),\n    lineHeight: css.variable(Var.FontLineHeight)\n  }),\n  css(`.${inputClassName}:focus-visible`, { outline: \"none\" })\n];\nvar inputWrapperCSS = /* @__PURE__ */ (() => [css(`.${inputWrapperClassName}`, { overflow: \"hidden\" })])();\nvar inputBorderAllSides = `var(${Var.BorderTopWidth}) var(${Var.BorderRightWidth}) var(${Var.BorderBottomWidth}) var(${Var.BorderLeftWidth})`;\nvar inputBorderCSS = [\n  `.${inputWrapperClassName}:after {\n        content: \"\";\n        pointer-events: none;\n        box-sizing: border-box;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        border-top-left-radius: var(${Var.BorderRadiusTopLeft});\n        border-top-right-radius: var(${Var.BorderRadiusTopRight});\n        border-bottom-right-radius: var(${Var.BorderRadiusBottomRight});\n        border-bottom-left-radius: var(${Var.BorderRadiusBottomLeft});\n        border-color: var(${Var.BorderColor});\n        border-top-width: var(${Var.BorderTopWidth});\n        border-right-width: var(${Var.BorderRightWidth});\n        border-bottom-width: var(${Var.BorderBottomWidth});\n        border-left-width: var(${Var.BorderLeftWidth});\n        border-style: var(${Var.BorderStyle});\n        transition: var(${Var.FocusedTransition});\n        transition-property: border-color, border-width, border-style, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius;\n    }`\n];\nvar customValidityKey = \"customError\";\nvar validKey = \"valid\";\nfunction isRelevantValidityStateKey(key7) {\n  return key7 !== customValidityKey && key7 !== validKey;\n}\nfunction isInvalid(validity) {\n  for (const key7 in validity) {\n    if (!isRelevantValidityStateKey(key7)) continue;\n    if ((validity == null ? void 0 : validity[key7]) === true) return true;\n  }\n  return false;\n}\nfunction useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus) {\n  const isValidRef = React15.useRef(null);\n  const handleInvalid = React15.useCallback(\n    (e) => {\n      if (!onInvalid) return;\n      if (isValidRef.current === false) return;\n      isValidRef.current = false;\n      e.currentTarget.setCustomValidity(\" \");\n      e.currentTarget.reportValidity();\n      onInvalid(e);\n    },\n    [onInvalid]\n  );\n  const handleChange = React15.useCallback(\n    (e) => {\n      onChange == null ? void 0 : onChange(e);\n      if (!onInvalid && !onValid) return;\n      const validity = e.target.validity;\n      if (isValidRef.current === false && !isInvalid(validity)) {\n        e.currentTarget.setCustomValidity(\"\");\n        e.target.reportValidity();\n        isValidRef.current = true;\n        onValid == null ? void 0 : onValid();\n      }\n    },\n    [onInvalid, onValid, onChange]\n  );\n  const handleBlur = React15.useCallback(\n    (e) => {\n      if (!onInvalid) {\n        onBlur == null ? void 0 : onBlur(e);\n        return;\n      }\n      if (isValidRef.current === false) return;\n      const validity = e.currentTarget.validity;\n      if (isInvalid(validity)) {\n        handleInvalid(e);\n        return;\n      }\n      onBlur == null ? void 0 : onBlur(e);\n    },\n    [handleInvalid, onBlur, onInvalid]\n  );\n  return React15.useMemo(() => {\n    return {\n      onInvalid: handleInvalid,\n      onChange: handleChange,\n      onBlur: handleBlur,\n      onFocus\n    };\n  }, [handleInvalid, handleChange, handleBlur, onFocus]);\n}\nvar iconSpacing = 10;\nvar iconSize = 16;\nvar inputIconCSSDeclaration = {\n  content: \"\",\n  display: \"block\",\n  position: \"absolute\",\n  right: 0,\n  top: 0,\n  bottom: 0,\n  width: `${iconSize}px`,\n  boxSizing: \"content-box\",\n  padding: css.variable(Var.Padding),\n  border: \"none\",\n  pointerEvents: \"none\",\n  backgroundRepeat: \"no-repeat\",\n  backgroundSize: `${iconSize}px`,\n  maskRepeat: \"no-repeat\",\n  maskSize: `${iconSize}px`,\n  backgroundColor: css.variable(Var.IconColor)\n};\n\n// ../../library/src/render/utils/injectRichTextRules.ts\nfunction createRGBVariableFallbacks(variables, fallback) {\n  return css.variable(...variables.flatMap((variable) => [`${variable}-rgb`, variable]), fallback);\n}\nvar richTextCSSRules = /* @__PURE__ */ (() => [\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        figure.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        ol.framer-text,\n        ul.framer-text {\n            margin: 0;\n            padding: 0;\n        }\n    `,\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        li.framer-text,\n        ol.framer-text,\n        ul.framer-text,\n        mark.framer-text,\n        span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-blockquote-text-color, var(--framer-text-color, #000));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-text-transform, none));\n            text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial));\n            text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial));\n            text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial));\n            text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial));\n            text-decoration-skip-ink: var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial));\n            text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n            text-align: var(--framer-blockquote-text-alignment, var(--framer-text-alignment, start));\n            -webkit-text-stroke-width: var(--framer-text-stroke-width, initial);\n            -webkit-text-stroke-color: var(--framer-text-stroke-color, initial);\n            -moz-font-feature-settings: var(--framer-font-open-type-features, initial);\n            -webkit-font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-variation-settings: var(--framer-font-variation-axes, normal);\n            text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));\n        }\n    `,\n  /* css */\n  `\n        mark.framer-text,\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        li.framer-text,\n        ol.framer-text,\n        ul.framer-text {\n            background-color: var(--framer-blockquote-text-background-color, var(--framer-text-background-color, initial));\n            border-radius: var(--framer-blockquote-text-background-radius, var(--framer-text-background-radius, initial));\n            padding: var(--framer-blockquote-text-background-padding, var(--framer-text-background-padding, initial));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            p.framer-text,\n            div.framer-text,\n            h1.framer-text,\n            h2.framer-text,\n            h3.framer-text,\n            h4.framer-text,\n            h5.framer-text,\n            h6.framer-text,\n            li.framer-text,\n            ol.framer-text,\n            ul.framer-text,\n            span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-text-color\"], \"#000\")};\n                -webkit-text-stroke-color: ${createRGBVariableFallbacks([\"--framer-text-stroke-color\"], \"initial\")};\n            }\n\n            mark.framer-text {\n                background-color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-background-color\", \"--framer-text-background-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        .framer-fit-text .framer-text {\n            white-space: nowrap;\n            white-space-collapse: preserve;\n        }\n    `,\n  /* css */\n  `\n        strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold, var(--framer-font-family-bold));\n            font-style: var(--framer-blockquote-font-style-bold, var(--framer-font-style-bold));\n            font-weight: var(--framer-blockquote-font-weight-bold, var(--framer-font-weight-bold, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold, var(--framer-font-variation-axes-bold));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text {\n            font-family: var(--framer-blockquote-font-family-italic, var(--framer-font-family-italic));\n            font-style: var(--framer-blockquote-font-style-italic, var(--framer-font-style-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-italic, var(--framer-font-weight-italic));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-italic, var(--framer-font-variation-axes-italic));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text > strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold-italic, var(--framer-font-family-bold-italic));\n            font-style: var(--framer-blockquote-font-style-bold-italic, var(--framer-font-style-bold-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-bold-italic, var(--framer-font-weight-bold-italic, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold-italic, var(--framer-font-variation-axes-bold-italic));\n        }\n    `,\n  /* css */\n  `\n        p.framer-text:not(:first-child),\n        div.framer-text:not(:first-child),\n        h1.framer-text:not(:first-child),\n        h2.framer-text:not(:first-child),\n        h3.framer-text:not(:first-child),\n        h4.framer-text:not(:first-child),\n        h5.framer-text:not(:first-child),\n        h6.framer-text:not(:first-child),\n        ol.framer-text:not(:first-child),\n        ul.framer-text:not(:first-child),\n        blockquote.framer-text:not(:first-child),\n        table.framer-text:not(:first-child),\n        figure.framer-text:not(:first-child),\n        .framer-image.framer-text:not(:first-child) {\n            margin-top: var(--framer-blockquote-paragraph-spacing, var(--framer-paragraph-spacing, 0));\n        }\n    `,\n  // The first child of a list item is a paragraph. If the second child is a\n  // nested list we don't want it to have paragraph spacing.\n  /* css */\n  `\n        li.framer-text > ul.framer-text:nth-child(2),\n        li.framer-text > ol.framer-text:nth-child(2) {\n            margin-top: 0;\n        }\n    `,\n  // background-clip: text clips to the physical dimensions of text as appose\n  // to the rendered dimensions. normal text will bleed out side these\n  // constraints but since this is just a clipping mask over the area the text\n  // takes up we have cases where the text will get clipped. That is why we\n  // need to expand the area that the gradient applies to to allow users to\n  // use low line-heights. This will result in gradients not aligning\n  // perfectly to the edges of the text. but this is a acceptable trade off at\n  // this point. For now we increase the area of the clipping mask on the\n  // bottom (for descenders) and the right for italic or wide fonts.\n  /* css */\n  `\n        .framer-text[data-text-fill] {\n            display: inline-block;\n            background-clip: text;\n            -webkit-background-clip: text;\n            /* make this a transparent color if you want to visualise the clipping  */\n            -webkit-text-fill-color: transparent;\n            padding: max(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / 2));\n            margin: min(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / -2));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text,\n        code.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text,\n            code.framer-text span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        blockquote.framer-text {\n            margin-block-start: initial;\n            margin-block-end: initial;\n            margin-inline-start: initial;\n            margin-inline-end: initial;\n            unicode-bidi: initial;\n        }\n    `,\n  /* css */\n  `\n        a.framer-text,\n        a.framer-text span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link],\n        span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */\n            cursor: var(--framer-custom-cursors, pointer);\n            /* Don't inherit background styles from any parent text style. */\n            background-color: var(--framer-link-text-background-color, initial);\n            border-radius: var(--framer-link-text-background-radius, initial);\n            padding: var(--framer-link-text-background-padding, initial);\n        }\n    `,\n  // Text decoration can't be applied to the nested spans of links because it breaks animations\n  /* css */\n  `\n        a.framer-text,\n        span.framer-text[data-nested-link] {\n            text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));\n            text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));\n            text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));\n            text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));\n            text-decoration-skip-ink: var(--framer-blockquote-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));\n            text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            a.framer-text,\n            a.framer-text span.framer-text:not([data-text-fill]),\n            span.framer-text[data-nested-link],\n            span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n                background-color: ${createRGBVariableFallbacks([\"--framer-link-text-background-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text,\n        code.framer-text a.framer-text span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link],\n        code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text a.framer-text,\n            code.framer-text a.framer-text span.framer-text:not([data-text-fill]),\n            code.framer-text span.framer-text[data-nested-link],\n            code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link]:hover,\n        span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            background-color: var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial)));\n            border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));\n            padding: var(--framer-link-hover-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial)));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text:hover,\n        span.framer-text[data-nested-link]:hover {\n            text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial))));\n            text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial))));\n            text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial))));\n            text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));\n            text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));\n            text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial))));\n        }\n    `,\n  /* css */\n  `\n    @supports not (color: color(display-p3 1 1 1)) {\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link]:hover,\n        span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n            background-color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-background-color\", \"--framer-link-text-background-color\", \"--framer-text-background-color\"], \"initial\")};\n        }\n    }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link]:hover,\n        code.framer-text span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n    @supports not (color: color(display-p3 1 1 1)) {\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link]:hover,\n        code.framer-text span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n        }\n    }\n   `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current],\n        a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        span.framer-text[data-framer-page-link-current],\n        span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            background-color: var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial));\n            border-radius: var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial));\n            padding: var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current],\n        span.framer-text[data-framer-page-link-current] {\n            text-decoration-line: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));\n            text-decoration-style: var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));\n            text-decoration-color: var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));\n            text-decoration-thickness: var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));\n            text-decoration-skip-ink: var(--framer-link-current-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));\n            text-underline-offset: var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            a.framer-text[data-framer-page-link-current],\n            a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n            span.framer-text[data-framer-page-link-current],\n            span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n                background-color: ${createRGBVariableFallbacks([\"--framer-link-current-text-background-color\", \"--framer-link-text-background-color\", \"--framer-text-background-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current],\n        code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current],\n        code.framer-text span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text a.framer-text[data-framer-page-link-current],\n            code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n            code.framer-text span.framer-text[data-framer-page-link-current],\n            code.framer-text span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n                background-color: ${createRGBVariableFallbacks([\"--framer-link-current-text-background-color\", \"--framer-link-text-background-color\", \"--framer-text-background-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current]:hover,\n        a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-framer-page-link-current]:hover,\n        span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            background-color: var(--framer-link-hover-text-background-color, var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, initial)));\n            border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, initial)));\n            padding: var(--framer-link-hover-text-background-padding, var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, initial)));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current]:hover,\n        span.framer-text[data-framer-page-link-current]:hover {\n            text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial))));\n            text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial))));\n            text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial))));\n            text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));\n            text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-link-current-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));\n            text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial))));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            a.framer-text[data-framer-page-link-current]:hover,\n            a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n            span.framer-text[data-framer-page-link-current]:hover,\n            span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n                background-color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-background-color\", \"--framer-link-current-text-background-color\", \"--framer-link-text-background-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n            background-color: var(--framer-link-hover-text-background-color, var(--framer-link-current-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial))));\n            border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-current-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial))));\n            padding: var(--framer-link-hover-text-background-padding, var(--framer-link-current-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial))));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n            code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n            code.framer-text span.framer-text[data-framer-page-link-current]:hover,\n            code.framer-text span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n                background-color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-background-color\", \"--framer-link-current-text-background-color\", \"--framer-link-text-background-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        .framer-image.framer-text {\n            display: block;\n            max-width: 100%;\n            height: auto;\n        }\n    `,\n  /* css */\n  `\n        .text-styles-preset-reset.framer-text {\n            --framer-font-family: Inter, Inter Placeholder, sans-serif;\n            --framer-font-style: normal;\n            --framer-font-weight: 500;\n            --framer-text-color: #000;\n            --framer-font-size: 16px;\n            --framer-letter-spacing: 0;\n            --framer-text-transform: none;\n            --framer-text-decoration: none;\n            --framer-text-decoration-style: none;\n            --framer-text-decoration-color: none;\n            --framer-text-decoration-thickness: none;\n            --framer-text-decoration-skip-ink: none;\n            --framer-text-decoration-offset: none;\n            --framer-line-height: 1.2em;\n            --framer-text-alignment: start;\n            --framer-font-open-type-features: normal;\n            --framer-text-background-color: initial;\n            --framer-text-background-radius: initial;\n            --framer-text-background-padding: initial;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text {\n            --list-style-type: decimal;\n        }\n    `,\n  // Why all the `position: relative` and `position: absolute` and `::before` tricks?\n  // We want ul\u2019s disks and ol\u2019s numbers to be left-aligned at the start of the line.\n  // There\u2019s no way to do that with ::marker styles alone, so we have to resort to this trick.\n  /* css */\n  `\n        ul.framer-text,\n        ol.framer-text {\n            padding-left: 3ch;\n            position: relative;\n        }\n    `,\n  /* css */\n  `\n        li.framer-text {\n            counter-increment: list-item;\n            list-style: none;\n        }\n    `,\n  // font-variant-numeric: tabular-nums enables monospaced numbers (which is neat in a vertical list of numbers)\n  // and makes `li`s match the default browser styles better.\n  /* css */\n  `\n        ol.framer-text > li.framer-text::before {\n            position: absolute;\n            left: 0;\n            content: counter(list-item, var(--list-style-type)) \".\";\n            font-variant-numeric: tabular-nums;\n        }\n    `,\n  // Why this? Due to `position: absolute` (see above), if a list has a lot of items, the numbers\n  // might start overlapping the text content. This compensates for that. The trick is based on\n  // https://alistapart.com/article/quantity-queries-for-css/#section6. The trick doesn\u2019t account\n  // for lists longer than 1,000,000 items, but if you have a list of 1,000,000 items, you\u2019ll have\n  // other problems \u00AF\\_(\u30C4)_/\u00AF\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 100),\n        ol.framer-text > li.framer-text:nth-last-child(n + 100) ~ li {\n            padding-left: 1ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000) ~ li {\n            padding-left: 2ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 10000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 10000) ~ li {\n            padding-left: 3ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 100000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 100000) ~ li {\n            padding-left: 4ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000000) ~ li {\n            padding-left: 5ch;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text > li.framer-text::before {\n            position: absolute;\n            left: 0;\n            content: \"\\u2022\";\n        }\n    `,\n  /* css */\n  `\n        .framer-table-wrapper {\n            overflow-x: auto;\n        }\n    `,\n  /* css */\n  `\n        table.framer-text,\n        .framer-table-wrapper table.framer-text {\n            border-collapse: separate;\n            border-spacing: 0;\n            table-layout: auto;\n            word-break: normal;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        td.framer-text,\n        th.framer-text {\n            min-width: 16ch;\n            vertical-align: top;\n        }\n    `,\n  /* css */\n  `\n        .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] {\n                position: relative;\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"]::before {\n                content: \"\";\n                display: block;\n                padding-bottom: calc(100% / calc(var(--aspect-ratio)));\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n                position: absolute;\n                top: 0;\n                left: 0;\n                height: 100%;\n            }\n        }\n    `\n])();\n\n// ../../library/src/render/utils/setDocumentStyles.ts\nvar defaultCache = /* @__PURE__ */ new Set();\nvar defaultSheet;\nfunction injectCSSRule(cssRule, sheet, cache2 = defaultCache) {\n  if (!cssRule || cache2.has(cssRule) || typeof document === \"undefined\") return;\n  cache2.add(cssRule);\n  if (!sheet) {\n    if (!defaultSheet) {\n      const styleElement = document.createElement(\"style\");\n      styleElement.setAttribute(\"type\", \"text/css\");\n      styleElement.setAttribute(\"data-framer-css\", \"true\");\n      if (!document.head) {\n        console.warn(\"not injecting CSS: the document is missing a <head> element\");\n        return;\n      }\n      document.head.appendChild(styleElement);\n      if (styleElement.sheet) {\n        defaultSheet = styleElement.sheet;\n      } else {\n        console.warn(\"not injecting CSS: injected <style> element does not have a sheet\", styleElement);\n        return;\n      }\n    }\n    sheet = defaultSheet;\n  }\n  try {\n    sheet.insertRule(cssRule, sheet.cssRules.length);\n  } catch {\n  }\n}\n\n// ../../library/src/render/utils/injectComponentCSSRules.ts\nvar componentCSSRules = [`[data-framer-component-type] { position: absolute; }`];\nvar textAlignmentRule = `\n[data-framer-component-type=\"Text\"] > * {\n    text-align: var(--framer-text-alignment, start);\n}`;\nvar textBlockSpanRule = `\n[data-framer-component-type=\"Text\"] span span,\n[data-framer-component-type=\"Text\"] p span,\n[data-framer-component-type=\"Text\"] h1 span,\n[data-framer-component-type=\"Text\"] h2 span,\n[data-framer-component-type=\"Text\"] h3 span,\n[data-framer-component-type=\"Text\"] h4 span,\n[data-framer-component-type=\"Text\"] h5 span,\n[data-framer-component-type=\"Text\"] h6 span {\n    display: block;\n}`;\nvar textInlineSpanRule = `\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span {\n    display: unset;\n}`;\nvar renderTextStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    font-family: var(--font-family);\n    font-style: var(--font-style);\n    font-weight: min(calc(var(--framer-font-weight-increase, 0) + var(--font-weight, 400)), 900);\n    color: var(--text-color);\n    letter-spacing: var(--letter-spacing);\n    font-size: var(--font-size);\n    text-transform: var(--text-transform);\n    --text-decoration: var(--framer-text-decoration-style, solid) var(--framer-text-decoration, none) var(--framer-text-decoration-color, currentcolor) var(--framer-text-decoration-thickness, auto);\n    --text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);\n    --text-underline-offset: var(--framer-text-decoration-offset);\n    line-height: var(--line-height);\n}`;\nvar textStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    --font-family: var(--framer-font-family);\n    --font-style: var(--framer-font-style);\n    --font-weight: var(--framer-font-weight);\n    --text-color: var(--framer-text-color);\n    --letter-spacing: var(--framer-letter-spacing);\n    --font-size: var(--framer-font-size);\n    --text-transform: var(--framer-text-transform);\n    --text-decoration: var(--framer-text-decoration-style, solid) var(--framer-text-decoration, none) var(--framer-text-decoration-color, currentcolor) var(--framer-text-decoration-thickness, auto);\n    --text-decoration-skip-ink: var(--framer-text-decoration-skip-ink);\n    --text-underline-offset: var(--framer-text-decoration-offset);\n    --line-height: var(--framer-line-height);\n}`;\nvar linkStylesRule = `\n[data-framer-component-type=\"Text\"] a,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] a span span span,\n[data-framer-component-type=\"Text\"] a p span span,\n[data-framer-component-type=\"Text\"] a h1 span span,\n[data-framer-component-type=\"Text\"] a h2 span span,\n[data-framer-component-type=\"Text\"] a h3 span span,\n[data-framer-component-type=\"Text\"] a h4 span span,\n[data-framer-component-type=\"Text\"] a h5 span span,\n[data-framer-component-type=\"Text\"] a h6 span span {\n    --font-family: var(--framer-link-font-family, var(--framer-font-family));\n    --font-style: var(--framer-link-font-style, var(--framer-font-style));\n    --font-weight: var(--framer-link-font-weight, var(--framer-font-weight));\n    --text-color: var(--framer-link-text-color, var(--framer-text-color));\n    --font-size: var(--framer-link-font-size, var(--framer-font-size));\n    --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));\n    --text-decoration: var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, solid)) var(--framer-link-text-decoration, var(--framer-text-decoration, none)) var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, currentcolor)) var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, auto));\n    --text-decoration-skip-ink: var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink));\n    --text-underline-offset: var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset));\n}`;\nvar linkHoverStylesRule = `\n[data-framer-component-type=\"Text\"] a:hover,\n[data-framer-component-type=\"Text\"] a div span:hover,\n[data-framer-component-type=\"Text\"] a span span span:hover,\n[data-framer-component-type=\"Text\"] a p span span:hover,\n[data-framer-component-type=\"Text\"] a h1 span span:hover,\n[data-framer-component-type=\"Text\"] a h2 span span:hover,\n[data-framer-component-type=\"Text\"] a h3 span span:hover,\n[data-framer-component-type=\"Text\"] a h4 span span:hover,\n[data-framer-component-type=\"Text\"] a h5 span span:hover,\n[data-framer-component-type=\"Text\"] a h6 span span:hover {\n    --font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-hover-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, solid))) var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))) var(--framer-link-hover-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, currentcolor))) var(--framer-link-hover-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, auto)));\n    --text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink)));\n    --text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset)));\n}`;\nvar linkCurrentStylesRule = `\n[data-framer-component-type=\"Text\"].isCurrent a,\n[data-framer-component-type=\"Text\"].isCurrent a div span,\n[data-framer-component-type=\"Text\"].isCurrent a span span span,\n[data-framer-component-type=\"Text\"].isCurrent a p span span,\n[data-framer-component-type=\"Text\"].isCurrent a h1 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h2 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h3 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h4 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h5 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h6 span span {\n    --font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-current-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, solid))) var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))) var(--framer-link-current-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, currentcolor))) var(--framer-link-current-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, auto)));\n    --text-decoration-skip-ink: var(--framer-link-current-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink)));\n    --text-underline-offset: var(--framer-link-current-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset)));\n}`;\nvar textCSSRules = [\n  `[data-framer-component-type=\"Text\"] { cursor: inherit; }`,\n  `[data-framer-component-text-autosized] * { white-space: pre; }`,\n  textAlignmentRule,\n  textBlockSpanRule,\n  textInlineSpanRule,\n  renderTextStylesRule,\n  textStylesRule,\n  linkStylesRule,\n  linkHoverStylesRule,\n  linkCurrentStylesRule\n];\nvar stackPositionRule = `\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-component-type],\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > [data-framer-component-type] {\n    position: relative;\n}`;\nvar nativeStackGapRules = /* @__PURE__ */ (() => [\n  `[data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: var(--stack-native-row-gap);\n        column-gap: var(--stack-native-column-gap);\n    }`,\n  `.${flexboxGapNotSupportedClass} [data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: unset;\n        column-gap: unset;\n    }`\n])();\nvar stackGapRule = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass} [data-framer-legacy-stack-gap-enabled=\"true\"] > *, [data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"] {\n    margin-top: calc(var(--stack-gap-y) / 2);\n    margin-bottom: calc(var(--stack-gap-y) / 2);\n    margin-right: calc(var(--stack-gap-x) / 2);\n    margin-left: calc(var(--stack-gap-x) / 2);\n}\n`)();\nvar stackDirectionRuleVertical = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child {\n    margin-top: 0;\n    margin-left: 0;\n}`)();\nvar stackDirectionRuleHorizontal = /* @__PURE__ */ (() => `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child {\n    margin-right: 0;\n    margin-bottom: 0;\n}`)();\nvar stackCSSRules = /* @__PURE__ */ (() => [\n  stackPositionRule,\n  stackGapRule,\n  ...nativeStackGapRules,\n  stackDirectionRuleVertical,\n  stackDirectionRuleHorizontal\n])();\nvar navigationCSSRules = [\n  `\nNavigationContainer\n[data-framer-component-type=\"NavigationContainer\"] > *,\n[data-framer-component-type=\"NavigationContainer\"] > [data-framer-component-type] {\n    position: relative;\n}`\n];\nvar scrollCSSRules = [\n  `[data-framer-component-type=\"Scroll\"]::-webkit-scrollbar { display: none; }`,\n  `[data-framer-component-type=\"ScrollContentWrapper\"] > * { position: relative; }`\n];\nvar nativeScrollCSSRules = [\n  `[data-framer-component-type=\"NativeScroll\"] { -webkit-overflow-scrolling: touch; }`,\n  `[data-framer-component-type=\"NativeScroll\"] > * { position: relative; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-both { overflow-x: auto; overflow-y: auto; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical { overflow-x: hidden; overflow-y: auto; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal { overflow-x: auto; overflow-y: hidden; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical > * { width: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal > * { height: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].scrollbar-hidden::-webkit-scrollbar { display: none; }`\n];\nvar deviceComponentCSSRules = [\n  `[data-framer-component-type=\"DeviceComponent\"].no-device > * { width: 100% !important; height: 100% !important; }`\n];\nvar pageContentWrapperWrapperCSSRules = [\n  `[data-framer-component-type=\"PageContentWrapper\"] > *, [data-framer-component-type=\"PageContentWrapper\"] > [data-framer-component-type] { position: relative; }`\n];\nvar presenceCSS = [\n  `[data-is-present=\"false\"], [data-is-present=\"false\"] * { pointer-events: none !important; }`\n];\nvar cursorCSS = [\n  `[data-framer-cursor=\"pointer\"] { cursor: pointer; }`,\n  `[data-framer-cursor=\"grab\"] { cursor: grab; }`,\n  `[data-framer-cursor=\"grab\"]:active { cursor: grabbing; }`\n];\nvar frameCSS = [\n  // Non-sites prototyping projects render with FrameWithMotion and Stacks. In\n  // that context this rule ensures pointer events work in a specific way\n  // designed for prototypes that we don't care about anymore in sites. We\n  // can't remove it for legacy reasons, but sites will never render any\n  // elements that are impacted by this rule. However, users can still use the\n  // <Frame> api in code, at which point this rule will kick in. We don't\n  // encourage the use of this API anymore, and bugs that come from this will\n  // be the user's concern.\n  `[data-framer-component-type=\"Frame\"] *, [data-framer-component-type=\"Stack\"] * { pointer-events: auto; }`,\n  // This is fully deprecated, and will never exist in code that is generated\n  // after 24/01/2023. There will be existing code-generated that depends on\n  // this rule existing, so we can't remove it.\n  `[data-framer-generated] * { pointer-events: unset }`\n];\nvar resetCSS = [\n  `[data-reset=\"button\"] {\n        border-width: 0;\n        padding: 0;\n        background: none;\n}`\n];\nvar hideScrollbars = [\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar { width: 0px; height: 0px; }`,\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar-thumb { background: transparent; }`,\n  `[data-hide-scrollbars=\"true\"] { scrollbar-width: none; }`\n];\nvar willChangeOverrideCSSVariable = \"--framer-will-change-override\";\nvar willChangeEffectOverrideCSSVariable = \"--framer-will-change-effect-override\";\nvar anySafariVersion = \"(background: -webkit-named-image(i))\";\nvar safari16OrGreater = \"(grid-template-rows: subgrid)\";\nvar willChangeTransformRules = (isPreview) => isPreview ? [\n  `body { ${willChangeOverrideCSSVariable}: none; }`,\n  `@supports ${anySafariVersion} and (not ${safari16OrGreater}) { body { ${willChangeOverrideCSSVariable}: transform; } }`\n] : [`body { ${willChangeOverrideCSSVariable}: none; ${willChangeEffectOverrideCSSVariable}: none; }`];\nvar frameCSSRules = (isPreview) => {\n  return isPreview ? frameCSS : [];\n};\nvar svgCSSRules = [`.svgContainer svg { display: block; }`];\nvar overflowClipFallbackCSSVariable = \"--overflow-clip-fallback\";\nvar overflowClipFallbackCSSRules = /* @__PURE__ */ (() => [\n  `@supports (not (overflow: clip)) {\n        :root { ${overflowClipFallbackCSSVariable}: hidden; }\n    }`\n])();\nvar combineCSSRules = (isPreview) => [\n  ...willChangeTransformRules(isPreview),\n  ...componentCSSRules,\n  ...textCSSRules,\n  ...richTextCSSRules,\n  ...deprecatedRichTextCSSRules,\n  ...stackCSSRules,\n  ...navigationCSSRules,\n  ...scrollCSSRules,\n  ...nativeScrollCSSRules,\n  ...pageContentWrapperWrapperCSSRules,\n  ...deviceComponentCSSRules,\n  ...presenceCSS,\n  ...cursorCSS,\n  ...frameCSSRules(isPreview),\n  ...svgCSSRules,\n  ...resetCSS,\n  ...hideScrollbars,\n  ...overflowClipFallbackCSSRules\n];\nvar combinedCSSRules = /* @__PURE__ */ combineCSSRules(false);\nvar combinedCSSRulesForPreview = /* @__PURE__ */ combineCSSRules(true);\nvar didInject = false;\nfunction injectComponentCSSRules() {\n  if (didInject) return;\n  didInject = true;\n  const styles4 = RenderTarget.current() === RenderTarget.preview ? combinedCSSRulesForPreview : combinedCSSRules;\n  for (const rule of styles4) {\n    injectCSSRule(rule, void 0, void 0);\n  }\n}\n\n// ../../library/src/utils/applyControlDefaultsToReactDefaultProps.ts\nfunction isReactComponent(component) {\n  return isObject2(component) || isFunction(component);\n}\nvar optionalKey = \"optional\";\nfunction controlIsOptional(control) {\n  return !!control && optionalKey in control && control[optionalKey] === true;\n}\nfunction shouldBeNever(_) {\n}\nfunction getControlDefaultValue(control) {\n  try {\n    switch (control.type) {\n      case \"string\" /* String */:\n      case \"collectionreference\" /* CollectionReference */:\n      case \"multicollectionreference\" /* MultiCollectionReference */:\n      case \"color\" /* Color */:\n      case \"date\" /* Date */:\n      case \"link\" /* Link */:\n      case \"boxshadow\" /* BoxShadow */:\n      case \"padding\" /* Padding */:\n      case \"borderradius\" /* BorderRadius */:\n      case \"gap\" /* Gap */:\n        return isString(control.defaultValue) ? control.defaultValue : void 0;\n      case \"boolean\" /* Boolean */:\n        return isBoolean(control.defaultValue) ? control.defaultValue : void 0;\n      case \"enum\" /* Enum */:\n        if (isUndefined(control.defaultValue)) return void 0;\n        return control.options.includes(control.defaultValue) ? control.defaultValue : void 0;\n      case \"fusednumber\" /* FusedNumber */:\n      case \"number\" /* Number */:\n        return isNumber(control.defaultValue) ? control.defaultValue : void 0;\n      case \"transition\" /* Transition */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"border\" /* Border */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"font\" /* Font */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"linkrelvalues\" /* LinkRelValues */:\n        return isArray(control.defaultValue) ? control.defaultValue : void 0;\n      case \"object\" /* Object */: {\n        const value = isObject2(control.defaultValue) ? control.defaultValue : {};\n        if (isObject2(control.controls)) {\n          applyControlDefaultsToDefaultProps(value, control.controls);\n        }\n        return value;\n      }\n      case \"array\" /* Array */:\n        return isArray(control.defaultValue) ? control.defaultValue : void 0;\n      case \"file\" /* File */:\n      case \"image\" /* Image */:\n      case \"richtext\" /* RichText */:\n      case \"pagescope\" /* PageScope */:\n      case \"eventhandler\" /* EventHandler */:\n      case \"segmentedenum\" /* SegmentedEnum */:\n      case \"responsiveimage\" /* ResponsiveImage */:\n      case \"componentinstance\" /* ComponentInstance */:\n      case \"slot\" /* Slot */:\n      case \"scrollsectionref\" /* ScrollSectionRef */:\n      case \"customcursor\" /* CustomCursor */:\n      case \"cursor\" /* Cursor */:\n      case \"trackingid\" /* TrackingId */:\n      case \"vectorsetitem\" /* VectorSetItem */:\n        return void 0;\n      // No default\n      default:\n        shouldBeNever(control);\n        return void 0;\n    }\n  } catch {\n    return void 0;\n  }\n}\nfunction applyControlDefaultsToDefaultProps(defaultProps, controls) {\n  for (const controlKey in controls) {\n    const control = controls[controlKey];\n    if (!control) continue;\n    const currentDefault = defaultProps[controlKey];\n    if (!isUndefined(currentDefault)) continue;\n    if (controlIsOptional(control)) continue;\n    const defaultValue = getControlDefaultValue(control);\n    if (isUndefined(defaultValue)) continue;\n    defaultProps[controlKey] = defaultValue;\n  }\n}\nfunction getDefaultProps(component) {\n  if (isObject2(component.defaultProps)) {\n    return component.defaultProps;\n  }\n  const defaultProps = {};\n  component.defaultProps = defaultProps;\n  return defaultProps;\n}\nfunction applyControlDefaultsToReactDefaultProps(component, controls) {\n  if (!isReactComponent(component)) return;\n  const defaultProps = getDefaultProps(component);\n  applyControlDefaultsToDefaultProps(defaultProps, controls);\n}\n\n// ../../library/src/utils/addPropertyControls.ts\nfunction addPropertyControls(component, propertyControls) {\n  Object.assign(component, { propertyControls });\n  applyControlDefaultsToReactDefaultProps(component, propertyControls);\n}\nfunction getPropertyControls(component) {\n  return component.propertyControls;\n}\n\n// ../../library/src/components/Device/presets.ts\nvar defaultPresetId = \"iphone-12-pro\";\nvar presetsBase = /* @__PURE__ */ (() => ({\n  iPhonePro: {\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 21,\n    clayBezelRight: 21,\n    clayBezelTop: 21,\n    clayBezelBottom: 21,\n    clayBezelRadius: 38 + 21\n  },\n  iPhone8: {\n    screenRadius: 0,\n    clayBezelLeft: 24,\n    clayBezelRight: 24,\n    clayBezelTop: 96,\n    clayBezelBottom: 96,\n    clayBezelRadius: 38 * 1.5\n  },\n  iPadPro: {\n    screenRadius: 25,\n    clayBezelLeft: 38,\n    clayBezelRight: 38,\n    clayBezelTop: 38,\n    clayBezelBottom: 38,\n    clayBezelRadius: 25 + 38\n  },\n  desktop: {\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 20,\n    clayBezelBottom: 20,\n    clayBezelRadius: 20\n  }\n}))();\nvar devicePresets = /* @__PURE__ */ (() => [\n  {\n    id: \"iphone-12\",\n    title: \"iPhone 12\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 500,\n      height: 974,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-mini\",\n    title: \"iPhone 12 Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 450,\n      height: 890,\n      screenOffsetTop: 55,\n      screenOffsetLeft: 45\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M142 18c0 19 14 47 43 48h349c31 0 44-29 44-48 0-12 4-18 14-18h18c38 0 52 4 66 11 14 8 25 19 33 33v1c7 14 11 28 11 65v1340c0 38-4 52-11 66-8 14-19 25-33 33h-1c-14 7-28 11-65 11H110c-38 0-52-4-66-11-14-8-25-19-33-33v-1c-7-13-11-27-11-64V110c0-38 4-52 11-66 8-14 19-25 33-33h1C58 4 72 0 109 0h16c11 0 17 6 17 18z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 460,\n      height: 880,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 31.5, right: 30.5, bottom: 30 }\n    }\n  },\n  {\n    id: \"iphone-12-pro\",\n    title: \"iPhone 12 Pro\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 494,\n      height: 968,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-pro-max\",\n    title: \"iPhone 12 Pro Max\",\n    screenRadius: 50,\n    // to prevent leaking pixel in the corners, see https://github.com/framer/company/issues/20429\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 428,\n    screenHeight: 926,\n    externalClay: {\n      width: 532,\n      height: 1050,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<path d=\"M102 0c6 0 7 3 7 9 0 10 7 23 24 23h164c13 0 22-12 22-23 0-6 1-9 7-9h34c24 0 32 2 41 7s15 11 20 20 7 17 7 41v790c0 24-2 32-7 41s-11 15-20 20-17 7-41 7H68c-24 0-32-2-41-7s-15-11-20-20-7-17-7-41V68c0-24 2-32 7-41S18 12 27 7s17-7 41-7h34z\" fill=\"#000\" fill-rule=\"evenodd\"/>',\n    realisticImage: {\n      width: 528,\n      height: 1026,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 28.5, right: 28, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-11\",\n    title: \"iPhone 11\",\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 35.5,\n    clayBezelRight: 35.5,\n    clayBezelTop: 35.5,\n    clayBezelBottom: 35.5,\n    clayBezelRadius: 77,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M85.5 0C89.1 0 92 3 92 6.5c.3 6 1.5 10 3.4 13.5 2.2 4.1 5.5 7.4 9.6 9.6 4.2 2.2 8.9 3.4 17 3.4h170c8.1 0 12.8-1.2 17-3.4 4.1-2.2 7.4-5.5 9.6-9.6A31 31 0 00322 6.5c0-3.6 3-6.5 6.5-6.5h32.3c18.5 0 25.2 2 32 5.5 6.7 3.7 12 9 15.7 15.7 3.6 6.8 5.5 13.5 5.5 32v789.6c0 18.5-2 25.2-5.5 32-3.7 6.7-9 12-15.7 15.7-6.8 3.6-13.5 5.5-32 5.5H53.2c-18.5 0-25.2-2-32-5.5-6.7-3.7-12-9-15.7-15.7C2 868 0 861.3 0 842.8V53.2c0-18.5 2-25.2 5.5-32 3.7-6.7 9-12 15.7-15.7C28 2 34.7 0 53.2 0h32.3z\" fill=\"#000\" fill-rule=\"nonzero\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#202120\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F9F6EF\" },\n        { id: \"purple\", title: \"Purple\", colorValue: \"#D1CDDB\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#ADE0CD\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#B90D2E\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FFE680\" }\n      ],\n      handOffset: { left: 14.5, right: 14.5, bottom: 14.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro\",\n    title: \"iPhone 11 Pro\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 375,\n    screenHeight: 812,\n    externalClay: {\n      width: 485,\n      height: 942,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M292 8.668V9c0 9.266-7.07 21-23.332 21h-162C90.402 30 83.332 18.266 83.332 9v-.332c0-4.285 0-8.668-7.664-8.668H43.332C16.312 0 0 16.313 0 43.332v725.336C0 795.688 16.313 812 43.332 812h288.336c27.02 0 43.332-16.313 43.332-43.332V43.332C375 16.312 358.687 0 331.668 0h-32C292 0 292 4.383 292 8.668zm0 0\"/>',\n    realisticImage: {\n      width: 475,\n      height: 912,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 24.5, right: 24.5, bottom: 23.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro-max\",\n    title: \"iPhone 11 Pro Max\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M96 0c3.313 0 5.91 2.688 6 6 .18 6.645 1.191 10.148 2.938 13.41 1.917 3.586 4.73 6.402 8.316 8.317 3.586 1.918 7.441 2.941 15.445 2.941h156.602c8.004 0 11.86-1.023 15.445-2.941 3.586-1.915 6.399-4.73 8.317-8.317 1.746-3.265 2.746-6.758 2.937-13.41.094-3.313 2.688-6 6-6h46.004c17.387 0 23.687 1.809 30.043 5.21 6.355 3.4 11.344 8.388 14.742 14.743C412.191 26.31 414 32.61 414 49.996v796.008c0 17.387-1.809 23.687-5.21 30.043-3.4 6.355-8.388 11.344-14.743 14.742-6.356 3.402-12.656 5.211-30.043 5.211H49.996c-17.387 0-23.687-1.809-30.043-5.21-6.355-3.4-11.344-8.388-14.742-14.743C1.809 869.69 0 863.39 0 846.004V49.996C0 32.61 1.809 26.31 5.21 19.953c3.4-6.355 8.388-11.344 14.743-14.742C26.31 1.809 32.61 0 49.996 0zm0 0\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 23.5, right: 24.5, bottom: 24 }\n    }\n  },\n  {\n    id: \"iphone-8\",\n    title: \"iPhone 8\",\n    ...presetsBase.iPhone8,\n    screenWidth: 375,\n    screenHeight: 667,\n    externalClay: {\n      width: 491,\n      height: 971,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 475,\n      height: 927,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 18.5 }\n    }\n  },\n  {\n    id: \"iphone-8-plus\",\n    title: \"iPhone 8 Plus\",\n    ...presetsBase.iPhone8,\n    screenWidth: 414,\n    screenHeight: 736,\n    externalClay: {\n      width: 530,\n      height: 1064,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 164\n    },\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 21, right: 20.5, bottom: 19 }\n    }\n  },\n  {\n    id: \"iphone-se\",\n    title: \"iPhone SE\",\n    screenWidth: 320,\n    screenHeight: 568,\n    screenRadius: 0,\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 112,\n    clayBezelBottom: 112,\n    clayBezelRadius: 38 * 1.5,\n    externalClay: {\n      width: 436,\n      height: 872,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 420,\n      height: 828,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#F7CFCA\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 26.5 }\n    }\n  },\n  {\n    id: \"samsung-galaxy-s7\",\n    title: \"Samsung Galaxy S7\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 640,\n    externalClay: {\n      width: 454,\n      height: 880,\n      screenOffsetTop: 120,\n      screenOffsetLeft: 47\n    },\n    realisticImage: {\n      width: 440,\n      height: 860,\n      screenOffsetLeft: 40,\n      screenOffsetTop: 110,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 26, right: 25.5, bottom: 32 }\n    }\n  },\n  // deprecated\n  {\n    id: \"samsung-note-10\",\n    title: \"Samsung Note 10\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 10,\n    clayBezelLeft: 7,\n    clayBezelRight: 7,\n    clayBezelTop: 15,\n    clayBezelBottom: 15,\n    clayBezelRadius: 15\n  },\n  {\n    id: \"pixel-5\",\n    title: \"Google Pixel 5\",\n    screenRadius: 31,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 460,\n      height: 900,\n      screenOffsetTop: 60,\n      screenOffsetLeft: 50\n    },\n    realisticImage: {\n      width: 920 / 2,\n      height: 1760 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2,\n      availableColors: [\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#2E2C36\" },\n        { id: \"sorta-sage\", title: \"Sorta Sage\", colorValue: \"#B7C9C0\" }\n      ],\n      handOffset: {\n        left: 31.5,\n        right: 31,\n        bottom: 31\n        /* 1t */\n      }\n    }\n  },\n  {\n    id: \"pixel-4\",\n    title: \"Google Pixel 4\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 34,\n    clayBezelLeft: 10,\n    clayBezelRight: 10,\n    clayBezelTop: 50,\n    clayBezelBottom: 25,\n    clayBezelRadius: 50,\n    externalClay: {\n      width: 460,\n      height: 938,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 89\n    },\n    realisticImage: {\n      width: 460,\n      height: 920,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 80,\n      availableColors: [\n        { id: \"clearly-white\", title: \"Clearly White\", colorValue: \"#EAEDF2\" },\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#1A1A1A\" },\n        { id: \"oh-so-orange\", title: \"Oh So Orange\", colorValue: \"#FF7A68\" }\n      ],\n      handOffset: {\n        left: 35.5,\n        right: 35.5,\n        bottom: 57\n        /* 1t */\n      }\n    }\n  },\n  // Desktop ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"macbook-air\",\n    title: \"MacBook Air\",\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1890,\n      height: 1125,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 98\n    },\n    realisticImage: {\n      width: 3848 / 2,\n      height: 2240 / 2,\n      screenOffsetLeft: 484 / 2,\n      screenOffsetTop: 196 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-13\",\n    title: `MacBook Pro 13\"`,\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1914,\n      height: 1169,\n      screenOffsetLeft: 236,\n      screenOffsetTop: 109\n    },\n    realisticImage: {\n      width: 3916 / 2,\n      height: 2330 / 2,\n      screenOffsetLeft: 518 / 2,\n      screenOffsetTop: 218 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-16\",\n    title: `MacBook Pro 16\"`,\n    screenWidth: 1536,\n    screenHeight: 960,\n    disableRotation: true,\n    externalClay: {\n      width: 1984,\n      height: 1179,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 78\n    },\n    realisticImage: {\n      width: 4032 / 2,\n      height: 2348 / 2,\n      screenOffsetLeft: 480 / 2,\n      screenOffsetTop: 148 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"imac-21-5\",\n    title: `iMac 21.5\"`,\n    screenWidth: 2048,\n    screenHeight: 1152,\n    disableRotation: true,\n    externalClay: {\n      width: 2288,\n      height: 1892,\n      screenOffsetLeft: 120,\n      screenOffsetTop: 120\n    },\n    realisticImage: {\n      width: 4562 / 2,\n      height: 3796 / 2,\n      screenOffsetLeft: 232 / 2,\n      screenOffsetTop: 244 / 2\n    }\n  },\n  {\n    id: \"imac-27\",\n    title: `iMac 27\"`,\n    screenWidth: 2560,\n    screenHeight: 1440,\n    disableRotation: true,\n    externalClay: {\n      width: 2848,\n      height: 2351,\n      screenOffsetLeft: 144,\n      screenOffsetTop: 151\n    },\n    realisticImage: {\n      width: 5676 / 2,\n      height: 4720 / 2,\n      screenOffsetLeft: 278 / 2,\n      screenOffsetTop: 292 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pro\", title: \"Pro\", colorValue: \"#5F5E63\" }\n      ]\n    }\n  },\n  {\n    id: \"pro-display-xdr\",\n    title: `Pro Display XDR`,\n    screenWidth: 3008,\n    screenHeight: 1692,\n    disableRotation: true,\n    externalClay: {\n      width: 3148,\n      height: 2325,\n      screenOffsetLeft: 70,\n      screenOffsetTop: 60\n    },\n    realisticImage: {\n      width: 6276 / 2,\n      height: 4695 / 2,\n      screenOffsetLeft: 130 / 2,\n      screenOffsetTop: 130 / 2\n    }\n  },\n  {\n    id: \"dell-xps\",\n    title: `Dell XPS`,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    disableRotation: true,\n    externalClay: {\n      width: 2624,\n      height: 1381,\n      screenOffsetLeft: 352,\n      screenOffsetTop: 57\n    },\n    realisticImage: {\n      width: 5412 / 2,\n      height: 2746 / 2,\n      screenOffsetLeft: 786 / 2,\n      screenOffsetTop: 108 / 2\n    }\n  },\n  {\n    id: \"surface-book\",\n    title: `Microsoft Surface Book`,\n    screenWidth: 1500,\n    screenHeight: 1e3,\n    disableRotation: true,\n    externalClay: {\n      width: 2089,\n      height: 1234,\n      screenOffsetLeft: 296,\n      screenOffsetTop: 93\n    },\n    realisticImage: {\n      width: 4200 / 2,\n      height: 2508 / 2,\n      screenOffsetLeft: 600 / 2,\n      screenOffsetTop: 210 / 2\n    }\n  },\n  // Tablets ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"ipad\",\n    title: \"iPad\",\n    screenRadius: 0,\n    screenWidth: 810,\n    screenHeight: 1080,\n    clayBezelLeft: 30,\n    clayBezelRight: 30,\n    clayBezelTop: 95,\n    clayBezelBottom: 95,\n    clayBezelRadius: 0,\n    externalClay: {\n      width: 966,\n      height: 1378,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 149\n    },\n    realisticImage: {\n      width: 1920 / 2,\n      height: 2720 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 140,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-mini\",\n    title: \"iPad Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 768,\n    screenHeight: 1024,\n    externalClay: {\n      width: 924,\n      height: 1384,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 180\n    },\n    realisticImage: {\n      width: 1856 / 2,\n      height: 2728 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 340 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-air\",\n    title: \"iPad Air\",\n    screenRadius: 18,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 820,\n    screenHeight: 1180,\n    externalClay: {\n      width: 994,\n      height: 1374,\n      screenOffsetLeft: 87,\n      screenOffsetTop: 97\n    },\n    realisticImage: {\n      width: 1960 / 2,\n      height: 2680 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 160 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#ECCBC4\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#CBDAE6\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-11\",\n    title: \"iPad Pro 11\\u2033\",\n    screenRadius: 17,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 834,\n    screenHeight: 1194,\n    externalClay: {\n      width: 990,\n      height: 1370,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 1968 / 2,\n      height: 2688 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-12-9\",\n    title: \"iPad Pro 12.9\\u2033\",\n    ...presetsBase.iPadPro,\n    screenRadius: 17,\n    screenWidth: 1024,\n    screenHeight: 1366,\n    externalClay: {\n      width: 1180,\n      height: 1542,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 2348 / 2,\n      height: 3032 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"surface-3\",\n    title: \"Microsoft Surface 3\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 960,\n    screenHeight: 640,\n    externalClay: {\n      width: 1184,\n      height: 864,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 2280 / 2,\n      height: 1580 / 2,\n      screenOffsetLeft: 180 / 2,\n      screenOffsetTop: 150 / 2\n    }\n  },\n  {\n    id: \"surface-pro-4\",\n    title: \"Microsoft Surface Pro 4\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 1368,\n    screenHeight: 912,\n    externalClay: {\n      width: 1592,\n      height: 1136,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 3176 / 2,\n      height: 2224 / 2,\n      screenOffsetLeft: 220 / 2,\n      screenOffsetTop: 200 / 2\n    }\n  },\n  // Watches ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"apple-watch-44\",\n    title: `Apple Watch 44mm`,\n    screenRadius: 33,\n    screenWidth: 184,\n    screenHeight: 224,\n    disableRotation: true,\n    externalClay: {\n      width: 298,\n      height: 502,\n      screenOffsetLeft: 57,\n      screenOffsetTop: 129\n    },\n    realisticImage: {\n      width: 548 / 2,\n      height: 908 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  {\n    id: \"apple-watch-40\",\n    title: `Apple Watch 40mm`,\n    screenRadius: 27,\n    screenWidth: 162,\n    screenHeight: 197,\n    disableRotation: true,\n    externalClay: {\n      width: 280,\n      height: 463,\n      screenOffsetLeft: 59,\n      screenOffsetTop: 124\n    },\n    realisticImage: {\n      width: 504 / 2,\n      height: 854 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  // TVs ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"tv-full-hd\",\n    title: `Full HD`,\n    screenRadius: 0,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    externalClay: {\n      width: 1968,\n      height: 1168,\n      screenOffsetLeft: 24,\n      screenOffsetTop: 12\n    },\n    realisticImage: {\n      width: 4040 / 2,\n      height: 2360 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2\n    }\n  },\n  {\n    id: \"tv-4k\",\n    title: `4K`,\n    screenRadius: 0,\n    screenWidth: 3840,\n    screenHeight: 2160,\n    externalClay: {\n      width: 3908,\n      height: 2308,\n      screenOffsetLeft: 34,\n      screenOffsetTop: 24\n    },\n    realisticImage: {\n      width: 7960 / 2,\n      height: 4600 / 2,\n      screenOffsetLeft: 140 / 2,\n      screenOffsetTop: 140 / 2\n    }\n  },\n  // Old devices ------------------------------------------------------------------------------------------------------------------------\n  // deprecated\n  {\n    id: \"720p\",\n    title: \"720p\",\n    ...presetsBase.desktop,\n    screenWidth: 720,\n    screenHeight: 1280\n  },\n  // deprecated\n  {\n    id: \"900p\",\n    title: \"900p\",\n    ...presetsBase.desktop,\n    screenWidth: 900,\n    screenHeight: 1440\n  },\n  // deprecated\n  {\n    id: \"1080p\",\n    title: \"1080p\",\n    ...presetsBase.desktop,\n    screenWidth: 1080,\n    screenHeight: 1920\n  },\n  // deprecated\n  {\n    id: \"1440p\",\n    title: \"1440p\",\n    ...presetsBase.desktop,\n    screenWidth: 1440,\n    screenHeight: 2560\n  },\n  // deprecated\n  {\n    id: \"4k\",\n    title: \"4K\",\n    ...presetsBase.desktop,\n    screenWidth: 2160,\n    screenHeight: 3840\n  }\n])();\nvar deviceCodeComponentPresetIds = [\n  \"iphone-12\",\n  \"iphone-12-mini\",\n  \"iphone-12-pro\",\n  \"iphone-11\",\n  \"iphone-11-pro\",\n  \"iphone-11-pro-max\",\n  \"iphone-8\",\n  \"iphone-8-plus\",\n  \"iphone-se\",\n  \"samsung-note-10\",\n  \"pixel-4\",\n  \"ipad\",\n  \"ipad-pro-11\",\n  \"ipad-pro-12-9\",\n  \"720p\",\n  \"900p\",\n  \"1080p\",\n  \"1440p\",\n  \"4k\"\n];\nvar devicePresetsMap = /* @__PURE__ */ devicePresets.reduce(\n  (map2, preset) => {\n    map2[preset.id] = preset;\n    return map2;\n  },\n  {}\n);\nfunction getDevicePreset(presetId) {\n  return devicePresetsMap[presetId] ?? devicePresetsMap[defaultPresetId];\n}\n\n// ../../library/src/components/Device/DeviceCodeComponentProps.ts\nvar defaultDeviceProps = {\n  preset: defaultPresetId,\n  customWidth: 375,\n  customHeight: 800,\n  customBezel: 20,\n  isMixedBezel: false,\n  bezelTop: 20,\n  bezelRight: 20,\n  bezelBottom: 20,\n  bezelLeft: 20,\n  customBezelRadius: 20,\n  customScreenRadius: 0,\n  orientation: \"portrait\",\n  skin: \"clay\",\n  theme: \"dark\",\n  shadow: true,\n  backgroundColor: void 0\n};\nfunction convertPropsToDeviceOptions(props, { forceOldClay = false } = {}) {\n  var _a;\n  if (props.preset === \"no-device\") {\n    return;\n  }\n  let preset;\n  if (props.preset === \"custom\") {\n    preset = {\n      screenWidth: props.customWidth,\n      screenHeight: props.customHeight,\n      screenRadius: props.customScreenRadius,\n      clayBezelTop: props.isMixedBezel ? props.bezelTop : props.customBezel,\n      clayBezelRight: props.isMixedBezel ? props.bezelRight : props.customBezel,\n      clayBezelBottom: props.isMixedBezel ? props.bezelBottom : props.customBezel,\n      clayBezelLeft: props.isMixedBezel ? props.bezelLeft : props.customBezel,\n      clayBezelRadius: props.customBezelRadius\n    };\n  } else {\n    preset = getDevicePreset(props.preset);\n  }\n  const colors = getColorsFromTheme(props.theme);\n  const shadowColor = colors.shadowColor;\n  const shadow = props.shadow ? `0 10px 30px ${shadowColor}` : void 0;\n  const rotate = !preset.disableRotation && (props.orientation === \"landscape\" || props.rotated);\n  let deviceWidth;\n  let deviceHeight;\n  let screenOffsetTop;\n  let screenOffsetLeft;\n  let colorId = props.colorId;\n  let appearance;\n  if ((props.skin === void 0 || props.skin === \"realistic\") && preset.realisticImage && props.preset) {\n    deviceWidth = preset.realisticImage.width;\n    deviceHeight = preset.realisticImage.height;\n    screenOffsetTop = preset.realisticImage.screenOffsetTop;\n    screenOffsetLeft = preset.realisticImage.screenOffsetLeft;\n    colorId = colorId ?? colorIdForTheme(props.theme, preset.realisticImage.availableColors);\n    appearance = {\n      type: \"realistic\",\n      imageUrl: colorId ? `https://preview.framercdn.com/images/devices/${props.preset}-${colorId}.png` : `https://preview.framercdn.com/images/devices/${props.preset}.png`,\n      imageWidth: preset.realisticImage.width,\n      imageHeight: preset.realisticImage.height,\n      rotateImage: rotate\n    };\n  } else {\n    deviceWidth = preset.screenWidth + (preset.clayBezelLeft ?? 0) + (preset.clayBezelRight ?? 0);\n    deviceHeight = preset.screenHeight + (preset.clayBezelTop ?? 0) + (preset.clayBezelBottom ?? 0);\n    screenOffsetTop = preset.clayBezelTop ?? 0;\n    screenOffsetLeft = preset.clayBezelLeft ?? 0;\n    if (preset.externalClay && !forceOldClay) {\n      deviceWidth = preset.externalClay.width;\n      deviceHeight = preset.externalClay.height;\n      screenOffsetTop = preset.externalClay.screenOffsetTop;\n      screenOffsetLeft = preset.externalClay.screenOffsetLeft;\n      appearance = {\n        type: \"external-clay\",\n        imageUrl: `https://preview.framercdn.com/images/devices/${props.preset}-${props.theme}.svg`,\n        imageWidth: preset.externalClay.width,\n        imageHeight: preset.externalClay.height,\n        rotateImage: rotate\n      };\n    } else {\n      appearance = {\n        type: \"clay\",\n        bezelRadius: preset.clayBezelRadius !== void 0 ? `${preset.clayBezelRadius}px` : void 0,\n        bezelColor: colors.bezelColor,\n        bezelShadeColor: colors.bezelShadeColor\n      };\n    }\n  }\n  let screenWidth = preset.screenWidth;\n  let screenHeight = preset.screenHeight;\n  if (rotate) {\n    const screenOffsetRight = deviceWidth - screenWidth - screenOffsetLeft;\n    [deviceWidth, deviceHeight] = [deviceHeight, deviceWidth];\n    [screenWidth, screenHeight] = [screenHeight, screenWidth];\n    [screenOffsetTop, screenOffsetLeft] = [screenOffsetRight, screenOffsetTop];\n  }\n  const handOffset = (_a = preset.realisticImage) == null ? void 0 : _a.handOffset;\n  return {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius: preset.screenRadius !== void 0 ? `${preset.screenRadius}px` : void 0,\n    screenMaskImage: appearance.type !== \"realistic\" && preset.screenMask ? makeScreenMaskImage({\n      mask: preset.screenMask,\n      // width/height of the mask = screen width/height pre-rotation\n      width: preset.screenWidth,\n      height: preset.screenHeight,\n      rotate\n    }) : void 0,\n    screenColor: colors.screenColor,\n    shadow,\n    hand: props.hand !== void 0 && supportsHand(props) ? {\n      imageUrl: `https://preview.framercdn.com/images/hands/${props.hand}.png`,\n      offsetLeft: handOffset == null ? void 0 : handOffset.left,\n      offsetRight: handOffset == null ? void 0 : handOffset.right,\n      offsetBottom: handOffset == null ? void 0 : handOffset.bottom\n    } : void 0,\n    background: props.backgroundColor,\n    theme: props.theme,\n    colorId\n  };\n}\nfunction makeScreenMaskImage({\n  mask,\n  width,\n  height,\n  rotate = false\n}) {\n  const transform2 = rotate ? (\n    // Rotate 90 degrees counter-clockwise around (0,0), then move the\n    // result down into the viewport (rightmost transform is applied first).\n    `transform=\"translate(0 ${width}) rotate(-90)\"`\n  ) : \"\";\n  return encodeSVGForCSS(\n    `<svg xmlns=\"http://www.w3.org/2000/svg\" viewport=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\"><g x=\"0\" y=\"0\" ${transform2}>${mask}</g></svg>`\n  );\n}\nvar lightColors = /* @__PURE__ */ new Set([\"white\", \"silver\", \"clearly-white\", \"sorta-sage\"]);\nvar darkColors = /* @__PURE__ */ new Set([\"black\", \"space-grey\", \"graphite\", \"just-black\", \"pro\"]);\nfunction colorIdForTheme(theme, availableColors) {\n  var _a;\n  if (!availableColors) return;\n  const colors = theme === \"light\" ? lightColors : darkColors;\n  for (const color2 of availableColors) {\n    if (colors.has(color2.id)) {\n      return color2.id;\n    }\n  }\n  return (_a = availableColors[0]) == null ? void 0 : _a.id;\n}\nfunction supportsHand({ preset: presetId, skin, orientation = \"portrait\" }) {\n  var _a;\n  if (!presetId || presetId === \"custom\" || presetId === \"no-device\" || orientation === \"landscape\") return false;\n  const preset = getDevicePreset(presetId);\n  return skin !== \"clay\" && ((_a = preset.realisticImage) == null ? void 0 : _a.handOffset) !== void 0;\n}\n\n// ../../library/src/components/Device/usePrototypingMetaTags.ts\nimport React16 from \"react\";\nfunction applyMetaTag(name, props) {\n  var _a;\n  let tag = document.querySelector(`meta[name=\"${name}\"]`);\n  if (!tag) {\n    tag = document.createElement(\"meta\");\n    (_a = document.getElementsByTagName(\"head\")[0]) == null ? void 0 : _a.appendChild(tag);\n    tag.setAttribute(\"name\", name);\n  }\n  for (const [k, v] of Object.entries(props)) {\n    tag.setAttribute(k, v);\n  }\n}\nfunction usePrototypingMetaTags() {\n  React16.useEffect(() => {\n    applyMetaTag(\"mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-status-bar-style\", {\n      content: \"black-translucent\"\n    });\n    applyMetaTag(\"viewport\", {\n      content: \"viewport-fit=cover, user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1\"\n    });\n  }, []);\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nvar DeviceCodeComponentInner = ({\n  children,\n  ...props\n}) => {\n  usePrototypingMetaTags();\n  const deviceOptions = convertPropsToDeviceOptions(props, { forceOldClay: true });\n  React17.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  if (!deviceOptions) {\n    return /* @__PURE__ */ jsx11(\n      \"div\",\n      {\n        \"data-framer-component-type\": \"DeviceComponent\",\n        className: \"no-device\",\n        style: { width: \"100%\", height: \"100%\" },\n        children: /* @__PURE__ */ jsx11(ProvideParentSize, { parentSize: 1 /* Disabled */, children })\n      }\n    );\n  }\n  const child = Array.isArray(children) ? children[0] : children;\n  const resizedChild = child && React17.isValidElement(child) ? React17.cloneElement(child, {\n    width: deviceOptions.screenWidth,\n    height: deviceOptions.screenHeight\n  }) : null;\n  return /* @__PURE__ */ jsx11(Device, { scaleTo: \"dynamic\", deviceOptions, children: resizedChild });\n};\nvar DeviceCodeComponent = /* @__PURE__ */ (() => {\n  const { componentWidth: defaultWidth2, componentHeight: defaultHeight2 } = getComponentSize(\n    convertPropsToDeviceOptions(defaultDeviceProps, { forceOldClay: true })\n  );\n  DeviceCodeComponentInner.defaultProps = {\n    width: defaultWidth2,\n    height: defaultHeight2,\n    ...defaultDeviceProps\n  };\n  const deviceCodeComponentPresets = devicePresets.filter((preset) => deviceCodeComponentPresetIds.includes(preset.id));\n  addPropertyControls(DeviceCodeComponentInner, {\n    children: {\n      title: \"Content\",\n      type: \"slot\" /* Slot */,\n      maxCount: 1\n    },\n    preset: {\n      type: \"enum\" /* Enum */,\n      options: [\"no-device\", \"custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.id)),\n      optionTitles: [\"No Device\", \"Custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.title))\n    },\n    customWidth: {\n      title: \"Width\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customHeight: {\n      title: \"Height\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezel: {\n      title: \"Bezel\",\n      type: \"fusednumber\" /* FusedNumber */,\n      min: 0,\n      toggleKey: \"isMixedBezel\",\n      toggleTitles: [\"a\", \"b\"],\n      valueKeys: [\"bezelTop\", \"bezelRight\", \"bezelBottom\", \"bezelLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezelRadius: {\n      title: \"Bezel Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customScreenRadius: {\n      title: \"Screen Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    orientation: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"portrait\", \"landscape\"],\n      optionTitles: [\"Portrait\", \"Landscape\"],\n      optionIcons: [\"orientation-portrait\", \"orientation-landscape\"],\n      hidden: (props) => !!props.preset && !supportsOrientation(props.preset)\n    },\n    skin: {\n      title: \"Device\",\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"realistic\", \"clay\"],\n      optionTitles: [\"Realistic\", \"Clay\"],\n      defaultValue: \"clay\",\n      hidden: (props) => !!props.preset && !supportsRealisticSkin(props.preset)\n    },\n    theme: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"light\", \"dark\"],\n      optionTitles: [\"Light\", \"Dark\"],\n      hidden: (props) => !!props.preset && !supportsThemes(props.preset, props.skin)\n    },\n    shadow: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      hidden: ({ skin, preset }) => preset !== \"custom\" && skin === \"realistic\" || preset === \"no-device\"\n    },\n    hand: {\n      type: \"enum\" /* Enum */,\n      options: [void 0, \"hand-1\", \"hand-2\"],\n      optionTitles: [\"None\", \"Model 1\", \"Model 2\"],\n      hidden: (props) => !supportsHand(props)\n    },\n    backgroundColor: {\n      type: \"color\" /* Color */,\n      title: \"Background\",\n      optional: true,\n      hidden: ({ preset }) => preset === \"no-device\"\n    }\n  });\n  return DeviceCodeComponentInner;\n})();\nfunction supportsOrientation(presetId) {\n  if (presetId === \"no-device\") return false;\n  if (presetId === \"custom\") return true;\n  const preset = getDevicePreset(presetId);\n  return !preset.disableRotation;\n}\nfunction supportsRealisticSkin(presetId) {\n  if (presetId === \"custom\" || presetId === \"no-device\") return false;\n  const preset = getDevicePreset(presetId);\n  return !!preset.realisticImage;\n}\nfunction supportsThemes(presetId, skin) {\n  if (presetId === \"no-device\") return false;\n  if (presetId === \"custom\" || skin !== \"realistic\") return true;\n  const preset = getDevicePreset(presetId);\n  const realisticImage = preset.realisticImage;\n  if (realisticImage === void 0) {\n    return true;\n  }\n  if (colorIdForTheme(\"dark\", realisticImage.availableColors) !== void 0) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport React25 from \"react\";\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport React24, { forwardRef as forwardRef2, useContext as useContext6, useRef as useRef6 } from \"react\";\n\n// ../../library/src/modules/useIsStaticRenderer.ts\nimport { useState } from \"react\";\nfunction isStaticRenderer() {\n  const currentTarget = RenderTarget.current();\n  return currentTarget === RenderTarget.canvas || currentTarget === RenderTarget.export;\n}\nfunction useIsStaticRenderer() {\n  const [isStatic] = useState(() => isStaticRenderer());\n  return isStatic;\n}\n\n// ../../library/src/utils/asRecord.ts\nvar asRecord = (object) => object;\n\n// ../../library/src/utils/isPropValid.ts\nfunction memoize(fn) {\n  const cache2 = Object.create(Object.prototype);\n  return (arg) => {\n    if (cache2[arg] === void 0) cache2[arg] = fn(arg);\n    return cache2[arg];\n  };\n}\nvar reactPropsRegex = /^(?:children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|[dkrxyz]|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y1|y2|yChannelSelector|zoomAndPan|for|class|autofocus|(?:[Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*)$/u;\nvar isPropValid = /* @__PURE__ */ memoize(\n  (prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91\n  /* Z+1 */\n);\n\n// ../../library/src/utils/runtimeInjection.ts\nimport { useMemo as useMemo4 } from \"react\";\nvar mockWithWarning = (message) => {\n  return () => {\n    warnOnce2(message);\n  };\n};\nvar mockWithoutWarning = () => {\n  return () => {\n  };\n};\nvar implementation = {\n  // We need a default implementation for useImageSource and useImageElement as it is used for\n  // rendering image backgrounds which would break otherwise. The default value is used for HTML\n  // export and when using the library without Framer.\n  imagePlaceholderSvg: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"126\" height=\"126\"><path id=\"a\" d=\"M126 0v21.584L21.584 126H0v-17.585L108.415 0H126Zm0 108.414V126h-17.586L126 108.414Zm0-84v39.171L63.585 126H24.414L126 24.414Zm0 42v39.17L105.584 126h-39.17L126 66.414ZM105.586 0 0 105.586V66.415L66.415 0h39.171Zm-42 0L0 63.586V24.415L24.415 0h39.171Zm-42 0L0 21.586V0h21.586Z\" fill=\"rgb(136, 136, 136, 0.2)\" fill-rule=\"evenodd\"/></svg>`,\n  useImageSource(image) {\n    return image.src ?? \"\";\n  },\n  useImageElement(image, rect, nodeId) {\n    const src = runtime.useImageSource(image, rect, nodeId);\n    return useMemo4(() => {\n      const element = new Image();\n      element.src = src;\n      if (image.srcSet) element.srcset = image.srcSet;\n      return element;\n    }, [src, image.srcSet]);\n  },\n  canRenderOptimizedCanvasImage() {\n    return false;\n  },\n  isOnPageCanvas: false\n};\nvar isRuntimeInjected = false;\nvar runtimeProxy = {\n  get(target, key7, reciever) {\n    if (Reflect.has(target, key7)) {\n      return Reflect.get(target, key7, reciever);\n    }\n    if ([\"getLogger\"].includes(String(key7))) {\n      return mockWithoutWarning();\n    }\n    if (isRuntimeInjected) {\n      return mockWithWarning(`${String(key7)} is not available in this version of Framer.`);\n    }\n    return mockWithWarning(`${String(key7)} is only available inside of Framer. https://www.framer.com/`);\n  }\n};\nvar runtime = /* @__PURE__ */ new Proxy(implementation, runtimeProxy);\nfunction _injectRuntime(injectedRuntime) {\n  Object.assign(implementation, injectedRuntime);\n  isRuntimeInjected = true;\n}\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport React19, { useCallback as useCallback6 } from \"react\";\n\n// ../../library/src/modules/LibraryFeaturesContext.ts\nimport React18 from \"react\";\nvar LibraryFeaturesContext = /* @__PURE__ */ React18.createContext(void 0);\nLibraryFeaturesContext.displayName = \"LibraryFeaturesContext\";\nvar LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();\nvar useLibraryFeatures = () => {\n  const context = React18.useContext(LibraryFeaturesContext);\n  return context ?? {};\n};\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport { jsx as jsx12 } from \"react/jsx-runtime\";\nvar wrapperStyle = {\n  position: \"absolute\",\n  borderRadius: \"inherit\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nfunction getPlaceholderStyle() {\n  return {\n    backgroundRepeat: \"repeat\",\n    backgroundPosition: \"left top\",\n    backgroundSize: \"64px auto\",\n    backgroundImage: encodeSVGForCSS(runtime.imagePlaceholderSvg)\n  };\n}\nfunction cssObjectFit(imageFit) {\n  switch (imageFit) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"fill\";\n    default:\n      return \"cover\";\n  }\n}\nfunction cssObjectPosition(positionX, positionY) {\n  const x = positionX ?? \"center\";\n  const y = positionY ?? \"center\";\n  if (x === \"center\" && y === \"center\") return \"center\";\n  return x + \" \" + y;\n}\nfunction getImageStyle(image) {\n  return {\n    display: \"block\",\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"inherit\",\n    objectPosition: cssObjectPosition(image.positionX, image.positionY),\n    objectFit: cssObjectFit(image.fit)\n  };\n}\nfunction useDecodingAttribute(avoidAsyncDecoding) {\n  const currentDecoding = React19.useRef(avoidAsyncDecoding ? \"auto\" : \"async\");\n  const switchDecodingToAuto = useCallback6((node) => {\n    currentDecoding.current = \"auto\";\n    node.decoding = \"auto\";\n  }, []);\n  const onImageLoad = useCallback6(\n    (event) => {\n      switchDecodingToAuto(event.currentTarget);\n    },\n    [switchDecodingToAuto]\n  );\n  const onImageMount = useCallback6(\n    (node) => {\n      if (node == null ? void 0 : node.complete) switchDecodingToAuto(node);\n    },\n    [switchDecodingToAuto]\n  );\n  return { decoding: currentDecoding.current, onImageLoad, onImageMount };\n}\nfunction StaticImage({ image, containerSize, nodeId, alt, draggable, avoidAsyncDecoding }) {\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  const { decoding, onImageLoad, onImageMount } = useDecodingAttribute(avoidAsyncDecoding);\n  return (\n    // eslint-disable-next-line framer-studio/require-async-decoding -- we conditionally apply it\n    /* @__PURE__ */ jsx12(\n      \"img\",\n      {\n        ref: onImageMount,\n        decoding,\n        fetchpriority: image.fetchPriority,\n        loading: image.loading,\n        width: image.pixelWidth,\n        height: image.pixelHeight,\n        sizes: image.sizes,\n        srcSet: image.srcSet,\n        src: source,\n        onLoad: onImageLoad,\n        alt: alt ?? image.alt ?? \"\",\n        style: imageStyle,\n        draggable\n      }\n    )\n  );\n}\nfunction CanvasImage({ image, containerSize, nodeId }) {\n  const wrapperRef = React19.useRef(null);\n  const imageElement = runtime.useImageElement(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  React19.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null) return;\n    wrapper.appendChild(imageElement);\n    return () => {\n      wrapper.removeChild(imageElement);\n    };\n  }, [imageElement]);\n  Object.assign(imageElement.style, imageStyle);\n  return /* @__PURE__ */ jsx12(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction OptimizedCanvasImage({ nodeId, image, containerSize }) {\n  const wrapperRef = React19.useRef(null);\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  React19.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null) return;\n    const imageStyle = getImageStyle(image);\n    runtime.renderOptimizedCanvasImage(wrapper, source, imageStyle, nodeId);\n  }, [nodeId, image, source]);\n  return /* @__PURE__ */ jsx12(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction BackgroundImageComponent({ layoutId, image, ...props }) {\n  const { motionDivToDivBackgroundImage } = useLibraryFeatures();\n  if (layoutId) {\n    layoutId += \"-background\";\n  }\n  let fallbackWrapperStyles = null;\n  let needsMotion = !!layoutId;\n  let imageNode = null;\n  if (isString(image.src)) {\n    if (image.fit === \"tile\" && image.pixelWidth && image.pixelHeight) {\n      const backgroundSize = isNumber(image.backgroundSize) ? image.backgroundSize : 1;\n      const tileSize = {\n        width: Math.round(backgroundSize * image.pixelWidth),\n        height: Math.round(backgroundSize * image.pixelHeight)\n      };\n      const roundedBackgroundSize = roundToHalfPixel(backgroundSize * (image.pixelWidth / 2));\n      const imageSource = runtime.useImageSource(image, tileSize);\n      fallbackWrapperStyles = {\n        ...wrapperStyle,\n        backgroundImage: `url(${imageSource})`,\n        backgroundRepeat: \"repeat\",\n        backgroundPosition: cssObjectPosition(image.positionX, image.positionY),\n        opacity: void 0,\n        border: 0,\n        backgroundSize: `${roundedBackgroundSize}px auto`\n      };\n      imageNode = null;\n      needsMotion = true;\n    } else if (RenderTarget.current() !== RenderTarget.canvas) {\n      imageNode = /* @__PURE__ */ jsx12(\n        StaticImage,\n        {\n          image,\n          avoidAsyncDecoding: RenderTarget.current() === RenderTarget.export,\n          ...props\n        }\n      );\n    } else if (\n      // biome-ignore lint/correctness/useHookAtTopLevel: This is ok since this function acts just like a util to get the source.\n      runtime.canRenderOptimizedCanvasImage(runtime.useImageSource(image))\n    ) {\n      imageNode = /* @__PURE__ */ jsx12(OptimizedCanvasImage, { image, ...props });\n    } else {\n      imageNode = /* @__PURE__ */ jsx12(CanvasImage, { image, ...props });\n    }\n  }\n  const style = imageNode ? wrapperStyle : fallbackWrapperStyles ?? { ...wrapperStyle, ...getPlaceholderStyle() };\n  return needsMotion || !motionDivToDivBackgroundImage ? /* @__PURE__ */ jsx12(motion.div, { layoutId, style, \"data-framer-background-image-wrapper\": true, children: imageNode }) : /* @__PURE__ */ jsx12(\"div\", { style, \"data-framer-background-image-wrapper\": true, children: imageNode });\n}\n\n// ../../library/src/render/style/BorderComponent.tsx\nimport { jsx as jsx13 } from \"react/jsx-runtime\";\nfunction collectBorderStyleForProps(props, style, collapseEqualBorders = true) {\n  const { borderWidth, borderStyle, borderColor } = props;\n  if (!borderWidth) {\n    return;\n  }\n  let borderTop;\n  let borderBottom;\n  let borderLeft;\n  let borderRight;\n  if (typeof borderWidth === \"number\") {\n    borderTop = borderBottom = borderLeft = borderRight = borderWidth;\n  } else {\n    borderTop = borderWidth.top || 0;\n    borderBottom = borderWidth.bottom || 0;\n    borderLeft = borderWidth.left || 0;\n    borderRight = borderWidth.right || 0;\n  }\n  if (borderTop === 0 && borderBottom === 0 && borderLeft === 0 && borderRight === 0) {\n    return;\n  }\n  if (collapseEqualBorders && borderTop === borderBottom && borderTop === borderLeft && borderTop === borderRight) {\n    style.border = `${borderTop}px ${borderStyle} ${borderColor}`;\n    return;\n  }\n  style.borderStyle = props.borderStyle;\n  style.borderColor = props.borderColor;\n  style.borderTopWidth = `${borderTop}px`;\n  style.borderBottomWidth = `${borderBottom}px`;\n  style.borderLeftWidth = `${borderLeft}px`;\n  style.borderRightWidth = `${borderRight}px`;\n}\nfunction Border(props) {\n  const layoutId = props.layoutId ? `${props.layoutId}-border` : void 0;\n  if (!props.borderWidth) {\n    return null;\n  }\n  const style = {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    borderRadius: \"inherit\",\n    pointerEvents: \"none\"\n  };\n  if (props.border) {\n    ;\n    style.border = props.border;\n    return /* @__PURE__ */ jsx13(motion.div, { style });\n  }\n  collectBorderStyleForProps(props, style, false);\n  return /* @__PURE__ */ jsx13(motion.div, { \"data-frame-border\": true, style, layoutId });\n}\n\n// ../../library/src/render/types/BackgroundImage.ts\nvar key = \"src\";\nvar BackgroundImage = {\n  isImageObject: function(image) {\n    if (!image || typeof image === \"string\") return false;\n    return typeof image === \"object\" && key in image;\n  }\n};\n\n// ../../library/src/render/style/backgroundImageFromProps.ts\nfunction applyForwardOverrides(background, props) {\n  const { _forwardedOverrideId, _forwardedOverrides, id } = props;\n  const forwardedOverrideId = _forwardedOverrideId ?? id;\n  const src = _forwardedOverrides && forwardedOverrideId ? _forwardedOverrides[forwardedOverrideId] : void 0;\n  if (src && typeof src === \"string\") {\n    background = { ...background, src };\n  }\n  return background;\n}\nfunction backgroundImageFromProps(props) {\n  const { background, image } = props;\n  if (image !== void 0 && background && !BackgroundImage.isImageObject(background)) {\n    return;\n  }\n  let backgroundImage = null;\n  if (isString(image)) {\n    backgroundImage = { alt: \"\", src: image };\n  } else {\n    backgroundImage = Animatable.get(background, null);\n  }\n  if (!BackgroundImage.isImageObject(backgroundImage)) {\n    return;\n  }\n  return applyForwardOverrides(backgroundImage, props);\n}\n\n// ../../library/src/render/utils/getIntrinsicSizeForBackgroundImage.ts\nfunction getIntrinsicSizeForBackgroundImage(background) {\n  if (!background) return void 0;\n  if (background.pixelHeight && background.pixelWidth) {\n    return { width: background.pixelWidth, height: background.pixelHeight };\n  }\n  return parseImageSizeFromSrc(background.src);\n}\nfunction parseImageSizeFromSrc(src) {\n  if (!src) return void 0;\n  let url;\n  try {\n    url = new URL(src);\n  } catch {\n    return void 0;\n  }\n  const width = url.searchParams.get(\"width\");\n  const height = url.searchParams.get(\"height\");\n  if (width && height) {\n    return { width: parseInt(width), height: parseInt(height) };\n  }\n  return void 0;\n}\n\n// ../../library/src/render/utils/htmlElementAsMotionComponent.ts\nfunction htmlElementAsMotionComponent(asElem) {\n  return asElem && asElem !== \"search\" && asElem !== \"slot\" && asElem !== \"template\" ? motion[asElem] : motion[\"div\"];\n}\n\n// ../../library/src/utils/safeNavigator.ts\nvar safeNavigator = typeof navigator !== \"undefined\" ? navigator : void 0;\n\n// ../../library/src/utils/environment.ts\nvar isBrowser2 = () => typeof document === \"object\";\nvar isWebKit = () => {\n  var _a;\n  return ((_a = safeNavigator) == null ? void 0 : _a.userAgent.includes(\"AppleWebKit/\")) && !isChrome() && !isEdge();\n};\nvar webkitVersion = () => {\n  let version2 = -1;\n  const regexp = /AppleWebKit\\/([\\d.]+)/u;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar safariVersion = () => {\n  let version2 = -1;\n  const regexp = /Version\\/([\\d.]+)/u;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar isChrome = () => safeNavigator && /Chrome/u.test(safeNavigator.userAgent) && /Google Inc/u.test(safeNavigator.vendor) && !isEdge();\nvar isSafari = () => safeNavigator && /Safari/u.test(safeNavigator.userAgent) && /Apple Computer/u.test(safeNavigator.vendor);\nvar isFirefox = () => safeNavigator && /Firefox\\/\\d+\\.\\d+$/u.test(safeNavigator.userAgent);\nvar isFramerX = () => safeNavigator && /FramerX/u.test(safeNavigator.userAgent);\nvar isEdge = () => safeNavigator && /Edg\\//u.test(safeNavigator.userAgent);\nvar isAndroid = () => safeNavigator && /android/iu.test(safeNavigator.userAgent);\nvar iOSRegex = /iPhone|iPod|iPad/iu;\nvar macIntelRegex = /MacIntel/iu;\nvar isIOS = () => {\n  if (!safeNavigator) return false;\n  if (iOSRegex.test(safeNavigator.platform)) return true;\n  return macIntelRegex.test(safeNavigator.platform) && safeNavigator.maxTouchPoints && safeNavigator.maxTouchPoints > 2;\n};\nvar isMacOS = () => safeNavigator && /Mac/u.test(safeNavigator.platform);\nvar isWindows = () => safeNavigator && /Win/u.test(safeNavigator.platform);\nvar isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;\nvar isDesktop = () => deviceType() === \"desktop\";\nvar isPhone = () => deviceType() === \"phone\";\nvar isTablet = () => deviceType() === \"tablet\";\nvar isMobile = () => isPhone() || isTablet();\nvar isFileUrl = (url) => url.startsWith(\"file://\");\nvar isDataUrl = (url) => url.startsWith(\"data:\");\nvar isTest = () => false;\nvar isRelativeUrl = (url) => !/^[a-z]{1,8}:\\/\\/.*$/i.test(url);\nvar isLocalServerUrl = (url) => /[a-z]{1,8}:\\/\\/127\\.0\\.0\\.1/i.test(url) || /[a-zA-Z]{1,8}:\\/\\/localhost/u.test(url);\nvar isLocalUrl = (url) => {\n  if (isFileUrl(url)) return true;\n  if (isLocalServerUrl(url)) return true;\n  return false;\n};\nvar isLocalAssetUrl = (url, baseUrl) => {\n  if (baseUrl === null) baseUrl = safeWindow.location.href;\n  if (isDataUrl(url)) return false;\n  if (isLocalUrl(url)) return true;\n  if (isRelativeUrl(url) && isLocalUrl(baseUrl)) return true;\n  return false;\n};\nvar devicePixelRatio = () => safeWindow.devicePixelRatio;\nvar isJP2Supported = function() {\n  if (isFirefox()) return false;\n  return isWebKit();\n};\nvar isWebPSupported = () => isChrome();\nvar deviceType = () => {\n  if (safeNavigator && /tablet|iPad|Nexus 9/i.test(safeNavigator.userAgent)) return \"tablet\";\n  if (safeNavigator && /mobi/iu.test(safeNavigator.userAgent)) return \"phone\";\n  return \"desktop\";\n};\nvar deviceOS = () => {\n  if (isMacOS()) return \"macos\";\n  if (isIOS()) return \"ios\";\n  if (isAndroid()) return \"android\";\n  if (isWindows()) return \"windows\";\n};\nvar deviceFont = (os) => {\n  if (!os) {\n    os = deviceOS();\n  }\n  const fonts = {\n    apple: \"-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue\",\n    google: \"Roboto, Helvetica Neue\",\n    microsoft: \"Segoe UI, Helvetica Neue\"\n  };\n  if (os === \"macos\") return fonts.apple;\n  if (os === \"ios\") return fonts.apple;\n  if (os === \"android\") return fonts.google;\n  if (os === \"windows\") return fonts.microsoft;\n  return fonts.apple;\n};\nvar environment = {\n  isWebKit,\n  webkitVersion,\n  isChrome,\n  isSafari,\n  isFirefox,\n  isFramerX,\n  isEdge,\n  isAndroid,\n  isIOS,\n  isMacOS,\n  isWindows,\n  isTouch,\n  isDesktop,\n  isPhone,\n  isTablet,\n  isMobile,\n  isFileUrl,\n  isDataUrl,\n  isRelativeUrl,\n  isLocalServerUrl,\n  isLocalUrl,\n  isLocalAssetUrl,\n  devicePixelRatio,\n  isJP2Supported,\n  isWebPSupported,\n  deviceType,\n  deviceOS,\n  deviceFont,\n  safariVersion\n};\n\n// ../../library/src/render/utils/layoutHintDataPropsForCenter.ts\nvar isChrome2 = /* @__PURE__ */ isChrome();\nfunction collectLayoutHintDataProps(props, center) {\n  props[\"data-framer-layout-hint-center-x\"] = center === true || center === \"x\" ? true : void 0;\n  props[\"data-framer-layout-hint-center-y\"] = center === true || center === \"y\" ? true : void 0;\n}\nfunction layoutHintDataPropsForCenter(center) {\n  const props = {};\n  if (!center || !isChrome2 || RenderTarget.current() !== RenderTarget.canvas) {\n    return props;\n  }\n  collectLayoutHintDataProps(props, center);\n  return props;\n}\n\n// ../../library/src/render/utils/nodeIdFromString.ts\nfunction nodeIdFromString(str) {\n  return str.replace(/^id_/u, \"\").replace(/\\\\/gu, \"\");\n}\n\n// ../../library/src/render/utils/performanceDebugging.ts\nfunction countNodeRender() {\n  if (true) return;\n  const perf = asRecord(safeWindow)[\"perf\"];\n  if (!perf) return;\n  perf.nodeRender();\n}\n\n// ../../library/src/render/utils/processOverrideForwarding.ts\nimport React20 from \"react\";\nfunction processOverrideForwarding(props, children) {\n  if (!children) {\n    children = props.children;\n    if (!children) return { props, children };\n  }\n  const _forwardedOverrides = props._forwardedOverrides;\n  if (!_forwardedOverrides) return { props, children };\n  children = React20.Children.map(children, (child) => {\n    if (!React20.isValidElement(child)) return child;\n    return React20.cloneElement(child, { _forwardedOverrides });\n  });\n  return { props, children };\n}\n\n// ../../library/src/render/utils/transformTemplate.ts\nfunction transformTemplate(center) {\n  return (_, generated) => {\n    if (center === true) {\n      return `translate(-50%, -50%) ${generated}`;\n    } else {\n      if (center === \"x\") {\n        return `translateX(-50%) ${generated}`;\n      } else if (center === \"y\") {\n        return `translateY(-50%) ${generated}`;\n      }\n    }\n    return generated || \"none\";\n  };\n}\n\n// ../../library/src/render/utils/useLayoutId.ts\nimport { useContext as useContext4, useMemo as useMemo5 } from \"react\";\nfunction useLayoutId(props, { specificLayoutId, postfix } = {}) {\n  const { name, layoutIdKey, duplicatedFrom, __fromCodeComponentNode = false, drag } = props;\n  const { getLayoutId, enabled } = useContext4(LayoutIdContext);\n  return useMemo5(() => {\n    if (!enabled) return props.layoutId;\n    const existingLayoutId = specificLayoutId || props.layoutId;\n    if (!existingLayoutId) {\n      if (drag || !layoutIdKey || __fromCodeComponentNode) return void 0;\n    }\n    const layoutIdCandidate = existingLayoutId || getLayoutId({ id: layoutIdKey, name, duplicatedFrom });\n    if (!layoutIdCandidate) return void 0;\n    return postfix ? `${layoutIdCandidate}-${postfix}` : layoutIdCandidate;\n  }, [enabled]);\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nimport { useContext as useContext5 } from \"react\";\n\n// ../../library/src/useIsomorphicLayoutEffect.ts\nimport { useEffect as useEffect8, useLayoutEffect as useLayoutEffect4 } from \"react\";\nvar useIsomorphicLayoutEffect2 = typeof document !== \"undefined\" ? useLayoutEffect4 : useEffect8;\n\n// ../../library/src/render/presentation/ComponentContainerContext.tsx\nimport React21 from \"react\";\nvar ComponentContainerContext = /* @__PURE__ */ React21.createContext(false);\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport React23, { useEffect as useEffect9 } from \"react\";\n\n// ../../library/src/modules/useForceUpdate.ts\nimport React22 from \"react\";\nfunction useForceUpdate2() {\n  const [_, setForcedRenderCount] = React22.useState(0);\n  return React22.useCallback(() => setForcedRenderCount((v) => v + 1), []);\n}\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport { jsx as jsx14 } from \"react/jsx-runtime\";\nvar DEFAULT_SIZE = 200;\nvar SharedObserver = class {\n  constructor() {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedResizeObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    this.sharedResizeObserver = new ResizeObserver(this.updateResizedElements.bind(this));\n  }\n  updateResizedElements(entries) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement) callbackForElement(entry.contentRect);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    this.sharedResizeObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    this.sharedResizeObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n};\nvar sharedResizeObserver = /* @__PURE__ */ (() => isBrowser2() ? new SharedObserver() : void 0)();\nfunction useRerenderOnResize(ref) {\n  const update = useForceUpdate2();\n  useEffect9(() => {\n    const element = ref == null ? void 0 : ref.current;\n    if (!element) return;\n    sharedResizeObserver == null ? void 0 : sharedResizeObserver.observeElementWithCallback(ref.current, update);\n    return () => {\n      sharedResizeObserver == null ? void 0 : sharedResizeObserver.unobserve(element);\n    };\n  }, [ref, update]);\n}\nfunction useMeasuredSize(ref) {\n  const forceUpdate = useForceUpdate2();\n  const size = React23.useRef(null);\n  function updateSize(newSize) {\n    if (newSize.width === 0 && newSize.height === 0) return;\n    if (!size.current || newSize.height !== size.current.height || newSize.width !== size.current.width) {\n      size.current = { width: newSize.width, height: newSize.height };\n      forceUpdate();\n    }\n  }\n  useIsomorphicLayoutEffect2(() => {\n    if (!ref.current) return;\n    const { offsetWidth, offsetHeight } = ref.current;\n    updateSize({\n      width: offsetWidth,\n      height: offsetHeight\n    });\n    sharedResizeObserver.observeElementWithCallback(ref.current, updateSize);\n    return () => {\n      if (!ref.current) return;\n      sharedResizeObserver.unobserve(ref.current);\n    };\n  }, []);\n  return size.current;\n}\nvar SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE = \"data-framer-size-compatibility-wrapper\";\nvar withMeasuredSize = (Component17) => (props) => {\n  const ref = React23.useRef(null);\n  const size = useMeasuredSize(ref);\n  const dataProps = { [SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE]: true };\n  const shouldRender = Boolean(size);\n  const fallbackWidth = props.width ?? DEFAULT_SIZE;\n  const fallbackHeight = props.height ?? DEFAULT_SIZE;\n  return /* @__PURE__ */ jsx14(\"div\", { style: { width: \"100%\", height: \"100%\", pointerEvents: \"none\" }, ref, ...dataProps, children: shouldRender && /* @__PURE__ */ jsx14(\n    Component17,\n    {\n      ...props,\n      width: (size == null ? void 0 : size.width) ?? fallbackWidth,\n      height: (size == null ? void 0 : size.height) ?? fallbackHeight\n    }\n  ) });\n};\n\n// ../../library/src/render/utils/getMeasurableCodeComponentChildren.ts\nfunction getMeasurableCodeComponentChildren(element) {\n  const childrenCollection = element.firstElementChild && element.firstElementChild.hasAttribute(SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE) ? element.firstElementChild.children : element.children;\n  return [...childrenCollection].filter(isMeasurable).map(unwrapInlinedDisplayContents);\n}\nfunction isMeasurable(element) {\n  if (element instanceof HTMLBaseElement || element instanceof HTMLHeadElement || element instanceof HTMLLinkElement || element instanceof HTMLMetaElement || element instanceof HTMLScriptElement || element instanceof HTMLStyleElement || element instanceof HTMLTitleElement) {\n    return false;\n  }\n  return element instanceof HTMLElement || element instanceof SVGElement;\n}\nfunction unwrapInlinedDisplayContents(element) {\n  if (!(element instanceof HTMLElement)) return element;\n  if (element.children.length === 0) return element;\n  if (element.style.display !== \"contents\") return element;\n  const firstMeasurableChild = [...element.children].find(isMeasurable);\n  if (firstMeasurableChild) {\n    return unwrapInlinedDisplayContents(firstMeasurableChild);\n  }\n  return element;\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nfunction useMeasureLayout(props, ref, getChildren = () => [], options = {}) {\n  const { id, visible, _needsMeasure } = props;\n  const { skipHook = false } = options;\n  const inCodeComponent = useContext5(ComponentContainerContext);\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  useIsomorphicLayoutEffect2(() => {\n    if (!onCanvas || inCodeComponent || skipHook) {\n      return;\n    }\n    if (!(ref.current && id && visible && _needsMeasure)) {\n      return;\n    }\n    runtime.queueMeasureRequest(nodeIdFromString(id), ref.current, getChildren(ref.current));\n  });\n}\nfunction measureClosestComponentContainer(element) {\n  const container = element.closest(\"[data-framer-component-container]\");\n  if (!container) return;\n  runtime.queueMeasureRequest(\n    nodeIdFromString(container.id),\n    container,\n    getMeasurableCodeComponentChildren(container)\n  );\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nimport { Component as Component3 } from \"react\";\n\n// ../../library/src/render/utils/setLayerBacked.ts\nvar smallValue = \"0.000001px\";\nvar translateZ = /* @__PURE__ */ (() => ` translateZ(${smallValue})`)();\nvar useTranslateZHack = /* @__PURE__ */ (() => isFramerX() || isSafari() || isTest())();\nfunction forceLayerBackingWithMotionStyle(motionStyle) {\n  motionStyle.willChange = \"transform\";\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  if (useTranslateZHack && onCanvas) {\n    motionStyle.translateZ = smallValue;\n  }\n}\nfunction forceLayerBackingWithCSSProperties(cssProperties) {\n  cssProperties.willChange = \"transform\";\n  setTranslateZHack(cssProperties, true);\n}\nfunction setTranslateZHack(style, enabled) {\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  if (!useTranslateZHack || !onCanvas) {\n    return;\n  }\n  const transform2 = isString(style.transform) ? style.transform || \"\" : \"\";\n  if (enabled) {\n    const hasTranslateZ = transform2.includes(translateZ);\n    if (!hasTranslateZ) {\n      style.transform = transform2 + translateZ;\n    }\n  } else {\n    style.transform = transform2.replace(translateZ, \"\");\n  }\n}\n\n// ../../library/src/render/utils/useWebkitFixes.ts\nfunction resetSetStyle(element, key7, toValue, microtask2 = true) {\n  if (!element) {\n    return;\n  }\n  const style = asRecord(element.style);\n  const value = toValue ? toValue : style[key7];\n  const reset = () => {\n    if (!isValidCSSStyleValue(value)) return;\n    style[key7] = value;\n  };\n  style[key7] = null;\n  if (microtask2) {\n    void Promise.resolve().then(reset);\n  } else {\n    setTimeout(reset, 0);\n  }\n}\nfunction isValidCSSStyleValue(value) {\n  return isString(value) || isNumber(value) || isNull(value);\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nvar Layer = /* @__PURE__ */ (() => {\n  class Layer2 extends Component3 {\n    constructor() {\n      super(...arguments);\n      /** @private (Just using `private` breaks compilation unless using `stripInternal`) */\n      __publicField(this, \"layerElement\", null);\n      __publicField(this, \"setLayerElement\", (element) => {\n        this.layerElement = element;\n      });\n    }\n    static applyWillChange(props, style, usingMotionStyle) {\n      if (props.willChangeTransform) {\n        if (usingMotionStyle) {\n          forceLayerBackingWithMotionStyle(style);\n        } else {\n          forceLayerBackingWithCSSProperties(style);\n        }\n      }\n    }\n    /** @internal */\n    shouldComponentUpdate(nextProps, nextState) {\n      return nextProps._needsMeasure || this.state !== nextState || !isEqual(this.props, nextProps);\n    }\n    /** @internal */\n    componentDidUpdate(prevProps) {\n      if (asRecord(this.props)[\"clip\"] && asRecord(this.props)[\"radius\"] === 0 && asRecord(prevProps)[\"radius\"] !== 0) {\n        resetSetStyle(this.layerElement, \"overflow\", \"hidden\", false);\n      }\n    }\n  }\n  __publicField(Layer2, \"defaultProps\", {});\n  return Layer2;\n})();\n\n// ../../library/src/utils/memoize.ts\nfunction manageCache(cache2, maxEntries) {\n  const size = cache2.size;\n  if (size < maxEntries) return;\n  let i = Math.round(Math.random());\n  for (const key7 of cache2.keys()) {\n    if ((++i & 1) === 1) continue;\n    cache2.delete(key7);\n  }\n}\nfunction memoize2(maxEntries, cache2, key7, create) {\n  const r = cache2.get(key7);\n  if (r) return r;\n  manageCache(cache2, maxEntries);\n  const g = create(key7);\n  cache2.set(key7, g);\n  return g;\n}\n\n// ../../library/src/utils/string.ts\nvar hash = (value) => {\n  let hasher = 0, i, chr;\n  if (value.length === 0) return hasher;\n  for (i = 0; i < value.length; i++) {\n    chr = value.charCodeAt(i);\n    hasher = (hasher << 5) - hasher + chr;\n    hasher |= 0;\n  }\n  return hasher;\n};\n\n// ../../library/src/render/types/Color/ConvertColor.ts\nvar ConvertColor = {\n  hueRotate: (color2, angle) => {\n    return Color.toHslString(Color.hueRotate(Color(color2), angle));\n  },\n  setAlpha: (color2, alpha2) => {\n    return Color.toRgbString(Color.alpha(Color(color2), alpha2));\n  },\n  getAlpha: (color2) => {\n    const obj = stringToObject(color2);\n    return obj ? obj.a : 1;\n  },\n  multiplyAlpha: (color2, alpha2) => {\n    return Color.toRgbString(Color.multiplyAlpha(Color(color2), alpha2));\n  },\n  /**\n   * @internal\n   */\n  toHexValue: (color2) => {\n    return Color.toHex(Color(color2)).toUpperCase();\n  },\n  toHex: (color2) => {\n    return Color.toHexString(Color(color2)).toUpperCase();\n  },\n  toRgb: (color2) => {\n    return Color.toRgb(Color(color2));\n  },\n  toRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toHSV: (color2) => {\n    return Color.toHsv(Color(color2));\n  },\n  toHSL: (color2) => {\n    return Color.toHsl(Color(color2));\n  },\n  toHslString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  toHsvString: (color2) => {\n    return Color.toHsvString(Color(color2));\n  },\n  hsvToHSLString: (hsv) => {\n    return Color.toHslString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  /**\n   * @internal\n   */\n  hsvToHexValue: (hsv) => {\n    return Color.toHex(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToHex: (hsv) => {\n    return Color.toHexString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToRgbString: (hsv) => {\n    return Color.toRgbString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  hsvToString: (hsv) => {\n    return hsvToStr(hsv.h, hsv.s, hsv.v);\n  },\n  rgbaToString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  /**\n   * @internal\n   */\n  rgbToHexValue: (color2) => {\n    return Color.toHex(Color(color2));\n  },\n  rgbToHexString: (color2) => {\n    return Color.toHexString(Color(color2));\n  },\n  hslToString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  hslToRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toColorPickerSquare: (h) => {\n    return Color.toRgbString(Color({ h, s: 1, l: 0.5, a: 1 }));\n  },\n  isValid: (color2) => {\n    return Color(color2).isValid !== false;\n  },\n  equals: (a, b) => {\n    if (Color.isP3String(a) || Color.isP3String(b)) return a === b;\n    if (typeof a === \"string\") {\n      a = Color(a);\n    }\n    if (typeof b === \"string\") {\n      b = Color(b);\n    }\n    return Color.equal(a, b);\n  },\n  toHexOrRgbaString: (input) => {\n    const color2 = Color(input);\n    return color2.a !== 1 ? Color.toRgbString(color2) : Color.toHexString(color2);\n  },\n  /**\n   * Converts a color to a string to consistent formats for animating.\n   */\n  toFormatString: (color2) => {\n    if (Color.isP3String(color2)) return color2;\n    return Color.toRgbString(Color(color2));\n  }\n};\n\n// ../../library/src/render/utils/gradientColorStops.ts\nvar CSSVariableRegExp = /var\\(.+\\)/u;\nvar colorCache = /* @__PURE__ */ new Map();\nfunction cachedMultiplyAlpha(s, a) {\n  const key7 = [s, a];\n  if (CSSVariableRegExp.test(s)) {\n    return s;\n  }\n  return memoize2(1e3, colorCache, key7, () => ConvertColor.multiplyAlpha(s, a));\n}\nfunction gradientColorStops(gradient, alpha2 = 1) {\n  let stops;\n  if (\"stops\" in gradient) {\n    stops = gradient.stops;\n  } else {\n    stops = [\n      { value: gradient.start, position: 0 },\n      { value: gradient.end, position: 1 }\n    ];\n  }\n  if (alpha2 === 1) {\n    return stops;\n  } else {\n    return stops.map((stop) => ({ ...stop, value: cachedMultiplyAlpha(stop.value, alpha2) }));\n  }\n}\nfunction gradientColorStopsHash(gradient, alpha2) {\n  let result = 0;\n  gradientColorStops(gradient, alpha2).forEach((stop) => {\n    result ^= hash(stop.value) ^ stop.position;\n  });\n  return result;\n}\n\n// ../../library/src/render/types/MultiStopGradient.ts\nvar multiStopGradientKeys = [\"stops\"];\nfunction isMultiStopGradient(value) {\n  return value && multiStopGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/SimpleGradient.ts\nvar simpleGradientKeys = [\"start\", \"end\"];\nfunction isSimpleGradient(value) {\n  return value && simpleGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/LinearGradient.ts\nvar linearGradientKeys = [\"angle\", \"alpha\"];\nvar LinearGradient = {\n  /**\n   * @param value -\n   */\n  isLinearGradient: (value) => {\n    return isObject2(value) && linearGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (linearGradient) => {\n    return linearGradient.angle ^ gradientColorStopsHash(linearGradient, linearGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (linearGradient, overrideAngle, getStopValue) => {\n    const stops = gradientColorStops(linearGradient, linearGradient.alpha);\n    const angle = overrideAngle !== void 0 ? overrideAngle : linearGradient.angle;\n    const cssStops = stops.map((stop) => `${(getStopValue == null ? void 0 : getStopValue(stop.value)) ?? stop.value} ${stop.position * 100}%`);\n    return `linear-gradient(${angle}deg, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/types/RadialGradient.ts\nvar radialGradientKeys = [\n  \"widthFactor\",\n  \"heightFactor\",\n  \"centerAnchorX\",\n  \"centerAnchorY\",\n  \"alpha\"\n];\nvar RadialGradient = {\n  /**\n   * @param value -\n   * @public\n   */\n  isRadialGradient: (value) => {\n    return isObject2(value) && radialGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (radialGradient) => {\n    return radialGradient.centerAnchorX ^ radialGradient.centerAnchorY ^ radialGradient.widthFactor ^ radialGradient.heightFactor ^ gradientColorStopsHash(radialGradient, radialGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (radialGradient, getStopValue) => {\n    const { alpha: alpha2, widthFactor, heightFactor, centerAnchorX, centerAnchorY } = radialGradient;\n    const stops = gradientColorStops(radialGradient, alpha2);\n    const cssStops = stops.map((stop, index) => {\n      const nextStop = stops[index + 1];\n      const position = stop.position === 1 && (nextStop == null ? void 0 : nextStop.position) === 1 ? stop.position - 1e-4 : stop.position;\n      return `${(getStopValue == null ? void 0 : getStopValue(stop.value)) ?? stop.value} ${position * 100}%`;\n    });\n    return `radial-gradient(${widthFactor * 100}% ${heightFactor * 100}% at ${centerAnchorX * 100}% ${centerAnchorY * 100}%, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/traits/Background.ts\nfunction collectBackgroundFromProps({ background, backgroundColor }, style) {\n  if (backgroundColor) {\n    if (typeof backgroundColor === \"string\" || isMotionValue2(backgroundColor)) {\n      style.backgroundColor = backgroundColor;\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  } else if (background) {\n    background = Animatable.get(background, null);\n    if (typeof background === \"string\" || isMotionValue2(background)) {\n      style.background = background;\n    } else if (LinearGradient.isLinearGradient(background)) {\n      style.background = LinearGradient.toCSS(background);\n    } else if (RadialGradient.isRadialGradient(background)) {\n      style.background = RadialGradient.toCSS(background);\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  }\n}\n\n// ../../library/src/render/utils/extractStyleFromProps.ts\nfunction extractStyleFromProps(props, name, styleRef, into) {\n  if (into === void 0) {\n    into = name;\n  }\n  if (props[name] !== void 0) {\n    ;\n    styleRef[into] = props[name];\n    return;\n  }\n}\n\n// ../../library/src/render/presentation/Frame/getStyleForFrameProps.ts\nfunction hasLeftAndRight(style) {\n  if (!style) return false;\n  return style.left !== void 0 && style.right !== void 0;\n}\nfunction hasTopAndBottom(style) {\n  if (!style) return false;\n  return style.top !== void 0 && style.bottom !== void 0;\n}\nfunction getStyleForFrameProps(props) {\n  if (!props) {\n    return {};\n  }\n  const style = {};\n  if (props.preserve3d === true) {\n    style.transformStyle = \"preserve-3d\";\n  } else if (props.preserve3d === false) {\n    style.transformStyle = \"flat\";\n  }\n  if (props.backfaceVisible === true) {\n    style.backfaceVisibility = \"visible\";\n  } else if (props.backfaceVisible === false) {\n    style.backfaceVisibility = \"hidden\";\n  }\n  if (style.backfaceVisibility) {\n    style.WebkitBackfaceVisibility = style.backfaceVisibility;\n  }\n  if (props.perspective !== void 0) {\n    style.perspective = style.WebkitPerspective = props.perspective;\n  }\n  if (!props.__fromCanvasComponent) {\n    if (props.center === true) {\n      style.left = \"50%\";\n      style.top = \"50%\";\n    } else {\n      if (props.center === \"x\") {\n        style.left = \"50%\";\n      } else if (props.center === \"y\") {\n        style.top = \"50%\";\n      }\n    }\n  }\n  extractStyleFromProps(props, \"size\", style);\n  extractStyleFromProps(props, \"width\", style);\n  extractStyleFromProps(props, \"height\", style);\n  extractStyleFromProps(props, \"minWidth\", style);\n  extractStyleFromProps(props, \"minHeight\", style);\n  extractStyleFromProps(props, \"top\", style);\n  extractStyleFromProps(props, \"right\", style);\n  extractStyleFromProps(props, \"bottom\", style);\n  extractStyleFromProps(props, \"left\", style);\n  extractStyleFromProps(props, \"position\", style);\n  extractStyleFromProps(props, \"overflow\", style);\n  extractStyleFromProps(props, \"opacity\", style);\n  if (!props._border || !props._border.borderWidth) extractStyleFromProps(props, \"border\", style);\n  extractStyleFromProps(props, \"borderRadius\", style);\n  extractStyleFromProps(props, \"radius\", style, \"borderRadius\");\n  extractStyleFromProps(props, \"color\", style);\n  extractStyleFromProps(props, \"shadow\", style, \"boxShadow\");\n  extractStyleFromProps(props, \"x\", style);\n  extractStyleFromProps(props, \"y\", style);\n  extractStyleFromProps(props, \"z\", style);\n  extractStyleFromProps(props, \"rotate\", style);\n  extractStyleFromProps(props, \"rotateX\", style);\n  extractStyleFromProps(props, \"rotateY\", style);\n  extractStyleFromProps(props, \"rotateZ\", style);\n  extractStyleFromProps(props, \"scale\", style);\n  extractStyleFromProps(props, \"scaleX\", style);\n  extractStyleFromProps(props, \"scaleY\", style);\n  extractStyleFromProps(props, \"skew\", style);\n  extractStyleFromProps(props, \"skewX\", style);\n  extractStyleFromProps(props, \"skewY\", style);\n  extractStyleFromProps(props, \"originX\", style);\n  extractStyleFromProps(props, \"originY\", style);\n  extractStyleFromProps(props, \"originZ\", style);\n  collectBackgroundFromProps(props, style);\n  return style;\n}\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport { Fragment as Fragment4, jsx as jsx15, jsxs as jsxs3 } from \"react/jsx-runtime\";\nfunction hasEvents(props) {\n  for (const key7 in props) {\n    if (key7 === \"drag\" || key7.startsWith(\"while\") || typeof asRecord(props)[key7] === \"function\" && key7.startsWith(\"on\") && !key7.includes(\"Animation\")) {\n      return true;\n    }\n  }\n  return false;\n}\nvar pointerEvents = [\n  \"onClick\",\n  \"onDoubleClick\",\n  \"onMouse\",\n  \"onMouseDown\",\n  \"onMouseUp\",\n  \"onTapDown\",\n  \"onTap\",\n  \"onTapUp\",\n  \"onPointer\",\n  \"onPointerDown\",\n  \"onPointerUp\",\n  \"onTouch\",\n  \"onTouchDown\",\n  \"onTouchUp\"\n];\nvar pointerEventsSet = /* @__PURE__ */ (() => /* @__PURE__ */ new Set([\n  ...pointerEvents,\n  ...pointerEvents.map((event) => `${event}Capture`)\n  // Add capture event variants\n]))();\nfunction getCursorFromEvents(props) {\n  if (props.drag) {\n    return \"grab\";\n  }\n  for (const key7 in props) {\n    if (pointerEventsSet.has(key7)) {\n      return \"pointer\";\n    }\n  }\n  return void 0;\n}\nvar overflowKey = \"overflow\";\nfunction hasScrollableContent(props) {\n  if (hasScrollingOverflow(props)) return true;\n  if (!props.style) return false;\n  if (hasScrollingOverflow(props.style)) return true;\n  return false;\n}\nfunction hasScrollingOverflow(props) {\n  if (overflowKey in props && (props[overflowKey] === \"scroll\" || props[overflowKey] === \"auto\")) return true;\n  return false;\n}\nfunction unwrapFrameProps(frameProps) {\n  const {\n    left,\n    top,\n    bottom,\n    right,\n    width,\n    height,\n    center,\n    _constraints,\n    size,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute\n  } = frameProps;\n  const minWidth = resolveMotionValue(frameProps.minWidth);\n  const minHeight = resolveMotionValue(frameProps.minHeight);\n  const maxWidth = resolveMotionValue(frameProps.maxWidth);\n  const maxHeight = resolveMotionValue(frameProps.maxHeight);\n  const constraintProps = {\n    top: resolveMotionValue(top),\n    left: resolveMotionValue(left),\n    bottom: resolveMotionValue(bottom),\n    right: resolveMotionValue(right),\n    width: resolveMotionValue(width),\n    height: resolveMotionValue(height),\n    size: resolveMotionValue(size),\n    center,\n    _constraints,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute,\n    minWidth,\n    minHeight,\n    maxWidth,\n    maxHeight\n  };\n  return constraintProps;\n}\nvar defaultFrameRect = { x: 0, y: 0, width: 200, height: 200 };\nfunction useStyleAndRect(props) {\n  React24.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const inCodeComponent = useContext6(ComponentContainerContext);\n  const { style, _initialStyle, __fromCanvasComponent, size } = props;\n  const unwrappedProps = unwrapFrameProps(props);\n  const constraintsRect = useConstraints(unwrappedProps);\n  const defaultStyle = {\n    display: \"block\",\n    flex: (style == null ? void 0 : style.flex) ?? \"0 0 auto\",\n    userSelect: RenderTarget.current() !== RenderTarget.preview ? \"none\" : void 0\n  };\n  if (!props.__fromCanvasComponent) {\n    defaultStyle.backgroundColor = props.background === void 0 ? \"rgba(0, 170, 255, 0.3)\" : void 0;\n  }\n  const shouldDisablePointerEvents = !hasEvents(props) && !props.__fromCanvasComponent && !hasScrollableContent(props);\n  const safeToEditPointerEvents = props.style ? !(\"pointerEvents\" in props.style) : true;\n  if (shouldDisablePointerEvents && safeToEditPointerEvents) {\n    defaultStyle.pointerEvents = \"none\";\n  }\n  const addTextCentering = React24.Children.count(props.children) > 0 && React24.Children.toArray(props.children).every((child) => {\n    return typeof child === \"string\" || typeof child === \"number\";\n  });\n  const centerTextStyle = addTextCentering && {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\"\n  };\n  const propsStyle = getStyleForFrameProps(props);\n  if (size === void 0 && !__fromCanvasComponent) {\n    if (!hasLeftAndRight(propsStyle)) {\n      defaultStyle.width = defaultFrameRect.width;\n    }\n    if (!hasTopAndBottom(propsStyle)) {\n      defaultStyle.height = defaultFrameRect.height;\n    }\n  }\n  if (unwrappedProps.minWidth !== void 0) {\n    defaultStyle.minWidth = unwrappedProps.minWidth;\n  }\n  if (unwrappedProps.minHeight !== void 0) {\n    defaultStyle.minHeight = unwrappedProps.minHeight;\n  }\n  let constraintsStyle = {};\n  if (constraintsEnabled(unwrappedProps)) {\n    if (constraintsRect && !isAutoSized(props)) {\n      constraintsStyle = {\n        left: constraintsRect.x,\n        top: constraintsRect.y,\n        width: constraintsRect.width,\n        height: constraintsRect.height,\n        right: void 0,\n        bottom: void 0\n      };\n    }\n  }\n  Object.assign(defaultStyle, centerTextStyle, _initialStyle, propsStyle, constraintsStyle, style);\n  Object.assign(defaultStyle, {\n    overflowX: defaultStyle.overflowX ?? defaultStyle.overflow,\n    overflowY: defaultStyle.overflowY ?? defaultStyle.overflow,\n    overflow: void 0\n  });\n  Layer.applyWillChange(props, defaultStyle, true);\n  let resultStyle = defaultStyle;\n  if (!defaultStyle.transform) {\n    resultStyle = { x: 0, y: 0, ...defaultStyle };\n  }\n  const isRenderingStaticContent = isStaticRenderer();\n  if (props.positionSticky) {\n    if (!isRenderingStaticContent || runtime.isOnPageCanvas || inCodeComponent) {\n      resultStyle.position = \"sticky\";\n      resultStyle.willChange = \"transform\";\n      resultStyle.zIndex = 1;\n      resultStyle.top = props.positionStickyTop;\n      resultStyle.right = props.positionStickyRight;\n      resultStyle.bottom = props.positionStickyBottom;\n      resultStyle.left = props.positionStickyLeft;\n    }\n  } else if (isRenderingStaticContent) {\n    if (props.positionFixed) {\n      resultStyle.position = runtime.isOnPageCanvas ? \"fixed\" : \"absolute\";\n    } else if (props.positionAbsolute) {\n      resultStyle.position = \"absolute\";\n    }\n  }\n  if (\"rotate\" in resultStyle && resultStyle.rotate === void 0) {\n    delete resultStyle.rotate;\n  }\n  return [resultStyle, constraintsRect];\n}\nvar filteredProps = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"opacity\",\n  \"overflow\",\n  \"radius\",\n  \"background\",\n  \"color\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\",\n  \"originX\",\n  \"originY\",\n  \"originZ\"\n]);\nfunction getMotionProps(props) {\n  const motionProps = {};\n  for (const key7 in props) {\n    const isValid = isValidMotionProp(key7) || isPropValid(key7);\n    if (isValid && !filteredProps.has(key7)) {\n      motionProps[key7] = asRecord(props)[key7];\n    } else if (key7 === \"positionTransition\" || key7 === \"layoutTransition\") {\n      motionProps[\"layout\"] = true;\n      if (typeof asRecord(props)[key7] !== \"boolean\" && !props.transition) {\n        motionProps[\"transition\"] = asRecord(props)[key7];\n      }\n    }\n  }\n  return motionProps;\n}\nfunction hasDataFramerName(props) {\n  return \"data-framer-name\" in props;\n}\nvar VisibleFrame = /* @__PURE__ */ forwardRef2(function VisibleFrame2(props, forwardedRef) {\n  const { name, center, border, _border, __portal } = props;\n  const { props: propsWithOverrides, children } = processOverrideForwarding(props);\n  const motionProps = getMotionProps(propsWithOverrides);\n  const layoutId = useLayoutId(props);\n  const cursor = getCursorFromEvents(props);\n  const fallbackRef = useRef6(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const dataProps = {\n    \"data-framer-component-type\": props.componentType ?? \"Frame\",\n    \"data-framer-cursor\": cursor,\n    \"data-framer-highlight\": cursor === \"pointer\" ? true : void 0,\n    \"data-layoutid\": layoutId,\n    \"data-framer-offset-parent-id\": asRecord(props)[\"data-framer-offset-parent-id\"]\n  };\n  if (!hasDataFramerName(props) && name) {\n    asRecord(dataProps)[\"data-framer-name\"] = name;\n  }\n  const [currentStyle, rect] = useStyleAndRect(propsWithOverrides);\n  const unwrappedProps = unwrapFrameProps(propsWithOverrides);\n  const autoSized = isAutoSized(unwrappedProps);\n  if (center && !(rect && !autoSized && constraintsEnabled(unwrappedProps))) {\n    if (!motionProps.transformTemplate) motionProps.transformTemplate = transformTemplate(center);\n    Object.assign(dataProps, layoutHintDataPropsForCenter(center));\n  } else if (!motionProps.transformTemplate) {\n    motionProps.transformTemplate = void 0;\n  }\n  useMeasureLayout(props, ref);\n  const backgroundImage = backgroundImageFromProps(props);\n  const inCodeComponent = useContext6(ComponentContainerContext);\n  const parentSize = resolveParentSize(propsWithOverrides, unwrappedProps, rect, inCodeComponent);\n  const wrappedContent = useProvideParentSize(\n    /* @__PURE__ */ jsxs3(Fragment4, { children: [\n      backgroundImage ? /* @__PURE__ */ jsx15(\n        BackgroundImageComponent,\n        {\n          alt: props.alt ?? \"\",\n          image: backgroundImage,\n          containerSize: rect ?? void 0,\n          nodeId: props.id && nodeIdFromString(props.id),\n          layoutId\n        }\n      ) : null,\n      children,\n      /* @__PURE__ */ jsx15(Border, { ..._border, border, layoutId })\n    ] }),\n    parentSize\n  );\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  const intrinsicSize = getIntrinsicSizeForBackgroundImage(backgroundImage);\n  if (props.fitImageDimension && intrinsicSize) {\n    currentStyle[props.fitImageDimension] = \"auto\";\n    currentStyle.aspectRatio = intrinsicSize.width / intrinsicSize.height;\n  }\n  return /* @__PURE__ */ jsxs3(MotionComponent, { ...dataProps, ...motionProps, layoutId, style: currentStyle, ref, children: [\n    wrappedContent,\n    __portal\n  ] });\n});\nvar FrameWithMotion = /* @__PURE__ */ forwardRef2(\n  function FrameWithMotion2(props, ref) {\n    countNodeRender();\n    const { visible = true } = props;\n    if (!visible) return null;\n    return /* @__PURE__ */ jsx15(VisibleFrame, { ...props, ref });\n  }\n);\nfunction resolveParentSize(props, unwrappedProps, rect, inCodeComponent) {\n  if (inCodeComponent) {\n    const parentSize = rect ? { width: rect.width, height: rect.height } : 1 /* Disabled */;\n    return parentSize;\n  }\n  const { _usesDOMRect } = props;\n  const {\n    widthType = 0 /* FixedNumber */,\n    heightType = 0 /* FixedNumber */,\n    width,\n    height\n  } = unwrappedProps;\n  if (rect && !_usesDOMRect) {\n    return rect;\n  }\n  if (widthType === 0 /* FixedNumber */ && heightType === 0 /* FixedNumber */ && typeof width === \"number\" && typeof height === \"number\") {\n    return { width, height };\n  }\n  if (_usesDOMRect || props.positionFixed || props.positionAbsolute) {\n    return 2 /* DisabledForCurrentLevel */;\n  }\n  return 0 /* Unknown */;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport { jsx as jsx16, jsxs as jsxs4 } from \"react/jsx-runtime\";\nfunction EmptyState({\n  title = \"\",\n  description = \"Click and drag the connector to any frame on the canvas \\u2192\",\n  children,\n  size,\n  hide,\n  insideUserCodeComponent = false,\n  position = \"absolute\"\n}) {\n  const { target } = RenderEnvironment;\n  const childCount = React25.Children.count(children);\n  if (insideUserCodeComponent && childCount === 0) {\n    return /* @__PURE__ */ jsx16(FrameWithMotion, { ...size, \"data-name\": \"placeholder\" });\n  }\n  if (target !== RenderTarget.canvas) return null;\n  if (hide) return null;\n  if (childCount !== 0) return null;\n  return /* @__PURE__ */ jsx16(\n    FrameWithMotion,\n    {\n      className: \"framerInternalUI-canvasPlaceholder\",\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      style: { position, ...size },\n      children: /* @__PURE__ */ jsx16(\n        \"div\",\n        {\n          style: {\n            display: \"flex\",\n            alignItems: \"center\",\n            lineHeight: \"1.4\",\n            height: \"100%\",\n            width: \"100%\"\n          },\n          children: /* @__PURE__ */ jsxs4(\n            \"div\",\n            {\n              style: {\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                flexDirection: \"column\",\n                width: \"100%\",\n                // Use a mask to fade out the right edge of the content as it gets cropped.\n                WebkitMaskImage: `linear-gradient(90deg, black, black calc(100% - 12px * ${scaleFactor}), transparent)`\n              },\n              children: [\n                /* @__PURE__ */ jsx16(Title, { children: title }),\n                /* @__PURE__ */ jsx16(Description, { children: description })\n              ]\n            }\n          )\n        }\n      )\n    },\n    \"empty-state\"\n  );\n}\nvar scaleFactor = \"var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)\";\nfunction Title({ children }) {\n  return /* @__PURE__ */ jsx16(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 600,\n        marginBottom: \"5px\"\n      },\n      children\n    }\n  );\n}\nfunction Description({ children }) {\n  return /* @__PURE__ */ jsx16(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 400,\n        maxWidth: \"200px\"\n      },\n      children\n    }\n  );\n}\n\n// ../../library/src/components/Navigation.tsx\nimport React31, { Component as Component6 } from \"react\";\n\n// ../../library/src/components/AnimateLayout/SharedLayoutRoot.tsx\nimport React26, { Component as Component4 } from \"react\";\nimport { jsx as jsx17 } from \"react/jsx-runtime\";\nvar TREE_ROOT_ID = \"__LAYOUT_TREE_ROOT\";\nvar SharedLayoutContext = /* @__PURE__ */ React26.createContext({\n  schedulePromoteTree: () => {\n  },\n  scheduleProjectionDidUpdate: () => {\n  },\n  initLead: () => {\n  }\n});\nvar SharedLayoutRoot = class extends Component4 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"shouldAnimate\", false);\n    __publicField(this, \"transition\");\n    __publicField(this, \"lead\");\n    __publicField(this, \"follow\");\n    __publicField(this, \"scheduledPromotion\", false);\n    __publicField(this, \"scheduledDidUpdate\", false);\n    __publicField(this, \"scheduleProjectionDidUpdate\", () => {\n      this.scheduledDidUpdate = true;\n    });\n    // schedule a promotion to run later in getSnapshotBeforeUpdate\n    __publicField(this, \"schedulePromoteTree\", (tree, transition, shouldAnimate) => {\n      this.follow = this.lead;\n      this.shouldAnimate = shouldAnimate;\n      this.lead = tree;\n      this.transition = transition;\n      this.scheduledPromotion = true;\n    });\n    __publicField(this, \"initLead\", (tree, shouldAnimate) => {\n      this.follow = this.lead;\n      this.lead = tree;\n      if (this.follow && shouldAnimate) {\n        this.follow.layoutMaybeMutated = true;\n      }\n    });\n    __publicField(this, \"sharedLayoutContext\", {\n      schedulePromoteTree: this.schedulePromoteTree,\n      scheduleProjectionDidUpdate: this.scheduleProjectionDidUpdate,\n      initLead: this.initLead\n    });\n  }\n  // Runs after all descendent SharedLayoutTree finish taking snapshots in\n  // their getSnapshotBeforeUpdate lifecycle method.\n  getSnapshotBeforeUpdate() {\n    var _a;\n    if (!this.scheduledPromotion || !this.lead || !this.follow) return null;\n    const needsReset = ((_a = this.lead) == null ? void 0 : _a.layoutMaybeMutated) && !this.shouldAnimate;\n    this.lead.projectionNodes.forEach((projectionNode) => {\n      var _a2;\n      projectionNode == null ? void 0 : projectionNode.promote({\n        needsReset,\n        transition: this.shouldAnimate ? this.transition : void 0,\n        preserveFollowOpacity: projectionNode.options.layoutId === TREE_ROOT_ID && !((_a2 = this.follow) == null ? void 0 : _a2.isExiting)\n      });\n    });\n    if (this.shouldAnimate) {\n      this.follow.layoutMaybeMutated = true;\n    } else {\n      this.scheduleProjectionDidUpdate();\n    }\n    this.lead.layoutMaybeMutated = false;\n    this.transition = void 0;\n    this.scheduledPromotion = false;\n    return null;\n  }\n  componentDidUpdate() {\n    var _a, _b;\n    if (!this.lead) return null;\n    if (this.scheduledDidUpdate) {\n      (_b = (_a = this.lead.rootProjectionNode) == null ? void 0 : _a.root) == null ? void 0 : _b.didUpdate();\n      this.scheduledDidUpdate = false;\n    }\n  }\n  render() {\n    return /* @__PURE__ */ jsx17(SharedLayoutContext.Provider, { value: this.sharedLayoutContext, children: this.props.children });\n  }\n};\n\n// ../../library/src/components/MagicMotionCrossfadeRoot.tsx\nimport { jsx as jsx18 } from \"react/jsx-runtime\";\nvar rootStyles = {\n  width: \"100%\",\n  height: \"100%\",\n  backgroundColor: \"none\"\n};\nfunction MagicMotionCrossfadeRoot(props) {\n  return /* @__PURE__ */ jsx18(motion.div, { layoutId: TREE_ROOT_ID, style: rootStyles, children: props.children });\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport React30, { useContext as useContext10, useEffect as useEffect12, useRef as useRef10 } from \"react\";\n\n// ../../library/src/modules/useAppearEffect.ts\nimport React27 from \"react\";\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nimport { createContext, useContext as useContext7 } from \"react\";\n\n// ../../library/src/components/utils/refHelper.ts\nimport { useRef as useRef8 } from \"react\";\n\n// ../../library/src/utils/useMemoOne.ts\nimport { useEffect as useEffect10, useRef as useRef7, useState as useState2 } from \"react\";\nfunction useMemoOne(factory, inputs) {\n  const initial = useState2(() => ({\n    inputs,\n    result: factory()\n  }))[0];\n  const isFirstRun = useRef7(true);\n  const committed = useRef7(initial);\n  const useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && isEqual(inputs, committed.current.inputs, false));\n  const cache2 = useCache ? committed.current : {\n    inputs,\n    result: factory()\n  };\n  useEffect10(() => {\n    isFirstRun.current = false;\n    committed.current = cache2;\n  }, [cache2]);\n  return cache2.result;\n}\n\n// ../../library/src/components/utils/refHelper.ts\nfunction setRef(ref, value) {\n  if (isFunction(ref)) {\n    ref(value);\n  } else if (isMutableRef(ref)) {\n    ref.current = value;\n  }\n}\nfunction isMutableRef(ref) {\n  return isObject2(ref) && \"current\" in ref;\n}\nfunction refHasValue(ref) {\n  return isMutableRef(ref) && ref.current !== null;\n}\nfunction useStableRefWithObserver() {\n  const callbacks = useConstant(() => /* @__PURE__ */ new Set());\n  const cleanups = useConstant(() => /* @__PURE__ */ new Map());\n  return useConstant(\n    () => (ref, refCallback) => {\n      return {\n        get current() {\n          return ref.current;\n        },\n        set current(value) {\n          if (value === ref.current) return;\n          ref.current = value;\n          if (refCallback) refCallback(value);\n          cleanups.forEach((cleanup, callback) => {\n            if (cleanup) {\n              cleanup();\n            } else {\n              callback(null);\n            }\n          });\n          if (value === null) {\n            cleanups.clear();\n            callbacks.clear();\n            return;\n          }\n          callbacks.forEach((callback) => {\n            const cleanup = callback(value);\n            cleanups.set(callback, cleanup);\n          });\n        },\n        /**\n         * Adds `fn` to the list of callbacks to be called when the ref is updated.\n         * Executes `fn` immediately if the ref already has a value.\n         */\n        observe(fn) {\n          callbacks.add(fn);\n          const value = ref.current;\n          if (value) {\n            const cleanup = fn(value);\n            cleanups.set(fn, cleanup);\n          }\n        },\n        /**\n         * Removes `fn` from the list of callbacks.\n         * Runs the cleanup for `fn` if it has been called before.\n         */\n        unobserve(fn) {\n          if (!fn) return;\n          callbacks.delete(fn);\n          if (!cleanups.has(fn)) return;\n          const cleanupFn = cleanups.get(fn);\n          if (cleanupFn) {\n            cleanupFn();\n          } else {\n            fn(null);\n          }\n          cleanups.delete(fn);\n        }\n      };\n    }\n  );\n}\nfunction useObserverRef(forwardedRef) {\n  const fallbackRef = useRef8(null);\n  const createStableRefWithObserver = useStableRefWithObserver();\n  return useConstant(() => {\n    if (isMutableRef(forwardedRef)) return createStableRefWithObserver(forwardedRef);\n    if (isFunction(forwardedRef)) return createStableRefWithObserver(fallbackRef, forwardedRef);\n    return createStableRefWithObserver(fallbackRef);\n  });\n}\nfunction useRefEffect(ref, effect, deps) {\n  const effectRef = useRef8();\n  const depsChangedRef = useRef8();\n  useMemoOne(() => {\n    if (depsChangedRef.current !== void 0) {\n      depsChangedRef.current = true;\n    }\n  }, deps ?? [{}]);\n  if (!ref) return;\n  const depsChanged = depsChangedRef.current;\n  if (depsChanged === false) return;\n  depsChangedRef.current = false;\n  ref.unobserve(effectRef.current);\n  ref.observe(effect);\n  effectRef.current = effect;\n}\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nvar SharedIntersectionObserver = class {\n  constructor(options) {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedIntersectionObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    this.sharedIntersectionObserver = new IntersectionObserver(\n      this.intersectionObserverCallback.bind(this),\n      options\n    );\n  }\n  intersectionObserverCallback(entries, observer) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement) callbackForElement(entry, observer);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    if (!this.sharedIntersectionObserver) return;\n    this.sharedIntersectionObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    if (!this.sharedIntersectionObserver) return;\n    this.sharedIntersectionObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n  get root() {\n    var _a;\n    return (_a = this.sharedIntersectionObserver) == null ? void 0 : _a.root;\n  }\n};\nvar SharedIntersectionObserverContext = /* @__PURE__ */ createContext(/* @__PURE__ */ new Map());\nfunction observeElement(observers, key7, element, root, callback, rootMargin, threshold) {\n  let observer = observers.get(key7);\n  if (!observer || observer.root !== (root == null ? void 0 : root.current)) {\n    observer = new SharedIntersectionObserver({ root: root == null ? void 0 : root.current, rootMargin, threshold });\n    observers.set(key7, observer);\n  }\n  observer.observeElementWithCallback(element, callback);\n  return () => {\n    observer.unobserve(element);\n  };\n}\nfunction _useSharedIntersectionObserver(ref, callback, options) {\n  const key7 = useConstant(() => `${options.rootMargin}`);\n  const observers = useContext7(SharedIntersectionObserverContext);\n  const { enabled, root, rootMargin, threshold } = options;\n  useRefEffect(\n    ref,\n    (element) => {\n      if (!enabled) return;\n      if (element === null) return;\n      return observeElement(observers, key7, element, root, callback, rootMargin, threshold);\n    },\n    [enabled, callback, root, rootMargin, threshold]\n  );\n}\nvar useSharedIntersectionObserver = typeof IntersectionObserver === \"undefined\" ? noop2 : _useSharedIntersectionObserver;\n\n// ../../library/src/modules/useAppearEffect.ts\nvar thresholds = /* @__PURE__ */ new Array(100).fill(void 0).map((_, i) => i * 0.01);\nvar ViewportContext = /* @__PURE__ */ React27.createContext(null);\nfunction useAppearEffect(ref, appearCallback, options) {\n  const internalState = React27.useRef({\n    isInView: false,\n    hasAnimatedOnce: false\n  });\n  const { enabled, animateOnce, threshold, rootMargin = `0px 0px 0px 0px` } = options;\n  const callback = React27.useCallback(\n    (entry) => {\n      const { isInView, hasAnimatedOnce } = internalState.current;\n      const isIntersecting = isIntersectingWithThreshold(entry, (threshold == null ? void 0 : threshold.y) ?? 0);\n      if (isIntersecting && !isInView) {\n        if (animateOnce && hasAnimatedOnce) return;\n        internalState.current.hasAnimatedOnce = true;\n        internalState.current.isInView = true;\n        appearCallback(true);\n        return;\n      }\n      if (!isIntersecting && isInView) {\n        internalState.current.isInView = false;\n        if (animateOnce) return;\n        appearCallback(false);\n        return;\n      }\n    },\n    [animateOnce, threshold == null ? void 0 : threshold.y, appearCallback]\n  );\n  useSharedIntersectionObserver(ref, callback, {\n    threshold: thresholds,\n    rootMargin,\n    enabled: enabled ?? true\n  });\n}\nfunction calculatedIntersection(intersectionRect, boundingClientRect) {\n  if (boundingClientRect.height === 0) return 0;\n  return intersectionRect.height / Math.min(boundingClientRect.height, safeWindow.innerHeight);\n}\nfunction isIntersectingWithThreshold({ boundingClientRect, intersectionRect, isIntersecting }, threshold) {\n  if (boundingClientRect.height === 0) return isIntersecting;\n  return isIntersecting && calculatedIntersection(intersectionRect, boundingClientRect) >= threshold;\n}\n\n// ../../library/src/components/AnimateLayout/SharedLayoutTree.tsx\nimport React28, { Component as Component5 } from \"react\";\nimport { jsx as jsx19 } from \"react/jsx-runtime\";\nvar LayoutTree = class extends Component5 {\n  constructor() {\n    super(...arguments);\n    /**\n     * SharedLayoutTrees need to reset the projections styles previously applied\n     * on their boxes if they are becoming lead but not animating.\n     */\n    __publicField(this, \"layoutMaybeMutated\", false);\n    /**\n     * A list of projection nodes in the tree\n     */\n    __publicField(this, \"projectionNodes\", /* @__PURE__ */ new Map());\n    /**\n     * The projection node with the smallest depth in the tree's children.\n     */\n    __publicField(this, \"rootProjectionNode\");\n    /**\n     * When a tree is tagged as being removed, either by usePresence, or by\n     * Navigation, we set it on `this` in shouldComponentUpdate so that it's\n     * accessible by SharedLayoutRoot before the LayoutTree has updated.\n     */\n    __publicField(this, \"isExiting\");\n    __publicField(this, \"shouldPreserveFollowOpacity\", (child) => {\n      return child.options.layoutId === TREE_ROOT_ID && !this.props.isExiting;\n    });\n    __publicField(this, \"switchLayoutGroupContext\", {\n      register: (child) => this.addChild(child),\n      deregister: (child) => this.removeChild(child),\n      // Configs to use for the initial promotion on mount in Motion\n      transition: this.props.isLead !== void 0 && this.props.animatesLayout ? this.props.transition : void 0,\n      shouldPreserveFollowOpacity: this.shouldPreserveFollowOpacity\n    });\n  }\n  componentDidMount() {\n    if (this.props.isLead) {\n      this.props.sharedLayoutContext.initLead(this, !!this.props.animatesLayout);\n    }\n  }\n  shouldComponentUpdate(nextProps) {\n    const { isLead, isExiting, isOverlayed, animatesLayout, transition, sharedLayoutContext } = nextProps;\n    this.isExiting = isExiting;\n    if (isLead === void 0) return true;\n    const hasBecomeLead = !this.props.isLead && isLead;\n    const hasExitBeenCancelled = this.props.isExiting && !isExiting;\n    const shouldPromote = hasBecomeLead || hasExitBeenCancelled;\n    const shouldDemote = !!this.props.isLead && !isLead;\n    const overlayChanged = this.props.isOverlayed !== isOverlayed;\n    if (shouldPromote || shouldDemote) {\n      this.projectionNodes.forEach((projection) => projection == null ? void 0 : projection.willUpdate());\n    }\n    if (shouldPromote) {\n      sharedLayoutContext.schedulePromoteTree(this, transition, !!animatesLayout);\n    } else if (overlayChanged) {\n      sharedLayoutContext.scheduleProjectionDidUpdate();\n    }\n    return !!shouldPromote && !!animatesLayout;\n  }\n  addChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.set(layoutId, child);\n      this.setRootChild(child);\n    }\n  }\n  /**\n   * As children are added, make sure that `this.rootProjectionNode` is always the\n   * child with the smallest depth.\n   */\n  setRootChild(child) {\n    if (!this.rootProjectionNode) return this.rootProjectionNode = child;\n    this.rootProjectionNode = this.rootProjectionNode.depth < child.depth ? this.rootProjectionNode : child;\n  }\n  removeChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.delete(layoutId);\n    }\n  }\n  render() {\n    return /* @__PURE__ */ jsx19(SwitchLayoutGroupContext.Provider, { value: this.switchLayoutGroupContext, children: this.props.children });\n  }\n};\nvar SharedLayoutTree = (props) => {\n  const sharedLayoutContext = React28.useContext(SharedLayoutContext);\n  return /* @__PURE__ */ jsx19(LayoutTree, { ...props, sharedLayoutContext });\n};\n\n// ../../library/src/components/NavigationContainerContext.tsx\nimport React29, { useContext as useContext8 } from \"react\";\nvar NavigationContainerContext = /* @__PURE__ */ React29.createContext(true);\nfunction useIsInCurrentNavigationTarget() {\n  const isInCurrentNavigationTarget = useContext8(NavigationContainerContext);\n  return isInCurrentNavigationTarget;\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { createContext as createContext2, useCallback as useCallback7, useContext as useContext9, useEffect as useEffect11, useRef as useRef9 } from \"react\";\n\n// ../../library/src/components/utils/useMap.ts\nfunction newMap() {\n  return /* @__PURE__ */ new Map();\n}\nfunction useMap() {\n  return useConstant(newMap);\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { jsx as jsx20 } from \"react/jsx-runtime\";\nvar NavigationTargetContext = /* @__PURE__ */ createContext2({ register: () => {\n}, deregister: () => {\n} });\nvar NavigationTargetWrapper = ({ isCurrent, isOverlayed, children }) => {\n  const callbacks = useMap();\n  const register = useCallback7(\n    (fn) => {\n      if (callbacks.has(fn)) {\n        console.warn(\"NavigationTargetWrapper: already registered\");\n        return;\n      }\n      callbacks.set(fn, void 0);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const deregister = useCallback7(\n    (fn) => {\n      const cleanup = callbacks.get(fn);\n      cleanup == null ? void 0 : cleanup();\n      callbacks.delete(fn);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const value = useRef9({ register, deregister }).current;\n  useEffect11(() => {\n    callbacks.forEach((_, cb) => {\n      const newCleanup = cb(isCurrent, isOverlayed);\n      callbacks.set(cb, isFunction(newCleanup) ? newCleanup : void 0);\n    });\n    return () => {\n      callbacks.forEach((cleanup, cb) => {\n        if (!cleanup) return;\n        cleanup();\n        callbacks.set(cb, void 0);\n      });\n    };\n  }, [\n    isCurrent,\n    isOverlayed,\n    callbacks\n    /* constant, so should never change */\n  ]);\n  return /* @__PURE__ */ jsx20(NavigationTargetContext.Provider, { value, children });\n};\nfunction useOnCurrentTargetChange(callback, deps = []) {\n  const { register, deregister } = useContext9(NavigationTargetContext);\n  useEffect11(() => {\n    if (!callback) return;\n    register(callback);\n    return () => deregister(callback);\n  }, [register, deregister, ...deps]);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport { jsx as jsx21, jsxs as jsxs5 } from \"react/jsx-runtime\";\nvar NavigationContainer = /* @__PURE__ */ React30.memo(function NavigationContainer2({\n  isLayeredContainer,\n  isCurrent,\n  isPrevious,\n  isOverlayed = false,\n  visible,\n  transitionProps,\n  children,\n  backdropColor,\n  onTapBackdrop,\n  backfaceVisible,\n  exitBackfaceVisible,\n  animation,\n  exitAnimation,\n  instant,\n  initialProps,\n  exitProps,\n  position = { top: 0, right: 0, bottom: 0, left: 0 },\n  withMagicMotion,\n  index,\n  areMagicMotionLayersPresent,\n  id,\n  isInitial\n}) {\n  const animate3 = useAnimation();\n  const presence = useContext10(PresenceContext);\n  const { persistLayoutIdCache } = useContext10(LayoutIdContext);\n  const previousState = useRef10({\n    wasCurrent: void 0,\n    wasPrevious: false,\n    wasBeingRemoved: false,\n    wasReset: true,\n    origins: getOriginProps({}, initialProps, transitionProps)\n  });\n  const viewportRef = useRef10(null);\n  const isBeingRemoved = presence !== null && !presence.isPresent;\n  if (isCurrent && previousState.current.wasCurrent === void 0) persistLayoutIdCache();\n  useEffect12(() => {\n    if (isLayeredContainer || !animate3) return;\n    if (isBeingRemoved) {\n      previousState.current = {\n        ...previousState.current,\n        wasBeingRemoved: isBeingRemoved\n      };\n      return;\n    }\n    const { wasPrevious, wasCurrent } = previousState.current;\n    const shouldAnimateIn = isCurrent && !wasCurrent || // If the screen was being removed as a result of a \"go back\" transition, but that removal is interrupted,\n    // resulting in this screen being restored to the current screen, we need to trigger an animation.\n    !isBeingRemoved && previousState.current.wasBeingRemoved && isCurrent;\n    const shouldAnimateOut = isPrevious && !wasPrevious;\n    const origins = getOriginProps(previousState.current.origins, initialProps, transitionProps);\n    let wasReset = previousState.current.wasReset;\n    if (shouldAnimateIn || shouldAnimateOut) {\n      animate3.stop();\n      void animate3.start({\n        zIndex: index,\n        ...origins,\n        // @TODO: Ignored for now, but should re-check later.\n        ...transitionProps\n        // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n      });\n      wasReset = false;\n    } else if (wasReset === false) {\n      animate3.stop();\n      animate3.set({ zIndex: index, ...allAnimatableProperties, opacity: 0 });\n      wasReset = true;\n    }\n    previousState.current = {\n      wasCurrent: !!isCurrent,\n      wasPrevious: !!isPrevious,\n      wasBeingRemoved: false,\n      wasReset,\n      origins\n    };\n  }, [isCurrent, isPrevious, isBeingRemoved]);\n  const transition = instant ? { type: false } : \"velocity\" in animation ? { ...animation, velocity: 0 } : animation;\n  const exitTransition = instant ? { type: false } : exitAnimation || animation;\n  const layout = { ...position };\n  if (layout.left === void 0 || layout.right === void 0) layout.width = \"auto\";\n  if (layout.top === void 0 || layout.bottom === void 0) layout.height = \"auto\";\n  const needsPerspective = contains3Dprops(transitionProps) || contains3Dprops(initialProps);\n  const perspective = needsPerspective && (isLayeredContainer || isCurrent || isPrevious) ? 1200 : void 0;\n  const identity = { ...allAnimatableProperties, ...previousState.current.origins };\n  const animations2 = isLayeredContainer ? {\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    initial: { ...identity, ...initialProps },\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    animate: { ...identity, ...transitionProps, transition },\n    // Overlay animations are sometimes instant\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    exit: { ...identity, ...exitProps, transition: animation }\n    // Overlay exits are always animated\n  } : {\n    animate: animate3,\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    exit: { ...identity, ...exitProps, transition: exitTransition }\n  };\n  const isPresent = !(isBeingRemoved || areMagicMotionLayersPresent === false);\n  const isCurrentTarget = !!isCurrent && isPresent;\n  const forceOpacity = isCurrent && isInitial;\n  return /* @__PURE__ */ jsxs5(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"NavigationContainerWrapper\",\n      width: \"100%\",\n      height: \"100%\",\n      style: {\n        position: \"absolute\",\n        transformStyle: \"flat\",\n        backgroundColor: \"transparent\",\n        overflow: \"hidden\",\n        // Unlike Overlays, Screens set zIndex via animation controls to ensure it's set in parallel with the animation being played.\n        // However, when a screen exits, it needs to preserve it's zIndex, which can't be applied through an `exit` animation,\n        // and might be impacted by the layer created by `perspective`.\n        zIndex: isLayeredContainer || isBeingRemoved || isCurrent && withMagicMotion ? index : void 0,\n        pointerEvents: void 0,\n        visibility: visible ? \"visible\" : \"hidden\",\n        perspective\n      },\n      children: [\n        isLayeredContainer && /* @__PURE__ */ jsx21(\n          FrameWithMotion,\n          {\n            width: \"100%\",\n            height: \"100%\",\n            \"data-framer-component-type\": \"NavigationContainerBackdrop\",\n            transition: animation,\n            initial: { opacity: instant && visible ? 1 : 0 },\n            animate: { opacity: 1 },\n            exit: { opacity: 0 },\n            backgroundColor: backdropColor ? backdropColor : \"transparent\",\n            onTap: !isBeingRemoved ? onTapBackdrop : void 0\n          }\n        ),\n        /* @__PURE__ */ jsx21(\n          FrameWithMotion,\n          {\n            ...layout,\n            ...animations2,\n            transition: {\n              default: transition,\n              originX: { type: false },\n              originY: { type: false },\n              originZ: { type: false }\n            },\n            backgroundColor: \"transparent\",\n            backfaceVisible: !isBeingRemoved ? backfaceVisible : exitBackfaceVisible,\n            \"data-framer-component-type\": \"NavigationContainer\",\n            \"data-framer-is-current-navigation-target\": !!isCurrent,\n            style: {\n              pointerEvents: void 0,\n              // When we mount a new screen that is going to be animated in with animation controls,\n              // we need to ensure that the screen is hidden until the animation starts.\n              opacity: forceOpacity || isLayeredContainer || isCurrent && withMagicMotion ? 1 : 0\n            },\n            \"data-is-present\": isPresent ? void 0 : false,\n            ref: viewportRef,\n            children: /* @__PURE__ */ jsx21(ViewportContext.Provider, { value: viewportRef, children: /* @__PURE__ */ jsx21(NavigationContainerContext.Provider, { value: isCurrentTarget, children: /* @__PURE__ */ jsx21(NavigationTargetWrapper, { isCurrent: isCurrentTarget, isOverlayed, children: /* @__PURE__ */ jsx21(\n              SharedLayoutTree,\n              {\n                isLead: isCurrent,\n                animatesLayout: !!withMagicMotion,\n                transition,\n                isExiting: !isPresent,\n                isOverlayed,\n                id,\n                children\n              }\n            ) }) }) })\n          }\n        )\n      ]\n    }\n  );\n}, shouldUsePreviousValue);\nfunction shouldUsePreviousValue(prevProps, nextProps) {\n  if (nextProps.isCurrent === void 0) return false;\n  if (prevProps.isCurrent !== nextProps.isCurrent) return false;\n  if (prevProps.isPrevious !== nextProps.isPrevious) return false;\n  if (nextProps.isCurrent && prevProps.isOverlayed !== nextProps.isOverlayed) return false;\n  return true;\n}\nfunction getOriginProps(currentOriginProps, initialProps, transitionProps) {\n  const result = { ...currentOriginProps };\n  if (initialProps) {\n    if (isFiniteNumber(initialProps.originX)) result.originX = initialProps.originX;\n    if (isFiniteNumber(initialProps.originY)) result.originY = initialProps.originY;\n    if (isFiniteNumber(initialProps.originZ)) result.originZ = initialProps.originZ;\n  }\n  if (transitionProps) {\n    if (isFiniteNumber(transitionProps.originX)) result.originX = transitionProps.originX;\n    if (isFiniteNumber(transitionProps.originY)) result.originY = transitionProps.originY;\n    if (isFiniteNumber(transitionProps.originZ)) result.originZ = transitionProps.originZ;\n  }\n  return result;\n}\nfunction contains3Dprops(containerProps) {\n  var _a, _b, _c;\n  if (!containerProps) return false;\n  const containsProps = \"rotateX\" in containerProps || \"rotateY\" in containerProps || \"z\" in containerProps;\n  if (!containsProps) return false;\n  const toPropsContain3d = containerProps.rotateX !== 0 || containerProps.rotateY !== 0 || containerProps.z !== 0;\n  const fromPropsContain3d = ((_a = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _a.rotateX.from) !== 0 || ((_b = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _b.rotateY.from) !== 0 || ((_c = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _c.z.from) !== 0;\n  return toPropsContain3d || fromPropsContain3d;\n}\nvar allAnimatableProperties = {\n  x: 0,\n  y: 0,\n  z: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  rotateZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0,\n  opacity: 1\n};\n\n// ../../library/src/components/NavigationContext.ts\nimport { createContext as createContext3 } from \"react\";\n\n// ../../library/src/components/NavigatorMock.tsx\nvar NavigatorMock = class {\n  constructor() {\n    __publicField(this, \"warning\", () => {\n      warnOnce2(\"The Navigator API is only available inside of Framer: https://www.framer.com/\");\n    });\n    __publicField(this, \"goBack\", () => this.warning());\n    __publicField(this, \"instant\", () => this.warning());\n    __publicField(this, \"fade\", () => this.warning());\n    __publicField(this, \"push\", () => this.warning());\n    __publicField(this, \"modal\", () => this.warning());\n    __publicField(this, \"overlay\", () => this.warning());\n    __publicField(this, \"flip\", () => this.warning());\n    __publicField(this, \"customTransition\", () => this.warning());\n    __publicField(this, \"magicMotion\", () => this.warning());\n  }\n};\nvar navigatorMock = /* @__PURE__ */ new NavigatorMock();\n\n// ../../library/src/components/NavigationContext.ts\nvar NavigationContext = /* @__PURE__ */ createContext3(navigatorMock);\n\n// ../../library/src/components/NavigationTransitions.ts\nvar TransitionDefaults = {\n  Fade: {\n    exit: { opacity: 0 },\n    enter: { opacity: 0 }\n  },\n  PushLeft: {\n    exit: { x: \"-30%\" },\n    enter: { x: \"100%\" }\n  },\n  PushRight: {\n    exit: { x: \"30%\" },\n    enter: { x: \"-100%\" }\n  },\n  PushUp: {\n    exit: { y: \"-30%\" },\n    enter: { y: \"100%\" }\n  },\n  PushDown: {\n    exit: { y: \"30%\" },\n    enter: { y: \"-100%\" }\n  },\n  Instant: {\n    animation: { type: false },\n    enter: { opacity: 0 }\n  },\n  Modal: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { center: true },\n    enter: { opacity: 0, scale: 1.2 }\n  },\n  OverlayLeft: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { right: 0, top: 0, bottom: 0 },\n    enter: { x: \"100%\" }\n  },\n  OverlayRight: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { left: 0, top: 0, bottom: 0 },\n    enter: { x: \"-100%\" }\n  },\n  OverlayUp: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { bottom: 0, left: 0, right: 0 },\n    enter: { y: \"100%\" }\n  },\n  OverlayDown: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { top: 0, left: 0, right: 0 },\n    enter: { y: \"-100%\" }\n  },\n  FlipLeft: {\n    backfaceVisible: false,\n    exit: { rotateY: -180 },\n    enter: { rotateY: 180 }\n  },\n  FlipRight: {\n    backfaceVisible: false,\n    exit: { rotateY: 180 },\n    enter: { rotateY: -180 }\n  },\n  FlipUp: {\n    backfaceVisible: false,\n    exit: { rotateX: 180 },\n    enter: { rotateX: -180 }\n  },\n  FlipDown: {\n    backfaceVisible: false,\n    exit: { rotateX: -180 },\n    enter: { rotateX: 180 }\n  },\n  MagicMotion: {\n    withMagicMotion: true\n  }\n};\nfunction pushTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"right\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.PushLeft;\n    case \"left\":\n      return TransitionDefaults.PushRight;\n    case \"bottom\":\n      return TransitionDefaults.PushUp;\n    case \"top\":\n      return TransitionDefaults.PushDown;\n  }\n}\nfunction overlayTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.OverlayLeft;\n    case \"left\":\n      return TransitionDefaults.OverlayRight;\n    case \"bottom\":\n      return TransitionDefaults.OverlayUp;\n    case \"top\":\n      return TransitionDefaults.OverlayDown;\n  }\n}\nfunction flipTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.FlipLeft;\n    case \"left\":\n      return TransitionDefaults.FlipRight;\n    case \"bottom\":\n      return TransitionDefaults.FlipUp;\n    case \"top\":\n      return TransitionDefaults.FlipDown;\n  }\n}\n\n// ../../library/src/components/reduceNavigationStateForAction.ts\nvar defaultState = () => ({\n  current: -1,\n  previous: -1,\n  currentOverlay: -1,\n  previousOverlay: -1,\n  visualIndex: 0,\n  overlayItemId: 0,\n  historyItemId: 0,\n  history: [],\n  overlayStack: [],\n  containers: {},\n  containerIndex: {},\n  containerVisualIndex: {},\n  containerIsRemoved: {},\n  transitionForContainer: {},\n  previousTransition: null\n});\nfunction reduceNavigationStateForAction(state, action) {\n  switch (action.type) {\n    case \"addOverlay\":\n      return addOverlay(state, action.transition, action.component);\n    case \"removeOverlay\":\n      return removeOverlay(state);\n    case \"add\":\n      return add(state, action.key, action.transition, action.component);\n    case \"remove\":\n      return remove(state);\n    case \"update\":\n      return updateComponent(state, action.key, action.component);\n    case \"back\":\n      return back(state);\n    case \"forward\":\n      return forward(state);\n    default:\n      return;\n  }\n}\nfunction updateComponent(currentState, key7, component) {\n  return {\n    ...currentState,\n    containers: {\n      ...currentState.containers,\n      [key7]: component\n    }\n  };\n}\nfunction addOverlay(currentState, transition, component) {\n  const currentOverlay = currentState.overlayStack[currentState.currentOverlay];\n  if (currentOverlay && currentOverlay.component === component) return;\n  const overlayItemId = currentState.overlayItemId + 1;\n  const overlayStack = [\n    ...currentState.overlayStack,\n    {\n      key: `stack-${overlayItemId}`,\n      component,\n      transition\n    }\n  ];\n  return {\n    ...currentState,\n    overlayStack,\n    overlayItemId,\n    currentOverlay: Math.max(0, Math.min(currentState.currentOverlay + 1, overlayStack.length - 1)),\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction removeOverlay(currentState) {\n  return {\n    ...currentState,\n    overlayStack: [],\n    currentOverlay: -1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction add(currentState, key7, transition, component) {\n  if (!currentState.containers[key7]) currentState.containers[key7] = component;\n  currentState.history = currentState.history.slice(0, currentState.current + 1);\n  currentState.visualIndex = Math.max(currentState.history.length, 0);\n  const currentItem = currentState.history[currentState.history.length - 1];\n  const isCurrentScreen = currentItem && currentItem.key === key7;\n  currentState.overlayStack = [];\n  if (isCurrentScreen && currentState.currentOverlay > -1) {\n    return {\n      ...currentState,\n      currentOverlay: -1,\n      previousOverlay: currentState.currentOverlay\n    };\n  }\n  if (isCurrentScreen) return;\n  const nextIndex = currentState.containerVisualIndex[key7];\n  const removed = currentState.containerIsRemoved[key7];\n  const shouldMoveForward = (currentItem == null ? void 0 : currentItem.key) && transition.withMagicMotion ? isNextTargetForward(key7, nextIndex, removed, currentState.history) : true;\n  currentState.history.push({\n    key: key7,\n    transition,\n    visualIndex: shouldMoveForward ? Math.max(currentState.visualIndex, 0) : currentState.containerVisualIndex[key7]\n  });\n  const current = currentState.current + 1;\n  const previous = currentState.current;\n  for (const containerKey in currentState.containerIndex) {\n    if (currentState.containerIndex[containerKey] === current) {\n      currentState.containerIndex[containerKey] = findLatestHistoryIndex(containerKey, currentState.history);\n    }\n  }\n  currentState.containerIndex[key7] = current;\n  const { containerVisualIndex, containerIsRemoved } = magicMotionPropsForAdd(currentState, key7, shouldMoveForward);\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerVisualIndex,\n    containerIsRemoved,\n    transitionForContainer,\n    previousTransition: null,\n    currentOverlay: -1,\n    historyItemId: currentState.historyItemId + 1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction back(currentState) {\n  const containers = { ...currentState.containers };\n  const nextState = remove(currentState);\n  if (!nextState) return;\n  nextState.containers = containers;\n  return nextState;\n}\nfunction forward(currentState) {\n  const nextItem = currentState.history[currentState.current + 1];\n  if (!nextItem) return;\n  const { key: key7, transition, component } = nextItem;\n  const history = [...currentState.history];\n  const nextState = add(currentState, key7, transition, component);\n  if (!nextState) return;\n  nextState.history = history;\n  return nextState;\n}\nfunction remove(currentState) {\n  const history = [...currentState.history.slice(0, currentState.current + 1)];\n  if (history.length === 1) return;\n  const currentItem = history.pop();\n  if (!currentItem) return;\n  const target = history[history.length - 1];\n  assert(target, \"The navigation history must have at least one component\");\n  currentState.containerIndex[target.key] = history.length - 1;\n  const shouldRemoveContainer = history.every((item) => item.key !== currentItem.key);\n  if (shouldRemoveContainer) {\n    delete currentState.containers[currentItem.key];\n  }\n  const current = currentState.current - 1;\n  const previous = currentState.current;\n  const { containerIsRemoved, containerVisualIndex, previousTransition, visualIndex } = magicMotionPropsForRemove(\n    currentState,\n    target,\n    currentItem\n  );\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerIsRemoved,\n    containerVisualIndex,\n    previousTransition,\n    visualIndex,\n    transitionForContainer\n  };\n}\nfunction magicMotionPropsForAdd(currentState, nextKey, shouldMoveForward) {\n  const update = {\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    containerIsRemoved: { ...currentState.containerIsRemoved }\n  };\n  if (shouldMoveForward) {\n    update.containerVisualIndex[nextKey] = currentState.history.length - 1;\n    update.containerIsRemoved[nextKey] = false;\n  } else {\n    const nextVisualIndex = currentState.containerVisualIndex[nextKey];\n    for (const [key7, visualIndex] of Object.entries(currentState.containerVisualIndex)) {\n      if (nextVisualIndex !== void 0 && visualIndex > nextVisualIndex) {\n        update.containerIsRemoved[key7] = true;\n      }\n    }\n  }\n  return update;\n}\nfunction magicMotionPropsForRemove(currentState, target, currentItem) {\n  const validTargets = [target.key, currentItem.key];\n  const nextValidTarget = currentState.history[currentState.history.length - 2];\n  const previousTransition = currentState.previousTransition === null ? null : { ...currentState.previousTransition };\n  const update = {\n    containerIsRemoved: { ...currentState.containerIsRemoved },\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    previousTransition,\n    visualIndex: currentState.visualIndex\n  };\n  if (nextValidTarget) validTargets.push(nextValidTarget.key);\n  const targetVisualIndex = currentState.containerVisualIndex[target.key];\n  const currentVisualIndex = currentState.containerVisualIndex[currentItem.key];\n  const shouldRemoveLastKey = targetVisualIndex !== void 0 && currentVisualIndex !== void 0 && targetVisualIndex <= currentVisualIndex || target.visualIndex !== void 0 && target.visualIndex < currentState.history.length - 1;\n  const nextIndex = target.visualIndex;\n  if (shouldRemoveLastKey) {\n    update.containerIsRemoved[currentItem.key] = true;\n    update.containerVisualIndex[target.key] = nextIndex !== void 0 ? nextIndex : currentState.history.length - 1;\n  } else {\n    update.visualIndex = currentState.visualIndex + 1;\n    update.containerVisualIndex[target.key] = currentState.visualIndex + 1;\n  }\n  if (currentItem.transition.withMagicMotion) update.previousTransition = currentItem.transition || null;\n  currentState.containerIsRemoved[target.key] = false;\n  return update;\n}\nfunction findLatestHistoryIndex(key7, history) {\n  var _a;\n  for (let index = history.length; index > history.length; index--) {\n    if (((_a = history[index]) == null ? void 0 : _a.key) === key7) return index;\n  }\n  return -1;\n}\nfunction updateTransitions(current, previous, history, containerIndex, transitionForContainer) {\n  const transitions = { ...transitionForContainer };\n  for (const [key7, screenIndex] of Object.entries(containerIndex)) {\n    const transition = transitionForScreen(screenIndex, { current, previous, history });\n    if (transition) {\n      transitions[key7] = transition;\n    }\n  }\n  return transitions;\n}\nfunction isNextTargetForward(key7, index, removed, history) {\n  if (removed || index === void 0) return true;\n  if (index === 0) return false;\n  const forwardHistory = history.slice(index, history.length);\n  if (forwardHistory.findIndex((item) => item.key === key7) > -1) return true;\n  const backwardsHistory = history.slice(0, index - 1);\n  if (backwardsHistory.findIndex((item) => item.key === key7) > -1) return false;\n  return true;\n}\nfunction transitionForScreen(screenIndex, stackState) {\n  const { current, previous, history } = stackState;\n  if (screenIndex !== current && screenIndex !== previous) return void 0;\n  if (screenIndex === current && current > previous) {\n    const item = history[screenIndex];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current > previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === current && current < previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current < previous) {\n    const item = history[screenIndex];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n}\nvar allAnimatableKeys = /* @__PURE__ */ objectKeys(allAnimatableProperties);\nfunction sequence(direction, transition, animation) {\n  const value = {};\n  const from = {};\n  allAnimatableKeys.forEach((property) => {\n    value[property] = allAnimatableProperties[property];\n    from[property] = {\n      ...animation,\n      from: allAnimatableProperties[property]\n    };\n  });\n  if (transition) {\n    Object.keys(transition).forEach((property) => {\n      if (transition[property] === void 0) return;\n      const transitionTo = transition[property];\n      const transitionFrom = typeof transition[property] === \"string\" ? `${asRecord(allAnimatableProperties)[property]}%` : asRecord(allAnimatableProperties)[property];\n      asRecord(value)[property] = direction === \"enter\" ? transitionFrom : transitionTo;\n      from[property] = {\n        ...animation,\n        from: direction === \"enter\" ? transitionTo : transitionFrom,\n        velocity: 0\n      };\n    });\n  }\n  return {\n    ...value,\n    transition: {\n      ...from\n    }\n  };\n}\n\n// ../../library/src/components/Navigation.tsx\nimport { jsx as jsx22, jsxs as jsxs6 } from \"react/jsx-runtime\";\nvar NavigationConsumer = /* @__PURE__ */ (() => NavigationContext.Consumer)();\nvar NavigationCallbackContext = /* @__PURE__ */ React31.createContext(void 0);\nvar NavigationCallbackProvider = /* @__PURE__ */ (() => NavigationCallbackContext.Provider)();\nvar IsInitialNavigationContext = /* @__PURE__ */ React31.createContext(void 0);\nvar Navigation = /* @__PURE__ */ (() => {\n  var _lastEventTimeStamp, _a, _Navigation_instances, getStackState_fn, isSameEventTransition_fn, _navigationAction, transition_fn;\n  return _a = class extends Component6 {\n    constructor(props) {\n      var _a2;\n      super(props);\n      __privateAdd(this, _Navigation_instances);\n      __privateAdd(this, _lastEventTimeStamp, null);\n      __publicField(this, \"state\", defaultState());\n      __privateAdd(this, _navigationAction, (action) => {\n        if (!this.props.enabled && this.state.history.length > 0) return;\n        const newState = reduceNavigationStateForAction(this.state, action);\n        if (!newState) return;\n        const { skipLayoutAnimation } = this.props;\n        const historyItem = newState.history[newState.current];\n        const withMagicMotion = action.type === \"add\" && action.transition.withMagicMotion || action.type === \"forward\" && (historyItem == null ? void 0 : historyItem.transition.withMagicMotion) || action.type === \"remove\" && !!newState.previousTransition;\n        const updateState = () => {\n          var _a2;\n          this.setState(newState);\n          if (historyItem == null ? void 0 : historyItem.key) {\n            (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n          }\n        };\n        if (skipLayoutAnimation && !withMagicMotion) {\n          skipLayoutAnimation(updateState);\n        } else {\n          updateState();\n        }\n      });\n      __publicField(this, \"goBack\", () => {\n        var _a2;\n        if (__privateMethod(this, _Navigation_instances, isSameEventTransition_fn).call(this)) return;\n        __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n        if (this.state.currentOverlay !== -1) return __privateGet(this, _navigationAction).call(this, { type: \"removeOverlay\" });\n        return __privateGet(this, _navigationAction).call(this, { type: \"remove\" });\n      });\n      const component = this.props.children;\n      if (!component || !isReactChild(component) || !isReactElement(component)) return;\n      const transition = { ...TransitionDefaults.Instant };\n      const key7 = ((_a2 = component.key) == null ? void 0 : _a2.toString()) || `stack-${this.state.historyItemId + 1}`;\n      const action = { type: \"add\", key: key7, transition, component };\n      const newState = reduceNavigationStateForAction(this.state, action);\n      if (!newState) return;\n      this.state = newState;\n    }\n    componentDidMount() {\n      var _a2;\n      const historyItem = this.state.history[this.state.current];\n      if (!historyItem) return;\n      (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      var _a2;\n      const component = props[\"children\"];\n      if (!isReactChild(component) || !isReactElement(component)) return;\n      const key7 = (_a2 = component.key) == null ? void 0 : _a2.toString();\n      if (!key7) return;\n      if (this.state.history.length === 0) {\n        __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Instant);\n      } else {\n        __privateGet(this, _navigationAction).call(this, { type: \"update\", key: key7, component });\n      }\n    }\n    componentWillUnmount() {\n      var _a2, _b;\n      (_b = (_a2 = this.props).resetProjection) == null ? void 0 : _b.call(_a2);\n    }\n    instant(component) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Instant, void 0);\n    }\n    fade(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Fade, options);\n    }\n    push(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, pushTransition(options), options);\n    }\n    modal(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Modal, options);\n    }\n    overlay(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, overlayTransition(options), options);\n    }\n    flip(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, flipTransition(options), options);\n    }\n    magicMotion(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.MagicMotion, options);\n    }\n    customTransition(component, transition) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, transition);\n    }\n    render() {\n      var _a2, _b, _c, _d, _e;\n      const stackState = __privateMethod(this, _Navigation_instances, getStackState_fn).call(this, { overCurrentContext: false });\n      const overlayStackState = __privateMethod(this, _Navigation_instances, getStackState_fn).call(this, { overCurrentContext: true });\n      const activeOverlay = activeOverlayItem(overlayStackState);\n      const isOverlayVisible = overlayStackState.current > -1;\n      const isInitial = this.state.history.length === 1;\n      const contentContainers = [];\n      for (const [key7, component] of Object.entries(this.state.containers)) {\n        const index = this.state.containerIndex[key7];\n        assert(index !== void 0, \"Container's index must be registered\");\n        const visualIndex = this.state.containerVisualIndex[key7];\n        assert(visualIndex !== void 0, \"Container's visual index must be registered\");\n        const removed = this.state.containerIsRemoved[key7];\n        const historyItem = this.state.history[index];\n        const transitionProps = this.state.transitionForContainer[key7];\n        const isCurrent = index === this.state.current;\n        const isPrevious = index === this.state.previous;\n        const areMagicMotionLayersPresent = isCurrent ? false : removed;\n        const withMagicMotion = ((_a2 = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _a2.withMagicMotion) || isCurrent && !!this.state.previousTransition;\n        contentContainers.push(\n          /* @__PURE__ */ jsx22(\n            NavigationContainer,\n            {\n              id: key7,\n              index: visualIndex,\n              isInitial,\n              isCurrent,\n              isPrevious,\n              isOverlayed: isOverlayVisible,\n              visible: isCurrent || isPrevious,\n              position: (_b = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _b.position,\n              instant: isInstantContainerTransition(index, stackState),\n              transitionProps,\n              animation: animationPropsForContainer(index, stackState),\n              backfaceVisible: getBackfaceVisibleForScreen(index, stackState),\n              exitAnimation: (_c = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _c.animation,\n              exitBackfaceVisible: (_d = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _d.backfaceVisible,\n              exitProps: (_e = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _e.enter,\n              withMagicMotion,\n              areMagicMotionLayersPresent: areMagicMotionLayersPresent ? false : void 0,\n              children: /* @__PURE__ */ jsx22(MagicMotionCrossfadeRoot, { children: containerContent({\n                component,\n                transition: historyItem == null ? void 0 : historyItem.transition\n              }) })\n            },\n            key7\n          )\n        );\n      }\n      const overlayContainers = this.state.overlayStack.map((item, stackIndex) => {\n        return /* @__PURE__ */ jsx22(\n          NavigationContainer,\n          {\n            isLayeredContainer: true,\n            isCurrent: stackIndex === this.state.currentOverlay,\n            position: item.transition.position,\n            initialProps: initialPropsForOverlay(stackIndex, overlayStackState),\n            transitionProps: transitionPropsForOverlay(stackIndex, overlayStackState),\n            instant: isInstantContainerTransition(stackIndex, overlayStackState, true),\n            animation: animationPropsForContainer(stackIndex, overlayStackState),\n            exitProps: item.transition.enter,\n            visible: containerIsVisible(stackIndex, overlayStackState),\n            backdropColor: backdropColorForTransition(item.transition),\n            backfaceVisible: getBackfaceVisibleForOverlay(stackIndex, overlayStackState),\n            onTapBackdrop: backdropTapAction(item.transition, this.goBack),\n            index: this.state.current + 1 + stackIndex,\n            children: containerContent({\n              component: item.component,\n              transition: item.transition\n            })\n          },\n          item.key\n        );\n      });\n      return /* @__PURE__ */ jsx22(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"NavigationRoot\",\n          top: 0,\n          left: 0,\n          width: \"100%\",\n          height: \"100%\",\n          position: \"relative\",\n          style: {\n            overflow: \"hidden\",\n            backgroundColor: \"unset\",\n            pointerEvents: void 0,\n            ...this.props.style\n          },\n          children: /* @__PURE__ */ jsx22(NavigationContext.Provider, { value: this, children: /* @__PURE__ */ jsxs6(IsInitialNavigationContext.Provider, { value: isInitial, children: [\n            /* @__PURE__ */ jsx22(\n              NavigationContainer,\n              {\n                isLayeredContainer: true,\n                position: void 0,\n                initialProps: {},\n                instant: false,\n                transitionProps: transitionPropsForStackWrapper(activeOverlay),\n                animation: animationForStackWrapper(activeOverlay),\n                backfaceVisible: backfaceVisibleForStackWrapper(activeOverlay),\n                visible: true,\n                backdropColor: void 0,\n                onTapBackdrop: void 0,\n                index: 0,\n                children: /* @__PURE__ */ jsx22(LayoutIdProvider, { children: /* @__PURE__ */ jsx22(SharedLayoutRoot, { children: /* @__PURE__ */ jsx22(AnimatePresence, { presenceAffectsLayout: false, children: contentContainers }) }) })\n              }\n            ),\n            /* @__PURE__ */ jsx22(AnimatePresence, { children: overlayContainers })\n          ] }) })\n        }\n      );\n    }\n  }, _lastEventTimeStamp = new WeakMap(), _Navigation_instances = new WeakSet(), getStackState_fn = function(options) {\n    const { current, previous, currentOverlay, previousOverlay } = this.state;\n    if (options.overCurrentContext) {\n      return {\n        current: currentOverlay,\n        previous: previousOverlay,\n        history: this.state.overlayStack\n      };\n    }\n    return {\n      current,\n      previous,\n      history: this.state.history\n    };\n  }, /**\n   * To prevent bubbling events from triggering multiple transitions,\n   * we ensure that the current event has a different timestamp then the event that triggered the last transition.\n   * We use Window.event to ensure that even transitions invoked by code components - and may not pass a reference to the event - are caught.\n   * This works better than measuring the time of transition calls with performance.now()\n   * because the time between calls can get longer and longer as more screens are added to the stack,\n   * preventing a deterministic time between transitions to be used to determine if they were triggered at the same time or not.\n   */\n  isSameEventTransition_fn = function() {\n    if (!globalThis.event) return false;\n    return __privateGet(this, _lastEventTimeStamp) === globalThis.event.timeStamp;\n  }, _navigationAction = new WeakMap(), transition_fn = function(component, transitionTraits, transitionOptions) {\n    var _a2, _b;\n    if (__privateMethod(this, _Navigation_instances, isSameEventTransition_fn).call(this)) return;\n    __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n    if (!component || !isReactChild(component) || !isReactElement(component)) return;\n    const transition = { ...transitionTraits, ...transitionOptions };\n    const overCurrentContext = !!transition.overCurrentContext;\n    if (overCurrentContext) return __privateGet(this, _navigationAction).call(this, { type: \"addOverlay\", transition, component });\n    const key7 = ((_b = component.key) == null ? void 0 : _b.toString()) || `stack-${this.state.historyItemId + 1}`;\n    __privateGet(this, _navigationAction).call(this, { type: \"add\", key: key7, transition, component });\n  }, __publicField(_a, \"defaultProps\", {\n    enabled: true\n  }), __publicField(_a, \"contextType\", NavigationCallbackContext), _a;\n})();\nvar animationDefault = {\n  stiffness: 500,\n  damping: 50,\n  restDelta: 1,\n  type: \"spring\"\n};\nfunction activeOverlayItem(overlayStack) {\n  let currentOverlayItem;\n  let previousOverlayItem;\n  if (overlayStack.current !== -1) {\n    currentOverlayItem = overlayStack.history[overlayStack.current];\n  } else {\n    previousOverlayItem = overlayStack.history[overlayStack.previous];\n  }\n  return { currentOverlayItem, previousOverlayItem };\n}\nfunction transitionPropsForStackWrapper({ currentOverlayItem }) {\n  return currentOverlayItem && currentOverlayItem.transition.exit;\n}\nfunction animationForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem && currentOverlayItem.transition.animation) {\n    return currentOverlayItem.transition.animation;\n  }\n  if (previousOverlayItem && previousOverlayItem.transition.animation) {\n    return previousOverlayItem.transition.animation;\n  }\n  return animationDefault;\n}\nfunction backfaceVisibleForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem) return currentOverlayItem.transition.backfaceVisible;\n  return previousOverlayItem && previousOverlayItem.transition.backfaceVisible;\n}\nfunction backdropColorForTransition(transition) {\n  if (transition.backdropColor) return transition.backdropColor;\n  if (transition.overCurrentContext) return \"rgba(4,4,15,.4)\";\n  return void 0;\n}\nfunction getBackfaceVisibleForOverlay(containerIndex, stackState) {\n  const { current, history } = stackState;\n  if (containerIndex === current) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else if (containerIndex < current) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  }\n}\nfunction initialPropsForOverlay(containerIndex, stackState) {\n  const navigationItem = stackState.history[containerIndex];\n  if (navigationItem) return navigationItem.transition.enter;\n}\nfunction getBackfaceVisibleForScreen(screenIndex, stackState) {\n  var _a, _b, _c, _d;\n  const { current, previous, history } = stackState;\n  if (screenIndex === previous && current > previous || screenIndex === current && current < previous) {\n    return (_b = (_a = history[screenIndex + 1]) == null ? void 0 : _a.transition) == null ? void 0 : _b.backfaceVisible;\n  }\n  return (_d = (_c = history[screenIndex]) == null ? void 0 : _c.transition) == null ? void 0 : _d.backfaceVisible;\n}\nfunction transitionPropsForOverlay(overlayIndex, stackState) {\n  const { current, history } = stackState;\n  if (overlayIndex === current) {\n    return;\n  } else if (overlayIndex < current) {\n    const navigationItem = history[overlayIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.exit;\n    }\n  } else {\n    const navigationItem = history[overlayIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.enter;\n    }\n  }\n}\nfunction animationPropsForContainer(containerIndex, stackState) {\n  const { current, previous, history } = stackState;\n  const containerCurrent = previous > current ? previous : current;\n  if (containerIndex < containerCurrent) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else if (containerIndex !== containerCurrent) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem == null ? void 0 : navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  }\n  return animationDefault;\n}\nfunction isInstantContainerTransition(containerIndex, stackState, overCurrentContext) {\n  const { current, previous, history } = stackState;\n  if (overCurrentContext && history.length > 1) return true;\n  if (containerIndex !== previous && containerIndex !== current) return true;\n  if (current === previous) return true;\n  return false;\n}\nfunction containerIsVisible(containerIndex, stackState) {\n  const { current, previous } = stackState;\n  if (containerIndex > current && containerIndex > previous) return false;\n  if (containerIndex === current) return true;\n  return false;\n}\nfunction containerContent(item) {\n  const content = React31.Children.map(\n    item.component,\n    (child) => {\n      var _a;\n      if (!isReactChild(child) || !isReactElement(child) || !child.props) {\n        return child;\n      }\n      const props = {\n        style: child.props.style ?? {}\n      };\n      const position = (_a = item == null ? void 0 : item.transition) == null ? void 0 : _a.position;\n      const shouldStretchWidth = !position || position.left !== void 0 && position.right !== void 0;\n      const shouldStretchHeight = !position || position.top !== void 0 && position.bottom !== void 0;\n      const canStretchStyle = \"style\" in child.props ? isObject2(child.props.style) : true;\n      if (shouldStretchWidth) {\n        const canStretchWidth = \"width\" in child.props;\n        if (canStretchWidth) props.width = \"100%\";\n        if (canStretchStyle) props.style.width = \"100%\";\n      }\n      if (shouldStretchHeight) {\n        const canStretchHeight = \"height\" in child.props;\n        if (canStretchHeight) props.height = \"100%\";\n        if (canStretchStyle) props.style.height = \"100%\";\n      }\n      return React31.cloneElement(child, props);\n    }\n  );\n  return content;\n}\nfunction backdropTapAction(transition, goBackAction) {\n  if (transition.goBackOnTapOutside !== false) return goBackAction;\n}\nfunction NavigationWrapper(props) {\n  const resetProjection = useResetProjection();\n  const skipLayoutAnimation = useInstantLayoutTransition();\n  React31.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return /* @__PURE__ */ jsx22(Navigation, { ...props, resetProjection, skipLayoutAnimation, children: props.children });\n}\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React32 from \"react\";\n\n// ../../library/src/render/types/NavigationLink.ts\nvar NavigateTo = /* @__PURE__ */ ((NavigateTo2) => {\n  NavigateTo2[\"Previous\"] = \"@Previous\";\n  return NavigateTo2;\n})(NavigateTo || {});\nvar NavigationTransitionType = /* @__PURE__ */ ((NavigationTransitionType2) => {\n  NavigationTransitionType2[\"push\"] = \"push\";\n  NavigationTransitionType2[\"instant\"] = \"instant\";\n  NavigationTransitionType2[\"fade\"] = \"fade\";\n  NavigationTransitionType2[\"modal\"] = \"modal\";\n  NavigationTransitionType2[\"overlay\"] = \"overlay\";\n  NavigationTransitionType2[\"flip\"] = \"flip\";\n  NavigationTransitionType2[\"magicMotion\"] = \"magicMotion\";\n  return NavigationTransitionType2;\n})(NavigationTransitionType || {});\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nimport { jsx as jsx23 } from \"react/jsx-runtime\";\nfunction WithNavigator(BaseComponent, navigationTransition, navigationTransitionDirection, NavigationTarget, navigationTransitionOptions) {\n  const InternalWithNavigator = class extends React32.Component {\n    render() {\n      return /* @__PURE__ */ jsx23(NavigationContext.Consumer, { children: (navigation) => {\n        const navigate = () => {\n          if (navigationTransition === \"goBack\") {\n            navigation.goBack();\n            return;\n          }\n          if (!NavigationTarget) return;\n          const component = NavigationTarget();\n          const appearsFrom = transitionDirectionToSide(navigationTransitionDirection);\n          switch (navigationTransition) {\n            case \"instant\" /* instant */:\n              navigation.instant(component);\n              break;\n            case \"fade\" /* fade */:\n              navigation.fade(component);\n              break;\n            case \"modal\" /* modal */:\n              navigation.modal(component, navigationTransitionOptions);\n              break;\n            case \"push\" /* push */:\n              navigation.push(component, { appearsFrom });\n              break;\n            case \"overlay\" /* overlay */:\n              navigation.overlay(component, {\n                ...navigationTransitionOptions,\n                appearsFrom\n              });\n              break;\n            case \"flip\" /* flip */:\n              navigation.flip(component, { appearsFrom });\n              break;\n            case \"magicMotion\" /* magicMotion */:\n              navigation.magicMotion(component, {});\n              break;\n          }\n        };\n        const { onTap, ...props } = this.props;\n        if (onTap) {\n          props.onTap = (...args) => {\n            onTap.apply(this, args);\n            navigate.apply(this, args);\n          };\n        } else {\n          props.onTap = navigate;\n        }\n        return /* @__PURE__ */ jsx23(BaseComponent, { ...props });\n      } });\n    }\n  };\n  (0, import_hoist_non_react_statics.default)(InternalWithNavigator, BaseComponent);\n  return InternalWithNavigator;\n}\nfunction transitionDirectionToSide(direction) {\n  switch (direction) {\n    case \"left\":\n      return \"right\";\n    case \"right\":\n      return \"left\";\n    case \"up\":\n      return \"bottom\";\n    case \"down\":\n      return \"top\";\n  }\n}\n\n// ../../library/src/components/AnimateLayout/AnimateSharedLayout.tsx\nvar AnimateSharedLayout = (props) => props.children;\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { forwardRef as forwardRef3 } from \"react\";\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar import_hoist_non_react_statics3 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React34 from \"react\";\n\n// ../../library/src/utils/events.ts\nfunction pointForEvent(event, customTarget = null) {\n  let target;\n  if (customTarget instanceof HTMLElement) {\n    target = customTarget;\n  }\n  if (!target && event.target instanceof HTMLElement) {\n    target = event.target;\n  }\n  if (!target) {\n    return { x: event.pageX, y: event.pageY };\n  }\n  if (typeof safeWindow.webkitConvertPointFromPageToNode === \"function\") {\n    let webkitPoint = new safeWindow.WebKitPoint(event.pageX, event.pageY);\n    webkitPoint = safeWindow.webkitConvertPointFromPageToNode(target, webkitPoint);\n    return { x: webkitPoint.x, y: webkitPoint.y };\n  }\n  const rect = target.getBoundingClientRect();\n  const width = parseFloat(target.style.width);\n  const height = parseFloat(target.style.height);\n  const scale2 = {\n    x: width ? width / rect.width : 1,\n    y: height ? height / rect.height : 1\n  };\n  const point = {\n    x: scale2.x * (event.pageX - rect.left - target.clientLeft + target.scrollLeft),\n    y: scale2.y * (event.pageY - rect.top - target.clientTop + target.scrollTop)\n  };\n  return point;\n}\n\n// ../../library/src/events/FramerEvent.ts\nvar FramerEvent = class _FramerEvent {\n  /**\n   * @internal\n   */\n  constructor(originalEvent, session) {\n    this.originalEvent = originalEvent;\n    this.session = session;\n    /**\n     * @internal\n     */\n    __publicField(this, \"time\", Date.now());\n    /**\n     * @internal\n     */\n    __publicField(this, \"loopTime\", MainLoop.time);\n    /**\n     * @internal\n     */\n    __publicField(this, \"point\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"devicePoint\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"target\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"delta\");\n    const customTarget = session && session.startEvent && session.startEvent.target || originalEvent.target;\n    const eventLike = _FramerEvent.eventLikeFromOriginalEvent(originalEvent);\n    this.point = pointForEvent(eventLike, customTarget);\n    const deviceTarget = session && session.originElement ? session.originElement : document.body;\n    this.devicePoint = pointForEvent(eventLike, deviceTarget);\n    this.target = originalEvent.target || null;\n    const lastEvent = session && session.lastEvent;\n    if (originalEvent instanceof WheelEvent) {\n      this.delta = { x: originalEvent.deltaX, y: originalEvent.deltaY };\n    } else if (lastEvent && this.devicePoint && lastEvent.devicePoint) {\n      this.delta = Point.subtract(this.devicePoint, lastEvent.devicePoint);\n    } else {\n      this.delta = { x: 0, y: 0 };\n    }\n  }\n  static eventLikeFromOriginalEvent(originalEvent) {\n    if (\"touches\" in originalEvent) {\n      let touches = originalEvent.touches;\n      if (!touches || !touches.length) {\n        if (originalEvent.changedTouches && originalEvent.changedTouches.length) {\n          touches = originalEvent.changedTouches;\n        }\n      }\n      const firstTouch = touches[0];\n      if (!touches || !firstTouch) {\n        return { pageX: 0, pageY: 0, target: null };\n      }\n      const pageX = firstTouch.clientX || firstTouch.screenX || firstTouch.pageX;\n      const pageY = firstTouch.clientY || firstTouch.screenY || firstTouch.pageY;\n      return {\n        pageX,\n        pageY,\n        target: originalEvent.target\n      };\n    }\n    return originalEvent;\n  }\n  /**\n   * @internal\n   */\n  velocity(t) {\n    return this.session ? this.session.velocity(t) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get offset() {\n    return this.session ? this.session.offset(this) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get isLeftMouseClick() {\n    if (environment.isTouch()) {\n      return void 0;\n    }\n    if (\"button\" in this.originalEvent && \"buttons\" in this.originalEvent && \"ctrlKey\" in this.originalEvent) {\n      return (this.originalEvent.button === 0 || this.originalEvent.buttons === 1) && !this.originalEvent.ctrlKey;\n    }\n    return false;\n  }\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar import_hoist_non_react_statics2 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React33 from \"react\";\n\n// ../../library/src/utils/math.ts\nvar clamp2 = (value, a, b) => {\n  const min = Math.min(a, b);\n  const max = Math.max(a, b);\n  if (value < min) {\n    value = min;\n  }\n  if (value > max) {\n    value = max;\n  }\n  return value;\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nimport { jsx as jsx24 } from \"react/jsx-runtime\";\nvar DraggingContext = /* @__PURE__ */ React33.createContext({ dragging: false });\nfunction WithDragging(Component17) {\n  const _WithDraggingHOC = class _WithDraggingHOC extends React33.Component {\n    constructor(props, defaultProps) {\n      super(props, defaultProps);\n      __publicField(this, \"state\", {\n        isDragging: false\n      });\n      __publicField(this, \"x\", Animatable(0));\n      __publicField(this, \"y\", Animatable(0));\n      __publicField(this, \"onChangePosition\", (change, transaction) => {\n        if (change.value === change.oldValue) {\n          return;\n        }\n        if (this.props.onMove) {\n          this.props.onMove(this.point, this);\n        }\n      });\n      __publicField(this, \"isMoving\", false);\n      __publicField(this, \"isAnimating\", false);\n      __publicField(this, \"directionLockAxis\", null);\n      __publicField(this, \"layerStartPoint\", null);\n      __publicField(this, \"correctedLayerStartPoint\", null);\n      __publicField(this, \"previousPoint\", null);\n      __publicField(this, \"_constraints\", null);\n      __publicField(this, \"animation\", null);\n      __publicField(this, \"panStart\", (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.isMoving = this.isAnimating;\n        this.stopAnimation();\n        this.resetdirectionLock();\n        this.layerStartPoint = this.point;\n        this.correctedLayerStartPoint = this.point;\n        if (this._constraints && this.props.bounce) {\n          this.correctedLayerStartPoint = this.constrainPosition(\n            this.correctedLayerStartPoint,\n            this._constraints,\n            1 / this.props.overdragScale\n          );\n        }\n        this.previousPoint = this.correctedLayerStartPoint;\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n        }\n        if (this.props.onDragSessionStart) {\n          this.props.onDragSessionStart(event, this);\n        }\n      });\n      __publicField(this, \"pan\", (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          directionLock,\n          overdragScale,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragStart,\n          onDragWillMove,\n          onDragDidMove,\n          onDragSessionMove\n        } = this.props;\n        if (!enabled) {\n          return;\n        }\n        assert(this.previousPoint !== null, \"previousPoint must be set in panStart()\");\n        let point = { ...this.previousPoint };\n        point.x += event.delta.x * speedX;\n        point.y += event.delta.y * speedY;\n        this.previousPoint = { ...point };\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, overdragScale);\n        }\n        if (directionLock) {\n          if (this.directionLockAxis === null) {\n            const offset = event.offset;\n            offset.x = offset.x * speedX;\n            offset.y = offset.y * speedY;\n            this.updatedirectionLock(offset);\n            return;\n          } else {\n            assert(this.layerStartPoint !== null, \"layerStartPoint must be set in panStart()\");\n            if (this.directionLockAxis === \"y\") {\n              point.x = this.layerStartPoint.x;\n            }\n            if (this.directionLockAxis === \"x\") {\n              point.y = this.layerStartPoint.y;\n            }\n          }\n        }\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n          this.isMoving = true;\n          if (onDragStart) {\n            onDragStart(event, this);\n          }\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n        if (onDragSessionMove) {\n          onDragSessionMove(event, this);\n        }\n      });\n      __publicField(this, \"panEnd\", (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.startAnimation(event);\n        const { onDragSessionEnd, onDragEnd } = this.props;\n        if (this.state.isDragging) {\n          if (onDragEnd) {\n            onDragEnd(event, this);\n          }\n        }\n        if (onDragSessionEnd) {\n          onDragSessionEnd(event, this);\n        }\n        if (this.state.isDragging) {\n          this.setState({ isDragging: false });\n        }\n        this.isMoving = this.isAnimating;\n      });\n      // Mouse Wheel\n      __publicField(this, \"mouseWheelStart\", (event) => {\n        this.correctedLayerStartPoint = this.point;\n        this.previousPoint = this.correctedLayerStartPoint;\n        this.stopAnimation();\n      });\n      __publicField(this, \"mouseWheel\", (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragWillMove,\n          onDragDidMove,\n          mouseWheel\n        } = this.props;\n        if (!mouseWheel || !enabled) {\n          return;\n        }\n        let point = { ...this.point };\n        point.x -= event.delta.x * speedX;\n        point.y -= event.delta.y * speedY;\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, 0, false);\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n      });\n      __publicField(this, \"mouseWheelEnd\", (event) => {\n      });\n      __publicField(this, \"onAnimationStep\", (axis, value) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        let delta = 0;\n        if (this.constraints) {\n          if (this.props.bounce) {\n            delta = value - this.getValue(axis);\n          } else {\n            const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n            if (axis === \"x\") {\n              delta = clamp2(value, minX, maxX) - this.getValue(axis);\n            }\n            if (axis === \"y\") {\n              delta = clamp2(value, minY, maxY) - this.getValue(axis);\n            }\n          }\n        } else {\n          delta = value - this.getValue(axis);\n        }\n        const updatePoint = this.point;\n        if (axis === \"x\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        if (axis === \"y\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        this.setPoint(updatePoint, axis);\n      });\n      __publicField(this, \"onAnimationStop\", (axis) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        if (!this.animation) {\n          return;\n        }\n        if (this.props.pixelAlign) {\n          const point = this.point;\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n          this.setPoint(point, axis);\n        }\n        if (this.animation.x.isFinished() && this.animation.y.isFinished()) {\n          return this.stopAnimation();\n        }\n      });\n      __publicField(this, \"stopAnimation\", () => {\n        this.isAnimating = false;\n        this.isMoving = false;\n        if (!this.animation) {\n          return;\n        }\n        this.animation.x.cancel();\n        this.animation.y.cancel();\n        if (this.props.onDragAnimationEnd) {\n          this.props.onDragAnimationEnd(this.animation, this);\n        }\n        this.animation = null;\n      });\n      const x = this.props.left;\n      const y = this.props.top;\n      if (!x) {\n        this.x = Animatable(0);\n      } else if (isAnimatable(x)) {\n        this.x = x;\n      } else {\n        this.x = Animatable(x);\n      }\n      if (!y) {\n        this.y = Animatable(0);\n      } else if (isAnimatable(y)) {\n        this.y = y;\n      } else {\n        this.y = Animatable(y);\n      }\n      this.x.onUpdate(this.onChangePosition);\n      this.y.onUpdate(this.onChangePosition);\n      const constraints = this.props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      if (this.props.left !== props.left && isFiniteNumber(props.left)) {\n        this.x.set(props.left);\n      }\n      if (this.props.top !== props.top && isFiniteNumber(props.top)) {\n        this.y.set(props.top);\n      }\n      const constraints = props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    get point() {\n      return { x: this.x.get(), y: this.y.get() };\n    }\n    setPoint(point, axis = null) {\n      switch (axis) {\n        case \"x\":\n          this.x.set(point.x);\n          break;\n        case \"y\":\n          this.y.set(point.y);\n          break;\n        case null:\n          this.x.set(point.x);\n          this.y.set(point.y);\n          break;\n      }\n    }\n    getValue(axis) {\n      switch (axis) {\n        case \"x\":\n          return this.x.get();\n        case \"y\":\n          return this.y.get();\n      }\n    }\n    get width() {\n      const width = this.props.width;\n      if (!width) {\n        return 100;\n      }\n      if (isAnimatable(width)) {\n        return width.get();\n      }\n      if (typeof width === \"string\") {\n        return parseFloat(width);\n      }\n      return width;\n    }\n    get height() {\n      const height = this.props.height;\n      if (!height) {\n        return 100;\n      }\n      if (isAnimatable(height)) {\n        return height.get();\n      }\n      if (typeof height === \"string\") {\n        return parseFloat(height);\n      }\n      return height;\n    }\n    get constraints() {\n      return this._constraints;\n    }\n    set constraints(value) {\n      if (value !== null && typeof value === \"object\") {\n        this._constraints = {\n          x: value.x || 0,\n          y: value.y || 0,\n          width: value.width || 0,\n          height: value.height || 0\n        };\n      } else {\n        this._constraints = null;\n      }\n      if (this._constraints) {\n        this.updateAnimationConstraints(this._constraints);\n      }\n    }\n    get constraintsOffset() {\n      if (!this.constraints) {\n        return { x: 0, y: 0 };\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const point = this.point;\n      const constrainedPoint = { x: clamp2(point.x, minX, maxX), y: clamp2(point.y, minY, maxY) };\n      const offset = { x: point.x - constrainedPoint.x, y: point.y - constrainedPoint.y };\n      return offset;\n    }\n    get isBeyondConstraints() {\n      const constraintsOffset = this.constraintsOffset;\n      if (constraintsOffset.x !== 0) {\n        return true;\n      }\n      if (constraintsOffset.y !== 0) {\n        return true;\n      }\n      return false;\n    }\n    clampAndScale(value, min, max, scale2, scaleAllowed) {\n      if (!scaleAllowed) {\n        return clamp2(value, min, max);\n      }\n      if (value < min) {\n        value = min + (value - min) * scale2;\n      }\n      if (value > max) {\n        value = max + (value - max) * scale2;\n      }\n      return value;\n    }\n    calculateConstraints(bounds) {\n      if (!bounds) {\n        return { minX: Infinity, maxX: Infinity, minY: Infinity, maxY: Infinity };\n      }\n      if (bounds.width < this.width) {\n        bounds.width = this.width;\n      }\n      if (bounds.height < this.height) {\n        bounds.height = this.height;\n      }\n      const constraints = {\n        minX: Rect.minX(bounds),\n        maxX: Rect.maxX(bounds),\n        minY: Rect.minY(bounds),\n        maxY: Rect.maxY(bounds)\n      };\n      constraints.maxX -= this.width;\n      constraints.maxY -= this.height;\n      return constraints;\n    }\n    constrainPosition(proposedPoint, bounds, scale2, overdrag = this.props.overdrag) {\n      const { maxX, maxY, minX, minY } = this.calculateConstraints(this._constraints);\n      const point = {\n        x: this.clampAndScale(proposedPoint.x, minX, maxX, scale2, overdrag),\n        y: this.clampAndScale(proposedPoint.y, minY, maxY, scale2, overdrag)\n      };\n      if (this.props.speedX === 0 || this.props.horizontal === false) {\n        point.x = proposedPoint.x;\n      }\n      if (this.props.speedY === 0 || this.props.vertical === false) {\n        point.y = proposedPoint.y;\n      }\n      return point;\n    }\n    /* private */\n    updatedirectionLock(correctedDelta) {\n      if (Math.abs(correctedDelta.y) > this.props.directionLockThreshold.y) {\n        this.directionLockAxis = \"y\";\n      } else if (Math.abs(correctedDelta.x) > this.props.directionLockThreshold.x) {\n        this.directionLockAxis = \"x\";\n      }\n      if (this.directionLockAxis !== null) {\n        if (this.props.onDragDirectionLockStart) {\n          this.props.onDragDirectionLockStart(this.directionLockAxis, this);\n        }\n      }\n    }\n    resetdirectionLock() {\n      this.directionLockAxis = null;\n    }\n    // Inertial scroll animation\n    setupAnimation() {\n      if (this.animation) {\n        return;\n      }\n      this.animation = { x: this.setupAnimationForAxis(\"x\"), y: this.setupAnimationForAxis(\"y\") };\n      this.updateAnimationConstraints(this._constraints);\n    }\n    setupAnimationForAxis(axis) {\n      const animator = new InertialScrollAnimator({\n        momentum: this.props.momentumOptions,\n        bounce: this.props.bounceOptions\n      });\n      const updateCallback = (value) => {\n        this.onAnimationStep(axis, value);\n      };\n      const doneCallback = () => {\n        this.onAnimationStop(axis);\n      };\n      return new MainLoopAnimationDriver(animator, updateCallback, doneCallback);\n    }\n    updateAnimationConstraints(constraints) {\n      if (!this.animation) {\n        return;\n      }\n      if (constraints) {\n        const { minX, minY, maxX, maxY } = this.calculateConstraints(constraints);\n        this.animation.x.animator.setLimits(minX, maxX);\n        this.animation.y.animator.setLimits(minY, maxY);\n      } else {\n        this.animation.x.animator.setLimits(-Infinity, Infinity);\n        this.animation.y.animator.setLimits(-Infinity, Infinity);\n      }\n    }\n    startAnimation(event) {\n      const { momentum, bounce, momentumVelocityMultiplier, speedX, speedY, overdrag, onDragAnimationStart } = this.props;\n      if (!(momentum || bounce)) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && momentum === false) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && this.state.isDragging === false) {\n        return;\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const startAnimationX = overdrag === true || this.point.x > minX && this.point.x < maxX;\n      const startAnimationY = overdrag === true || this.point.y > minY && this.point.y < maxY;\n      if (startAnimationX === startAnimationY && startAnimationY === false) {\n        return;\n      }\n      const velocity = event.velocity(0.1);\n      let velocityX = velocity.x * momentumVelocityMultiplier * speedX;\n      let velocityY = velocity.y * momentumVelocityMultiplier * speedY;\n      if (this.directionLockAxis === \"x\") {\n        velocityY = 0;\n      }\n      if (this.directionLockAxis === \"y\") {\n        velocityX = 0;\n      }\n      this.setupAnimation();\n      this.isAnimating = true;\n      this.isMoving = true;\n      if (!this.animation) {\n        return;\n      }\n      this.animation.x.animator.setState({ x: this.point.x, v: velocityX });\n      if (startAnimationX) {\n        this.animation.x.play();\n      }\n      this.animation.y.animator.setState({ x: this.point.y, v: velocityY });\n      if (startAnimationY) {\n        this.animation.y.play();\n      }\n      if (onDragAnimationStart) {\n        onDragAnimationStart(this.animation, this);\n      }\n    }\n    wrapHandler(ownHandler, originalHandler) {\n      if (!originalHandler) {\n        return ownHandler;\n      }\n      return (event) => {\n        ownHandler(event);\n        originalHandler(event);\n      };\n    }\n    render() {\n      const originalProps = { ...this.props };\n      Object.keys(_WithDraggingHOC.draggingDefaultProps).forEach((key7) => {\n        delete asRecord(originalProps)[key7];\n      });\n      originalProps.onPanStart = this.wrapHandler(this.panStart, originalProps.onPanStart);\n      originalProps.onPan = this.wrapHandler(this.pan, originalProps.onPan);\n      originalProps.onPanEnd = this.wrapHandler(this.panEnd, originalProps.onPanEnd);\n      originalProps.onMouseWheelStart = this.wrapHandler(this.mouseWheelStart, originalProps.onMouseWheelStart);\n      originalProps.onMouseWheel = this.wrapHandler(this.mouseWheel, originalProps.onMouseWheel);\n      originalProps.onMouseWheelEnd = this.wrapHandler(this.mouseWheelEnd, originalProps.onMouseWheelEnd);\n      originalProps.left = this.x;\n      originalProps.top = this.y;\n      return /* @__PURE__ */ jsx24(DraggingContext.Provider, { value: { dragging: this.state.isDragging }, children: /* @__PURE__ */ jsx24(Component17, { ...originalProps }) });\n    }\n  };\n  __publicField(_WithDraggingHOC, \"draggingDefaultProps\", {\n    momentum: true,\n    momentumOptions: { friction: 2.1, tolerance: 1 },\n    momentumVelocityMultiplier: 800,\n    speedX: 1,\n    speedY: 1,\n    bounce: true,\n    bounceOptions: { friction: 40, tension: 200, tolerance: 1 },\n    directionLock: false,\n    directionLockThreshold: { x: 10, y: 10 },\n    overdrag: true,\n    overdragScale: 0.5,\n    pixelAlign: true,\n    velocityTimeout: 100,\n    velocityScale: 890,\n    horizontal: true,\n    vertical: true,\n    enabled: true,\n    constraints: {},\n    mouseWheel: false\n  });\n  __publicField(_WithDraggingHOC, \"defaultProps\", Object.assign(\n    {},\n    Component17.defaultProps,\n    _WithDraggingHOC.draggingDefaultProps\n  ));\n  let WithDraggingHOC = _WithDraggingHOC;\n  const withDragging = WithDraggingHOC;\n  (0, import_hoist_non_react_statics2.default)(withDragging, Component17);\n  return withDragging;\n}\n\n// ../../library/src/components/hoc/WithEvents.tsx\nimport { jsx as jsx25 } from \"react/jsx-runtime\";\nvar hoverProps = {\n  onMouseEnter: \"mouseenter\",\n  onMouseLeave: \"mouseleave\"\n};\nvar hoverEventKeys = /* @__PURE__ */ Object.keys(hoverProps);\nvar eventHandlerMapping = {\n  panstart: [\"onPanStart\"],\n  pan: [\"onPan\"],\n  panend: [\"onPanEnd\"],\n  tapstart: [\"onTapStart\", \"onMouseDown\"],\n  tap: [\"onTap\", \"onClick\"],\n  tapend: [\"onTapEnd\", \"onMouseUp\"],\n  mousewheelstart: [\"onMouseWheelStart\"],\n  mousewheel: [\"onMouseWheel\"],\n  mousewheelend: [\"onMouseWheelEnd\"]\n};\nvar tapEventKeys = /* @__PURE__ */ new Set([\"tapstart\", \"tap\", \"tapend\"]);\nfunction WithEvents(BaseComponent) {\n  var _a;\n  const withEvents = (_a = class extends React34.Component {\n    constructor() {\n      super(...arguments);\n      // This local variable is used to track if we should ignore a tap after a drag\n      // It's not in a state because we want to change it from the render function (so not cause a render)\n      __publicField(this, \"shouldCancelTap\", false);\n      __publicField(this, \"activeEventListeners\", /* @__PURE__ */ new Map());\n      __publicField(this, \"hasFramerEventListener\", false);\n      __publicField(this, \"component\", React34.createRef());\n    }\n    get element() {\n      return this.component.current && this.component.current.element;\n    }\n    componentDidMount() {\n      this.addEventListeners();\n    }\n    componentDidUpdate(prevProps) {\n      this.addEventListeners(prevProps);\n    }\n    componentWillUnmount() {\n      this.removeEventListeners();\n    }\n    addEventListeners(prevProps) {\n      if (this.element && !this.hasFramerEventListener) {\n        this.element.addEventListener(\"FramerEvent\", ({ detail }) => {\n          const type = detail.type;\n          const framerEvent = detail.event;\n          this.handleEvent(type, framerEvent);\n        });\n        hoverEventKeys.forEach((eventName) => this.addHoverEvent(eventName));\n        this.hasFramerEventListener = true;\n      } else if (this.element && prevProps) {\n        hoverEventKeys.forEach((eventName) => this.checkHoverEvent(eventName, prevProps));\n      } else if (!this.element) {\n        this.hasFramerEventListener = false;\n      }\n    }\n    removeEventListeners() {\n      hoverEventKeys.forEach((eventName) => this.removeHoverEvent(eventName));\n    }\n    addHoverEvent(eventName) {\n      const originalEventListener = this.props[eventName];\n      if (this.element && originalEventListener) {\n        const eventListener = (e) => {\n          const framerEvent = new FramerEvent(e);\n          originalEventListener(framerEvent);\n        };\n        this.activeEventListeners.set(eventName, eventListener);\n        const domEventName = hoverProps[eventName];\n        this.element.addEventListener(domEventName, eventListener);\n      }\n    }\n    removeHoverEvent(eventName) {\n      const eventListener = this.activeEventListeners.get(eventName);\n      if (this.element && eventListener) {\n        const domEventName = hoverProps[eventName];\n        this.element.removeEventListener(domEventName, eventListener);\n        this.activeEventListeners.delete(eventName);\n      }\n    }\n    checkHoverEvent(eventName, prevProps) {\n      if (prevProps[eventName] !== this.props[eventName]) {\n        this.removeHoverEvent(eventName);\n        this.addHoverEvent(eventName);\n      }\n    }\n    handleEvent(type, framerEvent) {\n      const eventListenerKeys = eventHandlerMapping[type];\n      if (!eventListenerKeys) return;\n      eventListenerKeys.forEach((eventKey) => {\n        const eventListener = this.props[eventKey];\n        const cancelEvent = this.shouldCancelTap && tapEventKeys.has(eventKey);\n        if (eventListener && !cancelEvent) {\n          eventListener(framerEvent);\n        }\n      });\n    }\n    render() {\n      return /* @__PURE__ */ jsx25(DraggingContext.Consumer, { children: (value) => {\n        this.shouldCancelTap = value.dragging;\n        return /* @__PURE__ */ jsx25(BaseComponent, { ...this.props, ref: this.component });\n      } });\n    }\n  }, __publicField(_a, \"defaultProps\", Object.assign({}, BaseComponent.defaultProps)), _a);\n  (0, import_hoist_non_react_statics3.default)(withEvents, BaseComponent);\n  return withEvents;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nimport React35 from \"react\";\n\n// ../../library/src/data/ObservableObject.ts\nvar hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar $private = /* @__PURE__ */ Symbol(\"private\");\nvar ObservableObject = /* @__PURE__ */ (() => {\n  function ObservableObject2(initial = {}, makeAnimatables = false, observeAnimatables = true) {\n    const unproxiedState = {\n      [$private]: {\n        makeAnimatables,\n        observeAnimatables,\n        observers: new Observers(),\n        reset() {\n          for (const key7 in state) {\n            if (hasOwnProperty(state, key7)) {\n              const value = hasOwnProperty(initial, key7) ? asRecord(initial)[key7] : void 0;\n              if (value !== void 0) {\n                state[key7] = value;\n              } else {\n                delete state[key7];\n              }\n            }\n          }\n        },\n        transactions: /* @__PURE__ */ new Set()\n      }\n    };\n    const state = new Proxy(unproxiedState, sharedProxyHandler);\n    Object.assign(state, initial);\n    return state;\n  }\n  ObservableObject2.resetObject = (target) => {\n    return target[$private].reset();\n  };\n  ObservableObject2.addObserver = (target, observer) => {\n    return target[$private].observers.add(observer);\n  };\n  return ObservableObject2;\n})();\nvar ObservableObjectProxyHandler = class {\n  constructor() {\n    __publicField(this, \"set\", (target, key7, value, receiver) => {\n      if (key7 === $private) {\n        return false;\n      }\n      const privateObject = target[$private];\n      let animatable;\n      let rawValue;\n      if (isAnimatable(value)) {\n        animatable = value;\n        rawValue = animatable.get();\n      } else {\n        rawValue = value;\n      }\n      if (privateObject.makeAnimatables && typeof value !== \"function\" && typeof value !== \"object\" && !animatable) {\n        animatable = Animatable(value);\n      }\n      if (privateObject.observeAnimatables && animatable) {\n        const transactions = privateObject.transactions;\n        animatable.onUpdate({\n          update: (change, transaction) => {\n            if (transaction) {\n              transactions.add(transaction);\n            }\n            privateObject.observers.notify({ value: receiver }, transaction);\n          },\n          finish: (transaction) => {\n            if (transactions.delete(transaction)) {\n              privateObject.observers.finishTransaction(transaction);\n            }\n          }\n        });\n      }\n      let result = false;\n      let changed = true;\n      const targetValue = asRecord(target)[key7];\n      if (targetValue !== void 0) {\n        if (isAnimatable(targetValue)) {\n          changed = targetValue.get() !== rawValue;\n          targetValue.set(rawValue);\n        } else {\n          changed = targetValue !== rawValue;\n          asRecord(target)[key7] = rawValue;\n        }\n        const rawValueIsObject = rawValue !== null && typeof rawValue === \"object\";\n        if (Array.isArray(rawValue) || rawValueIsObject) changed = true;\n        result = true;\n      } else {\n        if (animatable) {\n          value = animatable;\n        }\n        result = Reflect.set(target, key7, value);\n      }\n      if (changed) {\n        privateObject.observers.notify({ value: receiver });\n      }\n      return result;\n    });\n    __publicField(this, \"get\", (target, key7, receiver) => {\n      if (key7 === $private) {\n        return asRecord(target)[key7];\n      }\n      const value = Reflect.get(target, key7, receiver);\n      return typeof value === \"function\" ? value.bind(receiver) : value;\n    });\n  }\n  deleteProperty(target, key7) {\n    const result = Reflect.deleteProperty(target, key7);\n    target[$private].observers.notify({ value: target });\n    return result;\n  }\n  ownKeys(target) {\n    const keys3 = Reflect.ownKeys(target);\n    const privateIndex = keys3.indexOf($private);\n    if (privateIndex !== -1) {\n      keys3.splice(privateIndex, 1);\n    }\n    return keys3;\n  }\n  getOwnPropertyDescriptor(target, key7) {\n    if (key7 === $private) {\n      return void 0;\n    }\n    return Reflect.getOwnPropertyDescriptor(target, key7);\n  }\n};\nvar sharedProxyHandler = /* @__PURE__ */ new ObservableObjectProxyHandler();\n\n// ../../library/src/render/traits/Blending.ts\nfunction collectBlendingFromProps(node, style) {\n  if (!node.blendingMode || node.blendingMode === \"normal\") return;\n  style.mixBlendMode = node.blendingMode;\n}\n\n// ../../library/src/render/traits/Opacity.ts\nvar key2 = \"opacity\";\nfunction withOpacity(target) {\n  return key2 in target;\n}\nfunction collectOpacityFromProps(props, style) {\n  if (!withOpacity(props)) return;\n  const opacity = Animatable.getNumber(props.opacity);\n  if (opacity === 1) return;\n  style.opacity = opacity;\n}\n\n// ../../library/src/render/traits/Overflow.ts\nfunction collectOverflowFromProps(props, style) {\n  if (props.overflow) {\n    style.overflow = props.overflow;\n  }\n}\n\n// ../../library/src/render/traits/Radius.ts\nvar key3 = \"radius\";\nfunction hasRadius(props) {\n  return key3 in props;\n}\nfunction getRadiusValue(value) {\n  let num = Number(value);\n  if (typeof value === \"string\" && Number.isNaN(num)) {\n    return value;\n  } else if (isAnimatable(value)) {\n    num = Animatable.getNumber(value);\n  }\n  return num ? `${num}px` : \"0\";\n}\nfunction hasRadiusValue(value) {\n  return value && value !== \"0\";\n}\nfunction collectRadiusFromProps(props, style) {\n  if (!hasRadius(props)) return;\n  const { radius } = props;\n  if (typeof radius === \"string\" || isAnimatable(radius) || isFiniteNumber(radius)) {\n    const radiusValue = getRadiusValue(radius);\n    if (hasRadiusValue(radiusValue)) {\n      style.borderTopLeftRadius = style.borderTopRightRadius = style.borderBottomRightRadius = style.borderBottomLeftRadius = radiusValue;\n    }\n  } else if (radius) {\n    const topLeft = getRadiusValue(radius.topLeft);\n    const topRight = getRadiusValue(radius.topRight);\n    const bottomRight = getRadiusValue(radius.bottomRight);\n    const bottomLeft = getRadiusValue(radius.bottomLeft);\n    if (hasRadiusValue(topLeft) || hasRadiusValue(topRight) || hasRadiusValue(bottomRight) || hasRadiusValue(bottomLeft)) {\n      style.borderTopLeftRadius = topLeft;\n      style.borderTopRightRadius = topRight;\n      style.borderBottomRightRadius = bottomRight;\n      style.borderBottomLeftRadius = bottomLeft;\n    }\n  }\n}\n\n// ../../library/src/render/traits/TextColor.ts\nfunction collectTextColorFromProps(props, style) {\n  const { color: color2 } = props;\n  if (typeof color2 === \"string\") {\n    style.color = color2;\n  } else if (Color.isColorObject(color2)) {\n    style.color = color2.initialValue || Color.toRgbString(color2);\n  }\n}\n\n// ../../library/src/render/types/Shadow.ts\nvar shadowKeys = [\"color\", \"x\", \"y\", \"blur\"];\nvar Shadow = {\n  is: (shadow) => {\n    return shadow && shadowKeys.every((key7) => key7 in shadow);\n  }\n};\nvar boxShadowKeys = [\"x\", \"y\", \"color\", \"inset\", \"blur\", \"spread\"];\nvar BoxShadow = {\n  is: (shadow) => {\n    return shadow && boxShadowKeys.every((key7) => key7 in shadow);\n  },\n  toCSS: (shadow) => {\n    const inset2 = shadow.inset ? \"inset \" : \"\";\n    return `${inset2}${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`;\n  }\n};\n\n// ../../library/src/render/style/shadow.tsx\nimport { Fragment as Fragment5, jsx as jsx26, jsxs as jsxs7 } from \"react/jsx-runtime\";\nfunction shadowsAsFilter(shadows) {\n  const filters = [];\n  if (shadows && shadows.length) {\n    const dropShadows = shadows.map((shadowItem) => {\n      return `drop-shadow(${shadowItem.x}px ${shadowItem.y}px ${shadowItem.blur}px ${shadowItem.color})`;\n    });\n    filters.push(...dropShadows);\n  }\n  return filters;\n}\nfunction collectTextShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0) return;\n  const textShadow = props.shadows.map((shadow) => {\n    return `${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.color}`;\n  }).join(\", \");\n  if (!textShadow) return;\n  style.textShadow = textShadow;\n}\nfunction collectBoxShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0) return;\n  const boxShadow = props.shadows.map((shadowItem) => BoxShadow.toCSS(shadowItem)).join(\", \");\n  if (!boxShadow) return;\n  style.boxShadow = boxShadow;\n}\nfunction shadowForShape(boxShadows, rect, shapeId, fillEnabled, strokeEnabled, strokeWidth, strokeClipId, svgStrokeAttributes) {\n  const definition = [];\n  let outsetElement = null;\n  let insetElement = null;\n  let maskElement = null;\n  const needsStrokeClip = false;\n  const shadows = [];\n  const insetShadows = [];\n  const svgShadowClass = \"svg-shadow\";\n  const svgShadowProps = RenderTarget.current() === RenderTarget.canvas ? { className: svgShadowClass } : {};\n  for (const shadow of boxShadows) {\n    shadow.inset ? insetShadows.push(shadow) : shadows.push(shadow);\n  }\n  if (shadows.length > 0) {\n    shadows.reverse();\n    const outsideShadowId = shapeId.add(\"_shadow_out\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowRects = [normalizedFrame];\n    for (const shadow of shadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowRects.push(shadowFrame);\n    }\n    let maxBlur = 0;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = shadows.length; i < il; i++) {\n      const shadow = shadows[i];\n      if (!shadow) continue;\n      const shadowElements = outerShadowElements(shapeId, shadow, i);\n      maxBlur = Math.max(maxBlur, shadow.blur);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    let expandStrokeWidth = strokeWidth;\n    if (!isFiniteNumber(expandStrokeWidth)) expandStrokeWidth = 0;\n    let miter = svgStrokeAttributes.strokeMiterlimit;\n    if (!isFiniteNumber(miter)) miter = 4;\n    let shadowRect = Rect.merge(...shadowRects);\n    shadowRect = Rect.inflate(shadowRect, (expandStrokeWidth * miter / 2 + maxBlur) * 1.1);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const svgRect = {\n      x: `${filterX.toFixed(1)}%`,\n      y: `${filterY.toFixed(1)}%`,\n      width: `${filterWidth.toFixed(1)}%`,\n      height: `${filterHeight.toFixed(1)}%`\n    };\n    definition.push(\n      /* @__PURE__ */ jsxs7(\n        \"filter\",\n        {\n          id: outsideShadowId.id,\n          filterUnits: \"objectBoundingBox\",\n          ...svgRect,\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            shadows.length > 1 ? /* @__PURE__ */ jsx26(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        outsideShadowId.id\n      )\n    );\n    const maskId = shapeId.add(\"mask\");\n    maskElement = /* @__PURE__ */ jsxs7(\"mask\", { id: maskId.id, ...svgRect, children: [\n      /* @__PURE__ */ jsx26(\"rect\", { ...svgRect, fill: \"white\" }),\n      /* @__PURE__ */ jsx26(\"use\", { href: shapeId.link, fill: \"black\", fillOpacity: fillEnabled ? void 0 : 0 })\n    ] });\n    outsetElement = /* @__PURE__ */ jsx26(\"g\", { filter: outsideShadowId.urlLink, ...svgShadowProps, mask: maskId.urlLink, children: /* @__PURE__ */ jsx26(\n      \"use\",\n      {\n        ...svgStrokeAttributes,\n        fill: \"black\",\n        fillOpacity: fillEnabled ? void 0 : 0,\n        stroke: \"black\",\n        strokeOpacity: strokeEnabled ? void 0 : 0,\n        strokeWidth: strokeEnabled ? strokeWidth : 0,\n        xlinkHref: shapeId.link,\n        clipPath: strokeClipId.urlLink\n      }\n    ) });\n  }\n  if (insetShadows.length) {\n    insetShadows.reverse();\n    const insideShadowId = shapeId.add(\"_shadow_inside\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowFrames = [normalizedFrame];\n    for (const shadow of insetShadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowFrames.push(shadowFrame);\n    }\n    const shadowRect = Rect.merge(...shadowFrames);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = insetShadows.length; i < il; i++) {\n      const shadow = insetShadows[i];\n      if (!shadow) continue;\n      const shadowElements = innerShadowElements(shapeId, shadow, i);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    definition.push(\n      /* @__PURE__ */ jsxs7(\n        \"filter\",\n        {\n          id: insideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            insetShadows.length > 1 ? /* @__PURE__ */ jsx26(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        insideShadowId.id\n      )\n    );\n    let clipPath;\n    if (needsStrokeClip) {\n      clipPath = strokeClipId.urlLink;\n    }\n    insetElement = /* @__PURE__ */ jsx26(\n      \"use\",\n      {\n        fill: \"black\",\n        fillOpacity: \"1\",\n        filter: insideShadowId.urlLink,\n        xlinkHref: shapeId.link,\n        clipPath,\n        ...svgShadowProps\n      }\n    );\n  }\n  return { definition, outsetElement, insetElement, needsStrokeClip, maskElement };\n}\nfunction outerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_outer_shadow\" + index);\n  const filterElements = /* @__PURE__ */ jsx26(OuterShadowFilterElements, { shadow, shadowKey }, shadowKey.id + \"-filters\");\n  const mergeElement = /* @__PURE__ */ jsx26(\"feMergeNode\", { in: shadowKey.id }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar OuterShadowFilterElements = (props) => {\n  const { shadow, shadowKey } = props;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const blurId = shadowKey.add(\"blur\").id;\n  const floodId = shadowKey.add(\"flood\").id;\n  return /* @__PURE__ */ jsxs7(Fragment5, { children: [\n    /* @__PURE__ */ jsx26(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: \"SourceAlpha\", result: offsetId }),\n    /* @__PURE__ */ jsx26(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: offsetId, result: blurId }),\n    /* @__PURE__ */ jsx26(\"feFlood\", { floodColor: shadow.color, result: floodId }),\n    /* @__PURE__ */ jsx26(\"feComposite\", { in: floodId, in2: blurId, operator: \"in\", result: shadowKey.id })\n  ] });\n};\nfunction innerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_inside_shadow\" + index);\n  const filterElements = /* @__PURE__ */ jsx26(InnerShadowFilterElements, { shadow, shadowKey }, shadowKey.id + \"-filters\");\n  const mergeElement = /* @__PURE__ */ jsx26(\"feMergeNode\", { in: shadowKey.id }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar InnerShadowFilterElements = (props) => {\n  const { shadow, shadowKey } = props;\n  const blurId = shadowKey.add(\"blur\").id;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const compositeId = shadowKey.add(\"composite\").id;\n  const floodId = shadowKey.add(\"flood\").id;\n  return /* @__PURE__ */ jsxs7(Fragment5, { children: [\n    /* @__PURE__ */ jsx26(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: \"SourceAlpha\", result: blurId }),\n    /* @__PURE__ */ jsx26(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: blurId, result: offsetId }),\n    /* @__PURE__ */ jsx26(\"feComposite\", { in: offsetId, in2: \"SourceAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\", result: compositeId }),\n    /* @__PURE__ */ jsx26(\"feFlood\", { floodColor: shadow.color, result: floodId }),\n    /* @__PURE__ */ jsx26(\"feComposite\", { in: floodId, in2: compositeId, operator: \"in\", result: shadowKey.id })\n  ] });\n};\nfunction calcMaxRealisticShadowBlur(distance2, focus) {\n  return interpolate([0, 0.5, 1], [distance2 * 5, distance2, 0])(focus);\n}\nvar maxSpread = 5;\nfunction calcRealisticShadowSpread(diffusion) {\n  return mix(-maxSpread, 0, diffusion);\n}\nfunction localShadowFrame(shadow, frame2, isSVG = false) {\n  if (!isSVG && asRecord(shadow)[\"inset\"]) return null;\n  let growth = shadow.blur;\n  let minX;\n  let maxX;\n  let minY;\n  let maxY;\n  if (isSVG) {\n    minX = -Math.abs(shadow.x) - growth;\n    maxX = Math.abs(shadow.x) + frame2.width + growth;\n    minY = -Math.abs(shadow.y) - growth;\n    maxY = Math.abs(shadow.y) + frame2.height + growth;\n  } else if (BoxShadow.is(shadow) && shadow.type === \"realistic\") {\n    growth = \"focus\" in shadow && \"diffusion\" in shadow ? calcMaxRealisticShadowBlur(distance(shadow.x, shadow.y), shadow.focus) + calcRealisticShadowSpread(shadow.diffusion) : 0;\n    if (shadow.x >= 0) {\n      minX = 0 - growth;\n      maxX = shadow.x + frame2.width + growth;\n    } else {\n      minX = shadow.x - growth;\n      maxX = frame2.width + growth;\n    }\n    if (shadow.y >= 0) {\n      minY = 0 - growth;\n      maxY = shadow.y + frame2.height + growth;\n    } else {\n      minY = shadow.y - growth;\n      maxY = frame2.height + growth;\n    }\n  } else {\n    if (\"spread\" in shadow) {\n      growth += shadow.spread;\n    }\n    minX = shadow.x - growth;\n    maxX = shadow.x + frame2.width + growth;\n    minY = shadow.y - growth;\n    maxY = shadow.y + frame2.height + growth;\n  }\n  if (maxX <= minX || maxY <= minY) return null;\n  return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\n// ../../library/src/render/utils/filtersForNode.ts\nfunction collectLayerFilters(props, style) {\n  const filters = [];\n  if (isFiniteNumber(props.brightness)) {\n    filters.push(`brightness(${props.brightness / 100})`);\n  }\n  if (isFiniteNumber(props.contrast)) {\n    filters.push(`contrast(${props.contrast / 100})`);\n  }\n  if (isFiniteNumber(props.grayscale)) {\n    filters.push(`grayscale(${props.grayscale / 100})`);\n  }\n  if (isFiniteNumber(props.hueRotate)) {\n    filters.push(`hue-rotate(${props.hueRotate}deg)`);\n  }\n  if (isFiniteNumber(props.invert)) {\n    filters.push(`invert(${props.invert / 100})`);\n  }\n  if (isFiniteNumber(props.saturate)) {\n    filters.push(`saturate(${props.saturate / 100})`);\n  }\n  if (isFiniteNumber(props.sepia)) {\n    filters.push(`sepia(${props.sepia / 100})`);\n  }\n  if (isFiniteNumber(props.blur)) {\n    filters.push(`blur(${props.blur}px)`);\n  }\n  if (props.dropShadows) {\n    filters.push(...shadowsAsFilter(props.dropShadows));\n  }\n  if (filters.length === 0) return;\n  style.filter = style.WebkitFilter = filters.join(\" \");\n}\nfunction collectBackgroundFilters(props, style) {\n  if (isFiniteNumber(props.backgroundBlur)) {\n    style.backdropFilter = style.WebkitBackdropFilter = `blur(${props.backgroundBlur}px)`;\n  }\n}\nfunction collectFiltersFromProps(props, style) {\n  collectBackgroundFilters(props, style);\n  collectLayerFilters(props, style);\n}\n\n// ../../library/src/render/style/collectVisualStyleFromProps.ts\nfunction collectVisualStyleFromProps(props, style, isTextNode = false) {\n  collectBackgroundFromProps(props, style);\n  collectRadiusFromProps(props, style);\n  collectFiltersFromProps(props, style);\n  collectBlendingFromProps(props, style);\n  collectOverflowFromProps(props, style);\n  collectOpacityFromProps(props, style);\n  collectTextColorFromProps(props, style);\n  if (isTextNode) {\n    collectTextShadowsForProps(props, style);\n  } else {\n    collectBoxShadowsForProps(props, style);\n  }\n}\n\n// ../../library/src/render/traits/Transform.ts\nvar getNumber = /* @__PURE__ */ (() => Animatable.getNumber)();\nvar transformDefaults = {\n  z: 0,\n  rotation: 0,\n  rotationX: 0,\n  rotationY: 0,\n  rotationZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0\n};\nfunction getRotation(rotation, rotate) {\n  if (typeof rotate === \"string\") {\n    rotate = parseFloat(rotate);\n  }\n  return isFiniteNumber(rotate) ? rotate : getNumber(rotation);\n}\nfunction collectTransformFromProps(props, rect, style) {\n  const motionStyle = style;\n  const x = typeof rect.x === \"number\" ? `${rect.x}px` : rect.x;\n  const y = typeof rect.y === \"number\" ? `${rect.y}px` : rect.y;\n  const z = getNumber(props.z);\n  const scaleZ = getNumber(props.scaleZ);\n  const originZ = getNumber(props.originZ);\n  const rotationZ = getRotation(props.rotationZ, resolveMotionValue(motionStyle.rotateZ));\n  const rotationX = getRotation(props.rotationX, resolveMotionValue(motionStyle.rotateX));\n  const rotationY = getRotation(props.rotationY, resolveMotionValue(motionStyle.rotateY));\n  const scale2 = getNumber(props.scale);\n  const scaleX = getNumber(props.scaleX);\n  const scaleY = getNumber(props.scaleY);\n  const skew = getNumber(props.skew);\n  const skewX = getNumber(props.skewX);\n  const skewY = getNumber(props.skewY);\n  const rotation = getRotation(props.rotation, resolveMotionValue(motionStyle.rotate));\n  const force3d = RenderEnvironment.target === RenderTarget.export;\n  if (force3d || z !== 0 || scaleZ !== 1 || originZ !== 0 || rotationZ !== 0 || rotationX !== 0 || rotationY !== 0) {\n    style.transform = `\n            ${`translate3d(${x}, ${y}, ${z}px)`}\n            scale3d(${scaleX * scale2}, ${scaleY * scale2}, ${scaleZ})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            translateZ(${originZ}px)\n            rotateX(${rotationX}deg)\n            rotateY(${rotationY}deg)\n            rotateZ(${(rotation + rotationZ).toFixed(4)}deg)\n            translateZ(${-originZ}px)`;\n  } else {\n    style.transform = `\n            ${`translate(${x}, ${y})`}\n            scale(${scaleX * scale2}, ${scaleY * scale2})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            rotate(${rotation.toFixed(4)}deg)`;\n  }\n  const transformOrigin = `${getNumber(props.originX) * 100}% ${getNumber(props.originY) * 100}%`;\n  style.transformOrigin = transformOrigin;\n  style.WebkitTransformOrigin = transformOrigin;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nimport { jsx as jsx27, jsxs as jsxs8 } from \"react/jsx-runtime\";\nfunction cssBackgroundSize(size) {\n  switch (size) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"100% 100%\";\n    default:\n      return \"cover\";\n  }\n}\nfunction collectBackgroundImageFromProps(props, style) {\n  const image = backgroundImageFromProps(props);\n  if (image) {\n    style.backgroundImage = `url(\"${image.src}\")`;\n    style.backgroundSize = cssBackgroundSize(image.fit);\n    style.backgroundRepeat = \"no-repeat\";\n    style.backgroundPosition = \"center\";\n  }\n}\nfunction toPixelString(value) {\n  return isFiniteNumber(value) ? `${value}px` : value;\n}\nfunction applyLayoutProp(style, props, key7) {\n  if (props[key7] !== void 0) {\n    const value = Animatable.get(props[key7], void 0);\n    asRecord(style)[key7] = toPixelString(value);\n  }\n}\nvar DeprecatedFrame = /* @__PURE__ */ (() => {\n  const _DeprecatedFrameInner = class _DeprecatedFrameInner extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"element\", null);\n      __publicField(this, \"imageDidChange\", false);\n      __publicField(this, \"state\", {\n        size: null\n      });\n      __publicField(this, \"updateStyle\", () => {\n        if (!this.element) {\n          return;\n        }\n        Object.assign(this.element.style, this.getStyle());\n      });\n      __publicField(this, \"setElement\", (element) => {\n        this.element = element;\n        this.setLayerElement(element);\n      });\n      // XXX internal state\n      __publicField(this, \"propsObserver\");\n      __publicField(this, \"propsObserverCancel\");\n      __publicField(this, \"sizeObserver\");\n      __publicField(this, \"sizeObserverCancel\");\n      __publicField(this, \"onPropsChange\", (props) => {\n        const rect = _DeprecatedFrameInner.rect(Animatable.objectToValues(props.value));\n        if (this.state.size && isAnimatable(this.state.size.width) && isAnimatable(props.value.width)) {\n          this.state.size.width.set(rect.width);\n        }\n        if (this.state.size && isAnimatable(this.state.size.height) && isAnimatable(props.value.height)) {\n          this.state.size.height.set(rect.height);\n        }\n        this.updateStyle();\n      });\n      __publicField(this, \"onSizeChange\", () => {\n        this.updateStyle();\n      });\n    }\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? {\n        sizing: props.parentSize,\n        positioning: props.parentSize,\n        viewport: null\n      } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, true);\n    }\n    get rect() {\n      return _DeprecatedFrameInner.rect(this.props);\n    }\n    static getDerivedStateFromProps(nextProps, prevState) {\n      const size = _DeprecatedFrameInner.updatedSize(nextProps, prevState);\n      const { target } = RenderEnvironment;\n      const nextBackgroundImageSrc = nextProps.background && BackgroundImage.isImageObject(nextProps.background) ? nextProps.background.src : null;\n      if (nextBackgroundImageSrc) {\n        return {\n          size\n        };\n      }\n      if (prevState.size) {\n        if (target === RenderTarget.preview) {\n          return null;\n        }\n        if (prevState.size.width === size.width && prevState.size.height === size.height) {\n          return null;\n        }\n      }\n      return {\n        size\n      };\n    }\n    static updatedSize(props, state) {\n      const rect = _DeprecatedFrameInner.rect(props);\n      let size = state.size;\n      const newSize = { width: rect.width, height: rect.height };\n      const { target } = RenderEnvironment;\n      if (!size) {\n        if (target === RenderTarget.preview) {\n          size = ObservableObject(newSize, true);\n        } else {\n          size = newSize;\n        }\n      } else {\n        if (isAnimatable(size.width) && isAnimatable(size.height)) {\n          size.width.set(newSize.width);\n          size.height.set(newSize.height);\n        } else {\n          size = newSize;\n        }\n      }\n      return size;\n    }\n    getStyle() {\n      const rect = this.rect;\n      const style = {\n        display: \"block\",\n        position: \"absolute\",\n        width: `${rect.width}px`,\n        height: `${rect.height}px`,\n        pointerEvents: void 0,\n        // TODO: this should be \"none\" for non-event consuming instances, for performance.\n        userSelect: \"none\"\n      };\n      let left = Animatable.get(this.props.left, void 0);\n      let top = Animatable.get(this.props.top, void 0);\n      Object.assign(style, this.props._initialStyle);\n      const hasParentSize = this.context.parentSize !== 1 /* Disabled */;\n      const perspective = Animatable.get(this.props.perspective, void 0);\n      style.perspective = perspective;\n      style.WebkitPerspective = perspective;\n      let backfaceVisibility = void 0;\n      const backfaceVisible = Animatable.get(this.props.backfaceVisible, void 0);\n      if (backfaceVisible === true) {\n        backfaceVisibility = \"visible\";\n      } else if (backfaceVisible === false) {\n        backfaceVisibility = \"hidden\";\n      }\n      style.backfaceVisibility = backfaceVisibility;\n      style.WebkitBackfaceVisibility = backfaceVisibility;\n      const preserve3d = Animatable.get(this.props.preserve3d, void 0);\n      if (preserve3d === true) {\n        style.transformStyle = \"preserve-3d\";\n      } else if (preserve3d === false) {\n        style.transformStyle = \"flat\";\n      }\n      if (!hasParentSize) {\n        applyLayoutProp(style, this.props, \"right\");\n        applyLayoutProp(style, this.props, \"bottom\");\n        const width = Animatable.get(this.props.width, void 0);\n        const stringWidth = toPixelString(width);\n        const height = Animatable.get(this.props.height, void 0);\n        const stringHeight = toPixelString(height);\n        if (typeof left === \"string\" && left.endsWith(\"%\") && this.props.right === null) {\n          left = `calc(${left} - calc(${stringWidth}} / 2))`;\n          style.width = stringWidth;\n        }\n        if (typeof top === \"string\" && top.endsWith(\"%\") && this.props.bottom === null) {\n          top = `calc(${top} - calc(${stringHeight} / 2))`;\n          style.height = stringHeight;\n        }\n        if (top !== void 0 && style.bottom !== void 0) {\n          style.height = void 0;\n          top = toPixelString(Animatable.get(this.props.top, void 0));\n        } else {\n          style.height = stringHeight;\n        }\n        if (left !== void 0 && style.right !== void 0) {\n          style.width = void 0;\n          left = toPixelString(Animatable.get(this.props.left, void 0));\n        } else {\n          style.width = stringWidth;\n        }\n      }\n      const transformRect = { ...rect };\n      if (typeof left !== \"undefined\") {\n        transformRect.x = left;\n      }\n      if (typeof top !== \"undefined\") {\n        transformRect.y = top;\n      }\n      collectTransformFromProps(this.props, transformRect, style);\n      collectVisualStyleFromProps(this.props, style);\n      collectBackgroundImageFromProps(this.props, style);\n      Layer.applyWillChange(this.props, style, false);\n      if (this.props.style) {\n        Object.assign(style, this.props.style);\n      }\n      return style;\n    }\n    componentDidMount() {\n      const { target } = RenderEnvironment;\n      if (target === RenderTarget.preview) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentDidUpdate() {\n      const { target } = RenderEnvironment;\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      if (target === RenderTarget.preview) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentWillUnmount() {\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.propsObserverCancel = void 0;\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      this.sizeObserverCancel = void 0;\n    }\n    render() {\n      countNodeRender();\n      const { visible, id, className: className2 } = this.props;\n      if (!visible) {\n        return null;\n      }\n      const style = this.getStyle();\n      const rect = this.rect;\n      const parentSize = { width: rect.width, height: rect.height };\n      return /* @__PURE__ */ jsxs8(\"div\", { id, style, ref: this.setElement, className: className2, children: [\n        /* @__PURE__ */ jsx27(ProvideParentSize, { parentSize, children: this.layoutChildren() }),\n        /* @__PURE__ */ jsx27(Border, { ...this.props })\n      ] });\n    }\n    layoutChildren() {\n      const _forwardedOverrides = this.props._forwardedOverrides;\n      let children = React35.Children.map(this.props.children, (child) => {\n        if (isConstraintSupportingChild(child)) {\n          return React35.cloneElement(child, {\n            parentSize: this.state.size,\n            _forwardedOverrides\n            // biome-ignore lint/suspicious/noExplicitAny: deprecated code\n          });\n        } else if (_forwardedOverrides && child) {\n          return React35.cloneElement(child, { _forwardedOverrides });\n        } else {\n          return child;\n        }\n      });\n      if (children && children.length === 1 && typeof children[0] === \"string\") {\n        children = [/* @__PURE__ */ jsx27(Center, { children }, \"0\")];\n      }\n      return children;\n    }\n  };\n  __publicField(_DeprecatedFrameInner, \"supportsConstraints\", true);\n  __publicField(_DeprecatedFrameInner, \"defaultFrameSpecificProps\", {\n    ...constraintDefaults,\n    ...transformDefaults,\n    opacity: 1,\n    background: Color(\"rgba(0, 170, 255, 0.3)\"),\n    visible: true,\n    borderWidth: 0,\n    borderColor: \"#222\",\n    borderStyle: \"solid\"\n  });\n  __publicField(_DeprecatedFrameInner, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._DeprecatedFrameInner.defaultFrameSpecificProps\n  });\n  let DeprecatedFrameInner = _DeprecatedFrameInner;\n  DeprecatedFrameInner.contextType = ConstraintsContext;\n  return DeprecatedFrameInner;\n})();\nfunction Center(props) {\n  const style = Object.assign(\n    {},\n    {\n      height: \"100%\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      fontFamily: \"Helvetica\"\n    },\n    props.style || {}\n  );\n  return /* @__PURE__ */ jsx27(\"div\", { style, children: props.children });\n}\n\n// ../../library/src/render/presentation/Frame/isDeprecatedFrameProps.ts\nvar frameWithMotionPropsFields = [\n  \"_border\",\n  \"_constraints\",\n  \"animate\",\n  \"initial\",\n  \"variants\",\n  \"transition\",\n  \"inherit\",\n  \"center\",\n  \"initial\",\n  \"transformTemplate\",\n  \"animate\",\n  \"variants\",\n  \"transition\",\n  \"onUpdate\",\n  \"onAnimationComplete\",\n  \"onPanSessionStart\",\n  \"onTapCancel\",\n  \"whileTap\",\n  \"whileHover\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"drag\",\n  \"dragDirectionLock\",\n  \"dragPropagation\",\n  \"dragConstraints\",\n  \"dragElastic\",\n  \"dragMomentum\",\n  \"dragTransition\",\n  \"onDragStart\",\n  \"onDragEnd\",\n  \"onDrag\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"x\",\n  \"y\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"position\",\n  \"border\",\n  \"borderRadius\",\n  \"shadow\",\n  \"size\"\n];\nvar deprecatedFramePropsFields = [\n  \"autoSize\",\n  \"aspectRatio\",\n  \"borderWidth\",\n  \"borderStyle\",\n  \"borderColor\",\n  \"centerX\",\n  \"centerY\"\n];\nfunction isDeprecatedFrameProps(props) {\n  let field;\n  for (const propKey in props) {\n    if (isAnimatable(props[propKey])) return true;\n  }\n  for (field of frameWithMotionPropsFields) {\n    if (props.hasOwnProperty(field)) return false;\n  }\n  for (field of deprecatedFramePropsFields) {\n    if (props.hasOwnProperty(field)) return true;\n  }\n  return false;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { jsx as jsx28 } from \"react/jsx-runtime\";\nvar DeprecatedFrameWithEvents = /* @__PURE__ */ WithEvents(DeprecatedFrame);\nvar Frame = /* @__PURE__ */ (() => {\n  const FrameInner = forwardRef3(function FrameInner2(props, ref) {\n    const parentSize = useParentSize();\n    if (isDeprecatedFrameProps(props)) {\n      const currentParentSize = props.parentSize || deprecatedParentSize(parentSize);\n      return /* @__PURE__ */ jsx28(DeprecatedFrameWithEvents, { ...props, parentSize: currentParentSize });\n    }\n    return /* @__PURE__ */ jsx28(FrameWithMotion, { ...props, ref });\n  });\n  FrameInner[\"displayName\"] = \"Frame\";\n  return FrameInner;\n})();\n\n// ../../library/src/components/Draggable.ts\nvar Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents);\n\n// ../../library/src/components/Pagination/InfiniteScroll.tsx\nimport React36, { useEffect as useEffect13, useRef as useRef11 } from \"react\";\nimport { jsx as jsx29 } from \"react/jsx-runtime\";\nfunction useInfiniteScroll({ ref: observerRef, loadMore, rootMargin = \"0px\", paginationInfo }) {\n  const isVisibleRef = useRef11(false);\n  const callback = React36.useCallback(\n    (entry) => {\n      if (!entry.isIntersecting) {\n        isVisibleRef.current = false;\n        return;\n      }\n      isVisibleRef.current = true;\n      loadMore();\n      return;\n    },\n    [loadMore]\n  );\n  useEffect13(() => {\n    frame.postRender(() => {\n      frame.render(() => {\n        if (isVisibleRef.current) {\n          loadMore();\n        }\n      });\n    });\n  }, [paginationInfo.currentPage, loadMore]);\n  useSharedIntersectionObserver(observerRef, callback, {\n    rootMargin,\n    enabled: paginationInfo.currentPage < paginationInfo.totalPages\n  });\n}\nfunction withInfiniteScroll(Component17) {\n  return React36.forwardRef(\n    ({ __paginationInfo, __loadMore, ...props }, ref) => {\n      const infiniteScrollRef = useObserverRef(ref);\n      useInfiniteScroll({\n        rootMargin: \"500px\",\n        loadMore: __loadMore,\n        ref: infiniteScrollRef,\n        paginationInfo: __paginationInfo\n      });\n      return /* @__PURE__ */ jsx29(Component17, { ...props, ref: infiniteScrollRef });\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nimport React38, { startTransition } from \"react\";\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nimport { useCallback as useCallback8, useRef as useRef12 } from \"react\";\n\n// ../../library/src/render/utils/debounce.ts\nfunction debounce(fn, time2) {\n  let timeout;\n  const debounced = (...args) => {\n    safeWindow.clearTimeout(timeout);\n    timeout = safeWindow.setTimeout(fn, time2, ...args);\n  };\n  const cancel = () => {\n    safeWindow.clearTimeout(timeout);\n  };\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nfunction useWheelScroll(ref, {\n  enabled,\n  initial,\n  prev,\n  direction,\n  constraints,\n  offsetX,\n  offsetY,\n  onScrollStart,\n  onScroll,\n  onScrollEnd\n}) {\n  const isWheelScrollActive = useRef12(false);\n  const getPointData = useCallback8(() => {\n    const point = getPoint(offsetX, offsetY);\n    const data2 = {\n      point,\n      velocity: { x: offsetX.getVelocity(), y: offsetY.getVelocity() },\n      offset: { x: point.x - initial.x, y: point.y - initial.y },\n      delta: { x: point.x - prev.x, y: point.y - prev.y }\n    };\n    prev.x = point.x;\n    prev.y = point.y;\n    return data2;\n  }, []);\n  let handler;\n  if (enabled) {\n    let clampX2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.left, constraints.current.right);\n    }, clampY2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.top, constraints.current.bottom);\n    }, updateX2 = function(delta) {\n      offsetX.stop();\n      offsetX.set(clampX2(offsetX.get() - delta));\n    }, updateY2 = function(delta) {\n      offsetY.stop();\n      offsetY.set(clampY2(offsetY.get() - delta));\n    };\n    var clampX = clampX2, clampY = clampY2, updateX = updateX2, updateY = updateY2;\n    const debouncedOnScrollEnd = debounce(() => {\n      onScrollEnd && onScrollEnd(getPointData());\n      isWheelScrollActive.current = false;\n    }, 200);\n    handler = (e) => {\n      e.preventDefault();\n      if (!isWheelScrollActive.current) {\n        const x = offsetX.get();\n        const y = offsetY.get();\n        initial.x = x;\n        initial.y = y;\n        prev.x = x;\n        prev.y = y;\n        onScrollStart && onScrollStart(getPointData());\n        isWheelScrollActive.current = true;\n      }\n      switch (direction) {\n        case \"horizontal\":\n          updateX2(e.deltaX);\n          break;\n        case \"vertical\":\n          updateY2(e.deltaY);\n          break;\n        default:\n          updateX2(e.deltaX);\n          updateY2(e.deltaY);\n      }\n      onScroll && onScroll(getPointData());\n      debouncedOnScrollEnd();\n    };\n  }\n  useDomEvent(ref, \"wheel\", handler, { passive: false });\n}\nfunction getPoint(x, y) {\n  return { x: x.get(), y: y.get() };\n}\n\n// ../../library/src/components/utils/paddingFromProps.ts\nfunction hasPaddingPerSide(props) {\n  const { paddingPerSide, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  return paddingPerSide !== false && (paddingTop !== void 0 || paddingBottom !== void 0 || paddingLeft !== void 0 || paddingRight !== void 0);\n}\nfunction paddingFromProps(props) {\n  const { padding = 0, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  if (hasPaddingPerSide(props)) {\n    return {\n      top: paddingTop !== void 0 ? paddingTop : padding,\n      bottom: paddingBottom !== void 0 ? paddingBottom : padding,\n      left: paddingLeft !== void 0 ? paddingLeft : padding,\n      right: paddingRight !== void 0 ? paddingRight : padding\n    };\n  }\n  return {\n    top: padding,\n    bottom: padding,\n    left: padding,\n    right: padding\n  };\n}\nfunction makePaddingString({\n  top,\n  left,\n  bottom,\n  right\n}) {\n  if (top === right && right === bottom && bottom === left) {\n    return `${top}px`;\n  }\n  return `${top}px ${right}px ${bottom}px ${left}px`;\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nimport React37 from \"react\";\nimport { jsx as jsx30 } from \"react/jsx-runtime\";\nvar Stack = /* @__PURE__ */ (() => {\n  const StackInner = React37.forwardRef(\n    function StackInner2(stackProps, forwardedRef) {\n      const {\n        as = \"div\",\n        direction = \"vertical\",\n        distribution = \"start\",\n        alignment = \"center\",\n        gap = 10,\n        wrap: wrap2 = false,\n        useFlexboxGap: externalUseFlexboxGap = true,\n        children,\n        style: styleProp,\n        className: className2,\n        willChangeTransform,\n        __fromCodeComponentNode,\n        parentSize,\n        __contentWrapperStyle,\n        ...containerProps\n      } = stackProps;\n      const useFlexboxGap = externalUseFlexboxGap || wrap2;\n      const stackRef = React37.useRef(null);\n      const flexDirection = toFlexDirection(direction);\n      const isReverse = isReverseDirection(flexDirection);\n      const justifyContent = toJustifyOrAlignment(distribution);\n      const padding = hasPaddingPerSide(containerProps) || containerProps.padding ? makePaddingString(paddingFromProps(containerProps)) : void 0;\n      const style = { ...styleProp };\n      Layer.applyWillChange({ willChangeTransform }, style, true);\n      if (__fromCodeComponentNode && !constraintsEnabled(unwrapFrameProps(containerProps))) {\n        containerProps.width = \"100%\";\n        containerProps.height = \"100%\";\n        containerProps._constraints = { enabled: true };\n      }\n      const layoutId = useLayoutId(stackProps);\n      const { children: _children, props } = processOverrideForwarding(containerProps, children);\n      const widthType = containerProps.widthType ?? (containerProps.width === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const heightType = containerProps.heightType ?? (containerProps.height === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const fractionChildren = handleFraction(_children, direction, widthType, heightType);\n      const gapChildren = wrapInGapElementForLegacyGap(\n        fractionChildren,\n        gap,\n        flexDirection,\n        justifyContent,\n        useFlexboxGap,\n        wrap2\n      );\n      const content = useProvideParentSize(gapChildren, parentSize ?? 1 /* Disabled */);\n      const attributes = {\n        \"data-framer-component-type\": \"Stack\"\n      };\n      const fromCanvasComponent = containerProps.__fromCanvasComponent;\n      if (fromCanvasComponent) attributes[\"data-framer-generated\"] = true;\n      const alignItems = toJustifyOrAlignment(alignment);\n      const contentWrapperStyle = {\n        display: \"flex\",\n        flexDirection,\n        flexWrap: wrap2 ? \"wrap\" : \"nowrap\",\n        justifyContent,\n        alignItems,\n        alignContent: alignItems,\n        padding,\n        ...__contentWrapperStyle\n      };\n      const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n      if (useFlexboxGap && gapEnabled) {\n        const gapSupportedInMainAxis = isGapSupportedInMainAxis(justifyContent);\n        if (gapSupportedInMainAxis || direction !== \"horizontal\") {\n          asRecord(contentWrapperStyle)[\"--stack-native-column-gap\"] = `${gap}px`;\n        }\n        if (gapSupportedInMainAxis || direction !== \"vertical\") {\n          asRecord(contentWrapperStyle)[\"--stack-native-row-gap\"] = `${gap}px`;\n        }\n      }\n      if (contentWrapperStyle.width === void 0) {\n        contentWrapperStyle.width = widthType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (contentWrapperStyle.height === void 0) {\n        contentWrapperStyle.height = heightType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (fromCanvasComponent) {\n        if (styleProp == null ? void 0 : styleProp.width) contentWrapperStyle.width = styleProp == null ? void 0 : styleProp.width;\n        if (styleProp == null ? void 0 : styleProp.height) contentWrapperStyle.height = styleProp == null ? void 0 : styleProp.height;\n      }\n      return /* @__PURE__ */ jsx30(\n        FrameWithMotion,\n        {\n          as,\n          background: fromCanvasComponent ? void 0 : \"none\",\n          ...props,\n          layoutId,\n          ref: useForwardedRef(forwardedRef, stackRef),\n          ...attributes,\n          style,\n          className: className2,\n          layoutScroll: true,\n          children: /* @__PURE__ */ jsx30(\n            motion.div,\n            {\n              \"data-framer-stack-content-wrapper\": true,\n              \"data-framer-stack-direction-reverse\": isReverse,\n              \"data-framer-stack-gap-enabled\": gapEnabled,\n              style: contentWrapperStyle,\n              children: content\n            }\n          )\n        }\n      );\n    }\n  );\n  StackInner.defaultProps = {\n    distribution: \"start\"\n  };\n  StackInner.displayName = \"Stack\";\n  addPropertyControls(StackInner, {\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"vertical\"\n    },\n    distribution: {\n      type: \"enum\" /* Enum */,\n      options: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\", \"space-evenly\"],\n      optionTitles: [\"Start\", \"Center\", \"End\", \"Space Between\", \"Space Around\", \"Space Evenly\"],\n      title: \"Distribute\",\n      defaultValue: \"space-around\"\n    },\n    alignment: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"start\", \"center\", \"end\"],\n      title: \"Align\",\n      defaultValue: \"center\"\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      hidden: (props) => {\n        return props.distribution !== void 0 && [\"space-between\", \"space-around\", \"space-evenly\"].includes(props.distribution);\n      },\n      defaultValue: 10\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"t\", \"r\", \"b\", \"l\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    }\n  });\n  return StackInner;\n})();\nfunction isFractionDimension(dimension) {\n  return typeof dimension === \"string\" && dimension.endsWith(\"fr\");\n}\nfunction fraction(dimension) {\n  const value = parseFloat(dimension);\n  return isFiniteNumber(value) ? value : 0;\n}\nfunction handleFraction(children, direction, widthType, heightType) {\n  return React37.Children.map(children, (child) => {\n    if (!isReactChild(child) || !isReactElement(child)) return;\n    const isVertical = direction === \"vertical\";\n    const style = {};\n    let hasFraction = false;\n    const { style: propsStyle, size } = child.props;\n    let { width, height } = child.props;\n    if (size !== void 0) {\n      if (width === void 0) width = size;\n      if (height === void 0) height = size;\n    }\n    let newWidth = width;\n    let newHeight = height;\n    if (isFractionDimension(width)) {\n      hasFraction = true;\n      hasFraction = true;\n      if (isVertical) {\n        if (widthType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newWidth = \"auto\";\n        } else {\n          newWidth = `${fraction(width) * 100}%`;\n        }\n      } else {\n        newWidth = 1;\n        style.flexGrow = fraction(width);\n        style.flexBasis = 0;\n      }\n      style.width = newWidth;\n    }\n    if (isFractionDimension(height)) {\n      hasFraction = true;\n      if (isVertical) {\n        newHeight = 1;\n        style.flexGrow = fraction(height);\n        style.flexBasis = 0;\n      } else {\n        if (heightType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newHeight = \"auto\";\n        } else {\n          newHeight = `${fraction(height) * 100}%`;\n        }\n      }\n      style.height = newHeight;\n    }\n    if (!hasFraction) return child;\n    const nextStyle = { ...propsStyle, ...style };\n    return React37.cloneElement(child, {\n      width: newWidth,\n      height: newHeight,\n      style: nextStyle\n    });\n  });\n}\nfunction isGapSupportedInMainAxis(justifyContent) {\n  if (!justifyContent) return false;\n  return ![\"space-between\", \"space-around\", \"space-evenly\", \"stretch\"].includes(justifyContent);\n}\nfunction isGapEnabled(gap, justifyContent, wrap2) {\n  if (!gap) {\n    return false;\n  }\n  if (!wrap2 && !isGapSupportedInMainAxis(justifyContent)) {\n    return false;\n  }\n  return true;\n}\nfunction wrapInGapElementForLegacyGap(children, gap, direction, justifyContent, useFlexboxGap, wrap2) {\n  const gapStyle = {\n    // We need the wrapper to have `display: contents` to prevent the child\n    // margins from collapsing when using the fallback gap solution.\n    // https://codesandbox.io/s/dreamy-haslett-01ie5?file=/src/styles.css\n    display: \"contents\"\n  };\n  const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n  if (gapEnabled) {\n    const isVertical = isVerticalDirection(direction);\n    asRecord(gapStyle)[\"--stack-gap-x\"] = `${isVertical ? 0 : gap}px`;\n    asRecord(gapStyle)[\"--stack-gap-y\"] = `${isVertical ? gap : 0}px`;\n  }\n  return /* @__PURE__ */ jsx30(\n    \"div\",\n    {\n      \"data-framer-legacy-stack-gap-enabled\": gapEnabled,\n      \"data-framer-stack-flexbox-gap\": useFlexboxGap,\n      style: gapStyle,\n      children\n    }\n  );\n}\nfunction toFlexDirection(direction) {\n  switch (direction) {\n    case \"vertical\":\n      return \"column\";\n    case \"horizontal\":\n      return \"row\";\n    default:\n      return direction;\n  }\n}\nfunction isVerticalDirection(direction) {\n  return direction === \"column\" || direction === \"column-reverse\";\n}\nfunction isReverseDirection(direction) {\n  switch (direction) {\n    case \"column-reverse\":\n    case \"row-reverse\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction toJustifyOrAlignment(distribution) {\n  switch (distribution) {\n    case \"start\":\n      return \"flex-start\";\n    case \"end\":\n      return \"flex-end\";\n    default:\n      return distribution;\n  }\n}\nfunction useForwardedRef(forwardedRef, innerRef) {\n  return (element) => {\n    innerRef.current = element;\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(element);\n    } else if (forwardedRef) {\n      forwardedRef.current = element;\n    }\n  };\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nimport { jsx as jsx31 } from \"react/jsx-runtime\";\nvar pageContentWrapperType = \"PageContentWrapper\";\nfunction PageContainer({\n  children,\n  effect,\n  dragEnabled,\n  direction,\n  contentHeight,\n  contentWidth,\n  alignment,\n  gap,\n  isLastPage,\n  contentOffsetRef,\n  constraintsRef,\n  directionLock,\n  onDragStart,\n  onDrag,\n  onDragEnd,\n  layoutId\n}) {\n  const isHorizontalDirection = direction === \"horizontal\";\n  const dragAxis = isHorizontalDirection ? \"x\" : \"y\";\n  const hasHorizontalGap = isHorizontalDirection && !isLastPage && gap;\n  const hasVerticalGap = !isHorizontalDirection && !isLastPage && gap;\n  const hasAutoWidth = contentWidth !== \"stretch\" && isHorizontalDirection;\n  const hasAutoHeight = contentHeight !== \"stretch\" && !isHorizontalDirection;\n  const wrapperWidth = hasAutoWidth ? \"auto\" : \"100%\";\n  const wrapperHeight = hasAutoHeight ? \"auto\" : \"100%\";\n  const containerWidth = hasHorizontalGap && wrapperWidth === \"100%\" ? `calc(100% + ${gap}px)` : wrapperWidth;\n  const containerHeight = hasVerticalGap && wrapperHeight === \"100%\" ? `calc(100% + ${gap}px)` : wrapperHeight;\n  return /* @__PURE__ */ jsx31(\n    FrameWithMotion,\n    {\n      position: \"relative\",\n      \"data-framer-component-type\": \"PageContainer\",\n      width: containerWidth,\n      height: containerHeight,\n      layoutId: layoutId ? `${layoutId}-container` : void 0,\n      backgroundColor: \"transparent\",\n      drag: dragEnabled ? dragAxis : false,\n      dragDirectionLock: directionLock,\n      _dragX: contentOffsetRef.current.x,\n      _dragY: contentOffsetRef.current.y,\n      dragConstraints: constraintsRef.current,\n      onDrag,\n      onDragStart,\n      onDragEnd,\n      preserve3d: true,\n      style: {\n        pointerEvents: void 0,\n        paddingRight: hasHorizontalGap ? gap : 0,\n        paddingBottom: hasVerticalGap ? gap : 0\n      },\n      children: /* @__PURE__ */ jsx31(\n        FrameWithMotion,\n        {\n          position: \"relative\",\n          \"data-framer-component-type\": pageContentWrapperType,\n          width: wrapperWidth,\n          height: wrapperHeight,\n          preserve3d: false,\n          backgroundColor: \"transparent\",\n          style: {\n            ...effect,\n            pointerEvents: void 0,\n            display: \"flex\",\n            flexDirection: isHorizontalDirection ? \"row\" : \"column\",\n            alignItems: alignment && toJustifyOrAlignment(alignment)\n          },\n          children\n        },\n        effect ? Object.keys(effect).join(\"\") : \"\"\n      )\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nimport { jsx as jsx32, jsxs as jsxs9 } from \"react/jsx-runtime\";\nvar Page = /* @__PURE__ */ React38.forwardRef(function Page2(props, forwardedRef) {\n  var _a;\n  const {\n    direction = \"horizontal\",\n    contentWidth = \"stretch\",\n    contentHeight = \"stretch\",\n    alignment = \"start\",\n    currentPage = 0,\n    animateCurrentPageUpdate = true,\n    gap: gapValue = 10,\n    padding: _padding = 0,\n    momentum = false,\n    dragEnabled = true,\n    defaultEffect: _defaultEffect = \"none\",\n    background = \"transparent\",\n    overflow = \"hidden\",\n    __fromCodeComponentNode,\n    effect: _effect,\n    children,\n    contentOffsetX,\n    contentOffsetY,\n    onChangePage,\n    onScrollStart,\n    onScroll,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    directionLock,\n    onScrollEnd,\n    onDirectionLock: _onDirectionLock,\n    onUpdate: _onUpdate,\n    wheelEnabled = false,\n    layoutId: specificLayoutId,\n    ...rest\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"page\" });\n  const containerProps = { ...rest, background };\n  const hasMountedRef = React38.useRef(false);\n  const hasFixedSize = RenderTarget.hasRestrictions() && props.__fromCodeComponentNode && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height);\n  if (!hasFixedSize && __fromCodeComponentNode && !containerProps.__fromCanvasComponent) {\n    containerProps.width = \"100%\";\n    containerProps.height = \"100%\";\n    containerProps._constraints = { enabled: true };\n  }\n  const { initial, prev } = React38.useRef({\n    initial: { x: 0, y: 0 },\n    prev: { x: 0, y: 0 }\n  }).current;\n  const isHorizontal = direction === \"horizontal\";\n  let gap = gapValue;\n  if (gap < 0) {\n    warnOnce2(`The 'gap' property of Page component can not be negative, but is ${gapValue}.`);\n    gap = 0;\n  }\n  React38.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const pageCount = React38.Children.count(children);\n  const maxOffsetRef = React38.useRef(0);\n  const constraints = React38.useRef({ top: 0, left: 0, right: 0, bottom: 0 });\n  const fallbackContainerRef = React38.useRef(null);\n  const containerRef = forwardedRef || fallbackContainerRef;\n  const scrollableRef = React38.useRef(null);\n  const pageEffectValuesRef = React38.useRef([]);\n  const pageRectsRef = React38.useRef([]);\n  const internalX = useMotionValue(isMotionValue2(contentOffsetX) ? 0 : contentOffsetX ?? 0);\n  const internalY = useMotionValue(isMotionValue2(contentOffsetY) ? 0 : contentOffsetY ?? 0);\n  const contentOffsetRef = React38.useRef({\n    x: isMotionValue2(contentOffsetX) ? contentOffsetX : internalX,\n    y: isMotionValue2(contentOffsetY) ? contentOffsetY : internalY\n  });\n  const currentContentPageRef = React38.useRef(currentPage);\n  const propsBoundedCurrentPageRef = React38.useRef(currentPage);\n  const latestPropsRef = React38.useRef(props);\n  latestPropsRef.current = props;\n  const lastDirectionRef = React38.useRef(props.direction);\n  const snapToPage = useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal);\n  const [_, setForceUpdateCount] = React38.useState(0);\n  const containerSizeRef = React38.useRef({ width: 200, height: 200 });\n  if (hasFixedSize && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height)) {\n    containerSizeRef.current.width = containerProps.width;\n    containerSizeRef.current.height = containerProps.height;\n  }\n  const updateOnResize = React38.useCallback(() => {\n    if (!hasFixedSize) startTransition(() => setForceUpdateCount((v) => v + 1));\n  }, [hasFixedSize]);\n  React38.useEffect(() => {\n    if (RenderTarget.current() !== RenderTarget.preview) return;\n    globalThis.addEventListener(\"resize\", updateOnResize);\n    return () => {\n      globalThis.removeEventListener(\"resize\", updateOnResize);\n    };\n  }, [updateOnResize]);\n  const applyEffects = () => {\n    pageEffectValuesRef.current.forEach((effectDictionary, index) => {\n      const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n      if (!effectDictionary || !values) return;\n      for (const [key7, value] of Object.entries(values)) {\n        const effectValue = effectDictionary[key7];\n        if (isMotionValue2(effectValue)) {\n          effectValue.set(value);\n        }\n      }\n    });\n  };\n  const updateMaxOffsetFromPageContents = (containerSize) => {\n    const newPageContentRects = getPageContentRects(containerRef, containerSize, direction, gap);\n    if (newPageContentRects) pageRectsRef.current = newPageContentRects;\n    const newMaxOffset = getMaxOffset(\n      containerSizeRef.current,\n      pageRectsRef.current,\n      direction,\n      latestPropsRef.current\n    );\n    if (newMaxOffset !== maxOffsetRef.current) {\n      maxOffsetRef.current = newMaxOffset;\n      constraints.current.top = -newMaxOffset;\n      constraints.current.left = -newMaxOffset;\n      if (RenderTarget.current() === RenderTarget.canvas) setForceUpdateCount((v) => v + 1);\n    }\n  };\n  const measureContainerSize = () => {\n    const element = containerRef.current;\n    if (!element) return null;\n    const { offsetWidth, offsetHeight } = element;\n    const currentSize = containerSizeRef.current;\n    if (offsetWidth !== currentSize.width || offsetHeight !== currentSize.height) {\n      containerSizeRef.current = {\n        width: offsetWidth,\n        height: offsetHeight\n      };\n      return containerSizeRef.current;\n    }\n    return null;\n  };\n  const updateAndSnapToPage = (newPage, mount = false) => {\n    const newBoundedCurrentPage = getBoundedCurrentPage(newPage, pageCount);\n    const boundedCurrentPageDidChange = newBoundedCurrentPage !== propsBoundedCurrentPageRef.current;\n    if (boundedCurrentPageDidChange) {\n      propsBoundedCurrentPageRef.current = newBoundedCurrentPage;\n      updateCurrentPage(newBoundedCurrentPage, currentContentPageRef, !mount ? onChangePage : void 0);\n    }\n    const offset = offsetForPage(newBoundedCurrentPage, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    const animated = animateCurrentPageUpdate && RenderTarget.current() !== RenderTarget.canvas && !mount;\n    snapToPage(newBoundedCurrentPage, offset, { animated });\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (hasMountedRef.current) return;\n    requestAnimationFrame(() => {\n      currentContentPageRef.current = currentPage;\n      const contentOffset = contentOffsetRef.current;\n      contentOffset.x.on(\"change\", applyEffects);\n      contentOffset.y.on(\"change\", applyEffects);\n      applyEffects();\n      hasMountedRef.current = true;\n      const containerSize = measureContainerSize() ?? containerSizeRef.current;\n      updateMaxOffsetFromPageContents(containerSize);\n      updateAndSnapToPage(currentContentPageRef.current, true);\n    });\n  }, []);\n  React38.useEffect(() => {\n    if (currentPage !== currentContentPageRef.current) updateAndSnapToPage(currentPage);\n  }, [currentPage]);\n  const handleMeasureLifecycle = () => {\n    const newContainerSize = measureContainerSize();\n    updateMaxOffsetFromPageContents(newContainerSize ?? containerSizeRef.current);\n    updateAndSnapToPage(currentContentPageRef.current);\n    if (newContainerSize || direction !== lastDirectionRef.current) {\n      if (direction === \"horizontal\") {\n        contentOffsetRef.current.y.set(0);\n      } else {\n        contentOffsetRef.current.x.set(0);\n      }\n      lastDirectionRef.current = direction;\n    }\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (RenderTarget.current() !== RenderTarget.canvas) return;\n    handleMeasureLifecycle();\n  });\n  const onDragStartHandler = (event, info) => {\n    if (onScrollStart) onScrollStart(info);\n    if (onDragStart) onDragStart(event, info);\n    prev.x = initial.x = info.point.x;\n    prev.y = initial.y = info.point.y;\n  };\n  const onDragHandler = (event, info) => {\n    if (onScroll) onScroll(info);\n    if (onDrag) onDrag(event, info);\n    prev.x = info.point.x;\n    prev.y = info.point.y;\n  };\n  const onDragTransitionEnd = () => {\n    if (props.onDragTransitionEnd) props.onDragTransitionEnd();\n    if (onScrollEnd) {\n      const { x, y } = contentOffsetRef.current;\n      const point = { x: x.get(), y: y.get() };\n      onScrollEnd({\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      });\n    }\n  };\n  const onDragEndHandler = async (event, info) => {\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    contentOffset.stop();\n    const startPosition = contentOffset.get();\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const velocity = info.velocity[axis];\n    let index = nearestPageIndex(pageRectsRef.current, startPosition, startPosition, isHorizontal, momentum);\n    if (velocity) {\n      animateValue({\n        type: \"inertia\",\n        keyframes: [startPosition],\n        velocity,\n        modifyTarget: (endPosition) => {\n          index = nearestPageIndex(pageRectsRef.current, startPosition, endPosition, isHorizontal, momentum);\n          return endPosition;\n        }\n      }).stop();\n    }\n    updateCurrentPage(index, currentContentPageRef, onChangePage);\n    const offset = offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    if (onDragEnd) onDragEnd(event, info);\n    const handler = contentOffsetRef.current[axis];\n    handler.set(startPosition);\n    animate(handler, offset, {\n      type: \"spring\",\n      velocity,\n      stiffness: 500,\n      damping: 50,\n      onComplete: onDragTransitionEnd\n    });\n  };\n  pageEffectValuesRef.current = [];\n  const childComponents = React38.Children.map(children, (child, index) => {\n    if (!isReactChild(child) || !isReactElement(child)) {\n      return child;\n    }\n    const update = {\n      right: void 0,\n      bottom: void 0,\n      top: void 0,\n      left: void 0,\n      _constraints: {\n        enabled: false\n      },\n      style: void 0\n    };\n    if (containerProps.__fromCanvasComponent) {\n      update.style = child.props.style ?? {};\n      if (contentWidth === \"stretch\") update.style.width = \"100%\";\n      if (contentHeight === \"stretch\") update.style.height = \"100%\";\n    } else {\n      if (contentWidth === \"stretch\") update.width = \"100%\";\n      if (contentHeight === \"stretch\") update.height = \"100%\";\n    }\n    let effectDictionary;\n    const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n    if (values) {\n      effectDictionary = {};\n      for (const key7 in values) {\n        effectDictionary[key7] = motionValue(values[key7]);\n      }\n    }\n    pageEffectValuesRef.current.push(effectDictionary);\n    return /* @__PURE__ */ jsx32(\n      PageContainer,\n      {\n        effect: effectDictionary,\n        dragEnabled,\n        direction,\n        contentHeight,\n        contentWidth,\n        alignment,\n        gap,\n        isLastPage: index === pageCount - 1,\n        contentOffsetRef,\n        constraintsRef: constraints,\n        directionLock,\n        onDragStart: onDragStartHandler,\n        onDrag: onDragHandler,\n        onDragEnd: onDragEndHandler,\n        layoutId: layoutId ? `${layoutId}-${index}` : void 0,\n        children: React38.cloneElement(child, update)\n      },\n      index\n    );\n  });\n  useWheelScroll(scrollableRef, {\n    enabled: wheelEnabled,\n    initial,\n    prev,\n    direction,\n    constraints,\n    offsetX: contentOffsetRef.current.x,\n    offsetY: contentOffsetRef.current.y,\n    onScrollStart,\n    onScroll,\n    onScrollEnd\n  });\n  return /* @__PURE__ */ jsx32(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"PageWrapper\",\n      preserve3d: false,\n      perspective: hasEffect(props) ? 1200 : void 0,\n      ...containerProps,\n      style: { pointerEvents: void 0, ...containerProps.style, overflow },\n      layoutId,\n      ref: containerRef,\n      onLayoutMeasure: handleMeasureLifecycle,\n      children: /* @__PURE__ */ jsxs9(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"Page\",\n          ref: scrollableRef,\n          background: null,\n          x: contentOffsetRef.current.x,\n          y: contentOffsetRef.current.y,\n          width: \"100%\",\n          height: \"100%\",\n          preserve3d: true,\n          layout: true,\n          layoutId: layoutId !== void 0 ? layoutId + \"-page\" : void 0,\n          style: {\n            padding: makePaddingString(paddingFromProps(props)),\n            display: \"flex\",\n            flexDirection: isHorizontal ? \"row\" : \"column\",\n            pointerEvents: (_a = props.style) == null ? void 0 : _a.pointerEvents\n          },\n          children: [\n            /* @__PURE__ */ jsx32(\n              EmptyState,\n              {\n                title: \"Page\",\n                description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n                size: containerSizeRef.current,\n                insideUserCodeComponent: !__fromCodeComponentNode,\n                children\n              }\n            ),\n            childComponents\n          ]\n        }\n      )\n    }\n  );\n});\nfunction cubeEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    originX: normalizedOffset < 0 ? 1 : 0,\n    originY: normalizedOffset < 0 ? 1 : 0,\n    rotateY: isHorizontal ? Math.min(Math.max(-90, normalizedOffset * 90), 90) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(Math.max(-90, normalizedOffset * -90), 90),\n    backfaceVisibility: \"hidden\",\n    WebkitBackfaceVisibility: \"hidden\"\n  };\n}\nfunction coverflowEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    rotateY: isHorizontal ? Math.min(45, Math.max(-45, normalizedOffset * -45)) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(45, Math.max(-45, normalizedOffset * 45)),\n    originX: isHorizontal ? normalizedOffset < 0 ? 0 : 1 : 0.5,\n    originY: isHorizontal ? 0.5 : normalizedOffset < 0 ? 0 : 1,\n    x: isHorizontal ? `${normalizedOffset * -25}%` : 0,\n    y: isHorizontal ? 0 : `${normalizedOffset * -25}%`,\n    z: -Math.abs(normalizedOffset),\n    scale: 1 - Math.abs(normalizedOffset / 10)\n  };\n}\nfunction calcPileAxisOffset(offset, length) {\n  return offset * length - offset * 8;\n}\nfunction pileEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const absoluteOffset = Math.abs(normalizedOffset);\n  return {\n    x: normalizedOffset < 0 && isHorizontal ? calcPileAxisOffset(absoluteOffset, size.width) : 0,\n    y: normalizedOffset < 0 && !isHorizontal ? calcPileAxisOffset(absoluteOffset, size.height) : 0,\n    scale: normalizedOffset < 0 ? 1 - absoluteOffset / 50 : 1\n  };\n}\nfunction wheelEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const originZ = (isHorizontal ? size.width : size.height) * 18 / (2 * Math.PI);\n  const rotateX = isHorizontal ? 0 : normalizedOffset * -20;\n  const rotateY = isHorizontal ? normalizedOffset * 20 : 0;\n  const y = isHorizontal ? 0 : normalizedOffset * -size.height;\n  const x = isHorizontal ? normalizedOffset * -size.width : 0;\n  return {\n    opacity: 1 - Math.abs(normalizedOffset) / 4,\n    transform: `translate(${x}px, ${y}px) translateZ(-${originZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(${originZ}px)`\n  };\n}\nfunction getDefaultEffect(type) {\n  switch (type) {\n    case \"cube\":\n      return cubeEffect;\n    case \"coverflow\":\n      return coverflowEffect;\n    case \"pile\":\n      return pileEffect;\n    case \"wheel\":\n      return wheelEffect;\n    default:\n      return null;\n  }\n}\nfunction nearestPageIndex(pageRects, startPosition, endPosition, isHorizontalDirection, allowSkippingPages) {\n  const distanceToStart = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + startPosition);\n  };\n  const distanceToEnd = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + endPosition);\n  };\n  if (allowSkippingPages) {\n    const closestPages = [...pageRects].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0]) return -1;\n    return pageRects.indexOf(closestPages[0]);\n  } else {\n    const closestToStart = [...pageRects].sort((a, b) => distanceToStart(a) - distanceToStart(b));\n    if (closestToStart.length === 1 && closestToStart[0]) return pageRects.indexOf(closestToStart[0]);\n    const pageA = closestToStart[0];\n    const pageB = closestToStart[1];\n    if (!pageA || !pageB) return -1;\n    const closestPages = [pageA, pageB].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0]) return -1;\n    return pageRects.indexOf(closestPages[0]);\n  }\n}\nfunction getPageContentRects(containerRef, containerSize, direction, gap) {\n  var _a;\n  const containerElement = containerRef.current;\n  if (!containerElement) return;\n  const contentWrappers = [];\n  (_a = containerElement.firstChild) == null ? void 0 : _a.childNodes.forEach((node) => {\n    const childNode = node.firstChild;\n    if (!(childNode instanceof HTMLElement)) return;\n    const componentType = childNode.getAttribute(\"data-framer-component-type\");\n    if (componentType === pageContentWrapperType) {\n      contentWrappers.push(childNode);\n    }\n  });\n  const sizes = [];\n  contentWrappers.forEach((contentWrapper) => {\n    if (contentWrapper instanceof HTMLElement && contentWrapper.firstChild instanceof HTMLElement) {\n      let width = contentWrapper.firstChild.offsetWidth;\n      let height = contentWrapper.firstChild.offsetHeight;\n      if (isTest()) {\n        width = 100;\n        height = 100;\n      }\n      sizes.push({ width, height });\n    } else {\n      sizes.push(null);\n    }\n  });\n  let maxX = 0;\n  let maxY = 0;\n  const isHorizontal = direction === \"horizontal\";\n  return sizes.map((queriedSize) => {\n    const size = queriedSize || containerSize;\n    const x = maxX;\n    const y = maxY;\n    if (isHorizontal) {\n      maxX += size.width + gap;\n    } else {\n      maxY += size.height + gap;\n    }\n    return { ...size, x, y };\n  });\n}\nfunction getMaxOffset(containerSize, pageContentRects, direction, paddingProps) {\n  const lastPageRect = pageContentRects[pageContentRects.length - 1];\n  if (!lastPageRect) return 0;\n  const paddingSides = paddingFromProps(paddingProps);\n  const isHorizontal = direction === \"horizontal\";\n  const paddingStart = isHorizontal ? paddingSides.left : paddingSides.top;\n  const paddingEnd = isHorizontal ? paddingSides.right : paddingSides.bottom;\n  const pageWidth = isHorizontal ? lastPageRect.width : lastPageRect.height;\n  const containerWidth = isHorizontal ? containerSize.width : containerSize.height;\n  const freeSpace = containerWidth - paddingStart - paddingEnd - pageWidth;\n  const target = isHorizontal ? lastPageRect.x : lastPageRect.y;\n  if (freeSpace <= 0) return Math.max(target, 0);\n  return Math.max(target - freeSpace, 0);\n}\nfunction offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef) {\n  const pageIndex = Math.max(0, Math.min(pageCount - 1, index));\n  const currentPageRect = pageRectsRef.current[pageIndex];\n  if (!currentPageRect) {\n    return 0;\n  }\n  if (isHorizontal) {\n    return -Math.min(currentPageRect.x, maxOffsetRef.current);\n  } else {\n    return -Math.min(currentPageRect.y, maxOffsetRef.current);\n  }\n}\nfunction useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal) {\n  return (pageIndex, offset, options) => {\n    currentContentPageRef.current = pageIndex;\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    if (!options || !options.animated) {\n      contentOffset.set(offset);\n      return;\n    }\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const value = contentOffsetRef.current[axis];\n    value.set(contentOffset.get());\n    animate(value, offset, {\n      type: \"spring\",\n      velocity: contentOffset.getVelocity(),\n      stiffness: 500,\n      damping: 50\n    });\n  };\n}\nfunction getBoundedCurrentPage(pageIndex, pageCount) {\n  return pageIndex >= 0 ? Math.min(pageIndex, pageCount - 1) : (pageIndex % pageCount + pageCount) % pageCount;\n}\nfunction effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef) {\n  const {\n    direction: latestDirection = \"horizontal\",\n    defaultEffect: latestDefaultEffect,\n    effect: latestEffect,\n    gap: latestGap = 10\n  } = latestPropsRef.current;\n  const latestIsHorizontal = latestDirection === \"horizontal\";\n  const pageRect = pageRectsRef.current[index] || {\n    x: latestIsHorizontal ? index * 200 + latestGap : 0,\n    y: latestIsHorizontal ? 0 : index * 200 + latestGap,\n    width: 200,\n    height: 200\n  };\n  const effectFunction = latestEffect || getDefaultEffect(latestDefaultEffect);\n  if (!effectFunction) return null;\n  let offset;\n  let normalizedOffset;\n  const contentOffset = contentOffsetRef.current;\n  const maxScrollOffset = maxOffsetRef.current;\n  if (latestIsHorizontal) {\n    offset = Math.min(pageRect.x, maxScrollOffset) + (contentOffset ? contentOffset.x.get() : 0);\n    normalizedOffset = offset / (pageRect.width + latestGap);\n  } else {\n    offset = Math.min(pageRect.y, maxScrollOffset) + (contentOffset ? contentOffset.y.get() : 0);\n    normalizedOffset = offset / (pageRect.height + latestGap);\n  }\n  const size = { width: pageRect.width, height: pageRect.height };\n  return effectFunction({\n    offset,\n    normalizedOffset,\n    size,\n    index,\n    direction: latestDirection,\n    gap: latestGap,\n    pageCount: pageRectsRef.current.length\n  });\n}\nfunction hasEffect(props) {\n  return !!props.effect || !!getDefaultEffect(props.defaultEffect);\n}\nfunction updateCurrentPage(newPageIndex, currentContentPageRef, onChangePage) {\n  if (currentContentPageRef.current === newPageIndex) return;\n  if (onChangePage) onChangePage(newPageIndex, currentContentPageRef.current);\n  currentContentPageRef.current = newPageIndex;\n}\n\n// ../../library/src/components/Page/Page.tsx\nvar Page3 = /* @__PURE__ */ (() => {\n  const ContentDimension = {\n    Auto: \"auto\",\n    Stretch: \"stretch\"\n  };\n  const pageContentDimensionOptions = [ContentDimension.Auto, ContentDimension.Stretch];\n  const pageContentDimensionTitles = /* @__PURE__ */ pageContentDimensionOptions.map((option) => {\n    switch (option) {\n      case ContentDimension.Auto:\n        return \"Auto\";\n      case ContentDimension.Stretch:\n        return \"Stretch\";\n    }\n  });\n  const pageEffectOptions = [\"none\", \"cube\", \"coverflow\", \"wheel\", \"pile\"];\n  const pageEffectTitles = /* @__PURE__ */ pageEffectOptions.map((option) => {\n    switch (option) {\n      case \"none\":\n        return \"None\";\n      case \"cube\":\n        return \"Cube\";\n      case \"coverflow\":\n        return \"Cover Flow\";\n      case \"wheel\":\n        return \"Wheel\";\n      case \"pile\":\n        return \"Pile\";\n    }\n  });\n  const pageAlignmentOptions = [\"start\", \"center\", \"end\"];\n  const genericAlignmentTitles = /* @__PURE__ */ pageAlignmentOptions.map((option) => {\n    switch (option) {\n      case \"start\":\n        return \"Start\";\n      case \"center\":\n        return \"Center\";\n      case \"end\":\n        return \"End\";\n    }\n  });\n  Page.defaultProps = {\n    gap: 10,\n    directionLock: false\n  };\n  addPropertyControls(Page, {\n    direction: {\n      type: \"enum\" /* Enum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"horizontal\",\n      displaySegmentedControl: true,\n      optionIcons: [\"direction-horizontal\", \"direction-vertical\"]\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    contentWidth: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Width\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    contentHeight: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Height\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    alignment: {\n      type: \"enum\" /* Enum */,\n      options: pageAlignmentOptions,\n      optionTitles: genericAlignmentTitles,\n      title: \"Align\",\n      hidden(props) {\n        const { direction, contentWidth, contentHeight } = props;\n        const isHorizontalDirection = direction === \"horizontal\";\n        const crossDimension = isHorizontalDirection ? contentHeight : contentWidth;\n        return crossDimension === ContentDimension.Stretch;\n      },\n      defaultValue: \"start\",\n      displaySegmentedControl: true,\n      optionIcons: {\n        direction: {\n          horizontal: [\"align-top\", \"align-middle\", \"align-bottom\"],\n          vertical: [\"align-left\", \"align-center\", \"align-right\"]\n        }\n      }\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      defaultValue: 0\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    },\n    overflow: {\n      type: \"enum\" /* Enum */,\n      title: \"Overflow\",\n      defaultValue: \"hidden\",\n      options: [\"visible\", \"hidden\"],\n      optionTitles: [\"Visible\", \"Hidden\"],\n      displaySegmentedControl: true\n    },\n    currentPage: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Current\",\n      displayStepper: true,\n      defaultValue: 0\n    },\n    momentum: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      title: \"Momentum\",\n      defaultValue: false\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: false\n    },\n    defaultEffect: {\n      type: \"enum\" /* Enum */,\n      options: pageEffectOptions,\n      optionTitles: pageEffectTitles,\n      title: \"Effect\",\n      defaultValue: \"none\"\n    },\n    children: {\n      type: \"array\" /* Array */,\n      title: \"Content\",\n      control: { type: \"componentinstance\" /* ComponentInstance */, title: \"Page\" }\n    }\n  });\n  Page.supportsConstraints = true;\n  return Page;\n})();\n\n// ../../library/src/components/Screen.tsx\nimport React39, { Component as Component9 } from \"react\";\n\n// ../../library/src/events/recognizer/GestureRecognizer.ts\nfunction stateName(state) {\n  switch (state) {\n    case 2 /* Possible */:\n      return \"Possible\";\n    case 4 /* Began */:\n      return \"Began\";\n    case 8 /* Changed */:\n      return \"Changed\";\n    case 16 /* Ended */:\n      return \"Ended\";\n    case 32 /* Failed */:\n      return \"Failed\";\n    case 64 /* Cancelled */:\n      return \"Cancelled\";\n    case 128 /* Recognized */:\n      return \"Recognized\";\n    default:\n      return \"Unknown\";\n  }\n}\nfunction containsBitmask(value, bitmask) {\n  return (value & bitmask) !== 0;\n}\nvar GestureRecognizer = class {\n  constructor() {\n    __publicField(this, \"_state\", 2 /* Possible */);\n    __publicField(this, \"handler\", null);\n    __publicField(this, \"preventers\", []);\n  }\n  get state() {\n    return this._state;\n  }\n  setState(state) {\n    this._state = state;\n  }\n  get isPrevented() {\n    let prevented = false;\n    for (const recognizer of this.preventers) {\n      if (recognizer.state & (4 /* Began */ | 8 /* Changed */ | 16 /* Ended */)) {\n        prevented = true;\n        break;\n      }\n    }\n    return prevented;\n  }\n  canBePreventedBy(recognizer) {\n    this.preventers.push(recognizer);\n  }\n  hasState(bitmask) {\n    return containsBitmask(this.state, bitmask);\n  }\n  stateSwitch(newState) {\n    let allowedStates;\n    switch (this.state) {\n      case 2 /* Possible */:\n        allowedStates = 4 /* Began */ | 128 /* Recognized */ | 32 /* Failed */;\n        break;\n      case 4 /* Began */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 8 /* Changed */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 128 /* Recognized */:\n      case 16 /* Ended */:\n      case 64 /* Cancelled */:\n      case 32 /* Failed */:\n        allowedStates = 2 /* Possible */;\n        break;\n      default:\n        allowedStates = 0;\n    }\n    if (!containsBitmask(newState, allowedStates)) {\n      console.warn(`Unallowed state change from ${stateName(this.state)} to ${stateName(newState)}`);\n      return;\n    }\n    this.setState(newState);\n  }\n  cancel() {\n    if (this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      this.setState(64 /* Cancelled */);\n    }\n    this.reset();\n  }\n  reset() {\n    if (!this.hasState(2 /* Possible */)) {\n      this.stateSwitch(2 /* Possible */);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/MouseWheelGestureRecognizer.ts\nvar MouseWheelGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"startEvent\", null);\n    __publicField(this, \"eventType\", \"mousewheel\");\n    __publicField(this, \"onMouseWheelEnd\", debounce((event) => {\n      if (this.handler && this.startEvent) {\n        this.stateSwitch(16 /* Ended */);\n        this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n        this.startEvent = null;\n        this.reset();\n      }\n    }, 300));\n  }\n  pointerSessionBegan(session, event) {\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n  }\n  mouseWheel(session, event) {\n    if (!this.handler) return;\n    if (this.hasState(2 /* Possible */)) {\n      this.startEvent = event;\n      this.stateSwitch(4 /* Began */);\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n      return;\n    }\n    if (this.hasState(4 /* Began */ | 8 /* Changed */) && this.startEvent) {\n      this.stateSwitch(8 /* Changed */);\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n    this.onMouseWheelEnd(event);\n  }\n};\n\n// ../../library/src/events/recognizer/PanGestureRecognizer.ts\nvar PanGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"startEvent\", null);\n    __publicField(this, \"eventType\", \"pan\");\n  }\n  pointerSessionBegan(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionMoved(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionEnded(session, event) {\n    this.panend(event);\n  }\n  recognize(session, event) {\n    if (Math.abs(event.delta.x) > 0 || Math.abs(event.delta.y) > 0) {\n      if (this.startEvent) {\n        this.pan(event);\n      } else {\n        this.panstart(event);\n      }\n    }\n  }\n  reset() {\n    this.startEvent = null;\n    super.reset();\n  }\n  panstart(event) {\n    if (!this.hasState(2 /* Possible */) || event.isLeftMouseClick !== void 0 && !event.isLeftMouseClick) {\n      return;\n    }\n    this.stateSwitch(4 /* Began */);\n    this.startEvent = event;\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n    }\n  }\n  pan(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(8 /* Changed */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n  }\n  panend(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(16 /* Ended */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/TapGestureRecognizer.ts\nvar TapGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"eventType\", \"tap\");\n  }\n  pointerSessionBegan(session, event) {\n    if (this.handler && (event.isLeftMouseClick === void 0 || event.isLeftMouseClick)) {\n      this.handler.gestureBegan(this.eventType, event, null);\n    }\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n    if (this.isPrevented) {\n      this.stateSwitch(32 /* Failed */);\n    } else if (!session.startEvent || session.startEvent.target === event.target) {\n      this.stateSwitch(128 /* Recognized */);\n      if (this.handler) {\n        this.handler.gestureChanged(this.eventType, event, null);\n      }\n    } else {\n      this.stateSwitch(32 /* Failed */);\n    }\n    if (this.handler) {\n      this.handler.gestureEnded(this.eventType, event, null);\n    }\n  }\n};\n\n// ../../library/src/events/FramerEventSession.ts\nvar FramerEventSession = class {\n  constructor(dispatcher, customOrigin) {\n    __publicField(this, \"events\", []);\n    __publicField(this, \"recognizers\", []);\n    __publicField(this, \"mouseWheelRecognizer\", new MouseWheelGestureRecognizer());\n    __publicField(this, \"dispatcher\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"originElement\");\n    this.dispatcher = dispatcher;\n    if (customOrigin) {\n      this.originElement = customOrigin;\n    } else {\n      this.originElement = document.body;\n    }\n    const pan = new PanGestureRecognizer();\n    const tap = new TapGestureRecognizer();\n    pan.handler = this;\n    tap.handler = this;\n    this.mouseWheelRecognizer.handler = this;\n    this.recognizers = [tap, pan];\n  }\n  get isStarted() {\n    return this.events.length !== 0;\n  }\n  get startEvent() {\n    return this.isStarted ? this.events[0] : void 0;\n  }\n  get lastEvent() {\n    return this.events[this.events.length - 1];\n  }\n  // Event handling\n  processEvent(event) {\n    this.events.push(event);\n    return event;\n  }\n  pointerDown(event) {\n    if (this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.cancel();\n      r.pointerSessionBegan(this, event);\n    });\n  }\n  pointerMove(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionMoved(this, event);\n    });\n  }\n  pointerUp(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionEnded(this, event);\n    });\n    this.clearEvents();\n    this.recognizers.map((r) => {\n      r.reset();\n    });\n  }\n  mouseWheel(event) {\n    this.processEvent(event);\n    this.mouseWheelRecognizer.mouseWheel(this, event);\n    this.clearEvents();\n  }\n  clearEvents() {\n    this.events = [];\n  }\n  dispatch(type, event, target = null) {\n    const dispatchTarget = target || this.startEvent && this.startEvent.target || event.target;\n    if (dispatchTarget) {\n      this.dispatcher(type, event, dispatchTarget);\n    }\n  }\n  // Gesture Handler\n  gestureBegan(type, event, target) {\n    this.dispatch(`${type}start`, event, target);\n  }\n  gestureChanged(type, event, target) {\n    this.dispatch(type, event, target);\n  }\n  gestureEnded(type, event, target) {\n    this.dispatch(`${type}end`, event, target);\n  }\n  // Calculatinos\n  /**\n   * Average velocity over last n seconds in pixels per second.\n   * @param n - number of events to use for calculation\n   */\n  velocity(t = Loop.TimeStep * 2) {\n    if (!this.isStarted || this.events.length < 2) {\n      return { x: 0, y: 0 };\n    }\n    const events = this.events;\n    let i = events.length - 1;\n    let event = null;\n    while (i >= 0) {\n      event = events[i] ?? null;\n      if (!event || MainLoop.time - event.loopTime > t) {\n        break;\n      }\n      i--;\n    }\n    if (!event) {\n      return { x: 0, y: 0 };\n    }\n    const current = events[events.length - 1];\n    if (!current) {\n      return { x: 0, y: 0 };\n    }\n    const time2 = (MainLoop.time - event.loopTime) * 1e3;\n    if (time2 === 0) {\n      return { x: 0, y: 0 };\n    }\n    const velocity = {\n      x: (current.devicePoint.x - event.devicePoint.x) / time2,\n      y: (current.devicePoint.y - event.devicePoint.y) / time2\n    };\n    if (velocity.x === Infinity) {\n      velocity.x = 0;\n    }\n    if (velocity.y === Infinity) {\n      velocity.y = 0;\n    }\n    return velocity;\n  }\n  offset(event) {\n    if (!this.startEvent) {\n      return { x: 0, y: 0 };\n    }\n    const subtract = (pointA, pointB) => {\n      return {\n        x: pointA.x - pointB.x,\n        y: pointA.y - pointB.y\n      };\n    };\n    return subtract(event.devicePoint, this.startEvent.devicePoint);\n  }\n};\n\n// ../../library/src/events/recognizer/MouseEventListener.ts\nimport { Component as Component7 } from \"react\";\nvar MouseEventListener = class extends Component7 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseDown\", (originalEvent) => {\n      safeWindow.addEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.addEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseMove\", (originalEvent) => {\n      const leftMouseButtonOnlyDown = originalEvent.buttons === void 0 ? originalEvent.which === 1 : originalEvent.buttons === 1;\n      if (!leftMouseButtonOnlyDown) {\n        this.domMouseUp(originalEvent);\n        return;\n      }\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseUp\", (originalEvent) => {\n      safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseWheel\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.mouseWheel(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.addEventListener(\"wheel\", this.domMouseWheel);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n    safeWindow.removeEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n    safeWindow.removeEventListener(\"wheel\", this.domMouseWheel);\n  }\n};\n\n// ../../library/src/events/recognizer/TouchEventListener.ts\nimport { Component as Component8 } from \"react\";\nvar TouchEventListener = class extends Component8 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchStart\", (originalEvent) => {\n      safeWindow.addEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.addEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchMove\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchEnd\", (originalEvent) => {\n      safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"touchstart\", this.domTouchStart);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"touchstart\", this.domTouchStart);\n    safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n    safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n  }\n};\n\n// ../../library/src/events/FramerEventListener.ts\nvar FramerEventListener = /* @__PURE__ */ environment.isTouch() ? TouchEventListener : MouseEventListener;\n\n// ../../library/src/components/Screen.tsx\nimport { jsx as jsx33 } from \"react/jsx-runtime\";\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport React43 from \"react\";\n\n// ../../library/src/components/Scroll/EmulatedScroll.tsx\nimport React40, { useCallback as useCallback9, useInsertionEffect as useInsertionEffect3, useMemo as useMemo6, useRef as useRef13 } from \"react\";\nimport { jsx as jsx34, jsxs as jsxs10 } from \"react/jsx-runtime\";\nvar directionMap = {\n  horizontal: \"x\",\n  vertical: \"y\",\n  both: true\n};\nfunction convertScrollDirectionToDrag(scrollDirection) {\n  return scrollDirection ? directionMap[scrollDirection] : scrollDirection;\n}\nvar useUpdateChildSize = ({\n  dragDirection,\n  children,\n  fromCanvasComponent\n}) => {\n  return useMemo6(() => {\n    return React40.Children.map(children, (child) => {\n      if (child === null || typeof child !== \"object\" || typeof child.type === \"string\") {\n        return child;\n      }\n      const updatedSize = {};\n      switch (dragDirection) {\n        case \"vertical\":\n          updatedSize.width = \"100%\";\n          break;\n        case \"horizontal\":\n          updatedSize.height = \"100%\";\n          break;\n        default:\n          return child;\n      }\n      const update = fromCanvasComponent ? { style: Object.assign({}, child.props.style, updatedSize) } : updatedSize;\n      return React40.cloneElement(child, update);\n    });\n  }, [dragDirection, children, fromCanvasComponent]);\n};\nvar numberFromOptionalMotionValue = (value) => {\n  return typeof value === \"number\" ? value : value.get();\n};\nvar EmulatedScroll = /* @__PURE__ */ React40.forwardRef(\n  function EmulatedScroll2(props, forwardedRef) {\n    const {\n      direction = \"vertical\",\n      directionLock = false,\n      dragEnabled = true,\n      dragElastic,\n      dragMomentum,\n      dragTransition,\n      wheelEnabled = true,\n      contentOffsetX = 0,\n      contentOffsetY = 0,\n      contentWidth,\n      contentHeight,\n      onScrollStart,\n      onScroll,\n      onScrollEnd,\n      onDragStart,\n      onDrag,\n      onDragEnd,\n      onUpdate,\n      onDirectionLock,\n      style,\n      children,\n      scrollAnimate,\n      resetOffset,\n      overdragEnabled = true,\n      layoutId: specificLayoutId,\n      native: _native,\n      ...containerProps\n    } = props;\n    const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n    const defaultX = useMotionValue(typeof contentOffsetX === \"number\" ? contentOffsetX : 0);\n    const defaultY = useMotionValue(typeof contentOffsetY === \"number\" ? contentOffsetY : 0);\n    const x = isMotionValue2(contentOffsetX) ? contentOffsetX : defaultX;\n    const y = isMotionValue2(contentOffsetY) ? contentOffsetY : defaultY;\n    const measuredConstraints = useRef13(null);\n    const dragControls = useDragControls();\n    const isInTarget = useIsInCurrentNavigationTarget();\n    const wasInTargetRef = useRef13(true);\n    useInsertionEffect3(() => {\n      injectComponentCSSRules();\n    }, []);\n    function setMeasureDragConstraints(constraints) {\n      constraints = offsetToZero(constraints);\n      if (contentWidth !== void 0) constraints.left = -contentWidth;\n      if (contentHeight !== void 0) constraints.top = -contentHeight;\n      return measuredConstraints.current = constraints;\n    }\n    const { initial, prev } = useRef13({\n      initial: { x: 0, y: 0 },\n      prev: { x: 0, y: 0 }\n    }).current;\n    const isPreview = RenderTarget.current() === RenderTarget.preview;\n    const containerFallbackRef = useRef13(null);\n    const containerRef = forwardedRef || containerFallbackRef;\n    const contentRef = useRef13(null);\n    const lastOffsetRef = useRef13(null);\n    function shouldResetScroll(inTarget) {\n      const hasEnteredTarget = inTarget && wasInTargetRef.current === false;\n      return resetOffset && hasEnteredTarget;\n    }\n    function measureAndUpdateScrollOffset() {\n      if (!contentRef.current || !containerRef.current) return;\n      const mustReset = shouldResetScroll(isInTarget);\n      wasInTargetRef.current = isInTarget;\n      const previous = lastOffsetRef.current;\n      if (previous === null && contentOffsetX === void 0 && contentOffsetY === void 0) return;\n      const shouldUpdateOffset = previous === null || !isMotionValue2(contentOffsetX) && contentOffsetX !== previous.offsetX || !isMotionValue2(contentOffsetY) && contentOffsetY !== previous.offsetY;\n      const currentMaxXOffset = contentRef.current.offsetWidth - containerRef.current.offsetWidth;\n      const currentMaxYOffset = contentRef.current.offsetHeight - containerRef.current.offsetHeight;\n      const hasSizeChanged = currentMaxXOffset !== (previous == null ? void 0 : previous.maxXOffset) || currentMaxYOffset !== (previous == null ? void 0 : previous.maxYOffset);\n      const hasScrollOffsetChanged = (previous == null ? void 0 : previous.x) !== x.get() || (previous == null ? void 0 : previous.y) !== y.get();\n      const shouldStayPinned = hasSizeChanged && !hasScrollOffsetChanged;\n      if (mustReset || shouldUpdateOffset || shouldStayPinned) {\n        const currentOffsetX = direction !== \"vertical\" ? numberFromOptionalMotionValue(contentOffsetX) : 0;\n        const currentOffsetY = direction !== \"horizontal\" ? numberFromOptionalMotionValue(contentOffsetY) : 0;\n        const nextXOffset = -Math.min(currentOffsetX, currentMaxXOffset);\n        const nextYOffset = -Math.min(currentOffsetY, currentMaxYOffset);\n        x.set(nextXOffset);\n        y.set(nextYOffset);\n        lastOffsetRef.current = {\n          maxXOffset: currentMaxXOffset,\n          maxYOffset: currentMaxYOffset,\n          offsetX: currentOffsetX,\n          offsetY: currentOffsetY,\n          x: nextXOffset,\n          y: nextYOffset\n        };\n      }\n    }\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() !== RenderTarget.canvas) return;\n      measureAndUpdateScrollOffset();\n    });\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() === RenderTarget.canvas) return;\n      measureAndUpdateScrollOffset();\n    }, []);\n    React40.useEffect(() => {\n      if (shouldResetScroll(isInTarget)) measureAndUpdateScrollOffset();\n      if (isInTarget === false) wasInTargetRef.current = false;\n    }, [isInTarget]);\n    const getLatestPoint = () => ({ x: x.get(), y: y.get() });\n    const resetInitialPoint = useCallback9(() => {\n      const point = getLatestPoint();\n      initial.x = point.x;\n      initial.y = point.y;\n      prev.x = point.x;\n      prev.y = point.y;\n    }, []);\n    const getPointData = useCallback9(() => {\n      const point = getLatestPoint();\n      const data2 = {\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      };\n      prev.x = point.x;\n      prev.y = point.y;\n      return data2;\n    }, [x, y]);\n    const updateScrollListeners = useCallback9(() => {\n      onUpdate && onUpdate({ x: x.get(), y: y.get() });\n      onScroll && onScroll(getPointData());\n    }, [onScroll, onUpdate, getPointData, x, y]);\n    const scheduleUpdateScrollListeners = useCallback9(() => {\n      frame.update(updateScrollListeners, false, true);\n    }, [updateScrollListeners]);\n    const onMotionDragStart = (event, info) => {\n      resetInitialPoint();\n      onDragStart && onDragStart(event, info);\n      onScrollStart && onScrollStart(info);\n    };\n    const onMotionDragTransitionEnd = () => onScrollEnd && onScrollEnd(getPointData());\n    const onWheelScrollStart = (info) => {\n      onScrollStart == null ? void 0 : onScrollStart(info);\n    };\n    useWheelScroll(containerRef, {\n      enabled: wheelEnabled,\n      initial,\n      prev,\n      direction,\n      offsetX: x,\n      offsetY: y,\n      onScrollStart: onWheelScrollStart,\n      onScroll,\n      onScrollEnd,\n      constraints: measuredConstraints\n    });\n    const overdragX = useMotionValue(0);\n    const overdragY = useMotionValue(0);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollX = (xValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement)) return;\n        element.scrollLeft = -xValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragXValue = 0;\n          if (xValue > constraints.right) overdragXValue = xValue;\n          if (xValue < constraints.left) overdragXValue = xValue - constraints.left;\n          overdragX.set(overdragXValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentX = x.get();\n      if (currentX !== 0) setScrollX(currentX);\n      return x.on(\"change\", setScrollX);\n    }, [x, overdragX, scheduleUpdateScrollListeners, overdragEnabled]);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollY = (yValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement)) return;\n        element.scrollTop = -yValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragYValue = 0;\n          if (yValue > constraints.bottom) overdragYValue = yValue;\n          if (yValue < constraints.top) overdragYValue = yValue - constraints.top;\n          overdragY.set(overdragYValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentY = y.get();\n      if (currentY !== 0) setScrollY(currentY);\n      return y.on(\"change\", setScrollY);\n    }, [y, overdragY, scheduleUpdateScrollListeners, overdragEnabled]);\n    const nativeOnScroll = React40.useCallback(() => {\n      const element = containerRef.current;\n      if (!(element instanceof HTMLDivElement)) return;\n      const xDelta = Math.abs(x.get() + element.scrollLeft);\n      const yDelta = Math.abs(y.get() + element.scrollTop);\n      if (xDelta > 1) x.set(-element.scrollLeft);\n      if (yDelta > 1) y.set(-element.scrollTop);\n    }, [x, y]);\n    const isEmpty2 = React40.Children.count(children) === 0;\n    const width = direction !== \"vertical\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const height = direction !== \"horizontal\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const size = !containerProps.__fromCanvasComponent ? {\n      width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n      height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n    } : {};\n    return /* @__PURE__ */ jsx34(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Scroll\",\n        background: \"none\",\n        ...containerProps,\n        ...size,\n        style: {\n          ...style,\n          willChange: isPreview ? \"transform\" : void 0,\n          // allows the scroll content to be hardware accelerated\n          overflow: \"hidden\"\n        },\n        onScroll: nativeOnScroll,\n        preserve3d: containerProps.preserve3d,\n        ref: containerRef,\n        layoutId,\n        layoutScroll: true,\n        onBeforeLayoutMeasure: measureAndUpdateScrollOffset,\n        children: /* @__PURE__ */ jsxs10(\n          FrameWithMotion,\n          {\n            \"data-framer-component-type\": \"ScrollContentWrapper\",\n            animate: scrollAnimate,\n            drag: dragEnabled && convertScrollDirectionToDrag(direction),\n            dragDirectionLock: directionLock,\n            dragElastic,\n            dragMomentum,\n            dragTransition,\n            dragConstraints: containerRef,\n            dragControls,\n            onDragStart: onMotionDragStart,\n            onDrag,\n            onDragEnd,\n            onDragTransitionEnd: onMotionDragTransitionEnd,\n            onDirectionLock,\n            onMeasureDragConstraints: setMeasureDragConstraints,\n            width,\n            height,\n            _dragX: x,\n            _dragY: y,\n            position: \"relative\",\n            x: overdragEnabled ? overdragX : void 0,\n            y: overdragEnabled ? overdragY : void 0,\n            ref: contentRef,\n            style: {\n              display: isEmpty2 ? \"block\" : \"inline-block\",\n              willChange: isPreview ? \"transform\" : void 0,\n              // makes the scroll content hardware accelerated\n              backgroundColor: \"transparent\",\n              overflow: \"visible\",\n              minWidth: \"100%\",\n              minHeight: \"100%\"\n            },\n            preserve3d: containerProps.preserve3d,\n            children: [\n              /* @__PURE__ */ jsx34(\n                EmptyState,\n                {\n                  size: {\n                    width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n                    height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n                  },\n                  insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n                  title: \"Scroll\",\n                  description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n                  children\n                }\n              ),\n              useUpdateChildSize({\n                dragDirection: direction,\n                children,\n                fromCanvasComponent: containerProps.__fromCanvasComponent\n              })\n            ]\n          }\n        )\n      }\n    );\n  }\n);\nfunction offsetToZero({ top, left, right, bottom }) {\n  const width = right - left;\n  const height = bottom - top;\n  return {\n    top: -height,\n    left: -width,\n    right: 0,\n    bottom: 0\n  };\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport React42, { useInsertionEffect as useInsertionEffect4 } from \"react\";\n\n// ../../library/src/modules/cx.ts\nfunction cx(...classNames) {\n  return classNames.filter(Boolean).join(\" \");\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nimport React41, { useEffect as useEffect14 } from \"react\";\n\n// ../../library/src/components/utils/animatePointWithInertia.ts\nfunction isRunningAnimation(...phases) {\n  let runningAny = false;\n  let cancelledAny = false;\n  phases.forEach((phase) => {\n    runningAny = runningAny || phase === 1 /* Running */;\n    cancelledAny = cancelledAny || phase === 3 /* Cancelled */;\n  });\n  return runningAny && !cancelledAny;\n}\nfunction didFinishAnimations(...phases) {\n  return phases.every((phase) => phase === 0 /* None */ || phase === 2 /* Completed */);\n}\nvar timeConstant = 400;\nfunction animatePointWithInertia({\n  from,\n  velocity,\n  onUpdate,\n  onComplete,\n  onStop\n}) {\n  const latest = from;\n  let animationPhaseX = 0 /* None */;\n  let animationPhaseY = 0 /* None */;\n  const animations2 = [];\n  const updateHandler = () => {\n    if (isRunningAnimation(animationPhaseX, animationPhaseY)) {\n      onUpdate(latest);\n    }\n  };\n  const completionHandler = () => {\n    if (didFinishAnimations(animationPhaseX, animationPhaseY)) {\n      onComplete();\n    }\n  };\n  if (velocity.x) {\n    animationPhaseX = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.x],\n        velocity: -velocity.x,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.x = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseX !== 1 /* Running */) {\n            throw Error(\"animation x should be running when completing\");\n          }\n          animationPhaseX = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (velocity.y) {\n    animationPhaseY = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.y],\n        velocity: -velocity.y,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.y = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseY !== 1 /* Running */) {\n            throw Error(\"animation y should be running when completing\");\n          }\n          animationPhaseY = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (!isRunningAnimation(animationPhaseX, animationPhaseY)) {\n    completionHandler();\n  }\n  return {\n    stop: () => {\n      if (!isRunningAnimation(animationPhaseX, animationPhaseY)) return;\n      animations2.forEach((animation) => animation.stop());\n      animationPhaseX = animationPhaseX === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseX;\n      animationPhaseY = animationPhaseY === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseY;\n      onStop();\n    }\n  };\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nvar scrollThreshold = 3;\nvar isTouchDevice = /* @__PURE__ */ isTouch();\nvar isSafariBrowser = /* @__PURE__ */ isSafari();\nfunction getTouchAction(element) {\n  if (!(element instanceof HTMLElement)) return null;\n  return element.style.touchAction;\n}\nfunction canPanInDirection(element, direction) {\n  switch (direction) {\n    case \"horizontal\":\n      return getTouchAction(element) === \"pan-x\";\n    case \"vertical\":\n      return getTouchAction(element) === \"pan-y\";\n    default:\n      return false;\n  }\n}\nfunction isInteractiveElement(element) {\n  const tag = element.tagName.toLowerCase();\n  if (tag === \"input\") return true;\n  if (tag === \"text\") return true;\n  if (tag === \"textarea\") return true;\n  return false;\n}\nfunction canStartScrollFromElement(element, direction) {\n  if (!(element instanceof Element)) return false;\n  if (isInteractiveElement(element)) return false;\n  if (element.hasAttribute(\"draggable\")) {\n    if (!canPanInDirection(element, direction)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getEventPoint(event) {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n}\nfunction setPointerEvents(element, value) {\n  if (element == null ? void 0 : element.style) {\n    element.style[\"pointerEvents\"] = value;\n  }\n}\nfunction getPointerEvents(element) {\n  var _a;\n  return (_a = element == null ? void 0 : element.style) == null ? void 0 : _a[\"pointerEvents\"];\n}\nvar emptyObject = /* @__PURE__ */ Object.freeze({});\nfunction useEmulateTouchScroll(ref, direction, enabled) {\n  if (isTouchDevice) return emptyObject;\n  if (RenderTarget.current() !== RenderTarget.preview) return emptyObject;\n  const scrollAnimationControlsRef = React41.useRef(null);\n  useEffect14(() => {\n    if (!ref.current) return;\n    const element = ref.current;\n    let phase = 0 /* Idle */;\n    let targets = null;\n    let downPoint = null;\n    let scrollOffsetStart = null;\n    let mouseMoveEvents = [];\n    function onMouseMove(event) {\n      var _a;\n      switch (phase) {\n        case 0 /* Idle */:\n        case 4 /* DragAnimation */:\n        case 3 /* DragLocked */:\n          return;\n      }\n      if (event.metaKey) return;\n      const point = getEventPoint(event);\n      if (!downPoint) return;\n      const offset = Point.subtract(point, downPoint);\n      if (phase === 1 /* TouchDown */ || phase === 5 /* Interrupted */) {\n        const deltaX = Math.abs(offset.x);\n        const deltaY = Math.abs(offset.y);\n        if ((deltaX > scrollThreshold || deltaY > scrollThreshold) && deltaX !== deltaY) {\n          const scrollDirection = deltaX > deltaY ? \"horizontal\" : \"vertical\";\n          const shouldIgnoreBecauseOfDirectionLock = direction === \"horizontal\" && scrollDirection === \"vertical\" || direction === \"vertical\" && scrollDirection === \"horizontal\";\n          if (shouldIgnoreBecauseOfDirectionLock) {\n            phase = 3 /* DragLocked */;\n            return;\n          }\n          phase = 2 /* Drag */;\n          targets == null ? void 0 : targets.forEach(([target]) => setPointerEvents(target, \"none\"));\n        }\n      }\n      if (isSafariBrowser) event.preventDefault();\n      if (phase !== 2 /* Drag */) return;\n      (_a = safeWindow.getSelection()) == null ? void 0 : _a.empty();\n      mouseMoveEvents = getRecentEvents([...mouseMoveEvents, event]);\n      if (scrollOffsetStart) {\n        if (direction !== \"vertical\") element.scrollLeft = scrollOffsetStart.x - offset.x;\n        if (direction !== \"horizontal\") element.scrollTop = scrollOffsetStart.y - offset.y;\n      }\n    }\n    function onMouseUp(event) {\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove, false);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      if (phase === 2 /* Drag */ && targets) {\n        targets.forEach(\n          ([target, originalPointerEventsValue]) => setPointerEvents(target, originalPointerEventsValue || \"auto\")\n        );\n      }\n      targets = null;\n      const velocity = calculateVelocity({ mouseMoveEvents, mouseUpEvent: event });\n      downPoint = null;\n      if (phase === 2 /* Drag */) {\n        const shouldAnimateY = direction !== \"horizontal\" && velocity.y !== 0;\n        const shouldAnimateX = direction !== \"vertical\" && velocity.x !== 0;\n        if (!shouldAnimateY && !shouldAnimateX) {\n          phase = 0 /* Idle */;\n          return;\n        }\n        phase = 4 /* DragAnimation */;\n        scrollAnimationControlsRef.current = animatePointWithInertia({\n          from: { x: element.scrollLeft, y: element.scrollTop },\n          velocity: {\n            x: shouldAnimateX ? velocity.x : 0,\n            y: shouldAnimateY ? velocity.y : 0\n          },\n          onUpdate: (position) => {\n            if (shouldAnimateX) element.scrollLeft = position.x;\n            if (shouldAnimateY) element.scrollTop = position.y;\n          },\n          onStop: () => {\n            if (phase !== 5 /* Interrupted */) {\n              phase = 0 /* Idle */;\n            }\n            scrollAnimationControlsRef.current = null;\n          },\n          onComplete: () => {\n            if (phase !== 4 /* DragAnimation */) {\n              throw Error(\"On animation completion we should still be in the animation phase\");\n            }\n            phase = 0 /* Idle */;\n            scrollAnimationControlsRef.current = null;\n          }\n        });\n      } else {\n        phase = 0 /* Idle */;\n      }\n    }\n    function onMouseWheel() {\n      var _a;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    }\n    function onMouseDown(event) {\n      var _a;\n      if (!enabled) return;\n      if (event.metaKey) return;\n      if (!canStartScrollFromElement(event.target, direction)) {\n        if (phase === 4 /* DragAnimation */) {\n          phase = 0 /* Idle */;\n          (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n        }\n        return;\n      }\n      const previousPhase = phase;\n      phase = previousPhase === 4 /* DragAnimation */ ? 5 /* Interrupted */ : 1 /* TouchDown */;\n      downPoint = getEventPoint(event);\n      targets = document.elementsFromPoint(downPoint.x, downPoint.y).filter(\n        (targetEl) => targetEl instanceof HTMLElement || targetEl instanceof SVGElement\n      ).map((targetEl) => [targetEl, getPointerEvents(targetEl)]);\n      scrollOffsetStart = { x: element.scrollLeft, y: element.scrollTop };\n      mouseMoveEvents = [];\n      if (scrollAnimationControlsRef.current) {\n        if (previousPhase !== 4 /* DragAnimation */) {\n          throw Error(\"When stopping a drag animation we need to be animating\");\n        }\n        scrollAnimationControlsRef.current.stop();\n      }\n      safeWindow.addEventListener(\"mousemove\", onMouseMove);\n      safeWindow.addEventListener(\"mouseup\", onMouseUp);\n      element.addEventListener(\"mousewheel\", onMouseWheel);\n    }\n    element.addEventListener(\"mousedown\", onMouseDown);\n    return () => {\n      var _a;\n      element.removeEventListener(\"mousedown\", onMouseDown);\n      element.removeEventListener(\"mousewheel\", onMouseWheel);\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      phase = 5 /* Interrupted */;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    };\n  }, [ref, direction, enabled]);\n  return React41.useMemo(() => {\n    return {\n      cancelEmulatedTouchScrollAnimation: () => {\n        var _a;\n        (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n      }\n    };\n  }, []);\n}\nvar timeDelta = /* @__PURE__ */ (() => 4 / 60 * 1e3)();\nfunction getRecentEvents(events) {\n  const currentTime = new CustomEvent(\"getTime\").timeStamp;\n  const maxAge = currentTime - timeDelta;\n  return events.filter((event) => event.timeStamp > maxAge);\n}\nvar zeroPoint = { x: 0, y: 0 };\nfunction calculateVelocity({\n  mouseMoveEvents,\n  mouseUpEvent\n}) {\n  const recentMouseMoveEvents = getRecentEvents(mouseMoveEvents);\n  const oldestMouseMoveEvent = recentMouseMoveEvents[0];\n  if (!oldestMouseMoveEvent) return zeroPoint;\n  const deltaX = mouseUpEvent.clientX - oldestMouseMoveEvent.clientX;\n  const deltaY = mouseUpEvent.clientY - oldestMouseMoveEvent.clientY;\n  const time2 = mouseUpEvent.timeStamp - oldestMouseMoveEvent.timeStamp;\n  if (time2 === 0) return zeroPoint;\n  return {\n    x: deltaX / time2 * 1e3,\n    y: deltaY / time2 * 1e3\n  };\n}\n\n// ../../library/src/components/utils/useUpdateScrollOffset.ts\nfunction useUpdateScrollOffset(ref, side, offset, cancelEmulatedTouchScrollAnimation) {\n  useIsomorphicLayoutEffect2(() => {\n    if (isMotionValue2(offset)) {\n      const updateScrollLeft = () => {\n        cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n        const element = ref.current;\n        if (element) element[side] = Math.abs(offset.get());\n      };\n      updateScrollLeft();\n      return offset.on(\"change\", updateScrollLeft);\n    } else if (isFiniteNumber(offset)) {\n      const element = ref.current;\n      if (!element) return;\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element[side] = Math.abs(offset);\n    }\n  }, [offset]);\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport { jsx as jsx35, jsxs as jsxs11 } from \"react/jsx-runtime\";\nvar NativeScroll = /* @__PURE__ */ React42.forwardRef(function NativeScroll2(props, forwardedRef) {\n  const {\n    direction = \"vertical\",\n    scrollBarVisible = false,\n    dragEnabled = true,\n    contentOffsetX = 0,\n    contentOffsetY = 0,\n    contentWidth: _contentWidth,\n    contentHeight: _contentHeight,\n    children,\n    resetOffset,\n    onScroll,\n    className: className2,\n    // Not (yet) supported\n    directionLock: _directionLock = false,\n    wheelEnabled: _wheelEnabled = true,\n    scrollAnimate: _scrollAnimate,\n    dragTransition: _dragTransition,\n    dragMomentum: _dragMomentum,\n    dragElastic: _dragElastic,\n    overdragEnabled: _overdragEnabled = true,\n    onScrollStart: _onScrollStart,\n    onScrollEnd: _onScrollEnd,\n    onDragStart: _onDragStart,\n    onDrag: _onDrag,\n    onDragEnd: _onDragEnd,\n    onUpdate: _onUpdate,\n    onDirectionLock: _onDirectionLock,\n    layoutId: specificLayoutId,\n    native: _native,\n    // Rest\n    ...containerProps\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n  const fallbackRef = React42.useRef(null);\n  const ref = forwardedRef || fallbackRef;\n  const { cancelEmulatedTouchScrollAnimation } = useEmulateTouchScroll(ref, direction, dragEnabled);\n  useInsertionEffect4(() => {\n    injectComponentCSSRules();\n  }, []);\n  const isInTarget = useIsInCurrentNavigationTarget();\n  const previousIsInTargetRef = React42.useRef(isInTarget);\n  const updateScrollOffsetHandler = () => {\n    if (!resetOffset) return;\n    const previousIsTarget = previousIsInTargetRef.current;\n    previousIsInTargetRef.current = isInTarget;\n    const shouldResetOffset = isInTarget && !previousIsTarget;\n    if (!shouldResetOffset) return;\n    const element = ref.current;\n    if (!element) return;\n    if (direction !== \"vertical\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollLeft = Math.abs(isMotionValue2(contentOffsetX) ? contentOffsetX.get() : contentOffsetX);\n    }\n    if (direction !== \"horizontal\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollTop = Math.abs(isMotionValue2(contentOffsetY) ? contentOffsetY.get() : contentOffsetY);\n    }\n  };\n  useIsomorphicLayoutEffect2(updateScrollOffsetHandler, [isInTarget]);\n  useUpdateScrollOffset(ref, \"scrollLeft\", contentOffsetX, cancelEmulatedTouchScrollAnimation);\n  useUpdateScrollOffset(ref, \"scrollTop\", contentOffsetY, cancelEmulatedTouchScrollAnimation);\n  const size = !containerProps.__fromCanvasComponent ? {\n    width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n    height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n  } : {};\n  return /* @__PURE__ */ jsxs11(\n    FrameWithMotion,\n    {\n      ref,\n      \"data-framer-component-type\": \"NativeScroll\",\n      background: \"none\",\n      ...containerProps,\n      ...size,\n      onScroll,\n      layoutId,\n      onBeforeLayoutMeasure: updateScrollOffsetHandler,\n      layoutScroll: true,\n      className: cx(className2, `direction-${direction}`, !scrollBarVisible && \"scrollbar-hidden\"),\n      children: [\n        /* @__PURE__ */ jsx35(\n          EmptyState,\n          {\n            children,\n            size: {\n              width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n              height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n            },\n            insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n            title: \"Scroll\",\n            description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n          }\n        ),\n        children\n      ]\n    }\n  );\n});\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport { jsx as jsx36 } from \"react/jsx-runtime\";\nvar Scroll = /* @__PURE__ */ (() => {\n  const ScrollInner = React43.forwardRef(function ScrollInner2(props, forwardedRef) {\n    if (props.native) {\n      return /* @__PURE__ */ jsx36(NativeScroll, { ref: forwardedRef, ...props });\n    } else {\n      return /* @__PURE__ */ jsx36(EmulatedScroll, { ref: forwardedRef, ...props });\n    }\n  });\n  ScrollInner.defaultProps = {\n    directionLock: false\n  };\n  addPropertyControls(ScrollInner, {\n    native: {\n      type: \"boolean\" /* Boolean */,\n      defaultValue: false\n    },\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      title: \"Direction\",\n      options: [\"vertical\", \"horizontal\", \"both\"],\n      defaultValue: \"vertical\"\n    },\n    contentOffsetX: {\n      type: \"number\" /* Number */,\n      title: \"Offset X\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"vertical\"\n    },\n    contentOffsetY: {\n      type: \"number\" /* Number */,\n      title: \"Offset Y\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"horizontal\"\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    overdragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Overdrag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    scrollBarVisible: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Scroll Bar\",\n      enabledTitle: \"Visible\",\n      disabledTitle: \"Hidden\",\n      defaultValue: false,\n      hidden: ({ native }) => native === false\n    },\n    resetOffset: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Reset\",\n      defaultValue: false\n    }\n  });\n  ScrollInner.supportsConstraints = true;\n  return ScrollInner;\n})();\n\n// ../../library/src/components/useNavigation.ts\nimport { useContext as useContext11 } from \"react\";\nfunction useNavigation() {\n  return useContext11(NavigationContext);\n}\n\n// ../../library/src/data/Data.ts\nvar data = /* @__PURE__ */ (() => {\n  function Data2(initial = {}) {\n    const _data = ObservableObject(initial, false, false);\n    Data2.addData(_data);\n    return _data;\n  }\n  Data2._stores = [];\n  Data2.addData = (_data) => {\n    Data2._stores.push(_data);\n  };\n  Data2.reset = () => {\n    Data2._stores.forEach((target) => ObservableObject.resetObject(target));\n  };\n  Data2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return Data2;\n})();\nvar Data = data;\n\n// ../../library/src/data/PropertyStore.ts\nvar PropertyStore = /* @__PURE__ */ (() => {\n  function PropertyStore2(initial = {}, makeAnimatables = false) {\n    deprecationWarning(\"PropertyStore\", \"1.0.0\", \"Data() or ObservableObject()\");\n    return ObservableObject(initial, makeAnimatables);\n  }\n  PropertyStore2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return PropertyStore2;\n})();\n\n// ../../library/src/data/useData/index.ts\nimport { createContext as createContext4, useContext as useContext12, useEffect as useEffect15, useMemo as useMemo7, useState as useState3 } from \"react\";\n\n// ../../library/src/data/useData/store.ts\nfunction bindActionsToStore(get, set, actions) {\n  const boundActions = {};\n  for (const key7 in actions) {\n    const action = actions[key7];\n    if (!action) continue;\n    boundActions[key7] = (data2) => set(action(get(), data2));\n  }\n  return boundActions;\n}\nfunction createStore(initialState2, unboundActions) {\n  let state = initialState2;\n  let version2 = 0;\n  const subscribers = /* @__PURE__ */ new Set();\n  const notifySubscriber = (sub) => sub(version2);\n  const get = () => state;\n  const set = (latestState) => {\n    version2++;\n    state = latestState;\n    subscribers.forEach(notifySubscriber);\n  };\n  const actions = unboundActions ? bindActionsToStore(get, set, unboundActions) : set;\n  return {\n    get,\n    set,\n    getVersion: () => version2,\n    getActions: () => actions,\n    subscribe: (sub) => {\n      subscribers.add(sub);\n      return () => subscribers.delete(sub);\n    }\n  };\n}\n\n// ../../library/src/data/useData/index.ts\nvar defaultId = /* @__PURE__ */ Symbol(\"default\");\nvar DataContext = /* @__PURE__ */ createContext4(defaultId);\nfunction createData(defaultState2, actions) {\n  const stores = /* @__PURE__ */ new Map();\n  const useData = (id, initialState2) => {\n    const contextId = useContext12(DataContext);\n    id = id || contextId;\n    const store = useMemo7(() => {\n      if (!stores.has(id)) {\n        stores.set(id, createStore(initialState2 || defaultState2, actions));\n      }\n      return stores.get(id);\n    }, [id]);\n    const [, notifyUpdates] = useState3(store.getVersion());\n    const storeValueAtHookCallTime = useMemo7(() => store.get(), [store]);\n    useEffect15(() => {\n      const unsubscribe = store.subscribe(notifyUpdates);\n      if (storeValueAtHookCallTime !== store.get()) {\n        notifyUpdates(store.getVersion());\n      }\n      return unsubscribe;\n    }, [store, storeValueAtHookCallTime]);\n    return [store.get(), store.getActions()];\n  };\n  return useData;\n}\n\n// ../../library/src/deprecated/DataObserver.tsx\nimport React44, { Component as Component10 } from \"react\";\nimport { jsx as jsx37 } from \"react/jsx-runtime\";\nvar initialState = { update: 0 };\nvar DataObserverContext = /* @__PURE__ */ React44.createContext({ update: NaN });\nfunction useObserveData() {\n  const context = React44.useContext(DataObserverContext);\n  return !Number.isNaN(context.update);\n}\nvar DataObserver = class extends Component10 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"observers\", []);\n    __publicField(this, \"state\", initialState);\n    __publicField(this, \"taskAdded\", false);\n    __publicField(this, \"frameTask\", () => {\n      this.setState({ update: this.state.update + 1 });\n      this.taskAdded = false;\n    });\n    __publicField(this, \"observer\", () => {\n      if (this.taskAdded) return;\n      this.taskAdded = true;\n      MainLoop.addFrameTask(this.frameTask);\n    });\n  }\n  componentWillUnmount() {\n    this.observers.map((cancel) => cancel());\n    Data.reset();\n  }\n  render() {\n    const { children } = this.props;\n    this.observers.map((cancel) => cancel());\n    this.observers = [];\n    Data._stores.forEach((d) => {\n      const observer = Data.addObserver(d, this.observer);\n      this.observers.push(observer);\n    });\n    return /* @__PURE__ */ jsx37(DataObserverContext.Provider, { value: { ...this.state }, children });\n  }\n};\n\n// ../../library/src/deprecated/WithOverride.tsx\nvar import_hoist_non_react_statics4 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport { useContext as useContext13 } from \"react\";\n\n// ../../library/src/deprecated/convertColorProps.ts\nfunction convertColorObject(prop) {\n  if (typeof prop === \"string\" || isMotionValue2(prop)) {\n    return prop;\n  } else if (LinearGradient.isLinearGradient(prop)) {\n    return LinearGradient.toCSS(prop);\n  } else if (RadialGradient.isRadialGradient(prop)) {\n    return RadialGradient.toCSS(prop);\n  } else if (Color.isColorObject(prop)) {\n    return Color.toRgbString(prop);\n  }\n  return prop;\n}\nfunction convertColorProps(props) {\n  if (props.background || props.color) {\n    const converted = Object.assign({}, props);\n    if (props.background) {\n      converted.background = convertColorObject(props.background);\n    }\n    if (props.color) {\n      converted.color = convertColorObject(props.color);\n    }\n    return converted;\n  }\n  return props;\n}\n\n// ../../library/src/deprecated/WithOverride.tsx\nimport { jsx as jsx38 } from \"react/jsx-runtime\";\nfunction WithOverride(Component17, override) {\n  const useOverride = typeof override === \"function\" ? (props) => override(convertColorProps(props)) : () => convertColorProps(override);\n  const ComponentWithOverride = function(props) {\n    useContext13(DataObserverContext);\n    const overrideProps = useOverride(props);\n    const { style, ...rest } = props;\n    return /* @__PURE__ */ jsx38(Component17, { ...rest, ...overrideProps, _initialStyle: style });\n  };\n  (0, import_hoist_non_react_statics4.default)(ComponentWithOverride, Component17);\n  ComponentWithOverride[\"displayName\"] = `WithOverride(${Component17.displayName || Component17.name})`;\n  return ComponentWithOverride;\n}\n\n// ../../library/src/modules/withFX.tsx\nimport React57 from \"react\";\n\n// ../../library/src/modules/hocOptions.ts\nvar prefix = \"__framer__\";\nvar prefixLength = /* @__PURE__ */ (() => prefix.length)();\nfunction extractPrefixedProps(props, keys3) {\n  const result = {};\n  const rest = {};\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey && keys3.has(strippedKey)) {\n      result[strippedKey] = props[key7];\n      continue;\n    }\n    rest[key7] = props[key7];\n  }\n  return [result, rest];\n}\nfunction stripPrefixFromPrefixedKey(key7) {\n  if (key7.startsWith(prefix)) {\n    return key7.substr(prefixLength);\n  }\n  return void 0;\n}\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport React51 from \"react\";\n\n// ../../library/src/modules/GeneratedComponentContext.ts\nimport React45 from \"react\";\nvar GeneratedComponentContext = /* @__PURE__ */ React45.createContext(\n  void 0\n);\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport React50 from \"react\";\n\n// ../../library/src/components/utils/cloneChildrenWithProps.tsx\nimport * as React46 from \"react\";\nimport { Fragment as Fragment6, jsx as jsx39 } from \"react/jsx-runtime\";\nfunction cloneChildrenWithProps(children, props, asNode) {\n  const cloned = React46.Children.map(children, (child) => {\n    if (React46.isValidElement(child)) {\n      return React46.cloneElement(child, props);\n    }\n    return child;\n  });\n  if (asNode) return cloned;\n  return /* @__PURE__ */ jsx39(Fragment6, { children: cloned });\n}\n\n// ../../library/src/components/utils/useCloneChildrenWithPropsAndRef.tsx\nimport * as React47 from \"react\";\nimport { Fragment as Fragment7, jsx as jsx40 } from \"react/jsx-runtime\";\nfunction useCloneChildrenWithPropsAndRef(forwardedRef) {\n  const hook = useConstant(() => createHook(forwardedRef));\n  hook.useSetup(forwardedRef);\n  return hook.cloneAsElement;\n}\nfunction createHook(forwardedRef) {\n  const state = {\n    forwardedRef,\n    childRef: null,\n    ref: null\n  };\n  state.ref = createRefFunction(state);\n  const updateIfNeeded = (nextForwardedRef, ref) => {\n    if (!state.forwardedRef && state.forwardedRef === nextForwardedRef) {\n      state.ref = ref;\n      return;\n    }\n    let shouldUpdate = false;\n    if (state.childRef !== ref) {\n      state.childRef = ref;\n      shouldUpdate = true;\n    }\n    if (state.forwardedRef !== nextForwardedRef) {\n      state.forwardedRef = nextForwardedRef;\n      shouldUpdate = true;\n    }\n    if (!shouldUpdate) return;\n    state.ref = createRefFunction(state);\n  };\n  let preventNextCall = false;\n  function cloneChildrenWithPropsAndRef(children, props) {\n    if (preventNextCall) {\n      throw new ReferenceError(\n        \"useCloneChildrenWithPropsAndRef: You should not call cloneChildrenWithPropsAndRef more than once during the render cycle.\"\n      );\n    }\n    preventNextCall = true;\n    if (React47.Children.count(children) > 1 && forwardedRef) {\n      if (false) {\n        throw new ReferenceError(\n          \"useCloneChildrenWithPropsAndRef: You should not have more than one child when using a forwarded ref.\"\n        );\n      }\n      state.forwardedRef = void 0;\n      state.ref = state.childRef;\n    }\n    return React47.Children.map(children, (child) => {\n      if (React47.isValidElement(child)) {\n        const ownRef = \"ref\" in child ? child.ref : void 0;\n        updateIfNeeded(state.forwardedRef, ownRef);\n        const newProps = isFunction(props) ? props(child.props) : props;\n        return React47.cloneElement(child, state.ref !== ownRef ? { ...newProps, ref: state.ref } : newProps);\n      }\n      return child;\n    });\n  }\n  const cloneAsElement = function cloneAsElement2(children, props) {\n    return /* @__PURE__ */ jsx40(Fragment7, { children: cloneChildrenWithPropsAndRef(children, props) });\n  };\n  cloneAsElement.cloneAsArray = cloneChildrenWithPropsAndRef;\n  return {\n    // used during render phase to sync props with state\n    useSetup: (newRef) => {\n      preventNextCall = false;\n      updateIfNeeded(newRef, state.childRef);\n    },\n    /**\n     * Clones children and adds props and refs and returns them as a JSX.Element\n     * Making it easier to use as it wraps them in a Fragment.\n     * */\n    cloneAsElement\n  };\n}\nfunction createRefFunction(state) {\n  if (!state.forwardedRef) return state.childRef;\n  const { forwardedRef: prevForwardedRef, childRef: prevChildRef } = state;\n  return (value) => {\n    setRef(prevChildRef, value);\n    setRef(prevForwardedRef, value);\n  };\n}\n\n// ../../library/src/modules/withCSS.tsx\nimport React49, { useInsertionEffect as useInsertionEffect5 } from \"react\";\n\n// ../../library/src/render/StyleSheetContext.ts\nimport React48 from \"react\";\nvar StyleSheetContext = /* @__PURE__ */ React48.createContext(void 0);\n\n// ../../library/src/modules/withCSS.tsx\nimport { Fragment as Fragment8, jsx as jsx41, jsxs as jsxs12 } from \"react/jsx-runtime\";\nvar framerPostSSRCSSSelector = \"style[data-framer-css-ssr-minified]\";\nvar componentsWithServerRenderedStyles = /* @__PURE__ */ (() => {\n  var _a;\n  if (!isBrowser2()) return /* @__PURE__ */ new Set();\n  const componentsWithSSRStylesAttr = (_a = document.querySelector(framerPostSSRCSSSelector)) == null ? void 0 : _a.getAttribute(\"data-framer-components\");\n  if (!componentsWithSSRStylesAttr) return /* @__PURE__ */ new Set();\n  return new Set(componentsWithSSRStylesAttr.split(\" \"));\n})();\nvar framerCSSMarker = \"data-framer-css-ssr\";\nvar withCSS = (Component17, escapedCSS, componentSerializationId) => React49.forwardRef((props, ref) => {\n  const { cssCollector: cssCollectorEnabled } = useLibraryFeatures();\n  const { sheet, cache: cache2 } = React49.useContext(StyleSheetContext) ?? {};\n  const id = componentSerializationId;\n  if (!isBrowser2()) {\n    if (isFunction(escapedCSS)) escapedCSS = escapedCSS(RenderTarget.current());\n    const concatenatedCSS = Array.isArray(escapedCSS) ? escapedCSS.join(\"\\n\") : escapedCSS;\n    if (cssCollectorEnabled) {\n      cssCollector.add(concatenatedCSS, id);\n    } else {\n      return /* @__PURE__ */ jsxs12(Fragment8, { children: [\n        /* @__PURE__ */ jsx41(\n          \"style\",\n          {\n            ...{ [framerCSSMarker]: true },\n            \"data-framer-component\": id,\n            dangerouslySetInnerHTML: { __html: concatenatedCSS }\n          }\n        ),\n        /* @__PURE__ */ jsx41(Component17, { ...props, ref })\n      ] });\n    }\n  }\n  useInsertionEffect5(() => {\n    if (id && componentsWithServerRenderedStyles.has(id)) return;\n    const css2 = isFunction(escapedCSS) ? escapedCSS(RenderTarget.current()) : Array.isArray(escapedCSS) ? escapedCSS : escapedCSS.split(\"\\n\");\n    css2.forEach((rule) => rule && injectCSSRule(rule, sheet, cache2));\n  }, []);\n  return /* @__PURE__ */ jsx41(Component17, { ...props, ref });\n});\nvar CSSCollector = class {\n  constructor() {\n    __publicField(this, \"styles\", /* @__PURE__ */ new Set());\n    __publicField(this, \"componentIds\", /* @__PURE__ */ new Set());\n  }\n  add(css2, componentId) {\n    this.styles.add(css2);\n    if (componentId) this.componentIds.add(componentId);\n  }\n  getStyles() {\n    return this.styles;\n  }\n  getComponentIds() {\n    return this.componentIds;\n  }\n  clear() {\n    this.styles.clear();\n    this.componentIds.clear();\n  }\n};\nvar cssCollector = /* @__PURE__ */ new CSSCollector();\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport { jsx as jsx42 } from \"react/jsx-runtime\";\nvar SSRParentVariantsContext = /* @__PURE__ */ React50.createContext(void 0);\nvar SSRVariantClassName = \"ssr-variant\";\nfunction renderBranchedChildrenFromPropertyOverrides(overrides, children, props, variantClassNames, primaryVariantId, parentVariants, cloneChildren, activeVariantId) {\n  const childrenArray = React50.Children.toArray(children);\n  const child = childrenArray[0];\n  if (childrenArray.length !== 1 || !React50.isValidElement(child)) {\n    console.warn(\"PropertyOverrides: expected exactly one React element for a child\", children);\n    return cloneChildren(children, props);\n  }\n  const branches = [];\n  const nonOverriddenVariants = [];\n  for (const [variantId] of Object.entries(variantClassNames)) {\n    if (variantId === primaryVariantId) continue;\n    const propOverrides = overrides[variantId];\n    if (!propOverrides || !arePropOverridesEffectivelyDifferent(child.props, propOverrides)) {\n      nonOverriddenVariants.push(variantId);\n      continue;\n    }\n    const effectiveVariants = intersection([variantId], parentVariants);\n    if (effectiveVariants.length) branches.push({ variants: effectiveVariants, propOverrides });\n  }\n  if (branches.length === 0) return cloneChildren(child, props);\n  const remainingVariants = [primaryVariantId, ...nonOverriddenVariants];\n  const effectiveRemainingVariants = intersection(remainingVariants, parentVariants);\n  if (effectiveRemainingVariants.length) branches.unshift({ variants: effectiveRemainingVariants });\n  const renderedBranches = [];\n  for (const { variants, propOverrides } of branches) {\n    if (activeVariantId && !variants.includes(activeVariantId)) {\n      continue;\n    }\n    const key7 = variants.join(\"+\");\n    let element = (\n      // We could omit the SSRParentVariantsContext if variants is the same as parentVariants, but that'd require\n      // comparing arrays, so it might not really be an optimization. And since it's just a context, it doesn't\n      // affect the size of the generated HTML.\n      /* @__PURE__ */ jsx42(SSRParentVariantsContext.Provider, { value: { primaryVariantId, variants: new Set(variants) }, children: cloneChildren(child, propOverrides ? { ...props, ...propOverrides } : props) }, key7)\n    );\n    const hiddenClassNames = generateHiddenClassNames(variants, parentVariants, variantClassNames);\n    if (hiddenClassNames.length) {\n      assert(branches.length > 1, \"Must branch out when there are hiddenClassNames\");\n      element = /* @__PURE__ */ jsx42(\"div\", { className: `${SSRVariantClassName} ${hiddenClassNames.join(\" \")}`, children: element }, key7);\n    } else {\n      assert(branches.length === 1, \"Cannot branch out when hiddenClassNames is empty\");\n    }\n    renderedBranches.push(element);\n  }\n  assert(\n    !activeVariantId || renderedBranches.length === 1,\n    \"Must render exactly one branch when activeVariantId is given\"\n  );\n  return renderedBranches;\n}\nvar SSRVariants = /* @__PURE__ */ React50.forwardRef(\n  function SSRVariants2({ id: _nodeId, children, ...props }, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    if (isBrowser2()) {\n      return cloneWithRefs(children, props);\n    }\n    throw new Error(\"SSRVariants is no longer supported outside canvas and preview\");\n  }\n);\nfunction variantHashFromClassName(className2) {\n  return className2.split(\"-\")[2];\n}\nfunction generateHiddenClassNames(showOnlyInVariantIds, parentVariants, variantClassNames) {\n  const classNames = [];\n  for (const [variantId, variantClassName] of Object.entries(variantClassNames)) {\n    const alreadyHiddenInParent = parentVariants && !parentVariants.has(variantId);\n    if (showOnlyInVariantIds.includes(variantId) || alreadyHiddenInParent) continue;\n    classNames.push(`hidden-${variantHashFromClassName(variantClassName)}`);\n  }\n  return classNames;\n}\nfunction intersection(variants, parentVariants) {\n  if (!parentVariants) return variants;\n  return variants.filter((variant) => parentVariants.has(variant));\n}\nfunction arePropOverridesEffectivelyDifferent(props, propOverrides) {\n  for (const key7 of Object.keys(propOverrides)) {\n    if (!isEqual(props[key7], propOverrides[key7], true)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction propsForBreakpoint(variant, props, overrides) {\n  if (!overrides || !variant) return props;\n  return { ...props, ...overrides[variant] };\n}\nvar noopSubscribe = () => () => {\n};\nvar returnTrue = () => true;\nvar returnFalse = () => false;\nvar PropertyOverridesWithoutCSS = /* @__PURE__ */ React50.forwardRef(\n  function PropertyOverrides(props, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    const ancestorCtx = React50.useContext(SSRParentVariantsContext);\n    const isHydrationOrSSR = React50.useSyncExternalStore(noopSubscribe, returnFalse, returnTrue);\n    const action = useConstant(() => {\n      if (isHydrationOrSSR) {\n        if (isBrowser2()) {\n          return 1 /* RenderActiveBranch */;\n        } else {\n          return 2 /* RenderAllBranches */;\n        }\n      } else {\n        return 0 /* PassThrough */;\n      }\n    });\n    const generatedComponentContext = React50.useContext(GeneratedComponentContext);\n    return useMemoOne(() => {\n      const { breakpoint, overrides, children, ...restProps } = props;\n      if (!generatedComponentContext) {\n        console.warn(\"PropertyOverrides is missing GeneratedComponentContext\");\n        return cloneWithRefs(children, restProps);\n      }\n      const { primaryVariantId, variantClassNames } = generatedComponentContext;\n      const parentVariants = (ancestorCtx == null ? void 0 : ancestorCtx.primaryVariantId) === primaryVariantId ? ancestorCtx == null ? void 0 : ancestorCtx.variants : void 0;\n      switch (action) {\n        case 0 /* PassThrough */:\n          return cloneWithRefs(children, propsForBreakpoint(breakpoint, restProps, overrides));\n        case 1 /* RenderActiveBranch */:\n          return renderBranchedChildrenFromPropertyOverrides(\n            overrides,\n            children,\n            restProps,\n            variantClassNames,\n            primaryVariantId,\n            parentVariants,\n            cloneWithRefs,\n            breakpoint\n            // only render the single, active branch\n          );\n        case 2 /* RenderAllBranches */:\n          return renderBranchedChildrenFromPropertyOverrides(\n            overrides,\n            children,\n            restProps,\n            variantClassNames,\n            primaryVariantId,\n            parentVariants,\n            // On the server, we use plain cloneChildrenWithProps instead of useCloneChildrenWithPropsAndRef,\n            // because we can't clone one ref to multiple branched-out elements (useCloneChildrenWithPropsAndRef\n            // even guards against it), but luckily, refs mean nothing on the server anyway.\n            cloneChildrenWithProps,\n            void 0\n            // render all branches\n          );\n        default:\n          assertNever(action);\n      }\n    }, [generatedComponentContext, ancestorCtx, cloneWithRefs, props]);\n  }\n);\nvar PropertyOverrides2 = /* @__PURE__ */ (() => withCSS(PropertyOverridesWithoutCSS, `.${SSRVariantClassName} { display: contents }`, \"PropertyOverrides\"))();\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport { jsx as jsx43 } from \"react/jsx-runtime\";\nvar defaultVariantKey = \"default\";\nvar defaultVariants = /* @__PURE__ */ new Set([defaultVariantKey]);\nvar _variantHashes;\nvar AnimationCollector = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n    __privateAdd(this, _variantHashes, {});\n  }\n  /** @deprecated */\n  set(nodeId, prop, value, variantHash) {\n    switch (prop) {\n      case \"transformTemplate\": {\n        assert(typeof value === \"string\", `transformTemplate must be a string, received: ${value}`);\n        this.setHash(nodeId, variantHash, { transformTemplate: value, legacy: true });\n        break;\n      }\n      case \"initial\":\n      case \"animate\": {\n        assert(typeof value === \"object\", `${prop} must be a valid object, received: ${value}`);\n        this.setHash(nodeId, variantHash, { [prop]: value, legacy: true });\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  setHash(id, variantHash = defaultVariantKey, value) {\n    const existing = this.entries.get(id) ?? {};\n    const existingValue = existing[variantHash] ?? {};\n    existing[variantHash] = value === null ? null : { ...existingValue, ...value };\n    this.entries.set(id, existing);\n  }\n  variantHash(variantId, info) {\n    if (variantId === (info == null ? void 0 : info.primaryVariantId)) return defaultVariantKey;\n    const existing = __privateGet(this, _variantHashes)[variantId];\n    if (existing) return existing;\n    const className2 = info == null ? void 0 : info.variantClassNames[variantId];\n    if (!className2) return defaultVariantKey;\n    return __privateGet(this, _variantHashes)[variantId] = variantHashFromClassName(className2);\n  }\n  setAll(id, variants = defaultVariants, props, info) {\n    var _a;\n    if (props === null) {\n      for (const variantId of variants) {\n        this.setHash(id, this.variantHash(variantId, info), null);\n      }\n      return;\n    }\n    const transformTemplate2 = isFunction(props.transformTemplate) ? (_a = props.transformTemplate) == null ? void 0 : _a.call(props, {}, framerAppearTransformTemplateToken) : void 0;\n    const initial = props.__framer__presenceInitial ?? props.initial;\n    const animate3 = props.__framer__presenceAnimate ?? props.animate;\n    const config = {\n      initial: isObject2(initial) ? initial : void 0,\n      animate: isObject2(animate3) ? animate3 : void 0,\n      transformTemplate: isString(transformTemplate2) ? transformTemplate2 : void 0\n    };\n    for (const variantId of variants) this.setHash(id, this.variantHash(variantId, info), config);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  toObject() {\n    return Object.fromEntries(this.entries);\n  }\n};\n_variantHashes = new WeakMap();\nvar framerAppearEffects = /* @__PURE__ */ new AnimationCollector();\nfunction withOptimizedAppearEffect(Component17) {\n  return React51.forwardRef(({ optimized, ...props }, ref) => {\n    var _a;\n    const generatedComponentContext = React51.useContext(GeneratedComponentContext);\n    const variants = (_a = React51.useContext(SSRParentVariantsContext)) == null ? void 0 : _a.variants;\n    const id = props[framerAppearIdKey];\n    if (id && !isBrowser2()) {\n      framerAppearEffects.setAll(\n        id,\n        variants,\n        // A layer may have an optimization id, and an `animate` prop,\n        // but not require optimization. For example in the case of a\n        // layer where one variant has an appear effect, and another\n        // variant has a scroll appear effect, the scroll appear effect\n        // should not be optimized.\n        optimized ? props : null,\n        generatedComponentContext\n      );\n    }\n    const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n    return /* @__PURE__ */ jsx43(Component17, { ref, ...props, ...disabledProps });\n  });\n}\nvar optimizeAppear = (prop, id, animateTargetAndTransition, variantHash) => {\n  if (!isBrowser2()) {\n    framerAppearEffects.set(id, prop, animateTargetAndTransition, variantHash);\n  }\n  return animateTargetAndTransition;\n};\nvar framerAppearTransformTemplateToken = \"__Appear_Animation_Transform__\";\nvar optimizeAppearTransformTemplate = (id, fn) => {\n  if (!isBrowser2()) {\n    const template = fn == null ? void 0 : fn({}, framerAppearTransformTemplateToken);\n    if (template === void 0) return fn;\n    framerAppearEffects.set(id, \"transformTemplate\", template);\n  }\n  return fn;\n};\nvar framerAppearIdKey = \"data-framer-appear-id\";\nvar framerAppearAnimationScriptKey = \"data-framer-appear-animation\";\nvar getDisabledFXPropsInStaticRenderer = (props) => {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (!isRenderingStaticContent) return void 0;\n  return {\n    animate: isVariantOrVariantList(props.animate) ? props.animate : void 0,\n    initial: isVariantOrVariantList(props.initial) ? props.initial : void 0,\n    exit: void 0\n  };\n};\nfunction isVariantOrVariantList(value) {\n  return isString(value) || Array.isArray(value);\n}\n\n// ../../library/src/modules/useFXValues.ts\nimport React52 from \"react\";\nvar effectValuesKeys = [\n  \"opacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"skewX\",\n  \"skewY\",\n  /** @deprecated */\n  \"transformPerspective\"\n];\nvar makeFXValues = (defaults) => {\n  return {\n    x: motionValue((defaults == null ? void 0 : defaults.x) ?? 0),\n    y: motionValue((defaults == null ? void 0 : defaults.y) ?? 0),\n    opacity: motionValue((defaults == null ? void 0 : defaults.opacity) ?? 1),\n    scale: motionValue((defaults == null ? void 0 : defaults.scale) ?? 1),\n    rotate: motionValue((defaults == null ? void 0 : defaults.rotate) ?? 0),\n    rotateX: motionValue((defaults == null ? void 0 : defaults.rotateX) ?? 0),\n    rotateY: motionValue((defaults == null ? void 0 : defaults.rotateY) ?? 0),\n    skewX: motionValue((defaults == null ? void 0 : defaults.skewX) ?? 0),\n    skewY: motionValue((defaults == null ? void 0 : defaults.skewY) ?? 0),\n    /** @deprecated */\n    transformPerspective: motionValue((defaults == null ? void 0 : defaults.transformPerspective) ?? 0)\n  };\n};\nvar defaultFXValues = {\n  x: 0,\n  y: 0,\n  scale: 1,\n  opacity: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  /** @deprecated */\n  transformPerspective: 0\n};\nfunction isFXValuesKey(key7) {\n  return key7 in defaultFXValues;\n}\nvar effectEnabledStyle = {\n  willChange: \"transform\"\n};\nObject.freeze(effectEnabledStyle);\nvar effectDisabledStyle = {};\nObject.freeze(effectDisabledStyle);\nfunction useFXValues(values, enabled) {\n  const effect = useConstant(() => ({ values: makeFXValues(enabled ? values : void 0) }));\n  React52.useEffect(() => {\n    if (enabled) return;\n    for (const key7 of effectValuesKeys) {\n      const value = defaultFXValues[key7];\n      if (isUndefined(value)) continue;\n      effect.values[key7].set(value);\n    }\n  }, [enabled]);\n  return effect;\n}\n\n// ../../library/src/modules/useLoopEffect.ts\nimport { startTransition as startTransition2, useCallback as useCallback10, useEffect as useEffect16, useMemo as useMemo8, useRef as useRef14, useState as useState4 } from \"react\";\nvar loopOptionsKeys = /* @__PURE__ */ new Set([\n  \"loopEffectEnabled\",\n  \"loopTransition\",\n  \"loop\",\n  \"loopRepeatType\",\n  \"loopRepeatDelay\",\n  \"loopPauseOffscreen\"\n]);\nvar useDelay = () => {\n  const timeoutRef = useRef14();\n  useEffect16(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  return async (d) => new Promise((resolve) => {\n    timeoutRef.current = setTimeout(() => {\n      resolve(true);\n    }, d * 1e3);\n  });\n};\nfunction useLoop({\n  loopEffectEnabled,\n  loopRepeatDelay,\n  loopTransition,\n  loopRepeatType,\n  loop,\n  loopPauseOffscreen\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const values = useConstant(makeFXValues);\n  const mirrorStateRef = useRef14(false);\n  const delay3 = useDelay();\n  const animationPromiseRef = useRef14(null);\n  const animateValues = useCallback10(async () => {\n    if (!loop) return;\n    const transition = loopTransition || void 0;\n    const mirror = mirrorStateRef.current && loopRepeatType === \"mirror\";\n    const to = mirror ? defaultFXValues : loop;\n    const from = mirror ? loop : defaultFXValues;\n    mirrorStateRef.current = !mirrorStateRef.current;\n    animationPromiseRef.current = Promise.all(\n      effectValuesKeys.map((key7) => {\n        if (shouldReduceMotion && key7 !== \"opacity\") return;\n        values[key7].jump(from[key7] ?? defaultFXValues[key7]);\n        return new Promise((resolve) => {\n          const opts = {\n            ...transition,\n            onComplete: () => resolve()\n          };\n          const target = to[key7] ?? from[key7];\n          if (typeof target === \"number\") {\n            animate(values[key7], target, opts);\n          }\n        });\n      })\n    );\n    return animationPromiseRef.current;\n  }, [loop, loopRepeatType, loopTransition, shouldReduceMotion]);\n  const [isRunning, setIsRunning] = useState4(false);\n  const shouldRunRef = useRef14(false);\n  const animateLoop = useCallback10(async () => {\n    if (!loopEffectEnabled || !shouldRunRef.current) return;\n    await animateValues();\n    await delay3(loopRepeatDelay ?? 0);\n    void animateLoop();\n  }, [animateValues, delay3, loopEffectEnabled, loopRepeatDelay]);\n  const start = useCallback10(() => {\n    if (shouldRunRef.current) return;\n    shouldRunRef.current = true;\n    startTransition2(() => setIsRunning(true));\n    void animateLoop();\n  }, [animateLoop]);\n  const stop = useCallback10((overrideRunRef = true) => {\n    effectValuesKeys.forEach((key7) => {\n      values[key7].stop();\n    });\n    effectValuesKeys.forEach((key7) => {\n      values[key7].set(defaultFXValues[key7]);\n    });\n    mirrorStateRef.current = false;\n    if (overrideRunRef) {\n      shouldRunRef.current = false;\n      startTransition2(() => setIsRunning(false));\n    }\n  }, []);\n  const hasLoop = loopEffectEnabled && loop;\n  const startStopTabVisibilityListener = useCallback10(() => {\n    if (document.hidden) {\n      stop(false);\n    } else if (shouldRunRef.current) {\n      shouldRunRef.current = false;\n      start();\n    }\n  }, [start, stop]);\n  useEffect16(() => {\n    if (!hasLoop) return;\n    document.addEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    return () => {\n      document.removeEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    };\n  }, [hasLoop, startStopTabVisibilityListener]);\n  useEffect16(() => {\n    if (hasLoop && loopPauseOffscreen) return;\n    if (hasLoop) {\n      start();\n    } else {\n      stop();\n    }\n  }, [start, stop, loopPauseOffscreen, hasLoop]);\n  useEffect16(() => {\n    return () => stop();\n  }, [stop]);\n  const isIntersectingRef = useRef14(false);\n  const stopAfterAnimationEnds = useCallback10(async () => {\n    if (!animationPromiseRef.current) return;\n    await animationPromiseRef.current;\n    if (isIntersectingRef.current) return;\n    stop();\n  }, [stop]);\n  const startAndStopBasedOnIntersection = useCallback10(\n    (entry) => {\n      if (entry.isIntersecting) {\n        isIntersectingRef.current = true;\n        start();\n      } else {\n        isIntersectingRef.current = false;\n        void stopAfterAnimationEnds();\n      }\n    },\n    [start, stopAfterAnimationEnds]\n  );\n  useSharedIntersectionObserver(ref, startAndStopBasedOnIntersection, {\n    enabled: hasLoop && loopPauseOffscreen\n  });\n  const addWillChange = isRunning || !loopPauseOffscreen;\n  return useMemo8(() => {\n    return {\n      values,\n      style: hasLoop && addWillChange ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [hasLoop, addWillChange]);\n}\n\n// ../../library/src/modules/useParallax.ts\nimport React53, { useContext as useContext14 } from \"react\";\n\n// ../../library/src/modules/parallaxTransform.ts\nfunction parallaxTransform(scrollY, originalPosition, speed, offset, adjustPosition) {\n  const speedFactor = speed / 100 - 1;\n  const initialPosition = adjustPosition ? (originalPosition - offset) * speedFactor : 0;\n  const scrollOffset = -scrollY * speedFactor;\n  return initialPosition + scrollOffset;\n}\n\n// ../../library/src/modules/useParallax.ts\nvar parallaxOptionsKeys = /* @__PURE__ */ new Set([\n  \"speed\",\n  \"adjustPosition\",\n  \"offset\",\n  \"parallaxTransformEnabled\"\n]);\nfunction useParallax(options, ref, visibilityStyle) {\n  const { speed = 100, offset = 0, adjustPosition = false, parallaxTransformEnabled } = options;\n  const originalPosition = React53.useRef(null);\n  const shouldReduceMotion = useReducedMotionConfig();\n  const transform2 = React53.useCallback(\n    (yValue) => {\n      if (originalPosition.current === null) return 0;\n      if (speed === 100) return 0;\n      return parallaxTransform(yValue, originalPosition.current, speed, offset, adjustPosition);\n    },\n    [speed, offset, adjustPosition]\n  );\n  const { scrollY } = useScroll();\n  const parallaxY = useTransform(scrollY, transform2);\n  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? \"hidden\" : visibilityStyle);\n  const defaultValue = useMotionValue(0);\n  const observers = useContext14(SharedIntersectionObserverContext);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (element === null || !parallaxTransformEnabled) return;\n      const unobserve = observeElement(observers, \"undefined\", element, null, (entry) => {\n        originalPosition.current = entry.boundingClientRect.top;\n        frame.update(() => {\n          parallaxY.set(transform2(scrollY.get()));\n          if (adjustPosition) {\n            visibility.set(visibilityStyle ?? \"initial\");\n          }\n        });\n        unobserve();\n      });\n      return unobserve;\n    },\n    [adjustPosition, parallaxTransformEnabled]\n  );\n  useOnRouteChange(() => {\n    if (!parallaxTransformEnabled) return;\n    parallaxY.set(0);\n  });\n  return {\n    values: {\n      y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY\n    },\n    style: parallaxTransformEnabled ? {\n      ...effectEnabledStyle,\n      visibility\n    } : effectDisabledStyle\n  };\n}\n\n// ../../library/src/modules/usePresenceAnimation.ts\nimport { useMemo as useMemo9, useRef as useRef15 } from \"react\";\nfunction getTransition(value) {\n  if (isString(value) || !isObject2(value)) return void 0;\n  return value == null ? void 0 : value.transition;\n}\nfunction runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId, instant) {\n  const transition = getTransition(target);\n  return Promise.all(\n    effectValuesKeys.map((key7) => {\n      return new Promise((resolve) => {\n        if (shouldReduceMotion && key7 !== \"opacity\") return resolve();\n        const motionValue2 = effect.values[key7];\n        motionValue2.stop();\n        let value = !isObject2(target) ? defaultFXValues[key7] : (target == null ? void 0 : target[key7]) ?? defaultFXValues[key7];\n        if (isMotionValue(value)) value = value.get();\n        if (!isNumber(value)) return resolve();\n        const visualElement = visualElementStore.get(ref.current);\n        if (visualElement) visualElement.setBaseTarget(key7, value);\n        let startTime;\n        if (isString(appearId) && !(motionValue2 == null ? void 0 : motionValue2.hasAnimated) && safeWindow.MotionHandoffAnimation) {\n          const handoffAnimationStartTime = safeWindow.MotionHandoffAnimation(appearId, key7, frame);\n          if (handoffAnimationStartTime) {\n            startTime = handoffAnimationStartTime;\n          }\n        }\n        if (instant) {\n          motionValue2.set(value);\n        } else {\n          animate(motionValue2, value, {\n            ...transition,\n            velocity: 0,\n            startTime,\n            onComplete: () => resolve()\n          });\n        }\n      });\n    })\n  );\n}\nvar presenceOptionsKeys = /* @__PURE__ */ new Set([\n  \"presenceInitial\",\n  \"presenceAnimate\",\n  \"presenceExit\"\n]);\nfunction usePresenceAnimation({\n  initial: motionInitial,\n  animate: motionAnimate,\n  exit: motionExit,\n  presenceInitial,\n  presenceAnimate,\n  presenceExit\n}, ref, enabled, style, appearId) {\n  const initial = presenceInitial ?? motionInitial;\n  const animateConfig = presenceAnimate ?? motionAnimate;\n  const exit = presenceExit ?? motionExit;\n  const [isPresent, safeToRemove] = usePresence();\n  const internalState = useRef15({\n    lastPresence: false,\n    lastAnimate: animateConfig,\n    hasMounted: false,\n    running: false\n  });\n  const effect = useConstant(() => {\n    const base = initial ?? style;\n    if (!isObject2(base)) return { values: makeFXValues() };\n    const defaults = {};\n    for (const key7 in base) {\n      const value = isObject2(base) ? base[key7] : void 0;\n      if (!isNumber(value)) continue;\n      defaults[key7] = value;\n    }\n    return { values: makeFXValues(defaults) };\n  });\n  useRefEffect(\n    ref,\n    (element) => {\n      const { hasMounted } = internalState.current;\n      if (hasMounted && animateConfig) return;\n      const visualElement = visualElementStore.get(element);\n      if (!visualElement) return;\n      Object.assign(internalState.current, { hasMounted: true });\n      for (const key7 in effect.values) {\n        if (!isFXValuesKey(key7)) continue;\n        const value = style == null ? void 0 : style[key7];\n        visualElement.setBaseTarget(key7, isNumber(value) ? value : defaultFXValues[key7]);\n      }\n    },\n    [animateConfig]\n  );\n  const shouldReduceMotion = useReducedMotionConfig();\n  useRefEffect(ref, (element) => {\n    if (!enabled) {\n      safeToRemove == null ? void 0 : safeToRemove();\n      return;\n    }\n    if (element === null) return;\n    if (isPresent !== internalState.current.lastPresence) {\n      Object.assign(internalState.current, { lastPresence: isPresent });\n      if (isPresent) {\n        if (initial && animateConfig) {\n          Object.assign(internalState.current, { running: true });\n          void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId).then(\n            () => Object.assign(internalState.current, { running: false })\n          );\n        }\n      } else if (exit) {\n        Object.assign(internalState.current, { running: true });\n        void runEffectAnimation(exit, effect, shouldReduceMotion, ref, appearId).then(() => Object.assign(internalState.current, { running: false })).then(() => safeToRemove());\n      } else {\n        safeToRemove();\n      }\n      return;\n    }\n    const { lastAnimate, running } = internalState.current;\n    const hasAnimateChanged = !isEqual(animateConfig, lastAnimate);\n    if (!hasAnimateChanged || !animateConfig) return;\n    Object.assign(internalState.current, { lastAnimate: animateConfig });\n    void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId, !running).then(\n      () => Object.assign(internalState.current, { running: false })\n    );\n  });\n  const effectEnabled = enabled && animateConfig;\n  return useMemo9(() => {\n    return { values: effect.values, style: effectEnabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [effectEnabled]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nimport React55, { useMemo as useMemo10 } from \"react\";\n\n// ../../library/src/modules/calculateOffsetTop.ts\nfunction calcOffsetTop(element, container) {\n  let top = 0;\n  let current = element;\n  while (current && current !== container) {\n    if (!(current instanceof HTMLElement)) break;\n    top += current.offsetTop;\n    current = current.offsetParent;\n  }\n  return top;\n}\n\n// ../../library/src/modules/createTransformInputRange.ts\nvar scrollObserverOffset = 1;\nfunction createTransformInputRange(transformTargets, threshold = 0, callback) {\n  var _a;\n  const starts = [];\n  const inputRange = [];\n  for (let index = transformTargets.length; index >= 0; index--) {\n    const { ref: targetRef, offset } = transformTargets[index] ?? {};\n    if (!targetRef || !targetRef.current) continue;\n    const offsetTop = calcOffsetTop(targetRef.current, document.documentElement);\n    const top = offsetTop - scrollObserverOffset - (offset ?? 0) - threshold;\n    const height = ((_a = targetRef.current) == null ? void 0 : _a.clientHeight) ?? 0;\n    const previousTop = starts[starts.length - 1];\n    const end = Math.max(top + height, 0);\n    starts.push(top);\n    inputRange.unshift(\n      Math.max(top, 0),\n      previousTop === void 0 ? end : Math.min(end, Math.max(previousTop - 1, 0))\n    );\n    callback == null ? void 0 : callback(index);\n  }\n  return inputRange;\n}\n\n// ../../library/src/modules/useScrollDirectionChange.ts\nimport React54 from \"react\";\nfunction currentScrollDirection(offset, lastOffset = 0) {\n  if (offset < lastOffset) return \"up\";\n  return \"down\";\n}\nvar scrollDirectionThreshold = 4;\nfunction useScrollDirectionChange(scrollDirection, cb, options = {}) {\n  const { direction, target } = scrollDirection ?? {};\n  const { repeat = true, enabled = true } = options;\n  const currentRouteKey = useCurrentRouteKey();\n  React54.useEffect(() => {\n    if (!direction || !enabled) return;\n    const _ = currentRouteKey;\n    let lastOffset = void 0;\n    let directionChangeOffset = 0;\n    let lastDirection = void 0;\n    let currentTarget = void 0;\n    return scroll((_2, { y: scrollY }) => {\n      if (!repeat && currentTarget === target) return;\n      if (scrollY.current > scrollY.scrollLength) return;\n      if (scrollY.current < 0) return;\n      const d = currentScrollDirection(scrollY.current, lastOffset);\n      lastOffset = scrollY.current;\n      const hasDirectionChanged = d !== lastDirection;\n      lastDirection = d;\n      if (hasDirectionChanged) {\n        directionChangeOffset = scrollY.current;\n      } else {\n        const delta = Math.abs(scrollY.current - directionChangeOffset);\n        if (delta < scrollDirectionThreshold) return;\n        const nextTarget = d === direction ? target : void 0;\n        if (nextTarget !== currentTarget) cb(nextTarget);\n        currentTarget = nextTarget;\n      }\n    });\n  }, [currentRouteKey, direction, repeat, target, enabled, cb]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nvar styleAppearOptionsKeys = /* @__PURE__ */ new Set([\n  \"threshold\",\n  \"animateOnce\",\n  \"opacity\",\n  \"targetOpacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"transition\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"perspective\",\n  \"enter\",\n  \"exit\",\n  \"animate\",\n  \"styleAppearEffectEnabled\",\n  \"targets\",\n  \"scrollDirection\"\n]);\nvar defaultOutputRange = [\"animate\", \"animate\"];\nvar defaultRanges = { inputRange: [], outputRange: [] };\nfunction createInputOutputRange(targets, threshold, hasExit) {\n  const inputRange = createTransformInputRange(targets, threshold);\n  const outputRange = [...defaultOutputRange];\n  const firstRange = inputRange[0];\n  if (!isNumber(firstRange)) return defaultRanges;\n  if (firstRange > 1) {\n    inputRange.unshift(0, firstRange - 1);\n    outputRange.unshift(\"initial\", \"initial\");\n  }\n  if (hasExit) {\n    const idx = inputRange.length - 1;\n    const last = inputRange[idx];\n    if (!isNumber(last)) return defaultRanges;\n    inputRange.push(last + 1);\n    outputRange.push(\"exit\");\n  }\n  return {\n    inputRange,\n    outputRange\n  };\n}\nfunction makeStyle(defaults) {\n  return {\n    x: (defaults == null ? void 0 : defaults.x) ?? defaultFXValues.x,\n    y: (defaults == null ? void 0 : defaults.y) ?? defaultFXValues.y,\n    scale: (defaults == null ? void 0 : defaults.scale) ?? defaultFXValues.scale,\n    opacity: (defaults == null ? void 0 : defaults.opacity) ?? defaultFXValues.opacity,\n    transformPerspective: (defaults == null ? void 0 : defaults.transformPerspective) ?? defaultFXValues.transformPerspective,\n    rotate: (defaults == null ? void 0 : defaults.rotate) ?? defaultFXValues.rotate,\n    rotateX: (defaults == null ? void 0 : defaults.rotateX) ?? defaultFXValues.rotateX,\n    rotateY: (defaults == null ? void 0 : defaults.rotateY) ?? defaultFXValues.rotateY,\n    skewX: (defaults == null ? void 0 : defaults.skewX) ?? defaultFXValues.skewX,\n    skewY: (defaults == null ? void 0 : defaults.skewY) ?? defaultFXValues.skewY,\n    transition: (defaults == null ? void 0 : defaults.transition) ?? void 0\n  };\n}\nfunction useAnimationVariants({\n  opacity,\n  targetOpacity,\n  perspective: transformPerspective,\n  enter,\n  exit,\n  animate: animateVariant,\n  ...defaultStyles\n}) {\n  return React55.useMemo(\n    () => ({\n      initial: enter ?? makeStyle({\n        ...defaultStyles,\n        opacity: opacity ?? targetOpacity ?? 1,\n        transformPerspective\n      }),\n      animate: animateVariant ?? makeStyle({\n        opacity: targetOpacity\n      }),\n      exit: exit ?? makeStyle()\n    }),\n    // biome-ignore lint/correctness/useExhaustiveDependencies: `defaultStyles` makes this memo re-run on every render, but that appears to be fine.\n    [animateVariant, defaultStyles, enter, exit, opacity, targetOpacity, transformPerspective]\n  );\n}\nfunction useStyleAppearEffect(options, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const variants = useAnimationVariants(options);\n  const enabled = options.styleAppearEffectEnabled;\n  const effect = useFXValues(enabled ? variants.initial : variants.animate, enabled);\n  const playState = React55.useRef({\n    isPlaying: false,\n    scheduledAppearState: void 0,\n    lastAppearState: !options.styleAppearEffectEnabled\n  });\n  const currentRouteKey = useCurrentRouteKey();\n  const animation = React55.useRef();\n  const runAnimation = React55.useCallback(\n    async ({ transition, ...target }, fromInitial) => {\n      const transitionWithFallback = transition ?? variants.animate.transition ?? options.transition;\n      await animation.current;\n      const visualElement = visualElementStore.get(ref.current);\n      animation.current = Promise.all(\n        effectValuesKeys.map((key7) => {\n          if (fromInitial) effect.values[key7].set(variants.initial[key7] ?? defaultFXValues[key7]);\n          const toValue = target[key7] ?? defaultFXValues[key7];\n          if (visualElement && typeof toValue !== \"object\") {\n            visualElement.setBaseTarget(key7, toValue);\n          }\n          return new Promise((resolve) => {\n            if (shouldReduceMotion && key7 !== \"opacity\") {\n              if (isNumber(toValue)) effect.values[key7].set(toValue);\n              resolve();\n            } else {\n              const opts = {\n                restDelta: key7 === \"scale\" ? 1e-3 : void 0,\n                ...transitionWithFallback,\n                onComplete: () => resolve()\n              };\n              if (typeof toValue === \"number\") {\n                animate(effect.values[key7], toValue, opts);\n              }\n            }\n          });\n        })\n      );\n    },\n    []\n  );\n  const hasAnimatedOnce = options.animateOnce && playState.current.lastAppearState === true;\n  const animateWithIntersectionObserver = !options.targets && options.styleAppearEffectEnabled && !options.scrollDirection && !hasAnimatedOnce;\n  useAppearEffect(\n    ref,\n    (appears) => {\n      const { isPlaying, lastAppearState } = playState.current;\n      if (isPlaying) {\n        playState.current.scheduledAppearState = appears;\n        return;\n      }\n      playState.current.scheduledAppearState = void 0;\n      playState.current.lastAppearState = appears;\n      if (lastAppearState === appears) return;\n      void runAnimation(appears ? variants.animate : variants.exit, appears);\n    },\n    {\n      enabled: animateWithIntersectionObserver,\n      animateOnce: !!options.animateOnce,\n      threshold: {\n        y: options.threshold\n      }\n    }\n  );\n  const animateWithScrollInfo = options.targets && enabled && !options.scrollDirection;\n  React55.useEffect(() => {\n    if (!animateWithScrollInfo) return;\n    const playedState = { initial: true };\n    const _ = currentRouteKey;\n    let lastVariant = \"initial\";\n    return scroll((_2, { y: scrollY }) => {\n      const { targets } = options;\n      if (!targets) return;\n      if (!targets[0] || targets[0].ref && !targets[0].ref.current) return;\n      const { inputRange, outputRange } = createInputOutputRange(\n        targets,\n        (options.threshold ?? 0) * scrollY.containerLength,\n        !!options.exit\n      );\n      if (inputRange.length === 0 || inputRange.length !== outputRange.length) return;\n      const variant = transform(scrollY.current, inputRange, outputRange);\n      if (options.animateOnce && playedState[variant]) return;\n      playedState[variant] = true;\n      if (lastVariant === variant) return;\n      lastVariant = variant;\n      const variantAnimation = asRecord(variants)[variant];\n      if (!variantAnimation) return;\n      void runAnimation(variantAnimation);\n    });\n  }, [currentRouteKey, animateWithScrollInfo]);\n  useScrollDirectionChange(options.scrollDirection, (target) => void runAnimation(target ?? variants.animate), {\n    enabled,\n    repeat: !options.animateOnce\n  });\n  useOnRouteChange(() => {\n    var _a;\n    if (!enabled) return;\n    if (!options.targets && !options.scrollDirection) return;\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set(((_a = variants.initial) == null ? void 0 : _a[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return useMemo10(() => {\n    return { values: effect.values, style: enabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [enabled]);\n}\n\n// ../../library/src/modules/useStyleTransformEffect.ts\nimport React56, { useLayoutEffect as useLayoutEffect5 } from \"react\";\nvar styleTransformOptionsKeys = /* @__PURE__ */ new Set([\n  \"transformViewportThreshold\",\n  \"styleTransformEffectEnabled\",\n  \"transformTargets\",\n  \"spring\",\n  \"transformTrigger\"\n]);\nvar defaultValues = (transformTargets, shouldReduceMotion) => {\n  var _a;\n  const initial = (_a = transformTargets == null ? void 0 : transformTargets[0]) == null ? void 0 : _a.target;\n  return shouldReduceMotion ? { opacity: (initial == null ? void 0 : initial.opacity) ?? 1 } : initial;\n};\nvar defaultRanges2 = () => ({\n  opacity: [],\n  x: [],\n  y: [],\n  scale: [],\n  rotate: [],\n  rotateX: [],\n  rotateY: [],\n  skewX: [],\n  skewY: [],\n  transformPerspective: []\n});\nfunction useAttachOptionalSpring(values, spring2) {\n  const springs = React56.useRef({});\n  React56.useEffect(() => {\n    if (spring2 === void 0) return;\n    for (const key7 of objectKeys(values)) {\n      let startAnimation3 = function() {\n        const active = springs.current[key7];\n        if (active) active.stop();\n        springs.current[key7] = animateValue({\n          keyframes: [m2.get(), latestValue],\n          velocity: m2.getVelocity(),\n          ...spring2,\n          restDelta: 1e-3,\n          onUpdate: latestSetter\n        });\n      };\n      var startAnimation2 = startAnimation3;\n      const m2 = values[key7];\n      let latestSetter;\n      let latestValue;\n      m2.attach((v, set) => {\n        latestValue = v;\n        latestSetter = set;\n        frame.postRender(startAnimation3);\n        return m2.get();\n      });\n    }\n  }, [JSON.stringify(spring2)]);\n}\nfunction createInputOutputRanges(transformTargets, threshold) {\n  const effectKeyOutputRange = defaultRanges2();\n  const inputRange = createTransformInputRange(transformTargets, threshold, (index) => {\n    var _a, _b, _c;\n    const previousTarget = (_a = transformTargets[index - 1]) == null ? void 0 : _a.target;\n    const currentTarget = (_b = transformTargets[index]) == null ? void 0 : _b.target;\n    for (const key7 of effectValuesKeys) {\n      (_c = effectKeyOutputRange[key7]) == null ? void 0 : _c.unshift((previousTarget == null ? void 0 : previousTarget[key7]) ?? 0, (currentTarget == null ? void 0 : currentTarget[key7]) ?? 0);\n    }\n  });\n  return { inputRange, effectKeyOutputRange };\n}\nfunction createPageOutputRange(transformTargets) {\n  var _a;\n  const keyOutputRange = defaultRanges2();\n  for (const { target } of transformTargets) {\n    for (const key7 of effectValuesKeys) (_a = keyOutputRange[key7]) == null ? void 0 : _a.push(target[key7]);\n  }\n  return keyOutputRange;\n}\nvar pageInputRange = [0, 1];\nfunction useStyleTransform({\n  transformTrigger,\n  styleTransformEffectEnabled,\n  transformTargets,\n  spring: spring2,\n  transformViewportThreshold = 0\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const effect = useFXValues(defaultValues(transformTargets, shouldReduceMotion), styleTransformEffectEnabled);\n  const effectDisabled = !styleTransformEffectEnabled || !transformTargets;\n  const triggerOnScroll = transformTrigger === \"onScrollTarget\";\n  const currentRouteKey = useCurrentRouteKey();\n  useLayoutEffect5(() => {\n    if (effectDisabled || !triggerOnScroll) return;\n    return scroll((_, { y: scrollY }) => {\n      if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current) {\n        return;\n      }\n      const { inputRange: scrollYInputRange, effectKeyOutputRange } = createInputOutputRanges(\n        transformTargets,\n        transformViewportThreshold * scrollY.containerLength\n      );\n      if (scrollYInputRange.length === 0) return;\n      for (const key7 of effectValuesKeys) {\n        if (shouldReduceMotion && key7 !== \"opacity\") continue;\n        if (scrollYInputRange.length !== effectKeyOutputRange[key7].length) continue;\n        if (effectKeyOutputRange[key7][0] === void 0) continue;\n        effect.values[key7].set(transform(scrollY.current, scrollYInputRange, effectKeyOutputRange[key7]));\n      }\n    });\n  }, [shouldReduceMotion, triggerOnScroll, transformViewportThreshold, transformTargets, effectDisabled]);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (effectDisabled || triggerOnScroll || element === null) {\n        return;\n      }\n      const _ = currentRouteKey;\n      const outputRange = createPageOutputRange(transformTargets);\n      return scroll(\n        (_2, { y: scrollY }) => {\n          for (const key7 of effectValuesKeys) {\n            if (shouldReduceMotion && key7 !== \"opacity\") continue;\n            if (pageInputRange.length !== outputRange[key7].length) continue;\n            if (outputRange[key7][0] === void 0) continue;\n            effect.values[key7].set(transform(scrollY.progress, pageInputRange, outputRange[key7]));\n          }\n        },\n        transformTrigger === \"onInView\" ? {\n          target: element ?? void 0,\n          offset: [\"start end\", \"end end\"]\n        } : void 0\n      );\n    },\n    [currentRouteKey, shouldReduceMotion, transformTrigger, triggerOnScroll, transformTargets, effectDisabled]\n  );\n  useAttachOptionalSpring(effect.values, spring2);\n  useOnRouteChange(() => {\n    if (effectDisabled) return;\n    const values = defaultValues(transformTargets, shouldReduceMotion);\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set((values == null ? void 0 : values[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return React56.useMemo(() => {\n    return {\n      values: effect.values,\n      style: styleTransformEffectEnabled ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [styleTransformEffectEnabled]);\n}\n\n// ../../library/src/modules/withFX.tsx\nimport { jsx as jsx44 } from \"react/jsx-runtime\";\nvar groups = {\n  parallax: parallaxOptionsKeys,\n  styleAppear: styleAppearOptionsKeys,\n  styleTransform: styleTransformOptionsKeys,\n  loop: loopOptionsKeys,\n  presence: presenceOptionsKeys\n};\nvar groupValues = /* @__PURE__ */ objectKeys(groups);\nfunction backwardsCompatibleEnabledCheck(key7, secondaryKey, object) {\n  return !(key7 in object) && secondaryKey in object || object[key7] === true;\n}\nfunction extractFXOptions(props) {\n  const result = {\n    parallax: {},\n    styleAppear: {},\n    styleTransform: {},\n    presence: {\n      animate: props.animate,\n      initial: props.initial,\n      exit: props.exit\n    },\n    loop: {},\n    forwardedProps: {},\n    targetOpacityValue: props.__targetOpacity,\n    withPerspective: props.__perspectiveFX,\n    inSmartComponent: props.__smartComponentFX\n  };\n  for (const key7 in props) {\n    if (key7 === \"__targetOpacity\" || key7 === \"__perspectiveFX\" || key7 === \"__smartComponentFX\") continue;\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey) {\n      for (const group of groupValues) {\n        const keys3 = groups[group];\n        if (keys3 == null ? void 0 : keys3.has(strippedKey)) {\n          ;\n          result[group][strippedKey] = asRecord(props)[key7];\n          break;\n        }\n      }\n    } else {\n      ;\n      result.forwardedProps[key7] = asRecord(props)[key7];\n    }\n  }\n  result.parallax.parallaxTransformEnabled = backwardsCompatibleEnabledCheck(\n    \"parallaxTransformEnabled\",\n    \"speed\",\n    result.parallax\n  );\n  result.styleAppear.styleAppearEffectEnabled = backwardsCompatibleEnabledCheck(\n    \"styleAppearEffectEnabled\",\n    \"animateOnce\",\n    result.styleAppear\n  );\n  return result;\n}\nvar add2 = (values) => values.reduce((sum, value) => sum += value, 0);\nvar multiply = (values) => values.reduce((sum, value) => sum = sum * value, 1);\nvar reactRefObjectKey = \"current\";\nfunction isReactRefObject(value) {\n  return isObject2(value) && reactRefObjectKey in value;\n}\nfunction addMotionValueStyle(style, values) {\n  if (!style || !isObject2(style)) return values;\n  for (const key7 in style) {\n    const value = style[key7];\n    if (!isMotionValue(value) || !isFXValuesKey(key7)) continue;\n    if (!isNumber(value.get())) continue;\n    values[key7].push(value);\n  }\n}\nfunction isVariantOrVariantList2(value) {\n  return isString(value) || Array.isArray(value);\n}\nvar withFX = (Component17) => React57.forwardRef((props, forwardedRef) => {\n  var _a;\n  if (props.__withFX) {\n    return /* @__PURE__ */ jsx44(Component17, { ...props, animate: void 0, initial: void 0, exit: void 0, ref: forwardedRef });\n  }\n  const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n  if (disabledProps) {\n    return /* @__PURE__ */ jsx44(Component17, { ...props, ...disabledProps, ref: forwardedRef });\n  }\n  const {\n    parallax = {},\n    styleAppear = {},\n    styleTransform = {},\n    presence = {},\n    loop = {},\n    forwardedProps,\n    targetOpacityValue,\n    withPerspective,\n    inSmartComponent = false\n  } = extractFXOptions(props);\n  const observerRef = useObserverRef(forwardedRef);\n  const { values: presenceEffectValues, style: presenceEffectStyle } = usePresenceAnimation(\n    presence,\n    observerRef,\n    inSmartComponent,\n    props.style,\n    props[optimizedAppearDataAttribute]\n  );\n  const { values: parallaxValues, style: parallaxStyle } = useParallax(\n    parallax,\n    observerRef,\n    (_a = props.style) == null ? void 0 : _a.visibility\n  );\n  const { values: transformValues2, style: scrollStyle } = useStyleTransform(styleTransform, observerRef);\n  const { values: appearEffectValues, style: scrollAppearStyle } = useStyleAppearEffect(styleAppear, observerRef);\n  const { values: loopValues, style: loopStyle } = useLoop(loop, observerRef);\n  const fxValues = React57.useMemo(() => {\n    const layerOpacity = new MotionValue(targetOpacityValue ?? 1);\n    return {\n      scale: [appearEffectValues.scale, loopValues.scale, presenceEffectValues.scale, transformValues2.scale],\n      opacity: [\n        appearEffectValues.opacity,\n        loopValues.opacity,\n        presenceEffectValues.opacity,\n        layerOpacity,\n        transformValues2.opacity\n      ],\n      x: [appearEffectValues.x, loopValues.x, presenceEffectValues.x, transformValues2.x],\n      y: [appearEffectValues.y, loopValues.y, parallaxValues.y, presenceEffectValues.y, transformValues2.y],\n      rotate: [\n        appearEffectValues.rotate,\n        loopValues.rotate,\n        presenceEffectValues.rotate,\n        transformValues2.rotate\n      ],\n      rotateX: [\n        appearEffectValues.rotateX,\n        loopValues.rotateX,\n        presenceEffectValues.rotateX,\n        transformValues2.rotateX\n      ],\n      rotateY: [\n        appearEffectValues.rotateY,\n        loopValues.rotateY,\n        presenceEffectValues.rotateY,\n        transformValues2.rotateY\n      ],\n      skewX: [appearEffectValues.skewX, loopValues.skewX, presenceEffectValues.skewX, transformValues2.skewX],\n      skewY: [appearEffectValues.skewY, loopValues.skewY, presenceEffectValues.skewY, transformValues2.skewY],\n      /** @deprecated */\n      transformPerspective: [\n        transformValues2.transformPerspective,\n        appearEffectValues.transformPerspective\n        // We stopped animating transformPerspective with `withFX`\n        // before introducing `useLoop` etc, so it does not have a\n        // value here on purpose.\n      ]\n    };\n  }, [targetOpacityValue, transformValues2, parallaxValues, appearEffectValues, loopValues, presenceEffectValues]);\n  addMotionValueStyle(props.style, fxValues);\n  const scale2 = useTransform(fxValues.scale, multiply);\n  const opacity = useTransform(fxValues.opacity, multiply);\n  const x = useTransform(fxValues.x, add2);\n  const y = useTransform(fxValues.y, add2);\n  const rotate = useTransform(fxValues.rotate, add2);\n  const rotateX = useTransform(fxValues.rotateX, add2);\n  const rotateY = useTransform(fxValues.rotateY, add2);\n  const skewX = useTransform(fxValues.skewX, add2);\n  const skewY = useTransform(fxValues.skewY, add2);\n  const transformPerspective = useTransform(fxValues.transformPerspective, add2);\n  const { drag, dragConstraints } = forwardedProps;\n  useRerenderOnResize(drag && isReactRefObject(dragConstraints) ? dragConstraints : void 0);\n  const motionValueStyle = {\n    opacity,\n    scale: scale2,\n    x,\n    y,\n    rotate,\n    rotateX,\n    rotateY,\n    skewX,\n    skewY\n  };\n  if (isUndefined(withPerspective)) motionValueStyle.transformPerspective = transformPerspective;\n  const animate3 = isVariantOrVariantList2(props.animate) ? props.animate : void 0;\n  const initial = isVariantOrVariantList2(props.initial) ? props.initial : void 0;\n  const exit = isVariantOrVariantList2(props.exit) ? props.exit : void 0;\n  const motionGestures = inSmartComponent && !presence.presenceInitial ? { initial, animate: animate3, exit } : {};\n  return /* @__PURE__ */ jsx44(\n    Component17,\n    {\n      ...forwardedProps,\n      ...motionGestures,\n      __withFX: true,\n      style: {\n        ...props.style,\n        ...parallaxStyle,\n        ...scrollStyle,\n        ...loopStyle,\n        ...motionValueStyle,\n        ...scrollAppearStyle,\n        ...presenceEffectStyle\n      },\n      values: presenceEffectValues,\n      ref: observerRef\n    }\n  );\n});\n\n// ../../library/src/deprecated/deprecatedEffects.ts\nvar withParallaxTransform = withFX;\nvar withStyleAppearEffect = withFX;\n\n// ../../library/src/modules/ComponentPresetsContext.tsx\nimport { createContext as createContext5, useContext as useContext15, useRef as useRef16 } from \"react\";\nimport { jsx as jsx45 } from \"react/jsx-runtime\";\nvar Context = /* @__PURE__ */ createContext5({});\nfunction ComponentPresetsProvider({ presets, children }) {\n  const lastPresets = useRef16(presets);\n  if (!isEqual(presets, lastPresets.current, false)) {\n    lastPresets.current = presets;\n  }\n  return /* @__PURE__ */ jsx45(Context.Provider, { value: lastPresets.current, children });\n}\nfunction ComponentPresetsConsumer({ componentIdentifier, children }) {\n  const componentPresets = useContext15(Context);\n  const presetProps = componentPresets[componentIdentifier] ?? {};\n  return children(presetProps);\n}\n\n// ../../library/src/modules/ComponentViewportContext.tsx\nimport React58 from \"react\";\nimport { jsx as jsx46 } from \"react/jsx-runtime\";\nvar ComponentViewportContext = /* @__PURE__ */ React58.createContext({});\nfunction useComponentViewport() {\n  return React58.useContext(ComponentViewportContext);\n}\nvar ComponentViewportProvider = /* @__PURE__ */ React58.forwardRef(function ComponentViewportProvider2({ width, height, y, children, ...rest }, ref) {\n  const componentViewport = React58.useMemo(() => {\n    return { width, height, y };\n  }, [width, height, y]);\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  return /* @__PURE__ */ jsx46(ComponentViewportContext.Provider, { value: componentViewport, children: cloneWithPropsAndRef(children, rest) });\n});\n\n// ../../library/src/modules/Container.tsx\nimport React61 from \"react\";\n\n// ../../library/src/render/utils/withGeneratedLayoutId.tsx\nimport React59 from \"react\";\nimport { jsx as jsx47 } from \"react/jsx-runtime\";\nvar withGeneratedLayoutId = (Component17) => React59.forwardRef((props, ref) => {\n  const layoutId = useLayoutId(props);\n  return /* @__PURE__ */ jsx47(Component17, { layoutId, ...props, layoutIdKey: void 0, duplicatedFrom: void 0, ref });\n});\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { Component as Component12, Suspense as Suspense2 } from \"react\";\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { Suspense, createContext as createContext6, useContext as useContext16 } from \"react\";\n\n// ../../library/src/router/error-boundary/SynchronousSuspenseErrorBoundary.tsx\nimport { Component as Component11 } from \"react\";\nvar shouldSuspenseBoundariesBeActive = false;\nvar SynchronousSuspenseErrorBoundary = class extends Component11 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  // Note: SynchronousSuspenseErrorBoundary is relying on some narrow implementation details of React\n  // which we don\u2019t fully understand: https://www.notion.so/framer/SuspenseThatPreservesDOM-1b0adf6e8c968089ae0dc158fc514e6b?pvs=4#1d1adf6e8c96801a9ef2d6f2f0c27f8c\n  //\n  // As a side effect, `componentDidCatch` is usually *never* executed. If you do see the log below,\n  // it means that you\u2019re experiencing a scenario not covered by our tests.\n  componentDidCatch(error, errorInfo) {\n    if (!isSuspense426Error(error)) return;\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\n      \"Caught an error in SynchronousSuspenseErrorBoundary:\\n\\n\",\n      error,\n      \"\\n\\nComponent stack:\\n\",\n      componentStack,\n      \"\\n\\nThis error indicates a state update wasn\\u2019t wrapped with startTransition. Some of the UI might flash as a result. If you are the author of this website, check recently added custom code, and if the issue persists, report it to the Framer team via https://www.framer.com/contact/.\"\n    );\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : void 0;\n    sendTrackingEvent(\"published_site_load_recoverable_error\", {\n      message: String(error),\n      stack,\n      // only log componentStack if we don't have a stack\n      componentStack: stack ? void 0 : componentStack\n    });\n  }\n  render() {\n    const error = this.state.error;\n    if (error === void 0) return this.props.children;\n    if (!isSuspense426Error(error)) throw error;\n    shouldSuspenseBoundariesBeActive = true;\n    return this.props.children;\n  }\n};\nfunction isSuspense426Error(error) {\n  const unminifiedMessage = \"A component suspended while responding to synchronous input.\";\n  const minifiedMessage = \"Minified React error #426\";\n  return error instanceof Error && (error.message.includes(unminifiedMessage) || error.message.includes(minifiedMessage));\n}\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { Fragment as Fragment9, jsx as jsx48 } from \"react/jsx-runtime\";\nvar suspendPromise = /* @__PURE__ */ (() => typeof window !== \"undefined\" ? new Promise(() => {\n}) : null)();\nfunction Suspend() {\n  if (typeof window === \"undefined\" || shouldSuspenseBoundariesBeActive) {\n    return /* @__PURE__ */ jsx48(\n      \"div\",\n      {\n        hidden: true,\n        dangerouslySetInnerHTML: { __html: \"<!-- SuspenseThatPreservesDOM fallback rendered -->\" }\n      }\n    );\n  }\n  throw suspendPromise;\n}\nvar suspend = /* @__PURE__ */ jsx48(Suspend, {});\nvar DisableSuspenseSuspenseThatPreservesDomContext = createContext6(false);\nDisableSuspenseSuspenseThatPreservesDomContext.displayName = \"DisableSuspenseSuspenseThatPreservesDomContext\";\nfunction SuspenseThatPreservesDom({ children }) {\n  const isSuspenseBoundaryDisabled = useContext16(DisableSuspenseSuspenseThatPreservesDomContext);\n  if (isSuspenseBoundaryDisabled) {\n    return /* @__PURE__ */ jsx48(Fragment9, { children });\n  }\n  return /* @__PURE__ */ jsx48(Suspense, { fallback: suspend, children });\n}\n\n// ../../library/src/modules/code-boundary/NullFallback.tsx\nimport { jsx as jsx49 } from \"react/jsx-runtime\";\nfunction NullFallback() {\n  return /* @__PURE__ */ jsx49(\n    \"div\",\n    {\n      hidden: true,\n      dangerouslySetInnerHTML: { __html: \"<!-- Code boundary fallback rendered -->\" }\n    }\n  );\n}\nvar nullFallback = /* @__PURE__ */ jsx49(NullFallback, {});\n\n// ../../library/src/modules/code-boundary/collectErrorToAnalytics.tsx\nfunction collectErrorToAnalytics(error, errorInfo) {\n  if (!isWindow) return;\n  if (Math.random() > 0.01) return;\n  const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n  const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n  sendTrackingEvent(\"published_site_load_recoverable_error\", {\n    message: String(error),\n    stack,\n    // only log componentStack if we don't have a stack\n    componentStack: stack ? void 0 : componentStack\n  });\n}\n\n// ../../library/src/modules/code-boundary/logger.ts\nfunction logError(...args) {\n  if (false) return;\n  console.error(...args);\n}\n\n// ../../library/src/modules/code-boundary/shouldEnableCodeBoundaries.ts\nfunction shouldEnableCodeBoundaries() {\n  return RenderTarget.current() !== RenderTarget.canvas;\n}\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { jsx as jsx50 } from \"react/jsx-runtime\";\nfunction CodeComponentBoundary({ getErrorMessage, fallback, children }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx50(ServerSideErrorBoundary, { fallback, children: /* @__PURE__ */ jsx50(ClientSideErrorBoundary, { fallback, getErrorMessage, children }) });\n}\nvar ClientSideErrorBoundary = class extends Component12 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  static getDerivedStateFromError() {\n    return { hasError: true };\n  }\n  componentDidCatch(error, errorInfo) {\n    logError(this.props.getErrorMessage(), errorInfo == null ? void 0 : errorInfo.componentStack);\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children, fallback = nullFallback } = this.props;\n    const { hasError } = this.state;\n    return hasError ? fallback : children;\n  }\n};\nfunction ServerSideErrorBoundary({ children, fallback = nullFallback }) {\n  return typeof window === \"undefined\" ? (\n    // On the server, Suspense fallback is activated by errors. So we use the actual Suspense,\n    // and render the actual error fallback if Suspense activates.\n    /* @__PURE__ */ jsx50(Suspense2, { fallback, children })\n  ) : (\n    // On the client, Suspense fallback is activated by data fetching. So we use SuspenseThatPreservesDom,\n    // because we don\u2019t want to render a fallback if the boundary gets inadvertently activated.\n    //\n    // \u201CWhy won\u2019t you just render plain children without Suspense?\u201D Because that would cause a hydration mismatch\n    // (the server has Suspense, the client doesn\u2019t).\n    /* @__PURE__ */ jsx50(SuspenseThatPreservesDom, { children })\n  );\n}\n\n// ../../library/src/modules/code-boundary/DeprecatedContainerErrorBoundary.tsx\nimport { Component as Component13 } from \"react\";\nvar DeprecatedContainerErrorBoundary = class extends Component13 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  // We use `componentDidCatch` instead of `static getDerivedStateFromError()` because the latter could also catch hydration errors.\n  // Hydration errors are recoverable by React, so we don't want to hide the coponent in that case (since the tree will not unmount).\n  componentDidCatch(error, errorInfo) {\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\n      \"Error in component (see previous log). This component has been hidden. Please check any custom code or code overrides to fix.\",\n      componentStack\n    );\n    this.setState({ hasError: true });\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children } = this.props;\n    const { hasError } = this.state;\n    return hasError ? null : children;\n  }\n};\n\n// ../../library/src/modules/code-boundary/ExternalComponentContext.tsx\nimport React60 from \"react\";\nimport { jsx as jsx51 } from \"react/jsx-runtime\";\nvar ExternalComponentContext = /* @__PURE__ */ (() => React60.createContext(void 0))();\nfunction useNearestExternalComponent() {\n  return React60.useContext(ExternalComponentContext);\n}\nfunction useFurthestExternalComponent() {\n  const nearestExternalComponent = useNearestExternalComponent();\n  const furthestExternalComponent = React60.useMemo(() => {\n    if (!nearestExternalComponent) return void 0;\n    let item = nearestExternalComponent;\n    while (item.parent && item.parent.level > 0) {\n      item = item.parent;\n    }\n    return item;\n  }, [nearestExternalComponent]);\n  return furthestExternalComponent;\n}\nfunction IsExternalComponent({\n  children,\n  scopeId,\n  nodeId\n}) {\n  const parent = useNearestExternalComponent();\n  const newValue = React60.useMemo(\n    () => ({ level: ((parent == null ? void 0 : parent.level) ?? 0) + 1, scopeId, nodeId, parent }),\n    [scopeId, nodeId, parent]\n  );\n  return /* @__PURE__ */ jsx51(ExternalComponentContext.Provider, { value: newValue, children });\n}\n\n// ../../library/src/modules/code-boundary/errorMessages.ts\nvar CRASH_ERROR_MESSAGE_PREFIX = \"code-crash:\";\nfunction formatCodeCrashLocationFromSourceNode(scopeId, nodeId) {\n  return `${CRASH_ERROR_MESSAGE_PREFIX}${scopeId}:${nodeId}`;\n}\nfunction getErrorMessageForComponent(scopeId, nodeId) {\n  return getErrorMessageFor(\"component\", scopeId, nodeId);\n}\nfunction getErrorMessageForOverride(scopeId, nodeId) {\n  return getErrorMessageFor(\"override\", scopeId, nodeId);\n}\nfunction getErrorMessageFor(element, scopeId, nodeId) {\n  return `A code ${element} crashed while rendering due to the error above. To find and fix it, open the project in the editor \\u2192 open Quick Actions (press Cmd+K or Ctrl+K) \\u2192 paste this: ${formatCodeCrashLocationFromSourceNode(scopeId, nodeId)} \\u2192 click \\u201CShow Layer\\u201D.`;\n}\n\n// ../../library/src/modules/code-boundary/shouldWrapWithBoundary.ts\nfunction shouldWrapComponentWithBoundary(scopeIdOfThisComponent, scopeIdOfNearestExternalComponent, externalComponentLevel, isAuthoredByUser, isExternalComponent, inComponentSlot) {\n  const isLocalComponentInstance = isNodeLocalToProject(\n    scopeIdOfThisComponent,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n  return (\n    // case 1: all (local instances) of (local) (code components)\n    isLocalComponentInstance && !isExternalComponent && isAuthoredByUser || // case 2: all (local instances) of (external components)\n    isLocalComponentInstance && isExternalComponent\n  );\n}\nfunction shouldWrapOverrideWithBoundary(scopeIdOfNodeWithOverride, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  return isNodeLocalToProject(\n    scopeIdOfNodeWithOverride,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n}\nfunction isNodeLocalToProject(scopeIdOfThisNode, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  if (isUndefined(externalComponentLevel)) return true;\n  const nodeIsDefinedInSameScopeAsExternalComponent = scopeIdOfThisNode === scopeIdOfNearestExternalComponent;\n  if (\n    // We know a component instance is local when it\u2019s nested inside one external component,\n    externalComponentLevel === 1 && // and it lives in a slot,\n    inComponentSlot && // and it\u2019s a slot of *that sole external component* (and not some other local component\n    // with slots that lives inside the external component).\n    nodeIsDefinedInSameScopeAsExternalComponent\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/modules/code-boundary/maybeWrapComponentWithCodeBoundary.tsx\nimport { jsx as jsx52 } from \"react/jsx-runtime\";\nfunction useMaybeWrapComponentWithCodeBoundary(children, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot) {\n  const nearestExternalComponent = useNearestExternalComponent();\n  if (\n    // Those props will either be all undefined, which means the Container hasn\u2019t yet been\n    // re-serialized since we introduced code boundaries, and we should use the old\n    // ContainerErrorBoundary \u2013 or all defined, which means we have enough information to use\n    // the new boundary.\n    isUndefined(scopeId) || isUndefined(nodeId)\n  ) {\n    return /* @__PURE__ */ jsx52(DeprecatedContainerErrorBoundary, { children });\n  }\n  const shouldWrapWithBoundary = shouldWrapComponentWithBoundary(\n    scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n    isAuthoredByUser ?? false,\n    isModuleExternal ?? false,\n    inComponentSlot ?? false\n  );\n  if (shouldWrapWithBoundary) {\n    children = /* @__PURE__ */ jsx52(\n      CodeComponentBoundary,\n      {\n        getErrorMessage: getErrorMessageForComponent.bind(null, scopeId, nodeId),\n        fallback: null,\n        children\n      }\n    );\n  }\n  if (isModuleExternal) {\n    children = /* @__PURE__ */ jsx52(IsExternalComponent, { scopeId, nodeId, children });\n  }\n  return children;\n}\n\n// ../../library/src/modules/Container.tsx\nimport { jsx as jsx53 } from \"react/jsx-runtime\";\nvar ContainerInner = /* @__PURE__ */ React61.forwardRef(\n  ({ children, layoutId, as, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot, ...props }, ref) => {\n    const outerLayoutId = useConstant(() => layoutId ? `${layoutId}-container` : void 0);\n    const MotionComponent = htmlElementAsMotionComponent(as);\n    const clonedChildren = React61.Children.map(children, (child) => {\n      return React61.isValidElement(child) ? React61.cloneElement(child, { layoutId }) : child;\n    });\n    const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n      clonedChildren,\n      scopeId,\n      nodeId,\n      isAuthoredByUser,\n      isModuleExternal,\n      inComponentSlot\n    );\n    return /* @__PURE__ */ jsx53(MotionComponent, { layoutId: outerLayoutId, ...props, ref, children: /* @__PURE__ */ jsx53(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx53(NodeIdContext.Provider, { value: nodeId ?? null, children: /* @__PURE__ */ jsx53(AutomaticLayoutIds, { enabled: false, children: /* @__PURE__ */ jsx53(LayoutGroup, { id: layoutId ?? \"\", inherit: \"id\", children: childrenWithCodeBoundary }) }) }) }) });\n  }\n);\nvar Container = /* @__PURE__ */ withGeneratedLayoutId(ContainerInner);\nvar SmartComponentScopedContainer = /* @__PURE__ */ React61.forwardRef((props, ref) => {\n  const {\n    as,\n    children,\n    // Code boundary-specific props\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    rendersWithMotion,\n    isModuleExternal,\n    inComponentSlot,\n    // Other props, including some possibly used-passed ones\n    ...otherProps\n  } = props;\n  const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n    children,\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    isModuleExternal,\n    inComponentSlot\n  );\n  const tagName = props.as ?? \"div\";\n  if (props.rendersWithMotion) {\n    const Component17 = htmlElementAsMotionComponent(tagName);\n    return /* @__PURE__ */ jsx53(NodeIdContext.Provider, { value: nodeId ?? null, children: /* @__PURE__ */ jsx53(\n      Component17,\n      {\n        ...otherProps,\n        ref,\n        style: props.style,\n        children: childrenWithCodeBoundary\n      }\n    ) });\n  } else {\n    const Component17 = tagName;\n    const { layoutId, layoutDependency, ...plainHTMLRenderableProps } = otherProps;\n    return /* @__PURE__ */ jsx53(NodeIdContext.Provider, { value: nodeId ?? null, children: /* @__PURE__ */ jsx53(Component17, { ...plainHTMLRenderableProps, ref, style: props.style, children: childrenWithCodeBoundary }) });\n  }\n});\n\n// ../../library/src/modules/CustomCursor.tsx\nimport {\n  Suspense as Suspense3,\n  createContext as createContext7,\n  memo as memo2,\n  startTransition as startTransition3,\n  useCallback as useCallback11,\n  useContext as useContext17,\n  useEffect as useEffect17,\n  useId,\n  useLayoutEffect as useLayoutEffect6,\n  useRef as useRef17,\n  useState as useState5\n} from \"react\";\nimport { jsx as jsx54, jsxs as jsxs13 } from \"react/jsx-runtime\";\nvar CustomCursorContext = /* @__PURE__ */ createContext7({\n  onRegisterCursors: () => () => {\n  },\n  registerCursors: () => {\n  }\n});\nvar replaceCursorClassName = \"framer-cursor-none\";\nvar cursorComponentClassName = \"framer-pointer-events-none\";\nfunction getActiveDefinitions(map2, previousDefinitions, newDefinitions) {\n  const allCursors = {};\n  for (const [, hashes] of map2) {\n    for (const hash2 of hashes) {\n      const value = allCursors[hash2] ?? previousDefinitions[hash2] ?? newDefinitions[hash2];\n      if (value) allCursors[hash2] = value;\n    }\n  }\n  return allCursors;\n}\nvar CustomCursorContextProvider = /* @__PURE__ */ memo2(function CustomCursorList({ children }) {\n  const value = useConstant(() => {\n    const events = /* @__PURE__ */ new Set();\n    let allCursors = {};\n    const byCaller = /* @__PURE__ */ new Map();\n    return {\n      onRegisterCursors: (callback) => {\n        callback(allCursors);\n        events.add(callback);\n        return () => events.delete(callback);\n      },\n      registerCursors: (cursors, id) => {\n        byCaller.set(id, Object.keys(cursors));\n        allCursors = getActiveDefinitions(byCaller, allCursors, cursors);\n        for (const callback of events) callback(allCursors);\n        return () => {\n          byCaller.delete(id);\n        };\n      }\n    };\n  });\n  const shouldReduceMotion = useReducedMotionConfig();\n  return /* @__PURE__ */ jsxs13(CustomCursorContext.Provider, { value, children: [\n    children,\n    !shouldReduceMotion && /* @__PURE__ */ jsx54(CustomCursorComponent, {})\n  ] });\n});\nvar CustomCursorHost = /* @__PURE__ */ (() => withCSS(\n  CustomCursorContextProvider,\n  [\n    `.${replaceCursorClassName}, .${replaceCursorClassName} * { cursor: none !important; }`,\n    `.${cursorComponentClassName}, .${cursorComponentClassName} * { pointer-events: none !important; }`\n  ],\n  \"framer-lib-cursors-host\"\n))();\nvar staticCursorStyle = /* @__PURE__ */ (() => ({\n  position: \"fixed\",\n  top: 0,\n  left: 0,\n  zIndex: 12 + 1,\n  // Max framer z-index + 1\n  pointerEvents: \"none\"\n}))();\nfunction customCursorReplacesNativeCursor(cursor) {\n  if (!cursor) return false;\n  if (cursor.placement || cursor.alignment) return false;\n  return true;\n}\nfunction valueForCursorAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return \"0%\";\n    case \"center\":\n      return \"-50%\";\n    case \"end\":\n      return \"-100%\";\n    default:\n      assertNever(alignment);\n  }\n}\nfunction getCenteringTransform(placement, alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return `${valueForCursorAlignment(alignment)}, -100%`;\n    case \"right\":\n      return `0%, ${valueForCursorAlignment(alignment)}`;\n    case \"bottom\":\n      return `${valueForCursorAlignment(alignment)}, 0%`;\n    case \"left\":\n      return `-100%, ${valueForCursorAlignment(alignment)}`;\n    default:\n      return \"-50%, -50%\";\n  }\n}\nvar portalIdAttribute = \"data-framer-portal-id\";\nfunction getCursorHash(x, y) {\n  let el = document.elementFromPoint(x, y);\n  while (el) {\n    if (el === document.body) return void 0;\n    const value = el.getAttribute(\"data-framer-cursor\");\n    if (value) return value;\n    if (el.hasAttribute(portalIdAttribute)) {\n      const id = el.getAttribute(portalIdAttribute);\n      el = el.parentElement;\n      if (id) el = document.getElementById(id) ?? el;\n    } else {\n      el = el.parentElement;\n    }\n  }\n  return void 0;\n}\nfunction isEmptyObject(object) {\n  for (const _ in object) return false;\n  return true;\n}\nvar CustomCursorComponent = /* @__PURE__ */ memo2(function CustomCursorComponent2() {\n  const { onRegisterCursors } = useContext17(CustomCursorContext);\n  const [hasHoverCapability, setHasHoverCapability] = useState5(false);\n  const pointerX = useMotionValue(0);\n  const pointerY = useMotionValue(0);\n  const opacity = useMotionValue(0);\n  const cursorRef = useRef17(null);\n  const internalState = useRef17({ cursors: {}, cursorHash: void 0 });\n  const forceRender = useForceUpdate2();\n  useLayoutEffect6(() => {\n    const noHoverMQ = safeWindow.matchMedia(\"(any-hover: none)\");\n    function updateRender(e) {\n      if (e.matches) {\n        startTransition3(() => setHasHoverCapability(false));\n      } else {\n        setHasHoverCapability(true);\n      }\n    }\n    noHoverMQ.addEventListener(\"change\", updateRender);\n    if (!noHoverMQ.matches) {\n      setHasHoverCapability(true);\n    }\n    return () => {\n      noHoverMQ.removeEventListener(\"change\", updateRender);\n    };\n  }, []);\n  useEffect17(() => {\n    if (!hasHoverCapability) return;\n    let x2 = 0;\n    let y2 = 0;\n    function updateValues() {\n      pointerX.set(x2);\n      pointerY.set(y2);\n      animate(opacity, 1, { type: \"tween\", duration: 0.2 });\n    }\n    const updateVariant = () => {\n      if (isEmptyObject(internalState.current.cursors)) return;\n      const hash2 = getCursorHash(x2, y2);\n      if (hash2 !== internalState.current.cursorHash) {\n        internalState.current.cursorHash = hash2;\n        frame.update(() => forceRender());\n      }\n    };\n    function updateCursor(e) {\n      if (e.pointerType === \"touch\") {\n        cancelFrame(updateVariant);\n        return;\n      }\n      frame.read(updateVariant, true);\n      x2 = e.clientX;\n      y2 = e.clientY;\n      frame.update(updateValues);\n    }\n    function fireEventToTarget(e) {\n      if (e.target === cursorRef.current || !cursorRef.current) return;\n      const event = new PointerEvent(e.type, {\n        bubbles: true,\n        cancelable: e.cancelable,\n        pointerType: e.pointerType,\n        pointerId: e.pointerId,\n        composed: e.composed,\n        isPrimary: e.isPrimary,\n        buttons: e.buttons,\n        button: e.button\n      });\n      frame.update(() => {\n        var _a;\n        (_a = cursorRef.current) == null ? void 0 : _a.dispatchEvent(event);\n      });\n    }\n    safeWindow.addEventListener(\"pointermove\", updateCursor);\n    document.addEventListener(\"pointerdown\", fireEventToTarget);\n    document.addEventListener(\"pointerup\", fireEventToTarget);\n    frame.read(updateVariant, true);\n    return () => {\n      safeWindow.removeEventListener(\"pointermove\", updateCursor);\n      document.removeEventListener(\"pointerdown\", fireEventToTarget);\n      document.removeEventListener(\"pointerup\", fireEventToTarget);\n      cancelFrame(updateVariant);\n    };\n  }, [opacity, pointerX, pointerY, forceRender, hasHoverCapability]);\n  useEffect17(() => {\n    if (!hasHoverCapability) return;\n    function hideCursor() {\n      void animate(opacity, 0, { type: \"tween\", duration: 0.2 });\n    }\n    document.addEventListener(\"mouseleave\", hideCursor);\n    safeWindow.addEventListener(\"blur\", hideCursor);\n    return () => {\n      document.removeEventListener(\"mouseleave\", hideCursor);\n      safeWindow.removeEventListener(\"blur\", hideCursor);\n    };\n  }, [opacity, hasHoverCapability]);\n  useLayoutEffect6(() => {\n    function updateCursors(newCursors) {\n      internalState.current.cursors = newCursors;\n      internalState.current.cursorHash = !isEmptyObject(newCursors) ? getCursorHash(pointerX.get(), pointerY.get()) : null;\n      forceRender();\n    }\n    const unregister = onRegisterCursors(updateCursors);\n    return () => {\n      unregister();\n      document.body.classList.toggle(replaceCursorClassName, false);\n    };\n  }, [pointerX, pointerY, onRegisterCursors, forceRender]);\n  const { cursors, cursorHash } = internalState.current;\n  const cursor = cursorHash ? cursors[cursorHash] : null;\n  const replaceNativeCursor = customCursorReplacesNativeCursor(cursor);\n  useLayoutEffect6(() => {\n    if (!hasHoverCapability) return;\n    document.body.classList.toggle(replaceCursorClassName, replaceNativeCursor);\n  }, [replaceNativeCursor, hasHoverCapability]);\n  const Cursor = cursor == null ? void 0 : cursor.component;\n  const spring2 = (cursor == null ? void 0 : cursor.transition) ?? { duration: 0 };\n  const sprungX = useSpring(pointerX, spring2);\n  const sprungY = useSpring(pointerY, spring2);\n  const x = useTransform(() => {\n    var _a;\n    return sprungX.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.x) ?? 0);\n  });\n  const y = useTransform(() => {\n    var _a;\n    return sprungY.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.y) ?? 0);\n  });\n  const alignment = cursor == null ? void 0 : cursor.alignment;\n  const placement = cursor == null ? void 0 : cursor.placement;\n  const transformTemplate2 = useCallback11(\n    (_, t) => `translate(${getCenteringTransform(placement, alignment)}) ${t}`,\n    [alignment, placement]\n  );\n  if (!hasHoverCapability || !cursor || !Cursor) return null;\n  return /* @__PURE__ */ jsx54(Suspense3, { children: /* @__PURE__ */ jsx54(\n    Cursor,\n    {\n      transformTemplate: transformTemplate2,\n      style: {\n        ...staticCursorStyle,\n        x,\n        y,\n        opacity\n      },\n      globalTapTarget: true,\n      variant: cursor == null ? void 0 : cursor.variant,\n      ref: cursorRef,\n      className: cursorComponentClassName\n    }\n  ) });\n});\nfunction useCustomCursors(webPageCursors) {\n  const { registerCursors } = useContext17(CustomCursorContext);\n  const cursors = useConstant(() => webPageCursors);\n  const id = useId();\n  useLayoutEffect6(() => {\n    return registerCursors(cursors, id);\n  }, [registerCursors, id]);\n}\n\n// ../../library/src/modules/Floating.tsx\nimport React62, { useContext as useContext18 } from \"react\";\nimport ReactDOM from \"react-dom\";\n\n// ../../library/src/render/types/Polygon.ts\nvar Polygon = {\n  /**\n   * Determine if the vertices are ordered clockwise or counter-clockwise. This works for simple\n   * (non-self-intersecting) convex polygons. If the polygon is collapsed into a line (signedArea = 0), we consider it\n   * clockwise for it works with how Framer draws the polygons.\n   * See: https://paulbourke.net/geometry/polygonmesh/\n   * @internal */\n  isClockwise: (points) => {\n    return Polygon.signedArea(points) <= 0;\n  },\n  /**\n   * Calculate the signed area to determine if the vertices go clockwise or counter clockwise. We flip all the y\n   * values because the y axis in our canvas coordinate is fipped.\n   * See: https://mathworld.wolfram.com/PolygonArea.html\n   * @internal */\n  signedArea: (points) => {\n    let sum = 0;\n    const len = points.length;\n    for (let i = 0; i < len; i++) {\n      const pointA = points[i];\n      const pointB = points[(i + 1) % len];\n      if (!pointA || !pointB) continue;\n      sum += pointA.x * -pointB.y - pointB.x * -pointA.y;\n    }\n    return 1 / 2 * sum;\n  },\n  /**\n   * Determine if some Point lies inside (or on) the polygon formed by other\n   * Points. The other points must be provided in a clockwise/counter\n   * clockwise order otherwise the line segments we create to test the polygon\n   * will not be representative.\n   *\n   * Solution for convex polygons based on:\n   * https://www.eecs.umich.edu/courses/eecs380/HANDOUTS/PROJ2/InsidePoly.html\n   *\n   * We create a line segment for each side of the polygon. The point we are\n   * testing must be on or on the same side of each line segment.\n   *\n   * @internal\n   */\n  containsPoint: (polygonPoints2, point) => {\n    var _a, _b, _c, _d;\n    let sign = void 0;\n    for (let i = 0; i < polygonPoints2.length; i++) {\n      if (Point.isEqual(polygonPoints2[i], point)) return true;\n      const x1 = ((_a = polygonPoints2[i]) == null ? void 0 : _a.x) ?? 0;\n      const y1 = ((_b = polygonPoints2[i]) == null ? void 0 : _b.y) ?? 0;\n      const i2 = (i + 1) % polygonPoints2.length;\n      if (Point.isEqual(polygonPoints2[i2], point)) return true;\n      const x2 = ((_c = polygonPoints2[i2]) == null ? void 0 : _c.x) ?? 0;\n      const y2 = ((_d = polygonPoints2[i2]) == null ? void 0 : _d.y) ?? 0;\n      const d = (point.x - x1) * (y2 - y1) - (point.y - y1) * (x2 - x1);\n      if (d === 0) continue;\n      const localSign = d > 0;\n      sign ??= localSign;\n      if (sign !== localSign) return false;\n    }\n    return true;\n  },\n  /** @internal */\n  intersects: (pointsA, pointsB) => {\n    if (pointsA.length < 1 || pointsB.length < 1) return false;\n    const boundingRectA = Rect.boundingRectFromPoints(pointsA);\n    const boundingRectB = Rect.boundingRectFromPoints(pointsB);\n    if (!Rect.intersects(boundingRectA, boundingRectB)) return false;\n    const edgesA = [];\n    const pointsALength = pointsA.length;\n    pointsA.forEach((point, index) => {\n      const nextPoint = pointsA[(index + 1) % pointsALength];\n      if (!nextPoint) return;\n      edgesA.push(Line(point, nextPoint));\n    });\n    const edgesB = [];\n    const pointsBLength = pointsB.length;\n    pointsB.forEach((point, index) => {\n      const nextPoint = pointsB[(index + 1) % pointsBLength];\n      if (!nextPoint) return;\n      edgesB.push(Line(point, nextPoint));\n    });\n    for (const edgeA of edgesA) {\n      for (const edgeB of edgesB) {\n        const intersection2 = Line.intersection(edgeA, edgeB, true);\n        if (intersection2) return true;\n      }\n    }\n    if (Polygon.containsPoint(pointsB, pointsA[0])) return true;\n    if (Polygon.containsPoint(pointsA, pointsB[0])) return true;\n    return false;\n  },\n  /** @internal */\n  contains: (pointsA, pointsB) => {\n    for (let i = 0; i < pointsB.length; i++) {\n      if (!Polygon.containsPoint(pointsA, pointsB[i])) return false;\n    }\n    return true;\n  },\n  /** @internal */\n  clipToRect: (points, rect) => {\n    const edges = Rect.edges(rect);\n    const seen = /* @__PURE__ */ new Set();\n    const count = points.length;\n    const clippedPoints = [];\n    const originalPoints = [];\n    for (let i = 0; i < count; i++) {\n      const point = points[i];\n      const nextPoint = points[(i + 1) % count];\n      if (Rect.containsPoint(rect, point)) {\n        const intersectionKey = keyForPoint(point);\n        seen.add(intersectionKey);\n        originalPoints.push(point);\n        if (Rect.containsPoint(rect, nextPoint)) continue;\n      }\n      const line = Line(point, nextPoint);\n      edges.forEach((edge) => {\n        const intersection2 = Line.intersection(line, edge, true);\n        if (!intersection2) return;\n        const intersectionKey = keyForPoint(intersection2);\n        if (seen.has(intersectionKey)) return;\n        seen.add(intersectionKey);\n        clippedPoints.push(intersection2);\n      });\n    }\n    if (clippedPoints.length === 0) return originalPoints;\n    Rect.points(rect).forEach((point) => {\n      if (!Polygon.containsPoint(points, point)) return;\n      seen.add(keyForPoint(point));\n      clippedPoints.push(point);\n    });\n    return Point.sortClockwise([...originalPoints, ...clippedPoints]);\n  }\n};\nfunction keyForPoint(point) {\n  return `${point == null ? void 0 : point.x}-${point == null ? void 0 : point.y}`;\n}\n\n// ../../library/src/modules/floatingPositionSafeAreaStyle.ts\nfunction invertPlacement(placement) {\n  switch (placement) {\n    case \"top\":\n      return \"bottom\";\n    case \"right\":\n      return \"left\";\n    case \"bottom\":\n      return \"top\";\n    case \"left\":\n      return \"right\";\n    default:\n      assertNever(placement);\n  }\n}\nfunction preferredOffset(point, length, max, collisionDetectionPadding = 0) {\n  const min = Math.max(point, collisionDetectionPadding);\n  if (point < min) return min;\n  const size = length + collisionDetectionPadding;\n  if (min + size > max) return max - size;\n  return min;\n}\nfunction collisionAxis(placement, rect, windowSize) {\n  switch (placement) {\n    case \"top\":\n    case \"bottom\":\n      if (rect.y < 0 || rect.y + rect.height > windowSize.height) return \"y\";\n      return void 0;\n    case \"left\":\n    case \"right\":\n      if (rect.x < 0 || rect.x + rect.width > windowSize.width) return \"x\";\n      return void 0;\n    default:\n      assertNever(placement);\n  }\n}\nfunction getPlacementAndOffsetAvoidingScreenCollision(rect, placement, offset, windowSize) {\n  switch (collisionAxis(placement, rect, windowSize)) {\n    case \"x\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x * -1,\n        y: offset.y\n      };\n    case \"y\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x,\n        y: offset.y * -1\n      };\n    default:\n      return {\n        placement,\n        x: offset.x,\n        y: offset.y\n      };\n  }\n}\nfunction getSafePlacementFloatingPositionRect(anchor, element, placement, alignment, offset, collisionDetectionSize, collisionDetectionPadding) {\n  const rebasedRect = Rect.rebaseRectOnto(element, anchor, placement, alignment);\n  const preferredRect = {\n    x: rebasedRect.x + offset.x,\n    y: rebasedRect.y + offset.y,\n    width: element.width,\n    height: element.height\n  };\n  if (!collisionDetectionSize) return [placement, preferredRect];\n  const {\n    x,\n    y,\n    placement: safePlacement\n  } = getPlacementAndOffsetAvoidingScreenCollision(preferredRect, placement, offset, collisionDetectionSize);\n  const rebasedCollisionRect = Rect.rebaseRectOnto(element, anchor, safePlacement, alignment);\n  return [\n    safePlacement,\n    {\n      x: preferredOffset(\n        rebasedCollisionRect.x + x,\n        element.width,\n        collisionDetectionSize.width,\n        collisionDetectionPadding\n      ),\n      y: preferredOffset(\n        rebasedCollisionRect.y + y,\n        element.height,\n        collisionDetectionSize.height,\n        collisionDetectionPadding\n      ),\n      width: element.width,\n      height: element.height\n    }\n  ];\n}\nfunction preferredPoint(a, b, points) {\n  if (Polygon.containsPoint([b, ...points], a)) return b;\n  return a;\n}\nvar minInset = 5;\nfunction safeAreaPolygonConstraints(rect) {\n  return {\n    constrainX: (value) => Math.min(Math.max(value, rect.x + minInset), rect.x + rect.width - minInset),\n    constrainY: (value) => Math.min(Math.max(value, rect.y + minInset), rect.y + rect.height - minInset)\n  };\n}\nvar mouseOffset = 4;\nfunction polygonPoints({ x, y }, placement, rect, { constrainX, constrainY }) {\n  const [tl, bl, tr, br] = Rect.points(rect);\n  switch (placement) {\n    case \"left\": {\n      const mousePoint = { x: constrainX(x - mouseOffset), y };\n      return [mousePoint, preferredPoint(br, bl, [mousePoint, tr]), preferredPoint(tr, tl, [mousePoint, br])];\n    }\n    case \"right\": {\n      const mousePoint = { x: constrainX(x + mouseOffset), y };\n      return [mousePoint, preferredPoint(bl, br, [mousePoint, tl]), preferredPoint(tl, tr, [mousePoint, bl])];\n    }\n    case \"top\": {\n      const mousePoint = { x, y: constrainY(y - mouseOffset) };\n      return [mousePoint, preferredPoint(bl, tl, [mousePoint, br]), preferredPoint(br, tr, [mousePoint, bl])];\n    }\n    case \"bottom\": {\n      const mousePoint = { x, y: constrainY(y + mouseOffset) };\n      return [mousePoint, preferredPoint(tl, bl, [mousePoint, tr]), preferredPoint(tr, br, [mousePoint, tl])];\n    }\n    default:\n      assertNever(placement);\n  }\n}\nfunction safeAreaInset(placement, delta) {\n  switch (placement) {\n    case \"left\":\n      return `${Math.min(delta.y, 0)}px auto auto 0px`;\n    case \"right\":\n      return `${Math.min(delta.y, 0)}px 0px auto auto`;\n    case \"top\":\n      return `0px auto auto ${Math.min(delta.x, 0)}px`;\n    case \"bottom\":\n      return `auto auto 0px ${Math.min(delta.x, 0)}px`;\n    default:\n      assertNever(placement);\n  }\n}\nfunction floatingPositionSafeAreaStyle(x, y, placement, anchorRect, floatingRect) {\n  const minX = Math.min(floatingRect.x, anchorRect.x);\n  const minY = Math.min(floatingRect.y, anchorRect.y);\n  const rect = Rect.merge(anchorRect, floatingRect);\n  const points = polygonPoints({ x, y }, placement, floatingRect, safeAreaPolygonConstraints(anchorRect)).map((point) => `${point.x - minX}px ${point.y - minY}px`).join(\", \");\n  return {\n    height: `${rect.height}px`,\n    width: `${rect.width}px`,\n    clipPath: `polygon(${points})`,\n    inset: safeAreaInset(placement, Rect.delta(anchorRect, floatingRect))\n  };\n}\nfunction valueForFloatingAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return 0;\n    case \"center\":\n      return 0.5;\n    case \"end\":\n      return 1;\n    default:\n      assertNever(alignment);\n  }\n}\nfunction motionOriginFromFloatingPosition(placement = \"bottom\", alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 1 };\n    case \"right\":\n      return { originX: 0, originY: valueForFloatingAlignment(alignment) };\n    case \"bottom\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 0 };\n    case \"left\":\n      return { originX: 1, originY: valueForFloatingAlignment(alignment) };\n    default:\n      assertNever(placement);\n  }\n}\n\n// ../../library/src/modules/Floating.tsx\nimport { jsx as jsx55, jsxs as jsxs14 } from \"react/jsx-runtime\";\nfunction domReadGetAncestorInfo(anchorRef) {\n  var _a;\n  let el = anchorRef.current;\n  const info = {\n    position: \"absolute\",\n    scrolls: false\n  };\n  while (el) {\n    if ((el == null ? void 0 : el.tagName) === \"BODY\") return info;\n    if (((_a = getComputedStyle(el)) == null ? void 0 : _a.position) === \"fixed\") info.position = \"fixed\";\n    if (el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight) info.scrolls = true;\n    if (info.scrolls && info.position === \"fixed\") return info;\n    el = el.parentElement;\n  }\n  return info;\n}\nfunction domReadStartAnimationFrameLoop(onRead) {\n  frame.read(onRead, true);\n  return () => cancelFrame(onRead);\n}\nfunction domWriteCreateUpdateSafeArea(safeAreaRef) {\n  let x = 0;\n  let y = 0;\n  return (anchorRect, calculatedRect, placement, event) => {\n    var _a;\n    if (!((_a = safeAreaRef.current) == null ? void 0 : _a.style)) return;\n    x = (event == null ? void 0 : event.clientX) ?? x;\n    y = (event == null ? void 0 : event.clientY) ?? y;\n    Object.assign(\n      safeAreaRef.current.style,\n      floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect)\n    );\n  };\n}\nfunction domWriteUpdatePosition(floatingPositionRef, position, rect, scrollX, scrollY) {\n  if (!floatingPositionRef.current) return;\n  Object.assign(floatingPositionRef.current.style, {\n    position,\n    visibility: \"visible\",\n    // Append \"px\" because we are assigning this object straight to style.\n    left: ((rect == null ? void 0 : rect.x) ?? 0) + scrollX + \"px\",\n    top: ((rect == null ? void 0 : rect.y) ?? 0) + scrollY + \"px\"\n  });\n}\nvar FloatingStackingContext = /* @__PURE__ */ (() => {\n  const Context2 = React62.createContext(/* @__PURE__ */ new Set());\n  Context2.displayName = \"FloatingStackingContext\";\n  return Context2;\n})();\nfunction useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, { safeArea, onDismiss }) {\n  const descendantStackingContext = useConstant(() => /* @__PURE__ */ new Set());\n  const ancestorStackingContext = React62.useContext(FloatingStackingContext);\n  const [isPresent, safeToRemove] = usePresence();\n  React62.useEffect(() => {\n    if (isPresent) {\n      if (!floatingPositionRef.current) return;\n      floatingPositionRef.current.style.pointerEvents = \"\";\n      ancestorStackingContext.add(floatingPositionRef.current);\n    } else {\n      if (!floatingPositionRef.current) return;\n      floatingPositionRef.current.style.pointerEvents = \"none\";\n      ancestorStackingContext.delete(floatingPositionRef.current);\n      safeToRemove();\n    }\n  }, [isPresent, safeToRemove, floatingPositionRef, ancestorStackingContext]);\n  React62.useEffect(() => {\n    if (!safeArea) {\n      const handleEscape = (e) => {\n        if (e.key !== \"Escape\") return;\n        onDismiss();\n      };\n      safeWindow.addEventListener(\"keyup\", handleEscape);\n      return () => safeWindow.removeEventListener(\"keyup\", handleEscape);\n    }\n    let latestEvent;\n    function maybeDismiss() {\n      if (!latestEvent || descendantStackingContext.size !== 0) return;\n      for (const element of document.elementsFromPoint(latestEvent.x, latestEvent.y)) {\n        if (element === anchorRef.current) return;\n        if (element === floatingPositionRef.current) return;\n        if (element === safeAreaRef.current) return;\n      }\n      onDismiss();\n    }\n    function scheduleMaybeDismiss(event) {\n      latestEvent = event;\n      frame.read(maybeDismiss);\n    }\n    safeWindow.addEventListener(\"mousemove\", scheduleMaybeDismiss);\n    return () => {\n      safeWindow.removeEventListener(\"mousemove\", scheduleMaybeDismiss);\n    };\n  }, [onDismiss, safeArea, anchorRef, safeAreaRef, floatingPositionRef]);\n  return descendantStackingContext;\n}\nfunction makeGetSafePlacementFloatingPositionRect({\n  placement,\n  alignment,\n  offset,\n  collisionDetectionSize,\n  collisionDetectionPadding\n}) {\n  return (anchor, element) => getSafePlacementFloatingPositionRect(\n    anchor,\n    element,\n    placement,\n    alignment,\n    offset,\n    collisionDetectionSize,\n    collisionDetectionPadding\n  );\n}\nfunction useDynamicMotionOrigin(initialPlacement, alignment) {\n  return useConstant(() => {\n    const { originX, originY } = motionOriginFromFloatingPosition(initialPlacement, alignment);\n    const origin = { x: motionValue(originX), y: motionValue(originY) };\n    return [\n      origin,\n      (placement) => {\n        const values = motionOriginFromFloatingPosition(placement, alignment);\n        origin.x.set(values.originX);\n        origin.y.set(values.originY);\n      }\n    ];\n  });\n}\nfunction childrenWithOrigin(child, { x, y }) {\n  if (!child || !isReactChild(child) || !isReactElement(child)) return null;\n  if (!isObject2(child.props.style) && !isUndefined(child.props.style)) return null;\n  const style = {\n    ...child.props.style,\n    originX: x,\n    originY: y\n  };\n  return React62.cloneElement(child, { style });\n}\nvar overlayContainerId = \"overlay\";\nvar templateOverlayContainerId = \"template-overlay\";\nfunction getPortalContainer(deprecatedSelector, inComponent) {\n  if (inComponent || isUndefined(deprecatedSelector)) {\n    const container2 = document.querySelector(`#${templateOverlayContainerId}`) ?? document.querySelector(`#${overlayContainerId}`);\n    if (container2) return container2;\n  }\n  const container = isString(deprecatedSelector) ? document.querySelector(deprecatedSelector) : void 0;\n  if (container) return container;\n  return document.body;\n}\nfunction Floating({\n  alignment,\n  placement,\n  safeArea,\n  offsetX,\n  offsetY,\n  anchorRef,\n  className: className2,\n  children,\n  portalSelector,\n  zIndex,\n  collisionDetection = false,\n  collisionDetectionPadding,\n  onDismiss,\n  ...rest\n}) {\n  const floatingPositionRef = React62.useRef(null);\n  const safeAreaRef = React62.useRef(null);\n  const contentRef = React62.useRef(null);\n  const [origin, updateOrigin] = useDynamicMotionOrigin(placement, alignment);\n  React62.useLayoutEffect(() => {\n    if (!refHasValue(anchorRef) || !contentRef.current || !placement || !alignment) return;\n    const offset = {\n      x: offsetX ?? 0,\n      y: offsetY ?? 0\n    };\n    let getSafePlacementRect;\n    let position;\n    let cleanup;\n    let cleanupHasRun = false;\n    let initialUpdateHasRun = false;\n    let anchorRect;\n    let elementRect;\n    let safePlacement;\n    let calculatedRect;\n    let latestEvent;\n    let updateSafeArea;\n    let scrollX = 0;\n    let scrollY = 0;\n    const onRender = () => {\n      if (cleanupHasRun) return;\n      domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY);\n      if (safeArea) updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);\n      latestEvent = void 0;\n    };\n    const initialRender = () => {\n      updateSafeArea = domWriteCreateUpdateSafeArea(safeAreaRef);\n      if (latestEvent) {\n        onRender();\n      } else {\n        domWriteUpdatePosition(floatingPositionRef, position, calculatedRect, scrollX, scrollY);\n      }\n      initialUpdateHasRun = true;\n    };\n    const onUpdate = () => {\n      if (cleanupHasRun) return;\n      updateOrigin(safePlacement);\n    };\n    const domReadUpdateSafePlacementAndRect = () => {\n      if (!getSafePlacementRect || cleanupHasRun) return;\n      if (position === \"fixed\") {\n        scrollX = 0;\n        scrollY = 0;\n      } else {\n        scrollX = safeWindow.scrollX;\n        scrollY = safeWindow.scrollY;\n      }\n      anchorRect = anchorRef.current.getBoundingClientRect();\n      const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);\n      safePlacement = safePlacementAndRect[0];\n      calculatedRect = safePlacementAndRect[1];\n    };\n    frame.read(() => {\n      if (cleanupHasRun || !contentRef.current) return;\n      const ancestorInfo = domReadGetAncestorInfo(anchorRef);\n      position = ancestorInfo.position;\n      elementRect = contentRef.current.getBoundingClientRect();\n      getSafePlacementRect = makeGetSafePlacementFloatingPositionRect({\n        placement,\n        alignment,\n        offset,\n        collisionDetectionSize: collisionDetection ? { width: safeWindow.innerWidth, height: safeWindow.innerHeight } : void 0,\n        collisionDetectionPadding\n      });\n      domReadUpdateSafePlacementAndRect();\n      frame.update(onUpdate);\n      frame.render(initialRender);\n      if (!ancestorInfo.scrolls) return;\n      cleanup = domReadStartAnimationFrameLoop(domReadUpdateSafePlacementAndRect);\n    });\n    if (!safeArea) {\n      return () => {\n        cleanup == null ? void 0 : cleanup();\n        cleanupHasRun = true;\n      };\n    }\n    const handleMouseMove = (event) => {\n      latestEvent = event;\n      if (!initialUpdateHasRun) return;\n      frame.read(domReadUpdateSafePlacementAndRect);\n      frame.update(onUpdate, false, true);\n      frame.render(onRender, false, true);\n    };\n    const anchor = anchorRef.current;\n    anchor.addEventListener(\"mousemove\", handleMouseMove);\n    return () => {\n      anchor.removeEventListener(\"mousemove\", handleMouseMove);\n      cleanup == null ? void 0 : cleanup();\n      cleanupHasRun = true;\n    };\n  }, [\n    safeArea,\n    placement,\n    alignment,\n    offsetX,\n    offsetY,\n    anchorRef,\n    collisionDetection,\n    collisionDetectionPadding,\n    updateOrigin\n  ]);\n  const descendantContext = useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, {\n    safeArea,\n    onDismiss\n  });\n  const inComponent = useContext18(ComponentContainerContext);\n  return ReactDOM.createPortal(\n    /* @__PURE__ */ jsxs14(\n      motion.div,\n      {\n        ref: floatingPositionRef,\n        className: className2,\n        style: {\n          // Start from the top left of the screen to prevent jumps.\n          top: 0,\n          left: 0,\n          // Initially rendered as hidden, but the layout effect will set\n          // to visible when the position is calculated.\n          visibility: \"hidden\",\n          width: \"auto\",\n          height: \"auto\",\n          position: \"absolute\",\n          zIndex\n        },\n        ...rest,\n        children: [\n          safeArea ? /* @__PURE__ */ jsx55(\"div\", { ref: safeAreaRef, style: { position: \"absolute\" }, \"data-safearea\": true }) : (\n            // biome-ignore lint/a11y/useKeyWithClickEvents: overlays don't support key events yet.\n            /* @__PURE__ */ jsx55(\"div\", { style: { position: \"fixed\", inset: 0 }, \"aria-hidden\": true, onClick: onDismiss })\n          ),\n          /* @__PURE__ */ jsx55(FloatingStackingContext.Provider, { value: descendantContext, children: /* @__PURE__ */ jsx55(\"div\", { ref: contentRef, children: childrenWithOrigin(children, origin) }) })\n        ]\n      }\n    ),\n    getPortalContainer(portalSelector, inComponent)\n  );\n}\n\n// ../../library/src/modules/Instance.tsx\nimport React63 from \"react\";\nimport { jsx as jsx56 } from \"react/jsx-runtime\";\nvar Instance = /* @__PURE__ */ React63.forwardRef(function Instance2({ Component: Component17, ...props }, ref) {\n  return Component17 ? /* @__PURE__ */ jsx56(Component17, { ...props, ref }) : null;\n});\n\n// ../../library/src/modules/GracefullyDegradingErrorBoundary.tsx\nimport { Component as Component14 } from \"react\";\nimport { jsx as jsx57 } from \"react/jsx-runtime\";\nvar GracefullyDegradingErrorBoundary = class extends Component14 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n    __publicField(this, \"message\", \"Made UI non-interactive due to an error\");\n    __publicField(this, \"messageFatal\", \"Fatal error\");\n    __publicField(this, \"messageReport\", \"If you are the author of this website, please report this issue to the Framer team via https://www.framer.com/contact/\");\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error) {\n    window.__framer_hadFatalError = true;\n    if (\"cause\" in error) {\n      error = error.cause;\n    }\n    console.error(`${isBot ? this.message : this.messageFatal}. ${this.messageReport}. Error:\n\n`, error);\n    const sampleRate = Math.random();\n    if (sampleRate > 0.5) return;\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n    sendTrackingEvent(\"published_site_load_error\", {\n      message: String(error),\n      stack\n    });\n  }\n  render() {\n    var _a, _b;\n    const error = this.state.error;\n    if (!error) return this.props.children;\n    const unwrappedError = \"cause\" in error ? error.cause : error;\n    const closingHTMLComment = /-->/gu;\n    const closingHTMLCommentReplacement = \"--!>\";\n    const dom = isBot ? ((_a = document.getElementById(\"main\")) == null ? void 0 : _a.innerHTML) || \"\" : (\n      // @FIXME: We should have a UI for fatal error recovery.\n      // We don't have a UI for fatal error recovery currently, so we just render nothing for regular users. If we were to throw, React would unmount too.\n      // We do render instead of throwing, so that:\n      // - `componentDidCatch` runs (if we throw here, it does not)\n      // - we can skip logging `Recoverable error during hydration`, because we know it was fatal.\n      \"\"\n    );\n    return (\n      // This has the caveat that we will slightly modify the DOM, but it appears to be fine in this case.\n      // The alternative would be to queue a new task that runs after and then set the innerHTML (= avoids the dummy-div), but that means we'll have DOM -> no DOM -> DOM transitions. With the div, we have DOM -> DOM and remove possible race-conditions.\n      /* @__PURE__ */ jsx57(\n        \"div\",\n        {\n          style: { display: \"contents\" },\n          suppressHydrationWarning: true,\n          dangerouslySetInnerHTML: {\n            __html: `<!-- DOM replaced by GracefullyDegradingErrorBoundary due to \"${unwrappedError.message.replace(closingHTMLComment, closingHTMLCommentReplacement)}\". ${this.messageReport}: --><!-- Stack: ${(_b = error.stack) == null ? void 0 : _b.replace(closingHTMLComment, \"--!>\")} -->` + dom\n          }\n        }\n      )\n    );\n  }\n};\n\n// ../../library/src/modules/LazyValue.ts\nvar LazyValue = class _LazyValue {\n  constructor(resolver) {\n    this.resolver = resolver;\n    __publicField(this, \"status\");\n  }\n  static is(value) {\n    return value instanceof _LazyValue;\n  }\n  get state() {\n    var _a;\n    return ((_a = this.status) == null ? void 0 : _a.type) ?? \"pending\";\n  }\n  /** Preload the value so it can be read() later. */\n  preload() {\n    if (this.status) {\n      const status = this.status;\n      if (status.type !== \"pending\") return;\n      return status.promise;\n    }\n    const promise = this.resolver().then(\n      (value) => {\n        this.status = {\n          type: \"fulfilled\",\n          value\n        };\n      },\n      (error) => {\n        this.status = {\n          type: \"rejected\",\n          error\n        };\n      }\n    );\n    this.status = {\n      type: \"pending\",\n      promise\n    };\n    return promise;\n  }\n  /** Synchronously read the value after calling preload() before. */\n  read() {\n    const status = this.status;\n    if (!status) {\n      throw new Error(\"Need to call preload() before read()\");\n    }\n    switch (status.type) {\n      case \"pending\":\n        throw new Error(\"Need to wait for preload() to resolve\");\n      case \"fulfilled\":\n        return status.value;\n      case \"rejected\":\n        throw status.error;\n      default:\n        assertNever(status);\n    }\n  }\n  async readAsync() {\n    const promise = this.preload();\n    if (promise) await promise;\n    return this.read();\n  }\n  use() {\n    const promise = this.preload();\n    if (promise) throw promise;\n    return this.read();\n  }\n};\n\n// ../../library/src/modules/Link/index.tsx\nimport { forwardRef as forwardRef5, isValidElement as isValidElement5, useMemo as useMemo12 } from \"react\";\n\n// ../../library/src/render/utils/findAnchorElement.ts\nfunction findAnchorElement(target, withinElement) {\n  if (target instanceof HTMLAnchorElement) {\n    return target;\n  }\n  if (target instanceof Element) {\n    if (target === withinElement) {\n      return null;\n    }\n    return findAnchorElement(target.parentElement, withinElement);\n  }\n  return null;\n}\n\n// ../../library/src/modules/ChildrenCanSuspend.tsx\nimport { forwardRef as forwardRef4 } from \"react\";\nimport { jsx as jsx58 } from \"react/jsx-runtime\";\nfunction ChildrenCanSuspend({ children }) {\n  return /* @__PURE__ */ jsx58(SuspenseThatPreservesDom, { children });\n}\nfunction withChildrenCanSuspend(Component17) {\n  return forwardRef4(function withChildrenCanSuspendInner(props, ref) {\n    return /* @__PURE__ */ jsx58(ChildrenCanSuspend, { children: /* @__PURE__ */ jsx58(Component17, { ...props, ref }) });\n  });\n}\n\n// ../../library/src/modules/LinkToWebPage.ts\nvar linkKey = \"webPageId\";\nfunction isLinkToWebPage(link) {\n  return Boolean(link && typeof link === \"object\" && linkKey in link);\n}\n\n// ../../library/src/modules/observeRouteForPreloading.ts\nvar PRELOAD_AFTER_MS = 500;\nvar OBSERVER_THRESHOLD = 0.9;\nvar LOW_MEMORY_THRESHOLD = 1.7;\nvar MAX_CONCURRENT_PRELOADS_SLOW_NETWORK = 4;\nvar MAX_CONCURRENT_PRELOADS_FAST_NETWORK = Infinity;\nvar nodeToRoute = /* @__PURE__ */ new WeakMap();\nvar preloadedRoutes = /* @__PURE__ */ new Set();\nvar routeToNodesInViewport = /* @__PURE__ */ new Map();\nfunction getObserveRouteForPreloadingFn() {\n  var _a;\n  const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {};\n  const lowDeviceMemory = navigator.deviceMemory && navigator.deviceMemory > LOW_MEMORY_THRESHOLD;\n  let effectiveType, preloadDisabled, maxPreloadAmount;\n  function updateConnection() {\n    effectiveType = connection.effectiveType || \"\";\n    preloadDisabled = connection.saveData || effectiveType.includes(\"2g\");\n    maxPreloadAmount = effectiveType === \"3g\" || lowDeviceMemory ? MAX_CONCURRENT_PRELOADS_SLOW_NETWORK : MAX_CONCURRENT_PRELOADS_FAST_NETWORK;\n  }\n  (_a = connection.addEventListener) == null ? void 0 : _a.call(connection, \"change\", updateConnection);\n  updateConnection();\n  const observer = new IntersectionObserver(onPreloadIntersectionChange, { threshold: OBSERVER_THRESHOLD });\n  let activePreloadsAmount = 0;\n  async function preloadTimeout(route, target) {\n    if (preloadDisabled) return;\n    const nodesInViewport = routeToNodesInViewport.get(route);\n    if (!(nodesInViewport == null ? void 0 : nodesInViewport.size) || preloadedRoutes.has(route)) return;\n    ++activePreloadsAmount;\n    preloadedRoutes.add(route);\n    const preloadDone = preloadRoute(route).catch(() => {\n      if (false) {\n        throw new Error(\n          \"Error in preloadRoute during preloadTimeout. This should never happen as it introduces bugs. Please make sure preloadRoute does not throw.\"\n        );\n      }\n    });\n    observer.unobserve(target);\n    nodeToRoute.delete(target);\n    for (const node of nodesInViewport) {\n      observer.unobserve(node);\n      nodeToRoute.delete(node);\n    }\n    nodesInViewport.clear();\n    routeToNodesInViewport.delete(route);\n    await preloadDone;\n    --activePreloadsAmount;\n  }\n  function onPreloadIntersectionChange(entries) {\n    var _a2;\n    for (const entry of entries) {\n      const target = entry.target;\n      const route = nodeToRoute.get(target);\n      if (!route || preloadedRoutes.has(route)) {\n        observer.unobserve(target);\n        nodeToRoute.delete(target);\n        continue;\n      }\n      const nodes = routeToNodesInViewport.get(route);\n      const amountOfNodesInViewport = ((_a2 = routeToNodesInViewport.get(route)) == null ? void 0 : _a2.size) ?? 0;\n      if (entry.isIntersecting) {\n        if (activePreloadsAmount >= maxPreloadAmount) continue;\n        if (nodes) nodes.add(target);\n        else routeToNodesInViewport.set(route, /* @__PURE__ */ new Set([target]));\n        setTimeout(preloadTimeout.bind(void 0, route, target), PRELOAD_AFTER_MS);\n      } else {\n        if (nodes) nodes.delete(target);\n        if (amountOfNodesInViewport <= 1) routeToNodesInViewport.delete(route);\n      }\n    }\n  }\n  return (route, node) => {\n    if (preloadedRoutes.has(route)) return;\n    nodeToRoute.set(node, route);\n    observer.observe(node);\n    return () => {\n      nodeToRoute.delete(node);\n      observer.unobserve(node);\n    };\n  };\n}\nvar observeRouteForPreloading = (\n  // this also guards `window`\n  !shouldPreloadBasedOnUA || typeof IntersectionObserver === \"undefined\" ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn()\n);\n\n// ../../library/src/modules/resolveSlug.ts\nvar noLocale = Symbol(\"noLocale\");\nvar resolveSlugCache = /* @__PURE__ */ new Map();\nfunction resolveSlug(unresolvedSlug, utilsByCollectionId, activeLocale) {\n  var _a, _b;\n  const cache2 = (_b = (_a = resolveSlugCache == null ? void 0 : resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale)) == null ? void 0 : _a.get(unresolvedSlug.collectionId)) == null ? void 0 : _b.get(unresolvedSlug.collectionItemId);\n  if (cache2) return cache2;\n  const collectionCache = resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale) ?? /* @__PURE__ */ new Map();\n  resolveSlugCache.set((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale, collectionCache);\n  const collectionItemCache = collectionCache.get(unresolvedSlug.collectionId) ?? /* @__PURE__ */ new Map();\n  collectionCache.set(unresolvedSlug.collectionId, collectionItemCache);\n  const lazyValue = new LazyValue(async () => {\n    try {\n      const getUtils = utilsByCollectionId[unresolvedSlug.collectionId];\n      if (!getUtils) {\n        throw new Error(`Key not found in collection utils for collection id: \"${unresolvedSlug.collectionId}\"`);\n      }\n      const utils = await getUtils();\n      if (!utils) throw new Error(\"Collection does not contain utility functions\");\n      const slug = await utils.getSlugByRecordId(unresolvedSlug.collectionItemId, activeLocale ?? void 0);\n      return slug;\n    } catch (error) {\n      console.warn(`Failed to resolve slug: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      return void 0;\n    }\n  });\n  collectionItemCache.set(unresolvedSlug.collectionItemId, lazyValue);\n  return lazyValue;\n}\n\n// ../../library/src/modules/Link/resolveSlugs.ts\nasync function resolveSlugs(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  async function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils) return {};\n    const result = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      await lazyValue.preload();\n      const value = lazyValue.read();\n      if (value) {\n        result[slugKey] = value;\n      }\n    }\n    return result;\n  }\n  const [pathResult, slugResult] = await Promise.allSettled([\n    handleSlugs(unresolvedPathSlugs),\n    handleSlugs(unresolvedHashSlugs)\n  ]);\n  return {\n    path: pathResult.status === \"fulfilled\" ? pathResult.value : void 0,\n    hash: slugResult.status === \"fulfilled\" ? slugResult.value : void 0\n  };\n}\nfunction resolveSlugsWithSuspense(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  const promises = [];\n  function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils) return void 0;\n    const result2 = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      const promise = lazyValue.preload();\n      if (promise) {\n        promises.push(promise);\n      } else {\n        const value = lazyValue.read();\n        if (value) {\n          result2[slugKey] = value;\n        }\n      }\n    }\n    return result2;\n  }\n  const result = {\n    path: handleSlugs(unresolvedPathSlugs),\n    hash: handleSlugs(unresolvedHashSlugs)\n  };\n  if (promises.length) {\n    throw Promise.allSettled(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/Link/urlChecks.tsx\nfunction isInternalURL(href) {\n  if (href === void 0) return false;\n  if (href.startsWith(\"#\") || href.startsWith(\"/\") || href.startsWith(\".\")) return true;\n  return false;\n}\nfunction isValidURL(href, isInternal) {\n  try {\n    const url = new URL(href);\n    return Boolean(url.protocol);\n  } catch {\n  }\n  return isInternal;\n}\n\n// ../../library/src/modules/Link/findMatchingRouteAttributes.tsx\nasync function findMatchingRouteAttributesForWebPageLink(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = await resolveSlugs(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForWebPageLinkWithSuspense(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = resolveSlugsWithSuspense(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForResolvedPath(router, path, implicitPathVariables) {\n  if (!router.routes || !router.getRoute) {\n    return;\n  }\n  const isInternal = isInternalURL(path);\n  if (!isInternal) {\n    return;\n  }\n  try {\n    const [pathnameWithQueryParams, hash2] = path.split(\"#\", 2);\n    assert(pathnameWithQueryParams !== void 0, \"A href must have a defined pathname.\");\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    assert(pathname !== void 0, \"A href must have a defined pathname.\");\n    const { routeId, pathVariables } = inferInitialRouteFromPath(router.routes, pathname);\n    const route = router.getRoute(routeId);\n    if (route) {\n      const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables);\n      return {\n        routeId,\n        route,\n        href: path,\n        // If the link is resolved (in ResolveLink), we trust that the hash is also resolved. Otherwise, it\n        // should be resolved by getHashForRoute.\n        elementId: hash2,\n        pathVariables: combinedPathVariables\n      };\n    }\n  } catch {\n  }\n}\nfunction getRouteAttributes(router, currentRoute, routeId, hash2, implicitPathVariables, pathVariables, hashVariables, resolvedSlugs) {\n  var _a;\n  const combinedPathVariables = { ...implicitPathVariables, ...pathVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.path };\n  const combinedHashVariables = { ...implicitPathVariables, ...hashVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.hash };\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  const resolvedHref = getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: currentRoute == null ? void 0 : currentRoute.pathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    preserveQueryParams: router.preserveQueryParams,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const resolvedHash = resolvedHref.split(\"#\", 2)[1];\n  return {\n    routeId,\n    route,\n    href: resolvedHref,\n    elementId: resolvedHash,\n    pathVariables: combinedPathVariables\n  };\n}\n\n// ../../library/src/modules/Link/getRouteFromPageLink.tsx\nfunction getRouteFromPageLink(pageLink, router, currentRoute) {\n  var _a;\n  if (isString(pageLink)) {\n    const isInternal = isInternalURL(pageLink);\n    if (!router.routes || !router.getRoute || !currentRoute || !isInternal) {\n      return;\n    }\n    const [pathnameWithQueryParams] = pageLink.split(\"#\", 2);\n    if (pathnameWithQueryParams === void 0) return;\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    if (pathname === void 0) return;\n    const { routeId } = inferInitialRouteFromPath(router.routes, pathname);\n    return router.getRoute(routeId);\n  }\n  const { webPageId } = pageLink;\n  return (_a = router.getRoute) == null ? void 0 : _a.call(router, webPageId);\n}\n\n// ../../library/src/modules/framerPageLink.ts\nvar elementKey = \"element\";\nvar collectionKey = \"collection\";\nvar collectionItemIdKey = \"collectionItemId\";\nvar pathVariablesKey = \"pathVariables\";\nvar mediaType = \"framer/page-link,\";\nfunction isFramerPageLink(value) {\n  return isString(value) && value.startsWith(`data:${mediaType}`);\n}\nfunction createFramerPageLink(targetId = null, options = {}) {\n  const target = targetId ? targetId : \"none\";\n  const link = new URL(`data:${mediaType}${target}`);\n  if (options.element) {\n    link.searchParams.append(elementKey, options.element);\n  }\n  if (options.collectionItem) {\n    link.searchParams.append(collectionKey, options.collectionItem.collection);\n    link.searchParams.append(collectionItemIdKey, options.collectionItem.collectionItemId);\n    link.searchParams.append(pathVariablesKey, new URLSearchParams(options.collectionItem.pathVariables).toString());\n  }\n  return link.href;\n}\nfunction parseFramerPageLink(link) {\n  if (!isFramerPageLink(link)) return;\n  try {\n    const url = new URL(link);\n    const target = url.pathname.substring(mediaType.length);\n    const searchParams = url.searchParams;\n    const element = searchParams.has(elementKey) ? searchParams.get(elementKey) : void 0;\n    let collectionItem;\n    const collection = searchParams.get(collectionKey);\n    const collectionItemId = searchParams.get(collectionItemIdKey);\n    const pathVariablesValue = searchParams.get(pathVariablesKey);\n    if (collection && collectionItemId && pathVariablesValue) {\n      const pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesValue).entries());\n      collectionItem = {\n        collection,\n        collectionItemId,\n        pathVariables\n      };\n    }\n    return {\n      target: target === \"none\" ? null : target,\n      /**\n       * For historical reason we used to set \"element=none\" into the\n       * datalink, we no longer do that today, but we still keep this code\n       * so we could parse legacy links correctly.\n       */\n      element: element === \"none\" ? void 0 : element,\n      collectionItem\n    };\n  } catch {\n    return;\n  }\n}\nfunction shouldOpenLinkInNewTab(link) {\n  return !isFramerPageLink(link);\n}\nfunction navigateFromAttributes(navigate, element, implicitPathVariables) {\n  var _a;\n  let routeId = element.getAttribute(\"data-framer-page-link-target\" /* Page */);\n  let elementId;\n  let pathVariables;\n  if (routeId) {\n    elementId = element.getAttribute(\"data-framer-page-link-element\" /* Element */) ?? void 0;\n    const pathVariablesRaw = element.getAttribute(\"data-framer-page-link-path-variables\" /* PathVariables */);\n    if (pathVariablesRaw) {\n      pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesRaw).entries());\n    }\n  } else {\n    const href = element.getAttribute(\"href\");\n    if (!href) return false;\n    const link = parseFramerPageLink(href);\n    if (!link || !link.target) return false;\n    routeId = link.target;\n    elementId = link.element ?? void 0;\n    pathVariables = (_a = link.collectionItem) == null ? void 0 : _a.pathVariables;\n  }\n  const smoothScroll = elementId ? element.dataset.framerSmoothScroll !== void 0 : void 0;\n  navigate(routeId, elementId, Object.assign({}, implicitPathVariables, pathVariables), smoothScroll);\n  return true;\n}\n\n// ../../library/src/modules/Link/linkFromFramerPageLink.tsx\nfunction linkFromFramerPageLink(link) {\n  if (!isFramerPageLink(link)) return link;\n  const parsed = parseFramerPageLink(link);\n  if (!parsed) return void 0;\n  const { target, element, collectionItem } = parsed;\n  if (!target) return void 0;\n  return {\n    webPageId: target,\n    hash: element ?? void 0,\n    pathVariables: createVariablesFromPageLinkCollectionItem(collectionItem)\n  };\n}\nfunction createVariablesFromPageLinkCollectionItem(collectionItem) {\n  if (!collectionItem) return void 0;\n  const variables = {};\n  for (const pathVariablesKey2 in collectionItem.pathVariables) {\n    const value = collectionItem.pathVariables[pathVariablesKey2];\n    if (value) variables[pathVariablesKey2] = value;\n  }\n  return variables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nimport { useContext as useContext20 } from \"react\";\n\n// ../../library/src/modules/Link/pathVariables.tsx\nimport { createContext as createContext8, useContext as useContext19 } from \"react\";\nvar pathVariablesRegExp2 = /:([a-z]\\w*)/gi;\nvar PathVariablesContext = /* @__PURE__ */ createContext8(void 0);\nfunction useImplicitPathVariables() {\n  var _a;\n  const contextPathVariables = useContext19(PathVariablesContext);\n  const currentPathVariables = (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n  const pathVariables = contextPathVariables || currentPathVariables;\n  return pathVariables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nfunction linkMatchesRoute(route, { webPageId, hash: hash2, pathVariables }, implicitPathVariables) {\n  if (webPageId !== route.id) return false;\n  if (hash2) return false;\n  if (route.path && route.pathVariables) {\n    const combinedPathVariable = Object.assign({}, implicitPathVariables, pathVariables);\n    for (const [, key7] of route.path.matchAll(pathVariablesRegExp2)) {\n      if (!key7) return false;\n      if (route.pathVariables[key7] !== combinedPathVariable[key7]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction useLinkMatchesRoute(link) {\n  const route = useCurrentRoute();\n  const contextPathVariables = useContext20(PathVariablesContext);\n  if (!route) return false;\n  const pageLink = isString(link) ? linkFromFramerPageLink(link) : link;\n  return isLinkToWebPage(pageLink) ? linkMatchesRoute(route, pageLink, contextPathVariables) : false;\n}\n\n// ../../library/src/modules/Link/types.ts\nvar AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {\n  AnchorLinkTarget2[\"_blank\"] = \"_blank\";\n  AnchorLinkTarget2[\"_self\"] = \"_self\";\n  return AnchorLinkTarget2;\n})(AnchorLinkTarget || {});\n\n// ../../library/src/modules/Link/propsForLink.tsx\nfunction propsForLink(href, options) {\n  const isInternal = isInternalURL(href);\n  const props = {\n    href: href === \"\" || isValidURL(href, isInternal) ? href : `https://${href}`,\n    target: getTargetAttrValue(options == null ? void 0 : options.openInNewTab, isInternal),\n    rel: !isInternal ? combineRels(\"noopener\", options == null ? void 0 : options.rel) : void 0\n  };\n  if (options == null ? void 0 : options.preserveParams) {\n    props.href = forwardCurrentQueryParams(props.href ?? href);\n    props[\"data-framer-preserve-params\"] = true;\n  }\n  if (options == null ? void 0 : options.trackLinkClick) {\n    props.onClick = () => {\n      void options.trackLinkClick(href);\n    };\n  }\n  return props;\n}\nfunction getTargetAttrValue(openInNewTab, isInternal) {\n  if (openInNewTab !== void 0) {\n    return openInNewTab ? \"_blank\" /* _blank */ : void 0;\n  }\n  return isInternal ? void 0 : \"_blank\" /* _blank */;\n}\nfunction combineRels(rel, otherRel) {\n  if (rel && !otherRel) return rel;\n  if (!rel && otherRel) return otherRel;\n  if (rel && otherRel) return `${rel} ${otherRel}`;\n  return void 0;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { Children as Children3, createContext as createContext9, createElement, isValidElement as isValidElement4, useCallback as useCallback12, useContext as useContext21, useMemo as useMemo11 } from \"react\";\n\n// ../../library/src/modules/NestedLinksCollector.ts\nfunction linkInfoKey(link) {\n  var _a, _b;\n  return `${link.scopeId}:${link.nodeId}:${(_a = link.furthestExternalComponent) == null ? void 0 : _a.scopeId}:${(_b = link.furthestExternalComponent) == null ? void 0 : _b.nodeId}`;\n}\nvar NestedLinksCollector = class {\n  constructor() {\n    __publicField(this, \"collectedLinks\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nestingInfo\", /* @__PURE__ */ new Map());\n  }\n  clear() {\n    this.collectedLinks.clear();\n    this.nestingInfo.clear();\n  }\n  /**\n   * Returns a Map of outer links to their inner links.\n   *\n   * NOTE: This function is called in the SSG renderer sandbox (<root>/src/ssg/src/ssg-sandbox-renderer/sandbox/worker/renderer.ts)\n   */\n  getLinks() {\n    const result = /* @__PURE__ */ new Map();\n    for (const [outerLinkKey, innerLinkKeys] of this.nestingInfo) {\n      const outerLinkInfo = this.collectedLinks.get(outerLinkKey);\n      assert(outerLinkInfo, `Outer link not found: ${outerLinkKey}`);\n      const links = Array.from(innerLinkKeys).map((innerLinkKey) => {\n        const innerLinkInfo = this.collectedLinks.get(innerLinkKey);\n        assert(innerLinkInfo, `Inner link not found: ${innerLinkKey}`);\n        return innerLinkInfo;\n      });\n      result.set(outerLinkInfo, links);\n    }\n    return result;\n  }\n  collectNestedLink(outerLink, innerLink) {\n    if (isWindow && !isTest() || !outerLink.nodeId || !innerLink.nodeId) {\n      return;\n    }\n    this.collectedLinks.set(linkInfoKey(outerLink), outerLink);\n    this.collectedLinks.set(linkInfoKey(innerLink), innerLink);\n    const outerLinkNestingInfo = this.nestingInfo.get(linkInfoKey(outerLink)) ?? /* @__PURE__ */ new Set();\n    outerLinkNestingInfo.add(linkInfoKey(innerLink));\n    this.nestingInfo.set(linkInfoKey(outerLink), outerLinkNestingInfo);\n  }\n};\nvar nestedLinksCollector = /* @__PURE__ */ new NestedLinksCollector();\n\n// ../../library/src/modules/useIsOnFramerCanvas.ts\nfunction useIsOnFramerCanvas() {\n  return RenderTarget.current() === RenderTarget.canvas;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { jsx as jsx59 } from \"react/jsx-runtime\";\nvar OuterLinkContext = /* @__PURE__ */ createContext9(void 0);\nfunction useReplaceNestedLinks(children, scopeId, nodeId, href, propsAddedByLink, observerRef) {\n  const outerLink = useContext21(OuterLinkContext);\n  const furthestExternalComponent = useFurthestExternalComponent();\n  const innerLink = useMemo11(\n    () => ({ scopeId, nodeId, furthestExternalComponent }),\n    [scopeId, nodeId, furthestExternalComponent]\n  );\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const route = useMemo11(() => {\n    const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n    if (!pageLink) return;\n    return getRouteFromPageLink(pageLink, router, currentRoute);\n  }, [currentRoute, href, router]);\n  const isOnFramerCanvas = useIsOnFramerCanvas();\n  const shouldReplaceLink = Boolean(!isOnFramerCanvas && (outerLink == null ? void 0 : outerLink.nodeId) && innerLink.nodeId);\n  const onClick = useCallback12(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href) return;\n      event.preventDefault();\n      event.stopPropagation();\n      const isAppleDevice = /Mac|iPod|iPhone|iPad/u.test(navigator.userAgent);\n      if (isAppleDevice ? event.metaKey : event.ctrlKey) {\n        openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n        return;\n      }\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  const onAuxClick = useCallback12(\n    (event) => {\n      if (!propsAddedByLink.href) return;\n      event.preventDefault();\n      event.stopPropagation();\n      openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n    },\n    [propsAddedByLink]\n  );\n  const onKeyDown = useCallback12(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href) return;\n      if (event.key !== \"Enter\") return;\n      event.preventDefault();\n      event.stopPropagation();\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  useRefEffect(\n    observerRef,\n    (node) => {\n      if (node === null) return;\n      if (!shouldReplaceLink) return;\n      node.dataset.hydrated = \"true\";\n    },\n    [shouldReplaceLink]\n  );\n  let replacedChildren = children;\n  if (shouldReplaceLink) {\n    Children3.forEach(children, (child) => {\n      if (!isChildReplaceable(child)) return;\n      assert(\n        linkInfoIsCollectable(outerLink),\n        \"outerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      assert(\n        linkInfoIsCollectable(innerLink),\n        \"innerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      nestedLinksCollector.collectNestedLink(outerLink, innerLink);\n    });\n    replacedChildren = Children3.map(children, (child) => {\n      if (!isChildReplaceable(child)) return child;\n      const tag = maybeReplaceAnchorWithSpan(child.type);\n      const { children: childChildren, ...childProps } = child.props;\n      const props = {\n        ...childProps,\n        // This attribute is used in `ssg/src/ssg-sandbox-renderer/worker/nestedLinks.ts` to handle the nested links clicks\n        \"data-nested-link\": true,\n        role: \"link\",\n        tabIndex: 0,\n        onClick,\n        onAuxClick,\n        onKeyDown,\n        as: childProps.as && maybeReplaceAnchorWithSpan(childProps.as)\n      };\n      const ref = \"ref\" in child ? child.ref : void 0;\n      return createElement(\n        tag,\n        // We need to pass the ref here again, otherwise it will be lost\n        { ...props, ref },\n        childChildren\n      );\n    });\n  }\n  return /* @__PURE__ */ jsx59(OuterLinkContext.Provider, { value: innerLink, children: replacedChildren });\n}\nfunction linkInfoIsCollectable(linkInfo) {\n  return !isUndefined(linkInfo == null ? void 0 : linkInfo.nodeId);\n}\nfunction isChildReplaceable(child) {\n  return isValidElement4(child) && (maybeReplaceAnchorWithSpan(child.type) !== child.type || maybeReplaceAnchorWithSpan(child.props.as) !== child.props.as);\n}\nfunction openExternalLink(href, rel, target) {\n  const link = document.createElement(\"a\");\n  link.href = href;\n  if (rel) {\n    link.rel = rel;\n  }\n  if (target) {\n    link.target = target;\n  }\n  document.body.appendChild(link);\n  link.click();\n  link.remove();\n}\nfunction maybeReplaceAnchorWithSpan(component) {\n  if (component === \"a\") return \"span\";\n  if (isMotionComponent(component) && unwrapMotionComponent(component) === \"a\") return motion.span;\n  return component;\n}\n\n// ../../library/src/modules/Link/useTrackLinkClick.ts\nimport { useCallback as useCallback13 } from \"react\";\nfunction useTrackLinkClick({\n  nodeId,\n  clickTrackingId,\n  router,\n  href,\n  activeLocale\n}) {\n  return useCallback13(\n    async (hrefAttribute) => {\n      var _a, _b, _c, _d, _e;\n      if (!((_a = router.pageviewEventData) == null ? void 0 : _a.current)) return;\n      const pageviewEventData = router.pageviewEventData.current instanceof Promise ? await router.pageviewEventData.current : router.pageviewEventData.current;\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!isLinkToWebPage(pageLink)) {\n        return sendTrackingEvent(\n          \"published_site_click\",\n          {\n            ...pageviewEventData,\n            href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n            nodeId: nodeId ?? null,\n            trackingId: clickTrackingId || null,\n            targetRoutePath: null,\n            targetWebPageId: null,\n            targetCollectionItemId: null\n          },\n          \"eager\"\n        );\n      }\n      const targetWebPageId = pageLink.webPageId;\n      const targetRoute = (_b = router == null ? void 0 : router.getRoute) == null ? void 0 : _b.call(router, targetWebPageId);\n      const targetRoutePath = (targetRoute == null ? void 0 : targetRoute.path) ?? null;\n      let targetCollectionItemId = null;\n      if ((targetRoute == null ? void 0 : targetRoute.collectionId) && pageLink.pathVariables && ((_c = router.collectionUtils) == null ? void 0 : _c[targetRoute.collectionId])) {\n        const utils = await ((_e = (_d = router.collectionUtils)[targetRoute.collectionId]) == null ? void 0 : _e.call(_d));\n        const [slug] = Object.values(pageLink.pathVariables);\n        if (utils && typeof slug === \"string\") {\n          targetCollectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      return sendTrackingEvent(\n        \"published_site_click\",\n        {\n          ...pageviewEventData,\n          href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n          nodeId: nodeId ?? null,\n          trackingId: clickTrackingId ?? null,\n          targetRoutePath,\n          targetWebPageId,\n          targetCollectionItemId\n        },\n        \"eager\"\n      );\n    },\n    [nodeId, clickTrackingId, router, href, activeLocale]\n  );\n}\nfunction makeUrlAbsolute(href) {\n  try {\n    const url = new URL(href, safeWindow.document.baseURI);\n    return url.origin === safeWindow.location.origin ? url.pathname + url.search + url.hash : url.href;\n  } catch {\n    return href;\n  }\n}\n\n// ../../library/src/modules/Link/index.tsx\nfunction performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll, beforeUrlUpdate) {\n  var _a, _b;\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  if (route && isLazyComponentType(route == null ? void 0 : route.page)) {\n    void route.page.preload();\n  }\n  (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, combinedPathVariables, smoothScroll, beforeUrlUpdate);\n}\nfunction createOnClickLinkHandler(router, routeId, href, trackLinkClick, elementId, combinedPathVariables, smoothScroll) {\n  return async (event) => {\n    const usedMetaKey = event.metaKey;\n    const anchorElement = findAnchorElement(event.target);\n    const isExternalLink = !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */;\n    const shouldPerformNavigation = !usedMetaKey && !isExternalLink;\n    const track = () => void trackLinkClick(href);\n    if (!shouldPerformNavigation) {\n      await yieldToMain({ priority: \"user-blocking\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" });\n      track();\n      return;\n    }\n    event.preventDefault();\n    performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll, track);\n  };\n}\nfunction propsForRoutePath(href, router, currentRoute, linkOptions, implicitPathVariables) {\n  if (!currentRoute) return propsForLink(href, linkOptions);\n  const matchedRoute = findMatchingRouteAttributesForResolvedPath(router, href, implicitPathVariables);\n  if (!matchedRoute) return propsForLink(href, linkOptions);\n  const { routeId, route, elementId, pathVariables } = matchedRoute;\n  if (!route) return propsForLink(href, linkOptions);\n  const path = getPathForRoute(route, {\n    // If the link is resolved, we trust that the slugs are resolved.\n    currentRoutePath: currentRoute.path,\n    currentPathVariables: currentRoute.pathVariables,\n    // The hash value is already fully resolved so we don't need to\n    // provide any hashVariables.\n    hash: elementId,\n    pathVariables,\n    preserveQueryParams: router.preserveQueryParams && !isBot,\n    // don't preserve query params for bots\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const anchorTarget = getTargetAttrValue(linkOptions.openInNewTab, true);\n  return {\n    href: path,\n    target: anchorTarget,\n    onClick: createOnClickLinkHandler(\n      router,\n      routeId,\n      path,\n      linkOptions.trackLinkClick,\n      elementId,\n      pathVariables,\n      linkOptions.smoothScroll\n    ),\n    navigate: () => performNavigation(router, routeId, elementId, pathVariables, linkOptions.smoothScroll),\n    \"data-framer-page-link-current\": !elementId && currentRoute.id === routeId || void 0\n  };\n}\nvar Link = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef5(function Link2({\n    children,\n    href,\n    openInNewTab,\n    smoothScroll,\n    clickTrackingId,\n    relValues,\n    preserveParams,\n    nodeId,\n    scopeId,\n    motionChild,\n    ...restProps\n  }, forwardedRef) {\n    const router = useRouter();\n    const currentRoute = useCurrentRoute();\n    const implicitPathVariables = useImplicitPathVariables();\n    const { activeLocale } = useLocaleInfo();\n    const trackLinkClick = useTrackLinkClick({\n      nodeId,\n      clickTrackingId,\n      router,\n      href,\n      activeLocale\n    });\n    const propsAddedByLink = useMemo12(() => {\n      if (!href) return {};\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!pageLink) return {};\n      if (isString(pageLink)) {\n        return propsForRoutePath(\n          pageLink,\n          router,\n          currentRoute,\n          { openInNewTab, trackLinkClick, rel: relValues == null ? void 0 : relValues.join(\" \"), preserveParams, smoothScroll },\n          implicitPathVariables\n        );\n      }\n      const {\n        routeId,\n        href: resolvedHref,\n        elementId,\n        pathVariables\n      } = findMatchingRouteAttributesForWebPageLinkWithSuspense(\n        router,\n        currentRoute,\n        pageLink,\n        activeLocale,\n        implicitPathVariables\n      );\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: resolvedHref,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(\n          router,\n          routeId,\n          resolvedHref,\n          trackLinkClick,\n          elementId,\n          pathVariables,\n          smoothScroll\n        ),\n        navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n        \"data-framer-page-link-current\": currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0\n      };\n    }, [\n      href,\n      router,\n      activeLocale,\n      implicitPathVariables,\n      openInNewTab,\n      currentRoute,\n      smoothScroll,\n      trackLinkClick,\n      relValues,\n      preserveParams\n    ]);\n    const hasRef = isValidElement5(children) && \"ref\" in children;\n    const observerRef = useObserverRef(hasRef ? children.ref : void 0);\n    useRefEffect(\n      observerRef,\n      (node) => {\n        var _a;\n        if (node === null) return;\n        const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n        if (!pageLink) return;\n        const route = getRouteFromPageLink(pageLink, router, currentRoute);\n        if (!route) return;\n        return (_a = observeRouteForPreloading) == null ? void 0 : _a(route, node);\n      },\n      [currentRoute, href, router]\n    );\n    let replacedChildren = children;\n    const { navigate, ...propsAddedByLinkExceptNavigate } = propsAddedByLink;\n    const isInternalNavigation = Boolean(navigate);\n    const clone = useCloneChildrenWithPropsAndRef(forwardedRef);\n    replacedChildren = clone.cloneAsArray(\n      replacedChildren,\n      (childProps) => cloneChildPropsWithAggregatedEvents(\n        childProps,\n        {\n          ...restProps,\n          ...rebindEventHandlersIfNeeded(propsAddedByLinkExceptNavigate, motionChild, isInternalNavigation)\n        },\n        observerRef\n      )\n    );\n    replacedChildren = useReplaceNestedLinks(replacedChildren, scopeId, nodeId, href, propsAddedByLink, observerRef);\n    return replacedChildren;\n  })\n);\nfunction cloneChildPropsWithAggregatedEvents(childProps, linkProps, observerRef) {\n  const aggregatedProps = {\n    ...childProps,\n    ...linkProps,\n    ref: observerRef\n  };\n  const { onTap, onClick } = linkProps;\n  if (!onTap && !onClick) {\n    return aggregatedProps;\n  }\n  const { onClick: childOnClick, onTap: childOnTap } = childProps;\n  return {\n    ...aggregatedProps,\n    onClick: onClick || childOnClick ? (event) => {\n      if (isFunction(childOnClick)) {\n        childOnClick == null ? void 0 : childOnClick(event);\n      }\n      onClick == null ? void 0 : onClick(event);\n    } : void 0,\n    onTap: onTap || childOnTap ? (event, info) => {\n      if (isFunction(childOnTap)) {\n        childOnTap == null ? void 0 : childOnTap(event, info);\n      }\n      onTap == null ? void 0 : onTap(event, info);\n    } : void 0\n  };\n}\nfunction rebindEventHandlersIfNeeded(linkProps, motionChild, isInternalNavigation) {\n  const shouldReplaceClickWithTap = Boolean(motionChild && isIOS());\n  if (!shouldReplaceClickWithTap) return linkProps;\n  const { onClick, ...restProps } = linkProps;\n  if (!onClick) return linkProps;\n  if (isInternalNavigation) {\n    return {\n      ...restProps,\n      onTap: onClick,\n      // When the link is an internal link, we're already doing SPA routing in onClick\n      // prevent the default click behavior so that we don't trigger a native anchor link navigation again.\n      onClick: preventClickOnNativeAnchorLink\n    };\n  }\n  return { ...restProps, onTap: onClick };\n}\nfunction preventClickOnNativeAnchorLink(event) {\n  const anchorElement = findAnchorElement(event.target);\n  if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */) return;\n  event.preventDefault();\n}\n\n// ../../library/src/modules/Link/resolveLink.ts\nfunction resolveLink(href, router, implicitPathVariables) {\n  return resolveLinkInternal(href, router, implicitPathVariables);\n}\nfunction resolveLinkInternal(href, router, implicitPathVariables, onlyHash, resolveSlugs2) {\n  const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n  if (!isLinkToWebPage(pageLink)) return isString(href) ? propsForLink(href).href : void 0;\n  if (!router.getRoute || !router.currentRouteId) return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const route = router.getRoute(webPageId);\n  const resolvedSlugs = unresolvedPathSlugs || unresolvedHashSlugs ? resolveSlugs2 == null ? void 0 : resolveSlugs2(unresolvedPathSlugs, unresolvedHashSlugs) : void 0;\n  const combinedPathVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    pathVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.path\n  );\n  const combinedHashVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    hashVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.hash\n  );\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    relative: false,\n    preserveQueryParams: router.preserveQueryParams,\n    onlyHash,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n}\n\n// ../../library/src/modules/Link/resolvePageScope.tsx\nfunction resolvePageScope(pageLink, router) {\n  if (!router.getRoute || !router.currentRouteId) return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId } = pageLink;\n  const route = router.getRoute(webPageId);\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    relative: false,\n    preserveQueryParams: false,\n    siteCanonicalURL: void 0\n  });\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport React67, { startTransition as startTransition7, Suspense as Suspense4, useContext as useContext25, useEffect as useEffect20, useMemo as useMemo14, useState as useState7 } from \"react\";\n\n// ../../library/src/components/IgnoreErrors.tsx\nimport { Component as Component15 } from \"react\";\nvar IgnoreErrors = class extends Component15 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  render() {\n    if (this.state.error) return null;\n    return this.props.children;\n  }\n};\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport React64, { startTransition as startTransition4, useContext as useContext22 } from \"react\";\n\n// ../../library/src/render/presentation/Forms/antibot.ts\nvar salt = \"framer\";\nvar difficulty = 3;\nvar tokenLength = 30;\nvar maxTime = 1e4;\nfunction createWorkerTask() {\n  return (function() {\n    async function sha256(text) {\n      const buffer = new TextEncoder().encode(text);\n      const hashBuffer = await crypto.subtle.digest(\"SHA-256\", buffer);\n      return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n    }\n    function randomCharacters(count) {\n      const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n      let result = \"\";\n      const charactersLength = characters.length;\n      for (let i = 0; i < count; i++) {\n        result += characters.charAt(Math.floor(Math.random() * charactersLength));\n      }\n      return result;\n    }\n    addEventListener(\"message\", async (event) => {\n      const { salt: salt2, difficulty: difficulty2, tokenLength: tokenLength2, maxTime: maxTime2 } = event.data;\n      const target = \"0\".repeat(difficulty2);\n      const startTime = performance.now();\n      let processing = true;\n      while (processing) {\n        const timestamp = performance.now();\n        if (timestamp - startTime > maxTime2) {\n          processing = false;\n          postMessage({ success: false });\n          return;\n        }\n        const nonce = randomCharacters(tokenLength2);\n        const secret = `${Date.now()}:${nonce}`;\n        const hash2 = await sha256(salt2 + secret);\n        if (hash2.startsWith(target)) {\n          postMessage({ success: true, secret, hash: hash2 });\n          return;\n        }\n      }\n    });\n  }).toString();\n}\nasync function calculateProofOfWork() {\n  return new Promise((resolve, reject) => {\n    const webWorkerURL = URL.createObjectURL(\n      new Blob([\"(\", createWorkerTask(), \")()\"], {\n        type: \"application/javascript\"\n      })\n    );\n    const worker = new Worker(webWorkerURL);\n    worker.onmessage = (event) => {\n      worker.terminate();\n      URL.revokeObjectURL(webWorkerURL);\n      if (event.data.success) {\n        resolve({ secret: event.data.secret, hash: event.data.hash });\n      } else {\n        resolve(void 0);\n      }\n    };\n    worker.onerror = (event) => {\n      worker.terminate();\n      URL.revokeObjectURL(webWorkerURL);\n      reject(event);\n    };\n    worker.postMessage({\n      salt,\n      difficulty,\n      tokenLength,\n      maxTime\n    });\n  });\n}\n\n// ../../library/src/render/presentation/Forms/formData.ts\nfunction getEncodedFormFieldsHeader(data2) {\n  return Array.from(data2.keys()).map(encodeURIComponent).join(\",\");\n}\nfunction addUTMTagsToFormData(data2, document2) {\n  try {\n    const matches = document2.cookie.match(\"(^|;) ?framerFormsUTMTags=([^;]*)(;|$)\");\n    if (matches !== null && matches[2]) {\n      const parsed = JSON.parse(decodeURIComponent(matches[2]));\n      if (!parsed || typeof parsed !== \"object\") return;\n      [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\", \"gclid\"].forEach((key7) => {\n        if (typeof parsed[key7] === \"string\") data2.append(key7, parsed[key7]);\n      });\n    }\n  } catch (e) {\n  }\n}\n\n// ../../library/src/render/presentation/Forms/trackFormSubmit.ts\nfunction trackFormSubmit({ router, nodeId, submitTrackingId }) {\n  var _a;\n  if (!((_a = router == null ? void 0 : router.pageviewEventData) == null ? void 0 : _a.current)) return;\n  if (router.pageviewEventData.current instanceof Promise) {\n    void router.pageviewEventData.current.then((pageviewEventData) => {\n      sendFormSubmitTrackingEvent(pageviewEventData, nodeId, submitTrackingId);\n    });\n  } else {\n    sendFormSubmitTrackingEvent(router.pageviewEventData.current, nodeId, submitTrackingId);\n  }\n}\nfunction sendFormSubmitTrackingEvent(pageviewEventData, nodeId, trackingId) {\n  return sendTrackingEvent(\n    \"published_site_form_submit\",\n    {\n      ...pageviewEventData,\n      nodeId: nodeId ?? null,\n      trackingId: trackingId || null\n    },\n    \"eager\"\n  );\n}\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport { jsx as jsx60 } from \"react/jsx-runtime\";\nvar pendingState = { state: \"pending\" };\nvar successState = { state: \"success\" };\nvar incompleteState = { state: \"incomplete\" };\nvar completeState = { state: \"complete\" };\nvar errorState = { state: \"error\" };\nfunction formReducer({ state }, { type }) {\n  switch (type) {\n    case \"complete\":\n      if (state === \"error\") return errorState;\n      return completeState;\n    case \"incomplete\":\n      if (state === \"error\") return errorState;\n      return incompleteState;\n    case \"submit\":\n      return pendingState;\n    case \"success\":\n      return successState;\n    case \"error\":\n      return errorState;\n    default:\n      assertNever(type);\n  }\n}\nfunction stateCanSubmitForm({ state }) {\n  return state === \"incomplete\" || state === \"complete\";\n}\nfunction preventDefault(e) {\n  e.preventDefault();\n}\nfunction openExternalLinkInCurrentTab(link, formRef) {\n  const href = isValidURL(link, false) ? link : `https://${link}`;\n  const linkElement = document.createElement(\"a\");\n  linkElement.href = href;\n  linkElement.target = \"_self\";\n  linkElement.style.display = \"none\";\n  if (!(\"current\" in formRef && formRef.current)) return;\n  formRef.current.appendChild(linkElement);\n  linkElement.click();\n  linkElement.remove();\n}\nvar FormContext = React64.createContext(void 0);\nvar FormContainer = /* @__PURE__ */ React64.forwardRef(function FormContainer2({ action, children, redirectUrl, onSuccess, onError, onLoading, submitTrackingId, nodeId, ...props }, forwardedRef) {\n  const fallbackRef = React64.useRef(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const implicitPathVariables = useImplicitPathVariables();\n  const [state, dispatch] = React64.useReducer(formReducer, incompleteState);\n  const { activeLocale } = useLocaleInfo();\n  const projectHash = useContext22(FormContext);\n  const callbacks = React64.useRef({ onSuccess, onError, onLoading });\n  callbacks.current = { onSuccess, onError, onLoading };\n  async function redirectTo(link) {\n    var _a, _b;\n    if (isString(link)) {\n      const matchingRoute2 = findMatchingRouteAttributesForResolvedPath(router, link, implicitPathVariables);\n      if (!matchingRoute2) {\n        openExternalLinkInCurrentTab(link, ref);\n        return;\n      }\n      const { routeId: routeId2, elementId: elementId2, pathVariables: pathVariables2 } = matchingRoute2;\n      (_a = router.navigate) == null ? void 0 : _a.call(router, routeId2, elementId2, pathVariables2);\n      return;\n    }\n    assert(isLinkToWebPage(link), \"Expected link to be either a LinkToWebPage or a string\", link);\n    const matchingRoute = await findMatchingRouteAttributesForWebPageLink(\n      router,\n      currentRoute,\n      link,\n      activeLocale,\n      implicitPathVariables\n    );\n    const { routeId, elementId, pathVariables } = matchingRoute;\n    (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, pathVariables);\n  }\n  const handleSubmit = async (event) => {\n    var _a, _b, _c, _d, _e, _f;\n    event.preventDefault();\n    if (!action || !projectHash) return;\n    dispatch({ type: \"submit\" });\n    const data2 = new FormData(event.currentTarget);\n    await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n    addUTMTagsToFormData(data2, safeWindow.document);\n    for (const [key7, value] of data2) {\n      if (value instanceof File) data2.delete(key7);\n    }\n    try {\n      (_b = (_a = callbacks.current).onLoading) == null ? void 0 : _b.call(_a);\n      trackFormSubmit({\n        router,\n        nodeId,\n        submitTrackingId,\n        activeLocale\n      });\n      await submitForm(action, data2, projectHash);\n      startTransition4(() => dispatch({ type: \"success\" }));\n      (_d = (_c = callbacks.current).onSuccess) == null ? void 0 : _d.call(_c);\n      if (redirectUrl) {\n        await redirectTo(redirectUrl);\n      }\n    } catch (error) {\n      startTransition4(() => dispatch({ type: \"error\" }));\n      (_f = (_e = callbacks.current).onError) == null ? void 0 : _f.call(_e);\n      console.error(error);\n    }\n  };\n  const handleKeyDown = (event) => {\n    const { target: input, currentTarget: form, key: key7 } = event;\n    const isTextArea = input instanceof HTMLTextAreaElement;\n    if (isTextArea) return;\n    if (key7 === \"Enter\" && form.checkValidity()) {\n      event.preventDefault();\n      void handleSubmit(event);\n    }\n  };\n  const checkValidity = async (e) => {\n    const target = e.currentTarget;\n    await yieldToMain({ priority: \"background\", continueAfter: \"paint\" });\n    startTransition4(() => dispatch({ type: anyEmptyRequiredFields(target) ? \"incomplete\" : \"complete\" }));\n  };\n  return /* @__PURE__ */ jsx60(\n    motion.form,\n    {\n      ...props,\n      onSubmit: stateCanSubmitForm(state) ? handleSubmit : preventDefault,\n      onKeyDown: handleKeyDown,\n      onChange: checkValidity,\n      ref,\n      children: children(state)\n    }\n  );\n});\nfunction anyEmptyRequiredFields(element) {\n  if (element.children.length === 0) return false;\n  for (const child of element.children) {\n    if (child instanceof HTMLInputElement || child instanceof HTMLTextAreaElement || child instanceof HTMLSelectElement) {\n      if (child.required && child.value === \"\") return true;\n    } else {\n      const result = anyEmptyRequiredFields(child);\n      if (result) return true;\n    }\n  }\n  return false;\n}\nasync function submitForm(action, data2, projectHash) {\n  const proofOfWork = await calculateProofOfWork();\n  if (!proofOfWork) {\n    throw new Error(\"Failed to calculate proof of work\");\n  }\n  const response = await fetch(action, {\n    body: data2,\n    method: \"POST\",\n    headers: {\n      \"Framer-Site-Id\": projectHash,\n      \"Framer-POW\": proofOfWork.secret,\n      \"Framer-Form-Fields\": getEncodedFormFieldsHeader(data2)\n    }\n  });\n  if (response.ok) {\n    return response;\n  } else {\n    const body = await response.json();\n    const error = \"Failed to submit form\";\n    if (responseHasError(body)) {\n      throw new Error(`${error} - ${body.error.message}`);\n    }\n    throw new Error(error);\n  }\n}\nfunction responseHasError(response) {\n  return typeof response === \"object\" && response !== null && \"error\" in response && isObject2(response.error) && \"message\" in response.error && typeof response.error.message === \"string\";\n}\n\n// ../../library/src/router/Router.tsx\nimport { Fragment as Fragment10, startTransition as startTransition5, useCallback as useCallback14, useLayoutEffect as useLayoutEffect7, useMemo as useMemo13, useRef as useRef19 } from \"react\";\n\n// ../../library/src/router/isSamePage.ts\nfunction isSamePage(a, b) {\n  if (a.routeId !== b.routeId) return false;\n  if (a.pathVariables === b.pathVariables) return true;\n  const aPathVariables = a.pathVariables || {};\n  const bPathVariables = b.pathVariables || {};\n  return aPathVariables.length === bPathVariables.length && Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);\n}\n\n// ../../library/src/router/pageAnalytics.ts\nimport { useContext as useContext23, useEffect as useEffect18, useRef as useRef18 } from \"react\";\nvar timezone = null;\nvar visitorLocale = null;\nfunction setTimezoneAndLocaleForTracking() {\n  const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();\n  timezone = resolvedDateTimeOptions.timeZone;\n  visitorLocale = resolvedDateTimeOptions.locale;\n}\nrequestIdleCallback(setTimezoneAndLocaleForTracking);\nvar useSendPageView = (currentRoute, currentRouteId, currentPathnameWithHash, currentPathVariables, collectionUtils, activeLocale) => {\n  const framerSiteId = useContext23(FormContext);\n  const pageviewEventData = useRef18();\n  const skipFirstPageView = useRef18(true);\n  useEffect18(() => {\n    function getFullPageviewEventData() {\n      if (!timezone || !visitorLocale) setTimezoneAndLocaleForTracking();\n      const currentLocation = currentPathnameWithHash ? new URL(safeWindow.location.origin + currentPathnameWithHash) : safeWindow.location;\n      const eventData = {\n        version: pageviewEventVersion,\n        abTestId: currentRoute == null ? void 0 : currentRoute.abTestId,\n        framerSiteId: framerSiteId ?? null,\n        // If we are in a variant route, let's use the variant ID as the route ID instead, so that the analytics panel will be able to show the correct tracking data.\n        webPageId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,\n        routePath: (currentRoute == null ? void 0 : currentRoute.path) || \"/\",\n        collectionItemId: null,\n        framerLocale: (activeLocale == null ? void 0 : activeLocale.code) || null,\n        referrer: null,\n        // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.\n        url: currentLocation.href,\n        hostname: currentLocation.hostname,\n        // Capture the current location before the user moves to a new page to prevent\n        // tracking wrong pathnames due to a race condition caused by async operations\n        // when resolving the collection item ID below\n        pathname: currentLocation.pathname,\n        search: currentLocation.search || null,\n        hash: currentLocation.hash || null,\n        timezone,\n        locale: visitorLocale\n      };\n      return (currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables ? (async () => {\n        var _a;\n        let collectionItemId = null;\n        const utils = currentRoute.collectionId && await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils));\n        const [slug] = Object.values(currentPathVariables);\n        if (utils && typeof slug === \"string\") {\n          collectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n        return { ...eventData, collectionItemId };\n      })() : eventData;\n    }\n    void (async () => {\n      const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();\n      const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;\n      pageviewEventData.current = eventData;\n      if (skipFirstPageView.current) {\n        skipFirstPageView.current = false;\n      } else {\n        sendTrackingEvent(\"published_site_pageview\", eventData, \"eager\");\n      }\n    })();\n    const listener = async (event) => {\n      if (event.persisted) {\n        const eventDataOrPromise = pageviewEventData.current = getFullPageviewEventData();\n        const eventData = eventDataOrPromise instanceof Promise ? await eventDataOrPromise : eventDataOrPromise;\n        pageviewEventData.current = eventData;\n        sendTrackingEvent(\"published_site_pageview\", eventData, \"eager\");\n      }\n    };\n    window.addEventListener(\"pageshow\", listener);\n    return () => {\n      window.removeEventListener(\"pageshow\", listener);\n    };\n  }, [\n    currentRoute,\n    currentRouteId,\n    currentPathnameWithHash,\n    currentPathVariables,\n    collectionUtils,\n    activeLocale,\n    framerSiteId\n  ]);\n  return pageviewEventData;\n};\n\n// ../../library/src/router/types.ts\nvar defaultLocaleId = \"default\";\n\n// ../../library/src/router/useForceUpdate.ts\nimport React65 from \"react\";\nfunction useForceUpdate3() {\n  const [_, setForcedRenderCount] = React65.useState(0);\n  return [_, React65.useCallback(() => setForcedRenderCount((v) => v + 1), [])];\n}\n\n// ../../library/src/router/Router.tsx\nimport { jsx as jsx61, jsxs as jsxs15 } from \"react/jsx-runtime\";\nfunction updateScrollPosition(hash2, smoothScroll, isHistoryTransition) {\n  const element = hash2 && document.getElementById(hash2);\n  if (element) {\n    scrollElementIntoView(element, smoothScroll);\n    return;\n  }\n  if (isHistoryTransition) return;\n  window.scrollTo(0, 0);\n}\nfunction useScheduleRenderSideEffects(dep) {\n  const actions = useRef19([]);\n  useLayoutEffect7(() => {\n    var _a;\n    if (!((_a = actions.current) == null ? void 0 : _a.length)) return;\n    actions.current.forEach((action) => action());\n    actions.current = [];\n  }, [dep]);\n  return useCallback14((cb) => {\n    actions.current.push(cb);\n  }, []);\n}\nfunction executeBeforeUrlUpdateOnce(beforeUrlUpdate) {\n  if (!beforeUrlUpdate) return noop2;\n  let beforeUrlUpdateExecuted = false;\n  return () => {\n    if (beforeUrlUpdateExecuted) return;\n    beforeUrlUpdateExecuted = true;\n    beforeUrlUpdate == null ? void 0 : beforeUrlUpdate();\n  };\n}\nfunction useNavigationTransition() {\n  const startNativeSpinner = useNativeLoadingSpinner();\n  const navigationController = useRef19(void 0);\n  return useCallback14(\n    async (transitionFn, nextRender, updateURL, isAbortable = true) => {\n      var _a, _b;\n      const hasUpdateURL = updateURL !== void 0;\n      (_a = navigationController.current) == null ? void 0 : _a.abort();\n      const controller = isAbortable ? new AbortController() : void 0;\n      navigationController.current = controller;\n      const signal = controller == null ? void 0 : controller.signal;\n      const stopMonitoringINPRelatedInputs = monitorINPRelatedInputs(signal);\n      void nextRender.promise.finally(stopMonitoringINPRelatedInputs);\n      if (!hasUpdateURL) {\n        navigationController.current = void 0;\n        transitionFn(signal);\n        return nextRender.promise;\n      }\n      transitionFn(signal);\n      let resolveNavigationPromise;\n      const navigationPromise = new Promise((resolve, reject) => {\n        resolveNavigationPromise = resolve;\n        signal == null ? void 0 : signal.addEventListener(\"abort\", reject);\n      }).catch(noop2);\n      startNativeSpinner(navigationPromise, updateURL, controller);\n      await nextRender.promise;\n      if (signal == null ? void 0 : signal.aborted) return;\n      const navigationTransition = (_b = window.navigation) == null ? void 0 : _b.transition;\n      resolveNavigationPromise();\n      try {\n        await (navigationTransition == null ? void 0 : navigationTransition.finished);\n      } catch (error) {\n        console.error(\"Navigation transition failed\", error);\n      }\n      if (signal == null ? void 0 : signal.aborted) return;\n      announceNavigation();\n    },\n    [startNativeSpinner]\n  );\n}\nfunction Router({\n  defaultPageStyle,\n  disableHistory,\n  initialPathVariables,\n  initialRoute,\n  notFoundPage,\n  collectionUtils,\n  routes,\n  initialLocaleId,\n  locales = EMPTY_ARRAY,\n  preserveQueryParams = false,\n  LayoutTemplate,\n  editorBar,\n  siteCanonicalURL\n}) {\n  useMarkRouterEffects();\n  useReplaceInitialState({\n    disabled: disableHistory,\n    routeId: initialRoute,\n    initialPathVariables,\n    initialLocaleId\n  });\n  const startViewTransition2 = useViewTransition();\n  const [dep, forceUpdate] = useForceUpdate3();\n  const scheduleSideEffect = useScheduleRenderSideEffects(dep);\n  const startNavigation = useNavigationTransition();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change\");\n  const { synchronousNavigationOnDesktop } = useLibraryFeatures();\n  const transitionFn = useMemo13(() => {\n    if (!synchronousNavigationOnDesktop || !isDesktop()) {\n      return startTransition5;\n    }\n    return (fn) => fn();\n  }, [synchronousNavigationOnDesktop]);\n  const isInitialNavigationRef = useRef19(true);\n  const currentPathnameWithHashRef = useRef19();\n  const currentRouteRef = useRef19(initialRoute);\n  const currentPathVariablesRef = useRef19(initialPathVariables);\n  const currentLocaleIdRef = useRef19(initialLocaleId);\n  const currentLocaleId = currentLocaleIdRef.current;\n  const activeLocale = useMemo13(() => {\n    return locales.find(({ id }) => {\n      if (!currentLocaleId) return id === defaultLocaleId;\n      return id === currentLocaleId;\n    }) ?? null;\n  }, [currentLocaleId, locales]);\n  const localeInfo = useMemo13(() => {\n    return {\n      activeLocale,\n      locales,\n      setLocale: async (localeOrLocaleId) => {\n        const nextRender = monitorNextPaintAfterRender({\n          localized: true\n        });\n        await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n        let localeId;\n        if (isString(localeOrLocaleId)) {\n          localeId = localeOrLocaleId;\n        } else if (isObject2(localeOrLocaleId)) {\n          localeId = localeOrLocaleId.id;\n        }\n        const defaultLocale = locales.find(({ id }) => id === defaultLocaleId);\n        const nextLocale = locales.find(({ id }) => id === localeId);\n        if (!nextLocale) return;\n        const currentRouteId2 = currentRouteRef.current;\n        const currentRoute2 = routes[currentRouteId2];\n        if (!currentRoute2) return;\n        try {\n          const localeResult = await switchLocale({\n            currentLocale: activeLocale,\n            nextLocale,\n            route: currentRoute2,\n            routeId: currentRouteId2,\n            defaultLocale,\n            pathVariables: currentPathVariablesRef.current,\n            collectionUtils,\n            preserveQueryParams\n          });\n          if (!localeResult) return;\n          const currentStatePaginationInfo = isHistoryState(window.history.state) ? window.history.state.paginationInfo : void 0;\n          const currentPath = localeResult.path;\n          isInitialNavigationRef.current = false;\n          currentPathVariablesRef.current = localeResult.pathVariables;\n          currentLocaleIdRef.current = nextLocale.id;\n          const updateURL = async (ignorePushStateWrapper = false) => {\n            if (!currentPath) return;\n            return pushHistoryState(\n              {\n                routeId: currentRouteId2,\n                pathVariables: localeResult.pathVariables,\n                localeId: nextLocale.id,\n                paginationInfo: currentStatePaginationInfo\n              },\n              currentPath,\n              ignorePushStateWrapper\n            );\n          };\n          void startNavigation(\n            () => {\n              void startViewTransition2(\n                currentRouteId2,\n                currentRouteId2,\n                () => transitionFn(forceUpdate)\n                // no signal here, because we update the refs above immediately\n              );\n            },\n            nextRender,\n            updateURL,\n            false\n          );\n        } catch {\n        }\n      }\n    };\n  }, [\n    activeLocale,\n    collectionUtils,\n    forceUpdate,\n    locales,\n    preserveQueryParams,\n    routes,\n    startNavigation,\n    startViewTransition2,\n    monitorNextPaintAfterRender,\n    transitionFn\n  ]);\n  const setCurrentRouteId = useCallback14(\n    (routeId, localeId, hash2, pathnameWithHash, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {\n      isInitialNavigationRef.current = false;\n      const currentRouteId2 = currentRouteRef.current;\n      currentRouteRef.current = routeId;\n      currentPathVariablesRef.current = pathVariables;\n      currentLocaleIdRef.current = localeId;\n      currentPathnameWithHashRef.current = pathnameWithHash;\n      scheduleSideEffect(() => {\n        updateScrollPosition(hash2, smoothScroll, isHistoryTransition);\n      });\n      if (isHistoryTransition) {\n        transitionFn(forceUpdate);\n        return;\n      }\n      void startNavigation(\n        (signal) => {\n          void startViewTransition2(currentRouteId2, routeId, () => transitionFn(forceUpdate), signal);\n        },\n        nextRender,\n        updateURL,\n        true\n      );\n    },\n    [forceUpdate, scheduleSideEffect, startNavigation, startViewTransition2, transitionFn]\n  );\n  usePopStateHandler(currentRouteRef, setCurrentRouteId);\n  const navigate = useCallback14(\n    async (routeId, hash2, pathVariables, smoothScroll, beforeUrlUpdate) => {\n      var _a, _b;\n      const newRoute = routes[routeId];\n      const routeStatus = isLazyComponentType(newRoute == null ? void 0 : newRoute.page) ? newRoute.page.getStatus() : void 0;\n      const hasRendered = routeStatus == null ? void 0 : routeStatus.hasRendered;\n      const nextRender = monitorNextPaintAfterRender({\n        cached: hasRendered,\n        preloaded: hasRendered ? void 0 : routeStatus == null ? void 0 : routeStatus.hasLoaded\n      });\n      const executeBeforeUrlUpdate = executeBeforeUrlUpdateOnce(beforeUrlUpdate);\n      void yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" }).then(\n        executeBeforeUrlUpdate\n      );\n      await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n      if (pathVariables) {\n        const inUse = /* @__PURE__ */ new Set();\n        const path = (newRoute == null ? void 0 : newRoute.path) ?? \"/\";\n        for (const match of path.matchAll(pathVariablesRegExp)) {\n          const usedVariable = match[1];\n          if (usedVariable === void 0) {\n            throw new Error(\"A matching path variable should not be undefined\");\n          }\n          inUse.add(usedVariable);\n        }\n        pathVariables = Object.fromEntries(Object.entries(pathVariables).filter(([key7]) => inUse.has(key7)));\n      }\n      const routeElementId = getRouteElementId(newRoute, hash2);\n      const currentPathVariables2 = currentPathVariablesRef.current;\n      const currentRouteLocaleId = currentLocaleIdRef.current;\n      if (isSamePage(\n        { routeId: currentRouteRef.current, pathVariables: currentPathVariables2 },\n        { routeId, pathVariables }\n      )) {\n        (_a = nextRender.ignore) == null ? void 0 : _a.call(nextRender);\n        const route = routes[routeId];\n        if (((_b = window.history.state) == null ? void 0 : _b.hash) !== hash2 && !disableHistory && route) {\n          executeBeforeUrlUpdate();\n          await pushRouteState(routeId, route, {\n            currentRoutePath: route.path,\n            currentPathVariables: currentPathVariables2,\n            pathVariables,\n            hash: hash2,\n            localeId: currentRouteLocaleId,\n            preserveQueryParams,\n            siteCanonicalURL\n          });\n        }\n        updateScrollPosition(routeElementId, smoothScroll, false);\n        return;\n      }\n      if (!newRoute) return;\n      const currentRoute2 = routes[currentRouteRef.current];\n      const updateURL = async (ignorePushStateWrapper = false) => {\n        executeBeforeUrlUpdate();\n        return pushRouteState(\n          routeId,\n          newRoute,\n          {\n            currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,\n            currentPathVariables: currentPathVariables2,\n            hash: hash2,\n            pathVariables,\n            localeId: currentRouteLocaleId,\n            preserveQueryParams,\n            siteCanonicalURL\n          },\n          ignorePushStateWrapper\n        );\n      };\n      const pathnameWithHash = getSitePrefix(siteCanonicalURL) + getPathForRoute(newRoute, {\n        currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,\n        currentPathVariables: currentPathVariables2,\n        hash: hash2,\n        pathVariables,\n        localeId: currentRouteLocaleId,\n        preserveQueryParams,\n        siteCanonicalURL,\n        relative: false\n        // We need an absolute path for the hash\n      });\n      setCurrentRouteId(\n        routeId,\n        currentRouteLocaleId,\n        routeElementId,\n        pathnameWithHash,\n        pathVariables,\n        false,\n        nextRender,\n        smoothScroll,\n        disableHistory ? void 0 : updateURL\n      );\n    },\n    [routes, setCurrentRouteId, disableHistory, preserveQueryParams, siteCanonicalURL, monitorNextPaintAfterRender]\n  );\n  const getRoute = useGetRouteCallback(routes);\n  const currentRouteId = currentRouteRef.current;\n  const currentPathnameWithHash = currentPathnameWithHashRef.current;\n  const currentPathVariables = currentPathVariablesRef.current;\n  const currentRoute = routes[currentRouteId];\n  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;\n  const pageviewEventData = useSendPageView(\n    currentRoute,\n    currentRouteId,\n    currentPathnameWithHash,\n    currentPathVariables,\n    collectionUtils,\n    activeLocale\n  );\n  const isInitialNavigation = isInitialNavigationRef.current;\n  const api = useMemo13(\n    () => ({\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      pageviewEventData,\n      siteCanonicalURL,\n      isInitialNavigation\n    }),\n    [\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      siteCanonicalURL,\n      pageviewEventData,\n      isInitialNavigation\n    ]\n  );\n  if (!currentRoute) {\n    throw new Error(`Router cannot find route for ${currentRouteId}`);\n  }\n  const pageExistsInCurrentLocale = !activeLocale || !currentRoute.includedLocales || currentRoute.includedLocales.includes(activeLocale.id);\n  const pathWithFilledVariables = currentRoutePath && currentPathVariables ? fillPathVariables(currentRoutePath, currentPathVariables) : currentRoutePath;\n  const remountKey = String(currentLocaleId) + pathWithFilledVariables;\n  const templatePageStyle = useConstant(() => ({ ...defaultPageStyle, display: \"contents\" }));\n  return /* @__PURE__ */ jsx61(RouterAPIProvider, { api, children: /* @__PURE__ */ jsx61(LocaleInfoContext.Provider, { value: localeInfo, children: /* @__PURE__ */ jsx61(SynchronousSuspenseErrorBoundary, { children: /* @__PURE__ */ jsxs15(SuspenseThatPreservesDom, { children: [\n    /* @__PURE__ */ jsxs15(\n      NotFoundErrorBoundary,\n      {\n        notFoundPage,\n        defaultPageStyle,\n        forceUpdateKey: dep,\n        children: [\n          /* @__PURE__ */ jsx61(MarkSuspenseEffects.Start, {}),\n          /* @__PURE__ */ jsx61(\n            WithLayoutTemplate,\n            {\n              LayoutTemplate,\n              routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,\n              style: defaultPageStyle,\n              children: (inLayoutTemplate) => {\n                return /* @__PURE__ */ jsx61(Fragment10, { children: pageExistsInCurrentLocale ? renderPage(\n                  currentRoute.page,\n                  inLayoutTemplate ? templatePageStyle : defaultPageStyle\n                ) : (\n                  // LAYOUT_TEMPLATE @TODO: display: content for not found page?\n                  notFoundPage && renderPage(notFoundPage, defaultPageStyle)\n                ) }, remountKey);\n              }\n            }\n          )\n        ]\n      }\n    ),\n    editorBar,\n    /* @__PURE__ */ jsx61(TurnOnReactEventHandling, {}),\n    /* @__PURE__ */ jsx61(MarkSuspenseEffects.End, {})\n  ] }) }) }) });\n}\nfunction WithLayoutTemplate({ LayoutTemplate, routeId, style, children }) {\n  if (!LayoutTemplate) return children(false);\n  return /* @__PURE__ */ jsx61(LayoutTemplate, { routeId, style, children });\n}\nfunction scrollElementIntoView(element, smoothScroll) {\n  const scrollIntoViewOptions = smoothScroll ? { behavior: \"smooth\", block: \"start\", inline: \"nearest\" } : void 0;\n  element.scrollIntoView(scrollIntoViewOptions);\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport * as React66 from \"react\";\n\n// ../../library/src/render/utils/preloadImage.ts\nfunction preloadImage(url) {\n  return new Promise((resolve, reject) => {\n    try {\n      new URL(url);\n      const image = new Image();\n      image.onload = () => resolve();\n      image.onerror = reject;\n      image.src = url;\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n\n// ../../library/src/utils/getPropertyByPath.ts\nfunction isObjectOrArray(value) {\n  return typeof value === \"object\" && value !== null;\n}\nfunction getPropertyByPath(input, keyPath) {\n  if (keyPath === \"\") {\n    return input;\n  }\n  const keyParts = keyPath.split(/[.[\\]]+/u).filter((part) => part.length > 0);\n  let current = input;\n  for (const part of keyParts) {\n    if (!isObjectOrArray(current)) {\n      return void 0;\n    }\n    current = current[part];\n  }\n  return current;\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport { jsx as jsx62 } from \"react/jsx-runtime\";\nfunction getRequestCacheKey(value) {\n  return `${value.credentials}:${value.url}`;\n}\nvar loadingFetchResult = {\n  status: \"loading\",\n  data: void 0\n};\nfunction isNumberString(value) {\n  return isString(value) && !Number.isNaN(Number(value));\n}\nfunction isValidFetchDataValueResult(type, value) {\n  switch (type) {\n    case \"string\" /* String */:\n      return isString(value) || isNumber(value);\n    case \"color\" /* Color */:\n      return isString(value);\n    case \"boolean\" /* Boolean */:\n      return isBoolean(value);\n    case \"number\" /* Number */:\n      return isNumber(value) || isNumberString(value);\n    case \"link\" /* Link */:\n    case \"image\" /* Image */:\n      return isString(value) && isValidURL(value, false);\n    default: {\n      const _ = type;\n      return false;\n    }\n  }\n}\nfunction resolveFetchDataValue(result, request) {\n  if (result.status === \"loading\") {\n    return request.fallbackValue;\n  }\n  if (result.status === \"error\") {\n    throw result.error;\n  }\n  const resolvedValue = getPropertyByPath(result.data, request.resultKeyPath);\n  if (isUndefined(resolvedValue)) {\n    throw new Error(`Key '${request.resultKeyPath}' not found in response`);\n  }\n  if (!isValidFetchDataValueResult(request.resultOutputType, resolvedValue)) {\n    throw new Error(`Resolved value '${resolvedValue}' is not valid for type '${request.resultOutputType}'`);\n  }\n  return resolvedValue;\n}\nvar minimumCacheDurationMs = 5e3;\nfunction isCacheExpired(insertionTimestamp, cacheDuration) {\n  if (RenderTarget.current() === RenderTarget.canvas) {\n    return false;\n  }\n  const cacheDurationMs = Math.max(cacheDuration * 1e3, minimumCacheDurationMs);\n  const currentTimestamp = Date.now();\n  const expirationTimestamp = insertionTimestamp + cacheDurationMs;\n  return currentTimestamp >= expirationTimestamp;\n}\nvar noop4 = () => {\n};\nvar _subscribers, _preloadedRequests, _shortestCacheDurations, _cachedAt, _ongoingFetches, _staleQueriesInterval;\nvar _FetchClient = class _FetchClient {\n  constructor() {\n    // A map of FetchResult values for each URL\n    __publicField(this, \"responseValues\", /* @__PURE__ */ new Map());\n    // A map of URLs to their subscribers\n    __privateAdd(this, _subscribers, /* @__PURE__ */ new Map());\n    // A set of requests that have been preloaded by a loading variant\n    __privateAdd(this, _preloadedRequests, /* @__PURE__ */ new Set());\n    // Map for how long to cache the response for (in seconds)\n    __privateAdd(this, _shortestCacheDurations, /* @__PURE__ */ new Map());\n    // Map containing a timestamp when a URL was inserted into the cache\n    __privateAdd(this, _cachedAt, /* @__PURE__ */ new Map());\n    // Map of promises for requests that are currently in flight\n    __privateAdd(this, _ongoingFetches, /* @__PURE__ */ new Map());\n    // An ID for an interval that checks for stale queries and refetches\n    __privateAdd(this, _staleQueriesInterval, /* @__PURE__ */ new Map());\n    __publicField(this, \"persistCache\", debounce(() => {\n      const data2 = {};\n      for (const [url, responseValue] of this.responseValues) {\n        if (!responseValue) continue;\n        if (responseValue.status !== \"success\") continue;\n        const cacheConfig = __privateGet(this, _shortestCacheDurations).get(url);\n        if (!cacheConfig || cacheConfig === 0) continue;\n        const storedAt = __privateGet(this, _cachedAt).get(url);\n        if (!storedAt) continue;\n        if (storedAt && isCacheExpired(storedAt, cacheConfig)) {\n          continue;\n        }\n        data2[url] = [storedAt, cacheConfig, responseValue.data];\n      }\n      try {\n        localStorage.setItem(_FetchClient.cacheKey, JSON.stringify(data2));\n      } catch {\n      }\n    }, 500));\n  }\n  unmount() {\n    for (const [key7, interval] of __privateGet(this, _staleQueriesInterval)) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(key7);\n    }\n  }\n  stopQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const interval = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    if (interval) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(cacheKey);\n    }\n  }\n  /**\n   * Start an interval for the given request to refresh the value\n   * depending on the shortest configured cache duration for that request.\n   */\n  startQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const currentIntervalForRequest = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    const shortestCacheDuration = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (currentIntervalForRequest) return;\n    if (!shortestCacheDuration) return;\n    const interval = safeWindow.setInterval(() => {\n      if (document.visibilityState === \"hidden\") return;\n      const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n      if (!shortestCacheDuration || !cachedAt) return;\n      void this.fetchWithCache({\n        ...request,\n        cacheDuration: shortestCacheDuration\n      });\n    }, shortestCacheDuration);\n    __privateGet(this, _staleQueriesInterval).set(cacheKey, interval);\n  }\n  hydrateCache() {\n    try {\n      const rawData = localStorage.getItem(_FetchClient.cacheKey);\n      if (!rawData) return;\n      const data2 = JSON.parse(rawData);\n      if (typeof data2 !== \"object\") throw new Error(\"Invalid cache data\");\n      for (const cacheKey in data2) {\n        const cached = data2[cacheKey];\n        if (!Array.isArray(cached) || cached.length !== 3) throw new Error(\"Invalid cache data\");\n        const [storedAt, cacheDuration, cachedData] = cached;\n        if (isCacheExpired(storedAt, cacheDuration)) continue;\n        __privateGet(this, _cachedAt).set(cacheKey, storedAt);\n        __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n        this.responseValues.set(cacheKey, { status: \"success\", data: cachedData });\n      }\n    } catch (error) {\n      try {\n        localStorage.removeItem(_FetchClient.cacheKey);\n      } catch {\n      }\n    }\n  }\n  setResponseValue(cacheKey, value) {\n    this.responseValues.set(cacheKey, value);\n    this.persistCache();\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    if (!subscribers) return;\n    for (const subscriber of subscribers) {\n      subscriber();\n    }\n  }\n  async prefetch(request) {\n    if (!isBrowser2()) return;\n    if (!isValidURL(request.url, false)) return;\n    const cacheKey = getRequestCacheKey(request);\n    __privateGet(this, _preloadedRequests).add(cacheKey);\n    await this.fetchWithCache(request);\n    const result = this.getValue(cacheKey);\n    if (!result || result.status === \"loading\") {\n      throw new Error(\"Unexpected result status for prefetch\");\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    for (const subscriber of subscribers ?? []) {\n      subscriber();\n    }\n    const resolvedValue = resolveFetchDataValue(result, request);\n    if (request.resultOutputType === \"image\" /* Image */ && isString(resolvedValue)) {\n      await preloadImage(resolvedValue).catch(noop4);\n    }\n    return resolvedValue;\n  }\n  async fetchWithCache(request) {\n    if (!isBrowser2()) return;\n    const cacheKey = getRequestCacheKey(request);\n    const ongoingFetch = __privateGet(this, _ongoingFetches).get(cacheKey);\n    if (ongoingFetch) return ongoingFetch;\n    const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n    const hasExpiredCache = cachedAt && isCacheExpired(cachedAt, request.cacheDuration);\n    if (this.responseValues.has(cacheKey) && !hasExpiredCache) {\n      return;\n    }\n    const currentValue = this.responseValues.get(cacheKey);\n    if (!currentValue) {\n      this.setResponseValue(cacheKey, loadingFetchResult);\n    }\n    const doFetch = async () => {\n      try {\n        const response = await fetch(request.url, {\n          method: \"GET\",\n          credentials: request.credentials\n        });\n        if (!response.ok) {\n          this.setResponseValue(cacheKey, {\n            status: \"error\",\n            error: new Error(\"Invalid Response Status\"),\n            data: void 0\n          });\n          return;\n        }\n        const value = await response.json();\n        this.setResponseValue(cacheKey, { status: \"success\", data: value });\n        __privateGet(this, _cachedAt).set(cacheKey, Date.now());\n      } catch (error) {\n        this.setResponseValue(cacheKey, { status: \"error\", error, data: void 0 });\n      }\n    };\n    const promise = doFetch();\n    __privateGet(this, _ongoingFetches).set(cacheKey, promise);\n    void promise.finally(() => {\n      __privateGet(this, _ongoingFetches).delete(cacheKey);\n    });\n    return promise;\n  }\n  getValue(cacheKey, onlyIfPrefetched = false) {\n    if (onlyIfPrefetched && !__privateGet(this, _preloadedRequests).has(cacheKey)) return void 0;\n    return this.responseValues.get(cacheKey);\n  }\n  subscribe(request, callback, skipFetchRequest = false) {\n    const { url, cacheDuration } = request;\n    if (!isValidURL(url, false)) return noop4;\n    const cacheKey = getRequestCacheKey(request);\n    const cacheDurationForUrl = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (!cacheDurationForUrl || cacheDuration < cacheDurationForUrl) {\n      __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n    }\n    if (!skipFetchRequest) {\n      this.startQueryRefetching(request);\n      void this.fetchWithCache(request);\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey) ?? /* @__PURE__ */ new Set();\n    subscribers.add(callback);\n    __privateGet(this, _subscribers).set(cacheKey, subscribers);\n    return () => {\n      const nextSubscribers = __privateGet(this, _subscribers).get(cacheKey);\n      if (!nextSubscribers) return;\n      nextSubscribers.delete(callback);\n      if (nextSubscribers.size === 0) {\n        __privateGet(this, _subscribers).delete(cacheKey);\n      }\n      if (__privateGet(this, _subscribers).size === 0) {\n        this.stopQueryRefetching(request);\n      }\n    };\n  }\n};\n_subscribers = new WeakMap();\n_preloadedRequests = new WeakMap();\n_shortestCacheDurations = new WeakMap();\n_cachedAt = new WeakMap();\n_ongoingFetches = new WeakMap();\n_staleQueriesInterval = new WeakMap();\n__publicField(_FetchClient, \"cacheKey\", \"framer-fetch-client-cache\");\nvar FetchClient = _FetchClient;\nvar FetchClientContext = /* @__PURE__ */ React66.createContext(void 0);\nvar IsRestoringCacheContext = /* @__PURE__ */ React66.createContext(true);\nvar FetchClientProvider = ({\n  children,\n  client: initialClient\n}) => {\n  const [client] = React66.useState(() => initialClient ?? new FetchClient());\n  const [isRestoring, setIsRestoring] = React66.useState(true);\n  React66.useEffect(() => {\n    client.hydrateCache();\n    React66.startTransition(() => {\n      setIsRestoring(false);\n    });\n    return () => client.unmount();\n  }, [client]);\n  return /* @__PURE__ */ jsx62(IsRestoringCacheContext.Provider, { value: isRestoring, children: /* @__PURE__ */ jsx62(FetchClientContext.Provider, { value: client, children }) });\n};\nvar _subscriptions, _subscribers2, _results, _SSRResults, _onlyPrefetched;\nvar RequestsObserver = class {\n  constructor(client, requests) {\n    this.client = client;\n    this.requests = requests;\n    // a map of subscriptions on the FetchClient\n    __privateAdd(this, _subscriptions, /* @__PURE__ */ new Map());\n    // A set of subscribers to requests of the observer\n    __privateAdd(this, _subscribers2, /* @__PURE__ */ new Set());\n    // The results of the susbcribed requests\n    __privateAdd(this, _results);\n    // getServerSnapshot is also called on the Client while the tree is hydrating.\n    // It is important to always return the same value or hydration warnings will occur.\n    __privateAdd(this, _SSRResults);\n    // When the RequestsObserver mounts we allow reading prefetched values.\n    // This is to support Text FX on mount for requests that were prefetched.\n    __privateAdd(this, _onlyPrefetched, true);\n    __publicField(this, \"updateResults\", () => {\n      const data2 = [];\n      const statuses = /* @__PURE__ */ new Set();\n      const errors = [];\n      for (const request of this.requests) {\n        const cachekey = getRequestCacheKey(request);\n        const value = this.client.getValue(cachekey, __privateGet(this, _onlyPrefetched));\n        if (!value) {\n          statuses.add(\"loading\");\n          data2.push(request.fallbackValue);\n          continue;\n        }\n        statuses.add(value.status);\n        try {\n          const resolvedValue = resolveFetchDataValue(value, request);\n          data2.push(resolvedValue);\n        } catch (error) {\n          data2.push(!isUndefined(request.errorFallbackValue) ? request.errorFallbackValue : request.fallbackValue);\n          errors.push(error);\n        }\n      }\n      const status = statuses.has(\"error\") ? \"error\" : statuses.has(\"loading\") ? \"loading\" : \"success\";\n      const result = { status, data: data2 };\n      if (!isEqual(result, __privateGet(this, _results))) {\n        __privateSet(this, _results, result);\n        if (errors.length > 0 && !statuses.has(\"loading\") && __privateGet(this, _subscribers2).size > 0) {\n          console.error(\"Fetch failed: \" + errors.join(\"\\n\"));\n        }\n      }\n      for (const subscriber of __privateGet(this, _subscribers2)) {\n        subscriber();\n      }\n    });\n    __publicField(this, \"subscribe\", (callback) => {\n      __privateGet(this, _subscribers2).add(callback);\n      this.updateResults();\n      return () => {\n        __privateGet(this, _subscribers2).delete(callback);\n      };\n    });\n    __publicField(this, \"getServerResults\", () => {\n      return __privateGet(this, _SSRResults);\n    });\n    __publicField(this, \"getResults\", () => {\n      return __privateGet(this, _results);\n    });\n    this.setRequests(requests, { onlyPrefetched: true });\n    __privateSet(this, _SSRResults, { status: \"loading\", data: requests.map((request) => request.fallbackValue) });\n    __privateSet(this, _results, __privateGet(this, _SSRResults));\n  }\n  setRequests(requests, { onlyPrefetched = false }) {\n    var _a;\n    const lastRequests = this.requests;\n    this.requests = requests;\n    const requestsByCacheKey = new Map(requests.map((request) => [getRequestCacheKey(request), request]));\n    const nextSubscribedKeys = Array.from(requestsByCacheKey.keys());\n    const hasOnlyPrefetchedChange = __privateGet(this, _onlyPrefetched) !== onlyPrefetched;\n    if (!onlyPrefetched) __privateSet(this, _onlyPrefetched, false);\n    const hasSubscriptionChange = nextSubscribedKeys.length !== __privateGet(this, _subscriptions).size || nextSubscribedKeys.some((url) => !__privateGet(this, _subscriptions).has(url));\n    if (!hasSubscriptionChange && !hasOnlyPrefetchedChange) {\n      if (!isEqual(lastRequests, requests)) {\n        this.updateResults();\n      }\n      return;\n    }\n    for (const url of __privateGet(this, _subscriptions).keys()) {\n      (_a = __privateGet(this, _subscriptions).get(url)) == null ? void 0 : _a();\n      __privateGet(this, _subscriptions).delete(url);\n    }\n    for (const cacheKey of nextSubscribedKeys) {\n      const requestConfig = requestsByCacheKey.get(cacheKey);\n      if (!requestConfig) continue;\n      const unsubscribe = this.client.subscribe(requestConfig, this.updateResults, onlyPrefetched);\n      __privateGet(this, _subscriptions).set(cacheKey, unsubscribe);\n    }\n    if (__privateGet(this, _subscribers2).size === 0) return;\n    this.updateResults();\n  }\n  unmount() {\n    for (const unsubscribe of __privateGet(this, _subscribers2)) {\n      unsubscribe();\n    }\n    for (const unsubscribe of __privateGet(this, _subscriptions).values()) {\n      unsubscribe();\n    }\n  }\n};\n_subscriptions = new WeakMap();\n_subscribers2 = new WeakMap();\n_results = new WeakMap();\n_SSRResults = new WeakMap();\n_onlyPrefetched = new WeakMap();\nfunction useFetchRequestsForChildren(requests, disabled, children) {\n  const fetchClient = React66.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  const isRestoringCache = React66.useContext(IsRestoringCacheContext);\n  const [observer] = React66.useState(() => new RequestsObserver(fetchClient, requests));\n  React66.useLayoutEffect(() => {\n    if (disabled) return;\n    observer.setRequests(requests, { onlyPrefetched: false });\n  }, [requests, observer, disabled]);\n  React66.useEffect(() => {\n    return () => observer.unmount();\n  }, [observer]);\n  const subscribe = React66.useCallback(\n    (onChange) => {\n      if (isRestoringCache || disabled) return noop4;\n      return observer.subscribe(onChange);\n    },\n    [disabled, observer, isRestoringCache]\n  );\n  const synchronousData = React66.useSyncExternalStore(subscribe, observer.getResults, observer.getServerResults);\n  const deferredData = React66.useDeferredValue(synchronousData);\n  return useMemoOne(() => children(deferredData.data, deferredData.status), [deferredData, children]);\n}\nfunction usePrefetch() {\n  const fetchClient = React66.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  return React66.useCallback((request) => fetchClient.prefetch(request), [fetchClient]);\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport { jsx as jsx63 } from \"react/jsx-runtime\";\nMotionGlobalConfig.WillChange = WillChangeMotionValue;\nfunction PageRoot({\n  RootComponent,\n  isWebsite,\n  routeId,\n  framerSiteId,\n  pathVariables,\n  routes,\n  collectionUtils,\n  notFoundPage,\n  isReducedMotion = false,\n  includeDataObserver = false,\n  localeId,\n  locales,\n  preserveQueryParams,\n  EditorBar,\n  defaultPageStyle,\n  disableHistory,\n  LayoutTemplate,\n  siteCanonicalURL\n}) {\n  React67.useEffect(() => {\n    if (isWebsite) return;\n    MainLoop.start();\n  }, []);\n  if (isWebsite) {\n    return /* @__PURE__ */ jsx63(MotionConfig, { reducedMotion: isReducedMotion ? \"user\" : \"never\", children: /* @__PURE__ */ jsx63(FetchClientProvider, { children: /* @__PURE__ */ jsx63(CustomCursorHost, { children: /* @__PURE__ */ jsx63(FormContext.Provider, { value: framerSiteId, children: /* @__PURE__ */ jsx63(\n      Router,\n      {\n        initialRoute: routeId,\n        initialPathVariables: pathVariables,\n        initialLocaleId: localeId,\n        routes,\n        collectionUtils,\n        notFoundPage,\n        locales,\n        defaultPageStyle: defaultPageStyle ?? { minHeight: \"100vh\", width: \"auto\" },\n        preserveQueryParams,\n        editorBar: /* @__PURE__ */ jsx63(EditorBarLauncher, { EditorBar }),\n        disableHistory,\n        LayoutTemplate,\n        siteCanonicalURL\n      }\n    ) }) }) }) });\n  } else {\n    const Wrapper = includeDataObserver ? DataObserver : React67.Fragment;\n    return /* @__PURE__ */ jsx63(Wrapper, { children: /* @__PURE__ */ jsx63(RoutesProvider, { routes, children: /* @__PURE__ */ jsx63(NavigationWrapper, { children: React67.isValidElement(RootComponent) ? RootComponent : React67.createElement(\n      // @ts-expect-error to figure out how to type this properly, as tests are using different\n      // $$typeof symbol and isValidElement fails\n      RootComponent,\n      { key: routeId }\n    ) }) }) });\n  }\n}\nfunction EditorBarLauncher({ EditorBar }) {\n  const libraryFeatures = useLibraryFeatures();\n  const [mounted, setMounted] = useState7(false);\n  const framerSiteId = useContext25(FormContext);\n  const editorBarFeatures = useMemo14(() => {\n    const features = {};\n    let key7;\n    for (key7 in libraryFeatures) {\n      if (libraryFeatures.hasOwnProperty(key7) && key7.startsWith(\"editorBar\")) {\n        features[key7] = libraryFeatures[key7];\n      }\n    }\n    return features;\n  }, [libraryFeatures]);\n  useEffect20(() => {\n    startTransition7(() => {\n      setMounted(true);\n    });\n  }, []);\n  if (!EditorBar || !framerSiteId || !mounted) return null;\n  return /* @__PURE__ */ jsx63(IgnoreErrors, { children: /* @__PURE__ */ jsx63(Suspense4, { children: /* @__PURE__ */ jsx63(EditorBar, { framerSiteId, features: editorBarFeatures }) }) });\n}\n\n// ../../library/src/modules/ResolveLinks.tsx\nimport { forwardRef as forwardRef6 } from \"react\";\nvar ResolveLinks = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef6(function ResolveLinksInner({ links, children, ...rest }, ref) {\n    const router = useRouter();\n    const { activeLocale } = useLocaleInfo();\n    const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n    const promises = [];\n    const resolvedLinks = links.map((link) => {\n      if (!link) return void 0;\n      if (isString(link)) return resolveLinkInternal(link, router);\n      return resolveLinkInternal(\n        link.href,\n        router,\n        link.implicitPathVariables,\n        link.refKey,\n        (unresolvedPathSlugs, unresolvedHashSlugs) => {\n          function handleSlugs(slugs) {\n            const result = {};\n            for (const slugKey in slugs) {\n              const unresolvedSlug = slugs[slugKey];\n              assert(router.collectionUtils, \"collectionUtils should be defined\");\n              assert(unresolvedSlug, \"unresolvedSlug be defined\");\n              const lazyValue = resolveSlug(unresolvedSlug, router.collectionUtils, activeLocale);\n              const promise = lazyValue.preload();\n              if (promise) {\n                promises.push(promise);\n              } else {\n                const resolvedValue = lazyValue.read();\n                if (resolvedValue) {\n                  result[slugKey] = resolvedValue;\n                }\n              }\n            }\n            return result;\n          }\n          return {\n            path: handleSlugs(unresolvedPathSlugs),\n            hash: handleSlugs(unresolvedHashSlugs)\n          };\n        }\n      );\n    });\n    if (promises.length > 0) {\n      throw Promise.allSettled(promises);\n    }\n    const childrenWithLinks = children(resolvedLinks);\n    return cloneWithPropsAndRef(childrenWithLinks, rest);\n  })\n);\n\n// ../../library/src/modules/Fetcher.tsx\nimport * as React68 from \"react\";\nvar Fetcher = /* @__PURE__ */ React68.forwardRef(function Fetcher2({ requests, disabled, children, ...rest }, ref) {\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  const childrenWithValues = useFetchRequestsForChildren(requests, disabled, children);\n  return cloneWithPropsAndRef(childrenWithValues, rest);\n});\n\n// ../../library/src/modules/callEach.ts\nvar callEach = (...fns) => fns.forEach((fn) => fn && fn());\n\n// ../../library/src/utils/getLogger.ts\nfunction getLogger(name) {\n  return {\n    trace(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.trace(...args);\n    },\n    debug(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.debug(...args);\n    },\n    info(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.info(...args);\n    },\n    warn(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.warn(...args);\n    },\n    error(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.error(...args);\n    }\n  };\n}\n\n// ../../library/src/modules/cms/types.ts\nfunction isAnyCollection(value) {\n  return isAnyLegacyCollection(value) || isAnyDatabaseCollection(value);\n}\nfunction isLegacyCollection(value) {\n  return isArray(value) && value.every(isObject2);\n}\nfunction isLegacyLocalizedCollection(value) {\n  return isObject2(value) && isFunction(value.read) && isFunction(value.preload);\n}\nfunction isAnyLegacyCollection(value) {\n  return isLegacyCollection(value) || isLegacyLocalizedCollection(value);\n}\nfunction isDatabaseCollection(value) {\n  return isObject2(value) && isObject2(value.schema);\n}\nfunction isLocalizedDatabaseCollection(value) {\n  return isObject2(value) && isObject2(value.collectionByLocaleId);\n}\nfunction isAnyDatabaseCollection(value) {\n  return isDatabaseCollection(value) || isLocalizedDatabaseCollection(value);\n}\n\n// ../../library/src/modules/cms/CompatibilityDatabaseCollection.ts\nasync function getCollectionItems(collection, locale) {\n  if (isLegacyLocalizedCollection(collection)) {\n    await collection.preload(locale);\n    return collection.read(locale);\n  }\n  return collection;\n}\nvar CompatibilityDatabaseCollection = class {\n  constructor(collection, locale) {\n    this.collection = collection;\n    this.locale = locale;\n    __publicField(this, \"schema\");\n    __publicField(this, \"indexes\", []);\n    const propertyControls = getPropertyControls(collection);\n    assert(propertyControls, \"Collection does not have properties\");\n    const schema = {\n      id: {\n        type: \"string\" /* String */,\n        isNullable: false\n      }\n    };\n    const controlEntries = Object.entries(propertyControls);\n    for (const [key7, controlDescription] of controlEntries) {\n      if (!controlDescription) continue;\n      const type = controlDescription.type;\n      assert(type !== \"array\" /* Array */, \"Array properties are not supported\");\n      assert(type !== \"object\" /* Object */, \"Object properties are not supported\");\n      schema[key7] = {\n        type,\n        isNullable: true\n      };\n    }\n    this.schema = schema;\n  }\n  getDatabaseItem(item, pointer) {\n    const data2 = {};\n    for (const key7 in this.schema) {\n      const value = item[key7];\n      if (isNullish(value)) continue;\n      const definition = this.schema[key7];\n      if (isUndefined(definition)) continue;\n      assert(definition.type !== \"unknown\", \"Invalid definition type\");\n      data2[key7] = {\n        type: definition.type,\n        // biome-ignore lint/suspicious/noExplicitAny: Existing.\n        value\n      };\n    }\n    return { pointer, data: data2 };\n  }\n  async resolveRichText(pointer) {\n    if (LazyValue.is(pointer)) {\n      const promise = pointer.preload();\n      if (promise) await promise;\n      return pointer.read();\n    }\n    return pointer;\n  }\n  async scanItems() {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return items.map((item, index) => {\n      const pointer = String(index);\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  async resolveItems(pointers) {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return pointers.map((pointer) => {\n      const index = Number(pointer);\n      const item = items[index];\n      assert(item, \"Can't find collection item\");\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  compareItems(left, right) {\n    return Number(left.pointer) - Number(right.pointer);\n  }\n};\n\n// ../../library/src/modules/cms/DatabaseValue.ts\nfunction compareArray(left, right, collation11) {\n  const leftLength = left.value.length;\n  const rightLength = right.value.length;\n  if (leftLength < rightLength) return -1;\n  if (leftLength > rightLength) return 1;\n  for (let i = 0; i < leftLength; i++) {\n    const leftItem = left.value[i];\n    const rightItem = right.value[i];\n    const result = compare(leftItem, rightItem, collation11);\n    if (result !== 0) return result;\n  }\n  return 0;\n}\nfunction castArray(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"array\" /* Array */: {\n      const result = value.value.map((item) => {\n        return DatabaseValue.cast(item, definition.definition);\n      });\n      return {\n        type: \"array\" /* Array */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareBoolean(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castBoolean(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"boolean\" /* Boolean */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value: Boolean(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToBoolean(value) {\n  const cast = castBoolean(value);\n  return (cast == null ? void 0 : cast.value) ?? false;\n}\nfunction compareColor(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castColor(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"color\" /* Color */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareDate(left, right) {\n  const leftDate = new Date(left.value);\n  const rightDate = new Date(right.value);\n  if (leftDate < rightDate) return -1;\n  if (leftDate > rightDate) return 1;\n  return 0;\n}\nfunction castDate(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"date\" /* Date */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const date = new Date(value.value);\n      if (isValidDate(date)) {\n        return {\n          type: \"date\" /* Date */,\n          value: date.toISOString()\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction compareEnum(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castEnum(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"enum\" /* Enum */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      return {\n        type: \"enum\" /* Enum */,\n        value: value.value\n      };\n    }\n  }\n  return null;\n}\nfunction compareFile(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castFile(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"file\" /* File */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareLink(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded) return -1;\n  if (leftEncoded > rightEncoded) return 1;\n  return 0;\n}\nfunction castLink(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"link\" /* Link */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      try {\n        const { protocol } = new URL(value.value);\n        if (protocol === \"http:\" || protocol === \"https:\") {\n          return {\n            type: \"link\" /* Link */,\n            value: value.value\n          };\n        }\n        return null;\n      } catch {\n        return null;\n      }\n    }\n  }\n  return null;\n}\nfunction compareNumber(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castNumber(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const number2 = Number(value.value);\n      if (Number.isFinite(number2)) {\n        return {\n          type: \"number\" /* Number */,\n          value: number2\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction valueToNumber(value) {\n  const cast = castNumber(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nfunction compareObject(left, right, collation11) {\n  const leftKeys = Object.keys(left.value).sort();\n  const rightKeys = Object.keys(right.value).sort();\n  if (leftKeys.length < rightKeys.length) return -1;\n  if (leftKeys.length > rightKeys.length) return 1;\n  for (let i = 0; i < leftKeys.length; i++) {\n    const leftKey = leftKeys[i];\n    const rightKey = rightKeys[i];\n    if (leftKey < rightKey) return -1;\n    if (leftKey > rightKey) return 1;\n    const leftValue = left.value[leftKey] ?? null;\n    const rightValue = right.value[rightKey] ?? null;\n    const result = compare(leftValue, rightValue, collation11);\n    if (result !== 0) return result;\n  }\n  return 0;\n}\nfunction castObject(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"object\" /* Object */: {\n      const result = {};\n      const definitionEntries = Object.entries(definition.definitions);\n      for (const [key7, itemDefinition] of definitionEntries) {\n        const item = value.value[key7] ?? null;\n        result[key7] = DatabaseValue.cast(item, itemDefinition);\n      }\n      return {\n        type: \"object\" /* Object */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareResponsiveImage(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded) return -1;\n  if (leftEncoded > rightEncoded) return 1;\n  return 0;\n}\nfunction castResponsiveImage(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareRichText(left, right) {\n  const leftValue = left.value;\n  const rightValue = right.value;\n  if (leftValue < rightValue) return -1;\n  if (leftValue > rightValue) return 1;\n  return 0;\n}\nfunction castRichText(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"richtext\" /* RichText */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareVectorSetItem(left, right) {\n  const leftValue = left.value;\n  const rightValue = right.value;\n  if (leftValue < rightValue) return -1;\n  if (leftValue > rightValue) return 1;\n  return 0;\n}\nfunction castVectorSetItem(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"vectorsetitem\" /* VectorSetItem */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareString(left, right, collation11) {\n  let leftValue = left.value;\n  let rightValue = right.value;\n  if (collation11.type === 0 /* CaseInsensitive */) {\n    leftValue = left.value.toLowerCase();\n    rightValue = right.value.toLowerCase();\n  }\n  if (leftValue < rightValue) return -1;\n  if (leftValue > rightValue) return 1;\n  return 0;\n}\nfunction castString(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"string\" /* String */: {\n      return value;\n    }\n    case \"number\" /* Number */: {\n      return {\n        type: \"string\" /* String */,\n        value: String(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToString(value) {\n  const cast = castString(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nvar DatabaseValue = {\n  /**\n   * Casts a value to a different type.\n   */\n  cast(value, definition) {\n    switch (definition.type) {\n      case \"array\" /* Array */:\n        return castArray(value, definition);\n      case \"boolean\" /* Boolean */:\n        return castBoolean(value);\n      case \"color\" /* Color */:\n        return castColor(value);\n      case \"date\" /* Date */:\n        return castDate(value);\n      case \"enum\" /* Enum */:\n        return castEnum(value);\n      case \"file\" /* File */:\n        return castFile(value);\n      case \"link\" /* Link */:\n        return castLink(value);\n      case \"number\" /* Number */:\n        return castNumber(value);\n      case \"object\" /* Object */:\n        return castObject(value, definition);\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return castResponsiveImage(value);\n      case \"richtext\" /* RichText */:\n        return castRichText(value);\n      case \"string\" /* String */:\n        return castString(value);\n      case \"vectorsetitem\" /* VectorSetItem */:\n        return castVectorSetItem(value);\n      case \"unknown\":\n        return value;\n      default:\n        assertNever(definition, \"Unsupported cast\");\n    }\n  },\n  /**\n   * Parses a JavaScript variable into a DatabaseValue.\n   */\n  parse(value) {\n    if (isBoolean(value)) {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value\n      };\n    }\n    if (isValidDate(value)) {\n      return {\n        type: \"date\" /* Date */,\n        value: value.toISOString()\n      };\n    }\n    if (isNumber(value)) {\n      return {\n        type: \"number\" /* Number */,\n        value\n      };\n    }\n    if (isString(value)) {\n      return {\n        type: \"string\" /* String */,\n        value\n      };\n    }\n    if (isArray(value)) {\n      return {\n        type: \"array\" /* Array */,\n        value: value.map(DatabaseValue.parse)\n      };\n    }\n    return null;\n  },\n  /**\n   * Checks if the left value is equal to the right value. Returns false if\n   * the values are not of the same type.\n   */\n  equal(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) === 0;\n  },\n  /**\n   * Checks if the left value is less than the right value. Returns false if\n   * the values are not of the same type.\n   */\n  lessThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) < 0;\n  },\n  /**\n   * Checks if the left value is less than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  lessThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) <= 0;\n  },\n  /**\n   * Checks if the left value is greater than the right value. Returns false\n   * if the values are not of the same type.\n   */\n  greaterThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) > 0;\n  },\n  /**\n   * Checks if the left value is greater than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  greaterThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) >= 0;\n  },\n  /**\n   * Checks if the left value is in the right value. Returns false if the\n   * right value is not an array.\n   */\n  in(left, right, collation11) {\n    if ((right == null ? void 0 : right.type) !== \"array\" /* Array */) return false;\n    return right.value.some((item) => {\n      return DatabaseValue.equal(item, left, collation11);\n    });\n  },\n  /**\n   * Get the index of the first occurrence of `target` in `source`.\n   *\n   * If source has duplicates, the index of the first occurrence is always returned.\n   */\n  indexOf(source, target, collation11) {\n    if ((source == null ? void 0 : source.type) !== \"array\" /* Array */) return -1;\n    return source.value.findIndex((item) => {\n      return DatabaseValue.equal(item, target, collation11);\n    });\n  },\n  contains(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue)) return false;\n    if (isNull(targetValue)) return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.includes(targetValue);\n  },\n  startsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue)) return false;\n    if (isNull(targetValue)) return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.startsWith(targetValue);\n  },\n  endsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue)) return false;\n    if (isNull(targetValue)) return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.endsWith(targetValue);\n  },\n  length(value) {\n    switch (value == null ? void 0 : value.type) {\n      case \"array\" /* Array */:\n        return value.value.length;\n    }\n    return 0;\n  },\n  stringify(value) {\n    if (value === null) {\n      return \"null\";\n    }\n    switch (value.type) {\n      case \"array\" /* Array */:\n        return `[${value.value.map(DatabaseValue.stringify).join(\", \")}]`;\n      case \"boolean\" /* Boolean */:\n      case \"number\" /* Number */:\n        return String(value.value);\n      case \"string\" /* String */:\n        return `'${value.value}'`;\n      case \"enum\" /* Enum */:\n        return `'${value.value}' /* Enum */`;\n      case \"color\" /* Color */:\n        return `'${value.value}' /* Color */`;\n      case \"date\" /* Date */:\n        return `'${value.value}' /* Date */`;\n      case \"richtext\" /* RichText */:\n        return \"RichText\";\n      case \"vectorsetitem\" /* VectorSetItem */:\n        return \"VectorSetItem\";\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return \"ResponsiveImage\";\n      case \"file\" /* File */:\n        return \"File\";\n      case \"link\" /* Link */:\n        return isString(value.value) ? `'${value.value}' /* Link */` : \"Link\";\n      case \"object\" /* Object */:\n        return \"Object\";\n      default:\n        assertNever(value);\n    }\n  }\n};\nfunction compare(left, right, collation11) {\n  if (isNull(left) || isNull(right)) {\n    assert(left === right);\n    return 0;\n  }\n  switch (left.type) {\n    case \"array\" /* Array */: {\n      assert(left.type === right.type);\n      return compareArray(left, right, collation11);\n    }\n    case \"boolean\" /* Boolean */: {\n      assert(left.type === right.type);\n      return compareBoolean(left, right);\n    }\n    case \"color\" /* Color */: {\n      assert(left.type === right.type);\n      return compareColor(left, right);\n    }\n    case \"date\" /* Date */: {\n      assert(left.type === right.type);\n      return compareDate(left, right);\n    }\n    case \"enum\" /* Enum */: {\n      assert(left.type === right.type);\n      return compareEnum(left, right);\n    }\n    case \"file\" /* File */: {\n      assert(left.type === right.type);\n      return compareFile(left, right);\n    }\n    case \"link\" /* Link */: {\n      assert(left.type === right.type);\n      return compareLink(left, right);\n    }\n    case \"number\" /* Number */: {\n      assert(left.type === right.type);\n      return compareNumber(left, right);\n    }\n    case \"object\" /* Object */: {\n      assert(left.type === right.type);\n      return compareObject(left, right, collation11);\n    }\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      assert(left.type === right.type);\n      return compareResponsiveImage(left, right);\n    }\n    case \"richtext\" /* RichText */: {\n      assert(left.type === right.type);\n      return compareRichText(left, right);\n    }\n    case \"vectorsetitem\" /* VectorSetItem */: {\n      assert(left.type === right.type);\n      return compareVectorSetItem(left, right);\n    }\n    case \"string\" /* String */: {\n      assert(left.type === right.type);\n      return compareString(left, right, collation11);\n    }\n    default: {\n      assertNever(left);\n    }\n  }\n}\n\n// ../../library/src/modules/cms/DatabaseValueDefinition.ts\nvar unknownDefinition = {\n  type: \"unknown\",\n  isNullable: true\n};\n\n// ../../library/src/modules/cms/optimizer/Cost.ts\nfunction getNetworkLatency() {\n  return 25;\n}\nfunction getNetworkSpeed() {\n  return 100 * 125;\n}\nvar KB = 1e3;\nvar Cost = class _Cost {\n  constructor(network) {\n    this.network = network;\n  }\n  static estimate(totalRequests, transferredBytes) {\n    const latency = getNetworkLatency();\n    const speed = getNetworkSpeed();\n    const network = totalRequests * latency + transferredBytes / speed;\n    return new _Cost(network);\n  }\n  static max(left, right) {\n    const network = Math.max(left.network, right.network);\n    return new _Cost(network);\n  }\n  static compare(left, right) {\n    if (left.network < right.network) return -1;\n    if (left.network > right.network) return 1;\n    return 0;\n  }\n  add(cost) {\n    this.network += cost.network;\n    return this;\n  }\n  toString() {\n    return `${this.network}ms`;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Group.ts\nfunction GroupId(id) {\n  return id;\n}\nvar Group = class {\n  constructor(id, relational) {\n    this.id = id;\n    this.relational = relational;\n    /**\n     * A list of all nodes in the group. All nodes must have compatible\n     * relational props.\n     */\n    __publicField(this, \"nodes\", []);\n    /**\n     * A map of all winners in the group by their hash.\n     */\n    __publicField(this, \"winners\", /* @__PURE__ */ new Map());\n  }\n  /**\n   * Adds a node to the group. Throws an error if the node is already in a\n   * group.\n   */\n  addNode(node) {\n    this.nodes.push(node);\n    node.setGroup(this);\n  }\n  /**\n   * Returns the winner for the given required physical props. The winner\n   * stores the best node and its cost. This is used to find the best node in\n   * the group.\n   */\n  getWinner(required) {\n    const hash2 = required.getHash();\n    const existing = this.winners.get(hash2);\n    if (existing) return existing;\n    const winner = new Winner();\n    this.winners.set(hash2, winner);\n    return winner;\n  }\n  /**\n   * Returns the optimized version of the node. The optimized version is the\n   * node with the lowest cost with all children replaced with their optimized\n   * versions. This is used to create the final optimized query plan.\n   */\n  getOptimized(required) {\n    const winner = this.getWinner(required);\n    assert(winner.node, \"Group not optimized\");\n    const optimizer = winner.node.getOptimized(required);\n    optimizer.setGroup(this);\n    return optimizer;\n  }\n};\nvar Winner = class {\n  constructor() {\n    __publicField(this, \"node\");\n    __publicField(this, \"cost\", new Cost(Infinity));\n    __publicField(this, \"nodes\", []);\n  }\n  update(node, cost) {\n    this.nodes.push(node);\n    if (Cost.compare(cost, this.cost) < 0) {\n      this.node = node;\n      this.cost = cost;\n    }\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Evaluate.ts\nfunction evaluateSync(generator) {\n  const state = generator.next();\n  assert(state.done, \"Generator must not yield\");\n  return state.value;\n}\nasync function evaluateAsync(generator, state = generator.next()) {\n  while (!state.done) {\n    const value = await state.value;\n    state = generator.next(value);\n  }\n  return state.value;\n}\nfunction* evaluateObject(values) {\n  const result = {};\n  const keys3 = Object.keys(values);\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator2(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\nfunction* evaluateArray(values) {\n  const result = [];\n  const keys3 = values.keys();\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator2(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/cms/optimizer/nodes/AbstractNode.ts\nvar AbstractNode = class {\n  constructor(isSynchronous) {\n    this.isSynchronous = isSynchronous;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalNode.ts\nvar RelationalNode = class extends AbstractNode {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"group\");\n  }\n  /**\n   * Returns the group that the node belongs to. Throws an error if the node\n   * is not in a group. This should only happen in the constructor because\n   * every node is added to a group right after creation.\n   */\n  getGroup() {\n    assert(this.group, \"Node must be in a group\");\n    return this.group;\n  }\n  /**\n   * Adds the node to the given group. Throws an error if the node is already\n   * in a group.\n   */\n  setGroup(group) {\n    assert(!this.group, \"Node is already in a group\");\n    this.group = group;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Hashable.ts\nfunction Hash(value) {\n  return value;\n}\nfunction isHashable(value) {\n  return isObject2(value) && isFunction(value.getHash);\n}\nfunction calculateHash(name, ...values) {\n  const hashes = values.map((value) => {\n    const isCollectionMetadata = value instanceof CollectionMetadata;\n    assert(!isCollectionMetadata, \"Pass CollectionMetadata.id instead\");\n    const isFieldMetadata = value instanceof FieldMetadata;\n    assert(!isFieldMetadata, \"Pass FieldMetadata.id instead\");\n    const isIndexMetadata = value instanceof IndexMetadata;\n    assert(!isIndexMetadata, \"Pass IndexMetadata.id instead\");\n    const isRelationalNode = value instanceof RelationalNode;\n    assert(!isRelationalNode, \"Pass RelationalNode.group.id instead\");\n    const isGroup = value instanceof Group;\n    assert(!isGroup, \"Pass Group.id instead\");\n    if (isHashable(value)) {\n      return value.getHash();\n    }\n    return JSON.stringify(value);\n  });\n  return Hash(`${name}(${hashes.join(\", \")})`);\n}\n\n// ../../library/src/modules/cms/optimizer/RichTextResolver.ts\nvar RichTextResolver = class {\n  constructor(data2, pointer) {\n    this.data = data2;\n    this.pointer = pointer;\n    __publicField(this, \"cached\");\n  }\n  resolve() {\n    this.cached ??= this.data.resolveRichText(this.pointer);\n    return this.cached;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/VectorSetItemResolver.ts\nvar VectorSetItemResolver = class {\n  constructor(data2, pointer) {\n    this.data = data2;\n    this.pointer = pointer;\n    __publicField(this, \"cached\");\n  }\n  resolve() {\n    assert(this.data.resolveVectorSetItem, \"Can't resolve vector set item.\");\n    this.cached ??= this.data.resolveVectorSetItem(this.pointer);\n    return this.cached;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Metadata.ts\nvar VIRTUAL_INDEX_FIELD = \"index\";\nvar Metadata = class extends Set {\n  merge(other) {\n    for (const item of other) {\n      this.add(item);\n    }\n  }\n  equals(other) {\n    if (this === other) return true;\n    if (this.size !== other.size) return false;\n    for (const item of this) {\n      if (!other.has(item)) return false;\n    }\n    return true;\n  }\n  subsetOf(other) {\n    if (this === other) return true;\n    if (this.size > other.size) return false;\n    for (const item of this) {\n      if (!other.has(item)) return false;\n    }\n    return true;\n  }\n  getHash() {\n    const ids = [];\n    for (const item of this) {\n      ids.push(item.id);\n    }\n    ids.sort((a, b) => a - b);\n    return calculateHash(this.name, ...ids);\n  }\n};\nfunction CollectionId(id) {\n  return id;\n}\nvar CollectionMetadata = class {\n  constructor(id, name, data2) {\n    this.id = id;\n    this.name = name;\n    this.data = data2;\n    __publicField(this, \"indexes\", new Indexes());\n    __publicField(this, \"fields\", new Fields());\n  }\n};\nfunction IndexId(id) {\n  return id;\n}\nvar IndexMetadata = class {\n  constructor(id, data2, collection, lookupNodes, constraint, ordering) {\n    this.id = id;\n    this.data = data2;\n    this.collection = collection;\n    this.lookupNodes = lookupNodes;\n    this.constraint = constraint;\n    this.ordering = ordering;\n    __publicField(this, \"resolvedFields\", new Fields());\n    for (const fieldName in data2.schema) {\n      for (const field of collection.fields) {\n        if (field.name === fieldName) {\n          this.resolvedFields.add(field);\n        }\n      }\n    }\n  }\n};\nvar Indexes = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Indexes\");\n  }\n};\nfunction FieldId(id) {\n  return id;\n}\nvar FieldMetadata = class {\n  constructor(id, name, definition, collection) {\n    this.id = id;\n    this.name = name;\n    this.definition = definition;\n    this.collection = collection;\n  }\n  getValue(item) {\n    assert(this.name, \"Can only get value of field with a name\");\n    const value = item.data[this.name];\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(this.collection, \"Rich text field must have a collection\");\n      return {\n        type: \"richtext\" /* RichText */,\n        value: new RichTextResolver(this.collection.data, value.value)\n      };\n    }\n    if ((value == null ? void 0 : value.type) === \"vectorsetitem\" /* VectorSetItem */) {\n      assert(this.collection, \"Vector set item field must have a collection\");\n      return {\n        type: \"vectorsetitem\" /* VectorSetItem */,\n        value: new VectorSetItemResolver(this.collection.data, value.value)\n      };\n    }\n    return value ?? null;\n  }\n};\nvar Fields = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Fields\");\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Ordering.ts\nvar OrderingField = class {\n  constructor(field, direction = \"asc\" /* Ascending */) {\n    this.field = field;\n    this.direction = direction;\n  }\n  getHash() {\n    return calculateHash(\"OrderingField\", this.field.id, this.direction);\n  }\n};\nvar Ordering = class {\n  constructor(ordering) {\n    __publicField(this, \"fields\", []);\n    if (ordering) {\n      this.merge(ordering);\n    }\n  }\n  get length() {\n    return this.fields.length;\n  }\n  getHash() {\n    return calculateHash(\"Ordering\", ...this.fields);\n  }\n  push(field) {\n    this.fields.push(field);\n  }\n  merge(ordering) {\n    this.fields.push(...ordering.fields);\n  }\n  equals(other) {\n    if (this === other) return true;\n    if (this.length !== other.length) return false;\n    return this.getHash() === other.getHash();\n  }\n  providedByFields(fields) {\n    for (const { field } of this.fields) {\n      if (fields.has(field)) continue;\n      if (field.name === VIRTUAL_INDEX_FIELD) continue;\n      return false;\n    }\n    return true;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/PhysicalProps.ts\nvar RequiredProps = class {\n  constructor(ordering, resolvedFields) {\n    this.ordering = ordering;\n    this.resolvedFields = resolvedFields;\n  }\n  getHash() {\n    return calculateHash(\"RequiredProps\", this.ordering, this.resolvedFields);\n  }\n  /**\n   * Required props with no ordering and no resolved fields are considered\n   * minimal. Every node can provide them.\n   */\n  get isMinimal() {\n    return this.ordering.length === 0 && this.resolvedFields.size === 0;\n  }\n  /**\n   * Checks if the node can provide the required props. If it can't, we need\n   * to add enforcers that provides them.\n   *\n   * Some nodes don't provide the required props directly, but can pass them\n   * through to their children. E.g. a `RelationalFilter` returns the relation\n   * in the same order and with the same resolved fields as its input. These\n   * nodes should return `true` and pass the required props to their children.\n   */\n  canProvide(node) {\n    return this.canProvideOrdering(node) && this.canProvideResolvedFields(node);\n  }\n  /**\n   * Checks if the given node can provide the required ordering. If it can't,\n   * we need to add an `EnforcerSort` node that provides it.\n   */\n  canProvideOrdering(node) {\n    if (this.ordering.length === 0) return true;\n    return node.canProvideOrdering(this.ordering);\n  }\n  /**\n   * Checks if the given node can provide the required resolved fields. If it\n   * can't, we need to add an `EnforcerResolve` node that provides it.\n   */\n  canProvideResolvedFields(node) {\n    if (this.resolvedFields.size === 0) return true;\n    return node.canProvideResolvedFields(this.resolvedFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Scope.ts\nvar Scope = class _Scope {\n  constructor(parent) {\n    this.parent = parent;\n    /**\n     * The last node built in the scope.\n     */\n    __publicField(this, \"node\");\n    /**\n     * The required ordering of the scope.\n     */\n    __publicField(this, \"ordering\");\n    /**\n     * A list of all fields available in the scope.\n     */\n    __publicField(this, \"fields\", []);\n  }\n  /**\n   * Returns the last node built in the scope and removes it from the scope.\n   * Throws an error if no node was built in the scope yet.\n   */\n  takeNode() {\n    const node = this.node;\n    assert(node, \"Node is missing\");\n    this.node = void 0;\n    return node;\n  }\n  /**\n   * Sets the last node built in the scope. Throws an error if there is\n   * already a node in the scope.\n   */\n  setNode(node) {\n    assert(!this.node, \"Node already set\");\n    this.node = node;\n  }\n  setOrdering(ordering) {\n    this.ordering = ordering;\n  }\n  /**\n   * Create a new scope with the this scope as its parent.\n   */\n  push() {\n    return new _Scope(this);\n  }\n  /**\n   * Creates a new scope with the parent of the this scope as its parent.\n   */\n  replace() {\n    return new _Scope(this.parent);\n  }\n  /**\n   * Adds a field to this scope. Any fields that are added will be available\n   * in the this scope and all of its children.\n   */\n  addField(scopeField) {\n    this.fields.push(scopeField);\n  }\n  /**\n   * Merges all fields from the given scope into the this scope.\n   */\n  addFieldsFromScope(scope) {\n    for (const scopeField of scope.fields) {\n      this.addField(scopeField);\n    }\n  }\n  /**\n   * Resolves a field from this scope. If the field is not found, the parent\n   * scope is checked. If the name of a field is ambiguous, an error is\n   * thrown.\n   */\n  resolveField(name, collection) {\n    var _a;\n    const candidates = [];\n    for (const field of this.fields) {\n      if (field.name !== name) continue;\n      if (collection && field.collectionName !== collection) continue;\n      candidates.push(field);\n    }\n    if (candidates.length === 1) {\n      return candidates[0];\n    }\n    if (candidates.length > 1) {\n      throw new Error(\"Ambiguous fields\");\n    }\n    return (_a = this.parent) == null ? void 0 : _a.resolveField(name, collection);\n  }\n  /**\n   * Checks if the scope or any parent scope has the given scope field.\n   */\n  has(scopeField) {\n    var _a;\n    if (this.fields.includes(scopeField)) {\n      return true;\n    }\n    return ((_a = this.parent) == null ? void 0 : _a.has(scopeField)) ?? false;\n  }\n  /**\n   * Returns the required ordering for the scope.\n   */\n  getRequiredOrdering() {\n    return this.ordering ?? new Ordering();\n  }\n  /**\n   * Returns the required resolved fields for the scope.\n   */\n  getRequiredResolvedFields() {\n    const resolvedFields = new Fields();\n    for (const { field } of this.fields) {\n      if (field.collection) {\n        resolvedFields.add(field);\n      }\n    }\n    return resolvedFields;\n  }\n  /**\n   * Returns the set of required physical props for this scope. This is used\n   * to create the required props for the root node in the optimizer.\n   */\n  getRequiredProps() {\n    const ordering = this.getRequiredOrdering();\n    const resolvedFields = this.getRequiredResolvedFields();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  /**\n   * Returns a map of the fields in this scope, with their scope names as\n   * keys. This is used to create the final `QueryResult` with the correct\n   * field names.\n   */\n  getNamedFields() {\n    const namedFields = {};\n    for (const { name, field } of this.fields) {\n      namedFields[name] = field;\n    }\n    return namedFields;\n  }\n  /**\n   * Returns the single field from this scope if it only contains one field.\n   * Throws an error if there are more than one fields.\n   */\n  getSingleField() {\n    assert(this.fields.length === 1, \"Scope must contain exactly one field\");\n    const scopeField = this.fields[0];\n    assert(scopeField, \"Field must exist\");\n    return scopeField.field;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Relation.ts\nvar Tuple = class {\n  constructor() {\n    __publicField(this, \"pointers\", /* @__PURE__ */ new Map());\n    __publicField(this, \"values\", /* @__PURE__ */ new Map());\n  }\n  getKey() {\n    const result = [];\n    for (const [collection, pointer] of this.pointers) {\n      result.push(`${collection.id}-${pointer}`);\n    }\n    return result.sort().join(\"-\");\n  }\n  addValue(field, value) {\n    this.values.set(field, value);\n  }\n  getValue(field) {\n    return this.values.get(field) ?? null;\n  }\n  mergeValues(tuple) {\n    for (const [field, value] of tuple.values) {\n      this.addValue(field, value);\n    }\n  }\n  addPointer(collection, pointer) {\n    this.pointers.set(collection, pointer);\n  }\n  getPointer(collection) {\n    return this.pointers.get(collection);\n  }\n  mergePointers(tuple) {\n    for (const [collection, pointer] of tuple.pointers) {\n      this.addPointer(collection, pointer);\n    }\n  }\n  merge(tuple) {\n    this.mergeValues(tuple);\n    this.mergePointers(tuple);\n  }\n};\nvar Relation = class _Relation {\n  constructor(fields, tuples = []) {\n    this.fields = fields;\n    this.tuples = tuples;\n  }\n  push(tuple) {\n    this.tuples.push(tuple);\n  }\n  filter(predicate) {\n    const tuples = this.tuples.filter(predicate);\n    return new _Relation(this.fields, tuples);\n  }\n  map(fields, callback) {\n    const tuples = this.tuples.map(callback);\n    return new _Relation(fields, tuples);\n  }\n  sort(callback) {\n    const tuples = Array.from(this.tuples).sort(callback);\n    return new _Relation(this.fields, tuples);\n  }\n  slice(start, end) {\n    const tuples = this.tuples.slice(start, end);\n    return new _Relation(this.fields, tuples);\n  }\n  union(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new _Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n      result.push(tuple);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (keys3.has(key7)) continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n  intersection(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new _Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (!keys3.has(key7)) continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalProject.ts\nvar ProjectionField = class {\n  constructor(input, field) {\n    this.input = input;\n    this.field = field;\n  }\n  getHash() {\n    return calculateHash(\"ProjectionField\", this.input, this.field.id);\n  }\n};\nvar RelationalProject = class _RelationalProject extends RelationalNode {\n  constructor(input, projections, passthrough) {\n    let isSynchronous = input.isSynchronous;\n    for (const projection of projections) {\n      isSynchronous &&= projection.input.isSynchronous;\n    }\n    super(isSynchronous);\n    this.input = input;\n    this.projections = projections;\n    this.passthrough = passthrough;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalProject\", this.inputGroup.id, ...this.projections, this.passthrough);\n  }\n  getOutputFields() {\n    const fields = new Fields();\n    fields.merge(this.passthrough);\n    for (const projection of this.projections) {\n      fields.add(projection.field);\n    }\n    return fields;\n  }\n  canProvideOrdering(ordering) {\n    const projectionFields = new Fields();\n    for (const projection of this.projections) {\n      projectionFields.add(projection.field);\n    }\n    for (const { field } of ordering.fields) {\n      if (projectionFields.has(field)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const projection of this.projections) {\n      resolvedFields.merge(projection.input.referencedFields);\n      resolvedFields.delete(projection.field);\n    }\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    let projectionsCost = new Cost(0);\n    for (const projection of this.projections) {\n      const projectionCost = projection.input.optimize(optimizer);\n      projectionsCost = Cost.max(projectionsCost, projectionCost);\n    }\n    return new Cost(0).add(Cost.max(inputCost, projectionsCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const projections = this.projections.map((projection) => {\n      const projectionInput = projection.input.getOptimized();\n      return new ProjectionField(projectionInput, projection.field);\n    });\n    return new _RelationalProject(input, projections, this.passthrough);\n  }\n  *evaluate(context) {\n    const outputFields = this.getOutputFields();\n    const input = yield* this.input.evaluate(context);\n    const projectedValues = yield* evaluateArray(\n      input.tuples.map(\n        (tuple) => evaluateArray(\n          this.projections.map(\n            (projection) => evaluateObject({\n              field: projection.field,\n              value: projection.input.evaluate(context, tuple)\n            })\n          )\n        )\n      )\n    );\n    return input.map(outputFields, (tuple, index) => {\n      const result = new Tuple();\n      result.mergePointers(tuple);\n      for (const field of this.passthrough) {\n        const value = tuple.getValue(field);\n        result.addValue(field, value);\n      }\n      const projections = projectedValues[index];\n      assert(projections, \"Projections must exist\");\n      for (const { field, value } of projections) {\n        result.addValue(field, value);\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNode.ts\nvar collation = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNode = class extends AbstractNode {\n  constructor(referencedFields, referencedOuterFields, isSynchronous) {\n    super(isSynchronous);\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    this.isSynchronous = isSynchronous;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCase.ts\nvar collation2 = {\n  type: 0 /* CaseInsensitive */\n};\nvar CaseCondition = class {\n  constructor(when, then) {\n    this.when = when;\n    this.then = then;\n  }\n  getHash() {\n    return calculateHash(\"CaseCondition\", this.when, this.then);\n  }\n};\nvar ScalarCase = class _ScalarCase extends ScalarNode {\n  constructor(input, conditions, otherwise) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    let isSynchronous = true;\n    if (input) {\n      referencedFields.merge(input.referencedFields);\n      referencedOuterFields.merge(input.referencedOuterFields);\n      isSynchronous &&= input.isSynchronous;\n    }\n    for (const { when, then } of conditions) {\n      referencedFields.merge(when.referencedFields);\n      referencedOuterFields.merge(when.referencedOuterFields);\n      isSynchronous &&= when.isSynchronous;\n      referencedFields.merge(then.referencedFields);\n      referencedOuterFields.merge(then.referencedOuterFields);\n      isSynchronous &&= then.isSynchronous;\n    }\n    if (otherwise) {\n      referencedFields.merge(otherwise.referencedFields);\n      referencedOuterFields.merge(otherwise.referencedOuterFields);\n      isSynchronous &&= otherwise.isSynchronous;\n    }\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.input = input;\n    this.conditions = conditions;\n    this.otherwise = otherwise;\n    __publicField(this, \"definition\", {\n      type: \"unknown\",\n      isNullable: true\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarCase\", this.input, ...this.conditions, this.otherwise);\n  }\n  optimize(optimizer) {\n    var _a, _b;\n    (_a = this.input) == null ? void 0 : _a.optimize(optimizer);\n    for (const condition of this.conditions) {\n      condition.when.optimize(optimizer);\n      condition.then.optimize(optimizer);\n    }\n    (_b = this.otherwise) == null ? void 0 : _b.optimize(optimizer);\n    return new Cost(0);\n  }\n  getOptimized() {\n    var _a, _b;\n    const input = (_a = this.input) == null ? void 0 : _a.getOptimized();\n    const conditions = this.conditions.map((condition) => {\n      const when = condition.when.getOptimized();\n      const then = condition.then.getOptimized();\n      return new CaseCondition(when, then);\n    });\n    const otherwise = (_b = this.otherwise) == null ? void 0 : _b.getOptimized();\n    return new _ScalarCase(input, conditions, otherwise);\n  }\n  *evaluate(context, tuple) {\n    var _a, _b;\n    const { input, conditions, otherwise } = yield* evaluateObject({\n      input: ((_a = this.input) == null ? void 0 : _a.evaluate(context, tuple)) ?? null,\n      conditions: evaluateArray(\n        this.conditions.map(\n          (condition) => evaluateObject({\n            when: condition.when.evaluate(context, tuple),\n            // biome-ignore lint/suspicious/noThenProperty: Existing name.\n            then: condition.then.evaluate(context, tuple)\n          })\n        )\n      ),\n      otherwise: ((_b = this.otherwise) == null ? void 0 : _b.evaluate(context, tuple)) ?? null\n    });\n    if (this.input) {\n      for (const { when, then } of conditions) {\n        if (DatabaseValue.equal(input, when, collation2)) {\n          return then;\n        }\n      }\n    } else {\n      for (const { when, then } of conditions) {\n        if (valueToBoolean(when)) {\n          return then;\n        }\n      }\n    }\n    return otherwise;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Builder.ts\nvar Builder = class {\n  constructor(normalizer, query, locale) {\n    this.normalizer = normalizer;\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"collectionId\", 0);\n    __publicField(this, \"indexId\", 0);\n    __publicField(this, \"fieldId\", 0);\n    /**\n     * A stack of the subqueries that are currently being built. We use this to\n     * calculate fields that come from the enclosing scope or from inside the\n     * subquery.\n     */\n    __publicField(this, \"subqueries\", []);\n  }\n  build() {\n    const inScope = new Scope();\n    return this.buildQuery(inScope, this.query);\n  }\n  buildQuery(inScope, query) {\n    const select = { type: \"Select\", ...query };\n    return this.buildSelect(inScope, select);\n  }\n  buildSelect(inScope, select) {\n    const fromScope = this.buildFrom(inScope, select.from);\n    const defaultOrdering = fromScope.getRequiredOrdering();\n    if (select.where) {\n      const input = fromScope.takeNode();\n      const predicate = this.buildExpression(fromScope, select.where);\n      const node = this.normalizer.newRelationalFilter(input, predicate);\n      fromScope.setNode(node);\n    }\n    const orderProjections = [];\n    const orderFields = new Fields();\n    let ordering;\n    if (select.orderBy) {\n      ordering = new Ordering();\n      for (const order of select.orderBy) {\n        if (order.type === \"Identifier\") {\n          const scopeField = fromScope.resolveField(order.name, order.collection);\n          if (isUndefined(scopeField)) continue;\n          orderFields.add(scopeField.field);\n          const orderingField = new OrderingField(scopeField.field, order.direction);\n          ordering.push(orderingField);\n        } else {\n          const expression = this.buildExpression(fromScope, order);\n          const fieldId = FieldId(this.fieldId++);\n          const field = new FieldMetadata(fieldId, void 0, expression.definition, void 0);\n          const projection = new ProjectionField(expression, field);\n          orderProjections.push(projection);\n          const orderingField = new OrderingField(field, order.direction);\n          ordering.push(orderingField);\n        }\n      }\n      ordering.merge(defaultOrdering);\n    } else {\n      ordering = defaultOrdering;\n    }\n    const projectionScope = this.buildSelectList(fromScope, select.select, orderFields, orderProjections);\n    projectionScope.setOrdering(ordering);\n    if (select.offset) {\n      const input = projectionScope.takeNode();\n      const offset = this.buildExpression(inScope, select.offset);\n      const node = this.normalizer.newRelationalOffset(input, offset, ordering);\n      projectionScope.setNode(node);\n    }\n    if (select.limit) {\n      const input = projectionScope.takeNode();\n      const limit = this.buildExpression(inScope, select.limit);\n      const node = this.normalizer.newRelationalLimit(input, limit, ordering);\n      projectionScope.setNode(node);\n    }\n    return projectionScope;\n  }\n  buildSelectList(inScope, selects, orderFields, orderProjections) {\n    const outScope = inScope.push();\n    const passthrough = new Fields(orderFields);\n    const projections = [...orderProjections];\n    for (const select of selects) {\n      if (select.type === \"Identifier\") {\n        const scopeField = inScope.resolveField(select.name, select.collection);\n        if (isUndefined(scopeField)) continue;\n        passthrough.add(scopeField.field);\n        outScope.addField({ ...scopeField, name: select.alias ?? scopeField.name });\n      } else {\n        const expression = this.buildExpression(inScope, select);\n        assert(select.alias, \"Subqueries should have an alias\");\n        const fieldId = FieldId(this.fieldId++);\n        const fieldName = select.alias;\n        const field = new FieldMetadata(fieldId, fieldName, expression.definition, void 0);\n        const projection = new ProjectionField(expression, field);\n        projections.push(projection);\n        outScope.addField({\n          field,\n          name: fieldName\n        });\n      }\n    }\n    const input = inScope.takeNode();\n    const node = this.normalizer.newRelationalProject(input, projections, passthrough);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildFrom(inScope, from) {\n    switch (from.type) {\n      case \"Collection\":\n        return this.buildCollection(inScope, from);\n      case \"LeftJoin\":\n        return this.buildJoin(inScope, from);\n      default:\n        assertNever(from, \"Unsupported from type\");\n    }\n  }\n  buildCollection(inScope, from) {\n    const outScope = inScope.push();\n    const collectionData = getCollection(from.data, this.locale);\n    const collectionName = from.alias;\n    const collectionId = CollectionId(this.collectionId++);\n    const collection = new CollectionMetadata(collectionId, collectionName, collectionData);\n    for (const [fieldName, definition] of Object.entries(collectionData.schema)) {\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, fieldName, definition, collection);\n      outScope.addField({\n        field,\n        name: fieldName,\n        collectionName\n      });\n      collection.fields.add(field);\n    }\n    {\n      const definition = { type: \"number\" /* Number */, isNullable: false };\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, VIRTUAL_INDEX_FIELD, definition, collection);\n      outScope.addField({\n        field,\n        name: VIRTUAL_INDEX_FIELD,\n        collectionName\n      });\n      const ordering = new Ordering();\n      const orderingField = new OrderingField(field);\n      ordering.push(orderingField);\n      outScope.setOrdering(ordering);\n    }\n    for (const indexData of collectionData.indexes) {\n      const lookupNodes = [];\n      for (const expression of indexData.fields) {\n        const node2 = this.buildExpression(outScope, expression);\n        lookupNodes.push(node2);\n      }\n      let constraint;\n      if (indexData.where) {\n        constraint = this.buildExpression(outScope, indexData.where);\n      }\n      const ordering = new Ordering();\n      const indexId = IndexId(this.indexId++);\n      const index = new IndexMetadata(indexId, indexData, collection, lookupNodes, constraint, ordering);\n      collection.indexes.add(index);\n    }\n    const node = this.normalizer.newRelationalScan(collection);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildJoin(inScope, from) {\n    const leftScope = this.buildFrom(inScope, from.left);\n    const rightScope = this.buildFrom(inScope, from.right);\n    const ordering = new Ordering();\n    const leftOrdering = leftScope.getRequiredOrdering();\n    ordering.merge(leftOrdering);\n    const rightOrdering = rightScope.getRequiredOrdering();\n    ordering.merge(rightOrdering);\n    const outScope = inScope.push();\n    outScope.addFieldsFromScope(leftScope);\n    outScope.addFieldsFromScope(rightScope);\n    outScope.setOrdering(ordering);\n    const constraint = this.buildExpression(outScope, from.constraint);\n    const left = leftScope.takeNode();\n    const right = rightScope.takeNode();\n    let node;\n    switch (from.type) {\n      case \"LeftJoin\":\n        node = this.normalizer.newRelationalLeftJoin(left, right, constraint);\n        break;\n      default:\n        assertNever(from.type, \"Unsupported join type\");\n    }\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildExpression(inScope, expression) {\n    switch (expression.type) {\n      case \"Identifier\":\n        return this.buildIdentifier(inScope, expression);\n      case \"LiteralValue\":\n        return this.buildLiteralValue(expression);\n      case \"FunctionCall\":\n        return this.buildFunctionCall(inScope, expression);\n      case \"Case\":\n        return this.buildCase(inScope, expression);\n      case \"UnaryOperation\":\n        return this.buildUnaryOperation(inScope, expression);\n      case \"BinaryOperation\":\n        return this.buildBinaryOperation(inScope, expression);\n      case \"TypeCast\":\n        return this.buildTypeCast(inScope, expression);\n      case \"Select\":\n        throw new Error(\"Subqueries are only supported inside subquery function calls\");\n      default:\n        assertNever(expression, \"Unsupported expression\");\n    }\n  }\n  buildIdentifier(inScope, expression) {\n    const scopeField = inScope.resolveField(expression.name, expression.collection);\n    if (scopeField) {\n      let isOuterField = false;\n      for (const subquery of this.subqueries) {\n        if (isOuterField) {\n          subquery.referencedOuterFields.add(scopeField.field);\n        } else {\n          isOuterField = subquery.inScope.has(scopeField);\n          if (isOuterField) {\n            subquery.referencedFields.add(scopeField.field);\n          }\n        }\n      }\n      return this.normalizer.newScalarVariable(scopeField.field, isOuterField);\n    }\n    return this.normalizer.newScalarConstant(unknownDefinition, null);\n  }\n  buildLiteralValue(expression) {\n    const value = DatabaseValue.parse(expression.value);\n    return this.normalizer.newScalarConstant(unknownDefinition, value);\n  }\n  buildFunctionCall(inScope, expression) {\n    const getArgument = (index) => {\n      const argument = expression.arguments[index];\n      assert(argument, \"Missing argument\");\n      return this.buildExpression(inScope, argument);\n    };\n    switch (expression.functionName) {\n      case \"CONTAINS\" /* Contains */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarContains(source, target);\n      }\n      case \"STARTS_WITH\" /* StartsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarStartsWith(source, target);\n      }\n      case \"ENDS_WITH\" /* EndsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarEndsWith(source, target);\n      }\n      case \"LENGTH\" /* Length */: {\n        const array = getArgument(0);\n        return this.normalizer.newScalarLength(array);\n      }\n      case \"INDEX_OF\" /* IndexOf */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarIndexOf(source, target);\n      }\n      case \"ARRAY\" /* Array */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryArray(inScope, subquery);\n      }\n      case \"FLAT_ARRAY\" /* FlatArray */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryFlatArray(inScope, subquery);\n      }\n      default:\n        throw new Error(\"Unsupported function name\");\n    }\n  }\n  buildSubqueryArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const namedFields = outScope.getNamedFields();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildSubqueryFlatArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const field = outScope.getSingleField();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildCase(inScope, expression) {\n    let input;\n    if (expression.value) {\n      input = this.buildExpression(inScope, expression.value);\n    }\n    const conditions = expression.conditions.map((condition) => {\n      const when = this.buildExpression(inScope, condition.when);\n      const then = this.buildExpression(inScope, condition.then);\n      return new CaseCondition(when, then);\n    });\n    let otherwise;\n    if (expression.else) {\n      otherwise = this.buildExpression(inScope, expression.else);\n    }\n    return this.normalizer.newScalarCase(input, conditions, otherwise);\n  }\n  buildUnaryOperation(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.operator) {\n      case \"not\" /* Not */:\n        return this.normalizer.newScalarNot(input);\n      default:\n        assertNever(expression.operator, \"Unsupported unary operator\");\n    }\n  }\n  buildBinaryOperation(inScope, expression) {\n    const left = this.buildExpression(inScope, expression.left);\n    const right = this.buildExpression(inScope, expression.right);\n    switch (expression.operator) {\n      case \"and\" /* And */:\n        return this.normalizer.newScalarAnd(left, right);\n      case \"or\" /* Or */:\n        return this.normalizer.newScalarOr(left, right);\n      case \"==\" /* Equals */:\n        return this.normalizer.newScalarEquals(left, right);\n      case \"!=\" /* NotEquals */:\n        return this.normalizer.newScalarNotEquals(left, right);\n      case \"<\" /* LessThan */:\n        return this.normalizer.newScalarLessThan(left, right);\n      case \"<=\" /* LessThanOrEqual */:\n        return this.normalizer.newScalarLessThanOrEqual(left, right);\n      case \">\" /* GreaterThan */:\n        return this.normalizer.newScalarGreaterThan(left, right);\n      case \">=\" /* GreaterThanOrEqual */:\n        return this.normalizer.newScalarGreaterThanOrEqual(left, right);\n      case \"in\" /* In */:\n        return this.normalizer.newScalarIn(left, right);\n      default:\n        assertNever(expression.operator, \"Unsupported binary operator\");\n    }\n  }\n  buildTypeCast(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.dataType) {\n      case \"BOOLEAN\" /* Boolean */: {\n        const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"DATE\" /* Date */: {\n        const definition = { type: \"date\" /* Date */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"NUMBER\" /* Number */: {\n        const definition = { type: \"number\" /* Number */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"STRING\" /* String */: {\n        const definition = { type: \"string\" /* String */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      default:\n        throw new Error(\"Unsupported data type\");\n    }\n  }\n};\nfunction getCollection(data2, locale) {\n  if (isAnyLegacyCollection(data2)) {\n    return new CompatibilityDatabaseCollection(data2, locale);\n  }\n  if (isDatabaseCollection(data2)) {\n    return data2;\n  }\n  if (isLocalizedDatabaseCollection(data2)) {\n    while (locale) {\n      const collection = data2.collectionByLocaleId[locale.id];\n      if (collection) return collection;\n      locale = locale.fallback;\n    }\n    return data2.collectionByLocaleId.default;\n  }\n  assertNever(data2, \"Unsupported collection type\");\n}\nvar Subquery = class {\n  constructor(inScope) {\n    this.inScope = inScope;\n    /**\n     * A list of fields that are referenced from `inScope` of the subquery.\n     *\n     * To evaluate a subquery, we need to know which fields are coming from\n     * outside the subquery and which fields are coming from inside the\n     * subquery. For example, in the following query:\n     *\n     * ```\n     * SELECT title, (\n     *     SELECT name FROM articles\n     *     WHERE id = author_id\n     * ) AS author FROM articles\n     * ```\n     *\n     * The `name` and `id` fields are coming from the inside the subquery, but\n     * the `author_id` field is coming from the parent scope. We need to resolve\n     * `author_id` before we can evaluate the subquery.\n     */\n    __publicField(this, \"referencedFields\", new Fields());\n    /**\n     * A list of fields that are referenced from the `inScope` of the parent\n     * subquery.\n     */\n    __publicField(this, \"referencedOuterFields\", new Fields());\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalFilter.ts\nvar RelationalFilter = class _RelationalFilter extends RelationalNode {\n  constructor(input, predicate) {\n    super(input.isSynchronous && predicate.isSynchronous);\n    this.input = input;\n    this.predicate = predicate;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalFilter\", this.inputGroup.id, this.predicate);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.predicate.referencedFields);\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const predicateCost = this.predicate.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, predicateCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const predicate = this.predicate.getOptimized();\n    return new _RelationalFilter(input, predicate);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    const predicates = yield* evaluateArray(\n      input.tuples.map((tuple) => {\n        return this.predicate.evaluate(context, tuple);\n      })\n    );\n    return input.filter((_, index) => {\n      const predicate = predicates[index] ?? null;\n      return valueToBoolean(predicate);\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIndexLookup.ts\nvar RelationalIndexLookup = class _RelationalIndexLookup extends RelationalNode {\n  constructor(index, query) {\n    super(false);\n    this.index = index;\n    this.query = query;\n  }\n  getHash() {\n    return calculateHash(\"RelationalIndexLookup\", this.index.id, ...this.query);\n  }\n  getOutputFields() {\n    return this.index.collection.fields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.index.ordering);\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.index.resolvedFields);\n  }\n  optimize() {\n    const isFullScan = this.query.every((lookup) => lookup.type === \"All\" /* All */);\n    return Cost.estimate(1, isFullScan ? 100 * KB : 50 * KB);\n  }\n  getOptimized() {\n    return new _RelationalIndexLookup(this.index, this.query);\n  }\n  *evaluate() {\n    const index = this.index;\n    const collection = index.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield index.data.lookupItems(this.query);\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of index.resolvedFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIntersection.ts\nvar RelationalIntersection = class _RelationalIntersection extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalIntersection\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new _RelationalIntersection(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.intersection(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEquals.ts\nvar ScalarEquals = class _ScalarEquals extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLeftJoin.ts\nvar RelationalLeftJoin = class _RelationalLeftJoin extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLeftJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new _RelationalLeftJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(rightTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(leftTuple);\n      } else {\n        for (const rightTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(leftTuple);\n          joinedTuple.merge(rightTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      let hasMatch = false;\n      for (const rightTuple of right.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(leftTuple);\n        tuple.merge(rightTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(leftTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalRightJoin.ts\nvar RelationalRightJoin = class _RelationalRightJoin extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalRightJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new _RelationalRightJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(leftTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(rightTuple);\n      } else {\n        for (const leftTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(rightTuple);\n          joinedTuple.merge(leftTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      let hasMatch = false;\n      for (const leftTuple of left.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(rightTuple);\n        tuple.merge(leftTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(rightTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalScan.ts\nvar RelationalScan = class _RelationalScan extends RelationalNode {\n  constructor(collection) {\n    super(false);\n    this.collection = collection;\n  }\n  getHash() {\n    return calculateHash(\"RelationalScan\", this.collection.id);\n  }\n  getOutputFields() {\n    return this.collection.fields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.collection.fields);\n  }\n  optimize() {\n    return Cost.estimate(1, 200 * KB);\n  }\n  getOptimized() {\n    return new _RelationalScan(this.collection);\n  }\n  *evaluate() {\n    const collection = this.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield collection.data.scanItems();\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of outputFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalUnion.ts\nvar RelationalUnion = class _RelationalUnion extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalUnion\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new _RelationalUnion(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.union(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarAnd.ts\nvar ScalarAnd = class _ScalarAnd extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarAnd\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarAnd(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) && valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarConstant.ts\nvar ScalarConstant = class extends ScalarNode {\n  constructor(definition, value) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    super(referencedFields, referencedOuterFields, true);\n    this.definition = definition;\n    this.value = value;\n  }\n  getHash() {\n    return calculateHash(\"ScalarConstant\", this.definition, this.value);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate() {\n    return this.value;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarContains.ts\nvar collation3 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarContains = class _ScalarContains extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarContains\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarContains(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.contains(source, target, collation3)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEndsWith.ts\nvar collation4 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarEndsWith = class _ScalarEndsWith extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEndsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarEndsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.endsWith(source, target, collation4)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThan.ts\nvar ScalarGreaterThan = class _ScalarGreaterThan extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarGreaterThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThanOrEqual.ts\nvar ScalarGreaterThanOrEqual = class _ScalarGreaterThanOrEqual extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarGreaterThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThan.ts\nvar ScalarLessThan = class _ScalarLessThan extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarLessThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThanOrEqual.ts\nvar ScalarLessThanOrEqual = class _ScalarLessThanOrEqual extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarLessThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotEquals.ts\nvar ScalarNotEquals = class _ScalarNotEquals extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarNotEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarOr.ts\nvar ScalarOr = class _ScalarOr extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarOr\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarOr(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) || valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarStartsWith.ts\nvar collation5 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarStartsWith = class _ScalarStartsWith extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarStartsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarStartsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.startsWith(source, target, collation5)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Explorer.ts\nvar Explorer = class {\n  constructor(normalizer) {\n    this.normalizer = normalizer;\n    __publicField(this, \"memo\");\n    this.memo = normalizer.memo;\n  }\n  explore(before) {\n    const group = before.getGroup();\n    if (before instanceof RelationalLeftJoin) {\n      const after = new RelationalRightJoin(before.right, before.left, before.constraint);\n      this.memo.addRelational(after, group);\n    }\n    if (before instanceof RelationalFilter) {\n      if (before.predicate instanceof ScalarAnd) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalIntersection(left, right);\n        this.memo.addRelational(after, group);\n      }\n      if (before.predicate instanceof ScalarOr) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalUnion(left, right);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalScan) {\n      for (const index of before.collection.indexes) {\n        if (index.constraint) continue;\n        const query = createIndexQueryAll(index.lookupNodes.length);\n        const after = new RelationalIndexLookup(index, query);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalFilter) {\n      for (const input of before.inputGroup.nodes) {\n        if (input instanceof RelationalScan) {\n          for (const index of input.collection.indexes) {\n            if (before.predicate instanceof ScalarEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Equals\" /* Equals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Equals\" /* Equals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarNotEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"NotEquals\" /* NotEquals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"NotEquals\" /* NotEquals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarContains && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Contains\" /* Contains */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Contains\" /* Contains */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarStartsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"StartsWith\" /* StartsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"StartsWith\" /* StartsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarEndsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"EndsWith\" /* EndsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"EndsWith\" /* EndsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n          }\n        }\n      }\n    }\n  }\n};\nfunction createIndexQueryAll(length) {\n  const lookup = { type: \"All\" /* All */ };\n  return new Array(length).fill(lookup);\n}\n\n// ../../library/src/modules/cms/optimizer/LogicalProps.ts\nvar RelationalProps = class {\n  constructor(outputFields) {\n    this.outputFields = outputFields;\n  }\n  /**\n   * Checks if the given relational properties are compatible with this.\n   */\n  isCompatible(other) {\n    return this.outputFields.equals(other.outputFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Memo.ts\nvar Memo = class {\n  constructor() {\n    /**\n     * A map of all nodes in the memo by their hash. This allows to easily find\n     * duplicated nodes and their groups.\n     */\n    __publicField(this, \"nodes\", /* @__PURE__ */ new Map());\n    /**\n     * A list of all groups in the memo. The id of a group is the index of the\n     * group in this list.\n     */\n    __publicField(this, \"groups\", []);\n  }\n  /**\n   * Adds a new group with the given relational props to the memo. All nodes\n   * in the group must have the same props. It's expected that the normalized\n   * node is immediately added to the group after creating it.\n   */\n  addGroup(relationalProps) {\n    const id = GroupId(this.groups.length);\n    const group = new Group(id, relationalProps);\n    this.groups.push(group);\n    return group;\n  }\n  /**\n   * Adds a relational node to the memo and the group. If the node is already\n   * in the memo, it returns the existing node. If no group is given, it\n   * creates a new group with the given relational props of the node.\n   */\n  addRelational(node, group) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing) return existing;\n    this.nodes.set(hash2, node);\n    const outputFields = node.getOutputFields();\n    const relational = new RelationalProps(outputFields);\n    group ??= this.addGroup(relational);\n    group.addNode(node);\n    assert(relational.isCompatible(group.relational), \"Group has inconsistent relational props\");\n    return node;\n  }\n  /**\n   * Adds a scalar node to the memo. If the node is already in the memo, it\n   * returns the existing node.\n   */\n  addScalar(node) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing) return existing;\n    this.nodes.set(hash2, node);\n    return node;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLimit.ts\nvar RelationalLimit = class _RelationalLimit extends RelationalNode {\n  constructor(input, limit, ordering) {\n    super(input.isSynchronous && limit.isSynchronous);\n    this.input = input;\n    this.limit = limit;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLimit\", this.inputGroup.id, this.limit);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.limit.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const limitCost = this.limit.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, limitCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const limit = this.limit.getOptimized();\n    return new _RelationalLimit(input, limit, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, limit } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      limit: this.limit.evaluate(context, void 0)\n    });\n    const value = valueToNumber(limit) ?? Infinity;\n    if (value === Infinity) return input;\n    return input.slice(0, value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalOffset.ts\nvar RelationalOffset = class _RelationalOffset extends RelationalNode {\n  constructor(input, offset, ordering) {\n    super(input.isSynchronous && offset.isSynchronous);\n    this.input = input;\n    this.offset = offset;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalOffset\", this.inputGroup.id, this.offset);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.offset.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const offsetCost = this.offset.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, offsetCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const offset = this.offset.getOptimized();\n    return new _RelationalOffset(input, offset, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, offset } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      offset: this.offset.evaluate(context, void 0)\n    });\n    const value = valueToNumber(offset) ?? 0;\n    if (value === 0) return input;\n    return input.slice(value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarArray.ts\nvar ScalarArray = class _ScalarArray extends ScalarNode {\n  constructor(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.namedFields = namedFields;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    const itemDefinitions = {};\n    const namedFieldEntries = Object.entries(namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      itemDefinitions[name] = field.definition;\n    }\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: {\n        type: \"object\" /* Object */,\n        isNullable: false,\n        definitions: itemDefinitions\n      }\n    };\n  }\n  getHash() {\n    const namedFieldIds = {};\n    const namedFieldEntries = Object.entries(this.namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      namedFieldIds[name] = field.id;\n    }\n    return calculateHash(\n      \"ScalarArray\",\n      this.inputGroup.id,\n      namedFieldIds,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    const fields = Object.values(this.namedFields);\n    for (const field of fields) {\n      if (isUndefined(field.collection)) continue;\n      resolvedFields.add(field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _ScalarArray(\n      input,\n      this.namedFields,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context) inputContext.merge(context);\n    if (tuple) inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    const namedFieldEntries = Object.entries(this.namedFields);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        const value = {};\n        for (const [name, field] of namedFieldEntries) {\n          value[name] = relationTuple.getValue(field);\n        }\n        return {\n          type: \"object\" /* Object */,\n          value\n        };\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCast.ts\nvar ScalarCast = class _ScalarCast extends ScalarNode {\n  constructor(input, definition) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.definition = definition;\n    assert(definition.isNullable, \"Unsupported non-nullable cast\");\n  }\n  getHash() {\n    return calculateHash(\"ScalarCast\", this.input, this.definition);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new _ScalarCast(input, this.definition);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return DatabaseValue.cast(input, this.definition);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarFlatArray.ts\nvar ScalarFlatArray = class _ScalarFlatArray extends ScalarNode {\n  constructor(input, field, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.field = field;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: field.definition\n    };\n  }\n  getHash() {\n    return calculateHash(\n      \"ScalarFlatArray\",\n      this.inputGroup.id,\n      this.field.id,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    if (!isUndefined(this.field.collection)) {\n      resolvedFields.add(this.field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _ScalarFlatArray(input, this.field, this.ordering, this.referencedFields, this.referencedOuterFields);\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context) inputContext.merge(context);\n    if (tuple) inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        return relationTuple.getValue(this.field);\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIn.ts\nvar collation6 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarIn = class _ScalarIn extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.in(left, right, collation6)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIndexOf.ts\nvar collation7 = {\n  type: 1 /* CaseSensitive */\n};\nvar ScalarIndexOf = class _ScalarIndexOf extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIndexOf\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarIndexOf(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.indexOf(source, target, collation7)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLength.ts\nvar ScalarLength = class _ScalarLength extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLength\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new _ScalarLength(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.length(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNot.ts\nvar ScalarNot = class _ScalarNot extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNot\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new _ScalarNot(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !valueToBoolean(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotIn.ts\nvar collation8 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNotIn = class _ScalarNotIn extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarNotIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.in(left, right, collation8)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarVariable.ts\nvar ScalarVariable = class extends ScalarNode {\n  constructor(field, isOuterField) {\n    assert(field.name !== VIRTUAL_INDEX_FIELD, \"Invalid field name\");\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    if (isOuterField) {\n      referencedOuterFields.add(field);\n    } else {\n      referencedFields.add(field);\n    }\n    super(referencedFields, referencedOuterFields, true);\n    this.field = field;\n    this.isOuterField = isOuterField;\n    __publicField(this, \"definition\");\n    this.definition = field.definition;\n  }\n  getHash() {\n    return calculateHash(\"ScalarVariable\", this.field.id, this.isOuterField);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate(context, tuple) {\n    if (this.isOuterField) {\n      assert(context, \"Context must exist\");\n      return context.getValue(this.field);\n    }\n    assert(tuple, \"Tuple must exist\");\n    return tuple.getValue(this.field);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Normalizer.ts\nvar Normalizer = class {\n  constructor(memo3) {\n    this.memo = memo3;\n  }\n  finishRelational(node) {\n    return this.memo.addRelational(node);\n  }\n  newRelationalScan(collection) {\n    const node = new RelationalScan(collection);\n    return this.finishRelational(node);\n  }\n  newRelationalIndexLookup(index, query) {\n    const node = new RelationalIndexLookup(index, query);\n    return this.finishRelational(node);\n  }\n  newRelationalLeftJoin(left, right, constraint) {\n    const node = new RelationalLeftJoin(left, right, constraint);\n    return this.finishRelational(node);\n  }\n  newRelationalRightJoin(left, right, constraint) {\n    return this.newRelationalLeftJoin(right, left, constraint);\n  }\n  newRelationalFilter(input, predicate) {\n    if (input instanceof RelationalLeftJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.leftGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.left, predicate);\n      return this.newRelationalLeftJoin(pushedFilter, input.right, input.constraint);\n    }\n    if (input instanceof RelationalRightJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.rightGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.right, predicate);\n      return this.newRelationalLeftJoin(input.left, pushedFilter, input.constraint);\n    }\n    const node = new RelationalFilter(input, predicate);\n    return this.finishRelational(node);\n  }\n  newRelationalProject(input, projections, passthrough) {\n    const node = new RelationalProject(input, projections, passthrough);\n    return this.finishRelational(node);\n  }\n  newRelationalLimit(input, limit, ordering) {\n    if (input instanceof RelationalProject && // Check that the limit doesn't depend on any projected field.\n    limit.referencedFields.subsetOf(input.inputGroup.relational.outputFields) && // Check that the ordering doesn't depend on any projected field.\n    ordering.providedByFields(input.inputGroup.relational.outputFields)) {\n      const pushedLimit = this.newRelationalLimit(input.input, limit, ordering);\n      return this.newRelationalProject(pushedLimit, input.projections, input.passthrough);\n    }\n    const node = new RelationalLimit(input, limit, ordering);\n    return this.finishRelational(node);\n  }\n  newRelationalOffset(input, offset, ordering) {\n    const node = new RelationalOffset(input, offset, ordering);\n    return this.finishRelational(node);\n  }\n  finishScalar(node) {\n    const isConstant = node instanceof ScalarConstant;\n    if (!isConstant && node.isSynchronous && node.referencedFields.size === 0 && node.referencedOuterFields.size === 0) {\n      const value = node.evaluateSync();\n      return this.newScalarConstant(node.definition, value);\n    }\n    return this.memo.addScalar(node);\n  }\n  /**\n   * When we create `ScalarConstant` nodes, we always give them an unknown\n   * type definition. Before we compare them to other nodes, we need to cast\n   * them to a specific type.\n   *\n   * For example, in the following query:\n   * ```\n   * SELECT id FROM cars WHERE type = \"coupe\"\n   * ```\n   *\n   * If the `type` field is an enum, and we parse the `\"coupe\"` constant as a\n   * string, the where clause will always be false because an enum can't be\n   * equal to a string. But if we cast the string to an enum type first, the\n   * where clause will work as expected.\n   */\n  removeUnknown(node, definition) {\n    if (node.definition.type !== \"unknown\") return node;\n    if (definition.type === \"unknown\") return node;\n    const nullableDefinition = { ...definition, isNullable: true };\n    return this.newScalarCast(node, nullableDefinition);\n  }\n  newScalarVariable(field, isOuterField) {\n    const node = new ScalarVariable(field, isOuterField);\n    return this.finishScalar(node);\n  }\n  newScalarConstant(definition, value) {\n    const node = new ScalarConstant(definition, value);\n    return this.finishScalar(node);\n  }\n  newScalarNot(input) {\n    if (input instanceof ScalarNot) {\n      if (input.input.definition.type === \"boolean\" /* Boolean */) {\n        return input.input;\n      }\n      const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n      return this.newScalarCast(input.input, definition);\n    }\n    if (input instanceof ScalarEquals) {\n      return this.newScalarNotEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarNotEquals) {\n      return this.newScalarEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThan) {\n      return this.newScalarGreaterThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThanOrEqual) {\n      return this.newScalarGreaterThan(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThan) {\n      return this.newScalarLessThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThanOrEqual) {\n      return this.newScalarLessThan(input.left, input.right);\n    }\n    if (input instanceof ScalarAnd) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarOr(left, right);\n    }\n    if (input instanceof ScalarOr) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarAnd(left, right);\n    }\n    const node = new ScalarNot(input);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 AND true` to `$1`\n  // TODO: Normalize `true AND $1` to `$1`\n  // TODO: Normalize `$1 AND false` to `false`\n  // TODO: Normalize `false AND $1` to `false`\n  // TODO: Normalize `$1 AND ($2 AND $c)` to `($1 AND $2) AND $c`\n  newScalarAnd(left, right) {\n    const node = new ScalarAnd(left, right);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 OR true` to `$1`\n  // TODO: Normalize `true OR $1` to `$1`\n  // TODO: Normalize `$1 OR false` to `$1`\n  // TODO: Normalize `false OR $1` to `false`\n  // TODO: Normalize `$1 OR ($2 OR $c)` to `($1 OR $2) OR $c`\n  newScalarOr(left, right) {\n    const node = new ScalarOr(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarNotEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarNotEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarNotIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarCase(input, conditions, otherwise) {\n    if (input) {\n      const castConditions = [];\n      for (const { when, then } of conditions) {\n        const castWhen = this.removeUnknown(when, input.definition);\n        const castCondition = new CaseCondition(castWhen, then);\n        castConditions.push(castCondition);\n      }\n      conditions = castConditions;\n    }\n    const node = new ScalarCase(input, conditions, otherwise);\n    return this.finishScalar(node);\n  }\n  newScalarContains(source, target) {\n    const node = new ScalarContains(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarStartsWith(source, target) {\n    const node = new ScalarStartsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarEndsWith(source, target) {\n    const node = new ScalarEndsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarLength(array) {\n    const node = new ScalarLength(array);\n    return this.finishScalar(node);\n  }\n  newScalarIndexOf(source, target) {\n    const node = new ScalarIndexOf(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarCast(input, definition) {\n    if (input.definition.type === definition.type) {\n      return input;\n    }\n    const node = new ScalarCast(input, definition);\n    return this.finishScalar(node);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerNode.ts\nvar EnforcerNode = class extends RelationalNode {\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerResolve.ts\nvar EnforcerResolve = class _EnforcerResolve extends EnforcerNode {\n  constructor(input, fields) {\n    super(false);\n    this.input = input;\n    this.fields = fields;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerResolve\", this.inputGroup.id, this.fields);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.fields);\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields();\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return Cost.estimate(0, 100 * KB).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _EnforcerResolve(input, this.fields);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    assert(this.fields.subsetOf(input.fields), \"Fields can't be resolved\");\n    const collections = /* @__PURE__ */ new Set();\n    for (const field of this.fields) {\n      assert(field.collection, \"Collection required to resolve field\");\n      collections.add(field.collection);\n    }\n    for (const tuple of input.tuples) {\n      for (const field of this.fields) {\n        const value = tuple.getValue(field);\n        if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n          assert(value.value instanceof RichTextResolver, \"Pointer must be wrapped\");\n          void value.value.resolve();\n        } else if ((value == null ? void 0 : value.type) === \"vectorsetitem\" /* VectorSetItem */) {\n          assert(value.value instanceof VectorSetItemResolver, \"Pointer must be wrapped\");\n          void value.value.resolve();\n        }\n      }\n    }\n    const collectionItems = yield Promise.all(\n      Array.from(collections).map(async (collection) => {\n        const pointers = [];\n        for (const tuple of input.tuples) {\n          const pointer = tuple.getPointer(collection);\n          if (pointer) pointers.push(pointer);\n        }\n        const items = await collection.data.resolveItems(pointers);\n        assert(items.length === pointers.length, \"Invalid number of items\");\n        return [collection, items];\n      })\n    );\n    return input.map(input.fields, (tuple) => {\n      const result = new Tuple();\n      result.merge(tuple);\n      for (const [collection, items] of collectionItems) {\n        const pointer = tuple.getPointer(collection);\n        if (!pointer) continue;\n        const item = items.shift();\n        assert(item, \"Item not found\");\n        assert(item.pointer === pointer, \"Pointer mismatch\");\n        for (const field of collection.fields) {\n          const value = field.getValue(item);\n          result.addValue(field, value);\n        }\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerSort.ts\nvar collation9 = {\n  type: 0 /* CaseInsensitive */\n};\nvar EnforcerSort = class _EnforcerSort extends EnforcerNode {\n  constructor(input, ordering) {\n    super(input.isSynchronous);\n    this.input = input;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerSort\", this.inputGroup.id, this.ordering);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const { field } of this.ordering.fields) {\n      if (field.name === VIRTUAL_INDEX_FIELD) continue;\n      if (isUndefined(field.collection)) continue;\n      resolvedFields.add(field);\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _EnforcerSort(input, this.ordering);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    return input.sort((leftTuple, rightTuple) => {\n      for (const { field, direction } of this.ordering.fields) {\n        const isAscending = direction === \"asc\" /* Ascending */;\n        if (field.name === VIRTUAL_INDEX_FIELD) {\n          const collection = field.collection;\n          assert(collection, \"Collection required for sorting\");\n          const leftPointer = leftTuple.getPointer(collection);\n          assert(leftPointer, \"Pointer required for sorting\");\n          const leftItem = { pointer: leftPointer, data: {} };\n          const rightPointer = rightTuple.getPointer(collection);\n          assert(rightPointer, \"Pointer required for sorting\");\n          const rightItem = { pointer: rightPointer, data: {} };\n          const order = collection.data.compareItems(leftItem, rightItem);\n          return isAscending ? order : -order;\n        }\n        const leftValue = leftTuple.getValue(field);\n        const rightValue = rightTuple.getValue(field);\n        if (DatabaseValue.equal(leftValue, rightValue, collation9)) {\n          continue;\n        }\n        if (isNull(leftValue) || DatabaseValue.lessThan(leftValue, rightValue, collation9)) {\n          return isAscending ? -1 : 1;\n        }\n        if (isNull(rightValue) || DatabaseValue.greaterThan(leftValue, rightValue, collation9)) {\n          return isAscending ? 1 : -1;\n        }\n        throw new Error(\"Invalid comparison\");\n      }\n      return 0;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalAssert.ts\nvar collation10 = {\n  type: 1 /* CaseSensitive */\n};\n\n// ../../library/src/modules/cms/optimizer/Optimizer.ts\nvar Optimizer = class {\n  constructor(query, locale) {\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"memo\", new Memo());\n    __publicField(this, \"normalizer\", new Normalizer(this.memo));\n    __publicField(this, \"explorer\", new Explorer(this.normalizer));\n  }\n  optimize() {\n    const builder = new Builder(this.normalizer, this.query, this.locale);\n    const outScope = builder.build();\n    const root = outScope.takeNode();\n    const group = root.getGroup();\n    const required = outScope.getRequiredProps();\n    this.optimizeGroup(group, required);\n    const optimized = group.getOptimized(required);\n    const namedFields = outScope.getNamedFields();\n    return [optimized, namedFields];\n  }\n  optimizeGroup(group, required) {\n    const winner = group.getWinner(required);\n    if (winner.node) return winner.cost;\n    const normalized = group.nodes[0];\n    assert(normalized, \"Normalized node not found\");\n    this.createEnforcer(winner, normalized, required);\n    for (const node of group.nodes) {\n      if (required.canProvide(node)) {\n        const cost = node.optimize(this, required);\n        winner.update(node, cost);\n      }\n      if (required.isMinimal) {\n        this.explorer.explore(node);\n      }\n    }\n    if (false) {\n      assert(winner.node, \"Group not optimized\");\n      const cache2 = /* @__PURE__ */ new Map();\n      winner.node = new RelationalAssert(winner.node, required, cache2);\n    }\n    return winner.cost;\n  }\n  createEnforcer(winner, node, required) {\n    if (required.resolvedFields.size > 0) {\n      const enforcer = new EnforcerResolve(node, required.resolvedFields);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n    if (required.ordering.length > 0) {\n      const enforcer = new EnforcerSort(node, required.ordering);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n  }\n};\n\n// ../../library/src/modules/cms/stringifyQuery.ts\nfunction stringifyIdentifier(expression) {\n  if (expression.collection) {\n    return `\"${expression.collection}\".\"${expression.name}\"`;\n  }\n  return `\"${expression.name}\"`;\n}\nfunction stringifyLiteralValue(expression) {\n  if (typeof expression.value === \"string\") {\n    return `'${expression.value}'`;\n  }\n  return expression.value;\n}\nfunction stringifyFunctionCall(expression) {\n  return `${expression.functionName}(${expression.arguments.map((argument) => stringifyExpression(argument)).join(\", \")})`;\n}\nfunction stringifyCaseExpression(expression) {\n  let caseString = \"CASE\";\n  if (expression.value) {\n    caseString += ` ${stringifyExpression(expression.value)}`;\n  }\n  for (const condition of expression.conditions) {\n    caseString += ` WHEN ${stringifyExpression(condition.when)} THEN ${stringifyExpression(condition.then)}`;\n  }\n  if (expression.else) {\n    caseString += ` ELSE ${stringifyExpression(expression.else)}`;\n  }\n  caseString += \" END\";\n  return caseString;\n}\nfunction stringifyUnaryOperation(expression) {\n  const value = stringifyExpression(expression.value);\n  const operator = expression.operator.toUpperCase();\n  return `${operator} ${value}`;\n}\nfunction stringifyBinaryOperation(expression) {\n  const left = stringifyExpression(expression.left);\n  const right = stringifyExpression(expression.right);\n  const operator = expression.operator.toUpperCase();\n  return `${left} ${operator} ${right}`;\n}\nfunction stringifyTypeCast(expression) {\n  return `CAST(${stringifyExpression(expression.value)} as ${expression.dataType})`;\n}\nfunction stringifyExpression(expression) {\n  switch (expression.type) {\n    case \"Identifier\":\n      return stringifyIdentifier(expression);\n    case \"LiteralValue\":\n      return stringifyLiteralValue(expression);\n    case \"FunctionCall\":\n      return stringifyFunctionCall(expression);\n    case \"Case\":\n      return stringifyCaseExpression(expression);\n    case \"UnaryOperation\":\n      return stringifyUnaryOperation(expression);\n    case \"BinaryOperation\":\n      return stringifyBinaryOperation(expression);\n    case \"TypeCast\":\n      return stringifyTypeCast(expression);\n    case \"Select\":\n      return `${stringifyQuery(expression)}`;\n    default: {\n      assertNever(expression);\n    }\n  }\n}\nfunction stringifyCollection(collection) {\n  if (isDatabaseCollection(collection.data)) {\n    return \"Collection\";\n  }\n  if (collection.alias) {\n    return `\"${collection.data.displayName}\" AS \"${collection.alias}\"`;\n  }\n  return `\"${collection.data.displayName}\"`;\n}\nfunction stringifyJoin(join) {\n  let result = `${stringifyFrom(join.left)} LEFT JOIN ${stringifyFrom(join.right)}`;\n  if (join.constraint) {\n    result += ` ON ${stringifyExpression(join.constraint)}`;\n  }\n  return result;\n}\nfunction stringifyFrom(from) {\n  switch (from.type) {\n    case \"Collection\":\n      return stringifyCollection(from);\n    case \"LeftJoin\":\n      return stringifyJoin(from);\n    default:\n      assertNever(from);\n  }\n}\nfunction autoIndentSql(sql) {\n  let formattedSql = \"\";\n  const tokens = sql.split(/\\s+/u);\n  tokens.forEach((token) => {\n    if (token === \"\") return;\n    if ([\"SELECT\", \"FROM\", \"WHERE\", \"ORDER\", \"LIMIT\", \"OFFSET\"].includes(token)) {\n      formattedSql += `\n${token}`;\n    } else if ([\"AND\", \"OR\"].includes(token)) {\n      formattedSql += `\n\t${token}`;\n    } else {\n      formattedSql += ` ${token}`;\n    }\n  });\n  return formattedSql.trim();\n}\nfunction stringifyQuery(query) {\n  let queryString = \"\";\n  queryString += `SELECT ${query.select.map((selectExpression) => {\n    const expressionString = stringifyExpression(selectExpression);\n    if (selectExpression.alias) {\n      return `${expressionString} AS \"${selectExpression.alias}\"`;\n    }\n    return expressionString;\n  }).join(\", \")}`;\n  queryString += ` FROM ${stringifyFrom(query.from)}`;\n  if (query.where) {\n    queryString += ` WHERE ${stringifyExpression(query.where)}`;\n  }\n  if (query.orderBy) {\n    queryString += ` ORDER BY ${query.orderBy.map((orderExpression) => {\n      return `${stringifyExpression(orderExpression)} ${orderExpression.direction ?? \"asc\" /* Ascending */}`;\n    }).join(\", \")}`;\n  }\n  if (query.limit) {\n    queryString += ` LIMIT ${stringifyExpression(query.limit)}`;\n  }\n  if (query.offset) {\n    queryString += ` OFFSET ${stringifyExpression(query.offset)}`;\n  }\n  return autoIndentSql(queryString);\n}\n\n// ../../library/src/modules/cms/QueryEngine.ts\nvar log = /* @__PURE__ */ getLogger(\"query-engine\");\nvar QueryEngine = class {\n  async query(query, locale) {\n    log.debug(`Query:\n${stringifyQuery(query)}`);\n    const optimizer = new Optimizer(query, locale);\n    const [root, namedFields] = optimizer.optimize();\n    const relation = await root.evaluateAsync();\n    const namedFieldEntries = Object.entries(namedFields);\n    const result = await Promise.all(\n      relation.tuples.map(async (tuple) => {\n        const resolvedFields = await Promise.all(\n          namedFieldEntries.map(async ([name, field]) => {\n            const value = tuple.getValue(field);\n            const resolved = await this.resolveValue(value);\n            return [name, resolved];\n          })\n        );\n        return Object.fromEntries(resolvedFields);\n      })\n    );\n    return result;\n  }\n  async resolveValue(value) {\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(value.value instanceof RichTextResolver, \"Pointer must be wrapped\");\n      return value.value.resolve();\n    }\n    if ((value == null ? void 0 : value.type) === \"vectorsetitem\" /* VectorSetItem */) {\n      assert(value.value instanceof VectorSetItemResolver, \"Pointer must be wrapped\");\n      return value.value.resolve();\n    }\n    if ((value == null ? void 0 : value.type) === \"array\" /* Array */) {\n      return Promise.all(\n        value.value.map(async (item) => {\n          return this.resolveValue(item);\n        })\n      );\n    }\n    if ((value == null ? void 0 : value.type) === \"object\" /* Object */) {\n      const entries = Object.entries(value.value);\n      const resolvedEntries = await Promise.all(\n        entries.map(async ([key7, item]) => {\n          const resolved = await this.resolveValue(item);\n          return [key7, resolved];\n        })\n      );\n      return Object.fromEntries(resolvedEntries);\n    }\n    return (value == null ? void 0 : value.value) ?? null;\n  }\n};\n\n// ../../library/src/modules/cms/QueryCache.ts\nvar QueryCache = class {\n  constructor(queryEngine2, maxSize = Infinity) {\n    this.queryEngine = queryEngine2;\n    this.maxSize = maxSize;\n    __publicField(this, \"cache\", /* @__PURE__ */ new Map());\n  }\n  prune() {\n    if (this.cache.size <= this.maxSize) return;\n    for (const [key7, value] of this.cache) {\n      if (this.cache.size <= this.maxSize) break;\n      if (value.state === \"pending\") continue;\n      this.cache.delete(key7);\n    }\n  }\n  get(query, locale) {\n    const key7 = getCacheKey(query, locale);\n    const existing = this.cache.get(key7);\n    if (existing) {\n      this.cache.delete(key7);\n      this.cache.set(key7, existing);\n      return existing;\n    }\n    const resolver = () => this.queryEngine.query(query, locale);\n    const value = new LazyValue(resolver);\n    this.cache.set(key7, value);\n    this.prune();\n    return value;\n  }\n};\nvar collectionIds = /* @__PURE__ */ new WeakMap();\nfunction getCollectionId(collection) {\n  const existing = collectionIds.get(collection);\n  if (existing) return existing;\n  const id = Math.random().toString(16).slice(2);\n  collectionIds.set(collection, id);\n  return id;\n}\nfunction replaceCollection(_, value) {\n  if (isObject2(value) && value.type === \"Collection\" && isAnyCollection(value.data)) {\n    return getCollectionId(value.data);\n  }\n  return value;\n}\nfunction getCacheKey(query, locale) {\n  const localeId = (locale == null ? void 0 : locale.id) ?? \"default\";\n  return JSON.stringify(query, replaceCollection) + localeId;\n}\n\n// ../../library/src/modules/useActiveVariantCallback.ts\nimport { useEffect as useEffect21, useRef as useRef20 } from \"react\";\nfunction rejectPending(pendingTimers, pendingPromises) {\n  pendingTimers.forEach((t) => clearTimeout(t));\n  pendingTimers.clear();\n  pendingPromises.forEach((reject) => reject == null ? void 0 : reject(\"Callback cancelled by variant change\"));\n  pendingPromises.clear();\n}\nfunction createSet() {\n  return /* @__PURE__ */ new Set();\n}\nfunction useActiveVariantCallback(baseVariant) {\n  const pendingPromises = useConstant(createSet);\n  const pendingTimers = useConstant(createSet);\n  useOnCurrentTargetChange(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  });\n  useEffect21(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  }, []);\n  useEffect21(() => {\n    rejectPending(pendingTimers, pendingPromises);\n  }, [baseVariant]);\n  return useRef20({\n    /**\n     * Create a callback that can be cancelled if the base variant changes.\n     */\n    activeVariantCallback: (callback) => async (...args) => {\n      return new Promise((resolve, reject) => {\n        pendingPromises.add(reject);\n        void callback(...args).then(resolve);\n      }).catch(() => {\n      });\n    },\n    /**\n     * Execute a callback after a defined period of time. The callback will not\n     * be called if pending events are cancelled because the timeout will be\n     * cancelled.\n     */\n    delay: async (callback, msDelay) => {\n      await new Promise((resolve) => {\n        pendingTimers.add(globalThis.setTimeout(() => resolve(true), msDelay));\n      });\n      callback();\n    }\n  }).current;\n}\nfunction useActiveTargetCallback() {\n  const value = useActiveVariantCallback(void 0);\n  return useRef20({\n    activeTargetCallback: value.activeVariantCallback,\n    delay: value.delay\n  }).current;\n}\n\n// ../../library/src/modules/useAddVariantProps.ts\nimport React69 from \"react\";\nfunction useAddVariantProps(baseVariant, gestureVariant, variantProps) {\n  return React69.useCallback(\n    (id) => {\n      var _a, _b, _c;\n      if (!variantProps) return {};\n      if (!baseVariant) return {};\n      if (gestureVariant) {\n        return Object.assign({}, (_a = variantProps[baseVariant]) == null ? void 0 : _a[id], (_b = variantProps[gestureVariant]) == null ? void 0 : _b[id]);\n      }\n      return ((_c = variantProps[baseVariant]) == null ? void 0 : _c[id]) || {};\n    },\n    [baseVariant, gestureVariant, variantProps]\n  );\n}\n\n// ../../library/src/modules/useBreakpointVariants.ts\nimport { startTransition as startTransition8, useCallback as useCallback16, useContext as useContext26, useEffect as useEffect22, useRef as useRef21 } from \"react\";\nfunction createMediaQueriesFromBreakpoints(breakpoints) {\n  const mediaQueries = {};\n  for (const [variant, query] of Object.entries(breakpoints)) {\n    const { min = 0, max } = query;\n    const mediaQuery = [];\n    if (min) mediaQuery.push(`(min-width: ${min}px)`);\n    if (max) mediaQuery.push(`(max-width: ${max}px)`);\n    if (mediaQuery.length) mediaQueries[variant] = mediaQuery.join(\" and \");\n  }\n  return mediaQueries;\n}\nfunction activeMediaQueryFromWindow(mediaQueries) {\n  for (const [variant, query] of Object.entries(mediaQueries)) {\n    const mql = safeWindow.matchMedia(query);\n    if (mql.matches) return variant;\n  }\n}\nfunction activeBreakpointHashesFromWindow(breakpoints) {\n  var _a;\n  const matches = [];\n  for (const { hash: hash2, mediaQuery } of breakpoints) {\n    if (!mediaQuery) continue;\n    const mql = safeWindow.matchMedia(mediaQuery);\n    if (mql.matches) matches.push(hash2);\n  }\n  if (matches.length > 0) return matches;\n  const defaultHash = (_a = breakpoints[0]) == null ? void 0 : _a.hash;\n  if (!defaultHash) return void 0;\n  return [defaultHash];\n}\nfunction useHydratedBreakpointVariants(initial, mediaQueries, hydratedWithInitial = true) {\n  const isInitialNavigation = useContext26(IsInitialNavigationContext);\n  const isStaticRenderer2 = useIsStaticRenderer();\n  const usesMediaQueries = !isStaticRenderer2 && isBrowser2();\n  const baseVariant = useRef21(usesMediaQueries ? activeMediaQueryFromWindow(mediaQueries) ?? initial : initial);\n  const basePropsVariant = useRef21(hydratedWithInitial && isInitialNavigation ? initial : baseVariant.current);\n  const forceUpdate = useForceUpdate2();\n  const instantTransition = useInstantTransition();\n  const setActiveVariantInstant = useCallback16(\n    (variant) => {\n      if (variant !== baseVariant.current || variant !== basePropsVariant.current) {\n        let updateStateAndRerender2 = function() {\n          baseVariant.current = basePropsVariant.current = variant;\n          startTransition8(() => {\n            forceUpdate();\n          });\n        };\n        var updateStateAndRerender = updateStateAndRerender2;\n        if (isStaticRenderer2) {\n          updateStateAndRerender2();\n        } else {\n          instantTransition(() => {\n            updateStateAndRerender2();\n          });\n        }\n      }\n    },\n    [instantTransition, forceUpdate, isStaticRenderer2]\n  );\n  useIsomorphicLayoutEffect2(() => {\n    if (!isStaticRenderer2) return;\n    setActiveVariantInstant(initial);\n  }, [initial, isStaticRenderer2, setActiveVariantInstant]);\n  useIsomorphicLayoutEffect2(() => {\n    if (!hydratedWithInitial || isInitialNavigation !== true) return;\n    setActiveVariantInstant(baseVariant.current);\n  }, []);\n  useEffect22(() => {\n    const callbacks = [];\n    for (const [variant, query] of Object.entries(mediaQueries)) {\n      const mql = safeWindow.matchMedia(query);\n      const callback = (event) => {\n        if (event.matches) setActiveVariantInstant(variant);\n      };\n      addMQLCallback(mql, callback);\n      callbacks.push([mql, callback]);\n    }\n    return () => callbacks.forEach(([mql, callback]) => removeMQLCallback(mql, callback));\n  }, [mediaQueries, setActiveVariantInstant]);\n  return [baseVariant.current, basePropsVariant.current];\n}\nfunction addMQLCallback(mql, callback) {\n  if (mql.addEventListener) {\n    mql.addEventListener(\"change\", callback);\n  } else {\n    mql.addListener(callback);\n  }\n}\nfunction removeMQLCallback(mql, callback) {\n  if (mql.removeEventListener) {\n    mql.removeEventListener(\"change\", callback);\n  } else {\n    mql.removeListener(callback);\n  }\n}\nfunction useBreakpointVariants(initial, _width, breakpoints) {\n  const mediaQueries = useConstant(() => createMediaQueriesFromBreakpoints(breakpoints));\n  const [initialVariant] = useHydratedBreakpointVariants(initial, mediaQueries, true);\n  return initialVariant;\n}\nfunction removeHiddenBreakpointLayers(_initial, _mediaQueries, _variantClassNames) {\n}\nvar framerBreakpointCSSSelector = \"style[data-framer-breakpoint-css]\";\nfunction requestIdleCallbackFallback(callback) {\n  setTimeout(callback, 1);\n}\nfunction removeHiddenBreakpointLayersV2(breakpoints) {\n  var _a, _b, _c, _d;\n  const suspenseBoundaries = /* @__PURE__ */ new Set();\n  const activeBreakpointHashes = activeBreakpointHashesFromWindow(breakpoints);\n  if (activeBreakpointHashes) {\n    for (const hash2 of activeBreakpointHashes) {\n      for (const hiddenLayer of document.querySelectorAll(\".hidden-\" + hash2)) {\n        if (isSuspenseBoundaryStart(hiddenLayer.previousSibling)) {\n          suspenseBoundaries.add(hiddenLayer.previousSibling);\n        }\n        (_a = hiddenLayer.parentNode) == null ? void 0 : _a.removeChild(hiddenLayer);\n      }\n    }\n  }\n  const requestIdleCallback2 = supportsRequestIdleCallback ? safeWindow.requestIdleCallback : requestIdleCallbackFallback;\n  requestIdleCallback2(() => {\n    var _a2;\n    (_a2 = document.querySelector(framerBreakpointCSSSelector)) == null ? void 0 : _a2.remove();\n  });\n  for (const ssrVariant of document.querySelectorAll(\".ssr-variant:empty\")) {\n    if (isSuspenseBoundaryStart(ssrVariant.previousSibling)) {\n      suspenseBoundaries.add(ssrVariant.previousSibling);\n    }\n    (_b = ssrVariant.parentNode) == null ? void 0 : _b.removeChild(ssrVariant);\n  }\n  for (const suspenseBoundary of suspenseBoundaries) {\n    if (isSuspenseBoundaryEnd(suspenseBoundary.nextSibling)) {\n      (_c = suspenseBoundary.parentNode) == null ? void 0 : _c.removeChild(suspenseBoundary.nextSibling);\n      (_d = suspenseBoundary.parentNode) == null ? void 0 : _d.removeChild(suspenseBoundary);\n    }\n  }\n}\nfunction isSuspenseBoundaryStart(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"$\";\n}\nfunction isSuspenseBoundaryEnd(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"/$\";\n}\n\n// ../../library/src/modules/useDataRecord.ts\nimport { useMemo as useMemo15 } from \"react\";\nfunction useDataRecord(collection, variables) {\n  return useMemo15(() => {\n    if (!Array.isArray(collection)) {\n      return null;\n    }\n    if (!variables) {\n      return null;\n    }\n    const pageRecord = collection.find((record) => {\n      return Object.entries(variables).every(([key7, value]) => {\n        const recordValue = record[key7];\n        if (value === void 0 || recordValue === void 0 || isObject2(value) || isObject2(recordValue)) {\n          return false;\n        }\n        return String(value) === String(recordValue);\n      });\n    });\n    return pageRecord ?? null;\n  }, [collection, variables]);\n}\n\n// ../../library/src/modules/useDynamicRefs.ts\nimport React70, { createRef, useMemo as useMemo16 } from \"react\";\nfunction useDynamicRefs() {\n  const map2 = useConstant(() => /* @__PURE__ */ new Map());\n  return React70.useCallback((key7) => {\n    const existing = map2.get(key7);\n    if (existing) return existing;\n    const ref = createRef();\n    map2.set(key7, ref);\n    return ref;\n  }, []);\n}\nvar map = /* @__PURE__ */ new Map();\nfunction useSiteRefs() {\n  const route = useCurrentRoute();\n  const path = useMemo16(() => {\n    return getPathForRoute(route, {\n      currentRoutePath: route == null ? void 0 : route.path,\n      currentPathVariables: route == null ? void 0 : route.pathVariables,\n      preserveQueryParams: false,\n      relative: false,\n      siteCanonicalURL: void 0\n    });\n  }, [route]);\n  return React70.useCallback(\n    (key7) => {\n      if (!key7) return;\n      const computedKey = `${path}-${key7}`;\n      const existing = map.get(computedKey);\n      if (existing) return existing;\n      const ref = createRef();\n      map.set(computedKey, ref);\n      return ref;\n    },\n    [path]\n  );\n}\n\n// ../../library/src/modules/useGamepad.ts\nimport React71 from \"react\";\nfunction isFramerGamepadKeydownData(value) {\n  return isObject2(value) && value.mapping !== void 0;\n}\nfunction gamepadInputsHaveChanged(previous, current) {\n  if (previous.length !== current.length) return true;\n  if (!previous.every((item, i) => current[i] === item)) return true;\n  return false;\n}\nfunction createGamepadPoller() {\n  const handlers = /* @__PURE__ */ new Set();\n  let isConnected = false;\n  let isPolling = null;\n  let lastKeys = [];\n  const startPolling = () => {\n    const input = getGamepadInputs();\n    if (!input) return;\n    const { gamepad, inputs } = input;\n    const { mapping, id } = gamepad;\n    if (gamepadInputsHaveChanged(lastKeys, inputs)) handlers.forEach((handler) => handler({ inputs, mapping, id }));\n    lastKeys = inputs;\n    isPolling = safeWindow.requestAnimationFrame(startPolling);\n  };\n  const handleConnection = () => {\n    if (isConnected || isPolling) return;\n    startPolling();\n    isConnected = true;\n  };\n  const stopPolling = () => {\n    if (!isPolling) return;\n    safeWindow.cancelAnimationFrame(isPolling);\n    isPolling = null;\n  };\n  const handleDisconnection = () => {\n    if (!isConnected) return;\n    stopPolling();\n    isConnected = false;\n  };\n  const setupAndStartPolling = () => {\n    if (isPolling) return;\n    const gamepad = getGamepadInputs();\n    if (!gamepad) {\n      safeWindow.addEventListener(\"gamepadconnected\", handleConnection);\n      return;\n    }\n    safeWindow.addEventListener(\"gamepaddisconnected\", handleDisconnection);\n    isConnected = true;\n    startPolling();\n  };\n  const cleanupAndStopPolling = () => {\n    if (!isPolling) return;\n    safeWindow.removeEventListener(\"gamepadconnected\", handleConnection);\n    safeWindow.removeEventListener(\"gamepaddisconnected\", handleDisconnection);\n    stopPolling();\n  };\n  return {\n    register(callback) {\n      if (handlers.size === 0) setupAndStartPolling();\n      handlers.add(callback);\n    },\n    unregister(callback) {\n      handlers.delete(callback);\n      if (handlers.size === 0) cleanupAndStopPolling();\n    }\n  };\n}\nvar gamepadPoller = /* @__PURE__ */ createGamepadPoller();\nvar GamepadContext = /* @__PURE__ */ React71.createContext(gamepadPoller);\nfunction getGamepadInputs() {\n  let firstConnectedGamepad = null;\n  const gamepads = navigator.getGamepads();\n  for (const gamepad of gamepads) {\n    if (!gamepad) continue;\n    if (!firstConnectedGamepad) firstConnectedGamepad = gamepad;\n    const inputs = [...scanPressedAxis(gamepad), ...scanPressedButtons(gamepad)];\n    if (inputs.length > 0) return { gamepad, inputs };\n  }\n  if (firstConnectedGamepad) return { gamepad: firstConnectedGamepad, inputs: [] };\n  return null;\n}\nfunction scanPressedAxis(gamepad) {\n  const axes = [];\n  for (const [idx, axis] of gamepad.axes.entries()) {\n    if (idx > 3) continue;\n    if (axis <= -0.5) axes.push(`Axis ${idx}-`);\n    if (axis > 0.5) axes.push(`Axis ${idx}+`);\n  }\n  return axes;\n}\nfunction scanPressedButtons(gamepad) {\n  const buttons = [];\n  for (const [idx, button] of gamepad.buttons.entries()) {\n    if (isButtonPressed(button)) buttons.push(`Button ${idx}`);\n  }\n  return buttons;\n}\nfunction isButtonPressed(button) {\n  return button.pressed === true || button.value > 0;\n}\nfunction useGamepad(input, callback, { mapping, on } = {}) {\n  const context = React71.useContext(GamepadContext);\n  const settings = useConstant(() => ({\n    mapping: mapping ?? \"standard\",\n    on: on ?? \"keydown\"\n  }));\n  const stateRef = React71.useRef({\n    pressed: false,\n    handler: callback\n  });\n  const cb = React71.useCallback(\n    (gamepad) => {\n      const { pressed, handler } = stateRef.current;\n      if (gamepad.inputs.includes(input) && settings.mapping === gamepad.mapping) {\n        settings.on === \"keydown\" && handler();\n        stateRef.current.pressed = true;\n      } else if (pressed) {\n        settings.on === \"keyup\" && handler();\n        stateRef.current.pressed = false;\n      }\n    },\n    [input, settings]\n  );\n  useOnCurrentTargetChange((isInTarget, isOverlayed) => {\n    const isActive = isInTarget && !isOverlayed;\n    if (isActive) {\n      context.register(cb);\n    } else {\n      context.unregister(cb);\n    }\n    return () => context.unregister(cb);\n  }, []);\n  React71.useEffect(() => {\n    return () => context.unregister(cb);\n  }, [cb, context]);\n  React71.useEffect(() => {\n    stateRef.current.handler = callback;\n  }, [callback]);\n}\n\n// ../../library/src/modules/useHotkey.ts\nimport React72 from \"react\";\nvar modifierDefaults = {\n  altKey: false,\n  ctrlKey: false,\n  metaKey: false,\n  shiftKey: false\n};\nfunction createShortcutDefinition(shortcut) {\n  const keys3 = shortcut.split(\"+\");\n  const key7 = keys3.pop();\n  if (!key7) return void 0;\n  const modifiers = {};\n  for (const modifier of keys3) {\n    modifiers[`${modifier}Key`] = true;\n  }\n  return {\n    ...modifierDefaults,\n    ...modifiers,\n    key: key7\n  };\n}\nfunction useHotkey(shortcut, callback) {\n  const inTarget = React72.useRef(true);\n  const shortcutDefinition = useConstant(() => createShortcutDefinition(shortcut));\n  useOnCurrentTargetChange((isCurrentTarget, isOverlayed) => {\n    inTarget.current = isCurrentTarget && !isOverlayed;\n    return () => inTarget.current = false;\n  });\n  const eventHandler = React72.useCallback(\n    (event) => {\n      if (!shortcutDefinition) return;\n      if (!inTarget.current) return;\n      if (!Object.keys(shortcutDefinition).every((key7) => shortcutDefinition[key7] === asRecord(event)[key7])) return;\n      event.preventDefault();\n      callback();\n    },\n    [shortcutDefinition, callback]\n  );\n  React72.useEffect(() => {\n    document.addEventListener(\"keydown\", eventHandler);\n    return () => document.removeEventListener(\"keydown\", eventHandler);\n  }, [eventHandler]);\n}\n\n// ../../library/src/modules/useNavigate.tsx\nfunction useNavigate() {\n  const { navigate } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  if (!navigate) return () => {\n  };\n  return (target) => {\n    if (onCanvas) return;\n    navigate(target);\n    return false;\n  };\n}\n\n// ../../library/src/modules/useOnVariantChange.ts\nimport React73 from \"react\";\nfunction callbackForVariant(map2, variant) {\n  if (map2[variant]) return map2[variant];\n  if (variant in map2) return void 0;\n  return map2.default;\n}\nfunction useOnVariantChange(variant, callbackMap) {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (isRenderingStaticContent) return;\n  const isActiveScreenRef = React73.useRef(true);\n  const callbackMapRef = React73.useRef(callbackMap);\n  useOnCurrentTargetChange((isCurrent, isOverlayed) => {\n    const isActiveScreen = isCurrent && !isOverlayed;\n    if (!isActiveScreenRef.current && isActiveScreen) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback) callback();\n    }\n    isActiveScreenRef.current = isActiveScreen;\n  }, []);\n  React73.useEffect(() => {\n    if (isActiveScreenRef.current) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback) callback();\n    }\n  }, [variant]);\n}\nfunction useOnAppear(callback) {\n  useOnVariantChange(\"default\", { default: callback });\n}\n\n// ../../library/src/modules/useOverlayState.tsx\nimport React74, { startTransition as startTransition9 } from \"react\";\nfunction setOverflow(blockDocumentScrolling, show) {\n  if (blockDocumentScrolling === false) return;\n  frame.render(() => {\n    const htmlStyle = document.documentElement.style;\n    if (show) {\n      htmlStyle.setProperty(\"overflow\", \"hidden\");\n    } else {\n      htmlStyle.removeProperty(\"overflow\");\n    }\n  });\n}\nfunction useOverlayState({\n  blockDocumentScrolling = true\n} = {}) {\n  const [showOverlay, setShowOverlay] = React74.useState(false);\n  const callback = React74.useCallback(\n    async (show) => {\n      await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n      startTransition9(() => setShowOverlay(show));\n      setOverflow(blockDocumentScrolling, show);\n    },\n    [blockDocumentScrolling]\n  );\n  React74.useEffect(\n    () => () => {\n      void yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" }).then(() => {\n        setOverflow(blockDocumentScrolling, false);\n      });\n    },\n    [blockDocumentScrolling]\n  );\n  return [showOverlay, callback];\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nimport React75 from \"react\";\n\n// ../../library/src/router/isRoute.ts\nvar key4 = \"page\";\nfunction isRoute(route) {\n  return isObject2(route) && key4 in route && route.page !== void 0;\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nasync function componentForRoute(route) {\n  if (!isRoute(route)) return;\n  const { page: routeComponent } = route;\n  if (!routeComponent) return;\n  if (React75.isValidElement(routeComponent)) return routeComponent;\n  if (withPreload(routeComponent)) await routeComponent.preload();\n  return React75.createElement(routeComponent, { key: route.path });\n}\nvar preloadKey2 = \"preload\";\nfunction withPreload(component) {\n  return !!component && isObject2(component) && preloadKey2 in component;\n}\nfunction usePrototypeNavigate({ preload } = {}) {\n  const navigation = useNavigation();\n  const { getRoute } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  React75.useEffect(() => {\n    if (!navigation || onCanvas) return;\n    preload == null ? void 0 : preload.forEach((componentOrRoute) => {\n      let component;\n      if (isString(componentOrRoute)) {\n        const route = getRoute == null ? void 0 : getRoute(componentOrRoute);\n        if (isRoute(route)) {\n          component = route.page;\n        }\n      } else {\n        component = componentOrRoute;\n      }\n      if (component && withPreload(component)) void component.preload();\n    });\n  }, []);\n  if (!navigation) return () => {\n  };\n  return async (target, options = {}) => {\n    if (onCanvas) return;\n    if (target === \"previous\") {\n      navigation.goBack();\n      return false;\n    }\n    const Component17 = typeof target === \"string\" ? await componentForRoute(getRoute == null ? void 0 : getRoute(target)).catch(() => {\n    }) : React75.isValidElement(target) ? target : null;\n    if (!Component17) return;\n    const { appearsFrom, backdropColor, animation } = options;\n    const transitionType = options.transition || \"instant\";\n    switch (transitionType) {\n      case \"instant\":\n        navigation.instant(Component17);\n        break;\n      case \"fade\":\n        navigation.fade(Component17, { animation });\n        break;\n      case \"push\":\n        navigation.push(Component17, { appearsFrom, animation });\n        break;\n      case \"flip\":\n        navigation.flip(Component17, { appearsFrom, animation });\n        break;\n      case \"magicMotion\":\n        navigation.magicMotion(Component17, { animation });\n        break;\n      // Overlay stack navigation doesn't support updating the browser's\n      // path.\n      case \"modal\":\n        navigation.modal(Component17, { backdropColor, animation });\n        break;\n      case \"overlay\":\n        navigation.overlay(Component17, { appearsFrom, backdropColor, animation });\n        break;\n    }\n    return false;\n  };\n}\n\n// ../../library/src/modules/useQueryData.ts\nimport { useCallback as useCallback17 } from \"react\";\nfunction use(promise) {\n  throw promise;\n}\nvar queryEngine = /* @__PURE__ */ new QueryEngine();\nvar queryCache = /* @__PURE__ */ new QueryCache(queryEngine);\nfunction useQueryData(query) {\n  const { activeLocale } = useLocaleInfo();\n  const cached = queryCache.get(query, activeLocale);\n  const promise = cached.preload();\n  if (promise) use(promise);\n  return cached.read();\n}\nfunction useQueryCount(query) {\n  const countQuery = { ...query, select: [] };\n  const collection = useQueryData(countQuery);\n  return collection.length;\n}\nfunction usePreloadQuery() {\n  const { activeLocale } = useLocaleInfo();\n  return useCallback17(\n    async (query) => {\n      return queryCache.get(query, activeLocale).readAsync();\n    },\n    [activeLocale]\n  );\n}\nfunction getWhereExpressionFromPathVariables(pathVariables, collection) {\n  const entries = Object.entries(pathVariables ?? {}).filter(([, value]) => {\n    if (isUndefined(value)) return false;\n    if (isObject2(value)) return false;\n    return true;\n  });\n  const expressions = entries.map(\n    ([name, value]) => ({\n      type: \"BinaryOperation\",\n      operator: \"==\" /* Equals */,\n      left: {\n        type: \"TypeCast\",\n        value: {\n          type: \"Identifier\",\n          name,\n          collection\n        },\n        dataType: \"STRING\" /* String */\n      },\n      right: {\n        type: \"LiteralValue\",\n        value: String(value)\n      }\n    })\n  );\n  if (expressions.length === 0) {\n    return {\n      type: \"LiteralValue\",\n      value: false\n    };\n  }\n  return expressions.reduce(\n    (result, expression) => ({\n      type: \"BinaryOperation\",\n      operator: \"and\" /* And */,\n      left: result,\n      right: expression\n    })\n  );\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nimport { useMemo as useMemo18 } from \"react\";\n\n// ../../library/src/components/utils/useLoadMorePagination.tsx\nimport { startTransition as startTransition10, useCallback as useCallback18, useEffect as useEffect23, useMemo as useMemo17, useRef as useRef22, useState as useState8, useTransition } from \"react\";\nfunction useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspendedLoadingState = false) {\n  var _a, _b, _c, _d;\n  const [isPending, startLoadingTransition] = useTransition();\n  const totalPages = Math.ceil(totalSize / pageSize);\n  const [currentPage, setCurrentPage] = useState8(\n    ((_d = (_c = (_b = (_a = globalThis == null ? void 0 : globalThis.history) == null ? void 0 : _a.state) == null ? void 0 : _b.paginationInfo) == null ? void 0 : _c[hash2]) == null ? void 0 : _d.currentPage) ?? 1\n  );\n  const currentPageRef = useRef22(currentPage);\n  const paginationInfo = useMemo17(() => {\n    return {\n      currentPage,\n      totalPages,\n      isLoading: isPending\n    };\n  }, [currentPage, totalPages, isPending]);\n  useEffect23(() => {\n    pushLoadMoreHistory(hash2, paginationInfo);\n  }, [hash2, paginationInfo]);\n  const onCanvas = useIsOnFramerCanvas();\n  const loadMore = useCallback18(async () => {\n    if (onCanvas) return;\n    if (currentPageRef.current >= totalPages) return;\n    await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n    if (currentPageRef.current >= totalPages) return;\n    const renderNextPage = (startTransition14) => {\n      startTransition14(() => {\n        setCurrentPage((_currentPage) => {\n          const nextPage = Math.min(_currentPage + 1, totalPages);\n          currentPageRef.current = nextPage;\n          return nextPage;\n        });\n      });\n    };\n    if (!paginateWithSuspendedLoadingState) return renderNextPage(startTransition10);\n    return renderNextPage(startLoadingTransition);\n  }, [totalPages, paginateWithSuspendedLoadingState]);\n  return { paginationInfo, loadMore };\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nfunction useLoadMorePaginatedQuery(query, pageSize, hash2) {\n  const count = useQueryCount(query);\n  const { paginationInfo, loadMore } = useLoadMorePagination(count, pageSize, hash2, true);\n  const paginatedQuery = useMemo18(() => {\n    let limit = pageSize * paginationInfo.currentPage;\n    if (query.limit) {\n      if (query.limit.type !== \"LiteralValue\" || typeof query.limit.value !== \"number\") {\n        throw new Error(\"Unexpected type for query limit\");\n      }\n      limit = Math.min(limit, query.limit.value);\n    }\n    return { ...query, limit: { type: \"LiteralValue\", value: limit } };\n  }, [query, pageSize, paginationInfo]);\n  return { paginatedQuery, paginationInfo, loadMore };\n}\n\n// ../../library/src/modules/useVariantState.ts\nimport { startTransition as startTransition11, useCallback as useCallback19, useContext as useContext27, useEffect as useEffect24, useMemo as useMemo19, useRef as useRef23 } from \"react\";\nfunction createGestureVariant(variant, type) {\n  return `${variant}-${type}`;\n}\nfunction nextVariant(allVariants, currentVariant) {\n  const index = allVariants.indexOf(currentVariant);\n  let nextIndex = index + 1;\n  if (nextIndex >= allVariants.length) {\n    nextIndex = 0;\n  }\n  const nextVariant2 = allVariants[nextIndex];\n  assert(nextVariant2 !== void 0, \"nextVariant should be defined\");\n  return nextVariant2;\n}\nfunction activeTransition(transitions, variant) {\n  if (!transitions) return void 0;\n  if (variant) {\n    const variantTransition = transitions[variant];\n    if (variantTransition) return variantTransition;\n  }\n  return transitions.default;\n}\nvar VariantSelector = /* @__PURE__ */ ((VariantSelector2) => {\n  VariantSelector2[\"Variant\"] = \"v\";\n  return VariantSelector2;\n})(VariantSelector || {});\nfunction getGesture(enabledGestures, isHovered, isPressed, isLoading, isError) {\n  const { hover: hover2, pressed, loading, error } = enabledGestures || {};\n  if (error && isError) return \"error\";\n  if (loading && isLoading) return \"loading\";\n  if (pressed && isPressed) return \"pressed\";\n  if (hover2 && isHovered) return \"hover\";\n}\nfunction createVariantClassName(baseVariant, variantClassNames) {\n  const mappedClassName = variantClassNames[baseVariant];\n  if (mappedClassName) return mappedClassName;\n  return `framer-${\"v\" /* Variant */}-${baseVariant}`;\n}\nfunction safeBaseVariant(targetVariant, fallbackVariant, validBaseVariants) {\n  if (!targetVariant) return fallbackVariant;\n  if (validBaseVariants.has(targetVariant)) return targetVariant;\n  return fallbackVariant;\n}\nvar CycleVariantState = /* @__PURE__ */ Symbol(\"cycle\");\nfunction useRunCallbackIfPageIsVisible() {\n  const listenerRef = useRef23();\n  const callbackRef = useRef23();\n  const clean = useCallback19(() => {\n    if (!listenerRef.current) return;\n    document.removeEventListener(\"visibilitychange\", listenerRef.current);\n    listenerRef.current = void 0;\n    callbackRef.current = void 0;\n  }, []);\n  useEffect24(() => {\n    return () => {\n      clean();\n    };\n  }, [clean]);\n  return useCallback19(\n    (callback) => {\n      if (!document.hidden) {\n        callback();\n        clean();\n        return;\n      }\n      callbackRef.current = callback;\n      if (listenerRef.current) return;\n      const listenerFn = () => {\n        var _a;\n        if (document.hidden) return;\n        (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n        clean();\n      };\n      listenerRef.current = listenerFn;\n      document.addEventListener(\"visibilitychange\", listenerFn);\n    },\n    [clean]\n  );\n}\nfunction useRunCallbackIfElementIsInView() {\n  const observerRefCleanup = useRef23();\n  const isInViewRef = useRef23(false);\n  const callbackRef = useRef23();\n  const observers = useContext27(SharedIntersectionObserverContext);\n  useEffect24(() => {\n    return () => {\n      var _a;\n      (_a = observerRefCleanup.current) == null ? void 0 : _a.call(observerRefCleanup);\n      callbackRef.current = void 0;\n      observerRefCleanup.current = void 0;\n    };\n  }, []);\n  return useCallback19(\n    (callback, ref) => {\n      if (!(ref == null ? void 0 : ref.current) || isInViewRef.current) {\n        callback();\n        return;\n      }\n      callbackRef.current = callback;\n      if (observerRefCleanup.current) return;\n      let queuedMicrotask = false;\n      const observerCallback = (entry) => {\n        isInViewRef.current = entry.isIntersecting;\n        if (queuedMicrotask) return;\n        queuedMicrotask = true;\n        queueMicrotask(() => {\n          var _a;\n          queuedMicrotask = false;\n          if (!isInViewRef.current) return;\n          (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n        });\n      };\n      observerRefCleanup.current = observeElement(observers, \"undefined\", ref.current, null, observerCallback);\n    },\n    [observers]\n  );\n}\nfunction useUpdateIfVisible(ref) {\n  const runUpdateIfPageIsVisible = useRunCallbackIfPageIsVisible();\n  const runUpdateIfElementIsInView = useRunCallbackIfElementIsInView();\n  return useCallback19(\n    (callback, checkViewport = false) => {\n      if (isBot) {\n        callback();\n        return;\n      }\n      const runUpdate = checkViewport && ref ? () => runUpdateIfElementIsInView(callback, ref) : callback;\n      runUpdateIfPageIsVisible(runUpdate);\n    },\n    [runUpdateIfPageIsVisible, runUpdateIfElementIsInView, ref]\n  );\n}\nvar globalWaitingForClickPromise;\nvar globalWaitingForClickResolve;\nasync function getPromiseWithFallback() {\n  return new Promise((resolve) => {\n    let resolveFn = resolve;\n    setTimeout(() => {\n      if (!resolveFn) return;\n      performance.mark(\"wait-for-click-fallback\");\n      resolveFn();\n    }, 150);\n    globalWaitingForClickResolve = () => {\n      resolve();\n      resolveFn = void 0;\n    };\n  });\n}\nfunction globalWaitForClickListener(event) {\n  if (event.button === 0) {\n    performance.mark(\"pointerdown-listener\");\n    globalWaitingForClickPromise = getPromiseWithFallback();\n  }\n}\nfunction globalClickReceivedListener() {\n  performance.mark(\"click-received-listener\");\n  globalWaitingForClickPromise = void 0;\n  globalWaitingForClickResolve == null ? void 0 : globalWaitingForClickResolve();\n  globalWaitingForClickResolve = void 0;\n}\nfunction useWaitForGlobalClick(enabled = false) {\n  useEffect24(() => {\n    if (!enabled) return;\n    document.addEventListener(\"pointerup\", globalWaitForClickListener, true);\n    document.__proto__.addEventListener.call(document, \"click\", globalClickReceivedListener, true);\n  }, [enabled]);\n}\nfunction useVariantState({\n  variant,\n  defaultVariant: externalDefaultVariant,\n  transitions: externalTransitions,\n  enabledGestures: externalEnabledGestures,\n  cycleOrder: externalCycleOrder = [],\n  variantProps = {},\n  variantClassNames = {},\n  ref\n}) {\n  const forceUpdate = useForceUpdate2();\n  const isCanvas = useIsOnFramerCanvas();\n  const validBaseVariants = useConstant(() => new Set(externalCycleOrder));\n  const { pauseOffscreen: pauseOffscreenFeatureOn, yieldOnTap: yieldOnTapFeatureOn } = useLibraryFeatures();\n  useWaitForGlobalClick(yieldOnTapFeatureOn);\n  const runUpdateIfVisible = useUpdateIfVisible(ref);\n  const internalState = useRef23({\n    isHovered: false,\n    isHoveredHasUpdated: false,\n    isPressed: false,\n    isPressedHasUpdated: false,\n    isError: false,\n    hasPressedVariants: true,\n    baseVariant: safeBaseVariant(variant, externalDefaultVariant, validBaseVariants),\n    lastVariant: variant,\n    gestureVariant: void 0,\n    loadedBaseVariant: {},\n    // When used in generated components, these are static values defined\n    // outside of the component function that also need to not result in\n    // memorized values being recalculated, so we dump them into the ref.\n    defaultVariant: externalDefaultVariant,\n    enabledGestures: externalEnabledGestures,\n    cycleOrder: externalCycleOrder,\n    transitions: externalTransitions\n  });\n  const resolveNextVariant = useCallback19((targetBaseVariant) => {\n    const { isHovered: isHovered2, isPressed: isPressed2, isError: isError2, enabledGestures: enabledGestures2, defaultVariant: defaultVariant2 } = internalState.current;\n    const nextBaseVariant = safeBaseVariant(targetBaseVariant, defaultVariant2, validBaseVariants);\n    const gesture = getGesture(enabledGestures2 == null ? void 0 : enabledGestures2[nextBaseVariant], isHovered2, isPressed2, false, isError2);\n    const nextGestureVariant = gesture ? createGestureVariant(nextBaseVariant, gesture) : void 0;\n    return [nextBaseVariant, nextGestureVariant];\n  }, []);\n  const updateIfNeeded = useCallback19(\n    async (baseVariant2, gestureVariant2, defaultVariant2, nextBaseVariant, checkViewport = false, clearError = false) => {\n      const [nextBase, nextGesture] = resolveNextVariant(nextBaseVariant);\n      if (nextBase === baseVariant2 && nextGesture === gestureVariant2) return;\n      if (clearError) internalState.current.isError = false;\n      internalState.current.baseVariant = nextBase || defaultVariant2;\n      internalState.current.gestureVariant = nextGesture;\n      const yieldOnTap = yieldOnTapFeatureOn && internalState.current.isPressedHasUpdated;\n      if (yieldOnTap && globalWaitingForClickPromise) {\n        performance.mark(\"wait-for-tap-start\");\n        await globalWaitingForClickPromise;\n        performance.measure(\"wait-for-tap\", \"wait-for-tap-start\");\n      }\n      if (yieldOnTap) {\n        performance.mark(\"yield-on-tap-start\");\n        await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n        performance.measure(\"yield-on-tap\", \"yield-on-tap-start\");\n      }\n      const { isHovered: isHovered2, isPressed: isPressed2, isHoveredHasUpdated, isPressedHasUpdated } = internalState.current;\n      if (isHovered2 || isHoveredHasUpdated || isPressed2 || isPressedHasUpdated) {\n        startTransition11(forceUpdate);\n        return;\n      }\n      runUpdateIfVisible(() => startTransition11(forceUpdate), pauseOffscreenFeatureOn && checkViewport);\n    },\n    [resolveNextVariant, forceUpdate, runUpdateIfVisible, pauseOffscreenFeatureOn, yieldOnTapFeatureOn]\n  );\n  const setGestureState = useCallback19(\n    ({ isHovered: isHovered2, isPressed: isPressed2, isError: isError2 }) => {\n      const isPressedHasUpdated = isPressed2 !== internalState.current.isPressed;\n      const isHoveredHasUpdated = isHovered2 !== internalState.current.isHovered;\n      if (isHovered2 !== void 0) internalState.current.isHovered = isHovered2;\n      if (isPressed2 !== void 0) internalState.current.isPressed = isPressed2;\n      if (isError2 !== void 0) internalState.current.isError = isError2;\n      const { baseVariant: baseVariant2, gestureVariant: gestureVariant2, defaultVariant: defaultVariant2 } = internalState.current;\n      internalState.current.isPressedHasUpdated = isPressedHasUpdated;\n      internalState.current.isHoveredHasUpdated = isHoveredHasUpdated;\n      void updateIfNeeded(baseVariant2, gestureVariant2, defaultVariant2, baseVariant2, false);\n    },\n    [updateIfNeeded]\n  );\n  const setVariant = useCallback19(\n    (proposedVariant, pauseOffscreen = false) => {\n      const { defaultVariant: defaultVariant2, cycleOrder, baseVariant: baseVariant2, gestureVariant: gestureVariant2 } = internalState.current;\n      const nextBaseVariant = proposedVariant === CycleVariantState ? nextVariant(cycleOrder || [], baseVariant2 || defaultVariant2) : proposedVariant;\n      void updateIfNeeded(baseVariant2, gestureVariant2, defaultVariant2, nextBaseVariant, pauseOffscreen, true);\n    },\n    [updateIfNeeded]\n  );\n  const clearLoadingGesture = useCallback19(() => {\n    const { baseVariant: baseVariant2 } = internalState.current;\n    internalState.current.loadedBaseVariant[baseVariant2] = true;\n    runUpdateIfVisible(() => startTransition11(forceUpdate), true);\n  }, [forceUpdate, runUpdateIfVisible]);\n  if (variant !== internalState.current.lastVariant) {\n    const [nextBase, nextGesture] = resolveNextVariant(variant);\n    internalState.current.lastVariant = nextBase;\n    if (nextBase !== internalState.current.baseVariant || nextGesture !== internalState.current.gestureVariant) {\n      internalState.current.baseVariant = nextBase;\n      internalState.current.gestureVariant = nextGesture;\n    }\n  }\n  const {\n    baseVariant,\n    gestureVariant,\n    defaultVariant,\n    enabledGestures,\n    isHovered,\n    isPressed,\n    isError,\n    loadedBaseVariant\n  } = internalState.current;\n  const addVariantProps = useAddVariantProps(\n    internalState.current.baseVariant,\n    internalState.current.gestureVariant,\n    variantProps\n  );\n  return useMemo19(() => {\n    var _a;\n    const variants = [];\n    if (baseVariant !== defaultVariant) variants.push(baseVariant);\n    const hasLoadingVariant = (_a = enabledGestures == null ? void 0 : enabledGestures[baseVariant]) == null ? void 0 : _a.loading;\n    const isLoading = !isError && !isCanvas && !!hasLoadingVariant && !loadedBaseVariant[baseVariant];\n    const gesture = isLoading ? createGestureVariant(baseVariant, \"loading\") : gestureVariant;\n    if (gesture) variants.push(gesture);\n    const gestures = enabledGestures == null ? void 0 : enabledGestures[baseVariant];\n    const gestureHandlers = {\n      onMouseEnter: () => setGestureState({ isHovered: true }),\n      onMouseLeave: () => setGestureState({ isHovered: false })\n    };\n    if (gestures == null ? void 0 : gestures.pressed) {\n      Object.assign(gestureHandlers, {\n        onTapStart: () => setGestureState({ isPressed: true }),\n        onTapCancel: () => setGestureState({ isPressed: false }),\n        onTap: () => setGestureState({ isPressed: false })\n      });\n    }\n    return {\n      variants,\n      baseVariant,\n      gestureVariant: gesture,\n      isLoading,\n      transition: activeTransition(internalState.current.transitions, baseVariant),\n      setVariant,\n      setGestureState,\n      clearLoadingGesture,\n      addVariantProps,\n      gestureHandlers,\n      classNames: cx(\n        createVariantClassName(baseVariant, variantClassNames),\n        getGesture(gestures, isHovered, isPressed, isLoading, isError)\n      )\n    };\n  }, [\n    baseVariant,\n    gestureVariant,\n    isHovered,\n    isPressed,\n    loadedBaseVariant,\n    addVariantProps,\n    setVariant,\n    defaultVariant,\n    enabledGestures,\n    setGestureState,\n    clearLoadingGesture,\n    variantClassNames\n  ]);\n}\n\n// ../../library/src/modules/safeCSSValue.ts\nvar reUnsafeCharacters = /[}{<>&;]/u;\nfunction safeCSSValue(value) {\n  if (!isString(value)) return \"none\";\n  if (reUnsafeCharacters.test(value)) return \"none\";\n  return value;\n}\n\n// ../../library/src/modules/code-boundary/withCodeBoundaryForOverrides.tsx\nimport React76 from \"react\";\nimport { jsx as jsx64 } from \"react/jsx-runtime\";\nfunction withCodeBoundaryForOverrides(Component17, { scopeId, nodeId, override, inComponentSlot }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return override(Component17);\n  }\n  const appliedOverride = tryToApplyOverride(Component17, override);\n  let hasErrorBeenLogged = false;\n  function CodeBoundaryForOverrides(props, ref) {\n    const nearestExternalComponent = useNearestExternalComponent();\n    const shouldWrapWithBoundary = shouldWrapOverrideWithBoundary(\n      scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n      inComponentSlot ?? false\n    );\n    if (shouldWrapWithBoundary) {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx64(NodeIdContext.Provider, { value: nodeId, children: /* @__PURE__ */ jsx64(\n          CodeComponentBoundary,\n          {\n            getErrorMessage: getErrorMessageForOverride.bind(null, scopeId, nodeId),\n            fallback: /* @__PURE__ */ jsx64(Component17, { ...props, ref }),\n            children: /* @__PURE__ */ jsx64(appliedOverride.Component, { ...props, ref })\n          }\n        ) });\n      } else {\n        if (!hasErrorBeenLogged) {\n          logError(appliedOverride.error);\n          logError(getErrorMessageForOverride(scopeId, nodeId));\n          collectErrorToAnalytics(appliedOverride.error);\n          hasErrorBeenLogged = true;\n        }\n        return /* @__PURE__ */ jsx64(Component17, { ...props, ref });\n      }\n    } else {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx64(NodeIdContext.Provider, { value: nodeId, children: /* @__PURE__ */ jsx64(appliedOverride.Component, { ...props, ref }) });\n      } else {\n        throw appliedOverride.error;\n      }\n    }\n  }\n  return React76.forwardRef(CodeBoundaryForOverrides);\n}\nfunction tryToApplyOverride(Component17, override) {\n  try {\n    const ComponentWithOverrides = override(Component17);\n    return { status: \"success\", Component: ComponentWithOverrides };\n  } catch (error) {\n    return { status: \"error\", error };\n  }\n}\n\n// ../../library/src/modules/withStrokeFX.tsx\nimport { forwardRef as forwardRef8, useEffect as useEffect25 } from \"react\";\nimport { jsx as jsx65 } from \"react/jsx-runtime\";\nfunction valueWithMirroring(value, mirror) {\n  return mirror ? wrap(0, 2, value) : value;\n}\nfunction singleFrame() {\n  return new Promise((resolve) => {\n    frame.postRender(() => resolve());\n  });\n}\nvar withV1StrokeFX = (Component17) => forwardRef8((props, forwardedRef) => {\n  const {\n    strokeEffectLength,\n    strokeEffectGap,\n    strokeEffectOffset,\n    strokeEffectLoop,\n    strokeEffectTotalLength,\n    strokeEffectLoopType,\n    pathLengthTransition,\n    ...restProps\n  } = props;\n  const isCanvas = isStaticRenderer();\n  const offset = useMotionValue(0);\n  const { length, gap } = useConstant(() => ({\n    length: strokeEffectTotalLength * strokeEffectLength,\n    gap: strokeEffectTotalLength * strokeEffectGap\n  }));\n  useEffect25(() => {\n    if (isCanvas) return;\n    const signal = new AbortController();\n    async function loop() {\n      let index = 0;\n      while (true) {\n        if (signal.signal.aborted) break;\n        const mirror = strokeEffectLoop && strokeEffectLoopType === \"mirror\";\n        const from = valueWithMirroring(index, mirror);\n        const to = valueWithMirroring(index + 1, mirror);\n        await Promise.all([animate(offset, [from, to], pathLengthTransition), singleFrame()]);\n        if (!strokeEffectLoop) break;\n        if (strokeEffectLoop && strokeEffectLoopType === \"repeat\") continue;\n        index++;\n      }\n    }\n    void loop();\n    return () => {\n      signal.abort();\n    };\n  }, []);\n  const value = useTransform(offset, (v) => {\n    return strokeEffectOffset * strokeEffectTotalLength + (strokeEffectTotalLength - Math.max(v, 1e-3) * strokeEffectTotalLength);\n  });\n  const effect = !isCanvas ? {\n    // These are static values, but they are set via js so that they are ignored\n    // unless in the preview/published site.\n    strokeDasharray: `${length} ${gap}`,\n    strokeDashoffset: value\n  } : void 0;\n  return /* @__PURE__ */ jsx65(Component17, { ...restProps, ...effect, ref: forwardedRef });\n});\n\n// ../../library/src/modules/withMappedReactProps.tsx\nimport { jsx as jsx66 } from \"react/jsx-runtime\";\nfunction extractMappingFromInfo(info) {\n  var _a;\n  const json = (_a = info.__FramerMetadata__.exports.default.annotations) == null ? void 0 : _a.framerVariables;\n  if (!json) return void 0;\n  try {\n    return JSON.parse(json);\n  } catch {\n    return void 0;\n  }\n}\nfunction withMappedReactProps(Component17, info) {\n  return (rawProps) => {\n    const props = {};\n    const mapping = extractMappingFromInfo(info);\n    for (const key7 in rawProps) {\n      asRecord(props)[(mapping == null ? void 0 : mapping[key7]) ?? key7] = rawProps[key7];\n    }\n    return /* @__PURE__ */ jsx66(Component17, { ...props });\n  };\n}\n\n// ../../library/src/modules/withVariantAppearEffect.tsx\nimport React77, { startTransition as startTransition12 } from \"react\";\nimport { jsx as jsx67 } from \"react/jsx-runtime\";\nvar keys = /* @__PURE__ */ new Set([\n  \"visibleVariantId\",\n  \"obscuredVariantId\",\n  \"threshold\",\n  \"animateOnce\",\n  \"variantAppearEffectEnabled\",\n  \"targets\",\n  \"exitTarget\",\n  \"scrollDirection\"\n]);\nvar defaultRanges3 = { inputRange: [], outputRange: [] };\nfunction createInputOutputRanges2(transformTargets, threshold, exitTarget) {\n  const outputRange = [];\n  const inputRange = createTransformInputRange(\n    transformTargets,\n    threshold,\n    (index) => outputRange.unshift(index, index)\n  );\n  if (exitTarget) {\n    const lastInputRange = inputRange[inputRange.length - 1];\n    if (!isNumber(lastInputRange)) return defaultRanges3;\n    inputRange.push(lastInputRange + 1);\n    outputRange.push(-1);\n  }\n  const firstItem = inputRange[0];\n  if (!isNumber(firstItem)) return defaultRanges3;\n  if (firstItem <= 1) return { inputRange, outputRange };\n  return { inputRange: [0, Math.max(firstItem - 1, 0), ...inputRange], outputRange: [-1, -1, ...outputRange] };\n}\nvar withVariantAppearEffect = (Component17) => React77.forwardRef(\n  (props, forwardedRef) => {\n    if (RenderTarget.current() === RenderTarget.canvas) return /* @__PURE__ */ jsx67(Component17, { ...props, ref: forwardedRef });\n    const [options, rest] = extractPrefixedProps(props, keys);\n    const {\n      visibleVariantId,\n      obscuredVariantId,\n      animateOnce,\n      threshold,\n      variantAppearEffectEnabled,\n      targets,\n      exitTarget,\n      scrollDirection\n    } = options;\n    const [activeVariant, setVariant] = React77.useState(obscuredVariantId);\n    const animateState = React77.useRef(false);\n    const observerRef = useObserverRef(forwardedRef);\n    useAppearEffect(\n      observerRef,\n      (appears) => {\n        if (options.targets) return;\n        if (options.scrollDirection) return;\n        if (animateOnce && animateState.current === true) return;\n        if (animateState.current === appears) return;\n        animateState.current = appears;\n        React77.startTransition(() => {\n          setVariant(appears ? visibleVariantId : obscuredVariantId);\n        });\n      },\n      {\n        enabled: variantAppearEffectEnabled,\n        animateOnce,\n        threshold: {\n          y: threshold\n        }\n      }\n    );\n    React77.useEffect(() => {\n      if (scrollDirection) return;\n      if (!targets) return;\n      const playedState = {};\n      let currentVariant = void 0;\n      return scroll((_, { y: scrollY }) => {\n        var _a;\n        if (!targets[0] || targets[0].ref && !targets[0].ref.current) return;\n        const { inputRange, outputRange } = createInputOutputRanges2(\n          targets,\n          (threshold ?? 0) * scrollY.containerLength,\n          exitTarget\n        );\n        if (inputRange.length === 0 || inputRange.length !== outputRange.length) return;\n        const index = Math.floor(transform(scrollY.current, inputRange, outputRange));\n        if (animateOnce && playedState[index]) return;\n        playedState[index] = true;\n        const variant = ((_a = targets[index]) == null ? void 0 : _a.target) ?? void 0;\n        if (variant === currentVariant) return;\n        currentVariant = variant;\n        React77.startTransition(() => {\n          setVariant(variant);\n        });\n      });\n    }, [animateOnce, threshold, targets, props.variant, scrollDirection, exitTarget]);\n    useScrollDirectionChange(scrollDirection, (variant) => React77.startTransition(() => setVariant(variant)), {\n      enabled: variantAppearEffectEnabled,\n      repeat: !animateOnce\n    });\n    useOnRouteChange(() => {\n      if (!variantAppearEffectEnabled) return;\n      const useObscuredVariant = !options.targets && !options.scrollDirection;\n      const target = useObscuredVariant ? options.obscuredVariantId : void 0;\n      startTransition12(() => setVariant(target));\n    });\n    if (!(\"variantAppearEffectEnabled\" in options) || variantAppearEffectEnabled === true) {\n      return /* @__PURE__ */ jsx67(Component17, { ...rest, variant: activeVariant ?? props.variant, ref: observerRef });\n    } else {\n      return /* @__PURE__ */ jsx67(Component17, { ...rest });\n    }\n  }\n);\n\n// ../../library/src/modules/withVariantFX.tsx\nimport React78 from \"react\";\nimport { jsx as jsx68 } from \"react/jsx-runtime\";\nvar withVariantFX = (Component17) => React78.forwardRef(\n  ({ initial, animate: animate3, exit, ...props }, forwardedRef) => {\n    const observerRef = useObserverRef(forwardedRef);\n    const effect = usePresenceAnimation(\n      {\n        initial,\n        animate: animate3,\n        exit\n      },\n      observerRef,\n      true\n    );\n    return /* @__PURE__ */ jsx68(Component17, { ...props, style: { ...props == null ? void 0 : props.style, ...effect.values }, ref: observerRef });\n  }\n);\n\n// ../../library/src/render/WindowContext.ts\nimport React79 from \"react\";\nvar WindowContext = /* @__PURE__ */ React79.createContext(\n  void 0\n);\nvar useProvidedWindow = () => React79.useContext(WindowContext);\n\n// ../../library/src/render/componentLoader/definition.ts\nfunction isDesignDefinition(d) {\n  return d.type === \"master\";\n}\nfunction isOverride(d) {\n  return d.type === \"override\";\n}\nfunction isReactDefinition(d) {\n  return d.type !== \"master\";\n}\n\n// ../../library/src/render/componentLoader/package.ts\nvar localPackageFallbackIdentifier = \"|local|\";\n\n// ../../library/src/render/fonts/fonts.ts\nvar safeFonts = {\n  Arial: {\n    Regular: { selector: \"Arial\", weight: void 0 },\n    Black: { selector: \"Arial-Black\", weight: void 0 },\n    Narrow: { selector: \"Arial Narrow\", weight: void 0 },\n    \"Rounded Bold\": { selector: \"Arial Rounded MT Bold\", weight: void 0 }\n  },\n  Avenir: {\n    Book: { selector: \"Avenir\", weight: void 0 },\n    Light: { selector: \"Avenir-Light\", weight: void 0 },\n    Medium: { selector: \"Avenir-Medium\", weight: void 0 },\n    Heavy: { selector: \"Avenir-Heavy\", weight: void 0 },\n    Black: { selector: \"Avenir-Black\", weight: void 0 }\n  },\n  \"Avenir Next\": {\n    Regular: { selector: \"Avenir Next\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNext-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNext-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNext-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNext-Heavy\", weight: void 0 }\n  },\n  \"Avenir Next Condensed\": {\n    Regular: { selector: \"Avenir Next Condensed\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNextCondensed-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNextCondensed-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNextCondensed-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNextCondensed-Heavy\", weight: void 0 }\n  },\n  Baskerville: {\n    Regular: { selector: \"Baskerville\", weight: void 0 },\n    \"Semi Bold\": { selector: \"Baskerville-SemiBold\", weight: void 0 }\n  },\n  \"Bodoni 72\": {\n    Book: { selector: \"Bodoni 72\", weight: void 0 },\n    Oldstyle: { selector: \"Bodoni 72 Oldstyle\", weight: void 0 },\n    Smallcaps: { selector: \"Bodoni 72 Smallcaps\", weight: void 0 }\n  },\n  Courier: { Regular: { selector: \"Courier\", weight: void 0 } },\n  \"Courier New\": { Regular: { selector: \"Courier New\", weight: void 0 } },\n  Futura: {\n    Medium: { selector: \"Futura\", weight: void 0 },\n    Condensed: { selector: \"Futura-CondensedMedium\", weight: void 0 },\n    \"Condensed ExtraBold\": { selector: \"Futura-CondensedExtraBold\", weight: void 0 }\n  },\n  Georgia: { Regular: { selector: \"Georgia\", weight: void 0 } },\n  \"Gill Sans\": {\n    Regular: { selector: \"Gill Sans\", weight: void 0 },\n    Light: { selector: \"GillSans-Light\", weight: void 0 },\n    SemiBold: { selector: \"GillSans-SemiBold\", weight: void 0 },\n    UltraBold: { selector: \"GillSans-UltraBold\", weight: void 0 }\n  },\n  Helvetica: {\n    Regular: { selector: \"Helvetica\", weight: void 0 },\n    Light: { selector: \"Helvetica-Light\", weight: void 0 },\n    Bold: { selector: \"Helvetica-Bold\", weight: void 0 },\n    Oblique: { selector: \"Helvetica-Oblique\", weight: void 0 },\n    \"Light Oblique\": { selector: \"Helvetica-LightOblique\", weight: void 0 },\n    \"Bold Oblique\": { selector: \"Helvetica-BoldOblique\", weight: void 0 }\n  },\n  \"Helvetica Neue\": {\n    Regular: { selector: \"Helvetica Neue\", weight: void 0 },\n    UltraLight: { selector: \"HelveticaNeue-UltraLight\", weight: void 0 },\n    Thin: { selector: \"HelveticaNeue-Thin\", weight: void 0 },\n    Light: { selector: \"HelveticaNeue-Light\", weight: void 0 },\n    Medium: { selector: \"HelveticaNeue-Medium\", weight: void 0 },\n    Bold: { selector: \"HelveticaNeue-Bold\", weight: void 0 },\n    Italic: { selector: \"HelveticaNeue-Italic\", weight: void 0 },\n    \"UltraLight Italic\": { selector: \"HelveticaNeue-UltraLightItalic\", weight: void 0 },\n    \"Thin Italic\": { selector: \"HelveticaNeue-ThinItalic\", weight: void 0 },\n    \"Light Italic\": { selector: \"HelveticaNeue-LightItalic\", weight: void 0 },\n    \"Medium Italic\": { selector: \"HelveticaNeue-MediumItalic\", weight: void 0 },\n    \"Bold Italic\": { selector: \"HelveticaNeue-BoldItalic\", weight: void 0 },\n    \"Condensed Bold\": { selector: \"HelveticaNeue-CondensedBold\", weight: void 0 },\n    \"Condensed Black\": { selector: \"HelveticaNeue-CondensedBlack\", weight: void 0 }\n  },\n  \"Hoefler Text\": { Regular: { selector: \"Hoefler Text\", weight: void 0 } },\n  Impact: { Regular: { selector: \"Impact\", weight: void 0 } },\n  \"Lucida Grande\": { Regular: { selector: \"Lucida Grande\", weight: void 0 } },\n  Menlo: { Regular: { selector: \"Menlo\", weight: void 0 } },\n  Monaco: { Regular: { selector: \"Monaco\", weight: void 0 } },\n  Optima: {\n    Regular: { selector: \"Optima\", weight: void 0 },\n    ExtraBlack: { selector: \"Optima-ExtraBlack\", weight: void 0 }\n  },\n  Palatino: { Regular: { selector: \"Palatino\", weight: void 0 } },\n  \"SF Pro Display\": {\n    Regular: { selector: \"__SF-UI-Display-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Black__\", weight: 900 },\n    Italic: { selector: \"__SF-UI-Display-Italic__\", weight: 400 },\n    \"Ultralight Italic\": { selector: \"__SF-UI-Display-Ultralight-Italic__\", weight: 100 },\n    \"Thin Italic\": { selector: \"__SF-UI-Display-Thin-Italic__\", weight: 200 },\n    \"Light Italic\": { selector: \"__SF-UI-Display-Light-Italic__\", weight: 300 },\n    \"Medium Italic\": { selector: \"__SF-UI-Display-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Display-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Display-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Display-Heavy-Italic__\", weight: 800 },\n    \"Black Italic\": { selector: \"__SF-UI-Display-Black-Italic__\", weight: 900 }\n  },\n  \"SF Pro Display Condensed\": {\n    Regular: { selector: \"__SF-UI-Display-Condensed-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Condensed-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Condensed-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Condensed-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Condensed-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Condensed-Black__\", weight: 900 }\n  },\n  \"SF Pro Text\": {\n    Regular: { selector: \"__SF-UI-Text-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Heavy__\", weight: 800 },\n    Italic: { selector: \"__SF-UI-Text-Italic__\", weight: 400 },\n    \"Light Italic\": { selector: \"__SF-UI-Text-Light-Italic__\", weight: 200 },\n    \"Medium Italic\": { selector: \"__SF-UI-Text-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Text-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Text-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Text-Heavy-Italic__\", weight: 800 }\n  },\n  \"SF Pro Text Condensed\": {\n    Regular: { selector: \"__SF-UI-Text-Condensed-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Condensed-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Condensed-Heavy__\", weight: 800 }\n  },\n  Tahoma: { Regular: { selector: \"Tahoma\", weight: void 0 } },\n  Times: { Regular: { selector: \"Times\", weight: void 0 } },\n  \"Times New Roman\": { Regular: { selector: \"Times New Roman\", weight: void 0 } },\n  Trebuchet: { Regular: { selector: \"Trebuchet MS\", weight: void 0 } },\n  Verdana: { Regular: { selector: \"Verdana\", weight: void 0 } }\n};\nvar fontAliases = {\n  \"__SF-Compact-Display-Regular__\": \"SFCompactDisplay-Regular|.SFCompactDisplay-Regular\",\n  \"__SF-Compact-Display-Ultralight__\": \"SFCompactDisplay-Ultralight|.SFCompactDisplay-Ultralight\",\n  \"__SF-Compact-Display-Thin__\": \"SFCompactDisplay-Thin|.SFCompactDisplay-Thin\",\n  \"__SF-Compact-Display-Light__\": \"SFCompactDisplay-Light|.SFCompactDisplay-Light\",\n  \"__SF-Compact-Display-Medium__\": \"SFCompactDisplay-Medium|.SFCompactDisplay-Medium\",\n  \"__SF-Compact-Display-Semibold__\": \"SFCompactDisplay-Semibold|.SFCompactDisplay-Semibold\",\n  \"__SF-Compact-Display-Heavy__\": \"SFCompactDisplay-Heavy|.SFCompactDisplay-Heavy\",\n  \"__SF-Compact-Display-Black__\": \"SFCompactDisplay-Black|.SFCompactDisplay-Black\",\n  \"__SF-Compact-Display-Bold__\": \"SFCompactDisplay-Bold|.SFCompactDisplay-Bold\",\n  \"__SF-UI-Text-Regular__\": \".SFNSText|SFProText-Regular|SFUIText-Regular|.SFUIText\",\n  \"__SF-UI-Text-Light__\": \".SFNSText-Light|SFProText-Light|SFUIText-Light|.SFUIText-Light\",\n  \"__SF-UI-Text-Medium__\": \".SFNSText-Medium|SFProText-Medium|SFUIText-Medium|.SFUIText-Medium\",\n  \"__SF-UI-Text-Semibold__\": \".SFNSText-Semibold|SFProText-Semibold|SFUIText-Semibold|.SFUIText-Semibold\",\n  \"__SF-UI-Text-Bold__\": \".SFNSText-Bold|SFProText-Bold|SFUIText-Bold|.SFUIText-Bold\",\n  \"__SF-UI-Text-Heavy__\": \".SFNSText-Heavy|SFProText-Heavy|.SFUIText-Heavy\",\n  \"__SF-UI-Text-Italic__\": \".SFNSText-Italic|SFProText-Italic|SFUIText-Italic|.SFUIText-Italic\",\n  \"__SF-UI-Text-Light-Italic__\": \".SFNSText-LightItalic|SFProText-LightItalic|SFUIText-LightItalic|.SFUIText-LightItalic\",\n  \"__SF-UI-Text-Medium-Italic__\": \".SFNSText-MediumItalic|SFProText-MediumItalic|SFUIText-MediumItalic|.SFUIText-MediumItalic\",\n  \"__SF-UI-Text-Semibold-Italic__\": \".SFNSText-SemiboldItalic|SFProText-SemiboldItalic|SFUIText-SemiboldItalic|.SFUIText-SemiboldItalic\",\n  \"__SF-UI-Text-Bold-Italic__\": \".SFNSText-BoldItalic|SFProText-BoldItalic|SFUIText-BoldItalic|.SFUIText-BoldItalic\",\n  \"__SF-UI-Text-Heavy-Italic__\": \".SFNSText-HeavyItalic|SFProText-HeavyItalic|.SFUIText-HeavyItalic\",\n  \"__SF-Compact-Text-Regular__\": \"SFCompactText-Regular|.SFCompactText-Regular\",\n  \"__SF-Compact-Text-Light__\": \"SFCompactText-Light|.SFCompactText-Light\",\n  \"__SF-Compact-Text-Medium__\": \"SFCompactText-Medium|.SFCompactText-Medium\",\n  \"__SF-Compact-Text-Semibold__\": \"SFCompactText-Semibold|.SFCompactText-Semibold\",\n  \"__SF-Compact-Text-Bold__\": \"SFCompactText-Bold|.SFCompactText-Bold\",\n  \"__SF-Compact-Text-Heavy__\": \"SFCompactText-Heavy|.SFCompactText-Heavy\",\n  \"__SF-Compact-Text-Italic__\": \"SFCompactText-Italic|.SFCompactText-Italic\",\n  \"__SF-Compact-Text-Light-Italic__\": \"SFCompactText-LightItalic|.SFCompactText-LightItalic\",\n  \"__SF-Compact-Text-Medium-Italic__\": \"SFCompactText-MediumItalic|.SFCompactText-MediumItalic\",\n  \"__SF-Compact-Text-Semibold-Italic__\": \"SFCompactText-SemiboldItalic|.SFCompactText-SemiboldItalic\",\n  \"__SF-Compact-Text-Bold-Italic__\": \"SFCompactText-BoldItalic|.SFCompactText-BoldItalic\",\n  \"__SF-Compact-Text-Heavy-Italic__\": \"SFCompactText-HeavyItalic|.SFCompactText-HeavyItalic\",\n  \"__SF-UI-Display-Condensed-Regular__\": \".SFNSDisplayCondensed-Regular|SFUIDisplayCondensed-Regular|.SFUIDisplayCondensed-Regular\",\n  \"__SF-UI-Display-Condensed-Ultralight__\": \".SFNSDisplayCondensed-Ultralight|SFUIDisplayCondensed-Ultralight|.SFUIDisplayCondensed-Ultralight\",\n  \"__SF-UI-Display-Condensed-Thin__\": \".SFNSDisplayCondensed-Thin|SFUIDisplayCondensed-Thin|.SFUIDisplayCondensed-Thin\",\n  \"__SF-UI-Display-Condensed-Light__\": \".SFNSDisplayCondensed-Light|SFUIDisplayCondensed-Light|.SFUIDisplayCondensed-Light\",\n  \"__SF-UI-Display-Condensed-Medium__\": \".SFNSDisplayCondensed-Medium|SFUIDisplayCondensed-Medium|.SFUIDisplayCondensed-Medium\",\n  \"__SF-UI-Display-Condensed-Semibold__\": \".SFNSDisplayCondensed-Semibold|SFUIDisplayCondensed-Semibold|.SFUIDisplayCondensed-Semibold\",\n  \"__SF-UI-Display-Condensed-Bold__\": \".SFNSDisplayCondensed-Bold|SFUIDisplayCondensed-Bold|.SFUIDisplayCondensed-Bold\",\n  \"__SF-UI-Display-Condensed-Heavy__\": \".SFNSDisplayCondensed-Heavy|SFUIDisplayCondensed-Heavy|.SFUIDisplayCondensed-Heavy\",\n  \"__SF-UI-Display-Condensed-Black__\": \".SFNSDisplayCondensed-Black|.SFUIDisplayCondensed-Black\",\n  \"__SF-UI-Display-Regular__\": \".SFNSDisplay|SFProDisplay-Regular|SFUIDisplay-Regular|.SFUIDisplay\",\n  \"__SF-UI-Display-Ultralight__\": \".SFNSDisplay-Ultralight|SFProDisplay-Ultralight|SFUIDisplay-Ultralight|.SFUIDisplay-Ultralight\",\n  \"__SF-UI-Display-Thin__\": \".SFNSDisplay-Thin|SFProDisplay-Thin|SFUIDisplay-Thin|.SFUIDisplay-Thin\",\n  \"__SF-UI-Display-Light__\": \".SFNSDisplay-Light|SFProDisplay-Light|SFUIDisplay-Light|.SFUIDisplay-Light\",\n  \"__SF-UI-Display-Medium__\": \".SFNSDisplay-Medium|SFProDisplay-Medium|SFUIDisplay-Medium|.SFUIDisplay-Medium\",\n  \"__SF-UI-Display-Semibold__\": \".SFNSDisplay-Semibold|SFProDisplay-Semibold|SFUIDisplay-Semibold|.SFUIDisplay-Semibold\",\n  \"__SF-UI-Display-Bold__\": \".SFNSDisplay-Bold|SFProDisplay-Bold|SFUIDisplay-Bold|.SFUIDisplay-Bold\",\n  \"__SF-UI-Display-Heavy__\": \".SFNSDisplay-Heavy|SFProDisplay-Heavy|SFUIDisplay-Heavy|.SFUIDisplay-Heavy\",\n  \"__SF-UI-Display-Black__\": \".SFNSDisplay-Black|SFProDisplay-Black|.SFUIDisplay-Black\",\n  \"__SF-UI-Display-Italic__\": \".SFNSDisplay-Italic|SFProDisplay-Italic|SFUIDisplay-Italic\",\n  \"__SF-UI-Display-Ultralight-Italic__\": \".SFNSDisplay-UltralightItalic|SFProDisplay-UltralightItalic|SFUIDisplay-UltralightItalic|.SFUIDisplay-UltralightItalic\",\n  \"__SF-UI-Display-Thin-Italic__\": \".SFNSDisplay-ThinItalic|SFProDisplay-ThinItalic|SFUIDisplay-ThinItalic|.SFUIDisplay-ThinItalic\",\n  \"__SF-UI-Display-Light-Italic__\": \".SFNSDisplay-LightItalic|SFProDisplay-LightItalic|SFUIDisplay-LightItalic|.SFUIDisplay-LightItalic\",\n  \"__SF-UI-Display-Medium-Italic__\": \".SFNSDisplay-MediumItalic|SFProDisplay-MediumItalic|SFUIDisplay-MediumItalic|.SFUIDisplay-MediumItalic\",\n  \"__SF-UI-Display-Semibold-Italic__\": \".SFNSDisplay-SemiboldItalic|SFProDisplay-SemiboldItalic|SFUIDisplay-SemiboldItalic|.SFUIDisplay-SemiboldItalic\",\n  \"__SF-UI-Display-Bold-Italic__\": \".SFNSDisplay-BoldItalic|SFProDisplay-BoldItalic|SFUIDisplay-BoldItalic|.SFUIDisplay-BoldItalic\",\n  \"__SF-UI-Display-Heavy-Italic__\": \".SFNSDisplay-HeavyItalic|SFProDisplay-HeavyItalic|SFUIDisplay-HeavyItalic|.SFUIDisplay-HeavyItalic\",\n  \"__SF-UI-Display-Black-Italic__\": \".SFNSDisplay-BlackItalic|SFProDisplay-BlackItalic|.SFUIDisplay-BlackItalic\",\n  \"__SF-UI-Text-Condensed-Regular__\": \".SFNSTextCondensed-Regular|SFUITextCondensed-Regular|.SFUITextCondensed-Regular\",\n  \"__SF-UI-Text-Condensed-Light__\": \".SFNSTextCondensed-Light|SFUITextCondensed-Light|.SFUITextCondensed-Light\",\n  \"__SF-UI-Text-Condensed-Medium__\": \".SFNSTextCondensed-Medium|SFUITextCondensed-Medium|.SFUITextCondensed-Medium\",\n  \"__SF-UI-Text-Condensed-Semibold__\": \".SFNSTextCondensed-Semibold|SFUITextCondensed-Semibold|.SFUITextCondensed-Semibold\",\n  \"__SF-UI-Text-Condensed-Bold__\": \".SFNSTextCondensed-Bold|SFUITextCondensed-Bold|.SFUITextCondensed-Bold\",\n  \"__SF-UI-Text-Condensed-Heavy__\": \".SFNSTextCondensed-Heavy|.SFUITextCondensed-Heavy\",\n  \"__SF-Compact-Rounded-Regular__\": \"SFCompactRounded-Regular|.SFCompactRounded-Regular\",\n  \"__SF-Compact-Rounded-Ultralight__\": \"SFCompactRounded-Ultralight|.SFCompactRounded-Ultralight\",\n  \"__SF-Compact-Rounded-Thin__\": \"SFCompactRounded-Thin|.SFCompactRounded-Thin\",\n  \"__SF-Compact-Rounded-Light__\": \"SFCompactRounded-Light|.SFCompactRounded-Light\",\n  \"__SF-Compact-Rounded-Medium__\": \"SFCompactRounded-Medium|.SFCompactRounded-Medium\",\n  \"__SF-Compact-Rounded-Semibold__\": \"SFCompactRounded-Semibold|.SFCompactRounded-Semibold\",\n  \"__SF-Compact-Rounded-Bold__\": \"SFCompactRounded-Bold|.SFCompactRounded-Bold\",\n  \"__SF-Compact-Rounded-Heavy__\": \"SFCompactRounded-Heavy|.SFCompactRounded-Heavy\",\n  \"__SF-Compact-Rounded-Black__\": \"SFCompactRounded-Black|.SFCompactRounded-Black\"\n};\nvar fontFamilies = safeFonts;\n\n// ../../library/src/render/fonts/types.ts\nvar FontSourceNames = /* @__PURE__ */ ((FontSourceNames2) => {\n  FontSourceNames2[\"Google\"] = \"google\";\n  FontSourceNames2[\"Fontshare\"] = \"fontshare\";\n  FontSourceNames2[\"Framer\"] = \"framer\";\n  FontSourceNames2[\"Local\"] = \"local\";\n  FontSourceNames2[\"Custom\"] = \"custom\";\n  FontSourceNames2[\"BuiltIn\"] = \"builtIn\";\n  return FontSourceNames2;\n})(FontSourceNames || {});\nfunction isSuccessfullyParsedFontVariant(variant) {\n  return variant.weight !== void 0 && variant.style !== void 0;\n}\n\n// ../../library/src/render/fonts/LocalFontSource.ts\nvar systemFontFamilyName = \"System Default\";\nvar LocalFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"local\" /* Local */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliasBySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliases\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  // end of duplication\n  importFonts() {\n    const fonts = [];\n    for (const family of Object.keys(fontFamilies)) {\n      const members = fontFamilies[family];\n      if (!members) continue;\n      const fontFamily = this.createFontFamily(family);\n      for (const variant of Object.keys(members)) {\n        const member = members[variant];\n        if (!member) continue;\n        const { selector, weight } = member;\n        const font = {\n          variant,\n          selector,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n      }\n      fonts.push(...fontFamily.fonts);\n    }\n    for (const [key7, value] of Object.entries(fontAliases)) {\n      this.addFontAlias(key7, value);\n    }\n    const { fontFamily: systemFontFamily, aliases } = this.getSystemFontFamily();\n    this.addFontFamily(systemFontFamily);\n    for (const [key7, value] of aliases) {\n      this.addFontAlias(key7, value);\n    }\n    fonts.push(...systemFontFamily.fonts);\n    return fonts;\n  }\n  addFontAlias(key7, value) {\n    this.fontAliases.set(key7, value);\n    this.fontAliasBySelector.set(value, key7);\n  }\n  getSystemFontFamily() {\n    const fontFamilies2 = (\n      // System fonts - Taken from https://furbo.org/stuff/systemfonts-new.html - \"All Platforms\" section\n      \"system-ui|-apple-system|BlinkMacSystemFont|Segoe UI|Roboto|Oxygen|Ubuntu|Cantarell|Fira Sans|Droid Sans|Helvetica Neue|sans-serif\"\n    );\n    const fontFamily = { name: systemFontFamilyName, fonts: [], source: this.name };\n    const aliases = /* @__PURE__ */ new Map();\n    const weights = [400, 100, 200, 300, 500, 600, 700, 800, 900];\n    const styles4 = [\"normal\", \"italic\"];\n    for (const style of styles4) {\n      for (const weight of weights) {\n        const variant = createVariantName(weight, style);\n        const alias = `__SystemDefault-${weight}-${style}__`;\n        const font = {\n          variant,\n          selector: alias,\n          style,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n        aliases.set(alias, fontFamilies2);\n      }\n    }\n    return { fontFamily, aliases };\n  }\n  getFontAliasBySelector(selector) {\n    return this.fontAliasBySelector.get(selector) || null;\n  }\n  getFontSelectorByAlias(alias) {\n    return this.fontAliases.get(alias) || null;\n  }\n  /** Font family aliases are in the format of `__Alias-Name__` */\n  isFontFamilyAlias(value) {\n    if (value && /^__.*__$/u.exec(value)) return true;\n    return false;\n  }\n};\nvar fontWeightNames = {\n  \"100\": \"Thin\",\n  \"200\": \"Extra Light\",\n  \"300\": \"Light\",\n  \"400\": \"Normal\",\n  \"500\": \"Medium\",\n  \"600\": \"Semi Bold\",\n  \"700\": \"Bold\",\n  \"800\": \"Extra Bold\",\n  \"900\": \"Black\"\n};\nfunction createVariantName(weight, style) {\n  const friendlyStyle = style === \"normal\" ? \"Regular\" : \"Italic\";\n  if (weight === 400) {\n    return friendlyStyle;\n  }\n  if (style !== \"normal\") {\n    return `${fontWeightNames[weight]} ${friendlyStyle}`;\n  }\n  return `${fontWeightNames[weight]}`;\n}\n\n// ../../library/src/utils/variableFont.ts\nfunction isVariableFont(font) {\n  return Boolean(font.variationAxes);\n}\nfunction createFontFamilyName(font) {\n  if (isVariableFont(font) && font.family.source !== \"custom\") {\n    return createVariableFontFamilyName(font.family.name);\n  }\n  return font.family.name;\n}\nfunction createVariableFontFamilyName(familyName) {\n  return `${familyName} Variable`;\n}\n\n// ../../shared/src/assert.ts\nfunction assert2(condition, ...msg) {\n  var _a, _b;\n  if (condition) return;\n  const e = Error(\"Assertion Error\" + (msg.length > 0 ? \": \" + msg.join(\" \") : \"\"));\n  if (e.stack) {\n    try {\n      const lines = e.stack.split(\"\\n\");\n      if ((_a = lines[1]) == null ? void 0 : _a.includes(\"assert\")) {\n        lines.splice(1, 1);\n        e.stack = lines.join(\"\\n\");\n      } else if ((_b = lines[0]) == null ? void 0 : _b.includes(\"assert\")) {\n        lines.splice(0, 1);\n        e.stack = lines.join(\"\\n\");\n      }\n    } catch {\n    }\n  }\n  throw e;\n}\n\n// ../../shared/src/diffValues.ts\nvar missing = Symbol(\"missing\");\n\n// ../../shared/src/emptyArray.ts\nvar frozenEmptyArray = Object.freeze([]);\nfunction emptyArray() {\n  return frozenEmptyArray;\n}\n\n// ../../shared/src/errors.ts\nvar errorReporter;\nfunction reportError({\n  error: maybeError,\n  tags,\n  extras,\n  critical,\n  caller\n}) {\n  assert2(\n    errorReporter,\n    \"Set up an error callback with setErrorReporter, or configure Sentry with initializeEnvironment\"\n  );\n  const error = reportableError(maybeError, caller);\n  errorReporter({\n    error,\n    tags: { ...error.tags, ...tags },\n    extras: { ...error.extras, ...extras },\n    critical: !!critical\n  });\n  return error;\n}\nfunction reportableError(error, caller = reportableError) {\n  if (error instanceof Error) {\n    return error;\n  }\n  return new UnhandledError(error, caller);\n}\nvar UnhandledError = class extends Error {\n  constructor(error, caller) {\n    const message = error ? JSON.stringify(error) : \"No error message provided\";\n    super(message);\n    this.message = message;\n    if (caller && Error.captureStackTrace) {\n      Error.captureStackTrace(this, caller);\n    } else {\n      try {\n        throw new Error();\n      } catch (e) {\n        this.stack = e.stack;\n      }\n    }\n  }\n};\n\n// ../../shared/src/hostInfo.ts\nvar hostname = typeof window !== \"undefined\" ? window.location.hostname : void 0;\nvar isLocal = Boolean(hostname && [\"web.framerlocal.com\", \"localhost\", \"127.0.0.1\", \"[::1]\"].includes(hostname));\nvar hosts = (() => {\n  if (!hostname) return;\n  if (isLocal) {\n    return { main: hostname, previewLink: void 0 };\n  }\n  const previewHostRegex = /^(([^.]+\\.)?beta\\.)?((?:development\\.)?framer\\.com)$/u;\n  const match = hostname.match(previewHostRegex);\n  if (!match || !match[3]) return;\n  return {\n    previewLink: match[2] && match[0],\n    main: match[3]\n  };\n})();\nvar hostInfo = {\n  hosts,\n  isDevelopment: (hosts == null ? void 0 : hosts.main) === \"development.framer.com\",\n  isProduction: (hosts == null ? void 0 : hosts.main) === \"framer.com\",\n  isLocal\n};\n\n// ../../shared/src/ServiceMap.ts\nvar cachedServiceMap;\nfunction getServiceMap() {\n  if (typeof window === \"undefined\") return {};\n  if (cachedServiceMap) return cachedServiceMap;\n  cachedServiceMap = extractServiceMap();\n  return cachedServiceMap;\n}\nfunction extractServiceMap() {\n  var _a, _b, _c;\n  const location = window.location;\n  let services = (_a = window == null ? void 0 : window.bootstrap) == null ? void 0 : _a.services;\n  if (services) {\n    return services;\n  }\n  let topOrigin;\n  try {\n    const topWindow = window.top;\n    topOrigin = topWindow.location.origin;\n    services = (_c = (_b = window.top) == null ? void 0 : _b.bootstrap) == null ? void 0 : _c.services;\n    if (services) {\n      return services;\n    }\n  } catch (e) {\n  }\n  if (topOrigin && topOrigin !== location.origin) {\n    throw Error(`Unexpectedly embedded by ${topOrigin} (expected ${location.origin})`);\n  }\n  if (location.origin.endsWith(\"framer.com\") || location.origin.endsWith(\"framer.dev\")) {\n    throw Error(\"ServiceMap data was not provided in document\");\n  }\n  try {\n    const servicesJSON = new URLSearchParams(location.search).get(\"services\") || new URLSearchParams(location.hash.substring(1)).get(\"services\");\n    if (servicesJSON) {\n      services = JSON.parse(servicesJSON);\n    }\n  } catch (e) {\n  }\n  if (services && typeof services === \"object\" && services.api) {\n    return services;\n  }\n  throw Error(\"ServiceMap requested but not available\");\n}\n\n// ../../shared/src/logger.ts\nfunction jsonSafeCopy(obj, depth = 0, seen = /* @__PURE__ */ new Set()) {\n  var _a;\n  if (obj === null) return obj;\n  if (typeof obj === \"function\") return `[Function: ${obj.name ?? \"unknown\"}]`;\n  if (typeof obj !== \"object\") return obj;\n  if (obj instanceof Error) return `[${obj.toString()}]`;\n  if (seen.has(obj)) return \"[Circular]\";\n  if (depth > 2) return \"...\";\n  seen.add(obj);\n  try {\n    if (\"toJSON\" in obj && typeof obj.toJSON === \"function\") {\n      return jsonSafeCopy(obj.toJSON(), depth + 1, seen);\n    } else if (Array.isArray(obj)) {\n      return obj.map((v) => jsonSafeCopy(v, depth + 1, seen));\n    } else if (Object.getPrototypeOf(obj) !== Object.prototype) {\n      return `[Object: ${\"__class\" in obj && obj.__class || ((_a = obj.constructor) == null ? void 0 : _a.name)}]`;\n    } else {\n      const result = {};\n      for (const [key7, v] of Object.entries(obj)) {\n        result[key7] = jsonSafeCopy(v, depth + 1, seen);\n      }\n      return result;\n    }\n  } catch (e) {\n    return `[Throws: ${e instanceof Error ? e.message : e}]`;\n  } finally {\n    seen.delete(obj);\n  }\n}\nvar levelNames = [\"trace\", \"debug\", \"info\", \"warn\", \"error\"];\nvar postfixNames = [\":trace\", \":debug\", \":info\", \":warn\", \":error\"];\nfunction applyLogLevelSpec(spec, all) {\n  const missingSpecs = [];\n  for (const s of spec.split(/[ ,]/u)) {\n    let match = s.trim();\n    if (match.length === 0) continue;\n    let level = 1 /* Debug */;\n    let inverted = false;\n    if (match.startsWith(\"-\")) {\n      match = match.slice(1);\n      level = 3 /* Warn */;\n      inverted = true;\n    }\n    for (let i = 0; i <= 4 /* Error */; i++) {\n      const postfix = postfixNames[i];\n      if (!postfix) continue;\n      if (match.endsWith(postfix)) {\n        level = i;\n        if (inverted) {\n          level += 1;\n        }\n        match = match.slice(0, match.length - postfix.length);\n        if (match.length === 0) {\n          match = \"*\";\n        }\n        break;\n      }\n    }\n    const regex2 = new RegExp(\"^\" + escapeRegExp(match).replace(/\\\\\\*/gu, \".*\") + \"$\");\n    let loggersUpdated = 0;\n    for (const logger of all) {\n      if (logger.id.match(regex2)) {\n        logger.level = level;\n        ++loggersUpdated;\n      }\n    }\n    if (loggersUpdated === 0) {\n      missingSpecs.push(s);\n    }\n  }\n  return missingSpecs;\n}\nvar _LogEntry = class _LogEntry {\n  constructor(logger, level, parts) {\n    this.logger = logger;\n    this.level = level;\n    this.parts = parts;\n    __publicField(this, \"id\");\n    __publicField(this, \"time\");\n    __publicField(this, \"stringPrefix\");\n    this.id = _LogEntry.nextId++;\n    this.time = Date.now();\n  }\n  toMessage() {\n    if (this.stringPrefix) return this.parts;\n    const r = [\n      new Date(this.time).toISOString().substr(-14, 14),\n      levelNames[this.level] + \": [\" + this.logger.id + \"]\"\n    ];\n    let i = 0;\n    for (; i < this.parts.length; i++) {\n      const part = this.parts[i];\n      if (typeof part === \"string\") {\n        r.push(part);\n        continue;\n      }\n      break;\n    }\n    this.stringPrefix = r.join(\" \");\n    this.parts.splice(0, i, this.stringPrefix);\n    return this.parts;\n  }\n  toString() {\n    return this.toMessage().map((part) => {\n      const type = typeof part;\n      if (type === \"string\") return part;\n      if (type === \"function\") return `[Function: ${part.name ?? \"unknown\"}]`;\n      if (part instanceof Error) return part.stack ?? part.toString();\n      const json = JSON.stringify(jsonSafeCopy(part));\n      if ((json == null ? void 0 : json.length) > 253) {\n        return json.slice(0, 250) + \"...\";\n      }\n      return json;\n    }).join(\" \");\n  }\n};\n__publicField(_LogEntry, \"nextId\", 0);\nvar LogEntry = _LogEntry;\nvar logLevelSpec = \"*:app:info,app:info\";\nvar isNode = typeof process !== \"undefined\" && !!process.kill;\nvar isCI = isNode && false;\nif (isCI) {\n  logLevelSpec = \"-:warn\";\n} else if (isNode) {\n  logLevelSpec = \"\";\n}\ntry {\n  if (typeof window !== \"undefined\" && window.localStorage) {\n    logLevelSpec = window.localStorage.logLevel || logLevelSpec;\n  }\n} catch {\n}\ntry {\n  if (typeof process !== \"undefined\") {\n    logLevelSpec = process.env.DEBUG || logLevelSpec;\n  }\n} catch {\n}\ntry {\n  if (typeof window !== \"undefined\") {\n    Object.assign(window, { setLogLevel });\n  }\n} catch {\n}\ntry {\n  if (typeof window !== \"undefined\" && !!window.postMessage && window.top === window) {\n    window.addEventListener(\"message\", (msg) => {\n      if (!msg.data || typeof msg.data !== \"object\") return;\n      const { loggerId, level, parts, printed } = msg.data;\n      if (typeof loggerId !== \"string\") return;\n      if (!Array.isArray(parts) || parts.length < 1 || typeof level !== \"number\") return;\n      const logger = getLogger2(loggerId);\n      if (level < 0 /* Trace */ || level > 5 /* NotLogging */) return;\n      parts[0] = parts[0].replace(\"[\", \"*[\");\n      const entry = new LogEntry(logger, level, parts);\n      entry.stringPrefix = parts[0];\n      replayBuffer.push(entry);\n      if (printed) return;\n      if (logger.level > level) return;\n      console == null ? void 0 : console.log(...entry.toMessage());\n    });\n  }\n} catch {\n}\nvar postLogEntry;\ntry {\n  if (typeof window !== \"undefined\" && !!window.postMessage && window.parent !== window && // Don't post messages to the top-level site from the Editor Bar\n  !window.location.pathname.startsWith(\"/edit\")) {\n    postLogEntry = (entry) => {\n      var _a;\n      try {\n        const parts = entry.toMessage().map((p) => jsonSafeCopy(p));\n        const logger = entry.logger;\n        const level = entry.level;\n        const printed = logger.level <= entry.level;\n        const data2 = { loggerId: logger.id, level, parts, printed };\n        (_a = window.parent) == null ? void 0 : _a.postMessage(data2, getServiceMap().app);\n      } catch {\n      }\n    };\n  }\n} catch {\n}\nvar loggers = {};\nvar replayBuffer = [];\nvar maxReplayBufferEntries = 1e3;\nfunction createLogEntry(logger, level, parts) {\n  const entry = new LogEntry(logger, level, parts);\n  replayBuffer.push(entry);\n  postLogEntry == null ? void 0 : postLogEntry(entry);\n  while (replayBuffer.length > maxReplayBufferEntries) {\n    replayBuffer.shift();\n  }\n  return entry;\n}\nfunction getLogReplayBuffer(maxEntries) {\n  if (typeof maxEntries === \"number\") {\n    maxReplayBufferEntries = maxEntries;\n  }\n  return replayBuffer;\n}\nvar pathRegex = /\\/(?<filename>[^/.]+)(?=\\.(?:debug\\.)?html$)/u;\nvar cachedFilename;\nfunction getFilenameFromWindowPathname() {\n  var _a, _b;\n  if (typeof window === \"undefined\" || !window.location) return;\n  cachedFilename ??= (_b = (_a = pathRegex.exec(window.location.pathname)) == null ? void 0 : _a.groups) == null ? void 0 : _b.filename;\n  return cachedFilename;\n}\nfunction getLogger2(id) {\n  const path = getFilenameFromWindowPathname();\n  id = (path ? path + \":\" : \"\") + id;\n  const existing = loggers[id];\n  if (existing) return existing;\n  const logger = new Logger(id);\n  loggers[id] = logger;\n  applyLogLevelSpec(logLevelSpec, [logger]);\n  postLogEntry == null ? void 0 : postLogEntry(new LogEntry(logger, -1, []));\n  return logger;\n}\nfunction setLogLevel(spec, replay = true) {\n  try {\n    if (typeof window !== \"undefined\" && window.localStorage) {\n      window.localStorage.logLevel = spec;\n    }\n  } catch {\n  }\n  const previousSpec = logLevelSpec;\n  logLevelSpec = spec;\n  const all = Object.values(loggers);\n  for (const logger of all) {\n    logger.level = 3 /* Warn */;\n  }\n  const missingSpecs = applyLogLevelSpec(spec, all);\n  if (missingSpecs.length > 0) {\n    console == null ? void 0 : console.warn(\"Some log level specs matched no loggers:\", missingSpecs);\n  }\n  if (replay && replayBuffer.length > 0) {\n    console == null ? void 0 : console.log(\"--- LOG REPLAY ---\");\n    for (const entry of replayBuffer) {\n      if (entry.logger.level > entry.level) continue;\n      if (entry.level >= 3 /* Warn */) {\n        console == null ? void 0 : console.warn(...entry.toMessage());\n      } else {\n        console == null ? void 0 : console.log(...entry.toMessage());\n      }\n    }\n    console == null ? void 0 : console.log(\"--- END OF LOG REPLAY ---\");\n  }\n  return previousSpec;\n}\nvar enrichWithLogs = (extras) => {\n  const result = {\n    ...extras,\n    logs: getLogReplayBuffer().slice(-50).map((entry) => entry.toString().slice(0, 600)).join(\"\\n\")\n  };\n  if (extras.logs) {\n    console == null ? void 0 : console.warn(\"extras.logs is reserved for log replay buffer, use another key\");\n  }\n  return result;\n};\nvar Logger = class {\n  constructor(id, errorIsCritical) {\n    this.id = id;\n    __publicField(this, \"level\", 3 /* Warn */);\n    __publicField(this, \"didLog\", {});\n    __publicField(this, \"errorIsCritical\");\n    /**\n     * Trace level messages are not recorded, send to parent frames, or outputted, unless the logger\n     * is current set at the trace level.\n     */\n    __publicField(this, \"trace\", (...parts) => {\n      if (this.level > 0 /* Trace */) return;\n      const entry = createLogEntry(this, 0 /* Trace */, parts);\n      console == null ? void 0 : console.log(...entry.toMessage());\n    });\n    /** Debug level is supposed to be used for things that log often and are disabled by default. */\n    __publicField(this, \"debug\", (...parts) => {\n      const entry = createLogEntry(this, 1 /* Debug */, parts);\n      if (this.level > 1 /* Debug */) return;\n      console == null ? void 0 : console.log(...entry.toMessage());\n    });\n    /**\n     * Info level is supposed to be used for once per big user action, or maybe once per minute\n     * things. Some loggers log at this level by default. Don't overuse.\n     */\n    __publicField(this, \"info\", (...parts) => {\n      const entry = createLogEntry(this, 2 /* Info */, parts);\n      if (this.level > 2 /* Info */) return;\n      console == null ? void 0 : console.info(...entry.toMessage());\n    });\n    __publicField(this, \"warn\", (...parts) => {\n      const entry = createLogEntry(this, 3 /* Warn */, parts);\n      if (this.level > 3 /* Warn */) return;\n      console == null ? void 0 : console.warn(...entry.toMessage());\n    });\n    __publicField(this, \"warnOncePerMinute\", (firstPart, ...parts) => {\n      const lastLoggedTime = this.didLog[firstPart];\n      if (lastLoggedTime && lastLoggedTime > Date.now()) return;\n      this.didLog[firstPart] = Date.now() + 1e3 * 60;\n      parts.unshift(firstPart);\n      const entry = createLogEntry(this, 3 /* Warn */, parts);\n      if (this.level > 3 /* Warn */) return;\n      console == null ? void 0 : console.warn(...entry.toMessage());\n    });\n    __publicField(this, \"error\", (...parts) => {\n      const entry = createLogEntry(this, 4 /* Error */, parts);\n      if (this.level > 4 /* Error */) return;\n      console == null ? void 0 : console.error(...entry.toMessage());\n    });\n    __publicField(this, \"errorOncePerMinute\", (firstPart, ...parts) => {\n      const lastLoggedTime = this.didLog[firstPart];\n      if (lastLoggedTime && lastLoggedTime > Date.now()) return;\n      this.didLog[firstPart] = Date.now() + 1e3 * 60;\n      parts.unshift(firstPart);\n      const entry = createLogEntry(this, 4 /* Error */, parts);\n      if (this.level > 4 /* Error */) return;\n      console == null ? void 0 : console.error(...entry.toMessage());\n    });\n    /** Reports to Sentry */\n    __publicField(this, \"reportError\", (maybeError, extras, tags, critical) => {\n      extras = enrichWithLogs(extras ?? {});\n      const reportedError = reportError({\n        caller: this.reportError,\n        error: maybeError,\n        tags: {\n          ...tags,\n          handler: \"logger\",\n          where: this.id\n        },\n        extras,\n        critical: critical ?? this.errorIsCritical\n      });\n      extras ? this.error(reportedError, extras) : this.error(reportedError);\n    });\n    /** Reports to Sentry */\n    __publicField(this, \"reportErrorOncePerMinute\", (error, extras) => {\n      if (!isErrorWithMessage(error)) return;\n      const lastLoggedTime = this.didLog[error.message];\n      if (lastLoggedTime && lastLoggedTime > Date.now()) return;\n      this.didLog[error.message] = Date.now() + 1e3 * 60;\n      this.reportError(error, extras);\n    });\n    /** Reports to Sentry */\n    __publicField(this, \"reportCriticalError\", (maybeError, extras, tags) => this.reportError(maybeError, extras, tags, true));\n    this.errorIsCritical = errorIsCritical ?? (id === \"fatal\" || id.endsWith(\":fatal\"));\n  }\n  extend(name) {\n    const id = this.id + \":\" + name;\n    return getLogger2(id);\n  }\n  /** Returns the messages this logger created that are still in the global replay buffer. */\n  getBufferedMessages() {\n    return replayBuffer.filter((entry) => entry.logger === this);\n  }\n  /** Set new level and return previous level. */\n  setLevel(level) {\n    const previous = this.level;\n    this.level = level;\n    return previous;\n  }\n  /** Check if a trace messages will be output. */\n  isLoggingTraceMessages() {\n    return this.level >= 0 /* Trace */;\n  }\n};\nfunction isErrorWithMessage(maybeError) {\n  return Object.prototype.hasOwnProperty.call(maybeError, \"message\");\n}\nfunction escapeRegExp(string) {\n  return string.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/gu, \"\\\\$&\");\n}\n\n// ../../shared/src/Mixed.ts\nvar Mixed = Symbol(\"Mixed\");\n\n// ../../shared/src/moduleNames.ts\nvar DEPENDENCIES_MODULE_NAME = \"dependencies\";\nvar DEPENDENCIES_MODULE_TYPE = \"config\";\nvar DEPENDENCIES_MODULE_TYPE_SLASH_NAME = `${DEPENDENCIES_MODULE_TYPE}/${DEPENDENCIES_MODULE_NAME}`;\nvar IMPORT_MAP_FILE_ID = `${DEPENDENCIES_MODULE_TYPE_SLASH_NAME}/importMap.json`;\nvar DEPENDENCIES_FILE_ID = `${DEPENDENCIES_MODULE_TYPE_SLASH_NAME}/dependencies.json`;\n\n// ../../shared/src/readonly.ts\nvar USE_FREEZE = false;\nvar List;\n((List2) => {\n  function push(ls, ...elements) {\n    return ls.concat(elements);\n  }\n  List2.push = push;\n  function pop(a) {\n    return a.slice(0, -1);\n  }\n  List2.pop = pop;\n  function unshift(ls, ...elements) {\n    return elements.concat(ls);\n  }\n  List2.unshift = unshift;\n  function insert(a, index, ...elements) {\n    const length = a.length;\n    if (index < 0 || index > length) throw Error(\"index out of range: \" + index);\n    const copy = a.slice();\n    copy.splice(index, 0, ...elements);\n    return copy;\n  }\n  List2.insert = insert;\n  function replace(a, index, replacement) {\n    const length = a.length;\n    if (index < 0 || index >= length) throw Error(\"index out of range: \" + index);\n    const itemsToAdd = Array.isArray(replacement) ? replacement : [replacement];\n    const copy = a.slice();\n    copy.splice(index, 1, ...itemsToAdd);\n    return copy;\n  }\n  List2.replace = replace;\n  function remove2(a, index) {\n    const length = a.length;\n    if (index < 0 || index >= length) throw Error(\"index out of range: \" + index);\n    const copy = a.slice();\n    copy.splice(index, 1);\n    return copy;\n  }\n  List2.remove = remove2;\n  function move(a, from, to) {\n    const length = a.length;\n    if (from < 0 || from >= length) throw Error(\"from index out of range: \" + from);\n    if (to < 0 || to >= length) throw Error(\"to index out of range: \" + to);\n    const copy = a.slice();\n    if (to === from) return copy;\n    const element = copy[from];\n    if (from < to) {\n      copy.splice(to + 1, 0, element);\n      copy.splice(from, 1);\n    } else {\n      copy.splice(from, 1);\n      copy.splice(to, 0, element);\n    }\n    return copy;\n  }\n  List2.move = move;\n  function zip(a, b) {\n    const res = [];\n    const length = Math.min(a.length, b.length);\n    for (let i = 0; i < length; i++) {\n      res.push([a[i], b[i]]);\n    }\n    return res;\n  }\n  List2.zip = zip;\n  function update(a, index, body) {\n    const res = a.slice();\n    const targetElement = res[index];\n    if (targetElement === void 0) return res;\n    res[index] = body(targetElement);\n    return res;\n  }\n  List2.update = update;\n  function unique(a) {\n    return Array.from(new Set(a));\n  }\n  List2.unique = unique;\n  function union(a, ...collections) {\n    return Array.from(/* @__PURE__ */ new Set([...a, ...collections.flat()]));\n  }\n  List2.union = union;\n  function filter(a, predicate) {\n    return a.filter(predicate);\n  }\n  List2.filter = filter;\n})(List || (List = {}));\nvar objectHasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwnProperty2(object, property) {\n  return objectHasOwnProperty.call(object, property);\n}\nvar ValueObject;\n((ValueObject2) => {\n  function morphUsingTemplate(values, template) {\n    for (const field of Object.keys(values)) {\n      if (!hasOwnProperty2(template, field)) {\n        delete values[field];\n      }\n    }\n    for (const field of Object.keys(template)) {\n      if (values[field] === void 0) {\n        values[field] = template[field];\n      }\n    }\n    Object.setPrototypeOf(values, Object.getPrototypeOf(template));\n    if (USE_FREEZE) {\n      Object.freeze(values);\n    }\n    return values;\n  }\n  ValueObject2.morphUsingTemplate = morphUsingTemplate;\n  function writeOnce(object, values) {\n    if (values) {\n      Object.assign(object, values);\n    }\n    if (USE_FREEZE) {\n      Object.freeze(object);\n    }\n  }\n  ValueObject2.writeOnce = writeOnce;\n  function update(object, values) {\n    const result = Object.assign(Object.create(Object.getPrototypeOf(object)), object, values);\n    if (USE_FREEZE) {\n      Object.freeze(result);\n    }\n    return result;\n  }\n  ValueObject2.update = update;\n})(ValueObject || (ValueObject = {}));\nvar ReadonlySet;\n((ReadonlySet2) => {\n  function add3(set, ...items) {\n    return /* @__PURE__ */ new Set([...set, ...items]);\n  }\n  ReadonlySet2.add = add3;\n  function remove2(set, ...items) {\n    const result = new Set(set);\n    for (const item of items) {\n      result.delete(item);\n    }\n    return result;\n  }\n  ReadonlySet2.remove = remove2;\n  function union(...sets) {\n    const result = /* @__PURE__ */ new Set();\n    for (const set of sets) {\n      for (const item of set) {\n        result.add(item);\n      }\n    }\n    return result;\n  }\n  ReadonlySet2.union = union;\n  function toggle(set, item) {\n    if (set.has(item)) {\n      return ReadonlySet2.remove(set, item);\n    }\n    return ReadonlySet2.add(set, item);\n  }\n  ReadonlySet2.toggle = toggle;\n})(ReadonlySet || (ReadonlySet = {}));\nvar ReadonlyMap;\n((ReadonlyMap2) => {\n  function set(map2, key7, value) {\n    const result = new Map(map2);\n    result.set(key7, value);\n    return result;\n  }\n  ReadonlyMap2.set = set;\n  function remove2(map2, key7) {\n    const result = new Map(map2);\n    result.delete(key7);\n    return result;\n  }\n  ReadonlyMap2.remove = remove2;\n})(ReadonlyMap || (ReadonlyMap = {}));\n\n// ../../shared/src/ResolvablePromise.ts\nvar ResolvablePromise = class extends Promise {\n  constructor() {\n    let res;\n    let rej;\n    super((resolve, reject) => {\n      res = resolve;\n      rej = reject;\n    });\n    __publicField(this, \"_state\", \"initial\");\n    __publicField(this, \"resolve\");\n    __publicField(this, \"reject\");\n    this.resolve = (val) => {\n      this._state = \"fulfilled\";\n      res(val);\n    };\n    this.reject = (reason) => {\n      this._state = \"rejected\";\n      rej(reason);\n    };\n  }\n  get state() {\n    return this._state;\n  }\n  /**\n   * A function that sets the state to \"pending\".\n   * Useful for when you want to signal that the task started but is not yet completed.\n   */\n  pending() {\n    this._state = \"pending\";\n    return this;\n  }\n  isResolved() {\n    return this._state === \"fulfilled\" || this._state === \"rejected\";\n  }\n};\nResolvablePromise.prototype.constructor = Promise;\n\n// ../../shared/src/scheduler.ts\nvar hasNativeYield = false;\nvar hasNativePostTask = false;\nvar hasIsInputPending = false;\nif (typeof window !== \"undefined\" && window.scheduler) {\n  hasNativeYield = \"yield\" in window.scheduler;\n  hasNativePostTask = \"postTask\" in window.scheduler;\n  hasIsInputPending = \"isInputPending\" in window.scheduler;\n}\n\n// ../../shared/src/TaskQueues.ts\nvar log2 = getLogger2(\"task-queue\");\n\n// ../assets/src/utils.ts\nfunction getAssetFilename(asset) {\n  return asset.key + asset.extension;\n}\nfunction createAbsoluteAssetURL(filename) {\n  const serviceMap = getServiceMap();\n  return `${serviceMap.userContent}/assets/${filename}`;\n}\nfunction createAbsoluteAssetURLFromAsset(asset) {\n  return createAbsoluteAssetURL(getAssetFilename(asset));\n}\n\n// ../../library/src/render/fonts/fontUtils.ts\nfunction supportsOpenType(openTypeData) {\n  return Boolean(openTypeData && Array.isArray(openTypeData));\n}\nfunction validateVariationAxes(variationAxesData) {\n  if (!variationAxesData) return;\n  if (!Array.isArray(variationAxesData)) return;\n  const variationAxes = [];\n  for (const axis of variationAxesData) {\n    if (!isVariationAxis(axis)) continue;\n    variationAxes.push({\n      tag: axis.tag,\n      name: axis.name,\n      minValue: axis.minValue,\n      maxValue: axis.maxValue,\n      defaultValue: axis.defaultValue\n    });\n  }\n  return variationAxes;\n}\nfunction isOpenTypeFeature(feature) {\n  if (typeof feature !== \"object\" || feature === null) return false;\n  if (!(\"tag\" in feature) || typeof feature.tag !== \"string\") return false;\n  if (\"coverage\" in feature && typeof feature.coverage !== \"undefined\" && !Array.isArray(feature.coverage)) {\n    return false;\n  }\n  return true;\n}\nfunction isVariationAxis(axis) {\n  if (typeof axis !== \"object\" || axis === null) return false;\n  if (!(\"tag\" in axis) || typeof axis.tag !== \"string\") return false;\n  if (\"name\" in axis && typeof axis.name !== \"string\") return false;\n  if (!(\"minValue\" in axis) || typeof axis.minValue !== \"number\") return false;\n  if (!(\"maxValue\" in axis) || typeof axis.maxValue !== \"number\") return false;\n  if (!(\"defaultValue\" in axis) || typeof axis.defaultValue !== \"number\") {\n    return false;\n  }\n  return true;\n}\n\n// ../../library/src/render/fonts/BuiltInFontSource.ts\nvar builtInFontSelectorPrefix = \"BI;\";\nvar BuiltInFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"builtIn\" /* BuiltIn */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidBuiltInFont(asset)) continue;\n      const { properties } = asset;\n      const fontName = properties.font.fontFamily;\n      const fontFamily = this.createFontFamily(\n        fontName,\n        properties.font.foundryName,\n        properties.font.fontVersion\n      );\n      const openTypeData = properties.font.openTypeData;\n      const variationAxesData = properties.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const variant = isVariableFont2 ? \"variable\" : properties.font.fontSubFamily || \"regular\";\n      const url = createAbsoluteAssetURLFromAsset(asset);\n      const font = {\n        family: fontFamily,\n        selector: this.createSelector(fontName, variant, properties.font.fontVersion),\n        variant,\n        file: url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData),\n        category: properties.font.fontCategory,\n        weight: variantNameToWeight(variant),\n        style: getFontStyle(variant)\n      };\n      fontFamily.fonts.push(font);\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(font);\n    }\n    for (const fontFamily of this.fontFamilies) {\n      fontFamily.fonts.sort((a, b) => {\n        const weightA = variantNameToWeight(a.variant);\n        const weightB = variantNameToWeight(b.variant);\n        if (!weightA || !weightB) return 1;\n        return weightA - weightB;\n      });\n    }\n    return fonts;\n  }\n  static parseVariant(variant) {\n    const kebabCaseVariant = variantToKebabCase(variant);\n    const weight = variantsNameToWeight[kebabCaseVariant];\n    const style = getFontStyle(variant);\n    return { weight, style };\n  }\n  getFontBySelector(selector) {\n    const locator = this.parseSelector(selector);\n    if (!locator) return;\n    const fontFamily = this.getFontFamilyByName(locator.name);\n    if (!fontFamily) return;\n    return fontFamily.fonts.find((f) => f.selector === selector);\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  createFontFamily(family, foundryName, version2) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily && existingFontFamily.version === version2) return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: [],\n      foundryName,\n      version: version2\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData)) return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature)) return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  isValidBuiltInFont(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\")) return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\") return false;\n    if (!asset.properties.font) return false;\n    if (!asset.properties.font.fontVersion) return false;\n    if (!asset.properties.font.fontFamily) return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  createSelector(family, variant, version2) {\n    return `${builtInFontSelectorPrefix}${family}/${variant}/${version2}`;\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(builtInFontSelectorPrefix)) return null;\n    const [_, selectorWithoutPrefix] = selector.split(builtInFontSelectorPrefix);\n    if (selectorWithoutPrefix === void 0) return null;\n    const [name, variant, version2] = selectorWithoutPrefix.split(\"/\");\n    if (!name || !variant || !version2) return null;\n    return {\n      name,\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n};\nvar variantsNameToWeight = {\n  ultralight: 100,\n  \"ultralight-italic\": 100,\n  thin: 200,\n  \"thin-italic\": 200,\n  demi: 200,\n  light: 300,\n  \"light-italic\": 300,\n  normal: 350,\n  base: 400,\n  regular: 400,\n  classic: 400,\n  \"regular-slanted\": 400,\n  italic: 400,\n  oblique: 400,\n  dense: 400,\n  brukt: 300,\n  book: 400,\n  \"book-italic\": 400,\n  text: 400,\n  \"text-italic\": 400,\n  medium: 500,\n  solid: 500,\n  \"medium-oblique\": 500,\n  \"medium-italic\": 500,\n  mittel: 500,\n  semibold: 600,\n  \"semibold-italic\": 600,\n  bold: 700,\n  \"bold-italic\": 700,\n  \"bold-oblique\": 700,\n  fett: 700,\n  ultrabold: 800,\n  \"ultrabold-italic\": 800,\n  extrabold: 800,\n  \"extrabold-italic\": 800,\n  black: 900,\n  extralight: 100,\n  \"extralight-italic\": 100,\n  \"black-italic\": 900,\n  \"extra-italic\": 900,\n  \"extra-italic-bold\": 900,\n  satt: 900,\n  heavy: 900,\n  \"heavy-italic\": 900,\n  // The following variants are only used in the FT88 font. These are not really weights, but more font styles (gothique, cursive, etc.).\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  serif: 100,\n  school: 200,\n  expanded: 300,\n  gothique: 500,\n  // The following variants are only used in the ARK_ES font.\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  // The order is important because we want to group all the light together and solid together.\n  \"dense-light\": 200,\n  \"dense-regular\": 300,\n  \"dense-medium\": 400,\n  \"dense-bold\": 500,\n  \"solid-light\": 600,\n  \"solid-regular\": 700,\n  \"solid-medium\": 800,\n  \"solid-bold\": 900,\n  // The following variants are only used in the Tecnica font.\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  \"53\": 400,\n  \"55\": 600,\n  // we want to put variable fonts last\n  variable: 1e3,\n  \"variable-italic\": 1e3\n};\nfunction variantNameToWeight(variant) {\n  const kebabCaseVariant = variantToKebabCase(variant);\n  return variantsNameToWeight[kebabCaseVariant];\n}\nfunction variantToKebabCase(variant) {\n  return variant.toLowerCase().replace(/\\s+/gu, \"-\");\n}\nfunction getFontStyle(variant) {\n  variant = variant.toLowerCase();\n  if (variant.includes(\"italic\") || variant.includes(\"oblique\") || variant.includes(\"slanted\")) return \"italic\";\n  return \"normal\";\n}\n\n// ../../library/src/render/fonts/getRelatedFontVariants.ts\nfunction getRelatedFontVariants(currentVariant, availableVariants) {\n  return {\n    ...pickBoldItalicVariants(currentVariant, availableVariants),\n    ...pickVariableVariants(currentVariant, availableVariants)\n  };\n}\nfunction pickBoldItalicVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0) {\n    return {\n      variantBold: void 0,\n      variantBoldItalic: void 0,\n      variantItalic: void 0\n    };\n  }\n  const { weight: currentWeight, style: currentStyle } = currentVariant;\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  const boldVariantByStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (variant.isVariable !== currentVariant.isVariable) continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n    if (variant.weight <= currentWeight) continue;\n    if (!boldVariantByStyle.has(variant.style)) {\n      boldVariantByStyle.set(variant.style, variant);\n    }\n  }\n  let variantBold = boldVariantByStyle.get(currentStyle);\n  let variantBoldItalic = boldVariantByStyle.get(\"italic\");\n  const currentVariantWeight = currentVariant.weight;\n  if (currentVariantWeight <= 300) {\n    variantBold = variantByWeightAndStyle.get(`400-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"400-italic\") ?? variantBoldItalic;\n  } else if (currentVariantWeight <= 500) {\n    variantBold = variantByWeightAndStyle.get(`700-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"700-italic\") ?? variantBoldItalic;\n  } else {\n    variantBold = variantByWeightAndStyle.get(`900-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"900-italic\") ?? variantBoldItalic;\n  }\n  const variantItalic = variantByWeightAndStyle.get(`${currentWeight}-italic`);\n  return { variantBold, variantItalic, variantBoldItalic };\n}\nfunction pickVariableVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0) return { variantVariable: void 0, variantVariableItalic: void 0 };\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  let variantVariable;\n  let variantVariableItalic;\n  let fallbackVariant;\n  let fallbackItalicVariant;\n  for (const variant of availableVariants) {\n    if (!variant.isVariable) continue;\n    const isSameWeight = variant.weight === currentVariant.weight;\n    const isDefaultWeight = variant.weight === 400;\n    if (variant.style === \"normal\") {\n      if (isSameWeight) {\n        variantVariable = variant;\n      } else if (isDefaultWeight) {\n        fallbackVariant = variant;\n      } else if (!fallbackVariant) {\n        fallbackVariant = variant;\n      }\n    } else if (variant.style === \"italic\") {\n      if (isSameWeight) {\n        variantVariableItalic = variant;\n      } else if (isDefaultWeight) {\n        fallbackItalicVariant = variant;\n      } else if (!fallbackItalicVariant) {\n        fallbackItalicVariant = variant;\n      }\n    }\n  }\n  return {\n    variantVariable: variantVariable ?? fallbackVariant,\n    variantVariableItalic: variantVariableItalic ?? fallbackItalicVariant\n  };\n}\n\n// ../../library/src/render/fonts/CustomFontSource.ts\nvar customFontSelectorPrefix = \"CUSTOM;\";\nvar log3 = getLogger(\"custom-font-source\");\nfunction findDuplicateFont(existingFonts, newFont) {\n  for (let i = 0; i < existingFonts.length; i++) {\n    const existingFont = existingFonts[i];\n    if (!existingFont) continue;\n    if (existingFont.owner !== newFont.owner && existingFont.file === newFont.file) {\n      return { existingFont, index: i, projectDuplicate: true };\n    }\n    if (existingFont.selector === newFont.selector && existingFont.weight === newFont.weight && existingFont.style === newFont.style) {\n      return { existingFont, index: i, projectDuplicate: false };\n    }\n  }\n  return void 0;\n}\nfunction getCustomFontName(fileName, properties) {\n  if (!properties) return fileName.substring(0, fileName.lastIndexOf(\".\"));\n  const { font } = properties;\n  const fontFamily = font.fontFamily;\n  const isAssetVariableFont = Array.isArray(font.variationAxes);\n  if (isAssetVariableFont && fontFamily.toLowerCase().includes(\"variable\")) return fontFamily;\n  const variant = isAssetVariableFont ? \"Variable\" : font.fontSubFamily.trim();\n  if (variant === \"\") return fontFamily;\n  return `${fontFamily} ${variant}`;\n}\nfunction getCustomFontInfo({ fontFamily, fontSubFamily, variationAxes, faceDescriptors }) {\n  const rawVariant = fontSubFamily.trim() || \"Regular\";\n  const containsVariant = rawVariant.toLocaleLowerCase().includes(\"variable\");\n  const variant = validateVariationAxes(variationAxes) && !containsVariant ? `Variable ${rawVariant}` : rawVariant;\n  let style = \"normal\";\n  let weight = 400;\n  if (faceDescriptors) {\n    weight = faceDescriptors.weight;\n    style = faceDescriptors.italic || faceDescriptors.oblique ? \"italic\" : \"normal\";\n  }\n  return { family: fontFamily, variant, weight, style };\n}\nvar CustomFontSource = class _CustomFontSource {\n  constructor() {\n    __publicField(this, \"name\", \"custom\" /* Custom */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  deprecatedImportFonts(assets) {\n    var _a, _b;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidCustomFontAsset(asset)) {\n        continue;\n      }\n      const variationAxesData = (_a = asset.properties) == null ? void 0 : _a.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const fontName = getCustomFontName(asset.name, asset.properties);\n      const fontFamily = this.createFontFamily(fontName);\n      const openTypeData = (_b = asset.properties) == null ? void 0 : _b.font.openTypeData;\n      const variant = isVariableFont2 ? \"variable\" : this.inferVariantName(fontName);\n      const url = createAbsoluteAssetURLFromAsset(asset);\n      const font = {\n        family: fontFamily,\n        selector: `${customFontSelectorPrefix}${fontName}`,\n        variant,\n        file: url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData),\n        owner: getAssetOwnerType(asset)\n      };\n      fontFamily.fonts.push(font);\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(...fontFamily.fonts);\n    }\n    return fonts;\n  }\n  importFonts(assets, enableFontImprovements) {\n    var _a, _b, _c, _d;\n    if (!enableFontImprovements) {\n      return this.deprecatedImportFonts(assets);\n    }\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = {};\n    for (const asset of assets) {\n      if (!this.isValidCustomFontAsset(asset)) {\n        continue;\n      }\n      const { family, variant, weight, style } = getCustomFontInfo(asset.properties.font);\n      const fontFamily = this.createFontFamily(family);\n      const openTypeData = (_a = asset.properties) == null ? void 0 : _a.font.openTypeData;\n      const url = createAbsoluteAssetURLFromAsset(asset);\n      const ownerType = getAssetOwnerType(asset);\n      const font = {\n        family: fontFamily,\n        selector: _CustomFontSource.createSelector(fontFamily.name, variant),\n        variant,\n        weight,\n        style,\n        file: url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes((_b = asset.properties) == null ? void 0 : _b.font.variationAxes),\n        owner: ownerType\n      };\n      const duplicateInfo = findDuplicateFont(fontFamily.fonts, font);\n      if (duplicateInfo && duplicateInfo.projectDuplicate) {\n        if (font.owner === \"project\") {\n          fontFamily.fonts[duplicateInfo.index] = font;\n          fonts[font.selector] = font;\n        }\n      } else if (duplicateInfo) {\n        log3.warn(\"Duplicate font found for:\", font, \"with existing font:\", duplicateInfo.existingFont);\n        const existingFont = duplicateInfo.existingFont;\n        const newIsWoff2 = ((_c = font.file) == null ? void 0 : _c.endsWith(\".woff2\")) ?? false;\n        const existingIsWoff2 = ((_d = existingFont.file) == null ? void 0 : _d.endsWith(\".woff2\")) ?? false;\n        if (newIsWoff2 && !existingIsWoff2) {\n          fontFamily.fonts[duplicateInfo.index] = font;\n          fonts[font.selector] = font;\n        }\n      } else {\n        fontFamily.fonts.push(font);\n        fonts[font.selector] = font;\n      }\n      fontFamily.owner = ownerType;\n      this.assetsByFamily.set(family, asset);\n    }\n    for (const fontFamily of this.fontFamilies) {\n      if (fontFamily.fonts.length > 0) {\n        updateFontRelationships(fontFamily);\n      }\n    }\n    return Object.values(fonts);\n  }\n  static createSelector(family, variant) {\n    return `${customFontSelectorPrefix}${family}${variant ? ` ${variant}` : \"\"}`;\n  }\n  isValidCustomFontAsset(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\")) return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\") return false;\n    if (!asset.properties.font) return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData)) return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature)) return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  inferVariantName(family) {\n    const possibleValues = [\n      \"thin\",\n      \"ultra light\",\n      \"extra light\",\n      \"light\",\n      \"normal\",\n      \"medium\",\n      \"semi bold\",\n      \"bold\",\n      \"extra bold\",\n      \"black\"\n    ];\n    const possibleValuesWithItalics = [...possibleValues.map((value) => `${value} italic`), ...possibleValues];\n    const lowerCaseFamily = family.toLowerCase();\n    const tokens = [...lowerCaseFamily.split(\" \"), ...lowerCaseFamily.split(\"-\"), ...lowerCaseFamily.split(\"_\")];\n    const foundToken = possibleValuesWithItalics.find(\n      (value) => tokens.includes(value) || tokens.includes(value.replace(/\\s+/gu, \"\"))\n    );\n    if (foundToken) return foundToken.replace(/^\\w|\\s\\w/gu, (char) => char.toUpperCase());\n    return \"Regular\";\n  }\n  createFontFamily(family) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily) return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: []\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  getFontBySelector(selector) {\n    if (!selector.startsWith(customFontSelectorPrefix)) return void 0;\n    const remainingSelector = selector.slice(customFontSelectorPrefix.length);\n    if (!remainingSelector) return void 0;\n    const matchingFonts = [];\n    for (const [familyName, fontFamily] of this.byFamilyName) {\n      if (remainingSelector.startsWith(familyName)) {\n        const exactMatches = fontFamily.fonts.filter((font) => font.selector === selector);\n        matchingFonts.push(...exactMatches);\n      }\n    }\n    if (matchingFonts.length > 0) {\n      if (matchingFonts.length > 1) {\n        const woff2Font = matchingFonts.find((font) => {\n          var _a;\n          return (_a = font.file) == null ? void 0 : _a.endsWith(\".woff2\");\n        });\n        if (woff2Font) return woff2Font;\n      }\n      return matchingFonts[0];\n    }\n    return void 0;\n  }\n  getFontFamilyByName(family) {\n    const foundFontFamily = this.byFamilyName.get(family);\n    if (!foundFontFamily) return null;\n    return foundFontFamily;\n  }\n};\nfunction fontToVariantWithMetadata(font) {\n  if (!font.weight || !font.style) return void 0;\n  return {\n    weight: font.weight,\n    style: font.style,\n    isVariable: isVariableFont(font),\n    selector: font.selector\n  };\n}\nfunction updateFontRelationships(fontFamily) {\n  var _a, _b, _c, _d, _e;\n  const availableVariants = fontFamily.fonts.map((font) => fontToVariantWithMetadata(font)).filter((font) => font !== void 0);\n  for (const font of fontFamily.fonts) {\n    const variant = fontToVariantWithMetadata(font);\n    if (!variant) continue;\n    const relatedVariants = getRelatedFontVariants(variant, availableVariants);\n    font.selectorVariable = (_a = relatedVariants.variantVariable) == null ? void 0 : _a.selector;\n    font.selectorVariableItalic = (_b = relatedVariants.variantVariableItalic) == null ? void 0 : _b.selector;\n    font.selectorBold = (_c = relatedVariants.variantBold) == null ? void 0 : _c.selector;\n    font.selectorBoldItalic = (_d = relatedVariants.variantBoldItalic) == null ? void 0 : _d.selector;\n    font.selectorItalic = (_e = relatedVariants.variantItalic) == null ? void 0 : _e.selector;\n  }\n}\nfunction getAssetOwnerType(asset) {\n  return asset.ownerType === \"team\" ? \"team\" : \"project\";\n}\n\n// ../../library/src/render/fonts/loadOpenType.ts\nasync function loadFontsWithOpenType(source) {\n  switch (source) {\n    case \"google\": {\n      const supportedFonts = await import(\"./google-2KFYDWCN.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    case \"fontshare\": {\n      const supportedFonts = await import(\"./fontshare-EOIRPPWV.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\nasync function loadFontToOpenTypeFeatures(source) {\n  switch (source) {\n    case \"google\": {\n      const features = await import(\"./google-HSMCYMMG.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"fontshare\": {\n      const features = await import(\"./fontshare-Y53BJZLK.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"framer\": {\n      const features = await import(\"./framer-font-TNC5DMGA.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\n\n// ../../library/src/render/fonts/parseFontshareCategories.ts\nvar knownFontshareCategories = [\"display\", \"sans\", \"serif\", \"slab\", \"handwritten\", \"script\"];\nfunction parseFontshareCategories(categoriesField) {\n  return categoriesField.split(\",\").map((category) => category.trim().toLowerCase()).filter(isKnownFontshareCategory);\n}\nfunction isKnownFontshareCategory(category) {\n  return knownFontshareCategories.includes(category);\n}\n\n// ../../library/src/render/fonts/FontshareSource.ts\nvar fontsharePrefix = \"FS;\";\nvar weightNameToNumber = {\n  thin: 100,\n  hairline: 100,\n  // Alternative name for \"thin\".\n  extralight: 200,\n  light: 300,\n  regular: 400,\n  medium: 500,\n  semibold: 600,\n  bold: 700,\n  extrabold: 800,\n  ultra: 800,\n  // Alternative name for \"extrabold\".\n  black: 900,\n  heavy: 900\n  // Alternative name for \"black\".\n};\nvar weightNames = /* @__PURE__ */ Object.keys(weightNameToNumber);\nvar allowedVariantsRegex = /* @__PURE__ */ (() => new RegExp(`^(?:${[...weightNames, \"italic\", \"variable\"].join(\"|\")})`, \"u\"))();\nvar FontshareSource = class _FontshareSource {\n  constructor() {\n    __publicField(this, \"name\", \"fontshare\" /* Fontshare */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  /**\n   * Parses variant a string into a weight number and style, defaulting to a\n   * weight of `400` and/or a style of `\"normal\"` depending on what isn't\n   * present in the variant string.\n   *\n   * E.g:\n   *   - `\"Bold\"` becomes `{ weight: 700, style: \"normal\" }`\n   *   - `\"Bold Italic\"` becomes `{ weight: 700, style: \"italic\" }`\n   *   - `\"Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   *   - `\"Variable Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   */\n  static parseVariant(variant) {\n    const variantSplit = variant.toLowerCase().split(\" \");\n    const weightName = weightNames.find((weightName2) => {\n      return variantSplit.includes(weightName2);\n    });\n    const styleName = variant.toLowerCase().includes(\"italic\") ? \"italic\" : \"normal\";\n    const weight = weightName && weightNameToNumber[weightName] || 400;\n    const style = styleName === \"italic\" ? styleName : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(fontsharePrefix)) return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2) return null;\n    const [family, variant] = tokens;\n    if (!family || !variant) return null;\n    return {\n      name: family.replace(fontsharePrefix, \"\"),\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  static createSelector(family, variant) {\n    return `${fontsharePrefix}${family}-${variant.toLowerCase()}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/fontShare.ts\n   */\n  static createMetadataSelector(family) {\n    return `${fontsharePrefix}${family}`;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  async importFonts(fontshareFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"fontshare\" /* Fontshare */);\n    const fonts = [];\n    for (const fontshareFont of fontshareFonts) {\n      const fontStyles = fontshareFont.font_styles.filter((fontStyle) => {\n        const variant = fontStyle.name.toLowerCase();\n        const allowedVariantMatch = allowedVariantsRegex.exec(variant);\n        if (!allowedVariantMatch || variant.split(\" \").includes(\"wide\")) {\n          return false;\n        }\n        return true;\n      });\n      const fontVariants = fontStyles.map((fontStyle) => {\n        const variantInfo = _FontshareSource.parseVariant(fontStyle.name);\n        return {\n          ...variantInfo,\n          selector: _FontshareSource.createSelector(fontshareFont.name, fontStyle.name),\n          isVariable: fontStyle.is_variable,\n          fontshareVariantName: fontStyle.name,\n          file: fontStyle.file\n        };\n      });\n      const key7 = _FontshareSource.createMetadataSelector(fontshareFont.name);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      const familyName = fontshareFont.name;\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = { name: familyName, fonts: [], source: this.name };\n        this.addFontFamily(fontFamily);\n      }\n      const fontMetadataSelector = _FontshareSource.createMetadataSelector(fontshareFont.name);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const fontVariant of fontVariants) {\n        const { variantBold, variantBoldItalic, variantItalic, variantVariable, variantVariableItalic } = getRelatedFontVariants(fontVariant, fontVariants);\n        const font = {\n          family: fontFamily,\n          variant: fontVariant.fontshareVariantName.toLowerCase(),\n          selector: fontVariant.selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight: fontVariant.weight,\n          style: fontVariant.style,\n          file: fontVariant.file,\n          category: mapToKnownCategory(fontshareFont.category),\n          hasOpenTypeFeatures,\n          variationAxes: fontVariant.isVariable ? variationAxes : void 0\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"fontshare\" /* Fontshare */);\n    const selector = _FontshareSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory(categoryString) {\n  const categoryMapping = {\n    serif: \"serif\",\n    sans: \"sans-serif\",\n    slab: \"slab\",\n    display: \"display\",\n    // As of Nov 2023, these two look similar enough \u2013 so we can map them into the same category.\n    handwritten: \"handwriting\",\n    script: \"handwriting\"\n  };\n  const category = parseFontshareCategories(categoryString)[0];\n  return category && categoryMapping[category];\n}\n\n// ../../library/src/render/fonts/FramerFontSource.ts\nvar framerInterFontPrefix = \"Inter\";\nvar framerFontPrefix = \"FR;\";\nvar weightNameToNumber2 = {\n  Thin: 100,\n  ExtraLight: 200,\n  Light: 300,\n  \"\": 400,\n  // Regular weights have a selector like \"Inter\" or \"Inter-Italic\", with no mention of weight.\n  Medium: 500,\n  SemiBold: 600,\n  Bold: 700,\n  ExtraBold: 800,\n  Black: 900\n};\nvar FramerFontSource = class _FramerFontSource {\n  constructor() {\n    __publicField(this, \"name\", \"framer\" /* Framer */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  addFontFamily(familyName) {\n    const fontFamily = { name: familyName, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  static getDraftFontPropertiesBySelector(selector) {\n    if (!selector.startsWith(framerFontPrefix) && !selector.startsWith(framerInterFontPrefix)) return null;\n    const tokens = selector.split(\"-\");\n    const [family, weightAndStyleInfo = \"\"] = tokens;\n    if (!family) return null;\n    const style = weightAndStyleInfo.includes(\"Italic\") ? \"italic\" : \"normal\";\n    const weightName = weightAndStyleInfo.replace(\"Italic\", \"\");\n    const weight = weightName && weightNameToNumber2[weightName] || 400;\n    return {\n      family,\n      style,\n      weight,\n      source: \"framer\" /* Framer */,\n      variant: void 0,\n      category: \"sans-serif\"\n    };\n  }\n  static createMetadataSelector(family) {\n    return `${framerFontPrefix}${family}`;\n  }\n  importFonts(framerFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fonts = [];\n    framerFonts.forEach((framerFont) => {\n      const { familyName, ...rest } = framerFont;\n      const key7 = _FramerFontSource.createMetadataSelector(framerFont.familyName);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(familyName);\n      }\n      const isVariable = framerFont.selector === framerFont.selectorVariable || framerFont.selector === framerFont.selectorVariableItalic;\n      const font = {\n        ...rest,\n        family: fontFamily,\n        variationAxes: isVariable ? variationAxes : void 0\n      };\n      fontFamily.fonts.push(font);\n      fonts.push(font);\n    });\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"framer\" /* Framer */);\n    const selector = _FramerFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\n\n// ../../library/src/render/fonts/GoogleFontSource.ts\nvar googleFontSelectorPrefix = \"GF;\";\nvar GoogleFontSource = class _GoogleFontSource {\n  constructor() {\n    __publicField(this, \"name\", \"google\" /* Google */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  static parseVariant(variant) {\n    if (variant === \"regular\") return { style: \"normal\", weight: 400 };\n    const match = /(\\d*)(normal|italic)?/u.exec(variant);\n    if (!match) return {};\n    const weight = parseInt(match[1] || \"400\");\n    const style = match[2] === \"italic\" ? \"italic\" : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(googleFontSelectorPrefix)) return null;\n    const isVariable = selector.includes(\"-variable-\");\n    const tokens = isVariable ? selector.split(\"-variable-\") : selector.split(\"-\");\n    if (tokens.length !== 2) return null;\n    const [family, variant] = tokens;\n    if (!family || !variant) return null;\n    return { name: family.replace(googleFontSelectorPrefix, \"\"), variant, source: this.name, isVariable };\n  }\n  static createSelector(family, variant, isVariableFont2) {\n    return `${googleFontSelectorPrefix}${family}-${isVariableFont2 ? \"variable-\" : \"\"}${variant}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/googleFonts.ts\n   */\n  static createMetadataSelector(family) {\n    return `${googleFontSelectorPrefix}${family}`;\n  }\n  addFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  async importFonts(webFonts, webFontsWithAxes, fontsToVariationAxes) {\n    var _a;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"google\" /* Google */);\n    const fonts = [];\n    const webFontsMap = mapBy(webFonts, (webFont) => webFont.family);\n    const webFontsWithAxesMap = mapBy(webFontsWithAxes, (webFont) => webFont.family);\n    for (const webFontName in webFontsMap) {\n      const webFont = webFontsMap[webFontName];\n      if (!webFont) continue;\n      let fontFamily = this.getFontFamilyByName(webFont.family);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(webFont.family);\n      }\n      const rawStaticVariants = webFont.variants;\n      const staticVariants = rawStaticVariants.map((variantName) => {\n        const parsedVariant = _GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: _GoogleFontSource.createSelector(webFontName, variantName, false),\n          isVariable: false,\n          file: webFont.files[variantName]\n        };\n      });\n      const variableFont = webFontsWithAxesMap[webFontName];\n      const variableVariants = (variableFont == null ? void 0 : variableFont.axes) ? variableFont.variants.map((variantName) => {\n        const parsedVariant = _GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: _GoogleFontSource.createSelector(webFontName, variantName, true),\n          isVariable: true,\n          file: variableFont.files[variantName]\n        };\n      }) : [];\n      const key7 = _GoogleFontSource.createMetadataSelector(webFont.family);\n      const variationAxes = fontsToVariationAxes == null ? void 0 : fontsToVariationAxes[key7];\n      const allVariants = [...staticVariants, ...variableVariants];\n      const allSuccessfullyParsedVariants = allVariants.filter(isSuccessfullyParsedFontVariant);\n      const fontMetadataSelector = _GoogleFontSource.createMetadataSelector(webFontName);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const variant of allVariants) {\n        const { weight, style, selector, googleFontsVariantName } = variant;\n        const linkedVariants = isSuccessfullyParsedFontVariant(variant) ? getRelatedFontVariants(variant, allSuccessfullyParsedVariants) : void 0;\n        const { variantBold, variantItalic, variantBoldItalic, variantVariable, variantVariableItalic } = linkedVariants ?? {};\n        const font = {\n          family: fontFamily,\n          variant: googleFontsVariantName,\n          selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight,\n          style,\n          category: mapToKnownCategory2(webFont.category),\n          file: (_a = variant.file) == null ? void 0 : _a.replace(\"http://\", \"https://\"),\n          variationAxes: variant.isVariable ? variationAxes : void 0,\n          hasOpenTypeFeatures\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"google\" /* Google */);\n    const selector = _GoogleFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory2(category) {\n  const categoryMapping = {\n    serif: \"serif\",\n    \"sans-serif\": \"sans-serif\",\n    display: \"display\",\n    handwriting: \"handwriting\",\n    monospace: \"monospace\"\n  };\n  if (!category) return void 0;\n  return categoryMapping[category];\n}\nfunction mapBy(array, keyFn) {\n  return array.reduce(\n    (acc, item) => {\n      acc[keyFn(item)] = item;\n      return acc;\n    },\n    {}\n  );\n}\n\n// ../../library/src/render/fonts/loadFont.ts\nvar import_fontfaceobserver = __toESM(require_fontfaceobserver_standalone(), 1);\nvar FONT_LOADING_TIMEOUT = 5e3;\nvar MAX_RETRIES = 3;\nvar FontLoadingError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"FontLoadingError\";\n  }\n};\nvar fontRequests = /* @__PURE__ */ new Map();\nvar fontReadyPromises = /* @__PURE__ */ new Map();\nvar loadFont = (data2, doc) => loadFontWithRetries(data2, doc);\nasync function loadFontWithRetries(data2, doc, attempt = 0) {\n  const { family, url, stretch, unicodeRange, isVariableFont: isVariableFont2 } = data2;\n  const weight = isVariableFont2 ? data2.weight : data2.weight || 500;\n  const style = data2.style || \"normal\";\n  const requestId = `${family}-${style}-${weight}-${url}`;\n  if (!fontRequests.has(requestId) || attempt > 0) {\n    const fontFace = new FontFace(family, `url(${url})`, {\n      weight: isString(weight) ? weight : weight == null ? void 0 : weight.toString(),\n      style,\n      stretch,\n      unicodeRange\n    });\n    const readyPromise = fontFace.load().then(() => {\n      doc.fonts.add(fontFace);\n      return isFontReady(family, style, weight);\n    }).catch((e) => {\n      if (e.name !== \"NetworkError\") {\n        throw e;\n      }\n      if (attempt < MAX_RETRIES) {\n        return loadFontWithRetries(data2, doc, attempt + 1);\n      }\n      throw new FontLoadingError(\n        `Font loading failed after ${attempt} retries due to network error: ${JSON.stringify({\n          family,\n          style,\n          weight,\n          url,\n          stretch,\n          unicodeRange\n        })}`\n      );\n    });\n    fontRequests.set(requestId, readyPromise);\n  }\n  await fontRequests.get(requestId);\n}\nasync function isFontReady(family, style, weight) {\n  const readyPromiseId = `${family}-${style}-${weight}`;\n  if (!fontReadyPromises.has(readyPromiseId)) {\n    const observer = new import_fontfaceobserver.default(family, {\n      style,\n      weight\n    });\n    const readyPromise = observer.load(null, FONT_LOADING_TIMEOUT);\n    fontReadyPromises.set(readyPromiseId, readyPromise);\n  }\n  try {\n    await fontReadyPromises.get(readyPromiseId);\n  } catch (e) {\n    throw new FontLoadingError(\n      `Failed to check if font is ready (${FONT_LOADING_TIMEOUT}ms timeout exceeded): ${JSON.stringify({\n        family,\n        style,\n        weight\n      })}`\n    );\n  }\n}\n\n// ../../library/src/render/fonts/static/variable-fonts/framer.json\nvar framer_default = { \"FR;Inter\": [{ tag: \"opsz\", minValue: 14, maxValue: 32, defaultValue: 14, name: \"Optical size\" }, { tag: \"wght\", minValue: 100, maxValue: 900, defaultValue: 400, name: \"Weight\" }] };\n\n// ../../library/src/render/fonts/loadVariationAxes.ts\nfunction loadVariationAxes(source) {\n  try {\n    if (source === \"framer\" /* Framer */) {\n      if (!isValidVariationAxesData(framer_default)) return void 0;\n      return framer_default;\n    } else {\n      const axes = (async () => {\n        switch (source) {\n          case \"google\" /* Google */: {\n            return (await import(\"./google-S367OFIE.mjs\")).default;\n          }\n          case \"fontshare\" /* Fontshare */: {\n            return (await import(\"./fontshare-2X4LZ75B.mjs\")).default;\n          }\n          default:\n            assertNever(source);\n        }\n      })();\n      if (!isValidVariationAxesData(axes)) return void 0;\n      return axes;\n    }\n  } catch (error) {\n    console.error(error);\n    return void 0;\n  }\n}\nfunction isValidVariationAxesData(data2) {\n  return isObject2(data2) && Object.values(data2).every(isValidVariationAxes);\n}\nfunction isVariationAxis2(data2) {\n  return isObject2(data2) && isString(data2.tag);\n}\nfunction isValidVariationAxes(data2) {\n  return Array.isArray(data2) && data2.every(isVariationAxis2);\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar FontStore = class {\n  constructor() {\n    /**\n     * Enabling the `FontStore` will make Text components automatically load\n     * their fonts on render. Otherwise font loading is the responsibility of\n     * the environment.\n     */\n    __publicField(this, \"enabled\", false);\n    __publicField(this, \"bySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"loadedSelectors\", /* @__PURE__ */ new Set());\n    __publicField(this, \"getGoogleFontsListPromise\");\n    __publicField(this, \"getFontshareFontsListPromise\");\n    __publicField(this, \"getBuiltInFontsListPromise\");\n    __publicField(this, \"customFontsImportPromise\", new Promise((resolve) => {\n      this.resolveCustomFontsImportPromise = resolve;\n    }));\n    __publicField(this, \"local\");\n    __publicField(this, \"google\");\n    __publicField(this, \"fontshare\");\n    __publicField(this, \"builtIn\");\n    __publicField(this, \"framer\");\n    __publicField(this, \"custom\");\n    this.local = new LocalFontSource();\n    this.google = new GoogleFontSource();\n    this.fontshare = new FontshareSource();\n    this.framer = new FramerFontSource();\n    this.custom = new CustomFontSource();\n    this.builtIn = new BuiltInFontSource();\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.importLocalFonts();\n  }\n  addFont(font) {\n    this.bySelector.set(font.selector, font);\n  }\n  getAvailableFonts() {\n    return Array.from(this.bySelector.values());\n  }\n  importLocalFonts() {\n    for (const font of this.local.importFonts()) {\n      this.addFont(font);\n      this.loadFont(font);\n    }\n  }\n  async importGoogleFonts() {\n    if (!this.getGoogleFontsListPromise) {\n      this.getGoogleFontsListPromise = Promise.resolve().then(async () => {\n        const { staticFonts, variableFonts } = await runtime.fetchGoogleFontsList();\n        const axesData = await loadVariationAxes(\"google\" /* Google */);\n        for (const font of await this.google.importFonts(staticFonts, variableFonts, axesData)) {\n          this.addFont(font);\n        }\n        return { staticFonts, variableFonts };\n      });\n    }\n    return this.getGoogleFontsListPromise;\n  }\n  async importFontshareFonts() {\n    if (!this.getFontshareFontsListPromise) {\n      this.getFontshareFontsListPromise = runtime.fetchFontshareFontsList();\n      const fontshareFonts = await this.getFontshareFontsListPromise;\n      const axesData = await loadVariationAxes(\"fontshare\" /* Fontshare */);\n      for (const font of await this.fontshare.importFonts(fontshareFonts, axesData)) {\n        this.addFont(font);\n      }\n    }\n    return this.getFontshareFontsListPromise;\n  }\n  async importBuiltInFonts() {\n    if (!this.getBuiltInFontsListPromise) {\n      this.getBuiltInFontsListPromise = runtime.fetchBuiltInFontsList();\n      const builtInFonts = await this.getBuiltInFontsListPromise;\n      for (const font of await this.builtIn.importFonts(builtInFonts)) {\n        this.addFont(font);\n      }\n    }\n    return this.getBuiltInFontsListPromise;\n  }\n  importFramerFonts(fonts) {\n    const axesData = loadVariationAxes(\"framer\" /* Framer */);\n    this.framer.importFonts(fonts, axesData).forEach((font) => {\n      this.addFont(font);\n    });\n  }\n  importCustomFonts(assets, enableFontImprovements) {\n    this.bySelector.forEach((_, key7) => {\n      if (key7.startsWith(customFontSelectorPrefix)) {\n        this.bySelector.delete(key7);\n      }\n    });\n    const importedFonts = this.custom.importFonts(assets, enableFontImprovements);\n    for (const font of importedFonts) {\n      this.addFont(font);\n    }\n    if (importedFonts.length > 0) {\n      this.resolveCustomFontsImportPromise();\n    }\n  }\n  /**\n   * Returns a promise that resolves when custom fonts have been imported\n   * @internal\n   */\n  getCustomFontsImportPromise() {\n    return this.customFontsImportPromise;\n  }\n  getFontFamily(info) {\n    const fontFamily = this[info.source].getFontFamilyByName(info.name);\n    return fontFamily;\n  }\n  getFontBySelector(selector) {\n    if (!selector) return void 0;\n    if (selector.startsWith(customFontSelectorPrefix)) {\n      return this.custom.getFontBySelector(selector);\n    }\n    return this.bySelector.get(selector);\n  }\n  // Function called by draft to get font properties for a selector, before the (google) font is available in the store\n  // It replaces a previous function that created Font instances and added them to the store\n  // on the fly while rendering drafts, which caused issues (overriding real google font info with fake instances with partial data).\n  // Ideally this should not happen, but that's a fix for another day\n  getDraftPropertiesBySelector(selector) {\n    const font = this.getFontBySelector(selector);\n    if (font) {\n      return {\n        style: font.style,\n        weight: font.weight,\n        variant: font.variant,\n        family: createFontFamilyName(font),\n        source: font.family.source,\n        category: font.category\n      };\n    }\n    const googleLocator = this.google.parseSelector(selector);\n    if (googleLocator) {\n      const fontVariant = GoogleFontSource.parseVariant(googleLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = googleLocator.isVariable ? createVariableFontFamilyName(googleLocator.name) : googleLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: googleLocator.variant,\n          family,\n          source: \"google\" /* Google */,\n          category: void 0\n        };\n      }\n    }\n    const fontshareLocator = this.fontshare.parseSelector(selector);\n    if (fontshareLocator) {\n      const fontVariant = FontshareSource.parseVariant(fontshareLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = fontshareLocator.isVariable ? createVariableFontFamilyName(fontshareLocator.name) : fontshareLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: fontshareLocator.variant,\n          family,\n          source: \"fontshare\" /* Fontshare */,\n          category: void 0\n        };\n      }\n    }\n    const builtInFontLocator = this.builtIn.parseSelector(selector);\n    if (builtInFontLocator) {\n      const fontVariant = BuiltInFontSource.parseVariant(builtInFontLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = builtInFontLocator.isVariable ? createVariableFontFamilyName(builtInFontLocator.name) : builtInFontLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: builtInFontLocator.variant,\n          family,\n          source: \"builtIn\" /* BuiltIn */,\n          category: void 0\n        };\n      }\n    }\n    const framerFontDraftProperties = FramerFontSource.getDraftFontPropertiesBySelector(selector);\n    if (framerFontDraftProperties) {\n      return framerFontDraftProperties;\n    }\n    return null;\n  }\n  isSelectorLoaded(selector) {\n    return this.loadedSelectors.has(selector);\n  }\n  /**\n   * Load a single font\n   * */\n  async loadFont(font) {\n    if (this.isSelectorLoaded(font.selector)) {\n      return 0 /* AlreadyLoaded */;\n    }\n    const source = font.family.source;\n    const fontIsVariable = isVariableFont(font);\n    switch (source) {\n      case \"local\" /* Local */:\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"framer\" /* Framer */:\n        if (!isTest()) {\n          await isFontReady(font.family.name, font.style, font.weight);\n        }\n        if (fontIsVariable) {\n          if (!font.file) {\n            return Promise.reject(`Unable to load font: ${font.selector}`);\n          }\n          await loadFont(\n            {\n              family: createFontFamilyName(font),\n              url: font.file,\n              weight: font.weight,\n              style: font.style,\n              isVariableFont: fontIsVariable\n            },\n            document\n          );\n        }\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"google\" /* Google */:\n      case \"fontshare\" /* Fontshare */:\n      case \"builtIn\" /* BuiltIn */:\n      case \"custom\" /* Custom */:\n        if (!font.file) {\n          return Promise.reject(`Unable to load font: ${font.selector}`);\n        }\n        await loadFont(\n          {\n            family: createFontFamilyName(font),\n            url: font.file,\n            weight: font.weight,\n            style: font.style,\n            isVariableFont: fontIsVariable\n          },\n          document\n        );\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      default:\n        assertNever(source);\n    }\n  }\n  async loadFontsFromSelectors(selectors) {\n    if (!this.enabled) return [];\n    const importPromises = [];\n    const shouldImportFontshareFonts = selectors.some((selector) => selector.startsWith(fontsharePrefix));\n    if (shouldImportFontshareFonts) {\n      importPromises.push(\n        this.importFontshareFonts().catch((error) => {\n          warnOnce2(\"Failed to load Fontshare fonts:\", error);\n        })\n      );\n    }\n    const shouldImportGoogleFonts = selectors.some((selector) => selector.startsWith(googleFontSelectorPrefix));\n    if (shouldImportGoogleFonts) {\n      importPromises.push(\n        this.importGoogleFonts().catch((error) => {\n          warnOnce2(\"Failed to load Google fonts:\", error);\n        })\n      );\n    }\n    const shouldImportBuiltInFonts = selectors.some((selector) => selector.startsWith(builtInFontSelectorPrefix));\n    if (shouldImportBuiltInFonts) {\n      importPromises.push(\n        this.importBuiltInFonts().catch((error) => {\n          warnOnce2(\"Failed to load built-in fonts:\", error);\n        })\n      );\n    }\n    const shouldImportCustomFonts = selectors.some((selector) => selector.startsWith(customFontSelectorPrefix));\n    if (shouldImportCustomFonts) {\n      importPromises.push(\n        this.customFontsImportPromise.catch((error) => {\n          warnOnce2(\"Failed to load custom fonts:\", error);\n        })\n      );\n    }\n    if (importPromises.length > 0) {\n      await Promise.all(importPromises);\n    }\n    const fonts = selectors.map((s) => this.bySelector.get(s)).filter((f) => !!f);\n    return Promise.allSettled(fonts.map((f) => this.loadFont(f)));\n  }\n  async loadFonts(fontSelectors) {\n    const results = await this.loadFontsFromSelectors(fontSelectors);\n    const newlyLoadedFontCount = results.filter(\n      (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n    ).length;\n    return { newlyLoadedFontCount };\n  }\n  // Deprecated methods that are kept for backwards compatibility with any compiled code that might still be using them\n  /**\n   * @deprecated This method\u2019s API is confusing as 1) it works for all fonts,\n   * not just missing ones, 2) it supports both async/await and a callback,\n   * but the callback is called only if *all* fonts have been loaded. Use\n   * `loadFonts` instead.\n   */\n  async loadMissingFonts(fontSelectors, fontsLoadedCallback) {\n    const selectors = fontSelectors.filter((selector) => {\n      return !fontStore.isSelectorLoaded(selector);\n    });\n    if (selectors.length === 0) return;\n    await fontStore.loadWebFontsFromSelectors(selectors);\n    const isEachFontLoaded = selectors.every((selector) => {\n      return fontStore.isSelectorLoaded(selector);\n    });\n    if (isEachFontLoaded && fontsLoadedCallback) fontsLoadedCallback();\n  }\n  /**\n   * @deprecated This method is misleading as it works with all fonts, not\n   * just web fonts. Use `loadFonts` instead. (In Framer, \u201Cweb fonts\u201D has a\n   * specific meaning: it refers to Google/Fontshare fonts and exludes custom\n   * and local fonts. See e.g. `WebFontStore` and the \u201CWeb\u201D/\u201CCustom\u201D toggle in\n   * the font picker in the UI. More context: https://github.com/framer/FramerStudio/pull/15778#discussion_r1395120760)\n   */\n  async loadWebFontsFromSelectors(selectors) {\n    return this.loadFontsFromSelectors(selectors);\n  }\n  // defaultFont doesn\u2019t seem to be used anywhere in our code (except tests),\n  // but keeping it for backwards compatibility with any compiled code.\n  /** @deprecated This will be removed in the future. Don\u2019t use it. */\n  get defaultFont() {\n    const defaultFont = this.getFontBySelector(\"Inter\");\n    assert(defaultFont, \"Can\\u2019t find Inter font\");\n    return defaultFont;\n  }\n};\nvar fontStore = /* @__PURE__ */ new FontStore();\n\n// ../../library/src/render/presentation/CustomProperties.tsx\nimport { jsx as jsx69 } from \"react/jsx-runtime\";\nfunction CustomProperties({\n  children,\n  customProperties\n}) {\n  return /* @__PURE__ */ jsx69(\"div\", { style: customProperties, children });\n}\n\n// ../../library/src/render/presentation/DeprecatedComponentContainer.tsx\nimport React80 from \"react\";\nimport { jsx as jsx70 } from \"react/jsx-runtime\";\nvar DeprecatedComponentContainer = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"state\", {});\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n    }\n    componentDidCatch(error, info) {\n      var _a2;\n      let stack = (_a2 = info.componentStack) == null ? void 0 : _a2.split(\"\\n\").filter((line) => line.length !== 0);\n      let currentIndex = 0;\n      if (stack) {\n        for (const line of stack) {\n          if (line.startsWith(`    in ${this.constructor.name}`)) {\n            break;\n          }\n          currentIndex++;\n        }\n        stack = stack.slice(0, currentIndex);\n      }\n      this.setState({\n        lastError: {\n          children: this.props.children,\n          name: error.name,\n          message: error.message,\n          componentStack: stack\n        }\n      });\n    }\n    renderErrorPlaceholder(error) {\n      const { RenderPlaceholder } = runtime;\n      return /* @__PURE__ */ jsx70(FrameWithMotion, { ...this.props, background: null, children: /* @__PURE__ */ jsx70(RenderPlaceholder, { error }) });\n    }\n    render() {\n      var _a2, _b;\n      countNodeRender();\n      let { children } = this.props;\n      const { componentIdentifier } = this.props;\n      const { lastError: error } = this.state;\n      const noChildren = !children || Array.isArray(children) && children.filter((c) => c).length === 0;\n      if (noChildren) {\n        const errorComponent = runtime.componentLoader.errorForIdentifier(componentIdentifier);\n        if (errorComponent) {\n          const title = `Error in ${errorComponent.file}`;\n          const message = errorComponent.error;\n          return this.renderErrorPlaceholder({ title, message });\n        }\n      }\n      if (error && error.children === children) {\n        const component = runtime.componentLoader.componentForIdentifier(componentIdentifier);\n        const file = component ? component.file : \"???\";\n        const title = `Error in ${file}`;\n        const message = error.message;\n        return this.renderErrorPlaceholder({ title, message });\n      }\n      ;\n      (_b = (_a2 = asRecord(safeWindow))[\"__checkComponentBudget__\"]) == null ? void 0 : _b.call(_a2);\n      let frameProps = this.props;\n      if (RenderTarget.current() !== RenderTarget.canvas) {\n        const {\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          opacity: _opacity,\n          visible,\n          _constraints,\n          _initialStyle,\n          name,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft,\n          // Remove the children and the componentIdentifier from the props passed into the component\n          componentIdentifier: originalComponentIdentifier,\n          children: originalChildren,\n          style,\n          duplicatedFrom,\n          widthType,\n          heightType,\n          ...childProps\n        } = frameProps;\n        children = React80.Children.map(originalChildren, (child) => {\n          if (!isReactChild(child) || !isReactElement(child)) {\n            return child;\n          }\n          if (!isPageOrScroll(originalComponentIdentifier)) {\n            return /* @__PURE__ */ jsx70(LayoutGroup, { inherit: false, id: this.props.__layoutId, children: /* @__PURE__ */ jsx70(AutomaticLayoutIds, { enabled: false, children: React80.cloneElement(child, childProps) }) });\n          }\n          return React80.cloneElement(child, childProps);\n        });\n        frameProps = {\n          style,\n          _constraints,\n          _initialStyle,\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          visible,\n          name,\n          duplicatedFrom,\n          id: frameProps.id,\n          layoutId: this.props.__layoutId,\n          widthType,\n          heightType,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft\n        };\n      }\n      return (\n        /* The background should come before the frameProps. It looks like there never should be a background in frameProps,\n         * but published design components can contain an old version of the presentation tree that expects the background\n         * that is passed to be rendered here\n         * See the stackBackgroundTest.tsx integration test for an example of such a case\n         */\n        /* @__PURE__ */ jsx70(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx70(\n          FrameWithMotion,\n          {\n            \"data-framer-component-container\": true,\n            background: null,\n            overflow: \"visible\",\n            ref: this.setElement,\n            ...frameProps,\n            children\n          }\n        ) })\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultComponentContainerProps\", {\n    style: {},\n    visible: true,\n    componentIdentifier: \"\"\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultComponentContainerProps\n  }), __publicField(_a, \"contextType\", ComponentContainerContext), _a;\n})();\nfunction isPageOrScroll(identifier) {\n  if (!identifier) return false;\n  if (identifier === \"framer/Page\") return true;\n  if (identifier === \"framer/Scroll\") return true;\n  return false;\n}\n\n// ../../library/src/render/presentation/Forms/FormPlainTextInput.tsx\nimport { forwardRef as forwardRef9, startTransition as startTransition13, useCallback as useCallback20, useState as useState9 } from \"react\";\nimport { jsx as jsx71 } from \"react/jsx-runtime\";\nvar passwordManagerIgnoreDataProps = {\n  // 1Password\n  \"data-1p-ignore\": true,\n  // LastPass\n  \"data-lpignore\": true,\n  // Dashlane\n  // https://support.dashlane.com/hc/en-us/articles/4420122792594-Optimize-your-web-forms-for-Dashlane-Autofill\n  \"data-form-type\": \"other\",\n  // autocomplete=\"off\" is a generic property that disables autofilling. It\n  // is not always respected by some browsers or password managers.\n  autocomplete: \"off\"\n};\nvar PlainTextInput = /* @__PURE__ */ forwardRef9(function FormPlainTextInput(props, ref) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    max,\n    min,\n    placeholder,\n    required,\n    step: step2,\n    style,\n    type,\n    maxLength,\n    // We use a defaultValue instead of a value so that the input remains\n    // uncontrolled by React. This is important because we want the user\n    // to be able to provide an initial value in the property panel, and for\n    // the value to be editable by the user in the preview.\n    defaultValue,\n    autofillEnabled,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    onValid,\n    ...rest\n  } = props;\n  const [hasValue, setHasValue] = useState9(!!defaultValue);\n  const [prevDefaultValue, setPrevDefaultValue] = useState9();\n  if (defaultValue !== prevDefaultValue) {\n    setHasValue(!!defaultValue);\n    setPrevDefaultValue(defaultValue);\n  }\n  const handleChange = useCallback20(\n    async (e) => {\n      await yieldToMain({ continueAfter: \"paint\" });\n      const newValue = e.target.value;\n      onChange == null ? void 0 : onChange(e);\n      startTransition13(() => setHasValue(!!newValue));\n    },\n    [onChange]\n  );\n  const eventHandlers = useCustomValidity(onValid, onInvalid, handleChange, onBlur, onFocus);\n  if (type === \"hidden\") {\n    return /* @__PURE__ */ jsx71(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  const dataProps = autofillEnabled === false ? passwordManagerIgnoreDataProps : void 0;\n  return /* @__PURE__ */ jsx71(\n    motion.div,\n    {\n      ref,\n      style,\n      className: cx(textInputWrapperClassName, inputWrapperClassName, className2),\n      ...rest,\n      children: type === \"textarea\" ? /* @__PURE__ */ jsx71(\n        motion.textarea,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: inputClassName,\n          defaultValue,\n          maxLength\n        },\n        defaultValue\n      ) : /* @__PURE__ */ jsx71(\n        motion.input,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          type,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: cx(inputClassName, !hasValue && emptyValueClassName),\n          defaultValue,\n          min,\n          max,\n          step: step2,\n          maxLength\n        },\n        defaultValue\n      )\n    }\n  );\n});\nvar iconSize2 = 16;\nvar textInputWrapperClassName = \"framer-form-text-input\";\nvar defaultTextareaResizerIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\"><path d=\"m1.5 8 7-7M9 5.5l-3 3\" stroke=\"%23999\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path></svg>`;\nvar defaultDateIconMaskImage = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"rgb(153, 153, 153)\" d=\"M3 5a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2H3Z\" opacity=\".3\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M3.25 5.25a2 2 0 0 1 2-2h5.5a2 2 0 0 1 2 2v5.5a2 2 0 0 1-2 2h-5.5a2 2 0 0 1-2-2ZM3 6.75h9.5\"/></svg>';\nvar defaultTimeIconMaskImage = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M2.5 8a5.5 5.5 0 1 1 11 0 5.5 5.5 0 1 1-11 0Z\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M7.75 8.25v-3m0 3h2\"/></svg>';\nvar styles = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${inputWrapperClassName}`, {\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::placeholder`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */)\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"], .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]`,\n    {\n      \"-webkit-appearance\": \"none\",\n      appearance: \"none\"\n    }\n  ),\n  // iOS only fix for centered date & time inputs: https://github.com/tailwindlabs/tailwindcss-forms/pull/144\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-date-and-time-value`, {\n    textAlign: \"start\"\n  }),\n  css(`.${textInputWrapperClassName} textarea`, {\n    display: \"flex\",\n    resize: css.variable(\"--framer-textarea-resize\" /* Resize */),\n    overflowY: \"auto\",\n    minHeight: \"inherit\",\n    maxHeight: \"inherit\",\n    whiteSpace: \"break-spaces\"\n  }),\n  // This targets the resize handle in WebKit browsers. Unfortunately, it is not\n  // possible in CSS to target the resize handle in Firefox, so FF will always\n  // show the native resize handle.\n  css(`.${textInputWrapperClassName} textarea::-webkit-resizer`, {\n    background: `no-repeat ${encodeSVGForCSS(defaultTextareaResizerIcon)}`\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar`, {\n    cursor: \"pointer\",\n    background: \"transparent\"\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-thumb:window-inactive`, {\n    opacity: 0\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-corner`, {\n    background: \"none\",\n    backgroundColor: \"transparent\",\n    outline: \"none\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-datetime-edit`, {\n    // Prevent browsers from improvising the date/time placeholder height.\n    height: css.variable(\"--framer-input-font-line-height\" /* FontLineHeight */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}.${emptyValueClassName}::-webkit-datetime-edit`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    // This tells safari to use the color for the shadow dom elements.\n    \"-webkit-text-fill-color\": css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    overflow: \"visible\"\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before, .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`,\n    {\n      ...inputIconCSSDeclaration,\n      paddingLeft: `${iconSpacing}px`,\n      maskPosition: `${iconSpacing}px center`,\n      backgroundPosition: `${iconSpacing}px center`\n    }\n  ),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, encodeSVGForCSS(defaultDateIconMaskImage)),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, encodeSVGForCSS(defaultTimeIconMaskImage)),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  // Hide the native date picker icon, but still align it with the custom icon, allowing user to click it to show the\n  // date/time picker.\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-calendar-picker-indicator`, {\n    opacity: 0,\n    position: \"absolute\",\n    right: 0,\n    top: 0,\n    bottom: 0,\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    width: `${iconSize2}px`,\n    // Makes sure the icon hit target covers the entire height of the input.\n    height: \"100%\"\n  }),\n  css(`.${textInputWrapperClassName}:focus-within, .${textInputWrapperClassName}.${forcedFocusClassName}`, {\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */),\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */)\n  }),\n  css(\n    `.${textInputWrapperClassName}:focus-within::after, .${textInputWrapperClassName}.${forcedFocusClassName}::after`,\n    {\n      borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n      borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n      borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n    }\n  )\n])();\nvar FormPlainTextInput2 = /* @__PURE__ */ withCSS(PlainTextInput, styles, \"framer-lib-form-plain-text-input\");\n\n// ../../library/src/render/presentation/Forms/FormBooleanInput.tsx\nimport React81 from \"react\";\nimport { jsx as jsx72 } from \"react/jsx-runtime\";\nvar className = \"framer-form-boolean-input\";\nvar BooleanInput = /* @__PURE__ */ React81.forwardRef(function FormPlainTextInput3(props, ref) {\n  const { inputName, type = \"checkbox\", defaultChecked, onValid, ...rest } = props;\n  const isCanvas = useIsOnFramerCanvas();\n  const attributes = isCanvas ? { checked: defaultChecked } : { defaultChecked };\n  const eventHandlers = useCustomValidity(onValid, props.onInvalid, props.onChange, props.onBlur, props.onFocus);\n  return /* @__PURE__ */ jsx72(\n    motion.input,\n    {\n      ...rest,\n      ...attributes,\n      ...eventHandlers,\n      readOnly: isCanvas,\n      ref,\n      type,\n      name: inputName,\n      className: cx(className, props.className)\n    }\n  );\n});\nvar defaultCheckedIcon = 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 4 8 L 6.5 10.5 L 11.5 5.5\" fill=\"transparent\" stroke-width=\"2\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>';\nvar borderRadius = `var(${\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */}) var(${\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */}) var(${\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */}) var(${\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */})`;\nvar styles2 = /* @__PURE__ */ (() => [\n  css(`.${className}`, {\n    \"-webkit-appearance\": \"none\",\n    // background-color: #fff; fixes a bug on iOS where the checkbox shows\n    // through the appearance: none;\n    alignItems: \"center\",\n    appearance: \"none\",\n    backgroundColor: \"#fff\",\n    background: \"--framer-input-background\" /* Background */,\n    borderRadius,\n    boxShadow: \"--framer-input-box-shadow\" /* BoxShadow */,\n    display: \"flex\",\n    justifyContent: \"center\",\n    margin: 0,\n    overflow: \"hidden\",\n    position: \"relative\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"box-shadow, background\"\n  }),\n  // The after element styles the border of the checkbox to conform to\n  // framer's inset border model.\n  css(`.${className}::after`, {\n    background: \"transparent\",\n    borderColor: css.variable(\"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderRadius,\n    borderStyle: \"--framer-input-border-style\" /* BorderStyle */,\n    borderWidth: inputBorderAllSides,\n    boxSizing: \"border-box\",\n    content: \"\",\n    display: \"block\",\n    inset: 0,\n    position: \"absolute\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"border-color, border-width, border-style\"\n  }),\n  // The before element is used to display the check mark icon. It is\n  // faded in when the input is checked.\n  css(`.${className}::before`, {\n    ...inputIconCSSDeclaration,\n    backgroundPosition: \"center\",\n    backgroundSize: \"contain\",\n    maskPosition: \"center\",\n    maskSize: \"contain\",\n    height: \"100%\",\n    opacity: 0,\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"opacity\",\n    width: \"100%\"\n  }),\n  // The BooleanInput component shows an svg check mark icon whenever an\n  // image url isn't provided. That's not an intuitive system for radios\n  // however, where we never want to show the default check mark.\n  css(`.${className}[type=\"checkbox\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultCheckedIcon}')`)\n  }),\n  css(`.${className}[type=\"radio\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */)\n  }),\n  css(`.${className}:checked, .${className}.${forcedCheckedClassName}`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    backgroundColor: css.variable(\"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:checked::before, .${className}.${forcedCheckedClassName}::before`, {\n    opacity: 1\n  }),\n  css(`.${className}:checked::after, .${className}.${forcedCheckedClassName}::after`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    borderColor: css.variable(\"--framer-input-boolean-checked-border-color\" /* BooleanCheckedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus, .${className}.${forcedFocusClassName}`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus-visible`, { outline: \"none\" }),\n  css(`.${className}:focus::after, .${className}.${forcedFocusClassName}::after`, {\n    // When not set, the styles when focused shouldn't clear the checked\n    // styles.\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus:checked`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus:checked::after`, {\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, \"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  })\n])();\nvar FormBooleanInput = /* @__PURE__ */ withCSS(BooleanInput, styles2, \"framer-lib-form-boolean-input\");\n\n// ../../library/src/render/presentation/Forms/FormSelect.tsx\nimport React82 from \"react\";\nimport { jsx as jsx73 } from \"react/jsx-runtime\";\nvar Select = /* @__PURE__ */ React82.forwardRef(function Select2(props, measureRef) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    required,\n    hidden,\n    defaultValue,\n    selectOptions,\n    style,\n    onValid,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    ...rest\n  } = props;\n  const eventHandlers = useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus);\n  const key7 = Array.isArray(defaultValue) ? defaultValue[0] : defaultValue;\n  if (hidden) {\n    return /* @__PURE__ */ jsx73(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  return /* @__PURE__ */ jsx73(\n    motion.div,\n    {\n      ref: measureRef,\n      style,\n      className: cx(inputWrapperClassName, selectWrapperClassName, className2),\n      ...rest,\n      children: /* @__PURE__ */ jsx73(\n        motion.select,\n        {\n          name: inputName,\n          autoFocus,\n          required,\n          className: inputClassName,\n          defaultValue,\n          ...eventHandlers,\n          children: selectOptions == null ? void 0 : selectOptions.map((option, index) => {\n            switch (option.type) {\n              case \"divider\":\n                return /* @__PURE__ */ jsx73(\"hr\", {}, index);\n              case \"option\":\n                return (\n                  // biome-ignore lint/suspicious/noArrayIndexKey: Values can be duplicated, so we could only use UUIDs here (but that isn't really better)\n                  /* @__PURE__ */ jsx73(\"option\", { value: option.value ?? option.title, disabled: option.disabled, children: option.title ?? option.value }, index)\n                );\n            }\n          })\n        },\n        key7\n      )\n    }\n  );\n});\nvar selectWrapperClassName = \"framer-form-select-wrapper\";\nvar selectArrowSize = 16;\nvar defaultSelectCaretMaskImage = /* @__PURE__ */ (() => `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${selectArrowSize}\" height=\"${selectArrowSize}\"><path d=\"M 3.5 6 L 8 10.5 L 12.5 6\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>`)();\nvar styles3 = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${selectWrapperClassName}`, {\n    // First we use the complete padding string, which may be any valid\n    // padding string (10px, 10px 10px, 10px 10px 10px, or 10px 10px\n    // 10px 10px), and use it to set only the right padding. This pushes\n    // the actual select away from the arrow by 1x.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    paddingLeft: 0,\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${selectWrapperClassName} select`, {\n    appearance: \"none\",\n    \"-webkit-appearance\": \"none\",\n    // Then we use the complete padding string again as the margin for\n    // the select. This moves the select 2x the padding right away from\n    // the arrow.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    // Overwrite the values inherited from .${inputClassName}. On a\n    // select, these values are on the wrapper.\n    background: \"transparent\"\n  }),\n  css(`.${selectWrapperClassName}::before`, {\n    ...inputIconCSSDeclaration,\n    paddingLeft: `${iconSpacing}px`,\n    backgroundPosition: `${iconSpacing}px center`,\n    maskPosition: `${iconSpacing}px center`,\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultSelectCaretMaskImage}')`)\n  }),\n  css(`.${selectWrapperClassName} select:required:invalid`, {\n    color: css.variable(\"--framer-input-invalid-text-color\" /* InvalidTextColor */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within, .${selectWrapperClassName}.${forcedFocusClassName}`, {\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within::after, .${selectWrapperClassName}.${forcedFocusClassName}::after`, {\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  // Enforcing a color on the native select options. On windows, browsers select options\n  // inherit some style properties like color but not others so they might end up in a weird\n  // state in which we can't read the options until we hover.\n  // These are ignored on mac\n  css(`.${selectWrapperClassName} select option`, {\n    color: \"#000\"\n  }),\n  css(`.${selectWrapperClassName} select option:disabled`, {\n    color: \"rgba(0, 0, 0, 0.4)\"\n  })\n])();\nvar FormSelect = /* @__PURE__ */ withCSS(Select, styles3, \"framer-lib-form-select\");\n\n// ../../library/src/render/presentation/Image.tsx\nimport React83, { useMemo as useMemo20, useState as useState10 } from \"react\";\nimport { jsx as jsx74, jsxs as jsxs16 } from \"react/jsx-runtime\";\nvar Image2 = /* @__PURE__ */ React83.forwardRef(function Image3(props, ref) {\n  const { background, children, alt, draggable, fitImageDimension, style: styleFromProps, ...rest } = props;\n  const style = { ...styleFromProps };\n  const intrinsicSize = useMemo20(() => getIntrinsicSizeForBackgroundImage(background), [background]);\n  const [fallbackIntrinsicSize, setFallbackIntrinsicSize] = useState10();\n  React83.useLayoutEffect(() => {\n    if (!(background == null ? void 0 : background.src)) return;\n    if (!fitImageDimension) return;\n    if (intrinsicSize) return;\n    const img = document.createElement(\"img\");\n    img.onload = () => {\n      if (img.naturalWidth && img.naturalHeight) {\n        setFallbackIntrinsicSize({ width: img.naturalWidth, height: img.naturalHeight });\n      }\n    };\n    img.src = background.src;\n  }, [background == null ? void 0 : background.src, fitImageDimension, intrinsicSize]);\n  const size = intrinsicSize ?? fallbackIntrinsicSize;\n  if (fitImageDimension && size) {\n    style[fitImageDimension] = \"auto\";\n    style.aspectRatio = size.width / size.height;\n  }\n  if (background) {\n    delete style.background;\n  }\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  return /* @__PURE__ */ jsxs16(MotionComponent, { ...rest, style, ref, children: [\n    background && /* @__PURE__ */ jsx74(BackgroundImageComponent, { image: background, alt, draggable }),\n    children\n  ] });\n});\n\n// ../../library/src/render/presentation/RichText.tsx\nimport {\n  Children as Children4,\n  Fragment as Fragment12,\n  cloneElement as cloneElement3,\n  forwardRef as forwardRef11,\n  isValidElement as isValidElement6,\n  useContext as useContext29,\n  useInsertionEffect as useInsertionEffect7,\n  useMemo as useMemo23,\n  useRef as useRef26\n} from \"react\";\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport * as React84 from \"react\";\nimport { useRef as useRef24 } from \"react\";\n\n// ../../library/src/render/utils/dom.ts\nvar frameFromElement = (element) => {\n  const frame2 = Rect.fromRect(element.getBoundingClientRect());\n  frame2.x = frame2.x + safeWindow.scrollX;\n  frame2.y = frame2.y + safeWindow.scrollY;\n  return frame2;\n};\nvar frameFromElements = (elements) => {\n  return Rect.merge(...elements.map(frameFromElement));\n};\nvar convertToPageFrame = (frame2, element) => {\n  const point = convertToPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar convertFromPageFrame = (frame2, element) => {\n  const point = convertFromPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar getPageFrame = (element) => {\n  const rect = element.getBoundingClientRect();\n  return {\n    x: rect.left + safeWindow.scrollX,\n    y: rect.top + safeWindow.scrollY,\n    width: rect.width,\n    height: rect.height\n  };\n};\nvar fromEventForPage = (event) => {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n};\nvar fromEventForClient = (event) => {\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n};\nvar convertToPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x + frame2.x,\n    y: point.y + frame2.y\n  };\n};\nvar convertFromPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x - frame2.x,\n    y: point.y - frame2.y\n  };\n};\nvar dispatchKeyDownEvent = (keyCode, options = {}) => {\n  const keyboardEvent = new KeyboardEvent(\"keydown\", {\n    bubbles: true,\n    keyCode,\n    ...options\n  });\n  const activeElement = document.activeElement;\n  if (activeElement) {\n    activeElement.dispatchEvent(keyboardEvent);\n  }\n};\nvar DOM = {\n  frameFromElement,\n  frameFromElements,\n  convertToPageFrame,\n  convertFromPageFrame,\n  getPageFrame,\n  fromEventForPage,\n  fromEventForClient,\n  convertToPagePoint,\n  convertFromPagePoint\n};\nvar parser;\nvar supportsNativeParseHTML = /* @__PURE__ */ (() => (\n  // Firefox has rare-random issues with the native parser: https://framer-team.slack.com/archives/C01B14R6E22/p1724159313153969\n  !isFirefox() && typeof Document !== \"undefined\" && typeof Document.parseHTMLUnsafe === \"function\"\n))();\nfunction domParser(html, type) {\n  if (supportsNativeParseHTML && !type) return Document.parseHTMLUnsafe(html);\n  parser ??= new DOMParser();\n  return parser.parseFromString(html, type ?? \"text/html\");\n}\nfunction escapeHTML(value) {\n  return value.replaceAll(\"&\", \"&amp;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\").replaceAll('\"', \"&quot;\").replaceAll(\"'\", \"&#39;\");\n}\n\n// ../../library/src/modules/replaceFramerPageLinks.ts\nvar regex = /(<([a-z]+)(?:\\s+(?!href[\\s=])[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*)(?:(\\s+href\\s*=)(?:'([^']*)'|\"([^\"]*)\"))?((?:\\s+[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*>)/gi;\nfunction replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {\n  return rawHTML.replace(\n    regex,\n    (original, pre1, tag, pre2, value1, value2, post) => {\n      var _a, _b;\n      if (tag.toLowerCase() !== \"a\") return original;\n      const href = value1 || value2;\n      const pageLink = parseFramerPageLink(href.replace(/&amp;/gu, \"&\"));\n      if (!pageLink || !pageLink.target) return original;\n      const targetRoute = getRoute(pageLink.target);\n      if (!isRoute(targetRoute) || !isRoute(currentRoute)) return original;\n      const targetPath = targetRoute.path;\n      const currentPath = currentRoute.path;\n      if (!targetPath || !currentPath) return original;\n      let attributes = ` ${\"data-framer-page-link-target\" /* Page */}=\"${pageLink.target}\"`;\n      const elementId = getRouteElementId(targetRoute, pageLink.element ?? void 0);\n      if (elementId) {\n        attributes += ` ${\"data-framer-page-link-element\" /* Element */}=\"${pageLink.element}\"`;\n      }\n      const link = linkFromFramerPageLink(href);\n      if (!link || isString(link)) return original;\n      if (linkMatchesRoute(currentRoute, link, implicitPathVariables)) {\n        attributes += ` ${\"data-framer-page-link-current\" /* Current */}`;\n      }\n      let relativePath = targetPath;\n      const pathVariables = Object.assign({}, implicitPathVariables, (_a = pageLink.collectionItem) == null ? void 0 : _a.pathVariables);\n      if (Object.keys(pathVariables).length > 0) {\n        relativePath = relativePath.replace(pathVariablesRegExp2, (_, key7) => \"\" + pathVariables[key7]);\n      }\n      if ((_b = pageLink.collectionItem) == null ? void 0 : _b.pathVariables) {\n        const params = new URLSearchParams(pageLink.collectionItem.pathVariables);\n        attributes += ` ${\"data-framer-page-link-path-variables\" /* PathVariables */}=\"${params}\"`;\n      }\n      relativePath = computeRelativePath(currentPath, relativePath);\n      return pre1 + pre2 + `\"${escapeHTML(relativePath + (elementId ? `#${elementId}` : \"\"))}\"` + attributes + post;\n    }\n  );\n}\n\n// ../../library/src/render/utils/isShallowEqualArray.ts\nfunction isShallowEqualArray(a, b) {\n  return a.length === b.length && a.every((v, i) => v === b[i]);\n}\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport { jsx as jsx75 } from \"react/jsx-runtime\";\nvar deprecatedRichTextPlaceholder = \"{{ text-placeholder }}\";\nvar richTextWrapperClassName = \"rich-text-wrapper\";\nvar DeprecatedRichText = /* @__PURE__ */ React84.forwardRef(\n  function Text(props, forwardedRef) {\n    const {\n      id,\n      name,\n      html,\n      htmlFromDesign,\n      text,\n      textFromDesign,\n      fonts = [],\n      width,\n      height,\n      left,\n      right,\n      top,\n      bottom,\n      center,\n      className: className2,\n      stylesPresetsClassName,\n      visible = true,\n      opacity,\n      rotation = 0,\n      verticalAlignment = \"top\",\n      isEditable = false,\n      environment: environment2 = RenderTarget.current,\n      withExternalLayout = false,\n      positionSticky,\n      positionStickyTop,\n      positionStickyRight,\n      positionStickyBottom,\n      positionStickyLeft,\n      __htmlStructure,\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      children: _children,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const layoutId = useLayoutId(props);\n    const fallbackLayoutRef = useRef24(null);\n    const layoutRef = forwardedRef ?? fallbackLayoutRef;\n    const { navigate, getRoute } = useRouter();\n    const currentRoute = useCurrentRoute();\n    useRoutePreloader(props.preload ?? []);\n    useMeasureLayout(props, layoutRef);\n    const inCodeComponent = React84.useContext(ComponentContainerContext);\n    const isOnCanvas = useIsOnFramerCanvas();\n    let textOrOverride = text;\n    const forwardedOverrideId = _forwardedOverrideId ?? id;\n    if (forwardedOverrideId && _forwardedOverrides) {\n      const override = _forwardedOverrides[forwardedOverrideId];\n      if (typeof override === \"string\") {\n        textOrOverride = override;\n      }\n    }\n    let innerHTML = \"\";\n    if (textOrOverride) {\n      const escapedText = escapeHTML(textOrOverride);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (html) {\n      innerHTML = html;\n    } else if (textFromDesign) {\n      const escapedText = escapeHTML(textFromDesign);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (htmlFromDesign) {\n      innerHTML = htmlFromDesign;\n    }\n    const implicitPathVariables = useImplicitPathVariables();\n    const innerHTMLWithReplacedFramerPageLinks = React84.useMemo(() => {\n      if (isOnCanvas || !getRoute || !currentRoute) return innerHTML;\n      return replaceFramerPageLinks(innerHTML, getRoute, currentRoute, implicitPathVariables);\n    }, [innerHTML, getRoute, currentRoute, implicitPathVariables]);\n    React84.useEffect(() => {\n      const container = layoutRef.current;\n      if (container === null) return;\n      function interceptPageLinks(event) {\n        const anchorElement = findAnchorElement(event.target, layoutRef.current);\n        if (event.metaKey || !navigate || !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */) {\n          return;\n        }\n        const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n        if (didNavigate) {\n          event.preventDefault();\n        }\n      }\n      container.addEventListener(\"click\", interceptPageLinks);\n      return () => {\n        container.removeEventListener(\"click\", interceptPageLinks);\n      };\n    }, [navigate, implicitPathVariables]);\n    useLoadFonts(fonts, __fromCanvasComponent, layoutRef);\n    React84.useInsertionEffect(() => {\n      injectComponentCSSRules();\n    }, []);\n    if (!visible) return null;\n    const isHidden = isEditable && environment2() === RenderTarget.canvas;\n    const style = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment(verticalAlignment),\n      opacity: isHidden ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? props.transformTemplate ?? transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        style.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        style.width = frame2.width;\n        style.minWidth = frame2.width;\n        style.height = frame2.height;\n      } else {\n        style.left = left;\n        style.right = right;\n        style.top = top;\n        style.bottom = bottom;\n        style.width = width;\n        style.height = height;\n        style.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, style);\n    collectTextShadowsForProps(props, style);\n    Object.assign(style, props.style);\n    return /* @__PURE__ */ jsx75(\n      motion.div,\n      {\n        id,\n        ref: layoutRef,\n        ...rest,\n        style,\n        layoutId,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"DeprecatedRichText\",\n        \"data-center\": center,\n        className: cx(className2, stylesPresetsClassName, richTextWrapperClassName),\n        transformTemplate: template,\n        dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks }\n      }\n    );\n  }\n);\nfunction convertVerticalAlignment(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction useLoadFonts(fonts, fromCanvasComponent, containerRef) {\n  const prevFontsRef = useRef24([]);\n  if (!isShallowEqualArray(prevFontsRef.current, fonts)) {\n    prevFontsRef.current = fonts;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!fromCanvasComponent || !containerRef.current || RenderTarget.current() !== RenderTarget.canvas) return;\n      if (newlyLoadedFontCount > 0) {\n        measureClosestComponentContainer(containerRef.current);\n      }\n    });\n  }\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport * as React85 from \"react\";\n\n// ../../library/src/render/utils/patchAndWaitForChild.ts\nfunction newOverrideableRef() {\n  return { current: null };\n}\nasync function patchAndWaitForChild(ref, controller) {\n  let current = ref.current;\n  if (current) return current;\n  let refCallbackResolve;\n  const refCallbackPromise = new Promise((resolve, reject) => {\n    refCallbackResolve = resolve;\n    controller.signal.addEventListener(\"abort\", () => reject());\n  });\n  Object.defineProperty(ref, \"current\", {\n    get() {\n      return current;\n    },\n    set(element) {\n      current = element;\n      if (element === null) {\n        controller.abort();\n        return;\n      }\n      refCallbackResolve(element);\n    },\n    configurable: true\n  });\n  return refCallbackPromise;\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport { jsx as jsx76, jsxs as jsxs17 } from \"react/jsx-runtime\";\nvar defaultValues2 = {\n  opacity: 1,\n  y: 0,\n  x: 0,\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  filter: \"none\"\n};\nfunction isEffectKey(key7) {\n  return key7 in defaultValues2;\n}\nfunction createKeyframes(effect) {\n  const out = {};\n  for (const key7 in effect) {\n    if (!isEffectKey(key7)) continue;\n    const effectValue = effect[key7];\n    const defaultValue = defaultValues2[key7];\n    if (isUndefined(effectValue) || isUndefined(defaultValue)) continue;\n    out[key7] = [effectValue, defaultValue];\n  }\n  return out;\n}\nvar emojiSplitRe = /* @__PURE__ */ (() => {\n  return new RegExp(\"\\\\p{Regional_Indicator}{2}|\\\\p{Emoji}\\\\p{Emoji_Modifier}?\\\\p{Variation_Selector}?(?:\\\\u{200d}\\\\p{Emoji}\\\\p{Emoji_Modifier}?\\\\p{Variation_Selector}?)*|.\", \"gu\");\n})();\nfunction tokenizeText(text, tokenization = \"character\", elements, style) {\n  switch (tokenization) {\n    case \"character\":\n    // When we want to animate \"lines\" that aren't split by newlines, but\n    // instead by wrapping, we have to split the text into characters, and\n    // then measure the top offset of each character, creating groups of\n    // characters every time the top offset changes\n    // eslint-disable-next-line no-fallthrough\n    case \"line\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((word, wordIndex) => {\n        var _a;\n        const isLastWord = wordIndex === lastWordIndex;\n        const short = word.length <= 12;\n        return /* @__PURE__ */ jsxs17(React85.Fragment, { children: [\n          /* @__PURE__ */ jsx76(\"span\", { style: { whiteSpace: short ? \"nowrap\" : \"unset\" }, children: (_a = word.match(emojiSplitRe)) == null ? void 0 : _a.map((char, i) => {\n            const ref = newOverrideableRef();\n            elements.add(ref);\n            return (\n              // biome-ignore lint/suspicious/noArrayIndexKey: We are combining index with char.\n              /* @__PURE__ */ jsx76(\"span\", { ref, style, children: char }, char + i)\n            );\n          }) }),\n          isLastWord ? null : \" \"\n        ] }, word + wordIndex + isLastWord);\n      });\n    }\n    case \"word\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((char, i) => {\n        const isLastWord = i === lastWordIndex;\n        const ref = newOverrideableRef();\n        elements.add(ref);\n        return /* @__PURE__ */ jsxs17(React85.Fragment, { children: [\n          /* @__PURE__ */ jsx76(\"span\", { ref, style, children: char }),\n          isLastWord ? null : \" \"\n        ] }, char + i + isLastWord);\n      });\n    }\n    // Per: Element doesn't require text to be split.\n    case \"element\":\n    default:\n      return text;\n  }\n}\nfunction tokenizationForEffect(effect) {\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      return effect.tokenization ?? \"character\";\n    default:\n      assertNever(type);\n  }\n}\nfunction transformString(effect) {\n  const transforms = [];\n  if (isNumber(effect.x)) transforms.push(`translateX(${effect.x}px)`);\n  if (isNumber(effect.y)) transforms.push(`translateY(${effect.y}px)`);\n  if (isNumber(effect.scale)) transforms.push(`scale(${effect.scale})`);\n  if (isNumber(effect.rotate)) transforms.push(`rotate(${effect.rotate}deg)`);\n  if (isNumber(effect.rotateX)) transforms.push(`rotateX(${effect.rotateX}deg)`);\n  if (isNumber(effect.rotateY)) transforms.push(`rotateY(${effect.rotateY}deg)`);\n  if (isNumber(effect.skewX)) transforms.push(`skewX(${effect.skewX}deg)`);\n  if (isNumber(effect.skewY)) transforms.push(`skewY(${effect.skewY}deg)`);\n  return transforms.join(\" \");\n}\nfunction getInitialEffectStyle(canPlay, canAnimate, effect) {\n  if (!effect || !effect.effect) return void 0;\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      switch (effect.tokenization) {\n        case \"element\":\n          if (!canPlay || !canAnimate) return void 0;\n          return {\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n        case \"line\":\n        case \"word\":\n        case \"character\":\n        default:\n          if (!canPlay || !canAnimate) return { display: \"inline-block\" };\n          return {\n            display: \"inline-block\",\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n      }\n    default:\n      assertNever(type);\n  }\n}\nfunction useTextEffect(config, ref, preview) {\n  const elements = useConstant(() => /* @__PURE__ */ new Set());\n  const isRenderingStaticContent = isStaticRenderer();\n  const canPlay = preview || !isRenderingStaticContent;\n  const state = React85.useRef({\n    hasMounted: false,\n    hasAnimatedOnce: false,\n    isAnimating: false,\n    effect: config\n  });\n  state.current.effect = config;\n  const trigger = (config == null ? void 0 : config.trigger) ?? \"onMount\";\n  const target = config == null ? void 0 : config.target;\n  const threshold = config == null ? void 0 : config.threshold;\n  React85.useEffect(() => {\n    if (!canPlay || preview) return;\n    state.current.hasMounted = true;\n    function play() {\n      const { effect } = state.current;\n      if (!canPlay || !effect) return;\n      if ((effect == null ? void 0 : effect.repeat) !== true && state.current.hasAnimatedOnce) return;\n      if ((effect == null ? void 0 : effect.type) === \"appear\" && state.current.isAnimating) return;\n      Object.assign(state.current, {\n        hasAnimatedOnce: true,\n        isAnimating: true\n      });\n      const type = effect.type;\n      switch (type) {\n        case \"appear\": {\n          const { transition, startDelay, repeat, tokenization: tokenization2 } = effect;\n          const cleanupRef = { current: void 0 };\n          void runAppearEffect(\n            tokenization2,\n            effect.effect,\n            elements,\n            transition,\n            startDelay,\n            repeat,\n            () => {\n              Object.assign(state.current, { isAnimating: false });\n            },\n            cleanupRef\n          );\n          return () => {\n            var _a;\n            return (_a = cleanupRef.current) == null ? void 0 : _a.call(cleanupRef);\n          };\n        }\n        default:\n          assertNever(type);\n      }\n    }\n    switch (trigger) {\n      case \"onMount\":\n        play();\n        return;\n      case \"onInView\": {\n        const element = ref == null ? void 0 : ref.current;\n        if (!element) return;\n        return inView(element, play, { amount: threshold ?? 0 });\n      }\n      case \"onScrollTarget\": {\n        const element = target == null ? void 0 : target.ref.current;\n        if (!element) return;\n        return inView(element, play, {\n          amount: threshold ?? 0,\n          root: document,\n          margin: (target == null ? void 0 : target.offset) ? `${target.offset}px 0px 0px 0px` : void 0\n        });\n      }\n      default:\n        assertNever(trigger);\n    }\n  }, [canPlay, elements, preview, ref, target, threshold, trigger]);\n  const effectEnabled = !!config;\n  const tokenization = config ? tokenizationForEffect(config) : void 0;\n  return React85.useMemo(\n    () => ({\n      // The tokenizer is memoized such that it won't trigger RichText to\n      // be rerendered if the effect changes in a way that doesn't effect\n      // the tokenization.\n      getTokenizer: () => {\n        elements.clear();\n        if (!effectEnabled) return void 0;\n        const { hasMounted, hasAnimatedOnce, effect } = state.current;\n        const effectStyle = getInitialEffectStyle(\n          canPlay,\n          preview || mayAnimate(hasMounted, hasAnimatedOnce, effect),\n          state.current.effect\n        );\n        return {\n          text: (text) => tokenizeText(text, tokenization, elements, effectStyle),\n          props: (style) => {\n            if ((effect == null ? void 0 : effect.tokenization) !== \"element\") return void 0;\n            const r = newOverrideableRef();\n            elements.add(r);\n            return {\n              ref: r,\n              style: { ...style, ...effectStyle }\n            };\n          }\n        };\n      },\n      play: () => {\n        const { effect } = state.current;\n        if (!effect) return;\n        const type = effect.type;\n        switch (type) {\n          case \"appear\": {\n            const { transition, startDelay } = effect;\n            void runAppearEffect(tokenization, effect.effect, elements, transition, startDelay);\n            break;\n          }\n          default:\n            assertNever(type);\n        }\n      }\n    }),\n    [canPlay, effectEnabled, elements, preview, tokenization]\n  );\n}\nfunction mayAnimate(hasMounted, hasAnimatedOnce, effect) {\n  return !// If either the component has mounted and the trigger is\n  // onMount, or if the component has run an animation to\n  // completion, the effect is not repeatable, and the trigger\n  // is one that is impacted by repeated effects, we don't\n  // need to set initial style again.\n  (hasMounted && (effect == null ? void 0 : effect.trigger) === \"onMount\" || hasAnimatedOnce && !(effect == null ? void 0 : effect.repeat) && ((effect == null ? void 0 : effect.trigger) === \"onInView\" || (effect == null ? void 0 : effect.trigger) === \"onScrollTarget\"));\n}\nasync function runAppearEffect(tokenization = \"character\", effect, elements, transition, startDelay = 0, repeat = false, callback, cleanupRef) {\n  const enter = createKeyframes(effect);\n  const controller = new AbortController();\n  if (cleanupRef) cleanupRef.current = () => controller.abort();\n  switch (tokenization) {\n    case \"character\":\n    case \"element\":\n    case \"word\": {\n      const list = await createElementList(elements, controller);\n      if (list === null) return;\n      void animate(list, enter, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      }).then(() => callback == null ? void 0 : callback());\n      if (!repeat || !cleanupRef) return;\n      cleanupRef.current = () => void animate(list, effect, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      });\n      return;\n    }\n    case \"line\": {\n      try {\n        for (const element of elements) {\n          await patchAndWaitForChild(element, controller);\n        }\n      } catch {\n        return;\n      }\n      let list;\n      frame.read(() => {\n        list = createLineGroups(elements);\n        if (list.length === 0) return;\n        frame.update(() => {\n          const animations2 = list.map((group, i) => {\n            return animate(group, enter, {\n              ...transition,\n              restDelta: 1e-3,\n              // Since text tokenized into lines are groups of individual\n              // characters where each group is animated at once, we can't use\n              // motion's built in `stagger()` function, and have to manage the\n              // outer delay ourselves.\n              delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n            });\n          });\n          void Promise.all(animations2).then(() => callback == null ? void 0 : callback());\n        });\n      });\n      if (!repeat || !cleanupRef) return;\n      cleanupRef.current = () => {\n        if (list.length === 0) return;\n        list.forEach((group, i) => {\n          void animate(group, effect, {\n            ...transition,\n            restDelta: 1e-3,\n            delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n          });\n        });\n      };\n      return;\n    }\n    default:\n      assertNever(tokenization);\n  }\n}\nasync function createElementList(elements, controller) {\n  if (elements.size === 0) return null;\n  const list = [];\n  for (const element of elements) {\n    try {\n      const node = await patchAndWaitForChild(element, controller);\n      if (node) list.push(node);\n    } catch {\n      return null;\n    }\n  }\n  return list;\n}\nfunction createLineGroups(elements) {\n  const groups2 = [];\n  let currentGroup = [];\n  let lastOffset = null;\n  for (const element of elements) {\n    if (!element.current) continue;\n    const top = element.current.offsetTop;\n    const height = element.current.offsetHeight;\n    if (!height || lastOffset === null || top === lastOffset) {\n      currentGroup.push(element.current);\n    } else {\n      groups2.push(currentGroup);\n      currentGroup = [element.current];\n    }\n    if (height) lastOffset = top;\n  }\n  groups2.push(currentGroup);\n  return groups2;\n}\n\n// ../../library/src/render/presentation/RichText.tsx\nimport { jsx as jsx77 } from \"react/jsx-runtime\";\nvar BaseSVG = /* @__PURE__ */ forwardRef11(\n  function BaseSVG2(props, forwardedRef) {\n    return (\n      // biome-ignore lint/a11y/noSvgWithoutTitle: FIXME: FitText might be inaccessible to screen readers because it\u2019s wrapped in an svg\n      /* @__PURE__ */ jsx77(\"svg\", { ...props, ref: forwardedRef, children: props.children })\n    );\n  }\n);\nvar MotionSVG = /* @__PURE__ */ motion.create(BaseSVG);\nvar FitText = /* @__PURE__ */ forwardRef11(function FitText2({ viewBoxScale, viewBox, children, ...props }, forwardedRef) {\n  return /* @__PURE__ */ jsx77(MotionSVG, { ...props, ref: forwardedRef, viewBox, children: /* @__PURE__ */ jsx77(\n    motion.foreignObject,\n    {\n      width: \"100%\",\n      height: \"100%\",\n      className: \"framer-fit-text\",\n      transform: `scale(${viewBoxScale})`,\n      style: { overflow: \"visible\", transformOrigin: \"center center\" },\n      children\n    }\n  ) });\n});\nvar defaultFonts = [];\nvar richTextContainerComponentType = \"RichTextContainer\";\nvar RichTextContainer = /* @__PURE__ */ forwardRef11(function RichTextContainer2(props, forwardedRef) {\n  const {\n    __fromCanvasComponent = false,\n    _forwardedOverrideId,\n    _forwardedOverrides,\n    _usesDOMRect,\n    anchorLinkOffsetY,\n    as: _as,\n    bottom,\n    center,\n    children,\n    environment: environment2 = RenderTarget.current,\n    fonts = defaultFonts,\n    height,\n    isEditable = false,\n    left,\n    name,\n    opacity,\n    positionSticky,\n    positionStickyBottom,\n    positionStickyLeft,\n    positionStickyRight,\n    positionStickyTop,\n    right,\n    rotation = 0,\n    style,\n    _initialStyle,\n    stylesPresetsClassNames,\n    text: plainText,\n    top,\n    verticalAlignment = \"top\",\n    visible = true,\n    width,\n    withExternalLayout = false,\n    viewBox,\n    viewBoxScale = 1,\n    effect,\n    ...rest\n  } = props;\n  const parentSize = useParentSize();\n  const isOnCanvas = useIsOnFramerCanvas();\n  const inCodeComponent = useContext29(ComponentContainerContext);\n  const layoutId = useLayoutId(props);\n  const fallbackRef = useRef26(null);\n  const containerRef = forwardedRef ?? fallbackRef;\n  useMeasureLayout(props, containerRef);\n  useLoadFonts(fonts, __fromCanvasComponent, containerRef);\n  useInsertionEffect7(() => {\n    injectComponentCSSRules();\n  }, []);\n  const textEffect = useTextEffect(effect, containerRef);\n  const processedChildren = useMemo23(() => {\n    if (!children) return;\n    return processRichTextChildren(\n      children,\n      stylesPresetsClassNames,\n      plainText,\n      anchorLinkOffsetY,\n      void 0,\n      textEffect.getTokenizer()\n    );\n  }, [children, stylesPresetsClassNames, plainText, anchorLinkOffsetY, textEffect]);\n  if (!visible) return null;\n  const isHidden = isEditable && environment2() === RenderTarget.canvas;\n  const containerStyle = {\n    outline: \"none\",\n    /**\n     * NOTE: `display` can be overridden for example with `-webkit-box` in\n     * `collectTextTruncation.ts`. In such case, not all flex properties are supported. For\n     * example `justifyContent` doesn't work, but it doesn't matter for truncated text since it\n     * has auto height. In any case, keep this in mind when modifying these styles.\n     */\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: convertVerticalAlignment(verticalAlignment),\n    opacity: isHidden ? 0 : opacity,\n    flexShrink: 0\n  };\n  const positionStyle = {};\n  const restrictedRenderTarget = RenderTarget.hasRestrictions();\n  const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n  const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n  const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n  const template = hasTransformTemplate ? props.transformTemplate ?? transformTemplate(center) : void 0;\n  if (!withExternalLayout) {\n    if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n      positionStyle.x = frame2.x + (isNumber(style == null ? void 0 : style.x) ? style.x : 0);\n      positionStyle.y = frame2.y + (isNumber(style == null ? void 0 : style.y) ? style.y : 0);\n      containerStyle.rotate = Animatable.getNumber(rotation);\n      containerStyle.width = frame2.width;\n      containerStyle.minWidth = frame2.width;\n      containerStyle.height = frame2.height;\n    } else {\n      containerStyle.left = left;\n      containerStyle.right = right;\n      containerStyle.top = top;\n      containerStyle.bottom = bottom;\n      containerStyle.width = width;\n      containerStyle.height = height;\n      containerStyle.rotate = rotation;\n    }\n    if (positionSticky) {\n      if (!isOnCanvas || inCodeComponent) {\n        containerStyle.position = \"sticky\";\n        containerStyle.willChange = \"transform\";\n        containerStyle.zIndex = 1;\n        containerStyle.top = positionStickyTop;\n        containerStyle.right = positionStickyRight;\n        containerStyle.bottom = positionStickyBottom;\n        containerStyle.left = positionStickyLeft;\n      }\n    } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n      containerStyle.position = \"absolute\";\n    }\n  }\n  collectFiltersFromProps(props, containerStyle);\n  collectTextShadowsForProps(props, containerStyle);\n  Object.assign(containerStyle, _initialStyle, style, positionStyle);\n  if (layoutId) {\n    rest.layout = \"preserve-aspect\";\n  }\n  const Component17 = htmlElementAsMotionComponent(props.as);\n  const dataFramerName = rest[\"data-framer-name\"] ?? name;\n  if (isString(props.viewBox)) {\n    if (props.as !== void 0) {\n      return /* @__PURE__ */ jsx77(\n        Component17,\n        {\n          ...rest,\n          ref: containerRef,\n          style: containerStyle,\n          layoutId,\n          transformTemplate: template,\n          \"data-framer-name\": dataFramerName,\n          \"data-framer-component-type\": richTextContainerComponentType,\n          children: /* @__PURE__ */ jsx77(FitText, { viewBox, viewBoxScale, style: { width: \"100%\", height: \"100%\" }, children: processedChildren })\n        }\n      );\n    } else {\n      return /* @__PURE__ */ jsx77(\n        FitText,\n        {\n          ...rest,\n          ref: containerRef,\n          style: containerStyle,\n          layoutId,\n          viewBox,\n          viewBoxScale,\n          transformTemplate: template,\n          \"data-framer-name\": dataFramerName,\n          \"data-framer-component-type\": richTextContainerComponentType,\n          children: processedChildren\n        }\n      );\n    }\n  }\n  return /* @__PURE__ */ jsx77(\n    Component17,\n    {\n      ...rest,\n      ref: containerRef,\n      style: containerStyle,\n      layoutId,\n      transformTemplate: template,\n      \"data-framer-name\": dataFramerName,\n      \"data-framer-component-type\": richTextContainerComponentType,\n      children: processedChildren\n    }\n  );\n});\nfunction isFragment(element) {\n  return element.type === Fragment12;\n}\nfunction isLineBreak(element) {\n  return element.type === \"br\";\n}\nfunction processRichTextChildren(element, stylesPresetsClassNames, plainText, anchorLinkOffsetY, slugCounters = {}, tokenizer, depth = isFragment(element) ? -1 : 0) {\n  let children = Children4.toArray(element.props.children);\n  if (isString(plainText)) {\n    children = children.slice(0, 1);\n  }\n  let onlyLineBreaks = true;\n  children = children.map((child) => {\n    if (!isValidElement6(child) || !isLineBreak(child)) onlyLineBreaks = false;\n    if (isValidElement6(child)) {\n      return processRichTextChildren(\n        child,\n        stylesPresetsClassNames,\n        plainText,\n        anchorLinkOffsetY,\n        slugCounters,\n        tokenizer,\n        depth + 1\n      );\n    }\n    const text = isString(plainText) ? plainText : child;\n    return isString(text) && tokenizer ? tokenizer.text(text) : text;\n  });\n  const { [\"data-preset-tag\"]: dataPresetTag, ...props } = element.props;\n  if (isString(element.type) || isMotionComponent(element.type)) {\n    const elementType = unwrapMotionComponent(element.type) || element.type;\n    const tag = dataPresetTag || elementType;\n    const stylesPresetClassName = isString(tag) ? stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[tag] : void 0;\n    props.className = cx(\"framer-text\", props.className, stylesPresetClassName);\n    if (tokenizer && depth === 0 && !onlyLineBreaks) Object.assign(props, tokenizer.props(props.style));\n    const isHeading = elementType === \"h1\" || elementType === \"h2\" || elementType === \"h3\" || elementType === \"h4\" || elementType === \"h5\" || elementType === \"h6\";\n    const anchorLinkStylePresetClassName = stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[\"anchor\"];\n    if (isHeading && anchorLinkStylePresetClassName) {\n      const slug = generateHeadingSlug(children, slugCounters);\n      props.id = slug;\n      const className2 = cx(\"framer-text\", anchorLinkStylePresetClassName);\n      const anchorLink = /* @__PURE__ */ jsx77(\"a\", { href: `#${slug}`, className: className2, children });\n      props.style = { ...props.style ?? {}, scrollMarginTop: anchorLinkOffsetY };\n      children = [anchorLink];\n    }\n  }\n  return cloneElement3(element, props, ...children);\n}\nfunction generateHeadingSlug(children, slugCounters) {\n  const headingText = children.map(extractTextFromReactNode).join(\"\");\n  let slug = slugify(headingText);\n  const slugCounter = slugCounters[slug] ?? 0;\n  if (slugCounter > 0) {\n    slug += `-${slugCounter}`;\n  }\n  slugCounters[slug] = slugCounter + 1;\n  return slug;\n}\nfunction extractTextFromReactNode(node) {\n  if (isString(node) || isNumber(node)) {\n    return node.toString();\n  }\n  if (isValidElement6(node)) {\n    return extractTextFromReactNode(node.props.children);\n  }\n  if (Array.isArray(node)) {\n    return node.map(extractTextFromReactNode).join(\"\");\n  }\n  return \"\";\n}\nvar RichText = /* @__PURE__ */ forwardRef11(function RichText2({ children, html, htmlFromDesign, ...props }, forwardedRef) {\n  const content = html || children || htmlFromDesign;\n  if (isString(content)) {\n    if (!props.stylesPresetsClassName && isObject2(props.stylesPresetsClassNames)) {\n      props.stylesPresetsClassName = Object.values(props.stylesPresetsClassNames).join(\" \");\n    }\n    const contentProp = {\n      // We need to use the original prop name.\n      [isString(html) ? \"html\" : \"htmlFromDesign\"]: content\n    };\n    return /* @__PURE__ */ jsx77(\n      DeprecatedRichText,\n      {\n        ...props,\n        ...contentProp,\n        ref: forwardedRef\n      }\n    );\n  }\n  if (!props.stylesPresetsClassNames && isString(props.stylesPresetsClassName)) {\n    const [h1, h2, h3, p, a] = props.stylesPresetsClassName.split(\" \");\n    if (h1 === void 0 || h2 === void 0 || h3 === void 0 || p === void 0 || a === void 0) {\n      console.warn(`Encountered invalid stylesPresetsClassNames: ${props.stylesPresetsClassNames}`);\n    } else {\n      props.stylesPresetsClassNames = { h1, h2, h3, p, a };\n    }\n  }\n  return /* @__PURE__ */ jsx77(RichTextContainer, { ...props, ref: forwardedRef, children: isValidElement6(content) ? content : void 0 });\n});\n\n// ../../library/src/render/presentation/SVG.tsx\nimport React86, { forwardRef as forwardRef12 } from \"react\";\n\n// ../../library/src/render/utils/elementPropertiesForGradient.ts\nfunction linearGradientLine(angle) {\n  var _a, _b;\n  const rad = angle * Math.PI / 180;\n  const offset = {\n    x: -Math.sin(rad) * 100,\n    y: Math.cos(rad) * 100\n  };\n  const anglePoint = Point(offset.x, offset.y);\n  const angleLine = Line(Point(0.5, 0.5), anglePoint);\n  const points = Rect.points({ x: 0, y: 0, width: 1, height: 1 });\n  const sortedPoints = points.map((point) => ({ point, distance: Point.distance(anglePoint, point) })).sort((a2, b2) => a2.distance - b2.distance);\n  const a = (_a = sortedPoints[0]) == null ? void 0 : _a.point;\n  const b = (_b = sortedPoints[1]) == null ? void 0 : _b.point;\n  assert(a && b, \"linearGradientLine: Must have 2 closest points.\");\n  const [c, d] = points.filter((point) => !Point.isEqual(point, a) && !Point.isEqual(point, b));\n  assert(c && d, \"linearGradientLine: Must have 2 opposing points.\");\n  const start = Line.intersection(angleLine, Line(a, b));\n  const end = Line.intersection(angleLine, Line(c, d));\n  assert(start && end, \"linearGradientLine: Must have a start and end point.\");\n  return Line(start, end);\n}\nfunction elementPropertiesForLinearGradient(gradient, id) {\n  var _a, _b;\n  const line = linearGradientLine(gradient.angle);\n  const stops = gradientColorStops(gradient);\n  const startPosition = ((_a = stops[0]) == null ? void 0 : _a.position) ?? 0;\n  const endPosition = ((_b = stops[stops.length - 1]) == null ? void 0 : _b.position) ?? 1;\n  const startPoint = Line.pointAtPercentDistance(line, startPosition);\n  const endPoint = Line.pointAtPercentDistance(line, endPosition);\n  const interpolator = interpolate([startPosition, endPosition], [0, 1]);\n  return {\n    id: `id${id}g${LinearGradient.hash(gradient)}`,\n    x1: startPoint.x,\n    y1: startPoint.y,\n    x2: endPoint.x,\n    y2: endPoint.y,\n    stops: stops.map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: interpolator(stop.position)\n    }))\n  };\n}\nfunction elementPropertiesForRadialGradient(gradient, id) {\n  return {\n    id: `id${id}g${RadialGradient.hash(gradient)}`,\n    widthFactor: gradient.widthFactor,\n    heightFactor: gradient.heightFactor,\n    centerAnchorX: gradient.centerAnchorX,\n    centerAnchorY: gradient.centerAnchorY,\n    stops: gradientColorStops(gradient).map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: stop.position\n    }))\n  };\n}\n\n// ../../library/src/render/types/RelativeNumber.ts\nfunction isRelativeNumber(value) {\n  if (!isString(value)) return false;\n  const lastChar = value.charAt(value.length - 1);\n  if (lastChar !== \"%\") return false;\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float);\n}\nfunction getRelativeNumberValue(value) {\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float) ? float : 50;\n}\n\n// ../../library/src/render/utils/imagePatternPropsForFill.tsx\nfunction getPositionXFraction(positionX) {\n  if (isRelativeNumber(positionX)) return getRelativeNumberValue(positionX) / 100;\n  if (positionX === \"left\") return 0;\n  if (positionX === \"right\") return 1;\n  return 0.5;\n}\nfunction getPositionYFraction(positionY) {\n  if (isRelativeNumber(positionY)) return getRelativeNumberValue(positionY) / 100;\n  if (positionY === \"top\") return 0;\n  if (positionY === \"bottom\") return 1;\n  return 0.5;\n}\nfunction imagePatternPropsForFill(fill, frame2, id, includeTransform) {\n  fill = Animatable.get(fill, \"#09F\");\n  if (!BackgroundImage.isImageObject(fill)) return void 0;\n  if (!fill.pixelWidth || !fill.pixelHeight) return void 0;\n  const imageWidth = fill.pixelWidth;\n  const imageHeight = fill.pixelHeight;\n  let transform2;\n  const { fit } = fill;\n  let width = 1, height = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (fit === \"fill\" || fit === \"fit\" || fit === \"tile\" || !fit) {\n    let scaleX = 1;\n    let scaleY = 1;\n    const imageRatio = imageWidth / imageHeight;\n    const realWidth = frame2.height * imageRatio;\n    const realHeight = frame2.width / imageRatio;\n    const validScaleX = realWidth / frame2.width;\n    const validScaleY = realHeight / frame2.height;\n    if (fit === \"tile\") {\n      fill.backgroundSize ??= 1;\n      width = Math.round(fill.backgroundSize * (imageWidth / 2));\n      height = Math.round(fill.backgroundSize * (imageHeight / 2));\n      const layerPositionX = frame2.x ?? 0;\n      const layerPositionY = frame2.y ?? 0;\n      let extraOffsetX = 0;\n      let extraOffsetY = 0;\n      if (includeTransform) {\n        extraOffsetX = layerPositionX;\n        extraOffsetY = layerPositionY;\n      }\n      offsetX = (frame2.width - width) * getPositionXFraction(fill.positionX) + extraOffsetX;\n      offsetY = (frame2.height - height) * getPositionYFraction(fill.positionY) + extraOffsetY;\n      transform2 = `translate(${offsetX + layerPositionX}, ${offsetY + layerPositionY})`;\n    } else {\n      if (fit === \"fill\" || !fit ? validScaleY > validScaleX : validScaleY < validScaleX) {\n        scaleY = validScaleY;\n        offsetY = (1 - validScaleY) * getPositionYFraction(fill.positionY);\n      } else {\n        scaleX = validScaleX;\n        offsetX = (1 - validScaleX) * getPositionXFraction(fill.positionX);\n      }\n      transform2 = `translate(${offsetX}, ${offsetY}) scale(${scaleX}, ${scaleY})`;\n    }\n  }\n  const imageId = `id${id}g${\"-fillImage\"}`;\n  return { id: imageId, path: fill.src ?? \"\", transform: transform2, width, height, offsetX, offsetY };\n}\n\n// ../../library/src/render/utils/imageUrlForAsset.ts\nvar mediaType2 = \"framer/asset-reference,\";\nfunction isAssetReference2(value) {\n  return value.startsWith(`data:${mediaType2}`);\n}\nfunction imageUrlForAsset(asset, pixelSize) {\n  if (/^\\w+:/u.test(asset) && !isAssetReference2(asset)) return asset;\n  if (typeof pixelSize !== \"number\") pixelSize = void 0;\n  else if (pixelSize <= 512) pixelSize = 512;\n  else if (pixelSize <= 1024) pixelSize = 1024;\n  else if (pixelSize <= 2048) pixelSize = 2048;\n  else pixelSize = 4096;\n  const isExport = RenderTarget.current() === RenderTarget.export;\n  return runtime.assetResolver(asset, { pixelSize, isExport }) ?? \"\";\n}\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nimport { jsx as jsx78 } from \"react/jsx-runtime\";\nvar ImagePatternElement = ({\n  id,\n  path,\n  transform: transform2,\n  repeat,\n  width,\n  height,\n  offsetX,\n  offsetY\n}) => {\n  const href = imageUrlForAsset(path);\n  return /* @__PURE__ */ jsx78(\n    \"pattern\",\n    {\n      id,\n      width: repeat ? width : \"100%\",\n      height: repeat ? height : \"100%\",\n      patternContentUnits: repeat ? void 0 : \"objectBoundingBox\",\n      patternUnits: repeat ? \"userSpaceOnUse\" : void 0,\n      x: repeat ? offsetX : void 0,\n      y: repeat ? offsetY : void 0,\n      children: /* @__PURE__ */ jsx78(\n        \"image\",\n        {\n          width: repeat ? width : 1,\n          height: repeat ? height : 1,\n          href,\n          preserveAspectRatio: \"none\",\n          transform: repeat ? void 0 : transform2,\n          x: repeat ? 0 : void 0,\n          y: repeat ? 0 : void 0\n        },\n        href\n      )\n    }\n  );\n};\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nimport { useEffect as useEffect28 } from \"react\";\nvar useDOM = /* @__PURE__ */ isBrowser2();\nvar SharedSVGEntry = class {\n  constructor(id, svg, innerHTML, viewBox, count = 0) {\n    this.id = id;\n    this.svg = svg;\n    this.innerHTML = innerHTML;\n    this.viewBox = viewBox;\n    this.count = count;\n  }\n};\nvar visuallyHiddenStyle = \"position: absolute; overflow: hidden; bottom: 0; left: 0; width: 0; height: 0; z-index: 0; contain: strict\";\nvar SharedSVGManager = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n    __publicField(this, \"vectorSetItems\", /* @__PURE__ */ new Map());\n  }\n  debugGetEntries() {\n    return this.entries;\n  }\n  /** Request to render a svg, this will ensure there is a global instance and will return a\n   * template referencing the image. Must be balanced with `unsubscribe()` calls using the same\n   * svg. If called multiple times while the shared SVG exists, the generateUniqueIds and\n   * contentId parameters are ignored. */\n  subscribe(svg, generateUniqueIds, contentId, overflowVisible) {\n    if (!svg || svg === \"\") return \"\";\n    let entry = this.entries.get(svg);\n    if (!entry) {\n      if (!contentId) {\n        contentId = `svg${String(hash(svg))}_${String(svg.length)}`;\n      }\n      let uniqueSVG = svg;\n      let svgSize;\n      const svgDom = parseSVG(svg);\n      if (svgDom) {\n        if (generateUniqueIds) {\n          prefixIdsInSVG(svgDom, contentId);\n        }\n        svgDom.id = contentId;\n        svgSize = getSVGSize(svgDom);\n        svgDom.removeAttribute(\"xmlns\");\n        svgDom.removeAttribute(\"xlink\");\n        svgDom.removeAttribute(\"xmlns:xlink\");\n        uniqueSVG = svgDom.outerHTML;\n      }\n      entry = this.createDOMElementFor(uniqueSVG, contentId, svgSize, overflowVisible);\n      this.entries.set(svg, entry);\n    }\n    entry.count += 1;\n    return entry.innerHTML;\n  }\n  /** Returns the viewBox for the svg, or undefined if there is no viewBox. */\n  getViewBox(svg) {\n    if (!svg || svg === \"\") return;\n    const entry = this.entries.get(svg);\n    return entry == null ? void 0 : entry.viewBox;\n  }\n  /** When no longer rendering an svg it must be unsubscribed from so resources can be cleaned up.\n   * Pass in the same svg as used with `subscribe()`. */\n  unsubscribe(svg) {\n    if (!svg || svg === \"\") return;\n    const entry = this.entries.get(svg);\n    if (!entry) return;\n    entry.count -= 1;\n    if (entry.count > 0) return;\n    setTimeout(() => this.maybeRemoveEntry(svg), 5e3);\n  }\n  maybeRemoveEntry(svg) {\n    const entry = this.entries.get(svg);\n    if (!entry) return;\n    if (entry.count > 0) return;\n    this.entries.delete(svg);\n    this.removeDOMElement(entry);\n  }\n  removeDOMElement(entry) {\n    if (useDOM) {\n      const container = document == null ? void 0 : document.getElementById(entry.id);\n      container == null ? void 0 : container.remove();\n    }\n  }\n  getOrCreateTemplateContainer() {\n    const container = document.getElementById(\"svg-templates\");\n    if (container) return container;\n    const newContainer = document.createElement(\"div\");\n    newContainer.id = \"svg-templates\";\n    newContainer.ariaHidden = \"true\";\n    newContainer.style.cssText = visuallyHiddenStyle;\n    document.body.appendChild(newContainer);\n    return newContainer;\n  }\n  maybeAppendTemplate(id, svg) {\n    if (document.getElementById(id)) return;\n    const container = document.createElement(\"div\");\n    container.innerHTML = svg;\n    const svgElement = container.firstElementChild;\n    if (!svgElement) return;\n    svgElement.id = id;\n    this.getOrCreateTemplateContainer().appendChild(svgElement);\n  }\n  createDOMElementFor(svg, id, size, overflowVisible) {\n    if (useDOM) this.maybeAppendTemplate(id, svg);\n    const box = size ? `0 0 ${size.width} ${size.height}` : void 0;\n    const viewBox = box ? ` viewBox=\"${box}\"` : \"\";\n    const innerHTML = `<svg style=\"width:100%;height:100%;${overflowVisible ? \"overflow: visible;\" : \"\"}\"${viewBox}><use href=\"#${id}\"/></svg>`;\n    return new SharedSVGEntry(id, svg, innerHTML, box);\n  }\n  /**\n   * Vectors are serialized in such a way that they don't need to be parsed again, instead they\n   * just need to provide their template. The hash is already known.\n   *\n   * VECTOR @TODO - Unsubscribe from vector set items.\n   */\n  template(revision, svg) {\n    const entry = this.vectorSetItems.get(revision);\n    if (entry) return `#${revision}`;\n    this.vectorSetItems.set(revision, { svg, count: 0 });\n    if (!useDOM) return `#${revision}`;\n    this.maybeAppendTemplate(revision, svg);\n    return `#${revision}`;\n  }\n  subscribeToTemplate(revision) {\n    const entry = this.vectorSetItems.get(revision);\n    if (!entry) return;\n    entry.count++;\n    return () => {\n      const latest = this.vectorSetItems.get(revision);\n      if (!latest) return;\n      latest.count--;\n      if (latest.count > 0) return;\n      setTimeout(() => {\n        var _a, _b;\n        if ((_a = this.vectorSetItems.get(revision)) == null ? void 0 : _a.count) return;\n        this.vectorSetItems.delete(revision);\n        if (useDOM) (_b = document == null ? void 0 : document.getElementById(revision)) == null ? void 0 : _b.remove();\n      }, 5e3);\n    };\n  }\n  clear() {\n    this.entries.clear();\n  }\n  /** Returns a string containing a div#svg-templates and all the current svg templates. Can be\n   * used after running `ReactDOMServer.renderToString()` */\n  generateTemplates() {\n    const output = [];\n    output.push(`<div id=\"svg-templates\" style=\"${visuallyHiddenStyle}\" aria-hidden=\"true\">`);\n    this.entries.forEach((value) => output.push(value.svg));\n    this.vectorSetItems.forEach((value) => output.push(value.svg));\n    output.push(\"</div>\");\n    return output.join(\"\\n\");\n  }\n};\nfunction useSVGTemplate(revision, svg) {\n  useEffect28(() => sharedSVGManager.subscribeToTemplate(revision), [revision]);\n  return sharedSVGManager.template(revision, svg);\n}\nvar sharedSVGManager = /* @__PURE__ */ new SharedSVGManager();\nfunction parseSVG(svg) {\n  try {\n    const doc = domParser(svg);\n    const node = doc.getElementsByTagName(\"svg\")[0];\n    if (!node) throw Error(\"no svg element found\");\n    return node;\n  } catch {\n    return;\n  }\n}\nfunction prefixIdsInSVG(svg, prefix2) {\n  const sanitizedPrefix = sanitizeString(prefix2);\n  recursivelyPrefixId(svg, sanitizedPrefix);\n}\nfunction sanitizeString(str) {\n  return str.replace(/[^\\w\\-:.]|^[^a-z]+/gi, \"\");\n}\nfunction recursivelyPrefixId(el, prefix2) {\n  prefixId(el, prefix2);\n  const childNodes = Array.from(el.children);\n  childNodes.forEach((node) => {\n    recursivelyPrefixId(node, prefix2);\n  });\n}\nfunction prefixId(el, prefix2) {\n  const attributes = el.getAttributeNames();\n  attributes.forEach((attr) => {\n    const value = el.getAttribute(attr);\n    if (!value) return;\n    if (attr === \"id\") {\n      el.setAttribute(attr, `${prefix2}_${value}`);\n    }\n    if (attr === \"href\" || attr === \"xlink:href\") {\n      const [base, fragmentIdentifier] = value.split(\"#\");\n      if (base) return;\n      el.setAttribute(attr, `#${prefix2}_${fragmentIdentifier}`);\n      return;\n    }\n    const URL_REF = \"url(#\";\n    if (value.includes(URL_REF)) {\n      const prefixedValue = value.replace(URL_REF, `${URL_REF}${prefix2}_`);\n      el.setAttribute(attr, prefixedValue);\n    }\n  });\n}\nvar unitsToPixels = /* @__PURE__ */ (() => ({\n  cm: 96 / 2.54,\n  mm: 96 / 2.54 / 10,\n  Q: 96 / 2.54 / 40,\n  in: 96,\n  pc: 96 / 6,\n  pt: 96 / 72,\n  px: 1,\n  // A few assumptions about relative units.\n  em: 16,\n  ex: 8,\n  ch: 8,\n  rem: 16\n}))();\nfunction parseLength(value) {\n  var _a;\n  if (!value) return;\n  const m2 = /(-?[\\d.]+)([a-z%]*)/u.exec(value);\n  if ((m2 == null ? void 0 : m2[1]) === void 0 || (m2 == null ? void 0 : m2[2]) === void 0) return;\n  if ((_a = m2[2]) == null ? void 0 : _a.startsWith(\"%\")) return;\n  return Math.round(parseFloat(m2[1]) * (unitsToPixels[m2[2]] || 1));\n}\nfunction getSVGSize(svg) {\n  const width = parseLength(svg.getAttribute(\"width\"));\n  const height = parseLength(svg.getAttribute(\"height\"));\n  if (typeof width !== \"number\" || typeof height !== \"number\") return;\n  if (width <= 0 || height <= 0) return;\n  return { width, height };\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nimport { Fragment as Fragment13, jsx as jsx79, jsxs as jsxs18 } from \"react/jsx-runtime\";\nvar SVG = /* @__PURE__ */ forwardRef12(function SVG2(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const layoutRef = React86.useRef(null);\n  const ref = forwardedRef ?? layoutRef;\n  const providedWindow = useProvidedWindow();\n  useMeasureLayout(props, layoutRef);\n  return /* @__PURE__ */ jsx79(\n    SVGComponent,\n    {\n      ...props,\n      innerRef: ref,\n      parentSize,\n      layoutId,\n      providedWindow\n    }\n  );\n});\nvar MAX_BACKGROUND_SVG_TEXT_LENGTH = 5e4;\nfunction containsImageReference(svg) {\n  return svg.indexOf(\"image\") >= 0;\n}\nfunction containsCustomPropertyReference(svg) {\n  return svg.indexOf(\"var(--\") >= 0;\n}\nfunction hasBorderRadius(style) {\n  return !!(style.borderRadius || style.borderBottomLeftRadius || style.borderBottomRightRadius || style.borderTopLeftRadius || style.borderTopRightRadius);\n}\nfunction sizeSVG(container, props) {\n  var _a, _b;\n  const div = container.current;\n  if (!div) return;\n  const localWindow = props.providedWindow ?? safeWindow;\n  const svg = div.firstElementChild;\n  if (!svg || !(svg instanceof localWindow.SVGSVGElement)) return;\n  if (!svg.getAttribute(\"viewBox\")) {\n    const viewBox = sharedSVGManager.getViewBox(props.svg);\n    if (viewBox) {\n      svg.setAttribute(\"viewBox\", viewBox);\n    }\n  }\n  const { withExternalLayout, parentSize } = props;\n  const canUseCalculatedOnCanvasSize = !withExternalLayout && constraintsEnabled(props) && parentSize !== 1 /* Disabled */ && parentSize !== 2 /* DisabledForCurrentLevel */;\n  if (canUseCalculatedOnCanvasSize) return;\n  const { intrinsicWidth, intrinsicHeight, _constraints } = props;\n  if (((_a = svg.viewBox.baseVal) == null ? void 0 : _a.width) === 0 && ((_b = svg.viewBox.baseVal) == null ? void 0 : _b.height) === 0 && isFiniteNumber(intrinsicWidth) && isFiniteNumber(intrinsicHeight)) {\n    svg.setAttribute(\"viewBox\", `0 0 ${intrinsicWidth} ${intrinsicHeight}`);\n  }\n  if (_constraints && _constraints.aspectRatio) {\n    svg.setAttribute(\"preserveAspectRatio\", \"\");\n  } else {\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n  }\n  svg.setAttribute(\"width\", \"100%\");\n  svg.setAttribute(\"height\", \"100%\");\n}\nfunction SVGStyleSheet() {\n  React86.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar SVGComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"container\", React86.createRef());\n      __publicField(this, \"svgElement\", null);\n      __publicField(this, \"setSVGElement\", (element) => {\n        this.svgElement = element;\n        this.setLayerElement(element);\n      });\n      __publicField(this, \"previouslyRenderedSVG\", \"\");\n      __publicField(this, \"unmountedSVG\", \"\");\n    }\n    static frame(props) {\n      return calculateRect(props, props.parentSize || 0 /* Unknown */);\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */);\n    }\n    componentDidMount() {\n      if (this.unmountedSVG) {\n        const { svgContentId } = this.props;\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        sharedSVGManager.subscribe(this.unmountedSVG, !svgContentId, contentid);\n        this.previouslyRenderedSVG = this.unmountedSVG;\n      }\n      if (this.props.svgContentId) return;\n      sizeSVG(this.container, this.props);\n    }\n    componentWillUnmount() {\n      sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n      this.unmountedSVG = this.previouslyRenderedSVG;\n      this.previouslyRenderedSVG = \"\";\n    }\n    componentDidUpdate(prevProps) {\n      super.componentDidUpdate(prevProps);\n      if (this.props.svgContentId) return;\n      const { fill } = this.props;\n      if (BackgroundImage.isImageObject(fill) && BackgroundImage.isImageObject(prevProps.fill) && fill.src !== prevProps.fill.src) {\n        resetSetStyle(this.svgElement, \"fill\", null, false);\n      }\n      sizeSVG(this.container, this.props);\n    }\n    collectLayout(style, innerStyle) {\n      if (this.props.withExternalLayout) {\n        innerStyle.width = \"100%\";\n        innerStyle.height = \"100%\";\n        innerStyle.aspectRatio = \"inherit\";\n        return;\n      }\n      const frame2 = this.frame;\n      const { rotation, intrinsicWidth, intrinsicHeight, width, height } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      style.opacity = isFiniteNumber(this.props.opacity) ? this.props.opacity : 1;\n      if (RenderTarget.hasRestrictions() && frame2) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          width: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n        if (constraintsEnabled(this.props)) {\n          style.position = \"absolute\";\n        }\n        const xFactor = frame2.width / (intrinsicWidth || 1);\n        const yFactor = frame2.height / (intrinsicHeight || 1);\n        innerStyle.transformOrigin = \"top left\";\n        const { zoom, target } = RenderEnvironment;\n        if (target === RenderTarget.export) {\n          const zoomFactor = zoom > 1 ? zoom : 1;\n          innerStyle.transform = `scale(${xFactor * zoomFactor}, ${yFactor * zoomFactor})`;\n          innerStyle.zoom = 1 / zoomFactor;\n        } else {\n          innerStyle.transform = `scale(${xFactor}, ${yFactor})`;\n        }\n        if (intrinsicWidth && intrinsicHeight) {\n          innerStyle.width = intrinsicWidth;\n          innerStyle.height = intrinsicHeight;\n        }\n        return;\n      }\n      const { left, right, top, bottom } = this.props;\n      Object.assign(style, {\n        left,\n        right,\n        top,\n        bottom,\n        width,\n        height,\n        rotate\n      });\n      Object.assign(innerStyle, {\n        left: 0,\n        top: 0,\n        bottom: 0,\n        right: 0,\n        position: \"absolute\"\n      });\n    }\n    render() {\n      countNodeRender();\n      const {\n        id,\n        visible,\n        style,\n        fill,\n        svg,\n        intrinsicHeight,\n        intrinsicWidth,\n        title,\n        description,\n        layoutId,\n        className: className2,\n        variants,\n        withExternalLayout,\n        innerRef,\n        svgContentId,\n        height: _height,\n        opacity: _opacity,\n        width: _width,\n        requiresOverflowVisible,\n        ...rest\n      } = this.props;\n      if (!withExternalLayout && (!visible || !id)) return null;\n      const identifier = id ?? layoutId ?? \"svg\";\n      const frame2 = this.frame;\n      const size = frame2 || { width: intrinsicWidth || 100, height: intrinsicHeight || 100 };\n      const outerStyle = { ...style, imageRendering: \"pixelated\", flexShrink: 0 };\n      const innerStyle = {};\n      this.collectLayout(outerStyle, innerStyle);\n      collectOpacityFromProps(this.props, outerStyle);\n      collectFiltersFromProps(this.props, outerStyle);\n      Layer.applyWillChange(this.props, outerStyle, false);\n      let fillElement = null;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        outerStyle.fill = fillColor;\n        outerStyle.color = fillColor;\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${LinearGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const { stops, x1, x2, y1, y2 } = elementPropertiesForLinearGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx79(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx79(\"linearGradient\", { id: gradientId, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n              return /* @__PURE__ */ jsx79(\n                \"stop\",\n                {\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                },\n                idx\n              );\n            }) })\n          }\n        );\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${RadialGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const elementProperties = elementPropertiesForRadialGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx79(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx79(\n              \"radialGradient\",\n              {\n                id: gradientId,\n                cy: gradient.centerAnchorY,\n                cx: gradient.centerAnchorX,\n                r: gradient.widthFactor,\n                children: elementProperties.stops.map((stop, idx) => {\n                  return /* @__PURE__ */ jsx79(\n                    \"stop\",\n                    {\n                      offset: stop.position,\n                      stopColor: stop.color,\n                      stopOpacity: stop.alpha\n                    },\n                    idx\n                  );\n                })\n              }\n            )\n          }\n        );\n      } else if (BackgroundImage.isImageObject(fill)) {\n        const imagePattern = imagePatternPropsForFill(fill, size, identifier);\n        if (imagePattern) {\n          outerStyle.fill = `url(#${imagePattern.id})`;\n          fillElement = /* @__PURE__ */ jsx79(\n            \"svg\",\n            {\n              ref: this.setSVGElement,\n              width: \"100%\",\n              height: \"100%\",\n              style: { position: \"absolute\" },\n              role: \"presentation\",\n              children: /* @__PURE__ */ jsx79(\"defs\", { children: /* @__PURE__ */ jsx79(ImagePatternElement, { ...imagePattern }) })\n            }\n          );\n        }\n      }\n      const dataProps = {\n        \"data-framer-component-type\": \"SVG\"\n      };\n      const hasTransformTemplate = !frame2;\n      if (hasTransformTemplate) {\n        Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n      }\n      const svgAsBackgroundImage = (\n        // If requiresOverflowVisible is true, we cannot safely render the SVG as background\n        // images, as it might cropped any centered stroke that exceeds the bounding box.\n        !requiresOverflowVisible && !fillElement && !outerStyle.fill && !outerStyle.background && !outerStyle.backgroundImage && svg.length < MAX_BACKGROUND_SVG_TEXT_LENGTH && !containsImageReference(svg) && !containsCustomPropertyReference(svg)\n      );\n      let content = null;\n      if (svgAsBackgroundImage) {\n        outerStyle.backgroundSize = \"100% 100%\";\n        outerStyle.backgroundImage = encodeSVGForCSS(svg);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = \"\";\n      } else {\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        const __html = sharedSVGManager.subscribe(svg, !svgContentId, contentid, requiresOverflowVisible);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = svg;\n        if (hasBorderRadius(outerStyle)) {\n          outerStyle.overflow = \"hidden\";\n        }\n        content = /* @__PURE__ */ jsxs18(Fragment13, { children: [\n          fillElement,\n          /* @__PURE__ */ jsx79(\n            \"div\",\n            {\n              className: \"svgContainer\",\n              style: innerStyle,\n              ref: this.container,\n              dangerouslySetInnerHTML: { __html }\n            },\n            BackgroundImage.isImageObject(fill) ? fill.src : \"\"\n          )\n        ] });\n      }\n      const MotionComponent = htmlElementAsMotionComponent(this.props.as);\n      const { href, target, rel, onClick, onTap } = this.props;\n      const hasTitleOrDescription = title || description;\n      return /* @__PURE__ */ jsxs18(\n        MotionComponent,\n        {\n          ...dataProps,\n          ...rest,\n          layoutId,\n          transformTemplate: hasTransformTemplate ? transformTemplate(this.props.center) : void 0,\n          id,\n          ref: innerRef,\n          style: outerStyle,\n          className: className2,\n          variants,\n          tabIndex: this.props.tabIndex,\n          role: hasTitleOrDescription ? \"img\" : void 0,\n          \"aria-label\": title,\n          \"aria-description\": description,\n          \"aria-hidden\": hasTitleOrDescription ? void 0 : \"true\",\n          onTap,\n          onClick,\n          ...{ href, target, rel },\n          children: [\n            content,\n            /* @__PURE__ */ jsx79(SVGStyleSheet, {})\n          ]\n        }\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultSVGProps\", {\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    style: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    parentSize: 0 /* Unknown */,\n    rotation: 0,\n    visible: true,\n    svg: \"\",\n    shadows: []\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultSVGProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/Text.tsx\nimport React88, { useEffect as useEffect29, useRef as useRef27 } from \"react\";\n\n// ../../library/src/render/fonts/useFontLoadStatus.tsx\nimport React87 from \"react\";\nfunction useFontLoadStatus(fontSelectors = [], timeout = 5e3) {\n  const missingFontSelectors = fontSelectors.filter((s) => !fontStore.isSelectorLoaded(s));\n  const [fontLoadStatus, setFontLoadStatus] = React87.useState(\n    missingFontSelectors.length ? \"loading\" : \"done\"\n  );\n  React87.useEffect(() => {\n    if (!missingFontSelectors.length) return;\n    setFontLoadStatus(\"loading\");\n    const timer = setTimeout(() => {\n      setFontLoadStatus(\"timeout\");\n    }, timeout);\n    fontStore.loadFonts(missingFontSelectors).then(() => {\n      clearTimeout(timer);\n      setFontLoadStatus(\"done\");\n    });\n  }, [fontSelectors.join(\", \"), missingFontSelectors.join(\", \")]);\n  return fontLoadStatus;\n}\n\n// ../../library/src/render/presentation/Text.tsx\nimport { Fragment as Fragment14, jsx as jsx80, jsxs as jsxs19 } from \"react/jsx-runtime\";\nfunction TextStyleSheet() {\n  React88.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar Text2 = /* @__PURE__ */ React88.forwardRef(function Text3(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const fallbackLayoutRef = useRef27(null);\n  const layoutRef = forwardedRef ?? fallbackLayoutRef;\n  const { navigate, getRoute } = useRouter();\n  const currentRoute = useCurrentRoute();\n  useRoutePreloader(props.preload ?? []);\n  const onCanvas = useIsOnFramerCanvas();\n  const matchesCurrentRoute = useLinkMatchesRoute(props.__link);\n  const fontLoadStatus = useFontLoadStatus(props.fonts);\n  useMeasureLayout(props, layoutRef);\n  const { fonts, __fromCanvasComponent } = props;\n  const prevFontsRef = useRef27([]);\n  const fontsDidChange = !isShallowEqualArray(prevFontsRef.current ?? [], fonts ?? []);\n  prevFontsRef.current = fonts;\n  useEffect29(() => {\n    if (!fontsDidChange || !fonts) return;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!__fromCanvasComponent || !layoutRef.current || RenderTarget.current() !== RenderTarget.canvas) return;\n      if (newlyLoadedFontCount === 0) return;\n      measureClosestComponentContainer(layoutRef.current);\n    });\n  }, [fonts]);\n  const implicitPathVariables = useImplicitPathVariables();\n  const interceptPageLinks = React88.useCallback(\n    (event) => {\n      const anchorElement = findAnchorElement(event.target, layoutRef.current);\n      if (event.metaKey || !navigate || !anchorElement) return;\n      const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n      if (didNavigate) {\n        event.preventDefault();\n      }\n    },\n    [navigate, implicitPathVariables]\n  );\n  useEffect29(() => {\n    const ref = layoutRef.current;\n    if (!ref) return;\n    ref.addEventListener(\"click\", interceptPageLinks);\n    return () => ref.removeEventListener(\"click\", interceptPageLinks);\n  }, [interceptPageLinks]);\n  const rawHTML = React88.useMemo(() => {\n    if (!props.rawHTML || onCanvas || !getRoute || !currentRoute) return props.rawHTML;\n    return replaceFramerPageLinks(props.rawHTML, getRoute, currentRoute, implicitPathVariables);\n  }, [props.rawHTML, getRoute, currentRoute, implicitPathVariables]);\n  return /* @__PURE__ */ jsx80(\n    TextComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      layoutId,\n      parentSize,\n      fontLoadStatus,\n      rawHTML,\n      matchesCurrentRoute\n    }\n  );\n});\nvar TextComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"editorText\");\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n      /** Used by the ComponentContainerContext */\n      __publicField(this, \"renderMain\", (inCodeComponent) => {\n        countNodeRender();\n        const {\n          font,\n          visible,\n          alignment,\n          opacity,\n          id,\n          layoutId,\n          className: className2,\n          transition,\n          variants,\n          name,\n          __fromCanvasComponent,\n          _initialStyle,\n          widthType: _widthType,\n          heightType: _heightType,\n          _usesDOMRect,\n          autoSize,\n          style: styleProp,\n          fontLoadStatus,\n          matchesCurrentRoute,\n          preload: _preload,\n          tabIndex,\n          ...rest\n        } = this.props;\n        if (!visible) {\n          return null;\n        }\n        const isHidden = this.props.isEditable && this.props.environment() === RenderTarget.canvas;\n        const justifyContent = convertVerticalAlignment2(this.props.verticalAlignment);\n        const style = {\n          outline: \"none\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent,\n          opacity: isHidden ? 0 : opacity,\n          flexShrink: 0\n        };\n        if (_initialStyle) {\n          for (const key7 in _initialStyle) {\n            if (key7.startsWith(\"--framer\")) {\n              asRecord(style)[key7] = asRecord(_initialStyle)[key7];\n            }\n          }\n        }\n        const dataProps = {\n          \"data-framer-component-type\": \"Text\",\n          \"data-framer-name\": rest[\"data-framer-name\"] ?? name\n        };\n        if (autoSize) {\n          asRecord(dataProps)[\"data-framer-component-text-autosized\"] = \"true\";\n        }\n        this.collectLayout(style, inCodeComponent);\n        collectFiltersFromProps(this.props, style);\n        collectTextShadowsForProps(this.props, style);\n        if (style.opacity === 1 || style.opacity === void 0) {\n          delete style.opacity;\n        }\n        let rawHTML = this.props.rawHTML;\n        const text = this.getOverrideText() || this.props.text;\n        if (isString(text)) {\n          if (rawHTML) {\n            rawHTML = replaceDraftHTMLWithText(rawHTML, text);\n          } else {\n            rawHTML = `<p style=\"font: ${font}\">${text}</p>`;\n          }\n        }\n        if (this.props.style) {\n          Object.assign(style, this.props.style);\n        }\n        const centeringTransformTemplate = this.transformTemplate;\n        if (centeringTransformTemplate) Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n        if (rawHTML) {\n          style.lineHeight = \"1px\";\n          style.fontSize = \"0px\";\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"loading\") {\n            style.visibility = \"hidden\";\n          }\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"timeout\") {\n            style.backgroundColor = \"rgba(255, 0, 0, 0.3)\";\n          }\n          Object.assign(style, styleProp);\n          if (alignment) asRecord(style)[\"--framer-text-alignment\"] = alignment;\n          const tabIndexProps = getTabIndexProps(tabIndex);\n          return /* @__PURE__ */ jsx80(\n            motion.div,\n            {\n              layoutId,\n              id,\n              ...tabIndexProps,\n              ...dataProps,\n              ...rest,\n              style,\n              transformTemplate: centeringTransformTemplate,\n              dangerouslySetInnerHTML: { __html: rawHTML },\n              \"data-center\": this.props.center,\n              className: cx(className2, matchesCurrentRoute && \"isCurrent\"),\n              transition,\n              variants,\n              ref: this.setElement\n            }\n          );\n        }\n      });\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */, false);\n    }\n    getOverrideText() {\n      const { _forwardedOverrideId, _forwardedOverrides, id } = this.props;\n      const forwardedOverrideId = _forwardedOverrideId ?? id;\n      if (forwardedOverrideId && _forwardedOverrides) {\n        const text = _forwardedOverrides[forwardedOverrideId];\n        if (isString(text)) {\n          return text;\n        }\n      }\n    }\n    render() {\n      return /* @__PURE__ */ jsxs19(Fragment14, { children: [\n        /* @__PURE__ */ jsx80(ComponentContainerContext.Consumer, { children: this.renderMain }),\n        /* @__PURE__ */ jsx80(TextStyleSheet, {})\n      ] });\n    }\n    collectLayout(style, inCodeComponent) {\n      if (this.props.withExternalLayout) return;\n      const frame2 = this.frame;\n      const {\n        rotation,\n        autoSize,\n        positionSticky,\n        positionStickyTop,\n        positionStickyRight,\n        positionStickyBottom,\n        positionStickyLeft,\n        width: externalWidth,\n        height: externalHeight,\n        _usesDOMRect,\n        positionFixed,\n        positionAbsolute\n      } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      const isDOMLayoutAutoSized = _usesDOMRect && (externalWidth === \"auto\" || externalHeight === \"auto\");\n      if (frame2 && !isDOMLayoutAutoSized && RenderTarget.hasRestrictions()) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          // Using \u201Cauto\u201D fixes wrapping problems where our size calculation does not work out well when zooming the\n          // text (due to rendering differences).\n          // TODO: When the `autoSize` prop is removed, it's safe to leave\n          // this at `${frame.width}px`, because all auto cases will be\n          // handled by DOM layout in the `else` side of the conditional\n          width: autoSize ? \"auto\" : `${frame2.width}px`,\n          minWidth: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n      } else {\n        const { left, right, top, bottom } = this.props;\n        let width;\n        let height;\n        if (autoSize) {\n          width = \"auto\";\n          height = \"auto\";\n        } else {\n          if (!isFiniteNumber(left) || !isFiniteNumber(right)) {\n            width = externalWidth;\n          }\n          if (!isFiniteNumber(top) || !isFiniteNumber(bottom)) {\n            height = externalHeight;\n          }\n        }\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n      }\n      const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n      if (positionSticky) {\n        if (!onCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (onCanvas && (positionFixed || positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    // biome-ignore lint/suspicious/useGetterReturn: legacy text component\n    get transformTemplate() {\n      const { _usesDOMRect, widthType, heightType, __fromCanvasComponent } = this.props;\n      if (this.props.transformTemplate) return this.props.transformTemplate;\n      const frame2 = this.frame;\n      const isDOMLayoutAutoSized = _usesDOMRect && (isAutoDimensionType(widthType) || isAutoDimensionType(heightType));\n      const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;\n      if (hasTransformTemplate) return transformTemplate(this.props.center);\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultTextProps\", {\n    opacity: void 0,\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    rotation: 0,\n    visible: true,\n    alignment: void 0,\n    verticalAlignment: \"top\",\n    shadows: [],\n    font: \"16px \" + deviceFont()\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultTextProps,\n    isEditable: false,\n    environment: RenderTarget.current,\n    withExternalLayout: false,\n    fontLoadStatus: \"loading\"\n  }), _a;\n})();\nvar linkTag = \"(?:<a[^>]*>)?\";\nvar linkClosingTag = \"(?:</a>)?\";\nvar outerTag = \"<[^>]+>\";\nvar outerClosingTag = \"</[^>]+>\";\nvar blockTag = \"<(?:div|span)[^>]*>\";\nvar blockClosingTag = \"</(?:div|span)>\";\nvar inlineTag = \"<[^>]+>\";\nvar inlineClosingTag = \"</[^>]+>\";\nvar textContentRegex = /* @__PURE__ */ (() => new RegExp(\n  `^(${linkTag}${outerTag}${blockTag}${inlineTag}).*?(${inlineClosingTag}).*?(${blockClosingTag}${outerClosingTag}${linkClosingTag})$`,\n  //                                              ^^^ this is the content we want to replace\n  //                                                                      ^^^ this is the content we want to discard\n  \"su\"\n  // let the \".\" also match newlines\n))();\nfunction replaceDraftHTMLWithText(rawHTML, text) {\n  return rawHTML.replace(\n    textContentRegex,\n    (_, openingTags, inlineClosingTag2, closingTags) => openingTags + text + inlineClosingTag2 + \"<br>\" + closingTags\n  );\n}\nfunction convertVerticalAlignment2(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction getTabIndexProps(tabIndex) {\n  if (tabIndex === void 0) return {};\n  return { tabIndex };\n}\n\n// ../../library/src/utils/internalId.ts\nvar keys2 = /* @__PURE__ */ new Map();\nvar InternalID = class _InternalID {\n  constructor(id) {\n    this.id = id;\n    __publicField(this, \"_link\", null);\n    __publicField(this, \"_urllink\", null);\n  }\n  add(str) {\n    return _InternalID.forKey(this.id + str);\n  }\n  toString() {\n    return this.id;\n  }\n  get link() {\n    const res = this._link;\n    if (res) return res;\n    return this._link = \"#\" + this.id;\n  }\n  get urlLink() {\n    const res = this._urllink;\n    if (res) return res;\n    return this._urllink = \"url(#\" + this.id + \")\";\n  }\n  static forKey(key7) {\n    let res = keys2.get(key7);\n    if (res) return res;\n    res = new _InternalID(\"a\" + (1e3 + keys2.size) + \"z\");\n    keys2.set(key7, res);\n    return res;\n  }\n};\n\n// ../../library/src/render/types/PathSegment.ts\nvar PathSegmentOuter = /* @__PURE__ */ (() => {\n  const _PathSegment = class _PathSegment {\n    constructor(value) {\n      // #region withClassDiscriminator\n      // NOTE: this implementation carefully copies the implementation of `withClassDiscriminator`\n      // from Vekter. If making changes here, make sure to sync them to `withClassDiscriminator` as well.\n      __publicField(this, \"__class\", \"PathSegment\");\n      // #endregion\n      __publicField(this, \"x\", 0);\n      // The anchor point of the segment.\n      __publicField(this, \"y\", 0);\n      __publicField(this, \"handleMirroring\", \"straight\");\n      __publicField(this, \"handleOutX\", 0);\n      // Describes the out tangent of the segment.\n      __publicField(this, \"handleOutY\", 0);\n      __publicField(this, \"handleInX\", 0);\n      // Describes the in tangent of the segment.\n      __publicField(this, \"handleInY\", 0);\n      __publicField(this, \"radius\", 0);\n      if (value) {\n        Object.assign(this, value);\n      }\n    }\n    merge(value) {\n      return Object.assign(Object.create(Object.getPrototypeOf(this)), this, value);\n    }\n  };\n  __publicField(_PathSegment, \"displayName\", \"WithClassDiscriminatorMixin(PathSegment)\");\n  __publicField(_PathSegment, \"point\", (pathSegment) => {\n    return { x: pathSegment.x, y: pathSegment.y };\n  });\n  __publicField(_PathSegment, \"handleOut\", (pathSegment) => {\n    return { x: pathSegment.handleOutX, y: pathSegment.handleOutY };\n  });\n  __publicField(_PathSegment, \"handleIn\", (pathSegment) => {\n    return { x: pathSegment.handleInX, y: pathSegment.handleInY };\n  });\n  __publicField(_PathSegment, \"calculatedHandleOut\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      default:\n        return { x: pathSegment.x, y: pathSegment.y };\n    }\n  });\n  __publicField(_PathSegment, \"calculatedHandleIn\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n        return Point.subtract(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleIn(pathSegment));\n      default:\n        return _PathSegment.point(pathSegment);\n    }\n  });\n  __publicField(_PathSegment, \"curveDefault\", (points, index) => {\n    if (points.length > 2) {\n      let pointBefore;\n      let pointAfter;\n      if (index === 0) {\n        pointBefore = points[points.length - 1];\n      } else {\n        pointBefore = points[index - 1];\n      }\n      if (index === points.length - 1) {\n        pointAfter = points[0];\n      } else {\n        pointAfter = points[index + 1];\n      }\n      assert(pointBefore, \"pointBefore should be defined\");\n      assert(pointAfter, \"pointAfter should be defined\");\n      const delta = Point.subtract(_PathSegment.point(pointAfter), _PathSegment.point(pointBefore));\n      return { x: delta.x / 4, y: delta.y / 4 };\n    }\n    return { x: 10, y: 10 };\n  });\n  let PathSegment2 = _PathSegment;\n  ;\n  PathSegment2.prototype.__class = \"PathSegment\";\n  return PathSegment2;\n})();\nvar PathSegment = PathSegmentOuter;\n\n// ../../library/src/render/traits/Path.ts\nvar key5 = \"pathSegments\";\nfunction withPath(target) {\n  return key5 in target;\n}\nvar pathDefaults = {\n  pathSegments: [],\n  pathClosed: false\n};\nfunction toSVGPath(withPaths, translate = { x: 0, y: 0 }, canvasMode = RenderTarget.canvas) {\n  let pathElements = [];\n  let paths = [];\n  if (Array.isArray(withPaths)) {\n    paths = withPaths;\n  } else {\n    paths = [withPaths];\n  }\n  paths.forEach((path) => {\n    const { pathClosed, pathSegments } = path;\n    const segmentCount = pathSegments.length;\n    if (segmentCount === 0) return \"\";\n    for (let i = 0; i < segmentCount; i++) {\n      const segment = pathSegments[i];\n      assert(segment, \"Path segment must be defined\");\n      let nextSegment;\n      let prevSegment;\n      const isFirstSegment = i === 0;\n      const isLastSegment = i === segmentCount - 1;\n      if (!isLastSegment) {\n        nextSegment = pathSegments[i + 1];\n      } else if (pathClosed) {\n        nextSegment = pathSegments[0];\n      }\n      if (!isFirstSegment) {\n        prevSegment = pathSegments[i - 1];\n      } else if (pathClosed) {\n        prevSegment = pathSegments[segmentCount - 1];\n      }\n      if (i === 0) {\n        pathElements.push(\"M\");\n      } else if (prevSegment && isStraightCurve(prevSegment, segment)) {\n        pathElements.push(\"L\");\n      }\n      pathElements.push(segment.x + translate.x, segment.y + translate.y);\n      if (nextSegment && !isStraightCurve(segment, nextSegment)) {\n        const handleOut = PathSegment.calculatedHandleOut(segment);\n        const handleIn = PathSegment.calculatedHandleIn(nextSegment);\n        pathElements.push(\n          \"C\",\n          handleOut.x + translate.x,\n          handleOut.y + translate.y,\n          handleIn.x + translate.x,\n          handleIn.y + translate.y\n        );\n      }\n      if (isLastSegment && nextSegment) {\n        if (isStraightCurve(segment, nextSegment)) {\n          pathElements.push(\"Z\");\n        } else {\n          pathElements.push(nextSegment.x + translate.x, nextSegment.y + translate.y, \"Z\");\n        }\n      }\n    }\n  });\n  if (canvasMode === RenderTarget.export || canvasMode === RenderTarget.preview) {\n    pathElements = pathElements.map((value) => isFiniteNumber(value) ? roundedNumberString(value, 3) : value);\n  }\n  return pathElements.join(\" \");\n}\nfunction isStraightCurve(fromSegment, toSegment) {\n  const fromStraight = fromSegment.handleMirroring === \"straight\" || fromSegment.handleOutX === 0 && fromSegment.handleOutY === 0;\n  const toStraight = toSegment.handleMirroring === \"straight\" || toSegment.handleInX === 0 && toSegment.handleInY === 0;\n  return fromStraight && toStraight;\n}\n\n// ../../library/src/render/types/svgElementAttributeDefaults.ts\nvar svgElementAttributeDefaults = {\n  stroke: \"none\",\n  strokeWidth: 1,\n  strokeLinecap: \"butt\",\n  strokeLinejoin: \"miter\",\n  strokeMiterlimit: 4,\n  strokeDasharray: \"0\",\n  strokeDashoffset: 0,\n  strokeOpacity: 1,\n  fill: \"black\",\n  fillRule: \"nonzero\",\n  fillOpacity: 1\n};\n\n// ../../library/src/render/utils/createTransformValues.ts\nfunction createTransformValues(baseTransform, mode) {\n  let { x, y } = baseTransform;\n  const { width, height, rotation } = baseTransform;\n  if (mode === \"resetXY\") {\n    x = 0;\n    y = 0;\n  }\n  return { x, y, width, height, rotation };\n}\nfunction getTransformMode(isRootVectorNode, includeTransform) {\n  if (includeTransform !== void 0) {\n    if (includeTransform) {\n      return \"asIs\";\n    }\n  } else {\n    if (!isRootVectorNode) {\n      return \"asIs\";\n    }\n  }\n  return \"resetXY\";\n}\nfunction transformValues(rect, rotation, isRootVectorNode, includeTransform) {\n  const transformMode = getTransformMode(isRootVectorNode, includeTransform);\n  const baseTransform = { ...rect, rotation: includeTransform === false ? 0 : rotation };\n  const transform2 = createTransformValues(baseTransform, transformMode);\n  return transform2;\n}\n\n// ../../library/src/render/utils/transformString.ts\nfunction transformString2(transform2) {\n  if (transform2 === void 0) {\n    return void 0;\n  }\n  const { x, y, rotation, width, height } = transform2;\n  let result;\n  if (x !== 0 || y !== 0) {\n    result = `translate(${roundedNumberString(x, 3)} ${roundedNumberString(y, 3)})`;\n  }\n  if (rotation !== 0) {\n    const roundedRotation = roundedNumberString(rotation, 4);\n    const roundedWidth = roundedNumberString(width / 2, 3);\n    const roundedHeight = roundedNumberString(height / 2, 3);\n    const rotationString = `rotate(${roundedRotation} ${roundedWidth} ${roundedHeight})`;\n    result = result ? `${result} ${rotationString}` : rotationString;\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/GradientElement.tsx\nimport { Component as Component16 } from \"react\";\nimport { jsx as jsx81 } from \"react/jsx-runtime\";\nvar LinearGradientElement = class extends Component16 {\n  render() {\n    const { id, stops, x1, x2, y1, y2 } = this.props;\n    return /* @__PURE__ */ jsx81(\"linearGradient\", { id, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n      return /* @__PURE__ */ jsx81(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n    }) });\n  }\n};\nvar RadialGradientElement = class extends Component16 {\n  render() {\n    const { centerAnchorX, centerAnchorY, id, widthFactor, heightFactor, stops } = this.props;\n    return /* @__PURE__ */ jsx81(\n      \"radialGradient\",\n      {\n        id,\n        cy: centerAnchorY,\n        cx: centerAnchorX,\n        r: widthFactor,\n        gradientTransform: getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY),\n        children: stops.map((stop, idx) => {\n          return /* @__PURE__ */ jsx81(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n        })\n      }\n    );\n  }\n};\nfunction getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY) {\n  const scaleWidth = widthFactor ? heightFactor / widthFactor : 1e3;\n  return `translate(${centerAnchorX}, ${centerAnchorY}) scale(1 ${scaleWidth}) translate(-${centerAnchorX}, -${centerAnchorY})`;\n}\n\n// ../../library/src/render/presentation/SVGRoot.tsx\nimport React89 from \"react\";\nimport { jsx as jsx82 } from \"react/jsx-runtime\";\nvar SVGRoot = (props) => {\n  const { id, children, left, width, height, top, style, _needsMeasure } = props;\n  const inCodeComponent = React89.useContext(ComponentContainerContext);\n  const ref = React89.useRef(null);\n  useMeasureLayout(\n    {\n      id,\n      // SVGRoot won't be rendered if the node is invisible.\n      visible: true,\n      _needsMeasure\n    },\n    ref\n  );\n  const svgStyle = {\n    position: \"absolute\",\n    width,\n    height,\n    left,\n    top,\n    overflow: \"visible\",\n    display: \"block\",\n    ...style\n  };\n  const svgProps = {\n    // Avoid duplicating IDs when the SVG is rendered through slots. We only need the ID for\n    // measurement so code component descendants don't matter.\n    id: inCodeComponent ? void 0 : id,\n    viewBox: `0 0 ${width} ${height}`,\n    ref\n  };\n  const needsScale = isSafari() ? window.devicePixelRatio !== 1 : window.devicePixelRatio === 1;\n  const needsTranslate = window.devicePixelRatio === 1;\n  if (!needsScale && !needsTranslate) {\n    return /* @__PURE__ */ jsx82(\"svg\", { role: \"presentation\", ...svgProps, style: svgStyle, children });\n  }\n  const svgTransform = needsScale ? { transform: \"scale(2)\" } : void 0;\n  return /* @__PURE__ */ jsx82(\"svg\", { role: \"presentation\", ...svgProps, style: { ...svgStyle, ...svgTransform }, children: /* @__PURE__ */ jsx82(\n    \"g\",\n    {\n      style: {\n        // The default value of transform-origin is 0 0 for all SVG elements except\n        // for root <svg> elements:\n        // https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/transform-origin\n        transformOrigin: \"center\",\n        transform: getShapeTransform(needsScale, needsTranslate, left, top)\n      },\n      children\n    }\n  ) });\n};\nfunction getShapeTransform(needsScale, needsTranslate, left, top) {\n  const l = Math.floor(left) - left;\n  const t = Math.floor(top) - top;\n  const transforms = [];\n  if (needsScale) transforms.push(\"scale(0.5)\");\n  if (needsTranslate && (l || t)) transforms.push(`translate(${l}px, ${t}px)`);\n  return transforms.length ? transforms.join(\" \") : void 0;\n}\n\n// ../../library/src/render/presentation/Vector.tsx\nimport { jsx as jsx83, jsxs as jsxs20 } from \"react/jsx-runtime\";\nvar Vector = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        opacity,\n        calculatedPath,\n        calculatedPathBoundingBox,\n        d,\n        insideStroke,\n        strokeEnabled,\n        strokeClipId,\n        strokeWidth,\n        idAttribute,\n        shadows,\n        name,\n        includeTransform,\n        isRootVectorNode,\n        rotation,\n        id,\n        lineCap,\n        lineJoin,\n        strokeColor,\n        strokeMiterLimit,\n        strokeDashArray,\n        strokeDashOffset,\n        fill,\n        variants,\n        transition,\n        fillOpacity,\n        visible,\n        x,\n        y,\n        width,\n        height\n      } = this.props;\n      if (!visible) return null;\n      if (!id || !strokeClipId) return null;\n      const rotate = this.props.rotate ?? rotation ?? 0;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues(rect, rotate, isRootVectorNode, includeTransform);\n      let vectorFill;\n      let fillAlpha = 0;\n      let imagePattern;\n      let linearGradient;\n      let radialGradient;\n      if (isString(fill) || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        if (fillColor !== \"transparent\") {\n          vectorFill = fillColor;\n          fillAlpha = ConvertColor.getAlpha(vectorFill);\n        }\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        linearGradient = elementPropertiesForLinearGradient(fill, id);\n        vectorFill = `url(#${linearGradient.id})`;\n        fillAlpha = 1;\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        radialGradient = elementPropertiesForRadialGradient(fill, id);\n        vectorFill = `url(#${radialGradient.id})`;\n        fillAlpha = 1;\n      } else if (BackgroundImage.isImageObject(fill)) {\n        imagePattern = imagePatternPropsForFill(fill, transform2, id, includeTransform);\n        if (imagePattern) {\n          vectorFill = `url(#${imagePattern.id})`;\n          fillAlpha = 1;\n        }\n      }\n      if (vectorFill === svgElementAttributeDefaults.fill) {\n        vectorFill = void 0;\n      }\n      if (vectorFill === void 0) {\n        vectorFill = \"transparent\";\n      }\n      const fillEnabled = vectorFill !== void 0 && vectorFill !== \"transparent\" && fillAlpha !== 0;\n      if (!fillEnabled && !strokeEnabled) {\n        fillAlpha = 1;\n      }\n      let mainElement;\n      let strokeClipPath = null;\n      let shapeReference = null;\n      let strokeElement = null;\n      let pathTranslate;\n      let elementTransform;\n      const translatePaths = target === RenderTarget.export;\n      if (transform2.rotation === 0 && translatePaths) {\n        pathTranslate = transform2;\n      } else {\n        pathTranslate = { x: 0, y: 0 };\n        elementTransform = transformString2(transform2);\n      }\n      const pathAttributes = {\n        d: d ?? toSVGPath(calculatedPath, pathTranslate, target),\n        transform: elementTransform\n      };\n      const svgStrokeAttributes = {};\n      if (strokeEnabled && strokeWidth !== 0) {\n        svgStrokeAttributes.strokeWidth = strokeWidth;\n        svgStrokeAttributes.stroke = strokeColor;\n        svgStrokeAttributes.strokeLinecap = lineCap;\n        svgStrokeAttributes.strokeLinejoin = lineJoin;\n        if (lineJoin === \"miter\") {\n          svgStrokeAttributes.strokeMiterlimit = strokeMiterLimit;\n        }\n        svgStrokeAttributes.strokeDasharray = strokeDashArray;\n        if (strokeDashOffset !== 0) {\n          svgStrokeAttributes.strokeDashoffset = strokeDashOffset;\n        }\n      }\n      for (const key7 in svgElementAttributeDefaults) {\n        if (asRecord(svgStrokeAttributes)[key7] === asRecord(svgElementAttributeDefaults)[key7]) {\n          asRecord(svgStrokeAttributes)[key7] = void 0;\n        }\n      }\n      const internalShapeId = InternalID.forKey(id);\n      const internalStrokeClipId = InternalID.forKey(strokeClipId);\n      const shadow = shadowForShape(\n        shadows,\n        // Shadow filter uses 'objectBoundingBox' as filter units, so calculations should be\n        // relative to the referenced object itself (path), instead of the node rect, which\n        // can be larger than the path bounding box.\n        calculatedPathBoundingBox,\n        internalShapeId,\n        Boolean(fill),\n        strokeEnabled,\n        strokeWidth,\n        internalStrokeClipId,\n        svgStrokeAttributes\n      );\n      const currentName = target === RenderTarget.preview ? name || void 0 : void 0;\n      if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {\n        pathAttributes.id = internalShapeId.id;\n        shapeReference = /* @__PURE__ */ jsx83(motion.path, { ...{ ...pathAttributes }, variants, transition });\n        if (shadow.needsStrokeClip || insideStroke) {\n          strokeClipPath = /* @__PURE__ */ jsx83(\"clipPath\", { id: internalStrokeClipId.id, children: /* @__PURE__ */ jsx83(\"use\", { xlinkHref: internalShapeId.link }) });\n        }\n        if (shadow.insetElement !== null && strokeEnabled && strokeWidth && strokeWidth > 0) {\n          mainElement = /* @__PURE__ */ jsx83(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              strokeOpacity: \"0\",\n              name: currentName\n            }\n          );\n          strokeElement = /* @__PURE__ */ jsx83(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              clipPath: internalStrokeClipId.urlLink,\n              fill: \"transparent\",\n              ...svgStrokeAttributes,\n              strokeWidth\n            }\n          );\n        } else {\n          mainElement = /* @__PURE__ */ jsx83(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              clipPath: internalStrokeClipId.urlLink,\n              ...svgStrokeAttributes,\n              strokeWidth,\n              name: currentName\n            }\n          );\n        }\n      } else {\n        pathAttributes.id = idAttribute;\n        mainElement = /* @__PURE__ */ jsx83(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            name: currentName,\n            fillOpacity,\n            variants,\n            transition\n          }\n        );\n      }\n      const imagePatternElement = imagePattern ? /* @__PURE__ */ jsx83(\n        ImagePatternElement,\n        {\n          ...imagePattern,\n          repeat: BackgroundImage.isImageObject(fill) && fill.fit === \"tile\"\n        }\n      ) : void 0;\n      let gradient;\n      if (linearGradient) {\n        gradient = /* @__PURE__ */ jsx83(LinearGradientElement, { ...linearGradient });\n      } else if (radialGradient) {\n        gradient = /* @__PURE__ */ jsx83(RadialGradientElement, { ...radialGradient });\n      }\n      let defs = null;\n      if (shapeReference || strokeClipPath || shadow.definition && shadow.definition.length || gradient || imagePatternElement) {\n        defs = /* @__PURE__ */ jsxs20(\"defs\", { children: [\n          shapeReference,\n          strokeClipPath,\n          shadow.definition,\n          gradient,\n          imagePatternElement\n        ] });\n      }\n      const opacityValue = opacity ?? (variants ? 1 : void 0);\n      if (defs === null && shadow.outsetElement === null && shadow.insetElement === null && strokeElement === null) {\n        mainElement = /* @__PURE__ */ jsx83(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            fillOpacity,\n            opacity: opacityValue,\n            variants,\n            transition,\n            name: currentName\n          }\n        );\n        return this.renderElement(mainElement);\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsxs20(motion.g, { opacity: opacityValue, variants, transition, children: [\n          defs,\n          shadow.maskElement,\n          shadow.outsetElement,\n          mainElement,\n          shadow.insetElement,\n          strokeElement\n        ] })\n      );\n    }\n    renderElement(element) {\n      const { id, isRootVectorNode, width, height, includeTransform, left, top, style, _needsMeasure } = this.props;\n      if (!isRootVectorNode) return element;\n      if (includeTransform) return element;\n      return /* @__PURE__ */ jsx83(\n        SVGRoot,\n        {\n          id,\n          width,\n          height,\n          left,\n          top,\n          style,\n          _needsMeasure,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorProps\", {\n    isRootVectorNode: false,\n    name: null,\n    includeTransform: void 0,\n    defaultFillColor: void 0,\n    defaultStrokeColor: void 0,\n    defaultStrokeWidth: void 0,\n    defaultStrokeAlignment: \"center\",\n    width: 100,\n    height: 100,\n    x: 0,\n    y: 0,\n    left: 0,\n    top: 0,\n    rotation: 0,\n    rotate: void 0,\n    opacity: void 0,\n    calculatedPath: [],\n    calculatedPathBoundingBox: { x: 0, y: 0, width: 0, height: 0 },\n    d: void 0,\n    insideStroke: false,\n    strokeEnabled: true,\n    strokeClipId: void 0,\n    strokeWidth: void 0,\n    idAttribute: void 0,\n    transition: void 0,\n    shadows: [],\n    strokeAlpha: 1,\n    lineCap: \"butt\",\n    strokeColor: \"#0AF\",\n    lineJoin: \"miter\",\n    strokeMiterLimit: 4,\n    strokeDashArray: \"0\",\n    strokeDashOffset: 0,\n    fill: \"rgba(0,170,255,0.5)\",\n    visible: void 0\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/VectorGroup.tsx\nimport { jsx as jsx84 } from \"react/jsx-runtime\";\nvar VectorGroup = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        name: nameProp,\n        opacity,\n        visible,\n        targetName,\n        defaultName,\n        children,\n        includeTransform,\n        x,\n        y,\n        width,\n        height,\n        rotation,\n        isRootVectorNode\n      } = this.props;\n      if (!visible) return null;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues(rect, rotation, isRootVectorNode, includeTransform);\n      const addNames = target === RenderTarget.preview;\n      let name = void 0;\n      if (addNames) {\n        if (targetName) {\n          name = targetName;\n        } else if (nameProp) {\n          name = nameProp;\n        } else {\n          name = defaultName;\n        }\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsx84(\"g\", { transform: transformString2(transform2), ...{ name, opacity }, children })\n      );\n    }\n    renderElement(element) {\n      const { id, isRootVectorNode, width, height, includeTransform, left, top, style, _needsMeasure } = this.props;\n      if (!isRootVectorNode) return element;\n      if (includeTransform) return element;\n      return /* @__PURE__ */ jsx84(\n        SVGRoot,\n        {\n          id,\n          left,\n          top,\n          width,\n          height,\n          style,\n          _needsMeasure,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorGroupProps\", {\n    name: void 0,\n    opacity: void 0,\n    visible: true,\n    x: 0,\n    y: 0,\n    left: 0,\n    top: 0,\n    rotation: 0,\n    width: 100,\n    height: 100,\n    targetName: void 0,\n    defaultName: \"\",\n    isRootVectorNode: false,\n    includeTransform: void 0\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorGroupProps\n  }), _a;\n})();\n\n// ../../library/src/render/traits/Shape.ts\nvar key6 = \"calculatedPaths\";\nfunction withShape(target) {\n  if (!isObject2(target)) return false;\n  return key6 in target;\n}\n\n// ../../library/src/render/types/Size.ts\nvar Size = /* @__PURE__ */ (() => {\n  function Size2(width, height) {\n    return { width, height };\n  }\n  Size2.equals = (sizeA, sizeB) => {\n    if (sizeA === sizeB) return true;\n    if (!sizeA || !sizeB) return false;\n    return sizeA.width === sizeB.width && sizeA.height === sizeB.height;\n  };\n  Size2.update = (fromSize, toSize, keepAspectRatio = false) => {\n    let { width, height } = fromSize;\n    const sizeRatio = width / height;\n    width = toSize.width !== void 0 ? toSize.width : width;\n    height = toSize.height !== void 0 ? toSize.height : height;\n    if (keepAspectRatio) {\n      if (toSize.width === void 0 && toSize.height !== void 0) {\n        width = toSize.height * sizeRatio;\n      }\n      if (toSize.width !== void 0 && toSize.height === void 0 && sizeRatio !== 0) {\n        height = toSize.width / sizeRatio;\n      }\n    }\n    return { width, height };\n  };\n  Size2.subtract = (sizeA, sizeB) => {\n    return {\n      width: Math.max(0, sizeA.width - sizeB.width),\n      height: Math.max(0, sizeA.height - sizeB.height)\n    };\n  };\n  Size2.zero = Size2(0, 0);\n  Size2.isZero = function(size) {\n    return size === Size2.zero || size.width === 0 && size.height === 0;\n  };\n  Size2.defaultIfZero = function(width, height, size) {\n    if (Size2.isZero(size)) {\n      return Size2(width, height);\n    }\n    return size;\n  };\n  return Size2;\n})();\n\n// ../../library/src/render/utils/annotateTypeOnStringify.ts\nfunction annotateTypeOnStringify(ctor, typeName) {\n  const existingToJSON = ctor.prototype.toJSON;\n  ctor.prototype.toJSON = function() {\n    const base = existingToJSON ? existingToJSON.apply(this) : this;\n    return Object.assign({}, base, { __type__: typeName });\n  };\n  return ctor;\n}\nfunction isOfAnnotatedType(object, typeName) {\n  return object && object.__type__ && object.__type__ === typeName;\n}\n\n// ../../library/src/render/utils/getLoadingLazyAtYPosition.ts\nvar LOADING_LAZY_THRESHOLD = 1e3;\nfunction getLoadingLazyAtYPosition(offset) {\n  return offset > LOADING_LAZY_THRESHOLD ? \"lazy\" : void 0;\n}\n\n// ../../library/src/render/utils/gradientForShape.tsx\nfunction gradientForShape(nodeId, node) {\n  if (LinearGradient.isLinearGradient(node.fill)) {\n    return elementPropertiesForLinearGradient(node.fill, nodeId);\n  }\n  if (RadialGradient.isRadialGradient(node.fill)) {\n    return elementPropertiesForRadialGradient(node.fill, nodeId);\n  }\n  return void 0;\n}\n\n// ../../library/src/render/utils/throttle.ts\nfunction throttle(fn, time2) {\n  let previous = 0;\n  let timeout;\n  const later = (...args) => {\n    previous = Date.now();\n    timeout = void 0;\n    fn(...args);\n  };\n  return (...args) => {\n    const now = Date.now();\n    const remaining = time2 - (now - previous);\n    if (remaining <= 0 || remaining > time2) {\n      if (timeout) {\n        safeWindow.clearTimeout(timeout);\n        timeout = void 0;\n      }\n      previous = now;\n      fn(...args);\n    } else if (!timeout) {\n      timeout = safeWindow.setTimeout(later, remaining, ...args);\n    }\n  };\n}\n\n// ../../library/src/utils/addActionControls.ts\nfunction addActionControls(action, title, controls) {\n  runtime.addActionControls(action, title, controls);\n}\n\n// ../../library/src/utils/addFonts.ts\nfunction addFonts(component, passedFonts, flags) {\n  const fonts = convertMixedFontArrayToFontBundles(passedFonts);\n  if (!(flags == null ? void 0 : flags.supportsExplicitInterCodegen) && // Only emit an `explicitInter: false` bundle if we don\u2019t already have one.\n  !fonts.some((font) => font.explicitInter === false)) {\n    fonts.push({ explicitInter: false, fonts: [] });\n  }\n  Object.assign(component, { fonts });\n}\nfunction getFonts(component) {\n  if (!component) return emptyArray();\n  const fonts = component.fonts;\n  return fonts ?? emptyArray();\n}\nfunction getFontsFromSharedStyle(fonts) {\n  if (fonts.length === 0) return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction getFontsFromComponentPreset(fonts) {\n  if (fonts.length === 0) return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction convertMixedFontArrayToFontBundles(fonts) {\n  const oldFontBundle = { explicitInter: false, fonts: [] };\n  const fontBundles = [];\n  for (const fontOrBundle of fonts) {\n    if (isComponentFontBundle(fontOrBundle)) {\n      fontBundles.push(fontOrBundle);\n    } else {\n      oldFontBundle.fonts.push(upgradeComponentFontV1(fontOrBundle));\n    }\n  }\n  if (oldFontBundle.fonts.length > 0) fontBundles.push(oldFontBundle);\n  return fontBundles;\n}\nvar componentFontBundleKey = \"explicitInter\";\nfunction isComponentFontBundle(font) {\n  return componentFontBundleKey in font;\n}\nfunction upgradeComponentFontV1(font) {\n  let source;\n  if (font.url.startsWith(\"https://fonts.gstatic.com/s/\")) {\n    source = \"google\" /* Google */;\n  } else if (font.url.startsWith(\"https://framerusercontent.com/third-party-assets/fontshare/\")) {\n    source = \"fontshare\" /* Fontshare */;\n  } else {\n    source = \"custom\" /* Custom */;\n  }\n  return {\n    ...font,\n    source\n  };\n}\n\n// ../../library/src/utils/withPerformanceMarks.ts\nfunction withPerformanceMarks(prefix2, callback) {\n  const markStart = `${prefix2}-start`;\n  performance.mark(markStart);\n  callback();\n  const markEnd = `${prefix2}-end`;\n  performance.mark(markEnd);\n  performance.measure(prefix2, markStart, markEnd);\n}\n\n// ../../library/src/utils/network.ts\nfunction loadJSON(url) {\n  return fetch(url, { mode: \"cors\" }).then((res) => res.json());\n}\n\n// ../../library/src/utils/inspectObjectType.ts\nfunction inspectObjectType(item) {\n  let className2;\n  if ((item.constructor !== null ? item.constructor.name : void 0) !== null && (item.constructor !== null ? item.constructor.name : void 0) !== \"Object\") {\n    return item.constructor.name;\n  }\n  const extract = function(str) {\n    if (!str) {\n      return null;\n    }\n    const regex2 = /\\[object (\\w+)\\]/u;\n    const match = regex2.exec(str);\n    if (match) {\n      return match[1];\n    }\n    return null;\n  };\n  if (item.toString) {\n    className2 = extract(item.toString());\n    if (className2) {\n      return className2;\n    }\n  }\n  if (item.constructor !== null ? item.constructor.toString : void 0) {\n    className2 = extract(item.constructor !== null ? item.constructor.toString() : void 0);\n    if (className2) {\n      return className2.replace(\"Constructor\", \"\");\n    }\n  }\n  return \"Object\";\n}\n\n// ../../library/src/utils/inspect.ts\nfunction inspect(item, max, l) {\n  if (max === void 0) {\n    max = 5;\n  }\n  if (l === void 0) {\n    l = 0;\n  }\n  if (item === null) {\n    return \"null\";\n  }\n  if (item === void 0) {\n    return \"undefined\";\n  }\n  if (isObject2(item) && isFunction(item.toInspect)) {\n    return item.toInspect();\n  }\n  if (isString(item)) {\n    return `\"${item}\"`;\n  }\n  if (isNumber(item)) {\n    return `${item}`;\n  }\n  if (isFunction(item)) {\n    let code = item.toString().slice(\"function \".length).replace(/\\n/gu, \"\").replace(/\\s+/gu, \" \");\n    const limit = 50;\n    if (code.length > limit && l > 0) {\n      code = `${code.slice(0, limit + 1).trim()}\\u2026 }`;\n    }\n    return `<Function ${code}>`;\n  }\n  if (isArray(item)) {\n    if (l > max) {\n      return \"[...]\";\n    }\n    return `[${item.map((i) => inspect(i, max, (l || 0) + 1)).join(\", \")}]`;\n  }\n  if (isObject2(item)) {\n    let objectInfo;\n    const objectType = inspectObjectType(item);\n    if (/HTML\\w+?Element/u.test(objectType)) {\n      return `<${objectType}>`;\n    }\n    if (l > max) {\n      objectInfo = \"{...}\";\n    } else {\n      const itemKeys = Object.keys(item);\n      objectInfo = `{${itemKeys.map((k) => `${k}:${inspect(item[k], max, (l || 0) + 1)}`).join(\", \")}}`;\n    }\n    if (objectType === \"Object\") {\n      return objectInfo;\n    }\n    return `<${objectType} ${objectInfo}>`;\n  }\n  return `${item}`;\n}\n\n// ../../library/src/utils/print.ts\nfunction print(...args) {\n  const line = args.map((arg) => {\n    return inspect(arg);\n  }).join(\", \");\n  console.log(line);\n}\n\n// ../../library/src/utils/useInitialRouteComponent.ts\nimport { useEffect as useEffect30, useState as useState11 } from \"react\";\nfunction initialRouteComponent(component) {\n  if (!component) return null;\n  if (withPreload(component)) return null;\n  return component;\n}\nfunction useInitialRouteComponent(routes, homeNodeId) {\n  var _a;\n  const InitialRouteComponent = (_a = routes[homeNodeId]) == null ? void 0 : _a.page;\n  const [RouteComponent, setRouteComponent] = useState11(\n    initialRouteComponent(InitialRouteComponent)\n  );\n  useEffect30(() => {\n    if (withPreload(InitialRouteComponent)) {\n      void InitialRouteComponent.preload().then(setRouteComponent);\n    }\n  }, []);\n  return RouteComponent;\n}\n\n// ../../library/package.json\nvar package_default = {\n  name: \"framer\",\n  version: \"2.4.1\",\n  private: true,\n  type: \"module\",\n  author: \"Framer\",\n  license: \"MIT\",\n  scripts: {\n    coverage: \"jest --coverage\",\n    lint: \"eslint ./src --ext .ts,.tsx --format gha-codeframe --quiet --cache\",\n    \"lint:ci\": \"yarn lint --cache-strategy content --cache-location $HOME/.cache/eslint/framer-library\",\n    \"lint:fix\": \"yarn lint --fix\",\n    test: \"jest\",\n    watch: \"jest --watch\",\n    postinstall: \"node postinstall.cjs\"\n  },\n  dependencies: {\n    eventemitter3: \"^5.0.1\",\n    fontfaceobserver: \"2.2.0\",\n    \"hoist-non-react-statics\": \"^3.3.2\",\n    hsluv: \"^1.0.1\"\n  },\n  devDependencies: {\n    \"@juggle/resize-observer\": \"^3.4.0\",\n    \"@microsoft/api-extractor\": \"^7.52.3\",\n    \"@testing-library/dom\": \"^8.19.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/dom-navigation\": \"^1.0.5\",\n    \"@types/fontfaceobserver\": \"2.1\",\n    \"@types/google.fonts\": \"1.0\",\n    \"@types/node\": \"22.17\",\n    \"@types/react\": \"18.2\",\n    \"@types/react-dom\": \"18.2\",\n    \"@types/yargs\": \"^17.0.33\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.40.0\",\n    \"@typescript-eslint/parser\": \"^8.40.0\",\n    chalk: \"^4.1.2\",\n    eslint: \"^8.57.1\",\n    \"eslint-plugin-framer-studio\": \"workspace:*\",\n    immutable: \"^3.8.2\",\n    jest: \"29.4.1\",\n    \"jest-diff\": \"^29.3.1\",\n    \"jest-environment-jsdom\": \"^29.3.1\",\n    \"jest-environment-jsdom-global\": \"^4.0.0\",\n    \"jest-junit\": \"^15.0.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    semver: \"^7.7.1\",\n    typescript: \"^5.9.2\",\n    yargs: \"^17.7.2\"\n  },\n  peerDependencies: {\n    \"framer-motion\": \">=12.14.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  tsdoc: {\n    tsdocFlavor: \"AEDoc\"\n  },\n  browserslist: [\n    \"extends @framer/browserslist-config/sites\"\n  ]\n};\n\n// ../../library/src/version.ts\nvar version = /* @__PURE__ */ (() => package_default.version)();\n\n// ../../library/src/animation/Motion/addChildHack.ts\nMotionValue.prototype.addChild = function({ transformer = (v) => v }) {\n  const child = motionValue(transformer(this.get()));\n  this.onChange((v) => child.set(transformer(v)));\n  return child;\n};\n\n// ../../library/src/indexInternal.ts\nif (false) {\n  MainLoop2.start();\n}\nexport {\n  AnchorLinkTarget,\n  Animatable,\n  AnimatePresence,\n  AnimateSharedLayout,\n  AnyInterpolation,\n  AsyncMotionValueAnimation,\n  AutomaticLayoutIds,\n  BackgroundImage,\n  BezierAnimator,\n  BoxShadow,\n  ChildrenCanSuspend,\n  Color,\n  ColorFormat,\n  ColorMixModelType,\n  ComponentContainerContext,\n  ComponentPresetsConsumer,\n  ComponentPresetsProvider,\n  ComponentViewportProvider,\n  ConstraintMask,\n  ConstraintValues,\n  Container,\n  ControlType,\n  ConvertColor,\n  CustomCursorHost,\n  CustomProperties,\n  CycleVariantState,\n  DOM,\n  DOMKeyframesResolver,\n  Data,\n  DataContext,\n  DataObserver,\n  DataObserverContext,\n  DeprecatedComponentContainer,\n  DeprecatedFrameWithEvents,\n  DeprecatedLayoutGroupContext,\n  Device,\n  DeviceCodeComponent,\n  DimensionType,\n  DragControls,\n  Draggable,\n  EmptyState,\n  ErrorPlaceholder,\n  Fetcher,\n  FlatTree,\n  Floating,\n  FontSourceNames,\n  FormBooleanInput,\n  FormContainer,\n  FormPlainTextInput2 as FormPlainTextInput,\n  FormSelect,\n  Frame,\n  FrameWithMotion,\n  FramerAnimation,\n  FramerEvent,\n  FramerEventListener,\n  FramerEventSession,\n  GamepadContext,\n  GeneratedComponentContext,\n  GracefullyDegradingErrorBoundary,\n  GroupAnimation,\n  GroupAnimationWithThen,\n  Image2 as Image,\n  Instance,\n  InternalID,\n  JSAnimation,\n  KeyframeResolver,\n  Layer,\n  LayoutGroup,\n  DeprecatedLayoutGroupContext as LayoutGroupContext,\n  LayoutIdContext,\n  LazyMotion,\n  LazyValue,\n  LibraryFeaturesProvider,\n  Line,\n  LinearGradient,\n  Link,\n  MainLoop,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionSetup,\n  MotionValue,\n  NativeAnimation,\n  NativeAnimationExtended,\n  NativeAnimationWrapper,\n  NavigateTo,\n  NavigationWrapper as Navigation,\n  NavigationCallbackProvider,\n  NavigationConsumer,\n  NavigationTransitionType,\n  NotFoundError,\n  ObservableObject,\n  Page3 as Page,\n  PageEffectsProvider,\n  PageRoot,\n  ParentSizeState,\n  PathSegment,\n  PathVariablesContext,\n  Point,\n  Polygon,\n  PresenceContext,\n  PropertyOverrides2 as PropertyOverrides,\n  PropertyStore,\n  QueryCache,\n  QueryEngine,\n  RadialGradient,\n  Rect,\n  RenderTarget,\n  namespace_exports as Reorder,\n  ResolveLinks,\n  RichText,\n  SSRVariants,\n  SVG,\n  Scroll,\n  Shadow,\n  Size,\n  SmartComponentScopedContainer,\n  SpringAnimator,\n  Stack,\n  StyleSheetContext,\n  SubscriptionManager,\n  SwitchLayoutGroupContext,\n  Text2 as Text,\n  ValueInterpolation,\n  VariantSelector,\n  Vector,\n  VectorGroup,\n  ViewTransitionBuilder,\n  VisualElement,\n  WillChangeMotionValue,\n  WindowContext,\n  WithNavigator,\n  WithOverride,\n  _injectRuntime,\n  acceleratedValues,\n  activeAnimations,\n  addActionControls,\n  addAttrValue,\n  addFonts,\n  addPointerEvent,\n  addPointerInfo,\n  addPropertyControls,\n  addScaleCorrector,\n  addStyleValue,\n  addUniqueItem,\n  alpha,\n  analyseComplexValue,\n  animate2 as animate,\n  animateMini,\n  animateValue,\n  animateView,\n  animateVisualElement,\n  animationControls,\n  animationMapKey,\n  animations,\n  annotateTypeOnStringify,\n  anticipate,\n  applyPxDefaults,\n  attachSpring,\n  attrEffect,\n  backIn,\n  backInOut,\n  backOut,\n  backgroundImageFromProps,\n  buildTransform,\n  calcGeneratorDuration,\n  calcLength,\n  calculateRect,\n  callEach,\n  cancelFrame,\n  cancelMicrotask,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  clampRGB,\n  collectMotionValues,\n  collectVisualStyleFromProps,\n  color,\n  combinedCSSRulesForPreview,\n  complex,\n  constraintsEnabled,\n  convertOffsetToTimes,\n  convertPropsToDeviceOptions,\n  createBox,\n  createData,\n  createFramerPageLink,\n  createGeneratorEasing,\n  createRenderBatcher,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cssBackgroundSize,\n  cssCollector,\n  cubicBezier,\n  cubicBezierAsString,\n  cx,\n  debounce,\n  defaultDeviceProps,\n  defaultEasing,\n  defaultOffset,\n  defaultTransformValue,\n  defaultValueTypes,\n  degrees,\n  degreesToRadians,\n  delay,\n  devicePresets,\n  dimensionValueTypes,\n  disableInstantTransitions,\n  dispatchKeyDownEvent,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  easingDefinitionToFunction,\n  environment,\n  executeInRenderEnvironment,\n  fillOffset,\n  fillWildcards,\n  filterProps,\n  findDimensionValueType,\n  findValueType,\n  finiteNumber,\n  flushKeyframeResolvers,\n  fontStore,\n  forceLayerBackingWithCSSProperties,\n  fraction,\n  frame,\n  frameData,\n  frameFromElement,\n  frameFromElements,\n  frameSteps,\n  framerAppearAnimationScriptKey,\n  framerAppearEffects,\n  framerAppearIdKey,\n  framerAppearTransformTemplateToken,\n  framerCSSMarker,\n  generateLinearEasing,\n  getAnimatableNone,\n  getAnimationMap,\n  getComponentSize,\n  getComputedStyle2 as getComputedStyle,\n  getDefaultValueType,\n  getDevicePreset,\n  getEasingForSegment,\n  getFonts,\n  getFontsFromComponentPreset,\n  getFontsFromSharedStyle,\n  getLoadingLazyAtYPosition,\n  getMeasurableCodeComponentChildren,\n  getMixer,\n  getPropertyControls,\n  getValueAsType,\n  getValueTransition,\n  getVariableValue,\n  getWhereExpressionFromPathVariables,\n  gradientForShape,\n  hasWarned,\n  hex,\n  hover,\n  hsla,\n  hslaToRgba,\n  imagePatternPropsForFill,\n  imageUrlForAsset,\n  inView,\n  inertia,\n  inferInitialRouteFromPath,\n  injectComponentCSSRules,\n  installFlexboxGapWorkaroundIfNeeded,\n  interpolate,\n  invariant,\n  invisibleValues,\n  isAnimatable,\n  isBezierDefinition,\n  isBrowser,\n  isCSSVariableName,\n  isCSSVariableToken,\n  isDesignDefinition,\n  isDragActive,\n  isDragging,\n  isEasingArray,\n  isEqual,\n  isFiniteNumber,\n  isFractionDimension,\n  isFramerGamepadKeydownData,\n  isFramerPageLink,\n  isGapEnabled,\n  isGenerator,\n  isHTMLElement,\n  isMotionComponent,\n  isMotionValue2 as isMotionValue,\n  isNodeOrChild,\n  isNumericalString,\n  isObject,\n  isOfAnnotatedType,\n  isOverride,\n  isPrimaryPointer,\n  isReactDefinition,\n  isRelativeNumber,\n  isSVGElement,\n  isSVGSVGElement,\n  isShallowEqualArray,\n  isStaticRenderer,\n  isStraightCurve,\n  isValidMotionProp,\n  isWaapiSupportedEasing,\n  isZeroValueString,\n  keyframes,\n  lazy,\n  loadFont,\n  loadJSON,\n  localPackageFallbackIdentifier,\n  localShadowFrame,\n  m,\n  makePaddingString,\n  makeUseVisualState,\n  mapEasingToNativeEasing,\n  mapValue,\n  markHydrationStart,\n  maxGeneratorDuration,\n  memo,\n  memoize2 as memoize,\n  microtask,\n  millisecondsToSeconds,\n  mirrorEasing,\n  mix,\n  mixArray,\n  mixColor,\n  mixComplex,\n  mixImmediate,\n  mixLinearColor,\n  mixNumber,\n  mixObject,\n  mixVisibility,\n  modulate,\n  motion,\n  motionValue,\n  moveItem,\n  nestedLinksCollector,\n  noop,\n  number,\n  numberValueTypes,\n  observeTimeline,\n  optimizeAppear,\n  optimizeAppearTransformTemplate,\n  optimizedAppearDataAttribute,\n  paddingFromProps,\n  parseCSSVariable,\n  parseFramerPageLink,\n  parseValueFromTransform,\n  patchRoutesForABTesting,\n  pathDefaults,\n  percent,\n  pipe,\n  positionalKeys,\n  preloadImage,\n  press,\n  print,\n  progress,\n  progressPercentage,\n  propEffect,\n  propsForLink,\n  pushLoadMoreHistory,\n  px,\n  readTransformValue,\n  recordStats,\n  removeHiddenBreakpointLayers,\n  removeHiddenBreakpointLayersV2,\n  removeItem,\n  resize,\n  resolveElements,\n  resolveLink,\n  resolveMotionValue,\n  resolvePageScope,\n  reverseEasing,\n  rgbUnit,\n  rgba,\n  roundWithOffset,\n  roundedNumber,\n  roundedNumberString,\n  safeCSSValue,\n  scale,\n  scroll,\n  scrollInfo,\n  secondsToMilliseconds,\n  setDragLock,\n  setGlobalRenderEnvironment,\n  setStyle,\n  sharedSVGManager,\n  shouldOpenLinkInNewTab,\n  spring,\n  springValue,\n  stagger,\n  startAnimation,\n  startOptimizedAppearAnimation,\n  startWaapiAnimation,\n  statsBuffer,\n  steps,\n  styleEffect,\n  supportedWaapiEasing,\n  supportsBrowserAnimation,\n  supportsFlags,\n  supportsLinearEasing,\n  supportsPartialKeyframes,\n  supportsScrollTimeline,\n  svgEffect,\n  sync,\n  systemFontFamilyName,\n  testValueType,\n  throttle,\n  time,\n  toFlexDirection,\n  toJustifyOrAlignment,\n  toSVGPath,\n  transform,\n  transformPropOrder,\n  transformProps,\n  transformString2 as transformString,\n  transformTemplate,\n  transformValue,\n  transformValueTypes,\n  turnOffReactEventHandling,\n  unwrapMotionComponent,\n  useActiveTargetCallback,\n  useActiveVariantCallback,\n  useAddVariantProps,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useBreakpointVariants,\n  useComponentViewport,\n  useConstant,\n  useCurrentPathVariables,\n  useCurrentRoute,\n  useCurrentRouteId,\n  useCustomCursors,\n  useCycle,\n  useDataRecord,\n  useAnimatedState as useDeprecatedAnimatedState,\n  useInvertedScale as useDeprecatedInvertedScale,\n  useDomEvent,\n  useDragControls,\n  useDynamicRefs,\n  useElementScroll,\n  useForceUpdate,\n  useGamepad,\n  useHotkey,\n  useHydratedBreakpointVariants,\n  useInView,\n  useInitialRouteComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsInCurrentNavigationTarget,\n  useIsOnFramerCanvas,\n  useIsPresent,\n  useIsStaticRenderer,\n  useIsomorphicLayoutEffect,\n  useLoadMorePaginatedQuery,\n  useLoadMorePagination,\n  useLocale,\n  useLocaleCode,\n  useLocaleInfo,\n  useLocalesForCurrentRoute,\n  useLocalizationInfo,\n  useMeasureLayout,\n  useMetadata,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  useNavigate,\n  useNavigation,\n  useObserveData,\n  useOnAppear,\n  useOnCurrentTargetChange,\n  useOnVariantChange,\n  useOverlayState,\n  usePageEffects,\n  usePrefetch,\n  usePreloadQuery,\n  usePresence,\n  usePresenceData,\n  usePrototypeNavigate,\n  useProvidedWindow,\n  useQueryData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useRenderEnvironment,\n  useResetProjection,\n  useRoute,\n  useRouteAnchor,\n  useRouteElementId,\n  useRouteHandler,\n  useRouter,\n  useSVGTemplate,\n  useScroll,\n  useSiteRefs,\n  useSpring,\n  useTime,\n  useTracking,\n  useTransform,\n  useUnmountEffect,\n  useVariantState,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  valueToDimensionType,\n  velocityPerSecond,\n  version,\n  vh,\n  visualElementStore,\n  vw,\n  warnOnce,\n  warning,\n  withCSS,\n  withCodeBoundaryForOverrides,\n  withFX,\n  withGeneratedLayoutId,\n  withInfiniteScroll,\n  withMappedReactProps,\n  withMeasuredSize,\n  withOpacity,\n  withOptimizedAppearEffect,\n  withParallaxTransform,\n  withPath,\n  withPerformanceMarks,\n  withShape,\n  withStyleAppearEffect,\n  withV1StrokeFX,\n  withVariantAppearEffect,\n  withVariantFX,\n  wrap,\n  yieldToMain\n};\n//! Credit to Astro | MIT License\n/**\n * @license Emotion v11.0.0\n * MIT License\n *\n * Copyright (c) Emotion team and other contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/*! Bundled license information:\n\nreact-is/cjs/react-is.production.min.js:\n  (** @license React v16.13.1\n   * react-is.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=framer.IBYFR5C4.mjs.map\n"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "require_memoize_browser_cjs", "__commonJS", "exports", "memoize", "fn", "cache", "arg", "require_is_prop_valid_browser_cjs", "_interopDefault", "ex", "reactPropsRegex", "index", "prop", "LayoutGroupContext", "z", "isBrowser", "useIsomorphicLayoutEffect", "fe", "ue", "PresenceContext", "addUniqueItem", "arr", "item", "removeItem", "moveItem", "fromIndex", "toIndex", "startIndex", "endIndex", "clamp", "min", "max", "v", "warning", "invariant", "MotionGlobalConfig", "isNumericalString", "isObject", "value", "isZeroValueString", "memo", "callback", "result", "noop", "any", "combineFunctions", "a", "b", "pipe", "transformers", "progress", "from", "to", "toFromDifference", "SubscriptionManager", "handler", "c", "numSubscriptions", "secondsToMilliseconds", "seconds", "millisecondsToSeconds", "milliseconds", "velocityPerSecond", "velocity", "frameDuration", "wrap", "min", "max", "v", "rangeSize", "calcBezier", "t", "a1", "a2", "subdivisionPrecision", "subdivisionMaxIterations", "binarySubdivide", "x", "lowerBound", "upperBound", "mX1", "mX2", "currentX", "currentT", "i", "cubicBezier", "mY1", "mY2", "noop", "getTForX", "aX", "mirrorEasing", "easing", "p", "reverseEasing", "backOut", "backIn", "backInOut", "anticipate", "circIn", "circOut", "circInOut", "easeIn", "easeOut", "easeInOut", "isEasingArray", "ease2", "getEasingForSegment", "easing", "i", "wrap", "isBezierDefinition", "easingLookup", "noop", "easeIn", "easeInOut", "easeOut", "circIn", "circInOut", "circOut", "backIn", "backInOut", "backOut", "anticipate", "isValidEasing", "easingDefinitionToFunction", "definition", "invariant", "x1", "y1", "x2", "y2", "cubicBezier", "statsBuffer", "stepsOrder", "createRenderStep", "runNextFrame", "stepName", "thisFrame", "nextFrame", "isProcessing", "flushNextFrame", "toKeepAlive", "latestFrameData", "numCalls", "triggerCallback", "callback", "step", "keepAlive", "immediate", "queue", "frameData2", "maxElapsed", "createRenderBatcher", "scheduleNextBatch", "allowKeepAlive", "useDefaultElapsed", "state", "flagRunNextFrame", "steps2", "acc", "key", "setup", "read", "resolveKeyframes", "preUpdate", "update", "preRender", "render", "postRender", "processBatch", "timestamp", "MotionGlobalConfig", "wake", "process2", "frame", "cancelFrame", "frameData", "frameSteps", "now", "clearTime", "time", "newTime", "activeAnimations", "checkStringStartsWith", "token", "isCSSVariableName", "startsAsVariableToken", "isCSSVariableToken", "value", "singleCssVariableRegex", "number", "v", "alpha", "clamp", "scale", "sanitize", "floatRegex", "isNullish", "singleColorRegex", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "a", "b", "c", "alpha2", "clampRgbUnit", "rgbUnit", "rgba", "red", "green", "blue", "alpha$1", "parseHex", "r", "g", "hex", "createUnitType", "unit", "degrees", "percent", "px", "vh", "vw", "progressPercentage", "hsla", "hue", "saturation", "lightness", "color", "colorRegex", "test", "_a", "_b", "NUMBER_TOKEN", "COLOR_TOKEN", "VAR_TOKEN", "VAR_FUNCTION_TOKEN", "SPLIT_TOKEN", "complexRegex", "analyseComplexValue", "originalValue", "values", "indexes", "types", "split", "parsedValue", "parseComplexValue", "createTransformer", "source", "numSections", "output", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "hueToRgb", "p", "q", "t", "hslaToRgba", "mixImmediate", "mixNumber", "from", "to", "progress2", "mixLinearColor", "fromExpo", "expo", "colorTypes", "getColorType", "asRGBA", "color2", "warning", "model", "mixColor", "fromRGBA", "toRGBA", "blended", "invisibleValues", "mixVisibility", "origin", "target", "mixNumber2", "getMixer", "mixComplex", "mixArray", "mixObject", "numValues", "blendValue", "matchOrder", "orderedOrigin", "pointers", "originIndex", "originValue", "template", "originStats", "targetStats", "pipe", "mix", "generateLinearEasing", "duration", "resolution", "points", "numPoints", "maxGeneratorDuration", "calcGeneratorDuration", "generator", "timeStep", "createGeneratorEasing", "options", "scale2", "createGenerator", "millisecondsToSeconds", "velocitySampleDuration", "calcGeneratorVelocity", "resolveValue", "current2", "prevT", "velocityPerSecond", "springDefaults", "safeMin", "findSpring", "bounce", "velocity", "mass", "envelope", "derivative", "secondsToMilliseconds", "dampingRatio", "undampedFreq2", "exponentialDecay", "delta", "calcAngularFreq", "e", "f", "initialGuess", "undampedFreq", "approximateRoot", "stiffness", "rootIterations", "result", "durationKeys", "physicsKeys", "isSpringType", "keys2", "getSpringOptions", "springOptions", "visualDuration", "root", "damping", "derived", "spring", "optionsOrVisualDuration", "restSpeed", "restDelta", "isResolvedFromDuration", "initialVelocity", "initialDelta", "undampedAngularFreq", "isGranularScale", "resolveSpring", "angularFreq", "dampedAngularFreq", "freqForT", "currentVelocity", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "calculatedDuration", "generatorOptions", "inertia", "keyframes2", "power", "timeConstant", "bounceDamping", "bounceStiffness", "modifyTarget", "min", "max", "isOutOfBounds", "nearestBoundary", "amplitude", "ideal", "calcDelta", "calcLatest", "applyFriction", "latest", "timeReachedBoundary", "spring$1", "checkCatchBoundary", "hasUpdatedFrame", "createMixers", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "interpolate", "input", "isClamp", "inputLength", "isZeroDeltaRange", "interpolator", "progressInRange", "progress", "fillOffset", "offset", "remaining", "offsetProgress", "defaultOffset", "arr", "convertOffsetToTimes", "o", "defaultEasing", "keyframes", "keyframeValues", "times", "easingFunctions", "absoluteTimes", "mapTimeToKeyframe", "frameloopDriver", "passTimestamp", "isNotNull", "getFinalKeyframe", "repeat", "repeatType", "finalKeyframe", "speed", "resolvedKeyframes", "index", "transitionTypeMap", "replaceTransitionType", "transition", "WithPromise", "resolve", "onResolve", "onReject", "percentToProgress", "percent2", "JSAnimation", "motionValue2", "repeatDelay", "keyframes$1", "generatorFactory", "animationTime", "sample", "totalDuration", "mixKeyframes", "mirroredGenerator", "resolvedDuration", "delay2", "onUpdate", "timeWithoutDelay", "isInDelayPhase", "elapsed", "frameGenerator", "currentIteration", "iterationProgress", "done", "isAnimationFinished", "reject", "newSpeed", "hasChanged", "driver", "startTime", "now2", "sampleTime", "timeline", "animateValue", "fillWildcards", "radToDeg", "rad", "rotate", "angle", "rebaseAngle", "matrix2dParsers", "rotateZ", "scaleX", "scaleY", "matrix3dParsers", "defaultTransformValue", "name", "parseValueFromTransform", "transform2", "matrix3dMatch", "parsers", "match", "matrix2dMatch", "valueParser", "convertTransformToNumber", "readTransformValue", "instance", "transformPropOrder", "transformProps", "isNumOrPxType", "transformKeys", "nonTranslationalTransformKeys", "removeNonTranslationalTransform", "visualElement", "removedTransforms", "positionalValues", "x", "paddingLeft", "paddingRight", "y", "paddingTop", "paddingBottom", "_bbox", "top", "left", "toResolve", "isScheduled", "anyNeedsMeasurement", "isForced", "measureAllKeyframes", "resolversToMeasure", "resolver", "elementsToMeasure", "transformsToRestore", "element", "restore", "readAllKeyframes", "flushKeyframeResolvers", "KeyframeResolver", "unresolvedKeyframes", "onComplete", "isAsync", "currentValue", "valueAsRead", "isForcedComplete", "isCSSVar", "setStyle", "supportsScrollTimeline", "memo", "supportsFlags", "memoSupports", "supportsFlag", "memoized", "supportsLinearEasing", "cubicBezierAsString", "d", "supportedWaapiEasing", "mapEasingToNativeEasing", "segmentEasing", "startWaapiAnimation", "valueName", "pseudoElement", "keyframeOptions", "animation", "isGenerator", "applyGeneratorOptions", "NativeAnimation", "allowFlatten", "keyframe", "newStartTime", "observe", "unsupportedEasingFunctions", "isUnsupportedEase", "replaceStringEasing", "sampleDelta", "NativeAnimationExtended", "sampleAnimation", "isHTMLElement", "isObject", "acceleratedValues", "supportsWaapi", "supportsBrowserAnimation", "transformTemplate", "isAnimatable", "hasKeyframesChanged", "canAnimate", "originKeyframe", "targetKeyframe", "isOriginAnimatable", "isTargetAnimatable", "MAX_RESOLVE_DELAY", "AsyncMotionValueAnimation", "autoplay", "_a2", "optionsWithDefaults", "KeyframeResolver$1", "forced", "sync2", "isHandoff", "resolvedOptions", "_onReject", "GroupAnimation", "animations2", "propName", "newValue", "subscriptions", "cancel", "time2", "methodName", "controls", "GroupAnimationWithThen", "splitCSSVariableRegex", "parseCSSVariable", "current2", "match", "token1", "token2", "fallback", "maxDepth", "getVariableValue", "element", "depth", "invariant", "token", "resolved", "trimmed", "isNumericalString", "isCSSVariableToken", "getValueTransition", "transition", "key", "positionalKeys", "transformPropOrder", "testValueType", "v", "type", "auto", "dimensionValueTypes", "number", "px", "percent", "degrees", "vw", "vh", "findDimensionValueType", "transformValueTypes", "scale", "alpha", "progressPercentage", "int", "numberValueTypes", "maxDefaults", "applyDefaultFilter", "name", "value", "number2", "floatRegex", "unit", "defaultValue", "functionRegex", "filter", "complex", "functions", "defaultValueTypes", "color", "getDefaultValueType", "getAnimatableNone2", "defaultValueType", "isNone", "isZeroValueString", "invalidTemplates", "makeNoneKeyframesAnimatable", "unresolvedKeyframes", "noneKeyframeIndexes", "i", "animatableTemplate", "keyframe", "analyseComplexValue", "noneIndex", "DOMKeyframesResolver", "KeyframeResolver", "onComplete", "motionValue2", "origin", "target", "originType", "targetType", "isNumOrPxType", "positionalValues", "measureKeyframe", "_a", "finalKeyframeIndex", "finalKeyframe", "unsetTransformName", "unsetTransformValue", "acceleratedValues2", "resolveElements", "elementOrSelector", "scope", "selectorCache", "root", "elements", "getValueAsType", "value", "type", "MAX_VELOCITY_DELTA", "isFloat", "value", "collectMotionValues", "MotionValue", "init", "options", "v", "render", "_a", "_b", "currentTime", "time", "dependent", "current2", "prevFrameValue", "subscription", "eventName", "callback", "SubscriptionManager", "unsubscribe", "frame", "eventManagers", "passiveEffect", "stopPassiveEffect", "prev", "delta", "endAnimation", "velocityPerSecond", "startAnimation", "resolve", "motionValue", "toPx", "px", "microtask", "cancelMicrotask", "createRenderBatcher", "isDragging", "isDragActive", "setDragLock", "axis", "setupGesture", "elementOrSelector", "options", "elements", "resolveElements", "gestureAbortController", "eventOptions", "isValidHover", "event", "hover", "onHoverStart", "cancel", "onPointerEnter", "enterEvent", "target", "onHoverEnd", "onPointerLeave", "leaveEvent", "element", "isNodeOrChild", "parent", "child", "isPrimaryPointer", "focusableElements", "isElementKeyboardAccessible", "isPressing", "filterEvents", "callback", "firePointerEvent", "type", "enableKeyboardPress", "focusEvent", "handleKeydown", "handleKeyup", "handleBlur", "isValidPressEvent", "press", "targetOrSelector", "onPressStart", "targets", "cancelEvents", "startPress", "startEvent", "onPressEnd", "onPointerEnd", "endEvent", "success", "onPointerUp", "onPointerCancel", "upEvent", "cancelEvent", "isHTMLElement", "isSVGElement", "element", "isObject", "resizeHandlers", "observer", "getSize", "borderBoxAxis", "svgAxis", "htmlAxis", "target", "borderBoxSize", "getWidth", "getHeight", "notifyTarget", "_a", "handler", "notifyAll", "entries", "createResizeObserver", "resizeElement", "elements", "resolveElements", "elementHandlers", "windowCallbacks", "windowResizeHandler", "createWindowResizeHandler", "info", "callback", "resizeWindow", "resize", "a", "b", "observeTimeline", "update", "timeline", "prevProgress", "onFrame", "currentTime", "progress2", "frame", "cancelFrame", "isSVGSVGElement", "element", "isSVGElement", "transform", "args", "useImmediate", "argOffset", "inputValue", "inputRange", "outputRange", "options", "interpolator", "interpolate", "isMotionValue", "value", "attachSpring", "value", "source", "options", "initialValue", "activeAnimation", "latestValue", "latestSetter", "unit", "stopAnimation2", "startAnimation", "JSAnimation", "asNumber", "v", "set", "latest", "parseValue", "frame", "unsubscribe", "isMotionValue", "valueTypes", "dimensionValueTypes", "color", "complex", "findValueType", "testValueType", "cancelSync", "stepsOrder", "acc", "key", "process2", "cancelFrame", "MotionConfigContext", "z", "p", "usePresence", "subscribe", "context", "re", "PresenceContext", "isPresent2", "onExitComplete", "register", "id4", "ae", "ue", "safeToRemove", "te", "useConstant", "init", "ref", "pe", "PopChildMeasure", "I", "prevProps", "element", "parent", "parentWidth", "isHTMLElement", "size", "PopChild", "children", "isPresent2", "anchorX", "id4", "ae", "nonce", "re", "MotionConfigContext", "ie", "width", "height", "top", "left", "right", "x", "style2", "p", "q", "PresenceChild", "initial", "onExitComplete", "custom", "presenceAffectsLayout", "mode", "presenceChildren", "newChildrenMap", "isReusedContext", "context", "se", "childId", "isComplete", "_", "key", "ue", "PresenceContext", "getChildKey", "child", "onlyElements", "filtered", "j", "J", "AnimatePresence", "propagate", "isParentPresent", "safeToRemove", "usePresence", "presentChildren", "presentKeys", "isInitialRender", "pendingPresentChildren", "exitComplete", "diffedChildren", "setDiffedChildren", "ye", "renderedChildren", "setRenderedChildren", "useIsomorphicLayoutEffect", "i", "exitingChildren", "nextChildren", "forceRender", "LayoutGroupContext", "l", "onExit", "isEveryExitComplete", "isExitComplete", "DeprecatedLayoutGroupContext", "z", "useIsMounted", "isMounted", "useForceUpdate", "forcedRenderCount", "setForcedRenderCount", "te", "frame", "notify", "node", "nodeGroup", "nodes", "subscriptions", "dirtyAll", "unsubscribe", "shouldInheritGroup", "inherit", "shouldInheritId", "LayoutGroup", "layoutGroupContext", "deprecatedLayoutGroupContext", "upstreamId", "memoizedContext", "LazyContext", "featureProps", "featureDefinitions", "props", "name", "loadFeatures", "features", "validMotionProps", "isValidMotionProp", "key", "shouldForward", "loadExternalIsValidProp", "isValidProp", "require_is_prop_valid_browser_cjs", "filterProps", "props", "isDom", "forwardMotionProps", "filteredProps", "MotionConfig", "children", "config", "re", "MotionConfigContext", "useConstant", "context", "se", "p", "MotionContext", "z", "camelToDash2", "str", "optimizedAppearDataId", "optimizedAppearDataAttribute", "SwitchLayoutGroupContext", "isAnimationControls", "v", "isVariantLabel", "variantPriorityOrder", "variantProps", "isControllingVariants", "name", "isVariantNode", "getCurrentTreeVariants", "initial", "animate2", "useCreateMotionContext", "variantLabelsAsDependency", "prop", "motionComponentSymbol", "isRefObject", "ref", "useMotionRef", "visualState", "visualElement", "externalRef", "te", "instance", "useVisualElement", "Component3", "createVisualElement", "ProjectionNodeConstructor", "_a", "_b", "parent", "lazyContext", "LazyContext", "presenceContext", "PresenceContext", "reducedMotionConfig", "visualElementRef", "pe", "initialLayoutGroupConfig", "createProjectionNode", "isMounted", "ie", "optimisedAppearId", "wantsHandoff", "useIsomorphicLayoutEffect", "microtask", "ue", "_a2", "initialPromotionConfig", "layoutId", "layout2", "drag2", "dragConstraints", "layoutScroll", "layoutRoot", "layoutCrossfade", "getClosestProjectingNode", "createRendererMotionComponent", "preloadedFeatures", "useRender", "useVisualState2", "loadFeatures", "MotionComponent", "MeasureLayout2", "configAndProps", "useLayoutId", "isStatic", "isBrowser", "useStrictMode", "layoutProjection", "getProjectionFunctionality", "u", "ForwardRefMotionComponent", "Y", "layoutGroupId", "LayoutGroupContext", "isStrict", "featureDefinitions", "combined", "scaleCorrectors", "addScaleCorrector", "correctors", "isCSSVariableName", "translateAlias2", "numTransforms", "transformPropOrder", "buildTransform2", "latestValues", "transform2", "transformTemplate", "transformString", "transformIsDefault", "i", "value", "valueIsDefault", "valueAsType", "getValueAsType", "numberValueTypes", "transformName", "resolveMotionValue", "isMotionValue", "getValueState", "state", "resolveVariantFromProps", "definition", "custom", "current2", "velocity", "makeState", "scrapeMotionValuesFromProps3", "createRenderState", "makeLatestValues", "makeUseVisualState", "make", "scrapeMotionValues", "values", "motionValues", "isControllingVariants$1", "isVariantNode$1", "isInitialAnimationBlocked", "variantToSet", "list", "resolved", "transitionEnd", "transition", "target", "valueTarget", "index", "createDOMMotionComponentProxy", "componentFactory", "componentCache", "deprecatedFactoryFunction", "args", "_target", "isForcedMotionValue", "transformProps", "buildHTMLStyles", "style2", "vars", "transformOrigin", "hasTransform2", "hasTransformOrigin", "originX", "originY", "originZ", "createHtmlRenderState", "copyRawValuesOnly", "source", "useInitialMotionValues", "useStyle", "styleProp", "useHTMLProps", "htmlProps", "dashKeys", "camelKeys", "buildSVGPath", "attrs", "length", "spacing", "offset", "useDashCase", "keys2", "px", "pathLength", "pathSpacing", "buildSVGAttrs", "attrX", "attrY", "attrScale", "pathOffset", "latest", "isSVGTag2", "createSvgRenderState", "isSVGTag", "tag", "useSVGProps", "_isStatic", "visualProps", "rawStyles", "lowercaseSVGElements", "isSVGComponent", "createUseRender", "elementProps", "x", "renderedChildren", "B", "scrapeMotionValuesFromProps", "prevProps", "newValues", "htmlMotionConfig", "scrapeMotionValuesFromProps2", "targetKey", "svgMotionConfig", "createMotionComponentFactory", "resolveVariant", "visualElement", "definition", "custom", "props", "resolveVariantFromProps", "isKeyframesTarget", "v", "setMotionValue", "key", "value", "motionValue", "resolveFinalValueInKeyframes", "setTarget", "resolved", "transitionEnd", "transition", "target", "isWillChangeMotionValue", "isMotionValue", "addValueToWillChange", "willChange", "MotionGlobalConfig", "newWillChange", "getOptimisedAppearId", "optimizedAppearDataAttribute", "isNotNull2", "getFinalKeyframe2", "keyframes2", "repeat", "repeatType", "finalKeyframe", "resolvedKeyframes", "index", "underDampedSpring", "criticallyDampedSpring", "keyframesTransition", "ease", "getDefaultTransition", "valueKey", "transformProps", "isTransitionDefined", "when", "_delay", "delayChildren", "staggerChildren", "staggerDirection", "repeatDelay", "from", "elapsed", "animateMotionValue", "name", "element", "isHandoff", "onComplete", "valueTransition", "getValueTransition", "delay2", "secondsToMilliseconds", "options", "shouldSkip", "frame", "JSAnimation", "AsyncMotionValueAnimation", "shouldBlockAnimation", "protectedKeys", "needsAnimating", "shouldBlock", "animateTarget", "targetAndTransition", "transitionOverride", "type", "animations2", "animationTypeState", "valueTarget", "currentValue", "appearId", "startTime", "positionalKeys", "animation", "animateVariant", "variant", "_a", "getAnimation", "getChildAnimations", "forwardDelay", "animateChildren", "first", "last", "maxStaggerDuration", "generateStaggerDuration", "i", "sortByTreeOrder", "child", "a", "b", "animateVisualElement", "resolvedDefinition", "shallowCompare", "next2", "prev", "prevLength", "numVariantProps", "variantProps", "getVariantContext", "context2", "context", "prop", "isVariantLabel", "reversePriorityOrder", "variantPriorityOrder", "numAnimationTypes", "animateList", "createAnimationState", "animate2", "state", "createState", "isInitialRender", "buildResolvedTypeValues", "acc", "setAnimateFunction", "makeAnimator", "animateChanges", "changedActiveType", "removedKeys", "encounteredKeys", "removedVariantIndex", "typeState", "propIsVariant", "activeDelta", "isInherited", "isAnimationControls", "variantDidChange", "checkVariantsDidChange", "shouldAnimateType", "handledRemovedValues", "definitionList", "resolvedValues", "prevResolvedValues", "allKeys", "markToAnimate", "motionValue2", "valueHasChanged", "fallbackAnimation", "initialTransition", "fallbackTarget", "shouldAnimate", "setActive", "isActive", "_a2", "createTypeState", "Feature", "node", "AnimationFeature", "prevAnimate", "id", "ExitAnimationFeature", "isPresent2", "onExitComplete", "prevIsPresent", "exitAnimation", "register", "animations", "extractEventInfo", "event", "addPointerInfo", "handler", "isPrimaryPointer", "addDomEvent", "eventName", "addPointerEvent", "SCALE_PRECISION", "SCALE_MIN", "SCALE_MAX", "TRANSLATE_PRECISION", "TRANSLATE_MIN", "TRANSLATE_MAX", "calcLength", "axis", "isNear", "maxDistance", "calcAxisDelta", "delta", "source", "origin", "mixNumber", "calcBoxDelta", "calcRelativeAxis", "relative", "parent", "calcRelativeBox", "calcRelativeAxisPosition", "layout2", "calcRelativePosition", "createAxisDelta", "createDelta", "createAxis", "createBox", "distance", "distance2D", "xDelta", "yDelta", "compareByDepth", "FlatTree", "addUniqueItem", "removeItem", "callback", "delay", "timeout", "start2", "time", "checkElapsed", "timestamp", "cancelFrame", "visualElementStore", "prefersReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "isBrowser", "motionMediaQuery", "setReducedMotionPreferences", "updateMotionValuesFromProps", "nextValue", "prevValue", "existingValue", "latestValue", "propEventHandlers", "VisualElement", "_props", "_prevProps", "_visualElement", "presenceContext", "reducedMotionConfig", "blockInitialAnimation", "visualState", "KeyframeResolver", "now2", "latestValues", "renderState", "isControllingVariants", "isVariantNode", "initialMotionValues", "instance", "remove", "feature", "valueIsTransform", "removeOnChange", "removeOnRenderRequest", "removeSyncCheck", "other", "featureDefinitions", "featureDefinition", "isEnabled", "FeatureConstructor", "listenerName", "listener", "closestVariantNode", "unsubscribe", "defaultValue", "isNumericalString", "isZeroValueString", "findValueType", "complex", "getAnimatableNone2", "initial", "valueFromInitial", "SubscriptionManager", "args", "convertBoundingBoxToBox", "top", "left", "right", "bottom", "convertBoxToBoundingBox", "x", "y", "transformBoxPoints", "point2", "transformPoint2", "topLeft", "bottomRight", "eachAxis", "isIdentityScale", "scale2", "hasScale", "scaleX2", "scaleY2", "hasTransform", "values", "has2DTranslate", "is2DTranslate", "scalePoint", "originPoint", "distanceFromOrigin", "scaled", "applyPointDelta", "translate", "boxScale", "applyAxisDelta", "applyBoxDelta", "box", "TREE_SCALE_SNAP_MIN", "TREE_SCALE_SNAP_MAX", "applyTreeDeltas", "treeScale", "treePath", "isSharedTransition", "treeLength", "transformBox", "translateAxis", "distance2", "transformAxis", "axisTranslate", "axisScale", "axisOrigin", "transform2", "measureViewportBox", "measurePageBox", "rootProjectionNode2", "transformPagePoint", "viewportBox", "scroll2", "getContextWindow", "current2", "PanSession", "handlers", "contextWindow", "dragSnapToOrigin", "info2", "getPanInfo", "isPanStarted", "isDistancePastThreshold", "point3", "timestamp2", "frameData", "onStart", "onMove", "event2", "transformPoint", "onEnd", "onSessionEnd", "resumeAnimation", "panInfo", "info", "initialInfo", "onSessionStart", "pipe", "subtractPoint", "history", "lastDevicePoint", "startDevicePoint", "getVelocity", "timeDelta", "timestampedPoint", "lastPoint", "time2", "millisecondsToSeconds", "currentVelocity", "applyConstraints", "min", "max", "elastic", "calcRelativeAxisConstraints", "calcRelativeConstraints", "layoutBox", "calcViewportAxisConstraints", "layoutAxis", "constraintsAxis", "calcViewportConstraints", "constraintsBox", "calcOrigin", "sourceLength", "targetLength", "progress", "clamp", "rebaseAxisConstraints", "constraints", "relativeConstraints", "defaultElastic", "resolveDragElastic", "dragElastic", "resolveAxisElastic", "minLabel", "maxLabel", "resolvePointElastic", "label", "elementDragControls", "VisualElementDragControls", "originEvent", "snapToCursor", "dragSnapToOrigin2", "drag2", "dragPropagation", "onDragStart", "setDragLock", "percent", "projection", "measuredAxis", "animationState", "dragDirectionLock", "onDirectionLock", "onDrag", "offset", "getCurrentDirection", "isDragging2", "velocity", "onDragEnd", "_point", "shouldDrag", "axisValue", "dragConstraints", "prevConstraints", "isRefObject", "onMeasureDragConstraints", "constraintsElement", "invariant", "measuredConstraints", "userConstraints", "dragMomentum", "dragTransition", "onDragTransitionEnd", "momentumAnimations", "bounceStiffness", "bounceDamping", "inertia2", "dragKey", "externalMotionValue", "boxProgress", "latest", "transformTemplate", "stopPointerListener", "dragListener", "measureDragConstraints", "stopMeasureLayoutListener", "stopResizeListener", "stopLayoutUpdateListener", "hasLayoutChanged", "direction", "currentDirection", "lockThreshold", "DragGesture", "noop", "dragControls", "asyncHandler", "PanGesture", "pointerDownEvent", "onPanSessionStart", "onPanStart", "onPan", "onPanEnd", "globalProjectionState", "pixelsToPercent", "pixels", "correctBorderRadius", "px", "correctBoxShadow", "projectionDelta", "original", "shadow", "template", "xScale", "yScale", "averageScale", "MeasureLayoutWithContext", "I", "layoutGroup", "switchLayoutGroup", "layoutId", "addScaleCorrector", "defaultScaleCorrectors", "prevProps", "layoutDependency", "stack", "microtask", "promoteContext", "safeToRemove", "MeasureLayout", "usePresence", "re", "LayoutGroupContext", "p", "SwitchLayoutGroupContext", "animateSingleValue", "motionValue$1", "borders", "numBorders", "asNumber2", "isPx", "mixValues", "follow", "lead", "progress2", "shouldCrossfadeOpacity", "isOnlyMember", "easeCrossfadeIn", "easeCrossfadeOut", "borderLabel", "followRadius", "getRadius", "leadRadius", "radiusName", "compress", "circOut", "easing", "copyAxisInto", "originAxis", "copyBoxInto", "originBox", "copyAxisDeltaInto", "originDelta", "removePointDelta", "removeAxisDelta", "sourceAxis", "removeAxisTransforms", "transforms", "scaleKey", "originKey", "xKeys", "yKeys", "removeBoxTransforms", "sourceBox", "isAxisDeltaZero", "isDeltaZero", "axisEquals", "boxEquals", "axisEqualsRounded", "boxEqualsRounded", "aspectRatio", "axisDeltaEquals", "NodeStack", "prevLead", "indexOfNode", "member", "preserveFollowOpacity", "crossfade", "resumingFrom", "buildProjectionTransform", "latestTransform", "xTranslate", "yTranslate", "zTranslate", "transformPerspective", "rotate2", "rotateX", "rotateY", "skewX", "skewY", "elementScaleX", "elementScaleY", "metrics", "transformAxes", "hiddenVisibility", "animationTarget", "id2", "resetDistortingTransform", "sharedAnimationValues", "cancelTreeOptimisedTransformAnimations", "projectionNode", "createProjectionNode2", "attachResizeListener", "defaultParent", "measureScroll", "checkIsScrollRoot", "resetTransform", "statsBuffer", "propagateDirtyNodes", "resolveTargetDelta", "calcProjection", "cleanDirtyNodes", "subscriptionManager", "isSVGElement", "isSVGSVGElement", "cancelDelay", "resizeUnblockUpdate", "finishAnimation", "hasRelativeLayoutChanged", "newLayout", "layoutTransition", "defaultLayoutTransition", "onLayoutAnimationStart", "onLayoutAnimationComplete", "hasTargetChanged", "hasOnlyRelativeTargetChanged", "animationOptions", "resetSkewAndRotation", "shouldNotifyListeners", "clearMeasurements", "clearIsLayoutDirty", "resetTransformStyle", "updateLayout", "notifyLayoutUpdate", "frameSteps", "clearSnapshot", "removeLeadSnapshots", "prevLayout", "phase", "needsMeasurement", "isRoot", "isResetRequested", "hasProjection", "transformTemplateValue", "transformTemplateHasChanged", "removeTransform", "pageBox", "roundBox", "checkNodeWasScrollRoot", "boxWithoutScroll", "transformOnly", "withTransforms", "boxWithoutTransform", "nodeBox", "forceRecalculation", "isShared", "relativeParent", "canSkip", "prevTreeScaleX", "prevTreeScaleY", "notifyAll2", "snapshot", "snapshotLatestValues", "mixedValues", "targetDelta", "relativeLayout", "snapshotSource", "layoutSource", "isSharedLayoutAnimation", "hasOpacityCrossfade", "prevRelativeTarget", "mixAxisDelta", "mixBox", "_b", "_c", "activeAnimations", "targetWithTransforms", "shouldAnimatePositionOnly", "xLength", "yLength", "config", "needsReset", "hasDistortingTransform", "resetValues", "styleProp", "styles", "resolveMotionValue", "emptyStyles", "valuesToRender", "scaleCorrectors", "correct", "applyTo", "isCSSVariable", "corrected", "num", "measuredLayout", "animationType", "axisSnapshot", "length", "layoutDelta", "visualDelta", "parentSnapshot", "parentLayout", "relativeSnapshot", "output", "mixAxis", "to", "userAgentContains", "string", "roundPoint", "roundAxis", "DocumentProjectionNode", "ref", "notify2", "rootProjectionNode", "HTMLProjectionNode", "documentNode", "drag", "handleHoverEvent", "lifecycle", "HoverGesture", "hover", "_element", "startEvent", "endEvent", "FocusGesture", "isFocusVisible", "handlePressEvent", "PressGesture", "press", "success", "observerCallbacks", "observers", "fireObserverCallback", "entry", "fireAllObserverCallbacks", "entries", "initIntersectionObserver", "root", "lookupRoot", "rootObservers", "observeIntersection", "rootInteresectionObserver", "thresholdNames", "InViewFeature", "viewport", "rootMargin", "amount", "once", "onIntersectionUpdate", "isIntersecting", "onViewportEnter", "onViewportLeave", "hasViewportOptionChanged", "prevViewport", "gestureAnimations", "layout", "DOMVisualElement", "DOMKeyframesResolver", "vars", "style2", "children", "renderHTML", "getComputedStyle3", "HTMLVisualElement", "defaultTransformValue", "readTransformValue", "computedStyle", "isCSSVariableName", "buildHTMLStyles", "scrapeMotionValuesFromProps", "camelCaseAttributes", "renderSVG", "_styleProp", "camelToDash2", "SVGVisualElement", "defaultType", "getDefaultValueType", "scrapeMotionValuesFromProps2", "buildSVGAttrs", "isSVGTag", "createDomVisualElement", "Component3", "isSVGComponent", "createMotionComponent", "createMotionComponentFactory", "motion", "createDOMMotionComponentProxy", "domAnimation", "createDomVisualElement", "animations", "gestureAnimations", "domMax", "drag", "layout", "domMin", "useMotionValueEvent", "value", "event", "callback", "ie", "maxElapsed2", "createAxisInfo", "createScrollInfo", "keys", "updateAxisInfo", "element", "axisName", "info", "time2", "axis", "length", "position", "prev", "prevTime", "progress", "elapsed", "velocityPerSecond", "updateScrollInfo", "calcInset", "container", "inset", "current2", "isHTMLElement", "svgBoundingBox", "parentBoundingBox", "x", "y", "svg", "parent", "namedEdges", "resolveEdge", "edge", "delta", "asNumber3", "defaultOffset2", "resolveOffset", "offset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "ScrollOffset", "point", "getTargetSize", "target", "resolveOffsets", "options", "lengthLabel", "targetSize", "containerSize", "hasChanged", "numOffsets", "i", "interpolate", "defaultOffset", "clamp", "measure", "node", "createOnScrollHandler", "onScroll", "scrollListeners", "resizeListeners", "onScrollHandlers", "getEventTarget", "scrollInfo", "noop", "containerHandlers", "containerHandler", "measureAll", "handler", "frameData", "frame", "notifyAll2", "listener2", "resize", "listener", "_a", "cancelFrame", "currentHandlers", "scrollListener", "timelineCache", "scrollTimelineFallback", "currentTime", "cancel", "getTimeline", "source", "containerCache", "targetKey", "targetCache", "axisKey", "supportsScrollTimeline", "attachToAnimation", "animation", "timeline", "valueAnimation", "observeTimeline", "progress2", "isOnScrollWithInfo", "attachToFunction", "scroll", "optionsWithDefaults", "refWarning", "name", "ref", "warning", "createScrollMotionValues", "motionValue", "useScroll", "layoutEffect", "values", "useConstant", "useIsomorphicLayoutEffect", "ue", "_progress", "useMotionValue", "initial", "value", "useConstant", "motionValue", "isStatic", "re", "MotionConfigContext", "setLatest", "ye", "ue", "useCombineMotionValues", "values", "combineValues", "updateValue", "useIsomorphicLayoutEffect", "scheduleUpdate", "frame", "subscriptions", "v", "unsubscribe", "cancelFrame", "useComputed", "compute", "collectMotionValues", "value", "useCombineMotionValues", "useTransform", "input", "inputRangeOrTransformer", "outputRange", "options", "transformer", "transform", "useListTransform", "latest", "values", "useConstant", "numValues", "useSpring", "source", "isStatic", "re", "MotionConfigContext", "getFromSource", "isMotionValue", "useMotionValue", "ie", "attachSpring", "WillChangeMotionValue", "MotionValue", "name", "transformProps", "acceleratedValues2", "useReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "shouldReduceMotion", "ye", "prefersReducedMotion", "useReducedMotionConfig", "reducedMotionPreference", "reducedMotion", "re", "MotionConfigContext", "stopAnimation", "visualElement", "value", "setVariants", "variantLabels", "key", "variant", "setTarget", "child", "setValues", "definition", "animationControls", "hasMounted", "subscribers", "controls", "transitionOverride", "invariant", "animations2", "animateVisualElement", "isDOMKeyframes", "keyframes2", "resolveSubjects", "subject", "scope", "selectorCache", "resolveElements", "calculateRepeatDuration", "duration", "repeat", "_repeatDelay", "calcNextTime", "current2", "next2", "prev", "labels", "eraseKeyframes", "sequence", "startTime", "endTime", "i", "keyframe", "removeItem", "addKeyframes", "easing", "offset", "mixNumber", "getEasingForSegment", "normalizeTimes", "times", "compareByTime", "a", "b", "defaultSegmentEasing", "MAX_REPEAT", "createAnimationsFromSequence", "defaultTransition", "sequenceTransition", "generators", "defaultDuration", "animationDefinitions", "sequences", "elementCache", "timeLabels", "prevTime", "currentTime", "totalDuration", "segment", "transition", "maxDuration", "resolveValueSequence", "valueKeyframes", "valueTransition", "valueSequence", "elementIndex", "numSubjects", "valueKeyframesAsList", "keyframesAsList", "delay2", "defaultOffset", "type", "repeatType", "repeatDelay", "remainingTransition", "ease2", "calculatedDelay", "numKeyframes", "createGenerator", "isGenerator", "absoluteDelta", "isNumberKeyframesArray", "delta", "springTransition", "secondsToMilliseconds", "springEasing", "createGeneratorEasing", "remainder", "fillOffset", "originalKeyframes", "originalTimes", "originalEase", "repeatIndex", "keyframeIndex", "targetTime", "isMotionValue", "subjectSequence", "getSubjectSequence", "getValueSequence", "subjects", "subjectIndex", "thisSubject", "getValueTransition2", "valueSequences", "element", "valueOffset", "valueEasing", "at", "progress", "name", "isNumber", "isObjectKey", "object", "ObjectVisualElement", "VisualElement", "instance", "renderState", "createBox", "latestValues", "output", "createDOMVisualElement", "options", "node", "isSVGElement", "isSVGSVGElement", "SVGVisualElement", "HTMLVisualElement", "visualElementStore", "createObjectVisualElement", "isSingleValue", "animateSubject", "animateSingleValue", "createVisualElement", "animateTarget", "animateSequence", "spring", "isSequence", "createScopedAnimate", "scopedAnimate", "subjectOrSequence", "optionsOrKeyframes", "animation", "GroupAnimationWithThen", "animate", "useAnimationControls", "controls", "useConstant", "animationControls", "useIsomorphicLayoutEffect", "useAnimation", "useDomEvent", "ref", "eventName", "handler", "options", "ue", "element", "addDomEvent", "DragControls", "controls", "event", "createDragControls", "useDragControls", "useConstant", "isMotionComponent", "component", "motionComponentSymbol", "unwrapMotionComponent", "useInstantLayoutTransition", "startTransition", "callback", "rootProjectionNode", "useResetProjection", "te", "root", "thresholds", "inView", "elementOrSelector", "onStart", "root", "rootMargin", "amount", "elements", "resolveElements", "activeIntersections", "onIntersectionChange", "entries", "entry", "onEnd", "newOnEnd", "observer2", "element", "useInView", "ref", "margin", "once", "initial", "isInView", "setInView", "ye", "ue", "onEnter", "options", "useInstantTransition", "forceUpdate", "forcedRenderCount", "useForceUpdate", "startInstantLayoutTransition", "useInstantLayoutTransition", "unlockOnFrameRef", "pe", "frame", "MotionGlobalConfig", "callback", "createObject", "useVisualState", "makeUseVisualState", "createObject", "namespace_exports", "__export", "ReorderGroup", "ReorderItem", "ReorderContext", "z", "checkReorder", "order", "value", "offset", "velocity", "index", "item2", "nextOffset", "nextItem", "item", "nextLayout", "nextItemCenter", "mixNumber", "moveItem", "ReorderGroupComponent", "children", "as", "axis", "onReorder", "values", "props", "externalRef", "Component3", "useConstant", "motion", "isReordering", "pe", "invariant", "context", "layout2", "idx", "entry", "compareMin", "newOrder", "getValue", "ue", "p", "Y", "a", "b", "useDefaultMotionValue", "defaultValue", "isMotionValue", "useMotionValue", "ReorderItemComponent", "style2", "onDrag", "re", "point2", "zIndex", "useTransform", "latestX", "latestY", "registerItem", "updateOrder", "event", "gesturePoint", "measured", "getOriginIndex", "from", "total", "lastIndex", "stagger", "duration", "startDelay", "ease2", "fromIndex", "distance2", "delay2", "maxDelay", "easingDefinitionToFunction", "npm_react_dom_18_2_exports", "__export", "$a", "Ga", "Ja", "Ha", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "init_ssg_sandbox_shims", "npm_scheduler_0_23_exports", "__export", "e", "F", "E", "N", "j", "q", "B", "U", "W", "Y", "D", "z", "A", "L", "O", "Q", "S", "V", "X", "Z", "init_ssg_sandbox_shims", "f", "n", "t", "a", "l", "g", "h", "k", "r", "i", "u", "o", "s", "c", "b", "d", "_", "v", "G", "H", "I", "J", "K", "m", "M", "p", "y", "w", "P", "R", "x", "C", "T", "u", "npm_react_18_2_exports", "e", "o", "npm_scheduler_0_23_exports", "s", "w", "x", "p", "a", "i", "C", "z", "fa", "ha", "N", "_", "j", "P", "T", "oa", "pa", "qa", "v", "M", "F", "sa", "ta", "R", "O", "I", "U", "V", "A", "B", "H", "$", "K", "Y", "Z", "X", "ee", "le", "Ka", "ae", "ie", "Ma", "ce", "Oa", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "ab", "bb", "cb", "db", "fe", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "de", "pe", "ob", "be", "ye", "rb", "sb", "we", "ub", "vb", "Se", "xb", "xe", "ze", "_e", "Bb", "Cb", "Db", "Eb", "Fb", "Gb", "Hb", "Pe", "Jb", "Kb", "Te", "Re", "Nb", "We", "Qe", "He", "$e", "Ye", "Tb", "Ub", "Vb", "Wb", "Xb", "Yb", "Zb", "$b", "qe", "Xe", "en", "nn", "tn", "rn", "ln", "an", "un", "on", "sn", "cn", "fn", "mc", "dn", "nc", "pn", "hn", "gn", "mn", "tc", "uc", "vc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "vn", "Dc", "bn", "yn", "kn", "wn", "Sn", "En", "xn", "Cn", "zn", "Nn", "Ln", "_n", "jn", "Pn", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "$c", "ad", "bd", "b", "Tn", "Dn", "ed", "fd", "gd", "hd", "Mn", "jd", "Fn", "Rn", "On", "nd", "od", "pd", "qd", "rd", "In", "Un", "Vn", "Wn", "Qn", "An", "Bn", "Hn", "zd", "$n", "Kn", "Yn", "Zn", "Gn", "qn", "Xn", "Jn", "et", "nt", "tt", "rt", "lt", "at", "Pd", "it", "ut", "ot", "st", "ct", "ft", "dt", "pt", "ht", "gt", "mt", "vt", "bt", "yt", "kt", "wt", "St", "ge", "he", "Et", "je", "ke", "xt", "me", "ne", "oe", "Ct", "zt", "re", "se", "te", "ue", "ve", "Nt", "_t", "jt", "Lt", "Ae", "Be", "Ce", "De", "Ee", "Fe", "Ge", "Pt", "Ie", "Je", "Ke", "Le", "Me", "Ne", "Oe", "Tt", "Dt", "Mt", "Ft", "Rt", "Ue", "Ve", "Ot", "It", "Ut", "Ze", "Vt", "Wt", "Qt", "At", "Bt", "Ht", "ff", "$t", "Kt", "Yt", "Zt", "Gt", "qt", "nf", "D", "fr", "pf", "qf", "Xt", "sf", "tf", "cr", "vf", "wf", "Jt", "er", "zf", "Af", "Bf", "nr", "tr", "Ef", "rr", "lr", "ar", "ir", "If", "Kf", "Lf", "Mf", "ur", "or", "sr", "dr", "pr", "hr", "gr", "Uf", "E", "G", "mr", "vr", "br", "yr", "Yf", "Zf", "$f", "ag", "bg", "cg", "dg", "kr", "wr", "Sr", "hg", "ig", "jg", "Er", "xr", "Cr", "zr", "Nr", "Lr", "_r", "jr", "Pr", "tg", "ug", "vg", "wg", "Tr", "Dr", "Mr", "Fr", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Rr", "Lg", "Or", "Ir", "Ur", "Vr", "Qg", "Rg", "Sg", "Tg", "Tl", "Vg", "Wr", "Xg", "Yg", "Zg", "Qr", "ah", "bh", "ch", "dh", "Zl", "eh", "fh", "gh", "aa", "ih", "Ar", "kh", "Br", "L", "lh", "mh", "oh", "ph", "qh", "rh", "sh", "th", "uh", "vh", "c", "d", "wh", "f", "g", "h", "xh", "k", "m", "yh", "l", "zh", "Ah", "q", "r", "y", "n", "t", "J", "Hr", "$r", "Kr", "Yr", "Zr", "Gr", "Hh", "Ih", "Jh", "Kh", "Lh", "qr", "Mh", "Xr", "Oh", "Jr", "tl", "ll", "ul", "vl", "yl", "wl", "Sl", "El", "xl", "Q", "Wh", "Xh", "zl", "Nl", "Ll", "Cl", "bi", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "li", "mi", "Gl", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "Bi", "Ci", "Di", "Ei", "Fi", "Gi", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "_l", "Oi", "ba", "ya", "Ri", "ka", "Ti", "Ui", "Vi", "Wi", "Pl", "Yi", "Zi", "$i", "aj", "bj", "cj", "dj", "ej", "na", "ea", "hj", "ij", "jj", "kj", "lj", "mj", "Dl", "oj", "pj", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Ml", "Fl", "Rl", "Ol", "Ej", "S", "Fj", "Gj", "ra", "ma", "Ij", "Jj", "Il", "Ul", "Vl", "Wl", "Mj", "W", "Nj", "Ql", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "Wj", "Xj", "Al", "Bl", "Zj", "ak", "bk", "ck", "dk", "ek", "fk", "ga", "hk", "ik", "jk", "kk", "lk", "Hl", "$l", "Kl", "Yl", "Xl", "Jl", "la", "ia", "ua", "ca", "da", "va", "wa", "Ea", "xa", "Ca", "za", "Na", "La", "Dk", "Ek", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "Mk", "Nk", "Ok", "Pk", "Qk", "Rk", "Sk", "Tk", "Uk", "Vk", "_a", "Xk", "Yk", "Zk", "$k", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "jl", "kl", "ja", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "Da", "Fa", "Ia", "Aa", "checkDCE", "Ba", "Ha", "$a", "Ga", "Ja", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "init_ssg_sandbox_shims", "require_hsluv", "__commonJS", "exports", "Hsluv2", "_Hsluv", "c", "Y", "L", "chan", "digit2", "digit1", "hex2", "offset", "slope", "intercept", "angle", "d", "f1", "f2", "f3", "f4", "f5", "f6", "lr", "lg", "lb", "divider", "varU", "varV", "hrad", "l", "sub1", "sub2", "s1r", "s2r", "s3r", "s1g", "s2g", "s3g", "s1b", "s2b", "s3b", "r0", "r1", "g0", "g1", "b0", "b1", "h", "hueRad", "max", "require_eventemitter3", "module", "has", "prefix2", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events", "name", "handlers", "i", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_react_is_production_min", "b", "e", "f", "g", "k", "m2", "n", "p", "q", "r", "t", "v", "w", "x", "z", "a", "u", "A", "require_react_is", "require_hoist_non_react_statics_cjs", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys3", "targetStatics", "sourceStatics", "key7", "descriptor", "require_fontfaceobserver_standalone", "B", "C", "D", "E", "F", "G", "H", "I", "M", "N", "J", "K", "O", "P", "y", "preloadKey", "isLazyComponentType", "componentType", "lazy", "factory", "LazyComponent", "factoryPromise", "LoadedComponent", "hasRendered", "Component17", "props", "ref", "ue", "objectKeys", "hasProp", "o", "prop", "equalsKey", "withEquals", "valueEqual", "arrayShallowEqual", "arrayDeepEqual", "equal", "mapShallowEqual", "aValue", "mapDeepEqual", "setEqual", "objectShallowEqual", "objectDeepEqual", "deep", "typeA", "aIsArray", "bIsArray", "aIsMap", "bIsMap", "aIsSet", "bIsSet", "dateA", "dateB", "regexpA", "regexpB", "isEqual", "error", "useGetRouteCallback", "routes", "routeId", "RouterContext", "RouterAPIProvider", "api", "children", "useRouter", "RoutesProvider", "getRoute", "se", "CurrentRouteContext", "useCurrentRoute", "_a", "router", "override", "re", "id", "pathVariables", "route", "useCurrentRouteKey", "currentRoute", "useOnRouteChange", "cb", "currentRoute", "useCurrentRoute", "lastRoute", "e", "isEqual", "useRoute", "routeId", "_a", "routerAPI", "useRouter", "getRouteElementId", "route", "hash2", "EMPTY_ARRAY", "monitorINPRelatedInputs", "signal", "inpRelatedInputs", "inpRelatedInputHandler", "event", "type", "i", "useRouteElementId", "id", "targetRouteId", "useCurrentPathVariables", "isFunction", "value", "isBoolean", "isString", "isNumber", "isArray", "isObject2", "isUndefined", "isNull", "isNullish", "isValidDate", "isGenerator2", "noop2", "isWindow", "isBot", "supportsRequestIdleCallback", "requestIdleCallback", "encodeSVGForCSS", "svg", "mockWindow", "query", "_url", "_target", "_features", "safeWindow", "canUseYield", "canUsePostTask", "pendingResolvers", "resolvePendingPromises", "resolve", "yieldUnlessUrgent", "options", "frame", "resolveFn", "schedulerYield", "interactionResponse", "priority", "yieldToMain", "continueAfter", "ensureContinueBeforeUnload", "schedulerOptions", "shouldPreloadBasedOnUA", "useRoutePreloader", "routeIds", "enabled", "getRoute", "ue", "preloadRoute", "component", "isLazyComponentType", "pageviewEventVersion", "sendTrackingEvent", "eventType", "eventData", "sendOn", "_a", "safeWindow", "trackingId", "href", "framerLocale", "computeRelativePath", "from", "to", "fromDir", "getDirAndFile", "toDir", "toFile", "relativePath", "relative", "path", "index", "CHAR_DOT", "CHAR_FORWARD_SLASH", "StringPrototypeCharCodeAt", "str", "StringPrototypeLastIndexOf", "searchString", "StringPrototypeSlice", "start", "end", "normalizeString", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "length", "lastCommonSep", "i", "fromCode", "out", "allowAboveRoot", "separator", "isPathSeparator", "code", "res", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "customNotFoundPagePaths", "pathVariablesRegExpRaw", "pathVariablesRegExp", "fillPathVariables", "variables", "match", "name", "value", "forwardCurrentQueryParams", "queryParamsString", "forwardQueryParams", "startOfHash", "hrefWithoutHash", "hash2", "startOfSearch", "currentSearchParams", "newSearchString", "newSearchParams", "key7", "replacePathVariables", "currentLocale", "nextLocale", "defaultLocale", "collectionId", "pathVariables", "collectionUtils", "resultPath", "isMissingInLocale", "resultPathVariables", "matches", "replacements", "_a2", "pathVariableWithDelimiter", "pathVariableValue", "currentSlug", "isString", "utils", "recordId", "nextSlug", "defaultLocaleSlug", "lastIndex", "replacedPath", "hasMatch", "replacement", "getLocalizedNavigationPath", "route", "preserveQueryParams", "result", "getSitePrefix", "siteCanonicalURL", "url", "defaultSitePageEffects", "PageEffectsContext", "e", "PageEffectsProvider", "children", "p", "usePageEffects", "getPageEffectForRoute", "currentRouteId", "nextRouteId", "global", "routes", "step", "maxDuration", "createLinearEasing", "generator", "time2", "state", "keyframes2", "cssVariable", "parseUnit", "calcMaskPosition", "mask", "innerWidth", "innerHeight", "x", "xUnit", "y", "yUnit", "conic", "progress2", "page", "percentage", "offsetToken", "isTransparentToBlack", "firstColor", "secondColor", "gradient", "circle", "inset", "bottom", "right", "blinds", "unit", "width", "widthToken", "wipe", "_mask", "offset", "maskGenerators", "restState", "valuesToCSSKeyframes", "values", "maskGenerator", "getMaskGenerator", "type", "createPageTransitionRules", "transition", "settings", "isSpringTransition", "easing", "duration", "spring", "getSpringOptions", "startKeyframes", "endKeyframes", "VIEW_TRANSITION_STYLES_ID", "defaultPageTransition", "createViewTransitionStylesheet", "exit", "enter", "styleElement", "styleContent", "removeViewTransitionStylesheet", "requestIdleCallback", "frame", "element", "noop3", "supportsViewTransitions", "addVTStylesheetAfterInRender", "effect", "resolve", "startViewTransition", "updateView", "signal", "useViewTransition", "sitePageEffects", "resolveHasPainted", "pe", "ue", "te", "update", "pageEffect", "hasPainted", "updateCanonicalURL", "prevUrl", "canonical", "newURL", "announceDiv", "announceNavigation", "useAfterPaintEffect", "effectFn", "deps", "options", "useEffectFn", "fe", "runAfterPaint", "fn", "yieldToMain", "runPromise", "cleanup", "useMonitorNextPaintAfterRender", "label", "measureDetail", "startLabel", "endLabel", "ignore", "pushRouteState", "routeId", "currentRoutePath", "currentPathVariables", "localeId", "isNavigationTransition", "newPath", "getPathForRoute", "pushHistoryState", "isHistoryState", "data2", "isObject2", "replaceHistoryState", "ignoreReplaceStateWrapper", "maybeHasPopstateBug", "isImpactedPopstateBugChromiumVersion", "userAgent", "chromePos", "chromiumVersion", "popstateCalled", "popstateListener", "msg", "useReplaceInitialState", "disabled", "initialPathVariables", "initialLocaleId", "supportsNavigationAPI", "isWindow", "usePopStateHandler", "setCurrentRouteId", "startViewTransition2", "monitorNextPaintAfterRender", "viewTransitionReady", "popStateHandler", "_b", "_c", "_d", "_e", "_f", "nextRender", "stopMonitoringINPRelatedInputs", "monitorINPRelatedInputs", "changeRoute", "viewTransition", "navigationTransition", "error", "traversalHandler", "event", "reject", "getHashForRoute", "hashVariables", "resolvedHash", "getRouteElementId", "m2", "p1", "relative2", "onlyHash", "currentPath", "isSamePageHashNavigation", "sitePrefix", "handleRedirectForMissingSlugs", "nextLocaleWithDefaultSlugPath", "switchLocale", "useNativeLoadingSpinner", "navigationPromise", "pe", "navigationController", "navigateListener", "te", "navigateEvent", "controller", "promise", "updateURL", "supportsNavigationAPI", "nonSlugCharactersRegExp", "trimSlugRegExp", "slugify", "value", "NodeIdContext", "e", "noopAsync", "defaultLocaleInfo", "LocaleInfoContext", "e", "useLocaleInfo", "eventsToStop", "stopFn", "event", "_a", "_b", "shouldTurnOnEventHandling", "turnOffReactEventHandling", "options", "body", "TurnOnReactEventHandling", "ue", "onlyRunOnce", "originalMethod", "hasRun", "args", "measureSafe", "name", "start", "end", "e", "_measureUnattributedHydrationOverhead_dec", "_measureMutationEffects_dec", "_markLayoutStylePaintEnd_dec", "_markRafEnd_dec", "_markRafStart_dec", "_markUseEffectsEnd_dec", "_markUseEffectsAreSynchronous_dec", "_markUseEffectsRouterStart_dec", "_markUseEffectsStart_dec", "_markUseLayoutEffectsEnd_dec", "_markRouterUseLayoutEffectStart_dec", "_markUseLayoutEffectsStart_dec", "_markUseInsertionEffectsEnd_dec", "_markUseInsertionEffectRouterStart_dec", "_markUseInsertionEffectsStart_dec", "_markRenderEnd_dec", "_markRenderStart_dec", "_init", "HydrationMarker", "__runInitializers", "__publicField", "__decoratorStart", "__decorateElement", "__decoratorMetadata", "hydrationMarker", "markHydrationStart", "useMarkRouterEffects", "ie", "fe", "wasInBackground", "useMarkSuspenseEffectsStart", "frame", "useMarkSuspenseEffectEnd", "yieldToMain", "MarkSuspenseEffectsStart", "MarkSuspenseEffectsEnd", "MarkSuspenseEffects", "renderPage", "Page4", "defaultPageStyle", "props", "p", "NotFoundError", "NotFoundErrorBoundary", "I", "error", "nextProps", "prevState", "newState", "notFoundPage", "memoPathRoutes", "memoPaths", "lastRoutes", "getRouteInfoMemo", "routes", "routeId", "path", "pathDepth", "depth1", "depth2", "inferInitialRouteFromPath", "decodedLocationPath", "fallback", "locales", "pathRoutes", "paths", "activeLocale", "localeId", "locationPath", "firstPathSegment", "slug", "defaultLocale", "exactMatch", "match", "matchPath", "rootPath", "firstRoute", "pathWithTrimmedSlashes", "routePath", "pathVariablesKeys", "routePathRegExpString", "escapeStringRegExp", "pathVariablesRegExp", "_", "routePathRegExp", "matches", "pathVariables", "pathVariablesValues", "i", "key7", "value", "existingValue", "string", "getVariantsFromServerTiming", "serverTiming", "entry", "it", "patchRoute", "abTestId", "abTestingVariantId", "route", "abTestingParentId", "patchingRoute", "elements", "patchRoutesFromSearchParams", "variants", "removeRoutesVariants", "patchInitialRoute", "parentId", "patchRoutesForABTesting", "initialRouteId", "resolvedInitialRouteId", "parentRouteId", "mainTagId", "generatedPageDatasetKey", "searchIndexMetaName", "searchIndexMetaSelector", "endOfHeadStartMarker", "endOfHeadEndMarker", "endOfBodyStartMarker", "endOfBodyEndMarker", "assert", "condition", "msg", "lines", "assertNever", "x", "insertHTML", "html", "referenceNode", "position", "insertionParent", "insertionPoint", "range", "fragment", "pump", "sourceNode", "targetParent", "beforeNode", "node", "needsWait", "handleScript", "clone", "parent", "script", "execExternalBlockingScript", "resolve", "useMetadata", "metadata", "isInitialNavigation", "useRouter", "robotsTag", "mainTag", "insertCustomHTML", "customHTMLHeadStart", "customHTMLHeadEnd", "customHTMLBodyStart", "customHTMLBodyEnd", "endOfHeadStart", "endOfHeadEnd", "endOfBodyStart", "endOfBodyEnd", "findCommentMarkers", "nodes", "startMarker", "endMarker", "j", "startNode", "endNode", "warningMessages", "warnOnce2", "keyMessage", "rest", "deprecationWarning", "removedItem", "removalVersion", "replacement", "replacementText", "warningText", "Observers", "observer", "isCalled", "change", "transaction", "accumulatedChange", "finishObservers", "Animatable", "Animatable2", "isAnimatable", "AnimatableValue", "update", "transactionId", "updatedValues", "animatable", "finish", "defaultValue", "object", "result", "onUpdateKey", "finishTransactionKey", "animatableInterpolation", "currentInterpolation", "from", "to", "fromValue", "toValue", "progress2", "v", "oldValue", "handler", "roundedNumber", "decimals", "multiplier", "roundWithOffset", "value", "offset", "roundToHalfPixel", "Point", "x", "y", "Point2", "points", "args", "previousValue", "currentValue", "a", "b", "point", "deltaX", "deltaY", "lastValue", "diff", "maxDiff", "nTimes", "center", "centroid", "sumX", "sumY", "centroidX", "centroidY", "sortClockwise", "centerPoint", "angles", "i", "BezierDefaults", "controlPointsForCurve", "curve", "BezierAnimator", "options", "interpolation", "__publicField", "delta", "duration", "assert", "controlPoints", "p1x", "p1y", "p2x", "p2y", "UnitBezier", "point1", "point2", "epsilon2", "t", "t0", "t1", "t2", "x2", "d2", "Integrator", "accelerationFunction", "state", "dt", "c", "d", "dxdt", "dvdt", "initialState2", "dv", "derivative", "isInterpolatable", "value", "Interpolation", "from", "to", "NumberInterpolation", "a1", "b1", "progress2", "epsilon", "minDuration", "maxDuration2", "minDamping", "maxDamping", "approximateRoot", "func", "derivative", "initialGuess", "times", "result", "i", "end", "asc", "angularFrequency", "undampedFrequency", "dampingRatio", "SpringCurveValueConverter", "tension", "friction", "mass", "velocity", "duration", "a", "b", "d", "envelope", "envelopeUndampedFrequency", "exponentialDecay", "currentDisplacement", "c", "derivativeUndampedFrequency", "e", "f", "g", "SpringTensionFrictionDefaults", "SpringDampingDurationDefaults", "isDampingDurationSpringOptions", "options", "SpringAnimator", "interpolation", "__publicField", "_opt", "toPass", "Integrator", "state", "delta", "assert", "positionNearZero", "velocityNearZero", "cssNames", "modulate", "value", "rangeA", "rangeB", "limit", "fromLow", "fromHigh", "toLow", "toHigh", "fromDelta", "toDelta", "result", "isNumeric", "percentToFraction", "val", "digits", "numberFromString", "input", "match", "Hsluv", "require_hsluv", "hsluvConverter", "rgbToHsluv", "r", "g", "b", "rgbaFromHusl", "h", "s", "l", "a", "hsvToStr", "v", "_h", "_s", "_v", "rgbToRgb", "isNumeric", "bound01", "rgbToHex", "allow3Char", "hex2", "pad2", "rgbToHsl", "_r", "_g", "_b", "max", "min", "d", "hue2rgb", "p", "q", "t", "hslToRgb", "rgbToHsv", "hsvToRgb", "i", "f", "mod", "n", "_max", "_n", "isOnePointZero", "processPercent", "isPercentage", "char", "matchers", "cssUnit", "permissiveMatch3", "permissiveMatch4", "stringToObject", "inputColor", "trimLeft", "color2", "namedColor", "cssNames", "match", "percentToFraction", "parseIntFromHex", "convertHexToDecimal", "p3Matcher", "parseP3", "convertRGBChannelToLrgb", "c", "abs", "convertRgbToLrgb", "convertLrgbChannelToRgb", "convertLrgbToRgb", "convertP3ToXyz65", "convertXyz65ToRgb", "x", "y", "z", "convertRgbToXyz65", "convertXyz65ToP3", "convertRGBToHSV", "M", "m2", "res", "normalizeHue", "hue", "convertHsvToRgb", "convertRgbToP3", "convertP3ToRgb", "P3Color", "_P3Color", "__publicField", "space", "overrides", "clampedR", "clampedG", "clampedB", "value", "Color", "parsed", "isString", "alpha2", "clampRGB", "cache", "Color2", "createColor", "created", "colorData", "getCompleteColorStrategy", "newColor", "ColorMixModel", "colorModel", "initialValue", "colorString", "isObject2", "hsl", "hsv", "key7", "amount", "rgb", "angle", "alphaValue", "colorA", "colorB", "model", "progress2", "from", "toColor", "fromColor", "mixer", "fraction2", "limit", "result", "modulate", "hslA", "hslB", "fromH", "toH", "deltaH", "tween", "gen", "name", "deltaR", "deltaG", "deltaB", "deltaR2", "deltaG2", "deltaB2", "tolerance", "channelToDecimal", "interpolate", "convertChannelToLinearRgb", "channel", "l1", "l2", "colorOrR", "completeColor", "getCompleteColorFromRGB", "getCompleteColorFromString", "getCompleteColorFromHSL", "getCompleteColorFromHSV", "correctAlpha", "numberFromString", "ColorInterpolation", "type", "to", "Interpolation", "NoInterpolation", "ObjectInterpolation", "valueInterpolation", "interpolations", "keys3", "sum", "difference", "DefaultInterpolationOptions", "ValueInterpolation", "_ValueInterpolation", "options", "NumberInterpolation", "constructor", "isInterpolatable", "interpolation", "isMotionValue2", "v", "MotionValue", "Defaults2", "PrecalculatedAnimator", "options", "__publicField", "delta", "value", "time2", "assert", "index", "end", "EventEmitter3", "require_eventemitter3", "EventEmitter", "listeners", "eventName", "fn", "once", "unique", "context", "name", "count", "args", "_raf", "f", "__raf", "safeWindow", "raf", "LoopTimeStep", "Loop", "start", "task", "_a", "postEventTasks", "length", "i", "MainLoop", "RenderEnvironment", "RenderTarget", "RenderEnvironment", "target", "AnimationDriver", "animator", "updateCallback", "finishedCallback", "__publicField", "frame2", "elapsed", "value", "MainLoopAnimationDriver", "MainLoop", "DefaultDeprecatedAnimationOptions", "FramerAnimation", "_FramerAnimation", "from", "to", "animatorClass", "options", "driverClass", "deprecatedAnimationOptions", "animatorOptions", "interpolation", "ValueInterpolation", "BezierAnimator", "PrecalculatedAnimator", "isFinished", "isAnimatable", "isMotionValue2", "targetObject", "Animatable", "update", "key7", "targetValue", "oldValue", "resolve", "reject", "reason", "correctBorderScale", "axis", "latest", "delta", "treeScale", "corrected", "addScaleCorrector", "deprecatedAnimate", "from", "to", "animator", "options", "deprecationWarning", "target", "fromValue", "isAnimatable", "isMotionValue2", "Animatable", "animation", "FramerAnimation", "animate2", "animate3", "animatorOrTransition", "animate", "SpringAnimator", "BezierAnimator", "LayoutIdContext", "e", "args", "LayoutIdProvider", "children", "re", "p", "l", "cache2", "pe", "screen", "usedIds", "getLayoutId", "te", "id", "name", "duplicatedFrom", "cacheKey", "previousId", "nodeIdentifier", "possibleMatch", "index", "duplicatedId", "assert", "match", "byLastIdMatch", "matchedLayoutId", "shouldUseNamedLastIdMatch", "previousLayoutId", "shouldUseNamedMatch", "last", "possible", "rootDuplicatedId", "identifier", "value", "layoutId", "nextValue", "nextLayoutId", "lastId", "possibleId", "persistLayoutIdCache", "contextValue", "initialValue", "AutomaticLayoutIds", "enabled", "props", "context", "se", "useConstant", "init", "ref", "baseStyle", "errorStyle", "textStyle", "titleStyle", "messageStyle", "ErrorPlaceholder", "error", "file", "title", "stripSlash", "message", "u", "getScaleData", "deviceOptions", "containerSize", "componentWidth", "componentHeight", "getComponentSize", "scaleX", "scaleY", "scale2", "screenScalePixelFix", "actualScreenWidth", "screenScaleX", "actualScreenHeight", "screenScaleY", "getColorsFromTheme", "theme", "type", "isDarkTheme", "ErrorBoundary", "I", "__publicField", "info", "_a", "stack", "line", "currentIndex", "_", "prevState", "Device", "canResize", "ResizeObserver2", "safeWindow", "_b", "optionsRef", "deviceAppearance", "scaleDataRef", "containerRef", "deviceRef", "screenRef", "updateImperativeScale", "invertScale", "point", "updateScale", "scaleTo", "scaleData", "observer", "containerStyle", "handStyle", "deviceStyle", "deviceImageStyle", "screenStyle", "getDeviceStyle", "resizeStyles", "screenBackground", "MotionConfig", "DEVICE_PADDING", "HAND_IMG_WIDTH", "HAND_IMG_HEIGHT", "HAND_IMG_GAP_WIDTH", "HAND_IMG_GAP_LEFT", "HAND_IMG_GAP_BOTTOM", "noDeviceSize", "deviceWidth", "deviceHeight", "noPadding", "padding", "overrideTheme", "noDeviceStyle", "overriddenColors", "appearance", "screenWidth", "screenHeight", "screenMaxHeight", "screenOffsetTop", "screenOffsetLeft", "screenRadius", "screenMaskImage", "screenColor", "shadow", "background", "hand", "boxShadows", "bezelStyle", "handOffsetLeft", "handOffsetRight", "handOffsetBottom", "handScale", "isFiniteNumber", "isEmpty", "obj", "isReactElement", "test", "isReactChild", "degreesToRadians", "degrees2", "Line", "Line2", "a", "b", "line", "offset", "angle", "Point", "rad", "x", "y", "lineA", "lineB", "segments", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "b1", "c1", "alpha2", "beta", "deltaAX", "deltaAY", "deltaBX", "deltaBY", "pointOnLine", "deltaX", "deltaY", "pointB", "point", "perp", "distance2", "hypotenuse", "r", "Rect", "rect", "other", "size", "n", "delta", "xOffset", "yOffset", "value", "doubleValue", "rectMaxX", "rectMaxY", "width", "height", "decimals", "roundedNumber", "points", "minX", "maxX", "minY", "maxY", "i", "ps", "tl", "tr", "_", "bl", "min", "max", "rect1", "rect2", "matrix", "rectA", "rectB", "aMax", "bMax", "rects", "comparingRect", "rectMinX", "rectMinY", "rectMidX", "rectMidY", "pointA", "minSize", "minWidth", "minHeight", "diffX", "diffY", "br", "anchorRect", "direction", "alignment", "rebasedRect", "assertNever", "isAutoDimensionType", "dimensionType", "isUndefined", "ConstraintMask", "constraints", "isAutoDimensionType", "isFiniteNumber", "valueToDimensionType", "value", "trimmedValue", "ConstraintValues", "props", "left", "right", "top", "bottom", "width", "height", "centerX", "centerY", "aspectRatio", "autoSize", "isAnimatable", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "Animatable", "parsedHeight", "centerAnchorX", "centerAnchorY", "values", "parentSizeInfo", "freeSpace", "parentWidth", "parentHeight", "hOpposingPinsOffset", "pinnedOffset", "assertNever", "vOpposingPinsOffset", "sizeAfterApplyingConstraintsAndAspectRatio", "pixelAlign", "x", "y", "parentSizeForPositioning", "positioningParentWidth", "positioningParentHeight", "f", "Rect", "defaultWidth", "defaultHeight", "getConstraintValue", "constraint", "parentSize", "viewport", "constraintValueForUncalculatedViewport", "constrainHeight", "constrainWidth", "w", "h", "start", "end", "containsInvalidStringValues", "constraintsEnabled", "sizeFromFiniteNumberProps", "size", "rectFromFiniteNumberProps", "calculateRect", "parentSizeDisabled", "constraintValues", "getConstraintValues", "enabledParentSize", "deprecatedParentSize", "center", "_constraints", "constraintMask", "ConstraintsContext", "e", "deprecatedParentSize", "parentSize", "useParentSize", "isSize", "o", "ProvideParentSize", "props", "currentParentSize", "children", "value", "getParentWidth", "getParentHeight", "p", "l", "useProvideParentSize", "node", "useConstraints", "calculateRect", "isAutoSized", "width", "height", "ControlType", "ControlType2", "isFlexboxGapSupportedCached", "isFlexboxGapSupported", "flex", "isSupported", "flexboxGapNotSupportedClass", "initialized", "installFlexboxGapWorkaroundIfNeeded", "richTextStylesRule", "richTextParagraphSpacingStylesRule", "richTextBackgroundMaskStylesRule", "richTextLinkStylesRule", "richTextLinkHoverStylesRule", "richTextLinkCurrentStylesRule", "richTextLinkCurrentHoverStylesRule", "richTextBoldStylesRule", "richTextItalicStylesRule", "richTextImageRule", "richTextBlockElementResetRule", "richTextStylesPresetResetRule", "richTextStylesList", "richTextStylesListItem", "richTextStylesNumberedListMarker", "richTextStylesBulletedListMarker", "deprecatedRichTextCSSRules", "FormInputStyleVariableNames", "FormInputStyleVariableNames2", "Var", "inputClassName", "inputWrapperClassName", "emptyValueClassName", "forcedFocusClassName", "cssValue", "value", "css", "selector", "declaration", "output", "key7", "css2", "variable", "variables", "lastItem", "index", "sharedInputCSS", "inputClassName", "Var", "inputWrapperCSS", "inputWrapperClassName", "inputBorderAllSides", "inputBorderCSS", "customValidityKey", "validKey", "isRelevantValidityStateKey", "isInvalid", "validity", "useCustomValidity", "onValid", "onInvalid", "onChange", "onBlur", "onFocus", "isValidRef", "e", "handleInvalid", "handleChange", "handleBlur", "iconSpacing", "iconSize", "inputIconCSSDeclaration", "createRGBVariableFallbacks", "fallback", "richTextCSSRules", "defaultCache", "defaultSheet", "injectCSSRule", "cssRule", "sheet", "cache2", "styleElement", "componentCSSRules", "textAlignmentRule", "textBlockSpanRule", "textInlineSpanRule", "renderTextStylesRule", "textStylesRule", "linkStylesRule", "linkHoverStylesRule", "linkCurrentStylesRule", "textCSSRules", "stackPositionRule", "nativeStackGapRules", "flexboxGapNotSupportedClass", "stackGapRule", "stackDirectionRuleVertical", "stackDirectionRuleHorizontal", "stackCSSRules", "navigationCSSRules", "scrollCSSRules", "nativeScrollCSSRules", "deviceComponentCSSRules", "pageContentWrapperWrapperCSSRules", "presenceCSS", "cursorCSS", "frameCSS", "resetCSS", "hideScrollbars", "willChangeOverrideCSSVariable", "willChangeEffectOverrideCSSVariable", "anySafariVersion", "safari16OrGreater", "willChangeTransformRules", "isPreview", "frameCSSRules", "svgCSSRules", "overflowClipFallbackCSSVariable", "overflowClipFallbackCSSRules", "combineCSSRules", "deprecatedRichTextCSSRules", "combinedCSSRules", "combinedCSSRulesForPreview", "didInject", "injectComponentCSSRules", "styles4", "RenderTarget", "rule", "isReactComponent", "component", "isObject2", "isFunction", "optionalKey", "controlIsOptional", "control", "getControlDefaultValue", "control", "isString", "isBoolean", "isUndefined", "isNumber", "isObject2", "isArray", "value", "applyControlDefaultsToDefaultProps", "defaultProps", "controls", "controlKey", "currentDefault", "controlIsOptional", "defaultValue", "getDefaultProps", "component", "applyControlDefaultsToReactDefaultProps", "isReactComponent", "addPropertyControls", "propertyControls", "getPropertyControls", "defaultPresetId", "presetsBase", "devicePresets", "deviceCodeComponentPresetIds", "devicePresetsMap", "map2", "preset", "getDevicePreset", "presetId", "defaultDeviceProps", "convertPropsToDeviceOptions", "props", "forceOldClay", "_a", "colors", "getColorsFromTheme", "shadowColor", "shadow", "rotate", "deviceWidth", "deviceHeight", "screenOffsetTop", "screenOffsetLeft", "colorId", "appearance", "colorIdForTheme", "screenWidth", "screenHeight", "screenOffsetRight", "handOffset", "makeScreenMaskImage", "supportsHand", "mask", "width", "height", "transform2", "encodeSVGForCSS", "lightColors", "darkColors", "theme", "availableColors", "color2", "skin", "orientation", "applyMetaTag", "name", "tag", "k", "v", "usePrototypingMetaTags", "e", "DeviceCodeComponentInner", "children", "deviceOptions", "injectComponentCSSRules", "p", "ProvideParentSize", "child", "resizedChild", "Device", "DeviceCodeComponent", "defaultWidth2", "defaultHeight2", "getComponentSize", "deviceCodeComponentPresets", "supportsOrientation", "supportsRealisticSkin", "supportsThemes", "realisticImage", "isStaticRenderer", "currentTarget", "RenderTarget", "useIsStaticRenderer", "isStatic", "ye", "asRecord", "object", "memoize", "fn", "cache2", "arg", "reactPropsRegex", "isPropValid", "prop", "mockWithWarning", "message", "warnOnce2", "mockWithoutWarning", "implementation", "image", "rect", "nodeId", "src", "runtime", "se", "element", "isRuntimeInjected", "runtimeProxy", "target", "key7", "reciever", "LibraryFeaturesContext", "e", "LibraryFeaturesProvider", "useLibraryFeatures", "wrapperStyle", "getPlaceholderStyle", "encodeSVGForCSS", "runtime", "cssObjectFit", "imageFit", "cssObjectPosition", "positionX", "positionY", "x", "y", "getImageStyle", "image", "useDecodingAttribute", "avoidAsyncDecoding", "currentDecoding", "switchDecodingToAuto", "te", "node", "onImageLoad", "event", "onImageMount", "StaticImage", "containerSize", "nodeId", "alt", "draggable", "source", "imageStyle", "decoding", "p", "CanvasImage", "wrapperRef", "imageElement", "wrapper", "OptimizedCanvasImage", "BackgroundImageComponent", "layoutId", "props", "motionDivToDivBackgroundImage", "fallbackWrapperStyles", "needsMotion", "imageNode", "isString", "backgroundSize", "isNumber", "tileSize", "roundedBackgroundSize", "roundToHalfPixel", "imageSource", "RenderTarget", "style", "motion", "collectBorderStyleForProps", "collapseEqualBorders", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderBottom", "borderLeft", "borderRight", "Border", "key", "BackgroundImage", "applyForwardOverrides", "background", "_forwardedOverrideId", "_forwardedOverrides", "id", "forwardedOverrideId", "src", "backgroundImageFromProps", "backgroundImage", "Animatable", "getIntrinsicSizeForBackgroundImage", "parseImageSizeFromSrc", "url", "width", "height", "htmlElementAsMotionComponent", "asElem", "safeNavigator", "isBrowser2", "isChrome", "safeNavigator", "isEdge", "isSafari", "isFirefox", "isFramerX", "isAndroid", "iOSRegex", "macIntelRegex", "isIOS", "isMacOS", "isWindows", "isTouch", "safeWindow", "isDesktop", "deviceType", "isTest", "deviceType", "safeNavigator", "deviceOS", "isMacOS", "isIOS", "isAndroid", "isWindows", "deviceFont", "os", "fonts", "isChrome2", "isChrome", "collectLayoutHintDataProps", "props", "center", "layoutHintDataPropsForCenter", "RenderTarget", "nodeIdFromString", "str", "processOverrideForwarding", "props", "children", "_forwardedOverrides", "e", "child", "transformTemplate", "center", "_", "generated", "useLayoutId", "specificLayoutId", "postfix", "name", "layoutIdKey", "duplicatedFrom", "__fromCodeComponentNode", "drag", "getLayoutId", "enabled", "re", "LayoutIdContext", "se", "existingLayoutId", "layoutIdCandidate", "useIsomorphicLayoutEffect2", "fe", "ue", "ComponentContainerContext", "useForceUpdate2", "setForcedRenderCount", "v", "SharedObserver", "__publicField", "entries", "entry", "callbackForElement", "element", "callback", "sharedResizeObserver", "isBrowser2", "useRerenderOnResize", "ref", "update", "useForceUpdate2", "ue", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "getMeasurableCodeComponentChildren", "element", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "isMeasurable", "unwrapInlinedDisplayContents", "firstMeasurableChild", "useMeasureLayout", "props", "ref", "getChildren", "options", "id", "visible", "_needsMeasure", "skipHook", "inCodeComponent", "re", "ComponentContainerContext", "onCanvas", "RenderTarget", "useIsomorphicLayoutEffect2", "runtime", "nodeIdFromString", "measureClosestComponentContainer", "container", "smallValue", "translateZ", "useTranslateZHack", "isFramerX", "isSafari", "isTest", "forceLayerBackingWithMotionStyle", "motionStyle", "forceLayerBackingWithCSSProperties", "cssProperties", "setTranslateZHack", "style", "enabled", "transform2", "isString", "resetSetStyle", "key7", "toValue", "microtask2", "asRecord", "value", "reset", "isValidCSSStyleValue", "isNumber", "isNull", "Layer", "Layer2", "I", "__publicField", "usingMotionStyle", "nextProps", "nextState", "isEqual", "prevProps", "manageCache", "cache2", "maxEntries", "i", "memoize2", "create", "r", "g", "hash", "hasher", "chr", "ConvertColor", "color2", "angle", "Color", "alpha2", "obj", "stringToObject", "hsv", "hsvToStr", "h", "a", "b", "input", "CSSVariableRegExp", "colorCache", "cachedMultiplyAlpha", "s", "gradientColorStops", "gradient", "stops", "stop", "gradientColorStopsHash", "result", "multiStopGradientKeys", "isMultiStopGradient", "simpleGradientKeys", "isSimpleGradient", "linearGradientKeys", "LinearGradient", "isObject2", "linearGradient", "overrideAngle", "getStopValue", "cssStops", "radialGradientKeys", "RadialGradient", "radialGradient", "widthFactor", "heightFactor", "centerAnchorX", "centerAnchorY", "index", "nextStop", "position", "collectBackgroundFromProps", "background", "backgroundColor", "isMotionValue2", "Animatable", "extractStyleFromProps", "name", "styleRef", "into", "hasLeftAndRight", "hasTopAndBottom", "getStyleForFrameProps", "hasEvents", "pointerEvents", "pointerEventsSet", "event", "getCursorFromEvents", "overflowKey", "hasScrollableContent", "hasScrollingOverflow", "unwrapFrameProps", "frameProps", "left", "top", "bottom", "right", "width", "height", "center", "_constraints", "size", "widthType", "heightType", "positionFixed", "positionAbsolute", "minWidth", "resolveMotionValue", "minHeight", "maxWidth", "maxHeight", "defaultFrameRect", "useStyleAndRect", "e", "injectComponentCSSRules", "_initialStyle", "__fromCanvasComponent", "unwrappedProps", "constraintsRect", "useConstraints", "defaultStyle", "shouldDisablePointerEvents", "safeToEditPointerEvents", "centerTextStyle", "child", "propsStyle", "constraintsStyle", "constraintsEnabled", "isAutoSized", "resultStyle", "isRenderingStaticContent", "isStaticRenderer", "filteredProps", "getMotionProps", "motionProps", "isValidMotionProp", "isPropValid", "hasDataFramerName", "VisibleFrame", "Y", "forwardedRef", "border", "_border", "__portal", "propsWithOverrides", "children", "processOverrideForwarding", "layoutId", "useLayoutId", "cursor", "fallbackRef", "pe", "dataProps", "currentStyle", "rect", "autoSized", "transformTemplate", "layoutHintDataPropsForCenter", "backgroundImage", "backgroundImageFromProps", "parentSize", "resolveParentSize", "wrappedContent", "useProvideParentSize", "u", "l", "p", "BackgroundImageComponent", "Border", "MotionComponent", "htmlElementAsMotionComponent", "intrinsicSize", "getIntrinsicSizeForBackgroundImage", "FrameWithMotion", "_usesDOMRect", "EmptyState", "title", "description", "hide", "insideUserCodeComponent", "target", "RenderEnvironment", "childCount", "scaleFactor", "Title", "Description", "TREE_ROOT_ID", "SharedLayoutContext", "SharedLayoutRoot", "tree", "transition", "shouldAnimate", "_a", "needsReset", "projectionNode", "_a2", "_b", "rootStyles", "MagicMotionCrossfadeRoot", "motion", "useMemoOne", "factory", "inputs", "initial", "ye", "isFirstRun", "committed", "ue", "setRef", "isFunction", "isMutableRef", "refHasValue", "useStableRefWithObserver", "callbacks", "useConstant", "cleanups", "refCallback", "cleanup", "callback", "fn", "cleanupFn", "useObserverRef", "createStableRefWithObserver", "useRefEffect", "effect", "deps", "effectRef", "depsChangedRef", "SharedIntersectionObserver", "entries", "observer", "entry", "callbackForElement", "SharedIntersectionObserverContext", "z", "observeElement", "observers", "root", "rootMargin", "threshold", "_useSharedIntersectionObserver", "useSharedIntersectionObserver", "noop2", "thresholds", "_", "ViewportContext", "useAppearEffect", "appearCallback", "internalState", "animateOnce", "isInView", "hasAnimatedOnce", "isIntersecting", "isIntersectingWithThreshold", "calculatedIntersection", "intersectionRect", "boundingClientRect", "safeWindow", "LayoutTree", "isLead", "isExiting", "isOverlayed", "animatesLayout", "sharedLayoutContext", "hasBecomeLead", "hasExitBeenCancelled", "shouldPromote", "shouldDemote", "overlayChanged", "projection", "SwitchLayoutGroupContext", "SharedLayoutTree", "NavigationContainerContext", "useIsInCurrentNavigationTarget", "newMap", "useMap", "NavigationTargetContext", "NavigationTargetWrapper", "isCurrent", "register", "te", "deregister", "cb", "newCleanup", "useOnCurrentTargetChange", "NavigationContainer", "isLayeredContainer", "isPrevious", "transitionProps", "backdropColor", "onTapBackdrop", "backfaceVisible", "exitBackfaceVisible", "animation", "exitAnimation", "instant", "initialProps", "exitProps", "withMagicMotion", "areMagicMotionLayersPresent", "isInitial", "animate3", "useAnimation", "presence", "PresenceContext", "persistLayoutIdCache", "LayoutIdContext", "previousState", "getOriginProps", "viewportRef", "isBeingRemoved", "wasPrevious", "wasCurrent", "shouldAnimateIn", "shouldAnimateOut", "origins", "wasReset", "allAnimatableProperties", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "shouldUsePreviousValue", "currentOriginProps", "isFiniteNumber", "containerProps", "_c", "toPropsContain3d", "fromPropsContain3d", "NavigatorMock", "warnOnce2", "navigatorMock", "NavigationContext", "TransitionDefaults", "pushTransition", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "component", "currentOverlay", "overlayItemId", "overlayStack", "currentItem", "isCurrentScreen", "nextIndex", "removed", "shouldMoveForward", "isNextTargetForward", "current", "previous", "containerKey", "findLatestHistoryIndex", "containerVisualIndex", "containerIsRemoved", "magicMotionPropsForAdd", "transitionForContainer", "updateTransitions", "containers", "nextItem", "history", "assert", "item", "previousTransition", "visualIndex", "magicMotionPropsForRemove", "nextKey", "update", "nextVisualIndex", "validTargets", "nextValidTarget", "targetVisualIndex", "currentVisualIndex", "shouldRemoveLastKey", "containerIndex", "transitions", "screenIndex", "transitionForScreen", "stackState", "sequence", "allAnimatableKeys", "objectKeys", "direction", "from", "property", "transitionTo", "transitionFrom", "NavigationCallbackContext", "e", "IsInitialNavigationContext", "e", "Navigation", "_lastEventTimeStamp", "_a", "_Navigation_instances", "getStackState_fn", "isSameEventTransition_fn", "_navigationAction", "transition_fn", "I", "props", "_a2", "__privateAdd", "__publicField", "defaultState", "action", "newState", "reduceNavigationStateForAction", "skipLayoutAnimation", "historyItem", "withMagicMotion", "updateState", "__privateMethod", "__privateSet", "__privateGet", "component", "isReactChild", "isReactElement", "transition", "TransitionDefaults", "key7", "_b", "options", "pushTransition", "overlayTransition", "flipTransition", "_c", "_d", "_e", "stackState", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "isInitial", "contentContainers", "index", "assert", "visualIndex", "removed", "transitionProps", "isCurrent", "isPrevious", "areMagicMotionLayersPresent", "p", "NavigationContainer", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "MagicMotionCrossfadeRoot", "containerContent", "overlayContainers", "item", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "FrameWithMotion", "NavigationContext", "u", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "SharedLayoutRoot", "AnimatePresence", "current", "previous", "currentOverlay", "previousOverlay", "transitionTraits", "transitionOptions", "NavigationCallbackContext", "animationDefault", "overlayStack", "currentOverlayItem", "previousOverlayItem", "containerIndex", "history", "navigationItem", "screenIndex", "overlayIndex", "containerCurrent", "overCurrentContext", "child", "position", "shouldStretchWidth", "shouldStretchHeight", "canStretchStyle", "isObject2", "goBackAction", "NavigationWrapper", "resetProjection", "useResetProjection", "useInstantLayoutTransition", "injectComponentCSSRules", "import_hoist_non_react_statics", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics3", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics2", "__toESM", "require_hoist_non_react_statics_cjs", "clamp2", "value", "a", "b", "min", "max", "hasOwnProperty", "obj", "prop", "$private", "ObservableObject", "ObservableObject2", "initial", "makeAnimatables", "observeAnimatables", "unproxiedState", "Observers", "key7", "state", "value", "asRecord", "sharedProxyHandler", "target", "observer", "ObservableObjectProxyHandler", "__publicField", "receiver", "privateObject", "animatable", "rawValue", "isAnimatable", "Animatable", "transactions", "change", "transaction", "result", "changed", "targetValue", "rawValueIsObject", "keys3", "privateIndex", "key2", "withOpacity", "target", "collectOpacityFromProps", "props", "style", "opacity", "Animatable", "shadowsAsFilter", "shadows", "filters", "dropShadows", "shadowItem", "collectTextShadowsForProps", "props", "style", "textShadow", "shadow", "collectLayerFilters", "props", "style", "filters", "isFiniteNumber", "shadowsAsFilter", "collectBackgroundFilters", "collectFiltersFromProps", "debounce", "fn", "time2", "timeout", "debounced", "args", "safeWindow", "cancel", "useWheelScroll", "ref", "enabled", "initial", "prev", "direction", "constraints", "offsetX", "offsetY", "onScrollStart", "onScroll", "onScrollEnd", "isWheelScrollActive", "pe", "getPointData", "te", "point", "getPoint", "data2", "handler", "clampX2", "v", "clamp2", "clampY2", "updateX2", "delta", "updateY2", "clampX", "clampY", "updateX", "updateY", "debouncedOnScrollEnd", "e", "x", "y", "useDomEvent", "hasPaddingPerSide", "props", "paddingPerSide", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "paddingFromProps", "padding", "makePaddingString", "top", "left", "bottom", "right", "Stack", "StackInner", "stackProps", "forwardedRef", "as", "distribution", "alignment", "gap", "wrap2", "externalUseFlexboxGap", "children", "styleProp", "className2", "willChangeTransform", "__fromCodeComponentNode", "parentSize", "__contentWrapperStyle", "containerProps", "useFlexboxGap", "stackRef", "flexDirection", "toFlexDirection", "isReverse", "isReverseDirection", "justifyContent", "toJustifyOrAlignment", "style", "Layer", "constraintsEnabled", "unwrapFrameProps", "layoutId", "useLayoutId", "_children", "processOverrideForwarding", "widthType", "heightType", "fractionChildren", "handleFraction", "gapChildren", "wrapInGapElementForLegacyGap", "content", "useProvideParentSize", "attributes", "fromCanvasComponent", "alignItems", "contentWrapperStyle", "gapEnabled", "isGapEnabled", "gapSupportedInMainAxis", "isGapSupportedInMainAxis", "asRecord", "p", "FrameWithMotion", "useForwardedRef", "motion", "addPropertyControls", "isFractionDimension", "dimension", "fraction", "value", "isFiniteNumber", "child", "isReactChild", "isReactElement", "isVertical", "hasFraction", "propsStyle", "size", "width", "height", "newWidth", "newHeight", "nextStyle", "gapStyle", "isVerticalDirection", "innerRef", "element", "pageContentWrapperType", "PageContainer", "effect", "dragEnabled", "contentHeight", "contentWidth", "isLastPage", "contentOffsetRef", "constraintsRef", "directionLock", "onDragStart", "onDrag", "onDragEnd", "isHorizontalDirection", "dragAxis", "hasHorizontalGap", "hasVerticalGap", "hasAutoWidth", "hasAutoHeight", "wrapperWidth", "wrapperHeight", "containerWidth", "containerHeight", "Page", "_a", "currentPage", "animateCurrentPageUpdate", "gapValue", "_padding", "momentum", "_defaultEffect", "background", "overflow", "_effect", "contentOffsetX", "contentOffsetY", "onChangePage", "_onDirectionLock", "_onUpdate", "wheelEnabled", "specificLayoutId", "rest", "hasMountedRef", "hasFixedSize", "RenderTarget", "isHorizontal", "warnOnce2", "injectComponentCSSRules", "pageCount", "maxOffsetRef", "fallbackContainerRef", "containerRef", "scrollableRef", "pageEffectValuesRef", "pageRectsRef", "internalX", "useMotionValue", "isMotionValue2", "internalY", "currentContentPageRef", "propsBoundedCurrentPageRef", "latestPropsRef", "lastDirectionRef", "snapToPage", "useSnapToPage", "_", "setForceUpdateCount", "containerSizeRef", "updateOnResize", "Z", "applyEffects", "effectDictionary", "index", "values", "effectValues", "key7", "effectValue", "updateMaxOffsetFromPageContents", "containerSize", "newPageContentRects", "getPageContentRects", "newMaxOffset", "getMaxOffset", "measureContainerSize", "offsetWidth", "offsetHeight", "currentSize", "updateAndSnapToPage", "newPage", "mount", "newBoundedCurrentPage", "getBoundedCurrentPage", "updateCurrentPage", "offset", "offsetForPage", "animated", "useIsomorphicLayoutEffect2", "contentOffset", "handleMeasureLifecycle", "newContainerSize", "onDragStartHandler", "event", "info", "onDragHandler", "onDragTransitionEnd", "onDragEndHandler", "startPosition", "axis", "velocity", "nearestPageIndex", "animateValue", "endPosition", "animate", "childComponents", "update", "motionValue", "hasEffect", "u", "EmptyState", "cubeEffect", "normalizedOffset", "coverflowEffect", "calcPileAxisOffset", "length", "pileEffect", "absoluteOffset", "wheelEffect", "originZ", "rotateX", "rotateY", "getDefaultEffect", "type", "pageRects", "allowSkippingPages", "distanceToStart", "rect", "rectPosition", "distanceToEnd", "closestPages", "a", "b", "closestToStart", "pageA", "pageB", "containerElement", "contentWrappers", "node", "childNode", "sizes", "contentWrapper", "isTest", "maxX", "maxY", "queriedSize", "pageContentRects", "paddingProps", "lastPageRect", "paddingSides", "paddingStart", "paddingEnd", "pageWidth", "freeSpace", "target", "pageIndex", "currentPageRect", "options", "latestDirection", "latestDefaultEffect", "latestEffect", "latestGap", "latestIsHorizontal", "pageRect", "effectFunction", "maxScrollOffset", "newPageIndex", "Page3", "ContentDimension", "pageContentDimensionOptions", "pageContentDimensionTitles", "option", "pageEffectOptions", "pageEffectTitles", "pageAlignmentOptions", "genericAlignmentTitles", "directionMap", "convertScrollDirectionToDrag", "scrollDirection", "useUpdateChildSize", "dragDirection", "children", "fromCanvasComponent", "se", "e", "child", "updatedSize", "update", "numberFromOptionalMotionValue", "value", "EmulatedScroll", "props", "forwardedRef", "direction", "directionLock", "dragEnabled", "dragElastic", "dragMomentum", "dragTransition", "wheelEnabled", "contentOffsetX", "contentOffsetY", "contentWidth", "contentHeight", "onScrollStart", "onScroll", "onScrollEnd", "onDragStart", "onDrag", "onDragEnd", "onUpdate", "onDirectionLock", "style", "scrollAnimate", "resetOffset", "overdragEnabled", "specificLayoutId", "_native", "containerProps", "layoutId", "useLayoutId", "defaultX", "useMotionValue", "defaultY", "x", "isMotionValue2", "y", "measuredConstraints", "pe", "dragControls", "useDragControls", "isInTarget", "useIsInCurrentNavigationTarget", "wasInTargetRef", "ie", "injectComponentCSSRules", "setMeasureDragConstraints", "constraints", "offsetToZero", "initial", "prev", "isPreview", "RenderTarget", "containerFallbackRef", "containerRef", "contentRef", "lastOffsetRef", "shouldResetScroll", "inTarget", "hasEnteredTarget", "measureAndUpdateScrollOffset", "mustReset", "previous", "shouldUpdateOffset", "currentMaxXOffset", "currentMaxYOffset", "hasSizeChanged", "hasScrollOffsetChanged", "currentOffsetX", "currentOffsetY", "nextXOffset", "nextYOffset", "useIsomorphicLayoutEffect2", "getLatestPoint", "resetInitialPoint", "te", "point", "getPointData", "data2", "updateScrollListeners", "scheduleUpdateScrollListeners", "frame", "onMotionDragStart", "event", "info", "onMotionDragTransitionEnd", "useWheelScroll", "overdragX", "overdragY", "setScrollX", "xValue", "element", "overdragXValue", "currentX", "setScrollY", "yValue", "overdragYValue", "currentY", "nativeOnScroll", "xDelta", "yDelta", "isEmpty2", "width", "height", "size", "p", "FrameWithMotion", "u", "EmptyState", "isFiniteNumber", "top", "left", "right", "bottom", "cx", "classNames", "isRunningAnimation", "phases", "runningAny", "cancelledAny", "phase", "didFinishAnimations", "timeConstant", "animatePointWithInertia", "from", "velocity", "onComplete", "onStop", "latest", "animationPhaseX", "animationPhaseY", "animations2", "updateHandler", "completionHandler", "animateValue", "animation", "scrollThreshold", "isTouchDevice", "isTouch", "isSafariBrowser", "isSafari", "getTouchAction", "canPanInDirection", "isInteractiveElement", "tag", "canStartScrollFromElement", "getEventPoint", "setPointerEvents", "getPointerEvents", "_a", "emptyObject", "useEmulateTouchScroll", "ref", "enabled", "scrollAnimationControlsRef", "ue", "targets", "downPoint", "scrollOffsetStart", "mouseMoveEvents", "onMouseMove", "offset", "Point", "deltaX", "deltaY", "target", "safeWindow", "getRecentEvents", "onMouseUp", "originalPointerEventsValue", "calculateVelocity", "shouldAnimateY", "shouldAnimateX", "position", "onMouseWheel", "onMouseDown", "previousPhase", "targetEl", "timeDelta", "events", "maxAge", "zeroPoint", "mouseUpEvent", "oldestMouseMoveEvent", "time2", "useUpdateScrollOffset", "side", "cancelEmulatedTouchScrollAnimation", "updateScrollLeft", "NativeScroll", "scrollBarVisible", "_contentWidth", "_contentHeight", "className2", "_directionLock", "_wheelEnabled", "_scrollAnimate", "_dragTransition", "_dragMomentum", "_dragElastic", "_overdragEnabled", "_onScrollStart", "_onScrollEnd", "_onDragStart", "_onDrag", "_onDragEnd", "_onUpdate", "_onDirectionLock", "fallbackRef", "previousIsInTargetRef", "updateScrollOffsetHandler", "previousIsTarget", "Scroll", "ScrollInner", "addPropertyControls", "native", "useNavigation", "re", "NavigationContext", "data", "Data2", "_data", "ObservableObject", "observer", "Data", "initialState", "DataObserverContext", "e", "useObserveData", "context", "DataObserver", "I", "__publicField", "MainLoop", "cancel", "Data", "children", "d", "observer", "p", "import_hoist_non_react_statics4", "__toESM", "require_hoist_non_react_statics_cjs", "prefix", "prefixLength", "extractPrefixedProps", "props", "keys3", "result", "rest", "key7", "strippedKey", "stripPrefixFromPrefixedKey", "GeneratedComponentContext", "e", "cloneChildrenWithProps", "children", "asNode", "cloned", "j", "child", "J", "q", "p", "l", "useCloneChildrenWithPropsAndRef", "forwardedRef", "hook", "useConstant", "createHook", "state", "createRefFunction", "updateIfNeeded", "nextForwardedRef", "ref", "shouldUpdate", "preventNextCall", "cloneChildrenWithPropsAndRef", "ownRef", "newProps", "isFunction", "cloneAsElement", "newRef", "prevForwardedRef", "prevChildRef", "value", "setRef", "StyleSheetContext", "framerPostSSRCSSSelector", "componentsWithServerRenderedStyles", "_a", "isBrowser2", "componentsWithSSRStylesAttr", "framerCSSMarker", "withCSS", "Component17", "escapedCSS", "componentSerializationId", "cssCollectorEnabled", "useLibraryFeatures", "sheet", "cache2", "id", "RenderTarget", "concatenatedCSS", "cssCollector", "u", "ie", "rule", "injectCSSRule", "CSSCollector", "__publicField", "css2", "componentId", "SSRParentVariantsContext", "SSRVariantClassName", "renderBranchedChildrenFromPropertyOverrides", "overrides", "variantClassNames", "primaryVariantId", "parentVariants", "cloneChildren", "activeVariantId", "childrenArray", "branches", "nonOverriddenVariants", "variantId", "propOverrides", "arePropOverridesEffectivelyDifferent", "effectiveVariants", "intersection", "remainingVariants", "effectiveRemainingVariants", "renderedBranches", "variants", "element", "hiddenClassNames", "generateHiddenClassNames", "assert", "variantHashFromClassName", "className2", "generateHiddenClassNames", "showOnlyInVariantIds", "parentVariants", "variantClassNames", "classNames", "variantId", "variantClassName", "alreadyHiddenInParent", "intersection", "variants", "variant", "arePropOverridesEffectivelyDifferent", "props", "propOverrides", "key7", "isEqual", "propsForBreakpoint", "overrides", "noopSubscribe", "returnTrue", "returnFalse", "PropertyOverridesWithoutCSS", "e", "ref", "cloneWithRefs", "useCloneChildrenWithPropsAndRef", "ancestorCtx", "SSRParentVariantsContext", "isHydrationOrSSR", "action", "useConstant", "isBrowser2", "generatedComponentContext", "GeneratedComponentContext", "useMemoOne", "breakpoint", "children", "restProps", "primaryVariantId", "renderBranchedChildrenFromPropertyOverrides", "cloneChildrenWithProps", "assertNever", "PropertyOverrides2", "withCSS", "SSRVariantClassName", "defaultVariantKey", "defaultVariants", "_variantHashes", "AnimationCollector", "__publicField", "__privateAdd", "nodeId", "prop", "value", "variantHash", "assert", "id", "existing", "existingValue", "info", "__privateGet", "_a", "transformTemplate2", "isFunction", "framerAppearTransformTemplateToken", "initial", "animate3", "config", "isObject2", "isString", "framerAppearEffects", "withOptimizedAppearEffect", "Component17", "optimized", "framerAppearIdKey", "disabledProps", "getDisabledFXPropsInStaticRenderer", "p", "optimizeAppear", "animateTargetAndTransition", "optimizeAppearTransformTemplate", "fn", "template", "framerAppearAnimationScriptKey", "isStaticRenderer", "isVariantOrVariantList", "effectValuesKeys", "makeFXValues", "defaults", "motionValue", "defaultFXValues", "isFXValuesKey", "effectEnabledStyle", "effectDisabledStyle", "useFXValues", "values", "enabled", "effect", "isUndefined", "loopOptionsKeys", "useDelay", "timeoutRef", "pe", "ue", "d", "resolve", "useLoop", "loopEffectEnabled", "loopRepeatDelay", "loopTransition", "loopRepeatType", "loop", "loopPauseOffscreen", "shouldReduceMotion", "useReducedMotionConfig", "mirrorStateRef", "delay3", "animationPromiseRef", "animateValues", "te", "transition", "mirror", "to", "from", "opts", "target", "animate", "isRunning", "setIsRunning", "ye", "shouldRunRef", "animateLoop", "start", "Z", "stop", "overrideRunRef", "hasLoop", "startStopTabVisibilityListener", "isIntersectingRef", "stopAfterAnimationEnds", "startAndStopBasedOnIntersection", "entry", "useSharedIntersectionObserver", "addWillChange", "se", "parallaxTransform", "scrollY", "originalPosition", "speed", "offset", "adjustPosition", "speedFactor", "initialPosition", "scrollOffset", "parallaxOptionsKeys", "useParallax", "options", "visibilityStyle", "parallaxTransformEnabled", "transform2", "yValue", "useScroll", "parallaxY", "useTransform", "visibility", "useMotionValue", "defaultValue", "observers", "re", "SharedIntersectionObserverContext", "useRefEffect", "element", "unobserve", "observeElement", "frame", "useOnRouteChange", "getTransition", "runEffectAnimation", "appearId", "instant", "motionValue2", "isMotionValue", "isNumber", "visualElement", "visualElementStore", "startTime", "safeWindow", "handoffAnimationStartTime", "presenceOptionsKeys", "usePresenceAnimation", "motionInitial", "motionAnimate", "motionExit", "presenceInitial", "presenceAnimate", "presenceExit", "style", "animateConfig", "exit", "isPresent", "safeToRemove", "usePresence", "internalState", "base", "hasMounted", "lastAnimate", "running", "effectEnabled", "calcOffsetTop", "container", "top", "current", "scrollObserverOffset", "createTransformInputRange", "transformTargets", "threshold", "callback", "starts", "inputRange", "index", "targetRef", "height", "previousTop", "end", "currentScrollDirection", "lastOffset", "scrollDirectionThreshold", "useScrollDirectionChange", "scrollDirection", "cb", "direction", "repeat", "currentRouteKey", "useCurrentRouteKey", "_", "directionChangeOffset", "lastDirection", "currentTarget", "scroll", "_2", "hasDirectionChanged", "nextTarget", "styleAppearOptionsKeys", "defaultOutputRange", "defaultRanges", "createInputOutputRange", "targets", "hasExit", "outputRange", "firstRange", "idx", "last", "makeStyle", "useAnimationVariants", "opacity", "targetOpacity", "transformPerspective", "enter", "animateVariant", "defaultStyles", "useStyleAppearEffect", "playState", "animation", "runAnimation", "fromInitial", "transitionWithFallback", "toValue", "hasAnimatedOnce", "animateWithIntersectionObserver", "useAppearEffect", "appears", "isPlaying", "lastAppearState", "animateWithScrollInfo", "playedState", "lastVariant", "transform", "variantAnimation", "asRecord", "styleTransformOptionsKeys", "defaultValues", "defaultRanges2", "useAttachOptionalSpring", "spring2", "springs", "objectKeys", "startAnimation3", "active", "animateValue", "m2", "latestValue", "latestSetter", "startAnimation2", "v", "set", "createInputOutputRanges", "effectKeyOutputRange", "_b", "_c", "previousTarget", "createPageOutputRange", "keyOutputRange", "pageInputRange", "useStyleTransform", "transformTrigger", "styleTransformEffectEnabled", "transformViewportThreshold", "effectDisabled", "triggerOnScroll", "fe", "scrollYInputRange", "groups", "groupValues", "backwardsCompatibleEnabledCheck", "secondaryKey", "object", "extractFXOptions", "result", "strippedKey", "stripPrefixFromPrefixedKey", "group", "keys3", "add2", "sum", "multiply", "reactRefObjectKey", "isReactRefObject", "addMotionValueStyle", "isVariantOrVariantList2", "withFX", "forwardedRef", "parallax", "styleAppear", "styleTransform", "presence", "forwardedProps", "targetOpacityValue", "withPerspective", "inSmartComponent", "observerRef", "useObserverRef", "presenceEffectValues", "presenceEffectStyle", "optimizedAppearDataAttribute", "parallaxValues", "parallaxStyle", "transformValues2", "scrollStyle", "appearEffectValues", "scrollAppearStyle", "loopValues", "loopStyle", "fxValues", "layerOpacity", "MotionValue", "scale2", "x", "y", "rotate", "rotateX", "rotateY", "skewX", "skewY", "drag", "dragConstraints", "useRerenderOnResize", "motionValueStyle", "motionGestures", "ComponentViewportContext", "e", "useComponentViewport", "ComponentViewportProvider", "width", "height", "y", "children", "rest", "ref", "componentViewport", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "p", "withGeneratedLayoutId", "Component17", "props", "layoutId", "useLayoutId", "shouldSuspenseBoundariesBeActive", "SynchronousSuspenseErrorBoundary", "I", "__publicField", "error", "errorInfo", "isSuspense426Error", "componentStack", "stack", "sendTrackingEvent", "suspendPromise", "Suspend", "suspend", "DisableSuspenseSuspenseThatPreservesDomContext", "z", "SuspenseThatPreservesDom", "re", "l", "L", "NullFallback", "nullFallback", "collectErrorToAnalytics", "isWindow", "logError", "args", "shouldEnableCodeBoundaries", "RenderTarget", "CodeComponentBoundary", "getErrorMessage", "fallback", "ServerSideErrorBoundary", "ClientSideErrorBoundary", "hasError", "DeprecatedContainerErrorBoundary", "ExternalComponentContext", "useNearestExternalComponent", "useFurthestExternalComponent", "nearestExternalComponent", "item", "IsExternalComponent", "scopeId", "nodeId", "parent", "newValue", "CRASH_ERROR_MESSAGE_PREFIX", "formatCodeCrashLocationFromSourceNode", "getErrorMessageForComponent", "getErrorMessageFor", "getErrorMessageForOverride", "element", "shouldWrapComponentWithBoundary", "scopeIdOfThisComponent", "scopeIdOfNearestExternalComponent", "externalComponentLevel", "isAuthoredByUser", "isExternalComponent", "inComponentSlot", "isLocalComponentInstance", "isNodeLocalToProject", "shouldWrapOverrideWithBoundary", "scopeIdOfNodeWithOverride", "scopeIdOfThisNode", "isUndefined", "useMaybeWrapComponentWithCodeBoundary", "isModuleExternal", "ContainerInner", "as", "outerLayoutId", "useConstant", "MotionComponent", "htmlElementAsMotionComponent", "clonedChildren", "child", "childrenWithCodeBoundary", "ComponentContainerContext", "NodeIdContext", "AutomaticLayoutIds", "LayoutGroup", "Container", "SmartComponentScopedContainer", "rendersWithMotion", "otherProps", "tagName", "layoutDependency", "plainHTMLRenderableProps", "CustomCursorContext", "replaceCursorClassName", "cursorComponentClassName", "getActiveDefinitions", "map2", "previousDefinitions", "newDefinitions", "allCursors", "hashes", "hash2", "value", "CustomCursorContextProvider", "X", "events", "byCaller", "callback", "cursors", "id", "shouldReduceMotion", "useReducedMotionConfig", "u", "CustomCursorComponent", "CustomCursorHost", "withCSS", "staticCursorStyle", "customCursorReplacesNativeCursor", "cursor", "valueForCursorAlignment", "alignment", "assertNever", "getCenteringTransform", "placement", "portalIdAttribute", "getCursorHash", "x", "el", "isEmptyObject", "object", "_", "onRegisterCursors", "hasHoverCapability", "setHasHoverCapability", "ye", "pointerX", "useMotionValue", "pointerY", "opacity", "cursorRef", "pe", "internalState", "forceRender", "useForceUpdate2", "fe", "noHoverMQ", "safeWindow", "updateRender", "Z", "ue", "x2", "y2", "updateValues", "animate", "updateVariant", "frame", "updateCursor", "cancelFrame", "fireEventToTarget", "event", "_a", "hideCursor", "updateCursors", "newCursors", "unregister", "cursorHash", "replaceNativeCursor", "Cursor", "spring2", "sprungX", "useSpring", "sprungY", "useTransform", "transformTemplate2", "te", "t", "useCustomCursors", "webPageCursors", "registerCursors", "ae", "Polygon", "points", "sum", "len", "i", "pointA", "pointB", "polygonPoints2", "point", "_b", "_c", "_d", "sign", "Point", "x1", "y1", "i2", "d", "localSign", "pointsA", "pointsB", "boundingRectA", "Rect", "boundingRectB", "edgesA", "pointsALength", "index", "nextPoint", "Line", "edgesB", "pointsBLength", "edgeA", "edgeB", "rect", "edges", "seen", "count", "clippedPoints", "originalPoints", "intersectionKey", "keyForPoint", "line", "edge", "intersection2", "invertPlacement", "preferredOffset", "length", "max", "collisionDetectionPadding", "min", "size", "collisionAxis", "windowSize", "getPlacementAndOffsetAvoidingScreenCollision", "offset", "getSafePlacementFloatingPositionRect", "anchor", "collisionDetectionSize", "rebasedRect", "preferredRect", "safePlacement", "rebasedCollisionRect", "preferredPoint", "a", "b", "minInset", "safeAreaPolygonConstraints", "mouseOffset", "polygonPoints", "constrainX", "constrainY", "tl", "bl", "tr", "br", "mousePoint", "safeAreaInset", "delta", "floatingPositionSafeAreaStyle", "anchorRect", "floatingRect", "minX", "minY", "valueForFloatingAlignment", "motionOriginFromFloatingPosition", "domReadGetAncestorInfo", "anchorRef", "info", "domReadStartAnimationFrameLoop", "onRead", "domWriteCreateUpdateSafeArea", "safeAreaRef", "calculatedRect", "domWriteUpdatePosition", "floatingPositionRef", "position", "scrollX", "scrollY", "FloatingStackingContext", "Context2", "useDismissFloatingLayer", "safeArea", "onDismiss", "descendantStackingContext", "ancestorStackingContext", "isPresent", "safeToRemove", "usePresence", "handleEscape", "latestEvent", "maybeDismiss", "scheduleMaybeDismiss", "makeGetSafePlacementFloatingPositionRect", "useDynamicMotionOrigin", "initialPlacement", "originX", "originY", "origin", "motionValue", "values", "childrenWithOrigin", "isReactChild", "isReactElement", "isObject2", "style", "overlayContainerId", "templateOverlayContainerId", "getPortalContainer", "deprecatedSelector", "inComponent", "container2", "container", "isString", "Floating", "offsetX", "offsetY", "className2", "portalSelector", "zIndex", "collisionDetection", "contentRef", "updateOrigin", "refHasValue", "getSafePlacementRect", "cleanup", "cleanupHasRun", "initialUpdateHasRun", "elementRect", "updateSafeArea", "onRender", "initialRender", "onUpdate", "domReadUpdateSafePlacementAndRect", "safePlacementAndRect", "ancestorInfo", "handleMouseMove", "descendantContext", "Ha", "motion", "GracefullyDegradingErrorBoundary", "I", "__publicField", "error", "isBot", "stack", "sendTrackingEvent", "_a", "_b", "unwrappedError", "closingHTMLComment", "closingHTMLCommentReplacement", "dom", "p", "LazyValue", "_LazyValue", "resolver", "value", "status", "promise", "assertNever", "findAnchorElement", "target", "withinElement", "ChildrenCanSuspend", "children", "SuspenseThatPreservesDom", "withChildrenCanSuspend", "Component17", "Y", "props", "ref", "linkKey", "isLinkToWebPage", "link", "PRELOAD_AFTER_MS", "OBSERVER_THRESHOLD", "LOW_MEMORY_THRESHOLD", "MAX_CONCURRENT_PRELOADS_SLOW_NETWORK", "MAX_CONCURRENT_PRELOADS_FAST_NETWORK", "nodeToRoute", "preloadedRoutes", "routeToNodesInViewport", "getObserveRouteForPreloadingFn", "connection", "lowDeviceMemory", "effectiveType", "preloadDisabled", "maxPreloadAmount", "updateConnection", "observer", "onPreloadIntersectionChange", "activePreloadsAmount", "preloadTimeout", "route", "nodesInViewport", "preloadDone", "preloadRoute", "node", "entries", "_a2", "entry", "nodes", "amountOfNodesInViewport", "observeRouteForPreloading", "shouldPreloadBasedOnUA", "noLocale", "resolveSlugCache", "resolveSlug", "unresolvedSlug", "utilsByCollectionId", "activeLocale", "cache2", "collectionCache", "collectionItemCache", "lazyValue", "getUtils", "utils", "resolveSlugs", "unresolvedPathSlugs", "unresolvedHashSlugs", "collectionUtils", "handleSlugs", "unresolvedSlugs", "result", "slugKey", "assert", "pathResult", "slugResult", "resolveSlugsWithSuspense", "promises", "result2", "isInternalURL", "href", "isValidURL", "isInternal", "findMatchingRouteAttributesForWebPageLink", "router", "currentRoute", "pageLink", "implicitPathVariables", "webPageId", "hash2", "pathVariables", "hashVariables", "resolvedSlugs", "getRouteAttributes", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "findMatchingRouteAttributesForResolvedPath", "path", "pathnameWithQueryParams", "pathname", "routeId", "inferInitialRouteFromPath", "combinedPathVariables", "combinedHashVariables", "resolvedHref", "getPathForRoute", "resolvedHash", "getRouteFromPageLink", "isString", "elementKey", "collectionKey", "collectionItemIdKey", "pathVariablesKey", "mediaType", "isFramerPageLink", "parseFramerPageLink", "link", "isFramerPageLink", "url", "target", "mediaType", "searchParams", "element", "elementKey", "collectionItem", "collection", "collectionKey", "collectionItemId", "collectionItemIdKey", "pathVariablesValue", "pathVariablesKey", "pathVariables", "navigateFromAttributes", "navigate", "element", "implicitPathVariables", "_a", "routeId", "elementId", "pathVariables", "pathVariablesRaw", "href", "link", "parseFramerPageLink", "smoothScroll", "linkFromFramerPageLink", "isFramerPageLink", "parsed", "target", "collectionItem", "createVariablesFromPageLinkCollectionItem", "variables", "pathVariablesKey2", "value", "pathVariablesRegExp2", "PathVariablesContext", "z", "useImplicitPathVariables", "contextPathVariables", "re", "currentPathVariables", "useCurrentRoute", "linkMatchesRoute", "route", "webPageId", "hash2", "combinedPathVariable", "key7", "useLinkMatchesRoute", "pageLink", "isString", "isLinkToWebPage", "propsForLink", "href", "options", "isInternal", "isInternalURL", "props", "isValidURL", "getTargetAttrValue", "combineRels", "forwardCurrentQueryParams", "openInNewTab", "rel", "otherRel", "linkInfoKey", "link", "_a", "_b", "NestedLinksCollector", "__publicField", "result", "outerLinkKey", "innerLinkKeys", "outerLinkInfo", "assert", "links", "innerLinkKey", "innerLinkInfo", "outerLink", "innerLink", "isWindow", "isTest", "outerLinkNestingInfo", "nestedLinksCollector", "useIsOnFramerCanvas", "RenderTarget", "OuterLinkContext", "z", "useReplaceNestedLinks", "children", "scopeId", "nodeId", "propsAddedByLink", "observerRef", "re", "furthestExternalComponent", "useFurthestExternalComponent", "se", "router", "useRouter", "currentRoute", "useCurrentRoute", "route", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "getRouteFromPageLink", "shouldReplaceLink", "onClick", "te", "event", "openExternalLink", "onAuxClick", "onKeyDown", "useRefEffect", "node", "replacedChildren", "j", "child", "isChildReplaceable", "linkInfoIsCollectable", "tag", "maybeReplaceAnchorWithSpan", "childChildren", "childProps", "ref", "B", "p", "linkInfo", "isUndefined", "J", "target", "component", "isMotionComponent", "unwrapMotionComponent", "motion", "useTrackLinkClick", "clickTrackingId", "activeLocale", "hrefAttribute", "_c", "_d", "_e", "pageviewEventData", "sendTrackingEvent", "makeUrlAbsolute", "targetWebPageId", "targetRoute", "targetRoutePath", "targetCollectionItemId", "utils", "slug", "url", "safeWindow", "performNavigation", "routeId", "elementId", "combinedPathVariables", "smoothScroll", "beforeUrlUpdate", "isLazyComponentType", "createOnClickLinkHandler", "trackLinkClick", "usedMetaKey", "anchorElement", "findAnchorElement", "isExternalLink", "shouldPerformNavigation", "track", "yieldToMain", "propsForRoutePath", "linkOptions", "implicitPathVariables", "matchedRoute", "findMatchingRouteAttributesForResolvedPath", "pathVariables", "path", "getPathForRoute", "isBot", "anchorTarget", "Link", "withChildrenCanSuspend", "Y", "relValues", "preserveParams", "motionChild", "restProps", "forwardedRef", "useImplicitPathVariables", "useLocaleInfo", "isString", "resolvedHref", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "linkMatchesRoute", "hasRef", "useObserverRef", "observeRouteForPreloading", "navigate", "propsAddedByLinkExceptNavigate", "isInternalNavigation", "useCloneChildrenWithPropsAndRef", "cloneChildPropsWithAggregatedEvents", "rebindEventHandlersIfNeeded", "linkProps", "aggregatedProps", "onTap", "childOnClick", "childOnTap", "isFunction", "info", "isIOS", "preventClickOnNativeAnchorLink", "resolveLinkInternal", "href", "router", "implicitPathVariables", "onlyHash", "resolveSlugs2", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "isString", "propsForLink", "currentRoute", "webPageId", "hash2", "pathVariables", "hashVariables", "unresolvedHashSlugs", "unresolvedPathSlugs", "route", "resolvedSlugs", "combinedPathVariables", "combinedHashVariables", "getPathForRoute", "IgnoreErrors", "I", "__publicField", "error", "salt", "difficulty", "tokenLength", "maxTime", "createWorkerTask", "sha256", "text", "buffer", "hashBuffer", "b", "randomCharacters", "count", "characters", "result", "charactersLength", "i", "event", "salt2", "difficulty2", "tokenLength2", "maxTime2", "target", "startTime", "processing", "nonce", "secret", "hash2", "calculateProofOfWork", "resolve", "reject", "webWorkerURL", "worker", "getEncodedFormFieldsHeader", "data2", "addUTMTagsToFormData", "document2", "matches", "parsed", "key7", "trackFormSubmit", "router", "nodeId", "submitTrackingId", "_a", "pageviewEventData", "sendFormSubmitTrackingEvent", "trackingId", "sendTrackingEvent", "pendingState", "successState", "incompleteState", "completeState", "errorState", "formReducer", "state", "type", "assertNever", "stateCanSubmitForm", "preventDefault", "openExternalLinkInCurrentTab", "link", "formRef", "href", "isValidURL", "linkElement", "FormContext", "e", "FormContainer", "action", "children", "redirectUrl", "onSuccess", "onError", "onLoading", "props", "forwardedRef", "fallbackRef", "ref", "useRouter", "currentRoute", "useCurrentRoute", "implicitPathVariables", "useImplicitPathVariables", "dispatch", "activeLocale", "useLocaleInfo", "projectHash", "re", "callbacks", "redirectTo", "_b", "isString", "matchingRoute2", "findMatchingRouteAttributesForResolvedPath", "routeId2", "elementId2", "pathVariables2", "assert", "isLinkToWebPage", "matchingRoute", "findMatchingRouteAttributesForWebPageLink", "routeId", "elementId", "pathVariables", "handleSubmit", "_c", "_d", "_e", "_f", "yieldToMain", "safeWindow", "value", "submitForm", "Z", "handleKeyDown", "input", "form", "checkValidity", "anyEmptyRequiredFields", "p", "motion", "element", "child", "proofOfWork", "response", "body", "responseHasError", "isObject2", "isSamePage", "a", "aPathVariables", "bPathVariables", "timezone", "visitorLocale", "setTimezoneAndLocaleForTracking", "resolvedDateTimeOptions", "requestIdleCallback", "useSendPageView", "currentRouteId", "currentPathnameWithHash", "currentPathVariables", "collectionUtils", "framerSiteId", "pe", "skipFirstPageView", "ue", "getFullPageviewEventData", "currentLocation", "eventData", "pageviewEventVersion", "collectionItemId", "utils", "slug", "eventDataOrPromise", "listener", "defaultLocaleId", "useForceUpdate3", "_", "setForcedRenderCount", "v", "updateScrollPosition", "smoothScroll", "isHistoryTransition", "scrollElementIntoView", "useScheduleRenderSideEffects", "dep", "actions", "fe", "te", "cb", "executeBeforeUrlUpdateOnce", "beforeUrlUpdate", "noop2", "beforeUrlUpdateExecuted", "useNavigationTransition", "startNativeSpinner", "useNativeLoadingSpinner", "navigationController", "transitionFn", "nextRender", "updateURL", "isAbortable", "hasUpdateURL", "controller", "signal", "stopMonitoringINPRelatedInputs", "monitorINPRelatedInputs", "resolveNavigationPromise", "navigationPromise", "navigationTransition", "announceNavigation", "Router", "defaultPageStyle", "disableHistory", "initialPathVariables", "initialRoute", "notFoundPage", "routes", "initialLocaleId", "locales", "EMPTY_ARRAY", "preserveQueryParams", "LayoutTemplate", "editorBar", "siteCanonicalURL", "useMarkRouterEffects", "useReplaceInitialState", "startViewTransition2", "useViewTransition", "forceUpdate", "scheduleSideEffect", "startNavigation", "monitorNextPaintAfterRender", "useMonitorNextPaintAfterRender", "synchronousNavigationOnDesktop", "useLibraryFeatures", "se", "isDesktop", "fn", "isInitialNavigationRef", "currentPathnameWithHashRef", "currentRouteRef", "currentPathVariablesRef", "currentLocaleIdRef", "currentLocaleId", "id", "localeInfo", "localeOrLocaleId", "localeId", "defaultLocale", "nextLocale", "currentRouteId2", "currentRoute2", "localeResult", "switchLocale", "currentStatePaginationInfo", "isHistoryState", "currentPath", "ignorePushStateWrapper", "pushHistoryState", "setCurrentRouteId", "pathnameWithHash", "usePopStateHandler", "navigate", "newRoute", "routeStatus", "isLazyComponentType", "hasRendered", "executeBeforeUrlUpdate", "inUse", "path", "match", "pathVariablesRegExp", "usedVariable", "routeElementId", "getRouteElementId", "currentPathVariables2", "currentRouteLocaleId", "route", "pushRouteState", "getSitePrefix", "getPathForRoute", "getRoute", "useGetRouteCallback", "currentRoutePath", "isInitialNavigation", "api", "pageExistsInCurrentLocale", "pathWithFilledVariables", "fillPathVariables", "remountKey", "templatePageStyle", "useConstant", "RouterAPIProvider", "LocaleInfoContext", "SynchronousSuspenseErrorBoundary", "u", "SuspenseThatPreservesDom", "NotFoundErrorBoundary", "MarkSuspenseEffects", "WithLayoutTemplate", "inLayoutTemplate", "x", "renderPage", "TurnOnReactEventHandling", "style", "scrollIntoViewOptions", "preloadImage", "url", "image", "isObjectOrArray", "getPropertyByPath", "keyPath", "keyParts", "part", "current", "getRequestCacheKey", "loadingFetchResult", "isNumberString", "isValidFetchDataValueResult", "isNumber", "isBoolean", "resolveFetchDataValue", "request", "resolvedValue", "isUndefined", "minimumCacheDurationMs", "isCacheExpired", "insertionTimestamp", "cacheDuration", "RenderTarget", "cacheDurationMs", "currentTimestamp", "expirationTimestamp", "noop4", "_subscribers", "_preloadedRequests", "_shortestCacheDurations", "_cachedAt", "_ongoingFetches", "_staleQueriesInterval", "_FetchClient", "__privateAdd", "debounce", "responseValue", "cacheConfig", "__privateGet", "storedAt", "interval", "cacheKey", "currentIntervalForRequest", "shortestCacheDuration", "cachedAt", "rawData", "cached", "cachedData", "subscribers", "subscriber", "isBrowser2", "ongoingFetch", "hasExpiredCache", "promise", "onlyIfPrefetched", "callback", "skipFetchRequest", "cacheDurationForUrl", "nextSubscribers", "FetchClient", "FetchClientContext", "z", "IsRestoringCacheContext", "FetchClientProvider", "initialClient", "client", "ye", "isRestoring", "setIsRestoring", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "MotionGlobalConfig", "WillChangeMotionValue", "PageRoot", "RootComponent", "isWebsite", "routeId", "framerSiteId", "pathVariables", "routes", "collectionUtils", "notFoundPage", "isReducedMotion", "includeDataObserver", "localeId", "locales", "preserveQueryParams", "EditorBar", "defaultPageStyle", "disableHistory", "LayoutTemplate", "siteCanonicalURL", "e", "MainLoop", "p", "MotionConfig", "FetchClientProvider", "CustomCursorHost", "FormContext", "Router", "EditorBarLauncher", "Wrapper", "DataObserver", "RoutesProvider", "NavigationWrapper", "libraryFeatures", "useLibraryFeatures", "mounted", "setMounted", "ye", "re", "editorBarFeatures", "se", "features", "key7", "ue", "Z", "IgnoreErrors", "L", "ResolveLinks", "withChildrenCanSuspend", "Y", "links", "children", "rest", "ref", "router", "useRouter", "activeLocale", "useLocaleInfo", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "promises", "resolvedLinks", "link", "isString", "resolveLinkInternal", "unresolvedPathSlugs", "unresolvedHashSlugs", "handleSlugs", "slugs", "result", "slugKey", "unresolvedSlug", "assert", "lazyValue", "resolveSlug", "promise", "resolvedValue", "childrenWithLinks", "getLogger", "name", "args", "_a", "runtime", "isAnyCollection", "value", "isAnyLegacyCollection", "isAnyDatabaseCollection", "isLegacyCollection", "isArray", "isObject2", "isLegacyLocalizedCollection", "isFunction", "isDatabaseCollection", "isLocalizedDatabaseCollection", "getCollectionItems", "collection", "locale", "CompatibilityDatabaseCollection", "__publicField", "propertyControls", "getPropertyControls", "assert", "schema", "controlEntries", "key7", "controlDescription", "type", "item", "pointer", "data2", "isNullish", "definition", "isUndefined", "LazyValue", "promise", "index", "pointers", "items", "left", "right", "compareArray", "collation11", "leftLength", "rightLength", "i", "leftItem", "rightItem", "result", "compare", "castArray", "DatabaseValue", "compareBoolean", "castBoolean", "valueToBoolean", "cast", "compareColor", "castColor", "compareDate", "leftDate", "rightDate", "castDate", "date", "isValidDate", "compareEnum", "castEnum", "compareFile", "castFile", "compareLink", "leftEncoded", "rightEncoded", "castLink", "protocol", "compareNumber", "castNumber", "number2", "valueToNumber", "compareObject", "leftKeys", "rightKeys", "leftKey", "rightKey", "leftValue", "rightValue", "castObject", "definitionEntries", "itemDefinition", "compareResponsiveImage", "castResponsiveImage", "compareRichText", "castRichText", "compareVectorSetItem", "castVectorSetItem", "compareString", "castString", "valueToString", "assertNever", "isBoolean", "isNumber", "isString", "source", "target", "sourceValue", "targetValue", "isNull", "unknownDefinition", "getNetworkLatency", "getNetworkSpeed", "KB", "Cost", "_Cost", "network", "totalRequests", "transferredBytes", "latency", "speed", "cost", "Group", "id", "relational", "__publicField", "node", "required", "hash2", "existing", "winner", "Winner", "assert", "optimizer", "Cost", "cost", "evaluateSync", "generator", "state", "evaluateAsync", "value", "evaluateObject", "values", "result", "keys3", "promises", "key7", "isGenerator2", "evaluateArray", "AbstractNode", "isSynchronous", "RelationalNode", "group", "isHashable", "value", "isObject2", "isFunction", "calculateHash", "name", "values", "hashes", "isCollectionMetadata", "CollectionMetadata", "assert", "isFieldMetadata", "FieldMetadata", "isIndexMetadata", "IndexMetadata", "isRelationalNode", "RelationalNode", "isGroup", "Group", "RichTextResolver", "data2", "pointer", "__publicField", "VectorSetItemResolver", "VIRTUAL_INDEX_FIELD", "Metadata", "other", "item", "ids", "a", "b", "CollectionMetadata", "id", "name", "data2", "__publicField", "Indexes", "Fields", "IndexMetadata", "id", "data2", "collection", "lookupNodes", "constraint", "ordering", "__publicField", "Fields", "fieldName", "field", "Indexes", "Metadata", "FieldMetadata", "id", "name", "definition", "collection", "item", "assert", "value", "RichTextResolver", "VectorSetItemResolver", "Fields", "Metadata", "__publicField", "OrderingField", "field", "direction", "calculateHash", "Ordering", "ordering", "other", "fields", "VIRTUAL_INDEX_FIELD", "RequiredProps", "resolvedFields", "node", "Scope", "_Scope", "parent", "scopeField", "scope", "_a", "candidates", "namedFields", "Tuple", "result", "pointer", "tuple", "Relation", "_Relation", "tuples", "predicate", "callback", "start", "end", "keys3", "key7", "ProjectionField", "input", "RelationalProject", "_RelationalProject", "RelationalNode", "projections", "passthrough", "isSynchronous", "projection", "projectionFields", "required", "optimizer", "inputRequired", "inputCost", "projectionsCost", "Cost", "projectionCost", "projectionInput", "context", "outputFields", "projectedValues", "evaluateArray", "evaluateObject", "index", "collation", "ScalarNode", "AbstractNode", "referencedFields", "referencedOuterFields", "generator", "evaluateSync", "evaluateAsync", "collation2", "CaseCondition", "when", "then", "ScalarCase", "_ScalarCase", "conditions", "otherwise", "_b", "condition", "DatabaseValue", "valueToBoolean", "Builder", "normalizer", "query", "locale", "inScope", "select", "fromScope", "defaultOrdering", "orderProjections", "orderFields", "order", "isUndefined", "orderingField", "expression", "fieldId", "projectionScope", "offset", "limit", "selects", "outScope", "fieldName", "from", "assertNever", "collectionData", "getCollection", "collectionName", "collectionId", "CollectionMetadata", "indexData", "lookupNodes", "node2", "constraint", "indexId", "IndexMetadata", "leftScope", "rightScope", "leftOrdering", "rightOrdering", "left", "right", "isOuterField", "subquery", "unknownDefinition", "getArgument", "argument", "source", "target", "array", "Subquery", "data2", "isAnyLegacyCollection", "CompatibilityDatabaseCollection", "isDatabaseCollection", "isLocalizedDatabaseCollection", "RelationalFilter", "_RelationalFilter", "predicateCost", "predicates", "_", "RelationalIndexLookup", "_RelationalIndexLookup", "isFullScan", "lookup", "KB", "RelationalIntersection", "_RelationalIntersection", "leftOutputFields", "rightOutputFields", "leftRequired", "leftCost", "rightRequired", "rightCost", "ScalarEquals", "_ScalarEquals", "RelationalLeftJoin", "_RelationalLeftJoin", "group", "constraintCost", "leftConstraint", "rightConstraint", "joinKeyMap", "rightTuple", "rightValue", "tuplesForKey", "leftTuple", "leftValue", "matches", "joinedTuple", "hasMatch", "RelationalRightJoin", "_RelationalRightJoin", "RelationalScan", "_RelationalScan", "RelationalUnion", "_RelationalUnion", "ScalarAnd", "_ScalarAnd", "ScalarConstant", "collation3", "ScalarContains", "_ScalarContains", "sourceCost", "targetCost", "collation4", "ScalarEndsWith", "_ScalarEndsWith", "ScalarGreaterThan", "_ScalarGreaterThan", "ScalarGreaterThanOrEqual", "_ScalarGreaterThanOrEqual", "ScalarLessThan", "_ScalarLessThan", "ScalarLessThanOrEqual", "_ScalarLessThanOrEqual", "ScalarNotEquals", "_ScalarNotEquals", "ScalarOr", "_ScalarOr", "collation5", "ScalarStartsWith", "_ScalarStartsWith", "Explorer", "before", "after", "createIndexQueryAll", "length", "RelationalProps", "Memo", "relationalProps", "Group", "hash2", "existing", "relational", "RelationalLimit", "_RelationalLimit", "limitCost", "valueToNumber", "RelationalOffset", "_RelationalOffset", "offsetCost", "ScalarArray", "_ScalarArray", "itemDefinitions", "namedFieldEntries", "namedFieldIds", "inputContext", "relation", "relationTuple", "ScalarCast", "_ScalarCast", "ScalarFlatArray", "_ScalarFlatArray", "collation6", "ScalarIn", "_ScalarIn", "collation7", "ScalarIndexOf", "_ScalarIndexOf", "ScalarLength", "_ScalarLength", "ScalarNot", "_ScalarNot", "collation8", "ScalarNotIn", "_ScalarNotIn", "ScalarVariable", "Normalizer", "memo3", "pushedFilter", "pushedLimit", "nullableDefinition", "isLeftVariable", "arrayDefinition", "castConditions", "castWhen", "castCondition", "EnforcerNode", "EnforcerResolve", "_EnforcerResolve", "collections", "collectionItems", "pointers", "items", "collation9", "EnforcerSort", "_EnforcerSort", "isAscending", "leftPointer", "leftItem", "rightPointer", "rightItem", "isNull", "Optimizer", "query", "locale", "__publicField", "Memo", "Normalizer", "Explorer", "outScope", "Builder", "group", "required", "optimized", "namedFields", "winner", "normalized", "assert", "node", "cost", "enforcer", "EnforcerResolve", "EnforcerSort", "stringifyIdentifier", "expression", "stringifyLiteralValue", "stringifyFunctionCall", "argument", "stringifyExpression", "stringifyCaseExpression", "caseString", "condition", "stringifyUnaryOperation", "value", "stringifyBinaryOperation", "left", "right", "operator", "stringifyTypeCast", "stringifyQuery", "assertNever", "stringifyCollection", "collection", "isDatabaseCollection", "stringifyJoin", "join", "result", "stringifyFrom", "from", "autoIndentSql", "sql", "formattedSql", "token", "queryString", "selectExpression", "expressionString", "orderExpression", "log", "getLogger", "QueryEngine", "optimizer", "root", "relation", "namedFieldEntries", "tuple", "resolvedFields", "name", "field", "resolved", "RichTextResolver", "VectorSetItemResolver", "item", "entries", "resolvedEntries", "key7", "QueryCache", "queryEngine2", "maxSize", "getCacheKey", "existing", "resolver", "LazyValue", "collectionIds", "getCollectionId", "id", "replaceCollection", "_", "isObject2", "isAnyCollection", "localeId", "rejectPending", "pendingTimers", "pendingPromises", "t", "reject", "createSet", "useActiveVariantCallback", "baseVariant", "useConstant", "useOnCurrentTargetChange", "ue", "pe", "callback", "args", "resolve", "msDelay", "useAddVariantProps", "baseVariant", "gestureVariant", "variantProps", "e", "id", "_a", "_b", "_c", "activeMediaQueryFromWindow", "mediaQueries", "variant", "query", "safeWindow", "activeBreakpointHashesFromWindow", "breakpoints", "_a", "matches", "hash2", "mediaQuery", "defaultHash", "useHydratedBreakpointVariants", "initial", "hydratedWithInitial", "isInitialNavigation", "re", "IsInitialNavigationContext", "isStaticRenderer2", "useIsStaticRenderer", "usesMediaQueries", "isBrowser2", "baseVariant", "pe", "basePropsVariant", "forceUpdate", "useForceUpdate2", "instantTransition", "useInstantTransition", "setActiveVariantInstant", "te", "updateStateAndRerender2", "Z", "updateStateAndRerender", "useIsomorphicLayoutEffect2", "ue", "callbacks", "mql", "callback", "event", "addMQLCallback", "removeMQLCallback", "framerBreakpointCSSSelector", "requestIdleCallbackFallback", "callback", "removeHiddenBreakpointLayersV2", "breakpoints", "_a", "_b", "_c", "_d", "suspenseBoundaries", "activeBreakpointHashes", "activeBreakpointHashesFromWindow", "hash2", "hiddenLayer", "isSuspenseBoundaryStart", "supportsRequestIdleCallback", "safeWindow", "_a2", "ssrVariant", "suspenseBoundary", "isSuspenseBoundaryEnd", "node", "callbackForVariant", "map2", "variant", "useOnVariantChange", "callbackMap", "isStaticRenderer", "isActiveScreenRef", "e", "callbackMapRef", "useOnCurrentTargetChange", "isCurrent", "isOverlayed", "isActiveScreen", "callback", "useOnAppear", "setOverflow", "blockDocumentScrolling", "show", "frame", "htmlStyle", "useOverlayState", "showOverlay", "setShowOverlay", "yieldToMain", "Z", "key4", "isRoute", "route", "isObject2", "componentForRoute", "routeComponent", "withPreload", "preloadKey2", "component", "usePrototypeNavigate", "preload", "navigation", "useNavigation", "getRoute", "useRouter", "onCanvas", "useIsOnFramerCanvas", "componentOrRoute", "isString", "target", "options", "Component17", "appearsFrom", "backdropColor", "animation", "use", "promise", "queryEngine", "QueryEngine", "queryCache", "QueryCache", "useQueryData", "query", "activeLocale", "useLocaleInfo", "cached", "getWhereExpressionFromPathVariables", "pathVariables", "collection", "expressions", "value", "isUndefined", "isObject2", "name", "result", "expression", "createGestureVariant", "variant", "type", "nextVariant", "allVariants", "currentVariant", "nextIndex", "nextVariant2", "assert", "activeTransition", "transitions", "variantTransition", "getGesture", "enabledGestures", "isHovered", "isPressed", "isLoading", "isError", "hover2", "pressed", "loading", "error", "createVariantClassName", "baseVariant", "variantClassNames", "mappedClassName", "safeBaseVariant", "targetVariant", "fallbackVariant", "validBaseVariants", "CycleVariantState", "useRunCallbackIfPageIsVisible", "listenerRef", "pe", "callbackRef", "clean", "te", "ue", "callback", "listenerFn", "_a", "useRunCallbackIfElementIsInView", "observerRefCleanup", "isInViewRef", "observers", "re", "SharedIntersectionObserverContext", "ref", "queuedMicrotask", "observerCallback", "entry", "observeElement", "useUpdateIfVisible", "runUpdateIfPageIsVisible", "runUpdateIfElementIsInView", "checkViewport", "isBot", "globalWaitingForClickPromise", "globalWaitingForClickResolve", "getPromiseWithFallback", "resolve", "resolveFn", "globalWaitForClickListener", "event", "globalClickReceivedListener", "useWaitForGlobalClick", "enabled", "useVariantState", "variant", "externalDefaultVariant", "externalTransitions", "externalEnabledGestures", "externalCycleOrder", "variantProps", "forceUpdate", "useForceUpdate2", "isCanvas", "useIsOnFramerCanvas", "useConstant", "pauseOffscreenFeatureOn", "yieldOnTapFeatureOn", "useLibraryFeatures", "runUpdateIfVisible", "internalState", "resolveNextVariant", "targetBaseVariant", "isHovered2", "isPressed2", "isError2", "enabledGestures2", "defaultVariant2", "nextBaseVariant", "gesture", "nextGestureVariant", "createGestureVariant", "updateIfNeeded", "baseVariant2", "gestureVariant2", "clearError", "nextBase", "nextGesture", "yieldOnTap", "yieldToMain", "isHoveredHasUpdated", "isPressedHasUpdated", "Z", "setGestureState", "setVariant", "proposedVariant", "pauseOffscreen", "cycleOrder", "nextVariant", "clearLoadingGesture", "gestureVariant", "defaultVariant", "loadedBaseVariant", "addVariantProps", "useAddVariantProps", "se", "variants", "hasLoadingVariant", "gestures", "gestureHandlers", "activeTransition", "cx", "withCodeBoundaryForOverrides", "Component17", "scopeId", "nodeId", "override", "inComponentSlot", "shouldEnableCodeBoundaries", "appliedOverride", "tryToApplyOverride", "hasErrorBeenLogged", "CodeBoundaryForOverrides", "props", "ref", "nearestExternalComponent", "useNearestExternalComponent", "shouldWrapOverrideWithBoundary", "p", "NodeIdContext", "CodeComponentBoundary", "getErrorMessageForOverride", "logError", "collectErrorToAnalytics", "e", "error", "extractMappingFromInfo", "info", "_a", "json", "withMappedReactProps", "Component17", "rawProps", "props", "mapping", "key7", "asRecord", "p", "keys", "defaultRanges3", "createInputOutputRanges2", "transformTargets", "threshold", "exitTarget", "outputRange", "inputRange", "createTransformInputRange", "index", "lastInputRange", "isNumber", "firstItem", "withVariantAppearEffect", "e", "forwardedRef", "RenderTarget", "options", "rest", "extractPrefixedProps", "visibleVariantId", "obscuredVariantId", "animateOnce", "variantAppearEffectEnabled", "targets", "scrollDirection", "activeVariant", "setVariant", "animateState", "observerRef", "useObserverRef", "useAppearEffect", "appears", "playedState", "currentVariant", "scroll", "_", "scrollY", "transform", "variant", "useScrollDirectionChange", "useOnRouteChange", "target", "Z", "WindowContext", "e", "useProvidedWindow", "safeFonts", "fontAliases", "fontFamilies", "isSuccessfullyParsedFontVariant", "variant", "systemFontFamilyName", "LocalFontSource", "__publicField", "family", "fontFamily", "fonts", "fontFamilies", "members", "member", "selector", "weight", "font", "key7", "value", "fontAliases", "systemFontFamily", "aliases", "fontFamilies2", "weights", "styles4", "style", "createVariantName", "alias", "fontWeightNames", "friendlyStyle", "isVariableFont", "createFontFamilyName", "createVariableFontFamilyName", "familyName", "assert2", "condition", "msg", "_a", "_b", "e", "lines", "missing", "frozenEmptyArray", "emptyArray", "errorReporter", "reportError", "maybeError", "tags", "extras", "critical", "caller", "error", "reportableError", "UnhandledError", "message", "hostname", "isLocal", "hosts", "previewHostRegex", "match", "hostInfo", "cachedServiceMap", "getServiceMap", "extractServiceMap", "_c", "location", "services", "topOrigin", "servicesJSON", "jsonSafeCopy", "obj", "depth", "seen", "v", "result", "levelNames", "postfixNames", "applyLogLevelSpec", "spec", "all", "missingSpecs", "s", "level", "inverted", "i", "postfix", "regex2", "escapeRegExp", "loggersUpdated", "logger", "_LogEntry", "parts", "r", "part", "type", "json", "LogEntry", "logLevelSpec", "isNode", "isCI", "setLogLevel", "loggerId", "printed", "getLogger2", "entry", "replayBuffer", "postLogEntry", "p", "data2", "loggers", "maxReplayBufferEntries", "createLogEntry", "getLogReplayBuffer", "maxEntries", "pathRegex", "cachedFilename", "getFilenameFromWindowPathname", "id", "path", "existing", "Logger", "replay", "previousSpec", "enrichWithLogs", "errorIsCritical", "firstPart", "lastLoggedTime", "reportedError", "isErrorWithMessage", "name", "previous", "string", "Mixed", "DEPENDENCIES_MODULE_NAME", "DEPENDENCIES_MODULE_TYPE", "DEPENDENCIES_MODULE_TYPE_SLASH_NAME", "IMPORT_MAP_FILE_ID", "DEPENDENCIES_FILE_ID", "USE_FREEZE", "List", "List2", "push", "ls", "elements", "pop", "a", "unshift", "insert", "index", "length", "copy", "replace", "replacement", "itemsToAdd", "remove2", "move", "from", "to", "element", "zip", "b", "res", "update", "body", "targetElement", "unique", "union", "collections", "filter", "predicate", "objectHasOwnProperty", "hasOwnProperty2", "object", "property", "ValueObject", "ValueObject2", "morphUsingTemplate", "values", "template", "field", "writeOnce", "ReadonlySet", "ReadonlySet2", "add3", "set", "items", "item", "sets", "toggle", "ReadonlyMap", "ReadonlyMap2", "map2", "ResolvablePromise", "rej", "resolve", "reject", "val", "reason", "hasNativeYield", "hasNativePostTask", "hasIsInputPending", "log2", "getAssetFilename", "asset", "createAbsoluteAssetURL", "filename", "createAbsoluteAssetURLFromAsset", "supportsOpenType", "openTypeData", "validateVariationAxes", "variationAxesData", "variationAxes", "axis", "isVariationAxis", "isOpenTypeFeature", "feature", "builtInFontSelectorPrefix", "BuiltInFontSource", "assets", "properties", "fontName", "url", "variantNameToWeight", "getFontStyle", "weightA", "weightB", "kebabCaseVariant", "variantToKebabCase", "variantsNameToWeight", "locator", "f", "foundryName", "version2", "existingFontFamily", "_", "selectorWithoutPrefix", "getRelatedFontVariants", "currentVariant", "availableVariants", "pickBoldItalicVariants", "pickVariableVariants", "currentWeight", "currentStyle", "variantByWeightAndStyle", "boldVariantByStyle", "variantBold", "variantBoldItalic", "currentVariantWeight", "variantItalic", "variantVariable", "variantVariableItalic", "fallbackVariant", "fallbackItalicVariant", "isSameWeight", "isDefaultWeight", "customFontSelectorPrefix", "log3", "getLogger", "findDuplicateFont", "existingFonts", "newFont", "existingFont", "getCustomFontName", "fileName", "isAssetVariableFont", "getCustomFontInfo", "fontSubFamily", "faceDescriptors", "rawVariant", "containsVariant", "CustomFontSource", "_CustomFontSource", "isVariableFont2", "getAssetOwnerType", "enableFontImprovements", "_d", "ownerType", "duplicateInfo", "newIsWoff2", "existingIsWoff2", "updateFontRelationships", "possibleValues", "possibleValuesWithItalics", "lowerCaseFamily", "tokens", "foundToken", "char", "remainingSelector", "matchingFonts", "exactMatches", "woff2Font", "foundFontFamily", "fontToVariantWithMetadata", "_e", "relatedVariants", "loadFontsWithOpenType", "source", "supportedFonts", "loadFontToOpenTypeFeatures", "features", "knownFontshareCategories", "parseFontshareCategories", "categoriesField", "category", "isKnownFontshareCategory", "fontsharePrefix", "weightNameToNumber", "weightNames", "allowedVariantsRegex", "FontshareSource", "_FontshareSource", "variantSplit", "weightName", "weightName2", "styleName", "fontshareFonts", "fontsWithOpenType", "fontshareFont", "fontVariants", "fontStyle", "fontMetadataSelector", "hasOpenTypeFeatures", "fontVariant", "mapToKnownCategory", "fontToOpenTypeFeatures", "categoryString", "categoryMapping", "framerInterFontPrefix", "framerFontPrefix", "weightNameToNumber2", "FramerFontSource", "_FramerFontSource", "weightAndStyleInfo", "framerFonts", "framerFont", "rest", "isVariable", "googleFontSelectorPrefix", "GoogleFontSource", "_GoogleFontSource", "webFonts", "webFontsWithAxes", "fontsToVariationAxes", "webFontsMap", "mapBy", "webFont", "webFontsWithAxesMap", "webFontName", "staticVariants", "variantName", "variableFont", "variableVariants", "allVariants", "allSuccessfullyParsedVariants", "googleFontsVariantName", "linkedVariants", "mapToKnownCategory2", "array", "keyFn", "acc", "import_fontfaceobserver", "__toESM", "require_fontfaceobserver_standalone", "FONT_LOADING_TIMEOUT", "MAX_RETRIES", "FontLoadingError", "fontRequests", "fontReadyPromises", "loadFont", "doc", "loadFontWithRetries", "attempt", "stretch", "unicodeRange", "requestId", "fontFace", "isString", "readyPromise", "isFontReady", "readyPromiseId", "framer_default", "loadVariationAxes", "isValidVariationAxesData", "axes", "assertNever", "isObject2", "isValidVariationAxes", "isVariationAxis2", "FontStore", "staticFonts", "variableFonts", "runtime", "axesData", "builtInFonts", "importedFonts", "info", "googleLocator", "fontshareLocator", "builtInFontLocator", "framerFontDraftProperties", "fontIsVariable", "isTest", "selectors", "importPromises", "warnOnce2", "fontSelectors", "fontsLoadedCallback", "fontStore", "defaultFont", "assert", "passwordManagerIgnoreDataProps", "PlainTextInput", "Y", "props", "ref", "autoFocus", "className2", "inputName", "max", "min", "placeholder", "required", "step2", "style", "type", "maxLength", "defaultValue", "autofillEnabled", "onChange", "onBlur", "onInvalid", "onFocus", "onValid", "rest", "hasValue", "setHasValue", "ye", "prevDefaultValue", "setPrevDefaultValue", "handleChange", "te", "e", "yieldToMain", "newValue", "Z", "eventHandlers", "useCustomValidity", "p", "motion", "dataProps", "cx", "textInputWrapperClassName", "inputWrapperClassName", "inputClassName", "emptyValueClassName", "iconSize2", "defaultTextareaResizerIcon", "defaultDateIconMaskImage", "defaultTimeIconMaskImage", "styles", "sharedInputCSS", "inputBorderCSS", "inputWrapperCSS", "css", "encodeSVGForCSS", "inputIconCSSDeclaration", "iconSpacing", "forcedFocusClassName", "inputBorderAllSides", "FormPlainTextInput2", "withCSS", "Image2", "e", "props", "ref", "background", "children", "alt", "draggable", "fitImageDimension", "styleFromProps", "rest", "style", "intrinsicSize", "se", "getIntrinsicSizeForBackgroundImage", "fallbackIntrinsicSize", "setFallbackIntrinsicSize", "ye", "img", "size", "MotionComponent", "htmlElementAsMotionComponent", "u", "p", "BackgroundImageComponent", "parser", "supportsNativeParseHTML", "isFirefox", "domParser", "html", "type", "escapeHTML", "value", "regex", "replaceFramerPageLinks", "rawHTML", "getRoute", "currentRoute", "implicitPathVariables", "original", "pre1", "tag", "pre2", "value1", "value2", "post", "_a", "_b", "href", "pageLink", "parseFramerPageLink", "targetRoute", "isRoute", "targetPath", "currentPath", "attributes", "elementId", "getRouteElementId", "link", "linkFromFramerPageLink", "isString", "linkMatchesRoute", "relativePath", "pathVariables", "pathVariablesRegExp2", "_", "key7", "params", "computeRelativePath", "isShallowEqualArray", "a", "b", "v", "i", "deprecatedRichTextPlaceholder", "richTextWrapperClassName", "DeprecatedRichText", "Y", "props", "forwardedRef", "id", "name", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className2", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "environment2", "RenderTarget", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "_children", "rest", "parentSize", "useParentSize", "layoutId", "useLayoutId", "fallbackLayoutRef", "pe", "layoutRef", "navigate", "useRouter", "useCurrentRoute", "useRoutePreloader", "useMeasureLayout", "inCodeComponent", "re", "ComponentContainerContext", "isOnCanvas", "useIsOnFramerCanvas", "textOrOverride", "forwardedOverrideId", "override", "innerHTML", "escapedText", "useImplicitPathVariables", "innerHTMLWithReplacedFramerPageLinks", "se", "ue", "container", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "useLoadFonts", "ie", "injectComponentCSSRules", "isHidden", "style", "convertVerticalAlignment", "restrictedRenderTarget", "frame2", "calculateRect", "isAutoSized2", "template", "transformTemplate", "rotate", "Animatable", "collectFiltersFromProps", "collectTextShadowsForProps", "p", "motion", "cx", "fromCanvasComponent", "containerRef", "prevFontsRef", "fontStore", "newlyLoadedFontCount", "measureClosestComponentContainer", "newOverrideableRef", "patchAndWaitForChild", "ref", "controller", "current", "refCallbackResolve", "refCallbackPromise", "resolve", "reject", "element", "defaultValues2", "isEffectKey", "createKeyframes", "effect", "out", "effectValue", "defaultValue", "isUndefined", "emojiSplitRe", "tokenizeText", "tokenization", "elements", "words", "lastWordIndex", "word", "wordIndex", "isLastWord", "short", "u", "x", "char", "tokenizationForEffect", "assertNever", "transformString", "transforms", "isNumber", "getInitialEffectStyle", "canPlay", "canAnimate", "useTextEffect", "config", "preview", "useConstant", "isRenderingStaticContent", "isStaticRenderer", "state", "trigger", "target", "threshold", "play", "transition", "startDelay", "repeat", "tokenization2", "cleanupRef", "runAppearEffect", "inView", "effectEnabled", "hasMounted", "hasAnimatedOnce", "effectStyle", "mayAnimate", "r", "callback", "enter", "list", "createElementList", "animate", "stagger", "frame", "createLineGroups", "animations2", "group", "node", "groups2", "currentGroup", "lastOffset", "BaseSVG", "MotionSVG", "FitText", "viewBoxScale", "viewBox", "children", "defaultFonts", "richTextContainerComponentType", "RichTextContainer", "anchorLinkOffsetY", "_as", "_initialStyle", "stylesPresetsClassNames", "plainText", "fallbackRef", "textEffect", "processedChildren", "processRichTextChildren", "containerStyle", "positionStyle", "Component17", "htmlElementAsMotionComponent", "dataFramerName", "isFragment", "isLineBreak", "slugCounters", "tokenizer", "depth", "j", "onlyLineBreaks", "child", "J", "dataPresetTag", "isMotionComponent", "elementType", "unwrapMotionComponent", "stylesPresetClassName", "isHeading", "anchorLinkStylePresetClassName", "slug", "generateHeadingSlug", "anchorLink", "q", "headingText", "extractTextFromReactNode", "slugify", "slugCounter", "RichText", "content", "isObject2", "contentProp", "h1", "h2", "h3", "linearGradientLine", "angle", "rad", "offset", "anglePoint", "Point", "angleLine", "Line", "points", "Rect", "sortedPoints", "point", "a2", "b2", "assert", "c", "start", "end", "elementPropertiesForLinearGradient", "gradient", "line", "stops", "gradientColorStops", "startPosition", "endPosition", "startPoint", "endPoint", "interpolator", "interpolate", "LinearGradient", "stop", "ConvertColor", "elementPropertiesForRadialGradient", "RadialGradient", "isRelativeNumber", "withoutLastChar", "float", "getRelativeNumberValue", "getPositionXFraction", "positionX", "getPositionYFraction", "positionY", "imagePatternPropsForFill", "fill", "includeTransform", "BackgroundImage", "imageWidth", "imageHeight", "transform2", "fit", "offsetX", "offsetY", "scaleX", "scaleY", "imageRatio", "realWidth", "realHeight", "validScaleX", "validScaleY", "layerPositionX", "layerPositionY", "extraOffsetX", "extraOffsetY", "mediaType2", "isAssetReference2", "imageUrlForAsset", "asset", "pixelSize", "isExport", "runtime", "ImagePatternElement", "path", "useDOM", "isBrowser2", "SharedSVGEntry", "svg", "count", "visuallyHiddenStyle", "SharedSVGManager", "__publicField", "generateUniqueIds", "contentId", "overflowVisible", "entry", "hash", "uniqueSVG", "svgSize", "svgDom", "parseSVG", "prefixIdsInSVG", "getSVGSize", "newContainer", "svgElement", "size", "box", "revision", "latest", "output", "sharedSVGManager", "SharedSVGManager", "parseSVG", "svg", "node", "domParser", "prefixIdsInSVG", "prefix2", "sanitizedPrefix", "sanitizeString", "recursivelyPrefixId", "str", "el", "prefixId", "attr", "value", "base", "fragmentIdentifier", "URL_REF", "prefixedValue", "unitsToPixels", "parseLength", "_a", "m2", "getSVGSize", "width", "height", "SVG", "Y", "props", "forwardedRef", "parentSize", "useParentSize", "layoutId", "useLayoutId", "layoutRef", "e", "ref", "providedWindow", "useProvidedWindow", "useMeasureLayout", "p", "SVGComponent", "MAX_BACKGROUND_SVG_TEXT_LENGTH", "containsImageReference", "containsCustomPropertyReference", "hasBorderRadius", "style", "sizeSVG", "container", "_b", "div", "localWindow", "safeWindow", "viewBox", "withExternalLayout", "constraintsEnabled", "intrinsicWidth", "intrinsicHeight", "_constraints", "isFiniteNumber", "SVGStyleSheet", "injectComponentCSSRules", "Layer", "__publicField", "element", "calculateRect", "svgContentId", "contentid", "prevProps", "fill", "BackgroundImage", "resetSetStyle", "innerStyle", "frame2", "rotation", "rotate", "Animatable", "RenderTarget", "xFactor", "yFactor", "zoom", "target", "RenderEnvironment", "zoomFactor", "left", "right", "top", "bottom", "id", "visible", "title", "description", "className2", "variants", "innerRef", "_height", "_opacity", "_width", "requiresOverflowVisible", "rest", "identifier", "size", "outerStyle", "collectOpacityFromProps", "collectFiltersFromProps", "fillElement", "Color", "fillColor", "LinearGradient", "gradient", "gradientId", "stops", "x1", "x2", "y1", "y2", "elementPropertiesForLinearGradient", "stop", "idx", "RadialGradient", "elementProperties", "elementPropertiesForRadialGradient", "imagePattern", "imagePatternPropsForFill", "ImagePatternElement", "dataProps", "hasTransformTemplate", "layoutHintDataPropsForCenter", "svgAsBackgroundImage", "content", "encodeSVGForCSS", "__html", "u", "l", "MotionComponent", "htmlElementAsMotionComponent", "href", "rel", "onClick", "onTap", "hasTitleOrDescription", "transformTemplate", "useFontLoadStatus", "fontSelectors", "timeout", "missingFontSelectors", "s", "fontStore", "fontLoadStatus", "setFontLoadStatus", "timer", "TextStyleSheet", "Text2", "fallbackLayoutRef", "pe", "navigate", "getRoute", "useRouter", "currentRoute", "useCurrentRoute", "useRoutePreloader", "onCanvas", "useIsOnFramerCanvas", "matchesCurrentRoute", "useLinkMatchesRoute", "fonts", "__fromCanvasComponent", "prevFontsRef", "fontsDidChange", "isShallowEqualArray", "ue", "newlyLoadedFontCount", "measureClosestComponentContainer", "implicitPathVariables", "useImplicitPathVariables", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "rawHTML", "replaceFramerPageLinks", "TextComponent", "inCodeComponent", "font", "alignment", "opacity", "transition", "name", "_initialStyle", "_widthType", "_heightType", "_usesDOMRect", "autoSize", "styleProp", "_preload", "tabIndex", "isHidden", "convertVerticalAlignment2", "key7", "asRecord", "collectTextShadowsForProps", "text", "isString", "replaceDraftHTMLWithText", "centeringTransformTemplate", "tabIndexProps", "getTabIndexProps", "motion", "cx", "_forwardedOverrideId", "_forwardedOverrides", "forwardedOverrideId", "ComponentContainerContext", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "externalWidth", "externalHeight", "positionFixed", "positionAbsolute", "widthType", "heightType", "isDOMLayoutAutoSized", "isAutoDimensionType", "deviceFont", "linkTag", "linkClosingTag", "outerTag", "outerClosingTag", "blockTag", "blockClosingTag", "inlineTag", "inlineClosingTag", "textContentRegex", "_", "openingTags", "inlineClosingTag2", "closingTags", "verticalAlignment", "LOADING_LAZY_THRESHOLD", "getLoadingLazyAtYPosition", "offset", "addFonts", "component", "passedFonts", "flags", "fonts", "convertMixedFontArrayToFontBundles", "font", "getFonts", "emptyArray", "getFontsFromSharedStyle", "convertMixedFontArrayToFontBundles", "fonts", "oldFontBundle", "fontBundles", "fontOrBundle", "isComponentFontBundle", "upgradeComponentFontV1", "componentFontBundleKey", "font", "source", "withPerformanceMarks", "prefix2", "callback", "markStart", "markEnd", "initialRouteComponent", "component", "withPreload", "useInitialRouteComponent", "routes", "homeNodeId", "_a", "InitialRouteComponent", "RouteComponent", "setRouteComponent", "ye", "ue", "MotionValue", "transformer", "v", "child", "motionValue"]
}
