{"version":3,"file":"shared-lib.BqvCWNCH.mjs","names":["__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","b","a","target","mod","e","x","resolve","useStore","React","e","_a","parse","createStore","a","get","_b","_a2","b","d","t","p","s","e","i","c","r","target","f","_","context","x","P","resolve","y","g","n","v","m","o","error","k","a","j","l","q","mod","dispose","__cjs_default__","global2","__cjs_default__2","query","_a2","_b","href","token","sleep","time","isObject","k2","__export1","__export5","__export0","__export3","__export4","__export2","exports","module","exports2","module2","_e","exports3","module3","exports4","module4","exports5","module5","global","metadata","toNumber","h","controller","_a","transform","parent","subscription","identity","now","SupabaseClient","DEFAULTS","color","Component","useState","useRef","f","useState","Component","Fragment","useRef","_b","_a","t","o","r","e","i","n","y","u","t","t.default","i","a","a.default","o","global","s","y","S","n","x","z","N","E","C","I","_","L","T","R","F","D","H","W","j","$","V","Z","J","K","G","X","ne","le","oe","de","pe","xe","ze","Ee","Ce","Ie","_e","Le","q","v","A","b","c","d","e","f","g","h","k","m","l","r","p","B","Y","ae","ce","fe","me","re","se","te","ue","ye","M","O","P","Q","U","t","e","r","o","n","i","a","s","l","u","p","f","h","y","H","S","P","g","I","R","W","A","N","U","j","v","D","F","E","Fragment","color","clamp","n","m","x","s","b","a","c","e","time","get","remove","Color","defaultState","version3","cx","now","create","useReducer","useRef2","d","C","r","L","y","exports2","__cjs_default__","global","__objRest","parent","__export1","Reconciler","DefaultEventPriority","React.useRef","__spreadValues","DiscreteEventPriority","ContinuousEventPriority","o","__spreadProps","i","React.useContext","ConcurrentRoot","React.useState","React.useCallback","Fragment2","T","p","M2","u2","_","React2.useContext","React2.useId","React2.useMemo","React2.useState","_e","useRef5","useMemo4","Fragment3","useRef6","useState4","Fragment4","useInView","useState5","useRef7","useMemo5","Fragment5","Suspense2","React5.useState","React6.useMemo","React9.useMemo","React9.useState","Fragment8","decodeComponents","decode","singleMatcher","customDecodeURIComponent","multiMatcher","encoderForArrayFormat","encode","parserForArrayFormat","decode2","validateArrayFormatSeparator","strictUriEncode","decodeComponent","keysSorter","removeHash","getHash","extract","parseValue","parse","splitOnFirst","Fragment9","ControlType","RenderTarget","te","me","ae","ce","de","controller","__async","transform","metadata","loadImage","handleError","useEffect2","useLayoutEffect2","__export4","exports","module","l","z","B","module2","exports3","module3","React.useLayoutEffect","React.useEffect","React.Component","React.version","React2.useLayoutEffect","React2.useEffect","React2.createContext","React2.Component","React3.useRef","React3.useState","React3.Suspense","useRef4","useMemo3","animate","createContext3","useContext3","React7.forwardRef","React7.useRef","Fragment6","React8.createContext","React8.useContext","React8.useRef","React8.useState","React8.useCallback","React8.useMemo","Fragment7","filter_obj_exports","filter_obj_default","exports4","module4","split_on_first_exports","split_on_first_default","decode_uri_component_exports","decode_uri_component_default","token","strict_uri_encode_exports","strict_uri_encode_default","exports5","isNullOrUndefined","encodeFragmentIdentifier","filterObject","module5","i","k","a","b","query","useFigma","useFigmaStore","useBillingInterval","useBillingIntervalStore","x","initialActivePreset","_a","useCallback","query","_b","_a","Component","useRef","useState","e","r","g","b","x","useState","loading","error","query","_a","useCallback","_a","_b","error","useRef","figma","subscription","r","p","trials","resolve","subscription","Component","figma","_a","i","c","i","dispose","i","color","r","g","b","a","i","color","a","b","g","r","k","sqr","g2","clamp","i","color","a","b","g","r","d","h","l","k","p","i","controller","stopped","error","context","r","_a","context","resolve","controller","_a","e","a","controller","query","i","_b","_a","useState","Component","_a2","loading","useRef","animate","error","subscription","useCallback","Fragment","Error","e","Spacing","_b","_a","e","t","r","n","useRef","useCallback","cx","x","y","g","b","h","s","l","a","v","f","clamp2","useRef2","useState","useCallback2","useOnClickOutside","useState","isValidHex","color","getValidColorOrFallback","React.forwardRef","useState","useRef","Fragment","Spacing","esm_default2","esm_default","e","cx","e","React.forwardRef","cx","e","_b","_a","React","_b","_a","Fragment","e","e","p","p2","t","h","useState","_a","_b","React.forwardRef","useState","_b","_a","cx","color","React.useContext","React.useMemo","React.Fragment","useRef","React.useId","RichText","_a","useRef","useState","error","ScrollBoxText","containerStyles","emptyStateStyle","defaultEvents","useRef","color","v","useMemo","useRef","isOnCanvas","useCallback","value","animate","e","useMemo","React.useState","useMemo","time","Slider","useState","useRef","useCallback","target","_a","e","useState","useState","useCallback","_a","e","useState","useState","letterContainerVariants","letterVariants","useRef","useState","color","React.useState","React.useRef","React.useCallback","esm_default2","color","esm_default","e","useState","useState","e","useState","e","useState","Component","Component","useState","e","forwardRef","fov","canvasProps","useUIStore","_a","initialActivePreset","useBillingInterval","useBillingIntervalStore","useFigma","useUIStore","_b","_a","animate","init_store","Icon","useMemo","lowercaseIconKeyPairs","iconKeys","a","useRef","useState","HouseFactory","React","module","color"],"sources":["https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-HXGKXP63.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-NP5XZW6Z.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-R6GBIJ5D.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-GISSEJFZ.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-425BLYMY.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-AGDIGZ2U.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-GD6HMUGA.mjs","https:/ga.jspm.io/npm:react-reconciler@0.29.2/constants.js","https:/ga.jspm.io/npm:react-reconciler@0.29.2/cjs/react-reconciler.production.min.js","https:/ga.jspm.io/npm:react-reconciler@0.29.2/index.js","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-6T37OWYT.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-UIXDPZLL.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-I5E26MJT.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-SJZJCCP5.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-VQME7MQ6.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-UMQJMRW4.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-3M45RMAS.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-O6NO2YVM.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-BGA6FIQU.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-2WMPBKSG.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-CK47F4LN.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-YFGZA6BU.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-XKMCKCFY.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-75LPQSKV.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-BI4IT72G.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-UYFPDYW7.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-XZSE53IL.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-SHTJ3O2Z.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-6V3BLWHH.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-2ZZ6H7J7.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-I2ZUP7NU.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-3I3TPE7B.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-FHHPRMGM.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-B4GXHE46.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-QNYMEATR.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-GAUTZI25.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-XLY254CY.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-PVBM535U.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-VDGKXM7B.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-OUDGQEHL.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-2FOTMNF6.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-NP467S2G.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-AOTIM5NS.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-X4SBI64H.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-ZK6FQ3TL.mjs","https:/framerusercontent.com/modules/dAbmHGORc6ySSz5foCsF/29uCVnMGdQUdJm69qdwL/BsYasZ7Eq.js","https:/framer.com/m/ScrollBoxText-zgHd.js","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-5VV6G3RV.mjs","https:/framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js","https:/framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js","https:/framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js","https:/framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js","https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js","https:/framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js","https:/framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js","https:/framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js","https:/framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js","https:/framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js","https:/framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js","https:/framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js","https:/framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js","https:/framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js","https:/framer.com/m/framer/default-utils.js@^0.45.0","https:/framerusercontent.com/modules/0tL3NK6Gdibfi84549mt/wxfj3uKBUiepHMkJD9XI/lodash.js","https:/framer.com/m/framer/lodash.js@0.3.0","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-G2ZIPR5M.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-ODN7DQFH.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-ZQPHMFNB.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-Q4ROEIZI.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-SIKJUSOK.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-QIDNC2OV.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-NSSTPG3L.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-J3KEJBIZ.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-IK6DJNIF.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-M62OL3J4.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-F7QBAWNO.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-IWS7MKAX.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-R6AEDQIR.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-TGUBEWSX.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-V3EAFMCM.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-4QCA3AWF.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-EAFV6DTZ.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-HLHO6DZG.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-MKH7JDZ4.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-YDTEP3DZ.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-3TVNMPH3.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/chunk-YNCXEE5A.mjs","https:/ruucm.github.io/shadergradient/ui@0.1.68/index.mjs","https:/framerusercontent.com/modules/Gd2z19IMRFXGQYMhrnAK/Fqm5Jd60Yb0OfYRRpBdE/ui.js","https:/framer.com/m/ui-gy7Z.js","https:/framerusercontent.com/modules/rRflsvyQgSgLB1ug9xwr/FHm1hxZkNSpB4Vz2Ey0L/ui.js","https:/framerusercontent.com/modules/DyldKav0OOAWR3bCAlhK/8c3l9FzyOlGpbPncYhfc/nullstate.js","https:/framer.com/m/framer/icon-nullstate.js@0.7.0","https:/framerusercontent.com/modules/Qc8yuHkQmGO0kFiSWbkX/rVmMAFttOHuuiwSg6KjZ/House.js","https:/framer.com/m/phosphor-icons/House.js@0.0.57","https:/framerusercontent.com/modules/Ma20hU0GGRxLxZphbywl/OSpwWF91FHPVFyQJjMHt/utils.js","https:/framerusercontent.com/modules/tYScH7LTqUtz5KUaUAYP/p8dptk4UIND8hbFWz9V7/Phosphor.js","https:/framerusercontent.com/modules/ykMhnCt99bwuL3vzKuxW/xvDtXU251GDz97H90EAR/siteMetadata.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nvar __esm = (fn, res) => function __init() {\n  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\nexport {\n  __spreadValues,\n  __spreadProps,\n  __objRest,\n  __esm,\n  __export,\n  __toCommonJS,\n  __async\n};\n","import {\n  __esm,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// ../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/vanilla.mjs\nvar createStoreImpl, createStore;\nvar init_vanilla = __esm({\n  \"../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/vanilla.mjs\"() {\n    createStoreImpl = (createState) => {\n      let state;\n      const listeners = /* @__PURE__ */ new Set();\n      const setState = (partial, replace) => {\n        const nextState = typeof partial === \"function\" ? partial(state) : partial;\n        if (!Object.is(nextState, state)) {\n          const previousState = state;\n          state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n          listeners.forEach((listener) => listener(state, previousState));\n        }\n      };\n      const getState = () => state;\n      const getInitialState = () => initialState;\n      const subscribe = (listener) => {\n        listeners.add(listener);\n        return () => listeners.delete(listener);\n      };\n      const api = { setState, getState, getInitialState, subscribe };\n      const initialState = state = createState(setState, getState, api);\n      return api;\n    };\n    createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n  }\n});\n\n// ../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/react.mjs\nimport React from \"react\";\nfunction useStore(api, selector = identity) {\n  const slice = React.useSyncExternalStore(\n    api.subscribe,\n    () => selector(api.getState()),\n    () => selector(api.getInitialState())\n  );\n  React.useDebugValue(slice);\n  return slice;\n}\nvar identity, createImpl, create;\nvar init_react = __esm({\n  \"../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/react.mjs\"() {\n    init_vanilla();\n    identity = (arg) => arg;\n    createImpl = (createState) => {\n      const api = createStore(createState);\n      const useBoundStore = (selector) => useStore(api, selector);\n      Object.assign(useBoundStore, api);\n      return useBoundStore;\n    };\n    create = (createState) => createState ? createImpl(createState) : createImpl;\n  }\n});\n\n// ../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/index.mjs\nvar init_esm = __esm({\n  \"../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/index.mjs\"() {\n    init_vanilla();\n    init_react();\n  }\n});\n\n// ../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/middleware.mjs\nfunction createJSONStorage(getStorage, options) {\n  let storage;\n  try {\n    storage = getStorage();\n  } catch (e) {\n    return;\n  }\n  const persistStorage = {\n    getItem: (name) => {\n      var _a;\n      const parse = (str2) => {\n        if (str2 === null) {\n          return null;\n        }\n        return JSON.parse(str2, options == null ? void 0 : options.reviver);\n      };\n      const str = (_a = storage.getItem(name)) != null ? _a : null;\n      if (str instanceof Promise) {\n        return str.then(parse);\n      }\n      return parse(str);\n    },\n    setItem: (name, newValue) => storage.setItem(\n      name,\n      JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n    ),\n    removeItem: (name) => storage.removeItem(name)\n  };\n  return persistStorage;\n}\nvar combine, toThenable, persistImpl, persist;\nvar init_middleware = __esm({\n  \"../../node_modules/.pnpm/zustand@5.0.1_@types+react@18.2.73_immer@9.0.21_react@18.3.1_use-sync-external-store@1.5.0_react@18.3.1_/node_modules/zustand/esm/middleware.mjs\"() {\n    combine = (initialState, create2) => (...a) => Object.assign({}, initialState, create2(...a));\n    toThenable = (fn) => (input) => {\n      try {\n        const result = fn(input);\n        if (result instanceof Promise) {\n          return result;\n        }\n        return {\n          then(onFulfilled) {\n            return toThenable(onFulfilled)(result);\n          },\n          catch(_onRejected) {\n            return this;\n          }\n        };\n      } catch (e) {\n        return {\n          then(_onFulfilled) {\n            return this;\n          },\n          catch(onRejected) {\n            return toThenable(onRejected)(e);\n          }\n        };\n      }\n    };\n    persistImpl = (config, baseOptions) => (set, get, api) => {\n      let options = __spreadValues({\n        storage: createJSONStorage(() => localStorage),\n        partialize: (state) => state,\n        version: 0,\n        merge: (persistedState, currentState) => __spreadValues(__spreadValues({}, currentState), persistedState)\n      }, baseOptions);\n      let hasHydrated = false;\n      const hydrationListeners = /* @__PURE__ */ new Set();\n      const finishHydrationListeners = /* @__PURE__ */ new Set();\n      let storage = options.storage;\n      if (!storage) {\n        return config(\n          (...args) => {\n            console.warn(\n              `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n            );\n            set(...args);\n          },\n          get,\n          api\n        );\n      }\n      const setItem = () => {\n        const state = options.partialize(__spreadValues({}, get()));\n        return storage.setItem(options.name, {\n          state,\n          version: options.version\n        });\n      };\n      const savedSetState = api.setState;\n      api.setState = (state, replace) => {\n        savedSetState(state, replace);\n        void setItem();\n      };\n      const configResult = config(\n        (...args) => {\n          set(...args);\n          void setItem();\n        },\n        get,\n        api\n      );\n      api.getInitialState = () => configResult;\n      let stateFromStorage;\n      const hydrate = () => {\n        var _a, _b;\n        if (!storage) return;\n        hasHydrated = false;\n        hydrationListeners.forEach((cb) => {\n          var _a2;\n          return cb((_a2 = get()) != null ? _a2 : configResult);\n        });\n        const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n        return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n          if (deserializedStorageValue) {\n            if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n              if (options.migrate) {\n                return [\n                  true,\n                  options.migrate(\n                    deserializedStorageValue.state,\n                    deserializedStorageValue.version\n                  )\n                ];\n              }\n              console.error(\n                `State loaded from storage couldn't be migrated since no migrate function was provided`\n              );\n            } else {\n              return [false, deserializedStorageValue.state];\n            }\n          }\n          return [false, void 0];\n        }).then((migrationResult) => {\n          var _a2;\n          const [migrated, migratedState] = migrationResult;\n          stateFromStorage = options.merge(\n            migratedState,\n            (_a2 = get()) != null ? _a2 : configResult\n          );\n          set(stateFromStorage, true);\n          if (migrated) {\n            return setItem();\n          }\n        }).then(() => {\n          postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n          stateFromStorage = get();\n          hasHydrated = true;\n          finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n        }).catch((e) => {\n          postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n        });\n      };\n      api.persist = {\n        setOptions: (newOptions) => {\n          options = __spreadValues(__spreadValues({}, options), newOptions);\n          if (newOptions.storage) {\n            storage = newOptions.storage;\n          }\n        },\n        clearStorage: () => {\n          storage == null ? void 0 : storage.removeItem(options.name);\n        },\n        getOptions: () => options,\n        rehydrate: () => hydrate(),\n        hasHydrated: () => hasHydrated,\n        onHydrate: (cb) => {\n          hydrationListeners.add(cb);\n          return () => {\n            hydrationListeners.delete(cb);\n          };\n        },\n        onFinishHydration: (cb) => {\n          finishHydrationListeners.add(cb);\n          return () => {\n            finishHydrationListeners.delete(cb);\n          };\n        }\n      };\n      if (!options.skipHydration) {\n        hydrate();\n      }\n      return stateFromStorage || configResult;\n    };\n    persist = persistImpl;\n  }\n});\n\nexport {\n  create,\n  init_esm,\n  combine,\n  createJSONStorage,\n  persist,\n  init_middleware\n};\n","import {\n  create,\n  createJSONStorage,\n  init_esm,\n  init_middleware,\n  persist\n} from \"./chunk-NP5XZW6Z.mjs\";\nimport {\n  __async,\n  __export,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/store.ts\ninit_esm();\ninit_middleware();\n\n// ../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs\nvar tslib_es6_exports = {};\n__export(tslib_es6_exports, {\n  __addDisposableResource: () => __addDisposableResource,\n  __assign: () => __assign,\n  __asyncDelegator: () => __asyncDelegator,\n  __asyncGenerator: () => __asyncGenerator,\n  __asyncValues: () => __asyncValues,\n  __await: () => __await,\n  __awaiter: () => __awaiter,\n  __classPrivateFieldGet: () => __classPrivateFieldGet,\n  __classPrivateFieldIn: () => __classPrivateFieldIn,\n  __classPrivateFieldSet: () => __classPrivateFieldSet,\n  __createBinding: () => __createBinding,\n  __decorate: () => __decorate,\n  __disposeResources: () => __disposeResources,\n  __esDecorate: () => __esDecorate,\n  __exportStar: () => __exportStar,\n  __extends: () => __extends,\n  __generator: () => __generator,\n  __importDefault: () => __importDefault,\n  __importStar: () => __importStar,\n  __makeTemplateObject: () => __makeTemplateObject,\n  __metadata: () => __metadata,\n  __param: () => __param,\n  __propKey: () => __propKey,\n  __read: () => __read,\n  __rest: () => __rest,\n  __rewriteRelativeImportExtension: () => __rewriteRelativeImportExtension,\n  __runInitializers: () => __runInitializers,\n  __setFunctionName: () => __setFunctionName,\n  __spread: () => __spread,\n  __spreadArray: () => __spreadArray,\n  __spreadArrays: () => __spreadArrays,\n  __values: () => __values,\n  default: () => tslib_es6_default\n});\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {\n    d2.__proto__ = b2;\n  } || function(d2, b2) {\n    for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];\n  };\n  return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n    throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() {\n    this.constructor = d;\n  }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function() {\n  __assign = Object.assign || function __assign2(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n    }\n    return t;\n  };\n  return __assign.apply(this, arguments);\n};\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n    t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\nfunction __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nfunction __param(paramIndex, decorator) {\n  return function(target, key) {\n    decorator(target, key, paramIndex);\n  };\n}\nfunction __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) {\n    if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\");\n    return f;\n  }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n    var context = {};\n    for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n    for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n    context.addInitializer = function(f) {\n      if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\");\n      extraInitializers.push(accept(f || null));\n    };\n    var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n    if (kind === \"accessor\") {\n      if (result === void 0) continue;\n      if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n      if (_ = accept(result.get)) descriptor.get = _;\n      if (_ = accept(result.set)) descriptor.set = _;\n      if (_ = accept(result.init)) initializers.unshift(_);\n    } else if (_ = accept(result)) {\n      if (kind === \"field\") initializers.unshift(_);\n      else descriptor[key] = _;\n    }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n}\nfunction __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n    value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n}\nfunction __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n}\nfunction __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n}\nfunction __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nfunction __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\nfunction __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() {\n    if (t[0] & 1) throw t[1];\n    return t[1];\n  }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n    return this;\n  }), g;\n  function verb(n) {\n    return function(v) {\n      return step([n, v]);\n    };\n  }\n  function step(op) {\n    if (f) throw new TypeError(\"Generator is already executing.\");\n    while (g && (g = 0, op[0] && (_ = 0)), _) try {\n      if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n      if (y = 0, t) op = [op[0] & 2, t.value];\n      switch (op[0]) {\n        case 0:\n        case 1:\n          t = op;\n          break;\n        case 4:\n          _.label++;\n          return { value: op[1], done: false };\n        case 5:\n          _.label++;\n          y = op[1];\n          op = [0];\n          continue;\n        case 7:\n          op = _.ops.pop();\n          _.trys.pop();\n          continue;\n        default:\n          if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n            _ = 0;\n            continue;\n          }\n          if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n            _.label = op[1];\n            break;\n          }\n          if (op[0] === 6 && _.label < t[1]) {\n            _.label = t[1];\n            t = op;\n            break;\n          }\n          if (t && _.label < t[2]) {\n            _.label = t[2];\n            _.ops.push(op);\n            break;\n          }\n          if (t[2]) _.ops.pop();\n          _.trys.pop();\n          continue;\n      }\n      op = body.call(thisArg, _);\n    } catch (e) {\n      op = [6, e];\n      y = 0;\n    } finally {\n      f = t = 0;\n    }\n    if (op[0] & 5) throw op[1];\n    return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\nvar __createBinding = Object.create ? function(o, m, k, k2) {\n  if (k2 === void 0) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n    desc = { enumerable: true, get: function() {\n      return m[k];\n    } };\n  }\n  Object.defineProperty(o, k2, desc);\n} : function(o, m, k, k2) {\n  if (k2 === void 0) k2 = k;\n  o[k2] = m[k];\n};\nfunction __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\nfunction __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n    next: function() {\n      if (o && i >= o.length) o = void 0;\n      return { value: o && o[i++], done: !o };\n    }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n    while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  } catch (error) {\n    e = { error };\n  } finally {\n    try {\n      if (r && !r.done && (m = i[\"return\"])) m.call(i);\n    } finally {\n      if (e) throw e.error;\n    }\n  }\n  return ar;\n}\nfunction __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n    ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\nfunction __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n      r[k] = a[j];\n  return r;\n}\nfunction __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\nfunction __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function() {\n    return this;\n  }, i;\n  function awaitReturn(f) {\n    return function(v) {\n      return Promise.resolve(v).then(f, reject);\n    };\n  }\n  function verb(n, f) {\n    if (g[n]) {\n      i[n] = function(v) {\n        return new Promise(function(a, b) {\n          q.push([n, v, a, b]) > 1 || resume(n, v);\n        });\n      };\n      if (f) i[n] = f(i[n]);\n    }\n  }\n  function resume(n, v) {\n    try {\n      step(g[n](v));\n    } catch (e) {\n      settle(q[0][3], e);\n    }\n  }\n  function step(r) {\n    r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n  }\n  function fulfill(value) {\n    resume(\"next\", value);\n  }\n  function reject(value) {\n    resume(\"throw\", value);\n  }\n  function settle(f, v) {\n    if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n  }\n}\nfunction __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function(e) {\n    throw e;\n  }), verb(\"return\"), i[Symbol.iterator] = function() {\n    return this;\n  }, i;\n  function verb(n, f) {\n    i[n] = o[n] ? function(v) {\n      return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v;\n    } : f;\n  }\n}\nfunction __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n    return this;\n  }, i);\n  function verb(n) {\n    i[n] = o[n] && function(v) {\n      return new Promise(function(resolve, reject) {\n        v = o[n](v), settle(resolve, reject, v.done, v.value);\n      });\n    };\n  }\n  function settle(resolve, reject, d, v) {\n    Promise.resolve(v).then(function(v2) {\n      resolve({ value: v2, done: d });\n    }, reject);\n  }\n}\nfunction __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) {\n    Object.defineProperty(cooked, \"raw\", { value: raw });\n  } else {\n    cooked.raw = raw;\n  }\n  return cooked;\n}\nvar __setModuleDefault = Object.create ? function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n} : function(o, v) {\n  o[\"default\"] = v;\n};\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function(o2) {\n    var ar = [];\n    for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\nfunction __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) {\n    for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  }\n  __setModuleDefault(result, mod);\n  return result;\n}\nfunction __importDefault(mod) {\n  return mod && mod.__esModule ? mod : { default: mod };\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\nfunction __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() {\n      try {\n        inner.call(this);\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    };\n    env.stack.push({ value, dispose, async });\n  } else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function(error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\nfunction __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {\n            fail(e);\n            return next();\n          });\n        } else s |= 1;\n      } catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\nfunction __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n    return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function(m, tsx, d, ext, cm) {\n      return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : d + ext + \".\" + cm.toLowerCase() + \"js\";\n    });\n  }\n  return path;\n}\nvar tslib_es6_default = {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension\n};\n\n// ../../node_modules/.pnpm/@supabase+functions-js@2.86.0/node_modules/@supabase/functions-js/dist/module/helper.js\nvar resolveFetch = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\n\n// ../../node_modules/.pnpm/@supabase+functions-js@2.86.0/node_modules/@supabase/functions-js/dist/module/types.js\nvar FunctionsError = class extends Error {\n  constructor(message, name = \"FunctionsError\", context) {\n    super(message);\n    this.name = name;\n    this.context = context;\n  }\n};\nvar FunctionsFetchError = class extends FunctionsError {\n  constructor(context) {\n    super(\"Failed to send a request to the Edge Function\", \"FunctionsFetchError\", context);\n  }\n};\nvar FunctionsRelayError = class extends FunctionsError {\n  constructor(context) {\n    super(\"Relay Error invoking the Edge Function\", \"FunctionsRelayError\", context);\n  }\n};\nvar FunctionsHttpError = class extends FunctionsError {\n  constructor(context) {\n    super(\"Edge Function returned a non-2xx status code\", \"FunctionsHttpError\", context);\n  }\n};\nvar FunctionRegion;\n(function(FunctionRegion2) {\n  FunctionRegion2[\"Any\"] = \"any\";\n  FunctionRegion2[\"ApNortheast1\"] = \"ap-northeast-1\";\n  FunctionRegion2[\"ApNortheast2\"] = \"ap-northeast-2\";\n  FunctionRegion2[\"ApSouth1\"] = \"ap-south-1\";\n  FunctionRegion2[\"ApSoutheast1\"] = \"ap-southeast-1\";\n  FunctionRegion2[\"ApSoutheast2\"] = \"ap-southeast-2\";\n  FunctionRegion2[\"CaCentral1\"] = \"ca-central-1\";\n  FunctionRegion2[\"EuCentral1\"] = \"eu-central-1\";\n  FunctionRegion2[\"EuWest1\"] = \"eu-west-1\";\n  FunctionRegion2[\"EuWest2\"] = \"eu-west-2\";\n  FunctionRegion2[\"EuWest3\"] = \"eu-west-3\";\n  FunctionRegion2[\"SaEast1\"] = \"sa-east-1\";\n  FunctionRegion2[\"UsEast1\"] = \"us-east-1\";\n  FunctionRegion2[\"UsWest1\"] = \"us-west-1\";\n  FunctionRegion2[\"UsWest2\"] = \"us-west-2\";\n})(FunctionRegion || (FunctionRegion = {}));\n\n// ../../node_modules/.pnpm/@supabase+functions-js@2.86.0/node_modules/@supabase/functions-js/dist/module/FunctionsClient.js\nvar FunctionsClient = class {\n  /**\n   * Creates a new Functions client bound to an Edge Functions URL.\n   *\n   * @example\n   * ```ts\n   * import { FunctionsClient, FunctionRegion } from '@supabase/functions-js'\n   *\n   * const functions = new FunctionsClient('https://xyzcompany.supabase.co/functions/v1', {\n   *   headers: { apikey: 'public-anon-key' },\n   *   region: FunctionRegion.UsEast1,\n   * })\n   * ```\n   */\n  constructor(url, { headers = {}, customFetch, region = FunctionRegion.Any } = {}) {\n    this.url = url;\n    this.headers = headers;\n    this.region = region;\n    this.fetch = resolveFetch(customFetch);\n  }\n  /**\n   * Updates the authorization header\n   * @param token - the new jwt token sent in the authorisation header\n   * @example\n   * ```ts\n   * functions.setAuth(session.access_token)\n   * ```\n   */\n  setAuth(token) {\n    this.headers.Authorization = `Bearer ${token}`;\n  }\n  /**\n   * Invokes a function\n   * @param functionName - The name of the Function to invoke.\n   * @param options - Options for invoking the Function.\n   * @example\n   * ```ts\n   * const { data, error } = await functions.invoke('hello-world', {\n   *   body: { name: 'Ada' },\n   * })\n   * ```\n   */\n  invoke(functionName_1) {\n    return __awaiter(this, arguments, void 0, function* (functionName, options = {}) {\n      var _a2;\n      let timeoutId;\n      let timeoutController;\n      try {\n        const { headers, method, body: functionArgs, signal, timeout } = options;\n        let _headers = {};\n        let { region } = options;\n        if (!region) {\n          region = this.region;\n        }\n        const url = new URL(`${this.url}/${functionName}`);\n        if (region && region !== \"any\") {\n          _headers[\"x-region\"] = region;\n          url.searchParams.set(\"forceFunctionRegion\", region);\n        }\n        let body;\n        if (functionArgs && (headers && !Object.prototype.hasOwnProperty.call(headers, \"Content-Type\") || !headers)) {\n          if (typeof Blob !== \"undefined\" && functionArgs instanceof Blob || functionArgs instanceof ArrayBuffer) {\n            _headers[\"Content-Type\"] = \"application/octet-stream\";\n            body = functionArgs;\n          } else if (typeof functionArgs === \"string\") {\n            _headers[\"Content-Type\"] = \"text/plain\";\n            body = functionArgs;\n          } else if (typeof FormData !== \"undefined\" && functionArgs instanceof FormData) {\n            body = functionArgs;\n          } else {\n            _headers[\"Content-Type\"] = \"application/json\";\n            body = JSON.stringify(functionArgs);\n          }\n        } else {\n          body = functionArgs;\n        }\n        let effectiveSignal = signal;\n        if (timeout) {\n          timeoutController = new AbortController();\n          timeoutId = setTimeout(() => timeoutController.abort(), timeout);\n          if (signal) {\n            effectiveSignal = timeoutController.signal;\n            signal.addEventListener(\"abort\", () => timeoutController.abort());\n          } else {\n            effectiveSignal = timeoutController.signal;\n          }\n        }\n        const response = yield this.fetch(url.toString(), {\n          method: method || \"POST\",\n          // headers priority is (high to low):\n          // 1. invoke-level headers\n          // 2. client-level headers\n          // 3. default Content-Type header\n          headers: Object.assign(Object.assign(Object.assign({}, _headers), this.headers), headers),\n          body,\n          signal: effectiveSignal\n        }).catch((fetchError) => {\n          throw new FunctionsFetchError(fetchError);\n        });\n        const isRelayError = response.headers.get(\"x-relay-error\");\n        if (isRelayError && isRelayError === \"true\") {\n          throw new FunctionsRelayError(response);\n        }\n        if (!response.ok) {\n          throw new FunctionsHttpError(response);\n        }\n        let responseType = ((_a2 = response.headers.get(\"Content-Type\")) !== null && _a2 !== void 0 ? _a2 : \"text/plain\").split(\";\")[0].trim();\n        let data;\n        if (responseType === \"application/json\") {\n          data = yield response.json();\n        } else if (responseType === \"application/octet-stream\" || responseType === \"application/pdf\") {\n          data = yield response.blob();\n        } else if (responseType === \"text/event-stream\") {\n          data = response;\n        } else if (responseType === \"multipart/form-data\") {\n          data = yield response.formData();\n        } else {\n          data = yield response.text();\n        }\n        return { data, error: null, response };\n      } catch (error) {\n        return {\n          data: null,\n          error,\n          response: error instanceof FunctionsHttpError || error instanceof FunctionsRelayError ? error.context : void 0\n        };\n      } finally {\n        if (timeoutId) {\n          clearTimeout(timeoutId);\n        }\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/index.js\nvar cjs_exports = {};\n__export(cjs_exports, {\n  PostgrestBuilder: () => __export1,\n  PostgrestClient: () => __export5,\n  PostgrestError: () => __export0,\n  PostgrestFilterBuilder: () => __export3,\n  PostgrestQueryBuilder: () => __export4,\n  PostgrestTransformBuilder: () => __export2,\n  default: () => cjs_default\n});\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestError.js\nvar PostgrestError_exports = {};\n__export(PostgrestError_exports, {\n  default: () => PostgrestError_default\n});\nvar exports = {};\nvar module = {\n  get exports() {\n    return exports;\n  },\n  set exports(value) {\n    exports = value;\n  }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PostgrestError = class extends Error {\n  /**\n   * @example\n   * ```ts\n   * import PostgrestError from '@supabase/postgrest-js'\n   *\n   * throw new PostgrestError({\n   *   message: 'Row level security prevented the request',\n   *   details: 'RLS denied the insert',\n   *   hint: 'Check your policies',\n   *   code: 'PGRST301',\n   * })\n   * ```\n   */\n  constructor(context) {\n    super(context.message);\n    this.name = \"PostgrestError\";\n    this.details = context.details;\n    this.hint = context.hint;\n    this.code = context.code;\n  }\n};\nexports.default = PostgrestError;\nvar PostgrestError_default = module.exports != null && typeof module.exports === \"object\" && \"default\" in module.exports ? module.exports.default : module.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestBuilder.js\nvar PostgrestBuilder_exports = {};\n__export(PostgrestBuilder_exports, {\n  default: () => PostgrestBuilder_default\n});\nfunction __cjs_default__(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global2 !== \"undefined\" && global2 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nvar global2 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global2 !== \"undefined\" && global2 || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports2 = {};\nvar module2 = {\n  get exports() {\n    return exports2;\n  },\n  set exports(value) {\n    exports2 = value;\n  }\n};\nObject.defineProperty(exports2, \"__esModule\", { value: true });\nvar tslib_1 = __cjs_default__(typeof tslib_es6_exports !== \"undefined\" ? tslib_es6_exports : {});\nvar PostgrestError_1 = tslib_1.__importDefault(__cjs_default__(typeof PostgrestError_exports !== \"undefined\" ? PostgrestError_exports : {}));\nvar PostgrestBuilder = class {\n  /**\n   * Creates a builder configured for a specific PostgREST request.\n   *\n   * @example\n   * ```ts\n   * import PostgrestQueryBuilder from '@supabase/postgrest-js'\n   *\n   * const builder = new PostgrestQueryBuilder(\n   *   new URL('https://xyzcompany.supabase.co/rest/v1/users'),\n   *   { headers: new Headers({ apikey: 'public-anon-key' }) }\n   * )\n   * ```\n   */\n  constructor(builder) {\n    var _a2, _b;\n    this.shouldThrowOnError = false;\n    this.method = builder.method;\n    this.url = builder.url;\n    this.headers = new Headers(builder.headers);\n    this.schema = builder.schema;\n    this.body = builder.body;\n    this.shouldThrowOnError = (_a2 = builder.shouldThrowOnError) !== null && _a2 !== void 0 ? _a2 : false;\n    this.signal = builder.signal;\n    this.isMaybeSingle = (_b = builder.isMaybeSingle) !== null && _b !== void 0 ? _b : false;\n    if (builder.fetch) {\n      this.fetch = builder.fetch;\n    } else {\n      this.fetch = fetch;\n    }\n  }\n  /**\n   * If there's an error with the query, throwOnError will reject the promise by\n   * throwing the error instead of returning it as part of a successful response.\n   *\n   * {@link https://github.com/supabase/supabase-js/issues/92}\n   */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /**\n   * Set an HTTP header for the request.\n   */\n  setHeader(name, value) {\n    this.headers = new Headers(this.headers);\n    this.headers.set(name, value);\n    return this;\n  }\n  then(onfulfilled, onrejected) {\n    if (this.schema === void 0) {\n    } else if ([\"GET\", \"HEAD\"].includes(this.method)) {\n      this.headers.set(\"Accept-Profile\", this.schema);\n    } else {\n      this.headers.set(\"Content-Profile\", this.schema);\n    }\n    if (this.method !== \"GET\" && this.method !== \"HEAD\") {\n      this.headers.set(\"Content-Type\", \"application/json\");\n    }\n    const _fetch = this.fetch;\n    let res = _fetch(this.url.toString(), {\n      method: this.method,\n      headers: this.headers,\n      body: JSON.stringify(this.body),\n      signal: this.signal\n    }).then((res2) => __async(this, null, function* () {\n      var _a2, _b, _c, _d;\n      let error = null;\n      let data = null;\n      let count = null;\n      let status = res2.status;\n      let statusText = res2.statusText;\n      if (res2.ok) {\n        if (this.method !== \"HEAD\") {\n          const body = yield res2.text();\n          if (body === \"\") {\n          } else if (this.headers.get(\"Accept\") === \"text/csv\") {\n            data = body;\n          } else if (this.headers.get(\"Accept\") && ((_a2 = this.headers.get(\"Accept\")) === null || _a2 === void 0 ? void 0 : _a2.includes(\"application/vnd.pgrst.plan+text\"))) {\n            data = body;\n          } else {\n            data = JSON.parse(body);\n          }\n        }\n        const countHeader = (_b = this.headers.get(\"Prefer\")) === null || _b === void 0 ? void 0 : _b.match(/count=(exact|planned|estimated)/);\n        const contentRange = (_c = res2.headers.get(\"content-range\")) === null || _c === void 0 ? void 0 : _c.split(\"/\");\n        if (countHeader && contentRange && contentRange.length > 1) {\n          count = parseInt(contentRange[1]);\n        }\n        if (this.isMaybeSingle && this.method === \"GET\" && Array.isArray(data)) {\n          if (data.length > 1) {\n            error = {\n              // https://github.com/PostgREST/postgrest/blob/a867d79c42419af16c18c3fb019eba8df992626f/src/PostgREST/Error.hs#L553\n              code: \"PGRST116\",\n              details: `Results contain ${data.length} rows, application/vnd.pgrst.object+json requires 1 row`,\n              hint: null,\n              message: \"JSON object requested, multiple (or no) rows returned\"\n            };\n            data = null;\n            count = null;\n            status = 406;\n            statusText = \"Not Acceptable\";\n          } else if (data.length === 1) {\n            data = data[0];\n          } else {\n            data = null;\n          }\n        }\n      } else {\n        const body = yield res2.text();\n        try {\n          error = JSON.parse(body);\n          if (Array.isArray(error) && res2.status === 404) {\n            data = [];\n            error = null;\n            status = 200;\n            statusText = \"OK\";\n          }\n        } catch (_e) {\n          if (res2.status === 404 && body === \"\") {\n            status = 204;\n            statusText = \"No Content\";\n          } else {\n            error = {\n              message: body\n            };\n          }\n        }\n        if (error && this.isMaybeSingle && ((_d = error === null || error === void 0 ? void 0 : error.details) === null || _d === void 0 ? void 0 : _d.includes(\"0 rows\"))) {\n          error = null;\n          status = 200;\n          statusText = \"OK\";\n        }\n        if (error && this.shouldThrowOnError) {\n          throw new PostgrestError_1.default(error);\n        }\n      }\n      const postgrestResponse = {\n        error,\n        data,\n        count,\n        status,\n        statusText\n      };\n      return postgrestResponse;\n    }));\n    if (!this.shouldThrowOnError) {\n      res = res.catch((fetchError) => {\n        var _a2, _b, _c, _d, _e, _f;\n        let errorDetails = \"\";\n        const cause = fetchError === null || fetchError === void 0 ? void 0 : fetchError.cause;\n        if (cause) {\n          const causeMessage = (_a2 = cause === null || cause === void 0 ? void 0 : cause.message) !== null && _a2 !== void 0 ? _a2 : \"\";\n          const causeCode = (_b = cause === null || cause === void 0 ? void 0 : cause.code) !== null && _b !== void 0 ? _b : \"\";\n          errorDetails = `${(_c = fetchError === null || fetchError === void 0 ? void 0 : fetchError.name) !== null && _c !== void 0 ? _c : \"FetchError\"}: ${fetchError === null || fetchError === void 0 ? void 0 : fetchError.message}`;\n          errorDetails += `\n\nCaused by: ${(_d = cause === null || cause === void 0 ? void 0 : cause.name) !== null && _d !== void 0 ? _d : \"Error\"}: ${causeMessage}`;\n          if (causeCode) {\n            errorDetails += ` (${causeCode})`;\n          }\n          if (cause === null || cause === void 0 ? void 0 : cause.stack) {\n            errorDetails += `\n${cause.stack}`;\n          }\n        } else {\n          errorDetails = (_e = fetchError === null || fetchError === void 0 ? void 0 : fetchError.stack) !== null && _e !== void 0 ? _e : \"\";\n        }\n        return {\n          error: {\n            message: `${(_f = fetchError === null || fetchError === void 0 ? void 0 : fetchError.name) !== null && _f !== void 0 ? _f : \"FetchError\"}: ${fetchError === null || fetchError === void 0 ? void 0 : fetchError.message}`,\n            details: errorDetails,\n            hint: \"\",\n            code: \"\"\n          },\n          data: null,\n          count: null,\n          status: 0,\n          statusText: \"\"\n        };\n      });\n    }\n    return res.then(onfulfilled, onrejected);\n  }\n  /**\n   * Override the type of the returned `data`.\n   *\n   * @typeParam NewResult - The new result type to override with\n   * @deprecated Use overrideTypes<yourType, { merge: false }>() method at the end of your call chain instead\n   */\n  returns() {\n    return this;\n  }\n  /**\n   * Override the type of the returned `data` field in the response.\n   *\n   * @typeParam NewResult - The new type to cast the response data to\n   * @typeParam Options - Optional type configuration (defaults to { merge: true })\n   * @typeParam Options.merge - When true, merges the new type with existing return type. When false, replaces the existing types entirely (defaults to true)\n   * @example\n   * ```typescript\n   * // Merge with existing types (default behavior)\n   * const query = supabase\n   *   .from('users')\n   *   .select()\n   *   .overrideTypes<{ custom_field: string }>()\n   *\n   * // Replace existing types completely\n   * const replaceQuery = supabase\n   *   .from('users')\n   *   .select()\n   *   .overrideTypes<{ id: number; name: string }, { merge: false }>()\n   * ```\n   * @returns A PostgrestBuilder instance with the new type\n   */\n  overrideTypes() {\n    return this;\n  }\n};\nexports2.default = PostgrestBuilder;\nvar PostgrestBuilder_default = module2.exports != null && typeof module2.exports === \"object\" && \"default\" in module2.exports ? module2.exports.default : module2.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestTransformBuilder.js\nvar PostgrestTransformBuilder_exports = {};\n__export(PostgrestTransformBuilder_exports, {\n  default: () => PostgrestTransformBuilder_default\n});\nfunction __cjs_default__2(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global3 !== \"undefined\" && global3 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nvar global3 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global3 !== \"undefined\" && global3 || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports3 = {};\nvar module3 = {\n  get exports() {\n    return exports3;\n  },\n  set exports(value) {\n    exports3 = value;\n  }\n};\nObject.defineProperty(exports3, \"__esModule\", { value: true });\nvar tslib_12 = __cjs_default__2(typeof tslib_es6_exports !== \"undefined\" ? tslib_es6_exports : {});\nvar PostgrestBuilder_1 = tslib_12.__importDefault(__cjs_default__2(typeof PostgrestBuilder_exports !== \"undefined\" ? PostgrestBuilder_exports : {}));\nvar PostgrestTransformBuilder = class extends PostgrestBuilder_1.default {\n  /**\n   * Perform a SELECT on the query result.\n   *\n   * By default, `.insert()`, `.update()`, `.upsert()`, and `.delete()` do not\n   * return modified rows. By calling this method, modified rows are returned in\n   * `data`.\n   *\n   * @param columns - The columns to retrieve, separated by commas\n   */\n  select(columns) {\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted) {\n        return \"\";\n      }\n      if (c === '\"') {\n        quoted = !quoted;\n      }\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    this.headers.append(\"Prefer\", \"return=representation\");\n    return this;\n  }\n  /**\n   * Order the query result by `column`.\n   *\n   * You can call this method multiple times to order by multiple columns.\n   *\n   * You can order referenced tables, but it only affects the ordering of the\n   * parent table if you use `!inner` in the query.\n   *\n   * @param column - The column to order by\n   * @param options - Named parameters\n   * @param options.ascending - If `true`, the result will be in ascending order\n   * @param options.nullsFirst - If `true`, `null`s appear first. If `false`,\n   * `null`s appear last.\n   * @param options.referencedTable - Set this to order a referenced table by\n   * its columns\n   * @param options.foreignTable - Deprecated, use `options.referencedTable`\n   * instead\n   */\n  order(column, { ascending = true, nullsFirst, foreignTable, referencedTable = foreignTable } = {}) {\n    const key = referencedTable ? `${referencedTable}.order` : \"order\";\n    const existingOrder = this.url.searchParams.get(key);\n    this.url.searchParams.set(key, `${existingOrder ? `${existingOrder},` : \"\"}${column}.${ascending ? \"asc\" : \"desc\"}${nullsFirst === void 0 ? \"\" : nullsFirst ? \".nullsfirst\" : \".nullslast\"}`);\n    return this;\n  }\n  /**\n   * Limit the query result by `count`.\n   *\n   * @param count - The maximum number of rows to return\n   * @param options - Named parameters\n   * @param options.referencedTable - Set this to limit rows of referenced\n   * tables instead of the parent table\n   * @param options.foreignTable - Deprecated, use `options.referencedTable`\n   * instead\n   */\n  limit(count, { foreignTable, referencedTable = foreignTable } = {}) {\n    const key = typeof referencedTable === \"undefined\" ? \"limit\" : `${referencedTable}.limit`;\n    this.url.searchParams.set(key, `${count}`);\n    return this;\n  }\n  /**\n   * Limit the query result by starting at an offset `from` and ending at the offset `to`.\n   * Only records within this range are returned.\n   * This respects the query order and if there is no order clause the range could behave unexpectedly.\n   * The `from` and `to` values are 0-based and inclusive: `range(1, 3)` will include the second, third\n   * and fourth rows of the query.\n   *\n   * @param from - The starting index from which to limit the result\n   * @param to - The last index to which to limit the result\n   * @param options - Named parameters\n   * @param options.referencedTable - Set this to limit rows of referenced\n   * tables instead of the parent table\n   * @param options.foreignTable - Deprecated, use `options.referencedTable`\n   * instead\n   */\n  range(from, to, { foreignTable, referencedTable = foreignTable } = {}) {\n    const keyOffset = typeof referencedTable === \"undefined\" ? \"offset\" : `${referencedTable}.offset`;\n    const keyLimit = typeof referencedTable === \"undefined\" ? \"limit\" : `${referencedTable}.limit`;\n    this.url.searchParams.set(keyOffset, `${from}`);\n    this.url.searchParams.set(keyLimit, `${to - from + 1}`);\n    return this;\n  }\n  /**\n   * Set the AbortSignal for the fetch request.\n   *\n   * @param signal - The AbortSignal to use for the fetch request\n   */\n  abortSignal(signal) {\n    this.signal = signal;\n    return this;\n  }\n  /**\n   * Return `data` as a single object instead of an array of objects.\n   *\n   * Query result must be one row (e.g. using `.limit(1)`), otherwise this\n   * returns an error.\n   */\n  single() {\n    this.headers.set(\"Accept\", \"application/vnd.pgrst.object+json\");\n    return this;\n  }\n  /**\n   * Return `data` as a single object instead of an array of objects.\n   *\n   * Query result must be zero or one row (e.g. using `.limit(1)`), otherwise\n   * this returns an error.\n   */\n  maybeSingle() {\n    if (this.method === \"GET\") {\n      this.headers.set(\"Accept\", \"application/json\");\n    } else {\n      this.headers.set(\"Accept\", \"application/vnd.pgrst.object+json\");\n    }\n    this.isMaybeSingle = true;\n    return this;\n  }\n  /**\n   * Return `data` as a string in CSV format.\n   */\n  csv() {\n    this.headers.set(\"Accept\", \"text/csv\");\n    return this;\n  }\n  /**\n   * Return `data` as an object in [GeoJSON](https://geojson.org) format.\n   */\n  geojson() {\n    this.headers.set(\"Accept\", \"application/geo+json\");\n    return this;\n  }\n  /**\n   * Return `data` as the EXPLAIN plan for the query.\n   *\n   * You need to enable the\n   * [db_plan_enabled](https://supabase.com/docs/guides/database/debugging-performance#enabling-explain)\n   * setting before using this method.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.analyze - If `true`, the query will be executed and the\n   * actual run time will be returned\n   *\n   * @param options.verbose - If `true`, the query identifier will be returned\n   * and `data` will include the output columns of the query\n   *\n   * @param options.settings - If `true`, include information on configuration\n   * parameters that affect query planning\n   *\n   * @param options.buffers - If `true`, include information on buffer usage\n   *\n   * @param options.wal - If `true`, include information on WAL record generation\n   *\n   * @param options.format - The format of the output, can be `\"text\"` (default)\n   * or `\"json\"`\n   */\n  explain({ analyze = false, verbose = false, settings = false, buffers = false, wal = false, format = \"text\" } = {}) {\n    var _a2;\n    const options = [\n      analyze ? \"analyze\" : null,\n      verbose ? \"verbose\" : null,\n      settings ? \"settings\" : null,\n      buffers ? \"buffers\" : null,\n      wal ? \"wal\" : null\n    ].filter(Boolean).join(\"|\");\n    const forMediatype = (_a2 = this.headers.get(\"Accept\")) !== null && _a2 !== void 0 ? _a2 : \"application/json\";\n    this.headers.set(\"Accept\", `application/vnd.pgrst.plan+${format}; for=\"${forMediatype}\"; options=${options};`);\n    if (format === \"json\") {\n      return this;\n    } else {\n      return this;\n    }\n  }\n  /**\n   * Rollback the query.\n   *\n   * `data` will still be returned, but the query is not committed.\n   */\n  rollback() {\n    this.headers.append(\"Prefer\", \"tx=rollback\");\n    return this;\n  }\n  /**\n   * Override the type of the returned `data`.\n   *\n   * @typeParam NewResult - The new result type to override with\n   * @deprecated Use overrideTypes<yourType, { merge: false }>() method at the end of your call chain instead\n   */\n  returns() {\n    return this;\n  }\n  /**\n   * Set the maximum number of rows that can be affected by the query.\n   * Only available in PostgREST v13+ and only works with PATCH and DELETE methods.\n   *\n   * @param value - The maximum number of rows that can be affected\n   */\n  maxAffected(value) {\n    this.headers.append(\"Prefer\", \"handling=strict\");\n    this.headers.append(\"Prefer\", `max-affected=${value}`);\n    return this;\n  }\n};\nexports3.default = PostgrestTransformBuilder;\nvar PostgrestTransformBuilder_default = module3.exports != null && typeof module3.exports === \"object\" && \"default\" in module3.exports ? module3.exports.default : module3.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestFilterBuilder.js\nvar PostgrestFilterBuilder_exports = {};\n__export(PostgrestFilterBuilder_exports, {\n  default: () => PostgrestFilterBuilder_default\n});\nfunction __cjs_default__3(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global4 !== \"undefined\" && global4 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nvar global4 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global4 !== \"undefined\" && global4 || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports4 = {};\nvar module4 = {\n  get exports() {\n    return exports4;\n  },\n  set exports(value) {\n    exports4 = value;\n  }\n};\nObject.defineProperty(exports4, \"__esModule\", { value: true });\nvar tslib_13 = __cjs_default__3(typeof tslib_es6_exports !== \"undefined\" ? tslib_es6_exports : {});\nvar PostgrestTransformBuilder_1 = tslib_13.__importDefault(__cjs_default__3(typeof PostgrestTransformBuilder_exports !== \"undefined\" ? PostgrestTransformBuilder_exports : {}));\nvar PostgrestReservedCharsRegexp = new RegExp(\"[,()]\");\nvar PostgrestFilterBuilder = class extends PostgrestTransformBuilder_1.default {\n  /**\n   * Match only rows where `column` is equal to `value`.\n   *\n   * To check if the value of `column` is NULL, you should use `.is()` instead.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  eq(column, value) {\n    this.url.searchParams.append(column, `eq.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` is not equal to `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  neq(column, value) {\n    this.url.searchParams.append(column, `neq.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` is greater than `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  gt(column, value) {\n    this.url.searchParams.append(column, `gt.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` is greater than or equal to `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  gte(column, value) {\n    this.url.searchParams.append(column, `gte.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` is less than `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  lt(column, value) {\n    this.url.searchParams.append(column, `lt.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` is less than or equal to `value`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  lte(column, value) {\n    this.url.searchParams.append(column, `lte.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches `pattern` case-sensitively.\n   *\n   * @param column - The column to filter on\n   * @param pattern - The pattern to match with\n   */\n  like(column, pattern) {\n    this.url.searchParams.append(column, `like.${pattern}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches all of `patterns` case-sensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  likeAllOf(column, patterns) {\n    this.url.searchParams.append(column, `like(all).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches any of `patterns` case-sensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  likeAnyOf(column, patterns) {\n    this.url.searchParams.append(column, `like(any).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches `pattern` case-insensitively.\n   *\n   * @param column - The column to filter on\n   * @param pattern - The pattern to match with\n   */\n  ilike(column, pattern) {\n    this.url.searchParams.append(column, `ilike.${pattern}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches all of `patterns` case-insensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  ilikeAllOf(column, patterns) {\n    this.url.searchParams.append(column, `ilike(all).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches any of `patterns` case-insensitively.\n   *\n   * @param column - The column to filter on\n   * @param patterns - The patterns to match with\n   */\n  ilikeAnyOf(column, patterns) {\n    this.url.searchParams.append(column, `ilike(any).{${patterns.join(\",\")}}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches the PostgreSQL regex `pattern`\n   * case-sensitively (using the `~` operator).\n   *\n   * @param column - The column to filter on\n   * @param pattern - The PostgreSQL regular expression pattern to match with\n   */\n  regexMatch(column, pattern) {\n    this.url.searchParams.append(column, `match.${pattern}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` matches the PostgreSQL regex `pattern`\n   * case-insensitively (using the `~*` operator).\n   *\n   * @param column - The column to filter on\n   * @param pattern - The PostgreSQL regular expression pattern to match with\n   */\n  regexIMatch(column, pattern) {\n    this.url.searchParams.append(column, `imatch.${pattern}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` IS `value`.\n   *\n   * For non-boolean columns, this is only relevant for checking if the value of\n   * `column` is NULL by setting `value` to `null`.\n   *\n   * For boolean columns, you can also set `value` to `true` or `false` and it\n   * will behave the same way as `.eq()`.\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  is(column, value) {\n    this.url.searchParams.append(column, `is.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` IS DISTINCT FROM `value`.\n   *\n   * Unlike `.neq()`, this treats `NULL` as a comparable value. Two `NULL` values\n   * are considered equal (not distinct), and comparing `NULL` with any non-NULL\n   * value returns true (distinct).\n   *\n   * @param column - The column to filter on\n   * @param value - The value to filter with\n   */\n  isDistinct(column, value) {\n    this.url.searchParams.append(column, `isdistinct.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows where `column` is included in the `values` array.\n   *\n   * @param column - The column to filter on\n   * @param values - The values array to filter with\n   */\n  in(column, values) {\n    const cleanedValues = Array.from(new Set(values)).map((s) => {\n      if (typeof s === \"string\" && PostgrestReservedCharsRegexp.test(s))\n        return `\"${s}\"`;\n      else\n        return `${s}`;\n    }).join(\",\");\n    this.url.searchParams.append(column, `in.(${cleanedValues})`);\n    return this;\n  }\n  /**\n   * Only relevant for jsonb, array, and range columns. Match only rows where\n   * `column` contains every element appearing in `value`.\n   *\n   * @param column - The jsonb, array, or range column to filter on\n   * @param value - The jsonb, array, or range value to filter with\n   */\n  contains(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `cs.${value}`);\n    } else if (Array.isArray(value)) {\n      this.url.searchParams.append(column, `cs.{${value.join(\",\")}}`);\n    } else {\n      this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`);\n    }\n    return this;\n  }\n  /**\n   * Only relevant for jsonb, array, and range columns. Match only rows where\n   * every element appearing in `column` is contained by `value`.\n   *\n   * @param column - The jsonb, array, or range column to filter on\n   * @param value - The jsonb, array, or range value to filter with\n   */\n  containedBy(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `cd.${value}`);\n    } else if (Array.isArray(value)) {\n      this.url.searchParams.append(column, `cd.{${value.join(\",\")}}`);\n    } else {\n      this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`);\n    }\n    return this;\n  }\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is greater than any element in `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeGt(column, range) {\n    this.url.searchParams.append(column, `sr.${range}`);\n    return this;\n  }\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is either contained in `range` or greater than any element in\n   * `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeGte(column, range) {\n    this.url.searchParams.append(column, `nxl.${range}`);\n    return this;\n  }\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is less than any element in `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeLt(column, range) {\n    this.url.searchParams.append(column, `sl.${range}`);\n    return this;\n  }\n  /**\n   * Only relevant for range columns. Match only rows where every element in\n   * `column` is either contained in `range` or less than any element in\n   * `range`.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeLte(column, range) {\n    this.url.searchParams.append(column, `nxr.${range}`);\n    return this;\n  }\n  /**\n   * Only relevant for range columns. Match only rows where `column` is\n   * mutually exclusive to `range` and there can be no element between the two\n   * ranges.\n   *\n   * @param column - The range column to filter on\n   * @param range - The range to filter with\n   */\n  rangeAdjacent(column, range) {\n    this.url.searchParams.append(column, `adj.${range}`);\n    return this;\n  }\n  /**\n   * Only relevant for array and range columns. Match only rows where\n   * `column` and `value` have an element in common.\n   *\n   * @param column - The array or range column to filter on\n   * @param value - The array or range value to filter with\n   */\n  overlaps(column, value) {\n    if (typeof value === \"string\") {\n      this.url.searchParams.append(column, `ov.${value}`);\n    } else {\n      this.url.searchParams.append(column, `ov.{${value.join(\",\")}}`);\n    }\n    return this;\n  }\n  /**\n   * Only relevant for text and tsvector columns. Match only rows where\n   * `column` matches the query string in `query`.\n   *\n   * @param column - The text or tsvector column to filter on\n   * @param query - The query text to match with\n   * @param options - Named parameters\n   * @param options.config - The text search configuration to use\n   * @param options.type - Change how the `query` text is interpreted\n   */\n  textSearch(column, query, { config, type } = {}) {\n    let typePart = \"\";\n    if (type === \"plain\") {\n      typePart = \"pl\";\n    } else if (type === \"phrase\") {\n      typePart = \"ph\";\n    } else if (type === \"websearch\") {\n      typePart = \"w\";\n    }\n    const configPart = config === void 0 ? \"\" : `(${config})`;\n    this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`);\n    return this;\n  }\n  /**\n   * Match only rows where each column in `query` keys is equal to its\n   * associated value. Shorthand for multiple `.eq()`s.\n   *\n   * @param query - The object to filter with, with column names as keys mapped\n   * to their filter values\n   */\n  match(query) {\n    Object.entries(query).forEach(([column, value]) => {\n      this.url.searchParams.append(column, `eq.${value}`);\n    });\n    return this;\n  }\n  /**\n   * Match only rows which doesn't satisfy the filter.\n   *\n   * Unlike most filters, `opearator` and `value` are used as-is and need to\n   * follow [PostgREST\n   * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n   * to make sure they are properly sanitized.\n   *\n   * @param column - The column to filter on\n   * @param operator - The operator to be negated to filter with, following\n   * PostgREST syntax\n   * @param value - The value to filter with, following PostgREST syntax\n   */\n  not(column, operator, value) {\n    this.url.searchParams.append(column, `not.${operator}.${value}`);\n    return this;\n  }\n  /**\n   * Match only rows which satisfy at least one of the filters.\n   *\n   * Unlike most filters, `filters` is used as-is and needs to follow [PostgREST\n   * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n   * to make sure it's properly sanitized.\n   *\n   * It's currently not possible to do an `.or()` filter across multiple tables.\n   *\n   * @param filters - The filters to use, following PostgREST syntax\n   * @param options - Named parameters\n   * @param options.referencedTable - Set this to filter on referenced tables\n   * instead of the parent table\n   * @param options.foreignTable - Deprecated, use `referencedTable` instead\n   */\n  or(filters, { foreignTable, referencedTable = foreignTable } = {}) {\n    const key = referencedTable ? `${referencedTable}.or` : \"or\";\n    this.url.searchParams.append(key, `(${filters})`);\n    return this;\n  }\n  /**\n   * Match only rows which satisfy the filter. This is an escape hatch - you\n   * should use the specific filter methods wherever possible.\n   *\n   * Unlike most filters, `opearator` and `value` are used as-is and need to\n   * follow [PostgREST\n   * syntax](https://postgrest.org/en/stable/api.html#operators). You also need\n   * to make sure they are properly sanitized.\n   *\n   * @param column - The column to filter on\n   * @param operator - The operator to filter with, following PostgREST syntax\n   * @param value - The value to filter with, following PostgREST syntax\n   */\n  filter(column, operator, value) {\n    this.url.searchParams.append(column, `${operator}.${value}`);\n    return this;\n  }\n};\nexports4.default = PostgrestFilterBuilder;\nvar PostgrestFilterBuilder_default = module4.exports != null && typeof module4.exports === \"object\" && \"default\" in module4.exports ? module4.exports.default : module4.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestQueryBuilder.js\nvar PostgrestQueryBuilder_exports = {};\n__export(PostgrestQueryBuilder_exports, {\n  default: () => PostgrestQueryBuilder_default\n});\nfunction __cjs_default__4(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global5 !== \"undefined\" && global5 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nvar global5 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global5 !== \"undefined\" && global5 || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports5 = {};\nvar module5 = {\n  get exports() {\n    return exports5;\n  },\n  set exports(value) {\n    exports5 = value;\n  }\n};\nObject.defineProperty(exports5, \"__esModule\", { value: true });\nvar tslib_14 = __cjs_default__4(typeof tslib_es6_exports !== \"undefined\" ? tslib_es6_exports : {});\nvar PostgrestFilterBuilder_1 = tslib_14.__importDefault(__cjs_default__4(typeof PostgrestFilterBuilder_exports !== \"undefined\" ? PostgrestFilterBuilder_exports : {}));\nvar PostgrestQueryBuilder = class {\n  /**\n   * Creates a query builder scoped to a Postgres table or view.\n   *\n   * @example\n   * ```ts\n   * import PostgrestQueryBuilder from '@supabase/postgrest-js'\n   *\n   * const query = new PostgrestQueryBuilder(\n   *   new URL('https://xyzcompany.supabase.co/rest/v1/users'),\n   *   { headers: { apikey: 'public-anon-key' } }\n   * )\n   * ```\n   */\n  constructor(url, { headers = {}, schema, fetch: fetch2 }) {\n    this.url = url;\n    this.headers = new Headers(headers);\n    this.schema = schema;\n    this.fetch = fetch2;\n  }\n  /**\n   * Perform a SELECT query on the table or view.\n   *\n   * @param columns - The columns to retrieve, separated by commas. Columns can be renamed when returned with `customName:columnName`\n   *\n   * @param options - Named parameters\n   *\n   * @param options.head - When set to `true`, `data` will not be returned.\n   * Useful if you only need the count.\n   *\n   * @param options.count - Count algorithm to use to count rows in the table or view.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  select(columns, options) {\n    const { head: head2 = false, count } = options !== null && options !== void 0 ? options : {};\n    const method = head2 ? \"HEAD\" : \"GET\";\n    let quoted = false;\n    const cleanedColumns = (columns !== null && columns !== void 0 ? columns : \"*\").split(\"\").map((c) => {\n      if (/\\s/.test(c) && !quoted) {\n        return \"\";\n      }\n      if (c === '\"') {\n        quoted = !quoted;\n      }\n      return c;\n    }).join(\"\");\n    this.url.searchParams.set(\"select\", cleanedColumns);\n    if (count) {\n      this.headers.append(\"Prefer\", `count=${count}`);\n    }\n    return new PostgrestFilterBuilder_1.default({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: this.fetch\n    });\n  }\n  /**\n   * Perform an INSERT into the table or view.\n   *\n   * By default, inserted rows are not returned. To return it, chain the call\n   * with `.select()`.\n   *\n   * @param values - The values to insert. Pass an object to insert a single row\n   * or an array to insert multiple rows.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.count - Count algorithm to use to count inserted rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   *\n   * @param options.defaultToNull - Make missing fields default to `null`.\n   * Otherwise, use the default value for the column. Only applies for bulk\n   * inserts.\n   */\n  insert(values, { count, defaultToNull = true } = {}) {\n    var _a2;\n    const method = \"POST\";\n    if (count) {\n      this.headers.append(\"Prefer\", `count=${count}`);\n    }\n    if (!defaultToNull) {\n      this.headers.append(\"Prefer\", `missing=default`);\n    }\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n      if (columns.length > 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n        this.url.searchParams.set(\"columns\", uniqueColumns.join(\",\"));\n      }\n    }\n    return new PostgrestFilterBuilder_1.default({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: (_a2 = this.fetch) !== null && _a2 !== void 0 ? _a2 : fetch\n    });\n  }\n  /**\n  * Perform an UPSERT on the table or view. Depending on the column(s) passed\n  * to `onConflict`, `.upsert()` allows you to perform the equivalent of\n  * `.insert()` if a row with the corresponding `onConflict` columns doesn't\n  * exist, or if it does exist, perform an alternative action depending on\n  * `ignoreDuplicates`.\n  *\n  * By default, upserted rows are not returned. To return it, chain the call\n  * with `.select()`.\n  *\n  * @param values - The values to upsert with. Pass an object to upsert a\n  * single row or an array to upsert multiple rows.\n  *\n  * @param options - Named parameters\n  *\n  * @param options.onConflict - Comma-separated UNIQUE column(s) to specify how\n  * duplicate rows are determined. Two rows are duplicates if all the\n  * `onConflict` columns are equal.\n  *\n  * @param options.ignoreDuplicates - If `true`, duplicate rows are ignored. If\n  * `false`, duplicate rows are merged with existing rows.\n  *\n  * @param options.count - Count algorithm to use to count upserted rows.\n  *\n  * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n  * hood.\n  *\n  * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n  * statistics under the hood.\n  *\n  * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n  * numbers.\n  *\n  * @param options.defaultToNull - Make missing fields default to `null`.\n  * Otherwise, use the default value for the column. This only applies when\n  * inserting new rows, not when merging with existing rows under\n  * `ignoreDuplicates: false`. This also only applies when doing bulk upserts.\n  *\n  * @example Upsert a single row using a unique key\n  * ```ts\n  * // Upserting a single row, overwriting based on the 'username' unique column\n  * const { data, error } = await supabase\n  *   .from('users')\n  *   .upsert({ username: 'supabot' }, { onConflict: 'username' })\n  *\n  * // Example response:\n  * // {\n  * //   data: [\n  * //     { id: 4, message: 'bar', username: 'supabot' }\n  * //   ],\n  * //   error: null\n  * // }\n  * ```\n  *\n  * @example Upsert with conflict resolution and exact row counting\n  * ```ts\n  * // Upserting and returning exact count\n  * const { data, error, count } = await supabase\n  *   .from('users')\n  *   .upsert(\n  *     {\n  *       id: 3,\n  *       message: 'foo',\n  *       username: 'supabot'\n  *     },\n  *     {\n  *       onConflict: 'username',\n  *       count: 'exact'\n  *     }\n  *   )\n  *\n  * // Example response:\n  * // {\n  * //   data: [\n  * //     {\n  * //       id: 42,\n  * //       handle: \"saoirse\",\n  * //       display_name: \"Saoirse\"\n  * //     }\n  * //   ],\n  * //   count: 1,\n  * //   error: null\n  * // }\n  * ```\n  */\n  upsert(values, { onConflict, ignoreDuplicates = false, count, defaultToNull = true } = {}) {\n    var _a2;\n    const method = \"POST\";\n    this.headers.append(\"Prefer\", `resolution=${ignoreDuplicates ? \"ignore\" : \"merge\"}-duplicates`);\n    if (onConflict !== void 0)\n      this.url.searchParams.set(\"on_conflict\", onConflict);\n    if (count) {\n      this.headers.append(\"Prefer\", `count=${count}`);\n    }\n    if (!defaultToNull) {\n      this.headers.append(\"Prefer\", \"missing=default\");\n    }\n    if (Array.isArray(values)) {\n      const columns = values.reduce((acc, x) => acc.concat(Object.keys(x)), []);\n      if (columns.length > 0) {\n        const uniqueColumns = [...new Set(columns)].map((column) => `\"${column}\"`);\n        this.url.searchParams.set(\"columns\", uniqueColumns.join(\",\"));\n      }\n    }\n    return new PostgrestFilterBuilder_1.default({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: (_a2 = this.fetch) !== null && _a2 !== void 0 ? _a2 : fetch\n    });\n  }\n  /**\n   * Perform an UPDATE on the table or view.\n   *\n   * By default, updated rows are not returned. To return it, chain the call\n   * with `.select()` after filters.\n   *\n   * @param values - The values to update with\n   *\n   * @param options - Named parameters\n   *\n   * @param options.count - Count algorithm to use to count updated rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  update(values, { count } = {}) {\n    var _a2;\n    const method = \"PATCH\";\n    if (count) {\n      this.headers.append(\"Prefer\", `count=${count}`);\n    }\n    return new PostgrestFilterBuilder_1.default({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      body: values,\n      fetch: (_a2 = this.fetch) !== null && _a2 !== void 0 ? _a2 : fetch\n    });\n  }\n  /**\n   * Perform a DELETE on the table or view.\n   *\n   * By default, deleted rows are not returned. To return it, chain the call\n   * with `.select()` after filters.\n   *\n   * @param options - Named parameters\n   *\n   * @param options.count - Count algorithm to use to count deleted rows.\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  delete({ count } = {}) {\n    var _a2;\n    const method = \"DELETE\";\n    if (count) {\n      this.headers.append(\"Prefer\", `count=${count}`);\n    }\n    return new PostgrestFilterBuilder_1.default({\n      method,\n      url: this.url,\n      headers: this.headers,\n      schema: this.schema,\n      fetch: (_a2 = this.fetch) !== null && _a2 !== void 0 ? _a2 : fetch\n    });\n  }\n};\nexports5.default = PostgrestQueryBuilder;\nvar PostgrestQueryBuilder_default = module5.exports != null && typeof module5.exports === \"object\" && \"default\" in module5.exports ? module5.exports.default : module5.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/PostgrestClient.js\nvar PostgrestClient_exports = {};\n__export(PostgrestClient_exports, {\n  default: () => PostgrestClient_default\n});\nfunction __cjs_default__5(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global6 !== \"undefined\" && global6 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nvar global6 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global6 !== \"undefined\" && global6 || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports6 = {};\nvar module6 = {\n  get exports() {\n    return exports6;\n  },\n  set exports(value) {\n    exports6 = value;\n  }\n};\nObject.defineProperty(exports6, \"__esModule\", { value: true });\nvar tslib_15 = __cjs_default__5(typeof tslib_es6_exports !== \"undefined\" ? tslib_es6_exports : {});\nvar PostgrestQueryBuilder_1 = tslib_15.__importDefault(__cjs_default__5(typeof PostgrestQueryBuilder_exports !== \"undefined\" ? PostgrestQueryBuilder_exports : {}));\nvar PostgrestFilterBuilder_12 = tslib_15.__importDefault(__cjs_default__5(typeof PostgrestFilterBuilder_exports !== \"undefined\" ? PostgrestFilterBuilder_exports : {}));\nvar PostgrestClient = class _PostgrestClient {\n  // TODO: Add back shouldThrowOnError once we figure out the typings\n  /**\n   * Creates a PostgREST client.\n   *\n   * @param url - URL of the PostgREST endpoint\n   * @param options - Named parameters\n   * @param options.headers - Custom headers\n   * @param options.schema - Postgres schema to switch to\n   * @param options.fetch - Custom fetch\n   * @example\n   * ```ts\n   * import PostgrestClient from '@supabase/postgrest-js'\n   *\n   * const postgrest = new PostgrestClient('https://xyzcompany.supabase.co/rest/v1', {\n   *   headers: { apikey: 'public-anon-key' },\n   *   schema: 'public',\n   * })\n   * ```\n   */\n  constructor(url, { headers = {}, schema, fetch: fetch2 } = {}) {\n    this.url = url;\n    this.headers = new Headers(headers);\n    this.schemaName = schema;\n    this.fetch = fetch2;\n  }\n  /**\n   * Perform a query on a table or a view.\n   *\n   * @param relation - The table or view name to query\n   */\n  from(relation) {\n    if (!relation || typeof relation !== \"string\" || relation.trim() === \"\") {\n      throw new Error(\"Invalid relation name: relation must be a non-empty string.\");\n    }\n    const url = new URL(`${this.url}/${relation}`);\n    return new PostgrestQueryBuilder_1.default(url, {\n      headers: new Headers(this.headers),\n      schema: this.schemaName,\n      fetch: this.fetch\n    });\n  }\n  /**\n   * Select a schema to query or perform an function (rpc) call.\n   *\n   * The schema needs to be on the list of exposed schemas inside Supabase.\n   *\n   * @param schema - The schema to query\n   */\n  schema(schema) {\n    return new _PostgrestClient(this.url, {\n      headers: this.headers,\n      schema,\n      fetch: this.fetch\n    });\n  }\n  /**\n   * Perform a function call.\n   *\n   * @param fn - The function name to call\n   * @param args - The arguments to pass to the function call\n   * @param options - Named parameters\n   * @param options.head - When set to `true`, `data` will not be returned.\n   * Useful if you only need the count.\n   * @param options.get - When set to `true`, the function will be called with\n   * read-only access mode.\n   * @param options.count - Count algorithm to use to count rows returned by the\n   * function. Only applicable for [set-returning\n   * functions](https://www.postgresql.org/docs/current/functions-srf.html).\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  rpc(fn, args = {}, { head: head2 = false, get: get2 = false, count } = {}) {\n    var _a2;\n    let method;\n    const url = new URL(`${this.url}/rpc/${fn}`);\n    let body;\n    if (head2 || get2) {\n      method = head2 ? \"HEAD\" : \"GET\";\n      Object.entries(args).filter(([_, value]) => value !== void 0).map(([name, value]) => [name, Array.isArray(value) ? `{${value.join(\",\")}}` : `${value}`]).forEach(([name, value]) => {\n        url.searchParams.append(name, value);\n      });\n    } else {\n      method = \"POST\";\n      body = args;\n    }\n    const headers = new Headers(this.headers);\n    if (count) {\n      headers.set(\"Prefer\", `count=${count}`);\n    }\n    return new PostgrestFilterBuilder_12.default({\n      method,\n      url,\n      headers,\n      schema: this.schemaName,\n      body,\n      fetch: (_a2 = this.fetch) !== null && _a2 !== void 0 ? _a2 : fetch\n    });\n  }\n};\nexports6.default = PostgrestClient;\nvar PostgrestClient_default = module6.exports != null && typeof module6.exports === \"object\" && \"default\" in module6.exports ? module6.exports.default : module6.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/cjs/index.js\nfunction __cjs_default__6(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global7 !== \"undefined\" && global7 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nvar global7 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global7 !== \"undefined\" && global7 || typeof globalThis !== \"undefined\" && globalThis || {};\nvar exports7 = {};\nvar module7 = {\n  get exports() {\n    return exports7;\n  },\n  set exports(value) {\n    exports7 = value;\n  }\n};\nObject.defineProperty(exports7, \"__esModule\", { value: true });\nexports7.PostgrestError = exports7.PostgrestBuilder = exports7.PostgrestTransformBuilder = exports7.PostgrestFilterBuilder = exports7.PostgrestQueryBuilder = exports7.PostgrestClient = void 0;\nvar tslib_16 = __cjs_default__6(typeof tslib_es6_exports !== \"undefined\" ? tslib_es6_exports : {});\nvar PostgrestClient_1 = tslib_16.__importDefault(__cjs_default__6(typeof PostgrestClient_exports !== \"undefined\" ? PostgrestClient_exports : {}));\nexports7.PostgrestClient = PostgrestClient_1.default;\nvar PostgrestQueryBuilder_12 = tslib_16.__importDefault(__cjs_default__6(typeof PostgrestQueryBuilder_exports !== \"undefined\" ? PostgrestQueryBuilder_exports : {}));\nexports7.PostgrestQueryBuilder = PostgrestQueryBuilder_12.default;\nvar PostgrestFilterBuilder_13 = tslib_16.__importDefault(__cjs_default__6(typeof PostgrestFilterBuilder_exports !== \"undefined\" ? PostgrestFilterBuilder_exports : {}));\nexports7.PostgrestFilterBuilder = PostgrestFilterBuilder_13.default;\nvar PostgrestTransformBuilder_12 = tslib_16.__importDefault(__cjs_default__6(typeof PostgrestTransformBuilder_exports !== \"undefined\" ? PostgrestTransformBuilder_exports : {}));\nexports7.PostgrestTransformBuilder = PostgrestTransformBuilder_12.default;\nvar PostgrestBuilder_12 = tslib_16.__importDefault(__cjs_default__6(typeof PostgrestBuilder_exports !== \"undefined\" ? PostgrestBuilder_exports : {}));\nexports7.PostgrestBuilder = PostgrestBuilder_12.default;\nvar PostgrestError_12 = tslib_16.__importDefault(__cjs_default__6(typeof PostgrestError_exports !== \"undefined\" ? PostgrestError_exports : {}));\nexports7.PostgrestError = PostgrestError_12.default;\nexports7.default = {\n  PostgrestClient: PostgrestClient_1.default,\n  PostgrestQueryBuilder: PostgrestQueryBuilder_12.default,\n  PostgrestFilterBuilder: PostgrestFilterBuilder_13.default,\n  PostgrestTransformBuilder: PostgrestTransformBuilder_12.default,\n  PostgrestBuilder: PostgrestBuilder_12.default,\n  PostgrestError: PostgrestError_12.default\n};\nvar __export0;\nvar __export1;\nvar __export2;\nvar __export3;\nvar __export4;\nvar __export5;\nif (Object.isExtensible(module7.exports)) {\n  __export0 = module7.exports[\"PostgrestError\"];\n  __export1 = module7.exports[\"PostgrestBuilder\"];\n  __export2 = module7.exports[\"PostgrestTransformBuilder\"];\n  __export3 = module7.exports[\"PostgrestFilterBuilder\"];\n  __export4 = module7.exports[\"PostgrestQueryBuilder\"];\n  __export5 = module7.exports[\"PostgrestClient\"];\n}\nvar cjs_default = module7.exports != null && typeof module7.exports === \"object\" && \"default\" in module7.exports ? module7.exports.default : module7.exports;\n\n// ../../node_modules/.pnpm/@supabase+postgrest-js@2.86.0/node_modules/@supabase/postgrest-js/dist/esm/wrapper.mjs\nvar {\n  PostgrestClient: PostgrestClient2,\n  PostgrestQueryBuilder: PostgrestQueryBuilder2,\n  PostgrestFilterBuilder: PostgrestFilterBuilder2,\n  PostgrestTransformBuilder: PostgrestTransformBuilder2,\n  PostgrestBuilder: PostgrestBuilder2,\n  PostgrestError: PostgrestError2\n} = cjs_default || cjs_exports;\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/websocket-factory.js\nvar WebSocketFactory = class {\n  /**\n   * Static-only utility – prevent instantiation.\n   */\n  constructor() {\n  }\n  static detectEnvironment() {\n    var _a2;\n    if (typeof WebSocket !== \"undefined\") {\n      return { type: \"native\", constructor: WebSocket };\n    }\n    if (typeof globalThis !== \"undefined\" && typeof globalThis.WebSocket !== \"undefined\") {\n      return { type: \"native\", constructor: globalThis.WebSocket };\n    }\n    if (typeof global !== \"undefined\" && typeof global.WebSocket !== \"undefined\") {\n      return { type: \"native\", constructor: global.WebSocket };\n    }\n    if (typeof globalThis !== \"undefined\" && typeof globalThis.WebSocketPair !== \"undefined\" && typeof globalThis.WebSocket === \"undefined\") {\n      return {\n        type: \"cloudflare\",\n        error: \"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.\",\n        workaround: \"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime.\"\n      };\n    }\n    if (typeof globalThis !== \"undefined\" && globalThis.EdgeRuntime || typeof navigator !== \"undefined\" && ((_a2 = navigator.userAgent) === null || _a2 === void 0 ? void 0 : _a2.includes(\"Vercel-Edge\"))) {\n      return {\n        type: \"unsupported\",\n        error: \"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.\",\n        workaround: \"Use serverless functions or a different deployment target for WebSocket functionality.\"\n      };\n    }\n    if (typeof process !== \"undefined\") {\n      const processVersions = process[\"versions\"];\n      if (processVersions && processVersions[\"node\"]) {\n        const versionString = processVersions[\"node\"];\n        const nodeVersion = parseInt(versionString.replace(/^v/, \"\").split(\".\")[0]);\n        if (nodeVersion >= 22) {\n          if (typeof globalThis.WebSocket !== \"undefined\") {\n            return { type: \"native\", constructor: globalThis.WebSocket };\n          }\n          return {\n            type: \"unsupported\",\n            error: `Node.js ${nodeVersion} detected but native WebSocket not found.`,\n            workaround: \"Provide a WebSocket implementation via the transport option.\"\n          };\n        }\n        return {\n          type: \"unsupported\",\n          error: `Node.js ${nodeVersion} detected without native WebSocket support.`,\n          workaround: 'For Node.js < 22, install \"ws\" package and provide it via the transport option:\\nimport ws from \"ws\"\\nnew RealtimeClient(url, { transport: ws })'\n        };\n      }\n    }\n    return {\n      type: \"unsupported\",\n      error: \"Unknown JavaScript runtime without WebSocket support.\",\n      workaround: \"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation.\"\n    };\n  }\n  /**\n   * Returns the best available WebSocket constructor for the current runtime.\n   *\n   * @example\n   * ```ts\n   * const WS = WebSocketFactory.getWebSocketConstructor()\n   * const socket = new WS('wss://realtime.supabase.co/socket')\n   * ```\n   */\n  static getWebSocketConstructor() {\n    const env = this.detectEnvironment();\n    if (env.constructor) {\n      return env.constructor;\n    }\n    let errorMessage = env.error || \"WebSocket not supported in this environment.\";\n    if (env.workaround) {\n      errorMessage += `\n\nSuggested solution: ${env.workaround}`;\n    }\n    throw new Error(errorMessage);\n  }\n  /**\n   * Creates a WebSocket using the detected constructor.\n   *\n   * @example\n   * ```ts\n   * const socket = WebSocketFactory.createWebSocket('wss://realtime.supabase.co/socket')\n   * ```\n   */\n  static createWebSocket(url, protocols) {\n    const WS = this.getWebSocketConstructor();\n    return new WS(url, protocols);\n  }\n  /**\n   * Detects whether the runtime can establish WebSocket connections.\n   *\n   * @example\n   * ```ts\n   * if (!WebSocketFactory.isWebSocketSupported()) {\n   *   console.warn('Falling back to long polling')\n   * }\n   * ```\n   */\n  static isWebSocketSupported() {\n    try {\n      const env = this.detectEnvironment();\n      return env.type === \"native\" || env.type === \"ws\";\n    } catch (_a2) {\n      return false;\n    }\n  }\n};\nvar websocket_factory_default = WebSocketFactory;\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/version.js\nvar version = \"2.86.0\";\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/constants.js\nvar DEFAULT_VERSION = `realtime-js/${version}`;\nvar VSN_1_0_0 = \"1.0.0\";\nvar VSN_2_0_0 = \"2.0.0\";\nvar DEFAULT_VSN = VSN_1_0_0;\nvar DEFAULT_TIMEOUT = 1e4;\nvar WS_CLOSE_NORMAL = 1e3;\nvar MAX_PUSH_BUFFER_SIZE = 100;\nvar SOCKET_STATES;\n(function(SOCKET_STATES2) {\n  SOCKET_STATES2[SOCKET_STATES2[\"connecting\"] = 0] = \"connecting\";\n  SOCKET_STATES2[SOCKET_STATES2[\"open\"] = 1] = \"open\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closing\"] = 2] = \"closing\";\n  SOCKET_STATES2[SOCKET_STATES2[\"closed\"] = 3] = \"closed\";\n})(SOCKET_STATES || (SOCKET_STATES = {}));\nvar CHANNEL_STATES;\n(function(CHANNEL_STATES2) {\n  CHANNEL_STATES2[\"closed\"] = \"closed\";\n  CHANNEL_STATES2[\"errored\"] = \"errored\";\n  CHANNEL_STATES2[\"joined\"] = \"joined\";\n  CHANNEL_STATES2[\"joining\"] = \"joining\";\n  CHANNEL_STATES2[\"leaving\"] = \"leaving\";\n})(CHANNEL_STATES || (CHANNEL_STATES = {}));\nvar CHANNEL_EVENTS;\n(function(CHANNEL_EVENTS2) {\n  CHANNEL_EVENTS2[\"close\"] = \"phx_close\";\n  CHANNEL_EVENTS2[\"error\"] = \"phx_error\";\n  CHANNEL_EVENTS2[\"join\"] = \"phx_join\";\n  CHANNEL_EVENTS2[\"reply\"] = \"phx_reply\";\n  CHANNEL_EVENTS2[\"leave\"] = \"phx_leave\";\n  CHANNEL_EVENTS2[\"access_token\"] = \"access_token\";\n})(CHANNEL_EVENTS || (CHANNEL_EVENTS = {}));\nvar TRANSPORTS;\n(function(TRANSPORTS2) {\n  TRANSPORTS2[\"websocket\"] = \"websocket\";\n})(TRANSPORTS || (TRANSPORTS = {}));\nvar CONNECTION_STATE;\n(function(CONNECTION_STATE2) {\n  CONNECTION_STATE2[\"Connecting\"] = \"connecting\";\n  CONNECTION_STATE2[\"Open\"] = \"open\";\n  CONNECTION_STATE2[\"Closing\"] = \"closing\";\n  CONNECTION_STATE2[\"Closed\"] = \"closed\";\n})(CONNECTION_STATE || (CONNECTION_STATE = {}));\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/serializer.js\nvar Serializer = class {\n  constructor(allowedMetadataKeys) {\n    this.HEADER_LENGTH = 1;\n    this.USER_BROADCAST_PUSH_META_LENGTH = 6;\n    this.KINDS = { userBroadcastPush: 3, userBroadcast: 4 };\n    this.BINARY_ENCODING = 0;\n    this.JSON_ENCODING = 1;\n    this.BROADCAST_EVENT = \"broadcast\";\n    this.allowedMetadataKeys = [];\n    this.allowedMetadataKeys = allowedMetadataKeys !== null && allowedMetadataKeys !== void 0 ? allowedMetadataKeys : [];\n  }\n  encode(msg, callback) {\n    if (msg.event === this.BROADCAST_EVENT && !(msg.payload instanceof ArrayBuffer) && typeof msg.payload.event === \"string\") {\n      return callback(this._binaryEncodeUserBroadcastPush(msg));\n    }\n    let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];\n    return callback(JSON.stringify(payload));\n  }\n  _binaryEncodeUserBroadcastPush(message) {\n    var _a2;\n    if (this._isArrayBuffer((_a2 = message.payload) === null || _a2 === void 0 ? void 0 : _a2.payload)) {\n      return this._encodeBinaryUserBroadcastPush(message);\n    } else {\n      return this._encodeJsonUserBroadcastPush(message);\n    }\n  }\n  _encodeBinaryUserBroadcastPush(message) {\n    var _a2, _b;\n    const userPayload = (_b = (_a2 = message.payload) === null || _a2 === void 0 ? void 0 : _a2.payload) !== null && _b !== void 0 ? _b : new ArrayBuffer(0);\n    return this._encodeUserBroadcastPush(message, this.BINARY_ENCODING, userPayload);\n  }\n  _encodeJsonUserBroadcastPush(message) {\n    var _a2, _b;\n    const userPayload = (_b = (_a2 = message.payload) === null || _a2 === void 0 ? void 0 : _a2.payload) !== null && _b !== void 0 ? _b : {};\n    const encoder = new TextEncoder();\n    const encodedUserPayload = encoder.encode(JSON.stringify(userPayload)).buffer;\n    return this._encodeUserBroadcastPush(message, this.JSON_ENCODING, encodedUserPayload);\n  }\n  _encodeUserBroadcastPush(message, encodingType, encodedPayload) {\n    var _a2, _b;\n    const topic = message.topic;\n    const ref = (_a2 = message.ref) !== null && _a2 !== void 0 ? _a2 : \"\";\n    const joinRef = (_b = message.join_ref) !== null && _b !== void 0 ? _b : \"\";\n    const userEvent = message.payload.event;\n    const rest = this.allowedMetadataKeys ? this._pick(message.payload, this.allowedMetadataKeys) : {};\n    const metadata = Object.keys(rest).length === 0 ? \"\" : JSON.stringify(rest);\n    if (joinRef.length > 255) {\n      throw new Error(`joinRef length ${joinRef.length} exceeds maximum of 255`);\n    }\n    if (ref.length > 255) {\n      throw new Error(`ref length ${ref.length} exceeds maximum of 255`);\n    }\n    if (topic.length > 255) {\n      throw new Error(`topic length ${topic.length} exceeds maximum of 255`);\n    }\n    if (userEvent.length > 255) {\n      throw new Error(`userEvent length ${userEvent.length} exceeds maximum of 255`);\n    }\n    if (metadata.length > 255) {\n      throw new Error(`metadata length ${metadata.length} exceeds maximum of 255`);\n    }\n    const metaLength = this.USER_BROADCAST_PUSH_META_LENGTH + joinRef.length + ref.length + topic.length + userEvent.length + metadata.length;\n    const header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);\n    let view = new DataView(header);\n    let offset = 0;\n    view.setUint8(offset++, this.KINDS.userBroadcastPush);\n    view.setUint8(offset++, joinRef.length);\n    view.setUint8(offset++, ref.length);\n    view.setUint8(offset++, topic.length);\n    view.setUint8(offset++, userEvent.length);\n    view.setUint8(offset++, metadata.length);\n    view.setUint8(offset++, encodingType);\n    Array.from(joinRef, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(userEvent, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    Array.from(metadata, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n    var combined = new Uint8Array(header.byteLength + encodedPayload.byteLength);\n    combined.set(new Uint8Array(header), 0);\n    combined.set(new Uint8Array(encodedPayload), header.byteLength);\n    return combined.buffer;\n  }\n  decode(rawPayload, callback) {\n    if (this._isArrayBuffer(rawPayload)) {\n      let result = this._binaryDecode(rawPayload);\n      return callback(result);\n    }\n    if (typeof rawPayload === \"string\") {\n      const jsonPayload = JSON.parse(rawPayload);\n      const [join_ref, ref, topic, event, payload] = jsonPayload;\n      return callback({ join_ref, ref, topic, event, payload });\n    }\n    return callback({});\n  }\n  _binaryDecode(buffer) {\n    const view = new DataView(buffer);\n    const kind = view.getUint8(0);\n    const decoder = new TextDecoder();\n    switch (kind) {\n      case this.KINDS.userBroadcast:\n        return this._decodeUserBroadcast(buffer, view, decoder);\n    }\n  }\n  _decodeUserBroadcast(buffer, view, decoder) {\n    const topicSize = view.getUint8(1);\n    const userEventSize = view.getUint8(2);\n    const metadataSize = view.getUint8(3);\n    const payloadEncoding = view.getUint8(4);\n    let offset = this.HEADER_LENGTH + 4;\n    const topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n    offset = offset + topicSize;\n    const userEvent = decoder.decode(buffer.slice(offset, offset + userEventSize));\n    offset = offset + userEventSize;\n    const metadata = decoder.decode(buffer.slice(offset, offset + metadataSize));\n    offset = offset + metadataSize;\n    const payload = buffer.slice(offset, buffer.byteLength);\n    const parsedPayload = payloadEncoding === this.JSON_ENCODING ? JSON.parse(decoder.decode(payload)) : payload;\n    const data = {\n      type: this.BROADCAST_EVENT,\n      event: userEvent,\n      payload: parsedPayload\n    };\n    if (metadataSize > 0) {\n      data[\"meta\"] = JSON.parse(metadata);\n    }\n    return { join_ref: null, ref: null, topic, event: this.BROADCAST_EVENT, payload: data };\n  }\n  _isArrayBuffer(buffer) {\n    var _a2;\n    return buffer instanceof ArrayBuffer || ((_a2 = buffer === null || buffer === void 0 ? void 0 : buffer.constructor) === null || _a2 === void 0 ? void 0 : _a2.name) === \"ArrayBuffer\";\n  }\n  _pick(obj, keys) {\n    if (!obj || typeof obj !== \"object\") {\n      return {};\n    }\n    return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/timer.js\nvar Timer = class {\n  constructor(callback, timerCalc) {\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n    this.timer = void 0;\n    this.tries = 0;\n    this.callback = callback;\n    this.timerCalc = timerCalc;\n  }\n  reset() {\n    this.tries = 0;\n    clearTimeout(this.timer);\n    this.timer = void 0;\n  }\n  // Cancels any previous scheduleTimeout and schedules callback\n  scheduleTimeout() {\n    clearTimeout(this.timer);\n    this.timer = setTimeout(() => {\n      this.tries = this.tries + 1;\n      this.callback();\n    }, this.timerCalc(this.tries + 1));\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/transformers.js\nvar PostgresTypes;\n(function(PostgresTypes2) {\n  PostgresTypes2[\"abstime\"] = \"abstime\";\n  PostgresTypes2[\"bool\"] = \"bool\";\n  PostgresTypes2[\"date\"] = \"date\";\n  PostgresTypes2[\"daterange\"] = \"daterange\";\n  PostgresTypes2[\"float4\"] = \"float4\";\n  PostgresTypes2[\"float8\"] = \"float8\";\n  PostgresTypes2[\"int2\"] = \"int2\";\n  PostgresTypes2[\"int4\"] = \"int4\";\n  PostgresTypes2[\"int4range\"] = \"int4range\";\n  PostgresTypes2[\"int8\"] = \"int8\";\n  PostgresTypes2[\"int8range\"] = \"int8range\";\n  PostgresTypes2[\"json\"] = \"json\";\n  PostgresTypes2[\"jsonb\"] = \"jsonb\";\n  PostgresTypes2[\"money\"] = \"money\";\n  PostgresTypes2[\"numeric\"] = \"numeric\";\n  PostgresTypes2[\"oid\"] = \"oid\";\n  PostgresTypes2[\"reltime\"] = \"reltime\";\n  PostgresTypes2[\"text\"] = \"text\";\n  PostgresTypes2[\"time\"] = \"time\";\n  PostgresTypes2[\"timestamp\"] = \"timestamp\";\n  PostgresTypes2[\"timestamptz\"] = \"timestamptz\";\n  PostgresTypes2[\"timetz\"] = \"timetz\";\n  PostgresTypes2[\"tsrange\"] = \"tsrange\";\n  PostgresTypes2[\"tstzrange\"] = \"tstzrange\";\n})(PostgresTypes || (PostgresTypes = {}));\nvar convertChangeData = (columns, record, options = {}) => {\n  var _a2;\n  const skipTypes = (_a2 = options.skipTypes) !== null && _a2 !== void 0 ? _a2 : [];\n  if (!record) {\n    return {};\n  }\n  return Object.keys(record).reduce((acc, rec_key) => {\n    acc[rec_key] = convertColumn(rec_key, columns, record, skipTypes);\n    return acc;\n  }, {});\n};\nvar convertColumn = (columnName, columns, record, skipTypes) => {\n  const column = columns.find((x) => x.name === columnName);\n  const colType = column === null || column === void 0 ? void 0 : column.type;\n  const value = record[columnName];\n  if (colType && !skipTypes.includes(colType)) {\n    return convertCell(colType, value);\n  }\n  return noop(value);\n};\nvar convertCell = (type, value) => {\n  if (type.charAt(0) === \"_\") {\n    const dataType = type.slice(1, type.length);\n    return toArray(value, dataType);\n  }\n  switch (type) {\n    case PostgresTypes.bool:\n      return toBoolean(value);\n    case PostgresTypes.float4:\n    case PostgresTypes.float8:\n    case PostgresTypes.int2:\n    case PostgresTypes.int4:\n    case PostgresTypes.int8:\n    case PostgresTypes.numeric:\n    case PostgresTypes.oid:\n      return toNumber(value);\n    case PostgresTypes.json:\n    case PostgresTypes.jsonb:\n      return toJson(value);\n    case PostgresTypes.timestamp:\n      return toTimestampString(value);\n    // Format to be consistent with PostgREST\n    case PostgresTypes.abstime:\n    // To allow users to cast it based on Timezone\n    case PostgresTypes.date:\n    // To allow users to cast it based on Timezone\n    case PostgresTypes.daterange:\n    case PostgresTypes.int4range:\n    case PostgresTypes.int8range:\n    case PostgresTypes.money:\n    case PostgresTypes.reltime:\n    // To allow users to cast it based on Timezone\n    case PostgresTypes.text:\n    case PostgresTypes.time:\n    // To allow users to cast it based on Timezone\n    case PostgresTypes.timestamptz:\n    // To allow users to cast it based on Timezone\n    case PostgresTypes.timetz:\n    // To allow users to cast it based on Timezone\n    case PostgresTypes.tsrange:\n    case PostgresTypes.tstzrange:\n      return noop(value);\n    default:\n      return noop(value);\n  }\n};\nvar noop = (value) => {\n  return value;\n};\nvar toBoolean = (value) => {\n  switch (value) {\n    case \"t\":\n      return true;\n    case \"f\":\n      return false;\n    default:\n      return value;\n  }\n};\nvar toNumber = (value) => {\n  if (typeof value === \"string\") {\n    const parsedValue = parseFloat(value);\n    if (!Number.isNaN(parsedValue)) {\n      return parsedValue;\n    }\n  }\n  return value;\n};\nvar toJson = (value) => {\n  if (typeof value === \"string\") {\n    try {\n      return JSON.parse(value);\n    } catch (error) {\n      console.log(`JSON parse error: ${error}`);\n      return value;\n    }\n  }\n  return value;\n};\nvar toArray = (value, type) => {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n  const lastIdx = value.length - 1;\n  const closeBrace = value[lastIdx];\n  const openBrace = value[0];\n  if (openBrace === \"{\" && closeBrace === \"}\") {\n    let arr;\n    const valTrim = value.slice(1, lastIdx);\n    try {\n      arr = JSON.parse(\"[\" + valTrim + \"]\");\n    } catch (_) {\n      arr = valTrim ? valTrim.split(\",\") : [];\n    }\n    return arr.map((val) => convertCell(type, val));\n  }\n  return value;\n};\nvar toTimestampString = (value) => {\n  if (typeof value === \"string\") {\n    return value.replace(\" \", \"T\");\n  }\n  return value;\n};\nvar httpEndpointURL = (socketUrl) => {\n  const wsUrl = new URL(socketUrl);\n  wsUrl.protocol = wsUrl.protocol.replace(/^ws/i, \"http\");\n  wsUrl.pathname = wsUrl.pathname.replace(/\\/+$/, \"\").replace(/\\/socket\\/websocket$/i, \"\").replace(/\\/socket$/i, \"\").replace(/\\/websocket$/i, \"\");\n  if (wsUrl.pathname === \"\" || wsUrl.pathname === \"/\") {\n    wsUrl.pathname = \"/api/broadcast\";\n  } else {\n    wsUrl.pathname = wsUrl.pathname + \"/api/broadcast\";\n  }\n  return wsUrl.href;\n};\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/lib/push.js\nvar Push = class {\n  /**\n   * Initializes the Push\n   *\n   * @param channel The Channel\n   * @param event The event, for example `\"phx_join\"`\n   * @param payload The payload, for example `{user_id: 123}`\n   * @param timeout The push timeout in milliseconds\n   */\n  constructor(channel, event, payload = {}, timeout = DEFAULT_TIMEOUT) {\n    this.channel = channel;\n    this.event = event;\n    this.payload = payload;\n    this.timeout = timeout;\n    this.sent = false;\n    this.timeoutTimer = void 0;\n    this.ref = \"\";\n    this.receivedResp = null;\n    this.recHooks = [];\n    this.refEvent = null;\n  }\n  resend(timeout) {\n    this.timeout = timeout;\n    this._cancelRefEvent();\n    this.ref = \"\";\n    this.refEvent = null;\n    this.receivedResp = null;\n    this.sent = false;\n    this.send();\n  }\n  send() {\n    if (this._hasReceived(\"timeout\")) {\n      return;\n    }\n    this.startTimeout();\n    this.sent = true;\n    this.channel.socket.push({\n      topic: this.channel.topic,\n      event: this.event,\n      payload: this.payload,\n      ref: this.ref,\n      join_ref: this.channel._joinRef()\n    });\n  }\n  updatePayload(payload) {\n    this.payload = Object.assign(Object.assign({}, this.payload), payload);\n  }\n  receive(status, callback) {\n    var _a2;\n    if (this._hasReceived(status)) {\n      callback((_a2 = this.receivedResp) === null || _a2 === void 0 ? void 0 : _a2.response);\n    }\n    this.recHooks.push({ status, callback });\n    return this;\n  }\n  startTimeout() {\n    if (this.timeoutTimer) {\n      return;\n    }\n    this.ref = this.channel.socket._makeRef();\n    this.refEvent = this.channel._replyEventName(this.ref);\n    const callback = (payload) => {\n      this._cancelRefEvent();\n      this._cancelTimeout();\n      this.receivedResp = payload;\n      this._matchReceive(payload);\n    };\n    this.channel._on(this.refEvent, {}, callback);\n    this.timeoutTimer = setTimeout(() => {\n      this.trigger(\"timeout\", {});\n    }, this.timeout);\n  }\n  trigger(status, response) {\n    if (this.refEvent)\n      this.channel._trigger(this.refEvent, { status, response });\n  }\n  destroy() {\n    this._cancelRefEvent();\n    this._cancelTimeout();\n  }\n  _cancelRefEvent() {\n    if (!this.refEvent) {\n      return;\n    }\n    this.channel._off(this.refEvent, {});\n  }\n  _cancelTimeout() {\n    clearTimeout(this.timeoutTimer);\n    this.timeoutTimer = void 0;\n  }\n  _matchReceive({ status, response }) {\n    this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n  }\n  _hasReceived(status) {\n    return this.receivedResp && this.receivedResp.status === status;\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/RealtimePresence.js\nvar REALTIME_PRESENCE_LISTEN_EVENTS;\n(function(REALTIME_PRESENCE_LISTEN_EVENTS2) {\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"SYNC\"] = \"sync\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"JOIN\"] = \"join\";\n  REALTIME_PRESENCE_LISTEN_EVENTS2[\"LEAVE\"] = \"leave\";\n})(REALTIME_PRESENCE_LISTEN_EVENTS || (REALTIME_PRESENCE_LISTEN_EVENTS = {}));\nvar RealtimePresence = class _RealtimePresence {\n  /**\n   * Creates a Presence helper that keeps the local presence state in sync with the server.\n   *\n   * @param channel - The realtime channel to bind to.\n   * @param opts - Optional custom event names, e.g. `{ events: { state: 'state', diff: 'diff' } }`.\n   *\n   * @example\n   * ```ts\n   * const presence = new RealtimePresence(channel)\n   *\n   * channel.on('presence', ({ event, key }) => {\n   *   console.log(`Presence ${event} on ${key}`)\n   * })\n   * ```\n   */\n  constructor(channel, opts) {\n    this.channel = channel;\n    this.state = {};\n    this.pendingDiffs = [];\n    this.joinRef = null;\n    this.enabled = false;\n    this.caller = {\n      onJoin: () => {\n      },\n      onLeave: () => {\n      },\n      onSync: () => {\n      }\n    };\n    const events = (opts === null || opts === void 0 ? void 0 : opts.events) || {\n      state: \"presence_state\",\n      diff: \"presence_diff\"\n    };\n    this.channel._on(events.state, {}, (newState) => {\n      const { onJoin, onLeave, onSync } = this.caller;\n      this.joinRef = this.channel._joinRef();\n      this.state = _RealtimePresence.syncState(this.state, newState, onJoin, onLeave);\n      this.pendingDiffs.forEach((diff) => {\n        this.state = _RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n      });\n      this.pendingDiffs = [];\n      onSync();\n    });\n    this.channel._on(events.diff, {}, (diff) => {\n      const { onJoin, onLeave, onSync } = this.caller;\n      if (this.inPendingSyncState()) {\n        this.pendingDiffs.push(diff);\n      } else {\n        this.state = _RealtimePresence.syncDiff(this.state, diff, onJoin, onLeave);\n        onSync();\n      }\n    });\n    this.onJoin((key, currentPresences, newPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"join\",\n        key,\n        currentPresences,\n        newPresences\n      });\n    });\n    this.onLeave((key, currentPresences, leftPresences) => {\n      this.channel._trigger(\"presence\", {\n        event: \"leave\",\n        key,\n        currentPresences,\n        leftPresences\n      });\n    });\n    this.onSync(() => {\n      this.channel._trigger(\"presence\", { event: \"sync\" });\n    });\n  }\n  /**\n   * Used to sync the list of presences on the server with the\n   * client's state.\n   *\n   * An optional `onJoin` and `onLeave` callback can be provided to\n   * react to changes in the client's local presences across\n   * disconnects and reconnects with the server.\n   *\n   * @internal\n   */\n  static syncState(currentState, newState, onJoin, onLeave) {\n    const state = this.cloneDeep(currentState);\n    const transformedState = this.transformState(newState);\n    const joins = {};\n    const leaves = {};\n    this.map(state, (key, presences) => {\n      if (!transformedState[key]) {\n        leaves[key] = presences;\n      }\n    });\n    this.map(transformedState, (key, newPresences) => {\n      const currentPresences = state[key];\n      if (currentPresences) {\n        const newPresenceRefs = newPresences.map((m) => m.presence_ref);\n        const curPresenceRefs = currentPresences.map((m) => m.presence_ref);\n        const joinedPresences = newPresences.filter((m) => curPresenceRefs.indexOf(m.presence_ref) < 0);\n        const leftPresences = currentPresences.filter((m) => newPresenceRefs.indexOf(m.presence_ref) < 0);\n        if (joinedPresences.length > 0) {\n          joins[key] = joinedPresences;\n        }\n        if (leftPresences.length > 0) {\n          leaves[key] = leftPresences;\n        }\n      } else {\n        joins[key] = newPresences;\n      }\n    });\n    return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);\n  }\n  /**\n   * Used to sync a diff of presence join and leave events from the\n   * server, as they happen.\n   *\n   * Like `syncState`, `syncDiff` accepts optional `onJoin` and\n   * `onLeave` callbacks to react to a user joining or leaving from a\n   * device.\n   *\n   * @internal\n   */\n  static syncDiff(state, diff, onJoin, onLeave) {\n    const { joins, leaves } = {\n      joins: this.transformState(diff.joins),\n      leaves: this.transformState(diff.leaves)\n    };\n    if (!onJoin) {\n      onJoin = () => {\n      };\n    }\n    if (!onLeave) {\n      onLeave = () => {\n      };\n    }\n    this.map(joins, (key, newPresences) => {\n      var _a2;\n      const currentPresences = (_a2 = state[key]) !== null && _a2 !== void 0 ? _a2 : [];\n      state[key] = this.cloneDeep(newPresences);\n      if (currentPresences.length > 0) {\n        const joinedPresenceRefs = state[key].map((m) => m.presence_ref);\n        const curPresences = currentPresences.filter((m) => joinedPresenceRefs.indexOf(m.presence_ref) < 0);\n        state[key].unshift(...curPresences);\n      }\n      onJoin(key, currentPresences, newPresences);\n    });\n    this.map(leaves, (key, leftPresences) => {\n      let currentPresences = state[key];\n      if (!currentPresences)\n        return;\n      const presenceRefsToRemove = leftPresences.map((m) => m.presence_ref);\n      currentPresences = currentPresences.filter((m) => presenceRefsToRemove.indexOf(m.presence_ref) < 0);\n      state[key] = currentPresences;\n      onLeave(key, currentPresences, leftPresences);\n      if (currentPresences.length === 0)\n        delete state[key];\n    });\n    return state;\n  }\n  /** @internal */\n  static map(obj, func) {\n    return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n  }\n  /**\n   * Remove 'metas' key\n   * Change 'phx_ref' to 'presence_ref'\n   * Remove 'phx_ref' and 'phx_ref_prev'\n   *\n   * @example\n   * // returns {\n   *  abc123: [\n   *    { presence_ref: '2', user_id: 1 },\n   *    { presence_ref: '3', user_id: 2 }\n   *  ]\n   * }\n   * RealtimePresence.transformState({\n   *  abc123: {\n   *    metas: [\n   *      { phx_ref: '2', phx_ref_prev: '1' user_id: 1 },\n   *      { phx_ref: '3', user_id: 2 }\n   *    ]\n   *  }\n   * })\n   *\n   * @internal\n   */\n  static transformState(state) {\n    state = this.cloneDeep(state);\n    return Object.getOwnPropertyNames(state).reduce((newState, key) => {\n      const presences = state[key];\n      if (\"metas\" in presences) {\n        newState[key] = presences.metas.map((presence) => {\n          presence[\"presence_ref\"] = presence[\"phx_ref\"];\n          delete presence[\"phx_ref\"];\n          delete presence[\"phx_ref_prev\"];\n          return presence;\n        });\n      } else {\n        newState[key] = presences;\n      }\n      return newState;\n    }, {});\n  }\n  /** @internal */\n  static cloneDeep(obj) {\n    return JSON.parse(JSON.stringify(obj));\n  }\n  /** @internal */\n  onJoin(callback) {\n    this.caller.onJoin = callback;\n  }\n  /** @internal */\n  onLeave(callback) {\n    this.caller.onLeave = callback;\n  }\n  /** @internal */\n  onSync(callback) {\n    this.caller.onSync = callback;\n  }\n  /** @internal */\n  inPendingSyncState() {\n    return !this.joinRef || this.joinRef !== this.channel._joinRef();\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.js\nvar REALTIME_POSTGRES_CHANGES_LISTEN_EVENT;\n(function(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2) {\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"ALL\"] = \"*\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"INSERT\"] = \"INSERT\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"UPDATE\"] = \"UPDATE\";\n  REALTIME_POSTGRES_CHANGES_LISTEN_EVENT2[\"DELETE\"] = \"DELETE\";\n})(REALTIME_POSTGRES_CHANGES_LISTEN_EVENT || (REALTIME_POSTGRES_CHANGES_LISTEN_EVENT = {}));\nvar REALTIME_LISTEN_TYPES;\n(function(REALTIME_LISTEN_TYPES2) {\n  REALTIME_LISTEN_TYPES2[\"BROADCAST\"] = \"broadcast\";\n  REALTIME_LISTEN_TYPES2[\"PRESENCE\"] = \"presence\";\n  REALTIME_LISTEN_TYPES2[\"POSTGRES_CHANGES\"] = \"postgres_changes\";\n  REALTIME_LISTEN_TYPES2[\"SYSTEM\"] = \"system\";\n})(REALTIME_LISTEN_TYPES || (REALTIME_LISTEN_TYPES = {}));\nvar REALTIME_SUBSCRIBE_STATES;\n(function(REALTIME_SUBSCRIBE_STATES2) {\n  REALTIME_SUBSCRIBE_STATES2[\"SUBSCRIBED\"] = \"SUBSCRIBED\";\n  REALTIME_SUBSCRIBE_STATES2[\"TIMED_OUT\"] = \"TIMED_OUT\";\n  REALTIME_SUBSCRIBE_STATES2[\"CLOSED\"] = \"CLOSED\";\n  REALTIME_SUBSCRIBE_STATES2[\"CHANNEL_ERROR\"] = \"CHANNEL_ERROR\";\n})(REALTIME_SUBSCRIBE_STATES || (REALTIME_SUBSCRIBE_STATES = {}));\nvar RealtimeChannel = class _RealtimeChannel {\n  /**\n   * Creates a channel that can broadcast messages, sync presence, and listen to Postgres changes.\n   *\n   * The topic determines which realtime stream you are subscribing to. Config options let you\n   * enable acknowledgement for broadcasts, presence tracking, or private channels.\n   *\n   * @example\n   * ```ts\n   * import RealtimeClient from '@supabase/realtime-js'\n   *\n   * const client = new RealtimeClient('https://xyzcompany.supabase.co/realtime/v1', {\n   *   params: { apikey: 'public-anon-key' },\n   * })\n   * const channel = new RealtimeChannel('realtime:public:messages', { config: {} }, client)\n   * ```\n   */\n  constructor(topic, params = { config: {} }, socket) {\n    var _a2, _b;\n    this.topic = topic;\n    this.params = params;\n    this.socket = socket;\n    this.bindings = {};\n    this.state = CHANNEL_STATES.closed;\n    this.joinedOnce = false;\n    this.pushBuffer = [];\n    this.subTopic = topic.replace(/^realtime:/i, \"\");\n    this.params.config = Object.assign({\n      broadcast: { ack: false, self: false },\n      presence: { key: \"\", enabled: false },\n      private: false\n    }, params.config);\n    this.timeout = this.socket.timeout;\n    this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n    this.rejoinTimer = new Timer(() => this._rejoinUntilConnected(), this.socket.reconnectAfterMs);\n    this.joinPush.receive(\"ok\", () => {\n      this.state = CHANNEL_STATES.joined;\n      this.rejoinTimer.reset();\n      this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n      this.pushBuffer = [];\n    });\n    this._onClose(() => {\n      this.rejoinTimer.reset();\n      this.socket.log(\"channel\", `close ${this.topic} ${this._joinRef()}`);\n      this.state = CHANNEL_STATES.closed;\n      this.socket._remove(this);\n    });\n    this._onError((reason) => {\n      if (this._isLeaving() || this._isClosed()) {\n        return;\n      }\n      this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this.joinPush.receive(\"timeout\", () => {\n      if (!this._isJoining()) {\n        return;\n      }\n      this.socket.log(\"channel\", `timeout ${this.topic}`, this.joinPush.timeout);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this.joinPush.receive(\"error\", (reason) => {\n      if (this._isLeaving() || this._isClosed()) {\n        return;\n      }\n      this.socket.log(\"channel\", `error ${this.topic}`, reason);\n      this.state = CHANNEL_STATES.errored;\n      this.rejoinTimer.scheduleTimeout();\n    });\n    this._on(CHANNEL_EVENTS.reply, {}, (payload, ref) => {\n      this._trigger(this._replyEventName(ref), payload);\n    });\n    this.presence = new RealtimePresence(this);\n    this.broadcastEndpointURL = httpEndpointURL(this.socket.endPoint);\n    this.private = this.params.config.private || false;\n    if (!this.private && ((_b = (_a2 = this.params.config) === null || _a2 === void 0 ? void 0 : _a2.broadcast) === null || _b === void 0 ? void 0 : _b.replay)) {\n      throw `tried to use replay on public channel '${this.topic}'. It must be a private channel.`;\n    }\n  }\n  /** Subscribe registers your client with the server */\n  subscribe(callback, timeout = this.timeout) {\n    var _a2, _b, _c;\n    if (!this.socket.isConnected()) {\n      this.socket.connect();\n    }\n    if (this.state == CHANNEL_STATES.closed) {\n      const { config: { broadcast, presence, private: isPrivate } } = this.params;\n      const postgres_changes = (_b = (_a2 = this.bindings.postgres_changes) === null || _a2 === void 0 ? void 0 : _a2.map((r) => r.filter)) !== null && _b !== void 0 ? _b : [];\n      const presence_enabled = !!this.bindings[REALTIME_LISTEN_TYPES.PRESENCE] && this.bindings[REALTIME_LISTEN_TYPES.PRESENCE].length > 0 || ((_c = this.params.config.presence) === null || _c === void 0 ? void 0 : _c.enabled) === true;\n      const accessTokenPayload = {};\n      const config = {\n        broadcast,\n        presence: Object.assign(Object.assign({}, presence), { enabled: presence_enabled }),\n        postgres_changes,\n        private: isPrivate\n      };\n      if (this.socket.accessTokenValue) {\n        accessTokenPayload.access_token = this.socket.accessTokenValue;\n      }\n      this._onError((e) => callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, e));\n      this._onClose(() => callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CLOSED));\n      this.updateJoinPayload(Object.assign({ config }, accessTokenPayload));\n      this.joinedOnce = true;\n      this._rejoin(timeout);\n      this.joinPush.receive(\"ok\", (_0) => __async(this, [_0], function* ({ postgres_changes: postgres_changes2 }) {\n        var _a3;\n        this.socket.setAuth();\n        if (postgres_changes2 === void 0) {\n          callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED);\n          return;\n        } else {\n          const clientPostgresBindings = this.bindings.postgres_changes;\n          const bindingsLen = (_a3 = clientPostgresBindings === null || clientPostgresBindings === void 0 ? void 0 : clientPostgresBindings.length) !== null && _a3 !== void 0 ? _a3 : 0;\n          const newPostgresBindings = [];\n          for (let i = 0; i < bindingsLen; i++) {\n            const clientPostgresBinding = clientPostgresBindings[i];\n            const { filter: { event, schema, table, filter } } = clientPostgresBinding;\n            const serverPostgresFilter = postgres_changes2 && postgres_changes2[i];\n            if (serverPostgresFilter && serverPostgresFilter.event === event && serverPostgresFilter.schema === schema && serverPostgresFilter.table === table && serverPostgresFilter.filter === filter) {\n              newPostgresBindings.push(Object.assign(Object.assign({}, clientPostgresBinding), { id: serverPostgresFilter.id }));\n            } else {\n              this.unsubscribe();\n              this.state = CHANNEL_STATES.errored;\n              callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, new Error(\"mismatch between server and client bindings for postgres changes\"));\n              return;\n            }\n          }\n          this.bindings.postgres_changes = newPostgresBindings;\n          callback && callback(REALTIME_SUBSCRIBE_STATES.SUBSCRIBED);\n          return;\n        }\n      })).receive(\"error\", (error) => {\n        this.state = CHANNEL_STATES.errored;\n        callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.CHANNEL_ERROR, new Error(JSON.stringify(Object.values(error).join(\", \") || \"error\")));\n        return;\n      }).receive(\"timeout\", () => {\n        callback === null || callback === void 0 ? void 0 : callback(REALTIME_SUBSCRIBE_STATES.TIMED_OUT);\n        return;\n      });\n    }\n    return this;\n  }\n  /**\n   * Returns the current presence state for this channel.\n   *\n   * The shape is a map keyed by presence key (for example a user id) where each entry contains the\n   * tracked metadata for that user.\n   */\n  presenceState() {\n    return this.presence.state;\n  }\n  /**\n   * Sends the supplied payload to the presence tracker so other subscribers can see that this\n   * client is online. Use `untrack` to stop broadcasting presence for the same key.\n   */\n  track(_0) {\n    return __async(this, arguments, function* (payload, opts = {}) {\n      return yield this.send({\n        type: \"presence\",\n        event: \"track\",\n        payload\n      }, opts.timeout || this.timeout);\n    });\n  }\n  /**\n   * Removes the current presence state for this client.\n   */\n  untrack() {\n    return __async(this, arguments, function* (opts = {}) {\n      return yield this.send({\n        type: \"presence\",\n        event: \"untrack\"\n      }, opts);\n    });\n  }\n  on(type, filter, callback) {\n    if (this.state === CHANNEL_STATES.joined && type === REALTIME_LISTEN_TYPES.PRESENCE) {\n      this.socket.log(\"channel\", `resubscribe to ${this.topic} due to change in presence callbacks on joined channel`);\n      this.unsubscribe().then(() => this.subscribe());\n    }\n    return this._on(type, filter, callback);\n  }\n  /**\n   * Sends a broadcast message explicitly via REST API.\n   *\n   * This method always uses the REST API endpoint regardless of WebSocket connection state.\n   * Useful when you want to guarantee REST delivery or when gradually migrating from implicit REST fallback.\n   *\n   * @param event The name of the broadcast event\n   * @param payload Payload to be sent (required)\n   * @param opts Options including timeout\n   * @returns Promise resolving to object with success status, and error details if failed\n   */\n  httpSend(_0, _1) {\n    return __async(this, arguments, function* (event, payload, opts = {}) {\n      var _a2;\n      const authorization = this.socket.accessTokenValue ? `Bearer ${this.socket.accessTokenValue}` : \"\";\n      if (payload === void 0 || payload === null) {\n        return Promise.reject(\"Payload is required for httpSend()\");\n      }\n      const options = {\n        method: \"POST\",\n        headers: {\n          Authorization: authorization,\n          apikey: this.socket.apiKey ? this.socket.apiKey : \"\",\n          \"Content-Type\": \"application/json\"\n        },\n        body: JSON.stringify({\n          messages: [\n            {\n              topic: this.subTopic,\n              event,\n              payload,\n              private: this.private\n            }\n          ]\n        })\n      };\n      const response = yield this._fetchWithTimeout(this.broadcastEndpointURL, options, (_a2 = opts.timeout) !== null && _a2 !== void 0 ? _a2 : this.timeout);\n      if (response.status === 202) {\n        return { success: true };\n      }\n      let errorMessage = response.statusText;\n      try {\n        const errorBody = yield response.json();\n        errorMessage = errorBody.error || errorBody.message || errorMessage;\n      } catch (_b) {\n      }\n      return Promise.reject(new Error(errorMessage));\n    });\n  }\n  /**\n   * Sends a message into the channel.\n   *\n   * @param args Arguments to send to channel\n   * @param args.type The type of event to send\n   * @param args.event The name of the event being sent\n   * @param args.payload Payload to be sent\n   * @param opts Options to be used during the send process\n   */\n  send(_0) {\n    return __async(this, arguments, function* (args, opts = {}) {\n      var _a2, _b;\n      if (!this._canPush() && args.type === \"broadcast\") {\n        console.warn(\"Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.\");\n        const { event, payload: endpoint_payload } = args;\n        const authorization = this.socket.accessTokenValue ? `Bearer ${this.socket.accessTokenValue}` : \"\";\n        const options = {\n          method: \"POST\",\n          headers: {\n            Authorization: authorization,\n            apikey: this.socket.apiKey ? this.socket.apiKey : \"\",\n            \"Content-Type\": \"application/json\"\n          },\n          body: JSON.stringify({\n            messages: [\n              {\n                topic: this.subTopic,\n                event,\n                payload: endpoint_payload,\n                private: this.private\n              }\n            ]\n          })\n        };\n        try {\n          const response = yield this._fetchWithTimeout(this.broadcastEndpointURL, options, (_a2 = opts.timeout) !== null && _a2 !== void 0 ? _a2 : this.timeout);\n          yield (_b = response.body) === null || _b === void 0 ? void 0 : _b.cancel();\n          return response.ok ? \"ok\" : \"error\";\n        } catch (error) {\n          if (error.name === \"AbortError\") {\n            return \"timed out\";\n          } else {\n            return \"error\";\n          }\n        }\n      } else {\n        return new Promise((resolve) => {\n          var _a3, _b2, _c;\n          const push = this._push(args.type, args, opts.timeout || this.timeout);\n          if (args.type === \"broadcast\" && !((_c = (_b2 = (_a3 = this.params) === null || _a3 === void 0 ? void 0 : _a3.config) === null || _b2 === void 0 ? void 0 : _b2.broadcast) === null || _c === void 0 ? void 0 : _c.ack)) {\n            resolve(\"ok\");\n          }\n          push.receive(\"ok\", () => resolve(\"ok\"));\n          push.receive(\"error\", () => resolve(\"error\"));\n          push.receive(\"timeout\", () => resolve(\"timed out\"));\n        });\n      }\n    });\n  }\n  /**\n   * Updates the payload that will be sent the next time the channel joins (reconnects).\n   * Useful for rotating access tokens or updating config without re-creating the channel.\n   */\n  updateJoinPayload(payload) {\n    this.joinPush.updatePayload(payload);\n  }\n  /**\n   * Leaves the channel.\n   *\n   * Unsubscribes from server events, and instructs channel to terminate on server.\n   * Triggers onClose() hooks.\n   *\n   * To receive leave acknowledgements, use the a `receive` hook to bind to the server ack, ie:\n   * channel.unsubscribe().receive(\"ok\", () => alert(\"left!\") )\n   */\n  unsubscribe(timeout = this.timeout) {\n    this.state = CHANNEL_STATES.leaving;\n    const onClose = () => {\n      this.socket.log(\"channel\", `leave ${this.topic}`);\n      this._trigger(CHANNEL_EVENTS.close, \"leave\", this._joinRef());\n    };\n    this.joinPush.destroy();\n    let leavePush = null;\n    return new Promise((resolve) => {\n      leavePush = new Push(this, CHANNEL_EVENTS.leave, {}, timeout);\n      leavePush.receive(\"ok\", () => {\n        onClose();\n        resolve(\"ok\");\n      }).receive(\"timeout\", () => {\n        onClose();\n        resolve(\"timed out\");\n      }).receive(\"error\", () => {\n        resolve(\"error\");\n      });\n      leavePush.send();\n      if (!this._canPush()) {\n        leavePush.trigger(\"ok\", {});\n      }\n    }).finally(() => {\n      leavePush === null || leavePush === void 0 ? void 0 : leavePush.destroy();\n    });\n  }\n  /**\n   * Teardown the channel.\n   *\n   * Destroys and stops related timers.\n   */\n  teardown() {\n    this.pushBuffer.forEach((push) => push.destroy());\n    this.pushBuffer = [];\n    this.rejoinTimer.reset();\n    this.joinPush.destroy();\n    this.state = CHANNEL_STATES.closed;\n    this.bindings = {};\n  }\n  /** @internal */\n  _fetchWithTimeout(url, options, timeout) {\n    return __async(this, null, function* () {\n      const controller = new AbortController();\n      const id = setTimeout(() => controller.abort(), timeout);\n      const response = yield this.socket.fetch(url, Object.assign(Object.assign({}, options), { signal: controller.signal }));\n      clearTimeout(id);\n      return response;\n    });\n  }\n  /** @internal */\n  _push(event, payload, timeout = this.timeout) {\n    if (!this.joinedOnce) {\n      throw `tried to push '${event}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;\n    }\n    let pushEvent = new Push(this, event, payload, timeout);\n    if (this._canPush()) {\n      pushEvent.send();\n    } else {\n      this._addToPushBuffer(pushEvent);\n    }\n    return pushEvent;\n  }\n  /** @internal */\n  _addToPushBuffer(pushEvent) {\n    pushEvent.startTimeout();\n    this.pushBuffer.push(pushEvent);\n    if (this.pushBuffer.length > MAX_PUSH_BUFFER_SIZE) {\n      const removedPush = this.pushBuffer.shift();\n      if (removedPush) {\n        removedPush.destroy();\n        this.socket.log(\"channel\", `discarded push due to buffer overflow: ${removedPush.event}`, removedPush.payload);\n      }\n    }\n  }\n  /**\n   * Overridable message hook\n   *\n   * Receives all events for specialized message handling before dispatching to the channel callbacks.\n   * Must return the payload, modified or unmodified.\n   *\n   * @internal\n   */\n  _onMessage(_event, payload, _ref) {\n    return payload;\n  }\n  /** @internal */\n  _isMember(topic) {\n    return this.topic === topic;\n  }\n  /** @internal */\n  _joinRef() {\n    return this.joinPush.ref;\n  }\n  /** @internal */\n  _trigger(type, payload, ref) {\n    var _a2, _b;\n    const typeLower = type.toLocaleLowerCase();\n    const { close, error, leave, join } = CHANNEL_EVENTS;\n    const events = [close, error, leave, join];\n    if (ref && events.indexOf(typeLower) >= 0 && ref !== this._joinRef()) {\n      return;\n    }\n    let handledPayload = this._onMessage(typeLower, payload, ref);\n    if (payload && !handledPayload) {\n      throw \"channel onMessage callbacks must return the payload, modified or unmodified\";\n    }\n    if ([\"insert\", \"update\", \"delete\"].includes(typeLower)) {\n      (_a2 = this.bindings.postgres_changes) === null || _a2 === void 0 ? void 0 : _a2.filter((bind) => {\n        var _a3, _b2, _c;\n        return ((_a3 = bind.filter) === null || _a3 === void 0 ? void 0 : _a3.event) === \"*\" || ((_c = (_b2 = bind.filter) === null || _b2 === void 0 ? void 0 : _b2.event) === null || _c === void 0 ? void 0 : _c.toLocaleLowerCase()) === typeLower;\n      }).map((bind) => bind.callback(handledPayload, ref));\n    } else {\n      (_b = this.bindings[typeLower]) === null || _b === void 0 ? void 0 : _b.filter((bind) => {\n        var _a3, _b2, _c, _d, _e, _f;\n        if ([\"broadcast\", \"presence\", \"postgres_changes\"].includes(typeLower)) {\n          if (\"id\" in bind) {\n            const bindId = bind.id;\n            const bindEvent = (_a3 = bind.filter) === null || _a3 === void 0 ? void 0 : _a3.event;\n            return bindId && ((_b2 = payload.ids) === null || _b2 === void 0 ? void 0 : _b2.includes(bindId)) && (bindEvent === \"*\" || (bindEvent === null || bindEvent === void 0 ? void 0 : bindEvent.toLocaleLowerCase()) === ((_c = payload.data) === null || _c === void 0 ? void 0 : _c.type.toLocaleLowerCase()));\n          } else {\n            const bindEvent = (_e = (_d = bind === null || bind === void 0 ? void 0 : bind.filter) === null || _d === void 0 ? void 0 : _d.event) === null || _e === void 0 ? void 0 : _e.toLocaleLowerCase();\n            return bindEvent === \"*\" || bindEvent === ((_f = payload === null || payload === void 0 ? void 0 : payload.event) === null || _f === void 0 ? void 0 : _f.toLocaleLowerCase());\n          }\n        } else {\n          return bind.type.toLocaleLowerCase() === typeLower;\n        }\n      }).map((bind) => {\n        if (typeof handledPayload === \"object\" && \"ids\" in handledPayload) {\n          const postgresChanges = handledPayload.data;\n          const { schema, table, commit_timestamp, type: type2, errors } = postgresChanges;\n          const enrichedPayload = {\n            schema,\n            table,\n            commit_timestamp,\n            eventType: type2,\n            new: {},\n            old: {},\n            errors\n          };\n          handledPayload = Object.assign(Object.assign({}, enrichedPayload), this._getPayloadRecords(postgresChanges));\n        }\n        bind.callback(handledPayload, ref);\n      });\n    }\n  }\n  /** @internal */\n  _isClosed() {\n    return this.state === CHANNEL_STATES.closed;\n  }\n  /** @internal */\n  _isJoined() {\n    return this.state === CHANNEL_STATES.joined;\n  }\n  /** @internal */\n  _isJoining() {\n    return this.state === CHANNEL_STATES.joining;\n  }\n  /** @internal */\n  _isLeaving() {\n    return this.state === CHANNEL_STATES.leaving;\n  }\n  /** @internal */\n  _replyEventName(ref) {\n    return `chan_reply_${ref}`;\n  }\n  /** @internal */\n  _on(type, filter, callback) {\n    const typeLower = type.toLocaleLowerCase();\n    const binding = {\n      type: typeLower,\n      filter,\n      callback\n    };\n    if (this.bindings[typeLower]) {\n      this.bindings[typeLower].push(binding);\n    } else {\n      this.bindings[typeLower] = [binding];\n    }\n    return this;\n  }\n  /** @internal */\n  _off(type, filter) {\n    const typeLower = type.toLocaleLowerCase();\n    if (this.bindings[typeLower]) {\n      this.bindings[typeLower] = this.bindings[typeLower].filter((bind) => {\n        var _a2;\n        return !(((_a2 = bind.type) === null || _a2 === void 0 ? void 0 : _a2.toLocaleLowerCase()) === typeLower && _RealtimeChannel.isEqual(bind.filter, filter));\n      });\n    }\n    return this;\n  }\n  /** @internal */\n  static isEqual(obj1, obj2) {\n    if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n      return false;\n    }\n    for (const k in obj1) {\n      if (obj1[k] !== obj2[k]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  /** @internal */\n  _rejoinUntilConnected() {\n    this.rejoinTimer.scheduleTimeout();\n    if (this.socket.isConnected()) {\n      this._rejoin();\n    }\n  }\n  /**\n   * Registers a callback that will be executed when the channel closes.\n   *\n   * @internal\n   */\n  _onClose(callback) {\n    this._on(CHANNEL_EVENTS.close, {}, callback);\n  }\n  /**\n   * Registers a callback that will be executed when the channel encounteres an error.\n   *\n   * @internal\n   */\n  _onError(callback) {\n    this._on(CHANNEL_EVENTS.error, {}, (reason) => callback(reason));\n  }\n  /**\n   * Returns `true` if the socket is connected and the channel has been joined.\n   *\n   * @internal\n   */\n  _canPush() {\n    return this.socket.isConnected() && this._isJoined();\n  }\n  /** @internal */\n  _rejoin(timeout = this.timeout) {\n    if (this._isLeaving()) {\n      return;\n    }\n    this.socket._leaveOpenTopic(this.topic);\n    this.state = CHANNEL_STATES.joining;\n    this.joinPush.resend(timeout);\n  }\n  /** @internal */\n  _getPayloadRecords(payload) {\n    const records = {\n      new: {},\n      old: {}\n    };\n    if (payload.type === \"INSERT\" || payload.type === \"UPDATE\") {\n      records.new = convertChangeData(payload.columns, payload.record);\n    }\n    if (payload.type === \"UPDATE\" || payload.type === \"DELETE\") {\n      records.old = convertChangeData(payload.columns, payload.old_record);\n    }\n    return records;\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+realtime-js@2.86.0/node_modules/@supabase/realtime-js/dist/module/RealtimeClient.js\nvar noop2 = () => {\n};\nvar CONNECTION_TIMEOUTS = {\n  HEARTBEAT_INTERVAL: 25e3,\n  RECONNECT_DELAY: 10,\n  HEARTBEAT_TIMEOUT_FALLBACK: 100\n};\nvar RECONNECT_INTERVALS = [1e3, 2e3, 5e3, 1e4];\nvar DEFAULT_RECONNECT_FALLBACK = 1e4;\nvar WORKER_SCRIPT = `\n  addEventListener(\"message\", (e) => {\n    if (e.data.event === \"start\") {\n      setInterval(() => postMessage({ event: \"keepAlive\" }), e.data.interval);\n    }\n  });`;\nvar RealtimeClient = class {\n  /**\n   * Initializes the Socket.\n   *\n   * @param endPoint The string WebSocket endpoint, ie, \"ws://example.com/socket\", \"wss://example.com\", \"/socket\" (inherited host & protocol)\n   * @param httpEndpoint The string HTTP endpoint, ie, \"https://example.com\", \"/\" (inherited host & protocol)\n   * @param options.transport The Websocket Transport, for example WebSocket. This can be a custom implementation\n   * @param options.timeout The default timeout in milliseconds to trigger push timeouts.\n   * @param options.params The optional params to pass when connecting.\n   * @param options.headers Deprecated: headers cannot be set on websocket connections and this option will be removed in the future.\n   * @param options.heartbeatIntervalMs The millisec interval to send a heartbeat message.\n   * @param options.heartbeatCallback The optional function to handle heartbeat status.\n   * @param options.logger The optional function for specialized logging, ie: logger: (kind, msg, data) => { console.log(`${kind}: ${msg}`, data) }\n   * @param options.logLevel Sets the log level for Realtime\n   * @param options.encode The function to encode outgoing messages. Defaults to JSON: (payload, callback) => callback(JSON.stringify(payload))\n   * @param options.decode The function to decode incoming messages. Defaults to Serializer's decode.\n   * @param options.reconnectAfterMs he optional function that returns the millsec reconnect interval. Defaults to stepped backoff off.\n   * @param options.worker Use Web Worker to set a side flow. Defaults to false.\n   * @param options.workerUrl The URL of the worker script. Defaults to https://realtime.supabase.com/worker.js that includes a heartbeat event call to keep the connection alive.\n   * @example\n   * ```ts\n   * import RealtimeClient from '@supabase/realtime-js'\n   *\n   * const client = new RealtimeClient('https://xyzcompany.supabase.co/realtime/v1', {\n   *   params: { apikey: 'public-anon-key' },\n   * })\n   * client.connect()\n   * ```\n   */\n  constructor(endPoint, options) {\n    var _a2;\n    this.accessTokenValue = null;\n    this.apiKey = null;\n    this.channels = new Array();\n    this.endPoint = \"\";\n    this.httpEndpoint = \"\";\n    this.headers = {};\n    this.params = {};\n    this.timeout = DEFAULT_TIMEOUT;\n    this.transport = null;\n    this.heartbeatIntervalMs = CONNECTION_TIMEOUTS.HEARTBEAT_INTERVAL;\n    this.heartbeatTimer = void 0;\n    this.pendingHeartbeatRef = null;\n    this.heartbeatCallback = noop2;\n    this.ref = 0;\n    this.reconnectTimer = null;\n    this.vsn = DEFAULT_VSN;\n    this.logger = noop2;\n    this.conn = null;\n    this.sendBuffer = [];\n    this.serializer = new Serializer();\n    this.stateChangeCallbacks = {\n      open: [],\n      close: [],\n      error: [],\n      message: []\n    };\n    this.accessToken = null;\n    this._connectionState = \"disconnected\";\n    this._wasManualDisconnect = false;\n    this._authPromise = null;\n    this._resolveFetch = (customFetch) => {\n      if (customFetch) {\n        return (...args) => customFetch(...args);\n      }\n      return (...args) => fetch(...args);\n    };\n    if (!((_a2 = options === null || options === void 0 ? void 0 : options.params) === null || _a2 === void 0 ? void 0 : _a2.apikey)) {\n      throw new Error(\"API key is required to connect to Realtime\");\n    }\n    this.apiKey = options.params.apikey;\n    this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n    this.httpEndpoint = httpEndpointURL(endPoint);\n    this._initializeOptions(options);\n    this._setupReconnectionTimer();\n    this.fetch = this._resolveFetch(options === null || options === void 0 ? void 0 : options.fetch);\n  }\n  /**\n   * Connects the socket, unless already connected.\n   */\n  connect() {\n    if (this.isConnecting() || this.isDisconnecting() || this.conn !== null && this.isConnected()) {\n      return;\n    }\n    this._setConnectionState(\"connecting\");\n    if (this.accessToken && !this._authPromise) {\n      this._setAuthSafely(\"connect\");\n    }\n    if (this.transport) {\n      this.conn = new this.transport(this.endpointURL());\n    } else {\n      try {\n        this.conn = websocket_factory_default.createWebSocket(this.endpointURL());\n      } catch (error) {\n        this._setConnectionState(\"disconnected\");\n        const errorMessage = error.message;\n        if (errorMessage.includes(\"Node.js\")) {\n          throw new Error(`${errorMessage}\n\nTo use Realtime in Node.js, you need to provide a WebSocket implementation:\n\nOption 1: Use Node.js 22+ which has native WebSocket support\nOption 2: Install and provide the \"ws\" package:\n\n  npm install ws\n\n  import ws from \"ws\"\n  const client = new RealtimeClient(url, {\n    ...options,\n    transport: ws\n  })`);\n        }\n        throw new Error(`WebSocket not available: ${errorMessage}`);\n      }\n    }\n    this._setupConnectionHandlers();\n  }\n  /**\n   * Returns the URL of the websocket.\n   * @returns string The URL of the websocket.\n   */\n  endpointURL() {\n    return this._appendParams(this.endPoint, Object.assign({}, this.params, { vsn: this.vsn }));\n  }\n  /**\n   * Disconnects the socket.\n   *\n   * @param code A numeric status code to send on disconnect.\n   * @param reason A custom reason for the disconnect.\n   */\n  disconnect(code, reason) {\n    if (this.isDisconnecting()) {\n      return;\n    }\n    this._setConnectionState(\"disconnecting\", true);\n    if (this.conn) {\n      const fallbackTimer = setTimeout(() => {\n        this._setConnectionState(\"disconnected\");\n      }, 100);\n      this.conn.onclose = () => {\n        clearTimeout(fallbackTimer);\n        this._setConnectionState(\"disconnected\");\n      };\n      if (typeof this.conn.close === \"function\") {\n        if (code) {\n          this.conn.close(code, reason !== null && reason !== void 0 ? reason : \"\");\n        } else {\n          this.conn.close();\n        }\n      }\n      this._teardownConnection();\n    } else {\n      this._setConnectionState(\"disconnected\");\n    }\n  }\n  /**\n   * Returns all created channels\n   */\n  getChannels() {\n    return this.channels;\n  }\n  /**\n   * Unsubscribes and removes a single channel\n   * @param channel A RealtimeChannel instance\n   */\n  removeChannel(channel) {\n    return __async(this, null, function* () {\n      const status = yield channel.unsubscribe();\n      if (this.channels.length === 0) {\n        this.disconnect();\n      }\n      return status;\n    });\n  }\n  /**\n   * Unsubscribes and removes all channels\n   */\n  removeAllChannels() {\n    return __async(this, null, function* () {\n      const values_1 = yield Promise.all(this.channels.map((channel) => channel.unsubscribe()));\n      this.channels = [];\n      this.disconnect();\n      return values_1;\n    });\n  }\n  /**\n   * Logs the message.\n   *\n   * For customized logging, `this.logger` can be overridden.\n   */\n  log(kind, msg, data) {\n    this.logger(kind, msg, data);\n  }\n  /**\n   * Returns the current state of the socket.\n   */\n  connectionState() {\n    switch (this.conn && this.conn.readyState) {\n      case SOCKET_STATES.connecting:\n        return CONNECTION_STATE.Connecting;\n      case SOCKET_STATES.open:\n        return CONNECTION_STATE.Open;\n      case SOCKET_STATES.closing:\n        return CONNECTION_STATE.Closing;\n      default:\n        return CONNECTION_STATE.Closed;\n    }\n  }\n  /**\n   * Returns `true` is the connection is open.\n   */\n  isConnected() {\n    return this.connectionState() === CONNECTION_STATE.Open;\n  }\n  /**\n   * Returns `true` if the connection is currently connecting.\n   */\n  isConnecting() {\n    return this._connectionState === \"connecting\";\n  }\n  /**\n   * Returns `true` if the connection is currently disconnecting.\n   */\n  isDisconnecting() {\n    return this._connectionState === \"disconnecting\";\n  }\n  /**\n   * Creates (or reuses) a {@link RealtimeChannel} for the provided topic.\n   *\n   * Topics are automatically prefixed with `realtime:` to match the Realtime service.\n   * If a channel with the same topic already exists it will be returned instead of creating\n   * a duplicate connection.\n   */\n  channel(topic, params = { config: {} }) {\n    const realtimeTopic = `realtime:${topic}`;\n    const exists = this.getChannels().find((c) => c.topic === realtimeTopic);\n    if (!exists) {\n      const chan = new RealtimeChannel(`realtime:${topic}`, params, this);\n      this.channels.push(chan);\n      return chan;\n    } else {\n      return exists;\n    }\n  }\n  /**\n   * Push out a message if the socket is connected.\n   *\n   * If the socket is not connected, the message gets enqueued within a local buffer, and sent out when a connection is next established.\n   */\n  push(data) {\n    const { topic, event, payload, ref } = data;\n    const callback = () => {\n      this.encode(data, (result) => {\n        var _a2;\n        (_a2 = this.conn) === null || _a2 === void 0 ? void 0 : _a2.send(result);\n      });\n    };\n    this.log(\"push\", `${topic} ${event} (${ref})`, payload);\n    if (this.isConnected()) {\n      callback();\n    } else {\n      this.sendBuffer.push(callback);\n    }\n  }\n  /**\n   * Sets the JWT access token used for channel subscription authorization and Realtime RLS.\n   *\n   * If param is null it will use the `accessToken` callback function or the token set on the client.\n   *\n   * On callback used, it will set the value of the token internal to the client.\n   *\n   * @param token A JWT string to override the token set on the client.\n   */\n  setAuth(token = null) {\n    return __async(this, null, function* () {\n      this._authPromise = this._performAuth(token);\n      try {\n        yield this._authPromise;\n      } finally {\n        this._authPromise = null;\n      }\n    });\n  }\n  /**\n   * Sends a heartbeat message if the socket is connected.\n   */\n  sendHeartbeat() {\n    return __async(this, null, function* () {\n      var _a2;\n      if (!this.isConnected()) {\n        try {\n          this.heartbeatCallback(\"disconnected\");\n        } catch (e) {\n          this.log(\"error\", \"error in heartbeat callback\", e);\n        }\n        return;\n      }\n      if (this.pendingHeartbeatRef) {\n        this.pendingHeartbeatRef = null;\n        this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n        try {\n          this.heartbeatCallback(\"timeout\");\n        } catch (e) {\n          this.log(\"error\", \"error in heartbeat callback\", e);\n        }\n        this._wasManualDisconnect = false;\n        (_a2 = this.conn) === null || _a2 === void 0 ? void 0 : _a2.close(WS_CLOSE_NORMAL, \"heartbeat timeout\");\n        setTimeout(() => {\n          var _a3;\n          if (!this.isConnected()) {\n            (_a3 = this.reconnectTimer) === null || _a3 === void 0 ? void 0 : _a3.scheduleTimeout();\n          }\n        }, CONNECTION_TIMEOUTS.HEARTBEAT_TIMEOUT_FALLBACK);\n        return;\n      }\n      this.pendingHeartbeatRef = this._makeRef();\n      this.push({\n        topic: \"phoenix\",\n        event: \"heartbeat\",\n        payload: {},\n        ref: this.pendingHeartbeatRef\n      });\n      try {\n        this.heartbeatCallback(\"sent\");\n      } catch (e) {\n        this.log(\"error\", \"error in heartbeat callback\", e);\n      }\n      this._setAuthSafely(\"heartbeat\");\n    });\n  }\n  /**\n   * Sets a callback that receives lifecycle events for internal heartbeat messages.\n   * Useful for instrumenting connection health (e.g. sent/ok/timeout/disconnected).\n   */\n  onHeartbeat(callback) {\n    this.heartbeatCallback = callback;\n  }\n  /**\n   * Flushes send buffer\n   */\n  flushSendBuffer() {\n    if (this.isConnected() && this.sendBuffer.length > 0) {\n      this.sendBuffer.forEach((callback) => callback());\n      this.sendBuffer = [];\n    }\n  }\n  /**\n   * Return the next message ref, accounting for overflows\n   *\n   * @internal\n   */\n  _makeRef() {\n    let newRef = this.ref + 1;\n    if (newRef === this.ref) {\n      this.ref = 0;\n    } else {\n      this.ref = newRef;\n    }\n    return this.ref.toString();\n  }\n  /**\n   * Unsubscribe from channels with the specified topic.\n   *\n   * @internal\n   */\n  _leaveOpenTopic(topic) {\n    let dupChannel = this.channels.find((c) => c.topic === topic && (c._isJoined() || c._isJoining()));\n    if (dupChannel) {\n      this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n      dupChannel.unsubscribe();\n    }\n  }\n  /**\n   * Removes a subscription from the socket.\n   *\n   * @param channel An open subscription.\n   *\n   * @internal\n   */\n  _remove(channel) {\n    this.channels = this.channels.filter((c) => c.topic !== channel.topic);\n  }\n  /** @internal */\n  _onConnMessage(rawMessage) {\n    this.decode(rawMessage.data, (msg) => {\n      if (msg.topic === \"phoenix\" && msg.event === \"phx_reply\") {\n        try {\n          this.heartbeatCallback(msg.payload.status === \"ok\" ? \"ok\" : \"error\");\n        } catch (e) {\n          this.log(\"error\", \"error in heartbeat callback\", e);\n        }\n      }\n      if (msg.ref && msg.ref === this.pendingHeartbeatRef) {\n        this.pendingHeartbeatRef = null;\n      }\n      const { topic, event, payload, ref } = msg;\n      const refString = ref ? `(${ref})` : \"\";\n      const status = payload.status || \"\";\n      this.log(\"receive\", `${status} ${topic} ${event} ${refString}`.trim(), payload);\n      this.channels.filter((channel) => channel._isMember(topic)).forEach((channel) => channel._trigger(event, payload, ref));\n      this._triggerStateCallbacks(\"message\", msg);\n    });\n  }\n  /**\n   * Clear specific timer\n   * @internal\n   */\n  _clearTimer(timer) {\n    var _a2;\n    if (timer === \"heartbeat\" && this.heartbeatTimer) {\n      clearInterval(this.heartbeatTimer);\n      this.heartbeatTimer = void 0;\n    } else if (timer === \"reconnect\") {\n      (_a2 = this.reconnectTimer) === null || _a2 === void 0 ? void 0 : _a2.reset();\n    }\n  }\n  /**\n   * Clear all timers\n   * @internal\n   */\n  _clearAllTimers() {\n    this._clearTimer(\"heartbeat\");\n    this._clearTimer(\"reconnect\");\n  }\n  /**\n   * Setup connection handlers for WebSocket events\n   * @internal\n   */\n  _setupConnectionHandlers() {\n    if (!this.conn)\n      return;\n    if (\"binaryType\" in this.conn) {\n      ;\n      this.conn.binaryType = \"arraybuffer\";\n    }\n    this.conn.onopen = () => this._onConnOpen();\n    this.conn.onerror = (error) => this._onConnError(error);\n    this.conn.onmessage = (event) => this._onConnMessage(event);\n    this.conn.onclose = (event) => this._onConnClose(event);\n  }\n  /**\n   * Teardown connection and cleanup resources\n   * @internal\n   */\n  _teardownConnection() {\n    if (this.conn) {\n      if (this.conn.readyState === SOCKET_STATES.open || this.conn.readyState === SOCKET_STATES.connecting) {\n        try {\n          this.conn.close();\n        } catch (e) {\n          this.log(\"error\", \"Error closing connection\", e);\n        }\n      }\n      this.conn.onopen = null;\n      this.conn.onerror = null;\n      this.conn.onmessage = null;\n      this.conn.onclose = null;\n      this.conn = null;\n    }\n    this._clearAllTimers();\n    this.channels.forEach((channel) => channel.teardown());\n  }\n  /** @internal */\n  _onConnOpen() {\n    this._setConnectionState(\"connected\");\n    this.log(\"transport\", `connected to ${this.endpointURL()}`);\n    const authPromise = this._authPromise || (this.accessToken && !this.accessTokenValue ? this.setAuth() : Promise.resolve());\n    authPromise.then(() => {\n      this.flushSendBuffer();\n    }).catch((e) => {\n      this.log(\"error\", \"error waiting for auth on connect\", e);\n      this.flushSendBuffer();\n    });\n    this._clearTimer(\"reconnect\");\n    if (!this.worker) {\n      this._startHeartbeat();\n    } else {\n      if (!this.workerRef) {\n        this._startWorkerHeartbeat();\n      }\n    }\n    this._triggerStateCallbacks(\"open\");\n  }\n  /** @internal */\n  _startHeartbeat() {\n    this.heartbeatTimer && clearInterval(this.heartbeatTimer);\n    this.heartbeatTimer = setInterval(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n  }\n  /** @internal */\n  _startWorkerHeartbeat() {\n    if (this.workerUrl) {\n      this.log(\"worker\", `starting worker for from ${this.workerUrl}`);\n    } else {\n      this.log(\"worker\", `starting default worker`);\n    }\n    const objectUrl = this._workerObjectUrl(this.workerUrl);\n    this.workerRef = new Worker(objectUrl);\n    this.workerRef.onerror = (error) => {\n      this.log(\"worker\", \"worker error\", error.message);\n      this.workerRef.terminate();\n    };\n    this.workerRef.onmessage = (event) => {\n      if (event.data.event === \"keepAlive\") {\n        this.sendHeartbeat();\n      }\n    };\n    this.workerRef.postMessage({\n      event: \"start\",\n      interval: this.heartbeatIntervalMs\n    });\n  }\n  /** @internal */\n  _onConnClose(event) {\n    var _a2;\n    this._setConnectionState(\"disconnected\");\n    this.log(\"transport\", \"close\", event);\n    this._triggerChanError();\n    this._clearTimer(\"heartbeat\");\n    if (!this._wasManualDisconnect) {\n      (_a2 = this.reconnectTimer) === null || _a2 === void 0 ? void 0 : _a2.scheduleTimeout();\n    }\n    this._triggerStateCallbacks(\"close\", event);\n  }\n  /** @internal */\n  _onConnError(error) {\n    this._setConnectionState(\"disconnected\");\n    this.log(\"transport\", `${error}`);\n    this._triggerChanError();\n    this._triggerStateCallbacks(\"error\", error);\n  }\n  /** @internal */\n  _triggerChanError() {\n    this.channels.forEach((channel) => channel._trigger(CHANNEL_EVENTS.error));\n  }\n  /** @internal */\n  _appendParams(url, params) {\n    if (Object.keys(params).length === 0) {\n      return url;\n    }\n    const prefix = url.match(/\\?/) ? \"&\" : \"?\";\n    const query = new URLSearchParams(params);\n    return `${url}${prefix}${query}`;\n  }\n  _workerObjectUrl(url) {\n    let result_url;\n    if (url) {\n      result_url = url;\n    } else {\n      const blob = new Blob([WORKER_SCRIPT], { type: \"application/javascript\" });\n      result_url = URL.createObjectURL(blob);\n    }\n    return result_url;\n  }\n  /**\n   * Set connection state with proper state management\n   * @internal\n   */\n  _setConnectionState(state, manual = false) {\n    this._connectionState = state;\n    if (state === \"connecting\") {\n      this._wasManualDisconnect = false;\n    } else if (state === \"disconnecting\") {\n      this._wasManualDisconnect = manual;\n    }\n  }\n  /**\n   * Perform the actual auth operation\n   * @internal\n   */\n  _performAuth(token = null) {\n    return __async(this, null, function* () {\n      let tokenToSend;\n      if (token) {\n        tokenToSend = token;\n      } else if (this.accessToken) {\n        tokenToSend = yield this.accessToken();\n      } else {\n        tokenToSend = this.accessTokenValue;\n      }\n      if (this.accessTokenValue != tokenToSend) {\n        this.accessTokenValue = tokenToSend;\n        this.channels.forEach((channel) => {\n          const payload = {\n            access_token: tokenToSend,\n            version: DEFAULT_VERSION\n          };\n          tokenToSend && channel.updateJoinPayload(payload);\n          if (channel.joinedOnce && channel._isJoined()) {\n            channel._push(CHANNEL_EVENTS.access_token, {\n              access_token: tokenToSend\n            });\n          }\n        });\n      }\n    });\n  }\n  /**\n   * Wait for any in-flight auth operations to complete\n   * @internal\n   */\n  _waitForAuthIfNeeded() {\n    return __async(this, null, function* () {\n      if (this._authPromise) {\n        yield this._authPromise;\n      }\n    });\n  }\n  /**\n   * Safely call setAuth with standardized error handling\n   * @internal\n   */\n  _setAuthSafely(context = \"general\") {\n    this.setAuth().catch((e) => {\n      this.log(\"error\", `error setting auth in ${context}`, e);\n    });\n  }\n  /**\n   * Trigger state change callbacks with proper error handling\n   * @internal\n   */\n  _triggerStateCallbacks(event, data) {\n    try {\n      this.stateChangeCallbacks[event].forEach((callback) => {\n        try {\n          callback(data);\n        } catch (e) {\n          this.log(\"error\", `error in ${event} callback`, e);\n        }\n      });\n    } catch (e) {\n      this.log(\"error\", `error triggering ${event} callbacks`, e);\n    }\n  }\n  /**\n   * Setup reconnection timer with proper configuration\n   * @internal\n   */\n  _setupReconnectionTimer() {\n    this.reconnectTimer = new Timer(() => __async(this, null, function* () {\n      setTimeout(() => __async(this, null, function* () {\n        yield this._waitForAuthIfNeeded();\n        if (!this.isConnected()) {\n          this.connect();\n        }\n      }), CONNECTION_TIMEOUTS.RECONNECT_DELAY);\n    }), this.reconnectAfterMs);\n  }\n  /**\n   * Initialize client options with defaults\n   * @internal\n   */\n  _initializeOptions(options) {\n    var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    this.transport = (_a2 = options === null || options === void 0 ? void 0 : options.transport) !== null && _a2 !== void 0 ? _a2 : null;\n    this.timeout = (_b = options === null || options === void 0 ? void 0 : options.timeout) !== null && _b !== void 0 ? _b : DEFAULT_TIMEOUT;\n    this.heartbeatIntervalMs = (_c = options === null || options === void 0 ? void 0 : options.heartbeatIntervalMs) !== null && _c !== void 0 ? _c : CONNECTION_TIMEOUTS.HEARTBEAT_INTERVAL;\n    this.worker = (_d = options === null || options === void 0 ? void 0 : options.worker) !== null && _d !== void 0 ? _d : false;\n    this.accessToken = (_e = options === null || options === void 0 ? void 0 : options.accessToken) !== null && _e !== void 0 ? _e : null;\n    this.heartbeatCallback = (_f = options === null || options === void 0 ? void 0 : options.heartbeatCallback) !== null && _f !== void 0 ? _f : noop2;\n    this.vsn = (_g = options === null || options === void 0 ? void 0 : options.vsn) !== null && _g !== void 0 ? _g : DEFAULT_VSN;\n    if (options === null || options === void 0 ? void 0 : options.params)\n      this.params = options.params;\n    if (options === null || options === void 0 ? void 0 : options.logger)\n      this.logger = options.logger;\n    if ((options === null || options === void 0 ? void 0 : options.logLevel) || (options === null || options === void 0 ? void 0 : options.log_level)) {\n      this.logLevel = options.logLevel || options.log_level;\n      this.params = Object.assign(Object.assign({}, this.params), { log_level: this.logLevel });\n    }\n    this.reconnectAfterMs = (_h = options === null || options === void 0 ? void 0 : options.reconnectAfterMs) !== null && _h !== void 0 ? _h : (tries) => {\n      return RECONNECT_INTERVALS[tries - 1] || DEFAULT_RECONNECT_FALLBACK;\n    };\n    switch (this.vsn) {\n      case VSN_1_0_0:\n        this.encode = (_j = options === null || options === void 0 ? void 0 : options.encode) !== null && _j !== void 0 ? _j : (payload, callback) => {\n          return callback(JSON.stringify(payload));\n        };\n        this.decode = (_k = options === null || options === void 0 ? void 0 : options.decode) !== null && _k !== void 0 ? _k : (payload, callback) => {\n          return callback(JSON.parse(payload));\n        };\n        break;\n      case VSN_2_0_0:\n        this.encode = (_l = options === null || options === void 0 ? void 0 : options.encode) !== null && _l !== void 0 ? _l : this.serializer.encode.bind(this.serializer);\n        this.decode = (_m = options === null || options === void 0 ? void 0 : options.decode) !== null && _m !== void 0 ? _m : this.serializer.decode.bind(this.serializer);\n        break;\n      default:\n        throw new Error(`Unsupported serializer version: ${this.vsn}`);\n    }\n    if (this.worker) {\n      if (typeof window !== \"undefined\" && !window.Worker) {\n        throw new Error(\"Web Worker is not supported\");\n      }\n      this.workerUrl = options === null || options === void 0 ? void 0 : options.workerUrl;\n    }\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/errors.js\nvar StorageError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.__isStorageError = true;\n    this.name = \"StorageError\";\n  }\n};\nfunction isStorageError(error) {\n  return typeof error === \"object\" && error !== null && \"__isStorageError\" in error;\n}\nvar StorageApiError = class extends StorageError {\n  constructor(message, status, statusCode) {\n    super(message);\n    this.name = \"StorageApiError\";\n    this.status = status;\n    this.statusCode = statusCode;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      statusCode: this.statusCode\n    };\n  }\n};\nvar StorageUnknownError = class extends StorageError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"StorageUnknownError\";\n    this.originalError = originalError;\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/helpers.js\nvar resolveFetch2 = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\nvar resolveResponse = () => {\n  return Response;\n};\nvar recursiveToCamel = (item) => {\n  if (Array.isArray(item)) {\n    return item.map((el) => recursiveToCamel(el));\n  } else if (typeof item === \"function\" || item !== Object(item)) {\n    return item;\n  }\n  const result = {};\n  Object.entries(item).forEach(([key, value]) => {\n    const newKey = key.replace(/([-_][a-z])/gi, (c) => c.toUpperCase().replace(/[-_]/g, \"\"));\n    result[newKey] = recursiveToCamel(value);\n  });\n  return result;\n};\nvar isPlainObject = (value) => {\n  if (typeof value !== \"object\" || value === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(value);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n};\nvar isValidBucketName = (bucketName) => {\n  if (!bucketName || typeof bucketName !== \"string\") {\n    return false;\n  }\n  if (bucketName.length === 0 || bucketName.length > 100) {\n    return false;\n  }\n  if (bucketName.trim() !== bucketName) {\n    return false;\n  }\n  if (bucketName.includes(\"/\") || bucketName.includes(\"\\\\\")) {\n    return false;\n  }\n  const bucketNameRegex = /^[\\w!.\\*'() &$@=;:+,?-]+$/;\n  return bucketNameRegex.test(bucketName);\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/fetch.js\nvar _getErrorMessage = (err) => {\n  var _a2;\n  return err.msg || err.message || err.error_description || (typeof err.error === \"string\" ? err.error : (_a2 = err.error) === null || _a2 === void 0 ? void 0 : _a2.message) || JSON.stringify(err);\n};\nvar handleError = (error, reject, options) => __awaiter(void 0, void 0, void 0, function* () {\n  const Res = yield resolveResponse();\n  if (error instanceof Res && !(options === null || options === void 0 ? void 0 : options.noResolveJson)) {\n    error.json().then((err) => {\n      const status = error.status || 500;\n      const statusCode = (err === null || err === void 0 ? void 0 : err.statusCode) || status + \"\";\n      reject(new StorageApiError(_getErrorMessage(err), status, statusCode));\n    }).catch((err) => {\n      reject(new StorageUnknownError(_getErrorMessage(err), err));\n    });\n  } else {\n    reject(new StorageUnknownError(_getErrorMessage(error), error));\n  }\n});\nvar _getRequestParams = (method, options, parameters, body) => {\n  const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} };\n  if (method === \"GET\" || !body) {\n    return params;\n  }\n  if (isPlainObject(body)) {\n    params.headers = Object.assign({ \"Content-Type\": \"application/json\" }, options === null || options === void 0 ? void 0 : options.headers);\n    params.body = JSON.stringify(body);\n  } else {\n    params.body = body;\n  }\n  if (options === null || options === void 0 ? void 0 : options.duplex) {\n    params.duplex = options.duplex;\n  }\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _handleRequest(fetcher, method, url, options, parameters, body) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return new Promise((resolve, reject) => {\n      fetcher(url, _getRequestParams(method, options, parameters, body)).then((result) => {\n        if (!result.ok)\n          throw result;\n        if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n          return result;\n        return result.json();\n      }).then((data) => resolve(data)).catch((error) => handleError(error, reject, options));\n    });\n  });\n}\nfunction get(fetcher, url, options, parameters) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"GET\", url, options, parameters);\n  });\n}\nfunction post(fetcher, url, body, options, parameters) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"POST\", url, options, parameters, body);\n  });\n}\nfunction put(fetcher, url, body, options, parameters) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"PUT\", url, options, parameters, body);\n  });\n}\nfunction head(fetcher, url, options, parameters) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"HEAD\", url, Object.assign(Object.assign({}, options), { noResolveJson: true }), parameters);\n  });\n}\nfunction remove(fetcher, url, body, options, parameters) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return _handleRequest(fetcher, \"DELETE\", url, options, parameters, body);\n  });\n}\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/packages/StreamDownloadBuilder.js\nvar StreamDownloadBuilder = class {\n  constructor(downloadFn, shouldThrowOnError) {\n    this.downloadFn = downloadFn;\n    this.shouldThrowOnError = shouldThrowOnError;\n  }\n  then(onfulfilled, onrejected) {\n    return this.execute().then(onfulfilled, onrejected);\n  }\n  execute() {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const result = yield this.downloadFn();\n        return {\n          data: result.body,\n          error: null\n        };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/packages/BlobDownloadBuilder.js\nvar _a;\nvar BlobDownloadBuilder = class {\n  constructor(downloadFn, shouldThrowOnError) {\n    this.downloadFn = downloadFn;\n    this.shouldThrowOnError = shouldThrowOnError;\n    this[_a] = \"BlobDownloadBuilder\";\n    this.promise = null;\n  }\n  asStream() {\n    return new StreamDownloadBuilder(this.downloadFn, this.shouldThrowOnError);\n  }\n  then(onfulfilled, onrejected) {\n    return this.getPromise().then(onfulfilled, onrejected);\n  }\n  catch(onrejected) {\n    return this.getPromise().catch(onrejected);\n  }\n  finally(onfinally) {\n    return this.getPromise().finally(onfinally);\n  }\n  getPromise() {\n    if (!this.promise) {\n      this.promise = this.execute();\n    }\n    return this.promise;\n  }\n  execute() {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const result = yield this.downloadFn();\n        return {\n          data: yield result.blob(),\n          error: null\n        };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n};\n_a = Symbol.toStringTag;\nvar BlobDownloadBuilder_default = BlobDownloadBuilder;\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/packages/StorageFileApi.js\nvar DEFAULT_SEARCH_OPTIONS = {\n  limit: 100,\n  offset: 0,\n  sortBy: {\n    column: \"name\",\n    order: \"asc\"\n  }\n};\nvar DEFAULT_FILE_OPTIONS = {\n  cacheControl: \"3600\",\n  contentType: \"text/plain;charset=UTF-8\",\n  upsert: false\n};\nvar StorageFileApi = class {\n  constructor(url, headers = {}, bucketId, fetch2) {\n    this.shouldThrowOnError = false;\n    this.url = url;\n    this.headers = headers;\n    this.bucketId = bucketId;\n    this.fetch = resolveFetch2(fetch2);\n  }\n  /**\n   * Enable throwing errors instead of returning them.\n   *\n   * @category File Buckets\n   */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /**\n   * Uploads a file to an existing bucket or replaces an existing file at the specified path with a new one.\n   *\n   * @param method HTTP method.\n   * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n   * @param fileBody The body of the file to be stored in the bucket.\n   */\n  uploadOrUpdate(method, path, fileBody, fileOptions) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        let body;\n        const options = Object.assign(Object.assign({}, DEFAULT_FILE_OPTIONS), fileOptions);\n        let headers = Object.assign(Object.assign({}, this.headers), method === \"POST\" && { \"x-upsert\": String(options.upsert) });\n        const metadata = options.metadata;\n        if (typeof Blob !== \"undefined\" && fileBody instanceof Blob) {\n          body = new FormData();\n          body.append(\"cacheControl\", options.cacheControl);\n          if (metadata) {\n            body.append(\"metadata\", this.encodeMetadata(metadata));\n          }\n          body.append(\"\", fileBody);\n        } else if (typeof FormData !== \"undefined\" && fileBody instanceof FormData) {\n          body = fileBody;\n          if (!body.has(\"cacheControl\")) {\n            body.append(\"cacheControl\", options.cacheControl);\n          }\n          if (metadata && !body.has(\"metadata\")) {\n            body.append(\"metadata\", this.encodeMetadata(metadata));\n          }\n        } else {\n          body = fileBody;\n          headers[\"cache-control\"] = `max-age=${options.cacheControl}`;\n          headers[\"content-type\"] = options.contentType;\n          if (metadata) {\n            headers[\"x-metadata\"] = this.toBase64(this.encodeMetadata(metadata));\n          }\n          const isStream = typeof ReadableStream !== \"undefined\" && body instanceof ReadableStream || body && typeof body === \"object\" && \"pipe\" in body && typeof body.pipe === \"function\";\n          if (isStream && !options.duplex) {\n            options.duplex = \"half\";\n          }\n        }\n        if (fileOptions === null || fileOptions === void 0 ? void 0 : fileOptions.headers) {\n          headers = Object.assign(Object.assign({}, headers), fileOptions.headers);\n        }\n        const cleanPath = this._removeEmptyFolders(path);\n        const _path = this._getFinalPath(cleanPath);\n        const data = yield (method == \"PUT\" ? put : post)(this.fetch, `${this.url}/object/${_path}`, body, Object.assign({ headers }, (options === null || options === void 0 ? void 0 : options.duplex) ? { duplex: options.duplex } : {}));\n        return {\n          data: { path: cleanPath, id: data.Id, fullPath: data.Key },\n          error: null\n        };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Uploads a file to an existing bucket.\n   *\n   * @category File Buckets\n   * @param path The file path, including the file name. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n   * @param fileBody The body of the file to be stored in the bucket.\n   * @param fileOptions Optional file upload options including cacheControl, contentType, upsert, and metadata.\n   * @returns Promise with response containing file path, id, and fullPath or error\n   *\n   * @example Upload file\n   * ```js\n   * const avatarFile = event.target.files[0]\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .upload('public/avatar1.png', avatarFile, {\n   *     cacheControl: '3600',\n   *     upsert: false\n   *   })\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"path\": \"public/avatar1.png\",\n   *     \"fullPath\": \"avatars/public/avatar1.png\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   *\n   * @example Upload file using `ArrayBuffer` from base64 file data\n   * ```js\n   * import { decode } from 'base64-arraybuffer'\n   *\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .upload('public/avatar1.png', decode('base64FileData'), {\n   *     contentType: 'image/png'\n   *   })\n   * ```\n   */\n  upload(path, fileBody, fileOptions) {\n    return __awaiter(this, void 0, void 0, function* () {\n      return this.uploadOrUpdate(\"POST\", path, fileBody, fileOptions);\n    });\n  }\n  /**\n   * Upload a file with a token generated from `createSignedUploadUrl`.\n   *\n   * @category File Buckets\n   * @param path The file path, including the file name. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload.\n   * @param token The token generated from `createSignedUploadUrl`\n   * @param fileBody The body of the file to be stored in the bucket.\n   * @param fileOptions Optional file upload options including cacheControl and contentType.\n   * @returns Promise with response containing file path and fullPath or error\n   *\n   * @example Upload to a signed URL\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .uploadToSignedUrl('folder/cat.jpg', 'token-from-createSignedUploadUrl', file)\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"path\": \"folder/cat.jpg\",\n   *     \"fullPath\": \"avatars/folder/cat.jpg\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  uploadToSignedUrl(path, token, fileBody, fileOptions) {\n    return __awaiter(this, void 0, void 0, function* () {\n      const cleanPath = this._removeEmptyFolders(path);\n      const _path = this._getFinalPath(cleanPath);\n      const url = new URL(this.url + `/object/upload/sign/${_path}`);\n      url.searchParams.set(\"token\", token);\n      try {\n        let body;\n        const options = Object.assign({ upsert: DEFAULT_FILE_OPTIONS.upsert }, fileOptions);\n        const headers = Object.assign(Object.assign({}, this.headers), { \"x-upsert\": String(options.upsert) });\n        if (typeof Blob !== \"undefined\" && fileBody instanceof Blob) {\n          body = new FormData();\n          body.append(\"cacheControl\", options.cacheControl);\n          body.append(\"\", fileBody);\n        } else if (typeof FormData !== \"undefined\" && fileBody instanceof FormData) {\n          body = fileBody;\n          body.append(\"cacheControl\", options.cacheControl);\n        } else {\n          body = fileBody;\n          headers[\"cache-control\"] = `max-age=${options.cacheControl}`;\n          headers[\"content-type\"] = options.contentType;\n        }\n        const data = yield put(this.fetch, url.toString(), body, { headers });\n        return {\n          data: { path: cleanPath, fullPath: data.Key },\n          error: null\n        };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Creates a signed upload URL.\n   * Signed upload URLs can be used to upload files to the bucket without further authentication.\n   * They are valid for 2 hours.\n   *\n   * @category File Buckets\n   * @param path The file path, including the current file name. For example `folder/image.png`.\n   * @param options.upsert If set to true, allows the file to be overwritten if it already exists.\n   * @returns Promise with response containing signed upload URL, token, and path or error\n   *\n   * @example Create Signed Upload URL\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .createSignedUploadUrl('folder/cat.jpg')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"signedUrl\": \"https://example.supabase.co/storage/v1/object/upload/sign/avatars/folder/cat.jpg?token=<TOKEN>\",\n   *     \"path\": \"folder/cat.jpg\",\n   *     \"token\": \"<TOKEN>\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  createSignedUploadUrl(path, options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        let _path = this._getFinalPath(path);\n        const headers = Object.assign({}, this.headers);\n        if (options === null || options === void 0 ? void 0 : options.upsert) {\n          headers[\"x-upsert\"] = \"true\";\n        }\n        const data = yield post(this.fetch, `${this.url}/object/upload/sign/${_path}`, {}, { headers });\n        const url = new URL(this.url + data.url);\n        const token = url.searchParams.get(\"token\");\n        if (!token) {\n          throw new StorageError(\"No token returned by API\");\n        }\n        return { data: { signedUrl: url.toString(), path, token }, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Replaces an existing file at the specified path with a new one.\n   *\n   * @category File Buckets\n   * @param path The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to update.\n   * @param fileBody The body of the file to be stored in the bucket.\n   * @param fileOptions Optional file upload options including cacheControl, contentType, upsert, and metadata.\n   * @returns Promise with response containing file path, id, and fullPath or error\n   *\n   * @example Update file\n   * ```js\n   * const avatarFile = event.target.files[0]\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .update('public/avatar1.png', avatarFile, {\n   *     cacheControl: '3600',\n   *     upsert: true\n   *   })\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"path\": \"public/avatar1.png\",\n   *     \"fullPath\": \"avatars/public/avatar1.png\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   *\n   * @example Update file using `ArrayBuffer` from base64 file data\n   * ```js\n   * import {decode} from 'base64-arraybuffer'\n   *\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .update('public/avatar1.png', decode('base64FileData'), {\n   *     contentType: 'image/png'\n   *   })\n   * ```\n   */\n  update(path, fileBody, fileOptions) {\n    return __awaiter(this, void 0, void 0, function* () {\n      return this.uploadOrUpdate(\"PUT\", path, fileBody, fileOptions);\n    });\n  }\n  /**\n   * Moves an existing file to a new path in the same bucket.\n   *\n   * @category File Buckets\n   * @param fromPath The original file path, including the current file name. For example `folder/image.png`.\n   * @param toPath The new file path, including the new file name. For example `folder/image-new.png`.\n   * @param options The destination options.\n   * @returns Promise with response containing success message or error\n   *\n   * @example Move file\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .move('public/avatar1.png', 'private/avatar2.png')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"message\": \"Successfully moved\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  move(fromPath, toPath, options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/move`, {\n          bucketId: this.bucketId,\n          sourceKey: fromPath,\n          destinationKey: toPath,\n          destinationBucket: options === null || options === void 0 ? void 0 : options.destinationBucket\n        }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Copies an existing file to a new path in the same bucket.\n   *\n   * @category File Buckets\n   * @param fromPath The original file path, including the current file name. For example `folder/image.png`.\n   * @param toPath The new file path, including the new file name. For example `folder/image-copy.png`.\n   * @param options The destination options.\n   * @returns Promise with response containing copied file path or error\n   *\n   * @example Copy file\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .copy('public/avatar1.png', 'private/avatar2.png')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"path\": \"avatars/private/avatar2.png\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  copy(fromPath, toPath, options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/copy`, {\n          bucketId: this.bucketId,\n          sourceKey: fromPath,\n          destinationKey: toPath,\n          destinationBucket: options === null || options === void 0 ? void 0 : options.destinationBucket\n        }, { headers: this.headers });\n        return { data: { path: data.Key }, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Creates a signed URL. Use a signed URL to share a file for a fixed amount of time.\n   *\n   * @category File Buckets\n   * @param path The file path, including the current file name. For example `folder/image.png`.\n   * @param expiresIn The number of seconds until the signed URL expires. For example, `60` for a URL which is valid for one minute.\n   * @param options.download triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n   * @param options.transform Transform the asset before serving it to the client.\n   * @returns Promise with response containing signed URL or error\n   *\n   * @example Create Signed URL\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .createSignedUrl('folder/avatar1.png', 60)\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"signedUrl\": \"https://example.supabase.co/storage/v1/object/sign/avatars/folder/avatar1.png?token=<TOKEN>\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   *\n   * @example Create a signed URL for an asset with transformations\n   * ```js\n   * const { data } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .createSignedUrl('folder/avatar1.png', 60, {\n   *     transform: {\n   *       width: 100,\n   *       height: 100,\n   *     }\n   *   })\n   * ```\n   *\n   * @example Create a signed URL which triggers the download of the asset\n   * ```js\n   * const { data } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .createSignedUrl('folder/avatar1.png', 60, {\n   *     download: true,\n   *   })\n   * ```\n   */\n  createSignedUrl(path, expiresIn, options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        let _path = this._getFinalPath(path);\n        let data = yield post(this.fetch, `${this.url}/object/sign/${_path}`, Object.assign({ expiresIn }, (options === null || options === void 0 ? void 0 : options.transform) ? { transform: options.transform } : {}), { headers: this.headers });\n        const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n        const signedUrl = encodeURI(`${this.url}${data.signedURL}${downloadQueryParam}`);\n        data = { signedUrl };\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Creates multiple signed URLs. Use a signed URL to share a file for a fixed amount of time.\n   *\n   * @category File Buckets\n   * @param paths The file paths to be downloaded, including the current file names. For example `['folder/image.png', 'folder2/image2.png']`.\n   * @param expiresIn The number of seconds until the signed URLs expire. For example, `60` for URLs which are valid for one minute.\n   * @param options.download triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n   * @returns Promise with response containing array of objects with signedUrl, path, and error or error\n   *\n   * @example Create Signed URLs\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .createSignedUrls(['folder/avatar1.png', 'folder/avatar2.png'], 60)\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": [\n   *     {\n   *       \"error\": null,\n   *       \"path\": \"folder/avatar1.png\",\n   *       \"signedURL\": \"/object/sign/avatars/folder/avatar1.png?token=<TOKEN>\",\n   *       \"signedUrl\": \"https://example.supabase.co/storage/v1/object/sign/avatars/folder/avatar1.png?token=<TOKEN>\"\n   *     },\n   *     {\n   *       \"error\": null,\n   *       \"path\": \"folder/avatar2.png\",\n   *       \"signedURL\": \"/object/sign/avatars/folder/avatar2.png?token=<TOKEN>\",\n   *       \"signedUrl\": \"https://example.supabase.co/storage/v1/object/sign/avatars/folder/avatar2.png?token=<TOKEN>\"\n   *     }\n   *   ],\n   *   \"error\": null\n   * }\n   * ```\n   */\n  createSignedUrls(paths, expiresIn, options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/object/sign/${this.bucketId}`, { expiresIn, paths }, { headers: this.headers });\n        const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `&download=${options.download === true ? \"\" : options.download}` : \"\";\n        return {\n          data: data.map((datum) => Object.assign(Object.assign({}, datum), { signedUrl: datum.signedURL ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`) : null })),\n          error: null\n        };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Downloads a file from a private bucket. For public buckets, make a request to the URL returned from `getPublicUrl` instead.\n   *\n   * @category File Buckets\n   * @param path The full path and file name of the file to be downloaded. For example `folder/image.png`.\n   * @param options.transform Transform the asset before serving it to the client.\n   * @returns BlobDownloadBuilder instance for downloading the file\n   *\n   * @example Download file\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .download('folder/avatar1.png')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": <BLOB>,\n   *   \"error\": null\n   * }\n   * ```\n   *\n   * @example Download file with transformations\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .download('folder/avatar1.png', {\n   *     transform: {\n   *       width: 100,\n   *       height: 100,\n   *       quality: 80\n   *     }\n   *   })\n   * ```\n   */\n  download(path, options) {\n    const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\";\n    const renderPath = wantsTransformation ? \"render/image/authenticated\" : \"object\";\n    const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n    const queryString = transformationQuery ? `?${transformationQuery}` : \"\";\n    const _path = this._getFinalPath(path);\n    const downloadFn = () => get(this.fetch, `${this.url}/${renderPath}/${_path}${queryString}`, {\n      headers: this.headers,\n      noResolveJson: true\n    });\n    return new BlobDownloadBuilder_default(downloadFn, this.shouldThrowOnError);\n  }\n  /**\n   * Retrieves the details of an existing file.\n   *\n   * @category File Buckets\n   * @param path The file path, including the file name. For example `folder/image.png`.\n   * @returns Promise with response containing file metadata or error\n   *\n   * @example Get file info\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .info('folder/avatar1.png')\n   * ```\n   */\n  info(path) {\n    return __awaiter(this, void 0, void 0, function* () {\n      const _path = this._getFinalPath(path);\n      try {\n        const data = yield get(this.fetch, `${this.url}/object/info/${_path}`, {\n          headers: this.headers\n        });\n        return { data: recursiveToCamel(data), error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Checks the existence of a file.\n   *\n   * @category File Buckets\n   * @param path The file path, including the file name. For example `folder/image.png`.\n   * @returns Promise with response containing boolean indicating file existence or error\n   *\n   * @example Check file existence\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .exists('folder/avatar1.png')\n   * ```\n   */\n  exists(path) {\n    return __awaiter(this, void 0, void 0, function* () {\n      const _path = this._getFinalPath(path);\n      try {\n        yield head(this.fetch, `${this.url}/object/${_path}`, {\n          headers: this.headers\n        });\n        return { data: true, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error) && error instanceof StorageUnknownError) {\n          const originalError = error.originalError;\n          if ([400, 404].includes(originalError === null || originalError === void 0 ? void 0 : originalError.status)) {\n            return { data: false, error };\n          }\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * A simple convenience function to get the URL for an asset in a public bucket. If you do not want to use this function, you can construct the public URL by concatenating the bucket URL with the path to the asset.\n   * This function does not verify if the bucket is public. If a public URL is created for a bucket which is not public, you will not be able to download the asset.\n   *\n   * @category File Buckets\n   * @param path The path and name of the file to generate the public URL for. For example `folder/image.png`.\n   * @param options.download Triggers the file as a download if set to true. Set this parameter as the name of the file if you want to trigger the download with a different filename.\n   * @param options.transform Transform the asset before serving it to the client.\n   * @returns Object with public URL\n   *\n   * @example Returns the URL for an asset in a public bucket\n   * ```js\n   * const { data } = supabase\n   *   .storage\n   *   .from('public-bucket')\n   *   .getPublicUrl('folder/avatar1.png')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"publicUrl\": \"https://example.supabase.co/storage/v1/object/public/public-bucket/folder/avatar1.png\"\n   *   }\n   * }\n   * ```\n   *\n   * @example Returns the URL for an asset in a public bucket with transformations\n   * ```js\n   * const { data } = supabase\n   *   .storage\n   *   .from('public-bucket')\n   *   .getPublicUrl('folder/avatar1.png', {\n   *     transform: {\n   *       width: 100,\n   *       height: 100,\n   *     }\n   *   })\n   * ```\n   *\n   * @example Returns the URL which triggers the download of an asset in a public bucket\n   * ```js\n   * const { data } = supabase\n   *   .storage\n   *   .from('public-bucket')\n   *   .getPublicUrl('folder/avatar1.png', {\n   *     download: true,\n   *   })\n   * ```\n   */\n  getPublicUrl(path, options) {\n    const _path = this._getFinalPath(path);\n    const _queryString = [];\n    const downloadQueryParam = (options === null || options === void 0 ? void 0 : options.download) ? `download=${options.download === true ? \"\" : options.download}` : \"\";\n    if (downloadQueryParam !== \"\") {\n      _queryString.push(downloadQueryParam);\n    }\n    const wantsTransformation = typeof (options === null || options === void 0 ? void 0 : options.transform) !== \"undefined\";\n    const renderPath = wantsTransformation ? \"render/image\" : \"object\";\n    const transformationQuery = this.transformOptsToQueryString((options === null || options === void 0 ? void 0 : options.transform) || {});\n    if (transformationQuery !== \"\") {\n      _queryString.push(transformationQuery);\n    }\n    let queryString = _queryString.join(\"&\");\n    if (queryString !== \"\") {\n      queryString = `?${queryString}`;\n    }\n    return {\n      data: { publicUrl: encodeURI(`${this.url}/${renderPath}/public/${_path}${queryString}`) }\n    };\n  }\n  /**\n   * Deletes files within the same bucket\n   *\n   * @category File Buckets\n   * @param paths An array of files to delete, including the path and file name. For example [`'folder/image.png'`].\n   * @returns Promise with response containing array of deleted file objects or error\n   *\n   * @example Delete file\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .remove(['folder/avatar1.png'])\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": [],\n   *   \"error\": null\n   * }\n   * ```\n   */\n  remove(paths) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/object/${this.bucketId}`, { prefixes: paths }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Get file metadata\n   * @param id the file id to retrieve metadata\n   */\n  // async getMetadata(\n  //   id: string\n  // ): Promise<\n  //   | {\n  //       data: Metadata\n  //       error: null\n  //     }\n  //   | {\n  //       data: null\n  //       error: StorageError\n  //     }\n  // > {\n  //   try {\n  //     const data = await get(this.fetch, `${this.url}/metadata/${id}`, { headers: this.headers })\n  //     return { data, error: null }\n  //   } catch (error) {\n  //     if (isStorageError(error)) {\n  //       return { data: null, error }\n  //     }\n  //     throw error\n  //   }\n  // }\n  /**\n   * Update file metadata\n   * @param id the file id to update metadata\n   * @param meta the new file metadata\n   */\n  // async updateMetadata(\n  //   id: string,\n  //   meta: Metadata\n  // ): Promise<\n  //   | {\n  //       data: Metadata\n  //       error: null\n  //     }\n  //   | {\n  //       data: null\n  //       error: StorageError\n  //     }\n  // > {\n  //   try {\n  //     const data = await post(\n  //       this.fetch,\n  //       `${this.url}/metadata/${id}`,\n  //       { ...meta },\n  //       { headers: this.headers }\n  //     )\n  //     return { data, error: null }\n  //   } catch (error) {\n  //     if (isStorageError(error)) {\n  //       return { data: null, error }\n  //     }\n  //     throw error\n  //   }\n  // }\n  /**\n   * Lists all the files and folders within a path of the bucket.\n   *\n   * @category File Buckets\n   * @param path The folder path.\n   * @param options Search options including limit (defaults to 100), offset, sortBy, and search\n   * @param parameters Optional fetch parameters including signal for cancellation\n   * @returns Promise with response containing array of files or error\n   *\n   * @example List files in a bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .list('folder', {\n   *     limit: 100,\n   *     offset: 0,\n   *     sortBy: { column: 'name', order: 'asc' },\n   *   })\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": [\n   *     {\n   *       \"name\": \"avatar1.png\",\n   *       \"id\": \"e668cf7f-821b-4a2f-9dce-7dfa5dd1cfd2\",\n   *       \"updated_at\": \"2024-05-22T23:06:05.580Z\",\n   *       \"created_at\": \"2024-05-22T23:04:34.443Z\",\n   *       \"last_accessed_at\": \"2024-05-22T23:04:34.443Z\",\n   *       \"metadata\": {\n   *         \"eTag\": \"\\\"c5e8c553235d9af30ef4f6e280790b92\\\"\",\n   *         \"size\": 32175,\n   *         \"mimetype\": \"image/png\",\n   *         \"cacheControl\": \"max-age=3600\",\n   *         \"lastModified\": \"2024-05-22T23:06:05.574Z\",\n   *         \"contentLength\": 32175,\n   *         \"httpStatusCode\": 200\n   *       }\n   *     }\n   *   ],\n   *   \"error\": null\n   * }\n   * ```\n   *\n   * @example Search files in a bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .from('avatars')\n   *   .list('folder', {\n   *     limit: 100,\n   *     offset: 0,\n   *     sortBy: { column: 'name', order: 'asc' },\n   *     search: 'jon'\n   *   })\n   * ```\n   */\n  list(path, options, parameters) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const body = Object.assign(Object.assign(Object.assign({}, DEFAULT_SEARCH_OPTIONS), options), { prefix: path || \"\" });\n        const data = yield post(this.fetch, `${this.url}/object/list/${this.bucketId}`, body, { headers: this.headers }, parameters);\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * @experimental this method signature might change in the future\n   *\n   * @category File Buckets\n   * @param options search options\n   * @param parameters\n   */\n  listV2(options, parameters) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const body = Object.assign({}, options);\n        const data = yield post(this.fetch, `${this.url}/object/list-v2/${this.bucketId}`, body, { headers: this.headers }, parameters);\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  encodeMetadata(metadata) {\n    return JSON.stringify(metadata);\n  }\n  toBase64(data) {\n    if (typeof Buffer !== \"undefined\") {\n      return Buffer.from(data).toString(\"base64\");\n    }\n    return btoa(data);\n  }\n  _getFinalPath(path) {\n    return `${this.bucketId}/${path.replace(/^\\/+/, \"\")}`;\n  }\n  _removeEmptyFolders(path) {\n    return path.replace(/^\\/|\\/$/g, \"\").replace(/\\/+/g, \"/\");\n  }\n  transformOptsToQueryString(transform) {\n    const params = [];\n    if (transform.width) {\n      params.push(`width=${transform.width}`);\n    }\n    if (transform.height) {\n      params.push(`height=${transform.height}`);\n    }\n    if (transform.resize) {\n      params.push(`resize=${transform.resize}`);\n    }\n    if (transform.format) {\n      params.push(`format=${transform.format}`);\n    }\n    if (transform.quality) {\n      params.push(`quality=${transform.quality}`);\n    }\n    return params.join(\"&\");\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/version.js\nvar version2 = \"2.86.0\";\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/constants.js\nvar DEFAULT_HEADERS = {\n  \"X-Client-Info\": `storage-js/${version2}`\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/packages/StorageBucketApi.js\nvar StorageBucketApi = class {\n  constructor(url, headers = {}, fetch2, opts) {\n    this.shouldThrowOnError = false;\n    const baseUrl = new URL(url);\n    if (opts === null || opts === void 0 ? void 0 : opts.useNewHostname) {\n      const isSupabaseHost = /supabase\\.(co|in|red)$/.test(baseUrl.hostname);\n      if (isSupabaseHost && !baseUrl.hostname.includes(\"storage.supabase.\")) {\n        baseUrl.hostname = baseUrl.hostname.replace(\"supabase.\", \"storage.supabase.\");\n      }\n    }\n    this.url = baseUrl.href.replace(/\\/$/, \"\");\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch2(fetch2);\n  }\n  /**\n   * Enable throwing errors instead of returning them.\n   *\n   * @category File Buckets\n   */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /**\n   * Retrieves the details of all Storage buckets within an existing project.\n   *\n   * @category File Buckets\n   * @param options Query parameters for listing buckets\n   * @param options.limit Maximum number of buckets to return\n   * @param options.offset Number of buckets to skip\n   * @param options.sortColumn Column to sort by ('id', 'name', 'created_at', 'updated_at')\n   * @param options.sortOrder Sort order ('asc' or 'desc')\n   * @param options.search Search term to filter bucket names\n   * @returns Promise with response containing array of buckets or error\n   *\n   * @example List buckets\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .listBuckets()\n   * ```\n   *\n   * @example List buckets with options\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .listBuckets({\n   *     limit: 10,\n   *     offset: 0,\n   *     sortColumn: 'created_at',\n   *     sortOrder: 'desc',\n   *     search: 'prod'\n   *   })\n   * ```\n   */\n  listBuckets(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const queryString = this.listBucketOptionsToQueryString(options);\n        const data = yield get(this.fetch, `${this.url}/bucket${queryString}`, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Retrieves the details of an existing Storage bucket.\n   *\n   * @category File Buckets\n   * @param id The unique identifier of the bucket you would like to retrieve.\n   * @returns Promise with response containing bucket details or error\n   *\n   * @example Get bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .getBucket('avatars')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"id\": \"avatars\",\n   *     \"name\": \"avatars\",\n   *     \"owner\": \"\",\n   *     \"public\": false,\n   *     \"file_size_limit\": 1024,\n   *     \"allowed_mime_types\": [\n   *       \"image/png\"\n   *     ],\n   *     \"created_at\": \"2024-05-22T22:26:05.100Z\",\n   *     \"updated_at\": \"2024-05-22T22:26:05.100Z\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  getBucket(id) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield get(this.fetch, `${this.url}/bucket/${id}`, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Creates a new Storage bucket\n   *\n   * @category File Buckets\n   * @param id A unique identifier for the bucket you are creating.\n   * @param options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations. By default, buckets are private.\n   * @param options.fileSizeLimit specifies the max file size in bytes that can be uploaded to this bucket.\n   * The global file size limit takes precedence over this value.\n   * The default value is null, which doesn't set a per bucket file size limit.\n   * @param options.allowedMimeTypes specifies the allowed mime types that this bucket can accept during upload.\n   * The default value is null, which allows files with all mime types to be uploaded.\n   * Each mime type specified can be a wildcard, e.g. image/*, or a specific mime type, e.g. image/png.\n   * @param options.type (private-beta) specifies the bucket type. see `BucketType` for more details.\n   *   - default bucket type is `STANDARD`\n   * @returns Promise with response containing newly created bucket name or error\n   *\n   * @example Create bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .createBucket('avatars', {\n   *     public: false,\n   *     allowedMimeTypes: ['image/png'],\n   *     fileSizeLimit: 1024\n   *   })\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"name\": \"avatars\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  createBucket(id_1) {\n    return __awaiter(this, arguments, void 0, function* (id, options = {\n      public: false\n    }) {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket`, {\n          id,\n          name: id,\n          type: options.type,\n          public: options.public,\n          file_size_limit: options.fileSizeLimit,\n          allowed_mime_types: options.allowedMimeTypes\n        }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Updates a Storage bucket\n   *\n   * @category File Buckets\n   * @param id A unique identifier for the bucket you are updating.\n   * @param options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations.\n   * @param options.fileSizeLimit specifies the max file size in bytes that can be uploaded to this bucket.\n   * The global file size limit takes precedence over this value.\n   * The default value is null, which doesn't set a per bucket file size limit.\n   * @param options.allowedMimeTypes specifies the allowed mime types that this bucket can accept during upload.\n   * The default value is null, which allows files with all mime types to be uploaded.\n   * Each mime type specified can be a wildcard, e.g. image/*, or a specific mime type, e.g. image/png.\n   * @returns Promise with response containing success message or error\n   *\n   * @example Update bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .updateBucket('avatars', {\n   *     public: false,\n   *     allowedMimeTypes: ['image/png'],\n   *     fileSizeLimit: 1024\n   *   })\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"message\": \"Successfully updated\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  updateBucket(id, options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield put(this.fetch, `${this.url}/bucket/${id}`, {\n          id,\n          name: id,\n          public: options.public,\n          file_size_limit: options.fileSizeLimit,\n          allowed_mime_types: options.allowedMimeTypes\n        }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Removes all objects inside a single bucket.\n   *\n   * @category File Buckets\n   * @param id The unique identifier of the bucket you would like to empty.\n   * @returns Promise with success message or error\n   *\n   * @example Empty bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .emptyBucket('avatars')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"message\": \"Successfully emptied\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  emptyBucket(id) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket/${id}/empty`, {}, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Deletes an existing bucket. A bucket can't be deleted with existing objects inside it.\n   * You must first `empty()` the bucket.\n   *\n   * @category File Buckets\n   * @param id The unique identifier of the bucket you would like to delete.\n   * @returns Promise with success message or error\n   *\n   * @example Delete bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .deleteBucket('avatars')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"message\": \"Successfully deleted\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  deleteBucket(id) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/bucket/${id}`, {}, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  listBucketOptionsToQueryString(options) {\n    const params = {};\n    if (options) {\n      if (\"limit\" in options) {\n        params.limit = String(options.limit);\n      }\n      if (\"offset\" in options) {\n        params.offset = String(options.offset);\n      }\n      if (options.search) {\n        params.search = options.search;\n      }\n      if (options.sortColumn) {\n        params.sortColumn = options.sortColumn;\n      }\n      if (options.sortOrder) {\n        params.sortOrder = options.sortOrder;\n      }\n    }\n    return Object.keys(params).length > 0 ? \"?\" + new URLSearchParams(params).toString() : \"\";\n  }\n};\n\n// ../../node_modules/.pnpm/iceberg-js@0.8.0/node_modules/iceberg-js/dist/index.mjs\nvar IcebergError = class extends Error {\n  constructor(message, opts) {\n    var _a2;\n    super(message);\n    this.name = \"IcebergError\";\n    this.status = opts.status;\n    this.icebergType = opts.icebergType;\n    this.icebergCode = opts.icebergCode;\n    this.details = opts.details;\n    this.isCommitStateUnknown = opts.icebergType === \"CommitStateUnknownException\" || [500, 502, 504].includes(opts.status) && ((_a2 = opts.icebergType) == null ? void 0 : _a2.includes(\"CommitState\")) === true;\n  }\n  /**\n   * Returns true if the error is a 404 Not Found error.\n   */\n  isNotFound() {\n    return this.status === 404;\n  }\n  /**\n   * Returns true if the error is a 409 Conflict error.\n   */\n  isConflict() {\n    return this.status === 409;\n  }\n  /**\n   * Returns true if the error is a 419 Authentication Timeout error.\n   */\n  isAuthenticationTimeout() {\n    return this.status === 419;\n  }\n};\nfunction buildUrl(baseUrl, path, query) {\n  const url = new URL(path, baseUrl);\n  if (query) {\n    for (const [key, value] of Object.entries(query)) {\n      if (value !== void 0) {\n        url.searchParams.set(key, value);\n      }\n    }\n  }\n  return url.toString();\n}\nfunction buildAuthHeaders(auth) {\n  return __async(this, null, function* () {\n    if (!auth || auth.type === \"none\") {\n      return {};\n    }\n    if (auth.type === \"bearer\") {\n      return { Authorization: `Bearer ${auth.token}` };\n    }\n    if (auth.type === \"header\") {\n      return { [auth.name]: auth.value };\n    }\n    if (auth.type === \"custom\") {\n      return yield auth.getHeaders();\n    }\n    return {};\n  });\n}\nfunction createFetchClient(options) {\n  var _a2;\n  const fetchFn = (_a2 = options.fetchImpl) != null ? _a2 : globalThis.fetch;\n  return {\n    request(_0) {\n      return __async(this, arguments, function* ({\n        method,\n        path,\n        query,\n        body,\n        headers\n      }) {\n        var _a3;\n        const url = buildUrl(options.baseUrl, path, query);\n        const authHeaders = yield buildAuthHeaders(options.auth);\n        const res = yield fetchFn(url, {\n          method,\n          headers: __spreadValues(__spreadValues(__spreadValues({}, body ? { \"Content-Type\": \"application/json\" } : {}), authHeaders), headers),\n          body: body ? JSON.stringify(body) : void 0\n        });\n        const text = yield res.text();\n        const isJson = (res.headers.get(\"content-type\") || \"\").includes(\"application/json\");\n        const data = isJson && text ? JSON.parse(text) : text;\n        if (!res.ok) {\n          const errBody = isJson ? data : void 0;\n          const errorDetail = errBody == null ? void 0 : errBody.error;\n          throw new IcebergError(\n            (_a3 = errorDetail == null ? void 0 : errorDetail.message) != null ? _a3 : `Request failed with status ${res.status}`,\n            {\n              status: res.status,\n              icebergType: errorDetail == null ? void 0 : errorDetail.type,\n              icebergCode: errorDetail == null ? void 0 : errorDetail.code,\n              details: errBody\n            }\n          );\n        }\n        return { status: res.status, headers: res.headers, data };\n      });\n    }\n  };\n}\nfunction namespaceToPath(namespace) {\n  return namespace.join(\"\u001f\");\n}\nvar NamespaceOperations = class {\n  constructor(client, prefix = \"\") {\n    this.client = client;\n    this.prefix = prefix;\n  }\n  listNamespaces(parent) {\n    return __async(this, null, function* () {\n      const query = parent ? { parent: namespaceToPath(parent.namespace) } : void 0;\n      const response = yield this.client.request({\n        method: \"GET\",\n        path: `${this.prefix}/namespaces`,\n        query\n      });\n      return response.data.namespaces.map((ns) => ({ namespace: ns }));\n    });\n  }\n  createNamespace(id, metadata) {\n    return __async(this, null, function* () {\n      const request = {\n        namespace: id.namespace,\n        properties: metadata == null ? void 0 : metadata.properties\n      };\n      const response = yield this.client.request({\n        method: \"POST\",\n        path: `${this.prefix}/namespaces`,\n        body: request\n      });\n      return response.data;\n    });\n  }\n  dropNamespace(id) {\n    return __async(this, null, function* () {\n      yield this.client.request({\n        method: \"DELETE\",\n        path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`\n      });\n    });\n  }\n  loadNamespaceMetadata(id) {\n    return __async(this, null, function* () {\n      const response = yield this.client.request({\n        method: \"GET\",\n        path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`\n      });\n      return {\n        properties: response.data.properties\n      };\n    });\n  }\n  namespaceExists(id) {\n    return __async(this, null, function* () {\n      try {\n        yield this.client.request({\n          method: \"HEAD\",\n          path: `${this.prefix}/namespaces/${namespaceToPath(id.namespace)}`\n        });\n        return true;\n      } catch (error) {\n        if (error instanceof IcebergError && error.status === 404) {\n          return false;\n        }\n        throw error;\n      }\n    });\n  }\n  createNamespaceIfNotExists(id, metadata) {\n    return __async(this, null, function* () {\n      try {\n        return yield this.createNamespace(id, metadata);\n      } catch (error) {\n        if (error instanceof IcebergError && error.status === 409) {\n          return;\n        }\n        throw error;\n      }\n    });\n  }\n};\nfunction namespaceToPath2(namespace) {\n  return namespace.join(\"\u001f\");\n}\nvar TableOperations = class {\n  constructor(client, prefix = \"\", accessDelegation) {\n    this.client = client;\n    this.prefix = prefix;\n    this.accessDelegation = accessDelegation;\n  }\n  listTables(namespace) {\n    return __async(this, null, function* () {\n      const response = yield this.client.request({\n        method: \"GET\",\n        path: `${this.prefix}/namespaces/${namespaceToPath2(namespace.namespace)}/tables`\n      });\n      return response.data.identifiers;\n    });\n  }\n  createTable(namespace, request) {\n    return __async(this, null, function* () {\n      const headers = {};\n      if (this.accessDelegation) {\n        headers[\"X-Iceberg-Access-Delegation\"] = this.accessDelegation;\n      }\n      const response = yield this.client.request({\n        method: \"POST\",\n        path: `${this.prefix}/namespaces/${namespaceToPath2(namespace.namespace)}/tables`,\n        body: request,\n        headers\n      });\n      return response.data.metadata;\n    });\n  }\n  updateTable(id, request) {\n    return __async(this, null, function* () {\n      const response = yield this.client.request({\n        method: \"POST\",\n        path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n        body: request\n      });\n      return {\n        \"metadata-location\": response.data[\"metadata-location\"],\n        metadata: response.data.metadata\n      };\n    });\n  }\n  dropTable(id, options) {\n    return __async(this, null, function* () {\n      var _a2;\n      yield this.client.request({\n        method: \"DELETE\",\n        path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n        query: { purgeRequested: String((_a2 = options == null ? void 0 : options.purge) != null ? _a2 : false) }\n      });\n    });\n  }\n  loadTable(id) {\n    return __async(this, null, function* () {\n      const headers = {};\n      if (this.accessDelegation) {\n        headers[\"X-Iceberg-Access-Delegation\"] = this.accessDelegation;\n      }\n      const response = yield this.client.request({\n        method: \"GET\",\n        path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n        headers\n      });\n      return response.data.metadata;\n    });\n  }\n  tableExists(id) {\n    return __async(this, null, function* () {\n      const headers = {};\n      if (this.accessDelegation) {\n        headers[\"X-Iceberg-Access-Delegation\"] = this.accessDelegation;\n      }\n      try {\n        yield this.client.request({\n          method: \"HEAD\",\n          path: `${this.prefix}/namespaces/${namespaceToPath2(id.namespace)}/tables/${id.name}`,\n          headers\n        });\n        return true;\n      } catch (error) {\n        if (error instanceof IcebergError && error.status === 404) {\n          return false;\n        }\n        throw error;\n      }\n    });\n  }\n  createTableIfNotExists(namespace, request) {\n    return __async(this, null, function* () {\n      try {\n        return yield this.createTable(namespace, request);\n      } catch (error) {\n        if (error instanceof IcebergError && error.status === 409) {\n          return yield this.loadTable({ namespace: namespace.namespace, name: request.name });\n        }\n        throw error;\n      }\n    });\n  }\n};\nvar IcebergRestCatalog = class {\n  /**\n   * Creates a new Iceberg REST Catalog client.\n   *\n   * @param options - Configuration options for the catalog client\n   */\n  constructor(options) {\n    var _a2;\n    let prefix = \"v1\";\n    if (options.catalogName) {\n      prefix += `/${options.catalogName}`;\n    }\n    const baseUrl = options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`;\n    this.client = createFetchClient({\n      baseUrl,\n      auth: options.auth,\n      fetchImpl: options.fetch\n    });\n    this.accessDelegation = (_a2 = options.accessDelegation) == null ? void 0 : _a2.join(\",\");\n    this.namespaceOps = new NamespaceOperations(this.client, prefix);\n    this.tableOps = new TableOperations(this.client, prefix, this.accessDelegation);\n  }\n  /**\n   * Lists all namespaces in the catalog.\n   *\n   * @param parent - Optional parent namespace to list children under\n   * @returns Array of namespace identifiers\n   *\n   * @example\n   * ```typescript\n   * // List all top-level namespaces\n   * const namespaces = await catalog.listNamespaces();\n   *\n   * // List namespaces under a parent\n   * const children = await catalog.listNamespaces({ namespace: ['analytics'] });\n   * ```\n   */\n  listNamespaces(parent) {\n    return __async(this, null, function* () {\n      return this.namespaceOps.listNamespaces(parent);\n    });\n  }\n  /**\n   * Creates a new namespace in the catalog.\n   *\n   * @param id - Namespace identifier to create\n   * @param metadata - Optional metadata properties for the namespace\n   * @returns Response containing the created namespace and its properties\n   *\n   * @example\n   * ```typescript\n   * const response = await catalog.createNamespace(\n   *   { namespace: ['analytics'] },\n   *   { properties: { owner: 'data-team' } }\n   * );\n   * console.log(response.namespace); // ['analytics']\n   * console.log(response.properties); // { owner: 'data-team', ... }\n   * ```\n   */\n  createNamespace(id, metadata) {\n    return __async(this, null, function* () {\n      return this.namespaceOps.createNamespace(id, metadata);\n    });\n  }\n  /**\n   * Drops a namespace from the catalog.\n   *\n   * The namespace must be empty (contain no tables) before it can be dropped.\n   *\n   * @param id - Namespace identifier to drop\n   *\n   * @example\n   * ```typescript\n   * await catalog.dropNamespace({ namespace: ['analytics'] });\n   * ```\n   */\n  dropNamespace(id) {\n    return __async(this, null, function* () {\n      yield this.namespaceOps.dropNamespace(id);\n    });\n  }\n  /**\n   * Loads metadata for a namespace.\n   *\n   * @param id - Namespace identifier to load\n   * @returns Namespace metadata including properties\n   *\n   * @example\n   * ```typescript\n   * const metadata = await catalog.loadNamespaceMetadata({ namespace: ['analytics'] });\n   * console.log(metadata.properties);\n   * ```\n   */\n  loadNamespaceMetadata(id) {\n    return __async(this, null, function* () {\n      return this.namespaceOps.loadNamespaceMetadata(id);\n    });\n  }\n  /**\n   * Lists all tables in a namespace.\n   *\n   * @param namespace - Namespace identifier to list tables from\n   * @returns Array of table identifiers\n   *\n   * @example\n   * ```typescript\n   * const tables = await catalog.listTables({ namespace: ['analytics'] });\n   * console.log(tables); // [{ namespace: ['analytics'], name: 'events' }, ...]\n   * ```\n   */\n  listTables(namespace) {\n    return __async(this, null, function* () {\n      return this.tableOps.listTables(namespace);\n    });\n  }\n  /**\n   * Creates a new table in the catalog.\n   *\n   * @param namespace - Namespace to create the table in\n   * @param request - Table creation request including name, schema, partition spec, etc.\n   * @returns Table metadata for the created table\n   *\n   * @example\n   * ```typescript\n   * const metadata = await catalog.createTable(\n   *   { namespace: ['analytics'] },\n   *   {\n   *     name: 'events',\n   *     schema: {\n   *       type: 'struct',\n   *       fields: [\n   *         { id: 1, name: 'id', type: 'long', required: true },\n   *         { id: 2, name: 'timestamp', type: 'timestamp', required: true }\n   *       ],\n   *       'schema-id': 0\n   *     },\n   *     'partition-spec': {\n   *       'spec-id': 0,\n   *       fields: [\n   *         { source_id: 2, field_id: 1000, name: 'ts_day', transform: 'day' }\n   *       ]\n   *     }\n   *   }\n   * );\n   * ```\n   */\n  createTable(namespace, request) {\n    return __async(this, null, function* () {\n      return this.tableOps.createTable(namespace, request);\n    });\n  }\n  /**\n   * Updates an existing table's metadata.\n   *\n   * Can update the schema, partition spec, or properties of a table.\n   *\n   * @param id - Table identifier to update\n   * @param request - Update request with fields to modify\n   * @returns Response containing the metadata location and updated table metadata\n   *\n   * @example\n   * ```typescript\n   * const response = await catalog.updateTable(\n   *   { namespace: ['analytics'], name: 'events' },\n   *   {\n   *     properties: { 'read.split.target-size': '134217728' }\n   *   }\n   * );\n   * console.log(response['metadata-location']); // s3://...\n   * console.log(response.metadata); // TableMetadata object\n   * ```\n   */\n  updateTable(id, request) {\n    return __async(this, null, function* () {\n      return this.tableOps.updateTable(id, request);\n    });\n  }\n  /**\n   * Drops a table from the catalog.\n   *\n   * @param id - Table identifier to drop\n   *\n   * @example\n   * ```typescript\n   * await catalog.dropTable({ namespace: ['analytics'], name: 'events' });\n   * ```\n   */\n  dropTable(id, options) {\n    return __async(this, null, function* () {\n      yield this.tableOps.dropTable(id, options);\n    });\n  }\n  /**\n   * Loads metadata for a table.\n   *\n   * @param id - Table identifier to load\n   * @returns Table metadata including schema, partition spec, location, etc.\n   *\n   * @example\n   * ```typescript\n   * const metadata = await catalog.loadTable({ namespace: ['analytics'], name: 'events' });\n   * console.log(metadata.schema);\n   * console.log(metadata.location);\n   * ```\n   */\n  loadTable(id) {\n    return __async(this, null, function* () {\n      return this.tableOps.loadTable(id);\n    });\n  }\n  /**\n   * Checks if a namespace exists in the catalog.\n   *\n   * @param id - Namespace identifier to check\n   * @returns True if the namespace exists, false otherwise\n   *\n   * @example\n   * ```typescript\n   * const exists = await catalog.namespaceExists({ namespace: ['analytics'] });\n   * console.log(exists); // true or false\n   * ```\n   */\n  namespaceExists(id) {\n    return __async(this, null, function* () {\n      return this.namespaceOps.namespaceExists(id);\n    });\n  }\n  /**\n   * Checks if a table exists in the catalog.\n   *\n   * @param id - Table identifier to check\n   * @returns True if the table exists, false otherwise\n   *\n   * @example\n   * ```typescript\n   * const exists = await catalog.tableExists({ namespace: ['analytics'], name: 'events' });\n   * console.log(exists); // true or false\n   * ```\n   */\n  tableExists(id) {\n    return __async(this, null, function* () {\n      return this.tableOps.tableExists(id);\n    });\n  }\n  /**\n   * Creates a namespace if it does not exist.\n   *\n   * If the namespace already exists, returns void. If created, returns the response.\n   *\n   * @param id - Namespace identifier to create\n   * @param metadata - Optional metadata properties for the namespace\n   * @returns Response containing the created namespace and its properties, or void if it already exists\n   *\n   * @example\n   * ```typescript\n   * const response = await catalog.createNamespaceIfNotExists(\n   *   { namespace: ['analytics'] },\n   *   { properties: { owner: 'data-team' } }\n   * );\n   * if (response) {\n   *   console.log('Created:', response.namespace);\n   * } else {\n   *   console.log('Already exists');\n   * }\n   * ```\n   */\n  createNamespaceIfNotExists(id, metadata) {\n    return __async(this, null, function* () {\n      return this.namespaceOps.createNamespaceIfNotExists(id, metadata);\n    });\n  }\n  /**\n   * Creates a table if it does not exist.\n   *\n   * If the table already exists, returns its metadata instead.\n   *\n   * @param namespace - Namespace to create the table in\n   * @param request - Table creation request including name, schema, partition spec, etc.\n   * @returns Table metadata for the created or existing table\n   *\n   * @example\n   * ```typescript\n   * const metadata = await catalog.createTableIfNotExists(\n   *   { namespace: ['analytics'] },\n   *   {\n   *     name: 'events',\n   *     schema: {\n   *       type: 'struct',\n   *       fields: [\n   *         { id: 1, name: 'id', type: 'long', required: true },\n   *         { id: 2, name: 'timestamp', type: 'timestamp', required: true }\n   *       ],\n   *       'schema-id': 0\n   *     }\n   *   }\n   * );\n   * ```\n   */\n  createTableIfNotExists(namespace, request) {\n    return __async(this, null, function* () {\n      return this.tableOps.createTableIfNotExists(namespace, request);\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/packages/StorageAnalyticsClient.js\nvar StorageAnalyticsClient = class {\n  /**\n   * @alpha\n   *\n   * Creates a new StorageAnalyticsClient instance\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @param url - The base URL for the storage API\n   * @param headers - HTTP headers to include in requests\n   * @param fetch - Optional custom fetch implementation\n   *\n   * @example\n   * ```typescript\n   * const client = new StorageAnalyticsClient(url, headers)\n   * ```\n   */\n  constructor(url, headers = {}, fetch2) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS), headers);\n    this.fetch = resolveFetch2(fetch2);\n  }\n  /**\n   * @alpha\n   *\n   * Enable throwing errors instead of returning them in the response\n   * When enabled, failed operations will throw instead of returning { data: null, error }\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @returns This instance for method chaining\n   */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /**\n   * @alpha\n   *\n   * Creates a new analytics bucket using Iceberg tables\n   * Analytics buckets are optimized for analytical queries and data processing\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @param name A unique name for the bucket you are creating\n   * @returns Promise with response containing newly created analytics bucket or error\n   *\n   * @example Create analytics bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .analytics\n   *   .createBucket('analytics-data')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"name\": \"analytics-data\",\n   *     \"type\": \"ANALYTICS\",\n   *     \"format\": \"iceberg\",\n   *     \"created_at\": \"2024-05-22T22:26:05.100Z\",\n   *     \"updated_at\": \"2024-05-22T22:26:05.100Z\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  createBucket(name) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post(this.fetch, `${this.url}/bucket`, { name }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * @alpha\n   *\n   * Retrieves the details of all Analytics Storage buckets within an existing project\n   * Only returns buckets of type 'ANALYTICS'\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @param options Query parameters for listing buckets\n   * @param options.limit Maximum number of buckets to return\n   * @param options.offset Number of buckets to skip\n   * @param options.sortColumn Column to sort by ('name', 'created_at', 'updated_at')\n   * @param options.sortOrder Sort order ('asc' or 'desc')\n   * @param options.search Search term to filter bucket names\n   * @returns Promise with response containing array of analytics buckets or error\n   *\n   * @example List analytics buckets\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .analytics\n   *   .listBuckets({\n   *     limit: 10,\n   *     offset: 0,\n   *     sortColumn: 'created_at',\n   *     sortOrder: 'desc'\n   *   })\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": [\n   *     {\n   *       \"name\": \"analytics-data\",\n   *       \"type\": \"ANALYTICS\",\n   *       \"format\": \"iceberg\",\n   *       \"created_at\": \"2024-05-22T22:26:05.100Z\",\n   *       \"updated_at\": \"2024-05-22T22:26:05.100Z\"\n   *     }\n   *   ],\n   *   \"error\": null\n   * }\n   * ```\n   */\n  listBuckets(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const queryParams = new URLSearchParams();\n        if ((options === null || options === void 0 ? void 0 : options.limit) !== void 0)\n          queryParams.set(\"limit\", options.limit.toString());\n        if ((options === null || options === void 0 ? void 0 : options.offset) !== void 0)\n          queryParams.set(\"offset\", options.offset.toString());\n        if (options === null || options === void 0 ? void 0 : options.sortColumn)\n          queryParams.set(\"sortColumn\", options.sortColumn);\n        if (options === null || options === void 0 ? void 0 : options.sortOrder)\n          queryParams.set(\"sortOrder\", options.sortOrder);\n        if (options === null || options === void 0 ? void 0 : options.search)\n          queryParams.set(\"search\", options.search);\n        const queryString = queryParams.toString();\n        const url = queryString ? `${this.url}/bucket?${queryString}` : `${this.url}/bucket`;\n        const data = yield get(this.fetch, url, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * @alpha\n   *\n   * Deletes an existing analytics bucket\n   * A bucket can't be deleted with existing objects inside it\n   * You must first empty the bucket before deletion\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @param bucketName The unique identifier of the bucket you would like to delete\n   * @returns Promise with response containing success message or error\n   *\n   * @example Delete analytics bucket\n   * ```js\n   * const { data, error } = await supabase\n   *   .storage\n   *   .analytics\n   *   .deleteBucket('analytics-data')\n   * ```\n   *\n   * Response:\n   * ```json\n   * {\n   *   \"data\": {\n   *     \"message\": \"Successfully deleted\"\n   *   },\n   *   \"error\": null\n   * }\n   * ```\n   */\n  deleteBucket(bucketName) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield remove(this.fetch, `${this.url}/bucket/${bucketName}`, {}, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * @alpha\n   *\n   * Get an Iceberg REST Catalog client configured for a specific analytics bucket\n   * Use this to perform advanced table and namespace operations within the bucket\n   * The returned client provides full access to the Apache Iceberg REST Catalog API\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @param bucketName - The name of the analytics bucket (warehouse) to connect to\n   * @returns Configured IcebergRestCatalog instance for advanced Iceberg operations\n   *\n   * @example Get catalog and create table\n   * ```js\n   * // First, create an analytics bucket\n   * const { data: bucket, error: bucketError } = await supabase\n   *   .storage\n   *   .analytics\n   *   .createBucket('analytics-data')\n   *\n   * // Get the Iceberg catalog for that bucket\n   * const catalog = supabase.storage.analytics.from('analytics-data')\n   *\n   * // Create a namespace\n   * await catalog.createNamespace({ namespace: ['default'] })\n   *\n   * // Create a table with schema\n   * await catalog.createTable(\n   *   { namespace: ['default'] },\n   *   {\n   *     name: 'events',\n   *     schema: {\n   *       type: 'struct',\n   *       fields: [\n   *         { id: 1, name: 'id', type: 'long', required: true },\n   *         { id: 2, name: 'timestamp', type: 'timestamp', required: true },\n   *         { id: 3, name: 'user_id', type: 'string', required: false }\n   *       ],\n   *       'schema-id': 0,\n   *       'identifier-field-ids': [1]\n   *     },\n   *     'partition-spec': {\n   *       'spec-id': 0,\n   *       fields: []\n   *     },\n   *     'write-order': {\n   *       'order-id': 0,\n   *       fields: []\n   *     },\n   *     properties: {\n   *       'write.format.default': 'parquet'\n   *     }\n   *   }\n   * )\n   * ```\n   *\n   * @example List tables in namespace\n   * ```js\n   * const catalog = supabase.storage.analytics.from('analytics-data')\n   *\n   * // List all tables in the default namespace\n   * const tables = await catalog.listTables({ namespace: ['default'] })\n   * console.log(tables) // [{ namespace: ['default'], name: 'events' }]\n   * ```\n   *\n   * @example Working with namespaces\n   * ```js\n   * const catalog = supabase.storage.analytics.from('analytics-data')\n   *\n   * // List all namespaces\n   * const namespaces = await catalog.listNamespaces()\n   *\n   * // Create namespace with properties\n   * await catalog.createNamespace(\n   *   { namespace: ['production'] },\n   *   { properties: { owner: 'data-team', env: 'prod' } }\n   * )\n   * ```\n   *\n   * @example Cleanup operations\n   * ```js\n   * const catalog = supabase.storage.analytics.from('analytics-data')\n   *\n   * // Drop table with purge option (removes all data)\n   * await catalog.dropTable(\n   *   { namespace: ['default'], name: 'events' },\n   *   { purge: true }\n   * )\n   *\n   * // Drop namespace (must be empty)\n   * await catalog.dropNamespace({ namespace: ['default'] })\n   * ```\n   *\n   * @example Error handling with catalog operations\n   * ```js\n   * import { IcebergError } from 'iceberg-js'\n   *\n   * const catalog = supabase.storage.analytics.from('analytics-data')\n   *\n   * try {\n   *   await catalog.dropTable({ namespace: ['default'], name: 'events' }, { purge: true })\n   * } catch (error) {\n   *   // Handle 404 errors (resource not found)\n   *   const is404 =\n   *     (error instanceof IcebergError && error.status === 404) ||\n   *     error?.status === 404 ||\n   *     error?.details?.error?.code === 404\n   *\n   *   if (is404) {\n   *     console.log('Table does not exist')\n   *   } else {\n   *     throw error // Re-throw other errors\n   *   }\n   * }\n   * ```\n   *\n   * @remarks\n   * This method provides a bridge between Supabase's bucket management and the standard\n   * Apache Iceberg REST Catalog API. The bucket name maps to the Iceberg warehouse parameter.\n   * All authentication and configuration is handled automatically using your Supabase credentials.\n   *\n   * **Error Handling**: Operations may throw `IcebergError` from the iceberg-js library.\n   * Always handle 404 errors gracefully when checking for resource existence.\n   *\n   * **Cleanup Operations**: When using `dropTable`, the `purge: true` option permanently\n   * deletes all table data. Without it, the table is marked as deleted but data remains.\n   *\n   * **Library Dependency**: The returned catalog is an instance of `IcebergRestCatalog`\n   * from iceberg-js. For complete API documentation and advanced usage, refer to the\n   * [iceberg-js documentation](https://supabase.github.io/iceberg-js/).\n   *\n   * For advanced Iceberg operations beyond bucket management, you can also install and use\n   * the `iceberg-js` package directly with manual configuration.\n   */\n  from(bucketName) {\n    if (!isValidBucketName(bucketName)) {\n      throw new StorageError(\"Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.\");\n    }\n    return new IcebergRestCatalog({\n      baseUrl: this.url,\n      catalogName: bucketName,\n      // Maps to the warehouse parameter in Supabase's implementation\n      auth: {\n        type: \"custom\",\n        getHeaders: () => __awaiter(this, void 0, void 0, function* () {\n          return this.headers;\n        })\n      },\n      fetch: this.fetch\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/constants.js\nvar DEFAULT_HEADERS2 = {\n  \"X-Client-Info\": `storage-js/${version2}`,\n  \"Content-Type\": \"application/json\"\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/errors.js\nvar StorageVectorsError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.__isStorageVectorsError = true;\n    this.name = \"StorageVectorsError\";\n  }\n};\nfunction isStorageVectorsError(error) {\n  return typeof error === \"object\" && error !== null && \"__isStorageVectorsError\" in error;\n}\nvar StorageVectorsApiError = class extends StorageVectorsError {\n  constructor(message, status, statusCode) {\n    super(message);\n    this.name = \"StorageVectorsApiError\";\n    this.status = status;\n    this.statusCode = statusCode;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      statusCode: this.statusCode\n    };\n  }\n};\nvar StorageVectorsUnknownError = class extends StorageVectorsError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"StorageVectorsUnknownError\";\n    this.originalError = originalError;\n  }\n};\nvar StorageVectorsErrorCode;\n(function(StorageVectorsErrorCode2) {\n  StorageVectorsErrorCode2[\"InternalError\"] = \"InternalError\";\n  StorageVectorsErrorCode2[\"S3VectorConflictException\"] = \"S3VectorConflictException\";\n  StorageVectorsErrorCode2[\"S3VectorNotFoundException\"] = \"S3VectorNotFoundException\";\n  StorageVectorsErrorCode2[\"S3VectorBucketNotEmpty\"] = \"S3VectorBucketNotEmpty\";\n  StorageVectorsErrorCode2[\"S3VectorMaxBucketsExceeded\"] = \"S3VectorMaxBucketsExceeded\";\n  StorageVectorsErrorCode2[\"S3VectorMaxIndexesExceeded\"] = \"S3VectorMaxIndexesExceeded\";\n})(StorageVectorsErrorCode || (StorageVectorsErrorCode = {}));\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/helpers.js\nvar resolveFetch3 = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\nvar isPlainObject2 = (value) => {\n  if (typeof value !== \"object\" || value === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(value);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/fetch.js\nvar _getErrorMessage2 = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nvar handleError2 = (error, reject, options) => __awaiter(void 0, void 0, void 0, function* () {\n  const isResponseLike = error && typeof error === \"object\" && \"status\" in error && \"ok\" in error && typeof error.status === \"number\";\n  if (isResponseLike && !(options === null || options === void 0 ? void 0 : options.noResolveJson)) {\n    const status = error.status || 500;\n    const responseError = error;\n    if (typeof responseError.json === \"function\") {\n      responseError.json().then((err) => {\n        const statusCode = (err === null || err === void 0 ? void 0 : err.statusCode) || (err === null || err === void 0 ? void 0 : err.code) || status + \"\";\n        reject(new StorageVectorsApiError(_getErrorMessage2(err), status, statusCode));\n      }).catch(() => {\n        const statusCode = status + \"\";\n        const message = responseError.statusText || `HTTP ${status} error`;\n        reject(new StorageVectorsApiError(message, status, statusCode));\n      });\n    } else {\n      const statusCode = status + \"\";\n      const message = responseError.statusText || `HTTP ${status} error`;\n      reject(new StorageVectorsApiError(message, status, statusCode));\n    }\n  } else {\n    reject(new StorageVectorsUnknownError(_getErrorMessage2(error), error));\n  }\n});\nvar _getRequestParams2 = (method, options, parameters, body) => {\n  const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} };\n  if (method === \"GET\" || !body) {\n    return params;\n  }\n  if (isPlainObject2(body)) {\n    params.headers = Object.assign({ \"Content-Type\": \"application/json\" }, options === null || options === void 0 ? void 0 : options.headers);\n    params.body = JSON.stringify(body);\n  } else {\n    params.body = body;\n  }\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _handleRequest2(fetcher, method, url, options, parameters, body) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return new Promise((resolve, reject) => {\n      fetcher(url, _getRequestParams2(method, options, parameters, body)).then((result) => {\n        if (!result.ok)\n          throw result;\n        if (options === null || options === void 0 ? void 0 : options.noResolveJson)\n          return result;\n        const contentType = result.headers.get(\"content-type\");\n        if (!contentType || !contentType.includes(\"application/json\")) {\n          return {};\n        }\n        return result.json();\n      }).then((data) => resolve(data)).catch((error) => handleError2(error, reject, options));\n    });\n  });\n}\nfunction post2(fetcher, url, body, options, parameters) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return _handleRequest2(fetcher, \"POST\", url, options, parameters, body);\n  });\n}\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/VectorIndexApi.js\nvar VectorIndexApi = class {\n  /** Creates a new VectorIndexApi instance */\n  constructor(url, headers = {}, fetch2) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS2), headers);\n    this.fetch = resolveFetch3(fetch2);\n  }\n  /** Enable throwing errors instead of returning them in the response */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /** Creates a new vector index within a bucket */\n  createIndex(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/CreateIndex`, options, {\n          headers: this.headers\n        });\n        return { data: data || {}, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Retrieves metadata for a specific vector index */\n  getIndex(vectorBucketName, indexName) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/GetIndex`, { vectorBucketName, indexName }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Lists vector indexes within a bucket with optional filtering and pagination */\n  listIndexes(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/ListIndexes`, options, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Deletes a vector index and all its data */\n  deleteIndex(vectorBucketName, indexName) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/DeleteIndex`, { vectorBucketName, indexName }, { headers: this.headers });\n        return { data: data || {}, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/VectorDataApi.js\nvar VectorDataApi = class {\n  /** Creates a new VectorDataApi instance */\n  constructor(url, headers = {}, fetch2) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS2), headers);\n    this.fetch = resolveFetch3(fetch2);\n  }\n  /** Enable throwing errors instead of returning them in the response */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /** Inserts or updates vectors in batch (1-500 per request) */\n  putVectors(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        if (options.vectors.length < 1 || options.vectors.length > 500) {\n          throw new Error(\"Vector batch size must be between 1 and 500 items\");\n        }\n        const data = yield post2(this.fetch, `${this.url}/PutVectors`, options, {\n          headers: this.headers\n        });\n        return { data: data || {}, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Retrieves vectors by their keys in batch */\n  getVectors(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/GetVectors`, options, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Lists vectors in an index with pagination */\n  listVectors(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        if (options.segmentCount !== void 0) {\n          if (options.segmentCount < 1 || options.segmentCount > 16) {\n            throw new Error(\"segmentCount must be between 1 and 16\");\n          }\n          if (options.segmentIndex !== void 0) {\n            if (options.segmentIndex < 0 || options.segmentIndex >= options.segmentCount) {\n              throw new Error(`segmentIndex must be between 0 and ${options.segmentCount - 1}`);\n            }\n          }\n        }\n        const data = yield post2(this.fetch, `${this.url}/ListVectors`, options, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Queries for similar vectors using approximate nearest neighbor search */\n  queryVectors(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/QueryVectors`, options, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Deletes vectors by their keys in batch (1-500 per request) */\n  deleteVectors(options) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        if (options.keys.length < 1 || options.keys.length > 500) {\n          throw new Error(\"Keys batch size must be between 1 and 500 items\");\n        }\n        const data = yield post2(this.fetch, `${this.url}/DeleteVectors`, options, {\n          headers: this.headers\n        });\n        return { data: data || {}, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/VectorBucketApi.js\nvar VectorBucketApi = class {\n  /** Creates a new VectorBucketApi instance */\n  constructor(url, headers = {}, fetch2) {\n    this.shouldThrowOnError = false;\n    this.url = url.replace(/\\/$/, \"\");\n    this.headers = Object.assign(Object.assign({}, DEFAULT_HEADERS2), headers);\n    this.fetch = resolveFetch3(fetch2);\n  }\n  /** Enable throwing errors instead of returning them in the response */\n  throwOnError() {\n    this.shouldThrowOnError = true;\n    return this;\n  }\n  /** Creates a new vector bucket */\n  createBucket(vectorBucketName) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/CreateVectorBucket`, { vectorBucketName }, { headers: this.headers });\n        return { data: data || {}, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Retrieves metadata for a specific vector bucket */\n  getBucket(vectorBucketName) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/GetVectorBucket`, { vectorBucketName }, { headers: this.headers });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Lists vector buckets with optional filtering and pagination */\n  listBuckets() {\n    return __awaiter(this, arguments, void 0, function* (options = {}) {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/ListVectorBuckets`, options, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /** Deletes a vector bucket (must be empty first) */\n  deleteBucket(vectorBucketName) {\n    return __awaiter(this, void 0, void 0, function* () {\n      try {\n        const data = yield post2(this.fetch, `${this.url}/DeleteVectorBucket`, { vectorBucketName }, { headers: this.headers });\n        return { data: data || {}, error: null };\n      } catch (error) {\n        if (this.shouldThrowOnError) {\n          throw error;\n        }\n        if (isStorageVectorsError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/lib/vectors/StorageVectorsClient.js\nvar StorageVectorsClient = class extends VectorBucketApi {\n  /**\n   * @alpha\n   *\n   * Creates a StorageVectorsClient that can manage buckets, indexes, and vectors.\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param url - Base URL of the Storage Vectors REST API.\n   * @param options.headers - Optional headers (for example `Authorization`) applied to every request.\n   * @param options.fetch - Optional custom `fetch` implementation for non-browser runtimes.\n   *\n   * @example\n   * ```typescript\n   * const client = new StorageVectorsClient(url, options)\n   * ```\n   */\n  constructor(url, options = {}) {\n    super(url, options.headers || {}, options.fetch);\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Access operations for a specific vector bucket\n   * Returns a scoped client for index and vector operations within the bucket\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param vectorBucketName - Name of the vector bucket\n   * @returns Bucket-scoped client with index and vector operations\n   *\n   * @example\n   * ```typescript\n   * const bucket = supabase.storage.vectors.from('embeddings-prod')\n   * ```\n   */\n  from(vectorBucketName) {\n    return new VectorBucketScope(this.url, this.headers, vectorBucketName, this.fetch);\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Creates a new vector bucket\n   * Vector buckets are containers for vector indexes and their data\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param vectorBucketName - Unique name for the vector bucket\n   * @returns Promise with empty response on success or error\n   *\n   * @example\n   * ```typescript\n   * const { data, error } = await supabase\n   *   .storage\n   *   .vectors\n   *   .createBucket('embeddings-prod')\n   * ```\n   */\n  createBucket(vectorBucketName) {\n    const _super = Object.create(null, {\n      createBucket: { get: () => super.createBucket }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.createBucket.call(this, vectorBucketName);\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Retrieves metadata for a specific vector bucket\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param vectorBucketName - Name of the vector bucket\n   * @returns Promise with bucket metadata or error\n   *\n   * @example\n   * ```typescript\n   * const { data, error } = await supabase\n   *   .storage\n   *   .vectors\n   *   .getBucket('embeddings-prod')\n   *\n   * console.log('Bucket created:', data?.vectorBucket.creationTime)\n   * ```\n   */\n  getBucket(vectorBucketName) {\n    const _super = Object.create(null, {\n      getBucket: { get: () => super.getBucket }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.getBucket.call(this, vectorBucketName);\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Lists all vector buckets with optional filtering and pagination\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Optional filters (prefix, maxResults, nextToken)\n   * @returns Promise with list of buckets or error\n   *\n   * @example\n   * ```typescript\n   * const { data, error } = await supabase\n   *   .storage\n   *   .vectors\n   *   .listBuckets({ prefix: 'embeddings-' })\n   *\n   * data?.vectorBuckets.forEach(bucket => {\n   *   console.log(bucket.vectorBucketName)\n   * })\n   * ```\n   */\n  listBuckets() {\n    const _super = Object.create(null, {\n      listBuckets: { get: () => super.listBuckets }\n    });\n    return __awaiter(this, arguments, void 0, function* (options = {}) {\n      return _super.listBuckets.call(this, options);\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Deletes a vector bucket (bucket must be empty)\n   * All indexes must be deleted before deleting the bucket\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param vectorBucketName - Name of the vector bucket to delete\n   * @returns Promise with empty response on success or error\n   *\n   * @example\n   * ```typescript\n   * const { data, error } = await supabase\n   *   .storage\n   *   .vectors\n   *   .deleteBucket('embeddings-old')\n   * ```\n   */\n  deleteBucket(vectorBucketName) {\n    const _super = Object.create(null, {\n      deleteBucket: { get: () => super.deleteBucket }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.deleteBucket.call(this, vectorBucketName);\n    });\n  }\n};\nvar VectorBucketScope = class extends VectorIndexApi {\n  /**\n   * @alpha\n   *\n   * Creates a helper that automatically scopes all index operations to the provided bucket.\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @example\n   * ```typescript\n   * const bucket = supabase.storage.vectors.from('embeddings-prod')\n   * ```\n   */\n  constructor(url, headers, vectorBucketName, fetch2) {\n    super(url, headers, fetch2);\n    this.vectorBucketName = vectorBucketName;\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Creates a new vector index in this bucket\n   * Convenience method that automatically includes the bucket name\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Index configuration (vectorBucketName is automatically set)\n   * @returns Promise with empty response on success or error\n   *\n   * @example\n   * ```typescript\n   * const bucket = supabase.storage.vectors.from('embeddings-prod')\n   * await bucket.createIndex({\n   *   indexName: 'documents-openai',\n   *   dataType: 'float32',\n   *   dimension: 1536,\n   *   distanceMetric: 'cosine',\n   *   metadataConfiguration: {\n   *     nonFilterableMetadataKeys: ['raw_text']\n   *   }\n   * })\n   * ```\n   */\n  createIndex(options) {\n    const _super = Object.create(null, {\n      createIndex: { get: () => super.createIndex }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.createIndex.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName }));\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Lists indexes in this bucket\n   * Convenience method that automatically includes the bucket name\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Listing options (vectorBucketName is automatically set)\n   * @returns Promise with response containing indexes array and pagination token or error\n   *\n   * @example\n   * ```typescript\n   * const bucket = supabase.storage.vectors.from('embeddings-prod')\n   * const { data } = await bucket.listIndexes({ prefix: 'documents-' })\n   * ```\n   */\n  listIndexes() {\n    const _super = Object.create(null, {\n      listIndexes: { get: () => super.listIndexes }\n    });\n    return __awaiter(this, arguments, void 0, function* (options = {}) {\n      return _super.listIndexes.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName }));\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Retrieves metadata for a specific index in this bucket\n   * Convenience method that automatically includes the bucket name\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param indexName - Name of the index to retrieve\n   * @returns Promise with index metadata or error\n   *\n   * @example\n   * ```typescript\n   * const bucket = supabase.storage.vectors.from('embeddings-prod')\n   * const { data } = await bucket.getIndex('documents-openai')\n   * console.log('Dimension:', data?.index.dimension)\n   * ```\n   */\n  getIndex(indexName) {\n    const _super = Object.create(null, {\n      getIndex: { get: () => super.getIndex }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.getIndex.call(this, this.vectorBucketName, indexName);\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Deletes an index from this bucket\n   * Convenience method that automatically includes the bucket name\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param indexName - Name of the index to delete\n   * @returns Promise with empty response on success or error\n   *\n   * @example\n   * ```typescript\n   * const bucket = supabase.storage.vectors.from('embeddings-prod')\n   * await bucket.deleteIndex('old-index')\n   * ```\n   */\n  deleteIndex(indexName) {\n    const _super = Object.create(null, {\n      deleteIndex: { get: () => super.deleteIndex }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.deleteIndex.call(this, this.vectorBucketName, indexName);\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Access operations for a specific index within this bucket\n   * Returns a scoped client for vector data operations\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param indexName - Name of the index\n   * @returns Index-scoped client with vector data operations\n   *\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   *\n   * // Insert vectors\n   * await index.putVectors({\n   *   vectors: [\n   *     { key: 'doc-1', data: { float32: [...] }, metadata: { title: 'Intro' } }\n   *   ]\n   * })\n   *\n   * // Query similar vectors\n   * const { data } = await index.queryVectors({\n   *   queryVector: { float32: [...] },\n   *   topK: 5\n   * })\n   * ```\n   */\n  index(indexName) {\n    return new VectorIndexScope(this.url, this.headers, this.vectorBucketName, indexName, this.fetch);\n  }\n};\nvar VectorIndexScope = class extends VectorDataApi {\n  /**\n   *\n   * @alpha\n   *\n   * Creates a helper that automatically scopes all vector operations to the provided bucket/index names.\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   * ```\n   */\n  constructor(url, headers, vectorBucketName, indexName, fetch2) {\n    super(url, headers, fetch2);\n    this.vectorBucketName = vectorBucketName;\n    this.indexName = indexName;\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Inserts or updates vectors in this index\n   * Convenience method that automatically includes bucket and index names\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Vector insertion options (bucket and index names automatically set)\n   * @returns Promise with empty response on success or error\n   *\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   * await index.putVectors({\n   *   vectors: [\n   *     {\n   *       key: 'doc-1',\n   *       data: { float32: [0.1, 0.2, ...] },\n   *       metadata: { title: 'Introduction', page: 1 }\n   *     }\n   *   ]\n   * })\n   * ```\n   */\n  putVectors(options) {\n    const _super = Object.create(null, {\n      putVectors: { get: () => super.putVectors }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.putVectors.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName, indexName: this.indexName }));\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Retrieves vectors by keys from this index\n   * Convenience method that automatically includes bucket and index names\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Vector retrieval options (bucket and index names automatically set)\n   * @returns Promise with response containing vectors array or error\n   *\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   * const { data } = await index.getVectors({\n   *   keys: ['doc-1', 'doc-2'],\n   *   returnMetadata: true\n   * })\n   * ```\n   */\n  getVectors(options) {\n    const _super = Object.create(null, {\n      getVectors: { get: () => super.getVectors }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.getVectors.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName, indexName: this.indexName }));\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Lists vectors in this index with pagination\n   * Convenience method that automatically includes bucket and index names\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Listing options (bucket and index names automatically set)\n   * @returns Promise with response containing vectors array and pagination token or error\n   *\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   * const { data } = await index.listVectors({\n   *   maxResults: 500,\n   *   returnMetadata: true\n   * })\n   * ```\n   */\n  listVectors() {\n    const _super = Object.create(null, {\n      listVectors: { get: () => super.listVectors }\n    });\n    return __awaiter(this, arguments, void 0, function* (options = {}) {\n      return _super.listVectors.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName, indexName: this.indexName }));\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Queries for similar vectors in this index\n   * Convenience method that automatically includes bucket and index names\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Query options (bucket and index names automatically set)\n   * @returns Promise with response containing matches array of similar vectors ordered by distance or error\n   *\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   * const { data } = await index.queryVectors({\n   *   queryVector: { float32: [0.1, 0.2, ...] },\n   *   topK: 5,\n   *   filter: { category: 'technical' },\n   *   returnDistance: true,\n   *   returnMetadata: true\n   * })\n   * ```\n   */\n  queryVectors(options) {\n    const _super = Object.create(null, {\n      queryVectors: { get: () => super.queryVectors }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.queryVectors.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName, indexName: this.indexName }));\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Deletes vectors by keys from this index\n   * Convenience method that automatically includes bucket and index names\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @param options - Deletion options (bucket and index names automatically set)\n   * @returns Promise with empty response on success or error\n   *\n   * @example\n   * ```typescript\n   * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai')\n   * await index.deleteVectors({\n   *   keys: ['doc-1', 'doc-2', 'doc-3']\n   * })\n   * ```\n   */\n  deleteVectors(options) {\n    const _super = Object.create(null, {\n      deleteVectors: { get: () => super.deleteVectors }\n    });\n    return __awaiter(this, void 0, void 0, function* () {\n      return _super.deleteVectors.call(this, Object.assign(Object.assign({}, options), { vectorBucketName: this.vectorBucketName, indexName: this.indexName }));\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+storage-js@2.86.0/node_modules/@supabase/storage-js/dist/module/StorageClient.js\nvar StorageClient = class extends StorageBucketApi {\n  /**\n   * Creates a client for Storage buckets, files, analytics, and vectors.\n   *\n   * @category File Buckets\n   * @example\n   * ```ts\n   * import { StorageClient } from '@supabase/storage-js'\n   *\n   * const storage = new StorageClient('https://xyzcompany.supabase.co/storage/v1', {\n   *   apikey: 'public-anon-key',\n   * })\n   * const avatars = storage.from('avatars')\n   * ```\n   */\n  constructor(url, headers = {}, fetch2, opts) {\n    super(url, headers, fetch2, opts);\n  }\n  /**\n   * Perform file operation in a bucket.\n   *\n   * @category File Buckets\n   * @param id The bucket id to operate on.\n   *\n   * @example\n   * ```typescript\n   * const avatars = supabase.storage.from('avatars')\n   * ```\n   */\n  from(id) {\n    return new StorageFileApi(this.url, this.headers, id, this.fetch);\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Access vector storage operations.\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Vector Buckets\n   * @returns A StorageVectorsClient instance configured with the current storage settings.\n   */\n  get vectors() {\n    return new StorageVectorsClient(this.url + \"/vector\", {\n      headers: this.headers,\n      fetch: this.fetch\n    });\n  }\n  /**\n   *\n   * @alpha\n   *\n   * Access analytics storage operations using Iceberg tables.\n   *\n   * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.\n   *\n   * @category Analytics Buckets\n   * @returns A StorageAnalyticsClient instance configured with the current storage settings.\n   */\n  get analytics() {\n    return new StorageAnalyticsClient(this.url + \"/iceberg\", this.headers, this.fetch);\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/lib/version.js\nvar version3 = \"2.86.0\";\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/lib/constants.js\nvar JS_ENV = \"\";\nif (typeof Deno !== \"undefined\") {\n  JS_ENV = \"deno\";\n} else if (typeof document !== \"undefined\") {\n  JS_ENV = \"web\";\n} else if (typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") {\n  JS_ENV = \"react-native\";\n} else {\n  JS_ENV = \"node\";\n}\nvar DEFAULT_HEADERS3 = { \"X-Client-Info\": `supabase-js-${JS_ENV}/${version3}` };\nvar DEFAULT_GLOBAL_OPTIONS = {\n  headers: DEFAULT_HEADERS3\n};\nvar DEFAULT_DB_OPTIONS = {\n  schema: \"public\"\n};\nvar DEFAULT_AUTH_OPTIONS = {\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true,\n  flowType: \"implicit\"\n};\nvar DEFAULT_REALTIME_OPTIONS = {};\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/lib/fetch.js\nvar resolveFetch4 = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\nvar resolveHeadersConstructor = () => {\n  return Headers;\n};\nvar fetchWithAuth = (supabaseKey, getAccessToken, customFetch) => {\n  const fetch2 = resolveFetch4(customFetch);\n  const HeadersConstructor = resolveHeadersConstructor();\n  return (input, init) => __async(void 0, null, function* () {\n    var _a2;\n    const accessToken = (_a2 = yield getAccessToken()) !== null && _a2 !== void 0 ? _a2 : supabaseKey;\n    let headers = new HeadersConstructor(init === null || init === void 0 ? void 0 : init.headers);\n    if (!headers.has(\"apikey\")) {\n      headers.set(\"apikey\", supabaseKey);\n    }\n    if (!headers.has(\"Authorization\")) {\n      headers.set(\"Authorization\", `Bearer ${accessToken}`);\n    }\n    return fetch2(input, Object.assign(Object.assign({}, init), { headers }));\n  });\n};\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/lib/helpers.js\nfunction ensureTrailingSlash(url) {\n  return url.endsWith(\"/\") ? url : url + \"/\";\n}\nfunction applySettingDefaults(options, defaults) {\n  var _a2, _b;\n  const { db: dbOptions, auth: authOptions, realtime: realtimeOptions, global: globalOptions } = options;\n  const { db: DEFAULT_DB_OPTIONS2, auth: DEFAULT_AUTH_OPTIONS2, realtime: DEFAULT_REALTIME_OPTIONS2, global: DEFAULT_GLOBAL_OPTIONS2 } = defaults;\n  const result = {\n    db: Object.assign(Object.assign({}, DEFAULT_DB_OPTIONS2), dbOptions),\n    auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS2), authOptions),\n    realtime: Object.assign(Object.assign({}, DEFAULT_REALTIME_OPTIONS2), realtimeOptions),\n    storage: {},\n    global: Object.assign(Object.assign(Object.assign({}, DEFAULT_GLOBAL_OPTIONS2), globalOptions), { headers: Object.assign(Object.assign({}, (_a2 = DEFAULT_GLOBAL_OPTIONS2 === null || DEFAULT_GLOBAL_OPTIONS2 === void 0 ? void 0 : DEFAULT_GLOBAL_OPTIONS2.headers) !== null && _a2 !== void 0 ? _a2 : {}), (_b = globalOptions === null || globalOptions === void 0 ? void 0 : globalOptions.headers) !== null && _b !== void 0 ? _b : {}) }),\n    accessToken: () => __async(this, null, function* () {\n      return \"\";\n    })\n  };\n  if (options.accessToken) {\n    result.accessToken = options.accessToken;\n  } else {\n    delete result.accessToken;\n  }\n  return result;\n}\nfunction validateSupabaseUrl(supabaseUrl) {\n  const trimmedUrl = supabaseUrl === null || supabaseUrl === void 0 ? void 0 : supabaseUrl.trim();\n  if (!trimmedUrl) {\n    throw new Error(\"supabaseUrl is required.\");\n  }\n  if (!trimmedUrl.match(/^https?:\\/\\//i)) {\n    throw new Error(\"Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.\");\n  }\n  try {\n    return new URL(ensureTrailingSlash(trimmedUrl));\n  } catch (_a2) {\n    throw Error(\"Invalid supabaseUrl: Provided URL is malformed.\");\n  }\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/version.js\nvar version4 = \"2.86.0\";\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/constants.js\nvar AUTO_REFRESH_TICK_DURATION_MS = 30 * 1e3;\nvar AUTO_REFRESH_TICK_THRESHOLD = 3;\nvar EXPIRY_MARGIN_MS = AUTO_REFRESH_TICK_THRESHOLD * AUTO_REFRESH_TICK_DURATION_MS;\nvar GOTRUE_URL = \"http://localhost:9999\";\nvar STORAGE_KEY = \"supabase.auth.token\";\nvar DEFAULT_HEADERS4 = { \"X-Client-Info\": `gotrue-js/${version4}` };\nvar API_VERSION_HEADER_NAME = \"X-Supabase-Api-Version\";\nvar API_VERSIONS = {\n  \"2024-01-01\": {\n    timestamp: Date.parse(\"2024-01-01T00:00:00.0Z\"),\n    name: \"2024-01-01\"\n  }\n};\nvar BASE64URL_REGEX = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i;\nvar JWKS_TTL = 10 * 60 * 1e3;\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/errors.js\nvar AuthError = class extends Error {\n  constructor(message, status, code) {\n    super(message);\n    this.__isAuthError = true;\n    this.name = \"AuthError\";\n    this.status = status;\n    this.code = code;\n  }\n};\nfunction isAuthError(error) {\n  return typeof error === \"object\" && error !== null && \"__isAuthError\" in error;\n}\nvar AuthApiError = class extends AuthError {\n  constructor(message, status, code) {\n    super(message, status, code);\n    this.name = \"AuthApiError\";\n    this.status = status;\n    this.code = code;\n  }\n};\nfunction isAuthApiError(error) {\n  return isAuthError(error) && error.name === \"AuthApiError\";\n}\nvar AuthUnknownError = class extends AuthError {\n  constructor(message, originalError) {\n    super(message);\n    this.name = \"AuthUnknownError\";\n    this.originalError = originalError;\n  }\n};\nvar CustomAuthError = class extends AuthError {\n  constructor(message, name, status, code) {\n    super(message, status, code);\n    this.name = name;\n    this.status = status;\n  }\n};\nvar AuthSessionMissingError = class extends CustomAuthError {\n  constructor() {\n    super(\"Auth session missing!\", \"AuthSessionMissingError\", 400, void 0);\n  }\n};\nfunction isAuthSessionMissingError(error) {\n  return isAuthError(error) && error.name === \"AuthSessionMissingError\";\n}\nvar AuthInvalidTokenResponseError = class extends CustomAuthError {\n  constructor() {\n    super(\"Auth session or user missing\", \"AuthInvalidTokenResponseError\", 500, void 0);\n  }\n};\nvar AuthInvalidCredentialsError = class extends CustomAuthError {\n  constructor(message) {\n    super(message, \"AuthInvalidCredentialsError\", 400, void 0);\n  }\n};\nvar AuthImplicitGrantRedirectError = class extends CustomAuthError {\n  constructor(message, details = null) {\n    super(message, \"AuthImplicitGrantRedirectError\", 500, void 0);\n    this.details = null;\n    this.details = details;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      details: this.details\n    };\n  }\n};\nfunction isAuthImplicitGrantRedirectError(error) {\n  return isAuthError(error) && error.name === \"AuthImplicitGrantRedirectError\";\n}\nvar AuthPKCEGrantCodeExchangeError = class extends CustomAuthError {\n  constructor(message, details = null) {\n    super(message, \"AuthPKCEGrantCodeExchangeError\", 500, void 0);\n    this.details = null;\n    this.details = details;\n  }\n  toJSON() {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      details: this.details\n    };\n  }\n};\nvar AuthRetryableFetchError = class extends CustomAuthError {\n  constructor(message, status) {\n    super(message, \"AuthRetryableFetchError\", status, void 0);\n  }\n};\nfunction isAuthRetryableFetchError(error) {\n  return isAuthError(error) && error.name === \"AuthRetryableFetchError\";\n}\nvar AuthWeakPasswordError = class extends CustomAuthError {\n  constructor(message, status, reasons) {\n    super(message, \"AuthWeakPasswordError\", status, \"weak_password\");\n    this.reasons = reasons;\n  }\n};\nvar AuthInvalidJwtError = class extends CustomAuthError {\n  constructor(message) {\n    super(message, \"AuthInvalidJwtError\", 400, \"invalid_jwt\");\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/base64url.js\nvar TO_BASE64URL = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\".split(\"\");\nvar IGNORE_BASE64URL = \" \t\\n\\r=\".split(\"\");\nvar FROM_BASE64URL = (() => {\n  const charMap = new Array(128);\n  for (let i = 0; i < charMap.length; i += 1) {\n    charMap[i] = -1;\n  }\n  for (let i = 0; i < IGNORE_BASE64URL.length; i += 1) {\n    charMap[IGNORE_BASE64URL[i].charCodeAt(0)] = -2;\n  }\n  for (let i = 0; i < TO_BASE64URL.length; i += 1) {\n    charMap[TO_BASE64URL[i].charCodeAt(0)] = i;\n  }\n  return charMap;\n})();\nfunction byteToBase64URL(byte, state, emit) {\n  if (byte !== null) {\n    state.queue = state.queue << 8 | byte;\n    state.queuedBits += 8;\n    while (state.queuedBits >= 6) {\n      const pos = state.queue >> state.queuedBits - 6 & 63;\n      emit(TO_BASE64URL[pos]);\n      state.queuedBits -= 6;\n    }\n  } else if (state.queuedBits > 0) {\n    state.queue = state.queue << 6 - state.queuedBits;\n    state.queuedBits = 6;\n    while (state.queuedBits >= 6) {\n      const pos = state.queue >> state.queuedBits - 6 & 63;\n      emit(TO_BASE64URL[pos]);\n      state.queuedBits -= 6;\n    }\n  }\n}\nfunction byteFromBase64URL(charCode, state, emit) {\n  const bits = FROM_BASE64URL[charCode];\n  if (bits > -1) {\n    state.queue = state.queue << 6 | bits;\n    state.queuedBits += 6;\n    while (state.queuedBits >= 8) {\n      emit(state.queue >> state.queuedBits - 8 & 255);\n      state.queuedBits -= 8;\n    }\n  } else if (bits === -2) {\n    return;\n  } else {\n    throw new Error(`Invalid Base64-URL character \"${String.fromCharCode(charCode)}\"`);\n  }\n}\nfunction stringFromBase64URL(str) {\n  const conv = [];\n  const utf8Emit = (codepoint) => {\n    conv.push(String.fromCodePoint(codepoint));\n  };\n  const utf8State = {\n    utf8seq: 0,\n    codepoint: 0\n  };\n  const b64State = { queue: 0, queuedBits: 0 };\n  const byteEmit = (byte) => {\n    stringFromUTF8(byte, utf8State, utf8Emit);\n  };\n  for (let i = 0; i < str.length; i += 1) {\n    byteFromBase64URL(str.charCodeAt(i), b64State, byteEmit);\n  }\n  return conv.join(\"\");\n}\nfunction codepointToUTF8(codepoint, emit) {\n  if (codepoint <= 127) {\n    emit(codepoint);\n    return;\n  } else if (codepoint <= 2047) {\n    emit(192 | codepoint >> 6);\n    emit(128 | codepoint & 63);\n    return;\n  } else if (codepoint <= 65535) {\n    emit(224 | codepoint >> 12);\n    emit(128 | codepoint >> 6 & 63);\n    emit(128 | codepoint & 63);\n    return;\n  } else if (codepoint <= 1114111) {\n    emit(240 | codepoint >> 18);\n    emit(128 | codepoint >> 12 & 63);\n    emit(128 | codepoint >> 6 & 63);\n    emit(128 | codepoint & 63);\n    return;\n  }\n  throw new Error(`Unrecognized Unicode codepoint: ${codepoint.toString(16)}`);\n}\nfunction stringToUTF8(str, emit) {\n  for (let i = 0; i < str.length; i += 1) {\n    let codepoint = str.charCodeAt(i);\n    if (codepoint > 55295 && codepoint <= 56319) {\n      const highSurrogate = (codepoint - 55296) * 1024 & 65535;\n      const lowSurrogate = str.charCodeAt(i + 1) - 56320 & 65535;\n      codepoint = (lowSurrogate | highSurrogate) + 65536;\n      i += 1;\n    }\n    codepointToUTF8(codepoint, emit);\n  }\n}\nfunction stringFromUTF8(byte, state, emit) {\n  if (state.utf8seq === 0) {\n    if (byte <= 127) {\n      emit(byte);\n      return;\n    }\n    for (let leadingBit = 1; leadingBit < 6; leadingBit += 1) {\n      if ((byte >> 7 - leadingBit & 1) === 0) {\n        state.utf8seq = leadingBit;\n        break;\n      }\n    }\n    if (state.utf8seq === 2) {\n      state.codepoint = byte & 31;\n    } else if (state.utf8seq === 3) {\n      state.codepoint = byte & 15;\n    } else if (state.utf8seq === 4) {\n      state.codepoint = byte & 7;\n    } else {\n      throw new Error(\"Invalid UTF-8 sequence\");\n    }\n    state.utf8seq -= 1;\n  } else if (state.utf8seq > 0) {\n    if (byte <= 127) {\n      throw new Error(\"Invalid UTF-8 sequence\");\n    }\n    state.codepoint = state.codepoint << 6 | byte & 63;\n    state.utf8seq -= 1;\n    if (state.utf8seq === 0) {\n      emit(state.codepoint);\n    }\n  }\n}\nfunction base64UrlToUint8Array(str) {\n  const result = [];\n  const state = { queue: 0, queuedBits: 0 };\n  const onByte = (byte) => {\n    result.push(byte);\n  };\n  for (let i = 0; i < str.length; i += 1) {\n    byteFromBase64URL(str.charCodeAt(i), state, onByte);\n  }\n  return new Uint8Array(result);\n}\nfunction stringToUint8Array(str) {\n  const result = [];\n  stringToUTF8(str, (byte) => result.push(byte));\n  return new Uint8Array(result);\n}\nfunction bytesToBase64URL(bytes) {\n  const result = [];\n  const state = { queue: 0, queuedBits: 0 };\n  const onChar = (char) => {\n    result.push(char);\n  };\n  bytes.forEach((byte) => byteToBase64URL(byte, state, onChar));\n  byteToBase64URL(null, state, onChar);\n  return result.join(\"\");\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/helpers.js\nfunction expiresAt(expiresIn) {\n  const timeNow = Math.round(Date.now() / 1e3);\n  return timeNow + expiresIn;\n}\nfunction generateCallbackId() {\n  return Symbol(\"auth-callback\");\n}\nvar isBrowser = () => typeof window !== \"undefined\" && typeof document !== \"undefined\";\nvar localStorageWriteTests = {\n  tested: false,\n  writable: false\n};\nvar supportsLocalStorage = () => {\n  if (!isBrowser()) {\n    return false;\n  }\n  try {\n    if (typeof globalThis.localStorage !== \"object\") {\n      return false;\n    }\n  } catch (e) {\n    return false;\n  }\n  if (localStorageWriteTests.tested) {\n    return localStorageWriteTests.writable;\n  }\n  const randomKey = `lswt-${Math.random()}${Math.random()}`;\n  try {\n    globalThis.localStorage.setItem(randomKey, randomKey);\n    globalThis.localStorage.removeItem(randomKey);\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = true;\n  } catch (e) {\n    localStorageWriteTests.tested = true;\n    localStorageWriteTests.writable = false;\n  }\n  return localStorageWriteTests.writable;\n};\nfunction parseParametersFromURL(href) {\n  const result = {};\n  const url = new URL(href);\n  if (url.hash && url.hash[0] === \"#\") {\n    try {\n      const hashSearchParams = new URLSearchParams(url.hash.substring(1));\n      hashSearchParams.forEach((value, key) => {\n        result[key] = value;\n      });\n    } catch (e) {\n    }\n  }\n  url.searchParams.forEach((value, key) => {\n    result[key] = value;\n  });\n  return result;\n}\nvar resolveFetch5 = (customFetch) => {\n  if (customFetch) {\n    return (...args) => customFetch(...args);\n  }\n  return (...args) => fetch(...args);\n};\nvar looksLikeFetchResponse = (maybeResponse) => {\n  return typeof maybeResponse === \"object\" && maybeResponse !== null && \"status\" in maybeResponse && \"ok\" in maybeResponse && \"json\" in maybeResponse && typeof maybeResponse.json === \"function\";\n};\nvar setItemAsync = (storage, key, data) => __async(void 0, null, function* () {\n  yield storage.setItem(key, JSON.stringify(data));\n});\nvar getItemAsync = (storage, key) => __async(void 0, null, function* () {\n  const value = yield storage.getItem(key);\n  if (!value) {\n    return null;\n  }\n  try {\n    return JSON.parse(value);\n  } catch (_a2) {\n    return value;\n  }\n});\nvar removeItemAsync = (storage, key) => __async(void 0, null, function* () {\n  yield storage.removeItem(key);\n});\nvar Deferred = class _Deferred {\n  constructor() {\n    ;\n    this.promise = new _Deferred.promiseConstructor((res, rej) => {\n      ;\n      this.resolve = res;\n      this.reject = rej;\n    });\n  }\n};\nDeferred.promiseConstructor = Promise;\nfunction decodeJWT(token) {\n  const parts = token.split(\".\");\n  if (parts.length !== 3) {\n    throw new AuthInvalidJwtError(\"Invalid JWT structure\");\n  }\n  for (let i = 0; i < parts.length; i++) {\n    if (!BASE64URL_REGEX.test(parts[i])) {\n      throw new AuthInvalidJwtError(\"JWT not in base64url format\");\n    }\n  }\n  const data = {\n    // using base64url lib\n    header: JSON.parse(stringFromBase64URL(parts[0])),\n    payload: JSON.parse(stringFromBase64URL(parts[1])),\n    signature: base64UrlToUint8Array(parts[2]),\n    raw: {\n      header: parts[0],\n      payload: parts[1]\n    }\n  };\n  return data;\n}\nfunction sleep(time) {\n  return __async(this, null, function* () {\n    return yield new Promise((accept) => {\n      setTimeout(() => accept(null), time);\n    });\n  });\n}\nfunction retryable(fn, isRetryable) {\n  const promise = new Promise((accept, reject) => {\n    ;\n    (() => __async(this, null, function* () {\n      for (let attempt = 0; attempt < Infinity; attempt++) {\n        try {\n          const result = yield fn(attempt);\n          if (!isRetryable(attempt, null, result)) {\n            accept(result);\n            return;\n          }\n        } catch (e) {\n          if (!isRetryable(attempt, e)) {\n            reject(e);\n            return;\n          }\n        }\n      }\n    }))();\n  });\n  return promise;\n}\nfunction dec2hex(dec) {\n  return (\"0\" + dec.toString(16)).substr(-2);\n}\nfunction generatePKCEVerifier() {\n  const verifierLength = 56;\n  const array = new Uint32Array(verifierLength);\n  if (typeof crypto === \"undefined\") {\n    const charSet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\";\n    const charSetLen = charSet.length;\n    let verifier = \"\";\n    for (let i = 0; i < verifierLength; i++) {\n      verifier += charSet.charAt(Math.floor(Math.random() * charSetLen));\n    }\n    return verifier;\n  }\n  crypto.getRandomValues(array);\n  return Array.from(array, dec2hex).join(\"\");\n}\nfunction sha256(randomString) {\n  return __async(this, null, function* () {\n    const encoder = new TextEncoder();\n    const encodedData = encoder.encode(randomString);\n    const hash = yield crypto.subtle.digest(\"SHA-256\", encodedData);\n    const bytes = new Uint8Array(hash);\n    return Array.from(bytes).map((c) => String.fromCharCode(c)).join(\"\");\n  });\n}\nfunction generatePKCEChallenge(verifier) {\n  return __async(this, null, function* () {\n    const hasCryptoSupport = typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\" && typeof TextEncoder !== \"undefined\";\n    if (!hasCryptoSupport) {\n      console.warn(\"WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256.\");\n      return verifier;\n    }\n    const hashed = yield sha256(verifier);\n    return btoa(hashed).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n  });\n}\nfunction getCodeChallengeAndMethod(storage, storageKey, isPasswordRecovery = false) {\n  return __async(this, null, function* () {\n    const codeVerifier = generatePKCEVerifier();\n    let storedCodeVerifier = codeVerifier;\n    if (isPasswordRecovery) {\n      storedCodeVerifier += \"/PASSWORD_RECOVERY\";\n    }\n    yield setItemAsync(storage, `${storageKey}-code-verifier`, storedCodeVerifier);\n    const codeChallenge = yield generatePKCEChallenge(codeVerifier);\n    const codeChallengeMethod = codeVerifier === codeChallenge ? \"plain\" : \"s256\";\n    return [codeChallenge, codeChallengeMethod];\n  });\n}\nvar API_VERSION_REGEX = /^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;\nfunction parseResponseAPIVersion(response) {\n  const apiVersion = response.headers.get(API_VERSION_HEADER_NAME);\n  if (!apiVersion) {\n    return null;\n  }\n  if (!apiVersion.match(API_VERSION_REGEX)) {\n    return null;\n  }\n  try {\n    const date = /* @__PURE__ */ new Date(`${apiVersion}T00:00:00.0Z`);\n    return date;\n  } catch (e) {\n    return null;\n  }\n}\nfunction validateExp(exp) {\n  if (!exp) {\n    throw new Error(\"Missing exp claim\");\n  }\n  const timeNow = Math.floor(Date.now() / 1e3);\n  if (exp <= timeNow) {\n    throw new Error(\"JWT has expired\");\n  }\n}\nfunction getAlgorithm(alg) {\n  switch (alg) {\n    case \"RS256\":\n      return {\n        name: \"RSASSA-PKCS1-v1_5\",\n        hash: { name: \"SHA-256\" }\n      };\n    case \"ES256\":\n      return {\n        name: \"ECDSA\",\n        namedCurve: \"P-256\",\n        hash: { name: \"SHA-256\" }\n      };\n    default:\n      throw new Error(\"Invalid alg claim\");\n  }\n}\nvar UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\nfunction validateUUID(str) {\n  if (!UUID_REGEX.test(str)) {\n    throw new Error(\"@supabase/auth-js: Expected parameter to be UUID but is not\");\n  }\n}\nfunction userNotAvailableProxy() {\n  const proxyTarget = {};\n  return new Proxy(proxyTarget, {\n    get: (target, prop) => {\n      if (prop === \"__isUserNotAvailableProxy\") {\n        return true;\n      }\n      if (typeof prop === \"symbol\") {\n        const sProp = prop.toString();\n        if (sProp === \"Symbol(Symbol.toPrimitive)\" || sProp === \"Symbol(Symbol.toStringTag)\" || sProp === \"Symbol(util.inspect.custom)\") {\n          return void 0;\n        }\n      }\n      throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the \"${prop}\" property of the session object is not supported. Please use getUser() instead.`);\n    },\n    set: (_target, prop) => {\n      throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the \"${prop}\" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);\n    },\n    deleteProperty: (_target, prop) => {\n      throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the \"${prop}\" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);\n    }\n  });\n}\nfunction insecureUserWarningProxy(user, suppressWarningRef) {\n  return new Proxy(user, {\n    get: (target, prop, receiver) => {\n      if (prop === \"__isInsecureUserWarningProxy\") {\n        return true;\n      }\n      if (typeof prop === \"symbol\") {\n        const sProp = prop.toString();\n        if (sProp === \"Symbol(Symbol.toPrimitive)\" || sProp === \"Symbol(Symbol.toStringTag)\" || sProp === \"Symbol(util.inspect.custom)\" || sProp === \"Symbol(nodejs.util.inspect.custom)\") {\n          return Reflect.get(target, prop, receiver);\n        }\n      }\n      if (!suppressWarningRef.value && typeof prop === \"string\") {\n        console.warn(\"Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server.\");\n        suppressWarningRef.value = true;\n      }\n      return Reflect.get(target, prop, receiver);\n    }\n  });\n}\nfunction deepClone(obj) {\n  return JSON.parse(JSON.stringify(obj));\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/fetch.js\nvar _getErrorMessage3 = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);\nvar NETWORK_ERROR_CODES = [502, 503, 504];\nfunction handleError3(error) {\n  return __async(this, null, function* () {\n    var _a2;\n    if (!looksLikeFetchResponse(error)) {\n      throw new AuthRetryableFetchError(_getErrorMessage3(error), 0);\n    }\n    if (NETWORK_ERROR_CODES.includes(error.status)) {\n      throw new AuthRetryableFetchError(_getErrorMessage3(error), error.status);\n    }\n    let data;\n    try {\n      data = yield error.json();\n    } catch (e) {\n      throw new AuthUnknownError(_getErrorMessage3(e), e);\n    }\n    let errorCode = void 0;\n    const responseAPIVersion = parseResponseAPIVersion(error);\n    if (responseAPIVersion && responseAPIVersion.getTime() >= API_VERSIONS[\"2024-01-01\"].timestamp && typeof data === \"object\" && data && typeof data.code === \"string\") {\n      errorCode = data.code;\n    } else if (typeof data === \"object\" && data && typeof data.error_code === \"string\") {\n      errorCode = data.error_code;\n    }\n    if (!errorCode) {\n      if (typeof data === \"object\" && data && typeof data.weak_password === \"object\" && data.weak_password && Array.isArray(data.weak_password.reasons) && data.weak_password.reasons.length && data.weak_password.reasons.reduce((a, i) => a && typeof i === \"string\", true)) {\n        throw new AuthWeakPasswordError(_getErrorMessage3(data), error.status, data.weak_password.reasons);\n      }\n    } else if (errorCode === \"weak_password\") {\n      throw new AuthWeakPasswordError(_getErrorMessage3(data), error.status, ((_a2 = data.weak_password) === null || _a2 === void 0 ? void 0 : _a2.reasons) || []);\n    } else if (errorCode === \"session_not_found\") {\n      throw new AuthSessionMissingError();\n    }\n    throw new AuthApiError(_getErrorMessage3(data), error.status || 500, errorCode);\n  });\n}\nvar _getRequestParams3 = (method, options, parameters, body) => {\n  const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} };\n  if (method === \"GET\") {\n    return params;\n  }\n  params.headers = Object.assign({ \"Content-Type\": \"application/json;charset=UTF-8\" }, options === null || options === void 0 ? void 0 : options.headers);\n  params.body = JSON.stringify(body);\n  return Object.assign(Object.assign({}, params), parameters);\n};\nfunction _request(fetcher, method, url, options) {\n  return __async(this, null, function* () {\n    var _a2;\n    const headers = Object.assign({}, options === null || options === void 0 ? void 0 : options.headers);\n    if (!headers[API_VERSION_HEADER_NAME]) {\n      headers[API_VERSION_HEADER_NAME] = API_VERSIONS[\"2024-01-01\"].name;\n    }\n    if (options === null || options === void 0 ? void 0 : options.jwt) {\n      headers[\"Authorization\"] = `Bearer ${options.jwt}`;\n    }\n    const qs = (_a2 = options === null || options === void 0 ? void 0 : options.query) !== null && _a2 !== void 0 ? _a2 : {};\n    if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n      qs[\"redirect_to\"] = options.redirectTo;\n    }\n    const queryString = Object.keys(qs).length ? \"?\" + new URLSearchParams(qs).toString() : \"\";\n    const data = yield _handleRequest3(fetcher, method, url + queryString, {\n      headers,\n      noResolveJson: options === null || options === void 0 ? void 0 : options.noResolveJson\n    }, {}, options === null || options === void 0 ? void 0 : options.body);\n    return (options === null || options === void 0 ? void 0 : options.xform) ? options === null || options === void 0 ? void 0 : options.xform(data) : { data: Object.assign({}, data), error: null };\n  });\n}\nfunction _handleRequest3(fetcher, method, url, options, parameters, body) {\n  return __async(this, null, function* () {\n    const requestParams = _getRequestParams3(method, options, parameters, body);\n    let result;\n    try {\n      result = yield fetcher(url, Object.assign({}, requestParams));\n    } catch (e) {\n      console.error(e);\n      throw new AuthRetryableFetchError(_getErrorMessage3(e), 0);\n    }\n    if (!result.ok) {\n      yield handleError3(result);\n    }\n    if (options === null || options === void 0 ? void 0 : options.noResolveJson) {\n      return result;\n    }\n    try {\n      return yield result.json();\n    } catch (e) {\n      yield handleError3(e);\n    }\n  });\n}\nfunction _sessionResponse(data) {\n  var _a2;\n  let session = null;\n  if (hasSession(data)) {\n    session = Object.assign({}, data);\n    if (!data.expires_at) {\n      session.expires_at = expiresAt(data.expires_in);\n    }\n  }\n  const user = (_a2 = data.user) !== null && _a2 !== void 0 ? _a2 : data;\n  return { data: { session, user }, error: null };\n}\nfunction _sessionResponsePassword(data) {\n  const response = _sessionResponse(data);\n  if (!response.error && data.weak_password && typeof data.weak_password === \"object\" && Array.isArray(data.weak_password.reasons) && data.weak_password.reasons.length && data.weak_password.message && typeof data.weak_password.message === \"string\" && data.weak_password.reasons.reduce((a, i) => a && typeof i === \"string\", true)) {\n    response.data.weak_password = data.weak_password;\n  }\n  return response;\n}\nfunction _userResponse(data) {\n  var _a2;\n  const user = (_a2 = data.user) !== null && _a2 !== void 0 ? _a2 : data;\n  return { data: { user }, error: null };\n}\nfunction _ssoResponse(data) {\n  return { data, error: null };\n}\nfunction _generateLinkResponse(data) {\n  const { action_link, email_otp, hashed_token, redirect_to, verification_type } = data, rest = __rest(data, [\"action_link\", \"email_otp\", \"hashed_token\", \"redirect_to\", \"verification_type\"]);\n  const properties = {\n    action_link,\n    email_otp,\n    hashed_token,\n    redirect_to,\n    verification_type\n  };\n  const user = Object.assign({}, rest);\n  return {\n    data: {\n      properties,\n      user\n    },\n    error: null\n  };\n}\nfunction _noResolveJsonResponse(data) {\n  return data;\n}\nfunction hasSession(data) {\n  return data.access_token && data.refresh_token && data.expires_in;\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/types.js\nvar SIGN_OUT_SCOPES = [\"global\", \"local\", \"others\"];\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/GoTrueAdminApi.js\nvar GoTrueAdminApi = class {\n  /**\n   * Creates an admin API client that can be used to manage users and OAuth clients.\n   *\n   * @example\n   * ```ts\n   * import { GoTrueAdminApi } from '@supabase/auth-js'\n   *\n   * const admin = new GoTrueAdminApi({\n   *   url: 'https://xyzcompany.supabase.co/auth/v1',\n   *   headers: { Authorization: `Bearer ${process.env.SUPABASE_SERVICE_ROLE_KEY}` },\n   * })\n   * ```\n   */\n  constructor({ url = \"\", headers = {}, fetch: fetch2 }) {\n    this.url = url;\n    this.headers = headers;\n    this.fetch = resolveFetch5(fetch2);\n    this.mfa = {\n      listFactors: this._listFactors.bind(this),\n      deleteFactor: this._deleteFactor.bind(this)\n    };\n    this.oauth = {\n      listClients: this._listOAuthClients.bind(this),\n      createClient: this._createOAuthClient.bind(this),\n      getClient: this._getOAuthClient.bind(this),\n      updateClient: this._updateOAuthClient.bind(this),\n      deleteClient: this._deleteOAuthClient.bind(this),\n      regenerateClientSecret: this._regenerateOAuthClientSecret.bind(this)\n    };\n  }\n  /**\n   * Removes a logged-in session.\n   * @param jwt A valid, logged-in JWT.\n   * @param scope The logout sope.\n   */\n  signOut(_0) {\n    return __async(this, arguments, function* (jwt, scope = SIGN_OUT_SCOPES[0]) {\n      if (SIGN_OUT_SCOPES.indexOf(scope) < 0) {\n        throw new Error(`@supabase/auth-js: Parameter scope must be one of ${SIGN_OUT_SCOPES.join(\", \")}`);\n      }\n      try {\n        yield _request(this.fetch, \"POST\", `${this.url}/logout?scope=${scope}`, {\n          headers: this.headers,\n          jwt,\n          noResolveJson: true\n        });\n        return { data: null, error: null };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Sends an invite link to an email address.\n   * @param email The email address of the user.\n   * @param options Additional options to be included when inviting.\n   */\n  inviteUserByEmail(_0) {\n    return __async(this, arguments, function* (email, options = {}) {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/invite`, {\n          body: { email, data: options.data },\n          headers: this.headers,\n          redirectTo: options.redirectTo,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { user: null }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Generates email links and OTPs to be sent via a custom email provider.\n   * @param email The user's email.\n   * @param options.password User password. For signup only.\n   * @param options.data Optional user metadata. For signup only.\n   * @param options.redirectTo The redirect url which should be appended to the generated link\n   */\n  generateLink(params) {\n    return __async(this, null, function* () {\n      try {\n        const { options } = params, rest = __rest(params, [\"options\"]);\n        const body = Object.assign(Object.assign({}, rest), options);\n        if (\"newEmail\" in rest) {\n          body.new_email = rest === null || rest === void 0 ? void 0 : rest.newEmail;\n          delete body[\"newEmail\"];\n        }\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/generate_link`, {\n          body,\n          headers: this.headers,\n          xform: _generateLinkResponse,\n          redirectTo: options === null || options === void 0 ? void 0 : options.redirectTo\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return {\n            data: {\n              properties: null,\n              user: null\n            },\n            error\n          };\n        }\n        throw error;\n      }\n    });\n  }\n  // User Admin API\n  /**\n   * Creates a new user.\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  createUser(attributes) {\n    return __async(this, null, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/users`, {\n          body: attributes,\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { user: null }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Get a list of users.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   * @param params An object which supports `page` and `perPage` as numbers, to alter the paginated results.\n   */\n  listUsers(params) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d, _e, _f, _g;\n      try {\n        const pagination = { nextPage: null, lastPage: 0, total: 0 };\n        const response = yield _request(this.fetch, \"GET\", `${this.url}/admin/users`, {\n          headers: this.headers,\n          noResolveJson: true,\n          query: {\n            page: (_b = (_a2 = params === null || params === void 0 ? void 0 : params.page) === null || _a2 === void 0 ? void 0 : _a2.toString()) !== null && _b !== void 0 ? _b : \"\",\n            per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : \"\"\n          },\n          xform: _noResolveJsonResponse\n        });\n        if (response.error)\n          throw response.error;\n        const users = yield response.json();\n        const total = (_e = response.headers.get(\"x-total-count\")) !== null && _e !== void 0 ? _e : 0;\n        const links = (_g = (_f = response.headers.get(\"link\")) === null || _f === void 0 ? void 0 : _f.split(\",\")) !== null && _g !== void 0 ? _g : [];\n        if (links.length > 0) {\n          links.forEach((link) => {\n            const page = parseInt(link.split(\";\")[0].split(\"=\")[1].substring(0, 1));\n            const rel = JSON.parse(link.split(\";\")[1].split(\"=\")[1]);\n            pagination[`${rel}Page`] = page;\n          });\n          pagination.total = parseInt(total);\n        }\n        return { data: Object.assign(Object.assign({}, users), pagination), error: null };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { users: [] }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Get user by id.\n   *\n   * @param uid The user's unique identifier\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  getUserById(uid) {\n    return __async(this, null, function* () {\n      validateUUID(uid);\n      try {\n        return yield _request(this.fetch, \"GET\", `${this.url}/admin/users/${uid}`, {\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { user: null }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Updates the user data.\n   *\n   * @param attributes The data you want to update.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  updateUserById(uid, attributes) {\n    return __async(this, null, function* () {\n      validateUUID(uid);\n      try {\n        return yield _request(this.fetch, \"PUT\", `${this.url}/admin/users/${uid}`, {\n          body: attributes,\n          headers: this.headers,\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { user: null }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Delete a user. Requires a `service_role` key.\n   *\n   * @param id The user id you want to remove.\n   * @param shouldSoftDelete If true, then the user will be soft-deleted from the auth schema. Soft deletion allows user identification from the hashed user ID but is not reversible.\n   * Defaults to false for backward compatibility.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  deleteUser(id, shouldSoftDelete = false) {\n    return __async(this, null, function* () {\n      validateUUID(id);\n      try {\n        return yield _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${id}`, {\n          headers: this.headers,\n          body: {\n            should_soft_delete: shouldSoftDelete\n          },\n          xform: _userResponse\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { user: null }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  _listFactors(params) {\n    return __async(this, null, function* () {\n      validateUUID(params.userId);\n      try {\n        const { data, error } = yield _request(this.fetch, \"GET\", `${this.url}/admin/users/${params.userId}/factors`, {\n          headers: this.headers,\n          xform: (factors) => {\n            return { data: { factors }, error: null };\n          }\n        });\n        return { data, error };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  _deleteFactor(params) {\n    return __async(this, null, function* () {\n      validateUUID(params.userId);\n      validateUUID(params.id);\n      try {\n        const data = yield _request(this.fetch, \"DELETE\", `${this.url}/admin/users/${params.userId}/factors/${params.id}`, {\n          headers: this.headers\n        });\n        return { data, error: null };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Lists all OAuth clients with optional pagination.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  _listOAuthClients(params) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d, _e, _f, _g;\n      try {\n        const pagination = { nextPage: null, lastPage: 0, total: 0 };\n        const response = yield _request(this.fetch, \"GET\", `${this.url}/admin/oauth/clients`, {\n          headers: this.headers,\n          noResolveJson: true,\n          query: {\n            page: (_b = (_a2 = params === null || params === void 0 ? void 0 : params.page) === null || _a2 === void 0 ? void 0 : _a2.toString()) !== null && _b !== void 0 ? _b : \"\",\n            per_page: (_d = (_c = params === null || params === void 0 ? void 0 : params.perPage) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : \"\"\n          },\n          xform: _noResolveJsonResponse\n        });\n        if (response.error)\n          throw response.error;\n        const clients = yield response.json();\n        const total = (_e = response.headers.get(\"x-total-count\")) !== null && _e !== void 0 ? _e : 0;\n        const links = (_g = (_f = response.headers.get(\"link\")) === null || _f === void 0 ? void 0 : _f.split(\",\")) !== null && _g !== void 0 ? _g : [];\n        if (links.length > 0) {\n          links.forEach((link) => {\n            const page = parseInt(link.split(\";\")[0].split(\"=\")[1].substring(0, 1));\n            const rel = JSON.parse(link.split(\";\")[1].split(\"=\")[1]);\n            pagination[`${rel}Page`] = page;\n          });\n          pagination.total = parseInt(total);\n        }\n        return { data: Object.assign(Object.assign({}, clients), pagination), error: null };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: { clients: [] }, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Creates a new OAuth client.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  _createOAuthClient(params) {\n    return __async(this, null, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/oauth/clients`, {\n          body: params,\n          headers: this.headers,\n          xform: (client) => {\n            return { data: client, error: null };\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Gets details of a specific OAuth client.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  _getOAuthClient(clientId) {\n    return __async(this, null, function* () {\n      try {\n        return yield _request(this.fetch, \"GET\", `${this.url}/admin/oauth/clients/${clientId}`, {\n          headers: this.headers,\n          xform: (client) => {\n            return { data: client, error: null };\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Updates an existing OAuth client.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  _updateOAuthClient(clientId, params) {\n    return __async(this, null, function* () {\n      try {\n        return yield _request(this.fetch, \"PUT\", `${this.url}/admin/oauth/clients/${clientId}`, {\n          body: params,\n          headers: this.headers,\n          xform: (client) => {\n            return { data: client, error: null };\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Deletes an OAuth client.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  _deleteOAuthClient(clientId) {\n    return __async(this, null, function* () {\n      try {\n        yield _request(this.fetch, \"DELETE\", `${this.url}/admin/oauth/clients/${clientId}`, {\n          headers: this.headers,\n          noResolveJson: true\n        });\n        return { data: null, error: null };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Regenerates the secret for an OAuth client.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * This function should only be called on a server. Never expose your `service_role` key in the browser.\n   */\n  _regenerateOAuthClientSecret(clientId) {\n    return __async(this, null, function* () {\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/admin/oauth/clients/${clientId}/regenerate_secret`, {\n          headers: this.headers,\n          xform: (client) => {\n            return { data: client, error: null };\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        throw error;\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/local-storage.js\nfunction memoryLocalStorageAdapter(store = {}) {\n  return {\n    getItem: (key) => {\n      return store[key] || null;\n    },\n    setItem: (key, value) => {\n      store[key] = value;\n    },\n    removeItem: (key) => {\n      delete store[key];\n    }\n  };\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/locks.js\nvar internals = {\n  /**\n   * @experimental\n   */\n  debug: !!(globalThis && supportsLocalStorage() && globalThis.localStorage && globalThis.localStorage.getItem(\"supabase.gotrue-js.locks.debug\") === \"true\")\n};\nvar LockAcquireTimeoutError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.isAcquireTimeout = true;\n  }\n};\nvar NavigatorLockAcquireTimeoutError = class extends LockAcquireTimeoutError {\n};\nfunction navigatorLock(name, acquireTimeout, fn) {\n  return __async(this, null, function* () {\n    if (internals.debug) {\n      console.log(\"@supabase/gotrue-js: navigatorLock: acquire lock\", name, acquireTimeout);\n    }\n    const abortController = new globalThis.AbortController();\n    if (acquireTimeout > 0) {\n      setTimeout(() => {\n        abortController.abort();\n        if (internals.debug) {\n          console.log(\"@supabase/gotrue-js: navigatorLock acquire timed out\", name);\n        }\n      }, acquireTimeout);\n    }\n    return yield Promise.resolve().then(() => globalThis.navigator.locks.request(name, acquireTimeout === 0 ? {\n      mode: \"exclusive\",\n      ifAvailable: true\n    } : {\n      mode: \"exclusive\",\n      signal: abortController.signal\n    }, (lock) => __async(this, null, function* () {\n      if (lock) {\n        if (internals.debug) {\n          console.log(\"@supabase/gotrue-js: navigatorLock: acquired\", name, lock.name);\n        }\n        try {\n          return yield fn();\n        } finally {\n          if (internals.debug) {\n            console.log(\"@supabase/gotrue-js: navigatorLock: released\", name, lock.name);\n          }\n        }\n      } else {\n        if (acquireTimeout === 0) {\n          if (internals.debug) {\n            console.log(\"@supabase/gotrue-js: navigatorLock: not immediately available\", name);\n          }\n          throw new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock \"${name}\" immediately failed`);\n        } else {\n          if (internals.debug) {\n            try {\n              const result = yield globalThis.navigator.locks.query();\n              console.log(\"@supabase/gotrue-js: Navigator LockManager state\", JSON.stringify(result, null, \"  \"));\n            } catch (e) {\n              console.warn(\"@supabase/gotrue-js: Error when querying Navigator LockManager state\", e);\n            }\n          }\n          console.warn(\"@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request\");\n          return yield fn();\n        }\n      }\n    })));\n  });\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/polyfills.js\nfunction polyfillGlobalThis() {\n  if (typeof globalThis === \"object\")\n    return;\n  try {\n    Object.defineProperty(Object.prototype, \"__magic__\", {\n      get: function() {\n        return this;\n      },\n      configurable: true\n    });\n    __magic__.globalThis = __magic__;\n    delete Object.prototype.__magic__;\n  } catch (e) {\n    if (typeof self !== \"undefined\") {\n      self.globalThis = self;\n    }\n  }\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.js\nfunction getAddress(address) {\n  if (!/^0x[a-fA-F0-9]{40}$/.test(address)) {\n    throw new Error(`@supabase/auth-js: Address \"${address}\" is invalid.`);\n  }\n  return address.toLowerCase();\n}\nfunction fromHex(hex) {\n  return parseInt(hex, 16);\n}\nfunction toHex(value) {\n  const bytes = new TextEncoder().encode(value);\n  const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n  return \"0x\" + hex;\n}\nfunction createSiweMessage(parameters) {\n  var _a2;\n  const { chainId, domain, expirationTime, issuedAt = /* @__PURE__ */ new Date(), nonce, notBefore, requestId, resources, scheme, uri, version: version5 } = parameters;\n  {\n    if (!Number.isInteger(chainId))\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"chainId\". Chain ID must be a EIP-155 chain ID. Provided value: ${chainId}`);\n    if (!domain)\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"domain\". Domain must be provided.`);\n    if (nonce && nonce.length < 8)\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"nonce\". Nonce must be at least 8 characters. Provided value: ${nonce}`);\n    if (!uri)\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"uri\". URI must be provided.`);\n    if (version5 !== \"1\")\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"version\". Version must be '1'. Provided value: ${version5}`);\n    if ((_a2 = parameters.statement) === null || _a2 === void 0 ? void 0 : _a2.includes(\"\\n\"))\n      throw new Error(`@supabase/auth-js: Invalid SIWE message field \"statement\". Statement must not include '\\\\n'. Provided value: ${parameters.statement}`);\n  }\n  const address = getAddress(parameters.address);\n  const origin = scheme ? `${scheme}://${domain}` : domain;\n  const statement = parameters.statement ? `${parameters.statement}\n` : \"\";\n  const prefix = `${origin} wants you to sign in with your Ethereum account:\n${address}\n\n${statement}`;\n  let suffix = `URI: ${uri}\nVersion: ${version5}\nChain ID: ${chainId}${nonce ? `\nNonce: ${nonce}` : \"\"}\nIssued At: ${issuedAt.toISOString()}`;\n  if (expirationTime)\n    suffix += `\nExpiration Time: ${expirationTime.toISOString()}`;\n  if (notBefore)\n    suffix += `\nNot Before: ${notBefore.toISOString()}`;\n  if (requestId)\n    suffix += `\nRequest ID: ${requestId}`;\n  if (resources) {\n    let content = \"\\nResources:\";\n    for (const resource of resources) {\n      if (!resource || typeof resource !== \"string\")\n        throw new Error(`@supabase/auth-js: Invalid SIWE message field \"resources\". Every resource must be a valid string. Provided value: ${resource}`);\n      content += `\n- ${resource}`;\n    }\n    suffix += content;\n  }\n  return `${prefix}\n${suffix}`;\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.js\nvar WebAuthnError = class extends Error {\n  constructor({ message, code, cause, name }) {\n    var _a2;\n    super(message, { cause });\n    this.__isWebAuthnError = true;\n    this.name = (_a2 = name !== null && name !== void 0 ? name : cause instanceof Error ? cause.name : void 0) !== null && _a2 !== void 0 ? _a2 : \"Unknown Error\";\n    this.code = code;\n  }\n};\nvar WebAuthnUnknownError = class extends WebAuthnError {\n  constructor(message, originalError) {\n    super({\n      code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n      cause: originalError,\n      message\n    });\n    this.name = \"WebAuthnUnknownError\";\n    this.originalError = originalError;\n  }\n};\nfunction identifyRegistrationError({ error, options }) {\n  var _a2, _b, _c;\n  const { publicKey } = options;\n  if (!publicKey) {\n    throw Error(\"options was missing required publicKey property\");\n  }\n  if (error.name === \"AbortError\") {\n    if (options.signal instanceof AbortSignal) {\n      return new WebAuthnError({\n        message: \"Registration ceremony was sent an abort signal\",\n        code: \"ERROR_CEREMONY_ABORTED\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"ConstraintError\") {\n    if (((_a2 = publicKey.authenticatorSelection) === null || _a2 === void 0 ? void 0 : _a2.requireResidentKey) === true) {\n      return new WebAuthnError({\n        message: \"Discoverable credentials were required but no available authenticator supported it\",\n        code: \"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT\",\n        cause: error\n      });\n    } else if (\n      // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n      options.mediation === \"conditional\" && ((_b = publicKey.authenticatorSelection) === null || _b === void 0 ? void 0 : _b.userVerification) === \"required\"\n    ) {\n      return new WebAuthnError({\n        message: \"User verification was required during automatic registration but it could not be performed\",\n        code: \"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE\",\n        cause: error\n      });\n    } else if (((_c = publicKey.authenticatorSelection) === null || _c === void 0 ? void 0 : _c.userVerification) === \"required\") {\n      return new WebAuthnError({\n        message: \"User verification was required but no available authenticator supported it\",\n        code: \"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"InvalidStateError\") {\n    return new WebAuthnError({\n      message: \"The authenticator was previously registered\",\n      code: \"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED\",\n      cause: error\n    });\n  } else if (error.name === \"NotAllowedError\") {\n    return new WebAuthnError({\n      message: error.message,\n      code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n      cause: error\n    });\n  } else if (error.name === \"NotSupportedError\") {\n    const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === \"public-key\");\n    if (validPubKeyCredParams.length === 0) {\n      return new WebAuthnError({\n        message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n        code: \"ERROR_MALFORMED_PUBKEYCREDPARAMS\",\n        cause: error\n      });\n    }\n    return new WebAuthnError({\n      message: \"No available authenticator supported any of the specified pubKeyCredParams algorithms\",\n      code: \"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG\",\n      cause: error\n    });\n  } else if (error.name === \"SecurityError\") {\n    const effectiveDomain = window.location.hostname;\n    if (!isValidDomain(effectiveDomain)) {\n      return new WebAuthnError({\n        message: `${window.location.hostname} is an invalid domain`,\n        code: \"ERROR_INVALID_DOMAIN\",\n        cause: error\n      });\n    } else if (publicKey.rp.id !== effectiveDomain) {\n      return new WebAuthnError({\n        message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n        code: \"ERROR_INVALID_RP_ID\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"TypeError\") {\n    if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n      return new WebAuthnError({\n        message: \"User ID was not between 1 and 64 characters\",\n        code: \"ERROR_INVALID_USER_ID_LENGTH\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"UnknownError\") {\n    return new WebAuthnError({\n      message: \"The authenticator was unable to process the specified options, or could not create a new credential\",\n      code: \"ERROR_AUTHENTICATOR_GENERAL_ERROR\",\n      cause: error\n    });\n  }\n  return new WebAuthnError({\n    message: \"a Non-Webauthn related error has occurred\",\n    code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n    cause: error\n  });\n}\nfunction identifyAuthenticationError({ error, options }) {\n  const { publicKey } = options;\n  if (!publicKey) {\n    throw Error(\"options was missing required publicKey property\");\n  }\n  if (error.name === \"AbortError\") {\n    if (options.signal instanceof AbortSignal) {\n      return new WebAuthnError({\n        message: \"Authentication ceremony was sent an abort signal\",\n        code: \"ERROR_CEREMONY_ABORTED\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"NotAllowedError\") {\n    return new WebAuthnError({\n      message: error.message,\n      code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n      cause: error\n    });\n  } else if (error.name === \"SecurityError\") {\n    const effectiveDomain = window.location.hostname;\n    if (!isValidDomain(effectiveDomain)) {\n      return new WebAuthnError({\n        message: `${window.location.hostname} is an invalid domain`,\n        code: \"ERROR_INVALID_DOMAIN\",\n        cause: error\n      });\n    } else if (publicKey.rpId !== effectiveDomain) {\n      return new WebAuthnError({\n        message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n        code: \"ERROR_INVALID_RP_ID\",\n        cause: error\n      });\n    }\n  } else if (error.name === \"UnknownError\") {\n    return new WebAuthnError({\n      message: \"The authenticator was unable to process the specified options, or could not create a new assertion signature\",\n      code: \"ERROR_AUTHENTICATOR_GENERAL_ERROR\",\n      cause: error\n    });\n  }\n  return new WebAuthnError({\n    message: \"a Non-Webauthn related error has occurred\",\n    code: \"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY\",\n    cause: error\n  });\n}\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/lib/webauthn.js\nvar WebAuthnAbortService = class {\n  /**\n   * Create an abort signal for a new WebAuthn operation.\n   * Automatically cancels any existing operation.\n   *\n   * @returns {AbortSignal} Signal to pass to navigator.credentials.create() or .get()\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal MDN - AbortSignal}\n   */\n  createNewAbortSignal() {\n    if (this.controller) {\n      const abortError = new Error(\"Cancelling existing WebAuthn API call for new one\");\n      abortError.name = \"AbortError\";\n      this.controller.abort(abortError);\n    }\n    const newController = new AbortController();\n    this.controller = newController;\n    return newController.signal;\n  }\n  /**\n   * Manually cancel the current WebAuthn operation.\n   * Useful for cleaning up when user cancels or navigates away.\n   *\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort MDN - AbortController.abort}\n   */\n  cancelCeremony() {\n    if (this.controller) {\n      const abortError = new Error(\"Manually cancelling existing WebAuthn API call\");\n      abortError.name = \"AbortError\";\n      this.controller.abort(abortError);\n      this.controller = void 0;\n    }\n  }\n};\nvar webAuthnAbortService = new WebAuthnAbortService();\nfunction deserializeCredentialCreationOptions(options) {\n  if (!options) {\n    throw new Error(\"Credential creation options are required\");\n  }\n  if (typeof PublicKeyCredential !== \"undefined\" && \"parseCreationOptionsFromJSON\" in PublicKeyCredential && typeof PublicKeyCredential.parseCreationOptionsFromJSON === \"function\") {\n    return PublicKeyCredential.parseCreationOptionsFromJSON(\n      /** we assert the options here as typescript still doesn't know about future webauthn types */\n      options\n    );\n  }\n  const { challenge: challengeStr, user: userOpts, excludeCredentials } = options, restOptions = __rest(\n    options,\n    [\"challenge\", \"user\", \"excludeCredentials\"]\n  );\n  const challenge = base64UrlToUint8Array(challengeStr).buffer;\n  const user = Object.assign(Object.assign({}, userOpts), { id: base64UrlToUint8Array(userOpts.id).buffer });\n  const result = Object.assign(Object.assign({}, restOptions), {\n    challenge,\n    user\n  });\n  if (excludeCredentials && excludeCredentials.length > 0) {\n    result.excludeCredentials = new Array(excludeCredentials.length);\n    for (let i = 0; i < excludeCredentials.length; i++) {\n      const cred = excludeCredentials[i];\n      result.excludeCredentials[i] = Object.assign(Object.assign({}, cred), {\n        id: base64UrlToUint8Array(cred.id).buffer,\n        type: cred.type || \"public-key\",\n        // Cast transports to handle future transport types like \"cable\"\n        transports: cred.transports\n      });\n    }\n  }\n  return result;\n}\nfunction deserializeCredentialRequestOptions(options) {\n  if (!options) {\n    throw new Error(\"Credential request options are required\");\n  }\n  if (typeof PublicKeyCredential !== \"undefined\" && \"parseRequestOptionsFromJSON\" in PublicKeyCredential && typeof PublicKeyCredential.parseRequestOptionsFromJSON === \"function\") {\n    return PublicKeyCredential.parseRequestOptionsFromJSON(options);\n  }\n  const { challenge: challengeStr, allowCredentials } = options, restOptions = __rest(\n    options,\n    [\"challenge\", \"allowCredentials\"]\n  );\n  const challenge = base64UrlToUint8Array(challengeStr).buffer;\n  const result = Object.assign(Object.assign({}, restOptions), { challenge });\n  if (allowCredentials && allowCredentials.length > 0) {\n    result.allowCredentials = new Array(allowCredentials.length);\n    for (let i = 0; i < allowCredentials.length; i++) {\n      const cred = allowCredentials[i];\n      result.allowCredentials[i] = Object.assign(Object.assign({}, cred), {\n        id: base64UrlToUint8Array(cred.id).buffer,\n        type: cred.type || \"public-key\",\n        // Cast transports to handle future transport types like \"cable\"\n        transports: cred.transports\n      });\n    }\n  }\n  return result;\n}\nfunction serializeCredentialCreationResponse(credential) {\n  var _a2;\n  if (\"toJSON\" in credential && typeof credential.toJSON === \"function\") {\n    return credential.toJSON();\n  }\n  const credentialWithAttachment = credential;\n  return {\n    id: credential.id,\n    rawId: credential.id,\n    response: {\n      attestationObject: bytesToBase64URL(new Uint8Array(credential.response.attestationObject)),\n      clientDataJSON: bytesToBase64URL(new Uint8Array(credential.response.clientDataJSON))\n    },\n    type: \"public-key\",\n    clientExtensionResults: credential.getClientExtensionResults(),\n    // Convert null to undefined and cast to AuthenticatorAttachment type\n    authenticatorAttachment: (_a2 = credentialWithAttachment.authenticatorAttachment) !== null && _a2 !== void 0 ? _a2 : void 0\n  };\n}\nfunction serializeCredentialRequestResponse(credential) {\n  var _a2;\n  if (\"toJSON\" in credential && typeof credential.toJSON === \"function\") {\n    return credential.toJSON();\n  }\n  const credentialWithAttachment = credential;\n  const clientExtensionResults = credential.getClientExtensionResults();\n  const assertionResponse = credential.response;\n  return {\n    id: credential.id,\n    rawId: credential.id,\n    // W3C spec expects rawId to match id for JSON format\n    response: {\n      authenticatorData: bytesToBase64URL(new Uint8Array(assertionResponse.authenticatorData)),\n      clientDataJSON: bytesToBase64URL(new Uint8Array(assertionResponse.clientDataJSON)),\n      signature: bytesToBase64URL(new Uint8Array(assertionResponse.signature)),\n      userHandle: assertionResponse.userHandle ? bytesToBase64URL(new Uint8Array(assertionResponse.userHandle)) : void 0\n    },\n    type: \"public-key\",\n    clientExtensionResults,\n    // Convert null to undefined and cast to AuthenticatorAttachment type\n    authenticatorAttachment: (_a2 = credentialWithAttachment.authenticatorAttachment) !== null && _a2 !== void 0 ? _a2 : void 0\n  };\n}\nfunction isValidDomain(hostname) {\n  return (\n    // Consider localhost valid as well since it's okay wrt Secure Contexts\n    hostname === \"localhost\" || /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname)\n  );\n}\nfunction browserSupportsWebAuthn() {\n  var _a2, _b;\n  return !!(isBrowser() && \"PublicKeyCredential\" in window && window.PublicKeyCredential && \"credentials\" in navigator && typeof ((_a2 = navigator === null || navigator === void 0 ? void 0 : navigator.credentials) === null || _a2 === void 0 ? void 0 : _a2.create) === \"function\" && typeof ((_b = navigator === null || navigator === void 0 ? void 0 : navigator.credentials) === null || _b === void 0 ? void 0 : _b.get) === \"function\");\n}\nfunction createCredential(options) {\n  return __async(this, null, function* () {\n    try {\n      const response = yield navigator.credentials.create(\n        /** we assert the type here until typescript types are updated */\n        options\n      );\n      if (!response) {\n        return {\n          data: null,\n          error: new WebAuthnUnknownError(\"Empty credential response\", response)\n        };\n      }\n      if (!(response instanceof PublicKeyCredential)) {\n        return {\n          data: null,\n          error: new WebAuthnUnknownError(\"Browser returned unexpected credential type\", response)\n        };\n      }\n      return { data: response, error: null };\n    } catch (err) {\n      return {\n        data: null,\n        error: identifyRegistrationError({\n          error: err,\n          options\n        })\n      };\n    }\n  });\n}\nfunction getCredential(options) {\n  return __async(this, null, function* () {\n    try {\n      const response = yield navigator.credentials.get(\n        /** we assert the type here until typescript types are updated */\n        options\n      );\n      if (!response) {\n        return {\n          data: null,\n          error: new WebAuthnUnknownError(\"Empty credential response\", response)\n        };\n      }\n      if (!(response instanceof PublicKeyCredential)) {\n        return {\n          data: null,\n          error: new WebAuthnUnknownError(\"Browser returned unexpected credential type\", response)\n        };\n      }\n      return { data: response, error: null };\n    } catch (err) {\n      return {\n        data: null,\n        error: identifyAuthenticationError({\n          error: err,\n          options\n        })\n      };\n    }\n  });\n}\nvar DEFAULT_CREATION_OPTIONS = {\n  hints: [\"security-key\"],\n  authenticatorSelection: {\n    authenticatorAttachment: \"cross-platform\",\n    requireResidentKey: false,\n    /** set to preferred because older yubikeys don't have PIN/Biometric */\n    userVerification: \"preferred\",\n    residentKey: \"discouraged\"\n  },\n  attestation: \"direct\"\n};\nvar DEFAULT_REQUEST_OPTIONS = {\n  /** set to preferred because older yubikeys don't have PIN/Biometric */\n  userVerification: \"preferred\",\n  hints: [\"security-key\"],\n  attestation: \"direct\"\n};\nfunction deepMerge(...sources) {\n  const isObject = (val) => val !== null && typeof val === \"object\" && !Array.isArray(val);\n  const isArrayBufferLike = (val) => val instanceof ArrayBuffer || ArrayBuffer.isView(val);\n  const result = {};\n  for (const source of sources) {\n    if (!source)\n      continue;\n    for (const key in source) {\n      const value = source[key];\n      if (value === void 0)\n        continue;\n      if (Array.isArray(value)) {\n        result[key] = value;\n      } else if (isArrayBufferLike(value)) {\n        result[key] = value;\n      } else if (isObject(value)) {\n        const existing = result[key];\n        if (isObject(existing)) {\n          result[key] = deepMerge(existing, value);\n        } else {\n          result[key] = deepMerge(value);\n        }\n      } else {\n        result[key] = value;\n      }\n    }\n  }\n  return result;\n}\nfunction mergeCredentialCreationOptions(baseOptions, overrides) {\n  return deepMerge(DEFAULT_CREATION_OPTIONS, baseOptions, overrides || {});\n}\nfunction mergeCredentialRequestOptions(baseOptions, overrides) {\n  return deepMerge(DEFAULT_REQUEST_OPTIONS, baseOptions, overrides || {});\n}\nvar WebAuthnApi = class {\n  constructor(client) {\n    this.client = client;\n    this.enroll = this._enroll.bind(this);\n    this.challenge = this._challenge.bind(this);\n    this.verify = this._verify.bind(this);\n    this.authenticate = this._authenticate.bind(this);\n    this.register = this._register.bind(this);\n  }\n  /**\n   * Enroll a new WebAuthn factor.\n   * Creates an unverified WebAuthn factor that must be verified with a credential.\n   *\n   * @experimental This method is experimental and may change in future releases\n   * @param {Omit<MFAEnrollWebauthnParams, 'factorType'>} params - Enrollment parameters (friendlyName required)\n   * @returns {Promise<AuthMFAEnrollWebauthnResponse>} Enrolled factor details or error\n   * @see {@link https://w3c.github.io/webauthn/#sctn-registering-a-new-credential W3C WebAuthn Spec - Registering a New Credential}\n   */\n  _enroll(params) {\n    return __async(this, null, function* () {\n      return this.client.mfa.enroll(Object.assign(Object.assign({}, params), { factorType: \"webauthn\" }));\n    });\n  }\n  /**\n   * Challenge for WebAuthn credential creation or authentication.\n   * Combines server challenge with browser credential operations.\n   * Handles both registration (create) and authentication (request) flows.\n   *\n   * @experimental This method is experimental and may change in future releases\n   * @param {MFAChallengeWebauthnParams & { friendlyName?: string; signal?: AbortSignal }} params - Challenge parameters including factorId\n   * @param {Object} overrides - Allows you to override the parameters passed to navigator.credentials\n   * @param {PublicKeyCredentialCreationOptionsFuture} overrides.create - Override options for credential creation\n   * @param {PublicKeyCredentialRequestOptionsFuture} overrides.request - Override options for credential request\n   * @returns {Promise<RequestResult>} Challenge response with credential or error\n   * @see {@link https://w3c.github.io/webauthn/#sctn-credential-creation W3C WebAuthn Spec - Credential Creation}\n   * @see {@link https://w3c.github.io/webauthn/#sctn-verifying-assertion W3C WebAuthn Spec - Verifying Assertion}\n   */\n  _challenge(_0, _1) {\n    return __async(this, arguments, function* ({ factorId, webauthn, friendlyName, signal }, overrides) {\n      try {\n        const { data: challengeResponse, error: challengeError } = yield this.client.mfa.challenge({\n          factorId,\n          webauthn\n        });\n        if (!challengeResponse) {\n          return { data: null, error: challengeError };\n        }\n        const abortSignal = signal !== null && signal !== void 0 ? signal : webAuthnAbortService.createNewAbortSignal();\n        if (challengeResponse.webauthn.type === \"create\") {\n          const { user } = challengeResponse.webauthn.credential_options.publicKey;\n          if (!user.name) {\n            user.name = `${user.id}:${friendlyName}`;\n          }\n          if (!user.displayName) {\n            user.displayName = user.name;\n          }\n        }\n        switch (challengeResponse.webauthn.type) {\n          case \"create\": {\n            const options = mergeCredentialCreationOptions(challengeResponse.webauthn.credential_options.publicKey, overrides === null || overrides === void 0 ? void 0 : overrides.create);\n            const { data, error } = yield createCredential({\n              publicKey: options,\n              signal: abortSignal\n            });\n            if (data) {\n              return {\n                data: {\n                  factorId,\n                  challengeId: challengeResponse.id,\n                  webauthn: {\n                    type: challengeResponse.webauthn.type,\n                    credential_response: data\n                  }\n                },\n                error: null\n              };\n            }\n            return { data: null, error };\n          }\n          case \"request\": {\n            const options = mergeCredentialRequestOptions(challengeResponse.webauthn.credential_options.publicKey, overrides === null || overrides === void 0 ? void 0 : overrides.request);\n            const { data, error } = yield getCredential(Object.assign(Object.assign({}, challengeResponse.webauthn.credential_options), { publicKey: options, signal: abortSignal }));\n            if (data) {\n              return {\n                data: {\n                  factorId,\n                  challengeId: challengeResponse.id,\n                  webauthn: {\n                    type: challengeResponse.webauthn.type,\n                    credential_response: data\n                  }\n                },\n                error: null\n              };\n            }\n            return { data: null, error };\n          }\n        }\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        return {\n          data: null,\n          error: new AuthUnknownError(\"Unexpected error in challenge\", error)\n        };\n      }\n    });\n  }\n  /**\n   * Verify a WebAuthn credential with the server.\n   * Completes the WebAuthn ceremony by sending the credential to the server for verification.\n   *\n   * @experimental This method is experimental and may change in future releases\n   * @param {Object} params - Verification parameters\n   * @param {string} params.challengeId - ID of the challenge being verified\n   * @param {string} params.factorId - ID of the WebAuthn factor\n   * @param {MFAVerifyWebauthnParams<T>['webauthn']} params.webauthn - WebAuthn credential response\n   * @returns {Promise<AuthMFAVerifyResponse>} Verification result with session or error\n   * @see {@link https://w3c.github.io/webauthn/#sctn-verifying-assertion W3C WebAuthn Spec - Verifying an Authentication Assertion}\n   * */\n  _verify(_0) {\n    return __async(this, arguments, function* ({ challengeId, factorId, webauthn }) {\n      return this.client.mfa.verify({\n        factorId,\n        challengeId,\n        webauthn\n      });\n    });\n  }\n  /**\n   * Complete WebAuthn authentication flow.\n   * Performs challenge and verification in a single operation for existing credentials.\n   *\n   * @experimental This method is experimental and may change in future releases\n   * @param {Object} params - Authentication parameters\n   * @param {string} params.factorId - ID of the WebAuthn factor to authenticate with\n   * @param {Object} params.webauthn - WebAuthn configuration\n   * @param {string} params.webauthn.rpId - Relying Party ID (defaults to current hostname)\n   * @param {string[]} params.webauthn.rpOrigins - Allowed origins (defaults to current origin)\n   * @param {AbortSignal} params.webauthn.signal - Optional abort signal\n   * @param {PublicKeyCredentialRequestOptionsFuture} overrides - Override options for navigator.credentials.get\n   * @returns {Promise<RequestResult<AuthMFAVerifyResponseData, WebAuthnError | AuthError>>} Authentication result\n   * @see {@link https://w3c.github.io/webauthn/#sctn-authentication W3C WebAuthn Spec - Authentication Ceremony}\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialRequestOptions MDN - PublicKeyCredentialRequestOptions}\n   */\n  _authenticate(_0, _1) {\n    return __async(this, arguments, function* ({ factorId, webauthn: { rpId = typeof window !== \"undefined\" ? window.location.hostname : void 0, rpOrigins = typeof window !== \"undefined\" ? [window.location.origin] : void 0, signal } = {} }, overrides) {\n      if (!rpId) {\n        return {\n          data: null,\n          error: new AuthError(\"rpId is required for WebAuthn authentication\")\n        };\n      }\n      try {\n        if (!browserSupportsWebAuthn()) {\n          return {\n            data: null,\n            error: new AuthUnknownError(\"Browser does not support WebAuthn\", null)\n          };\n        }\n        const { data: challengeResponse, error: challengeError } = yield this.challenge({\n          factorId,\n          webauthn: { rpId, rpOrigins },\n          signal\n        }, { request: overrides });\n        if (!challengeResponse) {\n          return { data: null, error: challengeError };\n        }\n        const { webauthn } = challengeResponse;\n        return this._verify({\n          factorId,\n          challengeId: challengeResponse.challengeId,\n          webauthn: {\n            type: webauthn.type,\n            rpId,\n            rpOrigins,\n            credential_response: webauthn.credential_response\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        return {\n          data: null,\n          error: new AuthUnknownError(\"Unexpected error in authenticate\", error)\n        };\n      }\n    });\n  }\n  /**\n   * Complete WebAuthn registration flow.\n   * Performs enrollment, challenge, and verification in a single operation for new credentials.\n   *\n   * @experimental This method is experimental and may change in future releases\n   * @param {Object} params - Registration parameters\n   * @param {string} params.friendlyName - User-friendly name for the credential\n   * @param {string} params.rpId - Relying Party ID (defaults to current hostname)\n   * @param {string[]} params.rpOrigins - Allowed origins (defaults to current origin)\n   * @param {AbortSignal} params.signal - Optional abort signal\n   * @param {PublicKeyCredentialCreationOptionsFuture} overrides - Override options for navigator.credentials.create\n   * @returns {Promise<RequestResult<AuthMFAVerifyResponseData, WebAuthnError | AuthError>>} Registration result\n   * @see {@link https://w3c.github.io/webauthn/#sctn-registering-a-new-credential W3C WebAuthn Spec - Registration Ceremony}\n   * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions MDN - PublicKeyCredentialCreationOptions}\n   */\n  _register(_0, _1) {\n    return __async(this, arguments, function* ({ friendlyName, webauthn: { rpId = typeof window !== \"undefined\" ? window.location.hostname : void 0, rpOrigins = typeof window !== \"undefined\" ? [window.location.origin] : void 0, signal } = {} }, overrides) {\n      if (!rpId) {\n        return {\n          data: null,\n          error: new AuthError(\"rpId is required for WebAuthn registration\")\n        };\n      }\n      try {\n        if (!browserSupportsWebAuthn()) {\n          return {\n            data: null,\n            error: new AuthUnknownError(\"Browser does not support WebAuthn\", null)\n          };\n        }\n        const { data: factor, error: enrollError } = yield this._enroll({\n          friendlyName\n        });\n        if (!factor) {\n          yield this.client.mfa.listFactors().then((factors) => {\n            var _a2;\n            return (_a2 = factors.data) === null || _a2 === void 0 ? void 0 : _a2.all.find((v) => v.factor_type === \"webauthn\" && v.friendly_name === friendlyName && v.status !== \"unverified\");\n          }).then((factor2) => factor2 ? this.client.mfa.unenroll({ factorId: factor2 === null || factor2 === void 0 ? void 0 : factor2.id }) : void 0);\n          return { data: null, error: enrollError };\n        }\n        const { data: challengeResponse, error: challengeError } = yield this._challenge({\n          factorId: factor.id,\n          friendlyName: factor.friendly_name,\n          webauthn: { rpId, rpOrigins },\n          signal\n        }, {\n          create: overrides\n        });\n        if (!challengeResponse) {\n          return { data: null, error: challengeError };\n        }\n        return this._verify({\n          factorId: factor.id,\n          challengeId: challengeResponse.challengeId,\n          webauthn: {\n            rpId,\n            rpOrigins,\n            type: challengeResponse.webauthn.type,\n            credential_response: challengeResponse.webauthn.credential_response\n          }\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return { data: null, error };\n        }\n        return {\n          data: null,\n          error: new AuthUnknownError(\"Unexpected error in register\", error)\n        };\n      }\n    });\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/GoTrueClient.js\npolyfillGlobalThis();\nvar DEFAULT_OPTIONS = {\n  url: GOTRUE_URL,\n  storageKey: STORAGE_KEY,\n  autoRefreshToken: true,\n  persistSession: true,\n  detectSessionInUrl: true,\n  headers: DEFAULT_HEADERS4,\n  flowType: \"implicit\",\n  debug: false,\n  hasCustomAuthorizationHeader: false,\n  throwOnError: false\n};\nfunction lockNoOp(name, acquireTimeout, fn) {\n  return __async(this, null, function* () {\n    return yield fn();\n  });\n}\nvar GLOBAL_JWKS = {};\nvar GoTrueClient = class _GoTrueClient {\n  /**\n   * The JWKS used for verifying asymmetric JWTs\n   */\n  get jwks() {\n    var _a2, _b;\n    return (_b = (_a2 = GLOBAL_JWKS[this.storageKey]) === null || _a2 === void 0 ? void 0 : _a2.jwks) !== null && _b !== void 0 ? _b : { keys: [] };\n  }\n  set jwks(value) {\n    GLOBAL_JWKS[this.storageKey] = Object.assign(Object.assign({}, GLOBAL_JWKS[this.storageKey]), { jwks: value });\n  }\n  get jwks_cached_at() {\n    var _a2, _b;\n    return (_b = (_a2 = GLOBAL_JWKS[this.storageKey]) === null || _a2 === void 0 ? void 0 : _a2.cachedAt) !== null && _b !== void 0 ? _b : Number.MIN_SAFE_INTEGER;\n  }\n  set jwks_cached_at(value) {\n    GLOBAL_JWKS[this.storageKey] = Object.assign(Object.assign({}, GLOBAL_JWKS[this.storageKey]), { cachedAt: value });\n  }\n  /**\n   * Create a new client for use in the browser.\n   *\n   * @example\n   * ```ts\n   * import { GoTrueClient } from '@supabase/auth-js'\n   *\n   * const auth = new GoTrueClient({\n   *   url: 'https://xyzcompany.supabase.co/auth/v1',\n   *   headers: { apikey: 'public-anon-key' },\n   *   storageKey: 'supabase-auth',\n   * })\n   * ```\n   */\n  constructor(options) {\n    var _a2, _b, _c;\n    this.userStorage = null;\n    this.memoryStorage = null;\n    this.stateChangeEmitters = /* @__PURE__ */ new Map();\n    this.autoRefreshTicker = null;\n    this.visibilityChangedCallback = null;\n    this.refreshingDeferred = null;\n    this.initializePromise = null;\n    this.detectSessionInUrl = true;\n    this.hasCustomAuthorizationHeader = false;\n    this.suppressGetSessionWarning = false;\n    this.lockAcquired = false;\n    this.pendingInLock = [];\n    this.broadcastChannel = null;\n    this.logger = console.log;\n    const settings = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n    this.storageKey = settings.storageKey;\n    this.instanceID = (_a2 = _GoTrueClient.nextInstanceID[this.storageKey]) !== null && _a2 !== void 0 ? _a2 : 0;\n    _GoTrueClient.nextInstanceID[this.storageKey] = this.instanceID + 1;\n    this.logDebugMessages = !!settings.debug;\n    if (typeof settings.debug === \"function\") {\n      this.logger = settings.debug;\n    }\n    if (this.instanceID > 0 && isBrowser()) {\n      const message = `${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;\n      console.warn(message);\n      if (this.logDebugMessages) {\n        console.trace(message);\n      }\n    }\n    this.persistSession = settings.persistSession;\n    this.autoRefreshToken = settings.autoRefreshToken;\n    this.admin = new GoTrueAdminApi({\n      url: settings.url,\n      headers: settings.headers,\n      fetch: settings.fetch\n    });\n    this.url = settings.url;\n    this.headers = settings.headers;\n    this.fetch = resolveFetch5(settings.fetch);\n    this.lock = settings.lock || lockNoOp;\n    this.detectSessionInUrl = settings.detectSessionInUrl;\n    this.flowType = settings.flowType;\n    this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader;\n    this.throwOnError = settings.throwOnError;\n    if (settings.lock) {\n      this.lock = settings.lock;\n    } else if (isBrowser() && ((_b = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _b === void 0 ? void 0 : _b.locks)) {\n      this.lock = navigatorLock;\n    } else {\n      this.lock = lockNoOp;\n    }\n    if (!this.jwks) {\n      this.jwks = { keys: [] };\n      this.jwks_cached_at = Number.MIN_SAFE_INTEGER;\n    }\n    this.mfa = {\n      verify: this._verify.bind(this),\n      enroll: this._enroll.bind(this),\n      unenroll: this._unenroll.bind(this),\n      challenge: this._challenge.bind(this),\n      listFactors: this._listFactors.bind(this),\n      challengeAndVerify: this._challengeAndVerify.bind(this),\n      getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this),\n      webauthn: new WebAuthnApi(this)\n    };\n    this.oauth = {\n      getAuthorizationDetails: this._getAuthorizationDetails.bind(this),\n      approveAuthorization: this._approveAuthorization.bind(this),\n      denyAuthorization: this._denyAuthorization.bind(this),\n      listGrants: this._listOAuthGrants.bind(this),\n      revokeGrant: this._revokeOAuthGrant.bind(this)\n    };\n    if (this.persistSession) {\n      if (settings.storage) {\n        this.storage = settings.storage;\n      } else {\n        if (supportsLocalStorage()) {\n          this.storage = globalThis.localStorage;\n        } else {\n          this.memoryStorage = {};\n          this.storage = memoryLocalStorageAdapter(this.memoryStorage);\n        }\n      }\n      if (settings.userStorage) {\n        this.userStorage = settings.userStorage;\n      }\n    } else {\n      this.memoryStorage = {};\n      this.storage = memoryLocalStorageAdapter(this.memoryStorage);\n    }\n    if (isBrowser() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) {\n      try {\n        this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey);\n      } catch (e) {\n        console.error(\"Failed to create a new BroadcastChannel, multi-tab state changes will not be available\", e);\n      }\n      (_c = this.broadcastChannel) === null || _c === void 0 ? void 0 : _c.addEventListener(\"message\", (event) => __async(this, null, function* () {\n        this._debug(\"received broadcast notification from other tab or client\", event);\n        yield this._notifyAllSubscribers(event.data.event, event.data.session, false);\n      }));\n    }\n    this.initialize();\n  }\n  /**\n   * Returns whether error throwing mode is enabled for this client.\n   */\n  isThrowOnErrorEnabled() {\n    return this.throwOnError;\n  }\n  /**\n   * Centralizes return handling with optional error throwing. When `throwOnError` is enabled\n   * and the provided result contains a non-nullish error, the error is thrown instead of\n   * being returned. This ensures consistent behavior across all public API methods.\n   */\n  _returnResult(result) {\n    if (this.throwOnError && result && result.error) {\n      throw result.error;\n    }\n    return result;\n  }\n  _logPrefix() {\n    return `GoTrueClient@${this.storageKey}:${this.instanceID} (${version4}) ${(/* @__PURE__ */ new Date()).toISOString()}`;\n  }\n  _debug(...args) {\n    if (this.logDebugMessages) {\n      this.logger(this._logPrefix(), ...args);\n    }\n    return this;\n  }\n  /**\n   * Initializes the client session either from the url or from storage.\n   * This method is automatically called when instantiating the client, but should also be called\n   * manually when checking for an error from an auth redirect (oauth, magiclink, password recovery, etc).\n   */\n  initialize() {\n    return __async(this, null, function* () {\n      if (this.initializePromise) {\n        return yield this.initializePromise;\n      }\n      this.initializePromise = (() => __async(this, null, function* () {\n        return yield this._acquireLock(-1, () => __async(this, null, function* () {\n          return yield this._initialize();\n        }));\n      }))();\n      return yield this.initializePromise;\n    });\n  }\n  /**\n   * IMPORTANT:\n   * 1. Never throw in this method, as it is called from the constructor\n   * 2. Never return a session from this method as it would be cached over\n   *    the whole lifetime of the client\n   */\n  _initialize() {\n    return __async(this, null, function* () {\n      var _a2;\n      try {\n        let params = {};\n        let callbackUrlType = \"none\";\n        if (isBrowser()) {\n          params = parseParametersFromURL(window.location.href);\n          if (this._isImplicitGrantCallback(params)) {\n            callbackUrlType = \"implicit\";\n          } else if (yield this._isPKCECallback(params)) {\n            callbackUrlType = \"pkce\";\n          }\n        }\n        if (isBrowser() && this.detectSessionInUrl && callbackUrlType !== \"none\") {\n          const { data, error } = yield this._getSessionFromURL(params, callbackUrlType);\n          if (error) {\n            this._debug(\"#_initialize()\", \"error detecting session from URL\", error);\n            if (isAuthImplicitGrantRedirectError(error)) {\n              const errorCode = (_a2 = error.details) === null || _a2 === void 0 ? void 0 : _a2.code;\n              if (errorCode === \"identity_already_exists\" || errorCode === \"identity_not_found\" || errorCode === \"single_identity_not_deletable\") {\n                return { error };\n              }\n            }\n            yield this._removeSession();\n            return { error };\n          }\n          const { session, redirectType } = data;\n          this._debug(\"#_initialize()\", \"detected session in URL\", session, \"redirect type\", redirectType);\n          yield this._saveSession(session);\n          setTimeout(() => __async(this, null, function* () {\n            if (redirectType === \"recovery\") {\n              yield this._notifyAllSubscribers(\"PASSWORD_RECOVERY\", session);\n            } else {\n              yield this._notifyAllSubscribers(\"SIGNED_IN\", session);\n            }\n          }), 0);\n          return { error: null };\n        }\n        yield this._recoverAndRefresh();\n        return { error: null };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ error });\n        }\n        return this._returnResult({\n          error: new AuthUnknownError(\"Unexpected error during initialization\", error)\n        });\n      } finally {\n        yield this._handleVisibilityChange();\n        this._debug(\"#_initialize()\", \"end\");\n      }\n    });\n  }\n  /**\n   * Creates a new anonymous user.\n   *\n   * @returns A session where the is_anonymous claim in the access token JWT set to true\n   */\n  signInAnonymously(credentials) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c;\n      try {\n        const res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n          headers: this.headers,\n          body: {\n            data: (_b = (_a2 = credentials === null || credentials === void 0 ? void 0 : credentials.options) === null || _a2 === void 0 ? void 0 : _a2.data) !== null && _b !== void 0 ? _b : {},\n            gotrue_meta_security: { captcha_token: (_c = credentials === null || credentials === void 0 ? void 0 : credentials.options) === null || _c === void 0 ? void 0 : _c.captchaToken }\n          },\n          xform: _sessionResponse\n        });\n        const { data, error } = res;\n        if (error || !data) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        const session = data.session;\n        const user = data.user;\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return this._returnResult({ data: { user, session }, error: null });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Creates a new user.\n   *\n   * Be aware that if a user account exists in the system you may get back an\n   * error message that attempts to hide this information from the user.\n   * This method has support for PKCE via email signups. The PKCE flow cannot be used when autoconfirm is enabled.\n   *\n   * @returns A logged-in session if the server has \"autoconfirm\" ON\n   * @returns A user if the server has \"autoconfirm\" OFF\n   */\n  signUp(credentials) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c;\n      try {\n        let res;\n        if (\"email\" in credentials) {\n          const { email, password, options } = credentials;\n          let codeChallenge = null;\n          let codeChallengeMethod = null;\n          if (this.flowType === \"pkce\") {\n            ;\n            [codeChallenge, codeChallengeMethod] = yield getCodeChallengeAndMethod(this.storage, this.storageKey);\n          }\n          res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n            headers: this.headers,\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n            body: {\n              email,\n              password,\n              data: (_a2 = options === null || options === void 0 ? void 0 : options.data) !== null && _a2 !== void 0 ? _a2 : {},\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken },\n              code_challenge: codeChallenge,\n              code_challenge_method: codeChallengeMethod\n            },\n            xform: _sessionResponse\n          });\n        } else if (\"phone\" in credentials) {\n          const { phone, password, options } = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/signup`, {\n            headers: this.headers,\n            body: {\n              phone,\n              password,\n              data: (_b = options === null || options === void 0 ? void 0 : options.data) !== null && _b !== void 0 ? _b : {},\n              channel: (_c = options === null || options === void 0 ? void 0 : options.channel) !== null && _c !== void 0 ? _c : \"sms\",\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n            },\n            xform: _sessionResponse\n          });\n        } else {\n          throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n        }\n        const { data, error } = res;\n        if (error || !data) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        const session = data.session;\n        const user = data.user;\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return this._returnResult({ data: { user, session }, error: null });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Log in an existing user with an email and password or phone and password.\n   *\n   * Be aware that you may get back an error message that will not distinguish\n   * between the cases where the account does not exist or that the\n   * email/phone and password combination is wrong or that the account can only\n   * be accessed via social login.\n   */\n  signInWithPassword(credentials) {\n    return __async(this, null, function* () {\n      try {\n        let res;\n        if (\"email\" in credentials) {\n          const { email, password, options } = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n            headers: this.headers,\n            body: {\n              email,\n              password,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n            },\n            xform: _sessionResponsePassword\n          });\n        } else if (\"phone\" in credentials) {\n          const { phone, password, options } = credentials;\n          res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=password`, {\n            headers: this.headers,\n            body: {\n              phone,\n              password,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n            },\n            xform: _sessionResponsePassword\n          });\n        } else {\n          throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a password\");\n        }\n        const { data, error } = res;\n        if (error) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        } else if (!data || !data.session || !data.user) {\n          const invalidTokenError = new AuthInvalidTokenResponseError();\n          return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });\n        }\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return this._returnResult({\n          data: Object.assign({ user: data.user, session: data.session }, data.weak_password ? { weakPassword: data.weak_password } : null),\n          error\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Log in an existing user via a third-party provider.\n   * This method supports the PKCE flow.\n   */\n  signInWithOAuth(credentials) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d;\n      return yield this._handleProviderSignIn(credentials.provider, {\n        redirectTo: (_a2 = credentials.options) === null || _a2 === void 0 ? void 0 : _a2.redirectTo,\n        scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,\n        queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,\n        skipBrowserRedirect: (_d = credentials.options) === null || _d === void 0 ? void 0 : _d.skipBrowserRedirect\n      });\n    });\n  }\n  /**\n   * Log in an existing user by exchanging an Auth Code issued during the PKCE flow.\n   */\n  exchangeCodeForSession(authCode) {\n    return __async(this, null, function* () {\n      yield this.initializePromise;\n      return this._acquireLock(-1, () => __async(this, null, function* () {\n        return this._exchangeCodeForSession(authCode);\n      }));\n    });\n  }\n  /**\n   * Signs in a user by verifying a message signed by the user's private key.\n   * Supports Ethereum (via Sign-In-With-Ethereum) & Solana (Sign-In-With-Solana) standards,\n   * both of which derive from the EIP-4361 standard\n   * With slight variation on Solana's side.\n   * @reference https://eips.ethereum.org/EIPS/eip-4361\n   */\n  signInWithWeb3(credentials) {\n    return __async(this, null, function* () {\n      const { chain } = credentials;\n      switch (chain) {\n        case \"ethereum\":\n          return yield this.signInWithEthereum(credentials);\n        case \"solana\":\n          return yield this.signInWithSolana(credentials);\n        default:\n          throw new Error(`@supabase/auth-js: Unsupported chain \"${chain}\"`);\n      }\n    });\n  }\n  signInWithEthereum(credentials) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n      let message;\n      let signature;\n      if (\"message\" in credentials) {\n        message = credentials.message;\n        signature = credentials.signature;\n      } else {\n        const { chain, wallet, statement, options } = credentials;\n        let resolvedWallet;\n        if (!isBrowser()) {\n          if (typeof wallet !== \"object\" || !(options === null || options === void 0 ? void 0 : options.url)) {\n            throw new Error(\"@supabase/auth-js: Both wallet and url must be specified in non-browser environments.\");\n          }\n          resolvedWallet = wallet;\n        } else if (typeof wallet === \"object\") {\n          resolvedWallet = wallet;\n        } else {\n          const windowAny = window;\n          if (\"ethereum\" in windowAny && typeof windowAny.ethereum === \"object\" && \"request\" in windowAny.ethereum && typeof windowAny.ethereum.request === \"function\") {\n            resolvedWallet = windowAny.ethereum;\n          } else {\n            throw new Error(`@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.`);\n          }\n        }\n        const url = new URL((_a2 = options === null || options === void 0 ? void 0 : options.url) !== null && _a2 !== void 0 ? _a2 : window.location.href);\n        const accounts = yield resolvedWallet.request({\n          method: \"eth_requestAccounts\"\n        }).then((accs) => accs).catch(() => {\n          throw new Error(`@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid`);\n        });\n        if (!accounts || accounts.length === 0) {\n          throw new Error(`@supabase/auth-js: No accounts available. Please ensure the wallet is connected.`);\n        }\n        const address = getAddress(accounts[0]);\n        let chainId = (_b = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _b === void 0 ? void 0 : _b.chainId;\n        if (!chainId) {\n          const chainIdHex = yield resolvedWallet.request({\n            method: \"eth_chainId\"\n          });\n          chainId = fromHex(chainIdHex);\n        }\n        const siweMessage = {\n          domain: url.host,\n          address,\n          statement,\n          uri: url.href,\n          version: \"1\",\n          chainId,\n          nonce: (_c = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _c === void 0 ? void 0 : _c.nonce,\n          issuedAt: (_e = (_d = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _d === void 0 ? void 0 : _d.issuedAt) !== null && _e !== void 0 ? _e : /* @__PURE__ */ new Date(),\n          expirationTime: (_f = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _f === void 0 ? void 0 : _f.expirationTime,\n          notBefore: (_g = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _g === void 0 ? void 0 : _g.notBefore,\n          requestId: (_h = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _h === void 0 ? void 0 : _h.requestId,\n          resources: (_j = options === null || options === void 0 ? void 0 : options.signInWithEthereum) === null || _j === void 0 ? void 0 : _j.resources\n        };\n        message = createSiweMessage(siweMessage);\n        signature = yield resolvedWallet.request({\n          method: \"personal_sign\",\n          params: [toHex(message), address]\n        });\n      }\n      try {\n        const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=web3`, {\n          headers: this.headers,\n          body: Object.assign({\n            chain: \"ethereum\",\n            message,\n            signature\n          }, ((_k = credentials.options) === null || _k === void 0 ? void 0 : _k.captchaToken) ? { gotrue_meta_security: { captcha_token: (_l = credentials.options) === null || _l === void 0 ? void 0 : _l.captchaToken } } : null),\n          xform: _sessionResponse\n        });\n        if (error) {\n          throw error;\n        }\n        if (!data || !data.session || !data.user) {\n          const invalidTokenError = new AuthInvalidTokenResponseError();\n          return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });\n        }\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return this._returnResult({ data: Object.assign({}, data), error });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  signInWithSolana(credentials) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n      let message;\n      let signature;\n      if (\"message\" in credentials) {\n        message = credentials.message;\n        signature = credentials.signature;\n      } else {\n        const { chain, wallet, statement, options } = credentials;\n        let resolvedWallet;\n        if (!isBrowser()) {\n          if (typeof wallet !== \"object\" || !(options === null || options === void 0 ? void 0 : options.url)) {\n            throw new Error(\"@supabase/auth-js: Both wallet and url must be specified in non-browser environments.\");\n          }\n          resolvedWallet = wallet;\n        } else if (typeof wallet === \"object\") {\n          resolvedWallet = wallet;\n        } else {\n          const windowAny = window;\n          if (\"solana\" in windowAny && typeof windowAny.solana === \"object\" && (\"signIn\" in windowAny.solana && typeof windowAny.solana.signIn === \"function\" || \"signMessage\" in windowAny.solana && typeof windowAny.solana.signMessage === \"function\")) {\n            resolvedWallet = windowAny.solana;\n          } else {\n            throw new Error(`@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.`);\n          }\n        }\n        const url = new URL((_a2 = options === null || options === void 0 ? void 0 : options.url) !== null && _a2 !== void 0 ? _a2 : window.location.href);\n        if (\"signIn\" in resolvedWallet && resolvedWallet.signIn) {\n          const output = yield resolvedWallet.signIn(Object.assign(Object.assign(Object.assign({ issuedAt: (/* @__PURE__ */ new Date()).toISOString() }, options === null || options === void 0 ? void 0 : options.signInWithSolana), {\n            // non-overridable properties\n            version: \"1\",\n            domain: url.host,\n            uri: url.href\n          }), statement ? { statement } : null));\n          let outputToProcess;\n          if (Array.isArray(output) && output[0] && typeof output[0] === \"object\") {\n            outputToProcess = output[0];\n          } else if (output && typeof output === \"object\" && \"signedMessage\" in output && \"signature\" in output) {\n            outputToProcess = output;\n          } else {\n            throw new Error(\"@supabase/auth-js: Wallet method signIn() returned unrecognized value\");\n          }\n          if (\"signedMessage\" in outputToProcess && \"signature\" in outputToProcess && (typeof outputToProcess.signedMessage === \"string\" || outputToProcess.signedMessage instanceof Uint8Array) && outputToProcess.signature instanceof Uint8Array) {\n            message = typeof outputToProcess.signedMessage === \"string\" ? outputToProcess.signedMessage : new TextDecoder().decode(outputToProcess.signedMessage);\n            signature = outputToProcess.signature;\n          } else {\n            throw new Error(\"@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields\");\n          }\n        } else {\n          if (!(\"signMessage\" in resolvedWallet) || typeof resolvedWallet.signMessage !== \"function\" || !(\"publicKey\" in resolvedWallet) || typeof resolvedWallet !== \"object\" || !resolvedWallet.publicKey || !(\"toBase58\" in resolvedWallet.publicKey) || typeof resolvedWallet.publicKey.toBase58 !== \"function\") {\n            throw new Error(\"@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API\");\n          }\n          message = [\n            `${url.host} wants you to sign in with your Solana account:`,\n            resolvedWallet.publicKey.toBase58(),\n            ...statement ? [\"\", statement, \"\"] : [\"\"],\n            \"Version: 1\",\n            `URI: ${url.href}`,\n            `Issued At: ${(_c = (_b = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _b === void 0 ? void 0 : _b.issuedAt) !== null && _c !== void 0 ? _c : (/* @__PURE__ */ new Date()).toISOString()}`,\n            ...((_d = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _d === void 0 ? void 0 : _d.notBefore) ? [`Not Before: ${options.signInWithSolana.notBefore}`] : [],\n            ...((_e = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _e === void 0 ? void 0 : _e.expirationTime) ? [`Expiration Time: ${options.signInWithSolana.expirationTime}`] : [],\n            ...((_f = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _f === void 0 ? void 0 : _f.chainId) ? [`Chain ID: ${options.signInWithSolana.chainId}`] : [],\n            ...((_g = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _g === void 0 ? void 0 : _g.nonce) ? [`Nonce: ${options.signInWithSolana.nonce}`] : [],\n            ...((_h = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _h === void 0 ? void 0 : _h.requestId) ? [`Request ID: ${options.signInWithSolana.requestId}`] : [],\n            ...((_k = (_j = options === null || options === void 0 ? void 0 : options.signInWithSolana) === null || _j === void 0 ? void 0 : _j.resources) === null || _k === void 0 ? void 0 : _k.length) ? [\n              \"Resources\",\n              ...options.signInWithSolana.resources.map((resource) => `- ${resource}`)\n            ] : []\n          ].join(\"\\n\");\n          const maybeSignature = yield resolvedWallet.signMessage(new TextEncoder().encode(message), \"utf8\");\n          if (!maybeSignature || !(maybeSignature instanceof Uint8Array)) {\n            throw new Error(\"@supabase/auth-js: Wallet signMessage() API returned an recognized value\");\n          }\n          signature = maybeSignature;\n        }\n      }\n      try {\n        const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=web3`, {\n          headers: this.headers,\n          body: Object.assign({ chain: \"solana\", message, signature: bytesToBase64URL(signature) }, ((_l = credentials.options) === null || _l === void 0 ? void 0 : _l.captchaToken) ? { gotrue_meta_security: { captcha_token: (_m = credentials.options) === null || _m === void 0 ? void 0 : _m.captchaToken } } : null),\n          xform: _sessionResponse\n        });\n        if (error) {\n          throw error;\n        }\n        if (!data || !data.session || !data.user) {\n          const invalidTokenError = new AuthInvalidTokenResponseError();\n          return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });\n        }\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return this._returnResult({ data: Object.assign({}, data), error });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  _exchangeCodeForSession(authCode) {\n    return __async(this, null, function* () {\n      const storageItem = yield getItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      const [codeVerifier, redirectType] = (storageItem !== null && storageItem !== void 0 ? storageItem : \"\").split(\"/\");\n      try {\n        const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=pkce`, {\n          headers: this.headers,\n          body: {\n            auth_code: authCode,\n            code_verifier: codeVerifier\n          },\n          xform: _sessionResponse\n        });\n        yield removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n        if (error) {\n          throw error;\n        }\n        if (!data || !data.session || !data.user) {\n          const invalidTokenError = new AuthInvalidTokenResponseError();\n          return this._returnResult({\n            data: { user: null, session: null, redirectType: null },\n            error: invalidTokenError\n          });\n        }\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return this._returnResult({ data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({\n            data: { user: null, session: null, redirectType: null },\n            error\n          });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Allows signing in with an OIDC ID token. The authentication provider used\n   * should be enabled and configured.\n   */\n  signInWithIdToken(credentials) {\n    return __async(this, null, function* () {\n      try {\n        const { options, provider, token, access_token, nonce } = credentials;\n        const res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=id_token`, {\n          headers: this.headers,\n          body: {\n            provider,\n            id_token: token,\n            access_token,\n            nonce,\n            gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n          },\n          xform: _sessionResponse\n        });\n        const { data, error } = res;\n        if (error) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        } else if (!data || !data.session || !data.user) {\n          const invalidTokenError = new AuthInvalidTokenResponseError();\n          return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });\n        }\n        if (data.session) {\n          yield this._saveSession(data.session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", data.session);\n        }\n        return this._returnResult({ data, error });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Log in a user using magiclink or a one-time password (OTP).\n   *\n   * If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent.\n   * If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent.\n   * If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins.\n   *\n   * Be aware that you may get back an error message that will not distinguish\n   * between the cases where the account does not exist or, that the account\n   * can only be accessed via social login.\n   *\n   * Do note that you will need to configure a Whatsapp sender on Twilio\n   * if you are using phone sign in with the 'whatsapp' channel. The whatsapp\n   * channel is not supported on other providers\n   * at this time.\n   * This method supports PKCE when an email is passed.\n   */\n  signInWithOtp(credentials) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d, _e;\n      try {\n        if (\"email\" in credentials) {\n          const { email, options } = credentials;\n          let codeChallenge = null;\n          let codeChallengeMethod = null;\n          if (this.flowType === \"pkce\") {\n            ;\n            [codeChallenge, codeChallengeMethod] = yield getCodeChallengeAndMethod(this.storage, this.storageKey);\n          }\n          const { error } = yield _request(this.fetch, \"POST\", `${this.url}/otp`, {\n            headers: this.headers,\n            body: {\n              email,\n              data: (_a2 = options === null || options === void 0 ? void 0 : options.data) !== null && _a2 !== void 0 ? _a2 : {},\n              create_user: (_b = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _b !== void 0 ? _b : true,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken },\n              code_challenge: codeChallenge,\n              code_challenge_method: codeChallengeMethod\n            },\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo\n          });\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        if (\"phone\" in credentials) {\n          const { phone, options } = credentials;\n          const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/otp`, {\n            headers: this.headers,\n            body: {\n              phone,\n              data: (_c = options === null || options === void 0 ? void 0 : options.data) !== null && _c !== void 0 ? _c : {},\n              create_user: (_d = options === null || options === void 0 ? void 0 : options.shouldCreateUser) !== null && _d !== void 0 ? _d : true,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken },\n              channel: (_e = options === null || options === void 0 ? void 0 : options.channel) !== null && _e !== void 0 ? _e : \"sms\"\n            }\n          });\n          return this._returnResult({\n            data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id },\n            error\n          });\n        }\n        throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number.\");\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Log in a user given a User supplied OTP or TokenHash received through mobile or email.\n   */\n  verifyOtp(params) {\n    return __async(this, null, function* () {\n      var _a2, _b;\n      try {\n        let redirectTo = void 0;\n        let captchaToken = void 0;\n        if (\"options\" in params) {\n          redirectTo = (_a2 = params.options) === null || _a2 === void 0 ? void 0 : _a2.redirectTo;\n          captchaToken = (_b = params.options) === null || _b === void 0 ? void 0 : _b.captchaToken;\n        }\n        const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/verify`, {\n          headers: this.headers,\n          body: Object.assign(Object.assign({}, params), { gotrue_meta_security: { captcha_token: captchaToken } }),\n          redirectTo,\n          xform: _sessionResponse\n        });\n        if (error) {\n          throw error;\n        }\n        if (!data) {\n          const tokenVerificationError = new Error(\"An error occurred on token verification.\");\n          throw tokenVerificationError;\n        }\n        const session = data.session;\n        const user = data.user;\n        if (session === null || session === void 0 ? void 0 : session.access_token) {\n          yield this._saveSession(session);\n          yield this._notifyAllSubscribers(params.type == \"recovery\" ? \"PASSWORD_RECOVERY\" : \"SIGNED_IN\", session);\n        }\n        return this._returnResult({ data: { user, session }, error: null });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Attempts a single-sign on using an enterprise Identity Provider. A\n   * successful SSO attempt will redirect the current page to the identity\n   * provider authorization page. The redirect URL is implementation and SSO\n   * protocol specific.\n   *\n   * You can use it by providing a SSO domain. Typically you can extract this\n   * domain by asking users for their email address. If this domain is\n   * registered on the Auth instance the redirect will use that organization's\n   * currently active SSO Identity Provider for the login.\n   *\n   * If you have built an organization-specific login page, you can use the\n   * organization's SSO Identity Provider UUID directly instead.\n   */\n  signInWithSSO(params) {\n    return __async(this, null, function* () {\n      var _a2, _b, _c, _d, _e;\n      try {\n        let codeChallenge = null;\n        let codeChallengeMethod = null;\n        if (this.flowType === \"pkce\") {\n          ;\n          [codeChallenge, codeChallengeMethod] = yield getCodeChallengeAndMethod(this.storage, this.storageKey);\n        }\n        const result = yield _request(this.fetch, \"POST\", `${this.url}/sso`, {\n          body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, \"providerId\" in params ? { provider_id: params.providerId } : null), \"domain\" in params ? { domain: params.domain } : null), { redirect_to: (_b = (_a2 = params.options) === null || _a2 === void 0 ? void 0 : _a2.redirectTo) !== null && _b !== void 0 ? _b : void 0 }), ((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken) ? { gotrue_meta_security: { captcha_token: params.options.captchaToken } } : null), { skip_http_redirect: true, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }),\n          headers: this.headers,\n          xform: _ssoResponse\n        });\n        if (((_d = result.data) === null || _d === void 0 ? void 0 : _d.url) && isBrowser() && !((_e = params.options) === null || _e === void 0 ? void 0 : _e.skipBrowserRedirect)) {\n          window.location.assign(result.data.url);\n        }\n        return this._returnResult(result);\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Sends a reauthentication OTP to the user's email or phone number.\n   * Requires the user to be signed-in.\n   */\n  reauthenticate() {\n    return __async(this, null, function* () {\n      yield this.initializePromise;\n      return yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return yield this._reauthenticate();\n      }));\n    });\n  }\n  _reauthenticate() {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: { session }, error: sessionError } = result;\n          if (sessionError)\n            throw sessionError;\n          if (!session)\n            throw new AuthSessionMissingError();\n          const { error } = yield _request(this.fetch, \"GET\", `${this.url}/reauthenticate`, {\n            headers: this.headers,\n            jwt: session.access_token\n          });\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Resends an existing signup confirmation email, email change email, SMS OTP or phone change OTP.\n   */\n  resend(credentials) {\n    return __async(this, null, function* () {\n      try {\n        const endpoint = `${this.url}/resend`;\n        if (\"email\" in credentials) {\n          const { email, type, options } = credentials;\n          const { error } = yield _request(this.fetch, \"POST\", endpoint, {\n            headers: this.headers,\n            body: {\n              email,\n              type,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n            },\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo\n          });\n          return this._returnResult({ data: { user: null, session: null }, error });\n        } else if (\"phone\" in credentials) {\n          const { phone, type, options } = credentials;\n          const { data, error } = yield _request(this.fetch, \"POST\", endpoint, {\n            headers: this.headers,\n            body: {\n              phone,\n              type,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n            }\n          });\n          return this._returnResult({\n            data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id },\n            error\n          });\n        }\n        throw new AuthInvalidCredentialsError(\"You must provide either an email or phone number and a type\");\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Returns the session, refreshing it if necessary.\n   *\n   * The session returned can be null if the session is not detected which can happen in the event a user is not signed-in or has logged out.\n   *\n   * **IMPORTANT:** This method loads values directly from the storage attached\n   * to the client. If that storage is based on request cookies for example,\n   * the values in it may not be authentic and therefore it's strongly advised\n   * against using this method and its results in such circumstances. A warning\n   * will be emitted if this is detected. Use {@link #getUser()} instead.\n   */\n  getSession() {\n    return __async(this, null, function* () {\n      yield this.initializePromise;\n      const result = yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return this._useSession((result2) => __async(this, null, function* () {\n          return result2;\n        }));\n      }));\n      return result;\n    });\n  }\n  /**\n   * Acquires a global lock based on the storage key.\n   */\n  _acquireLock(acquireTimeout, fn) {\n    return __async(this, null, function* () {\n      this._debug(\"#_acquireLock\", \"begin\", acquireTimeout);\n      try {\n        if (this.lockAcquired) {\n          const last = this.pendingInLock.length ? this.pendingInLock[this.pendingInLock.length - 1] : Promise.resolve();\n          const result = (() => __async(this, null, function* () {\n            yield last;\n            return yield fn();\n          }))();\n          this.pendingInLock.push((() => __async(this, null, function* () {\n            try {\n              yield result;\n            } catch (e) {\n            }\n          }))());\n          return result;\n        }\n        return yield this.lock(`lock:${this.storageKey}`, acquireTimeout, () => __async(this, null, function* () {\n          this._debug(\"#_acquireLock\", \"lock acquired for storage key\", this.storageKey);\n          try {\n            this.lockAcquired = true;\n            const result = fn();\n            this.pendingInLock.push((() => __async(this, null, function* () {\n              try {\n                yield result;\n              } catch (e) {\n              }\n            }))());\n            yield result;\n            while (this.pendingInLock.length) {\n              const waitOn = [...this.pendingInLock];\n              yield Promise.all(waitOn);\n              this.pendingInLock.splice(0, waitOn.length);\n            }\n            return yield result;\n          } finally {\n            this._debug(\"#_acquireLock\", \"lock released for storage key\", this.storageKey);\n            this.lockAcquired = false;\n          }\n        }));\n      } finally {\n        this._debug(\"#_acquireLock\", \"end\");\n      }\n    });\n  }\n  /**\n   * Use instead of {@link #getSession} inside the library. It is\n   * semantically usually what you want, as getting a session involves some\n   * processing afterwards that requires only one client operating on the\n   * session at once across multiple tabs or processes.\n   */\n  _useSession(fn) {\n    return __async(this, null, function* () {\n      this._debug(\"#_useSession\", \"begin\");\n      try {\n        const result = yield this.__loadSession();\n        return yield fn(result);\n      } finally {\n        this._debug(\"#_useSession\", \"end\");\n      }\n    });\n  }\n  /**\n   * NEVER USE DIRECTLY!\n   *\n   * Always use {@link #_useSession}.\n   */\n  __loadSession() {\n    return __async(this, null, function* () {\n      this._debug(\"#__loadSession()\", \"begin\");\n      if (!this.lockAcquired) {\n        this._debug(\"#__loadSession()\", \"used outside of an acquired lock!\", new Error().stack);\n      }\n      try {\n        let currentSession = null;\n        const maybeSession = yield getItemAsync(this.storage, this.storageKey);\n        this._debug(\"#getSession()\", \"session from storage\", maybeSession);\n        if (maybeSession !== null) {\n          if (this._isValidSession(maybeSession)) {\n            currentSession = maybeSession;\n          } else {\n            this._debug(\"#getSession()\", \"session from storage is not valid\");\n            yield this._removeSession();\n          }\n        }\n        if (!currentSession) {\n          return { data: { session: null }, error: null };\n        }\n        const hasExpired = currentSession.expires_at ? currentSession.expires_at * 1e3 - Date.now() < EXPIRY_MARGIN_MS : false;\n        this._debug(\"#__loadSession()\", `session has${hasExpired ? \"\" : \" not\"} expired`, \"expires_at\", currentSession.expires_at);\n        if (!hasExpired) {\n          if (this.userStorage) {\n            const maybeUser = yield getItemAsync(this.userStorage, this.storageKey + \"-user\");\n            if (maybeUser === null || maybeUser === void 0 ? void 0 : maybeUser.user) {\n              currentSession.user = maybeUser.user;\n            } else {\n              currentSession.user = userNotAvailableProxy();\n            }\n          }\n          if (this.storage.isServer && currentSession.user && !currentSession.user.__isUserNotAvailableProxy) {\n            const suppressWarningRef = { value: this.suppressGetSessionWarning };\n            currentSession.user = insecureUserWarningProxy(currentSession.user, suppressWarningRef);\n            if (suppressWarningRef.value) {\n              this.suppressGetSessionWarning = true;\n            }\n          }\n          return { data: { session: currentSession }, error: null };\n        }\n        const { data: session, error } = yield this._callRefreshToken(currentSession.refresh_token);\n        if (error) {\n          return this._returnResult({ data: { session: null }, error });\n        }\n        return this._returnResult({ data: { session }, error: null });\n      } finally {\n        this._debug(\"#__loadSession()\", \"end\");\n      }\n    });\n  }\n  /**\n   * Gets the current user details if there is an existing session. This method\n   * performs a network request to the Supabase Auth server, so the returned\n   * value is authentic and can be used to base authorization rules on.\n   *\n   * @param jwt Takes in an optional access token JWT. If no JWT is provided, the JWT from the current session is used.\n   */\n  getUser(jwt) {\n    return __async(this, null, function* () {\n      if (jwt) {\n        return yield this._getUser(jwt);\n      }\n      yield this.initializePromise;\n      const result = yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return yield this._getUser();\n      }));\n      return result;\n    });\n  }\n  _getUser(jwt) {\n    return __async(this, null, function* () {\n      try {\n        if (jwt) {\n          return yield _request(this.fetch, \"GET\", `${this.url}/user`, {\n            headers: this.headers,\n            jwt,\n            xform: _userResponse\n          });\n        }\n        return yield this._useSession((result) => __async(this, null, function* () {\n          var _a2, _b, _c;\n          const { data, error } = result;\n          if (error) {\n            throw error;\n          }\n          if (!((_a2 = data.session) === null || _a2 === void 0 ? void 0 : _a2.access_token) && !this.hasCustomAuthorizationHeader) {\n            return { data: { user: null }, error: new AuthSessionMissingError() };\n          }\n          return yield _request(this.fetch, \"GET\", `${this.url}/user`, {\n            headers: this.headers,\n            jwt: (_c = (_b = data.session) === null || _b === void 0 ? void 0 : _b.access_token) !== null && _c !== void 0 ? _c : void 0,\n            xform: _userResponse\n          });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          if (isAuthSessionMissingError(error)) {\n            yield this._removeSession();\n            yield removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n          }\n          return this._returnResult({ data: { user: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Updates user data for a logged in user.\n   */\n  updateUser(_0) {\n    return __async(this, arguments, function* (attributes, options = {}) {\n      yield this.initializePromise;\n      return yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return yield this._updateUser(attributes, options);\n      }));\n    });\n  }\n  _updateUser(_0) {\n    return __async(this, arguments, function* (attributes, options = {}) {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: sessionData, error: sessionError } = result;\n          if (sessionError) {\n            throw sessionError;\n          }\n          if (!sessionData.session) {\n            throw new AuthSessionMissingError();\n          }\n          const session = sessionData.session;\n          let codeChallenge = null;\n          let codeChallengeMethod = null;\n          if (this.flowType === \"pkce\" && attributes.email != null) {\n            ;\n            [codeChallenge, codeChallengeMethod] = yield getCodeChallengeAndMethod(this.storage, this.storageKey);\n          }\n          const { data, error: userError } = yield _request(this.fetch, \"PUT\", `${this.url}/user`, {\n            headers: this.headers,\n            redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,\n            body: Object.assign(Object.assign({}, attributes), { code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }),\n            jwt: session.access_token,\n            xform: _userResponse\n          });\n          if (userError) {\n            throw userError;\n          }\n          session.user = data.user;\n          yield this._saveSession(session);\n          yield this._notifyAllSubscribers(\"USER_UPDATED\", session);\n          return this._returnResult({ data: { user: session.user }, error: null });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Sets the session data from the current session. If the current session is expired, setSession will take care of refreshing it to obtain a new session.\n   * If the refresh token or access token in the current session is invalid, an error will be thrown.\n   * @param currentSession The current session that minimally contains an access token and refresh token.\n   */\n  setSession(currentSession) {\n    return __async(this, null, function* () {\n      yield this.initializePromise;\n      return yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return yield this._setSession(currentSession);\n      }));\n    });\n  }\n  _setSession(currentSession) {\n    return __async(this, null, function* () {\n      try {\n        if (!currentSession.access_token || !currentSession.refresh_token) {\n          throw new AuthSessionMissingError();\n        }\n        const timeNow = Date.now() / 1e3;\n        let expiresAt2 = timeNow;\n        let hasExpired = true;\n        let session = null;\n        const { payload } = decodeJWT(currentSession.access_token);\n        if (payload.exp) {\n          expiresAt2 = payload.exp;\n          hasExpired = expiresAt2 <= timeNow;\n        }\n        if (hasExpired) {\n          const { data: refreshedSession, error } = yield this._callRefreshToken(currentSession.refresh_token);\n          if (error) {\n            return this._returnResult({ data: { user: null, session: null }, error });\n          }\n          if (!refreshedSession) {\n            return { data: { user: null, session: null }, error: null };\n          }\n          session = refreshedSession;\n        } else {\n          const { data, error } = yield this._getUser(currentSession.access_token);\n          if (error) {\n            throw error;\n          }\n          session = {\n            access_token: currentSession.access_token,\n            refresh_token: currentSession.refresh_token,\n            user: data.user,\n            token_type: \"bearer\",\n            expires_in: expiresAt2 - timeNow,\n            expires_at: expiresAt2\n          };\n          yield this._saveSession(session);\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", session);\n        }\n        return this._returnResult({ data: { user: session.user, session }, error: null });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { session: null, user: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Returns a new session, regardless of expiry status.\n   * Takes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession().\n   * If the current session's refresh token is invalid, an error will be thrown.\n   * @param currentSession The current session. If passed in, it must contain a refresh token.\n   */\n  refreshSession(currentSession) {\n    return __async(this, null, function* () {\n      yield this.initializePromise;\n      return yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return yield this._refreshSession(currentSession);\n      }));\n    });\n  }\n  _refreshSession(currentSession) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          var _a2;\n          if (!currentSession) {\n            const { data, error: error2 } = result;\n            if (error2) {\n              throw error2;\n            }\n            currentSession = (_a2 = data.session) !== null && _a2 !== void 0 ? _a2 : void 0;\n          }\n          if (!(currentSession === null || currentSession === void 0 ? void 0 : currentSession.refresh_token)) {\n            throw new AuthSessionMissingError();\n          }\n          const { data: session, error } = yield this._callRefreshToken(currentSession.refresh_token);\n          if (error) {\n            return this._returnResult({ data: { user: null, session: null }, error });\n          }\n          if (!session) {\n            return this._returnResult({ data: { user: null, session: null }, error: null });\n          }\n          return this._returnResult({ data: { user: session.user, session }, error: null });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { user: null, session: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Gets the session data from a URL string\n   */\n  _getSessionFromURL(params, callbackUrlType) {\n    return __async(this, null, function* () {\n      try {\n        if (!isBrowser())\n          throw new AuthImplicitGrantRedirectError(\"No browser detected.\");\n        if (params.error || params.error_description || params.error_code) {\n          throw new AuthImplicitGrantRedirectError(params.error_description || \"Error in URL with unspecified error_description\", {\n            error: params.error || \"unspecified_error\",\n            code: params.error_code || \"unspecified_code\"\n          });\n        }\n        switch (callbackUrlType) {\n          case \"implicit\":\n            if (this.flowType === \"pkce\") {\n              throw new AuthPKCEGrantCodeExchangeError(\"Not a valid PKCE flow url.\");\n            }\n            break;\n          case \"pkce\":\n            if (this.flowType === \"implicit\") {\n              throw new AuthImplicitGrantRedirectError(\"Not a valid implicit grant flow url.\");\n            }\n            break;\n          default:\n        }\n        if (callbackUrlType === \"pkce\") {\n          this._debug(\"#_initialize()\", \"begin\", \"is PKCE flow\", true);\n          if (!params.code)\n            throw new AuthPKCEGrantCodeExchangeError(\"No code detected.\");\n          const { data: data2, error: error2 } = yield this._exchangeCodeForSession(params.code);\n          if (error2)\n            throw error2;\n          const url = new URL(window.location.href);\n          url.searchParams.delete(\"code\");\n          window.history.replaceState(window.history.state, \"\", url.toString());\n          return { data: { session: data2.session, redirectType: null }, error: null };\n        }\n        const { provider_token, provider_refresh_token, access_token, refresh_token, expires_in, expires_at, token_type } = params;\n        if (!access_token || !expires_in || !refresh_token || !token_type) {\n          throw new AuthImplicitGrantRedirectError(\"No session defined in URL\");\n        }\n        const timeNow = Math.round(Date.now() / 1e3);\n        const expiresIn = parseInt(expires_in);\n        let expiresAt2 = timeNow + expiresIn;\n        if (expires_at) {\n          expiresAt2 = parseInt(expires_at);\n        }\n        const actuallyExpiresIn = expiresAt2 - timeNow;\n        if (actuallyExpiresIn * 1e3 <= AUTO_REFRESH_TICK_DURATION_MS) {\n          console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${actuallyExpiresIn}s, should have been closer to ${expiresIn}s`);\n        }\n        const issuedAt = expiresAt2 - expiresIn;\n        if (timeNow - issuedAt >= 120) {\n          console.warn(\"@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale\", issuedAt, expiresAt2, timeNow);\n        } else if (timeNow - issuedAt < 0) {\n          console.warn(\"@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew\", issuedAt, expiresAt2, timeNow);\n        }\n        const { data, error } = yield this._getUser(access_token);\n        if (error)\n          throw error;\n        const session = {\n          provider_token,\n          provider_refresh_token,\n          access_token,\n          expires_in: expiresIn,\n          expires_at: expiresAt2,\n          refresh_token,\n          token_type,\n          user: data.user\n        };\n        window.location.hash = \"\";\n        this._debug(\"#_getSessionFromURL()\", \"clearing window.location.hash\");\n        return this._returnResult({ data: { session, redirectType: params.type }, error: null });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { session: null, redirectType: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Checks if the current URL contains parameters given by an implicit oauth grant flow (https://www.rfc-editor.org/rfc/rfc6749.html#section-4.2)\n   */\n  _isImplicitGrantCallback(params) {\n    return Boolean(params.access_token || params.error_description);\n  }\n  /**\n   * Checks if the current URL and backing storage contain parameters given by a PKCE flow\n   */\n  _isPKCECallback(params) {\n    return __async(this, null, function* () {\n      const currentStorageContent = yield getItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n      return !!(params.code && currentStorageContent);\n    });\n  }\n  /**\n   * Inside a browser context, `signOut()` will remove the logged in user from the browser session and log them out - removing all items from localstorage and then trigger a `\"SIGNED_OUT\"` event.\n   *\n   * For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`.\n   * There is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.\n   *\n   * If using `others` scope, no `SIGNED_OUT` event is fired!\n   */\n  signOut() {\n    return __async(this, arguments, function* (options = { scope: \"global\" }) {\n      yield this.initializePromise;\n      return yield this._acquireLock(-1, () => __async(this, null, function* () {\n        return yield this._signOut(options);\n      }));\n    });\n  }\n  _signOut() {\n    return __async(this, arguments, function* ({ scope } = { scope: \"global\" }) {\n      return yield this._useSession((result) => __async(this, null, function* () {\n        var _a2;\n        const { data, error: sessionError } = result;\n        if (sessionError) {\n          return this._returnResult({ error: sessionError });\n        }\n        const accessToken = (_a2 = data.session) === null || _a2 === void 0 ? void 0 : _a2.access_token;\n        if (accessToken) {\n          const { error } = yield this.admin.signOut(accessToken, scope);\n          if (error) {\n            if (!(isAuthApiError(error) && (error.status === 404 || error.status === 401 || error.status === 403))) {\n              return this._returnResult({ error });\n            }\n          }\n        }\n        if (scope !== \"others\") {\n          yield this._removeSession();\n          yield removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);\n        }\n        return this._returnResult({ error: null });\n      }));\n    });\n  }\n  onAuthStateChange(callback) {\n    const id = generateCallbackId();\n    const subscription = {\n      id,\n      callback,\n      unsubscribe: () => {\n        this._debug(\"#unsubscribe()\", \"state change callback with id removed\", id);\n        this.stateChangeEmitters.delete(id);\n      }\n    };\n    this._debug(\"#onAuthStateChange()\", \"registered callback with id\", id);\n    this.stateChangeEmitters.set(id, subscription);\n    (() => __async(this, null, function* () {\n      yield this.initializePromise;\n      yield this._acquireLock(-1, () => __async(this, null, function* () {\n        this._emitInitialSession(id);\n      }));\n    }))();\n    return { data: { subscription } };\n  }\n  _emitInitialSession(id) {\n    return __async(this, null, function* () {\n      return yield this._useSession((result) => __async(this, null, function* () {\n        var _a2, _b;\n        try {\n          const { data: { session }, error } = result;\n          if (error)\n            throw error;\n          yield (_a2 = this.stateChangeEmitters.get(id)) === null || _a2 === void 0 ? void 0 : _a2.callback(\"INITIAL_SESSION\", session);\n          this._debug(\"INITIAL_SESSION\", \"callback id\", id, \"session\", session);\n        } catch (err) {\n          yield (_b = this.stateChangeEmitters.get(id)) === null || _b === void 0 ? void 0 : _b.callback(\"INITIAL_SESSION\", null);\n          this._debug(\"INITIAL_SESSION\", \"callback id\", id, \"error\", err);\n          console.error(err);\n        }\n      }));\n    });\n  }\n  /**\n   * Sends a password reset request to an email address. This method supports the PKCE flow.\n   *\n   * @param email The email address of the user.\n   * @param options.redirectTo The URL to send the user to after they click the password reset link.\n   * @param options.captchaToken Verification token received when the user completes the captcha on the site.\n   */\n  resetPasswordForEmail(_0) {\n    return __async(this, arguments, function* (email, options = {}) {\n      let codeChallenge = null;\n      let codeChallengeMethod = null;\n      if (this.flowType === \"pkce\") {\n        ;\n        [codeChallenge, codeChallengeMethod] = yield getCodeChallengeAndMethod(\n          this.storage,\n          this.storageKey,\n          true\n          // isPasswordRecovery\n        );\n      }\n      try {\n        return yield _request(this.fetch, \"POST\", `${this.url}/recover`, {\n          body: {\n            email,\n            code_challenge: codeChallenge,\n            code_challenge_method: codeChallengeMethod,\n            gotrue_meta_security: { captcha_token: options.captchaToken }\n          },\n          headers: this.headers,\n          redirectTo: options.redirectTo\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Gets all the identities linked to a user.\n   */\n  getUserIdentities() {\n    return __async(this, null, function* () {\n      var _a2;\n      try {\n        const { data, error } = yield this.getUser();\n        if (error)\n          throw error;\n        return this._returnResult({ data: { identities: (_a2 = data.user.identities) !== null && _a2 !== void 0 ? _a2 : [] }, error: null });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  linkIdentity(credentials) {\n    return __async(this, null, function* () {\n      if (\"token\" in credentials) {\n        return this.linkIdentityIdToken(credentials);\n      }\n      return this.linkIdentityOAuth(credentials);\n    });\n  }\n  linkIdentityOAuth(credentials) {\n    return __async(this, null, function* () {\n      var _a2;\n      try {\n        const { data, error } = yield this._useSession((result) => __async(this, null, function* () {\n          var _a3, _b, _c, _d, _e;\n          const { data: data2, error: error2 } = result;\n          if (error2)\n            throw error2;\n          const url = yield this._getUrlForProvider(`${this.url}/user/identities/authorize`, credentials.provider, {\n            redirectTo: (_a3 = credentials.options) === null || _a3 === void 0 ? void 0 : _a3.redirectTo,\n            scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,\n            queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,\n            skipBrowserRedirect: true\n          });\n          return yield _request(this.fetch, \"GET\", url, {\n            headers: this.headers,\n            jwt: (_e = (_d = data2.session) === null || _d === void 0 ? void 0 : _d.access_token) !== null && _e !== void 0 ? _e : void 0\n          });\n        }));\n        if (error)\n          throw error;\n        if (isBrowser() && !((_a2 = credentials.options) === null || _a2 === void 0 ? void 0 : _a2.skipBrowserRedirect)) {\n          window.location.assign(data === null || data === void 0 ? void 0 : data.url);\n        }\n        return this._returnResult({\n          data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url },\n          error: null\n        });\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { provider: credentials.provider, url: null }, error });\n        }\n        throw error;\n      }\n    });\n  }\n  linkIdentityIdToken(credentials) {\n    return __async(this, null, function* () {\n      return yield this._useSession((result) => __async(this, null, function* () {\n        var _a2;\n        try {\n          const { error: sessionError, data: { session } } = result;\n          if (sessionError)\n            throw sessionError;\n          const { options, provider, token, access_token, nonce } = credentials;\n          const res = yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=id_token`, {\n            headers: this.headers,\n            jwt: (_a2 = session === null || session === void 0 ? void 0 : session.access_token) !== null && _a2 !== void 0 ? _a2 : void 0,\n            body: {\n              provider,\n              id_token: token,\n              access_token,\n              nonce,\n              link_identity: true,\n              gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken }\n            },\n            xform: _sessionResponse\n          });\n          const { data, error } = res;\n          if (error) {\n            return this._returnResult({ data: { user: null, session: null }, error });\n          } else if (!data || !data.session || !data.user) {\n            return this._returnResult({\n              data: { user: null, session: null },\n              error: new AuthInvalidTokenResponseError()\n            });\n          }\n          if (data.session) {\n            yield this._saveSession(data.session);\n            yield this._notifyAllSubscribers(\"USER_UPDATED\", data.session);\n          }\n          return this._returnResult({ data, error });\n        } catch (error) {\n          if (isAuthError(error)) {\n            return this._returnResult({ data: { user: null, session: null }, error });\n          }\n          throw error;\n        }\n      }));\n    });\n  }\n  /**\n   * Unlinks an identity from a user by deleting it. The user will no longer be able to sign in with that identity once it's unlinked.\n   */\n  unlinkIdentity(identity) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          var _a2, _b;\n          const { data, error } = result;\n          if (error) {\n            throw error;\n          }\n          return yield _request(this.fetch, \"DELETE\", `${this.url}/user/identities/${identity.identity_id}`, {\n            headers: this.headers,\n            jwt: (_b = (_a2 = data.session) === null || _a2 === void 0 ? void 0 : _a2.access_token) !== null && _b !== void 0 ? _b : void 0\n          });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Generates a new JWT.\n   * @param refreshToken A valid refresh token that was returned on login.\n   */\n  _refreshAccessToken(refreshToken) {\n    return __async(this, null, function* () {\n      const debugName = `#_refreshAccessToken(${refreshToken.substring(0, 5)}...)`;\n      this._debug(debugName, \"begin\");\n      try {\n        const startedAt = Date.now();\n        return yield retryable((attempt) => __async(this, null, function* () {\n          if (attempt > 0) {\n            yield sleep(200 * Math.pow(2, attempt - 1));\n          }\n          this._debug(debugName, \"refreshing attempt\", attempt);\n          return yield _request(this.fetch, \"POST\", `${this.url}/token?grant_type=refresh_token`, {\n            body: { refresh_token: refreshToken },\n            headers: this.headers,\n            xform: _sessionResponse\n          });\n        }), (attempt, error) => {\n          const nextBackOffInterval = 200 * Math.pow(2, attempt);\n          return error && isAuthRetryableFetchError(error) && // retryable only if the request can be sent before the backoff overflows the tick duration\n          Date.now() + nextBackOffInterval - startedAt < AUTO_REFRESH_TICK_DURATION_MS;\n        });\n      } catch (error) {\n        this._debug(debugName, \"error\", error);\n        if (isAuthError(error)) {\n          return this._returnResult({ data: { session: null, user: null }, error });\n        }\n        throw error;\n      } finally {\n        this._debug(debugName, \"end\");\n      }\n    });\n  }\n  _isValidSession(maybeSession) {\n    const isValidSession = typeof maybeSession === \"object\" && maybeSession !== null && \"access_token\" in maybeSession && \"refresh_token\" in maybeSession && \"expires_at\" in maybeSession;\n    return isValidSession;\n  }\n  _handleProviderSignIn(provider, options) {\n    return __async(this, null, function* () {\n      const url = yield this._getUrlForProvider(`${this.url}/authorize`, provider, {\n        redirectTo: options.redirectTo,\n        scopes: options.scopes,\n        queryParams: options.queryParams\n      });\n      this._debug(\"#_handleProviderSignIn()\", \"provider\", provider, \"options\", options, \"url\", url);\n      if (isBrowser() && !options.skipBrowserRedirect) {\n        window.location.assign(url);\n      }\n      return { data: { provider, url }, error: null };\n    });\n  }\n  /**\n   * Recovers the session from LocalStorage and refreshes the token\n   * Note: this method is async to accommodate for AsyncStorage e.g. in React native.\n   */\n  _recoverAndRefresh() {\n    return __async(this, null, function* () {\n      var _a2, _b;\n      const debugName = \"#_recoverAndRefresh()\";\n      this._debug(debugName, \"begin\");\n      try {\n        const currentSession = yield getItemAsync(this.storage, this.storageKey);\n        if (currentSession && this.userStorage) {\n          let maybeUser = yield getItemAsync(this.userStorage, this.storageKey + \"-user\");\n          if (!this.storage.isServer && Object.is(this.storage, this.userStorage) && !maybeUser) {\n            maybeUser = { user: currentSession.user };\n            yield setItemAsync(this.userStorage, this.storageKey + \"-user\", maybeUser);\n          }\n          currentSession.user = (_a2 = maybeUser === null || maybeUser === void 0 ? void 0 : maybeUser.user) !== null && _a2 !== void 0 ? _a2 : userNotAvailableProxy();\n        } else if (currentSession && !currentSession.user) {\n          if (!currentSession.user) {\n            const separateUser = yield getItemAsync(this.storage, this.storageKey + \"-user\");\n            if (separateUser && (separateUser === null || separateUser === void 0 ? void 0 : separateUser.user)) {\n              currentSession.user = separateUser.user;\n              yield removeItemAsync(this.storage, this.storageKey + \"-user\");\n              yield setItemAsync(this.storage, this.storageKey, currentSession);\n            } else {\n              currentSession.user = userNotAvailableProxy();\n            }\n          }\n        }\n        this._debug(debugName, \"session from storage\", currentSession);\n        if (!this._isValidSession(currentSession)) {\n          this._debug(debugName, \"session is not valid\");\n          if (currentSession !== null) {\n            yield this._removeSession();\n          }\n          return;\n        }\n        const expiresWithMargin = ((_b = currentSession.expires_at) !== null && _b !== void 0 ? _b : Infinity) * 1e3 - Date.now() < EXPIRY_MARGIN_MS;\n        this._debug(debugName, `session has${expiresWithMargin ? \"\" : \" not\"} expired with margin of ${EXPIRY_MARGIN_MS}s`);\n        if (expiresWithMargin) {\n          if (this.autoRefreshToken && currentSession.refresh_token) {\n            const { error } = yield this._callRefreshToken(currentSession.refresh_token);\n            if (error) {\n              console.error(error);\n              if (!isAuthRetryableFetchError(error)) {\n                this._debug(debugName, \"refresh failed with a non-retryable error, removing the session\", error);\n                yield this._removeSession();\n              }\n            }\n          }\n        } else if (currentSession.user && currentSession.user.__isUserNotAvailableProxy === true) {\n          try {\n            const { data, error: userError } = yield this._getUser(currentSession.access_token);\n            if (!userError && (data === null || data === void 0 ? void 0 : data.user)) {\n              currentSession.user = data.user;\n              yield this._saveSession(currentSession);\n              yield this._notifyAllSubscribers(\"SIGNED_IN\", currentSession);\n            } else {\n              this._debug(debugName, \"could not get user data, skipping SIGNED_IN notification\");\n            }\n          } catch (getUserError) {\n            console.error(\"Error getting user data:\", getUserError);\n            this._debug(debugName, \"error getting user data, skipping SIGNED_IN notification\", getUserError);\n          }\n        } else {\n          yield this._notifyAllSubscribers(\"SIGNED_IN\", currentSession);\n        }\n      } catch (err) {\n        this._debug(debugName, \"error\", err);\n        console.error(err);\n        return;\n      } finally {\n        this._debug(debugName, \"end\");\n      }\n    });\n  }\n  _callRefreshToken(refreshToken) {\n    return __async(this, null, function* () {\n      var _a2, _b;\n      if (!refreshToken) {\n        throw new AuthSessionMissingError();\n      }\n      if (this.refreshingDeferred) {\n        return this.refreshingDeferred.promise;\n      }\n      const debugName = `#_callRefreshToken(${refreshToken.substring(0, 5)}...)`;\n      this._debug(debugName, \"begin\");\n      try {\n        this.refreshingDeferred = new Deferred();\n        const { data, error } = yield this._refreshAccessToken(refreshToken);\n        if (error)\n          throw error;\n        if (!data.session)\n          throw new AuthSessionMissingError();\n        yield this._saveSession(data.session);\n        yield this._notifyAllSubscribers(\"TOKEN_REFRESHED\", data.session);\n        const result = { data: data.session, error: null };\n        this.refreshingDeferred.resolve(result);\n        return result;\n      } catch (error) {\n        this._debug(debugName, \"error\", error);\n        if (isAuthError(error)) {\n          const result = { data: null, error };\n          if (!isAuthRetryableFetchError(error)) {\n            yield this._removeSession();\n          }\n          (_a2 = this.refreshingDeferred) === null || _a2 === void 0 ? void 0 : _a2.resolve(result);\n          return result;\n        }\n        (_b = this.refreshingDeferred) === null || _b === void 0 ? void 0 : _b.reject(error);\n        throw error;\n      } finally {\n        this.refreshingDeferred = null;\n        this._debug(debugName, \"end\");\n      }\n    });\n  }\n  _notifyAllSubscribers(event, session, broadcast = true) {\n    return __async(this, null, function* () {\n      const debugName = `#_notifyAllSubscribers(${event})`;\n      this._debug(debugName, \"begin\", session, `broadcast = ${broadcast}`);\n      try {\n        if (this.broadcastChannel && broadcast) {\n          this.broadcastChannel.postMessage({ event, session });\n        }\n        const errors = [];\n        const promises = Array.from(this.stateChangeEmitters.values()).map((x) => __async(this, null, function* () {\n          try {\n            yield x.callback(event, session);\n          } catch (e) {\n            errors.push(e);\n          }\n        }));\n        yield Promise.all(promises);\n        if (errors.length > 0) {\n          for (let i = 0; i < errors.length; i += 1) {\n            console.error(errors[i]);\n          }\n          throw errors[0];\n        }\n      } finally {\n        this._debug(debugName, \"end\");\n      }\n    });\n  }\n  /**\n   * set currentSession and currentUser\n   * process to _startAutoRefreshToken if possible\n   */\n  _saveSession(session) {\n    return __async(this, null, function* () {\n      this._debug(\"#_saveSession()\", session);\n      this.suppressGetSessionWarning = true;\n      const sessionToProcess = Object.assign({}, session);\n      const userIsProxy = sessionToProcess.user && sessionToProcess.user.__isUserNotAvailableProxy === true;\n      if (this.userStorage) {\n        if (!userIsProxy && sessionToProcess.user) {\n          yield setItemAsync(this.userStorage, this.storageKey + \"-user\", {\n            user: sessionToProcess.user\n          });\n        } else if (userIsProxy) {\n        }\n        const mainSessionData = Object.assign({}, sessionToProcess);\n        delete mainSessionData.user;\n        const clonedMainSessionData = deepClone(mainSessionData);\n        yield setItemAsync(this.storage, this.storageKey, clonedMainSessionData);\n      } else {\n        const clonedSession = deepClone(sessionToProcess);\n        yield setItemAsync(this.storage, this.storageKey, clonedSession);\n      }\n    });\n  }\n  _removeSession() {\n    return __async(this, null, function* () {\n      this._debug(\"#_removeSession()\");\n      yield removeItemAsync(this.storage, this.storageKey);\n      yield removeItemAsync(this.storage, this.storageKey + \"-code-verifier\");\n      yield removeItemAsync(this.storage, this.storageKey + \"-user\");\n      if (this.userStorage) {\n        yield removeItemAsync(this.userStorage, this.storageKey + \"-user\");\n      }\n      yield this._notifyAllSubscribers(\"SIGNED_OUT\", null);\n    });\n  }\n  /**\n   * Removes any registered visibilitychange callback.\n   *\n   * {@see #startAutoRefresh}\n   * {@see #stopAutoRefresh}\n   */\n  _removeVisibilityChangedCallback() {\n    this._debug(\"#_removeVisibilityChangedCallback()\");\n    const callback = this.visibilityChangedCallback;\n    this.visibilityChangedCallback = null;\n    try {\n      if (callback && isBrowser() && (window === null || window === void 0 ? void 0 : window.removeEventListener)) {\n        window.removeEventListener(\"visibilitychange\", callback);\n      }\n    } catch (e) {\n      console.error(\"removing visibilitychange callback failed\", e);\n    }\n  }\n  /**\n   * This is the private implementation of {@link #startAutoRefresh}. Use this\n   * within the library.\n   */\n  _startAutoRefresh() {\n    return __async(this, null, function* () {\n      yield this._stopAutoRefresh();\n      this._debug(\"#_startAutoRefresh()\");\n      const ticker = setInterval(() => this._autoRefreshTokenTick(), AUTO_REFRESH_TICK_DURATION_MS);\n      this.autoRefreshTicker = ticker;\n      if (ticker && typeof ticker === \"object\" && typeof ticker.unref === \"function\") {\n        ticker.unref();\n      } else if (typeof Deno !== \"undefined\" && typeof Deno.unrefTimer === \"function\") {\n        Deno.unrefTimer(ticker);\n      }\n      setTimeout(() => __async(this, null, function* () {\n        yield this.initializePromise;\n        yield this._autoRefreshTokenTick();\n      }), 0);\n    });\n  }\n  /**\n   * This is the private implementation of {@link #stopAutoRefresh}. Use this\n   * within the library.\n   */\n  _stopAutoRefresh() {\n    return __async(this, null, function* () {\n      this._debug(\"#_stopAutoRefresh()\");\n      const ticker = this.autoRefreshTicker;\n      this.autoRefreshTicker = null;\n      if (ticker) {\n        clearInterval(ticker);\n      }\n    });\n  }\n  /**\n   * Starts an auto-refresh process in the background. The session is checked\n   * every few seconds. Close to the time of expiration a process is started to\n   * refresh the session. If refreshing fails it will be retried for as long as\n   * necessary.\n   *\n   * If you set the {@link GoTrueClientOptions#autoRefreshToken} you don't need\n   * to call this function, it will be called for you.\n   *\n   * On browsers the refresh process works only when the tab/window is in the\n   * foreground to conserve resources as well as prevent race conditions and\n   * flooding auth with requests. If you call this method any managed\n   * visibility change callback will be removed and you must manage visibility\n   * changes on your own.\n   *\n   * On non-browser platforms the refresh process works *continuously* in the\n   * background, which may not be desirable. You should hook into your\n   * platform's foreground indication mechanism and call these methods\n   * appropriately to conserve resources.\n   *\n   * {@see #stopAutoRefresh}\n   */\n  startAutoRefresh() {\n    return __async(this, null, function* () {\n      this._removeVisibilityChangedCallback();\n      yield this._startAutoRefresh();\n    });\n  }\n  /**\n   * Stops an active auto refresh process running in the background (if any).\n   *\n   * If you call this method any managed visibility change callback will be\n   * removed and you must manage visibility changes on your own.\n   *\n   * See {@link #startAutoRefresh} for more details.\n   */\n  stopAutoRefresh() {\n    return __async(this, null, function* () {\n      this._removeVisibilityChangedCallback();\n      yield this._stopAutoRefresh();\n    });\n  }\n  /**\n   * Runs the auto refresh token tick.\n   */\n  _autoRefreshTokenTick() {\n    return __async(this, null, function* () {\n      this._debug(\"#_autoRefreshTokenTick()\", \"begin\");\n      try {\n        yield this._acquireLock(0, () => __async(this, null, function* () {\n          try {\n            const now = Date.now();\n            try {\n              return yield this._useSession((result) => __async(this, null, function* () {\n                const { data: { session } } = result;\n                if (!session || !session.refresh_token || !session.expires_at) {\n                  this._debug(\"#_autoRefreshTokenTick()\", \"no session\");\n                  return;\n                }\n                const expiresInTicks = Math.floor((session.expires_at * 1e3 - now) / AUTO_REFRESH_TICK_DURATION_MS);\n                this._debug(\"#_autoRefreshTokenTick()\", `access token expires in ${expiresInTicks} ticks, a tick lasts ${AUTO_REFRESH_TICK_DURATION_MS}ms, refresh threshold is ${AUTO_REFRESH_TICK_THRESHOLD} ticks`);\n                if (expiresInTicks <= AUTO_REFRESH_TICK_THRESHOLD) {\n                  yield this._callRefreshToken(session.refresh_token);\n                }\n              }));\n            } catch (e) {\n              console.error(\"Auto refresh tick failed with error. This is likely a transient error.\", e);\n            }\n          } finally {\n            this._debug(\"#_autoRefreshTokenTick()\", \"end\");\n          }\n        }));\n      } catch (e) {\n        if (e.isAcquireTimeout || e instanceof LockAcquireTimeoutError) {\n          this._debug(\"auto refresh token tick lock not available\");\n        } else {\n          throw e;\n        }\n      }\n    });\n  }\n  /**\n   * Registers callbacks on the browser / platform, which in-turn run\n   * algorithms when the browser window/tab are in foreground. On non-browser\n   * platforms it assumes always foreground.\n   */\n  _handleVisibilityChange() {\n    return __async(this, null, function* () {\n      this._debug(\"#_handleVisibilityChange()\");\n      if (!isBrowser() || !(window === null || window === void 0 ? void 0 : window.addEventListener)) {\n        if (this.autoRefreshToken) {\n          this.startAutoRefresh();\n        }\n        return false;\n      }\n      try {\n        this.visibilityChangedCallback = () => __async(this, null, function* () {\n          return yield this._onVisibilityChanged(false);\n        });\n        window === null || window === void 0 ? void 0 : window.addEventListener(\"visibilitychange\", this.visibilityChangedCallback);\n        yield this._onVisibilityChanged(true);\n      } catch (error) {\n        console.error(\"_handleVisibilityChange\", error);\n      }\n    });\n  }\n  /**\n   * Callback registered with `window.addEventListener('visibilitychange')`.\n   */\n  _onVisibilityChanged(calledFromInitialize) {\n    return __async(this, null, function* () {\n      const methodName = `#_onVisibilityChanged(${calledFromInitialize})`;\n      this._debug(methodName, \"visibilityState\", document.visibilityState);\n      if (document.visibilityState === \"visible\") {\n        if (this.autoRefreshToken) {\n          this._startAutoRefresh();\n        }\n        if (!calledFromInitialize) {\n          yield this.initializePromise;\n          yield this._acquireLock(-1, () => __async(this, null, function* () {\n            if (document.visibilityState !== \"visible\") {\n              this._debug(methodName, \"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting\");\n              return;\n            }\n            yield this._recoverAndRefresh();\n          }));\n        }\n      } else if (document.visibilityState === \"hidden\") {\n        if (this.autoRefreshToken) {\n          this._stopAutoRefresh();\n        }\n      }\n    });\n  }\n  /**\n   * Generates the relevant login URL for a third-party provider.\n   * @param options.redirectTo A URL or mobile address to send the user to after they are confirmed.\n   * @param options.scopes A space-separated list of scopes granted to the OAuth application.\n   * @param options.queryParams An object of key-value pairs containing query parameters granted to the OAuth application.\n   */\n  _getUrlForProvider(url, provider, options) {\n    return __async(this, null, function* () {\n      const urlParams = [`provider=${encodeURIComponent(provider)}`];\n      if (options === null || options === void 0 ? void 0 : options.redirectTo) {\n        urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`);\n      }\n      if (options === null || options === void 0 ? void 0 : options.scopes) {\n        urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`);\n      }\n      if (this.flowType === \"pkce\") {\n        const [codeChallenge, codeChallengeMethod] = yield getCodeChallengeAndMethod(this.storage, this.storageKey);\n        const flowParams = new URLSearchParams({\n          code_challenge: `${encodeURIComponent(codeChallenge)}`,\n          code_challenge_method: `${encodeURIComponent(codeChallengeMethod)}`\n        });\n        urlParams.push(flowParams.toString());\n      }\n      if (options === null || options === void 0 ? void 0 : options.queryParams) {\n        const query = new URLSearchParams(options.queryParams);\n        urlParams.push(query.toString());\n      }\n      if (options === null || options === void 0 ? void 0 : options.skipBrowserRedirect) {\n        urlParams.push(`skip_http_redirect=${options.skipBrowserRedirect}`);\n      }\n      return `${url}?${urlParams.join(\"&\")}`;\n    });\n  }\n  _unenroll(params) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          var _a2;\n          const { data: sessionData, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          return yield _request(this.fetch, \"DELETE\", `${this.url}/factors/${params.factorId}`, {\n            headers: this.headers,\n            jwt: (_a2 = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a2 === void 0 ? void 0 : _a2.access_token\n          });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  _enroll(params) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          var _a2, _b;\n          const { data: sessionData, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          const body = Object.assign({ friendly_name: params.friendlyName, factor_type: params.factorType }, params.factorType === \"phone\" ? { phone: params.phone } : params.factorType === \"totp\" ? { issuer: params.issuer } : {});\n          const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/factors`, {\n            body,\n            headers: this.headers,\n            jwt: (_a2 = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a2 === void 0 ? void 0 : _a2.access_token\n          });\n          if (error) {\n            return this._returnResult({ data: null, error });\n          }\n          if (params.factorType === \"totp\" && data.type === \"totp\" && ((_b = data === null || data === void 0 ? void 0 : data.totp) === null || _b === void 0 ? void 0 : _b.qr_code)) {\n            data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`;\n          }\n          return this._returnResult({ data, error: null });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  _verify(params) {\n    return __async(this, null, function* () {\n      return this._acquireLock(-1, () => __async(this, null, function* () {\n        try {\n          return yield this._useSession((result) => __async(this, null, function* () {\n            var _a2;\n            const { data: sessionData, error: sessionError } = result;\n            if (sessionError) {\n              return this._returnResult({ data: null, error: sessionError });\n            }\n            const body = Object.assign({ challenge_id: params.challengeId }, \"webauthn\" in params ? {\n              webauthn: Object.assign(Object.assign({}, params.webauthn), { credential_response: params.webauthn.type === \"create\" ? serializeCredentialCreationResponse(params.webauthn.credential_response) : serializeCredentialRequestResponse(params.webauthn.credential_response) })\n            } : { code: params.code });\n            const { data, error } = yield _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/verify`, {\n              body,\n              headers: this.headers,\n              jwt: (_a2 = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a2 === void 0 ? void 0 : _a2.access_token\n            });\n            if (error) {\n              return this._returnResult({ data: null, error });\n            }\n            yield this._saveSession(Object.assign({ expires_at: Math.round(Date.now() / 1e3) + data.expires_in }, data));\n            yield this._notifyAllSubscribers(\"MFA_CHALLENGE_VERIFIED\", data);\n            return this._returnResult({ data, error });\n          }));\n        } catch (error) {\n          if (isAuthError(error)) {\n            return this._returnResult({ data: null, error });\n          }\n          throw error;\n        }\n      }));\n    });\n  }\n  _challenge(params) {\n    return __async(this, null, function* () {\n      return this._acquireLock(-1, () => __async(this, null, function* () {\n        try {\n          return yield this._useSession((result) => __async(this, null, function* () {\n            var _a2;\n            const { data: sessionData, error: sessionError } = result;\n            if (sessionError) {\n              return this._returnResult({ data: null, error: sessionError });\n            }\n            const response = yield _request(this.fetch, \"POST\", `${this.url}/factors/${params.factorId}/challenge`, {\n              body: params,\n              headers: this.headers,\n              jwt: (_a2 = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a2 === void 0 ? void 0 : _a2.access_token\n            });\n            if (response.error) {\n              return response;\n            }\n            const { data } = response;\n            if (data.type !== \"webauthn\") {\n              return { data, error: null };\n            }\n            switch (data.webauthn.type) {\n              case \"create\":\n                return {\n                  data: Object.assign(Object.assign({}, data), { webauthn: Object.assign(Object.assign({}, data.webauthn), { credential_options: Object.assign(Object.assign({}, data.webauthn.credential_options), { publicKey: deserializeCredentialCreationOptions(data.webauthn.credential_options.publicKey) }) }) }),\n                  error: null\n                };\n              case \"request\":\n                return {\n                  data: Object.assign(Object.assign({}, data), { webauthn: Object.assign(Object.assign({}, data.webauthn), { credential_options: Object.assign(Object.assign({}, data.webauthn.credential_options), { publicKey: deserializeCredentialRequestOptions(data.webauthn.credential_options.publicKey) }) }) }),\n                  error: null\n                };\n            }\n          }));\n        } catch (error) {\n          if (isAuthError(error)) {\n            return this._returnResult({ data: null, error });\n          }\n          throw error;\n        }\n      }));\n    });\n  }\n  /**\n   * {@see GoTrueMFAApi#challengeAndVerify}\n   */\n  _challengeAndVerify(params) {\n    return __async(this, null, function* () {\n      const { data: challengeData, error: challengeError } = yield this._challenge({\n        factorId: params.factorId\n      });\n      if (challengeError) {\n        return this._returnResult({ data: null, error: challengeError });\n      }\n      return yield this._verify({\n        factorId: params.factorId,\n        challengeId: challengeData.id,\n        code: params.code\n      });\n    });\n  }\n  /**\n   * {@see GoTrueMFAApi#listFactors}\n   */\n  _listFactors() {\n    return __async(this, null, function* () {\n      var _a2;\n      const { data: { user }, error: userError } = yield this.getUser();\n      if (userError) {\n        return { data: null, error: userError };\n      }\n      const data = {\n        all: [],\n        phone: [],\n        totp: [],\n        webauthn: []\n      };\n      for (const factor of (_a2 = user === null || user === void 0 ? void 0 : user.factors) !== null && _a2 !== void 0 ? _a2 : []) {\n        data.all.push(factor);\n        if (factor.status === \"verified\") {\n          ;\n          data[factor.factor_type].push(factor);\n        }\n      }\n      return {\n        data,\n        error: null\n      };\n    });\n  }\n  /**\n   * {@see GoTrueMFAApi#getAuthenticatorAssuranceLevel}\n   */\n  _getAuthenticatorAssuranceLevel() {\n    return __async(this, null, function* () {\n      var _a2, _b;\n      const { data: { session }, error: sessionError } = yield this.getSession();\n      if (sessionError) {\n        return this._returnResult({ data: null, error: sessionError });\n      }\n      if (!session) {\n        return {\n          data: { currentLevel: null, nextLevel: null, currentAuthenticationMethods: [] },\n          error: null\n        };\n      }\n      const { payload } = decodeJWT(session.access_token);\n      let currentLevel = null;\n      if (payload.aal) {\n        currentLevel = payload.aal;\n      }\n      let nextLevel = currentLevel;\n      const verifiedFactors = (_b = (_a2 = session.user.factors) === null || _a2 === void 0 ? void 0 : _a2.filter((factor) => factor.status === \"verified\")) !== null && _b !== void 0 ? _b : [];\n      if (verifiedFactors.length > 0) {\n        nextLevel = \"aal2\";\n      }\n      const currentAuthenticationMethods = payload.amr || [];\n      return { data: { currentLevel, nextLevel, currentAuthenticationMethods }, error: null };\n    });\n  }\n  /**\n   * Retrieves details about an OAuth authorization request.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   *\n   * Returns authorization details including client info, scopes, and user information.\n   * If the API returns a redirect_uri, it means consent was already given - the caller\n   * should handle the redirect manually if needed.\n   */\n  _getAuthorizationDetails(authorizationId) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: { session }, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          if (!session) {\n            return this._returnResult({ data: null, error: new AuthSessionMissingError() });\n          }\n          return yield _request(this.fetch, \"GET\", `${this.url}/oauth/authorizations/${authorizationId}`, {\n            headers: this.headers,\n            jwt: session.access_token,\n            xform: (data) => ({ data, error: null })\n          });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Approves an OAuth authorization request.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   */\n  _approveAuthorization(authorizationId, options) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: { session }, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          if (!session) {\n            return this._returnResult({ data: null, error: new AuthSessionMissingError() });\n          }\n          const response = yield _request(this.fetch, \"POST\", `${this.url}/oauth/authorizations/${authorizationId}/consent`, {\n            headers: this.headers,\n            jwt: session.access_token,\n            body: { action: \"approve\" },\n            xform: (data) => ({ data, error: null })\n          });\n          if (response.data && response.data.redirect_url) {\n            if (isBrowser() && !(options === null || options === void 0 ? void 0 : options.skipBrowserRedirect)) {\n              window.location.assign(response.data.redirect_url);\n            }\n          }\n          return response;\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Denies an OAuth authorization request.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   */\n  _denyAuthorization(authorizationId, options) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: { session }, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          if (!session) {\n            return this._returnResult({ data: null, error: new AuthSessionMissingError() });\n          }\n          const response = yield _request(this.fetch, \"POST\", `${this.url}/oauth/authorizations/${authorizationId}/consent`, {\n            headers: this.headers,\n            jwt: session.access_token,\n            body: { action: \"deny\" },\n            xform: (data) => ({ data, error: null })\n          });\n          if (response.data && response.data.redirect_url) {\n            if (isBrowser() && !(options === null || options === void 0 ? void 0 : options.skipBrowserRedirect)) {\n              window.location.assign(response.data.redirect_url);\n            }\n          }\n          return response;\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Lists all OAuth grants that the authenticated user has authorized.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   */\n  _listOAuthGrants() {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: { session }, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          if (!session) {\n            return this._returnResult({ data: null, error: new AuthSessionMissingError() });\n          }\n          return yield _request(this.fetch, \"GET\", `${this.url}/user/oauth/grants`, {\n            headers: this.headers,\n            jwt: session.access_token,\n            xform: (data) => ({ data, error: null })\n          });\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  /**\n   * Revokes a user's OAuth grant for a specific client.\n   * Only relevant when the OAuth 2.1 server is enabled in Supabase Auth.\n   */\n  _revokeOAuthGrant(options) {\n    return __async(this, null, function* () {\n      try {\n        return yield this._useSession((result) => __async(this, null, function* () {\n          const { data: { session }, error: sessionError } = result;\n          if (sessionError) {\n            return this._returnResult({ data: null, error: sessionError });\n          }\n          if (!session) {\n            return this._returnResult({ data: null, error: new AuthSessionMissingError() });\n          }\n          yield _request(this.fetch, \"DELETE\", `${this.url}/user/oauth/grants`, {\n            headers: this.headers,\n            jwt: session.access_token,\n            query: { client_id: options.clientId },\n            noResolveJson: true\n          });\n          return { data: {}, error: null };\n        }));\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n  fetchJwk(_0) {\n    return __async(this, arguments, function* (kid, jwks = { keys: [] }) {\n      let jwk = jwks.keys.find((key) => key.kid === kid);\n      if (jwk) {\n        return jwk;\n      }\n      const now = Date.now();\n      jwk = this.jwks.keys.find((key) => key.kid === kid);\n      if (jwk && this.jwks_cached_at + JWKS_TTL > now) {\n        return jwk;\n      }\n      const { data, error } = yield _request(this.fetch, \"GET\", `${this.url}/.well-known/jwks.json`, {\n        headers: this.headers\n      });\n      if (error) {\n        throw error;\n      }\n      if (!data.keys || data.keys.length === 0) {\n        return null;\n      }\n      this.jwks = data;\n      this.jwks_cached_at = now;\n      jwk = data.keys.find((key) => key.kid === kid);\n      if (!jwk) {\n        return null;\n      }\n      return jwk;\n    });\n  }\n  /**\n   * Extracts the JWT claims present in the access token by first verifying the\n   * JWT against the server's JSON Web Key Set endpoint\n   * `/.well-known/jwks.json` which is often cached, resulting in significantly\n   * faster responses. Prefer this method over {@link #getUser} which always\n   * sends a request to the Auth server for each JWT.\n   *\n   * If the project is not using an asymmetric JWT signing key (like ECC or\n   * RSA) it always sends a request to the Auth server (similar to {@link\n   * #getUser}) to verify the JWT.\n   *\n   * @param jwt An optional specific JWT you wish to verify, not the one you\n   *            can obtain from {@link #getSession}.\n   * @param options Various additional options that allow you to customize the\n   *                behavior of this method.\n   */\n  getClaims(_0) {\n    return __async(this, arguments, function* (jwt, options = {}) {\n      try {\n        let token = jwt;\n        if (!token) {\n          const { data, error } = yield this.getSession();\n          if (error || !data.session) {\n            return this._returnResult({ data: null, error });\n          }\n          token = data.session.access_token;\n        }\n        const { header, payload, signature, raw: { header: rawHeader, payload: rawPayload } } = decodeJWT(token);\n        if (!(options === null || options === void 0 ? void 0 : options.allowExpired)) {\n          validateExp(payload.exp);\n        }\n        const signingKey = !header.alg || header.alg.startsWith(\"HS\") || !header.kid || !(\"crypto\" in globalThis && \"subtle\" in globalThis.crypto) ? null : yield this.fetchJwk(header.kid, (options === null || options === void 0 ? void 0 : options.keys) ? { keys: options.keys } : options === null || options === void 0 ? void 0 : options.jwks);\n        if (!signingKey) {\n          const { error } = yield this.getUser(token);\n          if (error) {\n            throw error;\n          }\n          return {\n            data: {\n              claims: payload,\n              header,\n              signature\n            },\n            error: null\n          };\n        }\n        const algorithm = getAlgorithm(header.alg);\n        const publicKey = yield crypto.subtle.importKey(\"jwk\", signingKey, algorithm, true, [\n          \"verify\"\n        ]);\n        const isValid = yield crypto.subtle.verify(algorithm, publicKey, signature, stringToUint8Array(`${rawHeader}.${rawPayload}`));\n        if (!isValid) {\n          throw new AuthInvalidJwtError(\"Invalid JWT signature\");\n        }\n        return {\n          data: {\n            claims: payload,\n            header,\n            signature\n          },\n          error: null\n        };\n      } catch (error) {\n        if (isAuthError(error)) {\n          return this._returnResult({ data: null, error });\n        }\n        throw error;\n      }\n    });\n  }\n};\nGoTrueClient.nextInstanceID = {};\nvar GoTrueClient_default = GoTrueClient;\n\n// ../../node_modules/.pnpm/@supabase+auth-js@2.86.0/node_modules/@supabase/auth-js/dist/module/AuthClient.js\nvar AuthClient = GoTrueClient_default;\nvar AuthClient_default = AuthClient;\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/lib/SupabaseAuthClient.js\nvar SupabaseAuthClient = class extends AuthClient_default {\n  constructor(options) {\n    super(options);\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/SupabaseClient.js\nvar SupabaseClient = class {\n  /**\n   * Create a new client for use in the browser.\n   * @param supabaseUrl The unique Supabase URL which is supplied when you create a new project in your project dashboard.\n   * @param supabaseKey The unique Supabase Key which is supplied when you create a new project in your project dashboard.\n   * @param options.db.schema You can switch in between schemas. The schema needs to be on the list of exposed schemas inside Supabase.\n   * @param options.auth.autoRefreshToken Set to \"true\" if you want to automatically refresh the token before expiring.\n   * @param options.auth.persistSession Set to \"true\" if you want to automatically save the user session into local storage.\n   * @param options.auth.detectSessionInUrl Set to \"true\" if you want to automatically detects OAuth grants in the URL and signs in the user.\n   * @param options.realtime Options passed along to realtime-js constructor.\n   * @param options.storage Options passed along to the storage-js constructor.\n   * @param options.global.fetch A custom fetch implementation.\n   * @param options.global.headers Any additional headers to send with each network request.\n   * @example\n   * ```ts\n   * import { createClient } from '@supabase/supabase-js'\n   *\n   * const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')\n   * const { data } = await supabase.from('profiles').select('*')\n   * ```\n   */\n  constructor(supabaseUrl, supabaseKey, options) {\n    var _a2, _b, _c;\n    this.supabaseUrl = supabaseUrl;\n    this.supabaseKey = supabaseKey;\n    const baseUrl = validateSupabaseUrl(supabaseUrl);\n    if (!supabaseKey)\n      throw new Error(\"supabaseKey is required.\");\n    this.realtimeUrl = new URL(\"realtime/v1\", baseUrl);\n    this.realtimeUrl.protocol = this.realtimeUrl.protocol.replace(\"http\", \"ws\");\n    this.authUrl = new URL(\"auth/v1\", baseUrl);\n    this.storageUrl = new URL(\"storage/v1\", baseUrl);\n    this.functionsUrl = new URL(\"functions/v1\", baseUrl);\n    const defaultStorageKey = `sb-${baseUrl.hostname.split(\".\")[0]}-auth-token`;\n    const DEFAULTS = {\n      db: DEFAULT_DB_OPTIONS,\n      realtime: DEFAULT_REALTIME_OPTIONS,\n      auth: Object.assign(Object.assign({}, DEFAULT_AUTH_OPTIONS), { storageKey: defaultStorageKey }),\n      global: DEFAULT_GLOBAL_OPTIONS\n    };\n    const settings = applySettingDefaults(options !== null && options !== void 0 ? options : {}, DEFAULTS);\n    this.storageKey = (_a2 = settings.auth.storageKey) !== null && _a2 !== void 0 ? _a2 : \"\";\n    this.headers = (_b = settings.global.headers) !== null && _b !== void 0 ? _b : {};\n    if (!settings.accessToken) {\n      this.auth = this._initSupabaseAuthClient((_c = settings.auth) !== null && _c !== void 0 ? _c : {}, this.headers, settings.global.fetch);\n    } else {\n      this.accessToken = settings.accessToken;\n      this.auth = new Proxy({}, {\n        get: (_, prop) => {\n          throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(prop)} is not possible`);\n        }\n      });\n    }\n    this.fetch = fetchWithAuth(supabaseKey, this._getAccessToken.bind(this), settings.global.fetch);\n    this.realtime = this._initRealtimeClient(Object.assign({ headers: this.headers, accessToken: this._getAccessToken.bind(this) }, settings.realtime));\n    if (this.accessToken) {\n      this.accessToken().then((token) => this.realtime.setAuth(token)).catch((e) => console.warn(\"Failed to set initial Realtime auth token:\", e));\n    }\n    this.rest = new PostgrestClient2(new URL(\"rest/v1\", baseUrl).href, {\n      headers: this.headers,\n      schema: settings.db.schema,\n      fetch: this.fetch\n    });\n    this.storage = new StorageClient(this.storageUrl.href, this.headers, this.fetch, options === null || options === void 0 ? void 0 : options.storage);\n    if (!settings.accessToken) {\n      this._listenForAuthEvents();\n    }\n  }\n  /**\n   * Supabase Functions allows you to deploy and invoke edge functions.\n   */\n  get functions() {\n    return new FunctionsClient(this.functionsUrl.href, {\n      headers: this.headers,\n      customFetch: this.fetch\n    });\n  }\n  /**\n   * Perform a query on a table or a view.\n   *\n   * @param relation - The table or view name to query\n   */\n  from(relation) {\n    return this.rest.from(relation);\n  }\n  // NOTE: signatures must be kept in sync with PostgrestClient.schema\n  /**\n   * Select a schema to query or perform an function (rpc) call.\n   *\n   * The schema needs to be on the list of exposed schemas inside Supabase.\n   *\n   * @param schema - The schema to query\n   */\n  schema(schema) {\n    return this.rest.schema(schema);\n  }\n  // NOTE: signatures must be kept in sync with PostgrestClient.rpc\n  /**\n   * Perform a function call.\n   *\n   * @param fn - The function name to call\n   * @param args - The arguments to pass to the function call\n   * @param options - Named parameters\n   * @param options.head - When set to `true`, `data` will not be returned.\n   * Useful if you only need the count.\n   * @param options.get - When set to `true`, the function will be called with\n   * read-only access mode.\n   * @param options.count - Count algorithm to use to count rows returned by the\n   * function. Only applicable for [set-returning\n   * functions](https://www.postgresql.org/docs/current/functions-srf.html).\n   *\n   * `\"exact\"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the\n   * hood.\n   *\n   * `\"planned\"`: Approximated but fast count algorithm. Uses the Postgres\n   * statistics under the hood.\n   *\n   * `\"estimated\"`: Uses exact count for low numbers and planned count for high\n   * numbers.\n   */\n  rpc(fn, args = {}, options = {\n    head: false,\n    get: false,\n    count: void 0\n  }) {\n    return this.rest.rpc(fn, args, options);\n  }\n  /**\n   * Creates a Realtime channel with Broadcast, Presence, and Postgres Changes.\n   *\n   * @param {string} name - The name of the Realtime channel.\n   * @param {Object} opts - The options to pass to the Realtime channel.\n   *\n   */\n  channel(name, opts = { config: {} }) {\n    return this.realtime.channel(name, opts);\n  }\n  /**\n   * Returns all Realtime channels.\n   */\n  getChannels() {\n    return this.realtime.getChannels();\n  }\n  /**\n   * Unsubscribes and removes Realtime channel from Realtime client.\n   *\n   * @param {RealtimeChannel} channel - The name of the Realtime channel.\n   *\n   */\n  removeChannel(channel) {\n    return this.realtime.removeChannel(channel);\n  }\n  /**\n   * Unsubscribes and removes all Realtime channels from Realtime client.\n   */\n  removeAllChannels() {\n    return this.realtime.removeAllChannels();\n  }\n  _getAccessToken() {\n    return __async(this, null, function* () {\n      var _a2, _b;\n      if (this.accessToken) {\n        return yield this.accessToken();\n      }\n      const { data } = yield this.auth.getSession();\n      return (_b = (_a2 = data.session) === null || _a2 === void 0 ? void 0 : _a2.access_token) !== null && _b !== void 0 ? _b : this.supabaseKey;\n    });\n  }\n  _initSupabaseAuthClient({ autoRefreshToken, persistSession, detectSessionInUrl, storage, userStorage, storageKey, flowType, lock, debug, throwOnError }, headers, fetch2) {\n    const authHeaders = {\n      Authorization: `Bearer ${this.supabaseKey}`,\n      apikey: `${this.supabaseKey}`\n    };\n    return new SupabaseAuthClient({\n      url: this.authUrl.href,\n      headers: Object.assign(Object.assign({}, authHeaders), headers),\n      storageKey,\n      autoRefreshToken,\n      persistSession,\n      detectSessionInUrl,\n      storage,\n      userStorage,\n      flowType,\n      lock,\n      debug,\n      throwOnError,\n      fetch: fetch2,\n      // auth checks if there is a custom authorizaiton header using this flag\n      // so it knows whether to return an error when getUser is called with no session\n      hasCustomAuthorizationHeader: Object.keys(this.headers).some((key) => key.toLowerCase() === \"authorization\")\n    });\n  }\n  _initRealtimeClient(options) {\n    return new RealtimeClient(this.realtimeUrl.href, Object.assign(Object.assign({}, options), { params: Object.assign({ apikey: this.supabaseKey }, options === null || options === void 0 ? void 0 : options.params) }));\n  }\n  _listenForAuthEvents() {\n    const data = this.auth.onAuthStateChange((event, session) => {\n      this._handleTokenChanged(event, \"CLIENT\", session === null || session === void 0 ? void 0 : session.access_token);\n    });\n    return data;\n  }\n  _handleTokenChanged(event, source, token) {\n    if ((event === \"TOKEN_REFRESHED\" || event === \"SIGNED_IN\") && this.changedAccessToken !== token) {\n      this.changedAccessToken = token;\n      this.realtime.setAuth(token);\n    } else if (event === \"SIGNED_OUT\") {\n      this.realtime.setAuth();\n      if (source == \"STORAGE\")\n        this.auth.signOut();\n      this.changedAccessToken = void 0;\n    }\n  }\n};\n\n// ../../node_modules/.pnpm/@supabase+supabase-js@2.86.0/node_modules/@supabase/supabase-js/dist/module/index.js\nvar createClient = (supabaseUrl, supabaseKey, options) => {\n  return new SupabaseClient(supabaseUrl, supabaseKey, options);\n};\nfunction shouldShowDeprecationWarning() {\n  if (typeof window !== \"undefined\") {\n    return false;\n  }\n  if (typeof process === \"undefined\") {\n    return false;\n  }\n  const processVersion = process[\"version\"];\n  if (processVersion === void 0 || processVersion === null) {\n    return false;\n  }\n  const versionMatch = processVersion.match(/^v(\\d+)\\./);\n  if (!versionMatch) {\n    return false;\n  }\n  const majorVersion = parseInt(versionMatch[1], 10);\n  return majorVersion <= 18;\n}\nif (shouldShowDeprecationWarning()) {\n  console.warn(`\\u26A0\\uFE0F  Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217`);\n}\n\n// src/store.ts\nvar useUIStore = create()((set) => ({\n  activePreset: 0,\n  mode: \"full\",\n  loadingPercentage: 0,\n  inputMode: \"preset\",\n  urlInput: \"\",\n  error: \"\",\n  figmaPage: \"\",\n  easyView: false,\n  isExporting: false,\n  setActivePreset: (by) => set({ activePreset: by }),\n  setInputMode: (mode) => set({ inputMode: mode }),\n  setMode: (mode) => set({ mode }),\n  setUrlInput: (value) => set({ urlInput: value }),\n  setError: (message) => set({ error: message }),\n  setFigmaPage: (page) => set({ figmaPage: page }),\n  setLoadingPercentage: (percentage) => set({ loadingPercentage: percentage }),\n  setEasyView: (easyView) => set({ easyView }),\n  setIsExporting: (isExporting) => set({ isExporting })\n}));\nvar useScrollableBoxStore = create()(\n  persist(\n    (set) => ({\n      activeIndex: 0,\n      setActiveIndex: (index) => set({ activeIndex: index })\n    }),\n    {\n      name: \"scrollable-box-storage\",\n      storage: createJSONStorage(() => localStorage)\n    }\n  )\n);\nvar useFigmaStore = create((set) => ({\n  figma: {\n    selection: 0,\n    user: null,\n    error: \"\",\n    page: \"\",\n    editorType: null,\n    nodeWidth: 0,\n    nodeHeight: 0\n  },\n  setFigma: (payload) => set((prev) => ({ figma: __spreadValues(__spreadValues({}, prev.figma), payload) }))\n}));\nfunction useFigma() {\n  const figma = useFigmaStore((state) => state.figma);\n  const setFigma = useFigmaStore((state) => state.setFigma);\n  return [figma, setFigma];\n}\nvar useBillingIntervalStore = create((set) => ({\n  billingInterval: \"year\",\n  setBillingInterval: (payload) => set({ billingInterval: payload })\n}));\nfunction useBillingInterval() {\n  const billingInterval = useBillingIntervalStore(\n    (state) => state.billingInterval\n  );\n  const setBillingInterval = useBillingIntervalStore(\n    (state) => state.setBillingInterval\n  );\n  return [billingInterval, setBillingInterval];\n}\nvar useScrollStore = create()((set) => ({\n  highlightWord: 0,\n  currentSection: \"intro-start\",\n  setHighlightWord: (word) => set({ highlightWord: word }),\n  setCurrentSection: (section) => set({ currentSection: section })\n}));\nvar useUIOverrideStore = create()((set) => ({\n  randomColor: [\n    [100, 180, 255],\n    [92, 92, 124],\n    [200, 200, 200]\n  ],\n  slider: 0,\n  toggle: false,\n  easyView: false,\n  setRandomColor: (color) => set({ randomColor: color }),\n  setSlider: (slider) => set({ slider }),\n  setToggle: (toggle) => set({ toggle })\n}));\nvar useFigmaPluginStore = create()((set) => ({\n  currentTab: 0,\n  scrollingTo: null,\n  share: \"url\",\n  easyView: false,\n  setCurrentTab: (tab) => set({ currentTab: tab }),\n  setScrollingTo: (to) => set({ scrollingTo: to }),\n  setShare: (share) => set({ share }),\n  setEasyView: (easyView) => set({ easyView })\n}));\nvar useSupabaseStore = create((set, get2) => ({\n  supabase: null,\n  initSupabase: (url, key) => {\n    console.log(\"[useSupabaseStore] initSupabase called\");\n    if (!url || !key) {\n      console.warn(\n        \"[useSupabaseStore] Missing URL or key, skipping initialization\"\n      );\n      return;\n    }\n    if (get2().supabase) return;\n    console.log(\"[useSupabaseStore] Creating Supabase client with URL:\", url);\n    const client = createClient(url, key);\n    console.log(\"[useSupabaseStore] Supabase client created successfully\");\n    set({ supabase: client });\n  }\n}));\n\nexport {\n  useUIStore,\n  useScrollableBoxStore,\n  useFigmaStore,\n  useFigma,\n  useBillingIntervalStore,\n  useBillingInterval,\n  useScrollStore,\n  useUIOverrideStore,\n  useFigmaPluginStore,\n  useSupabaseStore\n};\n","import {\n  useBillingInterval\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/Web/Pricing.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction TogglePrice(Component) {\n  return (props) => {\n    const [, setBillingInterval] = useBillingInterval();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onMonthly: () => setBillingInterval(\"year\"),\n        onYearly: () => setBillingInterval(\"month\")\n      })\n    );\n  };\n}\nfunction Price(Component) {\n  return (props) => {\n    const [billingInterval] = useBillingInterval();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: billingInterval === \"year\" ? \"year\" : \"month\"\n      })\n    );\n  };\n}\n\nexport {\n  TogglePrice,\n  Price\n};\n","// src/overrides/Web/useFPS.ts\nimport { useEffect, useRef, useState } from \"react\";\nfunction useFPS(detailed = false) {\n  const [fps, setFps] = useState(0);\n  const [avgFps, setAvgFps] = useState(0);\n  const [minFps, setMinFps] = useState(Infinity);\n  const [maxFps, setMaxFps] = useState(0);\n  const frameCountRef = useRef(0);\n  const lastTimeRef = useRef(performance.now());\n  const fpsHistoryRef = useRef([]);\n  const rafIdRef = useRef(null);\n  useEffect(() => {\n    const measureFPS = () => {\n      frameCountRef.current++;\n      const currentTime = performance.now();\n      const deltaTime = currentTime - lastTimeRef.current;\n      if (deltaTime >= 1e3) {\n        const currentFps = Math.round(\n          frameCountRef.current * 1e3 / deltaTime\n        );\n        setFps(currentFps);\n        if (detailed) {\n          fpsHistoryRef.current.push(currentFps);\n          if (fpsHistoryRef.current.length > 60) {\n            fpsHistoryRef.current.shift();\n          }\n          const avg = fpsHistoryRef.current.reduce((sum, f) => sum + f, 0) / fpsHistoryRef.current.length;\n          setAvgFps(Math.round(avg));\n          const min = Math.min(...fpsHistoryRef.current);\n          const max = Math.max(...fpsHistoryRef.current);\n          setMinFps(min);\n          setMaxFps(max);\n        }\n        frameCountRef.current = 0;\n        lastTimeRef.current = currentTime;\n      }\n      rafIdRef.current = requestAnimationFrame(measureFPS);\n    };\n    rafIdRef.current = requestAnimationFrame(measureFPS);\n    return () => {\n      if (rafIdRef.current !== null) {\n        cancelAnimationFrame(rafIdRef.current);\n      }\n    };\n  }, [detailed]);\n  return { fps, avgFps, minFps, maxFps };\n}\n\nexport {\n  useFPS\n};\n","// src/overrides/Web/useMemory.ts\nimport { useEffect, useState } from \"react\";\nvar toMB = (bytes) => typeof bytes === \"number\" ? Math.round(bytes / 1024 / 1024) : void 0;\nfunction useMemoryStats(pollInterval = 1500) {\n  const [stats, setStats] = useState({ supported: false });\n  useEffect(() => {\n    if (typeof performance === \"undefined\") return;\n    let isMounted = true;\n    const perfWithMemory = performance;\n    const deviceMemoryGB = typeof navigator !== \"undefined\" && \"deviceMemory\" in navigator ? Number(navigator.deviceMemory) : void 0;\n    if (!perfWithMemory.memory) {\n      setStats({\n        supported: false,\n        deviceMemoryGB,\n        message: \"performance.memory not exposed\"\n      });\n      return;\n    }\n    const update = () => {\n      const { usedJSHeapSize, totalJSHeapSize, jsHeapSizeLimit } = perfWithMemory.memory;\n      if (!isMounted) return;\n      setStats({\n        supported: true,\n        usedMB: toMB(usedJSHeapSize),\n        totalMB: toMB(totalJSHeapSize),\n        limitMB: toMB(jsHeapSizeLimit),\n        deviceMemoryGB\n      });\n    };\n    update();\n    const intervalId = window.setInterval(update, pollInterval);\n    return () => {\n      isMounted = false;\n      window.clearInterval(intervalId);\n    };\n  }, [pollInterval]);\n  return stats;\n}\n\nexport {\n  useMemoryStats\n};\n","import {\n  useFPS\n} from \"./chunk-425BLYMY.mjs\";\nimport {\n  useMemoryStats\n} from \"./chunk-AGDIGZ2U.mjs\";\nimport {\n  useScrollStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/Web/Scroll.tsx\nimport { useRef, useEffect } from \"react\";\nimport { useInView } from \"framer-motion\";\nimport { useScroll, useTransform } from \"framer-motion\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction SectionText(Component) {\n  return (props) => {\n    const currentSection = useScrollStore((state) => state.currentSection);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: `currentSection: ${currentSection}` }));\n  };\n}\nfunction HideGradientsOnMobile(Component) {\n  return (props) => {\n    const currentSection = useScrollStore((state) => state.currentSection);\n    if (currentSection === \"intro-start\" || currentSection === \"intro-end\" || currentSection === \"intro\" || currentSection === \"for-titles\") {\n      return /* @__PURE__ */ jsx(Component, __spreadValues({}, props));\n    }\n    return /* @__PURE__ */ jsx(Fragment, {});\n  };\n}\nfunction SectionObserver(Component) {\n  return (props) => {\n    const setCurrentSection = useScrollStore((state) => state.setCurrentSection);\n    const ref = useRef(null);\n    const isInView = useInView(ref);\n    useEffect(() => {\n      if (isInView) setCurrentSection(props.name);\n    }, [isInView]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref }));\n  };\n}\nfunction MainGradient(Component) {\n  return (props) => {\n    const { scrollY } = useScroll();\n    const radius = useTransform(scrollY, [0, 100], [0, 18]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { style: __spreadProps(__spreadValues({}, props.style), { borderRadius: radius }) }));\n  };\n}\nfunction Gap(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const { scrollY } = useScroll();\n    const size = useTransform(scrollY, [0, 400], [0, 40]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { style: __spreadProps(__spreadValues({}, style), { width: size, height: size }) }));\n  };\n}\nfunction CenterCrop1(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const currentSection = useScrollStore((state) => state.currentSection);\n    const opacity = isBottomSection(currentSection) ? 0 : 1;\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { style: __spreadProps(__spreadValues({}, style), { opacity }) }));\n  };\n}\nfunction CenterCrop2(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const currentSection = useScrollStore((state) => state.currentSection);\n    const opacity = isBottomSection(currentSection) ? 1 : 0;\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { style: __spreadProps(__spreadValues({}, style), { opacity }) }));\n  };\n}\nfunction isBottomSection(sectionName) {\n  if (typeof sectionName !== \"string\") return false;\n  return sectionName.includes(\"figma\") || sectionName.includes(\"highlight\") || sectionName.includes(\"word-scroll\");\n}\nfunction WordGradient(Component) {\n  return (props) => {\n    const highlightWord = useScrollStore((state) => state.highlightWord);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        style: {\n          width: \"100vw\",\n          height: \"100vh\",\n          position: \"absolute\",\n          top: \"50%\",\n          left: \"50%\",\n          transform: \"translate(-50%, -50%)\"\n        },\n        children: /* @__PURE__ */ jsx(\n          Component,\n          __spreadProps(__spreadValues({}, props), {\n            variant: highlightWord ? `customize-${highlightWord}` : \"default\"\n          })\n        )\n      }\n    );\n  };\n}\nfunction WordGradientText(Component) {\n  return (props) => {\n    const targetRef = useRef(null);\n    const setHighlightWord = useScrollStore((state) => state.setHighlightWord);\n    const { scrollYProgress } = useScroll({\n      target: targetRef,\n      offset: [\"start center\", \"end center\"]\n    });\n    const variantNumber = useTransform(scrollYProgress, [0, 1], [1, 12]);\n    useEffect(() => {\n      const unsubscribeScrollY = scrollYProgress.onChange((latest) => {\n        console.log(\"\\u{1F4CD} scrollYProgress:\", latest.toFixed(3));\n        if (latest > 0 && latest < 1) {\n          console.log(\"\\u2705 Text layer in target range (center viewport)\");\n        } else {\n          console.log(\"\\u274C Text layer outside center range\");\n        }\n      });\n      return () => unsubscribeScrollY();\n    }, [scrollYProgress]);\n    useEffect(() => {\n      const unsubscribeScrollY = scrollYProgress.onChange((currentProgress) => {\n        if (currentProgress <= 0 || currentProgress >= 1) {\n          const defaultVariant = props.variant || \"default\";\n          console.log(\"\\u{1F504} Using default variant:\", defaultVariant);\n          setHighlightWord(0);\n        }\n      });\n      const unsubscribe = variantNumber.onChange((latest) => {\n        const currentProgress = scrollYProgress.get();\n        if (currentProgress > 0 && currentProgress < 1) {\n          const roundedNumber = Math.round(latest);\n          const clampedNumber = Math.max(1, Math.min(12, roundedNumber));\n          console.log(\"\\u{1F4CA} variantNumber:\", latest.toFixed(3));\n          console.log(\"\\u{1F3A8} variant changed to:\", clampedNumber);\n          setHighlightWord(clampedNumber);\n        }\n      });\n      return () => {\n        unsubscribeScrollY();\n        unsubscribe();\n      };\n    }, [variantNumber, scrollYProgress, props.variant, setHighlightWord]);\n    return /* @__PURE__ */ jsx(\"div\", { ref: targetRef, children: /* @__PURE__ */ jsx(\n      Component,\n      __spreadValues({}, props)\n    ) });\n  };\n}\nfunction WordHighlight2(Component) {\n  return (props) => {\n    console.log(\"props\", props);\n    const word = props.children.props.children.props.children;\n    const setHighlightWord = useScrollStore((state) => state.setHighlightWord);\n    const currentSection = useScrollStore((state) => state.currentSection);\n    const container = useRef(null);\n    const ref = useRef(null);\n    console.log(\"container\", container);\n    const isInView = useInView(ref, {\n      root: container,\n      margin: \"0px 0px 0px 0px\"\n    });\n    useEffect(() => {\n      console.log(\"word\", word);\n      console.log(\"isInView\", isInView);\n      if (isInView) setHighlightWord(word);\n    }, [isInView, currentSection]);\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref })),\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          style: {\n            position: \"fixed\",\n            top: \"50%\",\n            left: \"50%\",\n            transform: \"translate(-50%, -50%)\",\n            width: \"200px\",\n            height: \"50px\",\n            backgroundColor: \"red\",\n            opacity: 0.5\n          }\n        }\n      )\n    ] });\n  };\n}\nfunction WordHighlight(Component) {\n  return (props) => {\n    const sectionNumber = parseInt(props.name);\n    const setHighlightWord = useScrollStore((state) => state.setHighlightWord);\n    const currentSection = useScrollStore((state) => state.currentSection);\n    const ref = useRef(null);\n    const isInView = useInView(ref, { margin: \"0px 0px 0px 0px\" });\n    useEffect(() => {\n      if (isInView === true) setHighlightWord(sectionNumber);\n      else setHighlightWord(-1);\n    }, [isInView, currentSection]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref }));\n  };\n}\nfunction wordHighlightText(Component) {\n  return (props) => {\n    const highlightWord = useScrollStore((state) => state.highlightWord);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: `currentWordNum: ${highlightWord}` }));\n  };\n}\nfunction fpsCount(Component) {\n  return (props) => {\n    const { fps } = useFPS();\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: `fps: ${fps}` }));\n  };\n}\nfunction memoryUsage(Component) {\n  return (props) => {\n    const { supported, usedMB, limitMB, deviceMemoryGB, message } = useMemoryStats();\n    let text = \"memory: unavailable\";\n    if (supported && typeof usedMB === \"number\") {\n      const limitText = limitMB ? ` / ${limitMB}MB` : \"\";\n      text = `memory: ${usedMB}MB${limitText}`;\n    } else if (deviceMemoryGB) {\n      text = `memory: ~${deviceMemoryGB}GB (browser reported)`;\n    } else if (message) {\n      text = `memory: ${message}`;\n    }\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text }));\n  };\n}\n\nexport {\n  SectionText,\n  HideGradientsOnMobile,\n  SectionObserver,\n  MainGradient,\n  Gap,\n  CenterCrop1,\n  CenterCrop2,\n  WordGradient,\n  WordGradientText,\n  WordHighlight2,\n  WordHighlight,\n  wordHighlightText,\n  fpsCount,\n  memoryUsage\n};\n","var t={};t.ConcurrentRoot=1;t.ContinuousEventPriority=4;t.DefaultEventPriority=16;t.DiscreteEventPriority=1;t.IdleEventPriority=536870912;t.LegacyRoot=0;const o=t.ConcurrentRoot,r=t.ContinuousEventPriority,e=t.DefaultEventPriority,i=t.DiscreteEventPriority,n=t.IdleEventPriority,y=t.LegacyRoot;export{o as ConcurrentRoot,r as ContinuousEventPriority,e as DefaultEventPriority,i as DiscreteEventPriority,n as IdleEventPriority,y as LegacyRoot,t as default};\n//# sourceMappingURL=constants.js.map\n","import*as t from\"react\";import*as a from\"scheduler\";var u=t;try{\"default\"in t&&(u=t.default)}catch(t){}var i=a;try{\"default\"in a&&(i=a.default)}catch(t){}var o=typeof globalThis!==\"undefined\"?globalThis:typeof self!==\"undefined\"?self:global;var s={};\n/**\n * @license React\n * react-reconciler.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 */s=function $$$reconciler(t){var a={};\"use strict\";var s=u,y=i,S=Object.assign;function n(t){for(var a=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+t,u=1;u<arguments.length;u++)a+=\"&args[]=\"+encodeURIComponent(arguments[u]);return\"Minified React error #\"+t+\"; visit \"+a+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var x=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,z=Symbol.for(\"react.element\"),N=Symbol.for(\"react.portal\"),E=Symbol.for(\"react.fragment\"),C=Symbol.for(\"react.strict_mode\"),I=Symbol.for(\"react.profiler\"),_=Symbol.for(\"react.provider\"),L=Symbol.for(\"react.context\"),T=Symbol.for(\"react.forward_ref\"),R=Symbol.for(\"react.suspense\"),F=Symbol.for(\"react.suspense_list\"),D=Symbol.for(\"react.memo\"),H=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");var W=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var j=Symbol.iterator;function ta(t){if(null===t||\"object\"!==typeof t)return null;t=j&&t[j]||t[\"@@iterator\"];return\"function\"===typeof t?t:null}function ua(t){if(null==t)return null;if(\"function\"===typeof t)return t.displayName||t.name||null;if(\"string\"===typeof t)return t;switch(t){case E:return\"Fragment\";case N:return\"Portal\";case I:return\"Profiler\";case C:return\"StrictMode\";case R:return\"Suspense\";case F:return\"SuspenseList\"}if(\"object\"===typeof t)switch(t.$$typeof){case L:return(t.displayName||\"Context\")+\".Consumer\";case _:return(t._context.displayName||\"Context\")+\".Provider\";case T:var a=t.render;t=t.displayName;t||(t=a.displayName||a.name||\"\",t=\"\"!==t?\"ForwardRef(\"+t+\")\":\"ForwardRef\");return t;case D:return a=t.displayName||null,null!==a?a:ua(t.type)||\"Memo\";case H:a=t._payload;t=t._init;try{return ua(t(a))}catch(t){}}return null}function va(t){var a=t.type;switch(t.tag){case 24:return\"Cache\";case 9:return(a.displayName||\"Context\")+\".Consumer\";case 10:return(a._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return t=a.render,t=t.displayName||t.name||\"\",a.displayName||(\"\"!==t?\"ForwardRef(\"+t+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return a;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return ua(a);case 8:return a===C?\"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 a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a}return null}function wa(t){var a=t,u=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do{a=t,0!==(a.flags&4098)&&(u=a.return),t=a.return}while(t)}return 3===a.tag?u:null}function xa(t){if(wa(t)!==t)throw Error(n(188))}function za(t){var a=t.alternate;if(!a){a=wa(t);if(null===a)throw Error(n(188));return a!==t?null:t}for(var u=t,i=a;;){var o=u.return;if(null===o)break;var s=o.alternate;if(null===s){i=o.return;if(null!==i){u=i;continue}break}if(o.child===s.child){for(s=o.child;s;){if(s===u)return xa(o),t;if(s===i)return xa(o),a;s=s.sibling}throw Error(n(188))}if(u.return!==i.return)u=o,i=s;else{for(var y=!1,S=o.child;S;){if(S===u){y=!0;u=o;i=s;break}if(S===i){y=!0;i=o;u=s;break}S=S.sibling}if(!y){for(S=s.child;S;){if(S===u){y=!0;u=s;i=o;break}if(S===i){y=!0;i=s;u=o;break}S=S.sibling}if(!y)throw Error(n(189))}}if(u.alternate!==i)throw Error(n(190))}if(3!==u.tag)throw Error(n(188));return u.stateNode.current===u?t:a}function Aa(t){t=za(t);return null!==t?Ba(t):null}function Ba(t){if(5===t.tag||6===t.tag)return t;for(t=t.child;null!==t;){var a=Ba(t);if(null!==a)return a;t=t.sibling}return null}function Ca(t){if(5===t.tag||6===t.tag)return t;for(t=t.child;null!==t;){if(4!==t.tag){var a=Ca(t);if(null!==a)return a}t=t.sibling}return null}var $,V=Array.isArray,Z=t.getPublicInstance,J=t.getRootHostContext,K=t.getChildHostContext,G=t.prepareForCommit,X=t.resetAfterCommit,ne=t.createInstance,le=t.appendInitialChild,oe=t.finalizeInitialChildren,de=t.prepareUpdate,pe=t.shouldSetTextContent,xe=t.createTextInstance,ze=t.scheduleTimeout,Ee=t.cancelTimeout,Ce=t.noTimeout,Ie=t.isPrimaryRenderer,_e=t.supportsMutation,Le=t.supportsPersistence,Fe=t.supportsHydration,De=t.getInstanceFromNode,Be=t.preparePortalMount,Ae=t.getCurrentEventPriority,qe=t.detachDeletedInstance,Je=t.supportsMicrotasks,Ke=t.scheduleMicrotask,en=t.supportsTestSelectors,nn=t.findFiberRoot,tn=t.getBoundingRect,rn=t.getTextContent,ln=t.isHiddenSubtree,an=t.matchAccessibilityRole,un=t.setFocusIfFocusable,on=t.setupIntersectionObserver,sn=t.appendChild,cn=t.appendChildToContainer,fn=t.commitTextUpdate,dn=t.commitMount,hn=t.commitUpdate,gn=t.insertBefore,pn=t.insertInContainerBefore,mn=t.removeChild,vn=t.removeChildFromContainer,yn=t.resetTextContent,bn=t.hideInstance,Sn=t.hideTextInstance,kn=t.unhideInstance,xn=t.unhideTextInstance,wn=t.clearContainer,zn=t.cloneInstance,Nn=t.createContainerChildSet,Pn=t.appendChildToContainerChildSet,En=t.finalizeContainerChildren,Cn=t.replaceContainerChildren,In=t.cloneHiddenInstance,_n=t.cloneHiddenTextInstance,Un=t.canHydrateInstance,Ln=t.canHydrateTextInstance,Tn=t.canHydrateSuspenseInstance,Rn=t.isSuspenseInstancePending,Mn=t.isSuspenseInstanceFallback,Fn=t.getSuspenseInstanceFallbackErrorDetails,Qn=t.registerSuspenseInstanceRetry,Dn=t.getNextHydratableSibling,Hn=t.getFirstHydratableChild,Wn=t.getFirstHydratableChildWithinContainer,Bn=t.getFirstHydratableChildWithinSuspenseInstance,On=t.hydrateInstance,An=t.hydrateTextInstance,qn=t.hydrateSuspenseInstance,jn=t.getNextHydratableInstanceAfterSuspenseInstance,$n=t.commitHydratedContainer,Vn=t.commitHydratedSuspenseInstance,Zn=t.clearSuspenseBoundary,Yn=t.clearSuspenseBoundaryFromContainer,Jn=t.shouldDeleteUnhydratedTailInstances,Kn=t.didNotMatchHydratedContainerTextInstance,Gn=t.didNotMatchHydratedTextInstance;function cc(t){if(void 0===$)try{throw Error()}catch(t){var a=t.stack.trim().match(/\\n( *(at )?)/);$=a&&a[1]||\"\"}return\"\\n\"+$+t}var Xn=!1;function ec(t,a){if(!t||Xn)return\"\";Xn=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(a)if(a=function(){throw Error()},Object.defineProperty(a.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(a,[])}catch(t){var i=t}Reflect.construct(t,[],a)}else{try{a.call()}catch(t){i=t}t.call(a.prototype)}else{try{throw Error()}catch(t){i=t}t()}}catch(a){if(a&&i&&\"string\"===typeof a.stack){for(var o=a.stack.split(\"\\n\"),s=i.stack.split(\"\\n\"),y=o.length-1,S=s.length-1;1<=y&&0<=S&&o[y]!==s[S];)S--;for(;1<=y&&0<=S;y--,S--)if(o[y]!==s[S]){if(1!==y||1!==S)do{if(y--,S--,0>S||o[y]!==s[S]){var x=\"\\n\"+o[y].replace(\" at new \",\" at \");t.displayName&&x.includes(\"<anonymous>\")&&(x=x.replace(\"<anonymous>\",t.displayName));return x}}while(1<=y&&0<=S);break}}}finally{Xn=!1,Error.prepareStackTrace=u}return(t=t?t.displayName||t.name:\"\")?cc(t):\"\"}var et=Object.prototype.hasOwnProperty,nt=[],tt=-1;function ic(t){return{current:t}}function q(t){0>tt||(t.current=nt[tt],nt[tt]=null,tt--)}function v(t,a){tt++;nt[tt]=t.current;t.current=a}var rt={},lt=ic(rt),at=ic(!1),ut=rt;function mc(t,a){var u=t.type.contextTypes;if(!u)return rt;var i=t.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===a)return i.__reactInternalMemoizedMaskedChildContext;var o,s={};for(o in u)s[o]=a[o];i&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=a,t.__reactInternalMemoizedMaskedChildContext=s);return s}function A(t){t=t.childContextTypes;return null!==t&&void 0!==t}function nc(){q(at);q(lt)}function oc(t,a,u){if(lt.current!==rt)throw Error(n(168));v(lt,a);v(at,u)}function pc(t,a,u){var i=t.stateNode;a=a.childContextTypes;if(\"function\"!==typeof i.getChildContext)return u;i=i.getChildContext();for(var o in i)if(!(o in a))throw Error(n(108,va(t)||\"Unknown\",o));return S({},u,i)}function qc(t){t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||rt;ut=lt.current;v(lt,t);v(at,at.current);return!0}function rc(t,a,u){var i=t.stateNode;if(!i)throw Error(n(169));u?(t=pc(t,a,ut),i.__reactInternalMemoizedMergedChildContext=t,q(at),q(lt),v(lt,t)):q(at);v(at,u)}var it=Math.clz32?Math.clz32:sc,ot=Math.log,st=Math.LN2;function sc(t){t>>>=0;return 0===t?32:31-(ot(t)/st|0)|0}var ct=64,ft=4194304;function yc(t){switch(t&-t){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 t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function zc(t,a){var u=t.pendingLanes;if(0===u)return 0;var i=0,o=t.suspendedLanes,s=t.pingedLanes,y=u&268435455;if(0!==y){var S=y&~o;0!==S?i=yc(S):(s&=y,0!==s&&(i=yc(s)))}else y=u&~o,0!==y?i=yc(y):0!==s&&(i=yc(s));if(0===i)return 0;if(0!==a&&a!==i&&0===(a&o)&&(o=i&-i,s=a&-a,o>=s||16===o&&0!==(s&4194240)))return a;0!==(i&4)&&(i|=u&16);a=t.entangledLanes;if(0!==a)for(t=t.entanglements,a&=i;0<a;)u=31-it(a),o=1<<u,i|=t[u],a&=~o;return i}function Ac(t,a){switch(t){case 1:case 2:case 4:return a+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 a+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 Bc(t,a){for(var u=t.suspendedLanes,i=t.pingedLanes,o=t.expirationTimes,s=t.pendingLanes;0<s;){var y=31-it(s),S=1<<y,x=o[y];-1===x?0!==(S&u)&&0===(S&i)||(o[y]=Ac(S,a)):x<=a&&(t.expiredLanes|=S);s&=~S}}function Cc(t){t=t.pendingLanes&-1073741825;return 0!==t?t:t&1073741824?1073741824:0}function Dc(){var t=ct;ct<<=1;0===(ct&4194240)&&(ct=64);return t}function Ec(t){for(var a=[],u=0;31>u;u++)a.push(t);return a}function Fc(t,a,u){t.pendingLanes|=a;536870912!==a&&(t.suspendedLanes=0,t.pingedLanes=0);t=t.eventTimes;a=31-it(a);t[a]=u}function Gc(t,a){var u=t.pendingLanes&~a;t.pendingLanes=a;t.suspendedLanes=0;t.pingedLanes=0;t.expiredLanes&=a;t.mutableReadLanes&=a;t.entangledLanes&=a;a=t.entanglements;var i=t.eventTimes;for(t=t.expirationTimes;0<u;){var o=31-it(u),s=1<<o;a[o]=0;i[o]=-1;t[o]=-1;u&=~s}}function Hc(t,a){var u=t.entangledLanes|=a;for(t=t.entanglements;u;){var i=31-it(u),o=1<<i;o&a|t[i]&a&&(t[i]|=a);u&=~o}}var dt=0;function Ic(t){t&=-t;return 1<t?4<t?0!==(t&268435455)?16:536870912:4:1}var ht=y.unstable_scheduleCallback,gt=y.unstable_cancelCallback,pt=y.unstable_shouldYield,mt=y.unstable_requestPaint,vt=y.unstable_now,yt=y.unstable_ImmediatePriority,bt=y.unstable_UserBlockingPriority,St=y.unstable_NormalPriority,kt=y.unstable_IdlePriority,xt=null,wt=null;function Tc(t){if(wt&&\"function\"===typeof wt.onCommitFiberRoot)try{wt.onCommitFiberRoot(xt,t,void 0,128===(t.current.flags&128))}catch(t){}}function Uc(t,a){return t===a&&(0!==t||1/t===1/a)||t!==t&&a!==a}var zt=\"function\"===typeof Object.is?Object.is:Uc,Nt=null,Pt=!1,Et=!1;function Zc(t){null===Nt?Nt=[t]:Nt.push(t)}function $c(t){Pt=!0;Zc(t)}function ad(){if(!Et&&null!==Nt){Et=!0;var t=0,a=dt;try{var u=Nt;for(dt=1;t<u.length;t++){var i=u[t];do{i=i(!0)}while(null!==i)}Nt=null;Pt=!1}catch(a){throw null!==Nt&&(Nt=Nt.slice(t+1)),ht(yt,ad),a}finally{dt=a,Et=!1}}return null}var Ct=[],It=0,_t=null,Ut=0,Lt=[],Tt=0,Rt=null,Mt=1,Ft=\"\";function kd(t,a){Ct[It++]=Ut;Ct[It++]=_t;_t=t;Ut=a}function ld(t,a,u){Lt[Tt++]=Mt;Lt[Tt++]=Ft;Lt[Tt++]=Rt;Rt=t;var i=Mt;t=Ft;var o=32-it(i)-1;i&=~(1<<o);u+=1;var s=32-it(a)+o;if(30<s){var y=o-o%5;s=(i&(1<<y)-1).toString(32);i>>=y;o-=y;Mt=1<<32-it(a)+o|u<<o|i;Ft=s+t}else Mt=1<<s|u<<o|i,Ft=t}function md(t){null!==t.return&&(kd(t,1),ld(t,1,0))}function nd(t){for(;t===_t;)_t=Ct[--It],Ct[It]=null,Ut=Ct[--It],Ct[It]=null;for(;t===Rt;)Rt=Lt[--Tt],Lt[Tt]=null,Ft=Lt[--Tt],Lt[Tt]=null,Mt=Lt[--Tt],Lt[Tt]=null}var Qt=null,Dt=null,Ht=!1,Wt=!1,Bt=null;function sd(t,a){var u=td(5,null,null,0);u.elementType=\"DELETED\";u.stateNode=a;u.return=t;a=t.deletions;null===a?(t.deletions=[u],t.flags|=16):a.push(u)}function ud(t,a){switch(t.tag){case 5:return a=Un(a,t.type,t.pendingProps),null!==a&&(t.stateNode=a,Qt=t,Dt=Hn(a),!0);case 6:return a=Ln(a,t.pendingProps),null!==a&&(t.stateNode=a,Qt=t,Dt=null,!0);case 13:a=Tn(a);if(null!==a){var u=null!==Rt?{id:Mt,overflow:Ft}:null;t.memoizedState={dehydrated:a,treeContext:u,retryLane:1073741824};u=td(18,null,null,0);u.stateNode=a;u.return=t;t.child=u;Qt=t;Dt=null;return!0}return!1;default:return!1}}function vd(t){return 0!==(t.mode&1)&&0===(t.flags&128)}function wd(t){if(Ht){var a=Dt;if(a){var u=a;if(!ud(t,a)){if(vd(t))throw Error(n(418));a=Dn(u);var i=Qt;a&&ud(t,a)?sd(i,u):(t.flags=t.flags&-4097|2,Ht=!1,Qt=t)}}else{if(vd(t))throw Error(n(418));t.flags=t.flags&-4097|2;Ht=!1;Qt=t}}}function xd(t){for(t=t.return;null!==t&&5!==t.tag&&3!==t.tag&&13!==t.tag;)t=t.return;Qt=t}function yd(t){if(!Fe||t!==Qt)return!1;if(!Ht)return xd(t),Ht=!0,!1;if(3!==t.tag&&(5!==t.tag||Jn(t.type)&&!pe(t.type,t.memoizedProps))){var a=Dt;if(a){if(vd(t))throw zd(),Error(n(418));for(;a;)sd(t,a),a=Dn(a)}}xd(t);if(13===t.tag){if(!Fe)throw Error(n(316));t=t.memoizedState;t=null!==t?t.dehydrated:null;if(!t)throw Error(n(317));Dt=jn(t)}else Dt=Qt?Dn(t.stateNode):null;return!0}function zd(){for(var t=Dt;t;)t=Dn(t)}function Ad(){Fe&&(Dt=Qt=null,Wt=Ht=!1)}function Bd(t){null===Bt?Bt=[t]:Bt.push(t)}var Ot=x.ReactCurrentBatchConfig;function Dd(t,a){if(zt(t,a))return!0;if(\"object\"!==typeof t||null===t||\"object\"!==typeof a||null===a)return!1;var u=Object.keys(t),i=Object.keys(a);if(u.length!==i.length)return!1;for(i=0;i<u.length;i++){var o=u[i];if(!et.call(a,o)||!zt(t[o],a[o]))return!1}return!0}function Ed(t){switch(t.tag){case 5:return cc(t.type);case 16:return cc(\"Lazy\");case 13:return cc(\"Suspense\");case 19:return cc(\"SuspenseList\");case 0:case 2:case 15:return t=ec(t.type,!1),t;case 11:return t=ec(t.type.render,!1),t;case 1:return t=ec(t.type,!0),t;default:return\"\"}}function Fd(t,a,u){t=u.ref;if(null!==t&&\"function\"!==typeof t&&\"object\"!==typeof t){if(u._owner){u=u._owner;if(u){if(1!==u.tag)throw Error(n(309));var i=u.stateNode}if(!i)throw Error(n(147,t));var o=i,s=\"\"+t;if(null!==a&&null!==a.ref&&\"function\"===typeof a.ref&&a.ref._stringRef===s)return a.ref;a=function(t){var a=o.refs;null===t?delete a[s]:a[s]=t};a._stringRef=s;return a}if(\"string\"!==typeof t)throw Error(n(284));if(!u._owner)throw Error(n(290,t))}return t}function Gd(t,a){t=Object.prototype.toString.call(a);throw Error(n(31,\"[object Object]\"===t?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":t))}function Hd(t){var a=t._init;return a(t._payload)}function Id(t){function b(a,u){if(t){var i=a.deletions;null===i?(a.deletions=[u],a.flags|=16):i.push(u)}}function c(a,u){if(!t)return null;for(;null!==u;)b(a,u),u=u.sibling;return null}function d(t,a){for(t=new Map;null!==a;)null!==a.key?t.set(a.key,a):t.set(a.index,a),a=a.sibling;return t}function e(t,a){t=Jd(t,a);t.index=0;t.sibling=null;return t}function f(a,u,i){a.index=i;if(!t)return a.flags|=1048576,u;i=a.alternate;if(null!==i)return i=i.index,i<u?(a.flags|=2,u):i;a.flags|=2;return u}function g(a){t&&null===a.alternate&&(a.flags|=2);return a}function h(t,a,u,i){if(null===a||6!==a.tag)return a=Kd(u,t.mode,i),a.return=t,a;a=e(a,u);a.return=t;return a}function k(t,a,u,i){var o=u.type;if(o===E)return m(t,a,u.props.children,i,u.key);if(null!==a&&(a.elementType===o||\"object\"===typeof o&&null!==o&&o.$$typeof===H&&Hd(o)===a.type))return i=e(a,u.props),i.ref=Fd(t,a,u),i.return=t,i;i=Ld(u.type,u.key,u.props,null,t.mode,i);i.ref=Fd(t,a,u);i.return=t;return i}function l(t,a,u,i){if(null===a||4!==a.tag||a.stateNode.containerInfo!==u.containerInfo||a.stateNode.implementation!==u.implementation)return a=Md(u,t.mode,i),a.return=t,a;a=e(a,u.children||[]);a.return=t;return a}function m(t,a,u,i,o){if(null===a||7!==a.tag)return a=Nd(u,t.mode,i,o),a.return=t,a;a=e(a,u);a.return=t;return a}function r(t,a,u){if(\"string\"===typeof a&&\"\"!==a||\"number\"===typeof a)return a=Kd(\"\"+a,t.mode,u),a.return=t,a;if(\"object\"===typeof a&&null!==a){switch(a.$$typeof){case z:return u=Ld(a.type,a.key,a.props,null,t.mode,u),u.ref=Fd(t,null,a),u.return=t,u;case N:return a=Md(a,t.mode,u),a.return=t,a;case H:var i=a._init;return r(t,i(a._payload),u)}if(V(a)||ta(a))return a=Nd(a,t.mode,u,null),a.return=t,a;Gd(t,a)}return null}function p(t,a,u,i){var o=null!==a?a.key:null;if(\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u)return null!==o?null:h(t,a,\"\"+u,i);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case z:return u.key===o?k(t,a,u,i):null;case N:return u.key===o?l(t,a,u,i):null;case H:return o=u._init,p(t,a,o(u._payload),i)}if(V(u)||ta(u))return null!==o?null:m(t,a,u,i,null);Gd(t,u)}return null}function B(t,a,u,i,o){if(\"string\"===typeof i&&\"\"!==i||\"number\"===typeof i)return t=t.get(u)||null,h(a,t,\"\"+i,o);if(\"object\"===typeof i&&null!==i){switch(i.$$typeof){case z:return t=t.get(null===i.key?u:i.key)||null,k(a,t,i,o);case N:return t=t.get(null===i.key?u:i.key)||null,l(a,t,i,o);case H:var s=i._init;return B(t,a,u,s(i._payload),o)}if(V(i)||ta(i))return t=t.get(u)||null,m(a,t,i,o,null);Gd(a,i)}return null}function w(a,u,i,o){for(var s=null,y=null,S=u,x=u=0,z=null;null!==S&&x<i.length;x++){S.index>x?(z=S,S=null):z=S.sibling;var N=p(a,S,i[x],o);if(null===N){null===S&&(S=z);break}t&&S&&null===N.alternate&&b(a,S);u=f(N,u,x);null===y?s=N:y.sibling=N;y=N;S=z}if(x===i.length)return c(a,S),Ht&&kd(a,x),s;if(null===S){for(;x<i.length;x++)S=r(a,i[x],o),null!==S&&(u=f(S,u,x),null===y?s=S:y.sibling=S,y=S);Ht&&kd(a,x);return s}for(S=d(a,S);x<i.length;x++)z=B(S,a,x,i[x],o),null!==z&&(t&&null!==z.alternate&&S.delete(null===z.key?x:z.key),u=f(z,u,x),null===y?s=z:y.sibling=z,y=z);t&&S.forEach((function(t){return b(a,t)}));Ht&&kd(a,x);return s}function Y(a,u,i,o){var s=ta(i);if(\"function\"!==typeof s)throw Error(n(150));i=s.call(i);if(null==i)throw Error(n(151));for(var y=s=null,S=u,x=u=0,z=null,N=i.next();null!==S&&!N.done;x++,N=i.next()){S.index>x?(z=S,S=null):z=S.sibling;var E=p(a,S,N.value,o);if(null===E){null===S&&(S=z);break}t&&S&&null===E.alternate&&b(a,S);u=f(E,u,x);null===y?s=E:y.sibling=E;y=E;S=z}if(N.done)return c(a,S),Ht&&kd(a,x),s;if(null===S){for(;!N.done;x++,N=i.next())N=r(a,N.value,o),null!==N&&(u=f(N,u,x),null===y?s=N:y.sibling=N,y=N);Ht&&kd(a,x);return s}for(S=d(a,S);!N.done;x++,N=i.next())N=B(S,a,x,N.value,o),null!==N&&(t&&null!==N.alternate&&S.delete(null===N.key?x:N.key),u=f(N,u,x),null===y?s=N:y.sibling=N,y=N);t&&S.forEach((function(t){return b(a,t)}));Ht&&kd(a,x);return s}function ya(t,a,u,i){\"object\"===typeof u&&null!==u&&u.type===E&&null===u.key&&(u=u.props.children);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case z:e:{for(var o=u.key,s=a;null!==s;){if(s.key===o){o=u.type;if(o===E){if(7===s.tag){c(t,s.sibling);a=e(s,u.props.children);a.return=t;t=a;break e}}else if(s.elementType===o||\"object\"===typeof o&&null!==o&&o.$$typeof===H&&Hd(o)===s.type){c(t,s.sibling);a=e(s,u.props);a.ref=Fd(t,s,u);a.return=t;t=a;break e}c(t,s);break}b(t,s);s=s.sibling}u.type===E?(a=Nd(u.props.children,t.mode,i,u.key),a.return=t,t=a):(i=Ld(u.type,u.key,u.props,null,t.mode,i),i.ref=Fd(t,a,u),i.return=t,t=i)}return g(t);case N:e:{for(s=u.key;null!==a;){if(a.key===s){if(4===a.tag&&a.stateNode.containerInfo===u.containerInfo&&a.stateNode.implementation===u.implementation){c(t,a.sibling);a=e(a,u.children||[]);a.return=t;t=a;break e}c(t,a);break}b(t,a);a=a.sibling}a=Md(u,t.mode,i);a.return=t;t=a}return g(t);case H:return s=u._init,ya(t,a,s(u._payload),i)}if(V(u))return w(t,a,u,i);if(ta(u))return Y(t,a,u,i);Gd(t,u)}return\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u?(u=\"\"+u,null!==a&&6===a.tag?(c(t,a.sibling),a=e(a,u),a.return=t,t=a):(c(t,a),a=Kd(u,t.mode,i),a.return=t,t=a),g(t)):c(t,a)}return ya}var At=Id(!0),qt=Id(!1),jt=ic(null),$t=null,Vt=null,Zt=null;function Ud(){Zt=Vt=$t=null}function Vd(t,a,u){Ie?(v(jt,a._currentValue),a._currentValue=u):(v(jt,a._currentValue2),a._currentValue2=u)}function Wd(t){var a=jt.current;q(jt);Ie?t._currentValue=a:t._currentValue2=a}function Xd(t,a,u){for(;null!==t;){var i=t.alternate;(t.childLanes&a)!==a?(t.childLanes|=a,null!==i&&(i.childLanes|=a)):null!==i&&(i.childLanes&a)!==a&&(i.childLanes|=a);if(t===u)break;t=t.return}}function Yd(t,a){$t=t;Zt=Vt=null;t=t.dependencies;null!==t&&null!==t.firstContext&&(0!==(t.lanes&a)&&(Sr=!0),t.firstContext=null)}function Zd(t){var a=Ie?t._currentValue:t._currentValue2;if(Zt!==t)if(t={context:t,memoizedValue:a,next:null},null===Vt){if(null===$t)throw Error(n(308));Vt=t;$t.dependencies={lanes:0,firstContext:t}}else Vt=Vt.next=t;return a}var Yt=null;function ae(t){null===Yt?Yt=[t]:Yt.push(t)}function be(t,a,u,i){var o=a.interleaved;null===o?(u.next=u,ae(a)):(u.next=o.next,o.next=u);a.interleaved=u;return ce(t,i)}function ce(t,a){t.lanes|=a;var u=t.alternate;null!==u&&(u.lanes|=a);u=t;for(t=t.return;null!==t;)t.childLanes|=a,u=t.alternate,null!==u&&(u.childLanes|=a),u=t,t=t.return;return 3===u.tag?u.stateNode:null}var Jt=!1;function ee(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function fe(t,a){t=t.updateQueue;a.updateQueue===t&&(a.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function ge(t,a){return{eventTime:t,lane:a,tag:0,payload:null,callback:null,next:null}}function he(t,a,u){var i=t.updateQueue;if(null===i)return null;i=i.shared;if(0!==(Ar&2)){var o=i.pending;null===o?a.next=a:(a.next=o.next,o.next=a);i.pending=a;return ce(t,u)}o=i.interleaved;null===o?(a.next=a,ae(i)):(a.next=o.next,o.next=a);i.interleaved=a;return ce(t,u)}function ie(t,a,u){a=a.updateQueue;if(null!==a&&(a=a.shared,0!==(u&4194240))){var i=a.lanes;i&=t.pendingLanes;u|=i;a.lanes=u;Hc(t,u)}}function je(t,a){var u=t.updateQueue,i=t.alternate;if(null===i||(i=i.updateQueue,u!==i)){t=u.lastBaseUpdate;null===t?u.firstBaseUpdate=a:t.next=a;u.lastBaseUpdate=a}else{var o=null,s=null;u=u.firstBaseUpdate;if(null!==u){do{var y={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};null===s?o=s=y:s=s.next=y;u=u.next}while(null!==u);null===s?o=s=a:s=s.next=a}else o=s=a;u={baseState:i.baseState,firstBaseUpdate:o,lastBaseUpdate:s,shared:i.shared,effects:i.effects};t.updateQueue=u}}function ke(t,a,u,i){var o=t.updateQueue;Jt=!1;var s=o.firstBaseUpdate,y=o.lastBaseUpdate,x=o.shared.pending;if(null!==x){o.shared.pending=null;var z=x,N=z.next;z.next=null;null===y?s=N:y.next=N;y=z;var E=t.alternate;null!==E&&(E=E.updateQueue,x=E.lastBaseUpdate,x!==y&&(null===x?E.firstBaseUpdate=N:x.next=N,E.lastBaseUpdate=z))}if(null!==s){var C=o.baseState;y=0;E=N=z=null;x=s;do{var I=x.lane,_=x.eventTime;if((i&I)===I){null!==E&&(E=E.next={eventTime:_,lane:0,tag:x.tag,payload:x.payload,callback:x.callback,next:null});e:{var L=t,T=x;I=a;_=u;switch(T.tag){case 1:L=T.payload;if(\"function\"===typeof L){C=L.call(_,C,I);break e}C=L;break e;case 3:L.flags=L.flags&-65537|128;case 0:L=T.payload;I=\"function\"===typeof L?L.call(_,C,I):L;if(null===I||void 0===I)break e;C=S({},C,I);break e;case 2:Jt=!0}}null!==x.callback&&0!==x.lane&&(t.flags|=64,I=o.effects,null===I?o.effects=[x]:I.push(x))}else _={eventTime:_,lane:I,tag:x.tag,payload:x.payload,callback:x.callback,next:null},null===E?(N=E=_,z=C):E=E.next=_,y|=I;x=x.next;if(null===x){if(x=o.shared.pending,null===x)break;I=x,x=I.next,I.next=null,o.lastBaseUpdate=I,o.shared.pending=null}}while(1);null===E&&(z=C);o.baseState=z;o.firstBaseUpdate=N;o.lastBaseUpdate=E;a=o.shared.interleaved;if(null!==a){o=a;do{y|=o.lane,o=o.next}while(o!==a)}else null===s&&(o.shared.lanes=0);Kr|=y;t.lanes=y;t.memoizedState=C}}function me(t,a,u){t=a.effects;a.effects=null;if(null!==t)for(a=0;a<t.length;a++){var i=t[a],o=i.callback;if(null!==o){i.callback=null;i=u;if(\"function\"!==typeof o)throw Error(n(191,o));o.call(i)}}}var Kt={},Gt=ic(Kt),Xt=ic(Kt),er=ic(Kt);function re(t){if(t===Kt)throw Error(n(174));return t}function se(t,a){v(er,a);v(Xt,t);v(Gt,Kt);t=J(a);q(Gt);v(Gt,t)}function te(){q(Gt);q(Xt);q(er)}function ue(t){var a=re(er.current),u=re(Gt.current);a=K(u,t.type,a);u!==a&&(v(Xt,t),v(Gt,a))}function ve(t){Xt.current===t&&(q(Gt),q(Xt))}var nr=ic(0);function we(t){for(var a=t;null!==a;){if(13===a.tag){var u=a.memoizedState;if(null!==u&&(u=u.dehydrated,null===u||Rn(u)||Mn(u)))return a}else if(19===a.tag&&void 0!==a.memoizedProps.revealOrder){if(0!==(a.flags&128))return a}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return null;a=a.return}a.sibling.return=a.return;a=a.sibling}return null}var tr=[];function ye(){for(var t=0;t<tr.length;t++){var a=tr[t];Ie?a._workInProgressVersionPrimary=null:a._workInProgressVersionSecondary=null}tr.length=0}var rr=x.ReactCurrentDispatcher,lr=x.ReactCurrentBatchConfig,ar=0,ur=null,ir=null,or=null,sr=!1,cr=!1,fr=0,dr=0;function M(){throw Error(n(321))}function Ge(t,a){if(null===a)return!1;for(var u=0;u<a.length&&u<t.length;u++)if(!zt(t[u],a[u]))return!1;return!0}function He(t,a,u,i,o,s){ar=s;ur=a;a.memoizedState=null;a.updateQueue=null;a.lanes=0;rr.current=null===t||null===t.memoizedState?gr:pr;t=u(i,o);if(cr){s=0;do{cr=!1;fr=0;if(25<=s)throw Error(n(301));s+=1;or=ir=null;a.updateQueue=null;rr.current=mr;t=u(i,o)}while(cr)}rr.current=hr;a=null!==ir&&null!==ir.next;ar=0;or=ir=ur=null;sr=!1;if(a)throw Error(n(300));return t}function Me(){var t=0!==fr;fr=0;return t}function Ne(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===or?ur.memoizedState=or=t:or=or.next=t;return or}function Oe(){if(null===ir){var t=ur.alternate;t=null!==t?t.memoizedState:null}else t=ir.next;var a=null===or?ur.memoizedState:or.next;if(null!==a)or=a,ir=t;else{if(null===t)throw Error(n(310));ir=t;t={memoizedState:ir.memoizedState,baseState:ir.baseState,baseQueue:ir.baseQueue,queue:ir.queue,next:null};null===or?ur.memoizedState=or=t:or=or.next=t}return or}function Pe(t,a){return\"function\"===typeof a?a(t):a}function Qe(t){var a=Oe(),u=a.queue;if(null===u)throw Error(n(311));u.lastRenderedReducer=t;var i=ir,o=i.baseQueue,s=u.pending;if(null!==s){if(null!==o){var y=o.next;o.next=s.next;s.next=y}i.baseQueue=o=s;u.pending=null}if(null!==o){s=o.next;i=i.baseState;var S=y=null,x=null,z=s;do{var N=z.lane;if((ar&N)===N)null!==x&&(x=x.next={lane:0,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null}),i=z.hasEagerState?z.eagerState:t(i,z.action);else{var E={lane:N,action:z.action,hasEagerState:z.hasEagerState,eagerState:z.eagerState,next:null};null===x?(S=x=E,y=i):x=x.next=E;ur.lanes|=N;Kr|=N}z=z.next}while(null!==z&&z!==s);null===x?y=i:x.next=S;zt(i,a.memoizedState)||(Sr=!0);a.memoizedState=i;a.baseState=y;a.baseQueue=x;u.lastRenderedState=i}t=u.interleaved;if(null!==t){o=t;do{s=o.lane,ur.lanes|=s,Kr|=s,o=o.next}while(o!==t)}else null===o&&(u.lanes=0);return[a.memoizedState,u.dispatch]}function Re(t){var a=Oe(),u=a.queue;if(null===u)throw Error(n(311));u.lastRenderedReducer=t;var i=u.dispatch,o=u.pending,s=a.memoizedState;if(null!==o){u.pending=null;var y=o=o.next;do{s=t(s,y.action),y=y.next}while(y!==o);zt(s,a.memoizedState)||(Sr=!0);a.memoizedState=s;null===a.baseQueue&&(a.baseState=s);u.lastRenderedState=s}return[s,i]}function Se(){}function Te(t,a){var u=ur,i=Oe(),o=a(),s=!zt(i.memoizedState,o);s&&(i.memoizedState=o,Sr=!0);i=i.queue;Ue(Ve.bind(null,u,i,t),[t]);if(i.getSnapshot!==a||s||null!==or&&or.memoizedState.tag&1){u.flags|=2048;We(9,Xe.bind(null,u,i,o,a),void 0,null);if(null===qr)throw Error(n(349));0!==(ar&30)||Ye(u,a,o)}return o}function Ye(t,a,u){t.flags|=16384;t={getSnapshot:a,value:u};a=ur.updateQueue;null===a?(a={lastEffect:null,stores:null},ur.updateQueue=a,a.stores=[t]):(u=a.stores,null===u?a.stores=[t]:u.push(t))}function Xe(t,a,u,i){a.value=u;a.getSnapshot=i;Ze(a)&&$e(t)}function Ve(t,a,u){return u((function(){Ze(a)&&$e(t)}))}function Ze(t){var a=t.getSnapshot;t=t.value;try{var u=a();return!zt(t,u)}catch(t){return!0}}function $e(t){var a=ce(t,1);null!==a&&af(a,t,1,-1)}function bf(t){var a=Ne();\"function\"===typeof t&&(t=t());a.memoizedState=a.baseState=t;t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Pe,lastRenderedState:t};a.queue=t;t=t.dispatch=cf.bind(null,ur,t);return[a.memoizedState,t]}function We(t,a,u,i){t={tag:t,create:a,destroy:u,deps:i,next:null};a=ur.updateQueue;null===a?(a={lastEffect:null,stores:null},ur.updateQueue=a,a.lastEffect=t.next=t):(u=a.lastEffect,null===u?a.lastEffect=t.next=t:(i=u.next,u.next=t,t.next=i,a.lastEffect=t));return t}function df(){return Oe().memoizedState}function ef(t,a,u,i){var o=Ne();ur.flags|=t;o.memoizedState=We(1|a,u,void 0,void 0===i?null:i)}function ff(t,a,u,i){var o=Oe();i=void 0===i?null:i;var s=void 0;if(null!==ir){var y=ir.memoizedState;s=y.destroy;if(null!==i&&Ge(i,y.deps)){o.memoizedState=We(a,u,s,i);return}}ur.flags|=t;o.memoizedState=We(1|a,u,s,i)}function gf(t,a){return ef(8390656,8,t,a)}function Ue(t,a){return ff(2048,8,t,a)}function hf(t,a){return ff(4,2,t,a)}function jf(t,a){return ff(4,4,t,a)}function kf(t,a){return\"function\"===typeof a?(t=t(),a(t),function(){a(null)}):null!==a&&void 0!==a?(t=t(),a.current=t,function(){a.current=null}):void 0}function lf(t,a,u){u=null!==u&&void 0!==u?u.concat([t]):null;return ff(4,4,kf.bind(null,a,t),u)}function mf(){}function nf(t,a){var u=Oe();a=void 0===a?null:a;var i=u.memoizedState;if(null!==i&&null!==a&&Ge(a,i[1]))return i[0];u.memoizedState=[t,a];return t}function of(t,a){var u=Oe();a=void 0===a?null:a;var i=u.memoizedState;if(null!==i&&null!==a&&Ge(a,i[1]))return i[0];t=t();u.memoizedState=[t,a];return t}function pf(t,a,u){if(0===(ar&21))return t.baseState&&(t.baseState=!1,Sr=!0),t.memoizedState=u;zt(u,a)||(u=Dc(),ur.lanes|=u,Kr|=u,t.baseState=!0);return a}function qf(t,a){var u=dt;dt=0!==u&&4>u?u:4;t(!0);var i=lr.transition;lr.transition={};try{t(!1),a()}finally{dt=u,lr.transition=i}}function rf(){return Oe().memoizedState}function sf(t,a,u){var i=tf(t);u={lane:i,action:u,hasEagerState:!1,eagerState:null,next:null};if(uf(t))vf(a,u);else if(u=be(t,a,u,i),null!==u){var o=O();af(u,t,i,o);wf(u,a,i)}}function cf(t,a,u){var i=tf(t),o={lane:i,action:u,hasEagerState:!1,eagerState:null,next:null};if(uf(t))vf(a,o);else{var s=t.alternate;if(0===t.lanes&&(null===s||0===s.lanes)&&(s=a.lastRenderedReducer,null!==s))try{var y=a.lastRenderedState,S=s(y,u);o.hasEagerState=!0;o.eagerState=S;if(zt(S,y)){var x=a.interleaved;null===x?(o.next=o,ae(a)):(o.next=x.next,x.next=o);a.interleaved=o;return}}catch(t){}u=be(t,a,o,i);null!==u&&(o=O(),af(u,t,i,o),wf(u,a,i))}}function uf(t){var a=t.alternate;return t===ur||null!==a&&a===ur}function vf(t,a){cr=sr=!0;var u=t.pending;null===u?a.next=a:(a.next=u.next,u.next=a);t.pending=a}function wf(t,a,u){if(0!==(u&4194240)){var i=a.lanes;i&=t.pendingLanes;u|=i;a.lanes=u;Hc(t,u)}}var hr={readContext:Zd,useCallback:M,useContext:M,useEffect:M,useImperativeHandle:M,useInsertionEffect:M,useLayoutEffect:M,useMemo:M,useReducer:M,useRef:M,useState:M,useDebugValue:M,useDeferredValue:M,useTransition:M,useMutableSource:M,useSyncExternalStore:M,useId:M,unstable_isNewReconciler:!1},gr={readContext:Zd,useCallback:function(t,a){Ne().memoizedState=[t,void 0===a?null:a];return t},useContext:Zd,useEffect:gf,useImperativeHandle:function(t,a,u){u=null!==u&&void 0!==u?u.concat([t]):null;return ef(4194308,4,kf.bind(null,a,t),u)},useLayoutEffect:function(t,a){return ef(4194308,4,t,a)},useInsertionEffect:function(t,a){return ef(4,2,t,a)},useMemo:function(t,a){var u=Ne();a=void 0===a?null:a;t=t();u.memoizedState=[t,a];return t},useReducer:function(t,a,u){var i=Ne();a=void 0!==u?u(a):a;i.memoizedState=i.baseState=a;t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:a};i.queue=t;t=t.dispatch=sf.bind(null,ur,t);return[i.memoizedState,t]},useRef:function(t){var a=Ne();t={current:t};return a.memoizedState=t},useState:bf,useDebugValue:mf,useDeferredValue:function(t){return Ne().memoizedState=t},useTransition:function(){var t=bf(!1),a=t[0];t=qf.bind(null,t[1]);Ne().memoizedState=t;return[a,t]},useMutableSource:function(){},useSyncExternalStore:function(t,a,u){var i=ur,o=Ne();if(Ht){if(void 0===u)throw Error(n(407));u=u()}else{u=a();if(null===qr)throw Error(n(349));0!==(ar&30)||Ye(i,a,u)}o.memoizedState=u;var s={value:u,getSnapshot:a};o.queue=s;gf(Ve.bind(null,i,s,t),[t]);i.flags|=2048;We(9,Xe.bind(null,i,s,u,a),void 0,null);return u},useId:function(){var t=Ne(),a=qr.identifierPrefix;if(Ht){var u=Ft;var i=Mt;u=(i&~(1<<32-it(i)-1)).toString(32)+u;a=\":\"+a+\"R\"+u;u=fr++;0<u&&(a+=\"H\"+u.toString(32));a+=\":\"}else u=dr++,a=\":\"+a+\"r\"+u.toString(32)+\":\";return t.memoizedState=a},unstable_isNewReconciler:!1},pr={readContext:Zd,useCallback:nf,useContext:Zd,useEffect:Ue,useImperativeHandle:lf,useInsertionEffect:hf,useLayoutEffect:jf,useMemo:of,useReducer:Qe,useRef:df,useState:function(){return Qe(Pe)},useDebugValue:mf,useDeferredValue:function(t){var a=Oe();return pf(a,ir.memoizedState,t)},useTransition:function(){var t=Qe(Pe)[0],a=Oe().memoizedState;return[t,a]},useMutableSource:Se,useSyncExternalStore:Te,useId:rf,unstable_isNewReconciler:!1},mr={readContext:Zd,useCallback:nf,useContext:Zd,useEffect:Ue,useImperativeHandle:lf,useInsertionEffect:hf,useLayoutEffect:jf,useMemo:of,useReducer:Re,useRef:df,useState:function(){return Re(Pe)},useDebugValue:mf,useDeferredValue:function(t){var a=Oe();return null===ir?a.memoizedState=t:pf(a,ir.memoizedState,t)},useTransition:function(){var t=Re(Pe)[0],a=Oe().memoizedState;return[t,a]},useMutableSource:Se,useSyncExternalStore:Te,useId:rf,unstable_isNewReconciler:!1};function xf(t,a){if(t&&t.defaultProps){a=S({},a);t=t.defaultProps;for(var u in t)void 0===a[u]&&(a[u]=t[u]);return a}return a}function yf(t,a,u,i){a=t.memoizedState;u=u(i,a);u=null===u||void 0===u?a:S({},a,u);t.memoizedState=u;0===t.lanes&&(t.updateQueue.baseState=u)}var vr={isMounted:function(t){return!!(t=t._reactInternals)&&wa(t)===t},enqueueSetState:function(t,a,u){t=t._reactInternals;var i=O(),o=tf(t),s=ge(i,o);s.payload=a;void 0!==u&&null!==u&&(s.callback=u);a=he(t,s,o);null!==a&&(af(a,t,o,i),ie(a,t,o))},enqueueReplaceState:function(t,a,u){t=t._reactInternals;var i=O(),o=tf(t),s=ge(i,o);s.tag=1;s.payload=a;void 0!==u&&null!==u&&(s.callback=u);a=he(t,s,o);null!==a&&(af(a,t,o,i),ie(a,t,o))},enqueueForceUpdate:function(t,a){t=t._reactInternals;var u=O(),i=tf(t),o=ge(u,i);o.tag=2;void 0!==a&&null!==a&&(o.callback=a);a=he(t,o,i);null!==a&&(af(a,t,i,u),ie(a,t,i))}};function Af(t,a,u,i,o,s,y){t=t.stateNode;return\"function\"===typeof t.shouldComponentUpdate?t.shouldComponentUpdate(i,s,y):!a.prototype||!a.prototype.isPureReactComponent||(!Dd(u,i)||!Dd(o,s))}function Bf(t,a,u){var i=!1,o=rt;var s=a.contextType;\"object\"===typeof s&&null!==s?s=Zd(s):(o=A(a)?ut:lt.current,i=a.contextTypes,s=(i=null!==i&&void 0!==i)?mc(t,o):rt);a=new a(u,s);t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null;a.updater=vr;t.stateNode=a;a._reactInternals=t;i&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=o,t.__reactInternalMemoizedMaskedChildContext=s);return a}function Cf(t,a,u,i){t=a.state;\"function\"===typeof a.componentWillReceiveProps&&a.componentWillReceiveProps(u,i);\"function\"===typeof a.UNSAFE_componentWillReceiveProps&&a.UNSAFE_componentWillReceiveProps(u,i);a.state!==t&&vr.enqueueReplaceState(a,a.state,null)}function Df(t,a,u,i){var o=t.stateNode;o.props=u;o.state=t.memoizedState;o.refs={};ee(t);var s=a.contextType;\"object\"===typeof s&&null!==s?o.context=Zd(s):(s=A(a)?ut:lt.current,o.context=mc(t,s));o.state=t.memoizedState;s=a.getDerivedStateFromProps;\"function\"===typeof s&&(yf(t,a,s,u),o.state=t.memoizedState);\"function\"===typeof a.getDerivedStateFromProps||\"function\"===typeof o.getSnapshotBeforeUpdate||\"function\"!==typeof o.UNSAFE_componentWillMount&&\"function\"!==typeof o.componentWillMount||(a=o.state,\"function\"===typeof o.componentWillMount&&o.componentWillMount(),\"function\"===typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),a!==o.state&&vr.enqueueReplaceState(o,o.state,null),ke(t,u,o,i),o.state=t.memoizedState);\"function\"===typeof o.componentDidMount&&(t.flags|=4194308)}function Ef(t,a){try{var u=\"\",i=a;do{u+=Ed(i),i=i.return}while(i);var o=u}catch(t){o=\"\\nError generating stack: \"+t.message+\"\\n\"+t.stack}return{value:t,source:a,stack:o,digest:null}}function Ff(t,a,u){return{value:t,source:null,stack:null!=u?u:null,digest:null!=a?a:null}}function Gf(t,a){try{console.error(a.value)}catch(t){setTimeout((function(){throw t}))}}var yr=\"function\"===typeof WeakMap?WeakMap:Map;function If(t,a,u){u=ge(-1,u);u.tag=3;u.payload={element:null};var i=a.value;u.callback=function(){al||(al=!0,ul=i);Gf(t,a)};return u}function Lf(t,a,u){u=ge(-1,u);u.tag=3;var i=t.type.getDerivedStateFromError;if(\"function\"===typeof i){var s=a.value;u.payload=function(){return i(s)};u.callback=function(){Gf(t,a)}}var y=t.stateNode;null!==y&&\"function\"===typeof y.componentDidCatch&&(u.callback=function(){Gf(t,a);\"function\"!==typeof i&&(null===il?il=new Set([this||o]):il.add(this||o));var u=a.stack;this.componentDidCatch(a.value,{componentStack:null!==u?u:\"\"})});return u}function Nf(t,a,u){var i=t.pingCache;if(null===i){i=t.pingCache=new yr;var o=new Set;i.set(a,o)}else o=i.get(a),void 0===o&&(o=new Set,i.set(a,o));o.has(u)||(o.add(u),t=Of.bind(null,t,a,u),a.then(t,t))}function Pf(t){do{var a;(a=13===t.tag)&&(a=t.memoizedState,a=null===a||null!==a.dehydrated);if(a)return t;t=t.return}while(null!==t);return null}function Qf(t,a,u,i,o){if(0===(t.mode&1))return t===a?t.flags|=65536:(t.flags|=128,u.flags|=131072,u.flags&=-52805,1===u.tag&&(null===u.alternate?u.tag=17:(a=ge(-1,1),a.tag=2,he(u,a,1))),u.lanes|=1),t;t.flags|=65536;t.lanes=o;return t}var br=x.ReactCurrentOwner,Sr=!1;function P(t,a,u,i){a.child=null===t?qt(a,null,u,i):At(a,t.child,u,i)}function Sf(t,a,u,i,o){u=u.render;var s=a.ref;Yd(a,o);i=He(t,a,u,i,s,o);u=Me();if(null!==t&&!Sr)return a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~o,Tf(t,a,o);Ht&&u&&md(a);a.flags|=1;P(t,a,i,o);return a.child}function Uf(t,a,u,i,o){if(null===t){var s=u.type;if(\"function\"===typeof s&&!Vf(s)&&void 0===s.defaultProps&&null===u.compare&&void 0===u.defaultProps)return a.tag=15,a.type=s,Wf(t,a,s,i,o);t=Ld(u.type,null,i,a,a.mode,o);t.ref=a.ref;t.return=a;return a.child=t}s=t.child;if(0===(t.lanes&o)){var y=s.memoizedProps;u=u.compare;u=null!==u?u:Dd;if(u(y,i)&&t.ref===a.ref)return Tf(t,a,o)}a.flags|=1;t=Jd(s,i);t.ref=a.ref;t.return=a;return a.child=t}function Wf(t,a,u,i,o){if(null!==t){var s=t.memoizedProps;if(Dd(s,i)&&t.ref===a.ref){if(Sr=!1,a.pendingProps=i=s,0===(t.lanes&o))return a.lanes=t.lanes,Tf(t,a,o);0!==(t.flags&131072)&&(Sr=!0)}}return Xf(t,a,u,i,o)}function Yf(t,a,u){var i=a.pendingProps,o=i.children,s=null!==t?t.memoizedState:null;if(\"hidden\"===i.mode)if(0===(a.mode&1))a.memoizedState={baseLanes:0,cachePool:null,transitions:null},v(Zr,Vr),Vr|=u;else{if(0===(u&1073741824))return t=null!==s?s.baseLanes|u:u,a.lanes=a.childLanes=1073741824,a.memoizedState={baseLanes:t,cachePool:null,transitions:null},a.updateQueue=null,v(Zr,Vr),Vr|=t,null;a.memoizedState={baseLanes:0,cachePool:null,transitions:null};i=null!==s?s.baseLanes:u;v(Zr,Vr);Vr|=i}else null!==s?(i=s.baseLanes|u,a.memoizedState=null):i=u,v(Zr,Vr),Vr|=i;P(t,a,o,u);return a.child}function ag(t,a){var u=a.ref;(null===t&&null!==u||null!==t&&t.ref!==u)&&(a.flags|=512,a.flags|=2097152)}function Xf(t,a,u,i,o){var s=A(u)?ut:lt.current;s=mc(a,s);Yd(a,o);u=He(t,a,u,i,s,o);i=Me();if(null!==t&&!Sr)return a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~o,Tf(t,a,o);Ht&&i&&md(a);a.flags|=1;P(t,a,u,o);return a.child}function bg(t,a,u,i,o){if(A(u)){var s=!0;qc(a)}else s=!1;Yd(a,o);if(null===a.stateNode)cg(t,a),Bf(a,u,i),Df(a,u,i,o),i=!0;else if(null===t){var y=a.stateNode,S=a.memoizedProps;y.props=S;var x=y.context,z=u.contextType;\"object\"===typeof z&&null!==z?z=Zd(z):(z=A(u)?ut:lt.current,z=mc(a,z));var N=u.getDerivedStateFromProps,E=\"function\"===typeof N||\"function\"===typeof y.getSnapshotBeforeUpdate;E||\"function\"!==typeof y.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof y.componentWillReceiveProps||(S!==i||x!==z)&&Cf(a,y,i,z);Jt=!1;var C=a.memoizedState;y.state=C;ke(a,i,y,o);x=a.memoizedState;S!==i||C!==x||at.current||Jt?(\"function\"===typeof N&&(yf(a,u,N,i),x=a.memoizedState),(S=Jt||Af(a,u,S,i,C,x,z))?(E||\"function\"!==typeof y.UNSAFE_componentWillMount&&\"function\"!==typeof y.componentWillMount||(\"function\"===typeof y.componentWillMount&&y.componentWillMount(),\"function\"===typeof y.UNSAFE_componentWillMount&&y.UNSAFE_componentWillMount()),\"function\"===typeof y.componentDidMount&&(a.flags|=4194308)):(\"function\"===typeof y.componentDidMount&&(a.flags|=4194308),a.memoizedProps=i,a.memoizedState=x),y.props=i,y.state=x,y.context=z,i=S):(\"function\"===typeof y.componentDidMount&&(a.flags|=4194308),i=!1)}else{y=a.stateNode;fe(t,a);S=a.memoizedProps;z=a.type===a.elementType?S:xf(a.type,S);y.props=z;E=a.pendingProps;C=y.context;x=u.contextType;\"object\"===typeof x&&null!==x?x=Zd(x):(x=A(u)?ut:lt.current,x=mc(a,x));var I=u.getDerivedStateFromProps;(N=\"function\"===typeof I||\"function\"===typeof y.getSnapshotBeforeUpdate)||\"function\"!==typeof y.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof y.componentWillReceiveProps||(S!==E||C!==x)&&Cf(a,y,i,x);Jt=!1;C=a.memoizedState;y.state=C;ke(a,i,y,o);var _=a.memoizedState;S!==E||C!==_||at.current||Jt?(\"function\"===typeof I&&(yf(a,u,I,i),_=a.memoizedState),(z=Jt||Af(a,u,z,i,C,_,x)||!1)?(N||\"function\"!==typeof y.UNSAFE_componentWillUpdate&&\"function\"!==typeof y.componentWillUpdate||(\"function\"===typeof y.componentWillUpdate&&y.componentWillUpdate(i,_,x),\"function\"===typeof y.UNSAFE_componentWillUpdate&&y.UNSAFE_componentWillUpdate(i,_,x)),\"function\"===typeof y.componentDidUpdate&&(a.flags|=4),\"function\"===typeof y.getSnapshotBeforeUpdate&&(a.flags|=1024)):(\"function\"!==typeof y.componentDidUpdate||S===t.memoizedProps&&C===t.memoizedState||(a.flags|=4),\"function\"!==typeof y.getSnapshotBeforeUpdate||S===t.memoizedProps&&C===t.memoizedState||(a.flags|=1024),a.memoizedProps=i,a.memoizedState=_),y.props=i,y.state=_,y.context=x,i=z):(\"function\"!==typeof y.componentDidUpdate||S===t.memoizedProps&&C===t.memoizedState||(a.flags|=4),\"function\"!==typeof y.getSnapshotBeforeUpdate||S===t.memoizedProps&&C===t.memoizedState||(a.flags|=1024),i=!1)}return dg(t,a,u,i,s,o)}function dg(t,a,u,i,o,s){ag(t,a);var y=0!==(a.flags&128);if(!i&&!y)return o&&rc(a,u,!1),Tf(t,a,s);i=a.stateNode;br.current=a;var S=y&&\"function\"!==typeof u.getDerivedStateFromError?null:i.render();a.flags|=1;null!==t&&y?(a.child=At(a,t.child,null,s),a.child=At(a,null,S,s)):P(t,a,S,s);a.memoizedState=i.state;o&&rc(a,u,!0);return a.child}function eg(t){var a=t.stateNode;a.pendingContext?oc(t,a.pendingContext,a.pendingContext!==a.context):a.context&&oc(t,a.context,!1);se(t,a.containerInfo)}function fg(t,a,u,i,o){Ad();Bd(o);a.flags|=256;P(t,a,u,i);return a.child}var kr={dehydrated:null,treeContext:null,retryLane:0};function hg(t){return{baseLanes:t,cachePool:null,transitions:null}}function ig(t,a,u){var i,o=a.pendingProps,s=nr.current,y=!1,S=0!==(a.flags&128);(i=S)||(i=(null===t||null!==t.memoizedState)&&0!==(s&2));i?(y=!0,a.flags&=-129):null!==t&&null===t.memoizedState||(s|=1);v(nr,s&1);if(null===t){wd(a);t=a.memoizedState;if(null!==t&&(t=t.dehydrated,null!==t))return 0===(a.mode&1)?a.lanes=1:Mn(t)?a.lanes=8:a.lanes=1073741824,null;S=o.children;t=o.fallback;return y?(o=a.mode,y=a.child,S={mode:\"hidden\",children:S},0===(o&1)&&null!==y?(y.childLanes=0,y.pendingProps=S):y=jg(S,o,0,null),t=Nd(t,o,u,null),y.return=a,t.return=a,y.sibling=t,a.child=y,a.child.memoizedState=hg(u),a.memoizedState=kr,t):kg(a,S)}s=t.memoizedState;if(null!==s&&(i=s.dehydrated,null!==i))return lg(t,a,S,o,i,s,u);if(y){y=o.fallback;S=a.mode;s=t.child;i=s.sibling;var x={mode:\"hidden\",children:o.children};0===(S&1)&&a.child!==s?(o=a.child,o.childLanes=0,o.pendingProps=x,a.deletions=null):(o=Jd(s,x),o.subtreeFlags=s.subtreeFlags&14680064);null!==i?y=Jd(i,y):(y=Nd(y,S,u,null),y.flags|=2);y.return=a;o.return=a;o.sibling=y;a.child=o;o=y;y=a.child;S=t.child.memoizedState;S=null===S?hg(u):{baseLanes:S.baseLanes|u,cachePool:null,transitions:S.transitions};y.memoizedState=S;y.childLanes=t.childLanes&~u;a.memoizedState=kr;return o}y=t.child;t=y.sibling;o=Jd(y,{mode:\"visible\",children:o.children});0===(a.mode&1)&&(o.lanes=u);o.return=a;o.sibling=null;null!==t&&(u=a.deletions,null===u?(a.deletions=[t],a.flags|=16):u.push(t));a.child=o;a.memoizedState=null;return o}function kg(t,a){a=jg({mode:\"visible\",children:a},t.mode,0,null);a.return=t;return t.child=a}function mg(t,a,u,i){null!==i&&Bd(i);At(a,t.child,null,u);t=kg(a,a.pendingProps.children);t.flags|=2;a.memoizedState=null;return t}function lg(t,a,u,i,o,s,y){if(u){if(a.flags&256)return a.flags&=-257,i=Ff(Error(n(422))),mg(t,a,y,i);if(null!==a.memoizedState)return a.child=t.child,a.flags|=128,null;s=i.fallback;o=a.mode;i=jg({mode:\"visible\",children:i.children},o,0,null);s=Nd(s,o,y,null);s.flags|=2;i.return=a;s.return=a;i.sibling=s;a.child=i;0!==(a.mode&1)&&At(a,t.child,null,y);a.child.memoizedState=hg(y);a.memoizedState=kr;return s}if(0===(a.mode&1))return mg(t,a,y,null);if(Mn(o))return i=Fn(o).digest,s=Error(n(419)),i=Ff(s,i,void 0),mg(t,a,y,i);u=0!==(y&t.childLanes);if(Sr||u){i=qr;if(null!==i){switch(y&-y){case 4:o=2;break;case 16:o=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:o=32;break;case 536870912:o=268435456;break;default:o=0}o=0!==(o&(i.suspendedLanes|y))?0:o;0!==o&&o!==s.retryLane&&(s.retryLane=o,ce(t,o),af(i,t,o,-1))}ng();i=Ff(Error(n(421)));return mg(t,a,y,i)}if(Rn(o))return a.flags|=128,a.child=t.child,a=og.bind(null,t),Qn(o,a),null;t=s.treeContext;Fe&&(Dt=Bn(o),Qt=a,Ht=!0,Bt=null,Wt=!1,null!==t&&(Lt[Tt++]=Mt,Lt[Tt++]=Ft,Lt[Tt++]=Rt,Mt=t.id,Ft=t.overflow,Rt=a));a=kg(a,i.children);a.flags|=4096;return a}function pg(t,a,u){t.lanes|=a;var i=t.alternate;null!==i&&(i.lanes|=a);Xd(t.return,a,u)}function qg(t,a,u,i,o){var s=t.memoizedState;null===s?t.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:i,tail:u,tailMode:o}:(s.isBackwards=a,s.rendering=null,s.renderingStartTime=0,s.last=i,s.tail=u,s.tailMode=o)}function rg(t,a,u){var i=a.pendingProps,o=i.revealOrder,s=i.tail;P(t,a,i.children,u);i=nr.current;if(0!==(i&2))i=i&1|2,a.flags|=128;else{if(null!==t&&0!==(t.flags&128))e:for(t=a.child;null!==t;){if(13===t.tag)null!==t.memoizedState&&pg(t,u,a);else if(19===t.tag)pg(t,u,a);else if(null!==t.child){t.child.return=t;t=t.child;continue}if(t===a)break e;for(;null===t.sibling;){if(null===t.return||t.return===a)break e;t=t.return}t.sibling.return=t.return;t=t.sibling}i&=1}v(nr,i);if(0===(a.mode&1))a.memoizedState=null;else switch(o){case\"forwards\":u=a.child;for(o=null;null!==u;)t=u.alternate,null!==t&&null===we(t)&&(o=u),u=u.sibling;u=o;null===u?(o=a.child,a.child=null):(o=u.sibling,u.sibling=null);qg(a,!1,o,u,s);break;case\"backwards\":u=null;o=a.child;for(a.child=null;null!==o;){t=o.alternate;if(null!==t&&null===we(t)){a.child=o;break}t=o.sibling;o.sibling=u;u=o;o=t}qg(a,!0,u,null,s);break;case\"together\":qg(a,!1,null,null,void 0);break;default:a.memoizedState=null}return a.child}function cg(t,a){0===(a.mode&1)&&null!==t&&(t.alternate=null,a.alternate=null,a.flags|=2)}function Tf(t,a,u){null!==t&&(a.dependencies=t.dependencies);Kr|=a.lanes;if(0===(u&a.childLanes))return null;if(null!==t&&a.child!==t.child)throw Error(n(153));if(null!==a.child){t=a.child;u=Jd(t,t.pendingProps);a.child=u;for(u.return=a;null!==t.sibling;)t=t.sibling,u=u.sibling=Jd(t,t.pendingProps),u.return=a;u.sibling=null}return a.child}function sg(t,a,u){switch(a.tag){case 3:eg(a);Ad();break;case 5:ue(a);break;case 1:A(a.type)&&qc(a);break;case 4:se(a,a.stateNode.containerInfo);break;case 10:Vd(a,a.type._context,a.memoizedProps.value);break;case 13:var i=a.memoizedState;if(null!==i){if(null!==i.dehydrated)return v(nr,nr.current&1),a.flags|=128,null;if(0!==(u&a.child.childLanes))return ig(t,a,u);v(nr,nr.current&1);t=Tf(t,a,u);return null!==t?t.sibling:null}v(nr,nr.current&1);break;case 19:i=0!==(u&a.childLanes);if(0!==(t.flags&128)){if(i)return rg(t,a,u);a.flags|=128}var o=a.memoizedState;null!==o&&(o.rendering=null,o.tail=null,o.lastEffect=null);v(nr,nr.current);if(i)break;return null;case 22:case 23:return a.lanes=0,Yf(t,a,u)}return Tf(t,a,u)}function tg(t){t.flags|=4}function ug(t,a){if(null!==t&&t.child===a.child)return!0;if(0!==(a.flags&16))return!1;for(t=a.child;null!==t;){if(0!==(t.flags&12854)||0!==(t.subtreeFlags&12854))return!1;t=t.sibling}return!0}var xr,wr,zr,Nr;if(_e)xr=function(t,a){for(var u=a.child;null!==u;){if(5===u.tag||6===u.tag)le(t,u.stateNode);else if(4!==u.tag&&null!==u.child){u.child.return=u;u=u.child;continue}if(u===a)break;for(;null===u.sibling;){if(null===u.return||u.return===a)return;u=u.return}u.sibling.return=u.return;u=u.sibling}},wr=function(){},zr=function(t,a,u,i,o){t=t.memoizedProps;if(t!==i){var s=a.stateNode,y=re(Gt.current);u=de(s,u,t,i,o,y);(a.updateQueue=u)&&tg(a)}},Nr=function(t,a,u,i){u!==i&&tg(a)};else if(Le){xr=function(t,a,u,i){for(var o=a.child;null!==o;){if(5===o.tag){var s=o.stateNode;u&&i&&(s=In(s,o.type,o.memoizedProps,o));le(t,s)}else if(6===o.tag)s=o.stateNode,u&&i&&(s=_n(s,o.memoizedProps,o)),le(t,s);else if(4!==o.tag)if(22===o.tag&&null!==o.memoizedState)s=o.child,null!==s&&(s.return=o),xr(t,o,!0,!0);else if(null!==o.child){o.child.return=o;o=o.child;continue}if(o===a)break;for(;null===o.sibling;){if(null===o.return||o.return===a)return;o=o.return}o.sibling.return=o.return;o=o.sibling}};var zg=function(t,a,u,i){for(var o=a.child;null!==o;){if(5===o.tag){var s=o.stateNode;u&&i&&(s=In(s,o.type,o.memoizedProps,o));Pn(t,s)}else if(6===o.tag)s=o.stateNode,u&&i&&(s=_n(s,o.memoizedProps,o)),Pn(t,s);else if(4!==o.tag)if(22===o.tag&&null!==o.memoizedState)s=o.child,null!==s&&(s.return=o),zg(t,o,!0,!0);else if(null!==o.child){o.child.return=o;o=o.child;continue}if(o===a)break;for(;null===o.sibling;){if(null===o.return||o.return===a)return;o=o.return}o.sibling.return=o.return;o=o.sibling}};wr=function(t,a){var u=a.stateNode;if(!ug(t,a)){t=u.containerInfo;var i=Nn(t);zg(i,a,!1,!1);u.pendingChildren=i;tg(a);En(t,i)}};zr=function(t,a,u,i,o){var s=t.stateNode,y=t.memoizedProps;if((t=ug(t,a))&&y===i)a.stateNode=s;else{var S=a.stateNode,x=re(Gt.current),z=null;y!==i&&(z=de(S,u,y,i,o,x));t&&null===z?a.stateNode=s:(s=zn(s,z,u,y,i,a,t,S),oe(s,u,i,o,x)&&tg(a),a.stateNode=s,t?tg(a):xr(s,a,!1,!1))}};Nr=function(t,a,u,i){u!==i?(t=re(er.current),u=re(Gt.current),a.stateNode=xe(i,t,u,a),tg(a)):a.stateNode=t.stateNode}}else wr=function(){},zr=function(){},Nr=function(){};function Ag(t,a){if(!Ht)switch(t.tailMode){case\"hidden\":a=t.tail;for(var u=null;null!==a;)null!==a.alternate&&(u=a),a=a.sibling;null===u?t.tail=null:u.sibling=null;break;case\"collapsed\":u=t.tail;for(var i=null;null!==u;)null!==u.alternate&&(i=u),u=u.sibling;null===i?a||null===t.tail?t.tail=null:t.tail.sibling=null:i.sibling=null}}function Q(t){var a=null!==t.alternate&&t.alternate.child===t.child,u=0,i=0;if(a)for(var o=t.child;null!==o;)u|=o.lanes|o.childLanes,i|=o.subtreeFlags&14680064,i|=o.flags&14680064,o.return=t,o=o.sibling;else for(o=t.child;null!==o;)u|=o.lanes|o.childLanes,i|=o.subtreeFlags,i|=o.flags,o.return=t,o=o.sibling;t.subtreeFlags|=i;t.childLanes=u;return a}function Bg(t,a,u){var i=a.pendingProps;nd(a);switch(a.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Q(a),null;case 1:return A(a.type)&&nc(),Q(a),null;case 3:u=a.stateNode;te();q(at);q(lt);ye();u.pendingContext&&(u.context=u.pendingContext,u.pendingContext=null);null!==t&&null!==t.child||(yd(a)?tg(a):null===t||t.memoizedState.isDehydrated&&0===(a.flags&256)||(a.flags|=1024,null!==Bt&&(Cg(Bt),Bt=null)));wr(t,a);Q(a);return null;case 5:ve(a);u=re(er.current);var o=a.type;if(null!==t&&null!=a.stateNode)zr(t,a,o,i,u),t.ref!==a.ref&&(a.flags|=512,a.flags|=2097152);else{if(!i){if(null===a.stateNode)throw Error(n(166));Q(a);return null}t=re(Gt.current);if(yd(a)){if(!Fe)throw Error(n(175));t=On(a.stateNode,a.type,a.memoizedProps,u,t,a,!Wt);a.updateQueue=t;null!==t&&tg(a)}else{var s=ne(o,i,u,t,a);xr(s,a,!1,!1);a.stateNode=s;oe(s,o,i,u,t)&&tg(a)}null!==a.ref&&(a.flags|=512,a.flags|=2097152)}Q(a);return null;case 6:if(t&&null!=a.stateNode)Nr(t,a,t.memoizedProps,i);else{if(\"string\"!==typeof i&&null===a.stateNode)throw Error(n(166));t=re(er.current);u=re(Gt.current);if(yd(a)){if(!Fe)throw Error(n(176));t=a.stateNode;u=a.memoizedProps;if((i=An(t,u,a,!Wt))&&(o=Qt,null!==o))switch(o.tag){case 3:Kn(o.stateNode.containerInfo,t,u,0!==(o.mode&1));break;case 5:Gn(o.type,o.memoizedProps,o.stateNode,t,u,0!==(o.mode&1))}i&&tg(a)}else a.stateNode=xe(i,t,u,a)}Q(a);return null;case 13:q(nr);i=a.memoizedState;if(null===t||null!==t.memoizedState&&null!==t.memoizedState.dehydrated){if(Ht&&null!==Dt&&0!==(a.mode&1)&&0===(a.flags&128))zd(),Ad(),a.flags|=98560,o=!1;else if(o=yd(a),null!==i&&null!==i.dehydrated){if(null===t){if(!o)throw Error(n(318));if(!Fe)throw Error(n(344));o=a.memoizedState;o=null!==o?o.dehydrated:null;if(!o)throw Error(n(317));qn(o,a)}else Ad(),0===(a.flags&128)&&(a.memoizedState=null),a.flags|=4;Q(a);o=!1}else null!==Bt&&(Cg(Bt),Bt=null),o=!0;if(!o)return a.flags&65536?a:null}if(0!==(a.flags&128))return a.lanes=u,a;u=null!==i;u!==(null!==t&&null!==t.memoizedState)&&u&&(a.child.flags|=8192,0!==(a.mode&1)&&(null===t||0!==(nr.current&1)?0===Yr&&(Yr=3):ng()));null!==a.updateQueue&&(a.flags|=4);Q(a);return null;case 4:return te(),wr(t,a),null===t&&Be(a.stateNode.containerInfo),Q(a),null;case 10:return Wd(a.type._context),Q(a),null;case 17:return A(a.type)&&nc(),Q(a),null;case 19:q(nr);o=a.memoizedState;if(null===o)return Q(a),null;i=0!==(a.flags&128);s=o.rendering;if(null===s)if(i)Ag(o,!1);else{if(0!==Yr||null!==t&&0!==(t.flags&128))for(t=a.child;null!==t;){s=we(t);if(null!==s){a.flags|=128;Ag(o,!1);t=s.updateQueue;null!==t&&(a.updateQueue=t,a.flags|=4);a.subtreeFlags=0;t=u;for(u=a.child;null!==u;)i=u,o=t,i.flags&=14680066,s=i.alternate,null===s?(i.childLanes=0,i.lanes=o,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,o=s.dependencies,i.dependencies=null===o?null:{lanes:o.lanes,firstContext:o.firstContext}),u=u.sibling;v(nr,nr.current&1|2);return a.child}t=t.sibling}null!==o.tail&&vt()>rl&&(a.flags|=128,i=!0,Ag(o,!1),a.lanes=4194304)}else{if(!i)if(t=we(s),null!==t){if(a.flags|=128,i=!0,t=t.updateQueue,null!==t&&(a.updateQueue=t,a.flags|=4),Ag(o,!0),null===o.tail&&\"hidden\"===o.tailMode&&!s.alternate&&!Ht)return Q(a),null}else 2*vt()-o.renderingStartTime>rl&&1073741824!==u&&(a.flags|=128,i=!0,Ag(o,!1),a.lanes=4194304);o.isBackwards?(s.sibling=a.child,a.child=s):(t=o.last,null!==t?t.sibling=s:a.child=s,o.last=s)}if(null!==o.tail)return a=o.tail,o.rendering=a,o.tail=a.sibling,o.renderingStartTime=vt(),a.sibling=null,t=nr.current,v(nr,i?t&1|2:t&1),a;Q(a);return null;case 22:case 23:return Eg(),u=null!==a.memoizedState,null!==t&&null!==t.memoizedState!==u&&(a.flags|=8192),u&&0!==(a.mode&1)?0!==(Vr&1073741824)&&(Q(a),_e&&a.subtreeFlags&6&&(a.flags|=8192)):Q(a),null;case 24:return null;case 25:return null}throw Error(n(156,a.tag))}function Fg(t,a){nd(a);switch(a.tag){case 1:return A(a.type)&&nc(),t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 3:return te(),q(at),q(lt),ye(),t=a.flags,0!==(t&65536)&&0===(t&128)?(a.flags=t&-65537|128,a):null;case 5:return ve(a),null;case 13:q(nr);t=a.memoizedState;if(null!==t&&null!==t.dehydrated){if(null===a.alternate)throw Error(n(340));Ad()}t=a.flags;return t&65536?(a.flags=t&-65537|128,a):null;case 19:return q(nr),null;case 4:return te(),null;case 10:return Wd(a.type._context),null;case 22:case 23:return Eg(),null;case 24:return null;default:return null}}var Pr=!1,Er=!1,Cr=\"function\"===typeof WeakSet?WeakSet:Set,Ir=null;function Ig(t,a){var u=t.ref;if(null!==u)if(\"function\"===typeof u)try{u(null)}catch(u){U(t,a,u)}else u.current=null}function Jg(t,a,u){try{u()}catch(u){U(t,a,u)}}var _r=!1;function Lg(t,a){G(t.containerInfo);for(Ir=a;null!==Ir;)if(t=Ir,a=t.child,0!==(t.subtreeFlags&1028)&&null!==a)a.return=t,Ir=a;else for(;null!==Ir;){t=Ir;try{var u=t.alternate;if(0!==(t.flags&1024))switch(t.tag){case 0:case 11:case 15:break;case 1:if(null!==u){var i=u.memoizedProps,o=u.memoizedState,s=t.stateNode,y=s.getSnapshotBeforeUpdate(t.elementType===t.type?i:xf(t.type,i),o);s.__reactInternalSnapshotBeforeUpdate=y}break;case 3:_e&&wn(t.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(a){U(t,t.return,a)}a=t.sibling;if(null!==a){a.return=t.return;Ir=a;break}Ir=t.return}u=_r;_r=!1;return u}function Mg(t,a,u){var i=a.updateQueue;i=null!==i?i.lastEffect:null;if(null!==i){var o=i=i.next;do{if((o.tag&t)===t){var s=o.destroy;o.destroy=void 0;void 0!==s&&Jg(a,u,s)}o=o.next}while(o!==i)}}function Ng(t,a){a=a.updateQueue;a=null!==a?a.lastEffect:null;if(null!==a){var u=a=a.next;do{if((u.tag&t)===t){var i=u.create;u.destroy=i()}u=u.next}while(u!==a)}}function Og(t){var a=t.ref;if(null!==a){var u=t.stateNode;switch(t.tag){case 5:t=Z(u);break;default:t=u}\"function\"===typeof a?a(t):a.current=t}}function Pg(t){var a=t.alternate;null!==a&&(t.alternate=null,Pg(a));t.child=null;t.deletions=null;t.sibling=null;5===t.tag&&(a=t.stateNode,null!==a&&qe(a));t.stateNode=null;t.return=null;t.dependencies=null;t.memoizedProps=null;t.memoizedState=null;t.pendingProps=null;t.stateNode=null;t.updateQueue=null}function Qg(t){return 5===t.tag||3===t.tag||4===t.tag}function Rg(t){e:for(;;){for(;null===t.sibling;){if(null===t.return||Qg(t.return))return null;t=t.return}t.sibling.return=t.return;for(t=t.sibling;5!==t.tag&&6!==t.tag&&18!==t.tag;){if(t.flags&2)continue e;if(null===t.child||4===t.tag)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Sg(t,a,u){var i=t.tag;if(5===i||6===i)t=t.stateNode,a?pn(u,t,a):cn(u,t);else if(4!==i&&(t=t.child,null!==t))for(Sg(t,a,u),t=t.sibling;null!==t;)Sg(t,a,u),t=t.sibling}function Tg(t,a,u){var i=t.tag;if(5===i||6===i)t=t.stateNode,a?gn(u,t,a):sn(u,t);else if(4!==i&&(t=t.child,null!==t))for(Tg(t,a,u),t=t.sibling;null!==t;)Tg(t,a,u),t=t.sibling}var Ur=null,Lr=!1;function Vg(t,a,u){for(u=u.child;null!==u;)Wg(t,a,u),u=u.sibling}function Wg(t,a,u){if(wt&&\"function\"===typeof wt.onCommitFiberUnmount)try{wt.onCommitFiberUnmount(xt,u)}catch(t){}switch(u.tag){case 5:Er||Ig(u,a);case 6:if(_e){var i=Ur,o=Lr;Ur=null;Vg(t,a,u);Ur=i;Lr=o;null!==Ur&&(Lr?vn(Ur,u.stateNode):mn(Ur,u.stateNode))}else Vg(t,a,u);break;case 18:_e&&null!==Ur&&(Lr?Yn(Ur,u.stateNode):Zn(Ur,u.stateNode));break;case 4:_e?(i=Ur,o=Lr,Ur=u.stateNode.containerInfo,Lr=!0,Vg(t,a,u),Ur=i,Lr=o):(Le&&(i=u.stateNode.containerInfo,o=Nn(i),Cn(i,o)),Vg(t,a,u));break;case 0:case 11:case 14:case 15:if(!Er&&(i=u.updateQueue,null!==i&&(i=i.lastEffect,null!==i))){o=i=i.next;do{var s=o,y=s.destroy;s=s.tag;void 0!==y&&(0!==(s&2)||0!==(s&4))&&Jg(u,a,y);o=o.next}while(o!==i)}Vg(t,a,u);break;case 1:if(!Er&&(Ig(u,a),i=u.stateNode,\"function\"===typeof i.componentWillUnmount))try{i.props=u.memoizedProps,i.state=u.memoizedState,i.componentWillUnmount()}catch(t){U(u,a,t)}Vg(t,a,u);break;case 21:Vg(t,a,u);break;case 22:u.mode&1?(Er=(i=Er)||null!==u.memoizedState,Vg(t,a,u),Er=i):Vg(t,a,u);break;default:Vg(t,a,u)}}function Xg(t){var a=t.updateQueue;if(null!==a){t.updateQueue=null;var u=t.stateNode;null===u&&(u=t.stateNode=new Cr);a.forEach((function(a){var i=Yg.bind(null,t,a);u.has(a)||(u.add(a),a.then(i,i))}))}}function Zg(t,a){var u=a.deletions;if(null!==u)for(var i=0;i<u.length;i++){var o=u[i];try{var s=t,y=a;if(_e){var S=y;e:for(;null!==S;){switch(S.tag){case 5:Ur=S.stateNode;Lr=!1;break e;case 3:Ur=S.stateNode.containerInfo;Lr=!0;break e;case 4:Ur=S.stateNode.containerInfo;Lr=!0;break e}S=S.return}if(null===Ur)throw Error(n(160));Wg(s,y,o);Ur=null;Lr=!1}else Wg(s,y,o);var x=o.alternate;null!==x&&(x.return=null);o.return=null}catch(t){U(o,a,t)}}if(a.subtreeFlags&12854)for(a=a.child;null!==a;)$g(a,t),a=a.sibling}function $g(t,a){var u=t.alternate,i=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:Zg(a,t);ah(t);if(i&4){try{Mg(3,t,t.return),Ng(3,t)}catch(a){U(t,t.return,a)}try{Mg(5,t,t.return)}catch(a){U(t,t.return,a)}}break;case 1:Zg(a,t);ah(t);i&512&&null!==u&&Ig(u,u.return);break;case 5:Zg(a,t);ah(t);i&512&&null!==u&&Ig(u,u.return);if(_e){if(t.flags&32){var o=t.stateNode;try{yn(o)}catch(a){U(t,t.return,a)}}if(i&4&&(o=t.stateNode,null!=o)){var s=t.memoizedProps;u=null!==u?u.memoizedProps:s;i=t.type;a=t.updateQueue;t.updateQueue=null;if(null!==a)try{hn(o,a,i,u,s,t)}catch(a){U(t,t.return,a)}}}break;case 6:Zg(a,t);ah(t);if(i&4&&_e){if(null===t.stateNode)throw Error(n(162));o=t.stateNode;s=t.memoizedProps;u=null!==u?u.memoizedProps:s;try{fn(o,u,s)}catch(a){U(t,t.return,a)}}break;case 3:Zg(a,t);ah(t);if(i&4){if(_e&&Fe&&null!==u&&u.memoizedState.isDehydrated)try{$n(a.containerInfo)}catch(a){U(t,t.return,a)}if(Le){o=a.containerInfo;s=a.pendingChildren;try{Cn(o,s)}catch(a){U(t,t.return,a)}}}break;case 4:Zg(a,t);ah(t);if(i&4&&Le){s=t.stateNode;o=s.containerInfo;s=s.pendingChildren;try{Cn(o,s)}catch(a){U(t,t.return,a)}}break;case 13:Zg(a,t);ah(t);o=t.child;o.flags&8192&&(s=null!==o.memoizedState,o.stateNode.isHidden=s,!s||null!==o.alternate&&null!==o.alternate.memoizedState||(tl=vt()));i&4&&Xg(t);break;case 22:var y=null!==u&&null!==u.memoizedState;t.mode&1?(Er=(u=Er)||y,Zg(a,t),Er=u):Zg(a,t);ah(t);if(i&8192){u=null!==t.memoizedState;if((t.stateNode.isHidden=u)&&!y&&0!==(t.mode&1))for(Ir=t,i=t.child;null!==i;){for(a=Ir=i;null!==Ir;){y=Ir;var S=y.child;switch(y.tag){case 0:case 11:case 14:case 15:Mg(4,y,y.return);break;case 1:Ig(y,y.return);var x=y.stateNode;if(\"function\"===typeof x.componentWillUnmount){var z=y,N=y.return;try{var E=z;x.props=E.memoizedProps;x.state=E.memoizedState;x.componentWillUnmount()}catch(t){U(z,N,t)}}break;case 5:Ig(y,y.return);break;case 22:if(null!==y.memoizedState){ch(a);continue}}null!==S?(S.return=y,Ir=S):ch(a)}i=i.sibling}if(_e)e:if(i=null,_e)for(a=t;;){if(5===a.tag){if(null===i){i=a;try{o=a.stateNode,u?bn(o):kn(a.stateNode,a.memoizedProps)}catch(a){U(t,t.return,a)}}}else if(6===a.tag){if(null===i)try{s=a.stateNode,u?Sn(s):xn(s,a.memoizedProps)}catch(a){U(t,t.return,a)}}else if((22!==a.tag&&23!==a.tag||null===a.memoizedState||a===t)&&null!==a.child){a.child.return=a;a=a.child;continue}if(a===t)break e;for(;null===a.sibling;){if(null===a.return||a.return===t)break e;i===a&&(i=null);a=a.return}i===a&&(i=null);a.sibling.return=a.return;a=a.sibling}}break;case 19:Zg(a,t);ah(t);i&4&&Xg(t);break;case 21:break;default:Zg(a,t),ah(t)}}function ah(t){var a=t.flags;if(a&2){try{if(_e){e:{for(var u=t.return;null!==u;){if(Qg(u)){var i=u;break e}u=u.return}throw Error(n(160))}switch(i.tag){case 5:var o=i.stateNode;i.flags&32&&(yn(o),i.flags&=-33);var s=Rg(t);Tg(t,s,o);break;case 3:case 4:var y=i.stateNode.containerInfo,S=Rg(t);Sg(t,S,y);break;default:throw Error(n(161))}}}catch(a){U(t,t.return,a)}t.flags&=-3}a&4096&&(t.flags&=-4097)}function dh(t,a,u){Ir=t;eh(t,a,u)}function eh(t,a,u){for(var i=0!==(t.mode&1);null!==Ir;){var o=Ir,s=o.child;if(22===o.tag&&i){var y=null!==o.memoizedState||Pr;if(!y){var S=o.alternate,x=null!==S&&null!==S.memoizedState||Er;S=Pr;var z=Er;Pr=y;if((Er=x)&&!z)for(Ir=o;null!==Ir;)y=Ir,x=y.child,22===y.tag&&null!==y.memoizedState?fh(o):null!==x?(x.return=y,Ir=x):fh(o);for(;null!==s;)Ir=s,eh(s,a,u),s=s.sibling;Ir=o;Pr=S;Er=z}gh(t,a,u)}else 0!==(o.subtreeFlags&8772)&&null!==s?(s.return=o,Ir=s):gh(t,a,u)}}function gh(t){for(;null!==Ir;){var a=Ir;if(0!==(a.flags&8772)){var u=a.alternate;try{if(0!==(a.flags&8772))switch(a.tag){case 0:case 11:case 15:Er||Ng(5,a);break;case 1:var i=a.stateNode;if(a.flags&4&&!Er)if(null===u)i.componentDidMount();else{var o=a.elementType===a.type?u.memoizedProps:xf(a.type,u.memoizedProps);i.componentDidUpdate(o,u.memoizedState,i.__reactInternalSnapshotBeforeUpdate)}var s=a.updateQueue;null!==s&&me(a,s,i);break;case 3:var y=a.updateQueue;if(null!==y){u=null;if(null!==a.child)switch(a.child.tag){case 5:u=Z(a.child.stateNode);break;case 1:u=a.child.stateNode}me(a,y,u)}break;case 5:var S=a.stateNode;null===u&&a.flags&4&&dn(S,a.type,a.memoizedProps,a);break;case 6:break;case 4:break;case 12:break;case 13:if(Fe&&null===a.memoizedState){var x=a.alternate;if(null!==x){var z=x.memoizedState;if(null!==z){var N=z.dehydrated;null!==N&&Vn(N)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(n(163))}Er||a.flags&512&&Og(a)}catch(t){U(a,a.return,t)}}if(a===t){Ir=null;break}u=a.sibling;if(null!==u){u.return=a.return;Ir=u;break}Ir=a.return}}function ch(t){for(;null!==Ir;){var a=Ir;if(a===t){Ir=null;break}var u=a.sibling;if(null!==u){u.return=a.return;Ir=u;break}Ir=a.return}}function fh(t){for(;null!==Ir;){var a=Ir;try{switch(a.tag){case 0:case 11:case 15:var u=a.return;try{Ng(4,a)}catch(t){U(a,u,t)}break;case 1:var i=a.stateNode;if(\"function\"===typeof i.componentDidMount){var o=a.return;try{i.componentDidMount()}catch(t){U(a,o,t)}}var s=a.return;try{Og(a)}catch(t){U(a,s,t)}break;case 5:var y=a.return;try{Og(a)}catch(t){U(a,y,t)}}}catch(t){U(a,a.return,t)}if(a===t){Ir=null;break}var S=a.sibling;if(null!==S){S.return=a.return;Ir=S;break}Ir=a.return}}var Tr=0,Rr=1,Mr=2,Fr=3,Qr=4;if(\"function\"===typeof Symbol&&Symbol.for){var Dr=Symbol.for;Tr=Dr(\"selector.component\");Rr=Dr(\"selector.has_pseudo_class\");Mr=Dr(\"selector.role\");Fr=Dr(\"selector.test_id\");Qr=Dr(\"selector.text\")}function nh(t){var a=De(t);if(null!=a){if(\"string\"!==typeof a.memoizedProps[\"data-testname\"])throw Error(n(364));return a}t=nn(t);if(null===t)throw Error(n(362));return t.stateNode.current}function oh(t,a){switch(a.$$typeof){case Tr:if(t.type===a.value)return!0;break;case Rr:e:{a=a.value;t=[t,0];for(var u=0;u<t.length;){var i=t[u++],o=t[u++],s=a[o];if(5!==i.tag||!ln(i)){for(;null!=s&&oh(i,s);)o++,s=a[o];if(o===a.length){a=!0;break e}for(i=i.child;null!==i;)t.push(i,o),i=i.sibling}}a=!1}return a;case Mr:if(5===t.tag&&an(t.stateNode,a.value))return!0;break;case Qr:if((5===t.tag||6===t.tag)&&(t=rn(t),null!==t&&0<=t.indexOf(a.value)))return!0;break;case Fr:if(5===t.tag&&(t=t.memoizedProps[\"data-testname\"],\"string\"===typeof t&&t.toLowerCase()===a.value.toLowerCase()))return!0;break;default:throw Error(n(365))}return!1}function ph(t){switch(t.$$typeof){case Tr:return\"<\"+(ua(t.value)||\"Unknown\")+\">\";case Rr:return\":has(\"+(ph(t)||\"\")+\")\";case Mr:return'[role=\"'+t.value+'\"]';case Qr:return'\"'+t.value+'\"';case Fr:return'[data-testname=\"'+t.value+'\"]';default:throw Error(n(365))}}function qh(t,a){var u=[];t=[t,0];for(var i=0;i<t.length;){var o=t[i++],s=t[i++],y=a[s];if(5!==o.tag||!ln(o)){for(;null!=y&&oh(o,y);)s++,y=a[s];if(s===a.length)u.push(o);else for(o=o.child;null!==o;)t.push(o,s),o=o.sibling}}return u}function rh(t,a){if(!en)throw Error(n(363));t=nh(t);t=qh(t,a);a=[];t=Array.from(t);for(var u=0;u<t.length;){var i=t[u++];if(5===i.tag)ln(i)||a.push(i.stateNode);else for(i=i.child;null!==i;)t.push(i),i=i.sibling}return a}var Hr=Math.ceil,Wr=x.ReactCurrentDispatcher,Br=x.ReactCurrentOwner,Or=x.ReactCurrentBatchConfig,Ar=0,qr=null,jr=null,$r=0,Vr=0,Zr=ic(0),Yr=0,Jr=null,Kr=0,Gr=0,Xr=0,el=null,nl=null,tl=0,rl=Infinity,ll=null;function Bh(){rl=vt()+500}var al=!1,ul=null,il=null,ol=!1,sl=null,cl=0,fl=0,dl=null,hl=-1,gl=0;function O(){return 0!==(Ar&6)?vt():-1!==hl?hl:hl=vt()}function tf(t){if(0===(t.mode&1))return 1;if(0!==(Ar&2)&&0!==$r)return $r&-$r;if(null!==Ot.transition)return 0===gl&&(gl=Dc()),gl;t=dt;return 0!==t?t:Ae()}function af(t,a,u,i){if(50<fl)throw fl=0,dl=null,Error(n(185));Fc(t,u,i);0!==(Ar&2)&&t===qr||(t===qr&&(0===(Ar&2)&&(Gr|=u),4===Yr&&Jh(t,$r)),Kh(t,i),1===u&&0===Ar&&0===(a.mode&1)&&(Bh(),Pt&&ad()))}function Kh(t,a){var u=t.callbackNode;Bc(t,a);var i=zc(t,t===qr?$r:0);if(0===i)null!==u&&gt(u),t.callbackNode=null,t.callbackPriority=0;else if(a=i&-i,t.callbackPriority!==a){null!=u&&gt(u);if(1===a)0===t.tag?$c(Lh.bind(null,t)):Zc(Lh.bind(null,t)),Je?Ke((function(){0===(Ar&6)&&ad()})):ht(yt,ad),u=null;else{switch(Ic(i)){case 1:u=yt;break;case 4:u=bt;break;case 16:u=St;break;case 536870912:u=kt;break;default:u=St}u=Mh(u,Nh.bind(null,t))}t.callbackPriority=a;t.callbackNode=u}}function Nh(t,a){hl=-1;gl=0;if(0!==(Ar&6))throw Error(n(327));var u=t.callbackNode;if(Oh()&&t.callbackNode!==u)return null;var i=zc(t,t===qr?$r:0);if(0===i)return null;if(0!==(i&30)||0!==(i&t.expiredLanes)||a)a=Ph(t,i);else{a=i;var o=Ar;Ar|=2;var s=Qh();qr===t&&$r===a||(ll=null,Bh(),Rh(t,a));do{try{Sh();break}catch(a){Th(t,a)}}while(1);Ud();Wr.current=s;Ar=o;null!==jr?a=0:(qr=null,$r=0,a=Yr)}if(0!==a){2===a&&(o=Cc(t),0!==o&&(i=o,a=Uh(t,o)));if(1===a)throw u=Jr,Rh(t,0),Jh(t,i),Kh(t,vt()),u;if(6===a)Jh(t,i);else{o=t.current.alternate;if(0===(i&30)&&!Vh(o)&&(a=Ph(t,i),2===a&&(s=Cc(t),0!==s&&(i=s,a=Uh(t,s))),1===a))throw u=Jr,Rh(t,0),Jh(t,i),Kh(t,vt()),u;t.finishedWork=o;t.finishedLanes=i;switch(a){case 0:case 1:throw Error(n(345));case 2:Wh(t,nl,ll);break;case 3:Jh(t,i);if((i&130023424)===i&&(a=tl+500-vt(),10<a)){if(0!==zc(t,0))break;o=t.suspendedLanes;if((o&i)!==i){O();t.pingedLanes|=t.suspendedLanes&o;break}t.timeoutHandle=ze(Wh.bind(null,t,nl,ll),a);break}Wh(t,nl,ll);break;case 4:Jh(t,i);if((i&4194240)===i)break;a=t.eventTimes;for(o=-1;0<i;){var y=31-it(i);s=1<<y;y=a[y];y>o&&(o=y);i&=~s}i=o;i=vt()-i;i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*Hr(i/1960))-i;if(10<i){t.timeoutHandle=ze(Wh.bind(null,t,nl,ll),i);break}Wh(t,nl,ll);break;case 5:Wh(t,nl,ll);break;default:throw Error(n(329))}}}Kh(t,vt());return t.callbackNode===u?Nh.bind(null,t):null}function Uh(t,a){var u=el;t.current.memoizedState.isDehydrated&&(Rh(t,a).flags|=256);t=Ph(t,a);2!==t&&(a=nl,nl=u,null!==a&&Cg(a));return t}function Cg(t){null===nl?nl=t:nl.push.apply(nl,t)}function Vh(t){for(var a=t;;){if(a.flags&16384){var u=a.updateQueue;if(null!==u&&(u=u.stores,null!==u))for(var i=0;i<u.length;i++){var o=u[i],s=o.getSnapshot;o=o.value;try{if(!zt(s(),o))return!1}catch(t){return!1}}}u=a.child;if(a.subtreeFlags&16384&&null!==u)u.return=a,a=u;else{if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return!0;a=a.return}a.sibling.return=a.return;a=a.sibling}}return!0}function Jh(t,a){a&=~Xr;a&=~Gr;t.suspendedLanes|=a;t.pingedLanes&=~a;for(t=t.expirationTimes;0<a;){var u=31-it(a),i=1<<u;t[u]=-1;a&=~i}}function Lh(t){if(0!==(Ar&6))throw Error(n(327));Oh();var a=zc(t,0);if(0===(a&1))return Kh(t,vt()),null;var u=Ph(t,a);if(0!==t.tag&&2===u){var i=Cc(t);0!==i&&(a=i,u=Uh(t,i))}if(1===u)throw u=Jr,Rh(t,0),Jh(t,a),Kh(t,vt()),u;if(6===u)throw Error(n(345));t.finishedWork=t.current.alternate;t.finishedLanes=a;Wh(t,nl,ll);Kh(t,vt());return null}function Xh(t){null!==sl&&0===sl.tag&&0===(Ar&6)&&Oh();var a=Ar;Ar|=1;var u=Or.transition,i=dt;try{if(Or.transition=null,dt=1,t)return t()}finally{dt=i,Or.transition=u,Ar=a,0===(Ar&6)&&ad()}}function Eg(){Vr=Zr.current;q(Zr)}function Rh(t,a){t.finishedWork=null;t.finishedLanes=0;var u=t.timeoutHandle;u!==Ce&&(t.timeoutHandle=Ce,Ee(u));if(null!==jr)for(u=jr.return;null!==u;){var i=u;nd(i);switch(i.tag){case 1:i=i.type.childContextTypes;null!==i&&void 0!==i&&nc();break;case 3:te();q(at);q(lt);ye();break;case 5:ve(i);break;case 4:te();break;case 13:q(nr);break;case 19:q(nr);break;case 10:Wd(i.type._context);break;case 22:case 23:Eg()}u=u.return}qr=t;jr=t=Jd(t.current,null);$r=Vr=a;Yr=0;Jr=null;Xr=Gr=Kr=0;nl=el=null;if(null!==Yt){for(a=0;a<Yt.length;a++)if(u=Yt[a],i=u.interleaved,null!==i){u.interleaved=null;var o=i.next,s=u.pending;if(null!==s){var y=s.next;s.next=o;i.next=y}u.pending=i}Yt=null}return t}function Th(t,a){do{var u=jr;try{Ud();rr.current=hr;if(sr){for(var i=ur.memoizedState;null!==i;){var o=i.queue;null!==o&&(o.pending=null);i=i.next}sr=!1}ar=0;or=ir=ur=null;cr=!1;fr=0;Br.current=null;if(null===u||null===u.return){Yr=1;Jr=a;jr=null;break}e:{var s=t,y=u.return,S=u,x=a;a=$r;S.flags|=32768;if(null!==x&&\"object\"===typeof x&&\"function\"===typeof x.then){var z=x,N=S,E=N.tag;if(0===(N.mode&1)&&(0===E||11===E||15===E)){var C=N.alternate;C?(N.updateQueue=C.updateQueue,N.memoizedState=C.memoizedState,N.lanes=C.lanes):(N.updateQueue=null,N.memoizedState=null)}var I=Pf(y);if(null!==I){I.flags&=-257;Qf(I,y,S,s,a);I.mode&1&&Nf(s,z,a);a=I;x=z;var _=a.updateQueue;if(null===_){var L=new Set;L.add(x);a.updateQueue=L}else _.add(x);break e}if(0===(a&1)){Nf(s,z,a);ng();break e}x=Error(n(426))}else if(Ht&&S.mode&1){var T=Pf(y);if(null!==T){0===(T.flags&65536)&&(T.flags|=256);Qf(T,y,S,s,a);Bd(Ef(x,S));break e}}s=x=Ef(x,S);4!==Yr&&(Yr=2);null===el?el=[s]:el.push(s);s=y;do{switch(s.tag){case 3:s.flags|=65536;a&=-a;s.lanes|=a;var R=If(s,x,a);je(s,R);break e;case 1:S=x;var F=s.type,D=s.stateNode;if(0===(s.flags&128)&&(\"function\"===typeof F.getDerivedStateFromError||null!==D&&\"function\"===typeof D.componentDidCatch&&(null===il||!il.has(D)))){s.flags|=65536;a&=-a;s.lanes|=a;var H=Lf(s,S,a);je(s,H);break e}}s=s.return}while(null!==s)}Yh(u)}catch(t){a=t;jr===u&&null!==u&&(jr=u=u.return);continue}break}while(1)}function Qh(){var t=Wr.current;Wr.current=hr;return null===t?hr:t}function ng(){0!==Yr&&3!==Yr&&2!==Yr||(Yr=4);null===qr||0===(Kr&268435455)&&0===(Gr&268435455)||Jh(qr,$r)}function Ph(t,a){var u=Ar;Ar|=2;var i=Qh();qr===t&&$r===a||(ll=null,Rh(t,a));do{try{Zh();break}catch(a){Th(t,a)}}while(1);Ud();Ar=u;Wr.current=i;if(null!==jr)throw Error(n(261));qr=null;$r=0;return Yr}function Zh(){for(;null!==jr;)$h(jr)}function Sh(){for(;null!==jr&&!pt();)$h(jr)}function $h(t){var a=pl(t.alternate,t,Vr);t.memoizedProps=t.pendingProps;null===a?Yh(t):jr=a;Br.current=null}function Yh(t){var a=t;do{var u=a.alternate;t=a.return;if(0===(a.flags&32768)){if(u=Bg(u,a,Vr),null!==u){jr=u;return}}else{u=Fg(u,a);if(null!==u){u.flags&=32767;jr=u;return}if(null===t){Yr=6;jr=null;return}t.flags|=32768,t.subtreeFlags=0,t.deletions=null}a=a.sibling;if(null!==a){jr=a;return}jr=a=t}while(null!==a);0===Yr&&(Yr=5)}function Wh(t,a,u){var i=dt,o=Or.transition;try{Or.transition=null,dt=1,bi(t,a,u,i)}finally{Or.transition=o,dt=i}return null}function bi(t,a,u,i){do{Oh()}while(null!==sl);if(0!==(Ar&6))throw Error(n(327));u=t.finishedWork;var o=t.finishedLanes;if(null===u)return null;t.finishedWork=null;t.finishedLanes=0;if(u===t.current)throw Error(n(177));t.callbackNode=null;t.callbackPriority=0;var s=u.lanes|u.childLanes;Gc(t,s);t===qr&&(jr=qr=null,$r=0);0===(u.subtreeFlags&2064)&&0===(u.flags&2064)||ol||(ol=!0,Mh(St,(function(){Oh();return null})));s=0!==(u.flags&15990);if(0!==(u.subtreeFlags&15990)||s){s=Or.transition;Or.transition=null;var y=dt;dt=1;var S=Ar;Ar|=4;Br.current=null;Lg(t,u);$g(u,t);X(t.containerInfo);t.current=u;dh(u,t,o);mt();Ar=S;dt=y;Or.transition=s}else t.current=u;ol&&(ol=!1,sl=t,cl=o);s=t.pendingLanes;0===s&&(il=null);Tc(u.stateNode,i);Kh(t,vt());if(null!==a)for(i=t.onRecoverableError,u=0;u<a.length;u++)o=a[u],i(o.value,{componentStack:o.stack,digest:o.digest});if(al)throw al=!1,t=ul,ul=null,t;0!==(cl&1)&&0!==t.tag&&Oh();s=t.pendingLanes;0!==(s&1)?t===dl?fl++:(fl=0,dl=t):fl=0;ad();return null}function Oh(){if(null!==sl){var t=Ic(cl),a=Or.transition,u=dt;try{Or.transition=null;dt=16>t?16:t;if(null===sl)var i=!1;else{t=sl;sl=null;cl=0;if(0!==(Ar&6))throw Error(n(331));var o=Ar;Ar|=4;for(Ir=t.current;null!==Ir;){var s=Ir,y=s.child;if(0!==(Ir.flags&16)){var S=s.deletions;if(null!==S){for(var x=0;x<S.length;x++){var z=S[x];for(Ir=z;null!==Ir;){var N=Ir;switch(N.tag){case 0:case 11:case 15:Mg(8,N,s)}var E=N.child;if(null!==E)E.return=N,Ir=E;else for(;null!==Ir;){N=Ir;var C=N.sibling,I=N.return;Pg(N);if(N===z){Ir=null;break}if(null!==C){C.return=I;Ir=C;break}Ir=I}}}var _=s.alternate;if(null!==_){var L=_.child;if(null!==L){_.child=null;do{var T=L.sibling;L.sibling=null;L=T}while(null!==L)}}Ir=s}}if(0!==(s.subtreeFlags&2064)&&null!==y)y.return=s,Ir=y;else e:for(;null!==Ir;){s=Ir;if(0!==(s.flags&2048))switch(s.tag){case 0:case 11:case 15:Mg(9,s,s.return)}var R=s.sibling;if(null!==R){R.return=s.return;Ir=R;break e}Ir=s.return}}var F=t.current;for(Ir=F;null!==Ir;){y=Ir;var D=y.child;if(0!==(y.subtreeFlags&2064)&&null!==D)D.return=y,Ir=D;else e:for(y=F;null!==Ir;){S=Ir;if(0!==(S.flags&2048))try{switch(S.tag){case 0:case 11:case 15:Ng(9,S)}}catch(t){U(S,S.return,t)}if(S===y){Ir=null;break e}var H=S.sibling;if(null!==H){H.return=S.return;Ir=H;break e}Ir=S.return}}Ar=o;ad();if(wt&&\"function\"===typeof wt.onPostCommitFiberRoot)try{wt.onPostCommitFiberRoot(xt,t)}catch(t){}i=!0}return i}finally{dt=u,Or.transition=a}}return!1}function ci(t,a,u){a=Ef(u,a);a=If(t,a,1);t=he(t,a,1);a=O();null!==t&&(Fc(t,1,a),Kh(t,a))}function U(t,a,u){if(3===t.tag)ci(t,t,u);else for(;null!==a;){if(3===a.tag){ci(a,t,u);break}if(1===a.tag){var i=a.stateNode;if(\"function\"===typeof a.type.getDerivedStateFromError||\"function\"===typeof i.componentDidCatch&&(null===il||!il.has(i))){t=Ef(u,t);t=Lf(a,t,1);a=he(a,t,1);t=O();null!==a&&(Fc(a,1,t),Kh(a,t));break}}a=a.return}}function Of(t,a,u){var i=t.pingCache;null!==i&&i.delete(a);a=O();t.pingedLanes|=t.suspendedLanes&u;qr===t&&($r&u)===u&&(4===Yr||3===Yr&&($r&130023424)===$r&&500>vt()-tl?Rh(t,0):Xr|=u);Kh(t,a)}function di(t,a){0===a&&(0===(t.mode&1)?a=1:(a=ft,ft<<=1,0===(ft&130023424)&&(ft=4194304)));var u=O();t=ce(t,a);null!==t&&(Fc(t,a,u),Kh(t,u))}function og(t){var a=t.memoizedState,u=0;null!==a&&(u=a.retryLane);di(t,u)}function Yg(t,a){var u=0;switch(t.tag){case 13:var i=t.stateNode;var o=t.memoizedState;null!==o&&(u=o.retryLane);break;case 19:i=t.stateNode;break;default:throw Error(n(314))}null!==i&&i.delete(a);di(t,u)}var pl;pl=function(t,a,u){if(null!==t)if(t.memoizedProps!==a.pendingProps||at.current)Sr=!0;else{if(0===(t.lanes&u)&&0===(a.flags&128))return Sr=!1,sg(t,a,u);Sr=0!==(t.flags&131072)}else Sr=!1,Ht&&0!==(a.flags&1048576)&&ld(a,Ut,a.index);a.lanes=0;switch(a.tag){case 2:var i=a.type;cg(t,a);t=a.pendingProps;var o=mc(a,lt.current);Yd(a,u);o=He(null,a,i,t,o,u);var s=Me();a.flags|=1;\"object\"===typeof o&&null!==o&&\"function\"===typeof o.render&&void 0===o.$$typeof?(a.tag=1,a.memoizedState=null,a.updateQueue=null,A(i)?(s=!0,qc(a)):s=!1,a.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ee(a),o.updater=vr,a.stateNode=o,o._reactInternals=a,Df(a,i,t,u),a=dg(null,a,i,!0,s,u)):(a.tag=0,Ht&&s&&md(a),P(null,a,o,u),a=a.child);return a;case 16:i=a.elementType;e:{cg(t,a);t=a.pendingProps;o=i._init;i=o(i._payload);a.type=i;o=a.tag=ei(i);t=xf(i,t);switch(o){case 0:a=Xf(null,a,i,t,u);break e;case 1:a=bg(null,a,i,t,u);break e;case 11:a=Sf(null,a,i,t,u);break e;case 14:a=Uf(null,a,i,xf(i.type,t),u);break e}throw Error(n(306,i,\"\"))}return a;case 0:return i=a.type,o=a.pendingProps,o=a.elementType===i?o:xf(i,o),Xf(t,a,i,o,u);case 1:return i=a.type,o=a.pendingProps,o=a.elementType===i?o:xf(i,o),bg(t,a,i,o,u);case 3:e:{eg(a);if(null===t)throw Error(n(387));i=a.pendingProps;s=a.memoizedState;o=s.element;fe(t,a);ke(a,i,null,u);var y=a.memoizedState;i=y.element;if(Fe&&s.isDehydrated){if(s={element:i,isDehydrated:!1,cache:y.cache,pendingSuspenseBoundaries:y.pendingSuspenseBoundaries,transitions:y.transitions},a.updateQueue.baseState=s,a.memoizedState=s,a.flags&256){o=Ef(Error(n(423)),a);a=fg(t,a,i,u,o);break e}if(i!==o){o=Ef(Error(n(424)),a);a=fg(t,a,i,u,o);break e}for(Fe&&(Dt=Wn(a.stateNode.containerInfo),Qt=a,Ht=!0,Bt=null,Wt=!1),u=qt(a,null,i,u),a.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling}else{Ad();if(i===o){a=Tf(t,a,u);break e}P(t,a,i,u)}a=a.child}return a;case 5:return ue(a),null===t&&wd(a),i=a.type,o=a.pendingProps,s=null!==t?t.memoizedProps:null,y=o.children,pe(i,o)?y=null:null!==s&&pe(i,s)&&(a.flags|=32),ag(t,a),P(t,a,y,u),a.child;case 6:return null===t&&wd(a),null;case 13:return ig(t,a,u);case 4:return se(a,a.stateNode.containerInfo),i=a.pendingProps,null===t?a.child=At(a,null,i,u):P(t,a,i,u),a.child;case 11:return i=a.type,o=a.pendingProps,o=a.elementType===i?o:xf(i,o),Sf(t,a,i,o,u);case 7:return P(t,a,a.pendingProps,u),a.child;case 8:return P(t,a,a.pendingProps.children,u),a.child;case 12:return P(t,a,a.pendingProps.children,u),a.child;case 10:e:{i=a.type._context;o=a.pendingProps;s=a.memoizedProps;y=o.value;Vd(a,i,y);if(null!==s)if(zt(s.value,y)){if(s.children===o.children&&!at.current){a=Tf(t,a,u);break e}}else for(s=a.child,null!==s&&(s.return=a);null!==s;){var S=s.dependencies;if(null!==S){y=s.child;for(var x=S.firstContext;null!==x;){if(x.context===i){if(1===s.tag){x=ge(-1,u&-u);x.tag=2;var z=s.updateQueue;if(null!==z){z=z.shared;var N=z.pending;null===N?x.next=x:(x.next=N.next,N.next=x);z.pending=x}}s.lanes|=u;x=s.alternate;null!==x&&(x.lanes|=u);Xd(s.return,u,a);S.lanes|=u;break}x=x.next}}else if(10===s.tag)y=s.type===a.type?null:s.child;else if(18===s.tag){y=s.return;if(null===y)throw Error(n(341));y.lanes|=u;S=y.alternate;null!==S&&(S.lanes|=u);Xd(y,u,a);y=s.sibling}else y=s.child;if(null!==y)y.return=s;else for(y=s;null!==y;){if(y===a){y=null;break}s=y.sibling;if(null!==s){s.return=y.return;y=s;break}y=y.return}s=y}P(t,a,o.children,u);a=a.child}return a;case 9:return o=a.type,i=a.pendingProps.children,Yd(a,u),o=Zd(o),i=i(o),a.flags|=1,P(t,a,i,u),a.child;case 14:return i=a.type,o=xf(i,a.pendingProps),o=xf(i.type,o),Uf(t,a,i,o,u);case 15:return Wf(t,a,a.type,a.pendingProps,u);case 17:return i=a.type,o=a.pendingProps,o=a.elementType===i?o:xf(i,o),cg(t,a),a.tag=1,A(i)?(t=!0,qc(a)):t=!1,Yd(a,u),Bf(a,i,o),Df(a,i,o,u),dg(null,a,i,!0,t,u);case 19:return rg(t,a,u);case 22:return Yf(t,a,u)}throw Error(n(156,a.tag))};function Mh(t,a){return ht(t,a)}function fi(t,a,u,i){(this||o).tag=t;(this||o).key=u;(this||o).sibling=(this||o).child=(this||o).return=(this||o).stateNode=(this||o).type=(this||o).elementType=null;(this||o).index=0;(this||o).ref=null;(this||o).pendingProps=a;(this||o).dependencies=(this||o).memoizedState=(this||o).updateQueue=(this||o).memoizedProps=null;(this||o).mode=i;(this||o).subtreeFlags=(this||o).flags=0;(this||o).deletions=null;(this||o).childLanes=(this||o).lanes=0;(this||o).alternate=null}function td(t,a,u,i){return new fi(t,a,u,i)}function Vf(t){t=t.prototype;return!(!t||!t.isReactComponent)}function ei(t){if(\"function\"===typeof t)return Vf(t)?1:0;if(void 0!==t&&null!==t){t=t.$$typeof;if(t===T)return 11;if(t===D)return 14}return 2}function Jd(t,a){var u=t.alternate;null===u?(u=td(t.tag,a,t.key,t.mode),u.elementType=t.elementType,u.type=t.type,u.stateNode=t.stateNode,u.alternate=t,t.alternate=u):(u.pendingProps=a,u.type=t.type,u.flags=0,u.subtreeFlags=0,u.deletions=null);u.flags=t.flags&14680064;u.childLanes=t.childLanes;u.lanes=t.lanes;u.child=t.child;u.memoizedProps=t.memoizedProps;u.memoizedState=t.memoizedState;u.updateQueue=t.updateQueue;a=t.dependencies;u.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext};u.sibling=t.sibling;u.index=t.index;u.ref=t.ref;return u}function Ld(t,a,u,i,o,s){var y=2;i=t;if(\"function\"===typeof t)Vf(t)&&(y=1);else if(\"string\"===typeof t)y=5;else e:switch(t){case E:return Nd(u.children,o,s,a);case C:y=8;o|=8;break;case I:return t=td(12,u,a,o|2),t.elementType=I,t.lanes=s,t;case R:return t=td(13,u,a,o),t.elementType=R,t.lanes=s,t;case F:return t=td(19,u,a,o),t.elementType=F,t.lanes=s,t;case W:return jg(u,o,s,a);default:if(\"object\"===typeof t&&null!==t)switch(t.$$typeof){case _:y=10;break e;case L:y=9;break e;case T:y=11;break e;case D:y=14;break e;case H:y=16;i=null;break e}throw Error(n(130,null==t?t:typeof t,\"\"))}a=td(y,u,a,o);a.elementType=t;a.type=i;a.lanes=s;return a}function Nd(t,a,u,i){t=td(7,t,i,a);t.lanes=u;return t}function jg(t,a,u,i){t=td(22,t,i,a);t.elementType=W;t.lanes=u;t.stateNode={isHidden:!1};return t}function Kd(t,a,u){t=td(6,t,null,a);t.lanes=u;return t}function Md(t,a,u){a=td(4,null!==t.children?t.children:[],t.key,a);a.lanes=u;a.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation};return a}function gi(t,a,u,i,s){(this||o).tag=a;(this||o).containerInfo=t;(this||o).finishedWork=(this||o).pingCache=(this||o).current=(this||o).pendingChildren=null;(this||o).timeoutHandle=Ce;(this||o).callbackNode=(this||o).pendingContext=(this||o).context=null;(this||o).callbackPriority=0;(this||o).eventTimes=Ec(0);(this||o).expirationTimes=Ec(-1);(this||o).entangledLanes=(this||o).finishedLanes=(this||o).mutableReadLanes=(this||o).expiredLanes=(this||o).pingedLanes=(this||o).suspendedLanes=(this||o).pendingLanes=0;(this||o).entanglements=Ec(0);(this||o).identifierPrefix=i;(this||o).onRecoverableError=s;Fe&&((this||o).mutableSourceEagerHydrationData=null)}function hi(t,a,u,i,o,s,y,S,x){t=new gi(t,a,u,S,x);1===a?(a=1,!0===s&&(a|=8)):a=0;s=td(3,null,null,a);t.current=s;s.stateNode=t;s.memoizedState={element:i,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null};ee(s);return t}function ii(t){if(!t)return rt;t=t._reactInternals;e:{if(wa(t)!==t||1!==t.tag)throw Error(n(170));var a=t;do{switch(a.tag){case 3:a=a.stateNode.context;break e;case 1:if(A(a.type)){a=a.stateNode.__reactInternalMemoizedMergedChildContext;break e}}a=a.return}while(null!==a);throw Error(n(171))}if(1===t.tag){var u=t.type;if(A(u))return pc(t,u,a)}return a}function ji(t){var a=t._reactInternals;if(void 0===a){if(\"function\"===typeof t.render)throw Error(n(188));t=Object.keys(t).join(\",\");throw Error(n(268,t))}t=Aa(a);return null===t?null:t.stateNode}function ki(t,a){t=t.memoizedState;if(null!==t&&null!==t.dehydrated){var u=t.retryLane;t.retryLane=0!==u&&u<a?u:a}}function li(t,a){ki(t,a);(t=t.alternate)&&ki(t,a)}function mi(t){t=Aa(t);return null===t?null:t.stateNode}function ni(){return null}a.attemptContinuousHydration=function(t){if(13===t.tag){var a=ce(t,134217728);if(null!==a){var u=O();af(a,t,134217728,u)}li(t,134217728)}};a.attemptDiscreteHydration=function(t){if(13===t.tag){var a=ce(t,1);if(null!==a){var u=O();af(a,t,1,u)}li(t,1)}};a.attemptHydrationAtCurrentPriority=function(t){if(13===t.tag){var a=tf(t),u=ce(t,a);if(null!==u){var i=O();af(u,t,a,i)}li(t,a)}};a.attemptSynchronousHydration=function(t){switch(t.tag){case 3:var a=t.stateNode;if(a.current.memoizedState.isDehydrated){var u=yc(a.pendingLanes);0!==u&&(Hc(a,u|1),Kh(a,vt()),0===(Ar&6)&&(Bh(),ad()))}break;case 13:Xh((function(){var a=ce(t,1);if(null!==a){var u=O();af(a,t,1,u)}})),li(t,1)}};a.batchedUpdates=function(t,a){var u=Ar;Ar|=1;try{return t(a)}finally{Ar=u,0===Ar&&(Bh(),Pt&&ad())}};a.createComponentSelector=function(t){return{$$typeof:Tr,value:t}};a.createContainer=function(t,a,u,i,o,s,y){return hi(t,a,!1,null,u,i,o,s,y)};a.createHasPseudoClassSelector=function(t){return{$$typeof:Rr,value:t}};a.createHydrationContainer=function(t,a,u,i,o,s,y,S,x){t=hi(u,i,!0,t,o,s,y,S,x);t.context=ii(null);u=t.current;i=O();o=tf(u);s=ge(i,o);s.callback=void 0!==a&&null!==a?a:null;he(u,s,o);t.current.lanes=o;Fc(t,o,i);Kh(t,i);return t};a.createPortal=function(t,a,u){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:N,key:null==i?null:\"\"+i,children:t,containerInfo:a,implementation:u}};a.createRoleSelector=function(t){return{$$typeof:Mr,value:t}};a.createTestNameSelector=function(t){return{$$typeof:Fr,value:t}};a.createTextSelector=function(t){return{$$typeof:Qr,value:t}};a.deferredUpdates=function(t){var a=dt,u=Or.transition;try{return Or.transition=null,dt=16,t()}finally{dt=a,Or.transition=u}};a.discreteUpdates=function(t,a,u,i,o){var s=dt,y=Or.transition;try{return Or.transition=null,dt=1,t(a,u,i,o)}finally{dt=s,Or.transition=y,0===Ar&&Bh()}};a.findAllNodes=rh;a.findBoundingRects=function(t,a){if(!en)throw Error(n(363));a=rh(t,a);t=[];for(var u=0;u<a.length;u++)t.push(tn(a[u]));for(a=t.length-1;0<a;a--){u=t[a];for(var i=u.x,o=i+u.width,s=u.y,y=s+u.height,S=a-1;0<=S;S--)if(a!==S){var x=t[S],z=x.x,N=z+x.width,E=x.y,C=E+x.height;if(i>=z&&s>=E&&o<=N&&y<=C){t.splice(a,1);break}if(!(i!==z||u.width!==x.width||C<s||E>y)){E>s&&(x.height+=E-s,x.y=s);C<y&&(x.height=y-E);t.splice(a,1);break}if(!(s!==E||u.height!==x.height||N<i||z>o)){z>i&&(x.width+=z-i,x.x=i);N<o&&(x.width=o-z);t.splice(a,1);break}}}return t};a.findHostInstance=ji;a.findHostInstanceWithNoPortals=function(t){t=za(t);t=null!==t?Ca(t):null;return null===t?null:t.stateNode};a.findHostInstanceWithWarning=function(t){return ji(t)};a.flushControlled=function(t){var a=Ar;Ar|=1;var u=Or.transition,i=dt;try{Or.transition=null,dt=1,t()}finally{dt=i,Or.transition=u,Ar=a,0===Ar&&(Bh(),ad())}};a.flushPassiveEffects=Oh;a.flushSync=Xh;a.focusWithin=function(t,a){if(!en)throw Error(n(363));t=nh(t);a=qh(t,a);a=Array.from(a);for(t=0;t<a.length;){var u=a[t++];if(!ln(u)){if(5===u.tag&&un(u.stateNode))return!0;for(u=u.child;null!==u;)a.push(u),u=u.sibling}}return!1};a.getCurrentUpdatePriority=function(){return dt};a.getFindAllNodesFailureDescription=function(t,a){if(!en)throw Error(n(363));var u=0,i=[];t=[nh(t),0];for(var o=0;o<t.length;){var s=t[o++],y=t[o++],S=a[y];if((5!==s.tag||!ln(s))&&(oh(s,S)&&(i.push(ph(S)),y++,y>u&&(u=y)),y<a.length))for(s=s.child;null!==s;)t.push(s,y),s=s.sibling}if(u<a.length){for(t=[];u<a.length;u++)t.push(ph(a[u]));return\"findAllNodes was able to match part of the selector:\\n  \"+i.join(\" > \")+\"\\n\\nNo matching component was found for:\\n  \"+t.join(\" > \")}return null};a.getPublicRootInstance=function(t){t=t.current;if(!t.child)return null;switch(t.child.tag){case 5:return Z(t.child.stateNode);default:return t.child.stateNode}};a.injectIntoDevTools=function(t){t={bundleType:t.bundleType,version:t.version,rendererPackageName:t.rendererPackageName,rendererConfig:t.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:mi,findFiberByHostInstance:t.findFiberByHostInstance||ni,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1\"};if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)t=!1;else{var a=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(a.isDisabled||!a.supportsFiber)t=!0;else{try{xt=a.inject(t),wt=a}catch(t){}t=!!a.checkDCE}}return t};a.isAlreadyRendering=function(){return!1};a.observeVisibleRects=function(t,a,u,i){if(!en)throw Error(n(363));t=rh(t,a);var o=on(t,u,i).disconnect;return{disconnect:function(){o()}}};a.registerMutableSourceForHydration=function(t,a){var u=a._getVersion;u=u(a._source);null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[a,u]:t.mutableSourceEagerHydrationData.push(a,u)};a.runWithPriority=function(t,a){var u=dt;try{return dt=t,a()}finally{dt=u}};a.shouldError=function(){return null};a.shouldSuspend=function(){return!1};a.updateContainer=function(t,a,u,i){var o=a.current,s=O(),y=tf(o);u=ii(u);null===a.context?a.context=u:a.pendingContext=u;a=ge(s,y);a.payload={element:t};i=void 0===i?null:i;null!==i&&(a.callback=i);t=he(o,a,y);null!==t&&(af(t,o,y,s),ie(t,o,y));return y};return a};var y=s;const S=s.attemptContinuousHydration,x=s.attemptDiscreteHydration,z=s.attemptHydrationAtCurrentPriority,N=s.attemptSynchronousHydration,E=s.batchedUpdates,C=s.createComponentSelector,I=s.createContainer,_=s.createHasPseudoClassSelector,L=s.createHydrationContainer,T=s.createPortal,R=s.createRoleSelector,F=s.createTestNameSelector,D=s.createTextSelector,H=s.deferredUpdates,W=s.discreteUpdates,j=s.findAllNodes,$=s.findBoundingRects,V=s.findHostInstance,Z=s.findHostInstanceWithNoPortals,J=s.findHostInstanceWithWarning,K=s.flushControlled,G=s.flushPassiveEffects,X=s.flushSync,ne=s.focusWithin,le=s.getCurrentUpdatePriority,oe=s.getFindAllNodesFailureDescription,de=s.getPublicRootInstance,pe=s.injectIntoDevTools,xe=s.isAlreadyRendering,ze=s.observeVisibleRects,Ee=s.registerMutableSourceForHydration,Ce=s.runWithPriority,Ie=s.shouldError,_e=s.shouldSuspend,Le=s.updateContainer;export{S as attemptContinuousHydration,x as attemptDiscreteHydration,z as attemptHydrationAtCurrentPriority,N as attemptSynchronousHydration,E as batchedUpdates,C as createComponentSelector,I as createContainer,_ as createHasPseudoClassSelector,L as createHydrationContainer,T as createPortal,R as createRoleSelector,F as createTestNameSelector,D as createTextSelector,y as default,H as deferredUpdates,W as discreteUpdates,j as findAllNodes,$ as findBoundingRects,V as findHostInstance,Z as findHostInstanceWithNoPortals,J as findHostInstanceWithWarning,K as flushControlled,G as flushPassiveEffects,X as flushSync,ne as focusWithin,le as getCurrentUpdatePriority,oe as getFindAllNodesFailureDescription,de as getPublicRootInstance,pe as injectIntoDevTools,xe as isAlreadyRendering,ze as observeVisibleRects,Ee as registerMutableSourceForHydration,Ce as runWithPriority,Ie as shouldError,_e as shouldSuspend,Le as updateContainer};\n//# sourceMappingURL=react-reconciler.production.min.js.map\n","import e from\"./cjs/react-reconciler.production.min.js\";import\"react\";import\"scheduler\";const t=e.attemptContinuousHydration,r=e.attemptDiscreteHydration,o=e.attemptHydrationAtCurrentPriority,n=e.attemptSynchronousHydration,i=e.batchedUpdates,a=e.createComponentSelector,s=e.createContainer,c=e.createHasPseudoClassSelector,d=e.createHydrationContainer,l=e.createPortal,u=e.createRoleSelector,p=e.createTestNameSelector,f=e.createTextSelector,h=e.deferredUpdates,y=e.discreteUpdates,m=e.findAllNodes,H=e.findBoundingRects,C=e.findHostInstance,S=e.findHostInstanceWithNoPortals,P=e.findHostInstanceWithWarning,g=e.flushControlled,b=e.flushPassiveEffects,I=e.flushSync,R=e.focusWithin,W=e.getCurrentUpdatePriority,A=e.getFindAllNodesFailureDescription,N=e.getPublicRootInstance,U=e.injectIntoDevTools,j=e.isAlreadyRendering,v=e.observeVisibleRects,D=e.registerMutableSourceForHydration,F=e.runWithPriority,T=e.shouldError,x=e.shouldSuspend,E=e.updateContainer;export{t as attemptContinuousHydration,r as attemptDiscreteHydration,o as attemptHydrationAtCurrentPriority,n as attemptSynchronousHydration,i as batchedUpdates,a as createComponentSelector,s as createContainer,c as createHasPseudoClassSelector,d as createHydrationContainer,l as createPortal,u as createRoleSelector,p as createTestNameSelector,f as createTextSelector,e as default,h as deferredUpdates,y as discreteUpdates,m as findAllNodes,H as findBoundingRects,C as findHostInstance,S as findHostInstanceWithNoPortals,P as findHostInstanceWithWarning,g as flushControlled,b as flushPassiveEffects,I as flushSync,R as focusWithin,W as getCurrentUpdatePriority,A as getFindAllNodesFailureDescription,N as getPublicRootInstance,U as injectIntoDevTools,j as isAlreadyRendering,v as observeVisibleRects,D as registerMutableSourceForHydration,F as runWithPriority,T as shouldError,x as shouldSuspend,E as updateContainer};\n//# sourceMappingURL=index.js.map\n","import {\n  __esm\n} from \"./chunk-HXGKXP63.mjs\";\n\n// ../shadergradient/dist/chunk-RJXQ2OEQ.mjs\nvar propertyControls;\nvar init_chunk_RJXQ2OEQ = __esm({\n  \"../shadergradient/dist/chunk-RJXQ2OEQ.mjs\"() {\n    propertyControls = (ControlType, type = \"\") => ({\n      control: {\n        type: ControlType.Enum,\n        options: [\"props\", \"query\"],\n        optionTitles: [\"Props\", \"Query\"],\n        displaySegmentedControl: true,\n        defaultValue: type === \"stateless\" ? \"query\" : \"props\"\n      },\n      activeTab: {\n        title: \"Settings Group\",\n        type: ControlType.Enum,\n        options: [\"Shape\", \"Colors\", \"Effects\", \"View\"],\n        hidden: (props) => props.control === \"query\"\n      },\n      // Shape\n      type: {\n        type: ControlType.Enum,\n        options: [\"plane\", \"sphere\", \"waterPlane\"],\n        optionTitles: [\"Plane\", \"Sphere\", \"Water\"],\n        displaySegmentedControl: true,\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Shape\"\n      },\n      // shader: {\n      //   type: ControlType.Enum,\n      //   options: ['defaults', 'positionMix', 'glass'],\n      //   optionTitles: ['Type A', 'Type B', 'Type C'],\n      //   displaySegmentedControl: true,\n      //   hidden: (props) => props.control === 'query' || props.activeTab !== 'Shape',\n      // },\n      animate: {\n        type: ControlType.Enum,\n        options: [\"on\", \"off\"],\n        optionTitles: [\"On\", \"Off\"],\n        displaySegmentedControl: true,\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Shape\" && props.activeTab !== \"URL\"\n      },\n      uTime: {\n        title: \"Movements\",\n        type: ControlType.Number,\n        step: 0.1,\n        displayStepper: true,\n        hidden: (props) => props.animate === \"on\" || props.control === \"query\" || props.activeTab !== \"Shape\"\n      },\n      uSpeed: {\n        title: \"Speed\",\n        type: ControlType.Number,\n        step: 0.1,\n        min: 0.1,\n        displayStepper: true,\n        defaultValue: 0.4,\n        hidden: (props) => props.animate === \"off\" || props.control === \"query\" || props.activeTab !== \"Shape\"\n      },\n      noise: {\n        type: ControlType.Object,\n        controls: {\n          uStrength: {\n            type: ControlType.Number,\n            title: \"Strength\",\n            step: 0.1,\n            min: 0.1,\n            displayStepper: true,\n            defaultValue: 4\n          },\n          uDensity: {\n            type: ControlType.Number,\n            title: \"Density\",\n            step: 0.1,\n            min: 0.1,\n            displayStepper: true,\n            defaultValue: 1.3\n          }\n          // uFrequency: {\n          //     type: ControlType.Number,\n          //     step: 0.1,\n          //     min: 0.1,\n          //     displayStepper: true,\n          //     hidden: (props) =>\n          //         props.type !== \"sphere\" ||\n          //         props.control === \"query\" ||\n          //         props.activeTab !== \"Shape\",\n          // },\n        },\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Shape\"\n      },\n      uAmplitude: {\n        type: ControlType.Number,\n        title: \"Spiral\",\n        step: 0.1,\n        min: 0.1,\n        displayStepper: true,\n        defaultValue: 1,\n        hidden: (props) => props.type !== \"sphere\" || props.control === \"query\" || props.activeTab !== \"Shape\"\n      },\n      // Effects\n      grain: {\n        type: ControlType.Enum,\n        options: [\"on\", \"off\"],\n        optionTitles: [\"On\", \"Off\"],\n        displaySegmentedControl: true,\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Effects\"\n      },\n      lightType: {\n        type: ControlType.Enum,\n        options: [\"env\", \"3d\"],\n        optionTitles: [\"Env\", \"Light\"],\n        displaySegmentedControl: true,\n        defaultValue: \"3d\",\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Effects\"\n      },\n      envPreset: {\n        type: ControlType.Enum,\n        options: [\"city\", \"dawn\", \"lobby\"],\n        optionTitles: [\"City\", \"Dawn\", \"Lobby\"],\n        displaySegmentedControl: true,\n        hidden: (props) => props.lightType === \"3d\" || props.control === \"query\" || props.activeTab !== \"Effects\"\n      },\n      brightness: {\n        type: ControlType.Number,\n        step: 0.1,\n        min: 0.1,\n        max: 3,\n        defaultValue: 1.2,\n        hidden: (props) => props.lightType === \"env\" || props.control === \"query\" || props.activeTab !== \"Effects\" || props.url\n      },\n      reflection: {\n        type: ControlType.Number,\n        step: 0.1,\n        min: 0,\n        max: 1,\n        defaultValue: 0.1,\n        hidden: (props) => props.lightType === \"3d\" || props.control === \"query\" || props.activeTab !== \"Effects\" || props.url\n      },\n      // Colors\n      color1: {\n        type: ControlType.Color,\n        defaultValue: \"#ff5005\",\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Colors\"\n      },\n      color2: {\n        type: ControlType.Color,\n        defaultValue: \"#dbba95\",\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Colors\"\n      },\n      color3: {\n        type: ControlType.Color,\n        defaultValue: \"#d0bce1\",\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"Colors\"\n      },\n      // View\n      cDistance: {\n        title: \"Distance\",\n        type: ControlType.Number,\n        displayStepper: true,\n        min: 0,\n        max: 20,\n        defaultValue: 3.6,\n        hidden: (props) => props.type === \"sphere\" || props.control === \"query\" || props.activeTab !== \"View\"\n      },\n      cameraZoom: {\n        type: ControlType.Number,\n        displayStepper: true,\n        step: 0.1,\n        min: 0.1,\n        max: 30,\n        defaultValue: 1,\n        hidden: (props) => props.type !== \"sphere\" || props.control === \"query\" || props.activeTab !== \"View\"\n      },\n      cameraAngle: {\n        type: ControlType.Object,\n        controls: {\n          cAzimuthAngle: {\n            title: \"Azimuth\",\n            type: ControlType.Number,\n            displayStepper: true,\n            step: 10,\n            min: 0,\n            max: 360,\n            defaultValue: 180\n          },\n          cPolarAngle: {\n            title: \"Polar\",\n            type: ControlType.Number,\n            displayStepper: true,\n            step: 10,\n            min: 0,\n            max: 180,\n            defaultValue: 90\n          }\n        },\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"View\"\n      },\n      position: {\n        type: ControlType.Object,\n        controls: {\n          positionX: {\n            type: ControlType.Number,\n            step: 0.1,\n            displayStepper: true,\n            defaultValue: -1.4\n          },\n          positionY: {\n            type: ControlType.Number,\n            step: 0.1,\n            displayStepper: true,\n            defaultValue: 0\n          },\n          positionZ: {\n            type: ControlType.Number,\n            step: 0.1,\n            displayStepper: true,\n            defaultValue: 0\n          }\n        },\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"View\"\n      },\n      rotation: {\n        type: ControlType.Object,\n        controls: {\n          rotationX: {\n            type: ControlType.Number,\n            step: 10,\n            min: -360,\n            max: 360,\n            displayStepper: true,\n            defaultValue: 0\n          },\n          rotationY: {\n            type: ControlType.Number,\n            step: 10,\n            min: -360,\n            max: 360,\n            displayStepper: true,\n            defaultValue: 10\n          },\n          rotationZ: {\n            type: ControlType.Number,\n            step: 10,\n            min: -360,\n            max: 360,\n            displayStepper: true,\n            defaultValue: 50\n          }\n        },\n        hidden: (props) => props.control === \"query\" || props.activeTab !== \"View\"\n      },\n      // urlString\n      urlString: {\n        type: ControlType.String,\n        placeholder: \"URL from shadergradient.co\",\n        defaultValue: type === \"stateless\" ? \"\" : \"https://www.shadergradient.co/customize?animate=on&axesHelper=off&bgColor1=%23000000&bgColor2=%23000000&brightness=1.2&cAzimuthAngle=180&cDistance=3.6&cPolarAngle=90&cameraZoom=1&color1=%23ff5005&color2=%23dbba95&color3=%23d0bce1&destination=onCanvas&embedMode=off&envPreset=city&format=gif&fov=45&frameRate=10&gizmoHelper=hide&grain=on&lightType=3d&pixelDensity=1&positionX=-1.4&positionY=0&positionZ=0&range=disabled&rangeEnd=40&rangeStart=0&reflection=0.1&rotationX=0&rotationY=10&rotationZ=50&shader=defaults&type=plane&uDensity=1.3&uFrequency=5.5&uSpeed=0.4&uStrength=4&uTime=0&wireframe=false\",\n        hidden: (props) => props.control === \"props\"\n      },\n      // Tools (🧰)\n      zoomOut: {\n        type: ControlType.Boolean,\n        title: \"View\",\n        enabledTitle: \"Wide\",\n        disabledTitle: \"-\",\n        defaultValue: false,\n        hidden: (props) => props.control === \"query\"\n      },\n      toggleAxis: {\n        type: ControlType.Boolean,\n        title: \"Axis\",\n        enabledTitle: \"Guide\",\n        disabledTitle: \"-\",\n        defaultValue: false,\n        hidden: (props) => props.control === \"query\"\n      },\n      enableTransition: {\n        type: ControlType.Boolean,\n        title: \"Camera Transition\",\n        enabledTitle: \"Smooth\",\n        disabledTitle: \"Instant\",\n        defaultValue: true,\n        hidden: (props) => props.control === \"query\"\n      },\n      enableCameraUpdate: {\n        type: ControlType.Boolean,\n        title: \"Camera Update\",\n        enabledTitle: \"On\",\n        disabledTitle: \"Off\",\n        defaultValue: false,\n        hidden: (props) => type !== \"stateless\"\n      },\n      pointerEvents: {\n        type: ControlType.Enum,\n        title: \"Touch Control\",\n        options: [\"none\", \"auto\"],\n        optionTitles: [\"Disable\", \"Enable\"],\n        displaySegmentedControl: true,\n        hidden: (props) => props.control === \"query\"\n      },\n      lazyLoad: {\n        type: ControlType.Boolean,\n        defaultValue: true\n      },\n      threshold: {\n        type: ControlType.Number,\n        min: 0,\n        max: 1,\n        step: 0.1,\n        defaultValue: 0.1,\n        displayStepper: true,\n        title: \"\\u21B3 Threshold\",\n        hidden: (props) => !props.lazyLoad\n      },\n      rootMargin: {\n        type: ControlType.String,\n        placeholder: \"0px\",\n        defaultValue: \"0px\",\n        title: \"\\u21B3 Root Margin\",\n        description: 'Offset before triggering (e.g., \"100px\", \"-50px\")',\n        hidden: (props) => !props.lazyLoad\n      },\n      canvas: {\n        type: ControlType.Object,\n        title: \"Canvas\",\n        controls: {\n          pixelDensity: {\n            type: ControlType.Number,\n            step: 0.1,\n            min: 0,\n            max: 3,\n            displayStepper: true,\n            defaultValue: 1\n          },\n          fov: {\n            type: ControlType.Number,\n            step: 1,\n            min: 10,\n            max: 180,\n            displayStepper: true,\n            defaultValue: 45\n          },\n          preserveDrawingBuffer: {\n            type: ControlType.Boolean,\n            title: \"Keep Buffer\",\n            defaultValue: false\n          },\n          powerPreference: {\n            type: ControlType.Enum,\n            title: \"Power Pref\",\n            options: [\"default\", \"high-performance\", \"low-power\"],\n            optionTitles: [\"Auto\", \"High\", \"Low\"],\n            displaySegmentedControl: true,\n            defaultValue: \"low-power\"\n          }\n        }\n      }\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-WBM42ICI.mjs\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nfunction Geometry({ type }) {\n  return /* @__PURE__ */ jsxs(Fragment, { children: [\n    type === \"plane\" && /* @__PURE__ */ jsx(\"planeGeometry\", { args: [10, 10, 1, meshCount] }),\n    type === \"sphere\" && /* @__PURE__ */ jsx(\"icosahedronGeometry\", { args: [1, meshCount / 3] }),\n    type === \"waterPlane\" && /* @__PURE__ */ jsx(\"planeGeometry\", { args: [10, 10, meshCount, meshCount] })\n  ] });\n}\nvar meshCount;\nvar init_chunk_WBM42ICI = __esm({\n  \"../shadergradient/dist/chunk-WBM42ICI.mjs\"() {\n    meshCount = 192;\n  }\n});\n\n// ../shadergradient/dist/chunk-BI5IV7LU.mjs\nfunction hexToRgb(hex) {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n  return result ? {\n    r: parseInt(result[1], 16),\n    g: parseInt(result[2], 16),\n    b: parseInt(result[3], 16)\n  } : null;\n}\nfunction rgbStringToRgb(rgbString) {\n  const result = rgbString.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n  return result ? {\n    r: parseInt(result[1]),\n    g: parseInt(result[2]),\n    b: parseInt(result[3])\n  } : null;\n}\nfunction colorToRgb(color) {\n  if (color.startsWith(\"#\")) {\n    return hexToRgb(color);\n  } else if (color.startsWith(\"rgb\")) {\n    return rgbStringToRgb(color);\n  } else {\n    throw new Error(\"Invalid color format\");\n  }\n}\nfunction formatColor(color = 0) {\n  return color / 255;\n}\nvar init_chunk_BI5IV7LU = __esm({\n  \"../shadergradient/dist/chunk-BI5IV7LU.mjs\"() {\n  }\n});\n\n// ../shadergradient/dist/chunk-5BEQP2BQ.mjs\nvar __defProp, __defProps, __getOwnPropDescs, __getOwnPropSymbols, __hasOwnProp, __propIsEnum, __pow, __defNormalProp, __spreadValues, __spreadProps, __objRest, __export, __async;\nvar init_chunk_5BEQP2BQ = __esm({\n  \"../shadergradient/dist/chunk-5BEQP2BQ.mjs\"() {\n    __defProp = Object.defineProperty;\n    __defProps = Object.defineProperties;\n    __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n    __getOwnPropSymbols = Object.getOwnPropertySymbols;\n    __hasOwnProp = Object.prototype.hasOwnProperty;\n    __propIsEnum = Object.prototype.propertyIsEnumerable;\n    __pow = Math.pow;\n    __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n    __spreadValues = (a, b) => {\n      for (var prop in b || (b = {}))\n        if (__hasOwnProp.call(b, prop))\n          __defNormalProp(a, prop, b[prop]);\n      if (__getOwnPropSymbols)\n        for (var prop of __getOwnPropSymbols(b)) {\n          if (__propIsEnum.call(b, prop))\n            __defNormalProp(a, prop, b[prop]);\n        }\n      return a;\n    };\n    __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n    __objRest = (source, exclude) => {\n      var target2 = {};\n      for (var prop in source)\n        if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n          target2[prop] = source[prop];\n      if (source != null && __getOwnPropSymbols)\n        for (var prop of __getOwnPropSymbols(source)) {\n          if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n            target2[prop] = source[prop];\n        }\n      return target2;\n    };\n    __export = (target2, all) => {\n      for (var name in all)\n        __defProp(target2, name, { get: all[name], enumerable: true });\n    };\n    __async = (__this, __arguments, generator) => {\n      return new Promise((resolve2, reject) => {\n        var fulfilled = (value) => {\n          try {\n            step(generator.next(value));\n          } catch (e) {\n            reject(e);\n          }\n        };\n        var rejected = (value) => {\n          try {\n            step(generator.throw(value));\n          } catch (e) {\n            reject(e);\n          }\n        };\n        var step = (x) => x.done ? resolve2(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n        step((generator = generator.apply(__this, __arguments)).next());\n      });\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-BT6X4JN2.mjs\nfunction generateUUID() {\n  const d0 = Math.random() * 4294967295 | 0;\n  const d1 = Math.random() * 4294967295 | 0;\n  const d2 = Math.random() * 4294967295 | 0;\n  const d3 = Math.random() * 4294967295 | 0;\n  const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + \"-\" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + \"-\" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + \"-\" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + \"-\" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];\n  return uuid.toLowerCase();\n}\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction euclideanModulo(n, m) {\n  return (n % m + m) % m;\n}\nfunction mapLinear(x, a1, a2, b1, b2) {\n  return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n}\nfunction inverseLerp(x, y2, value) {\n  if (x !== y2) {\n    return (value - x) / (y2 - x);\n  } else {\n    return 0;\n  }\n}\nfunction lerp(x, y2, t2) {\n  return (1 - t2) * x + t2 * y2;\n}\nfunction damp(x, y2, lambda, dt) {\n  return lerp(x, y2, 1 - Math.exp(-lambda * dt));\n}\nfunction pingpong(x, length = 1) {\n  return length - Math.abs(euclideanModulo(x, length * 2) - length);\n}\nfunction smoothstep(x, min, max) {\n  if (x <= min) return 0;\n  if (x >= max) return 1;\n  x = (x - min) / (max - min);\n  return x * x * (3 - 2 * x);\n}\nfunction smootherstep(x, min, max) {\n  if (x <= min) return 0;\n  if (x >= max) return 1;\n  x = (x - min) / (max - min);\n  return x * x * x * (x * (x * 6 - 15) + 10);\n}\nfunction randInt(low, high) {\n  return low + Math.floor(Math.random() * (high - low + 1));\n}\nfunction randFloat(low, high) {\n  return low + Math.random() * (high - low);\n}\nfunction randFloatSpread(range) {\n  return range * (0.5 - Math.random());\n}\nfunction seededRandom(s) {\n  if (s !== void 0) _seed = s;\n  let t2 = _seed += 1831565813;\n  t2 = Math.imul(t2 ^ t2 >>> 15, t2 | 1);\n  t2 ^= t2 + Math.imul(t2 ^ t2 >>> 7, t2 | 61);\n  return ((t2 ^ t2 >>> 14) >>> 0) / 4294967296;\n}\nfunction degToRad(degrees) {\n  return degrees * DEG2RAD;\n}\nfunction radToDeg(radians) {\n  return radians * RAD2DEG;\n}\nfunction isPowerOfTwo(value) {\n  return (value & value - 1) === 0 && value !== 0;\n}\nfunction ceilPowerOfTwo(value) {\n  return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\nfunction floorPowerOfTwo(value) {\n  return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\nfunction setQuaternionFromProperEuler(q3, a, b, c, order) {\n  const cos = Math.cos;\n  const sin = Math.sin;\n  const c2 = cos(b / 2);\n  const s2 = sin(b / 2);\n  const c13 = cos((a + c) / 2);\n  const s13 = sin((a + c) / 2);\n  const c1_3 = cos((a - c) / 2);\n  const s1_3 = sin((a - c) / 2);\n  const c3_1 = cos((c - a) / 2);\n  const s3_1 = sin((c - a) / 2);\n  switch (order) {\n    case \"XYX\":\n      q3.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n      break;\n    case \"YZY\":\n      q3.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n      break;\n    case \"ZXZ\":\n      q3.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n      break;\n    case \"XZX\":\n      q3.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n      break;\n    case \"YXY\":\n      q3.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n      break;\n    case \"ZYZ\":\n      q3.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n      break;\n    default:\n      console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + order);\n  }\n}\nfunction denormalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint32Array:\n      return value / 4294967295;\n    case Uint16Array:\n      return value / 65535;\n    case Uint8Array:\n      return value / 255;\n    case Int32Array:\n      return Math.max(value / 2147483647, -1);\n    case Int16Array:\n      return Math.max(value / 32767, -1);\n    case Int8Array:\n      return Math.max(value / 127, -1);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction normalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint32Array:\n      return Math.round(value * 4294967295);\n    case Uint16Array:\n      return Math.round(value * 65535);\n    case Uint8Array:\n      return Math.round(value * 255);\n    case Int32Array:\n      return Math.round(value * 2147483647);\n    case Int16Array:\n      return Math.round(value * 32767);\n    case Int8Array:\n      return Math.round(value * 127);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction arrayNeedsUint32(array) {\n  for (let i2 = array.length - 1; i2 >= 0; --i2) {\n    if (array[i2] >= 65535) return true;\n  }\n  return false;\n}\nfunction getTypedArray(type, buffer) {\n  return new TYPED_ARRAYS[type](buffer);\n}\nfunction createElementNS(name) {\n  return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\nfunction createCanvasElement() {\n  const canvas = createElementNS(\"canvas\");\n  canvas.style.display = \"block\";\n  return canvas;\n}\nfunction warnOnce(message) {\n  if (message in _cache) return;\n  _cache[message] = true;\n  console.warn(message);\n}\nfunction probeAsync(gl, sync, interval) {\n  return new Promise(function(resolve2, reject) {\n    function probe() {\n      switch (gl.clientWaitSync(sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0)) {\n        case gl.WAIT_FAILED:\n          reject();\n          break;\n        case gl.TIMEOUT_EXPIRED:\n          setTimeout(probe, interval);\n          break;\n        default:\n          resolve2();\n      }\n    }\n    setTimeout(probe, interval);\n  });\n}\nfunction toNormalizedProjectionMatrix(projectionMatrix) {\n  const m = projectionMatrix.elements;\n  m[2] = 0.5 * m[2] + 0.5 * m[3];\n  m[6] = 0.5 * m[6] + 0.5 * m[7];\n  m[10] = 0.5 * m[10] + 0.5 * m[11];\n  m[14] = 0.5 * m[14] + 0.5 * m[15];\n}\nfunction toReversedProjectionMatrix(projectionMatrix) {\n  const m = projectionMatrix.elements;\n  const isPerspectiveMatrix = m[11] === -1;\n  if (isPerspectiveMatrix) {\n    m[10] = -m[10] - 1;\n    m[14] = -m[14];\n  } else {\n    m[10] = -m[10];\n    m[14] = -m[14] + 1;\n  }\n}\nfunction SRGBToLinear(c) {\n  return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction LinearToSRGB(c) {\n  return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n}\nfunction serializeImage(image) {\n  if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n    return ImageUtils.getDataURL(image);\n  } else {\n    if (image.data) {\n      return {\n        data: Array.from(image.data),\n        width: image.width,\n        height: image.height,\n        type: image.data.constructor.name\n      };\n    } else {\n      console.warn(\"THREE.Texture: Unable to serialize Texture.\");\n      return {};\n    }\n  }\n}\nfunction satForAxes(axes, v0, v1, v2, extents) {\n  for (let i2 = 0, j2 = axes.length - 3; i2 <= j2; i2 += 3) {\n    _testAxis.fromArray(axes, i2);\n    const r2 = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n    const p0 = v0.dot(_testAxis);\n    const p1 = v1.dot(_testAxis);\n    const p22 = v2.dot(_testAxis);\n    if (Math.max(-Math.max(p0, p1, p22), Math.min(p0, p1, p22)) > r2) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction hue2rgb(p3, q3, t2) {\n  if (t2 < 0) t2 += 1;\n  if (t2 > 1) t2 -= 1;\n  if (t2 < 1 / 6) return p3 + (q3 - p3) * 6 * t2;\n  if (t2 < 1 / 2) return q3;\n  if (t2 < 2 / 3) return p3 + (q3 - p3) * 6 * (2 / 3 - t2);\n  return p3;\n}\nfunction _generateTables() {\n  const buffer = new ArrayBuffer(4);\n  const floatView = new Float32Array(buffer);\n  const uint32View = new Uint32Array(buffer);\n  const baseTable = new Uint32Array(512);\n  const shiftTable = new Uint32Array(512);\n  for (let i2 = 0; i2 < 256; ++i2) {\n    const e = i2 - 127;\n    if (e < -27) {\n      baseTable[i2] = 0;\n      baseTable[i2 | 256] = 32768;\n      shiftTable[i2] = 24;\n      shiftTable[i2 | 256] = 24;\n    } else if (e < -14) {\n      baseTable[i2] = 1024 >> -e - 14;\n      baseTable[i2 | 256] = 1024 >> -e - 14 | 32768;\n      shiftTable[i2] = -e - 1;\n      shiftTable[i2 | 256] = -e - 1;\n    } else if (e <= 15) {\n      baseTable[i2] = e + 15 << 10;\n      baseTable[i2 | 256] = e + 15 << 10 | 32768;\n      shiftTable[i2] = 13;\n      shiftTable[i2 | 256] = 13;\n    } else if (e < 128) {\n      baseTable[i2] = 31744;\n      baseTable[i2 | 256] = 64512;\n      shiftTable[i2] = 24;\n      shiftTable[i2 | 256] = 24;\n    } else {\n      baseTable[i2] = 31744;\n      baseTable[i2 | 256] = 64512;\n      shiftTable[i2] = 13;\n      shiftTable[i2 | 256] = 13;\n    }\n  }\n  const mantissaTable = new Uint32Array(2048);\n  const exponentTable = new Uint32Array(64);\n  const offsetTable = new Uint32Array(64);\n  for (let i2 = 1; i2 < 1024; ++i2) {\n    let m = i2 << 13;\n    let e = 0;\n    while ((m & 8388608) === 0) {\n      m <<= 1;\n      e -= 8388608;\n    }\n    m &= ~8388608;\n    e += 947912704;\n    mantissaTable[i2] = m | e;\n  }\n  for (let i2 = 1024; i2 < 2048; ++i2) {\n    mantissaTable[i2] = 939524096 + (i2 - 1024 << 13);\n  }\n  for (let i2 = 1; i2 < 31; ++i2) {\n    exponentTable[i2] = i2 << 23;\n  }\n  exponentTable[31] = 1199570944;\n  exponentTable[32] = 2147483648;\n  for (let i2 = 33; i2 < 63; ++i2) {\n    exponentTable[i2] = 2147483648 + (i2 - 32 << 23);\n  }\n  exponentTable[63] = 3347054592;\n  for (let i2 = 1; i2 < 64; ++i2) {\n    if (i2 !== 32) {\n      offsetTable[i2] = 1024;\n    }\n  }\n  return {\n    floatView,\n    uint32View,\n    baseTable,\n    shiftTable,\n    mantissaTable,\n    exponentTable,\n    offsetTable\n  };\n}\nfunction toHalfFloat(val) {\n  if (Math.abs(val) > 65504) console.warn(\"THREE.DataUtils.toHalfFloat(): Value out of range.\");\n  val = clamp(val, -65504, 65504);\n  _tables.floatView[0] = val;\n  const f2 = _tables.uint32View[0];\n  const e = f2 >> 23 & 511;\n  return _tables.baseTable[e] + ((f2 & 8388607) >> _tables.shiftTable[e]);\n}\nfunction fromHalfFloat(val) {\n  const m = val >> 10;\n  _tables.uint32View[0] = _tables.mantissaTable[_tables.offsetTable[m] + (val & 1023)] + _tables.exponentTable[m];\n  return _tables.floatView[0];\n}\nfunction checkIntersection$1(object, material, raycaster, ray, pA, pB, pC, point) {\n  let intersect2;\n  if (material.side === BackSide) {\n    intersect2 = ray.intersectTriangle(pC, pB, pA, true, point);\n  } else {\n    intersect2 = ray.intersectTriangle(pA, pB, pC, material.side === FrontSide, point);\n  }\n  if (intersect2 === null) return null;\n  _intersectionPointWorld.copy(point);\n  _intersectionPointWorld.applyMatrix4(object.matrixWorld);\n  const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld);\n  if (distance < raycaster.near || distance > raycaster.far) return null;\n  return {\n    distance,\n    point: _intersectionPointWorld.clone(),\n    object\n  };\n}\nfunction checkGeometryIntersection(object, material, raycaster, ray, uv, uv1, normal, a, b, c) {\n  object.getVertexPosition(a, _vA$1);\n  object.getVertexPosition(b, _vB$1);\n  object.getVertexPosition(c, _vC$1);\n  const intersection = checkIntersection$1(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n  if (intersection) {\n    const barycoord = new Vector3();\n    Triangle.getBarycoord(_intersectionPoint, _vA$1, _vB$1, _vC$1, barycoord);\n    if (uv) {\n      intersection.uv = Triangle.getInterpolatedAttribute(uv, a, b, c, barycoord, new Vector2());\n    }\n    if (uv1) {\n      intersection.uv1 = Triangle.getInterpolatedAttribute(uv1, a, b, c, barycoord, new Vector2());\n    }\n    if (normal) {\n      intersection.normal = Triangle.getInterpolatedAttribute(normal, a, b, c, barycoord, new Vector3());\n      if (intersection.normal.dot(ray.direction) > 0) {\n        intersection.normal.multiplyScalar(-1);\n      }\n    }\n    const face = {\n      a,\n      b,\n      c,\n      normal: new Vector3(),\n      materialIndex: 0\n    };\n    Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n    intersection.face = face;\n    intersection.barycoord = barycoord;\n  }\n  return intersection;\n}\nfunction cloneUniforms(src) {\n  const dst = {};\n  for (const u3 in src) {\n    dst[u3] = {};\n    for (const p3 in src[u3]) {\n      const property = src[u3][p3];\n      if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) {\n        if (property.isRenderTargetTexture) {\n          console.warn(\"UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().\");\n          dst[u3][p3] = null;\n        } else {\n          dst[u3][p3] = property.clone();\n        }\n      } else if (Array.isArray(property)) {\n        dst[u3][p3] = property.slice();\n      } else {\n        dst[u3][p3] = property;\n      }\n    }\n  }\n  return dst;\n}\nfunction mergeUniforms(uniforms) {\n  const merged = {};\n  for (let u3 = 0; u3 < uniforms.length; u3++) {\n    const tmp2 = cloneUniforms(uniforms[u3]);\n    for (const p3 in tmp2) {\n      merged[p3] = tmp2[p3];\n    }\n  }\n  return merged;\n}\nfunction cloneUniformsGroups(src) {\n  const dst = [];\n  for (let u3 = 0; u3 < src.length; u3++) {\n    dst.push(src[u3].clone());\n  }\n  return dst;\n}\nfunction getUnlitUniformColorSpace(renderer) {\n  const currentRenderTarget = renderer.getRenderTarget();\n  if (currentRenderTarget === null) {\n    return renderer.outputColorSpace;\n  }\n  if (currentRenderTarget.isXRRenderTarget === true) {\n    return currentRenderTarget.texture.colorSpace;\n  }\n  return ColorManagement.workingColorSpace;\n}\nfunction WebGLAnimation() {\n  let context2 = null;\n  let isAnimating = false;\n  let animationLoop = null;\n  let requestId = null;\n  function onAnimationFrame(time, frame) {\n    animationLoop(time, frame);\n    requestId = context2.requestAnimationFrame(onAnimationFrame);\n  }\n  return {\n    start: function() {\n      if (isAnimating === true) return;\n      if (animationLoop === null) return;\n      requestId = context2.requestAnimationFrame(onAnimationFrame);\n      isAnimating = true;\n    },\n    stop: function() {\n      context2.cancelAnimationFrame(requestId);\n      isAnimating = false;\n    },\n    setAnimationLoop: function(callback) {\n      animationLoop = callback;\n    },\n    setContext: function(value) {\n      context2 = value;\n    }\n  };\n}\nfunction WebGLAttributes(gl) {\n  const buffers = /* @__PURE__ */ new WeakMap();\n  function createBuffer(attribute, bufferType) {\n    const array = attribute.array;\n    const usage = attribute.usage;\n    const size = array.byteLength;\n    const buffer = gl.createBuffer();\n    gl.bindBuffer(bufferType, buffer);\n    gl.bufferData(bufferType, array, usage);\n    attribute.onUploadCallback();\n    let type;\n    if (array instanceof Float32Array) {\n      type = gl.FLOAT;\n    } else if (array instanceof Uint16Array) {\n      if (attribute.isFloat16BufferAttribute) {\n        type = gl.HALF_FLOAT;\n      } else {\n        type = gl.UNSIGNED_SHORT;\n      }\n    } else if (array instanceof Int16Array) {\n      type = gl.SHORT;\n    } else if (array instanceof Uint32Array) {\n      type = gl.UNSIGNED_INT;\n    } else if (array instanceof Int32Array) {\n      type = gl.INT;\n    } else if (array instanceof Int8Array) {\n      type = gl.BYTE;\n    } else if (array instanceof Uint8Array) {\n      type = gl.UNSIGNED_BYTE;\n    } else if (array instanceof Uint8ClampedArray) {\n      type = gl.UNSIGNED_BYTE;\n    } else {\n      throw new Error(\"THREE.WebGLAttributes: Unsupported buffer data format: \" + array);\n    }\n    return {\n      buffer,\n      type,\n      bytesPerElement: array.BYTES_PER_ELEMENT,\n      version: attribute.version,\n      size\n    };\n  }\n  function updateBuffer(buffer, attribute, bufferType) {\n    const array = attribute.array;\n    const updateRanges = attribute.updateRanges;\n    gl.bindBuffer(bufferType, buffer);\n    if (updateRanges.length === 0) {\n      gl.bufferSubData(bufferType, 0, array);\n    } else {\n      updateRanges.sort((a, b) => a.start - b.start);\n      let mergeIndex = 0;\n      for (let i2 = 1; i2 < updateRanges.length; i2++) {\n        const previousRange = updateRanges[mergeIndex];\n        const range = updateRanges[i2];\n        if (range.start <= previousRange.start + previousRange.count + 1) {\n          previousRange.count = Math.max(\n            previousRange.count,\n            range.start + range.count - previousRange.start\n          );\n        } else {\n          ++mergeIndex;\n          updateRanges[mergeIndex] = range;\n        }\n      }\n      updateRanges.length = mergeIndex + 1;\n      for (let i2 = 0, l2 = updateRanges.length; i2 < l2; i2++) {\n        const range = updateRanges[i2];\n        gl.bufferSubData(\n          bufferType,\n          range.start * array.BYTES_PER_ELEMENT,\n          array,\n          range.start,\n          range.count\n        );\n      }\n      attribute.clearUpdateRanges();\n    }\n    attribute.onUploadCallback();\n  }\n  function get(attribute) {\n    if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n    return buffers.get(attribute);\n  }\n  function remove(attribute) {\n    if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data) {\n      gl.deleteBuffer(data.buffer);\n      buffers.delete(attribute);\n    }\n  }\n  function update(attribute, bufferType) {\n    if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n    if (attribute.isGLBufferAttribute) {\n      const cached = buffers.get(attribute);\n      if (!cached || cached.version < attribute.version) {\n        buffers.set(attribute, {\n          buffer: attribute.buffer,\n          type: attribute.type,\n          bytesPerElement: attribute.elementSize,\n          version: attribute.version\n        });\n      }\n      return;\n    }\n    const data = buffers.get(attribute);\n    if (data === void 0) {\n      buffers.set(attribute, createBuffer(attribute, bufferType));\n    } else if (data.version < attribute.version) {\n      if (data.size !== attribute.array.byteLength) {\n        throw new Error(\"THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.\");\n      }\n      updateBuffer(data.buffer, attribute, bufferType);\n      data.version = attribute.version;\n    }\n  }\n  return {\n    get,\n    remove,\n    update\n  };\n}\nfunction WebGLBackground(renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha) {\n  const clearColor = new Color(0);\n  let clearAlpha = alpha === true ? 0 : 1;\n  let planeMesh;\n  let boxMesh;\n  let currentBackground = null;\n  let currentBackgroundVersion = 0;\n  let currentTonemapping = null;\n  function getBackground(scene) {\n    let background = scene.isScene === true ? scene.background : null;\n    if (background && background.isTexture) {\n      const usePMREM = scene.backgroundBlurriness > 0;\n      background = (usePMREM ? cubeuvmaps : cubemaps).get(background);\n    }\n    return background;\n  }\n  function render(scene) {\n    let forceClear = false;\n    const background = getBackground(scene);\n    if (background === null) {\n      setClear(clearColor, clearAlpha);\n    } else if (background && background.isColor) {\n      setClear(background, 1);\n      forceClear = true;\n    }\n    const environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n    if (environmentBlendMode === \"additive\") {\n      state.buffers.color.setClear(0, 0, 0, 1, premultipliedAlpha);\n    } else if (environmentBlendMode === \"alpha-blend\") {\n      state.buffers.color.setClear(0, 0, 0, 0, premultipliedAlpha);\n    }\n    if (renderer.autoClear || forceClear) {\n      state.buffers.depth.setTest(true);\n      state.buffers.depth.setMask(true);\n      state.buffers.color.setMask(true);\n      renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n    }\n  }\n  function addToRenderList(renderList, scene) {\n    const background = getBackground(scene);\n    if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n      if (boxMesh === void 0) {\n        boxMesh = new Mesh(\n          new BoxGeometry(1, 1, 1),\n          new ShaderMaterial({\n            name: \"BackgroundCubeMaterial\",\n            uniforms: cloneUniforms(ShaderLib.backgroundCube.uniforms),\n            vertexShader: ShaderLib.backgroundCube.vertexShader,\n            fragmentShader: ShaderLib.backgroundCube.fragmentShader,\n            side: BackSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        boxMesh.geometry.deleteAttribute(\"normal\");\n        boxMesh.geometry.deleteAttribute(\"uv\");\n        boxMesh.onBeforeRender = function(renderer2, scene2, camera) {\n          this.matrixWorld.copyPosition(camera.matrixWorld);\n        };\n        Object.defineProperty(boxMesh.material, \"envMap\", {\n          get: function() {\n            return this.uniforms.envMap.value;\n          }\n        });\n        objects.update(boxMesh);\n      }\n      _e1$1.copy(scene.backgroundRotation);\n      _e1$1.x *= -1;\n      _e1$1.y *= -1;\n      _e1$1.z *= -1;\n      if (background.isCubeTexture && background.isRenderTargetTexture === false) {\n        _e1$1.y *= -1;\n        _e1$1.z *= -1;\n      }\n      boxMesh.material.uniforms.envMap.value = background;\n      boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n      boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n      boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n      boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4(_m1$1.makeRotationFromEuler(_e1$1));\n      boxMesh.material.toneMapped = ColorManagement.getTransfer(background.colorSpace) !== SRGBTransfer;\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        boxMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      boxMesh.layers.enableAll();\n      renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n    } else if (background && background.isTexture) {\n      if (planeMesh === void 0) {\n        planeMesh = new Mesh(\n          new PlaneGeometry(2, 2),\n          new ShaderMaterial({\n            name: \"BackgroundMaterial\",\n            uniforms: cloneUniforms(ShaderLib.background.uniforms),\n            vertexShader: ShaderLib.background.vertexShader,\n            fragmentShader: ShaderLib.background.fragmentShader,\n            side: FrontSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        planeMesh.geometry.deleteAttribute(\"normal\");\n        Object.defineProperty(planeMesh.material, \"map\", {\n          get: function() {\n            return this.uniforms.t2D.value;\n          }\n        });\n        objects.update(planeMesh);\n      }\n      planeMesh.material.uniforms.t2D.value = background;\n      planeMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n      planeMesh.material.toneMapped = ColorManagement.getTransfer(background.colorSpace) !== SRGBTransfer;\n      if (background.matrixAutoUpdate === true) {\n        background.updateMatrix();\n      }\n      planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        planeMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      planeMesh.layers.enableAll();\n      renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n    }\n  }\n  function setClear(color, alpha2) {\n    color.getRGB(_rgb, getUnlitUniformColorSpace(renderer));\n    state.buffers.color.setClear(_rgb.r, _rgb.g, _rgb.b, alpha2, premultipliedAlpha);\n  }\n  return {\n    getClearColor: function() {\n      return clearColor;\n    },\n    setClearColor: function(color, alpha2 = 1) {\n      clearColor.set(color);\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    getClearAlpha: function() {\n      return clearAlpha;\n    },\n    setClearAlpha: function(alpha2) {\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    render,\n    addToRenderList\n  };\n}\nfunction WebGLBindingStates(gl, attributes) {\n  const maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n  const bindingStates = {};\n  const defaultState = createBindingState(null);\n  let currentState = defaultState;\n  let forceUpdate = false;\n  function setup(object, material, program, geometry, index) {\n    let updateBuffers = false;\n    const state = getBindingState(geometry, program, material);\n    if (currentState !== state) {\n      currentState = state;\n      bindVertexArrayObject(currentState.object);\n    }\n    updateBuffers = needsUpdate(object, geometry, program, index);\n    if (updateBuffers) saveCache(object, geometry, program, index);\n    if (index !== null) {\n      attributes.update(index, gl.ELEMENT_ARRAY_BUFFER);\n    }\n    if (updateBuffers || forceUpdate) {\n      forceUpdate = false;\n      setupVertexAttributes(object, material, program, geometry);\n      if (index !== null) {\n        gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, attributes.get(index).buffer);\n      }\n    }\n  }\n  function createVertexArrayObject() {\n    return gl.createVertexArray();\n  }\n  function bindVertexArrayObject(vao) {\n    return gl.bindVertexArray(vao);\n  }\n  function deleteVertexArrayObject(vao) {\n    return gl.deleteVertexArray(vao);\n  }\n  function getBindingState(geometry, program, material) {\n    const wireframe = material.wireframe === true;\n    let programMap = bindingStates[geometry.id];\n    if (programMap === void 0) {\n      programMap = {};\n      bindingStates[geometry.id] = programMap;\n    }\n    let stateMap = programMap[program.id];\n    if (stateMap === void 0) {\n      stateMap = {};\n      programMap[program.id] = stateMap;\n    }\n    let state = stateMap[wireframe];\n    if (state === void 0) {\n      state = createBindingState(createVertexArrayObject());\n      stateMap[wireframe] = state;\n    }\n    return state;\n  }\n  function createBindingState(vao) {\n    const newAttributes = [];\n    const enabledAttributes = [];\n    const attributeDivisors = [];\n    for (let i2 = 0; i2 < maxVertexAttributes; i2++) {\n      newAttributes[i2] = 0;\n      enabledAttributes[i2] = 0;\n      attributeDivisors[i2] = 0;\n    }\n    return {\n      // for backward compatibility on non-VAO support browser\n      geometry: null,\n      program: null,\n      wireframe: false,\n      newAttributes,\n      enabledAttributes,\n      attributeDivisors,\n      object: vao,\n      attributes: {},\n      index: null\n    };\n  }\n  function needsUpdate(object, geometry, program, index) {\n    const cachedAttributes = currentState.attributes;\n    const geometryAttributes = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        const cachedAttribute = cachedAttributes[name];\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix) geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor) geometryAttribute = object.instanceColor;\n        }\n        if (cachedAttribute === void 0) return true;\n        if (cachedAttribute.attribute !== geometryAttribute) return true;\n        if (geometryAttribute && cachedAttribute.data !== geometryAttribute.data) return true;\n        attributesNum++;\n      }\n    }\n    if (currentState.attributesNum !== attributesNum) return true;\n    if (currentState.index !== index) return true;\n    return false;\n  }\n  function saveCache(object, geometry, program, index) {\n    const cache = {};\n    const attributes2 = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let attribute = attributes2[name];\n        if (attribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix) attribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor) attribute = object.instanceColor;\n        }\n        const data = {};\n        data.attribute = attribute;\n        if (attribute && attribute.data) {\n          data.data = attribute.data;\n        }\n        cache[name] = data;\n        attributesNum++;\n      }\n    }\n    currentState.attributes = cache;\n    currentState.attributesNum = attributesNum;\n    currentState.index = index;\n  }\n  function initAttributes() {\n    const newAttributes = currentState.newAttributes;\n    for (let i2 = 0, il = newAttributes.length; i2 < il; i2++) {\n      newAttributes[i2] = 0;\n    }\n  }\n  function enableAttribute(attribute) {\n    enableAttributeAndDivisor(attribute, 0);\n  }\n  function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    const attributeDivisors = currentState.attributeDivisors;\n    newAttributes[attribute] = 1;\n    if (enabledAttributes[attribute] === 0) {\n      gl.enableVertexAttribArray(attribute);\n      enabledAttributes[attribute] = 1;\n    }\n    if (attributeDivisors[attribute] !== meshPerAttribute) {\n      gl.vertexAttribDivisor(attribute, meshPerAttribute);\n      attributeDivisors[attribute] = meshPerAttribute;\n    }\n  }\n  function disableUnusedAttributes() {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    for (let i2 = 0, il = enabledAttributes.length; i2 < il; i2++) {\n      if (enabledAttributes[i2] !== newAttributes[i2]) {\n        gl.disableVertexAttribArray(i2);\n        enabledAttributes[i2] = 0;\n      }\n    }\n  }\n  function vertexAttribPointer(index, size, type, normalized, stride, offset, integer) {\n    if (integer === true) {\n      gl.vertexAttribIPointer(index, size, type, stride, offset);\n    } else {\n      gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n    }\n  }\n  function setupVertexAttributes(object, material, program, geometry) {\n    initAttributes();\n    const geometryAttributes = geometry.attributes;\n    const programAttributes = program.getAttributes();\n    const materialDefaultAttributeValues = material.defaultAttributeValues;\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix) geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor) geometryAttribute = object.instanceColor;\n        }\n        if (geometryAttribute !== void 0) {\n          const normalized = geometryAttribute.normalized;\n          const size = geometryAttribute.itemSize;\n          const attribute = attributes.get(geometryAttribute);\n          if (attribute === void 0) continue;\n          const buffer = attribute.buffer;\n          const type = attribute.type;\n          const bytesPerElement = attribute.bytesPerElement;\n          const integer = type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType;\n          if (geometryAttribute.isInterleavedBufferAttribute) {\n            const data = geometryAttribute.data;\n            const stride = data.stride;\n            const offset = geometryAttribute.offset;\n            if (data.isInstancedInterleavedBuffer) {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttributeAndDivisor(programAttribute.location + i2, data.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = data.meshPerAttribute * data.count;\n              }\n            } else {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttribute(programAttribute.location + i2);\n              }\n            }\n            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n            for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n              vertexAttribPointer(\n                programAttribute.location + i2,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                stride * bytesPerElement,\n                (offset + size / programAttribute.locationSize * i2) * bytesPerElement,\n                integer\n              );\n            }\n          } else {\n            if (geometryAttribute.isInstancedBufferAttribute) {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttributeAndDivisor(programAttribute.location + i2, geometryAttribute.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n              }\n            } else {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttribute(programAttribute.location + i2);\n              }\n            }\n            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n            for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n              vertexAttribPointer(\n                programAttribute.location + i2,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                size * bytesPerElement,\n                size / programAttribute.locationSize * i2 * bytesPerElement,\n                integer\n              );\n            }\n          }\n        } else if (materialDefaultAttributeValues !== void 0) {\n          const value = materialDefaultAttributeValues[name];\n          if (value !== void 0) {\n            switch (value.length) {\n              case 2:\n                gl.vertexAttrib2fv(programAttribute.location, value);\n                break;\n              case 3:\n                gl.vertexAttrib3fv(programAttribute.location, value);\n                break;\n              case 4:\n                gl.vertexAttrib4fv(programAttribute.location, value);\n                break;\n              default:\n                gl.vertexAttrib1fv(programAttribute.location, value);\n            }\n          }\n        }\n      }\n    }\n    disableUnusedAttributes();\n  }\n  function dispose2() {\n    reset();\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      for (const programId in programMap) {\n        const stateMap = programMap[programId];\n        for (const wireframe in stateMap) {\n          deleteVertexArrayObject(stateMap[wireframe].object);\n          delete stateMap[wireframe];\n        }\n        delete programMap[programId];\n      }\n      delete bindingStates[geometryId];\n    }\n  }\n  function releaseStatesOfGeometry(geometry) {\n    if (bindingStates[geometry.id] === void 0) return;\n    const programMap = bindingStates[geometry.id];\n    for (const programId in programMap) {\n      const stateMap = programMap[programId];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[programId];\n    }\n    delete bindingStates[geometry.id];\n  }\n  function releaseStatesOfProgram(program) {\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      if (programMap[program.id] === void 0) continue;\n      const stateMap = programMap[program.id];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[program.id];\n    }\n  }\n  function reset() {\n    resetDefaultState();\n    forceUpdate = true;\n    if (currentState === defaultState) return;\n    currentState = defaultState;\n    bindVertexArrayObject(currentState.object);\n  }\n  function resetDefaultState() {\n    defaultState.geometry = null;\n    defaultState.program = null;\n    defaultState.wireframe = false;\n  }\n  return {\n    setup,\n    reset,\n    resetDefaultState,\n    dispose: dispose2,\n    releaseStatesOfGeometry,\n    releaseStatesOfProgram,\n    initAttributes,\n    enableAttribute,\n    disableUnusedAttributes\n  };\n}\nfunction WebGLBufferRenderer(gl, extensions, info) {\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  function render(start, count) {\n    gl.drawArrays(mode, start, count);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0) return;\n    gl.drawArraysInstanced(mode, start, count, primcount);\n    info.update(count, mode, primcount);\n  }\n  function renderMultiDraw(starts, counts, drawCount) {\n    if (drawCount === 0) return;\n    const extension = extensions.get(\"WEBGL_multi_draw\");\n    extension.multiDrawArraysWEBGL(mode, starts, 0, counts, 0, drawCount);\n    let elementCount = 0;\n    for (let i2 = 0; i2 < drawCount; i2++) {\n      elementCount += counts[i2];\n    }\n    info.update(elementCount, mode, 1);\n  }\n  function renderMultiDrawInstances(starts, counts, drawCount, primcount) {\n    if (drawCount === 0) return;\n    const extension = extensions.get(\"WEBGL_multi_draw\");\n    if (extension === null) {\n      for (let i2 = 0; i2 < starts.length; i2++) {\n        renderInstances(starts[i2], counts[i2], primcount[i2]);\n      }\n    } else {\n      extension.multiDrawArraysInstancedWEBGL(mode, starts, 0, counts, 0, primcount, 0, drawCount);\n      let elementCount = 0;\n      for (let i2 = 0; i2 < drawCount; i2++) {\n        elementCount += counts[i2];\n      }\n      for (let i2 = 0; i2 < primcount.length; i2++) {\n        info.update(elementCount, mode, primcount[i2]);\n      }\n    }\n  }\n  this.setMode = setMode;\n  this.render = render;\n  this.renderInstances = renderInstances;\n  this.renderMultiDraw = renderMultiDraw;\n  this.renderMultiDrawInstances = renderMultiDrawInstances;\n}\nfunction WebGLCapabilities(gl, extensions, parameters, utils) {\n  let maxAnisotropy;\n  function getMaxAnisotropy() {\n    if (maxAnisotropy !== void 0) return maxAnisotropy;\n    if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n      maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n    } else {\n      maxAnisotropy = 0;\n    }\n    return maxAnisotropy;\n  }\n  function textureFormatReadable(textureFormat) {\n    if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== gl.getParameter(gl.IMPLEMENTATION_COLOR_READ_FORMAT)) {\n      return false;\n    }\n    return true;\n  }\n  function textureTypeReadable(textureType) {\n    const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has(\"EXT_color_buffer_half_float\") || extensions.has(\"EXT_color_buffer_float\"));\n    if (textureType !== UnsignedByteType && utils.convert(textureType) !== gl.getParameter(gl.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513)\n    textureType !== FloatType && !halfFloatSupportedByExt) {\n      return false;\n    }\n    return true;\n  }\n  function getMaxPrecision(precision2) {\n    if (precision2 === \"highp\") {\n      if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) {\n        return \"highp\";\n      }\n      precision2 = \"mediump\";\n    }\n    if (precision2 === \"mediump\") {\n      if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) {\n        return \"mediump\";\n      }\n    }\n    return \"lowp\";\n  }\n  let precision = parameters.precision !== void 0 ? parameters.precision : \"highp\";\n  const maxPrecision = getMaxPrecision(precision);\n  if (maxPrecision !== precision) {\n    console.warn(\"THREE.WebGLRenderer:\", precision, \"not supported, using\", maxPrecision, \"instead.\");\n    precision = maxPrecision;\n  }\n  const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n  const reverseDepthBuffer = parameters.reverseDepthBuffer === true && extensions.has(\"EXT_clip_control\");\n  if (reverseDepthBuffer === true) {\n    const ext = extensions.get(\"EXT_clip_control\");\n    ext.clipControlEXT(ext.LOWER_LEFT_EXT, ext.ZERO_TO_ONE_EXT);\n  }\n  const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n  const maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n  const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n  const maxCubemapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n  const maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n  const maxVertexUniforms = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n  const maxVaryings = gl.getParameter(gl.MAX_VARYING_VECTORS);\n  const maxFragmentUniforms = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n  const vertexTextures = maxVertexTextures > 0;\n  const maxSamples = gl.getParameter(gl.MAX_SAMPLES);\n  return {\n    isWebGL2: true,\n    // keeping this for backwards compatibility\n    getMaxAnisotropy,\n    getMaxPrecision,\n    textureFormatReadable,\n    textureTypeReadable,\n    precision,\n    logarithmicDepthBuffer,\n    reverseDepthBuffer,\n    maxTextures,\n    maxVertexTextures,\n    maxTextureSize,\n    maxCubemapSize,\n    maxAttributes,\n    maxVertexUniforms,\n    maxVaryings,\n    maxFragmentUniforms,\n    vertexTextures,\n    maxSamples\n  };\n}\nfunction WebGLClipping(properties) {\n  const scope = this;\n  let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false;\n  const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = { value: null, needsUpdate: false };\n  this.uniform = uniform;\n  this.numPlanes = 0;\n  this.numIntersection = 0;\n  this.init = function(planes, enableLocalClipping) {\n    const enabled = planes.length !== 0 || enableLocalClipping || // enable state of previous frame - the clipping code has to\n    // run another frame in order to reset the state:\n    numGlobalPlanes !== 0 || localClippingEnabled;\n    localClippingEnabled = enableLocalClipping;\n    numGlobalPlanes = planes.length;\n    return enabled;\n  };\n  this.beginShadows = function() {\n    renderingShadows = true;\n    projectPlanes(null);\n  };\n  this.endShadows = function() {\n    renderingShadows = false;\n  };\n  this.setGlobalState = function(planes, camera) {\n    globalState = projectPlanes(planes, camera, 0);\n  };\n  this.setState = function(material, camera, useCache) {\n    const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows;\n    const materialProperties = properties.get(material);\n    if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n      if (renderingShadows) {\n        projectPlanes(null);\n      } else {\n        resetGlobalState();\n      }\n    } else {\n      const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4;\n      let dstArray = materialProperties.clippingState || null;\n      uniform.value = dstArray;\n      dstArray = projectPlanes(planes, camera, lGlobal, useCache);\n      for (let i2 = 0; i2 !== lGlobal; ++i2) {\n        dstArray[i2] = globalState[i2];\n      }\n      materialProperties.clippingState = dstArray;\n      this.numIntersection = clipIntersection ? this.numPlanes : 0;\n      this.numPlanes += nGlobal;\n    }\n  };\n  function resetGlobalState() {\n    if (uniform.value !== globalState) {\n      uniform.value = globalState;\n      uniform.needsUpdate = numGlobalPlanes > 0;\n    }\n    scope.numPlanes = numGlobalPlanes;\n    scope.numIntersection = 0;\n  }\n  function projectPlanes(planes, camera, dstOffset, skipTransform) {\n    const nPlanes = planes !== null ? planes.length : 0;\n    let dstArray = null;\n    if (nPlanes !== 0) {\n      dstArray = uniform.value;\n      if (skipTransform !== true || dstArray === null) {\n        const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse;\n        viewNormalMatrix.getNormalMatrix(viewMatrix);\n        if (dstArray === null || dstArray.length < flatSize) {\n          dstArray = new Float32Array(flatSize);\n        }\n        for (let i2 = 0, i4 = dstOffset; i2 !== nPlanes; ++i2, i4 += 4) {\n          plane.copy(planes[i2]).applyMatrix4(viewMatrix, viewNormalMatrix);\n          plane.normal.toArray(dstArray, i4);\n          dstArray[i4 + 3] = plane.constant;\n        }\n      }\n      uniform.value = dstArray;\n      uniform.needsUpdate = true;\n    }\n    scope.numPlanes = nPlanes;\n    scope.numIntersection = 0;\n    return dstArray;\n  }\n}\nfunction WebGLCubeMaps(renderer) {\n  let cubemaps = /* @__PURE__ */ new WeakMap();\n  function mapTextureMapping(texture, mapping) {\n    if (mapping === EquirectangularReflectionMapping) {\n      texture.mapping = CubeReflectionMapping;\n    } else if (mapping === EquirectangularRefractionMapping) {\n      texture.mapping = CubeRefractionMapping;\n    }\n    return texture;\n  }\n  function get(texture) {\n    if (texture && texture.isTexture) {\n      const mapping = texture.mapping;\n      if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n        if (cubemaps.has(texture)) {\n          const cubemap = cubemaps.get(texture).texture;\n          return mapTextureMapping(cubemap, texture.mapping);\n        } else {\n          const image = texture.image;\n          if (image && image.height > 0) {\n            const renderTarget = new WebGLCubeRenderTarget(image.height);\n            renderTarget.fromEquirectangularTexture(renderer, texture);\n            cubemaps.set(texture, renderTarget);\n            texture.addEventListener(\"dispose\", onTextureDispose);\n            return mapTextureMapping(renderTarget.texture, texture.mapping);\n          } else {\n            return null;\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemap = cubemaps.get(texture);\n    if (cubemap !== void 0) {\n      cubemaps.delete(texture);\n      cubemap.dispose();\n    }\n  }\n  function dispose2() {\n    cubemaps = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nfunction _createPlanes(lodMax) {\n  const lodPlanes = [];\n  const sizeLods = [];\n  const sigmas = [];\n  let lod = lodMax;\n  const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n  for (let i2 = 0; i2 < totalLods; i2++) {\n    const sizeLod = Math.pow(2, lod);\n    sizeLods.push(sizeLod);\n    let sigma = 1 / sizeLod;\n    if (i2 > lodMax - LOD_MIN) {\n      sigma = EXTRA_LOD_SIGMA[i2 - lodMax + LOD_MIN - 1];\n    } else if (i2 === 0) {\n      sigma = 0;\n    }\n    sigmas.push(sigma);\n    const texelSize = 1 / (sizeLod - 2);\n    const min = -texelSize;\n    const max = 1 + texelSize;\n    const uv1 = [min, min, max, min, max, max, min, min, max, max, min, max];\n    const cubeFaces = 6;\n    const vertices = 6;\n    const positionSize = 3;\n    const uvSize = 2;\n    const faceIndexSize = 1;\n    const position = new Float32Array(positionSize * vertices * cubeFaces);\n    const uv = new Float32Array(uvSize * vertices * cubeFaces);\n    const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n    for (let face = 0; face < cubeFaces; face++) {\n      const x = face % 3 * 2 / 3 - 1;\n      const y2 = face > 2 ? 0 : -1;\n      const coordinates = [\n        x,\n        y2,\n        0,\n        x + 2 / 3,\n        y2,\n        0,\n        x + 2 / 3,\n        y2 + 1,\n        0,\n        x,\n        y2,\n        0,\n        x + 2 / 3,\n        y2 + 1,\n        0,\n        x,\n        y2 + 1,\n        0\n      ];\n      position.set(coordinates, positionSize * vertices * face);\n      uv.set(uv1, uvSize * vertices * face);\n      const fill2 = [face, face, face, face, face, face];\n      faceIndex.set(fill2, faceIndexSize * vertices * face);\n    }\n    const planes = new BufferGeometry();\n    planes.setAttribute(\"position\", new BufferAttribute(position, positionSize));\n    planes.setAttribute(\"uv\", new BufferAttribute(uv, uvSize));\n    planes.setAttribute(\"faceIndex\", new BufferAttribute(faceIndex, faceIndexSize));\n    lodPlanes.push(planes);\n    if (lod > LOD_MIN) {\n      lod--;\n    }\n  }\n  return { lodPlanes, sizeLods, sigmas };\n}\nfunction _createRenderTarget(width, height, params) {\n  const cubeUVRenderTarget = new WebGLRenderTarget(width, height, params);\n  cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n  cubeUVRenderTarget.texture.name = \"PMREM.cubeUv\";\n  cubeUVRenderTarget.scissorTest = true;\n  return cubeUVRenderTarget;\n}\nfunction _setViewport(target2, x, y2, width, height) {\n  target2.viewport.set(x, y2, width, height);\n  target2.scissor.set(x, y2, width, height);\n}\nfunction _getBlurShader(lodMax, width, height) {\n  const weights = new Float32Array(MAX_SAMPLES);\n  const poleAxis = new Vector3(0, 1, 0);\n  const shaderMaterial = new ShaderMaterial({\n    name: \"SphericalGaussianBlur\",\n    defines: {\n      \"n\": MAX_SAMPLES,\n      \"CUBEUV_TEXEL_WIDTH\": 1 / width,\n      \"CUBEUV_TEXEL_HEIGHT\": 1 / height,\n      \"CUBEUV_MAX_MIP\": `${lodMax}.0`\n    },\n    uniforms: {\n      \"envMap\": { value: null },\n      \"samples\": { value: 1 },\n      \"weights\": { value: weights },\n      \"latitudinal\": { value: false },\n      \"dTheta\": { value: 0 },\n      \"mipInt\": { value: 0 },\n      \"poleAxis\": { value: poleAxis }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n  return shaderMaterial;\n}\nfunction _getEquirectMaterial() {\n  return new ShaderMaterial({\n    name: \"EquirectangularToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCubemapMaterial() {\n  return new ShaderMaterial({\n    name: \"CubemapToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null },\n      \"flipEnvMap\": { value: -1 }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCommonVertexShader() {\n  return (\n    /* glsl */\n    `\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`\n  );\n}\nfunction WebGLCubeUVMaps(renderer) {\n  let cubeUVmaps = /* @__PURE__ */ new WeakMap();\n  let pmremGenerator = null;\n  function get(texture) {\n    if (texture && texture.isTexture) {\n      const mapping = texture.mapping;\n      const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n      const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n      if (isEquirectMap || isCubeMap) {\n        let renderTarget = cubeUVmaps.get(texture);\n        const currentPMREMVersion = renderTarget !== void 0 ? renderTarget.texture.pmremVersion : 0;\n        if (texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion) {\n          if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer);\n          renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture, renderTarget) : pmremGenerator.fromCubemap(texture, renderTarget);\n          renderTarget.texture.pmremVersion = texture.pmremVersion;\n          cubeUVmaps.set(texture, renderTarget);\n          return renderTarget.texture;\n        } else {\n          if (renderTarget !== void 0) {\n            return renderTarget.texture;\n          } else {\n            const image = texture.image;\n            if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n              if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer);\n              renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n              renderTarget.texture.pmremVersion = texture.pmremVersion;\n              cubeUVmaps.set(texture, renderTarget);\n              texture.addEventListener(\"dispose\", onTextureDispose);\n              return renderTarget.texture;\n            } else {\n              return null;\n            }\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function isCubeTextureComplete(image) {\n    let count = 0;\n    const length = 6;\n    for (let i2 = 0; i2 < length; i2++) {\n      if (image[i2] !== void 0) count++;\n    }\n    return count === length;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemapUV = cubeUVmaps.get(texture);\n    if (cubemapUV !== void 0) {\n      cubeUVmaps.delete(texture);\n      cubemapUV.dispose();\n    }\n  }\n  function dispose2() {\n    cubeUVmaps = /* @__PURE__ */ new WeakMap();\n    if (pmremGenerator !== null) {\n      pmremGenerator.dispose();\n      pmremGenerator = null;\n    }\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nfunction WebGLExtensions(gl) {\n  const extensions = {};\n  function getExtension(name) {\n    if (extensions[name] !== void 0) {\n      return extensions[name];\n    }\n    let extension;\n    switch (name) {\n      case \"WEBGL_depth_texture\":\n        extension = gl.getExtension(\"WEBGL_depth_texture\") || gl.getExtension(\"MOZ_WEBGL_depth_texture\") || gl.getExtension(\"WEBKIT_WEBGL_depth_texture\");\n        break;\n      case \"EXT_texture_filter_anisotropic\":\n        extension = gl.getExtension(\"EXT_texture_filter_anisotropic\") || gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") || gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n        break;\n      case \"WEBGL_compressed_texture_s3tc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n        break;\n      case \"WEBGL_compressed_texture_pvrtc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");\n        break;\n      default:\n        extension = gl.getExtension(name);\n    }\n    extensions[name] = extension;\n    return extension;\n  }\n  return {\n    has: function(name) {\n      return getExtension(name) !== null;\n    },\n    init: function() {\n      getExtension(\"EXT_color_buffer_float\");\n      getExtension(\"WEBGL_clip_cull_distance\");\n      getExtension(\"OES_texture_float_linear\");\n      getExtension(\"EXT_color_buffer_half_float\");\n      getExtension(\"WEBGL_multisampled_render_to_texture\");\n      getExtension(\"WEBGL_render_shared_exponent\");\n    },\n    get: function(name) {\n      const extension = getExtension(name);\n      if (extension === null) {\n        warnOnce(\"THREE.WebGLRenderer: \" + name + \" extension not supported.\");\n      }\n      return extension;\n    }\n  };\n}\nfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n  const geometries = {};\n  const wireframeAttributes = /* @__PURE__ */ new WeakMap();\n  function onGeometryDispose(event) {\n    const geometry = event.target;\n    if (geometry.index !== null) {\n      attributes.remove(geometry.index);\n    }\n    for (const name in geometry.attributes) {\n      attributes.remove(geometry.attributes[name]);\n    }\n    for (const name in geometry.morphAttributes) {\n      const array = geometry.morphAttributes[name];\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n        attributes.remove(array[i2]);\n      }\n    }\n    geometry.removeEventListener(\"dispose\", onGeometryDispose);\n    delete geometries[geometry.id];\n    const attribute = wireframeAttributes.get(geometry);\n    if (attribute) {\n      attributes.remove(attribute);\n      wireframeAttributes.delete(geometry);\n    }\n    bindingStates.releaseStatesOfGeometry(geometry);\n    if (geometry.isInstancedBufferGeometry === true) {\n      delete geometry._maxInstanceCount;\n    }\n    info.memory.geometries--;\n  }\n  function get(object, geometry) {\n    if (geometries[geometry.id] === true) return geometry;\n    geometry.addEventListener(\"dispose\", onGeometryDispose);\n    geometries[geometry.id] = true;\n    info.memory.geometries++;\n    return geometry;\n  }\n  function update(geometry) {\n    const geometryAttributes = geometry.attributes;\n    for (const name in geometryAttributes) {\n      attributes.update(geometryAttributes[name], gl.ARRAY_BUFFER);\n    }\n    const morphAttributes = geometry.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = morphAttributes[name];\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n        attributes.update(array[i2], gl.ARRAY_BUFFER);\n      }\n    }\n  }\n  function updateWireframeAttribute(geometry) {\n    const indices = [];\n    const geometryIndex = geometry.index;\n    const geometryPosition = geometry.attributes.position;\n    let version3 = 0;\n    if (geometryIndex !== null) {\n      const array = geometryIndex.array;\n      version3 = geometryIndex.version;\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2 += 3) {\n        const a = array[i2 + 0];\n        const b = array[i2 + 1];\n        const c = array[i2 + 2];\n        indices.push(a, b, b, c, c, a);\n      }\n    } else if (geometryPosition !== void 0) {\n      const array = geometryPosition.array;\n      version3 = geometryPosition.version;\n      for (let i2 = 0, l2 = array.length / 3 - 1; i2 < l2; i2 += 3) {\n        const a = i2 + 0;\n        const b = i2 + 1;\n        const c = i2 + 2;\n        indices.push(a, b, b, c, c, a);\n      }\n    } else {\n      return;\n    }\n    const attribute = new (arrayNeedsUint32(indices) ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n    attribute.version = version3;\n    const previousAttribute = wireframeAttributes.get(geometry);\n    if (previousAttribute) attributes.remove(previousAttribute);\n    wireframeAttributes.set(geometry, attribute);\n  }\n  function getWireframeAttribute(geometry) {\n    const currentAttribute = wireframeAttributes.get(geometry);\n    if (currentAttribute) {\n      const geometryIndex = geometry.index;\n      if (geometryIndex !== null) {\n        if (currentAttribute.version < geometryIndex.version) {\n          updateWireframeAttribute(geometry);\n        }\n      }\n    } else {\n      updateWireframeAttribute(geometry);\n    }\n    return wireframeAttributes.get(geometry);\n  }\n  return {\n    get,\n    update,\n    getWireframeAttribute\n  };\n}\nfunction WebGLIndexedBufferRenderer(gl, extensions, info) {\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  let type, bytesPerElement;\n  function setIndex(value) {\n    type = value.type;\n    bytesPerElement = value.bytesPerElement;\n  }\n  function render(start, count) {\n    gl.drawElements(mode, count, type, start * bytesPerElement);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0) return;\n    gl.drawElementsInstanced(mode, count, type, start * bytesPerElement, primcount);\n    info.update(count, mode, primcount);\n  }\n  function renderMultiDraw(starts, counts, drawCount) {\n    if (drawCount === 0) return;\n    const extension = extensions.get(\"WEBGL_multi_draw\");\n    extension.multiDrawElementsWEBGL(mode, counts, 0, type, starts, 0, drawCount);\n    let elementCount = 0;\n    for (let i2 = 0; i2 < drawCount; i2++) {\n      elementCount += counts[i2];\n    }\n    info.update(elementCount, mode, 1);\n  }\n  function renderMultiDrawInstances(starts, counts, drawCount, primcount) {\n    if (drawCount === 0) return;\n    const extension = extensions.get(\"WEBGL_multi_draw\");\n    if (extension === null) {\n      for (let i2 = 0; i2 < starts.length; i2++) {\n        renderInstances(starts[i2] / bytesPerElement, counts[i2], primcount[i2]);\n      }\n    } else {\n      extension.multiDrawElementsInstancedWEBGL(mode, counts, 0, type, starts, 0, primcount, 0, drawCount);\n      let elementCount = 0;\n      for (let i2 = 0; i2 < drawCount; i2++) {\n        elementCount += counts[i2];\n      }\n      for (let i2 = 0; i2 < primcount.length; i2++) {\n        info.update(elementCount, mode, primcount[i2]);\n      }\n    }\n  }\n  this.setMode = setMode;\n  this.setIndex = setIndex;\n  this.render = render;\n  this.renderInstances = renderInstances;\n  this.renderMultiDraw = renderMultiDraw;\n  this.renderMultiDrawInstances = renderMultiDrawInstances;\n}\nfunction WebGLInfo(gl) {\n  const memory = {\n    geometries: 0,\n    textures: 0\n  };\n  const render = {\n    frame: 0,\n    calls: 0,\n    triangles: 0,\n    points: 0,\n    lines: 0\n  };\n  function update(count, mode, instanceCount) {\n    render.calls++;\n    switch (mode) {\n      case gl.TRIANGLES:\n        render.triangles += instanceCount * (count / 3);\n        break;\n      case gl.LINES:\n        render.lines += instanceCount * (count / 2);\n        break;\n      case gl.LINE_STRIP:\n        render.lines += instanceCount * (count - 1);\n        break;\n      case gl.LINE_LOOP:\n        render.lines += instanceCount * count;\n        break;\n      case gl.POINTS:\n        render.points += instanceCount * count;\n        break;\n      default:\n        console.error(\"THREE.WebGLInfo: Unknown draw mode:\", mode);\n        break;\n    }\n  }\n  function reset() {\n    render.calls = 0;\n    render.triangles = 0;\n    render.points = 0;\n    render.lines = 0;\n  }\n  return {\n    memory,\n    render,\n    programs: null,\n    autoReset: true,\n    reset,\n    update\n  };\n}\nfunction WebGLMorphtargets(gl, capabilities, textures) {\n  const morphTextures = /* @__PURE__ */ new WeakMap();\n  const morph = new Vector4();\n  function update(object, geometry, program) {\n    const objectInfluences = object.morphTargetInfluences;\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    let entry = morphTextures.get(geometry);\n    if (entry === void 0 || entry.count !== morphTargetsCount) {\n      let disposeTexture = function() {\n        texture.dispose();\n        morphTextures.delete(geometry);\n        geometry.removeEventListener(\"dispose\", disposeTexture);\n      };\n      if (entry !== void 0) entry.texture.dispose();\n      const hasMorphPosition = geometry.morphAttributes.position !== void 0;\n      const hasMorphNormals = geometry.morphAttributes.normal !== void 0;\n      const hasMorphColors = geometry.morphAttributes.color !== void 0;\n      const morphTargets = geometry.morphAttributes.position || [];\n      const morphNormals = geometry.morphAttributes.normal || [];\n      const morphColors = geometry.morphAttributes.color || [];\n      let vertexDataCount = 0;\n      if (hasMorphPosition === true) vertexDataCount = 1;\n      if (hasMorphNormals === true) vertexDataCount = 2;\n      if (hasMorphColors === true) vertexDataCount = 3;\n      let width = geometry.attributes.position.count * vertexDataCount;\n      let height = 1;\n      if (width > capabilities.maxTextureSize) {\n        height = Math.ceil(width / capabilities.maxTextureSize);\n        width = capabilities.maxTextureSize;\n      }\n      const buffer = new Float32Array(width * height * 4 * morphTargetsCount);\n      const texture = new DataArrayTexture(buffer, width, height, morphTargetsCount);\n      texture.type = FloatType;\n      texture.needsUpdate = true;\n      const vertexDataStride = vertexDataCount * 4;\n      for (let i2 = 0; i2 < morphTargetsCount; i2++) {\n        const morphTarget = morphTargets[i2];\n        const morphNormal = morphNormals[i2];\n        const morphColor = morphColors[i2];\n        const offset = width * height * 4 * i2;\n        for (let j2 = 0; j2 < morphTarget.count; j2++) {\n          const stride = j2 * vertexDataStride;\n          if (hasMorphPosition === true) {\n            morph.fromBufferAttribute(morphTarget, j2);\n            buffer[offset + stride + 0] = morph.x;\n            buffer[offset + stride + 1] = morph.y;\n            buffer[offset + stride + 2] = morph.z;\n            buffer[offset + stride + 3] = 0;\n          }\n          if (hasMorphNormals === true) {\n            morph.fromBufferAttribute(morphNormal, j2);\n            buffer[offset + stride + 4] = morph.x;\n            buffer[offset + stride + 5] = morph.y;\n            buffer[offset + stride + 6] = morph.z;\n            buffer[offset + stride + 7] = 0;\n          }\n          if (hasMorphColors === true) {\n            morph.fromBufferAttribute(morphColor, j2);\n            buffer[offset + stride + 8] = morph.x;\n            buffer[offset + stride + 9] = morph.y;\n            buffer[offset + stride + 10] = morph.z;\n            buffer[offset + stride + 11] = morphColor.itemSize === 4 ? morph.w : 1;\n          }\n        }\n      }\n      entry = {\n        count: morphTargetsCount,\n        texture,\n        size: new Vector2(width, height)\n      };\n      morphTextures.set(geometry, entry);\n      geometry.addEventListener(\"dispose\", disposeTexture);\n    }\n    if (object.isInstancedMesh === true && object.morphTexture !== null) {\n      program.getUniforms().setValue(gl, \"morphTexture\", object.morphTexture, textures);\n    } else {\n      let morphInfluencesSum = 0;\n      for (let i2 = 0; i2 < objectInfluences.length; i2++) {\n        morphInfluencesSum += objectInfluences[i2];\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", objectInfluences);\n    }\n    program.getUniforms().setValue(gl, \"morphTargetsTexture\", entry.texture, textures);\n    program.getUniforms().setValue(gl, \"morphTargetsTextureSize\", entry.size);\n  }\n  return {\n    update\n  };\n}\nfunction WebGLObjects(gl, geometries, attributes, info) {\n  let updateMap = /* @__PURE__ */ new WeakMap();\n  function update(object) {\n    const frame = info.render.frame;\n    const geometry = object.geometry;\n    const buffergeometry = geometries.get(object, geometry);\n    if (updateMap.get(buffergeometry) !== frame) {\n      geometries.update(buffergeometry);\n      updateMap.set(buffergeometry, frame);\n    }\n    if (object.isInstancedMesh) {\n      if (object.hasEventListener(\"dispose\", onInstancedMeshDispose) === false) {\n        object.addEventListener(\"dispose\", onInstancedMeshDispose);\n      }\n      if (updateMap.get(object) !== frame) {\n        attributes.update(object.instanceMatrix, gl.ARRAY_BUFFER);\n        if (object.instanceColor !== null) {\n          attributes.update(object.instanceColor, gl.ARRAY_BUFFER);\n        }\n        updateMap.set(object, frame);\n      }\n    }\n    if (object.isSkinnedMesh) {\n      const skeleton = object.skeleton;\n      if (updateMap.get(skeleton) !== frame) {\n        skeleton.update();\n        updateMap.set(skeleton, frame);\n      }\n    }\n    return buffergeometry;\n  }\n  function dispose2() {\n    updateMap = /* @__PURE__ */ new WeakMap();\n  }\n  function onInstancedMeshDispose(event) {\n    const instancedMesh = event.target;\n    instancedMesh.removeEventListener(\"dispose\", onInstancedMeshDispose);\n    attributes.remove(instancedMesh.instanceMatrix);\n    if (instancedMesh.instanceColor !== null) attributes.remove(instancedMesh.instanceColor);\n  }\n  return {\n    update,\n    dispose: dispose2\n  };\n}\nfunction flatten(array, nBlocks, blockSize) {\n  const firstElem = array[0];\n  if (firstElem <= 0 || firstElem > 0) return array;\n  const n = nBlocks * blockSize;\n  let r2 = arrayCacheF32[n];\n  if (r2 === void 0) {\n    r2 = new Float32Array(n);\n    arrayCacheF32[n] = r2;\n  }\n  if (nBlocks !== 0) {\n    firstElem.toArray(r2, 0);\n    for (let i2 = 1, offset = 0; i2 !== nBlocks; ++i2) {\n      offset += blockSize;\n      array[i2].toArray(r2, offset);\n    }\n  }\n  return r2;\n}\nfunction arraysEqual(a, b) {\n  if (a.length !== b.length) return false;\n  for (let i2 = 0, l2 = a.length; i2 < l2; i2++) {\n    if (a[i2] !== b[i2]) return false;\n  }\n  return true;\n}\nfunction copyArray(a, b) {\n  for (let i2 = 0, l2 = b.length; i2 < l2; i2++) {\n    a[i2] = b[i2];\n  }\n}\nfunction allocTexUnits(textures, n) {\n  let r2 = arrayCacheI32[n];\n  if (r2 === void 0) {\n    r2 = new Int32Array(n);\n    arrayCacheI32[n] = r2;\n  }\n  for (let i2 = 0; i2 !== n; ++i2) {\n    r2[i2] = textures.allocateTextureUnit();\n  }\n  return r2;\n}\nfunction setValueV1f(gl, v2) {\n  const cache = this.cache;\n  if (cache[0] === v2) return;\n  gl.uniform1f(this.addr, v2);\n  cache[0] = v2;\n}\nfunction setValueV2f(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y) {\n      gl.uniform2f(this.addr, v2.x, v2.y);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform2fv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV3f(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z) {\n      gl.uniform3f(this.addr, v2.x, v2.y, v2.z);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n    }\n  } else if (v2.r !== void 0) {\n    if (cache[0] !== v2.r || cache[1] !== v2.g || cache[2] !== v2.b) {\n      gl.uniform3f(this.addr, v2.r, v2.g, v2.b);\n      cache[0] = v2.r;\n      cache[1] = v2.g;\n      cache[2] = v2.b;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform3fv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV4f(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z || cache[3] !== v2.w) {\n      gl.uniform4f(this.addr, v2.x, v2.y, v2.z, v2.w);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n      cache[3] = v2.w;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform4fv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueM2(gl, v2) {\n  const cache = this.cache;\n  const elements = v2.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniformMatrix2fv(this.addr, false, v2);\n    copyArray(cache, v2);\n  } else {\n    if (arraysEqual(cache, elements)) return;\n    mat2array.set(elements);\n    gl.uniformMatrix2fv(this.addr, false, mat2array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueM3(gl, v2) {\n  const cache = this.cache;\n  const elements = v2.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniformMatrix3fv(this.addr, false, v2);\n    copyArray(cache, v2);\n  } else {\n    if (arraysEqual(cache, elements)) return;\n    mat3array.set(elements);\n    gl.uniformMatrix3fv(this.addr, false, mat3array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueM4(gl, v2) {\n  const cache = this.cache;\n  const elements = v2.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniformMatrix4fv(this.addr, false, v2);\n    copyArray(cache, v2);\n  } else {\n    if (arraysEqual(cache, elements)) return;\n    mat4array.set(elements);\n    gl.uniformMatrix4fv(this.addr, false, mat4array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueV1i(gl, v2) {\n  const cache = this.cache;\n  if (cache[0] === v2) return;\n  gl.uniform1i(this.addr, v2);\n  cache[0] = v2;\n}\nfunction setValueV2i(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y) {\n      gl.uniform2i(this.addr, v2.x, v2.y);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform2iv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV3i(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z) {\n      gl.uniform3i(this.addr, v2.x, v2.y, v2.z);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform3iv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV4i(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z || cache[3] !== v2.w) {\n      gl.uniform4i(this.addr, v2.x, v2.y, v2.z, v2.w);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n      cache[3] = v2.w;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform4iv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV1ui(gl, v2) {\n  const cache = this.cache;\n  if (cache[0] === v2) return;\n  gl.uniform1ui(this.addr, v2);\n  cache[0] = v2;\n}\nfunction setValueV2ui(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y) {\n      gl.uniform2ui(this.addr, v2.x, v2.y);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform2uiv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV3ui(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z) {\n      gl.uniform3ui(this.addr, v2.x, v2.y, v2.z);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform3uiv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV4ui(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z || cache[3] !== v2.w) {\n      gl.uniform4ui(this.addr, v2.x, v2.y, v2.z, v2.w);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n      cache[3] = v2.w;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform4uiv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueT1(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  let emptyTexture2D;\n  if (this.type === gl.SAMPLER_2D_SHADOW) {\n    emptyShadowTexture.compareFunction = LessEqualCompare;\n    emptyTexture2D = emptyShadowTexture;\n  } else {\n    emptyTexture2D = emptyTexture;\n  }\n  textures.setTexture2D(v2 || emptyTexture2D, unit);\n}\nfunction setValueT3D1(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture3D(v2 || empty3dTexture, unit);\n}\nfunction setValueT6(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTextureCube(v2 || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture2DArray(v2 || emptyArrayTexture, unit);\n}\nfunction getSingularSetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1f;\n    // FLOAT\n    case 35664:\n      return setValueV2f;\n    // _VEC2\n    case 35665:\n      return setValueV3f;\n    // _VEC3\n    case 35666:\n      return setValueV4f;\n    // _VEC4\n    case 35674:\n      return setValueM2;\n    // _MAT2\n    case 35675:\n      return setValueM3;\n    // _MAT3\n    case 35676:\n      return setValueM4;\n    // _MAT4\n    case 5124:\n    case 35670:\n      return setValueV1i;\n    // INT, BOOL\n    case 35667:\n    case 35671:\n      return setValueV2i;\n    // _VEC2\n    case 35668:\n    case 35672:\n      return setValueV3i;\n    // _VEC3\n    case 35669:\n    case 35673:\n      return setValueV4i;\n    // _VEC4\n    case 5125:\n      return setValueV1ui;\n    // UINT\n    case 36294:\n      return setValueV2ui;\n    // _VEC2\n    case 36295:\n      return setValueV3ui;\n    // _VEC3\n    case 36296:\n      return setValueV4ui;\n    // _VEC4\n    case 35678:\n    // SAMPLER_2D\n    case 36198:\n    // SAMPLER_EXTERNAL_OES\n    case 36298:\n    // INT_SAMPLER_2D\n    case 36306:\n    // UNSIGNED_INT_SAMPLER_2D\n    case 35682:\n      return setValueT1;\n    case 35679:\n    // SAMPLER_3D\n    case 36299:\n    // INT_SAMPLER_3D\n    case 36307:\n      return setValueT3D1;\n    case 35680:\n    // SAMPLER_CUBE\n    case 36300:\n    // INT_SAMPLER_CUBE\n    case 36308:\n    // UNSIGNED_INT_SAMPLER_CUBE\n    case 36293:\n      return setValueT6;\n    case 36289:\n    // SAMPLER_2D_ARRAY\n    case 36303:\n    // INT_SAMPLER_2D_ARRAY\n    case 36311:\n    // UNSIGNED_INT_SAMPLER_2D_ARRAY\n    case 36292:\n      return setValueT2DArray1;\n  }\n}\nfunction setValueV1fArray(gl, v2) {\n  gl.uniform1fv(this.addr, v2);\n}\nfunction setValueV2fArray(gl, v2) {\n  const data = flatten(v2, this.size, 2);\n  gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v2) {\n  const data = flatten(v2, this.size, 3);\n  gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v2) {\n  const data = flatten(v2, this.size, 4);\n  gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v2) {\n  const data = flatten(v2, this.size, 4);\n  gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v2) {\n  const data = flatten(v2, this.size, 9);\n  gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v2) {\n  const data = flatten(v2, this.size, 16);\n  gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v2) {\n  gl.uniform1iv(this.addr, v2);\n}\nfunction setValueV2iArray(gl, v2) {\n  gl.uniform2iv(this.addr, v2);\n}\nfunction setValueV3iArray(gl, v2) {\n  gl.uniform3iv(this.addr, v2);\n}\nfunction setValueV4iArray(gl, v2) {\n  gl.uniform4iv(this.addr, v2);\n}\nfunction setValueV1uiArray(gl, v2) {\n  gl.uniform1uiv(this.addr, v2);\n}\nfunction setValueV2uiArray(gl, v2) {\n  gl.uniform2uiv(this.addr, v2);\n}\nfunction setValueV3uiArray(gl, v2) {\n  gl.uniform3uiv(this.addr, v2);\n}\nfunction setValueV4uiArray(gl, v2) {\n  gl.uniform4uiv(this.addr, v2);\n}\nfunction setValueT1Array(gl, v2, textures) {\n  const cache = this.cache;\n  const n = v2.length;\n  const units = allocTexUnits(textures, n);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n; ++i2) {\n    textures.setTexture2D(v2[i2] || emptyTexture, units[i2]);\n  }\n}\nfunction setValueT3DArray(gl, v2, textures) {\n  const cache = this.cache;\n  const n = v2.length;\n  const units = allocTexUnits(textures, n);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n; ++i2) {\n    textures.setTexture3D(v2[i2] || empty3dTexture, units[i2]);\n  }\n}\nfunction setValueT6Array(gl, v2, textures) {\n  const cache = this.cache;\n  const n = v2.length;\n  const units = allocTexUnits(textures, n);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n; ++i2) {\n    textures.setTextureCube(v2[i2] || emptyCubeTexture, units[i2]);\n  }\n}\nfunction setValueT2DArrayArray(gl, v2, textures) {\n  const cache = this.cache;\n  const n = v2.length;\n  const units = allocTexUnits(textures, n);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n; ++i2) {\n    textures.setTexture2DArray(v2[i2] || emptyArrayTexture, units[i2]);\n  }\n}\nfunction getPureArraySetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1fArray;\n    // FLOAT\n    case 35664:\n      return setValueV2fArray;\n    // _VEC2\n    case 35665:\n      return setValueV3fArray;\n    // _VEC3\n    case 35666:\n      return setValueV4fArray;\n    // _VEC4\n    case 35674:\n      return setValueM2Array;\n    // _MAT2\n    case 35675:\n      return setValueM3Array;\n    // _MAT3\n    case 35676:\n      return setValueM4Array;\n    // _MAT4\n    case 5124:\n    case 35670:\n      return setValueV1iArray;\n    // INT, BOOL\n    case 35667:\n    case 35671:\n      return setValueV2iArray;\n    // _VEC2\n    case 35668:\n    case 35672:\n      return setValueV3iArray;\n    // _VEC3\n    case 35669:\n    case 35673:\n      return setValueV4iArray;\n    // _VEC4\n    case 5125:\n      return setValueV1uiArray;\n    // UINT\n    case 36294:\n      return setValueV2uiArray;\n    // _VEC2\n    case 36295:\n      return setValueV3uiArray;\n    // _VEC3\n    case 36296:\n      return setValueV4uiArray;\n    // _VEC4\n    case 35678:\n    // SAMPLER_2D\n    case 36198:\n    // SAMPLER_EXTERNAL_OES\n    case 36298:\n    // INT_SAMPLER_2D\n    case 36306:\n    // UNSIGNED_INT_SAMPLER_2D\n    case 35682:\n      return setValueT1Array;\n    case 35679:\n    // SAMPLER_3D\n    case 36299:\n    // INT_SAMPLER_3D\n    case 36307:\n      return setValueT3DArray;\n    case 35680:\n    // SAMPLER_CUBE\n    case 36300:\n    // INT_SAMPLER_CUBE\n    case 36308:\n    // UNSIGNED_INT_SAMPLER_CUBE\n    case 36293:\n      return setValueT6Array;\n    case 36289:\n    // SAMPLER_2D_ARRAY\n    case 36303:\n    // INT_SAMPLER_2D_ARRAY\n    case 36311:\n    // UNSIGNED_INT_SAMPLER_2D_ARRAY\n    case 36292:\n      return setValueT2DArrayArray;\n  }\n}\nfunction addUniform(container, uniformObject) {\n  container.seq.push(uniformObject);\n  container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n  const path = activeInfo.name, pathLength = path.length;\n  RePathPart.lastIndex = 0;\n  while (true) {\n    const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex;\n    let id = match[1];\n    const idIsIndex = match[2] === \"]\", subscript = match[3];\n    if (idIsIndex) id = id | 0;\n    if (subscript === void 0 || subscript === \"[\" && matchEnd + 2 === pathLength) {\n      addUniform(container, subscript === void 0 ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n      break;\n    } else {\n      const map = container.map;\n      let next = map[id];\n      if (next === void 0) {\n        next = new StructuredUniform(id);\n        addUniform(container, next);\n      }\n      container = next;\n    }\n  }\n}\nfunction WebGLShader(gl, type, string) {\n  const shader = gl.createShader(type);\n  gl.shaderSource(shader, string);\n  gl.compileShader(shader);\n  return shader;\n}\nfunction handleSource(string, errorLine) {\n  const lines = string.split(\"\\n\");\n  const lines2 = [];\n  const from = Math.max(errorLine - 6, 0);\n  const to = Math.min(errorLine + 6, lines.length);\n  for (let i2 = from; i2 < to; i2++) {\n    const line = i2 + 1;\n    lines2.push(`${line === errorLine ? \">\" : \" \"} ${line}: ${lines[i2]}`);\n  }\n  return lines2.join(\"\\n\");\n}\nfunction getEncodingComponents(colorSpace) {\n  const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace);\n  const encodingPrimaries = ColorManagement.getPrimaries(colorSpace);\n  let gamutMapping;\n  if (workingPrimaries === encodingPrimaries) {\n    gamutMapping = \"\";\n  } else if (workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries) {\n    gamutMapping = \"LinearDisplayP3ToLinearSRGB\";\n  } else if (workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries) {\n    gamutMapping = \"LinearSRGBToLinearDisplayP3\";\n  }\n  switch (colorSpace) {\n    case LinearSRGBColorSpace:\n    case LinearDisplayP3ColorSpace:\n      return [gamutMapping, \"LinearTransferOETF\"];\n    case SRGBColorSpace:\n    case DisplayP3ColorSpace:\n      return [gamutMapping, \"sRGBTransferOETF\"];\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported color space:\", colorSpace);\n      return [gamutMapping, \"LinearTransferOETF\"];\n  }\n}\nfunction getShaderErrors(gl, shader, type) {\n  const status = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n  const errors = gl.getShaderInfoLog(shader).trim();\n  if (status && errors === \"\") return \"\";\n  const errorMatches = /ERROR: 0:(\\d+)/.exec(errors);\n  if (errorMatches) {\n    const errorLine = parseInt(errorMatches[1]);\n    return type.toUpperCase() + \"\\n\\n\" + errors + \"\\n\\n\" + handleSource(gl.getShaderSource(shader), errorLine);\n  } else {\n    return errors;\n  }\n}\nfunction getTexelEncodingFunction(functionName, colorSpace) {\n  const components = getEncodingComponents(colorSpace);\n  return `vec4 ${functionName}( vec4 value ) { return ${components[0]}( ${components[1]}( value ) ); }`;\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n  let toneMappingName;\n  switch (toneMapping) {\n    case LinearToneMapping:\n      toneMappingName = \"Linear\";\n      break;\n    case ReinhardToneMapping:\n      toneMappingName = \"Reinhard\";\n      break;\n    case CineonToneMapping:\n      toneMappingName = \"Cineon\";\n      break;\n    case ACESFilmicToneMapping:\n      toneMappingName = \"ACESFilmic\";\n      break;\n    case AgXToneMapping:\n      toneMappingName = \"AgX\";\n      break;\n    case NeutralToneMapping:\n      toneMappingName = \"Neutral\";\n      break;\n    case CustomToneMapping:\n      toneMappingName = \"Custom\";\n      break;\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\", toneMapping);\n      toneMappingName = \"Linear\";\n  }\n  return \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n}\nfunction getLuminanceFunction() {\n  ColorManagement.getLuminanceCoefficients(_v0$1);\n  const r2 = _v0$1.x.toFixed(4);\n  const g3 = _v0$1.y.toFixed(4);\n  const b = _v0$1.z.toFixed(4);\n  return [\n    \"float luminance( const in vec3 rgb ) {\",\n    `\tconst vec3 weights = vec3( ${r2}, ${g3}, ${b} );`,\n    \"\treturn dot( weights, rgb );\",\n    \"}\"\n  ].join(\"\\n\");\n}\nfunction generateVertexExtensions(parameters) {\n  const chunks = [\n    parameters.extensionClipCullDistance ? \"#extension GL_ANGLE_clip_cull_distance : require\" : \"\",\n    parameters.extensionMultiDraw ? \"#extension GL_ANGLE_multi_draw : require\" : \"\"\n  ];\n  return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateDefines(defines) {\n  const chunks = [];\n  for (const name in defines) {\n    const value = defines[name];\n    if (value === false) continue;\n    chunks.push(\"#define \" + name + \" \" + value);\n  }\n  return chunks.join(\"\\n\");\n}\nfunction fetchAttributeLocations(gl, program) {\n  const attributes = {};\n  const n = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n  for (let i2 = 0; i2 < n; i2++) {\n    const info = gl.getActiveAttrib(program, i2);\n    const name = info.name;\n    let locationSize = 1;\n    if (info.type === gl.FLOAT_MAT2) locationSize = 2;\n    if (info.type === gl.FLOAT_MAT3) locationSize = 3;\n    if (info.type === gl.FLOAT_MAT4) locationSize = 4;\n    attributes[name] = {\n      type: info.type,\n      location: gl.getAttribLocation(program, name),\n      locationSize\n    };\n  }\n  return attributes;\n}\nfunction filterEmptyLine(string) {\n  return string !== \"\";\n}\nfunction replaceLightNums(string, parameters) {\n  const numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n  return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n  return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nfunction resolveIncludes(string) {\n  return string.replace(includePattern, includeReplacer);\n}\nfunction includeReplacer(match, include) {\n  let string = ShaderChunk[include];\n  if (string === void 0) {\n    const newInclude = shaderChunkMap.get(include);\n    if (newInclude !== void 0) {\n      string = ShaderChunk[newInclude];\n      console.warn('THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude);\n    } else {\n      throw new Error(\"Can not resolve #include <\" + include + \">\");\n    }\n  }\n  return resolveIncludes(string);\n}\nfunction unrollLoops(string) {\n  return string.replace(unrollLoopPattern, loopReplacer);\n}\nfunction loopReplacer(match, start, end, snippet) {\n  let string = \"\";\n  for (let i2 = parseInt(start); i2 < parseInt(end); i2++) {\n    string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i2 + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i2);\n  }\n  return string;\n}\nfunction generatePrecision(parameters) {\n  let precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\tprecision ${parameters.precision} sampler3D;\n\tprecision ${parameters.precision} sampler2DArray;\n\tprecision ${parameters.precision} sampler2DShadow;\n\tprecision ${parameters.precision} samplerCubeShadow;\n\tprecision ${parameters.precision} sampler2DArrayShadow;\n\tprecision ${parameters.precision} isampler2D;\n\tprecision ${parameters.precision} isampler3D;\n\tprecision ${parameters.precision} isamplerCube;\n\tprecision ${parameters.precision} isampler2DArray;\n\tprecision ${parameters.precision} usampler2D;\n\tprecision ${parameters.precision} usampler3D;\n\tprecision ${parameters.precision} usamplerCube;\n\tprecision ${parameters.precision} usampler2DArray;\n\t`;\n  if (parameters.precision === \"highp\") {\n    precisionstring += \"\\n#define HIGH_PRECISION\";\n  } else if (parameters.precision === \"mediump\") {\n    precisionstring += \"\\n#define MEDIUM_PRECISION\";\n  } else if (parameters.precision === \"lowp\") {\n    precisionstring += \"\\n#define LOW_PRECISION\";\n  }\n  return precisionstring;\n}\nfunction generateShadowMapTypeDefine(parameters) {\n  let shadowMapTypeDefine = \"SHADOWMAP_TYPE_BASIC\";\n  if (parameters.shadowMapType === PCFShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF\";\n  } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF_SOFT\";\n  } else if (parameters.shadowMapType === VSMShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_VSM\";\n  }\n  return shadowMapTypeDefine;\n}\nfunction generateEnvMapTypeDefine(parameters) {\n  let envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeReflectionMapping:\n      case CubeRefractionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n        break;\n      case CubeUVReflectionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE_UV\";\n        break;\n    }\n  }\n  return envMapTypeDefine;\n}\nfunction generateEnvMapModeDefine(parameters) {\n  let envMapModeDefine = \"ENVMAP_MODE_REFLECTION\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeRefractionMapping:\n        envMapModeDefine = \"ENVMAP_MODE_REFRACTION\";\n        break;\n    }\n  }\n  return envMapModeDefine;\n}\nfunction generateEnvMapBlendingDefine(parameters) {\n  let envMapBlendingDefine = \"ENVMAP_BLENDING_NONE\";\n  if (parameters.envMap) {\n    switch (parameters.combine) {\n      case MultiplyOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MULTIPLY\";\n        break;\n      case MixOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MIX\";\n        break;\n      case AddOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_ADD\";\n        break;\n    }\n  }\n  return envMapBlendingDefine;\n}\nfunction generateCubeUVSize(parameters) {\n  const imageHeight = parameters.envMapCubeUVHeight;\n  if (imageHeight === null) return null;\n  const maxMip = Math.log2(imageHeight) - 2;\n  const texelHeight = 1 / imageHeight;\n  const texelWidth = 1 / (3 * Math.max(Math.pow(2, maxMip), 7 * 16));\n  return { texelWidth, texelHeight, maxMip };\n}\nfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n  const gl = renderer.getContext();\n  const defines = parameters.defines;\n  let vertexShader = parameters.vertexShader;\n  let fragmentShader = parameters.fragmentShader;\n  const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n  const envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n  const envMapModeDefine = generateEnvMapModeDefine(parameters);\n  const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n  const envMapCubeUVSize = generateCubeUVSize(parameters);\n  const customVertexExtensions = generateVertexExtensions(parameters);\n  const customDefines = generateDefines(defines);\n  const program = gl.createProgram();\n  let prefixVertex, prefixFragment;\n  let versionString = parameters.glslVersion ? \"#version \" + parameters.glslVersion + \"\\n\" : \"\";\n  if (parameters.isRawShaderMaterial) {\n    prefixVertex = [\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixVertex.length > 0) {\n      prefixVertex += \"\\n\";\n    }\n    prefixFragment = [\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixFragment.length > 0) {\n      prefixFragment += \"\\n\";\n    }\n  } else {\n    prefixVertex = [\n      generatePrecision(parameters),\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.extensionClipCullDistance ? \"#define USE_CLIP_DISTANCE\" : \"\",\n      parameters.batching ? \"#define USE_BATCHING\" : \"\",\n      parameters.batchingColor ? \"#define USE_BATCHING_COLOR\" : \"\",\n      parameters.instancing ? \"#define USE_INSTANCING\" : \"\",\n      parameters.instancingColor ? \"#define USE_INSTANCING_COLOR\" : \"\",\n      parameters.instancingMorph ? \"#define USE_INSTANCING_MORPH\" : \"\",\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMapObjectSpace ? \"#define USE_NORMALMAP_OBJECTSPACE\" : \"\",\n      parameters.normalMapTangentSpace ? \"#define USE_NORMALMAP_TANGENTSPACE\" : \"\",\n      parameters.displacementMap ? \"#define USE_DISPLACEMENTMAP\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.anisotropy ? \"#define USE_ANISOTROPY\" : \"\",\n      parameters.anisotropyMap ? \"#define USE_ANISOTROPYMAP\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULAR_COLORMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULAR_INTENSITYMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.alphaHash ? \"#define USE_ALPHAHASH\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEEN_COLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEEN_ROUGHNESSMAP\" : \"\",\n      //\n      parameters.mapUv ? \"#define MAP_UV \" + parameters.mapUv : \"\",\n      parameters.alphaMapUv ? \"#define ALPHAMAP_UV \" + parameters.alphaMapUv : \"\",\n      parameters.lightMapUv ? \"#define LIGHTMAP_UV \" + parameters.lightMapUv : \"\",\n      parameters.aoMapUv ? \"#define AOMAP_UV \" + parameters.aoMapUv : \"\",\n      parameters.emissiveMapUv ? \"#define EMISSIVEMAP_UV \" + parameters.emissiveMapUv : \"\",\n      parameters.bumpMapUv ? \"#define BUMPMAP_UV \" + parameters.bumpMapUv : \"\",\n      parameters.normalMapUv ? \"#define NORMALMAP_UV \" + parameters.normalMapUv : \"\",\n      parameters.displacementMapUv ? \"#define DISPLACEMENTMAP_UV \" + parameters.displacementMapUv : \"\",\n      parameters.metalnessMapUv ? \"#define METALNESSMAP_UV \" + parameters.metalnessMapUv : \"\",\n      parameters.roughnessMapUv ? \"#define ROUGHNESSMAP_UV \" + parameters.roughnessMapUv : \"\",\n      parameters.anisotropyMapUv ? \"#define ANISOTROPYMAP_UV \" + parameters.anisotropyMapUv : \"\",\n      parameters.clearcoatMapUv ? \"#define CLEARCOATMAP_UV \" + parameters.clearcoatMapUv : \"\",\n      parameters.clearcoatNormalMapUv ? \"#define CLEARCOAT_NORMALMAP_UV \" + parameters.clearcoatNormalMapUv : \"\",\n      parameters.clearcoatRoughnessMapUv ? \"#define CLEARCOAT_ROUGHNESSMAP_UV \" + parameters.clearcoatRoughnessMapUv : \"\",\n      parameters.iridescenceMapUv ? \"#define IRIDESCENCEMAP_UV \" + parameters.iridescenceMapUv : \"\",\n      parameters.iridescenceThicknessMapUv ? \"#define IRIDESCENCE_THICKNESSMAP_UV \" + parameters.iridescenceThicknessMapUv : \"\",\n      parameters.sheenColorMapUv ? \"#define SHEEN_COLORMAP_UV \" + parameters.sheenColorMapUv : \"\",\n      parameters.sheenRoughnessMapUv ? \"#define SHEEN_ROUGHNESSMAP_UV \" + parameters.sheenRoughnessMapUv : \"\",\n      parameters.specularMapUv ? \"#define SPECULARMAP_UV \" + parameters.specularMapUv : \"\",\n      parameters.specularColorMapUv ? \"#define SPECULAR_COLORMAP_UV \" + parameters.specularColorMapUv : \"\",\n      parameters.specularIntensityMapUv ? \"#define SPECULAR_INTENSITYMAP_UV \" + parameters.specularIntensityMapUv : \"\",\n      parameters.transmissionMapUv ? \"#define TRANSMISSIONMAP_UV \" + parameters.transmissionMapUv : \"\",\n      parameters.thicknessMapUv ? \"#define THICKNESSMAP_UV \" + parameters.thicknessMapUv : \"\",\n      //\n      parameters.vertexTangents && parameters.flatShading === false ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUv1s ? \"#define USE_UV1\" : \"\",\n      parameters.vertexUv2s ? \"#define USE_UV2\" : \"\",\n      parameters.vertexUv3s ? \"#define USE_UV3\" : \"\",\n      parameters.pointsUvs ? \"#define USE_POINTS_UV\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.skinning ? \"#define USE_SKINNING\" : \"\",\n      parameters.morphTargets ? \"#define USE_MORPHTARGETS\" : \"\",\n      parameters.morphNormals && parameters.flatShading === false ? \"#define USE_MORPHNORMALS\" : \"\",\n      parameters.morphColors ? \"#define USE_MORPHCOLORS\" : \"\",\n      parameters.morphTargetsCount > 0 ? \"#define MORPHTARGETS_TEXTURE_STRIDE \" + parameters.morphTextureStride : \"\",\n      parameters.morphTargetsCount > 0 ? \"#define MORPHTARGETS_COUNT \" + parameters.morphTargetsCount : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.sizeAttenuation ? \"#define USE_SIZEATTENUATION\" : \"\",\n      parameters.numLightProbes > 0 ? \"#define USE_LIGHT_PROBES\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.reverseDepthBuffer ? \"#define USE_REVERSEDEPTHBUF\" : \"\",\n      \"uniform mat4 modelMatrix;\",\n      \"uniform mat4 modelViewMatrix;\",\n      \"uniform mat4 projectionMatrix;\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform mat3 normalMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      \"#ifdef USE_INSTANCING\",\n      \"\tattribute mat4 instanceMatrix;\",\n      \"#endif\",\n      \"#ifdef USE_INSTANCING_COLOR\",\n      \"\tattribute vec3 instanceColor;\",\n      \"#endif\",\n      \"#ifdef USE_INSTANCING_MORPH\",\n      \"\tuniform sampler2D morphTexture;\",\n      \"#endif\",\n      \"attribute vec3 position;\",\n      \"attribute vec3 normal;\",\n      \"attribute vec2 uv;\",\n      \"#ifdef USE_UV1\",\n      \"\tattribute vec2 uv1;\",\n      \"#endif\",\n      \"#ifdef USE_UV2\",\n      \"\tattribute vec2 uv2;\",\n      \"#endif\",\n      \"#ifdef USE_UV3\",\n      \"\tattribute vec2 uv3;\",\n      \"#endif\",\n      \"#ifdef USE_TANGENT\",\n      \"\tattribute vec4 tangent;\",\n      \"#endif\",\n      \"#if defined( USE_COLOR_ALPHA )\",\n      \"\tattribute vec4 color;\",\n      \"#elif defined( USE_COLOR )\",\n      \"\tattribute vec3 color;\",\n      \"#endif\",\n      \"#ifdef USE_SKINNING\",\n      \"\tattribute vec4 skinIndex;\",\n      \"\tattribute vec4 skinWeight;\",\n      \"#endif\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n    prefixFragment = [\n      generatePrecision(parameters),\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.alphaToCoverage ? \"#define ALPHA_TO_COVERAGE\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.matcap ? \"#define USE_MATCAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapTypeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapBlendingDefine : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_WIDTH \" + envMapCubeUVSize.texelWidth : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_HEIGHT \" + envMapCubeUVSize.texelHeight : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_MAX_MIP \" + envMapCubeUVSize.maxMip + \".0\" : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMapObjectSpace ? \"#define USE_NORMALMAP_OBJECTSPACE\" : \"\",\n      parameters.normalMapTangentSpace ? \"#define USE_NORMALMAP_TANGENTSPACE\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.anisotropy ? \"#define USE_ANISOTROPY\" : \"\",\n      parameters.anisotropyMap ? \"#define USE_ANISOTROPYMAP\" : \"\",\n      parameters.clearcoat ? \"#define USE_CLEARCOAT\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.dispersion ? \"#define USE_DISPERSION\" : \"\",\n      parameters.iridescence ? \"#define USE_IRIDESCENCE\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULAR_COLORMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULAR_INTENSITYMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.alphaTest ? \"#define USE_ALPHATEST\" : \"\",\n      parameters.alphaHash ? \"#define USE_ALPHAHASH\" : \"\",\n      parameters.sheen ? \"#define USE_SHEEN\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEEN_COLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEEN_ROUGHNESSMAP\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.vertexTangents && parameters.flatShading === false ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUv1s ? \"#define USE_UV1\" : \"\",\n      parameters.vertexUv2s ? \"#define USE_UV2\" : \"\",\n      parameters.vertexUv3s ? \"#define USE_UV3\" : \"\",\n      parameters.pointsUvs ? \"#define USE_POINTS_UV\" : \"\",\n      parameters.gradientMap ? \"#define USE_GRADIENTMAP\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : \"\",\n      parameters.numLightProbes > 0 ? \"#define USE_LIGHT_PROBES\" : \"\",\n      parameters.decodeVideoTexture ? \"#define DECODE_VIDEO_TEXTURE\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.reverseDepthBuffer ? \"#define USE_REVERSEDEPTHBUF\" : \"\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      parameters.toneMapping !== NoToneMapping ? \"#define TONE_MAPPING\" : \"\",\n      parameters.toneMapping !== NoToneMapping ? ShaderChunk[\"tonemapping_pars_fragment\"] : \"\",\n      // this code is required here because it is used by the toneMapping() function defined below\n      parameters.toneMapping !== NoToneMapping ? getToneMappingFunction(\"toneMapping\", parameters.toneMapping) : \"\",\n      parameters.dithering ? \"#define DITHERING\" : \"\",\n      parameters.opaque ? \"#define OPAQUE\" : \"\",\n      ShaderChunk[\"colorspace_pars_fragment\"],\n      // this code is required here because it is used by the various encoding/decoding function defined below\n      getTexelEncodingFunction(\"linearToOutputTexel\", parameters.outputColorSpace),\n      getLuminanceFunction(),\n      parameters.useDepthPacking ? \"#define DEPTH_PACKING \" + parameters.depthPacking : \"\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n  }\n  vertexShader = resolveIncludes(vertexShader);\n  vertexShader = replaceLightNums(vertexShader, parameters);\n  vertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n  fragmentShader = resolveIncludes(fragmentShader);\n  fragmentShader = replaceLightNums(fragmentShader, parameters);\n  fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n  vertexShader = unrollLoops(vertexShader);\n  fragmentShader = unrollLoops(fragmentShader);\n  if (parameters.isRawShaderMaterial !== true) {\n    versionString = \"#version 300 es\\n\";\n    prefixVertex = [\n      customVertexExtensions,\n      \"#define attribute in\",\n      \"#define varying out\",\n      \"#define texture2D texture\"\n    ].join(\"\\n\") + \"\\n\" + prefixVertex;\n    prefixFragment = [\n      \"#define varying in\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"layout(location = 0) out highp vec4 pc_fragColor;\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"#define gl_FragColor pc_fragColor\",\n      \"#define gl_FragDepthEXT gl_FragDepth\",\n      \"#define texture2D texture\",\n      \"#define textureCube texture\",\n      \"#define texture2DProj textureProj\",\n      \"#define texture2DLodEXT textureLod\",\n      \"#define texture2DProjLodEXT textureProjLod\",\n      \"#define textureCubeLodEXT textureLod\",\n      \"#define texture2DGradEXT textureGrad\",\n      \"#define texture2DProjGradEXT textureProjGrad\",\n      \"#define textureCubeGradEXT textureGrad\"\n    ].join(\"\\n\") + \"\\n\" + prefixFragment;\n  }\n  const vertexGlsl = versionString + prefixVertex + vertexShader;\n  const fragmentGlsl = versionString + prefixFragment + fragmentShader;\n  const glVertexShader = WebGLShader(gl, gl.VERTEX_SHADER, vertexGlsl);\n  const glFragmentShader = WebGLShader(gl, gl.FRAGMENT_SHADER, fragmentGlsl);\n  gl.attachShader(program, glVertexShader);\n  gl.attachShader(program, glFragmentShader);\n  if (parameters.index0AttributeName !== void 0) {\n    gl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n  } else if (parameters.morphTargets === true) {\n    gl.bindAttribLocation(program, 0, \"position\");\n  }\n  gl.linkProgram(program);\n  function onFirstUse(self2) {\n    if (renderer.debug.checkShaderErrors) {\n      const programLog = gl.getProgramInfoLog(program).trim();\n      const vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n      const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n      let runnable = true;\n      let haveDiagnostics = true;\n      if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) {\n        runnable = false;\n        if (typeof renderer.debug.onShaderError === \"function\") {\n          renderer.debug.onShaderError(gl, program, glVertexShader, glFragmentShader);\n        } else {\n          const vertexErrors = getShaderErrors(gl, glVertexShader, \"vertex\");\n          const fragmentErrors = getShaderErrors(gl, glFragmentShader, \"fragment\");\n          console.error(\n            \"THREE.WebGLProgram: Shader Error \" + gl.getError() + \" - VALIDATE_STATUS \" + gl.getProgramParameter(program, gl.VALIDATE_STATUS) + \"\\n\\nMaterial Name: \" + self2.name + \"\\nMaterial Type: \" + self2.type + \"\\n\\nProgram Info Log: \" + programLog + \"\\n\" + vertexErrors + \"\\n\" + fragmentErrors\n          );\n        }\n      } else if (programLog !== \"\") {\n        console.warn(\"THREE.WebGLProgram: Program Info Log:\", programLog);\n      } else if (vertexLog === \"\" || fragmentLog === \"\") {\n        haveDiagnostics = false;\n      }\n      if (haveDiagnostics) {\n        self2.diagnostics = {\n          runnable,\n          programLog,\n          vertexShader: {\n            log: vertexLog,\n            prefix: prefixVertex\n          },\n          fragmentShader: {\n            log: fragmentLog,\n            prefix: prefixFragment\n          }\n        };\n      }\n    }\n    gl.deleteShader(glVertexShader);\n    gl.deleteShader(glFragmentShader);\n    cachedUniforms = new WebGLUniforms(gl, program);\n    cachedAttributes = fetchAttributeLocations(gl, program);\n  }\n  let cachedUniforms;\n  this.getUniforms = function() {\n    if (cachedUniforms === void 0) {\n      onFirstUse(this);\n    }\n    return cachedUniforms;\n  };\n  let cachedAttributes;\n  this.getAttributes = function() {\n    if (cachedAttributes === void 0) {\n      onFirstUse(this);\n    }\n    return cachedAttributes;\n  };\n  let programReady = parameters.rendererExtensionParallelShaderCompile === false;\n  this.isReady = function() {\n    if (programReady === false) {\n      programReady = gl.getProgramParameter(program, COMPLETION_STATUS_KHR);\n    }\n    return programReady;\n  };\n  this.destroy = function() {\n    bindingStates.releaseStatesOfProgram(this);\n    gl.deleteProgram(program);\n    this.program = void 0;\n  };\n  this.type = parameters.shaderType;\n  this.name = parameters.shaderName;\n  this.id = programIdCount++;\n  this.cacheKey = cacheKey;\n  this.usedTimes = 1;\n  this.program = program;\n  this.vertexShader = glVertexShader;\n  this.fragmentShader = glFragmentShader;\n  return this;\n}\nfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) {\n  const _programLayers = new Layers();\n  const _customShaders = new WebGLShaderCache();\n  const _activeChannels = /* @__PURE__ */ new Set();\n  const programs = [];\n  const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n  const reverseDepthBuffer = capabilities.reverseDepthBuffer;\n  const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n  let precision = capabilities.precision;\n  const shaderIDs = {\n    MeshDepthMaterial: \"depth\",\n    MeshDistanceMaterial: \"distanceRGBA\",\n    MeshNormalMaterial: \"normal\",\n    MeshBasicMaterial: \"basic\",\n    MeshLambertMaterial: \"lambert\",\n    MeshPhongMaterial: \"phong\",\n    MeshToonMaterial: \"toon\",\n    MeshStandardMaterial: \"physical\",\n    MeshPhysicalMaterial: \"physical\",\n    MeshMatcapMaterial: \"matcap\",\n    LineBasicMaterial: \"basic\",\n    LineDashedMaterial: \"dashed\",\n    PointsMaterial: \"points\",\n    ShadowMaterial: \"shadow\",\n    SpriteMaterial: \"sprite\"\n  };\n  function getChannel(value) {\n    _activeChannels.add(value);\n    if (value === 0) return \"uv\";\n    return `uv${value}`;\n  }\n  function getParameters(material, lights, shadows, scene, object) {\n    const fog = scene.fog;\n    const geometry = object.geometry;\n    const environment = material.isMeshStandardMaterial ? scene.environment : null;\n    const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n    const envMapCubeUVHeight = !!envMap && envMap.mapping === CubeUVReflectionMapping ? envMap.image.height : null;\n    const shaderID = shaderIDs[material.type];\n    if (material.precision !== null) {\n      precision = capabilities.getMaxPrecision(material.precision);\n      if (precision !== material.precision) {\n        console.warn(\"THREE.WebGLProgram.getParameters:\", material.precision, \"not supported, using\", precision, \"instead.\");\n      }\n    }\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    let morphTextureStride = 0;\n    if (geometry.morphAttributes.position !== void 0) morphTextureStride = 1;\n    if (geometry.morphAttributes.normal !== void 0) morphTextureStride = 2;\n    if (geometry.morphAttributes.color !== void 0) morphTextureStride = 3;\n    let vertexShader, fragmentShader;\n    let customVertexShaderID, customFragmentShaderID;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      vertexShader = shader.vertexShader;\n      fragmentShader = shader.fragmentShader;\n    } else {\n      vertexShader = material.vertexShader;\n      fragmentShader = material.fragmentShader;\n      _customShaders.update(material);\n      customVertexShaderID = _customShaders.getVertexShaderID(material);\n      customFragmentShaderID = _customShaders.getFragmentShaderID(material);\n    }\n    const currentRenderTarget = renderer.getRenderTarget();\n    const IS_INSTANCEDMESH = object.isInstancedMesh === true;\n    const IS_BATCHEDMESH = object.isBatchedMesh === true;\n    const HAS_MAP = !!material.map;\n    const HAS_MATCAP = !!material.matcap;\n    const HAS_ENVMAP = !!envMap;\n    const HAS_AOMAP = !!material.aoMap;\n    const HAS_LIGHTMAP = !!material.lightMap;\n    const HAS_BUMPMAP = !!material.bumpMap;\n    const HAS_NORMALMAP = !!material.normalMap;\n    const HAS_DISPLACEMENTMAP = !!material.displacementMap;\n    const HAS_EMISSIVEMAP = !!material.emissiveMap;\n    const HAS_METALNESSMAP = !!material.metalnessMap;\n    const HAS_ROUGHNESSMAP = !!material.roughnessMap;\n    const HAS_ANISOTROPY = material.anisotropy > 0;\n    const HAS_CLEARCOAT = material.clearcoat > 0;\n    const HAS_DISPERSION = material.dispersion > 0;\n    const HAS_IRIDESCENCE = material.iridescence > 0;\n    const HAS_SHEEN = material.sheen > 0;\n    const HAS_TRANSMISSION = material.transmission > 0;\n    const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !!material.anisotropyMap;\n    const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !!material.clearcoatMap;\n    const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !!material.clearcoatNormalMap;\n    const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !!material.clearcoatRoughnessMap;\n    const HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !!material.iridescenceMap;\n    const HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !!material.iridescenceThicknessMap;\n    const HAS_SHEEN_COLORMAP = HAS_SHEEN && !!material.sheenColorMap;\n    const HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !!material.sheenRoughnessMap;\n    const HAS_SPECULARMAP = !!material.specularMap;\n    const HAS_SPECULAR_COLORMAP = !!material.specularColorMap;\n    const HAS_SPECULAR_INTENSITYMAP = !!material.specularIntensityMap;\n    const HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !!material.transmissionMap;\n    const HAS_THICKNESSMAP = HAS_TRANSMISSION && !!material.thicknessMap;\n    const HAS_GRADIENTMAP = !!material.gradientMap;\n    const HAS_ALPHAMAP = !!material.alphaMap;\n    const HAS_ALPHATEST = material.alphaTest > 0;\n    const HAS_ALPHAHASH = !!material.alphaHash;\n    const HAS_EXTENSIONS = !!material.extensions;\n    let toneMapping = NoToneMapping;\n    if (material.toneMapped) {\n      if (currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true) {\n        toneMapping = renderer.toneMapping;\n      }\n    }\n    const parameters = {\n      shaderID,\n      shaderType: material.type,\n      shaderName: material.name,\n      vertexShader,\n      fragmentShader,\n      defines: material.defines,\n      customVertexShaderID,\n      customFragmentShaderID,\n      isRawShaderMaterial: material.isRawShaderMaterial === true,\n      glslVersion: material.glslVersion,\n      precision,\n      batching: IS_BATCHEDMESH,\n      batchingColor: IS_BATCHEDMESH && object._colorsTexture !== null,\n      instancing: IS_INSTANCEDMESH,\n      instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n      instancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,\n      supportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n      outputColorSpace: currentRenderTarget === null ? renderer.outputColorSpace : currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace,\n      alphaToCoverage: !!material.alphaToCoverage,\n      map: HAS_MAP,\n      matcap: HAS_MATCAP,\n      envMap: HAS_ENVMAP,\n      envMapMode: HAS_ENVMAP && envMap.mapping,\n      envMapCubeUVHeight,\n      aoMap: HAS_AOMAP,\n      lightMap: HAS_LIGHTMAP,\n      bumpMap: HAS_BUMPMAP,\n      normalMap: HAS_NORMALMAP,\n      displacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n      emissiveMap: HAS_EMISSIVEMAP,\n      normalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n      normalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n      metalnessMap: HAS_METALNESSMAP,\n      roughnessMap: HAS_ROUGHNESSMAP,\n      anisotropy: HAS_ANISOTROPY,\n      anisotropyMap: HAS_ANISOTROPYMAP,\n      clearcoat: HAS_CLEARCOAT,\n      clearcoatMap: HAS_CLEARCOATMAP,\n      clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n      clearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n      dispersion: HAS_DISPERSION,\n      iridescence: HAS_IRIDESCENCE,\n      iridescenceMap: HAS_IRIDESCENCEMAP,\n      iridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n      sheen: HAS_SHEEN,\n      sheenColorMap: HAS_SHEEN_COLORMAP,\n      sheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n      specularMap: HAS_SPECULARMAP,\n      specularColorMap: HAS_SPECULAR_COLORMAP,\n      specularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n      transmission: HAS_TRANSMISSION,\n      transmissionMap: HAS_TRANSMISSIONMAP,\n      thicknessMap: HAS_THICKNESSMAP,\n      gradientMap: HAS_GRADIENTMAP,\n      opaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n      alphaMap: HAS_ALPHAMAP,\n      alphaTest: HAS_ALPHATEST,\n      alphaHash: HAS_ALPHAHASH,\n      combine: material.combine,\n      //\n      mapUv: HAS_MAP && getChannel(material.map.channel),\n      aoMapUv: HAS_AOMAP && getChannel(material.aoMap.channel),\n      lightMapUv: HAS_LIGHTMAP && getChannel(material.lightMap.channel),\n      bumpMapUv: HAS_BUMPMAP && getChannel(material.bumpMap.channel),\n      normalMapUv: HAS_NORMALMAP && getChannel(material.normalMap.channel),\n      displacementMapUv: HAS_DISPLACEMENTMAP && getChannel(material.displacementMap.channel),\n      emissiveMapUv: HAS_EMISSIVEMAP && getChannel(material.emissiveMap.channel),\n      metalnessMapUv: HAS_METALNESSMAP && getChannel(material.metalnessMap.channel),\n      roughnessMapUv: HAS_ROUGHNESSMAP && getChannel(material.roughnessMap.channel),\n      anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel(material.anisotropyMap.channel),\n      clearcoatMapUv: HAS_CLEARCOATMAP && getChannel(material.clearcoatMap.channel),\n      clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel(material.clearcoatNormalMap.channel),\n      clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel(material.clearcoatRoughnessMap.channel),\n      iridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel(material.iridescenceMap.channel),\n      iridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel(material.iridescenceThicknessMap.channel),\n      sheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel(material.sheenColorMap.channel),\n      sheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel(material.sheenRoughnessMap.channel),\n      specularMapUv: HAS_SPECULARMAP && getChannel(material.specularMap.channel),\n      specularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel(material.specularColorMap.channel),\n      specularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel(material.specularIntensityMap.channel),\n      transmissionMapUv: HAS_TRANSMISSIONMAP && getChannel(material.transmissionMap.channel),\n      thicknessMapUv: HAS_THICKNESSMAP && getChannel(material.thicknessMap.channel),\n      alphaMapUv: HAS_ALPHAMAP && getChannel(material.alphaMap.channel),\n      //\n      vertexTangents: !!geometry.attributes.tangent && (HAS_NORMALMAP || HAS_ANISOTROPY),\n      vertexColors: material.vertexColors,\n      vertexAlphas: material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n      pointsUvs: object.isPoints === true && !!geometry.attributes.uv && (HAS_MAP || HAS_ALPHAMAP),\n      fog: !!fog,\n      useFog: material.fog === true,\n      fogExp2: !!fog && fog.isFogExp2,\n      flatShading: material.flatShading === true,\n      sizeAttenuation: material.sizeAttenuation === true,\n      logarithmicDepthBuffer,\n      reverseDepthBuffer,\n      skinning: object.isSkinnedMesh === true,\n      morphTargets: geometry.morphAttributes.position !== void 0,\n      morphNormals: geometry.morphAttributes.normal !== void 0,\n      morphColors: geometry.morphAttributes.color !== void 0,\n      morphTargetsCount,\n      morphTextureStride,\n      numDirLights: lights.directional.length,\n      numPointLights: lights.point.length,\n      numSpotLights: lights.spot.length,\n      numSpotLightMaps: lights.spotLightMap.length,\n      numRectAreaLights: lights.rectArea.length,\n      numHemiLights: lights.hemi.length,\n      numDirLightShadows: lights.directionalShadowMap.length,\n      numPointLightShadows: lights.pointShadowMap.length,\n      numSpotLightShadows: lights.spotShadowMap.length,\n      numSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n      numLightProbes: lights.numLightProbes,\n      numClippingPlanes: clipping.numPlanes,\n      numClipIntersection: clipping.numIntersection,\n      dithering: material.dithering,\n      shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n      shadowMapType: renderer.shadowMap.type,\n      toneMapping,\n      decodeVideoTexture: HAS_MAP && material.map.isVideoTexture === true && ColorManagement.getTransfer(material.map.colorSpace) === SRGBTransfer,\n      premultipliedAlpha: material.premultipliedAlpha,\n      doubleSided: material.side === DoubleSide,\n      flipSided: material.side === BackSide,\n      useDepthPacking: material.depthPacking >= 0,\n      depthPacking: material.depthPacking || 0,\n      index0AttributeName: material.index0AttributeName,\n      extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has(\"WEBGL_clip_cull_distance\"),\n      extensionMultiDraw: (HAS_EXTENSIONS && material.extensions.multiDraw === true || IS_BATCHEDMESH) && extensions.has(\"WEBGL_multi_draw\"),\n      rendererExtensionParallelShaderCompile: extensions.has(\"KHR_parallel_shader_compile\"),\n      customProgramCacheKey: material.customProgramCacheKey()\n    };\n    parameters.vertexUv1s = _activeChannels.has(1);\n    parameters.vertexUv2s = _activeChannels.has(2);\n    parameters.vertexUv3s = _activeChannels.has(3);\n    _activeChannels.clear();\n    return parameters;\n  }\n  function getProgramCacheKey(parameters) {\n    const array = [];\n    if (parameters.shaderID) {\n      array.push(parameters.shaderID);\n    } else {\n      array.push(parameters.customVertexShaderID);\n      array.push(parameters.customFragmentShaderID);\n    }\n    if (parameters.defines !== void 0) {\n      for (const name in parameters.defines) {\n        array.push(name);\n        array.push(parameters.defines[name]);\n      }\n    }\n    if (parameters.isRawShaderMaterial === false) {\n      getProgramCacheKeyParameters(array, parameters);\n      getProgramCacheKeyBooleans(array, parameters);\n      array.push(renderer.outputColorSpace);\n    }\n    array.push(parameters.customProgramCacheKey);\n    return array.join();\n  }\n  function getProgramCacheKeyParameters(array, parameters) {\n    array.push(parameters.precision);\n    array.push(parameters.outputColorSpace);\n    array.push(parameters.envMapMode);\n    array.push(parameters.envMapCubeUVHeight);\n    array.push(parameters.mapUv);\n    array.push(parameters.alphaMapUv);\n    array.push(parameters.lightMapUv);\n    array.push(parameters.aoMapUv);\n    array.push(parameters.bumpMapUv);\n    array.push(parameters.normalMapUv);\n    array.push(parameters.displacementMapUv);\n    array.push(parameters.emissiveMapUv);\n    array.push(parameters.metalnessMapUv);\n    array.push(parameters.roughnessMapUv);\n    array.push(parameters.anisotropyMapUv);\n    array.push(parameters.clearcoatMapUv);\n    array.push(parameters.clearcoatNormalMapUv);\n    array.push(parameters.clearcoatRoughnessMapUv);\n    array.push(parameters.iridescenceMapUv);\n    array.push(parameters.iridescenceThicknessMapUv);\n    array.push(parameters.sheenColorMapUv);\n    array.push(parameters.sheenRoughnessMapUv);\n    array.push(parameters.specularMapUv);\n    array.push(parameters.specularColorMapUv);\n    array.push(parameters.specularIntensityMapUv);\n    array.push(parameters.transmissionMapUv);\n    array.push(parameters.thicknessMapUv);\n    array.push(parameters.combine);\n    array.push(parameters.fogExp2);\n    array.push(parameters.sizeAttenuation);\n    array.push(parameters.morphTargetsCount);\n    array.push(parameters.morphAttributeCount);\n    array.push(parameters.numDirLights);\n    array.push(parameters.numPointLights);\n    array.push(parameters.numSpotLights);\n    array.push(parameters.numSpotLightMaps);\n    array.push(parameters.numHemiLights);\n    array.push(parameters.numRectAreaLights);\n    array.push(parameters.numDirLightShadows);\n    array.push(parameters.numPointLightShadows);\n    array.push(parameters.numSpotLightShadows);\n    array.push(parameters.numSpotLightShadowsWithMaps);\n    array.push(parameters.numLightProbes);\n    array.push(parameters.shadowMapType);\n    array.push(parameters.toneMapping);\n    array.push(parameters.numClippingPlanes);\n    array.push(parameters.numClipIntersection);\n    array.push(parameters.depthPacking);\n  }\n  function getProgramCacheKeyBooleans(array, parameters) {\n    _programLayers.disableAll();\n    if (parameters.supportsVertexTextures)\n      _programLayers.enable(0);\n    if (parameters.instancing)\n      _programLayers.enable(1);\n    if (parameters.instancingColor)\n      _programLayers.enable(2);\n    if (parameters.instancingMorph)\n      _programLayers.enable(3);\n    if (parameters.matcap)\n      _programLayers.enable(4);\n    if (parameters.envMap)\n      _programLayers.enable(5);\n    if (parameters.normalMapObjectSpace)\n      _programLayers.enable(6);\n    if (parameters.normalMapTangentSpace)\n      _programLayers.enable(7);\n    if (parameters.clearcoat)\n      _programLayers.enable(8);\n    if (parameters.iridescence)\n      _programLayers.enable(9);\n    if (parameters.alphaTest)\n      _programLayers.enable(10);\n    if (parameters.vertexColors)\n      _programLayers.enable(11);\n    if (parameters.vertexAlphas)\n      _programLayers.enable(12);\n    if (parameters.vertexUv1s)\n      _programLayers.enable(13);\n    if (parameters.vertexUv2s)\n      _programLayers.enable(14);\n    if (parameters.vertexUv3s)\n      _programLayers.enable(15);\n    if (parameters.vertexTangents)\n      _programLayers.enable(16);\n    if (parameters.anisotropy)\n      _programLayers.enable(17);\n    if (parameters.alphaHash)\n      _programLayers.enable(18);\n    if (parameters.batching)\n      _programLayers.enable(19);\n    if (parameters.dispersion)\n      _programLayers.enable(20);\n    if (parameters.batchingColor)\n      _programLayers.enable(21);\n    array.push(_programLayers.mask);\n    _programLayers.disableAll();\n    if (parameters.fog)\n      _programLayers.enable(0);\n    if (parameters.useFog)\n      _programLayers.enable(1);\n    if (parameters.flatShading)\n      _programLayers.enable(2);\n    if (parameters.logarithmicDepthBuffer)\n      _programLayers.enable(3);\n    if (parameters.reverseDepthBuffer)\n      _programLayers.enable(4);\n    if (parameters.skinning)\n      _programLayers.enable(5);\n    if (parameters.morphTargets)\n      _programLayers.enable(6);\n    if (parameters.morphNormals)\n      _programLayers.enable(7);\n    if (parameters.morphColors)\n      _programLayers.enable(8);\n    if (parameters.premultipliedAlpha)\n      _programLayers.enable(9);\n    if (parameters.shadowMapEnabled)\n      _programLayers.enable(10);\n    if (parameters.doubleSided)\n      _programLayers.enable(11);\n    if (parameters.flipSided)\n      _programLayers.enable(12);\n    if (parameters.useDepthPacking)\n      _programLayers.enable(13);\n    if (parameters.dithering)\n      _programLayers.enable(14);\n    if (parameters.transmission)\n      _programLayers.enable(15);\n    if (parameters.sheen)\n      _programLayers.enable(16);\n    if (parameters.opaque)\n      _programLayers.enable(17);\n    if (parameters.pointsUvs)\n      _programLayers.enable(18);\n    if (parameters.decodeVideoTexture)\n      _programLayers.enable(19);\n    if (parameters.alphaToCoverage)\n      _programLayers.enable(20);\n    array.push(_programLayers.mask);\n  }\n  function getUniforms(material) {\n    const shaderID = shaderIDs[material.type];\n    let uniforms;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      uniforms = UniformsUtils.clone(shader.uniforms);\n    } else {\n      uniforms = material.uniforms;\n    }\n    return uniforms;\n  }\n  function acquireProgram(parameters, cacheKey) {\n    let program;\n    for (let p3 = 0, pl = programs.length; p3 < pl; p3++) {\n      const preexistingProgram = programs[p3];\n      if (preexistingProgram.cacheKey === cacheKey) {\n        program = preexistingProgram;\n        ++program.usedTimes;\n        break;\n      }\n    }\n    if (program === void 0) {\n      program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n      programs.push(program);\n    }\n    return program;\n  }\n  function releaseProgram(program) {\n    if (--program.usedTimes === 0) {\n      const i2 = programs.indexOf(program);\n      programs[i2] = programs[programs.length - 1];\n      programs.pop();\n      program.destroy();\n    }\n  }\n  function releaseShaderCache(material) {\n    _customShaders.remove(material);\n  }\n  function dispose2() {\n    _customShaders.dispose();\n  }\n  return {\n    getParameters,\n    getProgramCacheKey,\n    getUniforms,\n    acquireProgram,\n    releaseProgram,\n    releaseShaderCache,\n    // Exposed for resource monitoring & error feedback via renderer.info:\n    programs,\n    dispose: dispose2\n  };\n}\nfunction WebGLProperties() {\n  let properties = /* @__PURE__ */ new WeakMap();\n  function has(object) {\n    return properties.has(object);\n  }\n  function get(object) {\n    let map = properties.get(object);\n    if (map === void 0) {\n      map = {};\n      properties.set(object, map);\n    }\n    return map;\n  }\n  function remove(object) {\n    properties.delete(object);\n  }\n  function update(object, key, value) {\n    properties.get(object)[key] = value;\n  }\n  function dispose2() {\n    properties = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    has,\n    get,\n    remove,\n    update,\n    dispose: dispose2\n  };\n}\nfunction painterSortStable(a, b) {\n  if (a.groupOrder !== b.groupOrder) {\n    return a.groupOrder - b.groupOrder;\n  } else if (a.renderOrder !== b.renderOrder) {\n    return a.renderOrder - b.renderOrder;\n  } else if (a.material.id !== b.material.id) {\n    return a.material.id - b.material.id;\n  } else if (a.z !== b.z) {\n    return a.z - b.z;\n  } else {\n    return a.id - b.id;\n  }\n}\nfunction reversePainterSortStable(a, b) {\n  if (a.groupOrder !== b.groupOrder) {\n    return a.groupOrder - b.groupOrder;\n  } else if (a.renderOrder !== b.renderOrder) {\n    return a.renderOrder - b.renderOrder;\n  } else if (a.z !== b.z) {\n    return b.z - a.z;\n  } else {\n    return a.id - b.id;\n  }\n}\nfunction WebGLRenderList() {\n  const renderItems = [];\n  let renderItemsIndex = 0;\n  const opaque = [];\n  const transmissive = [];\n  const transparent = [];\n  function init() {\n    renderItemsIndex = 0;\n    opaque.length = 0;\n    transmissive.length = 0;\n    transparent.length = 0;\n  }\n  function getNextRenderItem(object, geometry, material, groupOrder, z2, group) {\n    let renderItem = renderItems[renderItemsIndex];\n    if (renderItem === void 0) {\n      renderItem = {\n        id: object.id,\n        object,\n        geometry,\n        material,\n        groupOrder,\n        renderOrder: object.renderOrder,\n        z: z2,\n        group\n      };\n      renderItems[renderItemsIndex] = renderItem;\n    } else {\n      renderItem.id = object.id;\n      renderItem.object = object;\n      renderItem.geometry = geometry;\n      renderItem.material = material;\n      renderItem.groupOrder = groupOrder;\n      renderItem.renderOrder = object.renderOrder;\n      renderItem.z = z2;\n      renderItem.group = group;\n    }\n    renderItemsIndex++;\n    return renderItem;\n  }\n  function push(object, geometry, material, groupOrder, z2, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z2, group);\n    if (material.transmission > 0) {\n      transmissive.push(renderItem);\n    } else if (material.transparent === true) {\n      transparent.push(renderItem);\n    } else {\n      opaque.push(renderItem);\n    }\n  }\n  function unshift(object, geometry, material, groupOrder, z2, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z2, group);\n    if (material.transmission > 0) {\n      transmissive.unshift(renderItem);\n    } else if (material.transparent === true) {\n      transparent.unshift(renderItem);\n    } else {\n      opaque.unshift(renderItem);\n    }\n  }\n  function sort(customOpaqueSort, customTransparentSort) {\n    if (opaque.length > 1) opaque.sort(customOpaqueSort || painterSortStable);\n    if (transmissive.length > 1) transmissive.sort(customTransparentSort || reversePainterSortStable);\n    if (transparent.length > 1) transparent.sort(customTransparentSort || reversePainterSortStable);\n  }\n  function finish() {\n    for (let i2 = renderItemsIndex, il = renderItems.length; i2 < il; i2++) {\n      const renderItem = renderItems[i2];\n      if (renderItem.id === null) break;\n      renderItem.id = null;\n      renderItem.object = null;\n      renderItem.geometry = null;\n      renderItem.material = null;\n      renderItem.group = null;\n    }\n  }\n  return {\n    opaque,\n    transmissive,\n    transparent,\n    init,\n    push,\n    unshift,\n    finish,\n    sort\n  };\n}\nfunction WebGLRenderLists() {\n  let lists = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth) {\n    const listArray = lists.get(scene);\n    let list;\n    if (listArray === void 0) {\n      list = new WebGLRenderList();\n      lists.set(scene, [list]);\n    } else {\n      if (renderCallDepth >= listArray.length) {\n        list = new WebGLRenderList();\n        listArray.push(list);\n      } else {\n        list = listArray[renderCallDepth];\n      }\n    }\n    return list;\n  }\n  function dispose2() {\n    lists = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nfunction UniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            direction: new Vector3(),\n            color: new Color()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            position: new Vector3(),\n            direction: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            coneCos: 0,\n            penumbraCos: 0,\n            decay: 0\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            position: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            decay: 0\n          };\n          break;\n        case \"HemisphereLight\":\n          uniforms = {\n            direction: new Vector3(),\n            skyColor: new Color(),\n            groundColor: new Color()\n          };\n          break;\n        case \"RectAreaLight\":\n          uniforms = {\n            color: new Color(),\n            position: new Vector3(),\n            halfWidth: new Vector3(),\n            halfHeight: new Vector3()\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nfunction ShadowUniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            shadowIntensity: 1,\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            shadowIntensity: 1,\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            shadowIntensity: 1,\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2(),\n            shadowCameraNear: 1,\n            shadowCameraFar: 1e3\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nfunction shadowCastingAndTexturingLightsFirst(lightA, lightB) {\n  return (lightB.castShadow ? 2 : 0) - (lightA.castShadow ? 2 : 0) + (lightB.map ? 1 : 0) - (lightA.map ? 1 : 0);\n}\nfunction WebGLLights(extensions) {\n  const cache = new UniformsCache();\n  const shadowCache = ShadowUniformsCache();\n  const state = {\n    version: 0,\n    hash: {\n      directionalLength: -1,\n      pointLength: -1,\n      spotLength: -1,\n      rectAreaLength: -1,\n      hemiLength: -1,\n      numDirectionalShadows: -1,\n      numPointShadows: -1,\n      numSpotShadows: -1,\n      numSpotMaps: -1,\n      numLightProbes: -1\n    },\n    ambient: [0, 0, 0],\n    probe: [],\n    directional: [],\n    directionalShadow: [],\n    directionalShadowMap: [],\n    directionalShadowMatrix: [],\n    spot: [],\n    spotLightMap: [],\n    spotShadow: [],\n    spotShadowMap: [],\n    spotLightMatrix: [],\n    rectArea: [],\n    rectAreaLTC1: null,\n    rectAreaLTC2: null,\n    point: [],\n    pointShadow: [],\n    pointShadowMap: [],\n    pointShadowMatrix: [],\n    hemi: [],\n    numSpotLightShadowsWithMaps: 0,\n    numLightProbes: 0\n  };\n  for (let i2 = 0; i2 < 9; i2++) state.probe.push(new Vector3());\n  const vector3 = new Vector3();\n  const matrix4 = new Matrix4();\n  const matrix42 = new Matrix4();\n  function setup(lights) {\n    let r2 = 0, g3 = 0, b = 0;\n    for (let i2 = 0; i2 < 9; i2++) state.probe[i2].set(0, 0, 0);\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    let numDirectionalShadows = 0;\n    let numPointShadows = 0;\n    let numSpotShadows = 0;\n    let numSpotMaps = 0;\n    let numSpotShadowsWithMaps = 0;\n    let numLightProbes = 0;\n    lights.sort(shadowCastingAndTexturingLightsFirst);\n    for (let i2 = 0, l2 = lights.length; i2 < l2; i2++) {\n      const light = lights[i2];\n      const color = light.color;\n      const intensity = light.intensity;\n      const distance = light.distance;\n      const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n      if (light.isAmbientLight) {\n        r2 += color.r * intensity;\n        g3 += color.g * intensity;\n        b += color.b * intensity;\n      } else if (light.isLightProbe) {\n        for (let j2 = 0; j2 < 9; j2++) {\n          state.probe[j2].addScaledVector(light.sh.coefficients[j2], intensity);\n        }\n        numLightProbes++;\n      } else if (light.isDirectionalLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity);\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowIntensity = shadow.intensity;\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.directionalShadow[directionalLength] = shadowUniforms;\n          state.directionalShadowMap[directionalLength] = shadowMap;\n          state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n          numDirectionalShadows++;\n        }\n        state.directional[directionalLength] = uniforms;\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = cache.get(light);\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.color.copy(color).multiplyScalar(intensity);\n        uniforms.distance = distance;\n        uniforms.coneCos = Math.cos(light.angle);\n        uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n        uniforms.decay = light.decay;\n        state.spot[spotLength] = uniforms;\n        const shadow = light.shadow;\n        if (light.map) {\n          state.spotLightMap[numSpotMaps] = light.map;\n          numSpotMaps++;\n          shadow.updateMatrices(light);\n          if (light.castShadow) numSpotShadowsWithMaps++;\n        }\n        state.spotLightMatrix[spotLength] = shadow.matrix;\n        if (light.castShadow) {\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowIntensity = shadow.intensity;\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.spotShadow[spotLength] = shadowUniforms;\n          state.spotShadowMap[spotLength] = shadowMap;\n          numSpotShadows++;\n        }\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(color).multiplyScalar(intensity);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        state.rectArea[rectAreaLength] = uniforms;\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity);\n        uniforms.distance = light.distance;\n        uniforms.decay = light.decay;\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowIntensity = shadow.intensity;\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          shadowUniforms.shadowCameraNear = shadow.camera.near;\n          shadowUniforms.shadowCameraFar = shadow.camera.far;\n          state.pointShadow[pointLength] = shadowUniforms;\n          state.pointShadowMap[pointLength] = shadowMap;\n          state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n          numPointShadows++;\n        }\n        state.point[pointLength] = uniforms;\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = cache.get(light);\n        uniforms.skyColor.copy(light.color).multiplyScalar(intensity);\n        uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity);\n        state.hemi[hemiLength] = uniforms;\n        hemiLength++;\n      }\n    }\n    if (rectAreaLength > 0) {\n      if (extensions.has(\"OES_texture_float_linear\") === true) {\n        state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n        state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n      } else {\n        state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n        state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n      }\n    }\n    state.ambient[0] = r2;\n    state.ambient[1] = g3;\n    state.ambient[2] = b;\n    const hash = state.hash;\n    if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows || hash.numSpotMaps !== numSpotMaps || hash.numLightProbes !== numLightProbes) {\n      state.directional.length = directionalLength;\n      state.spot.length = spotLength;\n      state.rectArea.length = rectAreaLength;\n      state.point.length = pointLength;\n      state.hemi.length = hemiLength;\n      state.directionalShadow.length = numDirectionalShadows;\n      state.directionalShadowMap.length = numDirectionalShadows;\n      state.pointShadow.length = numPointShadows;\n      state.pointShadowMap.length = numPointShadows;\n      state.spotShadow.length = numSpotShadows;\n      state.spotShadowMap.length = numSpotShadows;\n      state.directionalShadowMatrix.length = numDirectionalShadows;\n      state.pointShadowMatrix.length = numPointShadows;\n      state.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n      state.spotLightMap.length = numSpotMaps;\n      state.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n      state.numLightProbes = numLightProbes;\n      hash.directionalLength = directionalLength;\n      hash.pointLength = pointLength;\n      hash.spotLength = spotLength;\n      hash.rectAreaLength = rectAreaLength;\n      hash.hemiLength = hemiLength;\n      hash.numDirectionalShadows = numDirectionalShadows;\n      hash.numPointShadows = numPointShadows;\n      hash.numSpotShadows = numSpotShadows;\n      hash.numSpotMaps = numSpotMaps;\n      hash.numLightProbes = numLightProbes;\n      state.version = nextVersion++;\n    }\n  }\n  function setupView(lights, camera) {\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    const viewMatrix = camera.matrixWorldInverse;\n    for (let i2 = 0, l2 = lights.length; i2 < l2; i2++) {\n      const light = lights[i2];\n      if (light.isDirectionalLight) {\n        const uniforms = state.directional[directionalLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector3.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector3);\n        uniforms.direction.transformDirection(viewMatrix);\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = state.spot[spotLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector3.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector3);\n        uniforms.direction.transformDirection(viewMatrix);\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = state.rectArea[rectAreaLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        matrix42.identity();\n        matrix4.copy(light.matrixWorld);\n        matrix4.premultiply(viewMatrix);\n        matrix42.extractRotation(matrix4);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        uniforms.halfWidth.applyMatrix4(matrix42);\n        uniforms.halfHeight.applyMatrix4(matrix42);\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = state.point[pointLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = state.hemi[hemiLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        uniforms.direction.transformDirection(viewMatrix);\n        hemiLength++;\n      }\n    }\n  }\n  return {\n    setup,\n    setupView,\n    state\n  };\n}\nfunction WebGLRenderState(extensions) {\n  const lights = new WebGLLights(extensions);\n  const lightsArray = [];\n  const shadowsArray = [];\n  function init(camera) {\n    state.camera = camera;\n    lightsArray.length = 0;\n    shadowsArray.length = 0;\n  }\n  function pushLight(light) {\n    lightsArray.push(light);\n  }\n  function pushShadow(shadowLight) {\n    shadowsArray.push(shadowLight);\n  }\n  function setupLights() {\n    lights.setup(lightsArray);\n  }\n  function setupLightsView(camera) {\n    lights.setupView(lightsArray, camera);\n  }\n  const state = {\n    lightsArray,\n    shadowsArray,\n    camera: null,\n    lights,\n    transmissionRenderTarget: {}\n  };\n  return {\n    init,\n    state,\n    setupLights,\n    setupLightsView,\n    pushLight,\n    pushShadow\n  };\n}\nfunction WebGLRenderStates(extensions) {\n  let renderStates = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth = 0) {\n    const renderStateArray = renderStates.get(scene);\n    let renderState;\n    if (renderStateArray === void 0) {\n      renderState = new WebGLRenderState(extensions);\n      renderStates.set(scene, [renderState]);\n    } else {\n      if (renderCallDepth >= renderStateArray.length) {\n        renderState = new WebGLRenderState(extensions);\n        renderStateArray.push(renderState);\n      } else {\n        renderState = renderStateArray[renderCallDepth];\n      }\n    }\n    return renderState;\n  }\n  function dispose2() {\n    renderStates = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nfunction WebGLShadowMap(renderer, objects, capabilities) {\n  let _frustum2 = new Frustum();\n  const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({ depthPacking: RGBADepthPacking }), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = capabilities.maxTextureSize;\n  const shadowSide = { [FrontSide]: BackSide, [BackSide]: FrontSide, [DoubleSide]: DoubleSide };\n  const shadowMaterialVertical = new ShaderMaterial({\n    defines: {\n      VSM_SAMPLES: 8\n    },\n    uniforms: {\n      shadow_pass: { value: null },\n      resolution: { value: new Vector2() },\n      radius: { value: 4 }\n    },\n    vertexShader: vertex,\n    fragmentShader: fragment\n  });\n  const shadowMaterialHorizontal = shadowMaterialVertical.clone();\n  shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n  const fullScreenTri = new BufferGeometry();\n  fullScreenTri.setAttribute(\n    \"position\",\n    new BufferAttribute(\n      new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]),\n      3\n    )\n  );\n  const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n  const scope = this;\n  this.enabled = false;\n  this.autoUpdate = true;\n  this.needsUpdate = false;\n  this.type = PCFShadowMap;\n  let _previousType = this.type;\n  this.render = function(lights, scene, camera) {\n    if (scope.enabled === false) return;\n    if (scope.autoUpdate === false && scope.needsUpdate === false) return;\n    if (lights.length === 0) return;\n    const currentRenderTarget = renderer.getRenderTarget();\n    const activeCubeFace = renderer.getActiveCubeFace();\n    const activeMipmapLevel = renderer.getActiveMipmapLevel();\n    const _state = renderer.state;\n    _state.setBlending(NoBlending);\n    _state.buffers.color.setClear(1, 1, 1, 1);\n    _state.buffers.depth.setTest(true);\n    _state.setScissorTest(false);\n    const toVSM = _previousType !== VSMShadowMap && this.type === VSMShadowMap;\n    const fromVSM = _previousType === VSMShadowMap && this.type !== VSMShadowMap;\n    for (let i2 = 0, il = lights.length; i2 < il; i2++) {\n      const light = lights[i2];\n      const shadow = light.shadow;\n      if (shadow === void 0) {\n        console.warn(\"THREE.WebGLShadowMap:\", light, \"has no shadow.\");\n        continue;\n      }\n      if (shadow.autoUpdate === false && shadow.needsUpdate === false) continue;\n      _shadowMapSize.copy(shadow.mapSize);\n      const shadowFrameExtents = shadow.getFrameExtents();\n      _shadowMapSize.multiply(shadowFrameExtents);\n      _viewportSize.copy(shadow.mapSize);\n      if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n        if (_shadowMapSize.x > _maxTextureSize) {\n          _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n          _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n          shadow.mapSize.x = _viewportSize.x;\n        }\n        if (_shadowMapSize.y > _maxTextureSize) {\n          _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n          _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n          shadow.mapSize.y = _viewportSize.y;\n        }\n      }\n      if (shadow.map === null || toVSM === true || fromVSM === true) {\n        const pars = this.type !== VSMShadowMap ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n        if (shadow.map !== null) {\n          shadow.map.dispose();\n        }\n        shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n        shadow.map.texture.name = light.name + \".shadowMap\";\n        shadow.camera.updateProjectionMatrix();\n      }\n      renderer.setRenderTarget(shadow.map);\n      renderer.clear();\n      const viewportCount = shadow.getViewportCount();\n      for (let vp = 0; vp < viewportCount; vp++) {\n        const viewport = shadow.getViewport(vp);\n        _viewport.set(\n          _viewportSize.x * viewport.x,\n          _viewportSize.y * viewport.y,\n          _viewportSize.x * viewport.z,\n          _viewportSize.y * viewport.w\n        );\n        _state.viewport(_viewport);\n        shadow.updateMatrices(light, vp);\n        _frustum2 = shadow.getFrustum();\n        renderObject(scene, camera, shadow.camera, light, this.type);\n      }\n      if (shadow.isPointLightShadow !== true && this.type === VSMShadowMap) {\n        VSMPass(shadow, camera);\n      }\n      shadow.needsUpdate = false;\n    }\n    _previousType = this.type;\n    scope.needsUpdate = false;\n    renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n  };\n  function VSMPass(shadow, camera) {\n    const geometry = objects.update(fullScreenMesh);\n    if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) {\n      shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialVertical.needsUpdate = true;\n      shadowMaterialHorizontal.needsUpdate = true;\n    }\n    if (shadow.mapPass === null) {\n      shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y);\n    }\n    shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n    shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialVertical.uniforms.radius.value = shadow.radius;\n    renderer.setRenderTarget(shadow.mapPass);\n    renderer.clear();\n    renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null);\n    shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n    shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n    renderer.setRenderTarget(shadow.map);\n    renderer.clear();\n    renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n  }\n  function getDepthMaterial(object, material, light, type) {\n    let result = null;\n    const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n    if (customMaterial !== void 0) {\n      result = customMaterial;\n    } else {\n      result = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n      if (renderer.localClippingEnabled && material.clipShadows === true && Array.isArray(material.clippingPlanes) && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0 || material.map && material.alphaTest > 0) {\n        const keyA = result.uuid, keyB = material.uuid;\n        let materialsForVariant = _materialCache[keyA];\n        if (materialsForVariant === void 0) {\n          materialsForVariant = {};\n          _materialCache[keyA] = materialsForVariant;\n        }\n        let cachedMaterial = materialsForVariant[keyB];\n        if (cachedMaterial === void 0) {\n          cachedMaterial = result.clone();\n          materialsForVariant[keyB] = cachedMaterial;\n          material.addEventListener(\"dispose\", onMaterialDispose);\n        }\n        result = cachedMaterial;\n      }\n    }\n    result.visible = material.visible;\n    result.wireframe = material.wireframe;\n    if (type === VSMShadowMap) {\n      result.side = material.shadowSide !== null ? material.shadowSide : material.side;\n    } else {\n      result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n    }\n    result.alphaMap = material.alphaMap;\n    result.alphaTest = material.alphaTest;\n    result.map = material.map;\n    result.clipShadows = material.clipShadows;\n    result.clippingPlanes = material.clippingPlanes;\n    result.clipIntersection = material.clipIntersection;\n    result.displacementMap = material.displacementMap;\n    result.displacementScale = material.displacementScale;\n    result.displacementBias = material.displacementBias;\n    result.wireframeLinewidth = material.wireframeLinewidth;\n    result.linewidth = material.linewidth;\n    if (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n      const materialProperties = renderer.properties.get(result);\n      materialProperties.light = light;\n    }\n    return result;\n  }\n  function renderObject(object, camera, shadowCamera, light, type) {\n    if (object.visible === false) return;\n    const visible = object.layers.test(camera.layers);\n    if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n      if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum2.intersectsObject(object))) {\n        object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n        const geometry = objects.update(object);\n        const material = object.material;\n        if (Array.isArray(material)) {\n          const groups = geometry.groups;\n          for (let k3 = 0, kl = groups.length; k3 < kl; k3++) {\n            const group = groups[k3];\n            const groupMaterial = material[group.materialIndex];\n            if (groupMaterial && groupMaterial.visible) {\n              const depthMaterial = getDepthMaterial(object, groupMaterial, light, type);\n              object.onBeforeShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial, group);\n              renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n              object.onAfterShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial, group);\n            }\n          }\n        } else if (material.visible) {\n          const depthMaterial = getDepthMaterial(object, material, light, type);\n          object.onBeforeShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial, null);\n          renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n          object.onAfterShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial, null);\n        }\n      }\n    }\n    const children = object.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      renderObject(children[i2], camera, shadowCamera, light, type);\n    }\n  }\n  function onMaterialDispose(event) {\n    const material = event.target;\n    material.removeEventListener(\"dispose\", onMaterialDispose);\n    for (const id in _materialCache) {\n      const cache = _materialCache[id];\n      const uuid = event.target.uuid;\n      if (uuid in cache) {\n        const shadowMaterial = cache[uuid];\n        shadowMaterial.dispose();\n        delete cache[uuid];\n      }\n    }\n  }\n}\nfunction WebGLState(gl) {\n  function ColorBuffer() {\n    let locked = false;\n    const color = new Vector4();\n    let currentColorMask = null;\n    const currentColorClear = new Vector4(0, 0, 0, 0);\n    return {\n      setMask: function(colorMask) {\n        if (currentColorMask !== colorMask && !locked) {\n          gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n          currentColorMask = colorMask;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(r2, g3, b, a, premultipliedAlpha) {\n        if (premultipliedAlpha === true) {\n          r2 *= a;\n          g3 *= a;\n          b *= a;\n        }\n        color.set(r2, g3, b, a);\n        if (currentColorClear.equals(color) === false) {\n          gl.clearColor(r2, g3, b, a);\n          currentColorClear.copy(color);\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentColorMask = null;\n        currentColorClear.set(-1, 0, 0, 0);\n      }\n    };\n  }\n  function DepthBuffer() {\n    let locked = false;\n    let reversed = false;\n    let currentDepthMask = null;\n    let currentDepthFunc = null;\n    let currentDepthClear = null;\n    return {\n      setReversed: function(value) {\n        reversed = value;\n      },\n      setTest: function(depthTest) {\n        if (depthTest) {\n          enable(gl.DEPTH_TEST);\n        } else {\n          disable(gl.DEPTH_TEST);\n        }\n      },\n      setMask: function(depthMask) {\n        if (currentDepthMask !== depthMask && !locked) {\n          gl.depthMask(depthMask);\n          currentDepthMask = depthMask;\n        }\n      },\n      setFunc: function(depthFunc) {\n        if (reversed) depthFunc = reversedFuncs[depthFunc];\n        if (currentDepthFunc !== depthFunc) {\n          switch (depthFunc) {\n            case NeverDepth:\n              gl.depthFunc(gl.NEVER);\n              break;\n            case AlwaysDepth:\n              gl.depthFunc(gl.ALWAYS);\n              break;\n            case LessDepth:\n              gl.depthFunc(gl.LESS);\n              break;\n            case LessEqualDepth:\n              gl.depthFunc(gl.LEQUAL);\n              break;\n            case EqualDepth:\n              gl.depthFunc(gl.EQUAL);\n              break;\n            case GreaterEqualDepth:\n              gl.depthFunc(gl.GEQUAL);\n              break;\n            case GreaterDepth:\n              gl.depthFunc(gl.GREATER);\n              break;\n            case NotEqualDepth:\n              gl.depthFunc(gl.NOTEQUAL);\n              break;\n            default:\n              gl.depthFunc(gl.LEQUAL);\n          }\n          currentDepthFunc = depthFunc;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(depth) {\n        if (currentDepthClear !== depth) {\n          gl.clearDepth(depth);\n          currentDepthClear = depth;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentDepthMask = null;\n        currentDepthFunc = null;\n        currentDepthClear = null;\n      }\n    };\n  }\n  function StencilBuffer() {\n    let locked = false;\n    let currentStencilMask = null;\n    let currentStencilFunc = null;\n    let currentStencilRef = null;\n    let currentStencilFuncMask = null;\n    let currentStencilFail = null;\n    let currentStencilZFail = null;\n    let currentStencilZPass = null;\n    let currentStencilClear = null;\n    return {\n      setTest: function(stencilTest) {\n        if (!locked) {\n          if (stencilTest) {\n            enable(gl.STENCIL_TEST);\n          } else {\n            disable(gl.STENCIL_TEST);\n          }\n        }\n      },\n      setMask: function(stencilMask) {\n        if (currentStencilMask !== stencilMask && !locked) {\n          gl.stencilMask(stencilMask);\n          currentStencilMask = stencilMask;\n        }\n      },\n      setFunc: function(stencilFunc, stencilRef, stencilMask) {\n        if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n          gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n          currentStencilFunc = stencilFunc;\n          currentStencilRef = stencilRef;\n          currentStencilFuncMask = stencilMask;\n        }\n      },\n      setOp: function(stencilFail, stencilZFail, stencilZPass) {\n        if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n          gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n          currentStencilFail = stencilFail;\n          currentStencilZFail = stencilZFail;\n          currentStencilZPass = stencilZPass;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(stencil) {\n        if (currentStencilClear !== stencil) {\n          gl.clearStencil(stencil);\n          currentStencilClear = stencil;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentStencilMask = null;\n        currentStencilFunc = null;\n        currentStencilRef = null;\n        currentStencilFuncMask = null;\n        currentStencilFail = null;\n        currentStencilZFail = null;\n        currentStencilZPass = null;\n        currentStencilClear = null;\n      }\n    };\n  }\n  const colorBuffer = new ColorBuffer();\n  const depthBuffer = new DepthBuffer();\n  const stencilBuffer = new StencilBuffer();\n  const uboBindings = /* @__PURE__ */ new WeakMap();\n  const uboProgramMap = /* @__PURE__ */ new WeakMap();\n  let enabledCapabilities = {};\n  let currentBoundFramebuffers = {};\n  let currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n  let defaultDrawbuffers = [];\n  let currentProgram = null;\n  let currentBlendingEnabled = false;\n  let currentBlending = null;\n  let currentBlendEquation = null;\n  let currentBlendSrc = null;\n  let currentBlendDst = null;\n  let currentBlendEquationAlpha = null;\n  let currentBlendSrcAlpha = null;\n  let currentBlendDstAlpha = null;\n  let currentBlendColor = new Color(0, 0, 0);\n  let currentBlendAlpha = 0;\n  let currentPremultipledAlpha = false;\n  let currentFlipSided = null;\n  let currentCullFace = null;\n  let currentLineWidth = null;\n  let currentPolygonOffsetFactor = null;\n  let currentPolygonOffsetUnits = null;\n  const maxTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n  let lineWidthAvailable = false;\n  let version3 = 0;\n  const glVersion = gl.getParameter(gl.VERSION);\n  if (glVersion.indexOf(\"WebGL\") !== -1) {\n    version3 = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version3 >= 1;\n  } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n    version3 = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version3 >= 2;\n  }\n  let currentTextureSlot = null;\n  let currentBoundTextures = {};\n  const scissorParam = gl.getParameter(gl.SCISSOR_BOX);\n  const viewportParam = gl.getParameter(gl.VIEWPORT);\n  const currentScissor = new Vector4().fromArray(scissorParam);\n  const currentViewport = new Vector4().fromArray(viewportParam);\n  function createTexture(type, target2, count, dimensions) {\n    const data = new Uint8Array(4);\n    const texture = gl.createTexture();\n    gl.bindTexture(type, texture);\n    gl.texParameteri(type, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n    gl.texParameteri(type, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n    for (let i2 = 0; i2 < count; i2++) {\n      if (type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY) {\n        gl.texImage3D(target2, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n      } else {\n        gl.texImage2D(target2 + i2, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n      }\n    }\n    return texture;\n  }\n  const emptyTextures = {};\n  emptyTextures[gl.TEXTURE_2D] = createTexture(gl.TEXTURE_2D, gl.TEXTURE_2D, 1);\n  emptyTextures[gl.TEXTURE_CUBE_MAP] = createTexture(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6);\n  emptyTextures[gl.TEXTURE_2D_ARRAY] = createTexture(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1);\n  emptyTextures[gl.TEXTURE_3D] = createTexture(gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1);\n  colorBuffer.setClear(0, 0, 0, 1);\n  depthBuffer.setClear(1);\n  stencilBuffer.setClear(0);\n  enable(gl.DEPTH_TEST);\n  depthBuffer.setFunc(LessEqualDepth);\n  setFlipSided(false);\n  setCullFace(CullFaceBack);\n  enable(gl.CULL_FACE);\n  setBlending(NoBlending);\n  function enable(id) {\n    if (enabledCapabilities[id] !== true) {\n      gl.enable(id);\n      enabledCapabilities[id] = true;\n    }\n  }\n  function disable(id) {\n    if (enabledCapabilities[id] !== false) {\n      gl.disable(id);\n      enabledCapabilities[id] = false;\n    }\n  }\n  function bindFramebuffer(target2, framebuffer) {\n    if (currentBoundFramebuffers[target2] !== framebuffer) {\n      gl.bindFramebuffer(target2, framebuffer);\n      currentBoundFramebuffers[target2] = framebuffer;\n      if (target2 === gl.DRAW_FRAMEBUFFER) {\n        currentBoundFramebuffers[gl.FRAMEBUFFER] = framebuffer;\n      }\n      if (target2 === gl.FRAMEBUFFER) {\n        currentBoundFramebuffers[gl.DRAW_FRAMEBUFFER] = framebuffer;\n      }\n      return true;\n    }\n    return false;\n  }\n  function drawBuffers(renderTarget, framebuffer) {\n    let drawBuffers2 = defaultDrawbuffers;\n    let needsUpdate = false;\n    if (renderTarget) {\n      drawBuffers2 = currentDrawbuffers.get(framebuffer);\n      if (drawBuffers2 === void 0) {\n        drawBuffers2 = [];\n        currentDrawbuffers.set(framebuffer, drawBuffers2);\n      }\n      const textures = renderTarget.textures;\n      if (drawBuffers2.length !== textures.length || drawBuffers2[0] !== gl.COLOR_ATTACHMENT0) {\n        for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n          drawBuffers2[i2] = gl.COLOR_ATTACHMENT0 + i2;\n        }\n        drawBuffers2.length = textures.length;\n        needsUpdate = true;\n      }\n    } else {\n      if (drawBuffers2[0] !== gl.BACK) {\n        drawBuffers2[0] = gl.BACK;\n        needsUpdate = true;\n      }\n    }\n    if (needsUpdate) {\n      gl.drawBuffers(drawBuffers2);\n    }\n  }\n  function useProgram(program) {\n    if (currentProgram !== program) {\n      gl.useProgram(program);\n      currentProgram = program;\n      return true;\n    }\n    return false;\n  }\n  const equationToGL = {\n    [AddEquation]: gl.FUNC_ADD,\n    [SubtractEquation]: gl.FUNC_SUBTRACT,\n    [ReverseSubtractEquation]: gl.FUNC_REVERSE_SUBTRACT\n  };\n  equationToGL[MinEquation] = gl.MIN;\n  equationToGL[MaxEquation] = gl.MAX;\n  const factorToGL = {\n    [ZeroFactor]: gl.ZERO,\n    [OneFactor]: gl.ONE,\n    [SrcColorFactor]: gl.SRC_COLOR,\n    [SrcAlphaFactor]: gl.SRC_ALPHA,\n    [SrcAlphaSaturateFactor]: gl.SRC_ALPHA_SATURATE,\n    [DstColorFactor]: gl.DST_COLOR,\n    [DstAlphaFactor]: gl.DST_ALPHA,\n    [OneMinusSrcColorFactor]: gl.ONE_MINUS_SRC_COLOR,\n    [OneMinusSrcAlphaFactor]: gl.ONE_MINUS_SRC_ALPHA,\n    [OneMinusDstColorFactor]: gl.ONE_MINUS_DST_COLOR,\n    [OneMinusDstAlphaFactor]: gl.ONE_MINUS_DST_ALPHA,\n    [ConstantColorFactor]: gl.CONSTANT_COLOR,\n    [OneMinusConstantColorFactor]: gl.ONE_MINUS_CONSTANT_COLOR,\n    [ConstantAlphaFactor]: gl.CONSTANT_ALPHA,\n    [OneMinusConstantAlphaFactor]: gl.ONE_MINUS_CONSTANT_ALPHA\n  };\n  function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha) {\n    if (blending === NoBlending) {\n      if (currentBlendingEnabled === true) {\n        disable(gl.BLEND);\n        currentBlendingEnabled = false;\n      }\n      return;\n    }\n    if (currentBlendingEnabled === false) {\n      enable(gl.BLEND);\n      currentBlendingEnabled = true;\n    }\n    if (blending !== CustomBlending) {\n      if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n        if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n          gl.blendEquation(gl.FUNC_ADD);\n          currentBlendEquation = AddEquation;\n          currentBlendEquationAlpha = AddEquation;\n        }\n        if (premultipliedAlpha) {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(gl.ONE, gl.ONE);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE);\n              break;\n            case MultiplyBlending:\n              gl.blendFuncSeparate(gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        } else {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE);\n              break;\n            case MultiplyBlending:\n              gl.blendFunc(gl.ZERO, gl.SRC_COLOR);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        }\n        currentBlendSrc = null;\n        currentBlendDst = null;\n        currentBlendSrcAlpha = null;\n        currentBlendDstAlpha = null;\n        currentBlendColor.set(0, 0, 0);\n        currentBlendAlpha = 0;\n        currentBlending = blending;\n        currentPremultipledAlpha = premultipliedAlpha;\n      }\n      return;\n    }\n    blendEquationAlpha = blendEquationAlpha || blendEquation;\n    blendSrcAlpha = blendSrcAlpha || blendSrc;\n    blendDstAlpha = blendDstAlpha || blendDst;\n    if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n      gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n      currentBlendEquation = blendEquation;\n      currentBlendEquationAlpha = blendEquationAlpha;\n    }\n    if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n      gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n      currentBlendSrc = blendSrc;\n      currentBlendDst = blendDst;\n      currentBlendSrcAlpha = blendSrcAlpha;\n      currentBlendDstAlpha = blendDstAlpha;\n    }\n    if (blendColor.equals(currentBlendColor) === false || blendAlpha !== currentBlendAlpha) {\n      gl.blendColor(blendColor.r, blendColor.g, blendColor.b, blendAlpha);\n      currentBlendColor.copy(blendColor);\n      currentBlendAlpha = blendAlpha;\n    }\n    currentBlending = blending;\n    currentPremultipledAlpha = false;\n  }\n  function setMaterial(material, frontFaceCW) {\n    material.side === DoubleSide ? disable(gl.CULL_FACE) : enable(gl.CULL_FACE);\n    let flipSided = material.side === BackSide;\n    if (frontFaceCW) flipSided = !flipSided;\n    setFlipSided(flipSided);\n    material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha);\n    depthBuffer.setFunc(material.depthFunc);\n    depthBuffer.setTest(material.depthTest);\n    depthBuffer.setMask(material.depthWrite);\n    colorBuffer.setMask(material.colorWrite);\n    const stencilWrite = material.stencilWrite;\n    stencilBuffer.setTest(stencilWrite);\n    if (stencilWrite) {\n      stencilBuffer.setMask(material.stencilWriteMask);\n      stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n      stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n    }\n    setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n    material.alphaToCoverage === true ? enable(gl.SAMPLE_ALPHA_TO_COVERAGE) : disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n  }\n  function setFlipSided(flipSided) {\n    if (currentFlipSided !== flipSided) {\n      if (flipSided) {\n        gl.frontFace(gl.CW);\n      } else {\n        gl.frontFace(gl.CCW);\n      }\n      currentFlipSided = flipSided;\n    }\n  }\n  function setCullFace(cullFace) {\n    if (cullFace !== CullFaceNone) {\n      enable(gl.CULL_FACE);\n      if (cullFace !== currentCullFace) {\n        if (cullFace === CullFaceBack) {\n          gl.cullFace(gl.BACK);\n        } else if (cullFace === CullFaceFront) {\n          gl.cullFace(gl.FRONT);\n        } else {\n          gl.cullFace(gl.FRONT_AND_BACK);\n        }\n      }\n    } else {\n      disable(gl.CULL_FACE);\n    }\n    currentCullFace = cullFace;\n  }\n  function setLineWidth(width) {\n    if (width !== currentLineWidth) {\n      if (lineWidthAvailable) gl.lineWidth(width);\n      currentLineWidth = width;\n    }\n  }\n  function setPolygonOffset(polygonOffset, factor, units) {\n    if (polygonOffset) {\n      enable(gl.POLYGON_OFFSET_FILL);\n      if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n        gl.polygonOffset(factor, units);\n        currentPolygonOffsetFactor = factor;\n        currentPolygonOffsetUnits = units;\n      }\n    } else {\n      disable(gl.POLYGON_OFFSET_FILL);\n    }\n  }\n  function setScissorTest(scissorTest) {\n    if (scissorTest) {\n      enable(gl.SCISSOR_TEST);\n    } else {\n      disable(gl.SCISSOR_TEST);\n    }\n  }\n  function activeTexture(webglSlot) {\n    if (webglSlot === void 0) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n    if (currentTextureSlot !== webglSlot) {\n      gl.activeTexture(webglSlot);\n      currentTextureSlot = webglSlot;\n    }\n  }\n  function bindTexture(webglType, webglTexture, webglSlot) {\n    if (webglSlot === void 0) {\n      if (currentTextureSlot === null) {\n        webglSlot = gl.TEXTURE0 + maxTextures - 1;\n      } else {\n        webglSlot = currentTextureSlot;\n      }\n    }\n    let boundTexture = currentBoundTextures[webglSlot];\n    if (boundTexture === void 0) {\n      boundTexture = { type: void 0, texture: void 0 };\n      currentBoundTextures[webglSlot] = boundTexture;\n    }\n    if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n      if (currentTextureSlot !== webglSlot) {\n        gl.activeTexture(webglSlot);\n        currentTextureSlot = webglSlot;\n      }\n      gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n      boundTexture.type = webglType;\n      boundTexture.texture = webglTexture;\n    }\n  }\n  function unbindTexture() {\n    const boundTexture = currentBoundTextures[currentTextureSlot];\n    if (boundTexture !== void 0 && boundTexture.type !== void 0) {\n      gl.bindTexture(boundTexture.type, null);\n      boundTexture.type = void 0;\n      boundTexture.texture = void 0;\n    }\n  }\n  function compressedTexImage2D() {\n    try {\n      gl.compressedTexImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function compressedTexImage3D() {\n    try {\n      gl.compressedTexImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texSubImage2D() {\n    try {\n      gl.texSubImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texSubImage3D() {\n    try {\n      gl.texSubImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function compressedTexSubImage2D() {\n    try {\n      gl.compressedTexSubImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function compressedTexSubImage3D() {\n    try {\n      gl.compressedTexSubImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texStorage2D() {\n    try {\n      gl.texStorage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texStorage3D() {\n    try {\n      gl.texStorage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texImage2D() {\n    try {\n      gl.texImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texImage3D() {\n    try {\n      gl.texImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function scissor(scissor2) {\n    if (currentScissor.equals(scissor2) === false) {\n      gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w);\n      currentScissor.copy(scissor2);\n    }\n  }\n  function viewport(viewport2) {\n    if (currentViewport.equals(viewport2) === false) {\n      gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w);\n      currentViewport.copy(viewport2);\n    }\n  }\n  function updateUBOMapping(uniformsGroup, program) {\n    let mapping = uboProgramMap.get(program);\n    if (mapping === void 0) {\n      mapping = /* @__PURE__ */ new WeakMap();\n      uboProgramMap.set(program, mapping);\n    }\n    let blockIndex = mapping.get(uniformsGroup);\n    if (blockIndex === void 0) {\n      blockIndex = gl.getUniformBlockIndex(program, uniformsGroup.name);\n      mapping.set(uniformsGroup, blockIndex);\n    }\n  }\n  function uniformBlockBinding(uniformsGroup, program) {\n    const mapping = uboProgramMap.get(program);\n    const blockIndex = mapping.get(uniformsGroup);\n    if (uboBindings.get(program) !== blockIndex) {\n      gl.uniformBlockBinding(program, blockIndex, uniformsGroup.__bindingPointIndex);\n      uboBindings.set(program, blockIndex);\n    }\n  }\n  function reset() {\n    gl.disable(gl.BLEND);\n    gl.disable(gl.CULL_FACE);\n    gl.disable(gl.DEPTH_TEST);\n    gl.disable(gl.POLYGON_OFFSET_FILL);\n    gl.disable(gl.SCISSOR_TEST);\n    gl.disable(gl.STENCIL_TEST);\n    gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n    gl.blendEquation(gl.FUNC_ADD);\n    gl.blendFunc(gl.ONE, gl.ZERO);\n    gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO);\n    gl.blendColor(0, 0, 0, 0);\n    gl.colorMask(true, true, true, true);\n    gl.clearColor(0, 0, 0, 0);\n    gl.depthMask(true);\n    gl.depthFunc(gl.LESS);\n    gl.clearDepth(1);\n    gl.stencilMask(4294967295);\n    gl.stencilFunc(gl.ALWAYS, 0, 4294967295);\n    gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n    gl.clearStencil(0);\n    gl.cullFace(gl.BACK);\n    gl.frontFace(gl.CCW);\n    gl.polygonOffset(0, 0);\n    gl.activeTexture(gl.TEXTURE0);\n    gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n    gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n    gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\n    gl.useProgram(null);\n    gl.lineWidth(1);\n    gl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n    enabledCapabilities = {};\n    currentTextureSlot = null;\n    currentBoundTextures = {};\n    currentBoundFramebuffers = {};\n    currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n    defaultDrawbuffers = [];\n    currentProgram = null;\n    currentBlendingEnabled = false;\n    currentBlending = null;\n    currentBlendEquation = null;\n    currentBlendSrc = null;\n    currentBlendDst = null;\n    currentBlendEquationAlpha = null;\n    currentBlendSrcAlpha = null;\n    currentBlendDstAlpha = null;\n    currentBlendColor = new Color(0, 0, 0);\n    currentBlendAlpha = 0;\n    currentPremultipledAlpha = false;\n    currentFlipSided = null;\n    currentCullFace = null;\n    currentLineWidth = null;\n    currentPolygonOffsetFactor = null;\n    currentPolygonOffsetUnits = null;\n    currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n    currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n    colorBuffer.reset();\n    depthBuffer.reset();\n    stencilBuffer.reset();\n  }\n  return {\n    buffers: {\n      color: colorBuffer,\n      depth: depthBuffer,\n      stencil: stencilBuffer\n    },\n    enable,\n    disable,\n    bindFramebuffer,\n    drawBuffers,\n    useProgram,\n    setBlending,\n    setMaterial,\n    setFlipSided,\n    setCullFace,\n    setLineWidth,\n    setPolygonOffset,\n    setScissorTest,\n    activeTexture,\n    bindTexture,\n    unbindTexture,\n    compressedTexImage2D,\n    compressedTexImage3D,\n    texImage2D,\n    texImage3D,\n    updateUBOMapping,\n    uniformBlockBinding,\n    texStorage2D,\n    texStorage3D,\n    texSubImage2D,\n    texSubImage3D,\n    compressedTexSubImage2D,\n    compressedTexSubImage3D,\n    scissor,\n    viewport,\n    reset\n  };\n}\nfunction contain(texture, aspect2) {\n  const imageAspect = texture.image && texture.image.width ? texture.image.width / texture.image.height : 1;\n  if (imageAspect > aspect2) {\n    texture.repeat.x = 1;\n    texture.repeat.y = imageAspect / aspect2;\n    texture.offset.x = 0;\n    texture.offset.y = (1 - texture.repeat.y) / 2;\n  } else {\n    texture.repeat.x = aspect2 / imageAspect;\n    texture.repeat.y = 1;\n    texture.offset.x = (1 - texture.repeat.x) / 2;\n    texture.offset.y = 0;\n  }\n  return texture;\n}\nfunction cover(texture, aspect2) {\n  const imageAspect = texture.image && texture.image.width ? texture.image.width / texture.image.height : 1;\n  if (imageAspect > aspect2) {\n    texture.repeat.x = aspect2 / imageAspect;\n    texture.repeat.y = 1;\n    texture.offset.x = (1 - texture.repeat.x) / 2;\n    texture.offset.y = 0;\n  } else {\n    texture.repeat.x = 1;\n    texture.repeat.y = imageAspect / aspect2;\n    texture.offset.x = 0;\n    texture.offset.y = (1 - texture.repeat.y) / 2;\n  }\n  return texture;\n}\nfunction fill(texture) {\n  texture.repeat.x = 1;\n  texture.repeat.y = 1;\n  texture.offset.x = 0;\n  texture.offset.y = 0;\n  return texture;\n}\nfunction getByteLength(width, height, format, type) {\n  const typeByteLength = getTextureTypeByteLength(type);\n  switch (format) {\n    // https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml\n    case AlphaFormat:\n      return width * height;\n    case LuminanceFormat:\n      return width * height;\n    case LuminanceAlphaFormat:\n      return width * height * 2;\n    case RedFormat:\n      return width * height / typeByteLength.components * typeByteLength.byteLength;\n    case RedIntegerFormat:\n      return width * height / typeByteLength.components * typeByteLength.byteLength;\n    case RGFormat:\n      return width * height * 2 / typeByteLength.components * typeByteLength.byteLength;\n    case RGIntegerFormat:\n      return width * height * 2 / typeByteLength.components * typeByteLength.byteLength;\n    case RGBFormat:\n      return width * height * 3 / typeByteLength.components * typeByteLength.byteLength;\n    case RGBAFormat:\n      return width * height * 4 / typeByteLength.components * typeByteLength.byteLength;\n    case RGBAIntegerFormat:\n      return width * height * 4 / typeByteLength.components * typeByteLength.byteLength;\n    // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/\n    case RGB_S3TC_DXT1_Format:\n    case RGBA_S3TC_DXT1_Format:\n      return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n    case RGBA_S3TC_DXT3_Format:\n    case RGBA_S3TC_DXT5_Format:\n      return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n    // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/\n    case RGB_PVRTC_2BPPV1_Format:\n    case RGBA_PVRTC_2BPPV1_Format:\n      return Math.max(width, 16) * Math.max(height, 8) / 4;\n    case RGB_PVRTC_4BPPV1_Format:\n    case RGBA_PVRTC_4BPPV1_Format:\n      return Math.max(width, 8) * Math.max(height, 8) / 2;\n    // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/\n    case RGB_ETC1_Format:\n    case RGB_ETC2_Format:\n      return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n    case RGBA_ETC2_EAC_Format:\n      return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n    // https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/\n    case RGBA_ASTC_4x4_Format:\n      return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n    case RGBA_ASTC_5x4_Format:\n      return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n    case RGBA_ASTC_5x5_Format:\n      return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n    case RGBA_ASTC_6x5_Format:\n      return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n    case RGBA_ASTC_6x6_Format:\n      return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n    case RGBA_ASTC_8x5_Format:\n      return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n    case RGBA_ASTC_8x6_Format:\n      return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n    case RGBA_ASTC_8x8_Format:\n      return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n    case RGBA_ASTC_10x5_Format:\n      return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n    case RGBA_ASTC_10x6_Format:\n      return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n    case RGBA_ASTC_10x8_Format:\n      return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n    case RGBA_ASTC_10x10_Format:\n      return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n    case RGBA_ASTC_12x10_Format:\n      return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n    case RGBA_ASTC_12x12_Format:\n      return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n    // https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/\n    case RGBA_BPTC_Format:\n    case RGB_BPTC_SIGNED_Format:\n    case RGB_BPTC_UNSIGNED_Format:\n      return Math.ceil(width / 4) * Math.ceil(height / 4) * 16;\n    // https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/\n    case RED_RGTC1_Format:\n    case SIGNED_RED_RGTC1_Format:\n      return Math.ceil(width / 4) * Math.ceil(height / 4) * 8;\n    case RED_GREEN_RGTC2_Format:\n    case SIGNED_RED_GREEN_RGTC2_Format:\n      return Math.ceil(width / 4) * Math.ceil(height / 4) * 16;\n  }\n  throw new Error(\n    `Unable to determine texture byte length for ${format} format.`\n  );\n}\nfunction getTextureTypeByteLength(type) {\n  switch (type) {\n    case UnsignedByteType:\n    case ByteType:\n      return { byteLength: 1, components: 1 };\n    case UnsignedShortType:\n    case ShortType:\n    case HalfFloatType:\n      return { byteLength: 2, components: 1 };\n    case UnsignedShort4444Type:\n    case UnsignedShort5551Type:\n      return { byteLength: 2, components: 4 };\n    case UnsignedIntType:\n    case IntType:\n    case FloatType:\n      return { byteLength: 4, components: 1 };\n    case UnsignedInt5999Type:\n      return { byteLength: 4, components: 3 };\n  }\n  throw new Error(`Unknown texture type ${type}.`);\n}\nfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) {\n  const multisampledRTTExt = extensions.has(\"WEBGL_multisampled_render_to_texture\") ? extensions.get(\"WEBGL_multisampled_render_to_texture\") : null;\n  const supportsInvalidateFramebuffer = typeof navigator === \"undefined\" ? false : /OculusBrowser/g.test(navigator.userAgent);\n  const _imageDimensions = new Vector2();\n  const _videoTextures = /* @__PURE__ */ new WeakMap();\n  let _canvas2;\n  const _sources = /* @__PURE__ */ new WeakMap();\n  let useOffscreenCanvas = false;\n  try {\n    useOffscreenCanvas = typeof OffscreenCanvas !== \"undefined\" && new OffscreenCanvas(1, 1).getContext(\"2d\") !== null;\n  } catch (err) {\n  }\n  function createCanvas(width, height) {\n    return useOffscreenCanvas ? (\n      // eslint-disable-next-line compat/compat\n      new OffscreenCanvas(width, height)\n    ) : createElementNS(\"canvas\");\n  }\n  function resizeImage(image, needsNewCanvas, maxSize) {\n    let scale = 1;\n    const dimensions = getDimensions(image);\n    if (dimensions.width > maxSize || dimensions.height > maxSize) {\n      scale = maxSize / Math.max(dimensions.width, dimensions.height);\n    }\n    if (scale < 1) {\n      if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap || typeof VideoFrame !== \"undefined\" && image instanceof VideoFrame) {\n        const width = Math.floor(scale * dimensions.width);\n        const height = Math.floor(scale * dimensions.height);\n        if (_canvas2 === void 0) _canvas2 = createCanvas(width, height);\n        const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2;\n        canvas.width = width;\n        canvas.height = height;\n        const context2 = canvas.getContext(\"2d\");\n        context2.drawImage(image, 0, 0, width, height);\n        console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\" + dimensions.width + \"x\" + dimensions.height + \") to (\" + width + \"x\" + height + \").\");\n        return canvas;\n      } else {\n        if (\"data\" in image) {\n          console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\" + dimensions.width + \"x\" + dimensions.height + \").\");\n        }\n        return image;\n      }\n    }\n    return image;\n  }\n  function textureNeedsGenerateMipmaps(texture) {\n    return texture.generateMipmaps && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function generateMipmap(target2) {\n    _gl.generateMipmap(target2);\n  }\n  function getInternalFormat(internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false) {\n    if (internalFormatName !== null) {\n      if (_gl[internalFormatName] !== void 0) return _gl[internalFormatName];\n      console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + internalFormatName + \"'\");\n    }\n    let internalFormat = glFormat;\n    if (glFormat === _gl.RED) {\n      if (glType === _gl.FLOAT) internalFormat = _gl.R32F;\n      if (glType === _gl.HALF_FLOAT) internalFormat = _gl.R16F;\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8;\n    }\n    if (glFormat === _gl.RED_INTEGER) {\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8UI;\n      if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.R16UI;\n      if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.R32UI;\n      if (glType === _gl.BYTE) internalFormat = _gl.R8I;\n      if (glType === _gl.SHORT) internalFormat = _gl.R16I;\n      if (glType === _gl.INT) internalFormat = _gl.R32I;\n    }\n    if (glFormat === _gl.RG) {\n      if (glType === _gl.FLOAT) internalFormat = _gl.RG32F;\n      if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RG16F;\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RG8;\n    }\n    if (glFormat === _gl.RG_INTEGER) {\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RG8UI;\n      if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.RG16UI;\n      if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.RG32UI;\n      if (glType === _gl.BYTE) internalFormat = _gl.RG8I;\n      if (glType === _gl.SHORT) internalFormat = _gl.RG16I;\n      if (glType === _gl.INT) internalFormat = _gl.RG32I;\n    }\n    if (glFormat === _gl.RGB_INTEGER) {\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RGB8UI;\n      if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.RGB16UI;\n      if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.RGB32UI;\n      if (glType === _gl.BYTE) internalFormat = _gl.RGB8I;\n      if (glType === _gl.SHORT) internalFormat = _gl.RGB16I;\n      if (glType === _gl.INT) internalFormat = _gl.RGB32I;\n    }\n    if (glFormat === _gl.RGBA_INTEGER) {\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RGBA8UI;\n      if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.RGBA16UI;\n      if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.RGBA32UI;\n      if (glType === _gl.BYTE) internalFormat = _gl.RGBA8I;\n      if (glType === _gl.SHORT) internalFormat = _gl.RGBA16I;\n      if (glType === _gl.INT) internalFormat = _gl.RGBA32I;\n    }\n    if (glFormat === _gl.RGB) {\n      if (glType === _gl.UNSIGNED_INT_5_9_9_9_REV) internalFormat = _gl.RGB9_E5;\n    }\n    if (glFormat === _gl.RGBA) {\n      const transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer(colorSpace);\n      if (glType === _gl.FLOAT) internalFormat = _gl.RGBA32F;\n      if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGBA16F;\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = transfer === SRGBTransfer ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n      if (glType === _gl.UNSIGNED_SHORT_4_4_4_4) internalFormat = _gl.RGBA4;\n      if (glType === _gl.UNSIGNED_SHORT_5_5_5_1) internalFormat = _gl.RGB5_A1;\n    }\n    if (internalFormat === _gl.R16F || internalFormat === _gl.R32F || internalFormat === _gl.RG16F || internalFormat === _gl.RG32F || internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F) {\n      extensions.get(\"EXT_color_buffer_float\");\n    }\n    return internalFormat;\n  }\n  function getInternalDepthFormat(useStencil, depthType) {\n    let glInternalFormat;\n    if (useStencil) {\n      if (depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type) {\n        glInternalFormat = _gl.DEPTH24_STENCIL8;\n      } else if (depthType === FloatType) {\n        glInternalFormat = _gl.DEPTH32F_STENCIL8;\n      } else if (depthType === UnsignedShortType) {\n        glInternalFormat = _gl.DEPTH24_STENCIL8;\n        console.warn(\"DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.\");\n      }\n    } else {\n      if (depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type) {\n        glInternalFormat = _gl.DEPTH_COMPONENT24;\n      } else if (depthType === FloatType) {\n        glInternalFormat = _gl.DEPTH_COMPONENT32F;\n      } else if (depthType === UnsignedShortType) {\n        glInternalFormat = _gl.DEPTH_COMPONENT16;\n      }\n    }\n    return glInternalFormat;\n  }\n  function getMipLevels(texture, image) {\n    if (textureNeedsGenerateMipmaps(texture) === true || texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n      return Math.log2(Math.max(image.width, image.height)) + 1;\n    } else if (texture.mipmaps !== void 0 && texture.mipmaps.length > 0) {\n      return texture.mipmaps.length;\n    } else if (texture.isCompressedTexture && Array.isArray(texture.image)) {\n      return image.mipmaps.length;\n    } else {\n      return 1;\n    }\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    deallocateTexture(texture);\n    if (texture.isVideoTexture) {\n      _videoTextures.delete(texture);\n    }\n  }\n  function onRenderTargetDispose(event) {\n    const renderTarget = event.target;\n    renderTarget.removeEventListener(\"dispose\", onRenderTargetDispose);\n    deallocateRenderTarget(renderTarget);\n  }\n  function deallocateTexture(texture) {\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglInit === void 0) return;\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    if (webglTextures) {\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      webglTexture.usedTimes--;\n      if (webglTexture.usedTimes === 0) {\n        deleteTexture(texture);\n      }\n      if (Object.keys(webglTextures).length === 0) {\n        _sources.delete(source);\n      }\n    }\n    properties.remove(texture);\n  }\n  function deleteTexture(texture) {\n    const textureProperties = properties.get(texture);\n    _gl.deleteTexture(textureProperties.__webglTexture);\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    delete webglTextures[textureProperties.__cacheKey];\n    info.memory.textures--;\n  }\n  function deallocateRenderTarget(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    if (renderTarget.depthTexture) {\n      renderTarget.depthTexture.dispose();\n    }\n    if (renderTarget.isWebGLCubeRenderTarget) {\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (Array.isArray(renderTargetProperties.__webglFramebuffer[i2])) {\n          for (let level = 0; level < renderTargetProperties.__webglFramebuffer[i2].length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i2][level]);\n        } else {\n          _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i2]);\n        }\n        if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i2]);\n      }\n    } else {\n      if (Array.isArray(renderTargetProperties.__webglFramebuffer)) {\n        for (let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[level]);\n      } else {\n        _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n      }\n      if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n      if (renderTargetProperties.__webglMultisampledFramebuffer) _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n      if (renderTargetProperties.__webglColorRenderbuffer) {\n        for (let i2 = 0; i2 < renderTargetProperties.__webglColorRenderbuffer.length; i2++) {\n          if (renderTargetProperties.__webglColorRenderbuffer[i2]) _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer[i2]);\n        }\n      }\n      if (renderTargetProperties.__webglDepthRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n    }\n    const textures = renderTarget.textures;\n    for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n      const attachmentProperties = properties.get(textures[i2]);\n      if (attachmentProperties.__webglTexture) {\n        _gl.deleteTexture(attachmentProperties.__webglTexture);\n        info.memory.textures--;\n      }\n      properties.remove(textures[i2]);\n    }\n    properties.remove(renderTarget);\n  }\n  let textureUnits = 0;\n  function resetTextureUnits() {\n    textureUnits = 0;\n  }\n  function allocateTextureUnit() {\n    const textureUnit = textureUnits;\n    if (textureUnit >= capabilities.maxTextures) {\n      console.warn(\"THREE.WebGLTextures: Trying to use \" + textureUnit + \" texture units while this GPU supports only \" + capabilities.maxTextures);\n    }\n    textureUnits += 1;\n    return textureUnit;\n  }\n  function getTextureCacheKey(texture) {\n    const array = [];\n    array.push(texture.wrapS);\n    array.push(texture.wrapT);\n    array.push(texture.wrapR || 0);\n    array.push(texture.magFilter);\n    array.push(texture.minFilter);\n    array.push(texture.anisotropy);\n    array.push(texture.internalFormat);\n    array.push(texture.format);\n    array.push(texture.type);\n    array.push(texture.generateMipmaps);\n    array.push(texture.premultiplyAlpha);\n    array.push(texture.flipY);\n    array.push(texture.unpackAlignment);\n    array.push(texture.colorSpace);\n    return array.join();\n  }\n  function setTexture2D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.isVideoTexture) updateVideoTexture(texture);\n    if (texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version) {\n      const image = texture.image;\n      if (image === null) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but no image data found.\");\n      } else if (image.complete === false) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");\n      } else {\n        uploadTexture(textureProperties, texture, slot);\n        return;\n      }\n    }\n    state.bindTexture(_gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  function setTexture2DArray(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(_gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  function setTexture3D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(_gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  function setTextureCube(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadCubeTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  const wrappingToGL = {\n    [RepeatWrapping]: _gl.REPEAT,\n    [ClampToEdgeWrapping]: _gl.CLAMP_TO_EDGE,\n    [MirroredRepeatWrapping]: _gl.MIRRORED_REPEAT\n  };\n  const filterToGL = {\n    [NearestFilter]: _gl.NEAREST,\n    [NearestMipmapNearestFilter]: _gl.NEAREST_MIPMAP_NEAREST,\n    [NearestMipmapLinearFilter]: _gl.NEAREST_MIPMAP_LINEAR,\n    [LinearFilter]: _gl.LINEAR,\n    [LinearMipmapNearestFilter]: _gl.LINEAR_MIPMAP_NEAREST,\n    [LinearMipmapLinearFilter]: _gl.LINEAR_MIPMAP_LINEAR\n  };\n  const compareToGL = {\n    [NeverCompare]: _gl.NEVER,\n    [AlwaysCompare]: _gl.ALWAYS,\n    [LessCompare]: _gl.LESS,\n    [LessEqualCompare]: _gl.LEQUAL,\n    [EqualCompare]: _gl.EQUAL,\n    [GreaterEqualCompare]: _gl.GEQUAL,\n    [GreaterCompare]: _gl.GREATER,\n    [NotEqualCompare]: _gl.NOTEQUAL\n  };\n  function setTextureParameters(textureType, texture) {\n    if (texture.type === FloatType && extensions.has(\"OES_texture_float_linear\") === false && (texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter || texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter)) {\n      console.warn(\"THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.\");\n    }\n    _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[texture.wrapS]);\n    _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[texture.wrapT]);\n    if (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) {\n      _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[texture.wrapR]);\n    }\n    _gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[texture.magFilter]);\n    _gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[texture.minFilter]);\n    if (texture.compareFunction) {\n      _gl.texParameteri(textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE);\n      _gl.texParameteri(textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[texture.compareFunction]);\n    }\n    if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n      if (texture.magFilter === NearestFilter) return;\n      if (texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter) return;\n      if (texture.type === FloatType && extensions.has(\"OES_texture_float_linear\") === false) return;\n      if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n        const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n        _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n        properties.get(texture).__currentAnisotropy = texture.anisotropy;\n      }\n    }\n  }\n  function initTexture(textureProperties, texture) {\n    let forceUpload = false;\n    if (textureProperties.__webglInit === void 0) {\n      textureProperties.__webglInit = true;\n      texture.addEventListener(\"dispose\", onTextureDispose);\n    }\n    const source = texture.source;\n    let webglTextures = _sources.get(source);\n    if (webglTextures === void 0) {\n      webglTextures = {};\n      _sources.set(source, webglTextures);\n    }\n    const textureCacheKey = getTextureCacheKey(texture);\n    if (textureCacheKey !== textureProperties.__cacheKey) {\n      if (webglTextures[textureCacheKey] === void 0) {\n        webglTextures[textureCacheKey] = {\n          texture: _gl.createTexture(),\n          usedTimes: 0\n        };\n        info.memory.textures++;\n        forceUpload = true;\n      }\n      webglTextures[textureCacheKey].usedTimes++;\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      if (webglTexture !== void 0) {\n        webglTextures[textureProperties.__cacheKey].usedTimes--;\n        if (webglTexture.usedTimes === 0) {\n          deleteTexture(texture);\n        }\n      }\n      textureProperties.__cacheKey = textureCacheKey;\n      textureProperties.__webglTexture = webglTextures[textureCacheKey].texture;\n    }\n    return forceUpload;\n  }\n  function uploadTexture(textureProperties, texture, slot) {\n    let textureType = _gl.TEXTURE_2D;\n    if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) textureType = _gl.TEXTURE_2D_ARRAY;\n    if (texture.isData3DTexture) textureType = _gl.TEXTURE_3D;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.bindTexture(textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n    const sourceProperties = properties.get(source);\n    if (source.version !== sourceProperties.__version || forceUpload === true) {\n      state.activeTexture(_gl.TEXTURE0 + slot);\n      const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace);\n      const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries(texture.colorSpace);\n      const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n      _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n      _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n      _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n      _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion);\n      let image = resizeImage(texture.image, false, capabilities.maxTextureSize);\n      image = verifyColorSpace(texture, image);\n      const glFormat = utils.convert(texture.format, texture.colorSpace);\n      const glType = utils.convert(texture.type);\n      let glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture);\n      setTextureParameters(textureType, texture);\n      let mipmap;\n      const mipmaps = texture.mipmaps;\n      const useTexStorage = texture.isVideoTexture !== true;\n      const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true;\n      const dataReady = source.dataReady;\n      const levels = getMipLevels(texture, image);\n      if (texture.isDepthTexture) {\n        glInternalFormat = getInternalDepthFormat(texture.format === DepthStencilFormat, texture.type);\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(_gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height);\n          } else {\n            state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n          }\n        }\n      } else if (texture.isDataTexture) {\n        if (mipmaps.length > 0) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height);\n            }\n            if (dataReady) {\n              state.texSubImage2D(_gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data);\n            }\n          } else {\n            state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n          }\n        }\n      } else if (texture.isCompressedTexture) {\n        if (texture.isCompressedArrayTexture) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage3D(_gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height, image.depth);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    if (texture.layerUpdates.size > 0) {\n                      const layerByteLength = getByteLength(mipmap.width, mipmap.height, texture.format, texture.type);\n                      for (const layerIndex of texture.layerUpdates) {\n                        const layerData = mipmap.data.subarray(\n                          layerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT,\n                          (layerIndex + 1) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT\n                        );\n                        state.compressedTexSubImage3D(_gl.TEXTURE_2D_ARRAY, i2, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData, 0, 0);\n                      }\n                      texture.clearLayerUpdates();\n                    } else {\n                      state.compressedTexSubImage3D(_gl.TEXTURE_2D_ARRAY, i2, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0);\n                    }\n                  }\n                } else {\n                  state.compressedTexImage3D(_gl.TEXTURE_2D_ARRAY, i2, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n              }\n            } else {\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, i2, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage3D(_gl.TEXTURE_2D_ARRAY, i2, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        } else {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                  }\n                } else {\n                  state.compressedTexImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n              }\n            } else {\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else if (texture.isDataArrayTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(_gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          if (dataReady) {\n            if (texture.layerUpdates.size > 0) {\n              const layerByteLength = getByteLength(image.width, image.height, texture.format, texture.type);\n              for (const layerIndex of texture.layerUpdates) {\n                const layerData = image.data.subarray(\n                  layerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT,\n                  (layerIndex + 1) * layerByteLength / image.data.BYTES_PER_ELEMENT\n                );\n                state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData);\n              }\n              texture.clearLayerUpdates();\n            } else {\n              state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n            }\n          }\n        } else {\n          state.texImage3D(_gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isData3DTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(_gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          if (dataReady) {\n            state.texSubImage3D(_gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n          }\n        } else {\n          state.texImage3D(_gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isFramebufferTexture) {\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height);\n          } else {\n            let width = image.width, height = image.height;\n            for (let i2 = 0; i2 < levels; i2++) {\n              state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, width, height, 0, glFormat, glType, null);\n              width >>= 1;\n              height >>= 1;\n            }\n          }\n        }\n      } else {\n        if (mipmaps.length > 0) {\n          if (useTexStorage && allocateMemory) {\n            const dimensions = getDimensions(mipmaps[0]);\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, glFormat, glType, mipmap);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, glFormat, glType, mipmap);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              const dimensions = getDimensions(image);\n              state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height);\n            }\n            if (dataReady) {\n              state.texSubImage2D(_gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image);\n            }\n          } else {\n            state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image);\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture)) {\n        generateMipmap(textureType);\n      }\n      sourceProperties.__version = source.version;\n      if (texture.onUpdate) texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function uploadCubeTexture(textureProperties, texture, slot) {\n    if (texture.image.length !== 6) return;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n    const sourceProperties = properties.get(source);\n    if (source.version !== sourceProperties.__version || forceUpload === true) {\n      state.activeTexture(_gl.TEXTURE0 + slot);\n      const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace);\n      const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries(texture.colorSpace);\n      const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n      _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n      _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n      _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n      _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion);\n      const isCompressed = texture.isCompressedTexture || texture.image[0].isCompressedTexture;\n      const isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n      const cubeImage = [];\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (!isCompressed && !isDataTexture) {\n          cubeImage[i2] = resizeImage(texture.image[i2], true, capabilities.maxCubemapSize);\n        } else {\n          cubeImage[i2] = isDataTexture ? texture.image[i2].image : texture.image[i2];\n        }\n        cubeImage[i2] = verifyColorSpace(texture, cubeImage[i2]);\n      }\n      const image = cubeImage[0], glFormat = utils.convert(texture.format, texture.colorSpace), glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace);\n      const useTexStorage = texture.isVideoTexture !== true;\n      const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true;\n      const dataReady = source.dataReady;\n      let levels = getMipLevels(texture, image);\n      setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture);\n      let mipmaps;\n      if (isCompressed) {\n        if (useTexStorage && allocateMemory) {\n          state.texStorage2D(_gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height);\n        }\n        for (let i2 = 0; i2 < 6; i2++) {\n          mipmaps = cubeImage[i2].mipmaps;\n          for (let j2 = 0; j2 < mipmaps.length; j2++) {\n            const mipmap = mipmaps[j2];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                  }\n                } else {\n                  state.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\");\n              }\n            } else {\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else {\n        mipmaps = texture.mipmaps;\n        if (useTexStorage && allocateMemory) {\n          if (mipmaps.length > 0) levels++;\n          const dimensions = getDimensions(cubeImage[0]);\n          state.texStorage2D(_gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height);\n        }\n        for (let i2 = 0; i2 < 6; i2++) {\n          if (isDataTexture) {\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, 0, 0, cubeImage[i2].width, cubeImage[i2].height, glFormat, glType, cubeImage[i2].data);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, glInternalFormat, cubeImage[i2].width, cubeImage[i2].height, 0, glFormat, glType, cubeImage[i2].data);\n            }\n            for (let j2 = 0; j2 < mipmaps.length; j2++) {\n              const mipmap = mipmaps[j2];\n              const mipmapImage = mipmap.image[i2].image;\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n              }\n            }\n          } else {\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, 0, 0, glFormat, glType, cubeImage[i2]);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, glInternalFormat, glFormat, glType, cubeImage[i2]);\n            }\n            for (let j2 = 0; j2 < mipmaps.length; j2++) {\n              const mipmap = mipmaps[j2];\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, 0, 0, glFormat, glType, mipmap.image[i2]);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, glInternalFormat, glFormat, glType, mipmap.image[i2]);\n              }\n            }\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture)) {\n        generateMipmap(_gl.TEXTURE_CUBE_MAP);\n      }\n      sourceProperties.__version = source.version;\n      if (texture.onUpdate) texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget, level) {\n    const glFormat = utils.convert(texture.format, texture.colorSpace);\n    const glType = utils.convert(texture.type);\n    const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace);\n    const renderTargetProperties = properties.get(renderTarget);\n    if (!renderTargetProperties.__hasExternalTextures) {\n      const width = Math.max(1, renderTarget.width >> level);\n      const height = Math.max(1, renderTarget.height >> level);\n      if (textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY) {\n        state.texImage3D(textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null);\n      } else {\n        state.texImage2D(textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null);\n      }\n    }\n    state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n    if (useMultisampledRTT(renderTarget)) {\n      multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget));\n    } else if (textureTarget === _gl.TEXTURE_2D || textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z) {\n      _gl.framebufferTexture2D(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, level);\n    }\n    state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n  }\n  function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n    _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer);\n    if (renderTarget.depthBuffer) {\n      const depthTexture = renderTarget.depthTexture;\n      const depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null;\n      const glInternalFormat = getInternalDepthFormat(renderTarget.stencilBuffer, depthType);\n      const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n      const samples = getRenderTargetSamples(renderTarget);\n      const isUseMultisampledRTT = useMultisampledRTT(renderTarget);\n      if (isUseMultisampledRTT) {\n        multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n      } else if (isMultisample) {\n        _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n      } else {\n        _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer);\n    } else {\n      const textures = renderTarget.textures;\n      for (let i2 = 0; i2 < textures.length; i2++) {\n        const texture = textures[i2];\n        const glFormat = utils.convert(texture.format, texture.colorSpace);\n        const glType = utils.convert(texture.type);\n        const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace);\n        const samples = getRenderTargetSamples(renderTarget);\n        if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n          _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      }\n    }\n    _gl.bindRenderbuffer(_gl.RENDERBUFFER, null);\n  }\n  function setupDepthTexture(framebuffer, renderTarget) {\n    const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n    if (isCube) throw new Error(\"Depth Texture with cube render targets is not supported\");\n    state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n    if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n      throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");\n    }\n    if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n      renderTarget.depthTexture.image.width = renderTarget.width;\n      renderTarget.depthTexture.image.height = renderTarget.height;\n      renderTarget.depthTexture.needsUpdate = true;\n    }\n    setTexture2D(renderTarget.depthTexture, 0);\n    const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n    const samples = getRenderTargetSamples(renderTarget);\n    if (renderTarget.depthTexture.format === DepthFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0);\n      }\n    } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0);\n      }\n    } else {\n      throw new Error(\"Unknown depthTexture format\");\n    }\n  }\n  function setupDepthRenderbuffer(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    if (renderTargetProperties.__boundDepthTexture !== renderTarget.depthTexture) {\n      const depthTexture = renderTarget.depthTexture;\n      if (renderTargetProperties.__depthDisposeCallback) {\n        renderTargetProperties.__depthDisposeCallback();\n      }\n      if (depthTexture) {\n        const disposeEvent = () => {\n          delete renderTargetProperties.__boundDepthTexture;\n          delete renderTargetProperties.__depthDisposeCallback;\n          depthTexture.removeEventListener(\"dispose\", disposeEvent);\n        };\n        depthTexture.addEventListener(\"dispose\", disposeEvent);\n        renderTargetProperties.__depthDisposeCallback = disposeEvent;\n      }\n      renderTargetProperties.__boundDepthTexture = depthTexture;\n    }\n    if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) {\n      if (isCube) throw new Error(\"target.depthTexture not supported in Cube render targets\");\n      setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n    } else {\n      if (isCube) {\n        renderTargetProperties.__webglDepthbuffer = [];\n        for (let i2 = 0; i2 < 6; i2++) {\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[i2]);\n          if (renderTargetProperties.__webglDepthbuffer[i2] === void 0) {\n            renderTargetProperties.__webglDepthbuffer[i2] = _gl.createRenderbuffer();\n            setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i2], renderTarget, false);\n          } else {\n            const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n            const renderbuffer = renderTargetProperties.__webglDepthbuffer[i2];\n            _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer);\n            _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer);\n          }\n        }\n      } else {\n        state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n        if (renderTargetProperties.__webglDepthbuffer === void 0) {\n          renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n        } else {\n          const glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n          const renderbuffer = renderTargetProperties.__webglDepthbuffer;\n          _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer);\n          _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer);\n        }\n      }\n    }\n    state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n  }\n  function rebindTextures(renderTarget, colorTexture, depthTexture) {\n    const renderTargetProperties = properties.get(renderTarget);\n    if (colorTexture !== void 0) {\n      setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0);\n    }\n    if (depthTexture !== void 0) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function setupRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    renderTarget.addEventListener(\"dispose\", onRenderTargetDispose);\n    const textures = renderTarget.textures;\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    const isMultipleRenderTargets = textures.length > 1;\n    if (!isMultipleRenderTargets) {\n      if (textureProperties.__webglTexture === void 0) {\n        textureProperties.__webglTexture = _gl.createTexture();\n      }\n      textureProperties.__version = texture.version;\n      info.memory.textures++;\n    }\n    if (isCube) {\n      renderTargetProperties.__webglFramebuffer = [];\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (texture.mipmaps && texture.mipmaps.length > 0) {\n          renderTargetProperties.__webglFramebuffer[i2] = [];\n          for (let level = 0; level < texture.mipmaps.length; level++) {\n            renderTargetProperties.__webglFramebuffer[i2][level] = _gl.createFramebuffer();\n          }\n        } else {\n          renderTargetProperties.__webglFramebuffer[i2] = _gl.createFramebuffer();\n        }\n      }\n    } else {\n      if (texture.mipmaps && texture.mipmaps.length > 0) {\n        renderTargetProperties.__webglFramebuffer = [];\n        for (let level = 0; level < texture.mipmaps.length; level++) {\n          renderTargetProperties.__webglFramebuffer[level] = _gl.createFramebuffer();\n        }\n      } else {\n        renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n      }\n      if (isMultipleRenderTargets) {\n        for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n          const attachmentProperties = properties.get(textures[i2]);\n          if (attachmentProperties.__webglTexture === void 0) {\n            attachmentProperties.__webglTexture = _gl.createTexture();\n            info.memory.textures++;\n          }\n        }\n      }\n      if (renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n        renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n        renderTargetProperties.__webglColorRenderbuffer = [];\n        state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n        for (let i2 = 0; i2 < textures.length; i2++) {\n          const texture2 = textures[i2];\n          renderTargetProperties.__webglColorRenderbuffer[i2] = _gl.createRenderbuffer();\n          _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n          const glFormat = utils.convert(texture2.format, texture2.colorSpace);\n          const glType = utils.convert(texture2.type);\n          const glInternalFormat = getInternalFormat(texture2.internalFormat, glFormat, glType, texture2.colorSpace, renderTarget.isXRRenderTarget === true);\n          const samples = getRenderTargetSamples(renderTarget);\n          _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n          _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n        }\n        _gl.bindRenderbuffer(_gl.RENDERBUFFER, null);\n        if (renderTarget.depthBuffer) {\n          renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n        }\n        state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n      }\n    }\n    if (isCube) {\n      state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture);\n      setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture);\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (texture.mipmaps && texture.mipmaps.length > 0) {\n          for (let level = 0; level < texture.mipmaps.length; level++) {\n            setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i2][level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, level);\n          }\n        } else {\n          setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i2], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0);\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture)) {\n        generateMipmap(_gl.TEXTURE_CUBE_MAP);\n      }\n      state.unbindTexture();\n    } else if (isMultipleRenderTargets) {\n      for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n        const attachment = textures[i2];\n        const attachmentProperties = properties.get(attachment);\n        state.bindTexture(_gl.TEXTURE_2D, attachmentProperties.__webglTexture);\n        setTextureParameters(_gl.TEXTURE_2D, attachment);\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i2, _gl.TEXTURE_2D, 0);\n        if (textureNeedsGenerateMipmaps(attachment)) {\n          generateMipmap(_gl.TEXTURE_2D);\n        }\n      }\n      state.unbindTexture();\n    } else {\n      let glTextureType = _gl.TEXTURE_2D;\n      if (renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget) {\n        glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n      }\n      state.bindTexture(glTextureType, textureProperties.__webglTexture);\n      setTextureParameters(glTextureType, texture);\n      if (texture.mipmaps && texture.mipmaps.length > 0) {\n        for (let level = 0; level < texture.mipmaps.length; level++) {\n          setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level);\n        }\n      } else {\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0);\n      }\n      if (textureNeedsGenerateMipmaps(texture)) {\n        generateMipmap(glTextureType);\n      }\n      state.unbindTexture();\n    }\n    if (renderTarget.depthBuffer) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function updateRenderTargetMipmap(renderTarget) {\n    const textures = renderTarget.textures;\n    for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n      const texture = textures[i2];\n      if (textureNeedsGenerateMipmaps(texture)) {\n        const target2 = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n        const webglTexture = properties.get(texture).__webglTexture;\n        state.bindTexture(target2, webglTexture);\n        generateMipmap(target2);\n        state.unbindTexture();\n      }\n    }\n  }\n  const invalidationArrayRead = [];\n  const invalidationArrayDraw = [];\n  function updateMultisampleRenderTarget(renderTarget) {\n    if (renderTarget.samples > 0) {\n      if (useMultisampledRTT(renderTarget) === false) {\n        const textures = renderTarget.textures;\n        const width = renderTarget.width;\n        const height = renderTarget.height;\n        let mask = _gl.COLOR_BUFFER_BIT;\n        const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n        const renderTargetProperties = properties.get(renderTarget);\n        const isMultipleRenderTargets = textures.length > 1;\n        if (isMultipleRenderTargets) {\n          for (let i2 = 0; i2 < textures.length; i2++) {\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n            _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.RENDERBUFFER, null);\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n            _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.TEXTURE_2D, null, 0);\n          }\n        }\n        state.bindFramebuffer(_gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n        state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n        for (let i2 = 0; i2 < textures.length; i2++) {\n          if (renderTarget.resolveDepthBuffer) {\n            if (renderTarget.depthBuffer) mask |= _gl.DEPTH_BUFFER_BIT;\n            if (renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer) mask |= _gl.STENCIL_BUFFER_BIT;\n          }\n          if (isMultipleRenderTargets) {\n            _gl.framebufferRenderbuffer(_gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n            const webglTexture = properties.get(textures[i2]).__webglTexture;\n            _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0);\n          }\n          _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST);\n          if (supportsInvalidateFramebuffer === true) {\n            invalidationArrayRead.length = 0;\n            invalidationArrayDraw.length = 0;\n            invalidationArrayRead.push(_gl.COLOR_ATTACHMENT0 + i2);\n            if (renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false) {\n              invalidationArrayRead.push(depthStyle);\n              invalidationArrayDraw.push(depthStyle);\n              _gl.invalidateFramebuffer(_gl.DRAW_FRAMEBUFFER, invalidationArrayDraw);\n            }\n            _gl.invalidateFramebuffer(_gl.READ_FRAMEBUFFER, invalidationArrayRead);\n          }\n        }\n        state.bindFramebuffer(_gl.READ_FRAMEBUFFER, null);\n        state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, null);\n        if (isMultipleRenderTargets) {\n          for (let i2 = 0; i2 < textures.length; i2++) {\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n            _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n            const webglTexture = properties.get(textures[i2]).__webglTexture;\n            state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n            _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.TEXTURE_2D, webglTexture, 0);\n          }\n        }\n        state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n      } else {\n        if (renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer) {\n          const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n          _gl.invalidateFramebuffer(_gl.DRAW_FRAMEBUFFER, [depthStyle]);\n        }\n      }\n    }\n  }\n  function getRenderTargetSamples(renderTarget) {\n    return Math.min(capabilities.maxSamples, renderTarget.samples);\n  }\n  function useMultisampledRTT(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    return renderTarget.samples > 0 && extensions.has(\"WEBGL_multisampled_render_to_texture\") === true && renderTargetProperties.__useRenderToTexture !== false;\n  }\n  function updateVideoTexture(texture) {\n    const frame = info.render.frame;\n    if (_videoTextures.get(texture) !== frame) {\n      _videoTextures.set(texture, frame);\n      texture.update();\n    }\n  }\n  function verifyColorSpace(texture, image) {\n    const colorSpace = texture.colorSpace;\n    const format = texture.format;\n    const type = texture.type;\n    if (texture.isCompressedTexture === true || texture.isVideoTexture === true) return image;\n    if (colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace) {\n      if (ColorManagement.getTransfer(colorSpace) === SRGBTransfer) {\n        if (format !== RGBAFormat || type !== UnsignedByteType) {\n          console.warn(\"THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.\");\n        }\n      } else {\n        console.error(\"THREE.WebGLTextures: Unsupported texture color space:\", colorSpace);\n      }\n    }\n    return image;\n  }\n  function getDimensions(image) {\n    if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement) {\n      _imageDimensions.width = image.naturalWidth || image.width;\n      _imageDimensions.height = image.naturalHeight || image.height;\n    } else if (typeof VideoFrame !== \"undefined\" && image instanceof VideoFrame) {\n      _imageDimensions.width = image.displayWidth;\n      _imageDimensions.height = image.displayHeight;\n    } else {\n      _imageDimensions.width = image.width;\n      _imageDimensions.height = image.height;\n    }\n    return _imageDimensions;\n  }\n  this.allocateTextureUnit = allocateTextureUnit;\n  this.resetTextureUnits = resetTextureUnits;\n  this.setTexture2D = setTexture2D;\n  this.setTexture2DArray = setTexture2DArray;\n  this.setTexture3D = setTexture3D;\n  this.setTextureCube = setTextureCube;\n  this.rebindTextures = rebindTextures;\n  this.setupRenderTarget = setupRenderTarget;\n  this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n  this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n  this.setupDepthRenderbuffer = setupDepthRenderbuffer;\n  this.setupFrameBufferTexture = setupFrameBufferTexture;\n  this.useMultisampledRTT = useMultisampledRTT;\n}\nfunction WebGLUtils(gl, extensions) {\n  function convert(p3, colorSpace = NoColorSpace) {\n    let extension;\n    const transfer = ColorManagement.getTransfer(colorSpace);\n    if (p3 === UnsignedByteType) return gl.UNSIGNED_BYTE;\n    if (p3 === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4;\n    if (p3 === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1;\n    if (p3 === UnsignedInt5999Type) return gl.UNSIGNED_INT_5_9_9_9_REV;\n    if (p3 === ByteType) return gl.BYTE;\n    if (p3 === ShortType) return gl.SHORT;\n    if (p3 === UnsignedShortType) return gl.UNSIGNED_SHORT;\n    if (p3 === IntType) return gl.INT;\n    if (p3 === UnsignedIntType) return gl.UNSIGNED_INT;\n    if (p3 === FloatType) return gl.FLOAT;\n    if (p3 === HalfFloatType) return gl.HALF_FLOAT;\n    if (p3 === AlphaFormat) return gl.ALPHA;\n    if (p3 === RGBFormat) return gl.RGB;\n    if (p3 === RGBAFormat) return gl.RGBA;\n    if (p3 === LuminanceFormat) return gl.LUMINANCE;\n    if (p3 === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA;\n    if (p3 === DepthFormat) return gl.DEPTH_COMPONENT;\n    if (p3 === DepthStencilFormat) return gl.DEPTH_STENCIL;\n    if (p3 === RedFormat) return gl.RED;\n    if (p3 === RedIntegerFormat) return gl.RED_INTEGER;\n    if (p3 === RGFormat) return gl.RG;\n    if (p3 === RGIntegerFormat) return gl.RG_INTEGER;\n    if (p3 === RGBAIntegerFormat) return gl.RGBA_INTEGER;\n    if (p3 === RGB_S3TC_DXT1_Format || p3 === RGBA_S3TC_DXT1_Format || p3 === RGBA_S3TC_DXT3_Format || p3 === RGBA_S3TC_DXT5_Format) {\n      if (transfer === SRGBTransfer) {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc_srgb\");\n        if (extension !== null) {\n          if (p3 === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n          if (p3 === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n          if (p3 === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n          if (p3 === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      } else {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc\");\n        if (extension !== null) {\n          if (p3 === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n          if (p3 === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n          if (p3 === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n          if (p3 === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      }\n    }\n    if (p3 === RGB_PVRTC_4BPPV1_Format || p3 === RGB_PVRTC_2BPPV1_Format || p3 === RGBA_PVRTC_4BPPV1_Format || p3 === RGBA_PVRTC_2BPPV1_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n      if (extension !== null) {\n        if (p3 === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n        if (p3 === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n        if (p3 === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n        if (p3 === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n      } else {\n        return null;\n      }\n    }\n    if (p3 === RGB_ETC1_Format || p3 === RGB_ETC2_Format || p3 === RGBA_ETC2_EAC_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_etc\");\n      if (extension !== null) {\n        if (p3 === RGB_ETC1_Format || p3 === RGB_ETC2_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n        if (p3 === RGBA_ETC2_EAC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n      } else {\n        return null;\n      }\n    }\n    if (p3 === RGBA_ASTC_4x4_Format || p3 === RGBA_ASTC_5x4_Format || p3 === RGBA_ASTC_5x5_Format || p3 === RGBA_ASTC_6x5_Format || p3 === RGBA_ASTC_6x6_Format || p3 === RGBA_ASTC_8x5_Format || p3 === RGBA_ASTC_8x6_Format || p3 === RGBA_ASTC_8x8_Format || p3 === RGBA_ASTC_10x5_Format || p3 === RGBA_ASTC_10x6_Format || p3 === RGBA_ASTC_10x8_Format || p3 === RGBA_ASTC_10x10_Format || p3 === RGBA_ASTC_12x10_Format || p3 === RGBA_ASTC_12x12_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_astc\");\n      if (extension !== null) {\n        if (p3 === RGBA_ASTC_4x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n        if (p3 === RGBA_ASTC_5x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n        if (p3 === RGBA_ASTC_5x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n        if (p3 === RGBA_ASTC_6x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n        if (p3 === RGBA_ASTC_6x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n        if (p3 === RGBA_ASTC_8x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n        if (p3 === RGBA_ASTC_8x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n        if (p3 === RGBA_ASTC_8x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n        if (p3 === RGBA_ASTC_10x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n        if (p3 === RGBA_ASTC_10x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n        if (p3 === RGBA_ASTC_10x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n        if (p3 === RGBA_ASTC_10x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n        if (p3 === RGBA_ASTC_12x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n        if (p3 === RGBA_ASTC_12x12_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n      } else {\n        return null;\n      }\n    }\n    if (p3 === RGBA_BPTC_Format || p3 === RGB_BPTC_SIGNED_Format || p3 === RGB_BPTC_UNSIGNED_Format) {\n      extension = extensions.get(\"EXT_texture_compression_bptc\");\n      if (extension !== null) {\n        if (p3 === RGBA_BPTC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n        if (p3 === RGB_BPTC_SIGNED_Format) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n        if (p3 === RGB_BPTC_UNSIGNED_Format) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p3 === RED_RGTC1_Format || p3 === SIGNED_RED_RGTC1_Format || p3 === RED_GREEN_RGTC2_Format || p3 === SIGNED_RED_GREEN_RGTC2_Format) {\n      extension = extensions.get(\"EXT_texture_compression_rgtc\");\n      if (extension !== null) {\n        if (p3 === RGBA_BPTC_Format) return extension.COMPRESSED_RED_RGTC1_EXT;\n        if (p3 === SIGNED_RED_RGTC1_Format) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n        if (p3 === RED_GREEN_RGTC2_Format) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n        if (p3 === SIGNED_RED_GREEN_RGTC2_Format) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p3 === UnsignedInt248Type) return gl.UNSIGNED_INT_24_8;\n    return gl[p3] !== void 0 ? gl[p3] : null;\n  }\n  return { convert };\n}\nfunction WebGLMaterials(renderer, properties) {\n  function refreshTransformUniform(map, uniform) {\n    if (map.matrixAutoUpdate === true) {\n      map.updateMatrix();\n    }\n    uniform.value.copy(map.matrix);\n  }\n  function refreshFogUniforms(uniforms, fog) {\n    fog.color.getRGB(uniforms.fogColor.value, getUnlitUniformColorSpace(renderer));\n    if (fog.isFog) {\n      uniforms.fogNear.value = fog.near;\n      uniforms.fogFar.value = fog.far;\n    } else if (fog.isFogExp2) {\n      uniforms.fogDensity.value = fog.density;\n    }\n  }\n  function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n    if (material.isMeshBasicMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshLambertMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshToonMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsToon(uniforms, material);\n    } else if (material.isMeshPhongMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsPhong(uniforms, material);\n    } else if (material.isMeshStandardMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsStandard(uniforms, material);\n      if (material.isMeshPhysicalMaterial) {\n        refreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n      }\n    } else if (material.isMeshMatcapMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsMatcap(uniforms, material);\n    } else if (material.isMeshDepthMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshDistanceMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsDistance(uniforms, material);\n    } else if (material.isMeshNormalMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isLineBasicMaterial) {\n      refreshUniformsLine(uniforms, material);\n      if (material.isLineDashedMaterial) {\n        refreshUniformsDash(uniforms, material);\n      }\n    } else if (material.isPointsMaterial) {\n      refreshUniformsPoints(uniforms, material, pixelRatio, height);\n    } else if (material.isSpriteMaterial) {\n      refreshUniformsSprites(uniforms, material);\n    } else if (material.isShadowMaterial) {\n      uniforms.color.value.copy(material.color);\n      uniforms.opacity.value = material.opacity;\n    } else if (material.isShaderMaterial) {\n      material.uniformsNeedUpdate = false;\n    }\n  }\n  function refreshUniformsCommon(uniforms, material) {\n    uniforms.opacity.value = material.opacity;\n    if (material.color) {\n      uniforms.diffuse.value.copy(material.color);\n    }\n    if (material.emissive) {\n      uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n    }\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.mapTransform);\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n      refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform);\n    }\n    if (material.bumpMap) {\n      uniforms.bumpMap.value = material.bumpMap;\n      refreshTransformUniform(material.bumpMap, uniforms.bumpMapTransform);\n      uniforms.bumpScale.value = material.bumpScale;\n      if (material.side === BackSide) {\n        uniforms.bumpScale.value *= -1;\n      }\n    }\n    if (material.normalMap) {\n      uniforms.normalMap.value = material.normalMap;\n      refreshTransformUniform(material.normalMap, uniforms.normalMapTransform);\n      uniforms.normalScale.value.copy(material.normalScale);\n      if (material.side === BackSide) {\n        uniforms.normalScale.value.negate();\n      }\n    }\n    if (material.displacementMap) {\n      uniforms.displacementMap.value = material.displacementMap;\n      refreshTransformUniform(material.displacementMap, uniforms.displacementMapTransform);\n      uniforms.displacementScale.value = material.displacementScale;\n      uniforms.displacementBias.value = material.displacementBias;\n    }\n    if (material.emissiveMap) {\n      uniforms.emissiveMap.value = material.emissiveMap;\n      refreshTransformUniform(material.emissiveMap, uniforms.emissiveMapTransform);\n    }\n    if (material.specularMap) {\n      uniforms.specularMap.value = material.specularMap;\n      refreshTransformUniform(material.specularMap, uniforms.specularMapTransform);\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    const materialProperties = properties.get(material);\n    const envMap = materialProperties.envMap;\n    const envMapRotation = materialProperties.envMapRotation;\n    if (envMap) {\n      uniforms.envMap.value = envMap;\n      _e1.copy(envMapRotation);\n      _e1.x *= -1;\n      _e1.y *= -1;\n      _e1.z *= -1;\n      if (envMap.isCubeTexture && envMap.isRenderTargetTexture === false) {\n        _e1.y *= -1;\n        _e1.z *= -1;\n      }\n      uniforms.envMapRotation.value.setFromMatrix4(_m1.makeRotationFromEuler(_e1));\n      uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n      uniforms.reflectivity.value = material.reflectivity;\n      uniforms.ior.value = material.ior;\n      uniforms.refractionRatio.value = material.refractionRatio;\n    }\n    if (material.lightMap) {\n      uniforms.lightMap.value = material.lightMap;\n      uniforms.lightMapIntensity.value = material.lightMapIntensity;\n      refreshTransformUniform(material.lightMap, uniforms.lightMapTransform);\n    }\n    if (material.aoMap) {\n      uniforms.aoMap.value = material.aoMap;\n      uniforms.aoMapIntensity.value = material.aoMapIntensity;\n      refreshTransformUniform(material.aoMap, uniforms.aoMapTransform);\n    }\n  }\n  function refreshUniformsLine(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.mapTransform);\n    }\n  }\n  function refreshUniformsDash(uniforms, material) {\n    uniforms.dashSize.value = material.dashSize;\n    uniforms.totalSize.value = material.dashSize + material.gapSize;\n    uniforms.scale.value = material.scale;\n  }\n  function refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.size.value = material.size * pixelRatio;\n    uniforms.scale.value = height * 0.5;\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.uvTransform);\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n      refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform);\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n  }\n  function refreshUniformsSprites(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.rotation.value = material.rotation;\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.mapTransform);\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n      refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform);\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n  }\n  function refreshUniformsPhong(uniforms, material) {\n    uniforms.specular.value.copy(material.specular);\n    uniforms.shininess.value = Math.max(material.shininess, 1e-4);\n  }\n  function refreshUniformsToon(uniforms, material) {\n    if (material.gradientMap) {\n      uniforms.gradientMap.value = material.gradientMap;\n    }\n  }\n  function refreshUniformsStandard(uniforms, material) {\n    uniforms.metalness.value = material.metalness;\n    if (material.metalnessMap) {\n      uniforms.metalnessMap.value = material.metalnessMap;\n      refreshTransformUniform(material.metalnessMap, uniforms.metalnessMapTransform);\n    }\n    uniforms.roughness.value = material.roughness;\n    if (material.roughnessMap) {\n      uniforms.roughnessMap.value = material.roughnessMap;\n      refreshTransformUniform(material.roughnessMap, uniforms.roughnessMapTransform);\n    }\n    if (material.envMap) {\n      uniforms.envMapIntensity.value = material.envMapIntensity;\n    }\n  }\n  function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n    uniforms.ior.value = material.ior;\n    if (material.sheen > 0) {\n      uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);\n      uniforms.sheenRoughness.value = material.sheenRoughness;\n      if (material.sheenColorMap) {\n        uniforms.sheenColorMap.value = material.sheenColorMap;\n        refreshTransformUniform(material.sheenColorMap, uniforms.sheenColorMapTransform);\n      }\n      if (material.sheenRoughnessMap) {\n        uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n        refreshTransformUniform(material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform);\n      }\n    }\n    if (material.clearcoat > 0) {\n      uniforms.clearcoat.value = material.clearcoat;\n      uniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n      if (material.clearcoatMap) {\n        uniforms.clearcoatMap.value = material.clearcoatMap;\n        refreshTransformUniform(material.clearcoatMap, uniforms.clearcoatMapTransform);\n      }\n      if (material.clearcoatRoughnessMap) {\n        uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n        refreshTransformUniform(material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform);\n      }\n      if (material.clearcoatNormalMap) {\n        uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n        refreshTransformUniform(material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform);\n        uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n        if (material.side === BackSide) {\n          uniforms.clearcoatNormalScale.value.negate();\n        }\n      }\n    }\n    if (material.dispersion > 0) {\n      uniforms.dispersion.value = material.dispersion;\n    }\n    if (material.iridescence > 0) {\n      uniforms.iridescence.value = material.iridescence;\n      uniforms.iridescenceIOR.value = material.iridescenceIOR;\n      uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[0];\n      uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[1];\n      if (material.iridescenceMap) {\n        uniforms.iridescenceMap.value = material.iridescenceMap;\n        refreshTransformUniform(material.iridescenceMap, uniforms.iridescenceMapTransform);\n      }\n      if (material.iridescenceThicknessMap) {\n        uniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n        refreshTransformUniform(material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform);\n      }\n    }\n    if (material.transmission > 0) {\n      uniforms.transmission.value = material.transmission;\n      uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n      uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n      if (material.transmissionMap) {\n        uniforms.transmissionMap.value = material.transmissionMap;\n        refreshTransformUniform(material.transmissionMap, uniforms.transmissionMapTransform);\n      }\n      uniforms.thickness.value = material.thickness;\n      if (material.thicknessMap) {\n        uniforms.thicknessMap.value = material.thicknessMap;\n        refreshTransformUniform(material.thicknessMap, uniforms.thicknessMapTransform);\n      }\n      uniforms.attenuationDistance.value = material.attenuationDistance;\n      uniforms.attenuationColor.value.copy(material.attenuationColor);\n    }\n    if (material.anisotropy > 0) {\n      uniforms.anisotropyVector.value.set(material.anisotropy * Math.cos(material.anisotropyRotation), material.anisotropy * Math.sin(material.anisotropyRotation));\n      if (material.anisotropyMap) {\n        uniforms.anisotropyMap.value = material.anisotropyMap;\n        refreshTransformUniform(material.anisotropyMap, uniforms.anisotropyMapTransform);\n      }\n    }\n    uniforms.specularIntensity.value = material.specularIntensity;\n    uniforms.specularColor.value.copy(material.specularColor);\n    if (material.specularColorMap) {\n      uniforms.specularColorMap.value = material.specularColorMap;\n      refreshTransformUniform(material.specularColorMap, uniforms.specularColorMapTransform);\n    }\n    if (material.specularIntensityMap) {\n      uniforms.specularIntensityMap.value = material.specularIntensityMap;\n      refreshTransformUniform(material.specularIntensityMap, uniforms.specularIntensityMapTransform);\n    }\n  }\n  function refreshUniformsMatcap(uniforms, material) {\n    if (material.matcap) {\n      uniforms.matcap.value = material.matcap;\n    }\n  }\n  function refreshUniformsDistance(uniforms, material) {\n    const light = properties.get(material).light;\n    uniforms.referencePosition.value.setFromMatrixPosition(light.matrixWorld);\n    uniforms.nearDistance.value = light.shadow.camera.near;\n    uniforms.farDistance.value = light.shadow.camera.far;\n  }\n  return {\n    refreshFogUniforms,\n    refreshMaterialUniforms\n  };\n}\nfunction WebGLUniformsGroups(gl, info, capabilities, state) {\n  let buffers = {};\n  let updateList = {};\n  let allocatedBindingPoints = [];\n  const maxBindingPoints = gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS);\n  function bind(uniformsGroup, program) {\n    const webglProgram = program.program;\n    state.uniformBlockBinding(uniformsGroup, webglProgram);\n  }\n  function update(uniformsGroup, program) {\n    let buffer = buffers[uniformsGroup.id];\n    if (buffer === void 0) {\n      prepareUniformsGroup(uniformsGroup);\n      buffer = createBuffer(uniformsGroup);\n      buffers[uniformsGroup.id] = buffer;\n      uniformsGroup.addEventListener(\"dispose\", onUniformsGroupsDispose);\n    }\n    const webglProgram = program.program;\n    state.updateUBOMapping(uniformsGroup, webglProgram);\n    const frame = info.render.frame;\n    if (updateList[uniformsGroup.id] !== frame) {\n      updateBufferData(uniformsGroup);\n      updateList[uniformsGroup.id] = frame;\n    }\n  }\n  function createBuffer(uniformsGroup) {\n    const bindingPointIndex = allocateBindingPointIndex();\n    uniformsGroup.__bindingPointIndex = bindingPointIndex;\n    const buffer = gl.createBuffer();\n    const size = uniformsGroup.__size;\n    const usage = uniformsGroup.usage;\n    gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);\n    gl.bufferData(gl.UNIFORM_BUFFER, size, usage);\n    gl.bindBuffer(gl.UNIFORM_BUFFER, null);\n    gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPointIndex, buffer);\n    return buffer;\n  }\n  function allocateBindingPointIndex() {\n    for (let i2 = 0; i2 < maxBindingPoints; i2++) {\n      if (allocatedBindingPoints.indexOf(i2) === -1) {\n        allocatedBindingPoints.push(i2);\n        return i2;\n      }\n    }\n    console.error(\"THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.\");\n    return 0;\n  }\n  function updateBufferData(uniformsGroup) {\n    const buffer = buffers[uniformsGroup.id];\n    const uniforms = uniformsGroup.uniforms;\n    const cache = uniformsGroup.__cache;\n    gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);\n    for (let i2 = 0, il = uniforms.length; i2 < il; i2++) {\n      const uniformArray = Array.isArray(uniforms[i2]) ? uniforms[i2] : [uniforms[i2]];\n      for (let j2 = 0, jl = uniformArray.length; j2 < jl; j2++) {\n        const uniform = uniformArray[j2];\n        if (hasUniformChanged(uniform, i2, j2, cache) === true) {\n          const offset = uniform.__offset;\n          const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value];\n          let arrayOffset = 0;\n          for (let k3 = 0; k3 < values.length; k3++) {\n            const value = values[k3];\n            const info2 = getUniformSize(value);\n            if (typeof value === \"number\" || typeof value === \"boolean\") {\n              uniform.__data[0] = value;\n              gl.bufferSubData(gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data);\n            } else if (value.isMatrix3) {\n              uniform.__data[0] = value.elements[0];\n              uniform.__data[1] = value.elements[1];\n              uniform.__data[2] = value.elements[2];\n              uniform.__data[3] = 0;\n              uniform.__data[4] = value.elements[3];\n              uniform.__data[5] = value.elements[4];\n              uniform.__data[6] = value.elements[5];\n              uniform.__data[7] = 0;\n              uniform.__data[8] = value.elements[6];\n              uniform.__data[9] = value.elements[7];\n              uniform.__data[10] = value.elements[8];\n              uniform.__data[11] = 0;\n            } else {\n              value.toArray(uniform.__data, arrayOffset);\n              arrayOffset += info2.storage / Float32Array.BYTES_PER_ELEMENT;\n            }\n          }\n          gl.bufferSubData(gl.UNIFORM_BUFFER, offset, uniform.__data);\n        }\n      }\n    }\n    gl.bindBuffer(gl.UNIFORM_BUFFER, null);\n  }\n  function hasUniformChanged(uniform, index, indexArray, cache) {\n    const value = uniform.value;\n    const indexString = index + \"_\" + indexArray;\n    if (cache[indexString] === void 0) {\n      if (typeof value === \"number\" || typeof value === \"boolean\") {\n        cache[indexString] = value;\n      } else {\n        cache[indexString] = value.clone();\n      }\n      return true;\n    } else {\n      const cachedObject = cache[indexString];\n      if (typeof value === \"number\" || typeof value === \"boolean\") {\n        if (cachedObject !== value) {\n          cache[indexString] = value;\n          return true;\n        }\n      } else {\n        if (cachedObject.equals(value) === false) {\n          cachedObject.copy(value);\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  function prepareUniformsGroup(uniformsGroup) {\n    const uniforms = uniformsGroup.uniforms;\n    let offset = 0;\n    const chunkSize = 16;\n    for (let i2 = 0, l2 = uniforms.length; i2 < l2; i2++) {\n      const uniformArray = Array.isArray(uniforms[i2]) ? uniforms[i2] : [uniforms[i2]];\n      for (let j2 = 0, jl = uniformArray.length; j2 < jl; j2++) {\n        const uniform = uniformArray[j2];\n        const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value];\n        for (let k3 = 0, kl = values.length; k3 < kl; k3++) {\n          const value = values[k3];\n          const info2 = getUniformSize(value);\n          const chunkOffset2 = offset % chunkSize;\n          const chunkPadding = chunkOffset2 % info2.boundary;\n          const chunkStart = chunkOffset2 + chunkPadding;\n          offset += chunkPadding;\n          if (chunkStart !== 0 && chunkSize - chunkStart < info2.storage) {\n            offset += chunkSize - chunkStart;\n          }\n          uniform.__data = new Float32Array(info2.storage / Float32Array.BYTES_PER_ELEMENT);\n          uniform.__offset = offset;\n          offset += info2.storage;\n        }\n      }\n    }\n    const chunkOffset = offset % chunkSize;\n    if (chunkOffset > 0) offset += chunkSize - chunkOffset;\n    uniformsGroup.__size = offset;\n    uniformsGroup.__cache = {};\n    return this;\n  }\n  function getUniformSize(value) {\n    const info2 = {\n      boundary: 0,\n      // bytes\n      storage: 0\n      // bytes\n    };\n    if (typeof value === \"number\" || typeof value === \"boolean\") {\n      info2.boundary = 4;\n      info2.storage = 4;\n    } else if (value.isVector2) {\n      info2.boundary = 8;\n      info2.storage = 8;\n    } else if (value.isVector3 || value.isColor) {\n      info2.boundary = 16;\n      info2.storage = 12;\n    } else if (value.isVector4) {\n      info2.boundary = 16;\n      info2.storage = 16;\n    } else if (value.isMatrix3) {\n      info2.boundary = 48;\n      info2.storage = 48;\n    } else if (value.isMatrix4) {\n      info2.boundary = 64;\n      info2.storage = 64;\n    } else if (value.isTexture) {\n      console.warn(\"THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.\");\n    } else {\n      console.warn(\"THREE.WebGLRenderer: Unsupported uniform value type.\", value);\n    }\n    return info2;\n  }\n  function onUniformsGroupsDispose(event) {\n    const uniformsGroup = event.target;\n    uniformsGroup.removeEventListener(\"dispose\", onUniformsGroupsDispose);\n    const index = allocatedBindingPoints.indexOf(uniformsGroup.__bindingPointIndex);\n    allocatedBindingPoints.splice(index, 1);\n    gl.deleteBuffer(buffers[uniformsGroup.id]);\n    delete buffers[uniformsGroup.id];\n    delete updateList[uniformsGroup.id];\n  }\n  function dispose2() {\n    for (const id in buffers) {\n      gl.deleteBuffer(buffers[id]);\n    }\n    allocatedBindingPoints = [];\n    buffers = {};\n    updateList = {};\n  }\n  return {\n    bind,\n    update,\n    dispose: dispose2\n  };\n}\nfunction transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n  _alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale);\n  if (sin !== void 0) {\n    _rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y;\n    _rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y;\n  } else {\n    _rotatedPosition.copy(_alignedPosition);\n  }\n  vertexPosition.copy(mvPosition);\n  vertexPosition.x += _rotatedPosition.x;\n  vertexPosition.y += _rotatedPosition.y;\n  vertexPosition.applyMatrix4(_viewWorldMatrix);\n}\nfunction sortOpaque(a, b) {\n  return a.z - b.z;\n}\nfunction sortTransparent(a, b) {\n  return b.z - a.z;\n}\nfunction copyAttributeData(src, target2, targetOffset = 0) {\n  const itemSize = target2.itemSize;\n  if (src.isInterleavedBufferAttribute || src.array.constructor !== target2.array.constructor) {\n    const vertexCount = src.count;\n    for (let i2 = 0; i2 < vertexCount; i2++) {\n      for (let c = 0; c < itemSize; c++) {\n        target2.setComponent(i2 + targetOffset, c, src.getComponent(i2, c));\n      }\n    }\n  } else {\n    target2.array.set(src.array, targetOffset * itemSize);\n  }\n  target2.needsUpdate = true;\n}\nfunction checkIntersection(object, raycaster, ray, thresholdSq, a, b) {\n  const positionAttribute = object.geometry.attributes.position;\n  _vStart.fromBufferAttribute(positionAttribute, a);\n  _vEnd.fromBufferAttribute(positionAttribute, b);\n  const distSq = ray.distanceSqToSegment(_vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment);\n  if (distSq > thresholdSq) return;\n  _intersectPointOnRay.applyMatrix4(object.matrixWorld);\n  const distance = raycaster.ray.origin.distanceTo(_intersectPointOnRay);\n  if (distance < raycaster.near || distance > raycaster.far) return;\n  return {\n    distance,\n    // What do we want? intersection point on the ray or on the segment??\n    // point: raycaster.ray.at( distance ),\n    point: _intersectPointOnSegment.clone().applyMatrix4(object.matrixWorld),\n    index: a,\n    face: null,\n    faceIndex: null,\n    barycoord: null,\n    object\n  };\n}\nfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) {\n  const rayPointDistanceSq = _ray.distanceSqToPoint(point);\n  if (rayPointDistanceSq < localThresholdSq) {\n    const intersectPoint = new Vector3();\n    _ray.closestPointToPoint(point, intersectPoint);\n    intersectPoint.applyMatrix4(matrixWorld);\n    const distance = raycaster.ray.origin.distanceTo(intersectPoint);\n    if (distance < raycaster.near || distance > raycaster.far) return;\n    intersects2.push({\n      distance,\n      distanceToRay: Math.sqrt(rayPointDistanceSq),\n      point: intersectPoint,\n      index,\n      face: null,\n      faceIndex: null,\n      barycoord: null,\n      object\n    });\n  }\n}\nfunction CubicPoly() {\n  let c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n  function init(x0, x1, t0, t1) {\n    c0 = x0;\n    c1 = t0;\n    c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n    c3 = 2 * x0 - 2 * x1 + t0 + t1;\n  }\n  return {\n    initCatmullRom: function(x0, x1, x2, x3, tension) {\n      init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n    },\n    initNonuniformCatmullRom: function(x0, x1, x2, x3, dt0, dt1, dt2) {\n      let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n      let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n      t1 *= dt1;\n      t2 *= dt1;\n      init(x1, x2, t1, t2);\n    },\n    calc: function(t2) {\n      const t22 = t2 * t2;\n      const t3 = t22 * t2;\n      return c0 + c1 * t2 + c2 * t22 + c3 * t3;\n    }\n  };\n}\nfunction CatmullRom(t2, p0, p1, p22, p3) {\n  const v0 = (p22 - p0) * 0.5;\n  const v1 = (p3 - p1) * 0.5;\n  const t22 = t2 * t2;\n  const t3 = t2 * t22;\n  return (2 * p1 - 2 * p22 + v0 + v1) * t3 + (-3 * p1 + 3 * p22 - 2 * v0 - v1) * t22 + v0 * t2 + p1;\n}\nfunction QuadraticBezierP0(t2, p3) {\n  const k3 = 1 - t2;\n  return k3 * k3 * p3;\n}\nfunction QuadraticBezierP1(t2, p3) {\n  return 2 * (1 - t2) * t2 * p3;\n}\nfunction QuadraticBezierP2(t2, p3) {\n  return t2 * t2 * p3;\n}\nfunction QuadraticBezier(t2, p0, p1, p22) {\n  return QuadraticBezierP0(t2, p0) + QuadraticBezierP1(t2, p1) + QuadraticBezierP2(t2, p22);\n}\nfunction CubicBezierP0(t2, p3) {\n  const k3 = 1 - t2;\n  return k3 * k3 * k3 * p3;\n}\nfunction CubicBezierP1(t2, p3) {\n  const k3 = 1 - t2;\n  return 3 * k3 * k3 * t2 * p3;\n}\nfunction CubicBezierP2(t2, p3) {\n  return 3 * (1 - t2) * t2 * t2 * p3;\n}\nfunction CubicBezierP3(t2, p3) {\n  return t2 * t2 * t2 * p3;\n}\nfunction CubicBezier(t2, p0, p1, p22, p3) {\n  return CubicBezierP0(t2, p0) + CubicBezierP1(t2, p1) + CubicBezierP2(t2, p22) + CubicBezierP3(t2, p3);\n}\nfunction linkedList(data, start, end, dim, clockwise) {\n  let i2, last;\n  if (clockwise === signedArea(data, start, end, dim) > 0) {\n    for (i2 = start; i2 < end; i2 += dim) last = insertNode(i2, data[i2], data[i2 + 1], last);\n  } else {\n    for (i2 = end - dim; i2 >= start; i2 -= dim) last = insertNode(i2, data[i2], data[i2 + 1], last);\n  }\n  if (last && equals(last, last.next)) {\n    removeNode(last);\n    last = last.next;\n  }\n  return last;\n}\nfunction filterPoints(start, end) {\n  if (!start) return start;\n  if (!end) end = start;\n  let p3 = start, again;\n  do {\n    again = false;\n    if (!p3.steiner && (equals(p3, p3.next) || area(p3.prev, p3, p3.next) === 0)) {\n      removeNode(p3);\n      p3 = end = p3.prev;\n      if (p3 === p3.next) break;\n      again = true;\n    } else {\n      p3 = p3.next;\n    }\n  } while (again || p3 !== end);\n  return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n  if (!ear) return;\n  if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n  let stop = ear, prev, next;\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n    if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n      triangles.push(prev.i / dim | 0);\n      triangles.push(ear.i / dim | 0);\n      triangles.push(next.i / dim | 0);\n      removeNode(ear);\n      ear = next.next;\n      stop = next.next;\n      continue;\n    }\n    ear = next;\n    if (ear === stop) {\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n      break;\n    }\n  }\n}\nfunction isEar(ear) {\n  const a = ear.prev, b = ear, c = ear.next;\n  if (area(a, b, c) >= 0) return false;\n  const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n  const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n  let p3 = c.next;\n  while (p3 !== a) {\n    if (p3.x >= x0 && p3.x <= x1 && p3.y >= y0 && p3.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p3.x, p3.y) && area(p3.prev, p3, p3.next) >= 0) return false;\n    p3 = p3.next;\n  }\n  return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n  const a = ear.prev, b = ear, c = ear.next;\n  if (area(a, b, c) >= 0) return false;\n  const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n  const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n  const minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize);\n  let p3 = ear.prevZ, n = ear.nextZ;\n  while (p3 && p3.z >= minZ && n && n.z <= maxZ) {\n    if (p3.x >= x0 && p3.x <= x1 && p3.y >= y0 && p3.y <= y1 && p3 !== a && p3 !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p3.x, p3.y) && area(p3.prev, p3, p3.next) >= 0) return false;\n    p3 = p3.prevZ;\n    if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n    n = n.nextZ;\n  }\n  while (p3 && p3.z >= minZ) {\n    if (p3.x >= x0 && p3.x <= x1 && p3.y >= y0 && p3.y <= y1 && p3 !== a && p3 !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p3.x, p3.y) && area(p3.prev, p3, p3.next) >= 0) return false;\n    p3 = p3.prevZ;\n  }\n  while (n && n.z <= maxZ) {\n    if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n    n = n.nextZ;\n  }\n  return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n  let p3 = start;\n  do {\n    const a = p3.prev, b = p3.next.next;\n    if (!equals(a, b) && intersects(a, p3, p3.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim | 0);\n      triangles.push(p3.i / dim | 0);\n      triangles.push(b.i / dim | 0);\n      removeNode(p3);\n      removeNode(p3.next);\n      p3 = start = b;\n    }\n    p3 = p3.next;\n  } while (p3 !== start);\n  return filterPoints(p3);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n  let a = start;\n  do {\n    let b = a.next.next;\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        let c = splitPolygon(a, b);\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n        earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n        earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n        return;\n      }\n      b = b.next;\n    }\n    a = a.next;\n  } while (a !== start);\n}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n  const queue = [];\n  let i2, len, start, end, list;\n  for (i2 = 0, len = holeIndices.length; i2 < len; i2++) {\n    start = holeIndices[i2] * dim;\n    end = i2 < len - 1 ? holeIndices[i2 + 1] * dim : data.length;\n    list = linkedList(data, start, end, dim, false);\n    if (list === list.next) list.steiner = true;\n    queue.push(getLeftmost(list));\n  }\n  queue.sort(compareX);\n  for (i2 = 0; i2 < queue.length; i2++) {\n    outerNode = eliminateHole(queue[i2], outerNode);\n  }\n  return outerNode;\n}\nfunction compareX(a, b) {\n  return a.x - b.x;\n}\nfunction eliminateHole(hole, outerNode) {\n  const bridge = findHoleBridge(hole, outerNode);\n  if (!bridge) {\n    return outerNode;\n  }\n  const bridgeReverse = splitPolygon(bridge, hole);\n  filterPoints(bridgeReverse, bridgeReverse.next);\n  return filterPoints(bridge, bridge.next);\n}\nfunction findHoleBridge(hole, outerNode) {\n  let p3 = outerNode, qx = -Infinity, m;\n  const hx = hole.x, hy = hole.y;\n  do {\n    if (hy <= p3.y && hy >= p3.next.y && p3.next.y !== p3.y) {\n      const x = p3.x + (hy - p3.y) * (p3.next.x - p3.x) / (p3.next.y - p3.y);\n      if (x <= hx && x > qx) {\n        qx = x;\n        m = p3.x < p3.next.x ? p3 : p3.next;\n        if (x === hx) return m;\n      }\n    }\n    p3 = p3.next;\n  } while (p3 !== outerNode);\n  if (!m) return null;\n  const stop = m, mx = m.x, my = m.y;\n  let tanMin = Infinity, tan;\n  p3 = m;\n  do {\n    if (hx >= p3.x && p3.x >= mx && hx !== p3.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p3.x, p3.y)) {\n      tan = Math.abs(hy - p3.y) / (hx - p3.x);\n      if (locallyInside(p3, hole) && (tan < tanMin || tan === tanMin && (p3.x > m.x || p3.x === m.x && sectorContainsSector(m, p3)))) {\n        m = p3;\n        tanMin = tan;\n      }\n    }\n    p3 = p3.next;\n  } while (p3 !== stop);\n  return m;\n}\nfunction sectorContainsSector(m, p3) {\n  return area(m.prev, m, p3.prev) < 0 && area(p3.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n  let p3 = start;\n  do {\n    if (p3.z === 0) p3.z = zOrder(p3.x, p3.y, minX, minY, invSize);\n    p3.prevZ = p3.prev;\n    p3.nextZ = p3.next;\n    p3 = p3.next;\n  } while (p3 !== start);\n  p3.prevZ.nextZ = null;\n  p3.prevZ = null;\n  sortLinked(p3);\n}\nfunction sortLinked(list) {\n  let i2, p3, q3, e, tail, numMerges, pSize, qSize, inSize = 1;\n  do {\n    p3 = list;\n    list = null;\n    tail = null;\n    numMerges = 0;\n    while (p3) {\n      numMerges++;\n      q3 = p3;\n      pSize = 0;\n      for (i2 = 0; i2 < inSize; i2++) {\n        pSize++;\n        q3 = q3.nextZ;\n        if (!q3) break;\n      }\n      qSize = inSize;\n      while (pSize > 0 || qSize > 0 && q3) {\n        if (pSize !== 0 && (qSize === 0 || !q3 || p3.z <= q3.z)) {\n          e = p3;\n          p3 = p3.nextZ;\n          pSize--;\n        } else {\n          e = q3;\n          q3 = q3.nextZ;\n          qSize--;\n        }\n        if (tail) tail.nextZ = e;\n        else list = e;\n        e.prevZ = tail;\n        tail = e;\n      }\n      p3 = q3;\n    }\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n  return list;\n}\nfunction zOrder(x, y2, minX, minY, invSize) {\n  x = (x - minX) * invSize | 0;\n  y2 = (y2 - minY) * invSize | 0;\n  x = (x | x << 8) & 16711935;\n  x = (x | x << 4) & 252645135;\n  x = (x | x << 2) & 858993459;\n  x = (x | x << 1) & 1431655765;\n  y2 = (y2 | y2 << 8) & 16711935;\n  y2 = (y2 | y2 << 4) & 252645135;\n  y2 = (y2 | y2 << 2) & 858993459;\n  y2 = (y2 | y2 << 1) & 1431655765;\n  return x | y2 << 1;\n}\nfunction getLeftmost(start) {\n  let p3 = start, leftmost = start;\n  do {\n    if (p3.x < leftmost.x || p3.x === leftmost.x && p3.y < leftmost.y) leftmost = p3;\n    p3 = p3.next;\n  } while (p3 !== start);\n  return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px2, py2) {\n  return (cx - px2) * (ay - py2) >= (ax - px2) * (cy - py2) && (ax - px2) * (by - py2) >= (bx - px2) * (ay - py2) && (bx - px2) * (cy - py2) >= (cx - px2) * (by - py2);\n}\nfunction isValidDiagonal(a, b) {\n  return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n  (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n  (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n  equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\nfunction area(p3, q3, r2) {\n  return (q3.y - p3.y) * (r2.x - q3.x) - (q3.x - p3.x) * (r2.y - q3.y);\n}\nfunction equals(p1, p22) {\n  return p1.x === p22.x && p1.y === p22.y;\n}\nfunction intersects(p1, q12, p22, q22) {\n  const o1 = sign(area(p1, q12, p22));\n  const o2 = sign(area(p1, q12, q22));\n  const o3 = sign(area(p22, q22, p1));\n  const o4 = sign(area(p22, q22, q12));\n  if (o1 !== o2 && o3 !== o4) return true;\n  if (o1 === 0 && onSegment(p1, p22, q12)) return true;\n  if (o2 === 0 && onSegment(p1, q22, q12)) return true;\n  if (o3 === 0 && onSegment(p22, p1, q22)) return true;\n  if (o4 === 0 && onSegment(p22, q12, q22)) return true;\n  return false;\n}\nfunction onSegment(p3, q3, r2) {\n  return q3.x <= Math.max(p3.x, r2.x) && q3.x >= Math.min(p3.x, r2.x) && q3.y <= Math.max(p3.y, r2.y) && q3.y >= Math.min(p3.y, r2.y);\n}\nfunction sign(num) {\n  return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n  let p3 = a;\n  do {\n    if (p3.i !== a.i && p3.next.i !== a.i && p3.i !== b.i && p3.next.i !== b.i && intersects(p3, p3.next, a, b)) return true;\n    p3 = p3.next;\n  } while (p3 !== a);\n  return false;\n}\nfunction locallyInside(a, b) {\n  return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\nfunction middleInside(a, b) {\n  let p3 = a, inside = false;\n  const px2 = (a.x + b.x) / 2, py2 = (a.y + b.y) / 2;\n  do {\n    if (p3.y > py2 !== p3.next.y > py2 && p3.next.y !== p3.y && px2 < (p3.next.x - p3.x) * (py2 - p3.y) / (p3.next.y - p3.y) + p3.x)\n      inside = !inside;\n    p3 = p3.next;\n  } while (p3 !== a);\n  return inside;\n}\nfunction splitPolygon(a, b) {\n  const a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;\n  a.next = b;\n  b.prev = a;\n  a2.next = an;\n  an.prev = a2;\n  b2.next = a2;\n  a2.prev = b2;\n  bp.next = b2;\n  b2.prev = bp;\n  return b2;\n}\nfunction insertNode(i2, x, y2, last) {\n  const p3 = new Node(i2, x, y2);\n  if (!last) {\n    p3.prev = p3;\n    p3.next = p3;\n  } else {\n    p3.next = last.next;\n    p3.prev = last;\n    last.next.prev = p3;\n    last.next = p3;\n  }\n  return p3;\n}\nfunction removeNode(p3) {\n  p3.next.prev = p3.prev;\n  p3.prev.next = p3.next;\n  if (p3.prevZ) p3.prevZ.nextZ = p3.nextZ;\n  if (p3.nextZ) p3.nextZ.prevZ = p3.prevZ;\n}\nfunction Node(i2, x, y2) {\n  this.i = i2;\n  this.x = x;\n  this.y = y2;\n  this.prev = null;\n  this.next = null;\n  this.z = 0;\n  this.prevZ = null;\n  this.nextZ = null;\n  this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n  let sum = 0;\n  for (let i2 = start, j2 = end - dim; i2 < end; i2 += dim) {\n    sum += (data[j2] - data[i2]) * (data[i2 + 1] + data[j2 + 1]);\n    j2 = i2;\n  }\n  return sum;\n}\nfunction removeDupEndPts(points) {\n  const l2 = points.length;\n  if (l2 > 2 && points[l2 - 1].equals(points[0])) {\n    points.pop();\n  }\n}\nfunction addContour(vertices, contour) {\n  for (let i2 = 0; i2 < contour.length; i2++) {\n    vertices.push(contour[i2].x);\n    vertices.push(contour[i2].y);\n  }\n}\nfunction toJSON$1(shapes, options, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n      const shape = shapes[i2];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  data.options = Object.assign({}, options);\n  if (options.extrudePath !== void 0) data.options.extrudePath = options.extrudePath.toJSON();\n  return data;\n}\nfunction toJSON(shapes, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n      const shape = shapes[i2];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  return data;\n}\nfunction isUniqueEdge(start, end, edges) {\n  const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n  const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`;\n  if (edges.has(hash1) === true || edges.has(hash2) === true) {\n    return false;\n  } else {\n    edges.add(hash1);\n    edges.add(hash2);\n    return true;\n  }\n}\nfunction convertArray(array, type, forceClone) {\n  if (!array || // let 'undefined' and 'null' pass\n  !forceClone && array.constructor === type) return array;\n  if (typeof type.BYTES_PER_ELEMENT === \"number\") {\n    return new type(array);\n  }\n  return Array.prototype.slice.call(array);\n}\nfunction isTypedArray(object) {\n  return ArrayBuffer.isView(object) && !(object instanceof DataView);\n}\nfunction getKeyframeOrder(times) {\n  function compareTime(i2, j2) {\n    return times[i2] - times[j2];\n  }\n  const n = times.length;\n  const result = new Array(n);\n  for (let i2 = 0; i2 !== n; ++i2) result[i2] = i2;\n  result.sort(compareTime);\n  return result;\n}\nfunction sortedArray(values, stride, order) {\n  const nValues = values.length;\n  const result = new values.constructor(nValues);\n  for (let i2 = 0, dstOffset = 0; dstOffset !== nValues; ++i2) {\n    const srcOffset = order[i2] * stride;\n    for (let j2 = 0; j2 !== stride; ++j2) {\n      result[dstOffset++] = values[srcOffset + j2];\n    }\n  }\n  return result;\n}\nfunction flattenJSON(jsonKeys, times, values, valuePropertyName) {\n  let i2 = 1, key = jsonKeys[0];\n  while (key !== void 0 && key[valuePropertyName] === void 0) {\n    key = jsonKeys[i2++];\n  }\n  if (key === void 0) return;\n  let value = key[valuePropertyName];\n  if (value === void 0) return;\n  if (Array.isArray(value)) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push.apply(values, value);\n      }\n      key = jsonKeys[i2++];\n    } while (key !== void 0);\n  } else if (value.toArray !== void 0) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        value.toArray(values, values.length);\n      }\n      key = jsonKeys[i2++];\n    } while (key !== void 0);\n  } else {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push(value);\n      }\n      key = jsonKeys[i2++];\n    } while (key !== void 0);\n  }\n}\nfunction subclip(sourceClip, name, startFrame, endFrame, fps = 30) {\n  const clip = sourceClip.clone();\n  clip.name = name;\n  const tracks = [];\n  for (let i2 = 0; i2 < clip.tracks.length; ++i2) {\n    const track = clip.tracks[i2];\n    const valueSize = track.getValueSize();\n    const times = [];\n    const values = [];\n    for (let j2 = 0; j2 < track.times.length; ++j2) {\n      const frame = track.times[j2] * fps;\n      if (frame < startFrame || frame >= endFrame) continue;\n      times.push(track.times[j2]);\n      for (let k3 = 0; k3 < valueSize; ++k3) {\n        values.push(track.values[j2 * valueSize + k3]);\n      }\n    }\n    if (times.length === 0) continue;\n    track.times = convertArray(times, track.times.constructor);\n    track.values = convertArray(values, track.values.constructor);\n    tracks.push(track);\n  }\n  clip.tracks = tracks;\n  let minStartTime = Infinity;\n  for (let i2 = 0; i2 < clip.tracks.length; ++i2) {\n    if (minStartTime > clip.tracks[i2].times[0]) {\n      minStartTime = clip.tracks[i2].times[0];\n    }\n  }\n  for (let i2 = 0; i2 < clip.tracks.length; ++i2) {\n    clip.tracks[i2].shift(-1 * minStartTime);\n  }\n  clip.resetDuration();\n  return clip;\n}\nfunction makeClipAdditive(targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n  if (fps <= 0) fps = 30;\n  const numTracks = referenceClip.tracks.length;\n  const referenceTime = referenceFrame / fps;\n  for (let i2 = 0; i2 < numTracks; ++i2) {\n    const referenceTrack = referenceClip.tracks[i2];\n    const referenceTrackType = referenceTrack.ValueTypeName;\n    if (referenceTrackType === \"bool\" || referenceTrackType === \"string\") continue;\n    const targetTrack = targetClip.tracks.find(function(track) {\n      return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n    });\n    if (targetTrack === void 0) continue;\n    let referenceOffset = 0;\n    const referenceValueSize = referenceTrack.getValueSize();\n    if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      referenceOffset = referenceValueSize / 3;\n    }\n    let targetOffset = 0;\n    const targetValueSize = targetTrack.getValueSize();\n    if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      targetOffset = targetValueSize / 3;\n    }\n    const lastIndex = referenceTrack.times.length - 1;\n    let referenceValue;\n    if (referenceTime <= referenceTrack.times[0]) {\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      referenceValue = referenceTrack.values.slice(startIndex, endIndex);\n    } else if (referenceTime >= referenceTrack.times[lastIndex]) {\n      const startIndex = lastIndex * referenceValueSize + referenceOffset;\n      const endIndex = startIndex + referenceValueSize - referenceOffset;\n      referenceValue = referenceTrack.values.slice(startIndex, endIndex);\n    } else {\n      const interpolant = referenceTrack.createInterpolant();\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      interpolant.evaluate(referenceTime);\n      referenceValue = interpolant.resultBuffer.slice(startIndex, endIndex);\n    }\n    if (referenceTrackType === \"quaternion\") {\n      const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n      referenceQuat.toArray(referenceValue);\n    }\n    const numTimes = targetTrack.times.length;\n    for (let j2 = 0; j2 < numTimes; ++j2) {\n      const valueStart = j2 * targetValueSize + targetOffset;\n      if (referenceTrackType === \"quaternion\") {\n        Quaternion.multiplyQuaternionsFlat(\n          targetTrack.values,\n          valueStart,\n          referenceValue,\n          0,\n          targetTrack.values,\n          valueStart\n        );\n      } else {\n        const valueEnd = targetValueSize - targetOffset * 2;\n        for (let k3 = 0; k3 < valueEnd; ++k3) {\n          targetTrack.values[valueStart + k3] -= referenceValue[k3];\n        }\n      }\n    }\n  }\n  targetClip.blendMode = AdditiveAnimationBlendMode;\n  return targetClip;\n}\nfunction getTrackTypeForValueTypeName(typeName) {\n  switch (typeName.toLowerCase()) {\n    case \"scalar\":\n    case \"double\":\n    case \"float\":\n    case \"number\":\n    case \"integer\":\n      return NumberKeyframeTrack;\n    case \"vector\":\n    case \"vector2\":\n    case \"vector3\":\n    case \"vector4\":\n      return VectorKeyframeTrack;\n    case \"color\":\n      return ColorKeyframeTrack;\n    case \"quaternion\":\n      return QuaternionKeyframeTrack;\n    case \"bool\":\n    case \"boolean\":\n      return BooleanKeyframeTrack;\n    case \"string\":\n      return StringKeyframeTrack;\n  }\n  throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \" + typeName);\n}\nfunction parseKeyframeTrack(json) {\n  if (json.type === void 0) {\n    throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");\n  }\n  const trackType = getTrackTypeForValueTypeName(json.type);\n  if (json.times === void 0) {\n    const times = [], values = [];\n    flattenJSON(json.keys, times, values, \"value\");\n    json.times = times;\n    json.values = values;\n  }\n  if (trackType.parse !== void 0) {\n    return trackType.parse(json);\n  } else {\n    return new trackType(json.name, json.times, json.values, json.interpolation);\n  }\n}\nfunction now() {\n  return performance.now();\n}\nfunction ascSort(a, b) {\n  return a.distance - b.distance;\n}\nfunction intersect(object, raycaster, intersects2, recursive) {\n  let propagate = true;\n  if (object.layers.test(raycaster.layers)) {\n    const result = object.raycast(raycaster, intersects2);\n    if (result === false) propagate = false;\n  }\n  if (propagate === true && recursive === true) {\n    const children = object.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      intersect(children[i2], raycaster, intersects2, true);\n    }\n  }\n}\nfunction getBoneList(object) {\n  const boneList = [];\n  if (object.isBone === true) {\n    boneList.push(object);\n  }\n  for (let i2 = 0; i2 < object.children.length; i2++) {\n    boneList.push.apply(boneList, getBoneList(object.children[i2]));\n  }\n  return boneList;\n}\nfunction setPoint(point, pointMap, geometry, camera, x, y2, z2) {\n  _vector.set(x, y2, z2).unproject(camera);\n  const points = pointMap[point];\n  if (points !== void 0) {\n    const position = geometry.getAttribute(\"position\");\n    for (let i2 = 0, l2 = points.length; i2 < l2; i2++) {\n      position.setXYZ(points[i2], _vector.x, _vector.y, _vector.z);\n    }\n  }\n}\nvar three_module_exports, REVISION, MOUSE, TOUCH, CullFaceNone, CullFaceBack, CullFaceFront, CullFaceFrontBack, BasicShadowMap, PCFShadowMap, PCFSoftShadowMap, VSMShadowMap, FrontSide, BackSide, DoubleSide, NoBlending, NormalBlending, AdditiveBlending, SubtractiveBlending, MultiplyBlending, CustomBlending, AddEquation, SubtractEquation, ReverseSubtractEquation, MinEquation, MaxEquation, ZeroFactor, OneFactor, SrcColorFactor, OneMinusSrcColorFactor, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstAlphaFactor, OneMinusDstAlphaFactor, DstColorFactor, OneMinusDstColorFactor, SrcAlphaSaturateFactor, ConstantColorFactor, OneMinusConstantColorFactor, ConstantAlphaFactor, OneMinusConstantAlphaFactor, NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth, MultiplyOperation, MixOperation, AddOperation, NoToneMapping, LinearToneMapping, ReinhardToneMapping, CineonToneMapping, ACESFilmicToneMapping, CustomToneMapping, AgXToneMapping, NeutralToneMapping, AttachedBindMode, DetachedBindMode, UVMapping, CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping, CubeUVReflectionMapping, RepeatWrapping, ClampToEdgeWrapping, MirroredRepeatWrapping, NearestFilter, NearestMipmapNearestFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipMapLinearFilter, LinearFilter, LinearMipmapNearestFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipMapLinearFilter, UnsignedByteType, ByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, FloatType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt248Type, UnsignedInt5999Type, AlphaFormat, RGBFormat, RGBAFormat, LuminanceFormat, LuminanceAlphaFormat, DepthFormat, DepthStencilFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBIntegerFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, LoopOnce, LoopRepeat, LoopPingPong, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, ZeroCurvatureEnding, ZeroSlopeEnding, WrapAroundEnding, NormalAnimationBlendMode, AdditiveAnimationBlendMode, TrianglesDrawMode, TriangleStripDrawMode, TriangleFanDrawMode, BasicDepthPacking, RGBADepthPacking, RGBDepthPacking, RGDepthPacking, TangentSpaceNormalMap, ObjectSpaceNormalMap, NoColorSpace, SRGBColorSpace, LinearSRGBColorSpace, DisplayP3ColorSpace, LinearDisplayP3ColorSpace, LinearTransfer, SRGBTransfer, Rec709Primaries, P3Primaries, ZeroStencilOp, KeepStencilOp, ReplaceStencilOp, IncrementStencilOp, DecrementStencilOp, IncrementWrapStencilOp, DecrementWrapStencilOp, InvertStencilOp, NeverStencilFunc, LessStencilFunc, EqualStencilFunc, LessEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc, GreaterEqualStencilFunc, AlwaysStencilFunc, NeverCompare, LessCompare, EqualCompare, LessEqualCompare, GreaterCompare, NotEqualCompare, GreaterEqualCompare, AlwaysCompare, StaticDrawUsage, DynamicDrawUsage, StreamDrawUsage, StaticReadUsage, DynamicReadUsage, StreamReadUsage, StaticCopyUsage, DynamicCopyUsage, StreamCopyUsage, GLSL1, GLSL3, WebGLCoordinateSystem, WebGPUCoordinateSystem, EventDispatcher, _lut, _seed, DEG2RAD, RAD2DEG, MathUtils, Vector2, Matrix3, _m3, TYPED_ARRAYS, _cache, LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, COLOR_SPACES, SUPPORTED_WORKING_COLOR_SPACES, ColorManagement, _canvas, ImageUtils, _sourceId, Source, _textureId, Texture, Vector4, RenderTarget, WebGLRenderTarget, DataArrayTexture, WebGLArrayRenderTarget, Data3DTexture, WebGL3DRenderTarget, Quaternion, Vector3, _vector$c, _quaternion$4, Box3, _points, _vector$b, _box$4, _v0$3, _v1$7, _v2$4, _f0, _f1, _f2, _center, _extents, _triangleNormal, _testAxis, _box$3, _v1$6, _v2$3, Sphere, _vector$a, _segCenter, _segDir, _diff, _edge1, _edge2, _normal$1, Ray, Matrix4, _v1$5, _m1$4, _zero, _one, _x, _y, _z, _matrix$2, _quaternion$3, Euler, Layers, _object3DId, _v1$4, _q1, _m1$3, _target, _position$3, _scale$2, _quaternion$2, _xAxis, _yAxis, _zAxis, _addedEvent, _removedEvent, _childaddedEvent, _childremovedEvent, Object3D, _v0$2, _v1$3, _v2$2, _v3$2, _vab, _vac, _vbc, _vap, _vbp, _vcp, _v40, _v41, _v42, Triangle, _colorKeywords, _hslA, _hslB, Color, _color, _materialId, Material, MeshBasicMaterial, _tables, DataUtils, _vector$9, _vector2$1, BufferAttribute, Int8BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Int16BufferAttribute, Uint16BufferAttribute, Int32BufferAttribute, Uint32BufferAttribute, Float16BufferAttribute, Float32BufferAttribute, _id$2, _m1$2, _obj, _offset, _box$2, _boxMorphTargets, _vector$8, BufferGeometry, _inverseMatrix$3, _ray$3, _sphere$6, _sphereHitAt, _vA$1, _vB$1, _vC$1, _tempA, _morphA, _intersectionPoint, _intersectionPointWorld, Mesh, BoxGeometry, UniformsUtils, default_vertex, default_fragment, ShaderMaterial, Camera, _v3$1, _minTarget, _maxTarget, PerspectiveCamera, fov, aspect, CubeCamera, CubeTexture, WebGLCubeRenderTarget, _vector1, _vector2, _normalMatrix, Plane, _sphere$5, _vector$7, Frustum, PlaneGeometry, alphahash_fragment, alphahash_pars_fragment, alphamap_fragment, alphamap_pars_fragment, alphatest_fragment, alphatest_pars_fragment, aomap_fragment, aomap_pars_fragment, batching_pars_vertex, batching_vertex, begin_vertex, beginnormal_vertex, bsdfs, iridescence_fragment, bumpmap_pars_fragment, clipping_planes_fragment, clipping_planes_pars_fragment, clipping_planes_pars_vertex, clipping_planes_vertex, color_fragment, color_pars_fragment, color_pars_vertex, color_vertex, common, cube_uv_reflection_fragment, defaultnormal_vertex, displacementmap_pars_vertex, displacementmap_vertex, emissivemap_fragment, emissivemap_pars_fragment, colorspace_fragment, colorspace_pars_fragment, envmap_fragment, envmap_common_pars_fragment, envmap_pars_fragment, envmap_pars_vertex, envmap_vertex, fog_vertex, fog_pars_vertex, fog_fragment, fog_pars_fragment, gradientmap_pars_fragment, lightmap_pars_fragment, lights_lambert_fragment, lights_lambert_pars_fragment, lights_pars_begin, envmap_physical_pars_fragment, lights_toon_fragment, lights_toon_pars_fragment, lights_phong_fragment, lights_phong_pars_fragment, lights_physical_fragment, lights_physical_pars_fragment, lights_fragment_begin, lights_fragment_maps, lights_fragment_end, logdepthbuf_fragment, logdepthbuf_pars_fragment, logdepthbuf_pars_vertex, logdepthbuf_vertex, map_fragment, map_pars_fragment, map_particle_fragment, map_particle_pars_fragment, metalnessmap_fragment, metalnessmap_pars_fragment, morphinstance_vertex, morphcolor_vertex, morphnormal_vertex, morphtarget_pars_vertex, morphtarget_vertex, normal_fragment_begin, normal_fragment_maps, normal_pars_fragment, normal_pars_vertex, normal_vertex, normalmap_pars_fragment, clearcoat_normal_fragment_begin, clearcoat_normal_fragment_maps, clearcoat_pars_fragment, iridescence_pars_fragment, opaque_fragment, packing, premultiplied_alpha_fragment, project_vertex, dithering_fragment, dithering_pars_fragment, roughnessmap_fragment, roughnessmap_pars_fragment, shadowmap_pars_fragment, shadowmap_pars_vertex, shadowmap_vertex, shadowmask_pars_fragment, skinbase_vertex, skinning_pars_vertex, skinning_vertex, skinnormal_vertex, specularmap_fragment, specularmap_pars_fragment, tonemapping_fragment, tonemapping_pars_fragment, transmission_fragment, transmission_pars_fragment, uv_pars_fragment, uv_pars_vertex, uv_vertex, worldpos_vertex, vertex$h, fragment$h, vertex$g, fragment$g, vertex$f, fragment$f, vertex$e, fragment$e, vertex$d, fragment$d, vertex$c, fragment$c, vertex$b, fragment$b, vertex$a, fragment$a, vertex$9, fragment$9, vertex$8, fragment$8, vertex$7, fragment$7, vertex$6, fragment$6, vertex$5, fragment$5, vertex$4, fragment$4, vertex$3, fragment$3, vertex$2, fragment$2, vertex$1, fragment$1, ShaderChunk, UniformsLib, ShaderLib, _rgb, _e1$1, _m1$1, OrthographicCamera, LOD_MIN, EXTRA_LOD_SIGMA, MAX_SAMPLES, _flatCamera, _clearColor, _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel, _oldXrEnabled, PHI, INV_PHI, _axisDirections, PMREMGenerator, DepthTexture, emptyTexture, emptyShadowTexture, emptyArrayTexture, empty3dTexture, emptyCubeTexture, arrayCacheF32, arrayCacheI32, mat4array, mat3array, mat2array, SingleUniform, PureArrayUniform, StructuredUniform, RePathPart, WebGLUniforms, COMPLETION_STATUS_KHR, programIdCount, _v0$1, includePattern, shaderChunkMap, unrollLoopPattern, _id$1, WebGLShaderCache, WebGLShaderStage, nextVersion, MeshDepthMaterial, MeshDistanceMaterial, vertex, fragment, reversedFuncs, TextureUtils, ArrayCamera, Group, _moveEvent, WebXRController, _occlusion_vertex, _occlusion_fragment, WebXRDepthSensing, WebXRManager, _e1, _m1, WebGLRenderer, FogExp2, Fog, Scene, InterleavedBuffer, _vector$6, InterleavedBufferAttribute, SpriteMaterial, _geometry, _intersectPoint, _worldScale, _mvPosition, _alignedPosition, _rotatedPosition, _viewWorldMatrix, _vA, _vB, _vC, _uvA, _uvB, _uvC, Sprite, _v1$2, _v2$1, LOD, _basePosition, _skinIndex, _skinWeight, _vector3, _matrix4, _vertex, _sphere$4, _inverseMatrix$2, _ray$2, SkinnedMesh, Bone, DataTexture, _offsetMatrix, _identityMatrix$1, Skeleton, InstancedBufferAttribute, _instanceLocalMatrix, _instanceWorldMatrix, _instanceIntersects, _box3, _identity, _mesh$1, _sphere$3, InstancedMesh, MultiDrawRenderList, _matrix$1, _invMatrixWorld, _identityMatrix, _whiteColor, _projScreenMatrix$2, _frustum, _box$1, _sphere$2, _vector$5, _forward, _temp, _renderList, _mesh, _batchIntersects, BatchedMesh, LineBasicMaterial, _vStart, _vEnd, _inverseMatrix$1, _ray$1, _sphere$1, _intersectPointOnRay, _intersectPointOnSegment, Line, _start, _end, LineSegments, LineLoop, PointsMaterial, _inverseMatrix, _ray, _sphere, _position$2, Points, VideoTexture, FramebufferTexture, CompressedTexture, CompressedArrayTexture, CompressedCubeTexture, CanvasTexture, Curve, EllipseCurve, ArcCurve, tmp, px, py, pz, CatmullRomCurve3, CubicBezierCurve, CubicBezierCurve3, LineCurve, LineCurve3, QuadraticBezierCurve, QuadraticBezierCurve3, SplineCurve, Curves, CurvePath, Path, LatheGeometry, CapsuleGeometry, CircleGeometry, CylinderGeometry, ConeGeometry, PolyhedronGeometry, DodecahedronGeometry, _v0, _v1$1, _normal, _triangle, EdgesGeometry, Shape, Earcut, ShapeUtils, ExtrudeGeometry, WorldUVGenerator, IcosahedronGeometry, OctahedronGeometry, RingGeometry, ShapeGeometry, SphereGeometry, TetrahedronGeometry, TorusGeometry, TorusKnotGeometry, TubeGeometry, WireframeGeometry, Geometries, ShadowMaterial, RawShaderMaterial, MeshStandardMaterial, MeshPhysicalMaterial, MeshPhongMaterial, MeshToonMaterial, MeshNormalMaterial, MeshLambertMaterial, MeshMatcapMaterial, LineDashedMaterial, AnimationUtils, Interpolant, CubicInterpolant, LinearInterpolant, DiscreteInterpolant, KeyframeTrack, BooleanKeyframeTrack, ColorKeyframeTrack, NumberKeyframeTrack, QuaternionLinearInterpolant, QuaternionKeyframeTrack, StringKeyframeTrack, VectorKeyframeTrack, AnimationClip, Cache, LoadingManager, DefaultLoadingManager, Loader, loading, HttpError, FileLoader, AnimationLoader, CompressedTextureLoader, ImageLoader, CubeTextureLoader, DataTextureLoader, TextureLoader, Light, HemisphereLight, _projScreenMatrix$1, _lightPositionWorld$1, _lookTarget$1, LightShadow, SpotLightShadow, SpotLight, _projScreenMatrix, _lightPositionWorld, _lookTarget, PointLightShadow, PointLight, DirectionalLightShadow, DirectionalLight, AmbientLight, RectAreaLight, SphericalHarmonics3, LightProbe, MaterialLoader, LoaderUtils, InstancedBufferGeometry, BufferGeometryLoader, ObjectLoader, TEXTURE_MAPPING, TEXTURE_WRAPPING, TEXTURE_FILTER, ImageBitmapLoader, _context, AudioContext, AudioLoader, _eyeRight, _eyeLeft, _projectionMatrix, StereoCamera, Clock, _position$1, _quaternion$1, _scale$1, _orientation$1, AudioListener, Audio, _position, _quaternion, _scale, _orientation, PositionalAudio, AudioAnalyser, PropertyMixer, _RESERVED_CHARS_RE, _reservedRe, _wordChar, _wordCharOrDot, _directoryRe, _nodeRe, _objectRe, _propertyRe, _trackRe, _supportedObjectNames, Composite, PropertyBinding, AnimationObjectGroup, AnimationAction, _controlInterpolantsResultBuffer, AnimationMixer, Uniform, _id, UniformsGroup, InstancedInterleavedBuffer, GLBufferAttribute, _matrix, Raycaster, Spherical, Cylindrical, Matrix2, _vector$4, Box2, _startP, _startEnd, Line3, _vector$3, SpotLightHelper, _vector$2, _boneMatrix, _matrixWorldInv, SkeletonHelper, PointLightHelper, _vector$1, _color1, _color2, HemisphereLightHelper, GridHelper, PolarGridHelper, _v1, _v2, _v3, DirectionalLightHelper, _vector, _camera, CameraHelper, _box, BoxHelper, Box3Helper, PlaneHelper, _axis, _lineGeometry, _coneGeometry, ArrowHelper, AxesHelper, ShapePath, Controls, WebGLMultipleRenderTargets;\nvar init_chunk_BT6X4JN2 = __esm({\n  \"../shadergradient/dist/chunk-BT6X4JN2.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    three_module_exports = {};\n    __export(three_module_exports, {\n      ACESFilmicToneMapping: () => ACESFilmicToneMapping,\n      AddEquation: () => AddEquation,\n      AddOperation: () => AddOperation,\n      AdditiveAnimationBlendMode: () => AdditiveAnimationBlendMode,\n      AdditiveBlending: () => AdditiveBlending,\n      AgXToneMapping: () => AgXToneMapping,\n      AlphaFormat: () => AlphaFormat,\n      AlwaysCompare: () => AlwaysCompare,\n      AlwaysDepth: () => AlwaysDepth,\n      AlwaysStencilFunc: () => AlwaysStencilFunc,\n      AmbientLight: () => AmbientLight,\n      AnimationAction: () => AnimationAction,\n      AnimationClip: () => AnimationClip,\n      AnimationLoader: () => AnimationLoader,\n      AnimationMixer: () => AnimationMixer,\n      AnimationObjectGroup: () => AnimationObjectGroup,\n      AnimationUtils: () => AnimationUtils,\n      ArcCurve: () => ArcCurve,\n      ArrayCamera: () => ArrayCamera,\n      ArrowHelper: () => ArrowHelper,\n      AttachedBindMode: () => AttachedBindMode,\n      Audio: () => Audio,\n      AudioAnalyser: () => AudioAnalyser,\n      AudioContext: () => AudioContext,\n      AudioListener: () => AudioListener,\n      AudioLoader: () => AudioLoader,\n      AxesHelper: () => AxesHelper,\n      BackSide: () => BackSide,\n      BasicDepthPacking: () => BasicDepthPacking,\n      BasicShadowMap: () => BasicShadowMap,\n      BatchedMesh: () => BatchedMesh,\n      Bone: () => Bone,\n      BooleanKeyframeTrack: () => BooleanKeyframeTrack,\n      Box2: () => Box2,\n      Box3: () => Box3,\n      Box3Helper: () => Box3Helper,\n      BoxGeometry: () => BoxGeometry,\n      BoxHelper: () => BoxHelper,\n      BufferAttribute: () => BufferAttribute,\n      BufferGeometry: () => BufferGeometry,\n      BufferGeometryLoader: () => BufferGeometryLoader,\n      ByteType: () => ByteType,\n      Cache: () => Cache,\n      Camera: () => Camera,\n      CameraHelper: () => CameraHelper,\n      CanvasTexture: () => CanvasTexture,\n      CapsuleGeometry: () => CapsuleGeometry,\n      CatmullRomCurve3: () => CatmullRomCurve3,\n      CineonToneMapping: () => CineonToneMapping,\n      CircleGeometry: () => CircleGeometry,\n      ClampToEdgeWrapping: () => ClampToEdgeWrapping,\n      Clock: () => Clock,\n      Color: () => Color,\n      ColorKeyframeTrack: () => ColorKeyframeTrack,\n      ColorManagement: () => ColorManagement,\n      CompressedArrayTexture: () => CompressedArrayTexture,\n      CompressedCubeTexture: () => CompressedCubeTexture,\n      CompressedTexture: () => CompressedTexture,\n      CompressedTextureLoader: () => CompressedTextureLoader,\n      ConeGeometry: () => ConeGeometry,\n      ConstantAlphaFactor: () => ConstantAlphaFactor,\n      ConstantColorFactor: () => ConstantColorFactor,\n      Controls: () => Controls,\n      CubeCamera: () => CubeCamera,\n      CubeReflectionMapping: () => CubeReflectionMapping,\n      CubeRefractionMapping: () => CubeRefractionMapping,\n      CubeTexture: () => CubeTexture,\n      CubeTextureLoader: () => CubeTextureLoader,\n      CubeUVReflectionMapping: () => CubeUVReflectionMapping,\n      CubicBezierCurve: () => CubicBezierCurve,\n      CubicBezierCurve3: () => CubicBezierCurve3,\n      CubicInterpolant: () => CubicInterpolant,\n      CullFaceBack: () => CullFaceBack,\n      CullFaceFront: () => CullFaceFront,\n      CullFaceFrontBack: () => CullFaceFrontBack,\n      CullFaceNone: () => CullFaceNone,\n      Curve: () => Curve,\n      CurvePath: () => CurvePath,\n      CustomBlending: () => CustomBlending,\n      CustomToneMapping: () => CustomToneMapping,\n      CylinderGeometry: () => CylinderGeometry,\n      Cylindrical: () => Cylindrical,\n      Data3DTexture: () => Data3DTexture,\n      DataArrayTexture: () => DataArrayTexture,\n      DataTexture: () => DataTexture,\n      DataTextureLoader: () => DataTextureLoader,\n      DataUtils: () => DataUtils,\n      DecrementStencilOp: () => DecrementStencilOp,\n      DecrementWrapStencilOp: () => DecrementWrapStencilOp,\n      DefaultLoadingManager: () => DefaultLoadingManager,\n      DepthFormat: () => DepthFormat,\n      DepthStencilFormat: () => DepthStencilFormat,\n      DepthTexture: () => DepthTexture,\n      DetachedBindMode: () => DetachedBindMode,\n      DirectionalLight: () => DirectionalLight,\n      DirectionalLightHelper: () => DirectionalLightHelper,\n      DiscreteInterpolant: () => DiscreteInterpolant,\n      DisplayP3ColorSpace: () => DisplayP3ColorSpace,\n      DodecahedronGeometry: () => DodecahedronGeometry,\n      DoubleSide: () => DoubleSide,\n      DstAlphaFactor: () => DstAlphaFactor,\n      DstColorFactor: () => DstColorFactor,\n      DynamicCopyUsage: () => DynamicCopyUsage,\n      DynamicDrawUsage: () => DynamicDrawUsage,\n      DynamicReadUsage: () => DynamicReadUsage,\n      EdgesGeometry: () => EdgesGeometry,\n      EllipseCurve: () => EllipseCurve,\n      EqualCompare: () => EqualCompare,\n      EqualDepth: () => EqualDepth,\n      EqualStencilFunc: () => EqualStencilFunc,\n      EquirectangularReflectionMapping: () => EquirectangularReflectionMapping,\n      EquirectangularRefractionMapping: () => EquirectangularRefractionMapping,\n      Euler: () => Euler,\n      EventDispatcher: () => EventDispatcher,\n      ExtrudeGeometry: () => ExtrudeGeometry,\n      FileLoader: () => FileLoader,\n      Float16BufferAttribute: () => Float16BufferAttribute,\n      Float32BufferAttribute: () => Float32BufferAttribute,\n      FloatType: () => FloatType,\n      Fog: () => Fog,\n      FogExp2: () => FogExp2,\n      FramebufferTexture: () => FramebufferTexture,\n      FrontSide: () => FrontSide,\n      Frustum: () => Frustum,\n      GLBufferAttribute: () => GLBufferAttribute,\n      GLSL1: () => GLSL1,\n      GLSL3: () => GLSL3,\n      GreaterCompare: () => GreaterCompare,\n      GreaterDepth: () => GreaterDepth,\n      GreaterEqualCompare: () => GreaterEqualCompare,\n      GreaterEqualDepth: () => GreaterEqualDepth,\n      GreaterEqualStencilFunc: () => GreaterEqualStencilFunc,\n      GreaterStencilFunc: () => GreaterStencilFunc,\n      GridHelper: () => GridHelper,\n      Group: () => Group,\n      HalfFloatType: () => HalfFloatType,\n      HemisphereLight: () => HemisphereLight,\n      HemisphereLightHelper: () => HemisphereLightHelper,\n      IcosahedronGeometry: () => IcosahedronGeometry,\n      ImageBitmapLoader: () => ImageBitmapLoader,\n      ImageLoader: () => ImageLoader,\n      ImageUtils: () => ImageUtils,\n      IncrementStencilOp: () => IncrementStencilOp,\n      IncrementWrapStencilOp: () => IncrementWrapStencilOp,\n      InstancedBufferAttribute: () => InstancedBufferAttribute,\n      InstancedBufferGeometry: () => InstancedBufferGeometry,\n      InstancedInterleavedBuffer: () => InstancedInterleavedBuffer,\n      InstancedMesh: () => InstancedMesh,\n      Int16BufferAttribute: () => Int16BufferAttribute,\n      Int32BufferAttribute: () => Int32BufferAttribute,\n      Int8BufferAttribute: () => Int8BufferAttribute,\n      IntType: () => IntType,\n      InterleavedBuffer: () => InterleavedBuffer,\n      InterleavedBufferAttribute: () => InterleavedBufferAttribute,\n      Interpolant: () => Interpolant,\n      InterpolateDiscrete: () => InterpolateDiscrete,\n      InterpolateLinear: () => InterpolateLinear,\n      InterpolateSmooth: () => InterpolateSmooth,\n      InvertStencilOp: () => InvertStencilOp,\n      KeepStencilOp: () => KeepStencilOp,\n      KeyframeTrack: () => KeyframeTrack,\n      LOD: () => LOD,\n      LatheGeometry: () => LatheGeometry,\n      Layers: () => Layers,\n      LessCompare: () => LessCompare,\n      LessDepth: () => LessDepth,\n      LessEqualCompare: () => LessEqualCompare,\n      LessEqualDepth: () => LessEqualDepth,\n      LessEqualStencilFunc: () => LessEqualStencilFunc,\n      LessStencilFunc: () => LessStencilFunc,\n      Light: () => Light,\n      LightProbe: () => LightProbe,\n      Line: () => Line,\n      Line3: () => Line3,\n      LineBasicMaterial: () => LineBasicMaterial,\n      LineCurve: () => LineCurve,\n      LineCurve3: () => LineCurve3,\n      LineDashedMaterial: () => LineDashedMaterial,\n      LineLoop: () => LineLoop,\n      LineSegments: () => LineSegments,\n      LinearDisplayP3ColorSpace: () => LinearDisplayP3ColorSpace,\n      LinearFilter: () => LinearFilter,\n      LinearInterpolant: () => LinearInterpolant,\n      LinearMipMapLinearFilter: () => LinearMipMapLinearFilter,\n      LinearMipMapNearestFilter: () => LinearMipMapNearestFilter,\n      LinearMipmapLinearFilter: () => LinearMipmapLinearFilter,\n      LinearMipmapNearestFilter: () => LinearMipmapNearestFilter,\n      LinearSRGBColorSpace: () => LinearSRGBColorSpace,\n      LinearToneMapping: () => LinearToneMapping,\n      LinearTransfer: () => LinearTransfer,\n      Loader: () => Loader,\n      LoaderUtils: () => LoaderUtils,\n      LoadingManager: () => LoadingManager,\n      LoopOnce: () => LoopOnce,\n      LoopPingPong: () => LoopPingPong,\n      LoopRepeat: () => LoopRepeat,\n      LuminanceAlphaFormat: () => LuminanceAlphaFormat,\n      LuminanceFormat: () => LuminanceFormat,\n      MOUSE: () => MOUSE,\n      Material: () => Material,\n      MaterialLoader: () => MaterialLoader,\n      MathUtils: () => MathUtils,\n      Matrix2: () => Matrix2,\n      Matrix3: () => Matrix3,\n      Matrix4: () => Matrix4,\n      MaxEquation: () => MaxEquation,\n      Mesh: () => Mesh,\n      MeshBasicMaterial: () => MeshBasicMaterial,\n      MeshDepthMaterial: () => MeshDepthMaterial,\n      MeshDistanceMaterial: () => MeshDistanceMaterial,\n      MeshLambertMaterial: () => MeshLambertMaterial,\n      MeshMatcapMaterial: () => MeshMatcapMaterial,\n      MeshNormalMaterial: () => MeshNormalMaterial,\n      MeshPhongMaterial: () => MeshPhongMaterial,\n      MeshPhysicalMaterial: () => MeshPhysicalMaterial,\n      MeshStandardMaterial: () => MeshStandardMaterial,\n      MeshToonMaterial: () => MeshToonMaterial,\n      MinEquation: () => MinEquation,\n      MirroredRepeatWrapping: () => MirroredRepeatWrapping,\n      MixOperation: () => MixOperation,\n      MultiplyBlending: () => MultiplyBlending,\n      MultiplyOperation: () => MultiplyOperation,\n      NearestFilter: () => NearestFilter,\n      NearestMipMapLinearFilter: () => NearestMipMapLinearFilter,\n      NearestMipMapNearestFilter: () => NearestMipMapNearestFilter,\n      NearestMipmapLinearFilter: () => NearestMipmapLinearFilter,\n      NearestMipmapNearestFilter: () => NearestMipmapNearestFilter,\n      NeutralToneMapping: () => NeutralToneMapping,\n      NeverCompare: () => NeverCompare,\n      NeverDepth: () => NeverDepth,\n      NeverStencilFunc: () => NeverStencilFunc,\n      NoBlending: () => NoBlending,\n      NoColorSpace: () => NoColorSpace,\n      NoToneMapping: () => NoToneMapping,\n      NormalAnimationBlendMode: () => NormalAnimationBlendMode,\n      NormalBlending: () => NormalBlending,\n      NotEqualCompare: () => NotEqualCompare,\n      NotEqualDepth: () => NotEqualDepth,\n      NotEqualStencilFunc: () => NotEqualStencilFunc,\n      NumberKeyframeTrack: () => NumberKeyframeTrack,\n      Object3D: () => Object3D,\n      ObjectLoader: () => ObjectLoader,\n      ObjectSpaceNormalMap: () => ObjectSpaceNormalMap,\n      OctahedronGeometry: () => OctahedronGeometry,\n      OneFactor: () => OneFactor,\n      OneMinusConstantAlphaFactor: () => OneMinusConstantAlphaFactor,\n      OneMinusConstantColorFactor: () => OneMinusConstantColorFactor,\n      OneMinusDstAlphaFactor: () => OneMinusDstAlphaFactor,\n      OneMinusDstColorFactor: () => OneMinusDstColorFactor,\n      OneMinusSrcAlphaFactor: () => OneMinusSrcAlphaFactor,\n      OneMinusSrcColorFactor: () => OneMinusSrcColorFactor,\n      OrthographicCamera: () => OrthographicCamera,\n      P3Primaries: () => P3Primaries,\n      PCFShadowMap: () => PCFShadowMap,\n      PCFSoftShadowMap: () => PCFSoftShadowMap,\n      PMREMGenerator: () => PMREMGenerator,\n      Path: () => Path,\n      PerspectiveCamera: () => PerspectiveCamera,\n      Plane: () => Plane,\n      PlaneGeometry: () => PlaneGeometry,\n      PlaneHelper: () => PlaneHelper,\n      PointLight: () => PointLight,\n      PointLightHelper: () => PointLightHelper,\n      Points: () => Points,\n      PointsMaterial: () => PointsMaterial,\n      PolarGridHelper: () => PolarGridHelper,\n      PolyhedronGeometry: () => PolyhedronGeometry,\n      PositionalAudio: () => PositionalAudio,\n      PropertyBinding: () => PropertyBinding,\n      PropertyMixer: () => PropertyMixer,\n      QuadraticBezierCurve: () => QuadraticBezierCurve,\n      QuadraticBezierCurve3: () => QuadraticBezierCurve3,\n      Quaternion: () => Quaternion,\n      QuaternionKeyframeTrack: () => QuaternionKeyframeTrack,\n      QuaternionLinearInterpolant: () => QuaternionLinearInterpolant,\n      RED_GREEN_RGTC2_Format: () => RED_GREEN_RGTC2_Format,\n      RED_RGTC1_Format: () => RED_RGTC1_Format,\n      REVISION: () => REVISION,\n      RGBADepthPacking: () => RGBADepthPacking,\n      RGBAFormat: () => RGBAFormat,\n      RGBAIntegerFormat: () => RGBAIntegerFormat,\n      RGBA_ASTC_10x10_Format: () => RGBA_ASTC_10x10_Format,\n      RGBA_ASTC_10x5_Format: () => RGBA_ASTC_10x5_Format,\n      RGBA_ASTC_10x6_Format: () => RGBA_ASTC_10x6_Format,\n      RGBA_ASTC_10x8_Format: () => RGBA_ASTC_10x8_Format,\n      RGBA_ASTC_12x10_Format: () => RGBA_ASTC_12x10_Format,\n      RGBA_ASTC_12x12_Format: () => RGBA_ASTC_12x12_Format,\n      RGBA_ASTC_4x4_Format: () => RGBA_ASTC_4x4_Format,\n      RGBA_ASTC_5x4_Format: () => RGBA_ASTC_5x4_Format,\n      RGBA_ASTC_5x5_Format: () => RGBA_ASTC_5x5_Format,\n      RGBA_ASTC_6x5_Format: () => RGBA_ASTC_6x5_Format,\n      RGBA_ASTC_6x6_Format: () => RGBA_ASTC_6x6_Format,\n      RGBA_ASTC_8x5_Format: () => RGBA_ASTC_8x5_Format,\n      RGBA_ASTC_8x6_Format: () => RGBA_ASTC_8x6_Format,\n      RGBA_ASTC_8x8_Format: () => RGBA_ASTC_8x8_Format,\n      RGBA_BPTC_Format: () => RGBA_BPTC_Format,\n      RGBA_ETC2_EAC_Format: () => RGBA_ETC2_EAC_Format,\n      RGBA_PVRTC_2BPPV1_Format: () => RGBA_PVRTC_2BPPV1_Format,\n      RGBA_PVRTC_4BPPV1_Format: () => RGBA_PVRTC_4BPPV1_Format,\n      RGBA_S3TC_DXT1_Format: () => RGBA_S3TC_DXT1_Format,\n      RGBA_S3TC_DXT3_Format: () => RGBA_S3TC_DXT3_Format,\n      RGBA_S3TC_DXT5_Format: () => RGBA_S3TC_DXT5_Format,\n      RGBDepthPacking: () => RGBDepthPacking,\n      RGBFormat: () => RGBFormat,\n      RGBIntegerFormat: () => RGBIntegerFormat,\n      RGB_BPTC_SIGNED_Format: () => RGB_BPTC_SIGNED_Format,\n      RGB_BPTC_UNSIGNED_Format: () => RGB_BPTC_UNSIGNED_Format,\n      RGB_ETC1_Format: () => RGB_ETC1_Format,\n      RGB_ETC2_Format: () => RGB_ETC2_Format,\n      RGB_PVRTC_2BPPV1_Format: () => RGB_PVRTC_2BPPV1_Format,\n      RGB_PVRTC_4BPPV1_Format: () => RGB_PVRTC_4BPPV1_Format,\n      RGB_S3TC_DXT1_Format: () => RGB_S3TC_DXT1_Format,\n      RGDepthPacking: () => RGDepthPacking,\n      RGFormat: () => RGFormat,\n      RGIntegerFormat: () => RGIntegerFormat,\n      RawShaderMaterial: () => RawShaderMaterial,\n      Ray: () => Ray,\n      Raycaster: () => Raycaster,\n      Rec709Primaries: () => Rec709Primaries,\n      RectAreaLight: () => RectAreaLight,\n      RedFormat: () => RedFormat,\n      RedIntegerFormat: () => RedIntegerFormat,\n      ReinhardToneMapping: () => ReinhardToneMapping,\n      RenderTarget: () => RenderTarget,\n      RepeatWrapping: () => RepeatWrapping,\n      ReplaceStencilOp: () => ReplaceStencilOp,\n      ReverseSubtractEquation: () => ReverseSubtractEquation,\n      RingGeometry: () => RingGeometry,\n      SIGNED_RED_GREEN_RGTC2_Format: () => SIGNED_RED_GREEN_RGTC2_Format,\n      SIGNED_RED_RGTC1_Format: () => SIGNED_RED_RGTC1_Format,\n      SRGBColorSpace: () => SRGBColorSpace,\n      SRGBTransfer: () => SRGBTransfer,\n      Scene: () => Scene,\n      ShaderChunk: () => ShaderChunk,\n      ShaderLib: () => ShaderLib,\n      ShaderMaterial: () => ShaderMaterial,\n      ShadowMaterial: () => ShadowMaterial,\n      Shape: () => Shape,\n      ShapeGeometry: () => ShapeGeometry,\n      ShapePath: () => ShapePath,\n      ShapeUtils: () => ShapeUtils,\n      ShortType: () => ShortType,\n      Skeleton: () => Skeleton,\n      SkeletonHelper: () => SkeletonHelper,\n      SkinnedMesh: () => SkinnedMesh,\n      Source: () => Source,\n      Sphere: () => Sphere,\n      SphereGeometry: () => SphereGeometry,\n      Spherical: () => Spherical,\n      SphericalHarmonics3: () => SphericalHarmonics3,\n      SplineCurve: () => SplineCurve,\n      SpotLight: () => SpotLight,\n      SpotLightHelper: () => SpotLightHelper,\n      Sprite: () => Sprite,\n      SpriteMaterial: () => SpriteMaterial,\n      SrcAlphaFactor: () => SrcAlphaFactor,\n      SrcAlphaSaturateFactor: () => SrcAlphaSaturateFactor,\n      SrcColorFactor: () => SrcColorFactor,\n      StaticCopyUsage: () => StaticCopyUsage,\n      StaticDrawUsage: () => StaticDrawUsage,\n      StaticReadUsage: () => StaticReadUsage,\n      StereoCamera: () => StereoCamera,\n      StreamCopyUsage: () => StreamCopyUsage,\n      StreamDrawUsage: () => StreamDrawUsage,\n      StreamReadUsage: () => StreamReadUsage,\n      StringKeyframeTrack: () => StringKeyframeTrack,\n      SubtractEquation: () => SubtractEquation,\n      SubtractiveBlending: () => SubtractiveBlending,\n      TOUCH: () => TOUCH,\n      TangentSpaceNormalMap: () => TangentSpaceNormalMap,\n      TetrahedronGeometry: () => TetrahedronGeometry,\n      Texture: () => Texture,\n      TextureLoader: () => TextureLoader,\n      TextureUtils: () => TextureUtils,\n      TorusGeometry: () => TorusGeometry,\n      TorusKnotGeometry: () => TorusKnotGeometry,\n      Triangle: () => Triangle,\n      TriangleFanDrawMode: () => TriangleFanDrawMode,\n      TriangleStripDrawMode: () => TriangleStripDrawMode,\n      TrianglesDrawMode: () => TrianglesDrawMode,\n      TubeGeometry: () => TubeGeometry,\n      UVMapping: () => UVMapping,\n      Uint16BufferAttribute: () => Uint16BufferAttribute,\n      Uint32BufferAttribute: () => Uint32BufferAttribute,\n      Uint8BufferAttribute: () => Uint8BufferAttribute,\n      Uint8ClampedBufferAttribute: () => Uint8ClampedBufferAttribute,\n      Uniform: () => Uniform,\n      UniformsGroup: () => UniformsGroup,\n      UniformsLib: () => UniformsLib,\n      UniformsUtils: () => UniformsUtils,\n      UnsignedByteType: () => UnsignedByteType,\n      UnsignedInt248Type: () => UnsignedInt248Type,\n      UnsignedInt5999Type: () => UnsignedInt5999Type,\n      UnsignedIntType: () => UnsignedIntType,\n      UnsignedShort4444Type: () => UnsignedShort4444Type,\n      UnsignedShort5551Type: () => UnsignedShort5551Type,\n      UnsignedShortType: () => UnsignedShortType,\n      VSMShadowMap: () => VSMShadowMap,\n      Vector2: () => Vector2,\n      Vector3: () => Vector3,\n      Vector4: () => Vector4,\n      VectorKeyframeTrack: () => VectorKeyframeTrack,\n      VideoTexture: () => VideoTexture,\n      WebGL3DRenderTarget: () => WebGL3DRenderTarget,\n      WebGLArrayRenderTarget: () => WebGLArrayRenderTarget,\n      WebGLCoordinateSystem: () => WebGLCoordinateSystem,\n      WebGLCubeRenderTarget: () => WebGLCubeRenderTarget,\n      WebGLMultipleRenderTargets: () => WebGLMultipleRenderTargets,\n      WebGLRenderTarget: () => WebGLRenderTarget,\n      WebGLRenderer: () => WebGLRenderer,\n      WebGLUtils: () => WebGLUtils,\n      WebGPUCoordinateSystem: () => WebGPUCoordinateSystem,\n      WireframeGeometry: () => WireframeGeometry,\n      WrapAroundEnding: () => WrapAroundEnding,\n      ZeroCurvatureEnding: () => ZeroCurvatureEnding,\n      ZeroFactor: () => ZeroFactor,\n      ZeroSlopeEnding: () => ZeroSlopeEnding,\n      ZeroStencilOp: () => ZeroStencilOp,\n      createCanvasElement: () => createCanvasElement\n    });\n    REVISION = \"169\";\n    MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\n    TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\n    CullFaceNone = 0;\n    CullFaceBack = 1;\n    CullFaceFront = 2;\n    CullFaceFrontBack = 3;\n    BasicShadowMap = 0;\n    PCFShadowMap = 1;\n    PCFSoftShadowMap = 2;\n    VSMShadowMap = 3;\n    FrontSide = 0;\n    BackSide = 1;\n    DoubleSide = 2;\n    NoBlending = 0;\n    NormalBlending = 1;\n    AdditiveBlending = 2;\n    SubtractiveBlending = 3;\n    MultiplyBlending = 4;\n    CustomBlending = 5;\n    AddEquation = 100;\n    SubtractEquation = 101;\n    ReverseSubtractEquation = 102;\n    MinEquation = 103;\n    MaxEquation = 104;\n    ZeroFactor = 200;\n    OneFactor = 201;\n    SrcColorFactor = 202;\n    OneMinusSrcColorFactor = 203;\n    SrcAlphaFactor = 204;\n    OneMinusSrcAlphaFactor = 205;\n    DstAlphaFactor = 206;\n    OneMinusDstAlphaFactor = 207;\n    DstColorFactor = 208;\n    OneMinusDstColorFactor = 209;\n    SrcAlphaSaturateFactor = 210;\n    ConstantColorFactor = 211;\n    OneMinusConstantColorFactor = 212;\n    ConstantAlphaFactor = 213;\n    OneMinusConstantAlphaFactor = 214;\n    NeverDepth = 0;\n    AlwaysDepth = 1;\n    LessDepth = 2;\n    LessEqualDepth = 3;\n    EqualDepth = 4;\n    GreaterEqualDepth = 5;\n    GreaterDepth = 6;\n    NotEqualDepth = 7;\n    MultiplyOperation = 0;\n    MixOperation = 1;\n    AddOperation = 2;\n    NoToneMapping = 0;\n    LinearToneMapping = 1;\n    ReinhardToneMapping = 2;\n    CineonToneMapping = 3;\n    ACESFilmicToneMapping = 4;\n    CustomToneMapping = 5;\n    AgXToneMapping = 6;\n    NeutralToneMapping = 7;\n    AttachedBindMode = \"attached\";\n    DetachedBindMode = \"detached\";\n    UVMapping = 300;\n    CubeReflectionMapping = 301;\n    CubeRefractionMapping = 302;\n    EquirectangularReflectionMapping = 303;\n    EquirectangularRefractionMapping = 304;\n    CubeUVReflectionMapping = 306;\n    RepeatWrapping = 1e3;\n    ClampToEdgeWrapping = 1001;\n    MirroredRepeatWrapping = 1002;\n    NearestFilter = 1003;\n    NearestMipmapNearestFilter = 1004;\n    NearestMipMapNearestFilter = 1004;\n    NearestMipmapLinearFilter = 1005;\n    NearestMipMapLinearFilter = 1005;\n    LinearFilter = 1006;\n    LinearMipmapNearestFilter = 1007;\n    LinearMipMapNearestFilter = 1007;\n    LinearMipmapLinearFilter = 1008;\n    LinearMipMapLinearFilter = 1008;\n    UnsignedByteType = 1009;\n    ByteType = 1010;\n    ShortType = 1011;\n    UnsignedShortType = 1012;\n    IntType = 1013;\n    UnsignedIntType = 1014;\n    FloatType = 1015;\n    HalfFloatType = 1016;\n    UnsignedShort4444Type = 1017;\n    UnsignedShort5551Type = 1018;\n    UnsignedInt248Type = 1020;\n    UnsignedInt5999Type = 35902;\n    AlphaFormat = 1021;\n    RGBFormat = 1022;\n    RGBAFormat = 1023;\n    LuminanceFormat = 1024;\n    LuminanceAlphaFormat = 1025;\n    DepthFormat = 1026;\n    DepthStencilFormat = 1027;\n    RedFormat = 1028;\n    RedIntegerFormat = 1029;\n    RGFormat = 1030;\n    RGIntegerFormat = 1031;\n    RGBIntegerFormat = 1032;\n    RGBAIntegerFormat = 1033;\n    RGB_S3TC_DXT1_Format = 33776;\n    RGBA_S3TC_DXT1_Format = 33777;\n    RGBA_S3TC_DXT3_Format = 33778;\n    RGBA_S3TC_DXT5_Format = 33779;\n    RGB_PVRTC_4BPPV1_Format = 35840;\n    RGB_PVRTC_2BPPV1_Format = 35841;\n    RGBA_PVRTC_4BPPV1_Format = 35842;\n    RGBA_PVRTC_2BPPV1_Format = 35843;\n    RGB_ETC1_Format = 36196;\n    RGB_ETC2_Format = 37492;\n    RGBA_ETC2_EAC_Format = 37496;\n    RGBA_ASTC_4x4_Format = 37808;\n    RGBA_ASTC_5x4_Format = 37809;\n    RGBA_ASTC_5x5_Format = 37810;\n    RGBA_ASTC_6x5_Format = 37811;\n    RGBA_ASTC_6x6_Format = 37812;\n    RGBA_ASTC_8x5_Format = 37813;\n    RGBA_ASTC_8x6_Format = 37814;\n    RGBA_ASTC_8x8_Format = 37815;\n    RGBA_ASTC_10x5_Format = 37816;\n    RGBA_ASTC_10x6_Format = 37817;\n    RGBA_ASTC_10x8_Format = 37818;\n    RGBA_ASTC_10x10_Format = 37819;\n    RGBA_ASTC_12x10_Format = 37820;\n    RGBA_ASTC_12x12_Format = 37821;\n    RGBA_BPTC_Format = 36492;\n    RGB_BPTC_SIGNED_Format = 36494;\n    RGB_BPTC_UNSIGNED_Format = 36495;\n    RED_RGTC1_Format = 36283;\n    SIGNED_RED_RGTC1_Format = 36284;\n    RED_GREEN_RGTC2_Format = 36285;\n    SIGNED_RED_GREEN_RGTC2_Format = 36286;\n    LoopOnce = 2200;\n    LoopRepeat = 2201;\n    LoopPingPong = 2202;\n    InterpolateDiscrete = 2300;\n    InterpolateLinear = 2301;\n    InterpolateSmooth = 2302;\n    ZeroCurvatureEnding = 2400;\n    ZeroSlopeEnding = 2401;\n    WrapAroundEnding = 2402;\n    NormalAnimationBlendMode = 2500;\n    AdditiveAnimationBlendMode = 2501;\n    TrianglesDrawMode = 0;\n    TriangleStripDrawMode = 1;\n    TriangleFanDrawMode = 2;\n    BasicDepthPacking = 3200;\n    RGBADepthPacking = 3201;\n    RGBDepthPacking = 3202;\n    RGDepthPacking = 3203;\n    TangentSpaceNormalMap = 0;\n    ObjectSpaceNormalMap = 1;\n    NoColorSpace = \"\";\n    SRGBColorSpace = \"srgb\";\n    LinearSRGBColorSpace = \"srgb-linear\";\n    DisplayP3ColorSpace = \"display-p3\";\n    LinearDisplayP3ColorSpace = \"display-p3-linear\";\n    LinearTransfer = \"linear\";\n    SRGBTransfer = \"srgb\";\n    Rec709Primaries = \"rec709\";\n    P3Primaries = \"p3\";\n    ZeroStencilOp = 0;\n    KeepStencilOp = 7680;\n    ReplaceStencilOp = 7681;\n    IncrementStencilOp = 7682;\n    DecrementStencilOp = 7683;\n    IncrementWrapStencilOp = 34055;\n    DecrementWrapStencilOp = 34056;\n    InvertStencilOp = 5386;\n    NeverStencilFunc = 512;\n    LessStencilFunc = 513;\n    EqualStencilFunc = 514;\n    LessEqualStencilFunc = 515;\n    GreaterStencilFunc = 516;\n    NotEqualStencilFunc = 517;\n    GreaterEqualStencilFunc = 518;\n    AlwaysStencilFunc = 519;\n    NeverCompare = 512;\n    LessCompare = 513;\n    EqualCompare = 514;\n    LessEqualCompare = 515;\n    GreaterCompare = 516;\n    NotEqualCompare = 517;\n    GreaterEqualCompare = 518;\n    AlwaysCompare = 519;\n    StaticDrawUsage = 35044;\n    DynamicDrawUsage = 35048;\n    StreamDrawUsage = 35040;\n    StaticReadUsage = 35045;\n    DynamicReadUsage = 35049;\n    StreamReadUsage = 35041;\n    StaticCopyUsage = 35046;\n    DynamicCopyUsage = 35050;\n    StreamCopyUsage = 35042;\n    GLSL1 = \"100\";\n    GLSL3 = \"300 es\";\n    WebGLCoordinateSystem = 2e3;\n    WebGPUCoordinateSystem = 2001;\n    EventDispatcher = class {\n      addEventListener(type, listener) {\n        if (this._listeners === void 0) this._listeners = {};\n        const listeners = this._listeners;\n        if (listeners[type] === void 0) {\n          listeners[type] = [];\n        }\n        if (listeners[type].indexOf(listener) === -1) {\n          listeners[type].push(listener);\n        }\n      }\n      hasEventListener(type, listener) {\n        if (this._listeners === void 0) return false;\n        const listeners = this._listeners;\n        return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n      }\n      removeEventListener(type, listener) {\n        if (this._listeners === void 0) return;\n        const listeners = this._listeners;\n        const listenerArray = listeners[type];\n        if (listenerArray !== void 0) {\n          const index = listenerArray.indexOf(listener);\n          if (index !== -1) {\n            listenerArray.splice(index, 1);\n          }\n        }\n      }\n      dispatchEvent(event) {\n        if (this._listeners === void 0) return;\n        const listeners = this._listeners;\n        const listenerArray = listeners[event.type];\n        if (listenerArray !== void 0) {\n          event.target = this;\n          const array = listenerArray.slice(0);\n          for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n            array[i2].call(this, event);\n          }\n          event.target = null;\n        }\n      }\n    };\n    _lut = [\"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"0a\", \"0b\", \"0c\", \"0d\", \"0e\", \"0f\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"1a\", \"1b\", \"1c\", \"1d\", \"1e\", \"1f\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"2a\", \"2b\", \"2c\", \"2d\", \"2e\", \"2f\", \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\", \"3a\", \"3b\", \"3c\", \"3d\", \"3e\", \"3f\", \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\", \"4a\", \"4b\", \"4c\", \"4d\", \"4e\", \"4f\", \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\", \"5a\", \"5b\", \"5c\", \"5d\", \"5e\", \"5f\", \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\", \"6a\", \"6b\", \"6c\", \"6d\", \"6e\", \"6f\", \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\", \"7a\", \"7b\", \"7c\", \"7d\", \"7e\", \"7f\", \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\", \"8a\", \"8b\", \"8c\", \"8d\", \"8e\", \"8f\", \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\", \"9a\", \"9b\", \"9c\", \"9d\", \"9e\", \"9f\", \"a0\", \"a1\", \"a2\", \"a3\", \"a4\", \"a5\", \"a6\", \"a7\", \"a8\", \"a9\", \"aa\", \"ab\", \"ac\", \"ad\", \"ae\", \"af\", \"b0\", \"b1\", \"b2\", \"b3\", \"b4\", \"b5\", \"b6\", \"b7\", \"b8\", \"b9\", \"ba\", \"bb\", \"bc\", \"bd\", \"be\", \"bf\", \"c0\", \"c1\", \"c2\", \"c3\", \"c4\", \"c5\", \"c6\", \"c7\", \"c8\", \"c9\", \"ca\", \"cb\", \"cc\", \"cd\", \"ce\", \"cf\", \"d0\", \"d1\", \"d2\", \"d3\", \"d4\", \"d5\", \"d6\", \"d7\", \"d8\", \"d9\", \"da\", \"db\", \"dc\", \"dd\", \"de\", \"df\", \"e0\", \"e1\", \"e2\", \"e3\", \"e4\", \"e5\", \"e6\", \"e7\", \"e8\", \"e9\", \"ea\", \"eb\", \"ec\", \"ed\", \"ee\", \"ef\", \"f0\", \"f1\", \"f2\", \"f3\", \"f4\", \"f5\", \"f6\", \"f7\", \"f8\", \"f9\", \"fa\", \"fb\", \"fc\", \"fd\", \"fe\", \"ff\"];\n    _seed = 1234567;\n    DEG2RAD = Math.PI / 180;\n    RAD2DEG = 180 / Math.PI;\n    MathUtils = {\n      DEG2RAD,\n      RAD2DEG,\n      generateUUID,\n      clamp,\n      euclideanModulo,\n      mapLinear,\n      inverseLerp,\n      lerp,\n      damp,\n      pingpong,\n      smoothstep,\n      smootherstep,\n      randInt,\n      randFloat,\n      randFloatSpread,\n      seededRandom,\n      degToRad,\n      radToDeg,\n      isPowerOfTwo,\n      ceilPowerOfTwo,\n      floorPowerOfTwo,\n      setQuaternionFromProperEuler,\n      normalize,\n      denormalize\n    };\n    Vector2 = class _Vector2 {\n      constructor(x = 0, y2 = 0) {\n        _Vector2.prototype.isVector2 = true;\n        this.x = x;\n        this.y = y2;\n      }\n      get width() {\n        return this.x;\n      }\n      set width(value) {\n        this.x = value;\n      }\n      get height() {\n        return this.y;\n      }\n      set height(value) {\n        this.y = value;\n      }\n      set(x, y2) {\n        this.x = x;\n        this.y = y2;\n        return this;\n      }\n      setScalar(scalar) {\n        this.x = scalar;\n        this.y = scalar;\n        return this;\n      }\n      setX(x) {\n        this.x = x;\n        return this;\n      }\n      setY(y2) {\n        this.y = y2;\n        return this;\n      }\n      setComponent(index, value) {\n        switch (index) {\n          case 0:\n            this.x = value;\n            break;\n          case 1:\n            this.y = value;\n            break;\n          default:\n            throw new Error(\"index is out of range: \" + index);\n        }\n        return this;\n      }\n      getComponent(index) {\n        switch (index) {\n          case 0:\n            return this.x;\n          case 1:\n            return this.y;\n          default:\n            throw new Error(\"index is out of range: \" + index);\n        }\n      }\n      clone() {\n        return new this.constructor(this.x, this.y);\n      }\n      copy(v2) {\n        this.x = v2.x;\n        this.y = v2.y;\n        return this;\n      }\n      add(v2) {\n        this.x += v2.x;\n        this.y += v2.y;\n        return this;\n      }\n      addScalar(s) {\n        this.x += s;\n        this.y += s;\n        return this;\n      }\n      addVectors(a, b) {\n        this.x = a.x + b.x;\n        this.y = a.y + b.y;\n        return this;\n      }\n      addScaledVector(v2, s) {\n        this.x += v2.x * s;\n        this.y += v2.y * s;\n        return this;\n      }\n      sub(v2) {\n        this.x -= v2.x;\n        this.y -= v2.y;\n        return this;\n      }\n      subScalar(s) {\n        this.x -= s;\n        this.y -= s;\n        return this;\n      }\n      subVectors(a, b) {\n        this.x = a.x - b.x;\n        this.y = a.y - b.y;\n        return this;\n      }\n      multiply(v2) {\n        this.x *= v2.x;\n        this.y *= v2.y;\n        return this;\n      }\n      multiplyScalar(scalar) {\n        this.x *= scalar;\n        this.y *= scalar;\n        return this;\n      }\n      divide(v2) {\n        this.x /= v2.x;\n        this.y /= v2.y;\n        return this;\n      }\n      divideScalar(scalar) {\n        return this.multiplyScalar(1 / scalar);\n      }\n      applyMatrix3(m) {\n        const x = this.x, y2 = this.y;\n        const e = m.elements;\n        this.x = e[0] * x + e[3] * y2 + e[6];\n        this.y = e[1] * x + e[4] * y2 + e[7];\n        return this;\n      }\n      min(v2) {\n        this.x = Math.min(this.x, v2.x);\n        this.y = Math.min(this.y, v2.y);\n        return this;\n      }\n      max(v2) {\n        this.x = Math.max(this.x, v2.x);\n        this.y = Math.max(this.y, v2.y);\n        return this;\n      }\n      clamp(min, max) {\n        this.x = Math.max(min.x, Math.min(max.x, this.x));\n        this.y = Math.max(min.y, Math.min(max.y, this.y));\n        return this;\n      }\n      clampScalar(minVal, maxVal) {\n        this.x = Math.max(minVal, Math.min(maxVal, this.x));\n        this.y = Math.max(minVal, Math.min(maxVal, this.y));\n        return this;\n      }\n      clampLength(min, max) {\n        const length = this.length();\n        return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n      }\n      floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        return this;\n      }\n      ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        return this;\n      }\n      round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        return this;\n      }\n      roundToZero() {\n        this.x = Math.trunc(this.x);\n        this.y = Math.trunc(this.y);\n        return this;\n      }\n      negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        return this;\n      }\n      dot(v2) {\n        return this.x * v2.x + this.y * v2.y;\n      }\n      cross(v2) {\n        return this.x * v2.y - this.y * v2.x;\n      }\n      lengthSq() {\n        return this.x * this.x + this.y * this.y;\n      }\n      length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y);\n      }\n      manhattanLength() {\n        return Math.abs(this.x) + Math.abs(this.y);\n      }\n      normalize() {\n        return this.divideScalar(this.length() || 1);\n      }\n      angle() {\n        const angle = Math.atan2(-this.y, -this.x) + Math.PI;\n        return angle;\n      }\n      angleTo(v2) {\n        const denominator = Math.sqrt(this.lengthSq() * v2.lengthSq());\n        if (denominator === 0) return Math.PI / 2;\n        const theta = this.dot(v2) / denominator;\n        return Math.acos(clamp(theta, -1, 1));\n      }\n      distanceTo(v2) {\n        return Math.sqrt(this.distanceToSquared(v2));\n      }\n      distanceToSquared(v2) {\n        const dx = this.x - v2.x, dy = this.y - v2.y;\n        return dx * dx + dy * dy;\n      }\n      manhattanDistanceTo(v2) {\n        return Math.abs(this.x - v2.x) + Math.abs(this.y - v2.y);\n      }\n      setLength(length) {\n        return this.normalize().multiplyScalar(length);\n      }\n      lerp(v2, alpha) {\n        this.x += (v2.x - this.x) * alpha;\n        this.y += (v2.y - this.y) * alpha;\n        return this;\n      }\n      lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        return this;\n      }\n      equals(v2) {\n        return v2.x === this.x && v2.y === this.y;\n      }\n      fromArray(array, offset = 0) {\n        this.x = array[offset];\n        this.y = array[offset + 1];\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        return array;\n      }\n      fromBufferAttribute(attribute, index) {\n        this.x = attribute.getX(index);\n        this.y = attribute.getY(index);\n        return this;\n      }\n      rotateAround(center, angle) {\n        const c = Math.cos(angle), s = Math.sin(angle);\n        const x = this.x - center.x;\n        const y2 = this.y - center.y;\n        this.x = x * c - y2 * s + center.x;\n        this.y = x * s + y2 * c + center.y;\n        return this;\n      }\n      random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        return this;\n      }\n      *[Symbol.iterator]() {\n        yield this.x;\n        yield this.y;\n      }\n    };\n    Matrix3 = class _Matrix3 {\n      constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n        _Matrix3.prototype.isMatrix3 = true;\n        this.elements = [\n          1,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          1\n        ];\n        if (n11 !== void 0) {\n          this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33);\n        }\n      }\n      set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n        const te = this.elements;\n        te[0] = n11;\n        te[1] = n21;\n        te[2] = n31;\n        te[3] = n12;\n        te[4] = n22;\n        te[5] = n32;\n        te[6] = n13;\n        te[7] = n23;\n        te[8] = n33;\n        return this;\n      }\n      identity() {\n        this.set(\n          1,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      copy(m) {\n        const te = this.elements;\n        const me = m.elements;\n        te[0] = me[0];\n        te[1] = me[1];\n        te[2] = me[2];\n        te[3] = me[3];\n        te[4] = me[4];\n        te[5] = me[5];\n        te[6] = me[6];\n        te[7] = me[7];\n        te[8] = me[8];\n        return this;\n      }\n      extractBasis(xAxis, yAxis, zAxis) {\n        xAxis.setFromMatrix3Column(this, 0);\n        yAxis.setFromMatrix3Column(this, 1);\n        zAxis.setFromMatrix3Column(this, 2);\n        return this;\n      }\n      setFromMatrix4(m) {\n        const me = m.elements;\n        this.set(\n          me[0],\n          me[4],\n          me[8],\n          me[1],\n          me[5],\n          me[9],\n          me[2],\n          me[6],\n          me[10]\n        );\n        return this;\n      }\n      multiply(m) {\n        return this.multiplyMatrices(this, m);\n      }\n      premultiply(m) {\n        return this.multiplyMatrices(m, this);\n      }\n      multiplyMatrices(a, b) {\n        const ae = a.elements;\n        const be = b.elements;\n        const te = this.elements;\n        const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n        const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n        const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n        const b11 = be[0], b12 = be[3], b13 = be[6];\n        const b21 = be[1], b22 = be[4], b23 = be[7];\n        const b31 = be[2], b32 = be[5], b33 = be[8];\n        te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n        te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n        te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n        te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n        te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n        te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n        te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n        te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n        te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n        return this;\n      }\n      multiplyScalar(s) {\n        const te = this.elements;\n        te[0] *= s;\n        te[3] *= s;\n        te[6] *= s;\n        te[1] *= s;\n        te[4] *= s;\n        te[7] *= s;\n        te[2] *= s;\n        te[5] *= s;\n        te[8] *= s;\n        return this;\n      }\n      determinant() {\n        const te = this.elements;\n        const a = te[0], b = te[1], c = te[2], d = te[3], e = te[4], f2 = te[5], g3 = te[6], h2 = te[7], i2 = te[8];\n        return a * e * i2 - a * f2 * h2 - b * d * i2 + b * f2 * g3 + c * d * h2 - c * e * g3;\n      }\n      invert() {\n        const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n        if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n        const detInv = 1 / det;\n        te[0] = t11 * detInv;\n        te[1] = (n31 * n23 - n33 * n21) * detInv;\n        te[2] = (n32 * n21 - n31 * n22) * detInv;\n        te[3] = t12 * detInv;\n        te[4] = (n33 * n11 - n31 * n13) * detInv;\n        te[5] = (n31 * n12 - n32 * n11) * detInv;\n        te[6] = t13 * detInv;\n        te[7] = (n21 * n13 - n23 * n11) * detInv;\n        te[8] = (n22 * n11 - n21 * n12) * detInv;\n        return this;\n      }\n      transpose() {\n        let tmp2;\n        const m = this.elements;\n        tmp2 = m[1];\n        m[1] = m[3];\n        m[3] = tmp2;\n        tmp2 = m[2];\n        m[2] = m[6];\n        m[6] = tmp2;\n        tmp2 = m[5];\n        m[5] = m[7];\n        m[7] = tmp2;\n        return this;\n      }\n      getNormalMatrix(matrix4) {\n        return this.setFromMatrix4(matrix4).invert().transpose();\n      }\n      transposeIntoArray(r2) {\n        const m = this.elements;\n        r2[0] = m[0];\n        r2[1] = m[3];\n        r2[2] = m[6];\n        r2[3] = m[1];\n        r2[4] = m[4];\n        r2[5] = m[7];\n        r2[6] = m[2];\n        r2[7] = m[5];\n        r2[8] = m[8];\n        return this;\n      }\n      setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n        const c = Math.cos(rotation);\n        const s = Math.sin(rotation);\n        this.set(\n          sx * c,\n          sx * s,\n          -sx * (c * cx + s * cy) + cx + tx,\n          -sy * s,\n          sy * c,\n          -sy * (-s * cx + c * cy) + cy + ty,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      //\n      scale(sx, sy) {\n        this.premultiply(_m3.makeScale(sx, sy));\n        return this;\n      }\n      rotate(theta) {\n        this.premultiply(_m3.makeRotation(-theta));\n        return this;\n      }\n      translate(tx, ty) {\n        this.premultiply(_m3.makeTranslation(tx, ty));\n        return this;\n      }\n      // for 2D Transforms\n      makeTranslation(x, y2) {\n        if (x.isVector2) {\n          this.set(\n            1,\n            0,\n            x.x,\n            0,\n            1,\n            x.y,\n            0,\n            0,\n            1\n          );\n        } else {\n          this.set(\n            1,\n            0,\n            x,\n            0,\n            1,\n            y2,\n            0,\n            0,\n            1\n          );\n        }\n        return this;\n      }\n      makeRotation(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        this.set(\n          c,\n          -s,\n          0,\n          s,\n          c,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      makeScale(x, y2) {\n        this.set(\n          x,\n          0,\n          0,\n          0,\n          y2,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      //\n      equals(matrix2) {\n        const te = this.elements;\n        const me = matrix2.elements;\n        for (let i2 = 0; i2 < 9; i2++) {\n          if (te[i2] !== me[i2]) return false;\n        }\n        return true;\n      }\n      fromArray(array, offset = 0) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.elements[i2] = array[i2 + offset];\n        }\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        const te = this.elements;\n        array[offset] = te[0];\n        array[offset + 1] = te[1];\n        array[offset + 2] = te[2];\n        array[offset + 3] = te[3];\n        array[offset + 4] = te[4];\n        array[offset + 5] = te[5];\n        array[offset + 6] = te[6];\n        array[offset + 7] = te[7];\n        array[offset + 8] = te[8];\n        return array;\n      }\n      clone() {\n        return new this.constructor().fromArray(this.elements);\n      }\n    };\n    _m3 = /* @__PURE__ */ new Matrix3();\n    TYPED_ARRAYS = {\n      Int8Array,\n      Uint8Array,\n      Uint8ClampedArray,\n      Int16Array,\n      Uint16Array,\n      Int32Array,\n      Uint32Array,\n      Float32Array,\n      Float64Array\n    };\n    _cache = {};\n    LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /* @__PURE__ */ new Matrix3().set(\n      0.8224621,\n      0.177538,\n      0,\n      0.0331941,\n      0.9668058,\n      0,\n      0.0170827,\n      0.0723974,\n      0.9105199\n    );\n    LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /* @__PURE__ */ new Matrix3().set(\n      1.2249401,\n      -0.2249404,\n      0,\n      -0.0420569,\n      1.0420571,\n      0,\n      -0.0196376,\n      -0.0786361,\n      1.0982735\n    );\n    COLOR_SPACES = {\n      [LinearSRGBColorSpace]: {\n        transfer: LinearTransfer,\n        primaries: Rec709Primaries,\n        luminanceCoefficients: [0.2126, 0.7152, 0.0722],\n        toReference: (color) => color,\n        fromReference: (color) => color\n      },\n      [SRGBColorSpace]: {\n        transfer: SRGBTransfer,\n        primaries: Rec709Primaries,\n        luminanceCoefficients: [0.2126, 0.7152, 0.0722],\n        toReference: (color) => color.convertSRGBToLinear(),\n        fromReference: (color) => color.convertLinearToSRGB()\n      },\n      [LinearDisplayP3ColorSpace]: {\n        transfer: LinearTransfer,\n        primaries: P3Primaries,\n        luminanceCoefficients: [0.2289, 0.6917, 0.0793],\n        toReference: (color) => color.applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB),\n        fromReference: (color) => color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3)\n      },\n      [DisplayP3ColorSpace]: {\n        transfer: SRGBTransfer,\n        primaries: P3Primaries,\n        luminanceCoefficients: [0.2289, 0.6917, 0.0793],\n        toReference: (color) => color.convertSRGBToLinear().applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB),\n        fromReference: (color) => color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3).convertLinearToSRGB()\n      }\n    };\n    SUPPORTED_WORKING_COLOR_SPACES = /* @__PURE__ */ new Set([LinearSRGBColorSpace, LinearDisplayP3ColorSpace]);\n    ColorManagement = {\n      enabled: true,\n      _workingColorSpace: LinearSRGBColorSpace,\n      get workingColorSpace() {\n        return this._workingColorSpace;\n      },\n      set workingColorSpace(colorSpace) {\n        if (!SUPPORTED_WORKING_COLOR_SPACES.has(colorSpace)) {\n          throw new Error(`Unsupported working color space, \"${colorSpace}\".`);\n        }\n        this._workingColorSpace = colorSpace;\n      },\n      convert: function(color, sourceColorSpace, targetColorSpace) {\n        if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n          return color;\n        }\n        const sourceToReference = COLOR_SPACES[sourceColorSpace].toReference;\n        const targetFromReference = COLOR_SPACES[targetColorSpace].fromReference;\n        return targetFromReference(sourceToReference(color));\n      },\n      fromWorkingColorSpace: function(color, targetColorSpace) {\n        return this.convert(color, this._workingColorSpace, targetColorSpace);\n      },\n      toWorkingColorSpace: function(color, sourceColorSpace) {\n        return this.convert(color, sourceColorSpace, this._workingColorSpace);\n      },\n      getPrimaries: function(colorSpace) {\n        return COLOR_SPACES[colorSpace].primaries;\n      },\n      getTransfer: function(colorSpace) {\n        if (colorSpace === NoColorSpace) return LinearTransfer;\n        return COLOR_SPACES[colorSpace].transfer;\n      },\n      getLuminanceCoefficients: function(target2, colorSpace = this._workingColorSpace) {\n        return target2.fromArray(COLOR_SPACES[colorSpace].luminanceCoefficients);\n      }\n    };\n    ImageUtils = class {\n      static getDataURL(image) {\n        if (/^data:/i.test(image.src)) {\n          return image.src;\n        }\n        if (typeof HTMLCanvasElement === \"undefined\") {\n          return image.src;\n        }\n        let canvas;\n        if (image instanceof HTMLCanvasElement) {\n          canvas = image;\n        } else {\n          if (_canvas === void 0) _canvas = createElementNS(\"canvas\");\n          _canvas.width = image.width;\n          _canvas.height = image.height;\n          const context2 = _canvas.getContext(\"2d\");\n          if (image instanceof ImageData) {\n            context2.putImageData(image, 0, 0);\n          } else {\n            context2.drawImage(image, 0, 0, image.width, image.height);\n          }\n          canvas = _canvas;\n        }\n        if (canvas.width > 2048 || canvas.height > 2048) {\n          console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", image);\n          return canvas.toDataURL(\"image/jpeg\", 0.6);\n        } else {\n          return canvas.toDataURL(\"image/png\");\n        }\n      }\n      static sRGBToLinear(image) {\n        if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n          const canvas = createElementNS(\"canvas\");\n          canvas.width = image.width;\n          canvas.height = image.height;\n          const context2 = canvas.getContext(\"2d\");\n          context2.drawImage(image, 0, 0, image.width, image.height);\n          const imageData = context2.getImageData(0, 0, image.width, image.height);\n          const data = imageData.data;\n          for (let i2 = 0; i2 < data.length; i2++) {\n            data[i2] = SRGBToLinear(data[i2] / 255) * 255;\n          }\n          context2.putImageData(imageData, 0, 0);\n          return canvas;\n        } else if (image.data) {\n          const data = image.data.slice(0);\n          for (let i2 = 0; i2 < data.length; i2++) {\n            if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) {\n              data[i2] = Math.floor(SRGBToLinear(data[i2] / 255) * 255);\n            } else {\n              data[i2] = SRGBToLinear(data[i2]);\n            }\n          }\n          return {\n            data,\n            width: image.width,\n            height: image.height\n          };\n        } else {\n          console.warn(\"THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.\");\n          return image;\n        }\n      }\n    };\n    _sourceId = 0;\n    Source = class {\n      constructor(data = null) {\n        this.isSource = true;\n        Object.defineProperty(this, \"id\", { value: _sourceId++ });\n        this.uuid = generateUUID();\n        this.data = data;\n        this.dataReady = true;\n        this.version = 0;\n      }\n      set needsUpdate(value) {\n        if (value === true) this.version++;\n      }\n      toJSON(meta) {\n        const isRootObject = meta === void 0 || typeof meta === \"string\";\n        if (!isRootObject && meta.images[this.uuid] !== void 0) {\n          return meta.images[this.uuid];\n        }\n        const output = {\n          uuid: this.uuid,\n          url: \"\"\n        };\n        const data = this.data;\n        if (data !== null) {\n          let url;\n          if (Array.isArray(data)) {\n            url = [];\n            for (let i2 = 0, l2 = data.length; i2 < l2; i2++) {\n              if (data[i2].isDataTexture) {\n                url.push(serializeImage(data[i2].image));\n              } else {\n                url.push(serializeImage(data[i2]));\n              }\n            }\n          } else {\n            url = serializeImage(data);\n          }\n          output.url = url;\n        }\n        if (!isRootObject) {\n          meta.images[this.uuid] = output;\n        }\n        return output;\n      }\n    };\n    _textureId = 0;\n    Texture = class _Texture extends EventDispatcher {\n      constructor(image = _Texture.DEFAULT_IMAGE, mapping = _Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = _Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace) {\n        super();\n        this.isTexture = true;\n        Object.defineProperty(this, \"id\", { value: _textureId++ });\n        this.uuid = generateUUID();\n        this.name = \"\";\n        this.source = new Source(image);\n        this.mipmaps = [];\n        this.mapping = mapping;\n        this.channel = 0;\n        this.wrapS = wrapS;\n        this.wrapT = wrapT;\n        this.magFilter = magFilter;\n        this.minFilter = minFilter;\n        this.anisotropy = anisotropy;\n        this.format = format;\n        this.internalFormat = null;\n        this.type = type;\n        this.offset = new Vector2(0, 0);\n        this.repeat = new Vector2(1, 1);\n        this.center = new Vector2(0, 0);\n        this.rotation = 0;\n        this.matrixAutoUpdate = true;\n        this.matrix = new Matrix3();\n        this.generateMipmaps = true;\n        this.premultiplyAlpha = false;\n        this.flipY = true;\n        this.unpackAlignment = 4;\n        this.colorSpace = colorSpace;\n        this.userData = {};\n        this.version = 0;\n        this.onUpdate = null;\n        this.isRenderTargetTexture = false;\n        this.pmremVersion = 0;\n      }\n      get image() {\n        return this.source.data;\n      }\n      set image(value = null) {\n        this.source.data = value;\n      }\n      updateMatrix() {\n        this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(source) {\n        this.name = source.name;\n        this.source = source.source;\n        this.mipmaps = source.mipmaps.slice(0);\n        this.mapping = source.mapping;\n        this.channel = source.channel;\n        this.wrapS = source.wrapS;\n        this.wrapT = source.wrapT;\n        this.magFilter = source.magFilter;\n        this.minFilter = source.minFilter;\n        this.anisotropy = source.anisotropy;\n        this.format = source.format;\n        this.internalFormat = source.internalFormat;\n        this.type = source.type;\n        this.offset.copy(source.offset);\n        this.repeat.copy(source.repeat);\n        this.center.copy(source.center);\n        this.rotation = source.rotation;\n        this.matrixAutoUpdate = source.matrixAutoUpdate;\n        this.matrix.copy(source.matrix);\n        this.generateMipmaps = source.generateMipmaps;\n        this.premultiplyAlpha = source.premultiplyAlpha;\n        this.flipY = source.flipY;\n        this.unpackAlignment = source.unpackAlignment;\n        this.colorSpace = source.colorSpace;\n        this.userData = JSON.parse(JSON.stringify(source.userData));\n        this.needsUpdate = true;\n        return this;\n      }\n      toJSON(meta) {\n        const isRootObject = meta === void 0 || typeof meta === \"string\";\n        if (!isRootObject && meta.textures[this.uuid] !== void 0) {\n          return meta.textures[this.uuid];\n        }\n        const output = {\n          metadata: {\n            version: 4.6,\n            type: \"Texture\",\n            generator: \"Texture.toJSON\"\n          },\n          uuid: this.uuid,\n          name: this.name,\n          image: this.source.toJSON(meta).uuid,\n          mapping: this.mapping,\n          channel: this.channel,\n          repeat: [this.repeat.x, this.repeat.y],\n          offset: [this.offset.x, this.offset.y],\n          center: [this.center.x, this.center.y],\n          rotation: this.rotation,\n          wrap: [this.wrapS, this.wrapT],\n          format: this.format,\n          internalFormat: this.internalFormat,\n          type: this.type,\n          colorSpace: this.colorSpace,\n          minFilter: this.minFilter,\n          magFilter: this.magFilter,\n          anisotropy: this.anisotropy,\n          flipY: this.flipY,\n          generateMipmaps: this.generateMipmaps,\n          premultiplyAlpha: this.premultiplyAlpha,\n          unpackAlignment: this.unpackAlignment\n        };\n        if (Object.keys(this.userData).length > 0) output.userData = this.userData;\n        if (!isRootObject) {\n          meta.textures[this.uuid] = output;\n        }\n        return output;\n      }\n      dispose() {\n        this.dispatchEvent({ type: \"dispose\" });\n      }\n      transformUv(uv) {\n        if (this.mapping !== UVMapping) return uv;\n        uv.applyMatrix3(this.matrix);\n        if (uv.x < 0 || uv.x > 1) {\n          switch (this.wrapS) {\n            case RepeatWrapping:\n              uv.x = uv.x - Math.floor(uv.x);\n              break;\n            case ClampToEdgeWrapping:\n              uv.x = uv.x < 0 ? 0 : 1;\n              break;\n            case MirroredRepeatWrapping:\n              if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n                uv.x = Math.ceil(uv.x) - uv.x;\n              } else {\n                uv.x = uv.x - Math.floor(uv.x);\n              }\n              break;\n          }\n        }\n        if (uv.y < 0 || uv.y > 1) {\n          switch (this.wrapT) {\n            case RepeatWrapping:\n              uv.y = uv.y - Math.floor(uv.y);\n              break;\n            case ClampToEdgeWrapping:\n              uv.y = uv.y < 0 ? 0 : 1;\n              break;\n            case MirroredRepeatWrapping:\n              if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n                uv.y = Math.ceil(uv.y) - uv.y;\n              } else {\n                uv.y = uv.y - Math.floor(uv.y);\n              }\n              break;\n          }\n        }\n        if (this.flipY) {\n          uv.y = 1 - uv.y;\n        }\n        return uv;\n      }\n      set needsUpdate(value) {\n        if (value === true) {\n          this.version++;\n          this.source.needsUpdate = true;\n        }\n      }\n      set needsPMREMUpdate(value) {\n        if (value === true) {\n          this.pmremVersion++;\n        }\n      }\n    };\n    Texture.DEFAULT_IMAGE = null;\n    Texture.DEFAULT_MAPPING = UVMapping;\n    Texture.DEFAULT_ANISOTROPY = 1;\n    Vector4 = class _Vector4 {\n      constructor(x = 0, y2 = 0, z2 = 0, w = 1) {\n        _Vector4.prototype.isVector4 = true;\n        this.x = x;\n        this.y = y2;\n        this.z = z2;\n        this.w = w;\n      }\n      get width() {\n        return this.z;\n      }\n      set width(value) {\n        this.z = value;\n      }\n      get height() {\n        return this.w;\n      }\n      set height(value) {\n        this.w = value;\n      }\n      set(x, y2, z2, w) {\n        this.x = x;\n        this.y = y2;\n        this.z = z2;\n        this.w = w;\n        return this;\n      }\n      setScalar(scalar) {\n        this.x = scalar;\n        this.y = scalar;\n        this.z = scalar;\n        this.w = scalar;\n        return this;\n      }\n      setX(x) {\n        this.x = x;\n        return this;\n      }\n      setY(y2) {\n        this.y = y2;\n        return this;\n      }\n      setZ(z2) {\n        this.z = z2;\n        return this;\n      }\n      setW(w) {\n        this.w = w;\n        return this;\n      }\n      setComponent(index, value) {\n        switch (index) {\n          case 0:\n            this.x = value;\n            break;\n          case 1:\n            this.y = value;\n            break;\n          case 2:\n            this.z = value;\n            break;\n          case 3:\n            this.w = value;\n            break;\n          default:\n            throw new Error(\"index is out of range: \" + index);\n        }\n        return this;\n      }\n      getComponent(index) {\n        switch (index) {\n          case 0:\n            return this.x;\n          case 1:\n            return this.y;\n          case 2:\n            return this.z;\n          case 3:\n            return this.w;\n          default:\n            throw new Error(\"index is out of range: \" + index);\n        }\n      }\n      clone() {\n        return new this.constructor(this.x, this.y, this.z, this.w);\n      }\n      copy(v2) {\n        this.x = v2.x;\n        this.y = v2.y;\n        this.z = v2.z;\n        this.w = v2.w !== void 0 ? v2.w : 1;\n        return this;\n      }\n      add(v2) {\n        this.x += v2.x;\n        this.y += v2.y;\n        this.z += v2.z;\n        this.w += v2.w;\n        return this;\n      }\n      addScalar(s) {\n        this.x += s;\n        this.y += s;\n        this.z += s;\n        this.w += s;\n        return this;\n      }\n      addVectors(a, b) {\n        this.x = a.x + b.x;\n        this.y = a.y + b.y;\n        this.z = a.z + b.z;\n        this.w = a.w + b.w;\n        return this;\n      }\n      addScaledVector(v2, s) {\n        this.x += v2.x * s;\n        this.y += v2.y * s;\n        this.z += v2.z * s;\n        this.w += v2.w * s;\n        return this;\n      }\n      sub(v2) {\n        this.x -= v2.x;\n        this.y -= v2.y;\n        this.z -= v2.z;\n        this.w -= v2.w;\n        return this;\n      }\n      subScalar(s) {\n        this.x -= s;\n        this.y -= s;\n        this.z -= s;\n        this.w -= s;\n        return this;\n      }\n      subVectors(a, b) {\n        this.x = a.x - b.x;\n        this.y = a.y - b.y;\n        this.z = a.z - b.z;\n        this.w = a.w - b.w;\n        return this;\n      }\n      multiply(v2) {\n        this.x *= v2.x;\n        this.y *= v2.y;\n        this.z *= v2.z;\n        this.w *= v2.w;\n        return this;\n      }\n      multiplyScalar(scalar) {\n        this.x *= scalar;\n        this.y *= scalar;\n        this.z *= scalar;\n        this.w *= scalar;\n        return this;\n      }\n      applyMatrix4(m) {\n        const x = this.x, y2 = this.y, z2 = this.z, w = this.w;\n        const e = m.elements;\n        this.x = e[0] * x + e[4] * y2 + e[8] * z2 + e[12] * w;\n        this.y = e[1] * x + e[5] * y2 + e[9] * z2 + e[13] * w;\n        this.z = e[2] * x + e[6] * y2 + e[10] * z2 + e[14] * w;\n        this.w = e[3] * x + e[7] * y2 + e[11] * z2 + e[15] * w;\n        return this;\n      }\n      divideScalar(scalar) {\n        return this.multiplyScalar(1 / scalar);\n      }\n      setAxisAngleFromQuaternion(q3) {\n        this.w = 2 * Math.acos(q3.w);\n        const s = Math.sqrt(1 - q3.w * q3.w);\n        if (s < 1e-4) {\n          this.x = 1;\n          this.y = 0;\n          this.z = 0;\n        } else {\n          this.x = q3.x / s;\n          this.y = q3.y / s;\n          this.z = q3.z / s;\n        }\n        return this;\n      }\n      setAxisAngleFromRotationMatrix(m) {\n        let angle, x, y2, z2;\n        const epsilon = 0.01, epsilon2 = 0.1, te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10];\n        if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n          if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n            this.set(1, 0, 0, 0);\n            return this;\n          }\n          angle = Math.PI;\n          const xx = (m11 + 1) / 2;\n          const yy = (m22 + 1) / 2;\n          const zz = (m33 + 1) / 2;\n          const xy = (m12 + m21) / 4;\n          const xz = (m13 + m31) / 4;\n          const yz = (m23 + m32) / 4;\n          if (xx > yy && xx > zz) {\n            if (xx < epsilon) {\n              x = 0;\n              y2 = 0.707106781;\n              z2 = 0.707106781;\n            } else {\n              x = Math.sqrt(xx);\n              y2 = xy / x;\n              z2 = xz / x;\n            }\n          } else if (yy > zz) {\n            if (yy < epsilon) {\n              x = 0.707106781;\n              y2 = 0;\n              z2 = 0.707106781;\n            } else {\n              y2 = Math.sqrt(yy);\n              x = xy / y2;\n              z2 = yz / y2;\n            }\n          } else {\n            if (zz < epsilon) {\n              x = 0.707106781;\n              y2 = 0.707106781;\n              z2 = 0;\n            } else {\n              z2 = Math.sqrt(zz);\n              x = xz / z2;\n              y2 = yz / z2;\n            }\n          }\n          this.set(x, y2, z2, angle);\n          return this;\n        }\n        let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12));\n        if (Math.abs(s) < 1e-3) s = 1;\n        this.x = (m32 - m23) / s;\n        this.y = (m13 - m31) / s;\n        this.z = (m21 - m12) / s;\n        this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n        return this;\n      }\n      setFromMatrixPosition(m) {\n        const e = m.elements;\n        this.x = e[12];\n        this.y = e[13];\n        this.z = e[14];\n        this.w = e[15];\n        return this;\n      }\n      min(v2) {\n        this.x = Math.min(this.x, v2.x);\n        this.y = Math.min(this.y, v2.y);\n        this.z = Math.min(this.z, v2.z);\n        this.w = Math.min(this.w, v2.w);\n        return this;\n      }\n      max(v2) {\n        this.x = Math.max(this.x, v2.x);\n        this.y = Math.max(this.y, v2.y);\n        this.z = Math.max(this.z, v2.z);\n        this.w = Math.max(this.w, v2.w);\n        return this;\n      }\n      clamp(min, max) {\n        this.x = Math.max(min.x, Math.min(max.x, this.x));\n        this.y = Math.max(min.y, Math.min(max.y, this.y));\n        this.z = Math.max(min.z, Math.min(max.z, this.z));\n        this.w = Math.max(min.w, Math.min(max.w, this.w));\n        return this;\n      }\n      clampScalar(minVal, maxVal) {\n        this.x = Math.max(minVal, Math.min(maxVal, this.x));\n        this.y = Math.max(minVal, Math.min(maxVal, this.y));\n        this.z = Math.max(minVal, Math.min(maxVal, this.z));\n        this.w = Math.max(minVal, Math.min(maxVal, this.w));\n        return this;\n      }\n      clampLength(min, max) {\n        const length = this.length();\n        return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n      }\n      floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        this.z = Math.floor(this.z);\n        this.w = Math.floor(this.w);\n        return this;\n      }\n      ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        this.z = Math.ceil(this.z);\n        this.w = Math.ceil(this.w);\n        return this;\n      }\n      round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        this.z = Math.round(this.z);\n        this.w = Math.round(this.w);\n        return this;\n      }\n      roundToZero() {\n        this.x = Math.trunc(this.x);\n        this.y = Math.trunc(this.y);\n        this.z = Math.trunc(this.z);\n        this.w = Math.trunc(this.w);\n        return this;\n      }\n      negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        this.w = -this.w;\n        return this;\n      }\n      dot(v2) {\n        return this.x * v2.x + this.y * v2.y + this.z * v2.z + this.w * v2.w;\n      }\n      lengthSq() {\n        return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n      }\n      length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n      }\n      manhattanLength() {\n        return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n      }\n      normalize() {\n        return this.divideScalar(this.length() || 1);\n      }\n      setLength(length) {\n        return this.normalize().multiplyScalar(length);\n      }\n      lerp(v2, alpha) {\n        this.x += (v2.x - this.x) * alpha;\n        this.y += (v2.y - this.y) * alpha;\n        this.z += (v2.z - this.z) * alpha;\n        this.w += (v2.w - this.w) * alpha;\n        return this;\n      }\n      lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        this.z = v1.z + (v2.z - v1.z) * alpha;\n        this.w = v1.w + (v2.w - v1.w) * alpha;\n        return this;\n      }\n      equals(v2) {\n        return v2.x === this.x && v2.y === this.y && v2.z === this.z && v2.w === this.w;\n      }\n      fromArray(array, offset = 0) {\n        this.x = array[offset];\n        this.y = array[offset + 1];\n        this.z = array[offset + 2];\n        this.w = array[offset + 3];\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        array[offset + 2] = this.z;\n        array[offset + 3] = this.w;\n        return array;\n      }\n      fromBufferAttribute(attribute, index) {\n        this.x = attribute.getX(index);\n        this.y = attribute.getY(index);\n        this.z = attribute.getZ(index);\n        this.w = attribute.getW(index);\n        return this;\n      }\n      random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        this.z = Math.random();\n        this.w = Math.random();\n        return this;\n      }\n      *[Symbol.iterator]() {\n        yield this.x;\n        yield this.y;\n        yield this.z;\n        yield this.w;\n      }\n    };\n    RenderTarget = class extends EventDispatcher {\n      constructor(width = 1, height = 1, options = {}) {\n        super();\n        this.isRenderTarget = true;\n        this.width = width;\n        this.height = height;\n        this.depth = 1;\n        this.scissor = new Vector4(0, 0, width, height);\n        this.scissorTest = false;\n        this.viewport = new Vector4(0, 0, width, height);\n        const image = { width, height, depth: 1 };\n        options = Object.assign({\n          generateMipmaps: false,\n          internalFormat: null,\n          minFilter: LinearFilter,\n          depthBuffer: true,\n          stencilBuffer: false,\n          resolveDepthBuffer: true,\n          resolveStencilBuffer: true,\n          depthTexture: null,\n          samples: 0,\n          count: 1\n        }, options);\n        const texture = new Texture(image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace);\n        texture.flipY = false;\n        texture.generateMipmaps = options.generateMipmaps;\n        texture.internalFormat = options.internalFormat;\n        this.textures = [];\n        const count = options.count;\n        for (let i2 = 0; i2 < count; i2++) {\n          this.textures[i2] = texture.clone();\n          this.textures[i2].isRenderTargetTexture = true;\n        }\n        this.depthBuffer = options.depthBuffer;\n        this.stencilBuffer = options.stencilBuffer;\n        this.resolveDepthBuffer = options.resolveDepthBuffer;\n        this.resolveStencilBuffer = options.resolveStencilBuffer;\n        this.depthTexture = options.depthTexture;\n        this.samples = options.samples;\n      }\n      get texture() {\n        return this.textures[0];\n      }\n      set texture(value) {\n        this.textures[0] = value;\n      }\n      setSize(width, height, depth = 1) {\n        if (this.width !== width || this.height !== height || this.depth !== depth) {\n          this.width = width;\n          this.height = height;\n          this.depth = depth;\n          for (let i2 = 0, il = this.textures.length; i2 < il; i2++) {\n            this.textures[i2].image.width = width;\n            this.textures[i2].image.height = height;\n            this.textures[i2].image.depth = depth;\n          }\n          this.dispose();\n        }\n        this.viewport.set(0, 0, width, height);\n        this.scissor.set(0, 0, width, height);\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(source) {\n        this.width = source.width;\n        this.height = source.height;\n        this.depth = source.depth;\n        this.scissor.copy(source.scissor);\n        this.scissorTest = source.scissorTest;\n        this.viewport.copy(source.viewport);\n        this.textures.length = 0;\n        for (let i2 = 0, il = source.textures.length; i2 < il; i2++) {\n          this.textures[i2] = source.textures[i2].clone();\n          this.textures[i2].isRenderTargetTexture = true;\n        }\n        const image = Object.assign({}, source.texture.image);\n        this.texture.source = new Source(image);\n        this.depthBuffer = source.depthBuffer;\n        this.stencilBuffer = source.stencilBuffer;\n        this.resolveDepthBuffer = source.resolveDepthBuffer;\n        this.resolveStencilBuffer = source.resolveStencilBuffer;\n        if (source.depthTexture !== null) this.depthTexture = source.depthTexture.clone();\n        this.samples = source.samples;\n        return this;\n      }\n      dispose() {\n        this.dispatchEvent({ type: \"dispose\" });\n      }\n    };\n    WebGLRenderTarget = class extends RenderTarget {\n      constructor(width = 1, height = 1, options = {}) {\n        super(width, height, options);\n        this.isWebGLRenderTarget = true;\n      }\n    };\n    DataArrayTexture = class extends Texture {\n      constructor(data = null, width = 1, height = 1, depth = 1) {\n        super(null);\n        this.isDataArrayTexture = true;\n        this.image = { data, width, height, depth };\n        this.magFilter = NearestFilter;\n        this.minFilter = NearestFilter;\n        this.wrapR = ClampToEdgeWrapping;\n        this.generateMipmaps = false;\n        this.flipY = false;\n        this.unpackAlignment = 1;\n        this.layerUpdates = /* @__PURE__ */ new Set();\n      }\n      addLayerUpdate(layerIndex) {\n        this.layerUpdates.add(layerIndex);\n      }\n      clearLayerUpdates() {\n        this.layerUpdates.clear();\n      }\n    };\n    WebGLArrayRenderTarget = class extends WebGLRenderTarget {\n      constructor(width = 1, height = 1, depth = 1, options = {}) {\n        super(width, height, options);\n        this.isWebGLArrayRenderTarget = true;\n        this.depth = depth;\n        this.texture = new DataArrayTexture(null, width, height, depth);\n        this.texture.isRenderTargetTexture = true;\n      }\n    };\n    Data3DTexture = class extends Texture {\n      constructor(data = null, width = 1, height = 1, depth = 1) {\n        super(null);\n        this.isData3DTexture = true;\n        this.image = { data, width, height, depth };\n        this.magFilter = NearestFilter;\n        this.minFilter = NearestFilter;\n        this.wrapR = ClampToEdgeWrapping;\n        this.generateMipmaps = false;\n        this.flipY = false;\n        this.unpackAlignment = 1;\n      }\n    };\n    WebGL3DRenderTarget = class extends WebGLRenderTarget {\n      constructor(width = 1, height = 1, depth = 1, options = {}) {\n        super(width, height, options);\n        this.isWebGL3DRenderTarget = true;\n        this.depth = depth;\n        this.texture = new Data3DTexture(null, width, height, depth);\n        this.texture.isRenderTargetTexture = true;\n      }\n    };\n    Quaternion = class {\n      constructor(x = 0, y2 = 0, z2 = 0, w = 1) {\n        this.isQuaternion = true;\n        this._x = x;\n        this._y = y2;\n        this._z = z2;\n        this._w = w;\n      }\n      static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t2) {\n        let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n        const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n        if (t2 === 0) {\n          dst[dstOffset + 0] = x0;\n          dst[dstOffset + 1] = y0;\n          dst[dstOffset + 2] = z0;\n          dst[dstOffset + 3] = w0;\n          return;\n        }\n        if (t2 === 1) {\n          dst[dstOffset + 0] = x1;\n          dst[dstOffset + 1] = y1;\n          dst[dstOffset + 2] = z1;\n          dst[dstOffset + 3] = w1;\n          return;\n        }\n        if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n          let s = 1 - t2;\n          const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n          if (sqrSin > Number.EPSILON) {\n            const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n            s = Math.sin(s * len) / sin;\n            t2 = Math.sin(t2 * len) / sin;\n          }\n          const tDir = t2 * dir;\n          x0 = x0 * s + x1 * tDir;\n          y0 = y0 * s + y1 * tDir;\n          z0 = z0 * s + z1 * tDir;\n          w0 = w0 * s + w1 * tDir;\n          if (s === 1 - t2) {\n            const f2 = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n            x0 *= f2;\n            y0 *= f2;\n            z0 *= f2;\n            w0 *= f2;\n          }\n        }\n        dst[dstOffset] = x0;\n        dst[dstOffset + 1] = y0;\n        dst[dstOffset + 2] = z0;\n        dst[dstOffset + 3] = w0;\n      }\n      static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n        const x0 = src0[srcOffset0];\n        const y0 = src0[srcOffset0 + 1];\n        const z0 = src0[srcOffset0 + 2];\n        const w0 = src0[srcOffset0 + 3];\n        const x1 = src1[srcOffset1];\n        const y1 = src1[srcOffset1 + 1];\n        const z1 = src1[srcOffset1 + 2];\n        const w1 = src1[srcOffset1 + 3];\n        dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n        dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n        dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n        dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n        return dst;\n      }\n      get x() {\n        return this._x;\n      }\n      set x(value) {\n        this._x = value;\n        this._onChangeCallback();\n      }\n      get y() {\n        return this._y;\n      }\n      set y(value) {\n        this._y = value;\n        this._onChangeCallback();\n      }\n      get z() {\n        return this._z;\n      }\n      set z(value) {\n        this._z = value;\n        this._onChangeCallback();\n      }\n      get w() {\n        return this._w;\n      }\n      set w(value) {\n        this._w = value;\n        this._onChangeCallback();\n      }\n      set(x, y2, z2, w) {\n        this._x = x;\n        this._y = y2;\n        this._z = z2;\n        this._w = w;\n        this._onChangeCallback();\n        return this;\n      }\n      clone() {\n        return new this.constructor(this._x, this._y, this._z, this._w);\n      }\n      copy(quaternion) {\n        this._x = quaternion.x;\n        this._y = quaternion.y;\n        this._z = quaternion.z;\n        this._w = quaternion.w;\n        this._onChangeCallback();\n        return this;\n      }\n      setFromEuler(euler, update = true) {\n        const x = euler._x, y2 = euler._y, z2 = euler._z, order = euler._order;\n        const cos = Math.cos;\n        const sin = Math.sin;\n        const c1 = cos(x / 2);\n        const c2 = cos(y2 / 2);\n        const c3 = cos(z2 / 2);\n        const s1 = sin(x / 2);\n        const s2 = sin(y2 / 2);\n        const s3 = sin(z2 / 2);\n        switch (order) {\n          case \"XYZ\":\n            this._x = s1 * c2 * c3 + c1 * s2 * s3;\n            this._y = c1 * s2 * c3 - s1 * c2 * s3;\n            this._z = c1 * c2 * s3 + s1 * s2 * c3;\n            this._w = c1 * c2 * c3 - s1 * s2 * s3;\n            break;\n          case \"YXZ\":\n            this._x = s1 * c2 * c3 + c1 * s2 * s3;\n            this._y = c1 * s2 * c3 - s1 * c2 * s3;\n            this._z = c1 * c2 * s3 - s1 * s2 * c3;\n            this._w = c1 * c2 * c3 + s1 * s2 * s3;\n            break;\n          case \"ZXY\":\n            this._x = s1 * c2 * c3 - c1 * s2 * s3;\n            this._y = c1 * s2 * c3 + s1 * c2 * s3;\n            this._z = c1 * c2 * s3 + s1 * s2 * c3;\n            this._w = c1 * c2 * c3 - s1 * s2 * s3;\n            break;\n          case \"ZYX\":\n            this._x = s1 * c2 * c3 - c1 * s2 * s3;\n            this._y = c1 * s2 * c3 + s1 * c2 * s3;\n            this._z = c1 * c2 * s3 - s1 * s2 * c3;\n            this._w = c1 * c2 * c3 + s1 * s2 * s3;\n            break;\n          case \"YZX\":\n            this._x = s1 * c2 * c3 + c1 * s2 * s3;\n            this._y = c1 * s2 * c3 + s1 * c2 * s3;\n            this._z = c1 * c2 * s3 - s1 * s2 * c3;\n            this._w = c1 * c2 * c3 - s1 * s2 * s3;\n            break;\n          case \"XZY\":\n            this._x = s1 * c2 * c3 - c1 * s2 * s3;\n            this._y = c1 * s2 * c3 - s1 * c2 * s3;\n            this._z = c1 * c2 * s3 + s1 * s2 * c3;\n            this._w = c1 * c2 * c3 + s1 * s2 * s3;\n            break;\n          default:\n            console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + order);\n        }\n        if (update === true) this._onChangeCallback();\n        return this;\n      }\n      setFromAxisAngle(axis, angle) {\n        const halfAngle = angle / 2, s = Math.sin(halfAngle);\n        this._x = axis.x * s;\n        this._y = axis.y * s;\n        this._z = axis.z * s;\n        this._w = Math.cos(halfAngle);\n        this._onChangeCallback();\n        return this;\n      }\n      setFromRotationMatrix(m) {\n        const te = m.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n        if (trace > 0) {\n          const s = 0.5 / Math.sqrt(trace + 1);\n          this._w = 0.25 / s;\n          this._x = (m32 - m23) * s;\n          this._y = (m13 - m31) * s;\n          this._z = (m21 - m12) * s;\n        } else if (m11 > m22 && m11 > m33) {\n          const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n          this._w = (m32 - m23) / s;\n          this._x = 0.25 * s;\n          this._y = (m12 + m21) / s;\n          this._z = (m13 + m31) / s;\n        } else if (m22 > m33) {\n          const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n          this._w = (m13 - m31) / s;\n          this._x = (m12 + m21) / s;\n          this._y = 0.25 * s;\n          this._z = (m23 + m32) / s;\n        } else {\n          const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n          this._w = (m21 - m12) / s;\n          this._x = (m13 + m31) / s;\n          this._y = (m23 + m32) / s;\n          this._z = 0.25 * s;\n        }\n        this._onChangeCallback();\n        return this;\n      }\n      setFromUnitVectors(vFrom, vTo) {\n        let r2 = vFrom.dot(vTo) + 1;\n        if (r2 < Number.EPSILON) {\n          r2 = 0;\n          if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n            this._x = -vFrom.y;\n            this._y = vFrom.x;\n            this._z = 0;\n            this._w = r2;\n          } else {\n            this._x = 0;\n            this._y = -vFrom.z;\n            this._z = vFrom.y;\n            this._w = r2;\n          }\n        } else {\n          this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n          this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n          this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n          this._w = r2;\n        }\n        return this.normalize();\n      }\n      angleTo(q3) {\n        return 2 * Math.acos(Math.abs(clamp(this.dot(q3), -1, 1)));\n      }\n      rotateTowards(q3, step) {\n        const angle = this.angleTo(q3);\n        if (angle === 0) return this;\n        const t2 = Math.min(1, step / angle);\n        this.slerp(q3, t2);\n        return this;\n      }\n      identity() {\n        return this.set(0, 0, 0, 1);\n      }\n      invert() {\n        return this.conjugate();\n      }\n      conjugate() {\n        this._x *= -1;\n        this._y *= -1;\n        this._z *= -1;\n        this._onChangeCallback();\n        return this;\n      }\n      dot(v2) {\n        return this._x * v2._x + this._y * v2._y + this._z * v2._z + this._w * v2._w;\n      }\n      lengthSq() {\n        return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n      }\n      length() {\n        return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n      }\n      normalize() {\n        let l2 = this.length();\n        if (l2 === 0) {\n          this._x = 0;\n          this._y = 0;\n          this._z = 0;\n          this._w = 1;\n        } else {\n          l2 = 1 / l2;\n          this._x = this._x * l2;\n          this._y = this._y * l2;\n          this._z = this._z * l2;\n          this._w = this._w * l2;\n        }\n        this._onChangeCallback();\n        return this;\n      }\n      multiply(q3) {\n        return this.multiplyQuaternions(this, q3);\n      }\n      premultiply(q3) {\n        return this.multiplyQuaternions(q3, this);\n      }\n      multiplyQuaternions(a, b) {\n        const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n        const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n        this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n        this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n        this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n        this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n        this._onChangeCallback();\n        return this;\n      }\n      slerp(qb, t2) {\n        if (t2 === 0) return this;\n        if (t2 === 1) return this.copy(qb);\n        const x = this._x, y2 = this._y, z2 = this._z, w = this._w;\n        let cosHalfTheta = w * qb._w + x * qb._x + y2 * qb._y + z2 * qb._z;\n        if (cosHalfTheta < 0) {\n          this._w = -qb._w;\n          this._x = -qb._x;\n          this._y = -qb._y;\n          this._z = -qb._z;\n          cosHalfTheta = -cosHalfTheta;\n        } else {\n          this.copy(qb);\n        }\n        if (cosHalfTheta >= 1) {\n          this._w = w;\n          this._x = x;\n          this._y = y2;\n          this._z = z2;\n          return this;\n        }\n        const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n        if (sqrSinHalfTheta <= Number.EPSILON) {\n          const s = 1 - t2;\n          this._w = s * w + t2 * this._w;\n          this._x = s * x + t2 * this._x;\n          this._y = s * y2 + t2 * this._y;\n          this._z = s * z2 + t2 * this._z;\n          this.normalize();\n          return this;\n        }\n        const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n        const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n        const ratioA = Math.sin((1 - t2) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t2 * halfTheta) / sinHalfTheta;\n        this._w = w * ratioA + this._w * ratioB;\n        this._x = x * ratioA + this._x * ratioB;\n        this._y = y2 * ratioA + this._y * ratioB;\n        this._z = z2 * ratioA + this._z * ratioB;\n        this._onChangeCallback();\n        return this;\n      }\n      slerpQuaternions(qa, qb, t2) {\n        return this.copy(qa).slerp(qb, t2);\n      }\n      random() {\n        const theta1 = 2 * Math.PI * Math.random();\n        const theta2 = 2 * Math.PI * Math.random();\n        const x0 = Math.random();\n        const r1 = Math.sqrt(1 - x0);\n        const r2 = Math.sqrt(x0);\n        return this.set(\n          r1 * Math.sin(theta1),\n          r1 * Math.cos(theta1),\n          r2 * Math.sin(theta2),\n          r2 * Math.cos(theta2)\n        );\n      }\n      equals(quaternion) {\n        return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n      }\n      fromArray(array, offset = 0) {\n        this._x = array[offset];\n        this._y = array[offset + 1];\n        this._z = array[offset + 2];\n        this._w = array[offset + 3];\n        this._onChangeCallback();\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        array[offset] = this._x;\n        array[offset + 1] = this._y;\n        array[offset + 2] = this._z;\n        array[offset + 3] = this._w;\n        return array;\n      }\n      fromBufferAttribute(attribute, index) {\n        this._x = attribute.getX(index);\n        this._y = attribute.getY(index);\n        this._z = attribute.getZ(index);\n        this._w = attribute.getW(index);\n        this._onChangeCallback();\n        return this;\n      }\n      toJSON() {\n        return this.toArray();\n      }\n      _onChange(callback) {\n        this._onChangeCallback = callback;\n        return this;\n      }\n      _onChangeCallback() {\n      }\n      *[Symbol.iterator]() {\n        yield this._x;\n        yield this._y;\n        yield this._z;\n        yield this._w;\n      }\n    };\n    Vector3 = class _Vector3 {\n      constructor(x = 0, y2 = 0, z2 = 0) {\n        _Vector3.prototype.isVector3 = true;\n        this.x = x;\n        this.y = y2;\n        this.z = z2;\n      }\n      set(x, y2, z2) {\n        if (z2 === void 0) z2 = this.z;\n        this.x = x;\n        this.y = y2;\n        this.z = z2;\n        return this;\n      }\n      setScalar(scalar) {\n        this.x = scalar;\n        this.y = scalar;\n        this.z = scalar;\n        return this;\n      }\n      setX(x) {\n        this.x = x;\n        return this;\n      }\n      setY(y2) {\n        this.y = y2;\n        return this;\n      }\n      setZ(z2) {\n        this.z = z2;\n        return this;\n      }\n      setComponent(index, value) {\n        switch (index) {\n          case 0:\n            this.x = value;\n            break;\n          case 1:\n            this.y = value;\n            break;\n          case 2:\n            this.z = value;\n            break;\n          default:\n            throw new Error(\"index is out of range: \" + index);\n        }\n        return this;\n      }\n      getComponent(index) {\n        switch (index) {\n          case 0:\n            return this.x;\n          case 1:\n            return this.y;\n          case 2:\n            return this.z;\n          default:\n            throw new Error(\"index is out of range: \" + index);\n        }\n      }\n      clone() {\n        return new this.constructor(this.x, this.y, this.z);\n      }\n      copy(v2) {\n        this.x = v2.x;\n        this.y = v2.y;\n        this.z = v2.z;\n        return this;\n      }\n      add(v2) {\n        this.x += v2.x;\n        this.y += v2.y;\n        this.z += v2.z;\n        return this;\n      }\n      addScalar(s) {\n        this.x += s;\n        this.y += s;\n        this.z += s;\n        return this;\n      }\n      addVectors(a, b) {\n        this.x = a.x + b.x;\n        this.y = a.y + b.y;\n        this.z = a.z + b.z;\n        return this;\n      }\n      addScaledVector(v2, s) {\n        this.x += v2.x * s;\n        this.y += v2.y * s;\n        this.z += v2.z * s;\n        return this;\n      }\n      sub(v2) {\n        this.x -= v2.x;\n        this.y -= v2.y;\n        this.z -= v2.z;\n        return this;\n      }\n      subScalar(s) {\n        this.x -= s;\n        this.y -= s;\n        this.z -= s;\n        return this;\n      }\n      subVectors(a, b) {\n        this.x = a.x - b.x;\n        this.y = a.y - b.y;\n        this.z = a.z - b.z;\n        return this;\n      }\n      multiply(v2) {\n        this.x *= v2.x;\n        this.y *= v2.y;\n        this.z *= v2.z;\n        return this;\n      }\n      multiplyScalar(scalar) {\n        this.x *= scalar;\n        this.y *= scalar;\n        this.z *= scalar;\n        return this;\n      }\n      multiplyVectors(a, b) {\n        this.x = a.x * b.x;\n        this.y = a.y * b.y;\n        this.z = a.z * b.z;\n        return this;\n      }\n      applyEuler(euler) {\n        return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n      }\n      applyAxisAngle(axis, angle) {\n        return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n      }\n      applyMatrix3(m) {\n        const x = this.x, y2 = this.y, z2 = this.z;\n        const e = m.elements;\n        this.x = e[0] * x + e[3] * y2 + e[6] * z2;\n        this.y = e[1] * x + e[4] * y2 + e[7] * z2;\n        this.z = e[2] * x + e[5] * y2 + e[8] * z2;\n        return this;\n      }\n      applyNormalMatrix(m) {\n        return this.applyMatrix3(m).normalize();\n      }\n      applyMatrix4(m) {\n        const x = this.x, y2 = this.y, z2 = this.z;\n        const e = m.elements;\n        const w = 1 / (e[3] * x + e[7] * y2 + e[11] * z2 + e[15]);\n        this.x = (e[0] * x + e[4] * y2 + e[8] * z2 + e[12]) * w;\n        this.y = (e[1] * x + e[5] * y2 + e[9] * z2 + e[13]) * w;\n        this.z = (e[2] * x + e[6] * y2 + e[10] * z2 + e[14]) * w;\n        return this;\n      }\n      applyQuaternion(q3) {\n        const vx = this.x, vy = this.y, vz = this.z;\n        const qx = q3.x, qy = q3.y, qz = q3.z, qw = q3.w;\n        const tx = 2 * (qy * vz - qz * vy);\n        const ty = 2 * (qz * vx - qx * vz);\n        const tz = 2 * (qx * vy - qy * vx);\n        this.x = vx + qw * tx + qy * tz - qz * ty;\n        this.y = vy + qw * ty + qz * tx - qx * tz;\n        this.z = vz + qw * tz + qx * ty - qy * tx;\n        return this;\n      }\n      project(camera) {\n        return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n      }\n      unproject(camera) {\n        return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n      }\n      transformDirection(m) {\n        const x = this.x, y2 = this.y, z2 = this.z;\n        const e = m.elements;\n        this.x = e[0] * x + e[4] * y2 + e[8] * z2;\n        this.y = e[1] * x + e[5] * y2 + e[9] * z2;\n        this.z = e[2] * x + e[6] * y2 + e[10] * z2;\n        return this.normalize();\n      }\n      divide(v2) {\n        this.x /= v2.x;\n        this.y /= v2.y;\n        this.z /= v2.z;\n        return this;\n      }\n      divideScalar(scalar) {\n        return this.multiplyScalar(1 / scalar);\n      }\n      min(v2) {\n        this.x = Math.min(this.x, v2.x);\n        this.y = Math.min(this.y, v2.y);\n        this.z = Math.min(this.z, v2.z);\n        return this;\n      }\n      max(v2) {\n        this.x = Math.max(this.x, v2.x);\n        this.y = Math.max(this.y, v2.y);\n        this.z = Math.max(this.z, v2.z);\n        return this;\n      }\n      clamp(min, max) {\n        this.x = Math.max(min.x, Math.min(max.x, this.x));\n        this.y = Math.max(min.y, Math.min(max.y, this.y));\n        this.z = Math.max(min.z, Math.min(max.z, this.z));\n        return this;\n      }\n      clampScalar(minVal, maxVal) {\n        this.x = Math.max(minVal, Math.min(maxVal, this.x));\n        this.y = Math.max(minVal, Math.min(maxVal, this.y));\n        this.z = Math.max(minVal, Math.min(maxVal, this.z));\n        return this;\n      }\n      clampLength(min, max) {\n        const length = this.length();\n        return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n      }\n      floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        this.z = Math.floor(this.z);\n        return this;\n      }\n      ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        this.z = Math.ceil(this.z);\n        return this;\n      }\n      round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        this.z = Math.round(this.z);\n        return this;\n      }\n      roundToZero() {\n        this.x = Math.trunc(this.x);\n        this.y = Math.trunc(this.y);\n        this.z = Math.trunc(this.z);\n        return this;\n      }\n      negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n      }\n      dot(v2) {\n        return this.x * v2.x + this.y * v2.y + this.z * v2.z;\n      }\n      // TODO lengthSquared?\n      lengthSq() {\n        return this.x * this.x + this.y * this.y + this.z * this.z;\n      }\n      length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n      }\n      manhattanLength() {\n        return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n      }\n      normalize() {\n        return this.divideScalar(this.length() || 1);\n      }\n      setLength(length) {\n        return this.normalize().multiplyScalar(length);\n      }\n      lerp(v2, alpha) {\n        this.x += (v2.x - this.x) * alpha;\n        this.y += (v2.y - this.y) * alpha;\n        this.z += (v2.z - this.z) * alpha;\n        return this;\n      }\n      lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        this.z = v1.z + (v2.z - v1.z) * alpha;\n        return this;\n      }\n      cross(v2) {\n        return this.crossVectors(this, v2);\n      }\n      crossVectors(a, b) {\n        const ax = a.x, ay = a.y, az = a.z;\n        const bx = b.x, by = b.y, bz = b.z;\n        this.x = ay * bz - az * by;\n        this.y = az * bx - ax * bz;\n        this.z = ax * by - ay * bx;\n        return this;\n      }\n      projectOnVector(v2) {\n        const denominator = v2.lengthSq();\n        if (denominator === 0) return this.set(0, 0, 0);\n        const scalar = v2.dot(this) / denominator;\n        return this.copy(v2).multiplyScalar(scalar);\n      }\n      projectOnPlane(planeNormal) {\n        _vector$c.copy(this).projectOnVector(planeNormal);\n        return this.sub(_vector$c);\n      }\n      reflect(normal) {\n        return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n      }\n      angleTo(v2) {\n        const denominator = Math.sqrt(this.lengthSq() * v2.lengthSq());\n        if (denominator === 0) return Math.PI / 2;\n        const theta = this.dot(v2) / denominator;\n        return Math.acos(clamp(theta, -1, 1));\n      }\n      distanceTo(v2) {\n        return Math.sqrt(this.distanceToSquared(v2));\n      }\n      distanceToSquared(v2) {\n        const dx = this.x - v2.x, dy = this.y - v2.y, dz = this.z - v2.z;\n        return dx * dx + dy * dy + dz * dz;\n      }\n      manhattanDistanceTo(v2) {\n        return Math.abs(this.x - v2.x) + Math.abs(this.y - v2.y) + Math.abs(this.z - v2.z);\n      }\n      setFromSpherical(s) {\n        return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n      }\n      setFromSphericalCoords(radius, phi, theta) {\n        const sinPhiRadius = Math.sin(phi) * radius;\n        this.x = sinPhiRadius * Math.sin(theta);\n        this.y = Math.cos(phi) * radius;\n        this.z = sinPhiRadius * Math.cos(theta);\n        return this;\n      }\n      setFromCylindrical(c) {\n        return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n      }\n      setFromCylindricalCoords(radius, theta, y2) {\n        this.x = radius * Math.sin(theta);\n        this.y = y2;\n        this.z = radius * Math.cos(theta);\n        return this;\n      }\n      setFromMatrixPosition(m) {\n        const e = m.elements;\n        this.x = e[12];\n        this.y = e[13];\n        this.z = e[14];\n        return this;\n      }\n      setFromMatrixScale(m) {\n        const sx = this.setFromMatrixColumn(m, 0).length();\n        const sy = this.setFromMatrixColumn(m, 1).length();\n        const sz = this.setFromMatrixColumn(m, 2).length();\n        this.x = sx;\n        this.y = sy;\n        this.z = sz;\n        return this;\n      }\n      setFromMatrixColumn(m, index) {\n        return this.fromArray(m.elements, index * 4);\n      }\n      setFromMatrix3Column(m, index) {\n        return this.fromArray(m.elements, index * 3);\n      }\n      setFromEuler(e) {\n        this.x = e._x;\n        this.y = e._y;\n        this.z = e._z;\n        return this;\n      }\n      setFromColor(c) {\n        this.x = c.r;\n        this.y = c.g;\n        this.z = c.b;\n        return this;\n      }\n      equals(v2) {\n        return v2.x === this.x && v2.y === this.y && v2.z === this.z;\n      }\n      fromArray(array, offset = 0) {\n        this.x = array[offset];\n        this.y = array[offset + 1];\n        this.z = array[offset + 2];\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        array[offset + 2] = this.z;\n        return array;\n      }\n      fromBufferAttribute(attribute, index) {\n        this.x = attribute.getX(index);\n        this.y = attribute.getY(index);\n        this.z = attribute.getZ(index);\n        return this;\n      }\n      random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        this.z = Math.random();\n        return this;\n      }\n      randomDirection() {\n        const theta = Math.random() * Math.PI * 2;\n        const u3 = Math.random() * 2 - 1;\n        const c = Math.sqrt(1 - u3 * u3);\n        this.x = c * Math.cos(theta);\n        this.y = u3;\n        this.z = c * Math.sin(theta);\n        return this;\n      }\n      *[Symbol.iterator]() {\n        yield this.x;\n        yield this.y;\n        yield this.z;\n      }\n    };\n    _vector$c = /* @__PURE__ */ new Vector3();\n    _quaternion$4 = /* @__PURE__ */ new Quaternion();\n    Box3 = class {\n      constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n        this.isBox3 = true;\n        this.min = min;\n        this.max = max;\n      }\n      set(min, max) {\n        this.min.copy(min);\n        this.max.copy(max);\n        return this;\n      }\n      setFromArray(array) {\n        this.makeEmpty();\n        for (let i2 = 0, il = array.length; i2 < il; i2 += 3) {\n          this.expandByPoint(_vector$b.fromArray(array, i2));\n        }\n        return this;\n      }\n      setFromBufferAttribute(attribute) {\n        this.makeEmpty();\n        for (let i2 = 0, il = attribute.count; i2 < il; i2++) {\n          this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i2));\n        }\n        return this;\n      }\n      setFromPoints(points) {\n        this.makeEmpty();\n        for (let i2 = 0, il = points.length; i2 < il; i2++) {\n          this.expandByPoint(points[i2]);\n        }\n        return this;\n      }\n      setFromCenterAndSize(center, size) {\n        const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n        this.min.copy(center).sub(halfSize);\n        this.max.copy(center).add(halfSize);\n        return this;\n      }\n      setFromObject(object, precise = false) {\n        this.makeEmpty();\n        return this.expandByObject(object, precise);\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(box) {\n        this.min.copy(box.min);\n        this.max.copy(box.max);\n        return this;\n      }\n      makeEmpty() {\n        this.min.x = this.min.y = this.min.z = Infinity;\n        this.max.x = this.max.y = this.max.z = -Infinity;\n        return this;\n      }\n      isEmpty() {\n        return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n      }\n      getCenter(target2) {\n        return this.isEmpty() ? target2.set(0, 0, 0) : target2.addVectors(this.min, this.max).multiplyScalar(0.5);\n      }\n      getSize(target2) {\n        return this.isEmpty() ? target2.set(0, 0, 0) : target2.subVectors(this.max, this.min);\n      }\n      expandByPoint(point) {\n        this.min.min(point);\n        this.max.max(point);\n        return this;\n      }\n      expandByVector(vector) {\n        this.min.sub(vector);\n        this.max.add(vector);\n        return this;\n      }\n      expandByScalar(scalar) {\n        this.min.addScalar(-scalar);\n        this.max.addScalar(scalar);\n        return this;\n      }\n      expandByObject(object, precise = false) {\n        object.updateWorldMatrix(false, false);\n        const geometry = object.geometry;\n        if (geometry !== void 0) {\n          const positionAttribute = geometry.getAttribute(\"position\");\n          if (precise === true && positionAttribute !== void 0 && object.isInstancedMesh !== true) {\n            for (let i2 = 0, l2 = positionAttribute.count; i2 < l2; i2++) {\n              if (object.isMesh === true) {\n                object.getVertexPosition(i2, _vector$b);\n              } else {\n                _vector$b.fromBufferAttribute(positionAttribute, i2);\n              }\n              _vector$b.applyMatrix4(object.matrixWorld);\n              this.expandByPoint(_vector$b);\n            }\n          } else {\n            if (object.boundingBox !== void 0) {\n              if (object.boundingBox === null) {\n                object.computeBoundingBox();\n              }\n              _box$4.copy(object.boundingBox);\n            } else {\n              if (geometry.boundingBox === null) {\n                geometry.computeBoundingBox();\n              }\n              _box$4.copy(geometry.boundingBox);\n            }\n            _box$4.applyMatrix4(object.matrixWorld);\n            this.union(_box$4);\n          }\n        }\n        const children = object.children;\n        for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n          this.expandByObject(children[i2], precise);\n        }\n        return this;\n      }\n      containsPoint(point) {\n        return point.x >= this.min.x && point.x <= this.max.x && point.y >= this.min.y && point.y <= this.max.y && point.z >= this.min.z && point.z <= this.max.z;\n      }\n      containsBox(box) {\n        return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n      }\n      getParameter(point, target2) {\n        return target2.set(\n          (point.x - this.min.x) / (this.max.x - this.min.x),\n          (point.y - this.min.y) / (this.max.y - this.min.y),\n          (point.z - this.min.z) / (this.max.z - this.min.z)\n        );\n      }\n      intersectsBox(box) {\n        return box.max.x >= this.min.x && box.min.x <= this.max.x && box.max.y >= this.min.y && box.min.y <= this.max.y && box.max.z >= this.min.z && box.min.z <= this.max.z;\n      }\n      intersectsSphere(sphere) {\n        this.clampPoint(sphere.center, _vector$b);\n        return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n      }\n      intersectsPlane(plane) {\n        let min, max;\n        if (plane.normal.x > 0) {\n          min = plane.normal.x * this.min.x;\n          max = plane.normal.x * this.max.x;\n        } else {\n          min = plane.normal.x * this.max.x;\n          max = plane.normal.x * this.min.x;\n        }\n        if (plane.normal.y > 0) {\n          min += plane.normal.y * this.min.y;\n          max += plane.normal.y * this.max.y;\n        } else {\n          min += plane.normal.y * this.max.y;\n          max += plane.normal.y * this.min.y;\n        }\n        if (plane.normal.z > 0) {\n          min += plane.normal.z * this.min.z;\n          max += plane.normal.z * this.max.z;\n        } else {\n          min += plane.normal.z * this.max.z;\n          max += plane.normal.z * this.min.z;\n        }\n        return min <= -plane.constant && max >= -plane.constant;\n      }\n      intersectsTriangle(triangle) {\n        if (this.isEmpty()) {\n          return false;\n        }\n        this.getCenter(_center);\n        _extents.subVectors(this.max, _center);\n        _v0$3.subVectors(triangle.a, _center);\n        _v1$7.subVectors(triangle.b, _center);\n        _v2$4.subVectors(triangle.c, _center);\n        _f0.subVectors(_v1$7, _v0$3);\n        _f1.subVectors(_v2$4, _v1$7);\n        _f2.subVectors(_v0$3, _v2$4);\n        let axes = [\n          0,\n          -_f0.z,\n          _f0.y,\n          0,\n          -_f1.z,\n          _f1.y,\n          0,\n          -_f2.z,\n          _f2.y,\n          _f0.z,\n          0,\n          -_f0.x,\n          _f1.z,\n          0,\n          -_f1.x,\n          _f2.z,\n          0,\n          -_f2.x,\n          -_f0.y,\n          _f0.x,\n          0,\n          -_f1.y,\n          _f1.x,\n          0,\n          -_f2.y,\n          _f2.x,\n          0\n        ];\n        if (!satForAxes(axes, _v0$3, _v1$7, _v2$4, _extents)) {\n          return false;\n        }\n        axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n        if (!satForAxes(axes, _v0$3, _v1$7, _v2$4, _extents)) {\n          return false;\n        }\n        _triangleNormal.crossVectors(_f0, _f1);\n        axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n        return satForAxes(axes, _v0$3, _v1$7, _v2$4, _extents);\n      }\n      clampPoint(point, target2) {\n        return target2.copy(point).clamp(this.min, this.max);\n      }\n      distanceToPoint(point) {\n        return this.clampPoint(point, _vector$b).distanceTo(point);\n      }\n      getBoundingSphere(target2) {\n        if (this.isEmpty()) {\n          target2.makeEmpty();\n        } else {\n          this.getCenter(target2.center);\n          target2.radius = this.getSize(_vector$b).length() * 0.5;\n        }\n        return target2;\n      }\n      intersect(box) {\n        this.min.max(box.min);\n        this.max.min(box.max);\n        if (this.isEmpty()) this.makeEmpty();\n        return this;\n      }\n      union(box) {\n        this.min.min(box.min);\n        this.max.max(box.max);\n        return this;\n      }\n      applyMatrix4(matrix2) {\n        if (this.isEmpty()) return this;\n        _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix2);\n        _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix2);\n        _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix2);\n        _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix2);\n        _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix2);\n        _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix2);\n        _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix2);\n        _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix2);\n        this.setFromPoints(_points);\n        return this;\n      }\n      translate(offset) {\n        this.min.add(offset);\n        this.max.add(offset);\n        return this;\n      }\n      equals(box) {\n        return box.min.equals(this.min) && box.max.equals(this.max);\n      }\n    };\n    _points = [\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3(),\n      /* @__PURE__ */ new Vector3()\n    ];\n    _vector$b = /* @__PURE__ */ new Vector3();\n    _box$4 = /* @__PURE__ */ new Box3();\n    _v0$3 = /* @__PURE__ */ new Vector3();\n    _v1$7 = /* @__PURE__ */ new Vector3();\n    _v2$4 = /* @__PURE__ */ new Vector3();\n    _f0 = /* @__PURE__ */ new Vector3();\n    _f1 = /* @__PURE__ */ new Vector3();\n    _f2 = /* @__PURE__ */ new Vector3();\n    _center = /* @__PURE__ */ new Vector3();\n    _extents = /* @__PURE__ */ new Vector3();\n    _triangleNormal = /* @__PURE__ */ new Vector3();\n    _testAxis = /* @__PURE__ */ new Vector3();\n    _box$3 = /* @__PURE__ */ new Box3();\n    _v1$6 = /* @__PURE__ */ new Vector3();\n    _v2$3 = /* @__PURE__ */ new Vector3();\n    Sphere = class {\n      constructor(center = new Vector3(), radius = -1) {\n        this.isSphere = true;\n        this.center = center;\n        this.radius = radius;\n      }\n      set(center, radius) {\n        this.center.copy(center);\n        this.radius = radius;\n        return this;\n      }\n      setFromPoints(points, optionalCenter) {\n        const center = this.center;\n        if (optionalCenter !== void 0) {\n          center.copy(optionalCenter);\n        } else {\n          _box$3.setFromPoints(points).getCenter(center);\n        }\n        let maxRadiusSq = 0;\n        for (let i2 = 0, il = points.length; i2 < il; i2++) {\n          maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i2]));\n        }\n        this.radius = Math.sqrt(maxRadiusSq);\n        return this;\n      }\n      copy(sphere) {\n        this.center.copy(sphere.center);\n        this.radius = sphere.radius;\n        return this;\n      }\n      isEmpty() {\n        return this.radius < 0;\n      }\n      makeEmpty() {\n        this.center.set(0, 0, 0);\n        this.radius = -1;\n        return this;\n      }\n      containsPoint(point) {\n        return point.distanceToSquared(this.center) <= this.radius * this.radius;\n      }\n      distanceToPoint(point) {\n        return point.distanceTo(this.center) - this.radius;\n      }\n      intersectsSphere(sphere) {\n        const radiusSum = this.radius + sphere.radius;\n        return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n      }\n      intersectsBox(box) {\n        return box.intersectsSphere(this);\n      }\n      intersectsPlane(plane) {\n        return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n      }\n      clampPoint(point, target2) {\n        const deltaLengthSq = this.center.distanceToSquared(point);\n        target2.copy(point);\n        if (deltaLengthSq > this.radius * this.radius) {\n          target2.sub(this.center).normalize();\n          target2.multiplyScalar(this.radius).add(this.center);\n        }\n        return target2;\n      }\n      getBoundingBox(target2) {\n        if (this.isEmpty()) {\n          target2.makeEmpty();\n          return target2;\n        }\n        target2.set(this.center, this.center);\n        target2.expandByScalar(this.radius);\n        return target2;\n      }\n      applyMatrix4(matrix2) {\n        this.center.applyMatrix4(matrix2);\n        this.radius = this.radius * matrix2.getMaxScaleOnAxis();\n        return this;\n      }\n      translate(offset) {\n        this.center.add(offset);\n        return this;\n      }\n      expandByPoint(point) {\n        if (this.isEmpty()) {\n          this.center.copy(point);\n          this.radius = 0;\n          return this;\n        }\n        _v1$6.subVectors(point, this.center);\n        const lengthSq = _v1$6.lengthSq();\n        if (lengthSq > this.radius * this.radius) {\n          const length = Math.sqrt(lengthSq);\n          const delta = (length - this.radius) * 0.5;\n          this.center.addScaledVector(_v1$6, delta / length);\n          this.radius += delta;\n        }\n        return this;\n      }\n      union(sphere) {\n        if (sphere.isEmpty()) {\n          return this;\n        }\n        if (this.isEmpty()) {\n          this.copy(sphere);\n          return this;\n        }\n        if (this.center.equals(sphere.center) === true) {\n          this.radius = Math.max(this.radius, sphere.radius);\n        } else {\n          _v2$3.subVectors(sphere.center, this.center).setLength(sphere.radius);\n          this.expandByPoint(_v1$6.copy(sphere.center).add(_v2$3));\n          this.expandByPoint(_v1$6.copy(sphere.center).sub(_v2$3));\n        }\n        return this;\n      }\n      equals(sphere) {\n        return sphere.center.equals(this.center) && sphere.radius === this.radius;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    _vector$a = /* @__PURE__ */ new Vector3();\n    _segCenter = /* @__PURE__ */ new Vector3();\n    _segDir = /* @__PURE__ */ new Vector3();\n    _diff = /* @__PURE__ */ new Vector3();\n    _edge1 = /* @__PURE__ */ new Vector3();\n    _edge2 = /* @__PURE__ */ new Vector3();\n    _normal$1 = /* @__PURE__ */ new Vector3();\n    Ray = class {\n      constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n        this.origin = origin;\n        this.direction = direction;\n      }\n      set(origin, direction) {\n        this.origin.copy(origin);\n        this.direction.copy(direction);\n        return this;\n      }\n      copy(ray) {\n        this.origin.copy(ray.origin);\n        this.direction.copy(ray.direction);\n        return this;\n      }\n      at(t2, target2) {\n        return target2.copy(this.origin).addScaledVector(this.direction, t2);\n      }\n      lookAt(v2) {\n        this.direction.copy(v2).sub(this.origin).normalize();\n        return this;\n      }\n      recast(t2) {\n        this.origin.copy(this.at(t2, _vector$a));\n        return this;\n      }\n      closestPointToPoint(point, target2) {\n        target2.subVectors(point, this.origin);\n        const directionDistance = target2.dot(this.direction);\n        if (directionDistance < 0) {\n          return target2.copy(this.origin);\n        }\n        return target2.copy(this.origin).addScaledVector(this.direction, directionDistance);\n      }\n      distanceToPoint(point) {\n        return Math.sqrt(this.distanceSqToPoint(point));\n      }\n      distanceSqToPoint(point) {\n        const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction);\n        if (directionDistance < 0) {\n          return this.origin.distanceToSquared(point);\n        }\n        _vector$a.copy(this.origin).addScaledVector(this.direction, directionDistance);\n        return _vector$a.distanceToSquared(point);\n      }\n      distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n        _segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n        _segDir.copy(v1).sub(v0).normalize();\n        _diff.copy(this.origin).sub(_segCenter);\n        const segExtent = v0.distanceTo(v1) * 0.5;\n        const a01 = -this.direction.dot(_segDir);\n        const b0 = _diff.dot(this.direction);\n        const b1 = -_diff.dot(_segDir);\n        const c = _diff.lengthSq();\n        const det = Math.abs(1 - a01 * a01);\n        let s0, s1, sqrDist, extDet;\n        if (det > 0) {\n          s0 = a01 * b1 - b0;\n          s1 = a01 * b0 - b1;\n          extDet = segExtent * det;\n          if (s0 >= 0) {\n            if (s1 >= -extDet) {\n              if (s1 <= extDet) {\n                const invDet = 1 / det;\n                s0 *= invDet;\n                s1 *= invDet;\n                sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n              } else {\n                s1 = segExtent;\n                s0 = Math.max(0, -(a01 * s1 + b0));\n                sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n              }\n            } else {\n              s1 = -segExtent;\n              s0 = Math.max(0, -(a01 * s1 + b0));\n              sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n            }\n          } else {\n            if (s1 <= -extDet) {\n              s0 = Math.max(0, -(-a01 * segExtent + b0));\n              s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n              sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n            } else if (s1 <= extDet) {\n              s0 = 0;\n              s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n              sqrDist = s1 * (s1 + 2 * b1) + c;\n            } else {\n              s0 = Math.max(0, -(a01 * segExtent + b0));\n              s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n              sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n            }\n          }\n        } else {\n          s1 = a01 > 0 ? -segExtent : segExtent;\n          s0 = Math.max(0, -(a01 * s1 + b0));\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        }\n        if (optionalPointOnRay) {\n          optionalPointOnRay.copy(this.origin).addScaledVector(this.direction, s0);\n        }\n        if (optionalPointOnSegment) {\n          optionalPointOnSegment.copy(_segCenter).addScaledVector(_segDir, s1);\n        }\n        return sqrDist;\n      }\n      intersectSphere(sphere, target2) {\n        _vector$a.subVectors(sphere.center, this.origin);\n        const tca = _vector$a.dot(this.direction);\n        const d2 = _vector$a.dot(_vector$a) - tca * tca;\n        const radius2 = sphere.radius * sphere.radius;\n        if (d2 > radius2) return null;\n        const thc = Math.sqrt(radius2 - d2);\n        const t0 = tca - thc;\n        const t1 = tca + thc;\n        if (t1 < 0) return null;\n        if (t0 < 0) return this.at(t1, target2);\n        return this.at(t0, target2);\n      }\n      intersectsSphere(sphere) {\n        return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n      }\n      distanceToPlane(plane) {\n        const denominator = plane.normal.dot(this.direction);\n        if (denominator === 0) {\n          if (plane.distanceToPoint(this.origin) === 0) {\n            return 0;\n          }\n          return null;\n        }\n        const t2 = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n        return t2 >= 0 ? t2 : null;\n      }\n      intersectPlane(plane, target2) {\n        const t2 = this.distanceToPlane(plane);\n        if (t2 === null) {\n          return null;\n        }\n        return this.at(t2, target2);\n      }\n      intersectsPlane(plane) {\n        const distToPoint = plane.distanceToPoint(this.origin);\n        if (distToPoint === 0) {\n          return true;\n        }\n        const denominator = plane.normal.dot(this.direction);\n        if (denominator * distToPoint < 0) {\n          return true;\n        }\n        return false;\n      }\n      intersectBox(box, target2) {\n        let tmin, tmax, tymin, tymax, tzmin, tzmax;\n        const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z;\n        const origin = this.origin;\n        if (invdirx >= 0) {\n          tmin = (box.min.x - origin.x) * invdirx;\n          tmax = (box.max.x - origin.x) * invdirx;\n        } else {\n          tmin = (box.max.x - origin.x) * invdirx;\n          tmax = (box.min.x - origin.x) * invdirx;\n        }\n        if (invdiry >= 0) {\n          tymin = (box.min.y - origin.y) * invdiry;\n          tymax = (box.max.y - origin.y) * invdiry;\n        } else {\n          tymin = (box.max.y - origin.y) * invdiry;\n          tymax = (box.min.y - origin.y) * invdiry;\n        }\n        if (tmin > tymax || tymin > tmax) return null;\n        if (tymin > tmin || isNaN(tmin)) tmin = tymin;\n        if (tymax < tmax || isNaN(tmax)) tmax = tymax;\n        if (invdirz >= 0) {\n          tzmin = (box.min.z - origin.z) * invdirz;\n          tzmax = (box.max.z - origin.z) * invdirz;\n        } else {\n          tzmin = (box.max.z - origin.z) * invdirz;\n          tzmax = (box.min.z - origin.z) * invdirz;\n        }\n        if (tmin > tzmax || tzmin > tmax) return null;\n        if (tzmin > tmin || tmin !== tmin) tmin = tzmin;\n        if (tzmax < tmax || tmax !== tmax) tmax = tzmax;\n        if (tmax < 0) return null;\n        return this.at(tmin >= 0 ? tmin : tmax, target2);\n      }\n      intersectsBox(box) {\n        return this.intersectBox(box, _vector$a) !== null;\n      }\n      intersectTriangle(a, b, c, backfaceCulling, target2) {\n        _edge1.subVectors(b, a);\n        _edge2.subVectors(c, a);\n        _normal$1.crossVectors(_edge1, _edge2);\n        let DdN = this.direction.dot(_normal$1);\n        let sign2;\n        if (DdN > 0) {\n          if (backfaceCulling) return null;\n          sign2 = 1;\n        } else if (DdN < 0) {\n          sign2 = -1;\n          DdN = -DdN;\n        } else {\n          return null;\n        }\n        _diff.subVectors(this.origin, a);\n        const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2));\n        if (DdQxE2 < 0) {\n          return null;\n        }\n        const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff));\n        if (DdE1xQ < 0) {\n          return null;\n        }\n        if (DdQxE2 + DdE1xQ > DdN) {\n          return null;\n        }\n        const QdN = -sign2 * _diff.dot(_normal$1);\n        if (QdN < 0) {\n          return null;\n        }\n        return this.at(QdN / DdN, target2);\n      }\n      applyMatrix4(matrix4) {\n        this.origin.applyMatrix4(matrix4);\n        this.direction.transformDirection(matrix4);\n        return this;\n      }\n      equals(ray) {\n        return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    Matrix4 = class _Matrix4 {\n      constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n        _Matrix4.prototype.isMatrix4 = true;\n        this.elements = [\n          1,\n          0,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1\n        ];\n        if (n11 !== void 0) {\n          this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44);\n        }\n      }\n      set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n        const te = this.elements;\n        te[0] = n11;\n        te[4] = n12;\n        te[8] = n13;\n        te[12] = n14;\n        te[1] = n21;\n        te[5] = n22;\n        te[9] = n23;\n        te[13] = n24;\n        te[2] = n31;\n        te[6] = n32;\n        te[10] = n33;\n        te[14] = n34;\n        te[3] = n41;\n        te[7] = n42;\n        te[11] = n43;\n        te[15] = n44;\n        return this;\n      }\n      identity() {\n        this.set(\n          1,\n          0,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      clone() {\n        return new _Matrix4().fromArray(this.elements);\n      }\n      copy(m) {\n        const te = this.elements;\n        const me = m.elements;\n        te[0] = me[0];\n        te[1] = me[1];\n        te[2] = me[2];\n        te[3] = me[3];\n        te[4] = me[4];\n        te[5] = me[5];\n        te[6] = me[6];\n        te[7] = me[7];\n        te[8] = me[8];\n        te[9] = me[9];\n        te[10] = me[10];\n        te[11] = me[11];\n        te[12] = me[12];\n        te[13] = me[13];\n        te[14] = me[14];\n        te[15] = me[15];\n        return this;\n      }\n      copyPosition(m) {\n        const te = this.elements, me = m.elements;\n        te[12] = me[12];\n        te[13] = me[13];\n        te[14] = me[14];\n        return this;\n      }\n      setFromMatrix3(m) {\n        const me = m.elements;\n        this.set(\n          me[0],\n          me[3],\n          me[6],\n          0,\n          me[1],\n          me[4],\n          me[7],\n          0,\n          me[2],\n          me[5],\n          me[8],\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      extractBasis(xAxis, yAxis, zAxis) {\n        xAxis.setFromMatrixColumn(this, 0);\n        yAxis.setFromMatrixColumn(this, 1);\n        zAxis.setFromMatrixColumn(this, 2);\n        return this;\n      }\n      makeBasis(xAxis, yAxis, zAxis) {\n        this.set(\n          xAxis.x,\n          yAxis.x,\n          zAxis.x,\n          0,\n          xAxis.y,\n          yAxis.y,\n          zAxis.y,\n          0,\n          xAxis.z,\n          yAxis.z,\n          zAxis.z,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      extractRotation(m) {\n        const te = this.elements;\n        const me = m.elements;\n        const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length();\n        const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length();\n        const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length();\n        te[0] = me[0] * scaleX;\n        te[1] = me[1] * scaleX;\n        te[2] = me[2] * scaleX;\n        te[3] = 0;\n        te[4] = me[4] * scaleY;\n        te[5] = me[5] * scaleY;\n        te[6] = me[6] * scaleY;\n        te[7] = 0;\n        te[8] = me[8] * scaleZ;\n        te[9] = me[9] * scaleZ;\n        te[10] = me[10] * scaleZ;\n        te[11] = 0;\n        te[12] = 0;\n        te[13] = 0;\n        te[14] = 0;\n        te[15] = 1;\n        return this;\n      }\n      makeRotationFromEuler(euler) {\n        const te = this.elements;\n        const x = euler.x, y2 = euler.y, z2 = euler.z;\n        const a = Math.cos(x), b = Math.sin(x);\n        const c = Math.cos(y2), d = Math.sin(y2);\n        const e = Math.cos(z2), f2 = Math.sin(z2);\n        if (euler.order === \"XYZ\") {\n          const ae = a * e, af = a * f2, be = b * e, bf = b * f2;\n          te[0] = c * e;\n          te[4] = -c * f2;\n          te[8] = d;\n          te[1] = af + be * d;\n          te[5] = ae - bf * d;\n          te[9] = -b * c;\n          te[2] = bf - ae * d;\n          te[6] = be + af * d;\n          te[10] = a * c;\n        } else if (euler.order === \"YXZ\") {\n          const ce = c * e, cf = c * f2, de = d * e, df = d * f2;\n          te[0] = ce + df * b;\n          te[4] = de * b - cf;\n          te[8] = a * d;\n          te[1] = a * f2;\n          te[5] = a * e;\n          te[9] = -b;\n          te[2] = cf * b - de;\n          te[6] = df + ce * b;\n          te[10] = a * c;\n        } else if (euler.order === \"ZXY\") {\n          const ce = c * e, cf = c * f2, de = d * e, df = d * f2;\n          te[0] = ce - df * b;\n          te[4] = -a * f2;\n          te[8] = de + cf * b;\n          te[1] = cf + de * b;\n          te[5] = a * e;\n          te[9] = df - ce * b;\n          te[2] = -a * d;\n          te[6] = b;\n          te[10] = a * c;\n        } else if (euler.order === \"ZYX\") {\n          const ae = a * e, af = a * f2, be = b * e, bf = b * f2;\n          te[0] = c * e;\n          te[4] = be * d - af;\n          te[8] = ae * d + bf;\n          te[1] = c * f2;\n          te[5] = bf * d + ae;\n          te[9] = af * d - be;\n          te[2] = -d;\n          te[6] = b * c;\n          te[10] = a * c;\n        } else if (euler.order === \"YZX\") {\n          const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n          te[0] = c * e;\n          te[4] = bd - ac * f2;\n          te[8] = bc * f2 + ad;\n          te[1] = f2;\n          te[5] = a * e;\n          te[9] = -b * e;\n          te[2] = -d * e;\n          te[6] = ad * f2 + bc;\n          te[10] = ac - bd * f2;\n        } else if (euler.order === \"XZY\") {\n          const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n          te[0] = c * e;\n          te[4] = -f2;\n          te[8] = d * e;\n          te[1] = ac * f2 + bd;\n          te[5] = a * e;\n          te[9] = ad * f2 - bc;\n          te[2] = bc * f2 - ad;\n          te[6] = b * e;\n          te[10] = bd * f2 + ac;\n        }\n        te[3] = 0;\n        te[7] = 0;\n        te[11] = 0;\n        te[12] = 0;\n        te[13] = 0;\n        te[14] = 0;\n        te[15] = 1;\n        return this;\n      }\n      makeRotationFromQuaternion(q3) {\n        return this.compose(_zero, q3, _one);\n      }\n      lookAt(eye, target2, up) {\n        const te = this.elements;\n        _z.subVectors(eye, target2);\n        if (_z.lengthSq() === 0) {\n          _z.z = 1;\n        }\n        _z.normalize();\n        _x.crossVectors(up, _z);\n        if (_x.lengthSq() === 0) {\n          if (Math.abs(up.z) === 1) {\n            _z.x += 1e-4;\n          } else {\n            _z.z += 1e-4;\n          }\n          _z.normalize();\n          _x.crossVectors(up, _z);\n        }\n        _x.normalize();\n        _y.crossVectors(_z, _x);\n        te[0] = _x.x;\n        te[4] = _y.x;\n        te[8] = _z.x;\n        te[1] = _x.y;\n        te[5] = _y.y;\n        te[9] = _z.y;\n        te[2] = _x.z;\n        te[6] = _y.z;\n        te[10] = _z.z;\n        return this;\n      }\n      multiply(m) {\n        return this.multiplyMatrices(this, m);\n      }\n      premultiply(m) {\n        return this.multiplyMatrices(m, this);\n      }\n      multiplyMatrices(a, b) {\n        const ae = a.elements;\n        const be = b.elements;\n        const te = this.elements;\n        const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n        const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n        const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n        const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n        const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n        const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n        const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n        const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n        te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n        te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n        te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n        te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n        te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n        te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n        te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n        te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n        te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n        te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n        te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n        te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n        te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n        te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n        te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n        te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n        return this;\n      }\n      multiplyScalar(s) {\n        const te = this.elements;\n        te[0] *= s;\n        te[4] *= s;\n        te[8] *= s;\n        te[12] *= s;\n        te[1] *= s;\n        te[5] *= s;\n        te[9] *= s;\n        te[13] *= s;\n        te[2] *= s;\n        te[6] *= s;\n        te[10] *= s;\n        te[14] *= s;\n        te[3] *= s;\n        te[7] *= s;\n        te[11] *= s;\n        te[15] *= s;\n        return this;\n      }\n      determinant() {\n        const te = this.elements;\n        const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\n        const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\n        const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\n        const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\n        return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n      }\n      transpose() {\n        const te = this.elements;\n        let tmp2;\n        tmp2 = te[1];\n        te[1] = te[4];\n        te[4] = tmp2;\n        tmp2 = te[2];\n        te[2] = te[8];\n        te[8] = tmp2;\n        tmp2 = te[6];\n        te[6] = te[9];\n        te[9] = tmp2;\n        tmp2 = te[3];\n        te[3] = te[12];\n        te[12] = tmp2;\n        tmp2 = te[7];\n        te[7] = te[13];\n        te[13] = tmp2;\n        tmp2 = te[11];\n        te[11] = te[14];\n        te[14] = tmp2;\n        return this;\n      }\n      setPosition(x, y2, z2) {\n        const te = this.elements;\n        if (x.isVector3) {\n          te[12] = x.x;\n          te[13] = x.y;\n          te[14] = x.z;\n        } else {\n          te[12] = x;\n          te[13] = y2;\n          te[14] = z2;\n        }\n        return this;\n      }\n      invert() {\n        const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n        const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n        if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n        const detInv = 1 / det;\n        te[0] = t11 * detInv;\n        te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n        te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n        te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n        te[4] = t12 * detInv;\n        te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n        te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n        te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n        te[8] = t13 * detInv;\n        te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n        te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n        te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n        te[12] = t14 * detInv;\n        te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n        te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n        te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n        return this;\n      }\n      scale(v2) {\n        const te = this.elements;\n        const x = v2.x, y2 = v2.y, z2 = v2.z;\n        te[0] *= x;\n        te[4] *= y2;\n        te[8] *= z2;\n        te[1] *= x;\n        te[5] *= y2;\n        te[9] *= z2;\n        te[2] *= x;\n        te[6] *= y2;\n        te[10] *= z2;\n        te[3] *= x;\n        te[7] *= y2;\n        te[11] *= z2;\n        return this;\n      }\n      getMaxScaleOnAxis() {\n        const te = this.elements;\n        const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n        const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n        const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n        return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n      }\n      makeTranslation(x, y2, z2) {\n        if (x.isVector3) {\n          this.set(\n            1,\n            0,\n            0,\n            x.x,\n            0,\n            1,\n            0,\n            x.y,\n            0,\n            0,\n            1,\n            x.z,\n            0,\n            0,\n            0,\n            1\n          );\n        } else {\n          this.set(\n            1,\n            0,\n            0,\n            x,\n            0,\n            1,\n            0,\n            y2,\n            0,\n            0,\n            1,\n            z2,\n            0,\n            0,\n            0,\n            1\n          );\n        }\n        return this;\n      }\n      makeRotationX(theta) {\n        const c = Math.cos(theta), s = Math.sin(theta);\n        this.set(\n          1,\n          0,\n          0,\n          0,\n          0,\n          c,\n          -s,\n          0,\n          0,\n          s,\n          c,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      makeRotationY(theta) {\n        const c = Math.cos(theta), s = Math.sin(theta);\n        this.set(\n          c,\n          0,\n          s,\n          0,\n          0,\n          1,\n          0,\n          0,\n          -s,\n          0,\n          c,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      makeRotationZ(theta) {\n        const c = Math.cos(theta), s = Math.sin(theta);\n        this.set(\n          c,\n          -s,\n          0,\n          0,\n          s,\n          c,\n          0,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      makeRotationAxis(axis, angle) {\n        const c = Math.cos(angle);\n        const s = Math.sin(angle);\n        const t2 = 1 - c;\n        const x = axis.x, y2 = axis.y, z2 = axis.z;\n        const tx = t2 * x, ty = t2 * y2;\n        this.set(\n          tx * x + c,\n          tx * y2 - s * z2,\n          tx * z2 + s * y2,\n          0,\n          tx * y2 + s * z2,\n          ty * y2 + c,\n          ty * z2 - s * x,\n          0,\n          tx * z2 - s * y2,\n          ty * z2 + s * x,\n          t2 * z2 * z2 + c,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      makeScale(x, y2, z2) {\n        this.set(\n          x,\n          0,\n          0,\n          0,\n          0,\n          y2,\n          0,\n          0,\n          0,\n          0,\n          z2,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      makeShear(xy, xz, yx, yz, zx, zy) {\n        this.set(\n          1,\n          yx,\n          zx,\n          0,\n          xy,\n          1,\n          zy,\n          0,\n          xz,\n          yz,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      compose(position, quaternion, scale) {\n        const te = this.elements;\n        const x = quaternion._x, y2 = quaternion._y, z2 = quaternion._z, w = quaternion._w;\n        const x2 = x + x, y22 = y2 + y2, z22 = z2 + z2;\n        const xx = x * x2, xy = x * y22, xz = x * z22;\n        const yy = y2 * y22, yz = y2 * z22, zz = z2 * z22;\n        const wx = w * x2, wy = w * y22, wz = w * z22;\n        const sx = scale.x, sy = scale.y, sz = scale.z;\n        te[0] = (1 - (yy + zz)) * sx;\n        te[1] = (xy + wz) * sx;\n        te[2] = (xz - wy) * sx;\n        te[3] = 0;\n        te[4] = (xy - wz) * sy;\n        te[5] = (1 - (xx + zz)) * sy;\n        te[6] = (yz + wx) * sy;\n        te[7] = 0;\n        te[8] = (xz + wy) * sz;\n        te[9] = (yz - wx) * sz;\n        te[10] = (1 - (xx + yy)) * sz;\n        te[11] = 0;\n        te[12] = position.x;\n        te[13] = position.y;\n        te[14] = position.z;\n        te[15] = 1;\n        return this;\n      }\n      decompose(position, quaternion, scale) {\n        const te = this.elements;\n        let sx = _v1$5.set(te[0], te[1], te[2]).length();\n        const sy = _v1$5.set(te[4], te[5], te[6]).length();\n        const sz = _v1$5.set(te[8], te[9], te[10]).length();\n        const det = this.determinant();\n        if (det < 0) sx = -sx;\n        position.x = te[12];\n        position.y = te[13];\n        position.z = te[14];\n        _m1$4.copy(this);\n        const invSX = 1 / sx;\n        const invSY = 1 / sy;\n        const invSZ = 1 / sz;\n        _m1$4.elements[0] *= invSX;\n        _m1$4.elements[1] *= invSX;\n        _m1$4.elements[2] *= invSX;\n        _m1$4.elements[4] *= invSY;\n        _m1$4.elements[5] *= invSY;\n        _m1$4.elements[6] *= invSY;\n        _m1$4.elements[8] *= invSZ;\n        _m1$4.elements[9] *= invSZ;\n        _m1$4.elements[10] *= invSZ;\n        quaternion.setFromRotationMatrix(_m1$4);\n        scale.x = sx;\n        scale.y = sy;\n        scale.z = sz;\n        return this;\n      }\n      makePerspective(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\n        const te = this.elements;\n        const x = 2 * near / (right - left);\n        const y2 = 2 * near / (top - bottom);\n        const a = (right + left) / (right - left);\n        const b = (top + bottom) / (top - bottom);\n        let c, d;\n        if (coordinateSystem === WebGLCoordinateSystem) {\n          c = -(far + near) / (far - near);\n          d = -2 * far * near / (far - near);\n        } else if (coordinateSystem === WebGPUCoordinateSystem) {\n          c = -far / (far - near);\n          d = -far * near / (far - near);\n        } else {\n          throw new Error(\"THREE.Matrix4.makePerspective(): Invalid coordinate system: \" + coordinateSystem);\n        }\n        te[0] = x;\n        te[4] = 0;\n        te[8] = a;\n        te[12] = 0;\n        te[1] = 0;\n        te[5] = y2;\n        te[9] = b;\n        te[13] = 0;\n        te[2] = 0;\n        te[6] = 0;\n        te[10] = c;\n        te[14] = d;\n        te[3] = 0;\n        te[7] = 0;\n        te[11] = -1;\n        te[15] = 0;\n        return this;\n      }\n      makeOrthographic(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\n        const te = this.elements;\n        const w = 1 / (right - left);\n        const h2 = 1 / (top - bottom);\n        const p3 = 1 / (far - near);\n        const x = (right + left) * w;\n        const y2 = (top + bottom) * h2;\n        let z2, zInv;\n        if (coordinateSystem === WebGLCoordinateSystem) {\n          z2 = (far + near) * p3;\n          zInv = -2 * p3;\n        } else if (coordinateSystem === WebGPUCoordinateSystem) {\n          z2 = near * p3;\n          zInv = -1 * p3;\n        } else {\n          throw new Error(\"THREE.Matrix4.makeOrthographic(): Invalid coordinate system: \" + coordinateSystem);\n        }\n        te[0] = 2 * w;\n        te[4] = 0;\n        te[8] = 0;\n        te[12] = -x;\n        te[1] = 0;\n        te[5] = 2 * h2;\n        te[9] = 0;\n        te[13] = -y2;\n        te[2] = 0;\n        te[6] = 0;\n        te[10] = zInv;\n        te[14] = -z2;\n        te[3] = 0;\n        te[7] = 0;\n        te[11] = 0;\n        te[15] = 1;\n        return this;\n      }\n      equals(matrix2) {\n        const te = this.elements;\n        const me = matrix2.elements;\n        for (let i2 = 0; i2 < 16; i2++) {\n          if (te[i2] !== me[i2]) return false;\n        }\n        return true;\n      }\n      fromArray(array, offset = 0) {\n        for (let i2 = 0; i2 < 16; i2++) {\n          this.elements[i2] = array[i2 + offset];\n        }\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        const te = this.elements;\n        array[offset] = te[0];\n        array[offset + 1] = te[1];\n        array[offset + 2] = te[2];\n        array[offset + 3] = te[3];\n        array[offset + 4] = te[4];\n        array[offset + 5] = te[5];\n        array[offset + 6] = te[6];\n        array[offset + 7] = te[7];\n        array[offset + 8] = te[8];\n        array[offset + 9] = te[9];\n        array[offset + 10] = te[10];\n        array[offset + 11] = te[11];\n        array[offset + 12] = te[12];\n        array[offset + 13] = te[13];\n        array[offset + 14] = te[14];\n        array[offset + 15] = te[15];\n        return array;\n      }\n    };\n    _v1$5 = /* @__PURE__ */ new Vector3();\n    _m1$4 = /* @__PURE__ */ new Matrix4();\n    _zero = /* @__PURE__ */ new Vector3(0, 0, 0);\n    _one = /* @__PURE__ */ new Vector3(1, 1, 1);\n    _x = /* @__PURE__ */ new Vector3();\n    _y = /* @__PURE__ */ new Vector3();\n    _z = /* @__PURE__ */ new Vector3();\n    _matrix$2 = /* @__PURE__ */ new Matrix4();\n    _quaternion$3 = /* @__PURE__ */ new Quaternion();\n    Euler = class _Euler {\n      constructor(x = 0, y2 = 0, z2 = 0, order = _Euler.DEFAULT_ORDER) {\n        this.isEuler = true;\n        this._x = x;\n        this._y = y2;\n        this._z = z2;\n        this._order = order;\n      }\n      get x() {\n        return this._x;\n      }\n      set x(value) {\n        this._x = value;\n        this._onChangeCallback();\n      }\n      get y() {\n        return this._y;\n      }\n      set y(value) {\n        this._y = value;\n        this._onChangeCallback();\n      }\n      get z() {\n        return this._z;\n      }\n      set z(value) {\n        this._z = value;\n        this._onChangeCallback();\n      }\n      get order() {\n        return this._order;\n      }\n      set order(value) {\n        this._order = value;\n        this._onChangeCallback();\n      }\n      set(x, y2, z2, order = this._order) {\n        this._x = x;\n        this._y = y2;\n        this._z = z2;\n        this._order = order;\n        this._onChangeCallback();\n        return this;\n      }\n      clone() {\n        return new this.constructor(this._x, this._y, this._z, this._order);\n      }\n      copy(euler) {\n        this._x = euler._x;\n        this._y = euler._y;\n        this._z = euler._z;\n        this._order = euler._order;\n        this._onChangeCallback();\n        return this;\n      }\n      setFromRotationMatrix(m, order = this._order, update = true) {\n        const te = m.elements;\n        const m11 = te[0], m12 = te[4], m13 = te[8];\n        const m21 = te[1], m22 = te[5], m23 = te[9];\n        const m31 = te[2], m32 = te[6], m33 = te[10];\n        switch (order) {\n          case \"XYZ\":\n            this._y = Math.asin(clamp(m13, -1, 1));\n            if (Math.abs(m13) < 0.9999999) {\n              this._x = Math.atan2(-m23, m33);\n              this._z = Math.atan2(-m12, m11);\n            } else {\n              this._x = Math.atan2(m32, m22);\n              this._z = 0;\n            }\n            break;\n          case \"YXZ\":\n            this._x = Math.asin(-clamp(m23, -1, 1));\n            if (Math.abs(m23) < 0.9999999) {\n              this._y = Math.atan2(m13, m33);\n              this._z = Math.atan2(m21, m22);\n            } else {\n              this._y = Math.atan2(-m31, m11);\n              this._z = 0;\n            }\n            break;\n          case \"ZXY\":\n            this._x = Math.asin(clamp(m32, -1, 1));\n            if (Math.abs(m32) < 0.9999999) {\n              this._y = Math.atan2(-m31, m33);\n              this._z = Math.atan2(-m12, m22);\n            } else {\n              this._y = 0;\n              this._z = Math.atan2(m21, m11);\n            }\n            break;\n          case \"ZYX\":\n            this._y = Math.asin(-clamp(m31, -1, 1));\n            if (Math.abs(m31) < 0.9999999) {\n              this._x = Math.atan2(m32, m33);\n              this._z = Math.atan2(m21, m11);\n            } else {\n              this._x = 0;\n              this._z = Math.atan2(-m12, m22);\n            }\n            break;\n          case \"YZX\":\n            this._z = Math.asin(clamp(m21, -1, 1));\n            if (Math.abs(m21) < 0.9999999) {\n              this._x = Math.atan2(-m23, m22);\n              this._y = Math.atan2(-m31, m11);\n            } else {\n              this._x = 0;\n              this._y = Math.atan2(m13, m33);\n            }\n            break;\n          case \"XZY\":\n            this._z = Math.asin(-clamp(m12, -1, 1));\n            if (Math.abs(m12) < 0.9999999) {\n              this._x = Math.atan2(m32, m22);\n              this._y = Math.atan2(m13, m11);\n            } else {\n              this._x = Math.atan2(-m23, m33);\n              this._y = 0;\n            }\n            break;\n          default:\n            console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + order);\n        }\n        this._order = order;\n        if (update === true) this._onChangeCallback();\n        return this;\n      }\n      setFromQuaternion(q3, order, update) {\n        _matrix$2.makeRotationFromQuaternion(q3);\n        return this.setFromRotationMatrix(_matrix$2, order, update);\n      }\n      setFromVector3(v2, order = this._order) {\n        return this.set(v2.x, v2.y, v2.z, order);\n      }\n      reorder(newOrder) {\n        _quaternion$3.setFromEuler(this);\n        return this.setFromQuaternion(_quaternion$3, newOrder);\n      }\n      equals(euler) {\n        return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n      }\n      fromArray(array) {\n        this._x = array[0];\n        this._y = array[1];\n        this._z = array[2];\n        if (array[3] !== void 0) this._order = array[3];\n        this._onChangeCallback();\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        array[offset] = this._x;\n        array[offset + 1] = this._y;\n        array[offset + 2] = this._z;\n        array[offset + 3] = this._order;\n        return array;\n      }\n      _onChange(callback) {\n        this._onChangeCallback = callback;\n        return this;\n      }\n      _onChangeCallback() {\n      }\n      *[Symbol.iterator]() {\n        yield this._x;\n        yield this._y;\n        yield this._z;\n        yield this._order;\n      }\n    };\n    Euler.DEFAULT_ORDER = \"XYZ\";\n    Layers = class {\n      constructor() {\n        this.mask = 1 | 0;\n      }\n      set(channel) {\n        this.mask = (1 << channel | 0) >>> 0;\n      }\n      enable(channel) {\n        this.mask |= 1 << channel | 0;\n      }\n      enableAll() {\n        this.mask = 4294967295 | 0;\n      }\n      toggle(channel) {\n        this.mask ^= 1 << channel | 0;\n      }\n      disable(channel) {\n        this.mask &= ~(1 << channel | 0);\n      }\n      disableAll() {\n        this.mask = 0;\n      }\n      test(layers) {\n        return (this.mask & layers.mask) !== 0;\n      }\n      isEnabled(channel) {\n        return (this.mask & (1 << channel | 0)) !== 0;\n      }\n    };\n    _object3DId = 0;\n    _v1$4 = /* @__PURE__ */ new Vector3();\n    _q1 = /* @__PURE__ */ new Quaternion();\n    _m1$3 = /* @__PURE__ */ new Matrix4();\n    _target = /* @__PURE__ */ new Vector3();\n    _position$3 = /* @__PURE__ */ new Vector3();\n    _scale$2 = /* @__PURE__ */ new Vector3();\n    _quaternion$2 = /* @__PURE__ */ new Quaternion();\n    _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0);\n    _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0);\n    _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1);\n    _addedEvent = { type: \"added\" };\n    _removedEvent = { type: \"removed\" };\n    _childaddedEvent = { type: \"childadded\", child: null };\n    _childremovedEvent = { type: \"childremoved\", child: null };\n    Object3D = class _Object3D extends EventDispatcher {\n      constructor() {\n        super();\n        this.isObject3D = true;\n        Object.defineProperty(this, \"id\", { value: _object3DId++ });\n        this.uuid = generateUUID();\n        this.name = \"\";\n        this.type = \"Object3D\";\n        this.parent = null;\n        this.children = [];\n        this.up = _Object3D.DEFAULT_UP.clone();\n        const position = new Vector3();\n        const rotation = new Euler();\n        const quaternion = new Quaternion();\n        const scale = new Vector3(1, 1, 1);\n        function onRotationChange() {\n          quaternion.setFromEuler(rotation, false);\n        }\n        function onQuaternionChange() {\n          rotation.setFromQuaternion(quaternion, void 0, false);\n        }\n        rotation._onChange(onRotationChange);\n        quaternion._onChange(onQuaternionChange);\n        Object.defineProperties(this, {\n          position: {\n            configurable: true,\n            enumerable: true,\n            value: position\n          },\n          rotation: {\n            configurable: true,\n            enumerable: true,\n            value: rotation\n          },\n          quaternion: {\n            configurable: true,\n            enumerable: true,\n            value: quaternion\n          },\n          scale: {\n            configurable: true,\n            enumerable: true,\n            value: scale\n          },\n          modelViewMatrix: {\n            value: new Matrix4()\n          },\n          normalMatrix: {\n            value: new Matrix3()\n          }\n        });\n        this.matrix = new Matrix4();\n        this.matrixWorld = new Matrix4();\n        this.matrixAutoUpdate = _Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n        this.matrixWorldAutoUpdate = _Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE;\n        this.matrixWorldNeedsUpdate = false;\n        this.layers = new Layers();\n        this.visible = true;\n        this.castShadow = false;\n        this.receiveShadow = false;\n        this.frustumCulled = true;\n        this.renderOrder = 0;\n        this.animations = [];\n        this.userData = {};\n      }\n      onBeforeShadow() {\n      }\n      onAfterShadow() {\n      }\n      onBeforeRender() {\n      }\n      onAfterRender() {\n      }\n      applyMatrix4(matrix2) {\n        if (this.matrixAutoUpdate) this.updateMatrix();\n        this.matrix.premultiply(matrix2);\n        this.matrix.decompose(this.position, this.quaternion, this.scale);\n      }\n      applyQuaternion(q3) {\n        this.quaternion.premultiply(q3);\n        return this;\n      }\n      setRotationFromAxisAngle(axis, angle) {\n        this.quaternion.setFromAxisAngle(axis, angle);\n      }\n      setRotationFromEuler(euler) {\n        this.quaternion.setFromEuler(euler, true);\n      }\n      setRotationFromMatrix(m) {\n        this.quaternion.setFromRotationMatrix(m);\n      }\n      setRotationFromQuaternion(q3) {\n        this.quaternion.copy(q3);\n      }\n      rotateOnAxis(axis, angle) {\n        _q1.setFromAxisAngle(axis, angle);\n        this.quaternion.multiply(_q1);\n        return this;\n      }\n      rotateOnWorldAxis(axis, angle) {\n        _q1.setFromAxisAngle(axis, angle);\n        this.quaternion.premultiply(_q1);\n        return this;\n      }\n      rotateX(angle) {\n        return this.rotateOnAxis(_xAxis, angle);\n      }\n      rotateY(angle) {\n        return this.rotateOnAxis(_yAxis, angle);\n      }\n      rotateZ(angle) {\n        return this.rotateOnAxis(_zAxis, angle);\n      }\n      translateOnAxis(axis, distance) {\n        _v1$4.copy(axis).applyQuaternion(this.quaternion);\n        this.position.add(_v1$4.multiplyScalar(distance));\n        return this;\n      }\n      translateX(distance) {\n        return this.translateOnAxis(_xAxis, distance);\n      }\n      translateY(distance) {\n        return this.translateOnAxis(_yAxis, distance);\n      }\n      translateZ(distance) {\n        return this.translateOnAxis(_zAxis, distance);\n      }\n      localToWorld(vector) {\n        this.updateWorldMatrix(true, false);\n        return vector.applyMatrix4(this.matrixWorld);\n      }\n      worldToLocal(vector) {\n        this.updateWorldMatrix(true, false);\n        return vector.applyMatrix4(_m1$3.copy(this.matrixWorld).invert());\n      }\n      lookAt(x, y2, z2) {\n        if (x.isVector3) {\n          _target.copy(x);\n        } else {\n          _target.set(x, y2, z2);\n        }\n        const parent = this.parent;\n        this.updateWorldMatrix(true, false);\n        _position$3.setFromMatrixPosition(this.matrixWorld);\n        if (this.isCamera || this.isLight) {\n          _m1$3.lookAt(_position$3, _target, this.up);\n        } else {\n          _m1$3.lookAt(_target, _position$3, this.up);\n        }\n        this.quaternion.setFromRotationMatrix(_m1$3);\n        if (parent) {\n          _m1$3.extractRotation(parent.matrixWorld);\n          _q1.setFromRotationMatrix(_m1$3);\n          this.quaternion.premultiply(_q1.invert());\n        }\n      }\n      add(object) {\n        if (arguments.length > 1) {\n          for (let i2 = 0; i2 < arguments.length; i2++) {\n            this.add(arguments[i2]);\n          }\n          return this;\n        }\n        if (object === this) {\n          console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n          return this;\n        }\n        if (object && object.isObject3D) {\n          object.removeFromParent();\n          object.parent = this;\n          this.children.push(object);\n          object.dispatchEvent(_addedEvent);\n          _childaddedEvent.child = object;\n          this.dispatchEvent(_childaddedEvent);\n          _childaddedEvent.child = null;\n        } else {\n          console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n        }\n        return this;\n      }\n      remove(object) {\n        if (arguments.length > 1) {\n          for (let i2 = 0; i2 < arguments.length; i2++) {\n            this.remove(arguments[i2]);\n          }\n          return this;\n        }\n        const index = this.children.indexOf(object);\n        if (index !== -1) {\n          object.parent = null;\n          this.children.splice(index, 1);\n          object.dispatchEvent(_removedEvent);\n          _childremovedEvent.child = object;\n          this.dispatchEvent(_childremovedEvent);\n          _childremovedEvent.child = null;\n        }\n        return this;\n      }\n      removeFromParent() {\n        const parent = this.parent;\n        if (parent !== null) {\n          parent.remove(this);\n        }\n        return this;\n      }\n      clear() {\n        return this.remove(...this.children);\n      }\n      attach(object) {\n        this.updateWorldMatrix(true, false);\n        _m1$3.copy(this.matrixWorld).invert();\n        if (object.parent !== null) {\n          object.parent.updateWorldMatrix(true, false);\n          _m1$3.multiply(object.parent.matrixWorld);\n        }\n        object.applyMatrix4(_m1$3);\n        object.removeFromParent();\n        object.parent = this;\n        this.children.push(object);\n        object.updateWorldMatrix(false, true);\n        object.dispatchEvent(_addedEvent);\n        _childaddedEvent.child = object;\n        this.dispatchEvent(_childaddedEvent);\n        _childaddedEvent.child = null;\n        return this;\n      }\n      getObjectById(id) {\n        return this.getObjectByProperty(\"id\", id);\n      }\n      getObjectByName(name) {\n        return this.getObjectByProperty(\"name\", name);\n      }\n      getObjectByProperty(name, value) {\n        if (this[name] === value) return this;\n        for (let i2 = 0, l2 = this.children.length; i2 < l2; i2++) {\n          const child = this.children[i2];\n          const object = child.getObjectByProperty(name, value);\n          if (object !== void 0) {\n            return object;\n          }\n        }\n        return void 0;\n      }\n      getObjectsByProperty(name, value, result = []) {\n        if (this[name] === value) result.push(this);\n        const children = this.children;\n        for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n          children[i2].getObjectsByProperty(name, value, result);\n        }\n        return result;\n      }\n      getWorldPosition(target2) {\n        this.updateWorldMatrix(true, false);\n        return target2.setFromMatrixPosition(this.matrixWorld);\n      }\n      getWorldQuaternion(target2) {\n        this.updateWorldMatrix(true, false);\n        this.matrixWorld.decompose(_position$3, target2, _scale$2);\n        return target2;\n      }\n      getWorldScale(target2) {\n        this.updateWorldMatrix(true, false);\n        this.matrixWorld.decompose(_position$3, _quaternion$2, target2);\n        return target2;\n      }\n      getWorldDirection(target2) {\n        this.updateWorldMatrix(true, false);\n        const e = this.matrixWorld.elements;\n        return target2.set(e[8], e[9], e[10]).normalize();\n      }\n      raycast() {\n      }\n      traverse(callback) {\n        callback(this);\n        const children = this.children;\n        for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n          children[i2].traverse(callback);\n        }\n      }\n      traverseVisible(callback) {\n        if (this.visible === false) return;\n        callback(this);\n        const children = this.children;\n        for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n          children[i2].traverseVisible(callback);\n        }\n      }\n      traverseAncestors(callback) {\n        const parent = this.parent;\n        if (parent !== null) {\n          callback(parent);\n          parent.traverseAncestors(callback);\n        }\n      }\n      updateMatrix() {\n        this.matrix.compose(this.position, this.quaternion, this.scale);\n        this.matrixWorldNeedsUpdate = true;\n      }\n      updateMatrixWorld(force) {\n        if (this.matrixAutoUpdate) this.updateMatrix();\n        if (this.matrixWorldNeedsUpdate || force) {\n          if (this.matrixWorldAutoUpdate === true) {\n            if (this.parent === null) {\n              this.matrixWorld.copy(this.matrix);\n            } else {\n              this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n            }\n          }\n          this.matrixWorldNeedsUpdate = false;\n          force = true;\n        }\n        const children = this.children;\n        for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n          const child = children[i2];\n          child.updateMatrixWorld(force);\n        }\n      }\n      updateWorldMatrix(updateParents, updateChildren) {\n        const parent = this.parent;\n        if (updateParents === true && parent !== null) {\n          parent.updateWorldMatrix(true, false);\n        }\n        if (this.matrixAutoUpdate) this.updateMatrix();\n        if (this.matrixWorldAutoUpdate === true) {\n          if (this.parent === null) {\n            this.matrixWorld.copy(this.matrix);\n          } else {\n            this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n          }\n        }\n        if (updateChildren === true) {\n          const children = this.children;\n          for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n            const child = children[i2];\n            child.updateWorldMatrix(false, true);\n          }\n        }\n      }\n      toJSON(meta) {\n        const isRootObject = meta === void 0 || typeof meta === \"string\";\n        const output = {};\n        if (isRootObject) {\n          meta = {\n            geometries: {},\n            materials: {},\n            textures: {},\n            images: {},\n            shapes: {},\n            skeletons: {},\n            animations: {},\n            nodes: {}\n          };\n          output.metadata = {\n            version: 4.6,\n            type: \"Object\",\n            generator: \"Object3D.toJSON\"\n          };\n        }\n        const object = {};\n        object.uuid = this.uuid;\n        object.type = this.type;\n        if (this.name !== \"\") object.name = this.name;\n        if (this.castShadow === true) object.castShadow = true;\n        if (this.receiveShadow === true) object.receiveShadow = true;\n        if (this.visible === false) object.visible = false;\n        if (this.frustumCulled === false) object.frustumCulled = false;\n        if (this.renderOrder !== 0) object.renderOrder = this.renderOrder;\n        if (Object.keys(this.userData).length > 0) object.userData = this.userData;\n        object.layers = this.layers.mask;\n        object.matrix = this.matrix.toArray();\n        object.up = this.up.toArray();\n        if (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false;\n        if (this.isInstancedMesh) {\n          object.type = \"InstancedMesh\";\n          object.count = this.count;\n          object.instanceMatrix = this.instanceMatrix.toJSON();\n          if (this.instanceColor !== null) object.instanceColor = this.instanceColor.toJSON();\n        }\n        if (this.isBatchedMesh) {\n          object.type = \"BatchedMesh\";\n          object.perObjectFrustumCulled = this.perObjectFrustumCulled;\n          object.sortObjects = this.sortObjects;\n          object.drawRanges = this._drawRanges;\n          object.reservedRanges = this._reservedRanges;\n          object.visibility = this._visibility;\n          object.active = this._active;\n          object.bounds = this._bounds.map((bound) => ({\n            boxInitialized: bound.boxInitialized,\n            boxMin: bound.box.min.toArray(),\n            boxMax: bound.box.max.toArray(),\n            sphereInitialized: bound.sphereInitialized,\n            sphereRadius: bound.sphere.radius,\n            sphereCenter: bound.sphere.center.toArray()\n          }));\n          object.maxInstanceCount = this._maxInstanceCount;\n          object.maxVertexCount = this._maxVertexCount;\n          object.maxIndexCount = this._maxIndexCount;\n          object.geometryInitialized = this._geometryInitialized;\n          object.geometryCount = this._geometryCount;\n          object.matricesTexture = this._matricesTexture.toJSON(meta);\n          if (this._colorsTexture !== null) object.colorsTexture = this._colorsTexture.toJSON(meta);\n          if (this.boundingSphere !== null) {\n            object.boundingSphere = {\n              center: object.boundingSphere.center.toArray(),\n              radius: object.boundingSphere.radius\n            };\n          }\n          if (this.boundingBox !== null) {\n            object.boundingBox = {\n              min: object.boundingBox.min.toArray(),\n              max: object.boundingBox.max.toArray()\n            };\n          }\n        }\n        function serialize(library, element) {\n          if (library[element.uuid] === void 0) {\n            library[element.uuid] = element.toJSON(meta);\n          }\n          return element.uuid;\n        }\n        if (this.isScene) {\n          if (this.background) {\n            if (this.background.isColor) {\n              object.background = this.background.toJSON();\n            } else if (this.background.isTexture) {\n              object.background = this.background.toJSON(meta).uuid;\n            }\n          }\n          if (this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true) {\n            object.environment = this.environment.toJSON(meta).uuid;\n          }\n        } else if (this.isMesh || this.isLine || this.isPoints) {\n          object.geometry = serialize(meta.geometries, this.geometry);\n          const parameters = this.geometry.parameters;\n          if (parameters !== void 0 && parameters.shapes !== void 0) {\n            const shapes = parameters.shapes;\n            if (Array.isArray(shapes)) {\n              for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n                const shape = shapes[i2];\n                serialize(meta.shapes, shape);\n              }\n            } else {\n              serialize(meta.shapes, shapes);\n            }\n          }\n        }\n        if (this.isSkinnedMesh) {\n          object.bindMode = this.bindMode;\n          object.bindMatrix = this.bindMatrix.toArray();\n          if (this.skeleton !== void 0) {\n            serialize(meta.skeletons, this.skeleton);\n            object.skeleton = this.skeleton.uuid;\n          }\n        }\n        if (this.material !== void 0) {\n          if (Array.isArray(this.material)) {\n            const uuids = [];\n            for (let i2 = 0, l2 = this.material.length; i2 < l2; i2++) {\n              uuids.push(serialize(meta.materials, this.material[i2]));\n            }\n            object.material = uuids;\n          } else {\n            object.material = serialize(meta.materials, this.material);\n          }\n        }\n        if (this.children.length > 0) {\n          object.children = [];\n          for (let i2 = 0; i2 < this.children.length; i2++) {\n            object.children.push(this.children[i2].toJSON(meta).object);\n          }\n        }\n        if (this.animations.length > 0) {\n          object.animations = [];\n          for (let i2 = 0; i2 < this.animations.length; i2++) {\n            const animation = this.animations[i2];\n            object.animations.push(serialize(meta.animations, animation));\n          }\n        }\n        if (isRootObject) {\n          const geometries = extractFromCache(meta.geometries);\n          const materials = extractFromCache(meta.materials);\n          const textures = extractFromCache(meta.textures);\n          const images = extractFromCache(meta.images);\n          const shapes = extractFromCache(meta.shapes);\n          const skeletons = extractFromCache(meta.skeletons);\n          const animations = extractFromCache(meta.animations);\n          const nodes = extractFromCache(meta.nodes);\n          if (geometries.length > 0) output.geometries = geometries;\n          if (materials.length > 0) output.materials = materials;\n          if (textures.length > 0) output.textures = textures;\n          if (images.length > 0) output.images = images;\n          if (shapes.length > 0) output.shapes = shapes;\n          if (skeletons.length > 0) output.skeletons = skeletons;\n          if (animations.length > 0) output.animations = animations;\n          if (nodes.length > 0) output.nodes = nodes;\n        }\n        output.object = object;\n        return output;\n        function extractFromCache(cache) {\n          const values = [];\n          for (const key in cache) {\n            const data = cache[key];\n            delete data.metadata;\n            values.push(data);\n          }\n          return values;\n        }\n      }\n      clone(recursive) {\n        return new this.constructor().copy(this, recursive);\n      }\n      copy(source, recursive = true) {\n        this.name = source.name;\n        this.up.copy(source.up);\n        this.position.copy(source.position);\n        this.rotation.order = source.rotation.order;\n        this.quaternion.copy(source.quaternion);\n        this.scale.copy(source.scale);\n        this.matrix.copy(source.matrix);\n        this.matrixWorld.copy(source.matrixWorld);\n        this.matrixAutoUpdate = source.matrixAutoUpdate;\n        this.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n        this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n        this.layers.mask = source.layers.mask;\n        this.visible = source.visible;\n        this.castShadow = source.castShadow;\n        this.receiveShadow = source.receiveShadow;\n        this.frustumCulled = source.frustumCulled;\n        this.renderOrder = source.renderOrder;\n        this.animations = source.animations.slice();\n        this.userData = JSON.parse(JSON.stringify(source.userData));\n        if (recursive === true) {\n          for (let i2 = 0; i2 < source.children.length; i2++) {\n            const child = source.children[i2];\n            this.add(child.clone());\n          }\n        }\n        return this;\n      }\n    };\n    Object3D.DEFAULT_UP = /* @__PURE__ */ new Vector3(0, 1, 0);\n    Object3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\n    Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n    _v0$2 = /* @__PURE__ */ new Vector3();\n    _v1$3 = /* @__PURE__ */ new Vector3();\n    _v2$2 = /* @__PURE__ */ new Vector3();\n    _v3$2 = /* @__PURE__ */ new Vector3();\n    _vab = /* @__PURE__ */ new Vector3();\n    _vac = /* @__PURE__ */ new Vector3();\n    _vbc = /* @__PURE__ */ new Vector3();\n    _vap = /* @__PURE__ */ new Vector3();\n    _vbp = /* @__PURE__ */ new Vector3();\n    _vcp = /* @__PURE__ */ new Vector3();\n    _v40 = /* @__PURE__ */ new Vector4();\n    _v41 = /* @__PURE__ */ new Vector4();\n    _v42 = /* @__PURE__ */ new Vector4();\n    Triangle = class _Triangle {\n      constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) {\n        this.a = a;\n        this.b = b;\n        this.c = c;\n      }\n      static getNormal(a, b, c, target2) {\n        target2.subVectors(c, b);\n        _v0$2.subVectors(a, b);\n        target2.cross(_v0$2);\n        const targetLengthSq = target2.lengthSq();\n        if (targetLengthSq > 0) {\n          return target2.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n        }\n        return target2.set(0, 0, 0);\n      }\n      // static/instance method to calculate barycentric coordinates\n      // based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n      static getBarycoord(point, a, b, c, target2) {\n        _v0$2.subVectors(c, a);\n        _v1$3.subVectors(b, a);\n        _v2$2.subVectors(point, a);\n        const dot00 = _v0$2.dot(_v0$2);\n        const dot01 = _v0$2.dot(_v1$3);\n        const dot02 = _v0$2.dot(_v2$2);\n        const dot11 = _v1$3.dot(_v1$3);\n        const dot12 = _v1$3.dot(_v2$2);\n        const denom = dot00 * dot11 - dot01 * dot01;\n        if (denom === 0) {\n          target2.set(0, 0, 0);\n          return null;\n        }\n        const invDenom = 1 / denom;\n        const u3 = (dot11 * dot02 - dot01 * dot12) * invDenom;\n        const v2 = (dot00 * dot12 - dot01 * dot02) * invDenom;\n        return target2.set(1 - u3 - v2, v2, u3);\n      }\n      static containsPoint(point, a, b, c) {\n        if (this.getBarycoord(point, a, b, c, _v3$2) === null) {\n          return false;\n        }\n        return _v3$2.x >= 0 && _v3$2.y >= 0 && _v3$2.x + _v3$2.y <= 1;\n      }\n      static getInterpolation(point, p1, p22, p3, v1, v2, v3, target2) {\n        if (this.getBarycoord(point, p1, p22, p3, _v3$2) === null) {\n          target2.x = 0;\n          target2.y = 0;\n          if (\"z\" in target2) target2.z = 0;\n          if (\"w\" in target2) target2.w = 0;\n          return null;\n        }\n        target2.setScalar(0);\n        target2.addScaledVector(v1, _v3$2.x);\n        target2.addScaledVector(v2, _v3$2.y);\n        target2.addScaledVector(v3, _v3$2.z);\n        return target2;\n      }\n      static getInterpolatedAttribute(attr, i1, i2, i3, barycoord, target2) {\n        _v40.setScalar(0);\n        _v41.setScalar(0);\n        _v42.setScalar(0);\n        _v40.fromBufferAttribute(attr, i1);\n        _v41.fromBufferAttribute(attr, i2);\n        _v42.fromBufferAttribute(attr, i3);\n        target2.setScalar(0);\n        target2.addScaledVector(_v40, barycoord.x);\n        target2.addScaledVector(_v41, barycoord.y);\n        target2.addScaledVector(_v42, barycoord.z);\n        return target2;\n      }\n      static isFrontFacing(a, b, c, direction) {\n        _v0$2.subVectors(c, b);\n        _v1$3.subVectors(a, b);\n        return _v0$2.cross(_v1$3).dot(direction) < 0 ? true : false;\n      }\n      set(a, b, c) {\n        this.a.copy(a);\n        this.b.copy(b);\n        this.c.copy(c);\n        return this;\n      }\n      setFromPointsAndIndices(points, i0, i1, i2) {\n        this.a.copy(points[i0]);\n        this.b.copy(points[i1]);\n        this.c.copy(points[i2]);\n        return this;\n      }\n      setFromAttributeAndIndices(attribute, i0, i1, i2) {\n        this.a.fromBufferAttribute(attribute, i0);\n        this.b.fromBufferAttribute(attribute, i1);\n        this.c.fromBufferAttribute(attribute, i2);\n        return this;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(triangle) {\n        this.a.copy(triangle.a);\n        this.b.copy(triangle.b);\n        this.c.copy(triangle.c);\n        return this;\n      }\n      getArea() {\n        _v0$2.subVectors(this.c, this.b);\n        _v1$3.subVectors(this.a, this.b);\n        return _v0$2.cross(_v1$3).length() * 0.5;\n      }\n      getMidpoint(target2) {\n        return target2.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n      }\n      getNormal(target2) {\n        return _Triangle.getNormal(this.a, this.b, this.c, target2);\n      }\n      getPlane(target2) {\n        return target2.setFromCoplanarPoints(this.a, this.b, this.c);\n      }\n      getBarycoord(point, target2) {\n        return _Triangle.getBarycoord(point, this.a, this.b, this.c, target2);\n      }\n      getInterpolation(point, v1, v2, v3, target2) {\n        return _Triangle.getInterpolation(point, this.a, this.b, this.c, v1, v2, v3, target2);\n      }\n      containsPoint(point) {\n        return _Triangle.containsPoint(point, this.a, this.b, this.c);\n      }\n      isFrontFacing(direction) {\n        return _Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n      }\n      intersectsBox(box) {\n        return box.intersectsTriangle(this);\n      }\n      closestPointToPoint(p3, target2) {\n        const a = this.a, b = this.b, c = this.c;\n        let v2, w;\n        _vab.subVectors(b, a);\n        _vac.subVectors(c, a);\n        _vap.subVectors(p3, a);\n        const d1 = _vab.dot(_vap);\n        const d2 = _vac.dot(_vap);\n        if (d1 <= 0 && d2 <= 0) {\n          return target2.copy(a);\n        }\n        _vbp.subVectors(p3, b);\n        const d3 = _vab.dot(_vbp);\n        const d4 = _vac.dot(_vbp);\n        if (d3 >= 0 && d4 <= d3) {\n          return target2.copy(b);\n        }\n        const vc = d1 * d4 - d3 * d2;\n        if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n          v2 = d1 / (d1 - d3);\n          return target2.copy(a).addScaledVector(_vab, v2);\n        }\n        _vcp.subVectors(p3, c);\n        const d5 = _vab.dot(_vcp);\n        const d6 = _vac.dot(_vcp);\n        if (d6 >= 0 && d5 <= d6) {\n          return target2.copy(c);\n        }\n        const vb = d5 * d2 - d1 * d6;\n        if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n          w = d2 / (d2 - d6);\n          return target2.copy(a).addScaledVector(_vac, w);\n        }\n        const va = d3 * d6 - d5 * d4;\n        if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n          _vbc.subVectors(c, b);\n          w = (d4 - d3) / (d4 - d3 + (d5 - d6));\n          return target2.copy(b).addScaledVector(_vbc, w);\n        }\n        const denom = 1 / (va + vb + vc);\n        v2 = vb * denom;\n        w = vc * denom;\n        return target2.copy(a).addScaledVector(_vab, v2).addScaledVector(_vac, w);\n      }\n      equals(triangle) {\n        return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n      }\n    };\n    _colorKeywords = {\n      \"aliceblue\": 15792383,\n      \"antiquewhite\": 16444375,\n      \"aqua\": 65535,\n      \"aquamarine\": 8388564,\n      \"azure\": 15794175,\n      \"beige\": 16119260,\n      \"bisque\": 16770244,\n      \"black\": 0,\n      \"blanchedalmond\": 16772045,\n      \"blue\": 255,\n      \"blueviolet\": 9055202,\n      \"brown\": 10824234,\n      \"burlywood\": 14596231,\n      \"cadetblue\": 6266528,\n      \"chartreuse\": 8388352,\n      \"chocolate\": 13789470,\n      \"coral\": 16744272,\n      \"cornflowerblue\": 6591981,\n      \"cornsilk\": 16775388,\n      \"crimson\": 14423100,\n      \"cyan\": 65535,\n      \"darkblue\": 139,\n      \"darkcyan\": 35723,\n      \"darkgoldenrod\": 12092939,\n      \"darkgray\": 11119017,\n      \"darkgreen\": 25600,\n      \"darkgrey\": 11119017,\n      \"darkkhaki\": 12433259,\n      \"darkmagenta\": 9109643,\n      \"darkolivegreen\": 5597999,\n      \"darkorange\": 16747520,\n      \"darkorchid\": 10040012,\n      \"darkred\": 9109504,\n      \"darksalmon\": 15308410,\n      \"darkseagreen\": 9419919,\n      \"darkslateblue\": 4734347,\n      \"darkslategray\": 3100495,\n      \"darkslategrey\": 3100495,\n      \"darkturquoise\": 52945,\n      \"darkviolet\": 9699539,\n      \"deeppink\": 16716947,\n      \"deepskyblue\": 49151,\n      \"dimgray\": 6908265,\n      \"dimgrey\": 6908265,\n      \"dodgerblue\": 2003199,\n      \"firebrick\": 11674146,\n      \"floralwhite\": 16775920,\n      \"forestgreen\": 2263842,\n      \"fuchsia\": 16711935,\n      \"gainsboro\": 14474460,\n      \"ghostwhite\": 16316671,\n      \"gold\": 16766720,\n      \"goldenrod\": 14329120,\n      \"gray\": 8421504,\n      \"green\": 32768,\n      \"greenyellow\": 11403055,\n      \"grey\": 8421504,\n      \"honeydew\": 15794160,\n      \"hotpink\": 16738740,\n      \"indianred\": 13458524,\n      \"indigo\": 4915330,\n      \"ivory\": 16777200,\n      \"khaki\": 15787660,\n      \"lavender\": 15132410,\n      \"lavenderblush\": 16773365,\n      \"lawngreen\": 8190976,\n      \"lemonchiffon\": 16775885,\n      \"lightblue\": 11393254,\n      \"lightcoral\": 15761536,\n      \"lightcyan\": 14745599,\n      \"lightgoldenrodyellow\": 16448210,\n      \"lightgray\": 13882323,\n      \"lightgreen\": 9498256,\n      \"lightgrey\": 13882323,\n      \"lightpink\": 16758465,\n      \"lightsalmon\": 16752762,\n      \"lightseagreen\": 2142890,\n      \"lightskyblue\": 8900346,\n      \"lightslategray\": 7833753,\n      \"lightslategrey\": 7833753,\n      \"lightsteelblue\": 11584734,\n      \"lightyellow\": 16777184,\n      \"lime\": 65280,\n      \"limegreen\": 3329330,\n      \"linen\": 16445670,\n      \"magenta\": 16711935,\n      \"maroon\": 8388608,\n      \"mediumaquamarine\": 6737322,\n      \"mediumblue\": 205,\n      \"mediumorchid\": 12211667,\n      \"mediumpurple\": 9662683,\n      \"mediumseagreen\": 3978097,\n      \"mediumslateblue\": 8087790,\n      \"mediumspringgreen\": 64154,\n      \"mediumturquoise\": 4772300,\n      \"mediumvioletred\": 13047173,\n      \"midnightblue\": 1644912,\n      \"mintcream\": 16121850,\n      \"mistyrose\": 16770273,\n      \"moccasin\": 16770229,\n      \"navajowhite\": 16768685,\n      \"navy\": 128,\n      \"oldlace\": 16643558,\n      \"olive\": 8421376,\n      \"olivedrab\": 7048739,\n      \"orange\": 16753920,\n      \"orangered\": 16729344,\n      \"orchid\": 14315734,\n      \"palegoldenrod\": 15657130,\n      \"palegreen\": 10025880,\n      \"paleturquoise\": 11529966,\n      \"palevioletred\": 14381203,\n      \"papayawhip\": 16773077,\n      \"peachpuff\": 16767673,\n      \"peru\": 13468991,\n      \"pink\": 16761035,\n      \"plum\": 14524637,\n      \"powderblue\": 11591910,\n      \"purple\": 8388736,\n      \"rebeccapurple\": 6697881,\n      \"red\": 16711680,\n      \"rosybrown\": 12357519,\n      \"royalblue\": 4286945,\n      \"saddlebrown\": 9127187,\n      \"salmon\": 16416882,\n      \"sandybrown\": 16032864,\n      \"seagreen\": 3050327,\n      \"seashell\": 16774638,\n      \"sienna\": 10506797,\n      \"silver\": 12632256,\n      \"skyblue\": 8900331,\n      \"slateblue\": 6970061,\n      \"slategray\": 7372944,\n      \"slategrey\": 7372944,\n      \"snow\": 16775930,\n      \"springgreen\": 65407,\n      \"steelblue\": 4620980,\n      \"tan\": 13808780,\n      \"teal\": 32896,\n      \"thistle\": 14204888,\n      \"tomato\": 16737095,\n      \"turquoise\": 4251856,\n      \"violet\": 15631086,\n      \"wheat\": 16113331,\n      \"white\": 16777215,\n      \"whitesmoke\": 16119285,\n      \"yellow\": 16776960,\n      \"yellowgreen\": 10145074\n    };\n    _hslA = { h: 0, s: 0, l: 0 };\n    _hslB = { h: 0, s: 0, l: 0 };\n    Color = class {\n      constructor(r2, g3, b) {\n        this.isColor = true;\n        this.r = 1;\n        this.g = 1;\n        this.b = 1;\n        return this.set(r2, g3, b);\n      }\n      set(r2, g3, b) {\n        if (g3 === void 0 && b === void 0) {\n          const value = r2;\n          if (value && value.isColor) {\n            this.copy(value);\n          } else if (typeof value === \"number\") {\n            this.setHex(value);\n          } else if (typeof value === \"string\") {\n            this.setStyle(value);\n          }\n        } else {\n          this.setRGB(r2, g3, b);\n        }\n        return this;\n      }\n      setScalar(scalar) {\n        this.r = scalar;\n        this.g = scalar;\n        this.b = scalar;\n        return this;\n      }\n      setHex(hex, colorSpace = SRGBColorSpace) {\n        hex = Math.floor(hex);\n        this.r = (hex >> 16 & 255) / 255;\n        this.g = (hex >> 8 & 255) / 255;\n        this.b = (hex & 255) / 255;\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      }\n      setRGB(r2, g3, b, colorSpace = ColorManagement.workingColorSpace) {\n        this.r = r2;\n        this.g = g3;\n        this.b = b;\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      }\n      setHSL(h2, s, l2, colorSpace = ColorManagement.workingColorSpace) {\n        h2 = euclideanModulo(h2, 1);\n        s = clamp(s, 0, 1);\n        l2 = clamp(l2, 0, 1);\n        if (s === 0) {\n          this.r = this.g = this.b = l2;\n        } else {\n          const p3 = l2 <= 0.5 ? l2 * (1 + s) : l2 + s - l2 * s;\n          const q3 = 2 * l2 - p3;\n          this.r = hue2rgb(q3, p3, h2 + 1 / 3);\n          this.g = hue2rgb(q3, p3, h2);\n          this.b = hue2rgb(q3, p3, h2 - 1 / 3);\n        }\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      }\n      setStyle(style, colorSpace = SRGBColorSpace) {\n        function handleAlpha(string) {\n          if (string === void 0) return;\n          if (parseFloat(string) < 1) {\n            console.warn(\"THREE.Color: Alpha component of \" + style + \" will be ignored.\");\n          }\n        }\n        let m;\n        if (m = /^(\\w+)\\(([^\\)]*)\\)/.exec(style)) {\n          let color;\n          const name = m[1];\n          const components = m[2];\n          switch (name) {\n            case \"rgb\":\n            case \"rgba\":\n              if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n                handleAlpha(color[4]);\n                return this.setRGB(\n                  Math.min(255, parseInt(color[1], 10)) / 255,\n                  Math.min(255, parseInt(color[2], 10)) / 255,\n                  Math.min(255, parseInt(color[3], 10)) / 255,\n                  colorSpace\n                );\n              }\n              if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n                handleAlpha(color[4]);\n                return this.setRGB(\n                  Math.min(100, parseInt(color[1], 10)) / 100,\n                  Math.min(100, parseInt(color[2], 10)) / 100,\n                  Math.min(100, parseInt(color[3], 10)) / 100,\n                  colorSpace\n                );\n              }\n              break;\n            case \"hsl\":\n            case \"hsla\":\n              if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n                handleAlpha(color[4]);\n                return this.setHSL(\n                  parseFloat(color[1]) / 360,\n                  parseFloat(color[2]) / 100,\n                  parseFloat(color[3]) / 100,\n                  colorSpace\n                );\n              }\n              break;\n            default:\n              console.warn(\"THREE.Color: Unknown color model \" + style);\n          }\n        } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n          const hex = m[1];\n          const size = hex.length;\n          if (size === 3) {\n            return this.setRGB(\n              parseInt(hex.charAt(0), 16) / 15,\n              parseInt(hex.charAt(1), 16) / 15,\n              parseInt(hex.charAt(2), 16) / 15,\n              colorSpace\n            );\n          } else if (size === 6) {\n            return this.setHex(parseInt(hex, 16), colorSpace);\n          } else {\n            console.warn(\"THREE.Color: Invalid hex color \" + style);\n          }\n        } else if (style && style.length > 0) {\n          return this.setColorName(style, colorSpace);\n        }\n        return this;\n      }\n      setColorName(style, colorSpace = SRGBColorSpace) {\n        const hex = _colorKeywords[style.toLowerCase()];\n        if (hex !== void 0) {\n          this.setHex(hex, colorSpace);\n        } else {\n          console.warn(\"THREE.Color: Unknown color \" + style);\n        }\n        return this;\n      }\n      clone() {\n        return new this.constructor(this.r, this.g, this.b);\n      }\n      copy(color) {\n        this.r = color.r;\n        this.g = color.g;\n        this.b = color.b;\n        return this;\n      }\n      copySRGBToLinear(color) {\n        this.r = SRGBToLinear(color.r);\n        this.g = SRGBToLinear(color.g);\n        this.b = SRGBToLinear(color.b);\n        return this;\n      }\n      copyLinearToSRGB(color) {\n        this.r = LinearToSRGB(color.r);\n        this.g = LinearToSRGB(color.g);\n        this.b = LinearToSRGB(color.b);\n        return this;\n      }\n      convertSRGBToLinear() {\n        this.copySRGBToLinear(this);\n        return this;\n      }\n      convertLinearToSRGB() {\n        this.copyLinearToSRGB(this);\n        return this;\n      }\n      getHex(colorSpace = SRGBColorSpace) {\n        ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n        return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255));\n      }\n      getHexString(colorSpace = SRGBColorSpace) {\n        return (\"000000\" + this.getHex(colorSpace).toString(16)).slice(-6);\n      }\n      getHSL(target2, colorSpace = ColorManagement.workingColorSpace) {\n        ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n        const r2 = _color.r, g3 = _color.g, b = _color.b;\n        const max = Math.max(r2, g3, b);\n        const min = Math.min(r2, g3, b);\n        let hue, saturation;\n        const lightness = (min + max) / 2;\n        if (min === max) {\n          hue = 0;\n          saturation = 0;\n        } else {\n          const delta = max - min;\n          saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n          switch (max) {\n            case r2:\n              hue = (g3 - b) / delta + (g3 < b ? 6 : 0);\n              break;\n            case g3:\n              hue = (b - r2) / delta + 2;\n              break;\n            case b:\n              hue = (r2 - g3) / delta + 4;\n              break;\n          }\n          hue /= 6;\n        }\n        target2.h = hue;\n        target2.s = saturation;\n        target2.l = lightness;\n        return target2;\n      }\n      getRGB(target2, colorSpace = ColorManagement.workingColorSpace) {\n        ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n        target2.r = _color.r;\n        target2.g = _color.g;\n        target2.b = _color.b;\n        return target2;\n      }\n      getStyle(colorSpace = SRGBColorSpace) {\n        ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n        const r2 = _color.r, g3 = _color.g, b = _color.b;\n        if (colorSpace !== SRGBColorSpace) {\n          return `color(${colorSpace} ${r2.toFixed(3)} ${g3.toFixed(3)} ${b.toFixed(3)})`;\n        }\n        return `rgb(${Math.round(r2 * 255)},${Math.round(g3 * 255)},${Math.round(b * 255)})`;\n      }\n      offsetHSL(h2, s, l2) {\n        this.getHSL(_hslA);\n        return this.setHSL(_hslA.h + h2, _hslA.s + s, _hslA.l + l2);\n      }\n      add(color) {\n        this.r += color.r;\n        this.g += color.g;\n        this.b += color.b;\n        return this;\n      }\n      addColors(color1, color2) {\n        this.r = color1.r + color2.r;\n        this.g = color1.g + color2.g;\n        this.b = color1.b + color2.b;\n        return this;\n      }\n      addScalar(s) {\n        this.r += s;\n        this.g += s;\n        this.b += s;\n        return this;\n      }\n      sub(color) {\n        this.r = Math.max(0, this.r - color.r);\n        this.g = Math.max(0, this.g - color.g);\n        this.b = Math.max(0, this.b - color.b);\n        return this;\n      }\n      multiply(color) {\n        this.r *= color.r;\n        this.g *= color.g;\n        this.b *= color.b;\n        return this;\n      }\n      multiplyScalar(s) {\n        this.r *= s;\n        this.g *= s;\n        this.b *= s;\n        return this;\n      }\n      lerp(color, alpha) {\n        this.r += (color.r - this.r) * alpha;\n        this.g += (color.g - this.g) * alpha;\n        this.b += (color.b - this.b) * alpha;\n        return this;\n      }\n      lerpColors(color1, color2, alpha) {\n        this.r = color1.r + (color2.r - color1.r) * alpha;\n        this.g = color1.g + (color2.g - color1.g) * alpha;\n        this.b = color1.b + (color2.b - color1.b) * alpha;\n        return this;\n      }\n      lerpHSL(color, alpha) {\n        this.getHSL(_hslA);\n        color.getHSL(_hslB);\n        const h2 = lerp(_hslA.h, _hslB.h, alpha);\n        const s = lerp(_hslA.s, _hslB.s, alpha);\n        const l2 = lerp(_hslA.l, _hslB.l, alpha);\n        this.setHSL(h2, s, l2);\n        return this;\n      }\n      setFromVector3(v2) {\n        this.r = v2.x;\n        this.g = v2.y;\n        this.b = v2.z;\n        return this;\n      }\n      applyMatrix3(m) {\n        const r2 = this.r, g3 = this.g, b = this.b;\n        const e = m.elements;\n        this.r = e[0] * r2 + e[3] * g3 + e[6] * b;\n        this.g = e[1] * r2 + e[4] * g3 + e[7] * b;\n        this.b = e[2] * r2 + e[5] * g3 + e[8] * b;\n        return this;\n      }\n      equals(c) {\n        return c.r === this.r && c.g === this.g && c.b === this.b;\n      }\n      fromArray(array, offset = 0) {\n        this.r = array[offset];\n        this.g = array[offset + 1];\n        this.b = array[offset + 2];\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        array[offset] = this.r;\n        array[offset + 1] = this.g;\n        array[offset + 2] = this.b;\n        return array;\n      }\n      fromBufferAttribute(attribute, index) {\n        this.r = attribute.getX(index);\n        this.g = attribute.getY(index);\n        this.b = attribute.getZ(index);\n        return this;\n      }\n      toJSON() {\n        return this.getHex();\n      }\n      *[Symbol.iterator]() {\n        yield this.r;\n        yield this.g;\n        yield this.b;\n      }\n    };\n    _color = /* @__PURE__ */ new Color();\n    Color.NAMES = _colorKeywords;\n    _materialId = 0;\n    Material = class extends EventDispatcher {\n      constructor() {\n        super();\n        this.isMaterial = true;\n        Object.defineProperty(this, \"id\", { value: _materialId++ });\n        this.uuid = generateUUID();\n        this.name = \"\";\n        this.type = \"Material\";\n        this.blending = NormalBlending;\n        this.side = FrontSide;\n        this.vertexColors = false;\n        this.opacity = 1;\n        this.transparent = false;\n        this.alphaHash = false;\n        this.blendSrc = SrcAlphaFactor;\n        this.blendDst = OneMinusSrcAlphaFactor;\n        this.blendEquation = AddEquation;\n        this.blendSrcAlpha = null;\n        this.blendDstAlpha = null;\n        this.blendEquationAlpha = null;\n        this.blendColor = new Color(0, 0, 0);\n        this.blendAlpha = 0;\n        this.depthFunc = LessEqualDepth;\n        this.depthTest = true;\n        this.depthWrite = true;\n        this.stencilWriteMask = 255;\n        this.stencilFunc = AlwaysStencilFunc;\n        this.stencilRef = 0;\n        this.stencilFuncMask = 255;\n        this.stencilFail = KeepStencilOp;\n        this.stencilZFail = KeepStencilOp;\n        this.stencilZPass = KeepStencilOp;\n        this.stencilWrite = false;\n        this.clippingPlanes = null;\n        this.clipIntersection = false;\n        this.clipShadows = false;\n        this.shadowSide = null;\n        this.colorWrite = true;\n        this.precision = null;\n        this.polygonOffset = false;\n        this.polygonOffsetFactor = 0;\n        this.polygonOffsetUnits = 0;\n        this.dithering = false;\n        this.alphaToCoverage = false;\n        this.premultipliedAlpha = false;\n        this.forceSinglePass = false;\n        this.visible = true;\n        this.toneMapped = true;\n        this.userData = {};\n        this.version = 0;\n        this._alphaTest = 0;\n      }\n      get alphaTest() {\n        return this._alphaTest;\n      }\n      set alphaTest(value) {\n        if (this._alphaTest > 0 !== value > 0) {\n          this.version++;\n        }\n        this._alphaTest = value;\n      }\n      // onBeforeRender and onBeforeCompile only supported in WebGLRenderer\n      onBeforeRender() {\n      }\n      onBeforeCompile() {\n      }\n      customProgramCacheKey() {\n        return this.onBeforeCompile.toString();\n      }\n      setValues(values) {\n        if (values === void 0) return;\n        for (const key in values) {\n          const newValue = values[key];\n          if (newValue === void 0) {\n            console.warn(`THREE.Material: parameter '${key}' has value of undefined.`);\n            continue;\n          }\n          const currentValue = this[key];\n          if (currentValue === void 0) {\n            console.warn(`THREE.Material: '${key}' is not a property of THREE.${this.type}.`);\n            continue;\n          }\n          if (currentValue && currentValue.isColor) {\n            currentValue.set(newValue);\n          } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) {\n            currentValue.copy(newValue);\n          } else {\n            this[key] = newValue;\n          }\n        }\n      }\n      toJSON(meta) {\n        const isRootObject = meta === void 0 || typeof meta === \"string\";\n        if (isRootObject) {\n          meta = {\n            textures: {},\n            images: {}\n          };\n        }\n        const data = {\n          metadata: {\n            version: 4.6,\n            type: \"Material\",\n            generator: \"Material.toJSON\"\n          }\n        };\n        data.uuid = this.uuid;\n        data.type = this.type;\n        if (this.name !== \"\") data.name = this.name;\n        if (this.color && this.color.isColor) data.color = this.color.getHex();\n        if (this.roughness !== void 0) data.roughness = this.roughness;\n        if (this.metalness !== void 0) data.metalness = this.metalness;\n        if (this.sheen !== void 0) data.sheen = this.sheen;\n        if (this.sheenColor && this.sheenColor.isColor) data.sheenColor = this.sheenColor.getHex();\n        if (this.sheenRoughness !== void 0) data.sheenRoughness = this.sheenRoughness;\n        if (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex();\n        if (this.emissiveIntensity !== void 0 && this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity;\n        if (this.specular && this.specular.isColor) data.specular = this.specular.getHex();\n        if (this.specularIntensity !== void 0) data.specularIntensity = this.specularIntensity;\n        if (this.specularColor && this.specularColor.isColor) data.specularColor = this.specularColor.getHex();\n        if (this.shininess !== void 0) data.shininess = this.shininess;\n        if (this.clearcoat !== void 0) data.clearcoat = this.clearcoat;\n        if (this.clearcoatRoughness !== void 0) data.clearcoatRoughness = this.clearcoatRoughness;\n        if (this.clearcoatMap && this.clearcoatMap.isTexture) {\n          data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n        }\n        if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n          data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n        }\n        if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n          data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n          data.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n        }\n        if (this.dispersion !== void 0) data.dispersion = this.dispersion;\n        if (this.iridescence !== void 0) data.iridescence = this.iridescence;\n        if (this.iridescenceIOR !== void 0) data.iridescenceIOR = this.iridescenceIOR;\n        if (this.iridescenceThicknessRange !== void 0) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n        if (this.iridescenceMap && this.iridescenceMap.isTexture) {\n          data.iridescenceMap = this.iridescenceMap.toJSON(meta).uuid;\n        }\n        if (this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture) {\n          data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(meta).uuid;\n        }\n        if (this.anisotropy !== void 0) data.anisotropy = this.anisotropy;\n        if (this.anisotropyRotation !== void 0) data.anisotropyRotation = this.anisotropyRotation;\n        if (this.anisotropyMap && this.anisotropyMap.isTexture) {\n          data.anisotropyMap = this.anisotropyMap.toJSON(meta).uuid;\n        }\n        if (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid;\n        if (this.matcap && this.matcap.isTexture) data.matcap = this.matcap.toJSON(meta).uuid;\n        if (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n        if (this.lightMap && this.lightMap.isTexture) {\n          data.lightMap = this.lightMap.toJSON(meta).uuid;\n          data.lightMapIntensity = this.lightMapIntensity;\n        }\n        if (this.aoMap && this.aoMap.isTexture) {\n          data.aoMap = this.aoMap.toJSON(meta).uuid;\n          data.aoMapIntensity = this.aoMapIntensity;\n        }\n        if (this.bumpMap && this.bumpMap.isTexture) {\n          data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n          data.bumpScale = this.bumpScale;\n        }\n        if (this.normalMap && this.normalMap.isTexture) {\n          data.normalMap = this.normalMap.toJSON(meta).uuid;\n          data.normalMapType = this.normalMapType;\n          data.normalScale = this.normalScale.toArray();\n        }\n        if (this.displacementMap && this.displacementMap.isTexture) {\n          data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n          data.displacementScale = this.displacementScale;\n          data.displacementBias = this.displacementBias;\n        }\n        if (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n        if (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n        if (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n        if (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid;\n        if (this.specularIntensityMap && this.specularIntensityMap.isTexture) data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n        if (this.specularColorMap && this.specularColorMap.isTexture) data.specularColorMap = this.specularColorMap.toJSON(meta).uuid;\n        if (this.envMap && this.envMap.isTexture) {\n          data.envMap = this.envMap.toJSON(meta).uuid;\n          if (this.combine !== void 0) data.combine = this.combine;\n        }\n        if (this.envMapRotation !== void 0) data.envMapRotation = this.envMapRotation.toArray();\n        if (this.envMapIntensity !== void 0) data.envMapIntensity = this.envMapIntensity;\n        if (this.reflectivity !== void 0) data.reflectivity = this.reflectivity;\n        if (this.refractionRatio !== void 0) data.refractionRatio = this.refractionRatio;\n        if (this.gradientMap && this.gradientMap.isTexture) {\n          data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n        }\n        if (this.transmission !== void 0) data.transmission = this.transmission;\n        if (this.transmissionMap && this.transmissionMap.isTexture) data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n        if (this.thickness !== void 0) data.thickness = this.thickness;\n        if (this.thicknessMap && this.thicknessMap.isTexture) data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n        if (this.attenuationDistance !== void 0 && this.attenuationDistance !== Infinity) data.attenuationDistance = this.attenuationDistance;\n        if (this.attenuationColor !== void 0) data.attenuationColor = this.attenuationColor.getHex();\n        if (this.size !== void 0) data.size = this.size;\n        if (this.shadowSide !== null) data.shadowSide = this.shadowSide;\n        if (this.sizeAttenuation !== void 0) data.sizeAttenuation = this.sizeAttenuation;\n        if (this.blending !== NormalBlending) data.blending = this.blending;\n        if (this.side !== FrontSide) data.side = this.side;\n        if (this.vertexColors === true) data.vertexColors = true;\n        if (this.opacity < 1) data.opacity = this.opacity;\n        if (this.transparent === true) data.transparent = true;\n        if (this.blendSrc !== SrcAlphaFactor) data.blendSrc = this.blendSrc;\n        if (this.blendDst !== OneMinusSrcAlphaFactor) data.blendDst = this.blendDst;\n        if (this.blendEquation !== AddEquation) data.blendEquation = this.blendEquation;\n        if (this.blendSrcAlpha !== null) data.blendSrcAlpha = this.blendSrcAlpha;\n        if (this.blendDstAlpha !== null) data.blendDstAlpha = this.blendDstAlpha;\n        if (this.blendEquationAlpha !== null) data.blendEquationAlpha = this.blendEquationAlpha;\n        if (this.blendColor && this.blendColor.isColor) data.blendColor = this.blendColor.getHex();\n        if (this.blendAlpha !== 0) data.blendAlpha = this.blendAlpha;\n        if (this.depthFunc !== LessEqualDepth) data.depthFunc = this.depthFunc;\n        if (this.depthTest === false) data.depthTest = this.depthTest;\n        if (this.depthWrite === false) data.depthWrite = this.depthWrite;\n        if (this.colorWrite === false) data.colorWrite = this.colorWrite;\n        if (this.stencilWriteMask !== 255) data.stencilWriteMask = this.stencilWriteMask;\n        if (this.stencilFunc !== AlwaysStencilFunc) data.stencilFunc = this.stencilFunc;\n        if (this.stencilRef !== 0) data.stencilRef = this.stencilRef;\n        if (this.stencilFuncMask !== 255) data.stencilFuncMask = this.stencilFuncMask;\n        if (this.stencilFail !== KeepStencilOp) data.stencilFail = this.stencilFail;\n        if (this.stencilZFail !== KeepStencilOp) data.stencilZFail = this.stencilZFail;\n        if (this.stencilZPass !== KeepStencilOp) data.stencilZPass = this.stencilZPass;\n        if (this.stencilWrite === true) data.stencilWrite = this.stencilWrite;\n        if (this.rotation !== void 0 && this.rotation !== 0) data.rotation = this.rotation;\n        if (this.polygonOffset === true) data.polygonOffset = true;\n        if (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor;\n        if (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits;\n        if (this.linewidth !== void 0 && this.linewidth !== 1) data.linewidth = this.linewidth;\n        if (this.dashSize !== void 0) data.dashSize = this.dashSize;\n        if (this.gapSize !== void 0) data.gapSize = this.gapSize;\n        if (this.scale !== void 0) data.scale = this.scale;\n        if (this.dithering === true) data.dithering = true;\n        if (this.alphaTest > 0) data.alphaTest = this.alphaTest;\n        if (this.alphaHash === true) data.alphaHash = true;\n        if (this.alphaToCoverage === true) data.alphaToCoverage = true;\n        if (this.premultipliedAlpha === true) data.premultipliedAlpha = true;\n        if (this.forceSinglePass === true) data.forceSinglePass = true;\n        if (this.wireframe === true) data.wireframe = true;\n        if (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth;\n        if (this.wireframeLinecap !== \"round\") data.wireframeLinecap = this.wireframeLinecap;\n        if (this.wireframeLinejoin !== \"round\") data.wireframeLinejoin = this.wireframeLinejoin;\n        if (this.flatShading === true) data.flatShading = true;\n        if (this.visible === false) data.visible = false;\n        if (this.toneMapped === false) data.toneMapped = false;\n        if (this.fog === false) data.fog = false;\n        if (Object.keys(this.userData).length > 0) data.userData = this.userData;\n        function extractFromCache(cache) {\n          const values = [];\n          for (const key in cache) {\n            const data2 = cache[key];\n            delete data2.metadata;\n            values.push(data2);\n          }\n          return values;\n        }\n        if (isRootObject) {\n          const textures = extractFromCache(meta.textures);\n          const images = extractFromCache(meta.images);\n          if (textures.length > 0) data.textures = textures;\n          if (images.length > 0) data.images = images;\n        }\n        return data;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(source) {\n        this.name = source.name;\n        this.blending = source.blending;\n        this.side = source.side;\n        this.vertexColors = source.vertexColors;\n        this.opacity = source.opacity;\n        this.transparent = source.transparent;\n        this.blendSrc = source.blendSrc;\n        this.blendDst = source.blendDst;\n        this.blendEquation = source.blendEquation;\n        this.blendSrcAlpha = source.blendSrcAlpha;\n        this.blendDstAlpha = source.blendDstAlpha;\n        this.blendEquationAlpha = source.blendEquationAlpha;\n        this.blendColor.copy(source.blendColor);\n        this.blendAlpha = source.blendAlpha;\n        this.depthFunc = source.depthFunc;\n        this.depthTest = source.depthTest;\n        this.depthWrite = source.depthWrite;\n        this.stencilWriteMask = source.stencilWriteMask;\n        this.stencilFunc = source.stencilFunc;\n        this.stencilRef = source.stencilRef;\n        this.stencilFuncMask = source.stencilFuncMask;\n        this.stencilFail = source.stencilFail;\n        this.stencilZFail = source.stencilZFail;\n        this.stencilZPass = source.stencilZPass;\n        this.stencilWrite = source.stencilWrite;\n        const srcPlanes = source.clippingPlanes;\n        let dstPlanes = null;\n        if (srcPlanes !== null) {\n          const n = srcPlanes.length;\n          dstPlanes = new Array(n);\n          for (let i2 = 0; i2 !== n; ++i2) {\n            dstPlanes[i2] = srcPlanes[i2].clone();\n          }\n        }\n        this.clippingPlanes = dstPlanes;\n        this.clipIntersection = source.clipIntersection;\n        this.clipShadows = source.clipShadows;\n        this.shadowSide = source.shadowSide;\n        this.colorWrite = source.colorWrite;\n        this.precision = source.precision;\n        this.polygonOffset = source.polygonOffset;\n        this.polygonOffsetFactor = source.polygonOffsetFactor;\n        this.polygonOffsetUnits = source.polygonOffsetUnits;\n        this.dithering = source.dithering;\n        this.alphaTest = source.alphaTest;\n        this.alphaHash = source.alphaHash;\n        this.alphaToCoverage = source.alphaToCoverage;\n        this.premultipliedAlpha = source.premultipliedAlpha;\n        this.forceSinglePass = source.forceSinglePass;\n        this.visible = source.visible;\n        this.toneMapped = source.toneMapped;\n        this.userData = JSON.parse(JSON.stringify(source.userData));\n        return this;\n      }\n      dispose() {\n        this.dispatchEvent({ type: \"dispose\" });\n      }\n      set needsUpdate(value) {\n        if (value === true) this.version++;\n      }\n      onBuild() {\n        console.warn(\"Material: onBuild() has been removed.\");\n      }\n    };\n    MeshBasicMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshBasicMaterial = true;\n        this.type = \"MeshBasicMaterial\";\n        this.color = new Color(16777215);\n        this.map = null;\n        this.lightMap = null;\n        this.lightMapIntensity = 1;\n        this.aoMap = null;\n        this.aoMapIntensity = 1;\n        this.specularMap = null;\n        this.alphaMap = null;\n        this.envMap = null;\n        this.envMapRotation = new Euler();\n        this.combine = MultiplyOperation;\n        this.reflectivity = 1;\n        this.refractionRatio = 0.98;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.wireframeLinecap = \"round\";\n        this.wireframeLinejoin = \"round\";\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.map = source.map;\n        this.lightMap = source.lightMap;\n        this.lightMapIntensity = source.lightMapIntensity;\n        this.aoMap = source.aoMap;\n        this.aoMapIntensity = source.aoMapIntensity;\n        this.specularMap = source.specularMap;\n        this.alphaMap = source.alphaMap;\n        this.envMap = source.envMap;\n        this.envMapRotation.copy(source.envMapRotation);\n        this.combine = source.combine;\n        this.reflectivity = source.reflectivity;\n        this.refractionRatio = source.refractionRatio;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.wireframeLinecap = source.wireframeLinecap;\n        this.wireframeLinejoin = source.wireframeLinejoin;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    _tables = /* @__PURE__ */ _generateTables();\n    DataUtils = {\n      toHalfFloat,\n      fromHalfFloat\n    };\n    _vector$9 = /* @__PURE__ */ new Vector3();\n    _vector2$1 = /* @__PURE__ */ new Vector2();\n    BufferAttribute = class {\n      constructor(array, itemSize, normalized = false) {\n        if (Array.isArray(array)) {\n          throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n        }\n        this.isBufferAttribute = true;\n        this.name = \"\";\n        this.array = array;\n        this.itemSize = itemSize;\n        this.count = array !== void 0 ? array.length / itemSize : 0;\n        this.normalized = normalized;\n        this.usage = StaticDrawUsage;\n        this.updateRanges = [];\n        this.gpuType = FloatType;\n        this.version = 0;\n      }\n      onUploadCallback() {\n      }\n      set needsUpdate(value) {\n        if (value === true) this.version++;\n      }\n      setUsage(value) {\n        this.usage = value;\n        return this;\n      }\n      addUpdateRange(start, count) {\n        this.updateRanges.push({ start, count });\n      }\n      clearUpdateRanges() {\n        this.updateRanges.length = 0;\n      }\n      copy(source) {\n        this.name = source.name;\n        this.array = new source.array.constructor(source.array);\n        this.itemSize = source.itemSize;\n        this.count = source.count;\n        this.normalized = source.normalized;\n        this.usage = source.usage;\n        this.gpuType = source.gpuType;\n        return this;\n      }\n      copyAt(index1, attribute, index2) {\n        index1 *= this.itemSize;\n        index2 *= attribute.itemSize;\n        for (let i2 = 0, l2 = this.itemSize; i2 < l2; i2++) {\n          this.array[index1 + i2] = attribute.array[index2 + i2];\n        }\n        return this;\n      }\n      copyArray(array) {\n        this.array.set(array);\n        return this;\n      }\n      applyMatrix3(m) {\n        if (this.itemSize === 2) {\n          for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n            _vector2$1.fromBufferAttribute(this, i2);\n            _vector2$1.applyMatrix3(m);\n            this.setXY(i2, _vector2$1.x, _vector2$1.y);\n          }\n        } else if (this.itemSize === 3) {\n          for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n            _vector$9.fromBufferAttribute(this, i2);\n            _vector$9.applyMatrix3(m);\n            this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n          }\n        }\n        return this;\n      }\n      applyMatrix4(m) {\n        for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n          _vector$9.fromBufferAttribute(this, i2);\n          _vector$9.applyMatrix4(m);\n          this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n        }\n        return this;\n      }\n      applyNormalMatrix(m) {\n        for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n          _vector$9.fromBufferAttribute(this, i2);\n          _vector$9.applyNormalMatrix(m);\n          this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n        }\n        return this;\n      }\n      transformDirection(m) {\n        for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n          _vector$9.fromBufferAttribute(this, i2);\n          _vector$9.transformDirection(m);\n          this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n        }\n        return this;\n      }\n      set(value, offset = 0) {\n        this.array.set(value, offset);\n        return this;\n      }\n      getComponent(index, component) {\n        let value = this.array[index * this.itemSize + component];\n        if (this.normalized) value = denormalize(value, this.array);\n        return value;\n      }\n      setComponent(index, component, value) {\n        if (this.normalized) value = normalize(value, this.array);\n        this.array[index * this.itemSize + component] = value;\n        return this;\n      }\n      getX(index) {\n        let x = this.array[index * this.itemSize];\n        if (this.normalized) x = denormalize(x, this.array);\n        return x;\n      }\n      setX(index, x) {\n        if (this.normalized) x = normalize(x, this.array);\n        this.array[index * this.itemSize] = x;\n        return this;\n      }\n      getY(index) {\n        let y2 = this.array[index * this.itemSize + 1];\n        if (this.normalized) y2 = denormalize(y2, this.array);\n        return y2;\n      }\n      setY(index, y2) {\n        if (this.normalized) y2 = normalize(y2, this.array);\n        this.array[index * this.itemSize + 1] = y2;\n        return this;\n      }\n      getZ(index) {\n        let z2 = this.array[index * this.itemSize + 2];\n        if (this.normalized) z2 = denormalize(z2, this.array);\n        return z2;\n      }\n      setZ(index, z2) {\n        if (this.normalized) z2 = normalize(z2, this.array);\n        this.array[index * this.itemSize + 2] = z2;\n        return this;\n      }\n      getW(index) {\n        let w = this.array[index * this.itemSize + 3];\n        if (this.normalized) w = denormalize(w, this.array);\n        return w;\n      }\n      setW(index, w) {\n        if (this.normalized) w = normalize(w, this.array);\n        this.array[index * this.itemSize + 3] = w;\n        return this;\n      }\n      setXY(index, x, y2) {\n        index *= this.itemSize;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n        }\n        this.array[index + 0] = x;\n        this.array[index + 1] = y2;\n        return this;\n      }\n      setXYZ(index, x, y2, z2) {\n        index *= this.itemSize;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n          z2 = normalize(z2, this.array);\n        }\n        this.array[index + 0] = x;\n        this.array[index + 1] = y2;\n        this.array[index + 2] = z2;\n        return this;\n      }\n      setXYZW(index, x, y2, z2, w) {\n        index *= this.itemSize;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n          z2 = normalize(z2, this.array);\n          w = normalize(w, this.array);\n        }\n        this.array[index + 0] = x;\n        this.array[index + 1] = y2;\n        this.array[index + 2] = z2;\n        this.array[index + 3] = w;\n        return this;\n      }\n      onUpload(callback) {\n        this.onUploadCallback = callback;\n        return this;\n      }\n      clone() {\n        return new this.constructor(this.array, this.itemSize).copy(this);\n      }\n      toJSON() {\n        const data = {\n          itemSize: this.itemSize,\n          type: this.array.constructor.name,\n          array: Array.from(this.array),\n          normalized: this.normalized\n        };\n        if (this.name !== \"\") data.name = this.name;\n        if (this.usage !== StaticDrawUsage) data.usage = this.usage;\n        return data;\n      }\n    };\n    Int8BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Int8Array(array), itemSize, normalized);\n      }\n    };\n    Uint8BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Uint8Array(array), itemSize, normalized);\n      }\n    };\n    Uint8ClampedBufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Uint8ClampedArray(array), itemSize, normalized);\n      }\n    };\n    Int16BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Int16Array(array), itemSize, normalized);\n      }\n    };\n    Uint16BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Uint16Array(array), itemSize, normalized);\n      }\n    };\n    Int32BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Int32Array(array), itemSize, normalized);\n      }\n    };\n    Uint32BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Uint32Array(array), itemSize, normalized);\n      }\n    };\n    Float16BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Uint16Array(array), itemSize, normalized);\n        this.isFloat16BufferAttribute = true;\n      }\n      getX(index) {\n        let x = fromHalfFloat(this.array[index * this.itemSize]);\n        if (this.normalized) x = denormalize(x, this.array);\n        return x;\n      }\n      setX(index, x) {\n        if (this.normalized) x = normalize(x, this.array);\n        this.array[index * this.itemSize] = toHalfFloat(x);\n        return this;\n      }\n      getY(index) {\n        let y2 = fromHalfFloat(this.array[index * this.itemSize + 1]);\n        if (this.normalized) y2 = denormalize(y2, this.array);\n        return y2;\n      }\n      setY(index, y2) {\n        if (this.normalized) y2 = normalize(y2, this.array);\n        this.array[index * this.itemSize + 1] = toHalfFloat(y2);\n        return this;\n      }\n      getZ(index) {\n        let z2 = fromHalfFloat(this.array[index * this.itemSize + 2]);\n        if (this.normalized) z2 = denormalize(z2, this.array);\n        return z2;\n      }\n      setZ(index, z2) {\n        if (this.normalized) z2 = normalize(z2, this.array);\n        this.array[index * this.itemSize + 2] = toHalfFloat(z2);\n        return this;\n      }\n      getW(index) {\n        let w = fromHalfFloat(this.array[index * this.itemSize + 3]);\n        if (this.normalized) w = denormalize(w, this.array);\n        return w;\n      }\n      setW(index, w) {\n        if (this.normalized) w = normalize(w, this.array);\n        this.array[index * this.itemSize + 3] = toHalfFloat(w);\n        return this;\n      }\n      setXY(index, x, y2) {\n        index *= this.itemSize;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n        }\n        this.array[index + 0] = toHalfFloat(x);\n        this.array[index + 1] = toHalfFloat(y2);\n        return this;\n      }\n      setXYZ(index, x, y2, z2) {\n        index *= this.itemSize;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n          z2 = normalize(z2, this.array);\n        }\n        this.array[index + 0] = toHalfFloat(x);\n        this.array[index + 1] = toHalfFloat(y2);\n        this.array[index + 2] = toHalfFloat(z2);\n        return this;\n      }\n      setXYZW(index, x, y2, z2, w) {\n        index *= this.itemSize;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n          z2 = normalize(z2, this.array);\n          w = normalize(w, this.array);\n        }\n        this.array[index + 0] = toHalfFloat(x);\n        this.array[index + 1] = toHalfFloat(y2);\n        this.array[index + 2] = toHalfFloat(z2);\n        this.array[index + 3] = toHalfFloat(w);\n        return this;\n      }\n    };\n    Float32BufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized) {\n        super(new Float32Array(array), itemSize, normalized);\n      }\n    };\n    _id$2 = 0;\n    _m1$2 = /* @__PURE__ */ new Matrix4();\n    _obj = /* @__PURE__ */ new Object3D();\n    _offset = /* @__PURE__ */ new Vector3();\n    _box$2 = /* @__PURE__ */ new Box3();\n    _boxMorphTargets = /* @__PURE__ */ new Box3();\n    _vector$8 = /* @__PURE__ */ new Vector3();\n    BufferGeometry = class _BufferGeometry extends EventDispatcher {\n      constructor() {\n        super();\n        this.isBufferGeometry = true;\n        Object.defineProperty(this, \"id\", { value: _id$2++ });\n        this.uuid = generateUUID();\n        this.name = \"\";\n        this.type = \"BufferGeometry\";\n        this.index = null;\n        this.attributes = {};\n        this.morphAttributes = {};\n        this.morphTargetsRelative = false;\n        this.groups = [];\n        this.boundingBox = null;\n        this.boundingSphere = null;\n        this.drawRange = { start: 0, count: Infinity };\n        this.userData = {};\n      }\n      getIndex() {\n        return this.index;\n      }\n      setIndex(index) {\n        if (Array.isArray(index)) {\n          this.index = new (arrayNeedsUint32(index) ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n        } else {\n          this.index = index;\n        }\n        return this;\n      }\n      getAttribute(name) {\n        return this.attributes[name];\n      }\n      setAttribute(name, attribute) {\n        this.attributes[name] = attribute;\n        return this;\n      }\n      deleteAttribute(name) {\n        delete this.attributes[name];\n        return this;\n      }\n      hasAttribute(name) {\n        return this.attributes[name] !== void 0;\n      }\n      addGroup(start, count, materialIndex = 0) {\n        this.groups.push({\n          start,\n          count,\n          materialIndex\n        });\n      }\n      clearGroups() {\n        this.groups = [];\n      }\n      setDrawRange(start, count) {\n        this.drawRange.start = start;\n        this.drawRange.count = count;\n      }\n      applyMatrix4(matrix2) {\n        const position = this.attributes.position;\n        if (position !== void 0) {\n          position.applyMatrix4(matrix2);\n          position.needsUpdate = true;\n        }\n        const normal = this.attributes.normal;\n        if (normal !== void 0) {\n          const normalMatrix = new Matrix3().getNormalMatrix(matrix2);\n          normal.applyNormalMatrix(normalMatrix);\n          normal.needsUpdate = true;\n        }\n        const tangent = this.attributes.tangent;\n        if (tangent !== void 0) {\n          tangent.transformDirection(matrix2);\n          tangent.needsUpdate = true;\n        }\n        if (this.boundingBox !== null) {\n          this.computeBoundingBox();\n        }\n        if (this.boundingSphere !== null) {\n          this.computeBoundingSphere();\n        }\n        return this;\n      }\n      applyQuaternion(q3) {\n        _m1$2.makeRotationFromQuaternion(q3);\n        this.applyMatrix4(_m1$2);\n        return this;\n      }\n      rotateX(angle) {\n        _m1$2.makeRotationX(angle);\n        this.applyMatrix4(_m1$2);\n        return this;\n      }\n      rotateY(angle) {\n        _m1$2.makeRotationY(angle);\n        this.applyMatrix4(_m1$2);\n        return this;\n      }\n      rotateZ(angle) {\n        _m1$2.makeRotationZ(angle);\n        this.applyMatrix4(_m1$2);\n        return this;\n      }\n      translate(x, y2, z2) {\n        _m1$2.makeTranslation(x, y2, z2);\n        this.applyMatrix4(_m1$2);\n        return this;\n      }\n      scale(x, y2, z2) {\n        _m1$2.makeScale(x, y2, z2);\n        this.applyMatrix4(_m1$2);\n        return this;\n      }\n      lookAt(vector) {\n        _obj.lookAt(vector);\n        _obj.updateMatrix();\n        this.applyMatrix4(_obj.matrix);\n        return this;\n      }\n      center() {\n        this.computeBoundingBox();\n        this.boundingBox.getCenter(_offset).negate();\n        this.translate(_offset.x, _offset.y, _offset.z);\n        return this;\n      }\n      setFromPoints(points) {\n        const position = [];\n        for (let i2 = 0, l2 = points.length; i2 < l2; i2++) {\n          const point = points[i2];\n          position.push(point.x, point.y, point.z || 0);\n        }\n        this.setAttribute(\"position\", new Float32BufferAttribute(position, 3));\n        return this;\n      }\n      computeBoundingBox() {\n        if (this.boundingBox === null) {\n          this.boundingBox = new Box3();\n        }\n        const position = this.attributes.position;\n        const morphAttributesPosition = this.morphAttributes.position;\n        if (position && position.isGLBufferAttribute) {\n          console.error(\"THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.\", this);\n          this.boundingBox.set(\n            new Vector3(-Infinity, -Infinity, -Infinity),\n            new Vector3(Infinity, Infinity, Infinity)\n          );\n          return;\n        }\n        if (position !== void 0) {\n          this.boundingBox.setFromBufferAttribute(position);\n          if (morphAttributesPosition) {\n            for (let i2 = 0, il = morphAttributesPosition.length; i2 < il; i2++) {\n              const morphAttribute = morphAttributesPosition[i2];\n              _box$2.setFromBufferAttribute(morphAttribute);\n              if (this.morphTargetsRelative) {\n                _vector$8.addVectors(this.boundingBox.min, _box$2.min);\n                this.boundingBox.expandByPoint(_vector$8);\n                _vector$8.addVectors(this.boundingBox.max, _box$2.max);\n                this.boundingBox.expandByPoint(_vector$8);\n              } else {\n                this.boundingBox.expandByPoint(_box$2.min);\n                this.boundingBox.expandByPoint(_box$2.max);\n              }\n            }\n          }\n        } else {\n          this.boundingBox.makeEmpty();\n        }\n        if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n          console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n        }\n      }\n      computeBoundingSphere() {\n        if (this.boundingSphere === null) {\n          this.boundingSphere = new Sphere();\n        }\n        const position = this.attributes.position;\n        const morphAttributesPosition = this.morphAttributes.position;\n        if (position && position.isGLBufferAttribute) {\n          console.error(\"THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.\", this);\n          this.boundingSphere.set(new Vector3(), Infinity);\n          return;\n        }\n        if (position) {\n          const center = this.boundingSphere.center;\n          _box$2.setFromBufferAttribute(position);\n          if (morphAttributesPosition) {\n            for (let i2 = 0, il = morphAttributesPosition.length; i2 < il; i2++) {\n              const morphAttribute = morphAttributesPosition[i2];\n              _boxMorphTargets.setFromBufferAttribute(morphAttribute);\n              if (this.morphTargetsRelative) {\n                _vector$8.addVectors(_box$2.min, _boxMorphTargets.min);\n                _box$2.expandByPoint(_vector$8);\n                _vector$8.addVectors(_box$2.max, _boxMorphTargets.max);\n                _box$2.expandByPoint(_vector$8);\n              } else {\n                _box$2.expandByPoint(_boxMorphTargets.min);\n                _box$2.expandByPoint(_boxMorphTargets.max);\n              }\n            }\n          }\n          _box$2.getCenter(center);\n          let maxRadiusSq = 0;\n          for (let i2 = 0, il = position.count; i2 < il; i2++) {\n            _vector$8.fromBufferAttribute(position, i2);\n            maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n          }\n          if (morphAttributesPosition) {\n            for (let i2 = 0, il = morphAttributesPosition.length; i2 < il; i2++) {\n              const morphAttribute = morphAttributesPosition[i2];\n              const morphTargetsRelative = this.morphTargetsRelative;\n              for (let j2 = 0, jl = morphAttribute.count; j2 < jl; j2++) {\n                _vector$8.fromBufferAttribute(morphAttribute, j2);\n                if (morphTargetsRelative) {\n                  _offset.fromBufferAttribute(position, j2);\n                  _vector$8.add(_offset);\n                }\n                maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n              }\n            }\n          }\n          this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n          if (isNaN(this.boundingSphere.radius)) {\n            console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n          }\n        }\n      }\n      computeTangents() {\n        const index = this.index;\n        const attributes = this.attributes;\n        if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) {\n          console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n          return;\n        }\n        const positionAttribute = attributes.position;\n        const normalAttribute = attributes.normal;\n        const uvAttribute = attributes.uv;\n        if (this.hasAttribute(\"tangent\") === false) {\n          this.setAttribute(\"tangent\", new BufferAttribute(new Float32Array(4 * positionAttribute.count), 4));\n        }\n        const tangentAttribute = this.getAttribute(\"tangent\");\n        const tan1 = [], tan2 = [];\n        for (let i2 = 0; i2 < positionAttribute.count; i2++) {\n          tan1[i2] = new Vector3();\n          tan2[i2] = new Vector3();\n        }\n        const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3();\n        function handleTriangle(a, b, c) {\n          vA.fromBufferAttribute(positionAttribute, a);\n          vB.fromBufferAttribute(positionAttribute, b);\n          vC.fromBufferAttribute(positionAttribute, c);\n          uvA.fromBufferAttribute(uvAttribute, a);\n          uvB.fromBufferAttribute(uvAttribute, b);\n          uvC.fromBufferAttribute(uvAttribute, c);\n          vB.sub(vA);\n          vC.sub(vA);\n          uvB.sub(uvA);\n          uvC.sub(uvA);\n          const r2 = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n          if (!isFinite(r2)) return;\n          sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r2);\n          tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r2);\n          tan1[a].add(sdir);\n          tan1[b].add(sdir);\n          tan1[c].add(sdir);\n          tan2[a].add(tdir);\n          tan2[b].add(tdir);\n          tan2[c].add(tdir);\n        }\n        let groups = this.groups;\n        if (groups.length === 0) {\n          groups = [{\n            start: 0,\n            count: index.count\n          }];\n        }\n        for (let i2 = 0, il = groups.length; i2 < il; ++i2) {\n          const group = groups[i2];\n          const start = group.start;\n          const count = group.count;\n          for (let j2 = start, jl = start + count; j2 < jl; j2 += 3) {\n            handleTriangle(\n              index.getX(j2 + 0),\n              index.getX(j2 + 1),\n              index.getX(j2 + 2)\n            );\n          }\n        }\n        const tmp2 = new Vector3(), tmp22 = new Vector3();\n        const n = new Vector3(), n2 = new Vector3();\n        function handleVertex(v2) {\n          n.fromBufferAttribute(normalAttribute, v2);\n          n2.copy(n);\n          const t2 = tan1[v2];\n          tmp2.copy(t2);\n          tmp2.sub(n.multiplyScalar(n.dot(t2))).normalize();\n          tmp22.crossVectors(n2, t2);\n          const test = tmp22.dot(tan2[v2]);\n          const w = test < 0 ? -1 : 1;\n          tangentAttribute.setXYZW(v2, tmp2.x, tmp2.y, tmp2.z, w);\n        }\n        for (let i2 = 0, il = groups.length; i2 < il; ++i2) {\n          const group = groups[i2];\n          const start = group.start;\n          const count = group.count;\n          for (let j2 = start, jl = start + count; j2 < jl; j2 += 3) {\n            handleVertex(index.getX(j2 + 0));\n            handleVertex(index.getX(j2 + 1));\n            handleVertex(index.getX(j2 + 2));\n          }\n        }\n      }\n      computeVertexNormals() {\n        const index = this.index;\n        const positionAttribute = this.getAttribute(\"position\");\n        if (positionAttribute !== void 0) {\n          let normalAttribute = this.getAttribute(\"normal\");\n          if (normalAttribute === void 0) {\n            normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n            this.setAttribute(\"normal\", normalAttribute);\n          } else {\n            for (let i2 = 0, il = normalAttribute.count; i2 < il; i2++) {\n              normalAttribute.setXYZ(i2, 0, 0, 0);\n            }\n          }\n          const pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n          const nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n          const cb = new Vector3(), ab = new Vector3();\n          if (index) {\n            for (let i2 = 0, il = index.count; i2 < il; i2 += 3) {\n              const vA = index.getX(i2 + 0);\n              const vB = index.getX(i2 + 1);\n              const vC = index.getX(i2 + 2);\n              pA.fromBufferAttribute(positionAttribute, vA);\n              pB.fromBufferAttribute(positionAttribute, vB);\n              pC.fromBufferAttribute(positionAttribute, vC);\n              cb.subVectors(pC, pB);\n              ab.subVectors(pA, pB);\n              cb.cross(ab);\n              nA.fromBufferAttribute(normalAttribute, vA);\n              nB.fromBufferAttribute(normalAttribute, vB);\n              nC.fromBufferAttribute(normalAttribute, vC);\n              nA.add(cb);\n              nB.add(cb);\n              nC.add(cb);\n              normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z);\n              normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n              normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n            }\n          } else {\n            for (let i2 = 0, il = positionAttribute.count; i2 < il; i2 += 3) {\n              pA.fromBufferAttribute(positionAttribute, i2 + 0);\n              pB.fromBufferAttribute(positionAttribute, i2 + 1);\n              pC.fromBufferAttribute(positionAttribute, i2 + 2);\n              cb.subVectors(pC, pB);\n              ab.subVectors(pA, pB);\n              cb.cross(ab);\n              normalAttribute.setXYZ(i2 + 0, cb.x, cb.y, cb.z);\n              normalAttribute.setXYZ(i2 + 1, cb.x, cb.y, cb.z);\n              normalAttribute.setXYZ(i2 + 2, cb.x, cb.y, cb.z);\n            }\n          }\n          this.normalizeNormals();\n          normalAttribute.needsUpdate = true;\n        }\n      }\n      normalizeNormals() {\n        const normals = this.attributes.normal;\n        for (let i2 = 0, il = normals.count; i2 < il; i2++) {\n          _vector$8.fromBufferAttribute(normals, i2);\n          _vector$8.normalize();\n          normals.setXYZ(i2, _vector$8.x, _vector$8.y, _vector$8.z);\n        }\n      }\n      toNonIndexed() {\n        function convertBufferAttribute(attribute, indices2) {\n          const array = attribute.array;\n          const itemSize = attribute.itemSize;\n          const normalized = attribute.normalized;\n          const array2 = new array.constructor(indices2.length * itemSize);\n          let index = 0, index2 = 0;\n          for (let i2 = 0, l2 = indices2.length; i2 < l2; i2++) {\n            if (attribute.isInterleavedBufferAttribute) {\n              index = indices2[i2] * attribute.data.stride + attribute.offset;\n            } else {\n              index = indices2[i2] * itemSize;\n            }\n            for (let j2 = 0; j2 < itemSize; j2++) {\n              array2[index2++] = array[index++];\n            }\n          }\n          return new BufferAttribute(array2, itemSize, normalized);\n        }\n        if (this.index === null) {\n          console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\");\n          return this;\n        }\n        const geometry2 = new _BufferGeometry();\n        const indices = this.index.array;\n        const attributes = this.attributes;\n        for (const name in attributes) {\n          const attribute = attributes[name];\n          const newAttribute = convertBufferAttribute(attribute, indices);\n          geometry2.setAttribute(name, newAttribute);\n        }\n        const morphAttributes = this.morphAttributes;\n        for (const name in morphAttributes) {\n          const morphArray = [];\n          const morphAttribute = morphAttributes[name];\n          for (let i2 = 0, il = morphAttribute.length; i2 < il; i2++) {\n            const attribute = morphAttribute[i2];\n            const newAttribute = convertBufferAttribute(attribute, indices);\n            morphArray.push(newAttribute);\n          }\n          geometry2.morphAttributes[name] = morphArray;\n        }\n        geometry2.morphTargetsRelative = this.morphTargetsRelative;\n        const groups = this.groups;\n        for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n          const group = groups[i2];\n          geometry2.addGroup(group.start, group.count, group.materialIndex);\n        }\n        return geometry2;\n      }\n      toJSON() {\n        const data = {\n          metadata: {\n            version: 4.6,\n            type: \"BufferGeometry\",\n            generator: \"BufferGeometry.toJSON\"\n          }\n        };\n        data.uuid = this.uuid;\n        data.type = this.type;\n        if (this.name !== \"\") data.name = this.name;\n        if (Object.keys(this.userData).length > 0) data.userData = this.userData;\n        if (this.parameters !== void 0) {\n          const parameters = this.parameters;\n          for (const key in parameters) {\n            if (parameters[key] !== void 0) data[key] = parameters[key];\n          }\n          return data;\n        }\n        data.data = { attributes: {} };\n        const index = this.index;\n        if (index !== null) {\n          data.data.index = {\n            type: index.array.constructor.name,\n            array: Array.prototype.slice.call(index.array)\n          };\n        }\n        const attributes = this.attributes;\n        for (const key in attributes) {\n          const attribute = attributes[key];\n          data.data.attributes[key] = attribute.toJSON(data.data);\n        }\n        const morphAttributes = {};\n        let hasMorphAttributes = false;\n        for (const key in this.morphAttributes) {\n          const attributeArray = this.morphAttributes[key];\n          const array = [];\n          for (let i2 = 0, il = attributeArray.length; i2 < il; i2++) {\n            const attribute = attributeArray[i2];\n            array.push(attribute.toJSON(data.data));\n          }\n          if (array.length > 0) {\n            morphAttributes[key] = array;\n            hasMorphAttributes = true;\n          }\n        }\n        if (hasMorphAttributes) {\n          data.data.morphAttributes = morphAttributes;\n          data.data.morphTargetsRelative = this.morphTargetsRelative;\n        }\n        const groups = this.groups;\n        if (groups.length > 0) {\n          data.data.groups = JSON.parse(JSON.stringify(groups));\n        }\n        const boundingSphere = this.boundingSphere;\n        if (boundingSphere !== null) {\n          data.data.boundingSphere = {\n            center: boundingSphere.center.toArray(),\n            radius: boundingSphere.radius\n          };\n        }\n        return data;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(source) {\n        this.index = null;\n        this.attributes = {};\n        this.morphAttributes = {};\n        this.groups = [];\n        this.boundingBox = null;\n        this.boundingSphere = null;\n        const data = {};\n        this.name = source.name;\n        const index = source.index;\n        if (index !== null) {\n          this.setIndex(index.clone(data));\n        }\n        const attributes = source.attributes;\n        for (const name in attributes) {\n          const attribute = attributes[name];\n          this.setAttribute(name, attribute.clone(data));\n        }\n        const morphAttributes = source.morphAttributes;\n        for (const name in morphAttributes) {\n          const array = [];\n          const morphAttribute = morphAttributes[name];\n          for (let i2 = 0, l2 = morphAttribute.length; i2 < l2; i2++) {\n            array.push(morphAttribute[i2].clone(data));\n          }\n          this.morphAttributes[name] = array;\n        }\n        this.morphTargetsRelative = source.morphTargetsRelative;\n        const groups = source.groups;\n        for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n          const group = groups[i2];\n          this.addGroup(group.start, group.count, group.materialIndex);\n        }\n        const boundingBox = source.boundingBox;\n        if (boundingBox !== null) {\n          this.boundingBox = boundingBox.clone();\n        }\n        const boundingSphere = source.boundingSphere;\n        if (boundingSphere !== null) {\n          this.boundingSphere = boundingSphere.clone();\n        }\n        this.drawRange.start = source.drawRange.start;\n        this.drawRange.count = source.drawRange.count;\n        this.userData = source.userData;\n        return this;\n      }\n      dispose() {\n        this.dispatchEvent({ type: \"dispose\" });\n      }\n    };\n    _inverseMatrix$3 = /* @__PURE__ */ new Matrix4();\n    _ray$3 = /* @__PURE__ */ new Ray();\n    _sphere$6 = /* @__PURE__ */ new Sphere();\n    _sphereHitAt = /* @__PURE__ */ new Vector3();\n    _vA$1 = /* @__PURE__ */ new Vector3();\n    _vB$1 = /* @__PURE__ */ new Vector3();\n    _vC$1 = /* @__PURE__ */ new Vector3();\n    _tempA = /* @__PURE__ */ new Vector3();\n    _morphA = /* @__PURE__ */ new Vector3();\n    _intersectionPoint = /* @__PURE__ */ new Vector3();\n    _intersectionPointWorld = /* @__PURE__ */ new Vector3();\n    Mesh = class extends Object3D {\n      constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n        super();\n        this.isMesh = true;\n        this.type = \"Mesh\";\n        this.geometry = geometry;\n        this.material = material;\n        this.updateMorphTargets();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        if (source.morphTargetInfluences !== void 0) {\n          this.morphTargetInfluences = source.morphTargetInfluences.slice();\n        }\n        if (source.morphTargetDictionary !== void 0) {\n          this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n        }\n        this.material = Array.isArray(source.material) ? source.material.slice() : source.material;\n        this.geometry = source.geometry;\n        return this;\n      }\n      updateMorphTargets() {\n        const geometry = this.geometry;\n        const morphAttributes = geometry.morphAttributes;\n        const keys = Object.keys(morphAttributes);\n        if (keys.length > 0) {\n          const morphAttribute = morphAttributes[keys[0]];\n          if (morphAttribute !== void 0) {\n            this.morphTargetInfluences = [];\n            this.morphTargetDictionary = {};\n            for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n              const name = morphAttribute[m].name || String(m);\n              this.morphTargetInfluences.push(0);\n              this.morphTargetDictionary[name] = m;\n            }\n          }\n        }\n      }\n      getVertexPosition(index, target2) {\n        const geometry = this.geometry;\n        const position = geometry.attributes.position;\n        const morphPosition = geometry.morphAttributes.position;\n        const morphTargetsRelative = geometry.morphTargetsRelative;\n        target2.fromBufferAttribute(position, index);\n        const morphInfluences = this.morphTargetInfluences;\n        if (morphPosition && morphInfluences) {\n          _morphA.set(0, 0, 0);\n          for (let i2 = 0, il = morphPosition.length; i2 < il; i2++) {\n            const influence = morphInfluences[i2];\n            const morphAttribute = morphPosition[i2];\n            if (influence === 0) continue;\n            _tempA.fromBufferAttribute(morphAttribute, index);\n            if (morphTargetsRelative) {\n              _morphA.addScaledVector(_tempA, influence);\n            } else {\n              _morphA.addScaledVector(_tempA.sub(target2), influence);\n            }\n          }\n          target2.add(_morphA);\n        }\n        return target2;\n      }\n      raycast(raycaster, intersects2) {\n        const geometry = this.geometry;\n        const material = this.material;\n        const matrixWorld = this.matrixWorld;\n        if (material === void 0) return;\n        if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n        _sphere$6.copy(geometry.boundingSphere);\n        _sphere$6.applyMatrix4(matrixWorld);\n        _ray$3.copy(raycaster.ray).recast(raycaster.near);\n        if (_sphere$6.containsPoint(_ray$3.origin) === false) {\n          if (_ray$3.intersectSphere(_sphere$6, _sphereHitAt) === null) return;\n          if (_ray$3.origin.distanceToSquared(_sphereHitAt) > __pow(raycaster.far - raycaster.near, 2)) return;\n        }\n        _inverseMatrix$3.copy(matrixWorld).invert();\n        _ray$3.copy(raycaster.ray).applyMatrix4(_inverseMatrix$3);\n        if (geometry.boundingBox !== null) {\n          if (_ray$3.intersectsBox(geometry.boundingBox) === false) return;\n        }\n        this._computeIntersections(raycaster, intersects2, _ray$3);\n      }\n      _computeIntersections(raycaster, intersects2, rayLocalSpace) {\n        let intersection;\n        const geometry = this.geometry;\n        const material = this.material;\n        const index = geometry.index;\n        const position = geometry.attributes.position;\n        const uv = geometry.attributes.uv;\n        const uv1 = geometry.attributes.uv1;\n        const normal = geometry.attributes.normal;\n        const groups = geometry.groups;\n        const drawRange = geometry.drawRange;\n        if (index !== null) {\n          if (Array.isArray(material)) {\n            for (let i2 = 0, il = groups.length; i2 < il; i2++) {\n              const group = groups[i2];\n              const groupMaterial = material[group.materialIndex];\n              const start = Math.max(group.start, drawRange.start);\n              const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n              for (let j2 = start, jl = end; j2 < jl; j2 += 3) {\n                const a = index.getX(j2);\n                const b = index.getX(j2 + 1);\n                const c = index.getX(j2 + 2);\n                intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n                if (intersection) {\n                  intersection.faceIndex = Math.floor(j2 / 3);\n                  intersection.face.materialIndex = group.materialIndex;\n                  intersects2.push(intersection);\n                }\n              }\n            }\n          } else {\n            const start = Math.max(0, drawRange.start);\n            const end = Math.min(index.count, drawRange.start + drawRange.count);\n            for (let i2 = start, il = end; i2 < il; i2 += 3) {\n              const a = index.getX(i2);\n              const b = index.getX(i2 + 1);\n              const c = index.getX(i2 + 2);\n              intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n              if (intersection) {\n                intersection.faceIndex = Math.floor(i2 / 3);\n                intersects2.push(intersection);\n              }\n            }\n          }\n        } else if (position !== void 0) {\n          if (Array.isArray(material)) {\n            for (let i2 = 0, il = groups.length; i2 < il; i2++) {\n              const group = groups[i2];\n              const groupMaterial = material[group.materialIndex];\n              const start = Math.max(group.start, drawRange.start);\n              const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n              for (let j2 = start, jl = end; j2 < jl; j2 += 3) {\n                const a = j2;\n                const b = j2 + 1;\n                const c = j2 + 2;\n                intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n                if (intersection) {\n                  intersection.faceIndex = Math.floor(j2 / 3);\n                  intersection.face.materialIndex = group.materialIndex;\n                  intersects2.push(intersection);\n                }\n              }\n            }\n          } else {\n            const start = Math.max(0, drawRange.start);\n            const end = Math.min(position.count, drawRange.start + drawRange.count);\n            for (let i2 = start, il = end; i2 < il; i2 += 3) {\n              const a = i2;\n              const b = i2 + 1;\n              const c = i2 + 2;\n              intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c);\n              if (intersection) {\n                intersection.faceIndex = Math.floor(i2 / 3);\n                intersects2.push(intersection);\n              }\n            }\n          }\n        }\n      }\n    };\n    BoxGeometry = class _BoxGeometry extends BufferGeometry {\n      constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n        super();\n        this.type = \"BoxGeometry\";\n        this.parameters = {\n          width,\n          height,\n          depth,\n          widthSegments,\n          heightSegments,\n          depthSegments\n        };\n        const scope = this;\n        widthSegments = Math.floor(widthSegments);\n        heightSegments = Math.floor(heightSegments);\n        depthSegments = Math.floor(depthSegments);\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        let numberOfVertices = 0;\n        let groupStart = 0;\n        buildPlane(\"z\", \"y\", \"x\", -1, -1, depth, height, width, depthSegments, heightSegments, 0);\n        buildPlane(\"z\", \"y\", \"x\", 1, -1, depth, height, -width, depthSegments, heightSegments, 1);\n        buildPlane(\"x\", \"z\", \"y\", 1, 1, width, depth, height, widthSegments, depthSegments, 2);\n        buildPlane(\"x\", \"z\", \"y\", 1, -1, width, depth, -height, widthSegments, depthSegments, 3);\n        buildPlane(\"x\", \"y\", \"z\", 1, -1, width, height, depth, widthSegments, heightSegments, 4);\n        buildPlane(\"x\", \"y\", \"z\", -1, -1, width, height, -depth, widthSegments, heightSegments, 5);\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n        function buildPlane(u3, v2, w, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) {\n          const segmentWidth = width2 / gridX;\n          const segmentHeight = height2 / gridY;\n          const widthHalf = width2 / 2;\n          const heightHalf = height2 / 2;\n          const depthHalf = depth2 / 2;\n          const gridX1 = gridX + 1;\n          const gridY1 = gridY + 1;\n          let vertexCounter = 0;\n          let groupCount = 0;\n          const vector = new Vector3();\n          for (let iy = 0; iy < gridY1; iy++) {\n            const y2 = iy * segmentHeight - heightHalf;\n            for (let ix = 0; ix < gridX1; ix++) {\n              const x = ix * segmentWidth - widthHalf;\n              vector[u3] = x * udir;\n              vector[v2] = y2 * vdir;\n              vector[w] = depthHalf;\n              vertices.push(vector.x, vector.y, vector.z);\n              vector[u3] = 0;\n              vector[v2] = 0;\n              vector[w] = depth2 > 0 ? 1 : -1;\n              normals.push(vector.x, vector.y, vector.z);\n              uvs.push(ix / gridX);\n              uvs.push(1 - iy / gridY);\n              vertexCounter += 1;\n            }\n          }\n          for (let iy = 0; iy < gridY; iy++) {\n            for (let ix = 0; ix < gridX; ix++) {\n              const a = numberOfVertices + ix + gridX1 * iy;\n              const b = numberOfVertices + ix + gridX1 * (iy + 1);\n              const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n              const d = numberOfVertices + (ix + 1) + gridX1 * iy;\n              indices.push(a, b, d);\n              indices.push(b, c, d);\n              groupCount += 6;\n            }\n          }\n          scope.addGroup(groupStart, groupCount, materialIndex);\n          groupStart += groupCount;\n          numberOfVertices += vertexCounter;\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n      }\n    };\n    UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n    default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n    default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n    ShaderMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isShaderMaterial = true;\n        this.type = \"ShaderMaterial\";\n        this.defines = {};\n        this.uniforms = {};\n        this.uniformsGroups = [];\n        this.vertexShader = default_vertex;\n        this.fragmentShader = default_fragment;\n        this.linewidth = 1;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.fog = false;\n        this.lights = false;\n        this.clipping = false;\n        this.forceSinglePass = true;\n        this.extensions = {\n          clipCullDistance: false,\n          // set to use vertex shader clipping\n          multiDraw: false\n          // set to use vertex shader multi_draw / enable gl_DrawID\n        };\n        this.defaultAttributeValues = {\n          \"color\": [1, 1, 1],\n          \"uv\": [0, 0],\n          \"uv1\": [0, 0]\n        };\n        this.index0AttributeName = void 0;\n        this.uniformsNeedUpdate = false;\n        this.glslVersion = null;\n        if (parameters !== void 0) {\n          this.setValues(parameters);\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.fragmentShader = source.fragmentShader;\n        this.vertexShader = source.vertexShader;\n        this.uniforms = cloneUniforms(source.uniforms);\n        this.uniformsGroups = cloneUniformsGroups(source.uniformsGroups);\n        this.defines = Object.assign({}, source.defines);\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.fog = source.fog;\n        this.lights = source.lights;\n        this.clipping = source.clipping;\n        this.extensions = Object.assign({}, source.extensions);\n        this.glslVersion = source.glslVersion;\n        return this;\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        data.glslVersion = this.glslVersion;\n        data.uniforms = {};\n        for (const name in this.uniforms) {\n          const uniform = this.uniforms[name];\n          const value = uniform.value;\n          if (value && value.isTexture) {\n            data.uniforms[name] = {\n              type: \"t\",\n              value: value.toJSON(meta).uuid\n            };\n          } else if (value && value.isColor) {\n            data.uniforms[name] = {\n              type: \"c\",\n              value: value.getHex()\n            };\n          } else if (value && value.isVector2) {\n            data.uniforms[name] = {\n              type: \"v2\",\n              value: value.toArray()\n            };\n          } else if (value && value.isVector3) {\n            data.uniforms[name] = {\n              type: \"v3\",\n              value: value.toArray()\n            };\n          } else if (value && value.isVector4) {\n            data.uniforms[name] = {\n              type: \"v4\",\n              value: value.toArray()\n            };\n          } else if (value && value.isMatrix3) {\n            data.uniforms[name] = {\n              type: \"m3\",\n              value: value.toArray()\n            };\n          } else if (value && value.isMatrix4) {\n            data.uniforms[name] = {\n              type: \"m4\",\n              value: value.toArray()\n            };\n          } else {\n            data.uniforms[name] = {\n              value\n            };\n          }\n        }\n        if (Object.keys(this.defines).length > 0) data.defines = this.defines;\n        data.vertexShader = this.vertexShader;\n        data.fragmentShader = this.fragmentShader;\n        data.lights = this.lights;\n        data.clipping = this.clipping;\n        const extensions = {};\n        for (const key in this.extensions) {\n          if (this.extensions[key] === true) extensions[key] = true;\n        }\n        if (Object.keys(extensions).length > 0) data.extensions = extensions;\n        return data;\n      }\n    };\n    Camera = class extends Object3D {\n      constructor() {\n        super();\n        this.isCamera = true;\n        this.type = \"Camera\";\n        this.matrixWorldInverse = new Matrix4();\n        this.projectionMatrix = new Matrix4();\n        this.projectionMatrixInverse = new Matrix4();\n        this.coordinateSystem = WebGLCoordinateSystem;\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.matrixWorldInverse.copy(source.matrixWorldInverse);\n        this.projectionMatrix.copy(source.projectionMatrix);\n        this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n        this.coordinateSystem = source.coordinateSystem;\n        return this;\n      }\n      getWorldDirection(target2) {\n        return super.getWorldDirection(target2).negate();\n      }\n      updateMatrixWorld(force) {\n        super.updateMatrixWorld(force);\n        this.matrixWorldInverse.copy(this.matrixWorld).invert();\n      }\n      updateWorldMatrix(updateParents, updateChildren) {\n        super.updateWorldMatrix(updateParents, updateChildren);\n        this.matrixWorldInverse.copy(this.matrixWorld).invert();\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    _v3$1 = /* @__PURE__ */ new Vector3();\n    _minTarget = /* @__PURE__ */ new Vector2();\n    _maxTarget = /* @__PURE__ */ new Vector2();\n    PerspectiveCamera = class extends Camera {\n      constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) {\n        super();\n        this.isPerspectiveCamera = true;\n        this.type = \"PerspectiveCamera\";\n        this.fov = fov2;\n        this.zoom = 1;\n        this.near = near;\n        this.far = far;\n        this.focus = 10;\n        this.aspect = aspect2;\n        this.view = null;\n        this.filmGauge = 35;\n        this.filmOffset = 0;\n        this.updateProjectionMatrix();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.fov = source.fov;\n        this.zoom = source.zoom;\n        this.near = source.near;\n        this.far = source.far;\n        this.focus = source.focus;\n        this.aspect = source.aspect;\n        this.view = source.view === null ? null : Object.assign({}, source.view);\n        this.filmGauge = source.filmGauge;\n        this.filmOffset = source.filmOffset;\n        return this;\n      }\n      /**\n       * Sets the FOV by focal length in respect to the current .filmGauge.\n       *\n       * The default film gauge is 35, so that the focal length can be specified for\n       * a 35mm (full frame) camera.\n       *\n       * Values for focal length and film gauge must have the same unit.\n       */\n      setFocalLength(focalLength) {\n        const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n        this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n        this.updateProjectionMatrix();\n      }\n      /**\n       * Calculates the focal length from the current .fov and .filmGauge.\n       */\n      getFocalLength() {\n        const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n        return 0.5 * this.getFilmHeight() / vExtentSlope;\n      }\n      getEffectiveFOV() {\n        return RAD2DEG * 2 * Math.atan(\n          Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom\n        );\n      }\n      getFilmWidth() {\n        return this.filmGauge * Math.min(this.aspect, 1);\n      }\n      getFilmHeight() {\n        return this.filmGauge / Math.max(this.aspect, 1);\n      }\n      /**\n       * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n       * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n       */\n      getViewBounds(distance, minTarget, maxTarget) {\n        _v3$1.set(-1, -1, 0.5).applyMatrix4(this.projectionMatrixInverse);\n        minTarget.set(_v3$1.x, _v3$1.y).multiplyScalar(-distance / _v3$1.z);\n        _v3$1.set(1, 1, 0.5).applyMatrix4(this.projectionMatrixInverse);\n        maxTarget.set(_v3$1.x, _v3$1.y).multiplyScalar(-distance / _v3$1.z);\n      }\n      /**\n       * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n       * Copies the result into the target Vector2, where x is width and y is height.\n       */\n      getViewSize(distance, target2) {\n        this.getViewBounds(distance, _minTarget, _maxTarget);\n        return target2.subVectors(_maxTarget, _minTarget);\n      }\n      /**\n       * Sets an offset in a larger frustum. This is useful for multi-window or\n       * multi-monitor/multi-machine setups.\n       *\n       * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n       * the monitors are in grid like this\n       *\n       *   +---+---+---+\n       *   | A | B | C |\n       *   +---+---+---+\n       *   | D | E | F |\n       *   +---+---+---+\n       *\n       * then for each monitor you would call it like this\n       *\n       *   const w = 1920;\n       *   const h = 1080;\n       *   const fullWidth = w * 3;\n       *   const fullHeight = h * 2;\n       *\n       *   --A--\n       *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n       *   --B--\n       *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n       *   --C--\n       *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n       *   --D--\n       *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n       *   --E--\n       *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n       *   --F--\n       *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n       *\n       *   Note there is no reason monitors have to be the same size or in a grid.\n       */\n      setViewOffset(fullWidth, fullHeight, x, y2, width, height) {\n        this.aspect = fullWidth / fullHeight;\n        if (this.view === null) {\n          this.view = {\n            enabled: true,\n            fullWidth: 1,\n            fullHeight: 1,\n            offsetX: 0,\n            offsetY: 0,\n            width: 1,\n            height: 1\n          };\n        }\n        this.view.enabled = true;\n        this.view.fullWidth = fullWidth;\n        this.view.fullHeight = fullHeight;\n        this.view.offsetX = x;\n        this.view.offsetY = y2;\n        this.view.width = width;\n        this.view.height = height;\n        this.updateProjectionMatrix();\n      }\n      clearViewOffset() {\n        if (this.view !== null) {\n          this.view.enabled = false;\n        }\n        this.updateProjectionMatrix();\n      }\n      updateProjectionMatrix() {\n        const near = this.near;\n        let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n        let height = 2 * top;\n        let width = this.aspect * height;\n        let left = -0.5 * width;\n        const view = this.view;\n        if (this.view !== null && this.view.enabled) {\n          const fullWidth = view.fullWidth, fullHeight = view.fullHeight;\n          left += view.offsetX * width / fullWidth;\n          top -= view.offsetY * height / fullHeight;\n          width *= view.width / fullWidth;\n          height *= view.height / fullHeight;\n        }\n        const skew = this.filmOffset;\n        if (skew !== 0) left += near * skew / this.getFilmWidth();\n        this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far, this.coordinateSystem);\n        this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        data.object.fov = this.fov;\n        data.object.zoom = this.zoom;\n        data.object.near = this.near;\n        data.object.far = this.far;\n        data.object.focus = this.focus;\n        data.object.aspect = this.aspect;\n        if (this.view !== null) data.object.view = Object.assign({}, this.view);\n        data.object.filmGauge = this.filmGauge;\n        data.object.filmOffset = this.filmOffset;\n        return data;\n      }\n    };\n    fov = -90;\n    aspect = 1;\n    CubeCamera = class extends Object3D {\n      constructor(near, far, renderTarget) {\n        super();\n        this.type = \"CubeCamera\";\n        this.renderTarget = renderTarget;\n        this.coordinateSystem = null;\n        this.activeMipmapLevel = 0;\n        const cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n        cameraPX.layers = this.layers;\n        this.add(cameraPX);\n        const cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n        cameraNX.layers = this.layers;\n        this.add(cameraNX);\n        const cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n        cameraPY.layers = this.layers;\n        this.add(cameraPY);\n        const cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n        cameraNY.layers = this.layers;\n        this.add(cameraNY);\n        const cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n        cameraPZ.layers = this.layers;\n        this.add(cameraPZ);\n        const cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n        cameraNZ.layers = this.layers;\n        this.add(cameraNZ);\n      }\n      updateCoordinateSystem() {\n        const coordinateSystem = this.coordinateSystem;\n        const cameras = this.children.concat();\n        const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = cameras;\n        for (const camera of cameras) this.remove(camera);\n        if (coordinateSystem === WebGLCoordinateSystem) {\n          cameraPX.up.set(0, 1, 0);\n          cameraPX.lookAt(1, 0, 0);\n          cameraNX.up.set(0, 1, 0);\n          cameraNX.lookAt(-1, 0, 0);\n          cameraPY.up.set(0, 0, -1);\n          cameraPY.lookAt(0, 1, 0);\n          cameraNY.up.set(0, 0, 1);\n          cameraNY.lookAt(0, -1, 0);\n          cameraPZ.up.set(0, 1, 0);\n          cameraPZ.lookAt(0, 0, 1);\n          cameraNZ.up.set(0, 1, 0);\n          cameraNZ.lookAt(0, 0, -1);\n        } else if (coordinateSystem === WebGPUCoordinateSystem) {\n          cameraPX.up.set(0, -1, 0);\n          cameraPX.lookAt(-1, 0, 0);\n          cameraNX.up.set(0, -1, 0);\n          cameraNX.lookAt(1, 0, 0);\n          cameraPY.up.set(0, 0, 1);\n          cameraPY.lookAt(0, 1, 0);\n          cameraNY.up.set(0, 0, -1);\n          cameraNY.lookAt(0, -1, 0);\n          cameraPZ.up.set(0, -1, 0);\n          cameraPZ.lookAt(0, 0, 1);\n          cameraNZ.up.set(0, -1, 0);\n          cameraNZ.lookAt(0, 0, -1);\n        } else {\n          throw new Error(\"THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: \" + coordinateSystem);\n        }\n        for (const camera of cameras) {\n          this.add(camera);\n          camera.updateMatrixWorld();\n        }\n      }\n      update(renderer, scene) {\n        if (this.parent === null) this.updateMatrixWorld();\n        const { renderTarget, activeMipmapLevel } = this;\n        if (this.coordinateSystem !== renderer.coordinateSystem) {\n          this.coordinateSystem = renderer.coordinateSystem;\n          this.updateCoordinateSystem();\n        }\n        const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n        const currentRenderTarget = renderer.getRenderTarget();\n        const currentActiveCubeFace = renderer.getActiveCubeFace();\n        const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n        const currentXrEnabled = renderer.xr.enabled;\n        renderer.xr.enabled = false;\n        const generateMipmaps = renderTarget.texture.generateMipmaps;\n        renderTarget.texture.generateMipmaps = false;\n        renderer.setRenderTarget(renderTarget, 0, activeMipmapLevel);\n        renderer.render(scene, cameraPX);\n        renderer.setRenderTarget(renderTarget, 1, activeMipmapLevel);\n        renderer.render(scene, cameraNX);\n        renderer.setRenderTarget(renderTarget, 2, activeMipmapLevel);\n        renderer.render(scene, cameraPY);\n        renderer.setRenderTarget(renderTarget, 3, activeMipmapLevel);\n        renderer.render(scene, cameraNY);\n        renderer.setRenderTarget(renderTarget, 4, activeMipmapLevel);\n        renderer.render(scene, cameraPZ);\n        renderTarget.texture.generateMipmaps = generateMipmaps;\n        renderer.setRenderTarget(renderTarget, 5, activeMipmapLevel);\n        renderer.render(scene, cameraNZ);\n        renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n        renderer.xr.enabled = currentXrEnabled;\n        renderTarget.texture.needsPMREMUpdate = true;\n      }\n    };\n    CubeTexture = class extends Texture {\n      constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace) {\n        images = images !== void 0 ? images : [];\n        mapping = mapping !== void 0 ? mapping : CubeReflectionMapping;\n        super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace);\n        this.isCubeTexture = true;\n        this.flipY = false;\n      }\n      get images() {\n        return this.image;\n      }\n      set images(value) {\n        this.image = value;\n      }\n    };\n    WebGLCubeRenderTarget = class extends WebGLRenderTarget {\n      constructor(size = 1, options = {}) {\n        super(size, size, options);\n        this.isWebGLCubeRenderTarget = true;\n        const image = { width: size, height: size, depth: 1 };\n        const images = [image, image, image, image, image, image];\n        this.texture = new CubeTexture(images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace);\n        this.texture.isRenderTargetTexture = true;\n        this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n        this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n      }\n      fromEquirectangularTexture(renderer, texture) {\n        this.texture.type = texture.type;\n        this.texture.colorSpace = texture.colorSpace;\n        this.texture.generateMipmaps = texture.generateMipmaps;\n        this.texture.minFilter = texture.minFilter;\n        this.texture.magFilter = texture.magFilter;\n        const shader = {\n          uniforms: {\n            tEquirect: { value: null }\n          },\n          vertexShader: (\n            /* glsl */\n            `\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`\n          ),\n          fragmentShader: (\n            /* glsl */\n            `\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n          )\n        };\n        const geometry = new BoxGeometry(5, 5, 5);\n        const material = new ShaderMaterial({\n          name: \"CubemapFromEquirect\",\n          uniforms: cloneUniforms(shader.uniforms),\n          vertexShader: shader.vertexShader,\n          fragmentShader: shader.fragmentShader,\n          side: BackSide,\n          blending: NoBlending\n        });\n        material.uniforms.tEquirect.value = texture;\n        const mesh = new Mesh(geometry, material);\n        const currentMinFilter = texture.minFilter;\n        if (texture.minFilter === LinearMipmapLinearFilter) texture.minFilter = LinearFilter;\n        const camera = new CubeCamera(1, 10, this);\n        camera.update(renderer, mesh);\n        texture.minFilter = currentMinFilter;\n        mesh.geometry.dispose();\n        mesh.material.dispose();\n        return this;\n      }\n      clear(renderer, color, depth, stencil) {\n        const currentRenderTarget = renderer.getRenderTarget();\n        for (let i2 = 0; i2 < 6; i2++) {\n          renderer.setRenderTarget(this, i2);\n          renderer.clear(color, depth, stencil);\n        }\n        renderer.setRenderTarget(currentRenderTarget);\n      }\n    };\n    _vector1 = /* @__PURE__ */ new Vector3();\n    _vector2 = /* @__PURE__ */ new Vector3();\n    _normalMatrix = /* @__PURE__ */ new Matrix3();\n    Plane = class {\n      constructor(normal = new Vector3(1, 0, 0), constant = 0) {\n        this.isPlane = true;\n        this.normal = normal;\n        this.constant = constant;\n      }\n      set(normal, constant) {\n        this.normal.copy(normal);\n        this.constant = constant;\n        return this;\n      }\n      setComponents(x, y2, z2, w) {\n        this.normal.set(x, y2, z2);\n        this.constant = w;\n        return this;\n      }\n      setFromNormalAndCoplanarPoint(normal, point) {\n        this.normal.copy(normal);\n        this.constant = -point.dot(this.normal);\n        return this;\n      }\n      setFromCoplanarPoints(a, b, c) {\n        const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize();\n        this.setFromNormalAndCoplanarPoint(normal, a);\n        return this;\n      }\n      copy(plane) {\n        this.normal.copy(plane.normal);\n        this.constant = plane.constant;\n        return this;\n      }\n      normalize() {\n        const inverseNormalLength = 1 / this.normal.length();\n        this.normal.multiplyScalar(inverseNormalLength);\n        this.constant *= inverseNormalLength;\n        return this;\n      }\n      negate() {\n        this.constant *= -1;\n        this.normal.negate();\n        return this;\n      }\n      distanceToPoint(point) {\n        return this.normal.dot(point) + this.constant;\n      }\n      distanceToSphere(sphere) {\n        return this.distanceToPoint(sphere.center) - sphere.radius;\n      }\n      projectPoint(point, target2) {\n        return target2.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point));\n      }\n      intersectLine(line, target2) {\n        const direction = line.delta(_vector1);\n        const denominator = this.normal.dot(direction);\n        if (denominator === 0) {\n          if (this.distanceToPoint(line.start) === 0) {\n            return target2.copy(line.start);\n          }\n          return null;\n        }\n        const t2 = -(line.start.dot(this.normal) + this.constant) / denominator;\n        if (t2 < 0 || t2 > 1) {\n          return null;\n        }\n        return target2.copy(line.start).addScaledVector(direction, t2);\n      }\n      intersectsLine(line) {\n        const startSign = this.distanceToPoint(line.start);\n        const endSign = this.distanceToPoint(line.end);\n        return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n      }\n      intersectsBox(box) {\n        return box.intersectsPlane(this);\n      }\n      intersectsSphere(sphere) {\n        return sphere.intersectsPlane(this);\n      }\n      coplanarPoint(target2) {\n        return target2.copy(this.normal).multiplyScalar(-this.constant);\n      }\n      applyMatrix4(matrix2, optionalNormalMatrix) {\n        const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix2);\n        const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix2);\n        const normal = this.normal.applyMatrix3(normalMatrix).normalize();\n        this.constant = -referencePoint.dot(normal);\n        return this;\n      }\n      translate(offset) {\n        this.constant -= offset.dot(this.normal);\n        return this;\n      }\n      equals(plane) {\n        return plane.normal.equals(this.normal) && plane.constant === this.constant;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    _sphere$5 = /* @__PURE__ */ new Sphere();\n    _vector$7 = /* @__PURE__ */ new Vector3();\n    Frustum = class {\n      constructor(p0 = new Plane(), p1 = new Plane(), p22 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n        this.planes = [p0, p1, p22, p3, p4, p5];\n      }\n      set(p0, p1, p22, p3, p4, p5) {\n        const planes = this.planes;\n        planes[0].copy(p0);\n        planes[1].copy(p1);\n        planes[2].copy(p22);\n        planes[3].copy(p3);\n        planes[4].copy(p4);\n        planes[5].copy(p5);\n        return this;\n      }\n      copy(frustum) {\n        const planes = this.planes;\n        for (let i2 = 0; i2 < 6; i2++) {\n          planes[i2].copy(frustum.planes[i2]);\n        }\n        return this;\n      }\n      setFromProjectionMatrix(m, coordinateSystem = WebGLCoordinateSystem) {\n        const planes = this.planes;\n        const me = m.elements;\n        const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\n        const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\n        const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\n        const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\n        planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n        planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n        planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n        planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n        planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n        if (coordinateSystem === WebGLCoordinateSystem) {\n          planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n        } else if (coordinateSystem === WebGPUCoordinateSystem) {\n          planes[5].setComponents(me2, me6, me10, me14).normalize();\n        } else {\n          throw new Error(\"THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: \" + coordinateSystem);\n        }\n        return this;\n      }\n      intersectsObject(object) {\n        if (object.boundingSphere !== void 0) {\n          if (object.boundingSphere === null) object.computeBoundingSphere();\n          _sphere$5.copy(object.boundingSphere).applyMatrix4(object.matrixWorld);\n        } else {\n          const geometry = object.geometry;\n          if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n          _sphere$5.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n        }\n        return this.intersectsSphere(_sphere$5);\n      }\n      intersectsSprite(sprite) {\n        _sphere$5.center.set(0, 0, 0);\n        _sphere$5.radius = 0.7071067811865476;\n        _sphere$5.applyMatrix4(sprite.matrixWorld);\n        return this.intersectsSphere(_sphere$5);\n      }\n      intersectsSphere(sphere) {\n        const planes = this.planes;\n        const center = sphere.center;\n        const negRadius = -sphere.radius;\n        for (let i2 = 0; i2 < 6; i2++) {\n          const distance = planes[i2].distanceToPoint(center);\n          if (distance < negRadius) {\n            return false;\n          }\n        }\n        return true;\n      }\n      intersectsBox(box) {\n        const planes = this.planes;\n        for (let i2 = 0; i2 < 6; i2++) {\n          const plane = planes[i2];\n          _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n          _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n          _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n          if (plane.distanceToPoint(_vector$7) < 0) {\n            return false;\n          }\n        }\n        return true;\n      }\n      containsPoint(point) {\n        const planes = this.planes;\n        for (let i2 = 0; i2 < 6; i2++) {\n          if (planes[i2].distanceToPoint(point) < 0) {\n            return false;\n          }\n        }\n        return true;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    PlaneGeometry = class _PlaneGeometry extends BufferGeometry {\n      constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n        super();\n        this.type = \"PlaneGeometry\";\n        this.parameters = {\n          width,\n          height,\n          widthSegments,\n          heightSegments\n        };\n        const width_half = width / 2;\n        const height_half = height / 2;\n        const gridX = Math.floor(widthSegments);\n        const gridY = Math.floor(heightSegments);\n        const gridX1 = gridX + 1;\n        const gridY1 = gridY + 1;\n        const segment_width = width / gridX;\n        const segment_height = height / gridY;\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        for (let iy = 0; iy < gridY1; iy++) {\n          const y2 = iy * segment_height - height_half;\n          for (let ix = 0; ix < gridX1; ix++) {\n            const x = ix * segment_width - width_half;\n            vertices.push(x, -y2, 0);\n            normals.push(0, 0, 1);\n            uvs.push(ix / gridX);\n            uvs.push(1 - iy / gridY);\n          }\n        }\n        for (let iy = 0; iy < gridY; iy++) {\n          for (let ix = 0; ix < gridX; ix++) {\n            const a = ix + gridX1 * iy;\n            const b = ix + gridX1 * (iy + 1);\n            const c = ix + 1 + gridX1 * (iy + 1);\n            const d = ix + 1 + gridX1 * iy;\n            indices.push(a, b, d);\n            indices.push(b, c, d);\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n      }\n    };\n    alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n    alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\tconst float ALPHA_HASH_SCALE = 0.05;\\n\tfloat hash2D( vec2 value ) {\\n\t\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\t}\\n\tfloat hash3D( vec3 value ) {\\n\t\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\t}\\n\tfloat getAlphaHashThreshold( vec3 position ) {\\n\t\tfloat maxDeriv = max(\\n\t\t\tlength( dFdx( position.xyz ) ),\\n\t\t\tlength( dFdy( position.xyz ) )\\n\t\t);\\n\t\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\t\tvec2 pixScales = vec2(\\n\t\t\texp2( floor( log2( pixScale ) ) ),\\n\t\t\texp2( ceil( log2( pixScale ) ) )\\n\t\t);\\n\t\tvec2 alpha = vec2(\\n\t\t\thash3D( floor( pixScales.x * position.xyz ) ),\\n\t\t\thash3D( floor( pixScales.y * position.xyz ) )\\n\t\t);\\n\t\tfloat lerpFactor = fract( log2( pixScale ) );\\n\t\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\t\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\t\tvec3 cases = vec3(\\n\t\t\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\t\t\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\t\t\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\t\t);\\n\t\tfloat threshold = ( x < ( 1.0 - a ) )\\n\t\t\t? ( ( x < a ) ? cases.x : cases.y )\\n\t\t\t: cases.z;\\n\t\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\t}\\n#endif\";\n    alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n    alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\n    alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\t#ifdef ALPHA_TO_COVERAGE\\n\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\tif ( diffuseColor.a == 0.0 ) discard;\\n\t#else\\n\tif ( diffuseColor.a < alphaTest ) discard;\\n\t#endif\\n#endif\";\n    alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\n    aomap_fragment = \"#ifdef USE_AOMAP\\n\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\t#if defined( USE_CLEARCOAT ) \\n\t\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\t#endif\\n\t#if defined( USE_SHEEN ) \\n\t\tsheenSpecularIndirect *= ambientOcclusion;\\n\t#endif\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\t\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\t#endif\\n#endif\";\n    aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\n    batching_pars_vertex = \"#ifdef USE_BATCHING\\n\t#if ! defined( GL_ANGLE_multi_draw )\\n\t#define gl_DrawID _gl_DrawID\\n\tuniform int _gl_DrawID;\\n\t#endif\\n\tuniform highp sampler2D batchingTexture;\\n\tuniform highp usampler2D batchingIdTexture;\\n\tmat4 getBatchingMatrix( const in float i ) {\\n\t\tint size = textureSize( batchingTexture, 0 ).x;\\n\t\tint j = int( i ) * 4;\\n\t\tint x = j % size;\\n\t\tint y = j / size;\\n\t\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\t\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\t\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\t\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\t\treturn mat4( v1, v2, v3, v4 );\\n\t}\\n\tfloat getIndirectIndex( const in int i ) {\\n\t\tint size = textureSize( batchingIdTexture, 0 ).x;\\n\t\tint x = i % size;\\n\t\tint y = i / size;\\n\t\treturn float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\\n\t}\\n#endif\\n#ifdef USE_BATCHING_COLOR\\n\tuniform sampler2D batchingColorTexture;\\n\tvec3 getBatchingColor( const in float i ) {\\n\t\tint size = textureSize( batchingColorTexture, 0 ).x;\\n\t\tint j = int( i );\\n\t\tint x = j % size;\\n\t\tint y = j / size;\\n\t\treturn texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\\n\t}\\n#endif\";\n    batching_vertex = \"#ifdef USE_BATCHING\\n\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\\n#endif\";\n    begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\tvPosition = vec3( position );\\n#endif\";\n    beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n    bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\tfloat G = G_BlinnPhong_Implicit( );\\n\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\treturn F * ( G * D );\\n} // validated\";\n    iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\tconst mat3 XYZ_TO_REC709 = mat3(\\n\t\t 3.2404542, -0.9692660,  0.0556434,\\n\t\t-1.5371385,  1.8760108, -0.2040259,\\n\t\t-0.4985314,  0.0415560,  1.0572252\\n\t);\\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\t}\\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\t}\\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\t}\\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\t\txyz /= 1.0685e-7;\\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\t\treturn rgb;\\n\t}\\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\t\tvec3 I;\\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\t\tif ( cosTheta2Sq < 0.0 ) {\\n\t\t\treturn vec3( 1.0 );\\n\t\t}\\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\t\tfloat T121 = 1.0 - R12;\\n\t\tfloat phi12 = 0.0;\\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\t\tfloat phi21 = PI - phi12;\\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\t\tvec3 phi23 = vec3( 0.0 );\\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\t\tvec3 phi = vec3( phi21 ) + phi23;\\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\t\tvec3 r123 = sqrt( R123 );\\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\t\tvec3 C0 = R12 + Rs;\\n\t\tI = C0;\\n\t\tvec3 Cm = Rs - T121;\\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\\n\t\t\tCm *= r123;\\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\t\t\tI += Cm * Sm;\\n\t\t}\\n\t\treturn max( I, vec3( 0.0 ) );\\n\t}\\n#endif\";\n    bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\tuniform sampler2D bumpMap;\\n\tuniform float bumpScale;\\n\tvec2 dHdxy_fwd() {\\n\t\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\t\treturn vec2( dBx, dBy );\\n\t}\\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\t\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\t\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\t\tvec3 vN = surf_norm;\\n\t\tvec3 R1 = cross( vSigmaY, vN );\\n\t\tvec3 R2 = cross( vN, vSigmaX );\\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\t}\\n#endif\";\n    clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvec4 plane;\\n\t#ifdef ALPHA_TO_COVERAGE\\n\t\tfloat distanceToPlane, distanceGradient;\\n\t\tfloat clipOpacity = 1.0;\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\t\t\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\t\t\tif ( clipOpacity == 0.0 ) discard;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\t\tfloat unionClipOpacity = 1.0;\\n\t\t\t#pragma unroll_loop_start\\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\t\tplane = clippingPlanes[ i ];\\n\t\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\t\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\t\t\t\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\t\t\t}\\n\t\t\t#pragma unroll_loop_end\\n\t\t\tclipOpacity *= 1.0 - unionClipOpacity;\\n\t\t#endif\\n\t\tdiffuseColor.a *= clipOpacity;\\n\t\tif ( diffuseColor.a == 0.0 ) discard;\\n\t#else\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\t\tbool clipped = true;\\n\t\t\t#pragma unroll_loop_start\\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\t\tplane = clippingPlanes[ i ];\\n\t\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\t\t\t}\\n\t\t\t#pragma unroll_loop_end\\n\t\t\tif ( clipped ) discard;\\n\t\t#endif\\n\t#endif\\n#endif\";\n    clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n    clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\n    clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n    color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\n    color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\n    color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\n    color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\\n\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\tvColor.xyz *= instanceColor.xyz;\\n#endif\\n#ifdef USE_BATCHING_COLOR\\n\tvec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\\n\tvColor.xyz *= batchingColor.xyz;\\n#endif\";\n    common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\tfloat precisionSafeLength( vec3 v ) {\\n\t\tfloat maxComponent = max3( abs( v ) );\\n\t\treturn length( v / maxComponent ) * maxComponent;\\n\t}\\n#endif\\nstruct IncidentLight {\\n\tvec3 color;\\n\tvec3 direction;\\n\tbool visible;\\n};\\nstruct ReflectedLight {\\n\tvec3 directDiffuse;\\n\tvec3 directSpecular;\\n\tvec3 indirectDiffuse;\\n\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\tmat3 tmp;\\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\treturn tmp;\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n    cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\t#define cubeUV_minMipLevel 4.0\\n\t#define cubeUV_minTileSize 16.0\\n\tfloat getFace( vec3 direction ) {\\n\t\tvec3 absDirection = abs( direction );\\n\t\tfloat face = - 1.0;\\n\t\tif ( absDirection.x > absDirection.z ) {\\n\t\t\tif ( absDirection.x > absDirection.y )\\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t} else {\\n\t\t\tif ( absDirection.z > absDirection.y )\\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t}\\n\t\treturn face;\\n\t}\\n\tvec2 getUV( vec3 direction, float face ) {\\n\t\tvec2 uv;\\n\t\tif ( face == 0.0 ) {\\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 1.0 ) {\\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\t\t} else if ( face == 2.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\t\t} else if ( face == 3.0 ) {\\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 4.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\t\t} else {\\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\t\t}\\n\t\treturn 0.5 * ( uv + 1.0 );\\n\t}\\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\t\tfloat face = getFace( direction );\\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\t\tfloat faceSize = exp2( mipInt );\\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\t\tif ( face > 2.0 ) {\\n\t\t\tuv.y += faceSize;\\n\t\t\tface -= 3.0;\\n\t\t}\\n\t\tuv.x += face * faceSize;\\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\t\t#ifdef texture2DGradEXT\\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\t\t#else\\n\t\t\treturn texture2D( envMap, uv ).rgb;\\n\t\t#endif\\n\t}\\n\t#define cubeUV_r0 1.0\\n\t#define cubeUV_m0 - 2.0\\n\t#define cubeUV_r1 0.8\\n\t#define cubeUV_m1 - 1.0\\n\t#define cubeUV_r4 0.4\\n\t#define cubeUV_m4 2.0\\n\t#define cubeUV_r5 0.305\\n\t#define cubeUV_m5 3.0\\n\t#define cubeUV_r6 0.21\\n\t#define cubeUV_m6 4.0\\n\tfloat roughnessToMip( float roughness ) {\\n\t\tfloat mip = 0.0;\\n\t\tif ( roughness >= cubeUV_r1 ) {\\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\t\t} else if ( roughness >= cubeUV_r4 ) {\\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\t\t} else if ( roughness >= cubeUV_r5 ) {\\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\t\t} else if ( roughness >= cubeUV_r6 ) {\\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\t\t} else {\\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\\n\t\treturn mip;\\n\t}\\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\t\tfloat mipF = fract( mip );\\n\t\tfloat mipInt = floor( mip );\\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\t\tif ( mipF == 0.0 ) {\\n\t\t\treturn vec4( color0, 1.0 );\\n\t\t} else {\\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\t\t}\\n\t}\\n#endif\";\n    defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\tmat3 bm = mat3( batchingMatrix );\\n\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\ttransformedNormal = bm * transformedNormal;\\n\t#ifdef USE_TANGENT\\n\t\ttransformedTangent = bm * transformedTangent;\\n\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\tmat3 im = mat3( instanceMatrix );\\n\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\ttransformedNormal = im * transformedNormal;\\n\t#ifdef USE_TANGENT\\n\t\ttransformedTangent = im * transformedTangent;\\n\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\t#ifdef FLIP_SIDED\\n\t\ttransformedTangent = - transformedTangent;\\n\t#endif\\n#endif\";\n    displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\n    displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n    emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n    emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\n    colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n    colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\treturn value;\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n    envmap_fragment = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvec3 cameraToFrag;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#else\\n\t\tvec3 reflectVec = vReflect;\\n\t#endif\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tvec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\t#else\\n\t\tvec4 envColor = vec4( 0.0 );\\n\t#endif\\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_MIX )\\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_ADD )\\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\t#endif\\n#endif\";\n    envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float envMapIntensity;\\n\tuniform float flipEnvMap;\\n\tuniform mat3 envMapRotation;\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tuniform samplerCube envMap;\\n\t#else\\n\t\tuniform sampler2D envMap;\\n\t#endif\\n\t\\n#endif\";\n    envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float reflectivity;\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\tvarying vec3 vWorldPosition;\\n\t\tuniform float refractionRatio;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t#endif\\n#endif\";\n    envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\t\\n\t\tvarying vec3 vWorldPosition;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t\tuniform float refractionRatio;\\n\t#endif\\n#endif\";\n    envmap_vertex = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvWorldPosition = worldPosition.xyz;\\n\t#else\\n\t\tvec3 cameraToVertex;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\\n\t\t#else\\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#endif\\n#endif\";\n    fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\n    fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\n    fog_fragment = \"#ifdef USE_FOG\\n\t#ifdef FOG_EXP2\\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\t#else\\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\t#endif\\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n    fog_pars_fragment = \"#ifdef USE_FOG\\n\tuniform vec3 fogColor;\\n\tvarying float vFogDepth;\\n\t#ifdef FOG_EXP2\\n\t\tuniform float fogDensity;\\n\t#else\\n\t\tuniform float fogNear;\\n\t\tuniform float fogFar;\\n\t#endif\\n#endif\";\n    gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\tfloat dotNL = dot( normal, lightDirection );\\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\t#ifdef USE_GRADIENTMAP\\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\\n\t#else\\n\t\tvec2 fw = fwidth( coord ) * 0.5;\\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\t#endif\\n}\";\n    lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\n    lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n    lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\tvec3 diffuseColor;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert\";\n    lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\tvec3 irradiance = ambientLightColor;\\n\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\tif ( cutoffDistance > 0.0 ) {\\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\t}\\n\treturn distanceFalloff;\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\tstruct DirectionalLight {\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t};\\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\t\tlight.color = directionalLight.color;\\n\t\tlight.direction = directionalLight.direction;\\n\t\tlight.visible = true;\\n\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\tstruct PointLight {\\n\t\tvec3 position;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t};\\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\t\tvec3 lVector = pointLight.position - geometryPosition;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tlight.color = pointLight.color;\\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\tstruct SpotLight {\\n\t\tvec3 position;\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t\tfloat coneCos;\\n\t\tfloat penumbraCos;\\n\t};\\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\t\tvec3 lVector = spotLight.position - geometryPosition;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\t\tif ( spotAttenuation > 0.0 ) {\\n\t\t\tfloat lightDistance = length( lVector );\\n\t\t\tlight.color = spotLight.color * spotAttenuation;\\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t\t} else {\\n\t\t\tlight.color = vec3( 0.0 );\\n\t\t\tlight.visible = false;\\n\t\t}\\n\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\tstruct RectAreaLight {\\n\t\tvec3 color;\\n\t\tvec3 position;\\n\t\tvec3 halfWidth;\\n\t\tvec3 halfHeight;\\n\t};\\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\tstruct HemisphereLight {\\n\t\tvec3 direction;\\n\t\tvec3 skyColor;\\n\t\tvec3 groundColor;\\n\t};\\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\t\treturn irradiance;\\n\t}\\n#endif\";\n    envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\\n\t\t\treturn envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n\t#ifdef USE_ANISOTROPY\\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\t\t\t#else\\n\t\t\t\treturn vec3( 0.0 );\\n\t\t\t#endif\\n\t\t}\\n\t#endif\\n#endif\";\n    lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n    lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\";\n    lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n    lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\tvec3 diffuseColor;\\n\tvec3 specularColor;\\n\tfloat specularShininess;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\";\n    lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\tmaterial.ior = ior;\\n\t#ifdef USE_SPECULAR\\n\t\tfloat specularIntensityFactor = specularIntensity;\\n\t\tvec3 specularColorFactor = specularColor;\\n\t\t#ifdef USE_SPECULAR_COLORMAP\\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\t\t#endif\\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\t\t#endif\\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\t#else\\n\t\tfloat specularIntensityFactor = 1.0;\\n\t\tvec3 specularColorFactor = vec3( 1.0 );\\n\t\tmaterial.specularF90 = 1.0;\\n\t#endif\\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tmaterial.clearcoat = clearcoat;\\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\tmaterial.clearcoatF90 = 1.0;\\n\t#ifdef USE_CLEARCOATMAP\\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\t#endif\\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\tmaterial.clearcoatRoughness += geometryRoughness;\\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_DISPERSION\\n\tmaterial.dispersion = dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tmaterial.iridescence = iridescence;\\n\tmaterial.iridescenceIOR = iridescenceIOR;\\n\t#ifdef USE_IRIDESCENCEMAP\\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\t#else\\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\tmaterial.sheenColor = sheenColor;\\n\t#ifdef USE_SHEEN_COLORMAP\\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\t#endif\\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\t#ifdef USE_ANISOTROPYMAP\\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\t#else\\n\t\tvec2 anisotropyV = anisotropyVector;\\n\t#endif\\n\tmaterial.anisotropy = length( anisotropyV );\\n\tif( material.anisotropy == 0.0 ) {\\n\t\tanisotropyV = vec2( 1.0, 0.0 );\\n\t} else {\\n\t\tanisotropyV /= material.anisotropy;\\n\t\tmaterial.anisotropy = saturate( material.anisotropy );\\n\t}\\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n    lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\tvec3 diffuseColor;\\n\tfloat roughness;\\n\tvec3 specularColor;\\n\tfloat specularF90;\\n\tfloat dispersion;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat clearcoat;\\n\t\tfloat clearcoatRoughness;\\n\t\tvec3 clearcoatF0;\\n\t\tfloat clearcoatF90;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE\\n\t\tfloat iridescence;\\n\t\tfloat iridescenceIOR;\\n\t\tfloat iridescenceThickness;\\n\t\tvec3 iridescenceFresnel;\\n\t\tvec3 iridescenceF0;\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tvec3 sheenColor;\\n\t\tfloat sheenRoughness;\\n\t#endif\\n\t#ifdef IOR\\n\t\tfloat ior;\\n\t#endif\\n\t#ifdef USE_TRANSMISSION\\n\t\tfloat transmission;\\n\t\tfloat transmissionAlpha;\\n\t\tfloat thickness;\\n\t\tfloat attenuationDistance;\\n\t\tvec3 attenuationColor;\\n\t#endif\\n\t#ifdef USE_ANISOTROPY\\n\t\tfloat anisotropy;\\n\t\tfloat alphaT;\\n\t\tvec3 anisotropyT;\\n\t\tvec3 anisotropyB;\\n\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n    float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n    float x2 = x * x;\\n    float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n    return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\t\tfloat v = 0.5 / ( gv + gl );\\n\t\treturn saturate(v);\\n\t}\\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\t\tfloat a2 = alphaT * alphaB;\\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\t\thighp float v2 = dot( v, v );\\n\t\tfloat w2 = a2 / v2;\\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\t\tvec3 f0 = material.clearcoatF0;\\n\t\tfloat f90 = material.clearcoatF90;\\n\t\tfloat roughness = material.clearcoatRoughness;\\n\t\tfloat alpha = pow2( roughness );\\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\t\tfloat D = D_GGX( alpha, dotNH );\\n\t\treturn F * ( V * D );\\n\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\tvec3 f0 = material.specularColor;\\n\tfloat f90 = material.specularF90;\\n\tfloat roughness = material.roughness;\\n\tfloat alpha = pow2( roughness );\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\t#ifdef USE_IRIDESCENCE\\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\t#endif\\n\t#ifdef USE_ANISOTROPY\\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\t#else\\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\t\tfloat D = D_GGX( alpha, dotNH );\\n\t#endif\\n\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\tconst float LUT_SIZE = 64.0;\\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\tfloat dotNV = saturate( dot( N, V ) );\\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\tfloat l = length( f );\\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\tfloat x = dot( v1, v2 );\\n\tfloat y = abs( x );\\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\tfloat v = a / b;\\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\tvec3 lightNormal = cross( v1, v2 );\\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\tvec3 T1, T2;\\n\tT1 = normalize( V - N * dot( V, N ) );\\n\tT2 = - cross( N, T1 );\\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\tvec3 coords[ 4 ];\\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\tvec3 vectorFormFactor = vec3( 0.0 );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\tfloat alpha = pow2( roughness );\\n\tfloat invAlpha = 1.0 / alpha;\\n\tfloat cos2h = dotNH * dotNH;\\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\tfloat V = V_Neubelt( dotNV, dotNL );\\n\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat r2 = roughness * roughness;\\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\tvec4 r = roughness * c0 + c1;\\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\t#ifdef USE_IRIDESCENCE\\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\t#else\\n\t\tvec3 Fr = specularColor;\\n\t#endif\\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\tfloat Ess = fab.x + fab.y;\\n\tfloat Ems = 1.0 - Ess;\\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\tsingleScatter += FssEss;\\n\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\t\tvec3 normal = geometryNormal;\\n\t\tvec3 viewDir = geometryViewDir;\\n\t\tvec3 position = geometryPosition;\\n\t\tvec3 lightPos = rectAreaLight.position;\\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\t\tvec3 lightColor = rectAreaLight.color;\\n\t\tfloat roughness = material.roughness;\\n\t\tvec3 rectCoords[ 4 ];\\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\t\tvec4 t1 = texture2D( ltc_1, uv );\\n\t\tvec4 t2 = texture2D( ltc_2, uv );\\n\t\tmat3 mInv = mat3(\\n\t\t\tvec3( t1.x, 0, t1.y ),\\n\t\t\tvec3(    0, 1,    0 ),\\n\t\t\tvec3( t1.z, 0, t1.w )\\n\t\t);\\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\t#endif\\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\t#endif\\n\tvec3 singleScattering = vec3( 0.0 );\\n\tvec3 multiScattering = vec3( 0.0 );\\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\t#ifdef USE_IRIDESCENCE\\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\t#else\\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\t#endif\\n\tvec3 totalScattering = singleScattering + multiScattering;\\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Physical\\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n    lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\tif ( material.iridescenceThickness == 0.0 ) {\\n\t\tmaterial.iridescence = 0.0;\\n\t} else {\\n\t\tmaterial.iridescence = saturate( material.iridescence );\\n\t}\\n\tif ( material.iridescence > 0.0 ) {\\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tPointLight pointLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\t\tpointLightShadow = pointLightShadows[ i ];\\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tSpotLight spotLight;\\n\tvec4 spotColor;\\n\tvec3 spotLightCoord;\\n\tbool inSpotLightMap;\\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\t\t#else\\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\t\t#endif\\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\t\t#endif\\n\t\t#undef SPOT_LIGHT_MAP_INDEX\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\tspotLightShadow = spotLightShadows[ i ];\\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\tDirectionalLight directionalLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\tRectAreaLight rectAreaLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\t\trectAreaLight = rectAreaLights[ i ];\\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\tvec3 iblIrradiance = vec3( 0.0 );\\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\t#if defined( USE_LIGHT_PROBES )\\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\t#endif\\n\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tvec3 radiance = vec3( 0.0 );\\n\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n    lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\t\tirradiance += lightMapIrradiance;\\n\t#endif\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\t#ifdef USE_ANISOTROPY\\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\t#else\\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\t#endif\\n#endif\";\n    lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n    logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n    logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\tuniform float logDepthBufFC;\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\n    logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\n    logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\tvFragDepth = 1.0 + gl_Position.w;\\n\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\n    map_fragment = \"#ifdef USE_MAP\\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\t#ifdef DECODE_VIDEO_TEXTURE\\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\t\\n\t#endif\\n\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n    map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\n    map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\t#if defined( USE_POINTS_UV )\\n\t\tvec2 uv = vUv;\\n\t#else\\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\t#endif\\n#endif\\n#ifdef USE_MAP\\n\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n    map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\tvarying vec2 vUv;\\n#else\\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\t\tuniform mat3 uvTransform;\\n\t#endif\\n#endif\\n#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\n    metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n    metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\n    morphinstance_vertex = \"#ifdef USE_INSTANCING_MORPH\\n\tfloat morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\tmorphTargetInfluences[i] =  texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\\n\t}\\n#endif\";\n    morphcolor_vertex = \"#if defined( USE_MORPHCOLORS )\\n\tvColor *= morphTargetBaseInfluence;\\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t#if defined( USE_COLOR_ALPHA )\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\t\t#elif defined( USE_COLOR )\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\t\t#endif\\n\t}\\n#endif\";\n    morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\tobjectNormal *= morphTargetBaseInfluence;\\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\t}\\n#endif\";\n    morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\t#ifndef USE_INSTANCING_MORPH\\n\t\tuniform float morphTargetBaseInfluence;\\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\t#endif\\n\tuniform sampler2DArray morphTargetsTexture;\\n\tuniform ivec2 morphTargetsTextureSize;\\n\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\t\tint y = texelIndex / morphTargetsTextureSize.x;\\n\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\t}\\n#endif\";\n    morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\ttransformed *= morphTargetBaseInfluence;\\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\t}\\n#endif\";\n    normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\tvec3 fdx = dFdx( vViewPosition );\\n\tvec3 fdy = dFdy( vViewPosition );\\n\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\tvec3 normal = normalize( vNormal );\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal *= faceDirection;\\n\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\t#ifdef USE_TANGENT\\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\t#else\\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\t\t#if defined( USE_NORMALMAP )\\n\t\t\tvNormalMapUv\\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\t\t\tvClearcoatNormalMapUv\\n\t\t#else\\n\t\t\tvUv\\n\t\t#endif\\n\t\t);\\n\t#endif\\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\t\ttbn[0] *= faceDirection;\\n\t\ttbn[1] *= faceDirection;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\t#ifdef USE_TANGENT\\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\t#else\\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\t#endif\\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\t\ttbn2[0] *= faceDirection;\\n\t\ttbn2[1] *= faceDirection;\\n\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n    normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\t#ifdef FLIP_SIDED\\n\t\tnormal = - normal;\\n\t#endif\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\tmapN.xy *= normalScale;\\n\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n    normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n\t#ifdef USE_TANGENT\\n\t\tvarying vec3 vTangent;\\n\t\tvarying vec3 vBitangent;\\n\t#endif\\n#endif\";\n    normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n\t#ifdef USE_TANGENT\\n\t\tvarying vec3 vTangent;\\n\t\tvarying vec3 vBitangent;\\n\t#endif\\n#endif\";\n    normal_vertex = \"#ifndef FLAT_SHADED\\n\tvNormal = normalize( transformedNormal );\\n\t#ifdef USE_TANGENT\\n\t\tvTangent = normalize( transformedTangent );\\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\t#endif\\n#endif\";\n    normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\\n\t\tvec2 st0 = dFdx( uv.st );\\n\t\tvec2 st1 = dFdy( uv.st );\\n\t\tvec3 N = surf_norm;\\n\t\tvec3 q1perp = cross( q1, N );\\n\t\tvec3 q0perp = cross( N, q0 );\\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\t\treturn mat3( T * scale, B * scale, N );\\n\t}\\n#endif\";\n    clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n    clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n    clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform sampler2D clearcoatNormalMap;\\n\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n    iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n    opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n    packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\\nconst float Inv255 = 1. / 255.;\\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\\nvec4 packDepthToRGBA( const in float v ) {\\n\tif( v <= 0.0 )\\n\t\treturn vec4( 0., 0., 0., 0. );\\n\tif( v >= 1.0 )\\n\t\treturn vec4( 1., 1., 1., 1. );\\n\tfloat vuf;\\n\tfloat af = modf( v * PackFactors.a, vuf );\\n\tfloat bf = modf( vuf * ShiftRight8, vuf );\\n\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\treturn vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\\n}\\nvec3 packDepthToRGB( const in float v ) {\\n\tif( v <= 0.0 )\\n\t\treturn vec3( 0., 0., 0. );\\n\tif( v >= 1.0 )\\n\t\treturn vec3( 1., 1., 1. );\\n\tfloat vuf;\\n\tfloat bf = modf( v * PackFactors.b, vuf );\\n\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\treturn vec3( vuf * Inv255, gf * PackUpscale, bf );\\n}\\nvec2 packDepthToRG( const in float v ) {\\n\tif( v <= 0.0 )\\n\t\treturn vec2( 0., 0. );\\n\tif( v >= 1.0 )\\n\t\treturn vec2( 1., 1. );\\n\tfloat vuf;\\n\tfloat gf = modf( v * 256., vuf );\\n\treturn vec2( vuf * Inv255, gf );\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\treturn dot( v, UnpackFactors4 );\\n}\\nfloat unpackRGBToDepth( const in vec3 v ) {\\n\treturn dot( v, UnpackFactors3 );\\n}\\nfloat unpackRGToDepth( const in vec2 v ) {\\n\treturn v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\\n}\\nvec4 pack2HalfToRGBA( const in vec2 v ) {\\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( const in vec4 v ) {\\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n    premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n    project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n    dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n    dithering_pars_fragment = \"#ifdef DITHERING\\n\tvec3 dithering( vec3 color ) {\\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\t\treturn color + dither_shift_RGB;\\n\t}\\n#endif\";\n    roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\n    roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\n    shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowIntensity;\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowIntensity;\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowIntensity;\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\t}\\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\t}\\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\t\tfloat occlusion = 1.0;\\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\t\tfloat hard_shadow = step( compare , distribution.x );\\n\t\tif (hard_shadow != 1.0 ) {\\n\t\t\tfloat distance = compare - distribution.x ;\\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\t\t}\\n\t\treturn occlusion;\\n\t}\\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\t\tfloat shadow = 1.0;\\n\t\tshadowCoord.xyz /= shadowCoord.w;\\n\t\tshadowCoord.z += shadowBias;\\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\t\tif ( frustumTest ) {\\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\\n\t\t\tfloat dx2 = dx0 / 2.0;\\n\t\t\tfloat dy2 = dy0 / 2.0;\\n\t\t\tfloat dx3 = dx1 / 2.0;\\n\t\t\tfloat dy3 = dy1 / 2.0;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\t\t\t) * ( 1.0 / 17.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx = texelSize.x;\\n\t\t\tfloat dy = texelSize.y;\\n\t\t\tvec2 uv = shadowCoord.xy;\\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\t\t\tuv -= f * texelSize;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  f.x ),\\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  f.x ),\\n\t\t\t\t\t f.y )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#else\\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#endif\\n\t\t}\\n\t\treturn mix( 1.0, shadow, shadowIntensity );\\n\t}\\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\t\tvec3 absV = abs( v );\\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\t\tabsV *= scaleToCube;\\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\t\tvec2 planar = v.xy;\\n\t\tfloat almostATexel = 1.5 * texelSizeY;\\n\t\tfloat almostOne = 1.0 - almostATexel;\\n\t\tif ( absV.z >= almostOne ) {\\n\t\t\tif ( v.z > 0.0 )\\n\t\t\t\tplanar.x = 4.0 - v.x;\\n\t\t} else if ( absV.x >= almostOne ) {\\n\t\t\tfloat signX = sign( v.x );\\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\\n\t\t} else if ( absV.y >= almostOne ) {\\n\t\t\tfloat signY = sign( v.y );\\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\t\t\tplanar.y = v.z * signY - 2.0;\\n\t\t}\\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\t}\\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\t\tfloat shadow = 1.0;\\n\t\tvec3 lightToPosition = shadowCoord.xyz;\\n\t\t\\n\t\tfloat lightToPositionLength = length( lightToPosition );\\n\t\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\\n\t\t\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\t\tdp += shadowBias;\\n\t\t\tvec3 bd3D = normalize( lightToPosition );\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\t\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\t\t\t\tshadow = (\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\t\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\t\t\t\t) * ( 1.0 / 9.0 );\\n\t\t\t#else\\n\t\t\t\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\t\t\t#endif\\n\t\t}\\n\t\treturn mix( 1.0, shadow, shadowIntensity );\\n\t}\\n#endif\";\n    shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowIntensity;\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowIntensity;\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowIntensity;\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n#endif\";\n    shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition;\\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\t\t#endif\\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\";\n    shadowmask_pars_fragment = \"float getShadowMask() {\\n\tfloat shadow = 1.0;\\n\t#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tdirectionalLight = directionalLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tspotLight = spotLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tpointLight = pointLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#endif\\n\treturn shadow;\\n}\";\n    skinbase_vertex = \"#ifdef USE_SKINNING\\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n    skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\tuniform highp sampler2D boneTexture;\\n\tmat4 getBoneMatrix( const in float i ) {\\n\t\tint size = textureSize( boneTexture, 0 ).x;\\n\t\tint j = int( i ) * 4;\\n\t\tint x = j % size;\\n\t\tint y = j / size;\\n\t\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\t\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\t\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\t\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\t\treturn mat4( v1, v2, v3, v4 );\\n\t}\\n#endif\";\n    skinning_vertex = \"#ifdef USE_SKINNING\\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\tvec4 skinned = vec4( 0.0 );\\n\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n    skinnormal_vertex = \"#ifdef USE_SKINNING\\n\tmat4 skinMatrix = mat4( 0.0 );\\n\tskinMatrix += skinWeight.x * boneMatX;\\n\tskinMatrix += skinWeight.y * boneMatY;\\n\tskinMatrix += skinWeight.z * boneMatZ;\\n\tskinMatrix += skinWeight.w * boneMatW;\\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\t#ifdef USE_TANGENT\\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#endif\\n#endif\";\n    specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\tspecularStrength = texelSpecular.r;\\n#else\\n\tspecularStrength = 1.0;\\n#endif\";\n    specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\n    tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n    tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\tcolor *= toneMappingExposure;\\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 CineonToneMapping( vec3 color ) {\\n\tcolor *= toneMappingExposure;\\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\tconst mat3 ACESInputMat = mat3(\\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\\n\t);\\n\tconst mat3 ACESOutputMat = mat3(\\n\t\tvec3(  1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108,  1.10813, -0.07276 ),\\n\t\tvec3( -0.07367, -0.00605,  1.07602 )\\n\t);\\n\tcolor *= toneMappingExposure / 0.6;\\n\tcolor = ACESInputMat * color;\\n\tcolor = RRTAndODTFit( color );\\n\tcolor = ACESOutputMat * color;\\n\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\tvec3 x2 = x * x;\\n\tvec3 x4 = x2 * x2;\\n\treturn + 15.5 * x4 * x2\\n\t\t- 40.14 * x4 * x\\n\t\t+ 31.96 * x4\\n\t\t- 6.868 * x2 * x\\n\t\t+ 0.4298 * x2\\n\t\t+ 0.1191 * x\\n\t\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\tconst mat3 AgXInsetMatrix = mat3(\\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\t);\\n\tconst mat3 AgXOutsetMatrix = mat3(\\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\t);\\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\\n\tcolor *= toneMappingExposure;\\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\tcolor = AgXInsetMatrix * color;\\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\tcolor = clamp( color, 0.0, 1.0 );\\n\tcolor = agxDefaultContrastApprox( color );\\n\tcolor = AgXOutsetMatrix * color;\\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\tcolor = clamp( color, 0.0, 1.0 );\\n\treturn color;\\n}\\nvec3 NeutralToneMapping( vec3 color ) {\\n\tconst float StartCompression = 0.8 - 0.04;\\n\tconst float Desaturation = 0.15;\\n\tcolor *= toneMappingExposure;\\n\tfloat x = min( color.r, min( color.g, color.b ) );\\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\\n\tcolor -= offset;\\n\tfloat peak = max( color.r, max( color.g, color.b ) );\\n\tif ( peak < StartCompression ) return color;\\n\tfloat d = 1. - StartCompression;\\n\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\\n\tcolor *= newPeak / peak;\\n\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\\n\treturn mix( color, vec3( newPeak ), g );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n    transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\tmaterial.transmission = transmission;\\n\tmaterial.transmissionAlpha = 1.0;\\n\tmaterial.thickness = thickness;\\n\tmaterial.attenuationDistance = attenuationDistance;\\n\tmaterial.attenuationColor = attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\t#endif\\n\tvec3 pos = vWorldPosition;\\n\tvec3 v = normalize( cameraPosition - pos );\\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\tvec4 transmitted = getIBLVolumeRefraction(\\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\\n\t\tmaterial.attenuationColor, material.attenuationDistance );\\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n    transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\tuniform float transmission;\\n\tuniform float thickness;\\n\tuniform float attenuationDistance;\\n\tuniform vec3 attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tuniform sampler2D transmissionMap;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tuniform sampler2D thicknessMap;\\n\t#endif\\n\tuniform vec2 transmissionSamplerSize;\\n\tuniform sampler2D transmissionSamplerMap;\\n\tuniform mat4 modelMatrix;\\n\tuniform mat4 projectionMatrix;\\n\tvarying vec3 vWorldPosition;\\n\tfloat w0( float a ) {\\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\t}\\n\tfloat w1( float a ) {\\n\t\treturn ( 1.0 / 6.0 ) * ( a *  a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\t}\\n\tfloat w2( float a ){\\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\t}\\n\tfloat w3( float a ) {\\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\t}\\n\tfloat g0( float a ) {\\n\t\treturn w0( a ) + w1( a );\\n\t}\\n\tfloat g1( float a ) {\\n\t\treturn w2( a ) + w3( a );\\n\t}\\n\tfloat h0( float a ) {\\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\t}\\n\tfloat h1( float a ) {\\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\t}\\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\t\tuv = uv * texelSize.zw + 0.5;\\n\t\tvec2 iuv = floor( uv );\\n\t\tvec2 fuv = fract( uv );\\n\t\tfloat g0x = g0( fuv.x );\\n\t\tfloat g1x = g1( fuv.x );\\n\t\tfloat h0x = h0( fuv.x );\\n\t\tfloat h1x = h1( fuv.x );\\n\t\tfloat h0y = h0( fuv.y );\\n\t\tfloat h1y = h1( fuv.y );\\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\t}\\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\t\treturn mix( fSample, cSample, fract( lod ) );\\n\t}\\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\t\tvec3 modelScale;\\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\\n\t}\\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\t}\\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\t}\\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tif ( isinf( attenuationDistance ) ) {\\n\t\t\treturn vec3( 1.0 );\\n\t\t} else {\\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\\n\t\t}\\n\t}\\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tvec4 transmittedLight;\\n\t\tvec3 transmittance;\\n\t\t#ifdef USE_DISPERSION\\n\t\t\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\\n\t\t\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\\n\t\t\tfor ( int i = 0; i < 3; i ++ ) {\\n\t\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\\n\t\t\t\tvec3 refractedRayExit = position + transmissionRay;\\n\t\t\\n\t\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\t\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\t\t\t\trefractionCoords += 1.0;\\n\t\t\t\trefractionCoords /= 2.0;\\n\t\t\\n\t\t\t\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\\n\t\t\t\ttransmittedLight[ i ] = transmissionSample[ i ];\\n\t\t\t\ttransmittedLight.a += transmissionSample.a;\\n\t\t\t\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\\n\t\t\t}\\n\t\t\ttransmittedLight.a /= 3.0;\\n\t\t\\n\t\t#else\\n\t\t\\n\t\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\t\t\tvec3 refractedRayExit = position + transmissionRay;\\n\t\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\t\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\t\t\trefractionCoords += 1.0;\\n\t\t\trefractionCoords /= 2.0;\\n\t\t\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\t\t\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\t\t\\n\t\t#endif\\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\t}\\n#endif\";\n    uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\tuniform mat3 transmissionMapTransform;\\n\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\tuniform mat3 thicknessMapTransform;\\n\tvarying vec2 vThicknessMapUv;\\n#endif\";\n    uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\tuniform mat3 mapTransform;\\n\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform mat3 alphaMapTransform;\\n\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\tuniform mat3 lightMapTransform;\\n\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\tuniform mat3 aoMapTransform;\\n\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\tuniform mat3 bumpMapTransform;\\n\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tuniform mat3 normalMapTransform;\\n\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\tuniform mat3 displacementMapTransform;\\n\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\tuniform mat3 emissiveMapTransform;\\n\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\tuniform mat3 metalnessMapTransform;\\n\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\tuniform mat3 roughnessMapTransform;\\n\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\tuniform mat3 anisotropyMapTransform;\\n\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\tuniform mat3 clearcoatMapTransform;\\n\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform mat3 clearcoatNormalMapTransform;\\n\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform mat3 clearcoatRoughnessMapTransform;\\n\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\tuniform mat3 sheenColorMapTransform;\\n\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\tuniform mat3 sheenRoughnessMapTransform;\\n\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\tuniform mat3 iridescenceMapTransform;\\n\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform mat3 iridescenceThicknessMapTransform;\\n\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\tuniform mat3 specularMapTransform;\\n\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\tuniform mat3 specularColorMapTransform;\\n\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\tuniform mat3 specularIntensityMapTransform;\\n\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\tuniform mat3 transmissionMapTransform;\\n\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\tuniform mat3 thicknessMapTransform;\\n\tvarying vec2 vThicknessMapUv;\\n#endif\";\n    uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n    worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\t#ifdef USE_BATCHING\\n\t\tworldPosition = batchingMatrix * worldPosition;\\n\t#endif\\n\t#ifdef USE_INSTANCING\\n\t\tworldPosition = instanceMatrix * worldPosition;\\n\t#endif\\n\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n    vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n    fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\tvec4 texColor = texture2D( t2D, vUv );\\n\t#ifdef DECODE_VIDEO_TEXTURE\\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\t#endif\\n\ttexColor.rgb *= backgroundIntensity;\\n\tgl_FragColor = texColor;\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n}\";\n    vertex$g = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\tgl_Position.z = gl_Position.w;\\n}\";\n    fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nuniform mat3 backgroundRotation;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\\n\t#else\\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\t#endif\\n\ttexColor.rgb *= backgroundIntensity;\\n\tgl_FragColor = texColor;\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n}\";\n    vertex$f = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\tgl_Position.z = gl_Position.w;\\n}\";\n    fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\tgl_FragColor = texColor;\\n\tgl_FragColor.a *= opacity;\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n}\";\n    vertex$e = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <batching_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <morphinstance_vertex>\\n\t#ifdef USE_DISPLACEMENTMAP\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n    fragment$e = \"#if DEPTH_PACKING == 3200\\n\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#include <clipping_planes_fragment>\\n\t#if DEPTH_PACKING == 3200\\n\t\tdiffuseColor.a = opacity;\\n\t#endif\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <logdepthbuf_fragment>\\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\t#if DEPTH_PACKING == 3200\\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\t#elif DEPTH_PACKING == 3201\\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\t#elif DEPTH_PACKING == 3202\\n\t\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\\n\t#elif DEPTH_PACKING == 3203\\n\t\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\\n\t#endif\\n}\";\n    vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <batching_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <morphinstance_vertex>\\n\t#ifdef USE_DISPLACEMENTMAP\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvWorldPosition = worldPosition.xyz;\\n}\";\n    fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#include <clipping_planes_fragment>\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\tfloat dist = length( vWorldPosition - referencePosition );\\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\tdist = saturate( dist );\\n\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n    vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n}\";\n    fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvec3 direction = normalize( vWorldDirection );\\n\tvec2 sampleUV = equirectUv( direction );\\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n}\";\n    vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\tvLineDistance = scale * lineDistance;\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\t\tdiscard;\\n\t}\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\n    vertex$a = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_vertex>\\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinbase_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t\t#include <defaultnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <specularmap_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\t#else\\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\t#endif\\n\t#include <aomap_fragment>\\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\t#include <envmap_fragment>\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\n    vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_lambert_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_lambert_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\n    vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n}\";\n    fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\tvec3 viewDir = normalize( vViewPosition );\\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\tvec3 y = cross( viewDir, x );\\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\t#ifdef USE_MATCAP\\n\t\tvec4 matcapColor = texture2D( matcap, uv );\\n\t#else\\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\t#endif\\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\n    vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n    fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\n\t#include <clipping_planes_fragment>\\n\t#include <logdepthbuf_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\\n\t#ifdef OPAQUE\\n\t\tgl_FragColor.a = 1.0;\\n\t#endif\\n}\";\n    vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_phong_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\n    vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n#ifdef USE_TRANSMISSION\\n\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n    fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\t#define IOR\\n\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\tuniform float specularIntensity;\\n\tuniform vec3 specularColor;\\n\t#ifdef USE_SPECULAR_COLORMAP\\n\t\tuniform sampler2D specularColorMap;\\n\t#endif\\n\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\t\tuniform sampler2D specularIntensityMap;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tuniform float clearcoat;\\n\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_DISPERSION\\n\tuniform float dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tuniform float iridescence;\\n\tuniform float iridescenceIOR;\\n\tuniform float iridescenceThicknessMinimum;\\n\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\tuniform vec3 sheenColor;\\n\tuniform float sheenRoughness;\\n\t#ifdef USE_SHEEN_COLORMAP\\n\t\tuniform sampler2D sheenColorMap;\\n\t#endif\\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\t\tuniform sampler2D sheenRoughnessMap;\\n\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\tuniform vec2 anisotropyVector;\\n\t#ifdef USE_ANISOTROPYMAP\\n\t\tuniform sampler2D anisotropyMap;\\n\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <iridescence_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_physical_pars_fragment>\\n#include <transmission_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <iridescence_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <roughnessmap_fragment>\\n\t#include <metalnessmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <clearcoat_normal_fragment_begin>\\n\t#include <clearcoat_normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_physical_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\t#include <transmission_fragment>\\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\t#ifdef USE_SHEEN\\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\t#endif\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\n    vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_toon_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\n    vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\n#ifdef USE_POINTS_UV\\n\tvarying vec2 vUv;\\n\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\t#ifdef USE_POINTS_UV\\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\t#endif\\n\t#include <color_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\tgl_PointSize = size;\\n\t#ifdef USE_SIZEATTENUATION\\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\t#endif\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_particle_fragment>\\n\t#include <color_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\n    vertex$2 = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\t#include <batching_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphinstance_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <logdepthbuf_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\t#include <logdepthbuf_fragment>\\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n}\";\n    vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\tvec4 mvPosition = modelViewMatrix[ 3 ];\\n\tvec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\\n\t#ifndef USE_SIZEATTENUATION\\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\\n\t#endif\\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\tvec2 rotatedPosition;\\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\tmvPosition.xy += rotatedPosition;\\n\tgl_Position = projectionMatrix * mvPosition;\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n}\";\n    fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n}\";\n    ShaderChunk = {\n      alphahash_fragment,\n      alphahash_pars_fragment,\n      alphamap_fragment,\n      alphamap_pars_fragment,\n      alphatest_fragment,\n      alphatest_pars_fragment,\n      aomap_fragment,\n      aomap_pars_fragment,\n      batching_pars_vertex,\n      batching_vertex,\n      begin_vertex,\n      beginnormal_vertex,\n      bsdfs,\n      iridescence_fragment,\n      bumpmap_pars_fragment,\n      clipping_planes_fragment,\n      clipping_planes_pars_fragment,\n      clipping_planes_pars_vertex,\n      clipping_planes_vertex,\n      color_fragment,\n      color_pars_fragment,\n      color_pars_vertex,\n      color_vertex,\n      common,\n      cube_uv_reflection_fragment,\n      defaultnormal_vertex,\n      displacementmap_pars_vertex,\n      displacementmap_vertex,\n      emissivemap_fragment,\n      emissivemap_pars_fragment,\n      colorspace_fragment,\n      colorspace_pars_fragment,\n      envmap_fragment,\n      envmap_common_pars_fragment,\n      envmap_pars_fragment,\n      envmap_pars_vertex,\n      envmap_physical_pars_fragment,\n      envmap_vertex,\n      fog_vertex,\n      fog_pars_vertex,\n      fog_fragment,\n      fog_pars_fragment,\n      gradientmap_pars_fragment,\n      lightmap_pars_fragment,\n      lights_lambert_fragment,\n      lights_lambert_pars_fragment,\n      lights_pars_begin,\n      lights_toon_fragment,\n      lights_toon_pars_fragment,\n      lights_phong_fragment,\n      lights_phong_pars_fragment,\n      lights_physical_fragment,\n      lights_physical_pars_fragment,\n      lights_fragment_begin,\n      lights_fragment_maps,\n      lights_fragment_end,\n      logdepthbuf_fragment,\n      logdepthbuf_pars_fragment,\n      logdepthbuf_pars_vertex,\n      logdepthbuf_vertex,\n      map_fragment,\n      map_pars_fragment,\n      map_particle_fragment,\n      map_particle_pars_fragment,\n      metalnessmap_fragment,\n      metalnessmap_pars_fragment,\n      morphinstance_vertex,\n      morphcolor_vertex,\n      morphnormal_vertex,\n      morphtarget_pars_vertex,\n      morphtarget_vertex,\n      normal_fragment_begin,\n      normal_fragment_maps,\n      normal_pars_fragment,\n      normal_pars_vertex,\n      normal_vertex,\n      normalmap_pars_fragment,\n      clearcoat_normal_fragment_begin,\n      clearcoat_normal_fragment_maps,\n      clearcoat_pars_fragment,\n      iridescence_pars_fragment,\n      opaque_fragment,\n      packing,\n      premultiplied_alpha_fragment,\n      project_vertex,\n      dithering_fragment,\n      dithering_pars_fragment,\n      roughnessmap_fragment,\n      roughnessmap_pars_fragment,\n      shadowmap_pars_fragment,\n      shadowmap_pars_vertex,\n      shadowmap_vertex,\n      shadowmask_pars_fragment,\n      skinbase_vertex,\n      skinning_pars_vertex,\n      skinning_vertex,\n      skinnormal_vertex,\n      specularmap_fragment,\n      specularmap_pars_fragment,\n      tonemapping_fragment,\n      tonemapping_pars_fragment,\n      transmission_fragment,\n      transmission_pars_fragment,\n      uv_pars_fragment,\n      uv_pars_vertex,\n      uv_vertex,\n      worldpos_vertex,\n      background_vert: vertex$h,\n      background_frag: fragment$h,\n      backgroundCube_vert: vertex$g,\n      backgroundCube_frag: fragment$g,\n      cube_vert: vertex$f,\n      cube_frag: fragment$f,\n      depth_vert: vertex$e,\n      depth_frag: fragment$e,\n      distanceRGBA_vert: vertex$d,\n      distanceRGBA_frag: fragment$d,\n      equirect_vert: vertex$c,\n      equirect_frag: fragment$c,\n      linedashed_vert: vertex$b,\n      linedashed_frag: fragment$b,\n      meshbasic_vert: vertex$a,\n      meshbasic_frag: fragment$a,\n      meshlambert_vert: vertex$9,\n      meshlambert_frag: fragment$9,\n      meshmatcap_vert: vertex$8,\n      meshmatcap_frag: fragment$8,\n      meshnormal_vert: vertex$7,\n      meshnormal_frag: fragment$7,\n      meshphong_vert: vertex$6,\n      meshphong_frag: fragment$6,\n      meshphysical_vert: vertex$5,\n      meshphysical_frag: fragment$5,\n      meshtoon_vert: vertex$4,\n      meshtoon_frag: fragment$4,\n      points_vert: vertex$3,\n      points_frag: fragment$3,\n      shadow_vert: vertex$2,\n      shadow_frag: fragment$2,\n      sprite_vert: vertex$1,\n      sprite_frag: fragment$1\n    };\n    UniformsLib = {\n      common: {\n        diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n        opacity: { value: 1 },\n        map: { value: null },\n        mapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        alphaMap: { value: null },\n        alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        alphaTest: { value: 0 }\n      },\n      specularmap: {\n        specularMap: { value: null },\n        specularMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      envmap: {\n        envMap: { value: null },\n        envMapRotation: { value: /* @__PURE__ */ new Matrix3() },\n        flipEnvMap: { value: -1 },\n        reflectivity: { value: 1 },\n        // basic, lambert, phong\n        ior: { value: 1.5 },\n        // physical\n        refractionRatio: { value: 0.98 }\n        // basic, lambert, phong\n      },\n      aomap: {\n        aoMap: { value: null },\n        aoMapIntensity: { value: 1 },\n        aoMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      lightmap: {\n        lightMap: { value: null },\n        lightMapIntensity: { value: 1 },\n        lightMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      bumpmap: {\n        bumpMap: { value: null },\n        bumpMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        bumpScale: { value: 1 }\n      },\n      normalmap: {\n        normalMap: { value: null },\n        normalMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        normalScale: { value: /* @__PURE__ */ new Vector2(1, 1) }\n      },\n      displacementmap: {\n        displacementMap: { value: null },\n        displacementMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        displacementScale: { value: 1 },\n        displacementBias: { value: 0 }\n      },\n      emissivemap: {\n        emissiveMap: { value: null },\n        emissiveMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      metalnessmap: {\n        metalnessMap: { value: null },\n        metalnessMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      roughnessmap: {\n        roughnessMap: { value: null },\n        roughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      gradientmap: {\n        gradientMap: { value: null }\n      },\n      fog: {\n        fogDensity: { value: 25e-5 },\n        fogNear: { value: 1 },\n        fogFar: { value: 2e3 },\n        fogColor: { value: /* @__PURE__ */ new Color(16777215) }\n      },\n      lights: {\n        ambientLightColor: { value: [] },\n        lightProbe: { value: [] },\n        directionalLights: { value: [], properties: {\n          direction: {},\n          color: {}\n        } },\n        directionalLightShadows: { value: [], properties: {\n          shadowIntensity: 1,\n          shadowBias: {},\n          shadowNormalBias: {},\n          shadowRadius: {},\n          shadowMapSize: {}\n        } },\n        directionalShadowMap: { value: [] },\n        directionalShadowMatrix: { value: [] },\n        spotLights: { value: [], properties: {\n          color: {},\n          position: {},\n          direction: {},\n          distance: {},\n          coneCos: {},\n          penumbraCos: {},\n          decay: {}\n        } },\n        spotLightShadows: { value: [], properties: {\n          shadowIntensity: 1,\n          shadowBias: {},\n          shadowNormalBias: {},\n          shadowRadius: {},\n          shadowMapSize: {}\n        } },\n        spotLightMap: { value: [] },\n        spotShadowMap: { value: [] },\n        spotLightMatrix: { value: [] },\n        pointLights: { value: [], properties: {\n          color: {},\n          position: {},\n          decay: {},\n          distance: {}\n        } },\n        pointLightShadows: { value: [], properties: {\n          shadowIntensity: 1,\n          shadowBias: {},\n          shadowNormalBias: {},\n          shadowRadius: {},\n          shadowMapSize: {},\n          shadowCameraNear: {},\n          shadowCameraFar: {}\n        } },\n        pointShadowMap: { value: [] },\n        pointShadowMatrix: { value: [] },\n        hemisphereLights: { value: [], properties: {\n          direction: {},\n          skyColor: {},\n          groundColor: {}\n        } },\n        // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n        rectAreaLights: { value: [], properties: {\n          color: {},\n          position: {},\n          width: {},\n          height: {}\n        } },\n        ltc_1: { value: null },\n        ltc_2: { value: null }\n      },\n      points: {\n        diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n        opacity: { value: 1 },\n        size: { value: 1 },\n        scale: { value: 1 },\n        map: { value: null },\n        alphaMap: { value: null },\n        alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        alphaTest: { value: 0 },\n        uvTransform: { value: /* @__PURE__ */ new Matrix3() }\n      },\n      sprite: {\n        diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n        opacity: { value: 1 },\n        center: { value: /* @__PURE__ */ new Vector2(0.5, 0.5) },\n        rotation: { value: 0 },\n        map: { value: null },\n        mapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        alphaMap: { value: null },\n        alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n        alphaTest: { value: 0 }\n      }\n    };\n    ShaderLib = {\n      basic: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.specularmap,\n          UniformsLib.envmap,\n          UniformsLib.aomap,\n          UniformsLib.lightmap,\n          UniformsLib.fog\n        ]),\n        vertexShader: ShaderChunk.meshbasic_vert,\n        fragmentShader: ShaderChunk.meshbasic_frag\n      },\n      lambert: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.specularmap,\n          UniformsLib.envmap,\n          UniformsLib.aomap,\n          UniformsLib.lightmap,\n          UniformsLib.emissivemap,\n          UniformsLib.bumpmap,\n          UniformsLib.normalmap,\n          UniformsLib.displacementmap,\n          UniformsLib.fog,\n          UniformsLib.lights,\n          {\n            emissive: { value: /* @__PURE__ */ new Color(0) }\n          }\n        ]),\n        vertexShader: ShaderChunk.meshlambert_vert,\n        fragmentShader: ShaderChunk.meshlambert_frag\n      },\n      phong: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.specularmap,\n          UniformsLib.envmap,\n          UniformsLib.aomap,\n          UniformsLib.lightmap,\n          UniformsLib.emissivemap,\n          UniformsLib.bumpmap,\n          UniformsLib.normalmap,\n          UniformsLib.displacementmap,\n          UniformsLib.fog,\n          UniformsLib.lights,\n          {\n            emissive: { value: /* @__PURE__ */ new Color(0) },\n            specular: { value: /* @__PURE__ */ new Color(1118481) },\n            shininess: { value: 30 }\n          }\n        ]),\n        vertexShader: ShaderChunk.meshphong_vert,\n        fragmentShader: ShaderChunk.meshphong_frag\n      },\n      standard: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.envmap,\n          UniformsLib.aomap,\n          UniformsLib.lightmap,\n          UniformsLib.emissivemap,\n          UniformsLib.bumpmap,\n          UniformsLib.normalmap,\n          UniformsLib.displacementmap,\n          UniformsLib.roughnessmap,\n          UniformsLib.metalnessmap,\n          UniformsLib.fog,\n          UniformsLib.lights,\n          {\n            emissive: { value: /* @__PURE__ */ new Color(0) },\n            roughness: { value: 1 },\n            metalness: { value: 0 },\n            envMapIntensity: { value: 1 }\n          }\n        ]),\n        vertexShader: ShaderChunk.meshphysical_vert,\n        fragmentShader: ShaderChunk.meshphysical_frag\n      },\n      toon: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.aomap,\n          UniformsLib.lightmap,\n          UniformsLib.emissivemap,\n          UniformsLib.bumpmap,\n          UniformsLib.normalmap,\n          UniformsLib.displacementmap,\n          UniformsLib.gradientmap,\n          UniformsLib.fog,\n          UniformsLib.lights,\n          {\n            emissive: { value: /* @__PURE__ */ new Color(0) }\n          }\n        ]),\n        vertexShader: ShaderChunk.meshtoon_vert,\n        fragmentShader: ShaderChunk.meshtoon_frag\n      },\n      matcap: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.bumpmap,\n          UniformsLib.normalmap,\n          UniformsLib.displacementmap,\n          UniformsLib.fog,\n          {\n            matcap: { value: null }\n          }\n        ]),\n        vertexShader: ShaderChunk.meshmatcap_vert,\n        fragmentShader: ShaderChunk.meshmatcap_frag\n      },\n      points: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.points,\n          UniformsLib.fog\n        ]),\n        vertexShader: ShaderChunk.points_vert,\n        fragmentShader: ShaderChunk.points_frag\n      },\n      dashed: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.fog,\n          {\n            scale: { value: 1 },\n            dashSize: { value: 1 },\n            totalSize: { value: 2 }\n          }\n        ]),\n        vertexShader: ShaderChunk.linedashed_vert,\n        fragmentShader: ShaderChunk.linedashed_frag\n      },\n      depth: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.displacementmap\n        ]),\n        vertexShader: ShaderChunk.depth_vert,\n        fragmentShader: ShaderChunk.depth_frag\n      },\n      normal: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.bumpmap,\n          UniformsLib.normalmap,\n          UniformsLib.displacementmap,\n          {\n            opacity: { value: 1 }\n          }\n        ]),\n        vertexShader: ShaderChunk.meshnormal_vert,\n        fragmentShader: ShaderChunk.meshnormal_frag\n      },\n      sprite: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.sprite,\n          UniformsLib.fog\n        ]),\n        vertexShader: ShaderChunk.sprite_vert,\n        fragmentShader: ShaderChunk.sprite_frag\n      },\n      background: {\n        uniforms: {\n          uvTransform: { value: /* @__PURE__ */ new Matrix3() },\n          t2D: { value: null },\n          backgroundIntensity: { value: 1 }\n        },\n        vertexShader: ShaderChunk.background_vert,\n        fragmentShader: ShaderChunk.background_frag\n      },\n      backgroundCube: {\n        uniforms: {\n          envMap: { value: null },\n          flipEnvMap: { value: -1 },\n          backgroundBlurriness: { value: 0 },\n          backgroundIntensity: { value: 1 },\n          backgroundRotation: { value: /* @__PURE__ */ new Matrix3() }\n        },\n        vertexShader: ShaderChunk.backgroundCube_vert,\n        fragmentShader: ShaderChunk.backgroundCube_frag\n      },\n      cube: {\n        uniforms: {\n          tCube: { value: null },\n          tFlip: { value: -1 },\n          opacity: { value: 1 }\n        },\n        vertexShader: ShaderChunk.cube_vert,\n        fragmentShader: ShaderChunk.cube_frag\n      },\n      equirect: {\n        uniforms: {\n          tEquirect: { value: null }\n        },\n        vertexShader: ShaderChunk.equirect_vert,\n        fragmentShader: ShaderChunk.equirect_frag\n      },\n      distanceRGBA: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.common,\n          UniformsLib.displacementmap,\n          {\n            referencePosition: { value: /* @__PURE__ */ new Vector3() },\n            nearDistance: { value: 1 },\n            farDistance: { value: 1e3 }\n          }\n        ]),\n        vertexShader: ShaderChunk.distanceRGBA_vert,\n        fragmentShader: ShaderChunk.distanceRGBA_frag\n      },\n      shadow: {\n        uniforms: /* @__PURE__ */ mergeUniforms([\n          UniformsLib.lights,\n          UniformsLib.fog,\n          {\n            color: { value: /* @__PURE__ */ new Color(0) },\n            opacity: { value: 1 }\n          }\n        ]),\n        vertexShader: ShaderChunk.shadow_vert,\n        fragmentShader: ShaderChunk.shadow_frag\n      }\n    };\n    ShaderLib.physical = {\n      uniforms: /* @__PURE__ */ mergeUniforms([\n        ShaderLib.standard.uniforms,\n        {\n          clearcoat: { value: 0 },\n          clearcoatMap: { value: null },\n          clearcoatMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          clearcoatNormalMap: { value: null },\n          clearcoatNormalMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          clearcoatNormalScale: { value: /* @__PURE__ */ new Vector2(1, 1) },\n          clearcoatRoughness: { value: 0 },\n          clearcoatRoughnessMap: { value: null },\n          clearcoatRoughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          dispersion: { value: 0 },\n          iridescence: { value: 0 },\n          iridescenceMap: { value: null },\n          iridescenceMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          iridescenceIOR: { value: 1.3 },\n          iridescenceThicknessMinimum: { value: 100 },\n          iridescenceThicknessMaximum: { value: 400 },\n          iridescenceThicknessMap: { value: null },\n          iridescenceThicknessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          sheen: { value: 0 },\n          sheenColor: { value: /* @__PURE__ */ new Color(0) },\n          sheenColorMap: { value: null },\n          sheenColorMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          sheenRoughness: { value: 1 },\n          sheenRoughnessMap: { value: null },\n          sheenRoughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          transmission: { value: 0 },\n          transmissionMap: { value: null },\n          transmissionMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          transmissionSamplerSize: { value: /* @__PURE__ */ new Vector2() },\n          transmissionSamplerMap: { value: null },\n          thickness: { value: 0 },\n          thicknessMap: { value: null },\n          thicknessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          attenuationDistance: { value: 0 },\n          attenuationColor: { value: /* @__PURE__ */ new Color(0) },\n          specularColor: { value: /* @__PURE__ */ new Color(1, 1, 1) },\n          specularColorMap: { value: null },\n          specularColorMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          specularIntensity: { value: 1 },\n          specularIntensityMap: { value: null },\n          specularIntensityMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n          anisotropyVector: { value: /* @__PURE__ */ new Vector2() },\n          anisotropyMap: { value: null },\n          anisotropyMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n        }\n      ]),\n      vertexShader: ShaderChunk.meshphysical_vert,\n      fragmentShader: ShaderChunk.meshphysical_frag\n    };\n    _rgb = { r: 0, b: 0, g: 0 };\n    _e1$1 = /* @__PURE__ */ new Euler();\n    _m1$1 = /* @__PURE__ */ new Matrix4();\n    OrthographicCamera = class extends Camera {\n      constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) {\n        super();\n        this.isOrthographicCamera = true;\n        this.type = \"OrthographicCamera\";\n        this.zoom = 1;\n        this.view = null;\n        this.left = left;\n        this.right = right;\n        this.top = top;\n        this.bottom = bottom;\n        this.near = near;\n        this.far = far;\n        this.updateProjectionMatrix();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.left = source.left;\n        this.right = source.right;\n        this.top = source.top;\n        this.bottom = source.bottom;\n        this.near = source.near;\n        this.far = source.far;\n        this.zoom = source.zoom;\n        this.view = source.view === null ? null : Object.assign({}, source.view);\n        return this;\n      }\n      setViewOffset(fullWidth, fullHeight, x, y2, width, height) {\n        if (this.view === null) {\n          this.view = {\n            enabled: true,\n            fullWidth: 1,\n            fullHeight: 1,\n            offsetX: 0,\n            offsetY: 0,\n            width: 1,\n            height: 1\n          };\n        }\n        this.view.enabled = true;\n        this.view.fullWidth = fullWidth;\n        this.view.fullHeight = fullHeight;\n        this.view.offsetX = x;\n        this.view.offsetY = y2;\n        this.view.width = width;\n        this.view.height = height;\n        this.updateProjectionMatrix();\n      }\n      clearViewOffset() {\n        if (this.view !== null) {\n          this.view.enabled = false;\n        }\n        this.updateProjectionMatrix();\n      }\n      updateProjectionMatrix() {\n        const dx = (this.right - this.left) / (2 * this.zoom);\n        const dy = (this.top - this.bottom) / (2 * this.zoom);\n        const cx = (this.right + this.left) / 2;\n        const cy = (this.top + this.bottom) / 2;\n        let left = cx - dx;\n        let right = cx + dx;\n        let top = cy + dy;\n        let bottom = cy - dy;\n        if (this.view !== null && this.view.enabled) {\n          const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n          const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n          left += scaleW * this.view.offsetX;\n          right = left + scaleW * this.view.width;\n          top -= scaleH * this.view.offsetY;\n          bottom = top - scaleH * this.view.height;\n        }\n        this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far, this.coordinateSystem);\n        this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        data.object.zoom = this.zoom;\n        data.object.left = this.left;\n        data.object.right = this.right;\n        data.object.top = this.top;\n        data.object.bottom = this.bottom;\n        data.object.near = this.near;\n        data.object.far = this.far;\n        if (this.view !== null) data.object.view = Object.assign({}, this.view);\n        return data;\n      }\n    };\n    LOD_MIN = 4;\n    EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\n    MAX_SAMPLES = 20;\n    _flatCamera = /* @__PURE__ */ new OrthographicCamera();\n    _clearColor = /* @__PURE__ */ new Color();\n    _oldTarget = null;\n    _oldActiveCubeFace = 0;\n    _oldActiveMipmapLevel = 0;\n    _oldXrEnabled = false;\n    PHI = (1 + Math.sqrt(5)) / 2;\n    INV_PHI = 1 / PHI;\n    _axisDirections = [\n      /* @__PURE__ */ new Vector3(-PHI, INV_PHI, 0),\n      /* @__PURE__ */ new Vector3(PHI, INV_PHI, 0),\n      /* @__PURE__ */ new Vector3(-INV_PHI, 0, PHI),\n      /* @__PURE__ */ new Vector3(INV_PHI, 0, PHI),\n      /* @__PURE__ */ new Vector3(0, PHI, -INV_PHI),\n      /* @__PURE__ */ new Vector3(0, PHI, INV_PHI),\n      /* @__PURE__ */ new Vector3(-1, 1, -1),\n      /* @__PURE__ */ new Vector3(1, 1, -1),\n      /* @__PURE__ */ new Vector3(-1, 1, 1),\n      /* @__PURE__ */ new Vector3(1, 1, 1)\n    ];\n    PMREMGenerator = class {\n      constructor(renderer) {\n        this._renderer = renderer;\n        this._pingPongRenderTarget = null;\n        this._lodMax = 0;\n        this._cubeSize = 0;\n        this._lodPlanes = [];\n        this._sizeLods = [];\n        this._sigmas = [];\n        this._blurMaterial = null;\n        this._cubemapMaterial = null;\n        this._equirectMaterial = null;\n        this._compileMaterial(this._blurMaterial);\n      }\n      /**\n       * Generates a PMREM from a supplied Scene, which can be faster than using an\n       * image if networking bandwidth is low. Optional sigma specifies a blur radius\n       * in radians to be applied to the scene before PMREM generation. Optional near\n       * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n       * is placed at the origin).\n       */\n      fromScene(scene, sigma = 0, near = 0.1, far = 100) {\n        _oldTarget = this._renderer.getRenderTarget();\n        _oldActiveCubeFace = this._renderer.getActiveCubeFace();\n        _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n        _oldXrEnabled = this._renderer.xr.enabled;\n        this._renderer.xr.enabled = false;\n        this._setSize(256);\n        const cubeUVRenderTarget = this._allocateTargets();\n        cubeUVRenderTarget.depthBuffer = true;\n        this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n        if (sigma > 0) {\n          this._blur(cubeUVRenderTarget, 0, 0, sigma);\n        }\n        this._applyPMREM(cubeUVRenderTarget);\n        this._cleanup(cubeUVRenderTarget);\n        return cubeUVRenderTarget;\n      }\n      /**\n       * Generates a PMREM from an equirectangular texture, which can be either LDR\n       * or HDR. The ideal input image size is 1k (1024 x 512),\n       * as this matches best with the 256 x 256 cubemap output.\n       * The smallest supported equirectangular image size is 64 x 32.\n       */\n      fromEquirectangular(equirectangular, renderTarget = null) {\n        return this._fromTexture(equirectangular, renderTarget);\n      }\n      /**\n       * Generates a PMREM from an cubemap texture, which can be either LDR\n       * or HDR. The ideal input cube size is 256 x 256,\n       * as this matches best with the 256 x 256 cubemap output.\n       * The smallest supported cube size is 16 x 16.\n       */\n      fromCubemap(cubemap, renderTarget = null) {\n        return this._fromTexture(cubemap, renderTarget);\n      }\n      /**\n       * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n       * your texture's network fetch for increased concurrency.\n       */\n      compileCubemapShader() {\n        if (this._cubemapMaterial === null) {\n          this._cubemapMaterial = _getCubemapMaterial();\n          this._compileMaterial(this._cubemapMaterial);\n        }\n      }\n      /**\n       * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n       * your texture's network fetch for increased concurrency.\n       */\n      compileEquirectangularShader() {\n        if (this._equirectMaterial === null) {\n          this._equirectMaterial = _getEquirectMaterial();\n          this._compileMaterial(this._equirectMaterial);\n        }\n      }\n      /**\n       * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n       * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n       * one of them will cause any others to also become unusable.\n       */\n      dispose() {\n        this._dispose();\n        if (this._cubemapMaterial !== null) this._cubemapMaterial.dispose();\n        if (this._equirectMaterial !== null) this._equirectMaterial.dispose();\n      }\n      // private interface\n      _setSize(cubeSize) {\n        this._lodMax = Math.floor(Math.log2(cubeSize));\n        this._cubeSize = Math.pow(2, this._lodMax);\n      }\n      _dispose() {\n        if (this._blurMaterial !== null) this._blurMaterial.dispose();\n        if (this._pingPongRenderTarget !== null) this._pingPongRenderTarget.dispose();\n        for (let i2 = 0; i2 < this._lodPlanes.length; i2++) {\n          this._lodPlanes[i2].dispose();\n        }\n      }\n      _cleanup(outputTarget) {\n        this._renderer.setRenderTarget(_oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel);\n        this._renderer.xr.enabled = _oldXrEnabled;\n        outputTarget.scissorTest = false;\n        _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n      }\n      _fromTexture(texture, renderTarget) {\n        if (texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping) {\n          this._setSize(texture.image.length === 0 ? 16 : texture.image[0].width || texture.image[0].image.width);\n        } else {\n          this._setSize(texture.image.width / 4);\n        }\n        _oldTarget = this._renderer.getRenderTarget();\n        _oldActiveCubeFace = this._renderer.getActiveCubeFace();\n        _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n        _oldXrEnabled = this._renderer.xr.enabled;\n        this._renderer.xr.enabled = false;\n        const cubeUVRenderTarget = renderTarget || this._allocateTargets();\n        this._textureToCubeUV(texture, cubeUVRenderTarget);\n        this._applyPMREM(cubeUVRenderTarget);\n        this._cleanup(cubeUVRenderTarget);\n        return cubeUVRenderTarget;\n      }\n      _allocateTargets() {\n        const width = 3 * Math.max(this._cubeSize, 16 * 7);\n        const height = 4 * this._cubeSize;\n        const params = {\n          magFilter: LinearFilter,\n          minFilter: LinearFilter,\n          generateMipmaps: false,\n          type: HalfFloatType,\n          format: RGBAFormat,\n          colorSpace: LinearSRGBColorSpace,\n          depthBuffer: false\n        };\n        const cubeUVRenderTarget = _createRenderTarget(width, height, params);\n        if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height) {\n          if (this._pingPongRenderTarget !== null) {\n            this._dispose();\n          }\n          this._pingPongRenderTarget = _createRenderTarget(width, height, params);\n          const { _lodMax } = this;\n          ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes(_lodMax));\n          this._blurMaterial = _getBlurShader(_lodMax, width, height);\n        }\n        return cubeUVRenderTarget;\n      }\n      _compileMaterial(material) {\n        const tmpMesh = new Mesh(this._lodPlanes[0], material);\n        this._renderer.compile(tmpMesh, _flatCamera);\n      }\n      _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n        const fov2 = 90;\n        const aspect2 = 1;\n        const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far);\n        const upSign = [1, -1, 1, 1, 1, 1];\n        const forwardSign = [1, 1, 1, -1, -1, -1];\n        const renderer = this._renderer;\n        const originalAutoClear = renderer.autoClear;\n        const toneMapping = renderer.toneMapping;\n        renderer.getClearColor(_clearColor);\n        renderer.toneMapping = NoToneMapping;\n        renderer.autoClear = false;\n        const backgroundMaterial = new MeshBasicMaterial({\n          name: \"PMREM.Background\",\n          side: BackSide,\n          depthWrite: false,\n          depthTest: false\n        });\n        const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n        let useSolidColor = false;\n        const background = scene.background;\n        if (background) {\n          if (background.isColor) {\n            backgroundMaterial.color.copy(background);\n            scene.background = null;\n            useSolidColor = true;\n          }\n        } else {\n          backgroundMaterial.color.copy(_clearColor);\n          useSolidColor = true;\n        }\n        for (let i2 = 0; i2 < 6; i2++) {\n          const col = i2 % 3;\n          if (col === 0) {\n            cubeCamera.up.set(0, upSign[i2], 0);\n            cubeCamera.lookAt(forwardSign[i2], 0, 0);\n          } else if (col === 1) {\n            cubeCamera.up.set(0, 0, upSign[i2]);\n            cubeCamera.lookAt(0, forwardSign[i2], 0);\n          } else {\n            cubeCamera.up.set(0, upSign[i2], 0);\n            cubeCamera.lookAt(0, 0, forwardSign[i2]);\n          }\n          const size = this._cubeSize;\n          _setViewport(cubeUVRenderTarget, col * size, i2 > 2 ? size : 0, size, size);\n          renderer.setRenderTarget(cubeUVRenderTarget);\n          if (useSolidColor) {\n            renderer.render(backgroundBox, cubeCamera);\n          }\n          renderer.render(scene, cubeCamera);\n        }\n        backgroundBox.geometry.dispose();\n        backgroundBox.material.dispose();\n        renderer.toneMapping = toneMapping;\n        renderer.autoClear = originalAutoClear;\n        scene.background = background;\n      }\n      _textureToCubeUV(texture, cubeUVRenderTarget) {\n        const renderer = this._renderer;\n        const isCubeTexture = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping;\n        if (isCubeTexture) {\n          if (this._cubemapMaterial === null) {\n            this._cubemapMaterial = _getCubemapMaterial();\n          }\n          this._cubemapMaterial.uniforms.flipEnvMap.value = texture.isRenderTargetTexture === false ? -1 : 1;\n        } else {\n          if (this._equirectMaterial === null) {\n            this._equirectMaterial = _getEquirectMaterial();\n          }\n        }\n        const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n        const mesh = new Mesh(this._lodPlanes[0], material);\n        const uniforms = material.uniforms;\n        uniforms[\"envMap\"].value = texture;\n        const size = this._cubeSize;\n        _setViewport(cubeUVRenderTarget, 0, 0, 3 * size, 2 * size);\n        renderer.setRenderTarget(cubeUVRenderTarget);\n        renderer.render(mesh, _flatCamera);\n      }\n      _applyPMREM(cubeUVRenderTarget) {\n        const renderer = this._renderer;\n        const autoClear = renderer.autoClear;\n        renderer.autoClear = false;\n        const n = this._lodPlanes.length;\n        for (let i2 = 1; i2 < n; i2++) {\n          const sigma = Math.sqrt(this._sigmas[i2] * this._sigmas[i2] - this._sigmas[i2 - 1] * this._sigmas[i2 - 1]);\n          const poleAxis = _axisDirections[(n - i2 - 1) % _axisDirections.length];\n          this._blur(cubeUVRenderTarget, i2 - 1, i2, sigma, poleAxis);\n        }\n        renderer.autoClear = autoClear;\n      }\n      /**\n       * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n       * vertically and horizontally, but this breaks down on a cube. Here we apply\n       * the blur latitudinally (around the poles), and then longitudinally (towards\n       * the poles) to approximate the orthogonally-separable blur. It is least\n       * accurate at the poles, but still does a decent job.\n       */\n      _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n        const pingPongRenderTarget = this._pingPongRenderTarget;\n        this._halfBlur(\n          cubeUVRenderTarget,\n          pingPongRenderTarget,\n          lodIn,\n          lodOut,\n          sigma,\n          \"latitudinal\",\n          poleAxis\n        );\n        this._halfBlur(\n          pingPongRenderTarget,\n          cubeUVRenderTarget,\n          lodOut,\n          lodOut,\n          sigma,\n          \"longitudinal\",\n          poleAxis\n        );\n      }\n      _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n        const renderer = this._renderer;\n        const blurMaterial = this._blurMaterial;\n        if (direction !== \"latitudinal\" && direction !== \"longitudinal\") {\n          console.error(\n            \"blur direction must be either latitudinal or longitudinal!\"\n          );\n        }\n        const STANDARD_DEVIATIONS = 3;\n        const blurMesh = new Mesh(this._lodPlanes[lodOut], blurMaterial);\n        const blurUniforms = blurMaterial.uniforms;\n        const pixels = this._sizeLods[lodIn] - 1;\n        const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n        const sigmaPixels = sigmaRadians / radiansPerPixel;\n        const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n        if (samples > MAX_SAMPLES) {\n          console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n        }\n        const weights = [];\n        let sum = 0;\n        for (let i2 = 0; i2 < MAX_SAMPLES; ++i2) {\n          const x2 = i2 / sigmaPixels;\n          const weight = Math.exp(-x2 * x2 / 2);\n          weights.push(weight);\n          if (i2 === 0) {\n            sum += weight;\n          } else if (i2 < samples) {\n            sum += 2 * weight;\n          }\n        }\n        for (let i2 = 0; i2 < weights.length; i2++) {\n          weights[i2] = weights[i2] / sum;\n        }\n        blurUniforms[\"envMap\"].value = targetIn.texture;\n        blurUniforms[\"samples\"].value = samples;\n        blurUniforms[\"weights\"].value = weights;\n        blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n        if (poleAxis) {\n          blurUniforms[\"poleAxis\"].value = poleAxis;\n        }\n        const { _lodMax } = this;\n        blurUniforms[\"dTheta\"].value = radiansPerPixel;\n        blurUniforms[\"mipInt\"].value = _lodMax - lodIn;\n        const outputSize = this._sizeLods[lodOut];\n        const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n        const y2 = 4 * (this._cubeSize - outputSize);\n        _setViewport(targetOut, x, y2, 3 * outputSize, 2 * outputSize);\n        renderer.setRenderTarget(targetOut);\n        renderer.render(blurMesh, _flatCamera);\n      }\n    };\n    DepthTexture = class extends Texture {\n      constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format = DepthFormat) {\n        if (format !== DepthFormat && format !== DepthStencilFormat) {\n          throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n        }\n        if (type === void 0 && format === DepthFormat) type = UnsignedIntType;\n        if (type === void 0 && format === DepthStencilFormat) type = UnsignedInt248Type;\n        super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n        this.isDepthTexture = true;\n        this.image = { width, height };\n        this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter;\n        this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter;\n        this.flipY = false;\n        this.generateMipmaps = false;\n        this.compareFunction = null;\n      }\n      copy(source) {\n        super.copy(source);\n        this.compareFunction = source.compareFunction;\n        return this;\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        if (this.compareFunction !== null) data.compareFunction = this.compareFunction;\n        return data;\n      }\n    };\n    emptyTexture = /* @__PURE__ */ new Texture();\n    emptyShadowTexture = /* @__PURE__ */ new DepthTexture(1, 1);\n    emptyArrayTexture = /* @__PURE__ */ new DataArrayTexture();\n    empty3dTexture = /* @__PURE__ */ new Data3DTexture();\n    emptyCubeTexture = /* @__PURE__ */ new CubeTexture();\n    arrayCacheF32 = [];\n    arrayCacheI32 = [];\n    mat4array = new Float32Array(16);\n    mat3array = new Float32Array(9);\n    mat2array = new Float32Array(4);\n    SingleUniform = class {\n      constructor(id, activeInfo, addr) {\n        this.id = id;\n        this.addr = addr;\n        this.cache = [];\n        this.type = activeInfo.type;\n        this.setValue = getSingularSetter(activeInfo.type);\n      }\n    };\n    PureArrayUniform = class {\n      constructor(id, activeInfo, addr) {\n        this.id = id;\n        this.addr = addr;\n        this.cache = [];\n        this.type = activeInfo.type;\n        this.size = activeInfo.size;\n        this.setValue = getPureArraySetter(activeInfo.type);\n      }\n    };\n    StructuredUniform = class {\n      constructor(id) {\n        this.id = id;\n        this.seq = [];\n        this.map = {};\n      }\n      setValue(gl, value, textures) {\n        const seq = this.seq;\n        for (let i2 = 0, n = seq.length; i2 !== n; ++i2) {\n          const u3 = seq[i2];\n          u3.setValue(gl, value[u3.id], textures);\n        }\n      }\n    };\n    RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n    WebGLUniforms = class {\n      constructor(gl, program) {\n        this.seq = [];\n        this.map = {};\n        const n = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n        for (let i2 = 0; i2 < n; ++i2) {\n          const info = gl.getActiveUniform(program, i2), addr = gl.getUniformLocation(program, info.name);\n          parseUniform(info, addr, this);\n        }\n      }\n      setValue(gl, name, value, textures) {\n        const u3 = this.map[name];\n        if (u3 !== void 0) u3.setValue(gl, value, textures);\n      }\n      setOptional(gl, object, name) {\n        const v2 = object[name];\n        if (v2 !== void 0) this.setValue(gl, name, v2);\n      }\n      static upload(gl, seq, values, textures) {\n        for (let i2 = 0, n = seq.length; i2 !== n; ++i2) {\n          const u3 = seq[i2], v2 = values[u3.id];\n          if (v2.needsUpdate !== false) {\n            u3.setValue(gl, v2.value, textures);\n          }\n        }\n      }\n      static seqWithValue(seq, values) {\n        const r2 = [];\n        for (let i2 = 0, n = seq.length; i2 !== n; ++i2) {\n          const u3 = seq[i2];\n          if (u3.id in values) r2.push(u3);\n        }\n        return r2;\n      }\n    };\n    COMPLETION_STATUS_KHR = 37297;\n    programIdCount = 0;\n    _v0$1 = /* @__PURE__ */ new Vector3();\n    includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n    shaderChunkMap = /* @__PURE__ */ new Map();\n    unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n    _id$1 = 0;\n    WebGLShaderCache = class {\n      constructor() {\n        this.shaderCache = /* @__PURE__ */ new Map();\n        this.materialCache = /* @__PURE__ */ new Map();\n      }\n      update(material) {\n        const vertexShader = material.vertexShader;\n        const fragmentShader = material.fragmentShader;\n        const vertexShaderStage = this._getShaderStage(vertexShader);\n        const fragmentShaderStage = this._getShaderStage(fragmentShader);\n        const materialShaders = this._getShaderCacheForMaterial(material);\n        if (materialShaders.has(vertexShaderStage) === false) {\n          materialShaders.add(vertexShaderStage);\n          vertexShaderStage.usedTimes++;\n        }\n        if (materialShaders.has(fragmentShaderStage) === false) {\n          materialShaders.add(fragmentShaderStage);\n          fragmentShaderStage.usedTimes++;\n        }\n        return this;\n      }\n      remove(material) {\n        const materialShaders = this.materialCache.get(material);\n        for (const shaderStage of materialShaders) {\n          shaderStage.usedTimes--;\n          if (shaderStage.usedTimes === 0) this.shaderCache.delete(shaderStage.code);\n        }\n        this.materialCache.delete(material);\n        return this;\n      }\n      getVertexShaderID(material) {\n        return this._getShaderStage(material.vertexShader).id;\n      }\n      getFragmentShaderID(material) {\n        return this._getShaderStage(material.fragmentShader).id;\n      }\n      dispose() {\n        this.shaderCache.clear();\n        this.materialCache.clear();\n      }\n      _getShaderCacheForMaterial(material) {\n        const cache = this.materialCache;\n        let set = cache.get(material);\n        if (set === void 0) {\n          set = /* @__PURE__ */ new Set();\n          cache.set(material, set);\n        }\n        return set;\n      }\n      _getShaderStage(code) {\n        const cache = this.shaderCache;\n        let stage = cache.get(code);\n        if (stage === void 0) {\n          stage = new WebGLShaderStage(code);\n          cache.set(code, stage);\n        }\n        return stage;\n      }\n    };\n    WebGLShaderStage = class {\n      constructor(code) {\n        this.id = _id$1++;\n        this.code = code;\n        this.usedTimes = 0;\n      }\n    };\n    nextVersion = 0;\n    MeshDepthMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshDepthMaterial = true;\n        this.type = \"MeshDepthMaterial\";\n        this.depthPacking = BasicDepthPacking;\n        this.map = null;\n        this.alphaMap = null;\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.depthPacking = source.depthPacking;\n        this.map = source.map;\n        this.alphaMap = source.alphaMap;\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        return this;\n      }\n    };\n    MeshDistanceMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshDistanceMaterial = true;\n        this.type = \"MeshDistanceMaterial\";\n        this.map = null;\n        this.alphaMap = null;\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.map = source.map;\n        this.alphaMap = source.alphaMap;\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        return this;\n      }\n    };\n    vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\n    fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\tconst float samples = float( VSM_SAMPLES );\\n\tfloat mean = 0.0;\\n\tfloat squared_mean = 0.0;\\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\t\tfloat uvOffset = uvStart + i * uvStride;\\n\t\t#ifdef HORIZONTAL_PASS\\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\t\t\tmean += distribution.x;\\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\t\t#else\\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\t\t\tmean += depth;\\n\t\t\tsquared_mean += depth * depth;\\n\t\t#endif\\n\t}\\n\tmean = mean / samples;\\n\tsquared_mean = squared_mean / samples;\\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n    reversedFuncs = {\n      [NeverDepth]: AlwaysDepth,\n      [LessDepth]: GreaterDepth,\n      [EqualDepth]: NotEqualDepth,\n      [LessEqualDepth]: GreaterEqualDepth,\n      [AlwaysDepth]: NeverDepth,\n      [GreaterDepth]: LessDepth,\n      [NotEqualDepth]: EqualDepth,\n      [GreaterEqualDepth]: LessEqualDepth\n    };\n    TextureUtils = {\n      contain,\n      cover,\n      fill,\n      getByteLength\n    };\n    ArrayCamera = class extends PerspectiveCamera {\n      constructor(array = []) {\n        super();\n        this.isArrayCamera = true;\n        this.cameras = array;\n      }\n    };\n    Group = class extends Object3D {\n      constructor() {\n        super();\n        this.isGroup = true;\n        this.type = \"Group\";\n      }\n    };\n    _moveEvent = { type: \"move\" };\n    WebXRController = class {\n      constructor() {\n        this._targetRay = null;\n        this._grip = null;\n        this._hand = null;\n      }\n      getHandSpace() {\n        if (this._hand === null) {\n          this._hand = new Group();\n          this._hand.matrixAutoUpdate = false;\n          this._hand.visible = false;\n          this._hand.joints = {};\n          this._hand.inputState = { pinching: false };\n        }\n        return this._hand;\n      }\n      getTargetRaySpace() {\n        if (this._targetRay === null) {\n          this._targetRay = new Group();\n          this._targetRay.matrixAutoUpdate = false;\n          this._targetRay.visible = false;\n          this._targetRay.hasLinearVelocity = false;\n          this._targetRay.linearVelocity = new Vector3();\n          this._targetRay.hasAngularVelocity = false;\n          this._targetRay.angularVelocity = new Vector3();\n        }\n        return this._targetRay;\n      }\n      getGripSpace() {\n        if (this._grip === null) {\n          this._grip = new Group();\n          this._grip.matrixAutoUpdate = false;\n          this._grip.visible = false;\n          this._grip.hasLinearVelocity = false;\n          this._grip.linearVelocity = new Vector3();\n          this._grip.hasAngularVelocity = false;\n          this._grip.angularVelocity = new Vector3();\n        }\n        return this._grip;\n      }\n      dispatchEvent(event) {\n        if (this._targetRay !== null) {\n          this._targetRay.dispatchEvent(event);\n        }\n        if (this._grip !== null) {\n          this._grip.dispatchEvent(event);\n        }\n        if (this._hand !== null) {\n          this._hand.dispatchEvent(event);\n        }\n        return this;\n      }\n      connect(inputSource) {\n        if (inputSource && inputSource.hand) {\n          const hand = this._hand;\n          if (hand) {\n            for (const inputjoint of inputSource.hand.values()) {\n              this._getHandJoint(hand, inputjoint);\n            }\n          }\n        }\n        this.dispatchEvent({ type: \"connected\", data: inputSource });\n        return this;\n      }\n      disconnect(inputSource) {\n        this.dispatchEvent({ type: \"disconnected\", data: inputSource });\n        if (this._targetRay !== null) {\n          this._targetRay.visible = false;\n        }\n        if (this._grip !== null) {\n          this._grip.visible = false;\n        }\n        if (this._hand !== null) {\n          this._hand.visible = false;\n        }\n        return this;\n      }\n      update(inputSource, frame, referenceSpace) {\n        let inputPose = null;\n        let gripPose = null;\n        let handPose = null;\n        const targetRay = this._targetRay;\n        const grip = this._grip;\n        const hand = this._hand;\n        if (inputSource && frame.session.visibilityState !== \"visible-blurred\") {\n          if (hand && inputSource.hand) {\n            handPose = true;\n            for (const inputjoint of inputSource.hand.values()) {\n              const jointPose = frame.getJointPose(inputjoint, referenceSpace);\n              const joint = this._getHandJoint(hand, inputjoint);\n              if (jointPose !== null) {\n                joint.matrix.fromArray(jointPose.transform.matrix);\n                joint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n                joint.matrixWorldNeedsUpdate = true;\n                joint.jointRadius = jointPose.radius;\n              }\n              joint.visible = jointPose !== null;\n            }\n            const indexTip = hand.joints[\"index-finger-tip\"];\n            const thumbTip = hand.joints[\"thumb-tip\"];\n            const distance = indexTip.position.distanceTo(thumbTip.position);\n            const distanceToPinch = 0.02;\n            const threshold = 5e-3;\n            if (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n              hand.inputState.pinching = false;\n              this.dispatchEvent({\n                type: \"pinchend\",\n                handedness: inputSource.handedness,\n                target: this\n              });\n            } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n              hand.inputState.pinching = true;\n              this.dispatchEvent({\n                type: \"pinchstart\",\n                handedness: inputSource.handedness,\n                target: this\n              });\n            }\n          } else {\n            if (grip !== null && inputSource.gripSpace) {\n              gripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n              if (gripPose !== null) {\n                grip.matrix.fromArray(gripPose.transform.matrix);\n                grip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n                grip.matrixWorldNeedsUpdate = true;\n                if (gripPose.linearVelocity) {\n                  grip.hasLinearVelocity = true;\n                  grip.linearVelocity.copy(gripPose.linearVelocity);\n                } else {\n                  grip.hasLinearVelocity = false;\n                }\n                if (gripPose.angularVelocity) {\n                  grip.hasAngularVelocity = true;\n                  grip.angularVelocity.copy(gripPose.angularVelocity);\n                } else {\n                  grip.hasAngularVelocity = false;\n                }\n              }\n            }\n          }\n          if (targetRay !== null) {\n            inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n            if (inputPose === null && gripPose !== null) {\n              inputPose = gripPose;\n            }\n            if (inputPose !== null) {\n              targetRay.matrix.fromArray(inputPose.transform.matrix);\n              targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n              targetRay.matrixWorldNeedsUpdate = true;\n              if (inputPose.linearVelocity) {\n                targetRay.hasLinearVelocity = true;\n                targetRay.linearVelocity.copy(inputPose.linearVelocity);\n              } else {\n                targetRay.hasLinearVelocity = false;\n              }\n              if (inputPose.angularVelocity) {\n                targetRay.hasAngularVelocity = true;\n                targetRay.angularVelocity.copy(inputPose.angularVelocity);\n              } else {\n                targetRay.hasAngularVelocity = false;\n              }\n              this.dispatchEvent(_moveEvent);\n            }\n          }\n        }\n        if (targetRay !== null) {\n          targetRay.visible = inputPose !== null;\n        }\n        if (grip !== null) {\n          grip.visible = gripPose !== null;\n        }\n        if (hand !== null) {\n          hand.visible = handPose !== null;\n        }\n        return this;\n      }\n      // private method\n      _getHandJoint(hand, inputjoint) {\n        if (hand.joints[inputjoint.jointName] === void 0) {\n          const joint = new Group();\n          joint.matrixAutoUpdate = false;\n          joint.visible = false;\n          hand.joints[inputjoint.jointName] = joint;\n          hand.add(joint);\n        }\n        return hand.joints[inputjoint.jointName];\n      }\n    };\n    _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n    _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n    WebXRDepthSensing = class {\n      constructor() {\n        this.texture = null;\n        this.mesh = null;\n        this.depthNear = 0;\n        this.depthFar = 0;\n      }\n      init(renderer, depthData, renderState) {\n        if (this.texture === null) {\n          const texture = new Texture();\n          const texProps = renderer.properties.get(texture);\n          texProps.__webglTexture = depthData.texture;\n          if (depthData.depthNear != renderState.depthNear || depthData.depthFar != renderState.depthFar) {\n            this.depthNear = depthData.depthNear;\n            this.depthFar = depthData.depthFar;\n          }\n          this.texture = texture;\n        }\n      }\n      getMesh(cameraXR) {\n        if (this.texture !== null) {\n          if (this.mesh === null) {\n            const viewport = cameraXR.cameras[0].viewport;\n            const material = new ShaderMaterial({\n              vertexShader: _occlusion_vertex,\n              fragmentShader: _occlusion_fragment,\n              uniforms: {\n                depthColor: { value: this.texture },\n                depthWidth: { value: viewport.z },\n                depthHeight: { value: viewport.w }\n              }\n            });\n            this.mesh = new Mesh(new PlaneGeometry(20, 20), material);\n          }\n        }\n        return this.mesh;\n      }\n      reset() {\n        this.texture = null;\n        this.mesh = null;\n      }\n      getDepthTexture() {\n        return this.texture;\n      }\n    };\n    WebXRManager = class extends EventDispatcher {\n      constructor(renderer, gl) {\n        super();\n        const scope = this;\n        let session = null;\n        let framebufferScaleFactor = 1;\n        let referenceSpace = null;\n        let referenceSpaceType = \"local-floor\";\n        let foveation = 1;\n        let customReferenceSpace = null;\n        let pose = null;\n        let glBinding = null;\n        let glProjLayer = null;\n        let glBaseLayer = null;\n        let xrFrame = null;\n        const depthSensing = new WebXRDepthSensing();\n        const attributes = gl.getContextAttributes();\n        let initialRenderTarget = null;\n        let newRenderTarget = null;\n        const controllers = [];\n        const controllerInputSources = [];\n        const currentSize = new Vector2();\n        let currentPixelRatio = null;\n        const cameraL = new PerspectiveCamera();\n        cameraL.layers.enable(1);\n        cameraL.viewport = new Vector4();\n        const cameraR = new PerspectiveCamera();\n        cameraR.layers.enable(2);\n        cameraR.viewport = new Vector4();\n        const cameras = [cameraL, cameraR];\n        const cameraXR = new ArrayCamera();\n        cameraXR.layers.enable(1);\n        cameraXR.layers.enable(2);\n        let _currentDepthNear = null;\n        let _currentDepthFar = null;\n        this.cameraAutoUpdate = true;\n        this.enabled = false;\n        this.isPresenting = false;\n        this.getController = function(index) {\n          let controller = controllers[index];\n          if (controller === void 0) {\n            controller = new WebXRController();\n            controllers[index] = controller;\n          }\n          return controller.getTargetRaySpace();\n        };\n        this.getControllerGrip = function(index) {\n          let controller = controllers[index];\n          if (controller === void 0) {\n            controller = new WebXRController();\n            controllers[index] = controller;\n          }\n          return controller.getGripSpace();\n        };\n        this.getHand = function(index) {\n          let controller = controllers[index];\n          if (controller === void 0) {\n            controller = new WebXRController();\n            controllers[index] = controller;\n          }\n          return controller.getHandSpace();\n        };\n        function onSessionEvent(event) {\n          const controllerIndex = controllerInputSources.indexOf(event.inputSource);\n          if (controllerIndex === -1) {\n            return;\n          }\n          const controller = controllers[controllerIndex];\n          if (controller !== void 0) {\n            controller.update(event.inputSource, event.frame, customReferenceSpace || referenceSpace);\n            controller.dispatchEvent({ type: event.type, data: event.inputSource });\n          }\n        }\n        function onSessionEnd() {\n          session.removeEventListener(\"select\", onSessionEvent);\n          session.removeEventListener(\"selectstart\", onSessionEvent);\n          session.removeEventListener(\"selectend\", onSessionEvent);\n          session.removeEventListener(\"squeeze\", onSessionEvent);\n          session.removeEventListener(\"squeezestart\", onSessionEvent);\n          session.removeEventListener(\"squeezeend\", onSessionEvent);\n          session.removeEventListener(\"end\", onSessionEnd);\n          session.removeEventListener(\"inputsourceschange\", onInputSourcesChange);\n          for (let i2 = 0; i2 < controllers.length; i2++) {\n            const inputSource = controllerInputSources[i2];\n            if (inputSource === null) continue;\n            controllerInputSources[i2] = null;\n            controllers[i2].disconnect(inputSource);\n          }\n          _currentDepthNear = null;\n          _currentDepthFar = null;\n          depthSensing.reset();\n          renderer.setRenderTarget(initialRenderTarget);\n          glBaseLayer = null;\n          glProjLayer = null;\n          glBinding = null;\n          session = null;\n          newRenderTarget = null;\n          animation.stop();\n          scope.isPresenting = false;\n          renderer.setPixelRatio(currentPixelRatio);\n          renderer.setSize(currentSize.width, currentSize.height, false);\n          scope.dispatchEvent({ type: \"sessionend\" });\n        }\n        this.setFramebufferScaleFactor = function(value) {\n          framebufferScaleFactor = value;\n          if (scope.isPresenting === true) {\n            console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\");\n          }\n        };\n        this.setReferenceSpaceType = function(value) {\n          referenceSpaceType = value;\n          if (scope.isPresenting === true) {\n            console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\");\n          }\n        };\n        this.getReferenceSpace = function() {\n          return customReferenceSpace || referenceSpace;\n        };\n        this.setReferenceSpace = function(space) {\n          customReferenceSpace = space;\n        };\n        this.getBaseLayer = function() {\n          return glProjLayer !== null ? glProjLayer : glBaseLayer;\n        };\n        this.getBinding = function() {\n          return glBinding;\n        };\n        this.getFrame = function() {\n          return xrFrame;\n        };\n        this.getSession = function() {\n          return session;\n        };\n        this.setSession = function(value) {\n          return __async(this, null, function* () {\n            session = value;\n            if (session !== null) {\n              initialRenderTarget = renderer.getRenderTarget();\n              session.addEventListener(\"select\", onSessionEvent);\n              session.addEventListener(\"selectstart\", onSessionEvent);\n              session.addEventListener(\"selectend\", onSessionEvent);\n              session.addEventListener(\"squeeze\", onSessionEvent);\n              session.addEventListener(\"squeezestart\", onSessionEvent);\n              session.addEventListener(\"squeezeend\", onSessionEvent);\n              session.addEventListener(\"end\", onSessionEnd);\n              session.addEventListener(\"inputsourceschange\", onInputSourcesChange);\n              if (attributes.xrCompatible !== true) {\n                yield gl.makeXRCompatible();\n              }\n              currentPixelRatio = renderer.getPixelRatio();\n              renderer.getSize(currentSize);\n              if (session.renderState.layers === void 0) {\n                const layerInit = {\n                  antialias: attributes.antialias,\n                  alpha: true,\n                  depth: attributes.depth,\n                  stencil: attributes.stencil,\n                  framebufferScaleFactor\n                };\n                glBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n                session.updateRenderState({ baseLayer: glBaseLayer });\n                renderer.setPixelRatio(1);\n                renderer.setSize(glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false);\n                newRenderTarget = new WebGLRenderTarget(\n                  glBaseLayer.framebufferWidth,\n                  glBaseLayer.framebufferHeight,\n                  {\n                    format: RGBAFormat,\n                    type: UnsignedByteType,\n                    colorSpace: renderer.outputColorSpace,\n                    stencilBuffer: attributes.stencil\n                  }\n                );\n              } else {\n                let depthFormat = null;\n                let depthType = null;\n                let glDepthFormat = null;\n                if (attributes.depth) {\n                  glDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n                  depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n                  depthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n                }\n                const projectionlayerInit = {\n                  colorFormat: gl.RGBA8,\n                  depthFormat: glDepthFormat,\n                  scaleFactor: framebufferScaleFactor\n                };\n                glBinding = new XRWebGLBinding(session, gl);\n                glProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n                session.updateRenderState({ layers: [glProjLayer] });\n                renderer.setPixelRatio(1);\n                renderer.setSize(glProjLayer.textureWidth, glProjLayer.textureHeight, false);\n                newRenderTarget = new WebGLRenderTarget(\n                  glProjLayer.textureWidth,\n                  glProjLayer.textureHeight,\n                  {\n                    format: RGBAFormat,\n                    type: UnsignedByteType,\n                    depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n                    stencilBuffer: attributes.stencil,\n                    colorSpace: renderer.outputColorSpace,\n                    samples: attributes.antialias ? 4 : 0,\n                    resolveDepthBuffer: glProjLayer.ignoreDepthValues === false\n                  }\n                );\n              }\n              newRenderTarget.isXRRenderTarget = true;\n              this.setFoveation(foveation);\n              customReferenceSpace = null;\n              referenceSpace = yield session.requestReferenceSpace(referenceSpaceType);\n              animation.setContext(session);\n              animation.start();\n              scope.isPresenting = true;\n              scope.dispatchEvent({ type: \"sessionstart\" });\n            }\n          });\n        };\n        this.getEnvironmentBlendMode = function() {\n          if (session !== null) {\n            return session.environmentBlendMode;\n          }\n        };\n        this.getDepthTexture = function() {\n          return depthSensing.getDepthTexture();\n        };\n        function onInputSourcesChange(event) {\n          for (let i2 = 0; i2 < event.removed.length; i2++) {\n            const inputSource = event.removed[i2];\n            const index = controllerInputSources.indexOf(inputSource);\n            if (index >= 0) {\n              controllerInputSources[index] = null;\n              controllers[index].disconnect(inputSource);\n            }\n          }\n          for (let i2 = 0; i2 < event.added.length; i2++) {\n            const inputSource = event.added[i2];\n            let controllerIndex = controllerInputSources.indexOf(inputSource);\n            if (controllerIndex === -1) {\n              for (let i22 = 0; i22 < controllers.length; i22++) {\n                if (i22 >= controllerInputSources.length) {\n                  controllerInputSources.push(inputSource);\n                  controllerIndex = i22;\n                  break;\n                } else if (controllerInputSources[i22] === null) {\n                  controllerInputSources[i22] = inputSource;\n                  controllerIndex = i22;\n                  break;\n                }\n              }\n              if (controllerIndex === -1) break;\n            }\n            const controller = controllers[controllerIndex];\n            if (controller) {\n              controller.connect(inputSource);\n            }\n          }\n        }\n        const cameraLPos = new Vector3();\n        const cameraRPos = new Vector3();\n        function setProjectionFromUnion(camera, cameraL2, cameraR2) {\n          cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld);\n          cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld);\n          const ipd = cameraLPos.distanceTo(cameraRPos);\n          const projL = cameraL2.projectionMatrix.elements;\n          const projR = cameraR2.projectionMatrix.elements;\n          const near = projL[14] / (projL[10] - 1);\n          const far = projL[14] / (projL[10] + 1);\n          const topFov = (projL[9] + 1) / projL[5];\n          const bottomFov = (projL[9] - 1) / projL[5];\n          const leftFov = (projL[8] - 1) / projL[0];\n          const rightFov = (projR[8] + 1) / projR[0];\n          const left = near * leftFov;\n          const right = near * rightFov;\n          const zOffset = ipd / (-leftFov + rightFov);\n          const xOffset = zOffset * -leftFov;\n          cameraL2.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n          camera.translateX(xOffset);\n          camera.translateZ(zOffset);\n          camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n          camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n          if (projL[10] === -1) {\n            camera.projectionMatrix.copy(cameraL2.projectionMatrix);\n            camera.projectionMatrixInverse.copy(cameraL2.projectionMatrixInverse);\n          } else {\n            const near2 = near + zOffset;\n            const far2 = far + zOffset;\n            const left2 = left - xOffset;\n            const right2 = right + (ipd - xOffset);\n            const top2 = topFov * far / far2 * near2;\n            const bottom2 = bottomFov * far / far2 * near2;\n            camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n            camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n          }\n        }\n        function updateCamera2(camera, parent) {\n          if (parent === null) {\n            camera.matrixWorld.copy(camera.matrix);\n          } else {\n            camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n          }\n          camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n        }\n        this.updateCamera = function(camera) {\n          if (session === null) return;\n          let depthNear = camera.near;\n          let depthFar = camera.far;\n          if (depthSensing.texture !== null) {\n            if (depthSensing.depthNear > 0) depthNear = depthSensing.depthNear;\n            if (depthSensing.depthFar > 0) depthFar = depthSensing.depthFar;\n          }\n          cameraXR.near = cameraR.near = cameraL.near = depthNear;\n          cameraXR.far = cameraR.far = cameraL.far = depthFar;\n          if (_currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far) {\n            session.updateRenderState({\n              depthNear: cameraXR.near,\n              depthFar: cameraXR.far\n            });\n            _currentDepthNear = cameraXR.near;\n            _currentDepthFar = cameraXR.far;\n          }\n          const parent = camera.parent;\n          const cameras2 = cameraXR.cameras;\n          updateCamera2(cameraXR, parent);\n          for (let i2 = 0; i2 < cameras2.length; i2++) {\n            updateCamera2(cameras2[i2], parent);\n          }\n          if (cameras2.length === 2) {\n            setProjectionFromUnion(cameraXR, cameraL, cameraR);\n          } else {\n            cameraXR.projectionMatrix.copy(cameraL.projectionMatrix);\n          }\n          updateUserCamera(camera, cameraXR, parent);\n        };\n        function updateUserCamera(camera, cameraXR2, parent) {\n          if (parent === null) {\n            camera.matrix.copy(cameraXR2.matrixWorld);\n          } else {\n            camera.matrix.copy(parent.matrixWorld);\n            camera.matrix.invert();\n            camera.matrix.multiply(cameraXR2.matrixWorld);\n          }\n          camera.matrix.decompose(camera.position, camera.quaternion, camera.scale);\n          camera.updateMatrixWorld(true);\n          camera.projectionMatrix.copy(cameraXR2.projectionMatrix);\n          camera.projectionMatrixInverse.copy(cameraXR2.projectionMatrixInverse);\n          if (camera.isPerspectiveCamera) {\n            camera.fov = RAD2DEG * 2 * Math.atan(1 / camera.projectionMatrix.elements[5]);\n            camera.zoom = 1;\n          }\n        }\n        this.getCamera = function() {\n          return cameraXR;\n        };\n        this.getFoveation = function() {\n          if (glProjLayer === null && glBaseLayer === null) {\n            return void 0;\n          }\n          return foveation;\n        };\n        this.setFoveation = function(value) {\n          foveation = value;\n          if (glProjLayer !== null) {\n            glProjLayer.fixedFoveation = value;\n          }\n          if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) {\n            glBaseLayer.fixedFoveation = value;\n          }\n        };\n        this.hasDepthSensing = function() {\n          return depthSensing.texture !== null;\n        };\n        this.getDepthSensingMesh = function() {\n          return depthSensing.getMesh(cameraXR);\n        };\n        let onAnimationFrameCallback = null;\n        function onAnimationFrame(time, frame) {\n          pose = frame.getViewerPose(customReferenceSpace || referenceSpace);\n          xrFrame = frame;\n          if (pose !== null) {\n            const views = pose.views;\n            if (glBaseLayer !== null) {\n              renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer);\n              renderer.setRenderTarget(newRenderTarget);\n            }\n            let cameraXRNeedsUpdate = false;\n            if (views.length !== cameraXR.cameras.length) {\n              cameraXR.cameras.length = 0;\n              cameraXRNeedsUpdate = true;\n            }\n            for (let i2 = 0; i2 < views.length; i2++) {\n              const view = views[i2];\n              let viewport = null;\n              if (glBaseLayer !== null) {\n                viewport = glBaseLayer.getViewport(view);\n              } else {\n                const glSubImage = glBinding.getViewSubImage(glProjLayer, view);\n                viewport = glSubImage.viewport;\n                if (i2 === 0) {\n                  renderer.setRenderTargetTextures(\n                    newRenderTarget,\n                    glSubImage.colorTexture,\n                    glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture\n                  );\n                  renderer.setRenderTarget(newRenderTarget);\n                }\n              }\n              let camera = cameras[i2];\n              if (camera === void 0) {\n                camera = new PerspectiveCamera();\n                camera.layers.enable(i2);\n                camera.viewport = new Vector4();\n                cameras[i2] = camera;\n              }\n              camera.matrix.fromArray(view.transform.matrix);\n              camera.matrix.decompose(camera.position, camera.quaternion, camera.scale);\n              camera.projectionMatrix.fromArray(view.projectionMatrix);\n              camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n              camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n              if (i2 === 0) {\n                cameraXR.matrix.copy(camera.matrix);\n                cameraXR.matrix.decompose(cameraXR.position, cameraXR.quaternion, cameraXR.scale);\n              }\n              if (cameraXRNeedsUpdate === true) {\n                cameraXR.cameras.push(camera);\n              }\n            }\n            const enabledFeatures = session.enabledFeatures;\n            if (enabledFeatures && enabledFeatures.includes(\"depth-sensing\")) {\n              const depthData = glBinding.getDepthInformation(views[0]);\n              if (depthData && depthData.isValid && depthData.texture) {\n                depthSensing.init(renderer, depthData, session.renderState);\n              }\n            }\n          }\n          for (let i2 = 0; i2 < controllers.length; i2++) {\n            const inputSource = controllerInputSources[i2];\n            const controller = controllers[i2];\n            if (inputSource !== null && controller !== void 0) {\n              controller.update(inputSource, frame, customReferenceSpace || referenceSpace);\n            }\n          }\n          if (onAnimationFrameCallback) onAnimationFrameCallback(time, frame);\n          if (frame.detectedPlanes) {\n            scope.dispatchEvent({ type: \"planesdetected\", data: frame });\n          }\n          xrFrame = null;\n        }\n        const animation = new WebGLAnimation();\n        animation.setAnimationLoop(onAnimationFrame);\n        this.setAnimationLoop = function(callback) {\n          onAnimationFrameCallback = callback;\n        };\n        this.dispose = function() {\n        };\n      }\n    };\n    _e1 = /* @__PURE__ */ new Euler();\n    _m1 = /* @__PURE__ */ new Matrix4();\n    WebGLRenderer = class {\n      constructor(parameters = {}) {\n        const {\n          canvas = createCanvasElement(),\n          context: context2 = null,\n          depth = true,\n          stencil = false,\n          alpha = false,\n          antialias = false,\n          premultipliedAlpha = true,\n          preserveDrawingBuffer = false,\n          powerPreference = \"default\",\n          failIfMajorPerformanceCaveat = false\n        } = parameters;\n        this.isWebGLRenderer = true;\n        let _alpha;\n        if (context2 !== null) {\n          if (typeof WebGLRenderingContext !== \"undefined\" && context2 instanceof WebGLRenderingContext) {\n            throw new Error(\"THREE.WebGLRenderer: WebGL 1 is not supported since r163.\");\n          }\n          _alpha = context2.getContextAttributes().alpha;\n        } else {\n          _alpha = alpha;\n        }\n        const uintClearColor = new Uint32Array(4);\n        const intClearColor = new Int32Array(4);\n        let currentRenderList = null;\n        let currentRenderState = null;\n        const renderListStack = [];\n        const renderStateStack = [];\n        this.domElement = canvas;\n        this.debug = {\n          /**\n           * Enables error checking and reporting when shader programs are being compiled\n           * @type {boolean}\n           */\n          checkShaderErrors: true,\n          /**\n           * Callback for custom error reporting.\n           * @type {?Function}\n           */\n          onShaderError: null\n        };\n        this.autoClear = true;\n        this.autoClearColor = true;\n        this.autoClearDepth = true;\n        this.autoClearStencil = true;\n        this.sortObjects = true;\n        this.clippingPlanes = [];\n        this.localClippingEnabled = false;\n        this._outputColorSpace = SRGBColorSpace;\n        this.toneMapping = NoToneMapping;\n        this.toneMappingExposure = 1;\n        const _this = this;\n        let _isContextLost = false;\n        let _currentActiveCubeFace = 0;\n        let _currentActiveMipmapLevel = 0;\n        let _currentRenderTarget = null;\n        let _currentMaterialId = -1;\n        let _currentCamera = null;\n        const _currentViewport = new Vector4();\n        const _currentScissor = new Vector4();\n        let _currentScissorTest = null;\n        const _currentClearColor = new Color(0);\n        let _currentClearAlpha = 0;\n        let _width = canvas.width;\n        let _height = canvas.height;\n        let _pixelRatio = 1;\n        let _opaqueSort = null;\n        let _transparentSort = null;\n        const _viewport = new Vector4(0, 0, _width, _height);\n        const _scissor = new Vector4(0, 0, _width, _height);\n        let _scissorTest = false;\n        const _frustum2 = new Frustum();\n        let _clippingEnabled = false;\n        let _localClippingEnabled = false;\n        const _currentProjectionMatrix = new Matrix4();\n        const _projScreenMatrix2 = new Matrix4();\n        const _vector32 = new Vector3();\n        const _vector4 = new Vector4();\n        const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n        let _renderBackground = false;\n        function getTargetPixelRatio() {\n          return _currentRenderTarget === null ? _pixelRatio : 1;\n        }\n        let _gl = context2;\n        function getContext(contextName, contextAttributes) {\n          return canvas.getContext(contextName, contextAttributes);\n        }\n        try {\n          const contextAttributes = {\n            alpha: true,\n            depth,\n            stencil,\n            antialias,\n            premultipliedAlpha,\n            preserveDrawingBuffer,\n            powerPreference,\n            failIfMajorPerformanceCaveat\n          };\n          if (\"setAttribute\" in canvas) canvas.setAttribute(\"data-engine\", `three.js r${REVISION}`);\n          canvas.addEventListener(\"webglcontextlost\", onContextLost, false);\n          canvas.addEventListener(\"webglcontextrestored\", onContextRestore, false);\n          canvas.addEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n          if (_gl === null) {\n            const contextName = \"webgl2\";\n            _gl = getContext(contextName, contextAttributes);\n            if (_gl === null) {\n              if (getContext(contextName)) {\n                throw new Error(\"Error creating WebGL context with your selected attributes.\");\n              } else {\n                throw new Error(\"Error creating WebGL context.\");\n              }\n            }\n          }\n        } catch (error2) {\n          console.error(\"THREE.WebGLRenderer: \" + error2.message);\n          throw error2;\n        }\n        let extensions, capabilities, state, info;\n        let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n        let programCache, materials, renderLists, renderStates, clipping, shadowMap;\n        let background, morphtargets, bufferRenderer, indexedBufferRenderer;\n        let utils, bindingStates, uniformsGroups;\n        function initGLContext() {\n          extensions = new WebGLExtensions(_gl);\n          extensions.init();\n          utils = new WebGLUtils(_gl, extensions);\n          capabilities = new WebGLCapabilities(_gl, extensions, parameters, utils);\n          state = new WebGLState(_gl);\n          if (capabilities.reverseDepthBuffer) state.buffers.depth.setReversed(true);\n          info = new WebGLInfo(_gl);\n          properties = new WebGLProperties();\n          textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info);\n          cubemaps = new WebGLCubeMaps(_this);\n          cubeuvmaps = new WebGLCubeUVMaps(_this);\n          attributes = new WebGLAttributes(_gl);\n          bindingStates = new WebGLBindingStates(_gl, attributes);\n          geometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n          objects = new WebGLObjects(_gl, geometries, attributes, info);\n          morphtargets = new WebGLMorphtargets(_gl, capabilities, textures);\n          clipping = new WebGLClipping(properties);\n          programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping);\n          materials = new WebGLMaterials(_this, properties);\n          renderLists = new WebGLRenderLists();\n          renderStates = new WebGLRenderStates(extensions);\n          background = new WebGLBackground(_this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha);\n          shadowMap = new WebGLShadowMap(_this, objects, capabilities);\n          uniformsGroups = new WebGLUniformsGroups(_gl, info, capabilities, state);\n          bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info);\n          indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info);\n          info.programs = programCache.programs;\n          _this.capabilities = capabilities;\n          _this.extensions = extensions;\n          _this.properties = properties;\n          _this.renderLists = renderLists;\n          _this.shadowMap = shadowMap;\n          _this.state = state;\n          _this.info = info;\n        }\n        initGLContext();\n        const xr = new WebXRManager(_this, _gl);\n        this.xr = xr;\n        this.getContext = function() {\n          return _gl;\n        };\n        this.getContextAttributes = function() {\n          return _gl.getContextAttributes();\n        };\n        this.forceContextLoss = function() {\n          const extension = extensions.get(\"WEBGL_lose_context\");\n          if (extension) extension.loseContext();\n        };\n        this.forceContextRestore = function() {\n          const extension = extensions.get(\"WEBGL_lose_context\");\n          if (extension) extension.restoreContext();\n        };\n        this.getPixelRatio = function() {\n          return _pixelRatio;\n        };\n        this.setPixelRatio = function(value) {\n          if (value === void 0) return;\n          _pixelRatio = value;\n          this.setSize(_width, _height, false);\n        };\n        this.getSize = function(target2) {\n          return target2.set(_width, _height);\n        };\n        this.setSize = function(width, height, updateStyle = true) {\n          if (xr.isPresenting) {\n            console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\");\n            return;\n          }\n          _width = width;\n          _height = height;\n          canvas.width = Math.floor(width * _pixelRatio);\n          canvas.height = Math.floor(height * _pixelRatio);\n          if (updateStyle === true) {\n            canvas.style.width = width + \"px\";\n            canvas.style.height = height + \"px\";\n          }\n          this.setViewport(0, 0, width, height);\n        };\n        this.getDrawingBufferSize = function(target2) {\n          return target2.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n        };\n        this.setDrawingBufferSize = function(width, height, pixelRatio) {\n          _width = width;\n          _height = height;\n          _pixelRatio = pixelRatio;\n          canvas.width = Math.floor(width * pixelRatio);\n          canvas.height = Math.floor(height * pixelRatio);\n          this.setViewport(0, 0, width, height);\n        };\n        this.getCurrentViewport = function(target2) {\n          return target2.copy(_currentViewport);\n        };\n        this.getViewport = function(target2) {\n          return target2.copy(_viewport);\n        };\n        this.setViewport = function(x, y2, width, height) {\n          if (x.isVector4) {\n            _viewport.set(x.x, x.y, x.z, x.w);\n          } else {\n            _viewport.set(x, y2, width, height);\n          }\n          state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).round());\n        };\n        this.getScissor = function(target2) {\n          return target2.copy(_scissor);\n        };\n        this.setScissor = function(x, y2, width, height) {\n          if (x.isVector4) {\n            _scissor.set(x.x, x.y, x.z, x.w);\n          } else {\n            _scissor.set(x, y2, width, height);\n          }\n          state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).round());\n        };\n        this.getScissorTest = function() {\n          return _scissorTest;\n        };\n        this.setScissorTest = function(boolean) {\n          state.setScissorTest(_scissorTest = boolean);\n        };\n        this.setOpaqueSort = function(method) {\n          _opaqueSort = method;\n        };\n        this.setTransparentSort = function(method) {\n          _transparentSort = method;\n        };\n        this.getClearColor = function(target2) {\n          return target2.copy(background.getClearColor());\n        };\n        this.setClearColor = function() {\n          background.setClearColor.apply(background, arguments);\n        };\n        this.getClearAlpha = function() {\n          return background.getClearAlpha();\n        };\n        this.setClearAlpha = function() {\n          background.setClearAlpha.apply(background, arguments);\n        };\n        this.clear = function(color = true, depth2 = true, stencil2 = true) {\n          let bits = 0;\n          if (color) {\n            let isIntegerFormat = false;\n            if (_currentRenderTarget !== null) {\n              const targetFormat = _currentRenderTarget.texture.format;\n              isIntegerFormat = targetFormat === RGBAIntegerFormat || targetFormat === RGIntegerFormat || targetFormat === RedIntegerFormat;\n            }\n            if (isIntegerFormat) {\n              const targetType = _currentRenderTarget.texture.type;\n              const isUnsignedType = targetType === UnsignedByteType || targetType === UnsignedIntType || targetType === UnsignedShortType || targetType === UnsignedInt248Type || targetType === UnsignedShort4444Type || targetType === UnsignedShort5551Type;\n              const clearColor = background.getClearColor();\n              const a = background.getClearAlpha();\n              const r2 = clearColor.r;\n              const g3 = clearColor.g;\n              const b = clearColor.b;\n              if (isUnsignedType) {\n                uintClearColor[0] = r2;\n                uintClearColor[1] = g3;\n                uintClearColor[2] = b;\n                uintClearColor[3] = a;\n                _gl.clearBufferuiv(_gl.COLOR, 0, uintClearColor);\n              } else {\n                intClearColor[0] = r2;\n                intClearColor[1] = g3;\n                intClearColor[2] = b;\n                intClearColor[3] = a;\n                _gl.clearBufferiv(_gl.COLOR, 0, intClearColor);\n              }\n            } else {\n              bits |= _gl.COLOR_BUFFER_BIT;\n            }\n          }\n          if (depth2) {\n            bits |= _gl.DEPTH_BUFFER_BIT;\n            _gl.clearDepth(this.capabilities.reverseDepthBuffer ? 0 : 1);\n          }\n          if (stencil2) {\n            bits |= _gl.STENCIL_BUFFER_BIT;\n            this.state.buffers.stencil.setMask(4294967295);\n          }\n          _gl.clear(bits);\n        };\n        this.clearColor = function() {\n          this.clear(true, false, false);\n        };\n        this.clearDepth = function() {\n          this.clear(false, true, false);\n        };\n        this.clearStencil = function() {\n          this.clear(false, false, true);\n        };\n        this.dispose = function() {\n          canvas.removeEventListener(\"webglcontextlost\", onContextLost, false);\n          canvas.removeEventListener(\"webglcontextrestored\", onContextRestore, false);\n          canvas.removeEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n          renderLists.dispose();\n          renderStates.dispose();\n          properties.dispose();\n          cubemaps.dispose();\n          cubeuvmaps.dispose();\n          objects.dispose();\n          bindingStates.dispose();\n          uniformsGroups.dispose();\n          programCache.dispose();\n          xr.dispose();\n          xr.removeEventListener(\"sessionstart\", onXRSessionStart);\n          xr.removeEventListener(\"sessionend\", onXRSessionEnd);\n          animation.stop();\n        };\n        function onContextLost(event) {\n          event.preventDefault();\n          console.log(\"THREE.WebGLRenderer: Context Lost.\");\n          _isContextLost = true;\n        }\n        function onContextRestore() {\n          console.log(\"THREE.WebGLRenderer: Context Restored.\");\n          _isContextLost = false;\n          const infoAutoReset = info.autoReset;\n          const shadowMapEnabled = shadowMap.enabled;\n          const shadowMapAutoUpdate = shadowMap.autoUpdate;\n          const shadowMapNeedsUpdate = shadowMap.needsUpdate;\n          const shadowMapType = shadowMap.type;\n          initGLContext();\n          info.autoReset = infoAutoReset;\n          shadowMap.enabled = shadowMapEnabled;\n          shadowMap.autoUpdate = shadowMapAutoUpdate;\n          shadowMap.needsUpdate = shadowMapNeedsUpdate;\n          shadowMap.type = shadowMapType;\n        }\n        function onContextCreationError(event) {\n          console.error(\"THREE.WebGLRenderer: A WebGL context could not be created. Reason: \", event.statusMessage);\n        }\n        function onMaterialDispose(event) {\n          const material = event.target;\n          material.removeEventListener(\"dispose\", onMaterialDispose);\n          deallocateMaterial(material);\n        }\n        function deallocateMaterial(material) {\n          releaseMaterialProgramReferences(material);\n          properties.remove(material);\n        }\n        function releaseMaterialProgramReferences(material) {\n          const programs = properties.get(material).programs;\n          if (programs !== void 0) {\n            programs.forEach(function(program) {\n              programCache.releaseProgram(program);\n            });\n            if (material.isShaderMaterial) {\n              programCache.releaseShaderCache(material);\n            }\n          }\n        }\n        this.renderBufferDirect = function(camera, scene, geometry, material, object, group) {\n          if (scene === null) scene = _emptyScene;\n          const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n          const program = setProgram(camera, scene, geometry, material, object);\n          state.setMaterial(material, frontFaceCW);\n          let index = geometry.index;\n          let rangeFactor = 1;\n          if (material.wireframe === true) {\n            index = geometries.getWireframeAttribute(geometry);\n            if (index === void 0) return;\n            rangeFactor = 2;\n          }\n          const drawRange = geometry.drawRange;\n          const position = geometry.attributes.position;\n          let drawStart = drawRange.start * rangeFactor;\n          let drawEnd = (drawRange.start + drawRange.count) * rangeFactor;\n          if (group !== null) {\n            drawStart = Math.max(drawStart, group.start * rangeFactor);\n            drawEnd = Math.min(drawEnd, (group.start + group.count) * rangeFactor);\n          }\n          if (index !== null) {\n            drawStart = Math.max(drawStart, 0);\n            drawEnd = Math.min(drawEnd, index.count);\n          } else if (position !== void 0 && position !== null) {\n            drawStart = Math.max(drawStart, 0);\n            drawEnd = Math.min(drawEnd, position.count);\n          }\n          const drawCount = drawEnd - drawStart;\n          if (drawCount < 0 || drawCount === Infinity) return;\n          bindingStates.setup(object, material, program, geometry, index);\n          let attribute;\n          let renderer = bufferRenderer;\n          if (index !== null) {\n            attribute = attributes.get(index);\n            renderer = indexedBufferRenderer;\n            renderer.setIndex(attribute);\n          }\n          if (object.isMesh) {\n            if (material.wireframe === true) {\n              state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n              renderer.setMode(_gl.LINES);\n            } else {\n              renderer.setMode(_gl.TRIANGLES);\n            }\n          } else if (object.isLine) {\n            let lineWidth = material.linewidth;\n            if (lineWidth === void 0) lineWidth = 1;\n            state.setLineWidth(lineWidth * getTargetPixelRatio());\n            if (object.isLineSegments) {\n              renderer.setMode(_gl.LINES);\n            } else if (object.isLineLoop) {\n              renderer.setMode(_gl.LINE_LOOP);\n            } else {\n              renderer.setMode(_gl.LINE_STRIP);\n            }\n          } else if (object.isPoints) {\n            renderer.setMode(_gl.POINTS);\n          } else if (object.isSprite) {\n            renderer.setMode(_gl.TRIANGLES);\n          }\n          if (object.isBatchedMesh) {\n            if (object._multiDrawInstances !== null) {\n              renderer.renderMultiDrawInstances(object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances);\n            } else {\n              if (!extensions.get(\"WEBGL_multi_draw\")) {\n                const starts = object._multiDrawStarts;\n                const counts = object._multiDrawCounts;\n                const drawCount2 = object._multiDrawCount;\n                const bytesPerElement = index ? attributes.get(index).bytesPerElement : 1;\n                const uniforms = properties.get(material).currentProgram.getUniforms();\n                for (let i2 = 0; i2 < drawCount2; i2++) {\n                  uniforms.setValue(_gl, \"_gl_DrawID\", i2);\n                  renderer.render(starts[i2] / bytesPerElement, counts[i2]);\n                }\n              } else {\n                renderer.renderMultiDraw(object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount);\n              }\n            }\n          } else if (object.isInstancedMesh) {\n            renderer.renderInstances(drawStart, drawCount, object.count);\n          } else if (geometry.isInstancedBufferGeometry) {\n            const maxInstanceCount = geometry._maxInstanceCount !== void 0 ? geometry._maxInstanceCount : Infinity;\n            const instanceCount = Math.min(geometry.instanceCount, maxInstanceCount);\n            renderer.renderInstances(drawStart, drawCount, instanceCount);\n          } else {\n            renderer.render(drawStart, drawCount);\n          }\n        };\n        function prepareMaterial(material, scene, object) {\n          if (material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false) {\n            material.side = BackSide;\n            material.needsUpdate = true;\n            getProgram(material, scene, object);\n            material.side = FrontSide;\n            material.needsUpdate = true;\n            getProgram(material, scene, object);\n            material.side = DoubleSide;\n          } else {\n            getProgram(material, scene, object);\n          }\n        }\n        this.compile = function(scene, camera, targetScene = null) {\n          if (targetScene === null) targetScene = scene;\n          currentRenderState = renderStates.get(targetScene);\n          currentRenderState.init(camera);\n          renderStateStack.push(currentRenderState);\n          targetScene.traverseVisible(function(object) {\n            if (object.isLight && object.layers.test(camera.layers)) {\n              currentRenderState.pushLight(object);\n              if (object.castShadow) {\n                currentRenderState.pushShadow(object);\n              }\n            }\n          });\n          if (scene !== targetScene) {\n            scene.traverseVisible(function(object) {\n              if (object.isLight && object.layers.test(camera.layers)) {\n                currentRenderState.pushLight(object);\n                if (object.castShadow) {\n                  currentRenderState.pushShadow(object);\n                }\n              }\n            });\n          }\n          currentRenderState.setupLights();\n          const materials2 = /* @__PURE__ */ new Set();\n          scene.traverse(function(object) {\n            if (!(object.isMesh || object.isPoints || object.isLine || object.isSprite)) {\n              return;\n            }\n            const material = object.material;\n            if (material) {\n              if (Array.isArray(material)) {\n                for (let i2 = 0; i2 < material.length; i2++) {\n                  const material2 = material[i2];\n                  prepareMaterial(material2, targetScene, object);\n                  materials2.add(material2);\n                }\n              } else {\n                prepareMaterial(material, targetScene, object);\n                materials2.add(material);\n              }\n            }\n          });\n          renderStateStack.pop();\n          currentRenderState = null;\n          return materials2;\n        };\n        this.compileAsync = function(scene, camera, targetScene = null) {\n          const materials2 = this.compile(scene, camera, targetScene);\n          return new Promise((resolve2) => {\n            function checkMaterialsReady() {\n              materials2.forEach(function(material) {\n                const materialProperties = properties.get(material);\n                const program = materialProperties.currentProgram;\n                if (program.isReady()) {\n                  materials2.delete(material);\n                }\n              });\n              if (materials2.size === 0) {\n                resolve2(scene);\n                return;\n              }\n              setTimeout(checkMaterialsReady, 10);\n            }\n            if (extensions.get(\"KHR_parallel_shader_compile\") !== null) {\n              checkMaterialsReady();\n            } else {\n              setTimeout(checkMaterialsReady, 10);\n            }\n          });\n        };\n        let onAnimationFrameCallback = null;\n        function onAnimationFrame(time) {\n          if (onAnimationFrameCallback) onAnimationFrameCallback(time);\n        }\n        function onXRSessionStart() {\n          animation.stop();\n        }\n        function onXRSessionEnd() {\n          animation.start();\n        }\n        const animation = new WebGLAnimation();\n        animation.setAnimationLoop(onAnimationFrame);\n        if (typeof self !== \"undefined\") animation.setContext(self);\n        this.setAnimationLoop = function(callback) {\n          onAnimationFrameCallback = callback;\n          xr.setAnimationLoop(callback);\n          callback === null ? animation.stop() : animation.start();\n        };\n        xr.addEventListener(\"sessionstart\", onXRSessionStart);\n        xr.addEventListener(\"sessionend\", onXRSessionEnd);\n        this.render = function(scene, camera) {\n          if (camera !== void 0 && camera.isCamera !== true) {\n            console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");\n            return;\n          }\n          if (_isContextLost === true) return;\n          if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld();\n          if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld();\n          if (xr.enabled === true && xr.isPresenting === true) {\n            if (xr.cameraAutoUpdate === true) xr.updateCamera(camera);\n            camera = xr.getCamera();\n          }\n          if (scene.isScene === true) scene.onBeforeRender(_this, scene, camera, _currentRenderTarget);\n          currentRenderState = renderStates.get(scene, renderStateStack.length);\n          currentRenderState.init(camera);\n          renderStateStack.push(currentRenderState);\n          _projScreenMatrix2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n          _frustum2.setFromProjectionMatrix(_projScreenMatrix2);\n          _localClippingEnabled = this.localClippingEnabled;\n          _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled);\n          currentRenderList = renderLists.get(scene, renderListStack.length);\n          currentRenderList.init();\n          renderListStack.push(currentRenderList);\n          if (xr.enabled === true && xr.isPresenting === true) {\n            const depthSensingMesh = _this.xr.getDepthSensingMesh();\n            if (depthSensingMesh !== null) {\n              projectObject(depthSensingMesh, camera, -Infinity, _this.sortObjects);\n            }\n          }\n          projectObject(scene, camera, 0, _this.sortObjects);\n          currentRenderList.finish();\n          if (_this.sortObjects === true) {\n            currentRenderList.sort(_opaqueSort, _transparentSort);\n          }\n          _renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;\n          if (_renderBackground) {\n            background.addToRenderList(currentRenderList, scene);\n          }\n          this.info.render.frame++;\n          if (_clippingEnabled === true) clipping.beginShadows();\n          const shadowsArray = currentRenderState.state.shadowsArray;\n          shadowMap.render(shadowsArray, scene, camera);\n          if (_clippingEnabled === true) clipping.endShadows();\n          if (this.info.autoReset === true) this.info.reset();\n          const opaqueObjects = currentRenderList.opaque;\n          const transmissiveObjects = currentRenderList.transmissive;\n          currentRenderState.setupLights();\n          if (camera.isArrayCamera) {\n            const cameras = camera.cameras;\n            if (transmissiveObjects.length > 0) {\n              for (let i2 = 0, l2 = cameras.length; i2 < l2; i2++) {\n                const camera2 = cameras[i2];\n                renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera2);\n              }\n            }\n            if (_renderBackground) background.render(scene);\n            for (let i2 = 0, l2 = cameras.length; i2 < l2; i2++) {\n              const camera2 = cameras[i2];\n              renderScene(currentRenderList, scene, camera2, camera2.viewport);\n            }\n          } else {\n            if (transmissiveObjects.length > 0) renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera);\n            if (_renderBackground) background.render(scene);\n            renderScene(currentRenderList, scene, camera);\n          }\n          if (_currentRenderTarget !== null) {\n            textures.updateMultisampleRenderTarget(_currentRenderTarget);\n            textures.updateRenderTargetMipmap(_currentRenderTarget);\n          }\n          if (scene.isScene === true) scene.onAfterRender(_this, scene, camera);\n          bindingStates.resetDefaultState();\n          _currentMaterialId = -1;\n          _currentCamera = null;\n          renderStateStack.pop();\n          if (renderStateStack.length > 0) {\n            currentRenderState = renderStateStack[renderStateStack.length - 1];\n            if (_clippingEnabled === true) clipping.setGlobalState(_this.clippingPlanes, currentRenderState.state.camera);\n          } else {\n            currentRenderState = null;\n          }\n          renderListStack.pop();\n          if (renderListStack.length > 0) {\n            currentRenderList = renderListStack[renderListStack.length - 1];\n          } else {\n            currentRenderList = null;\n          }\n        };\n        function projectObject(object, camera, groupOrder, sortObjects) {\n          if (object.visible === false) return;\n          const visible = object.layers.test(camera.layers);\n          if (visible) {\n            if (object.isGroup) {\n              groupOrder = object.renderOrder;\n            } else if (object.isLOD) {\n              if (object.autoUpdate === true) object.update(camera);\n            } else if (object.isLight) {\n              currentRenderState.pushLight(object);\n              if (object.castShadow) {\n                currentRenderState.pushShadow(object);\n              }\n            } else if (object.isSprite) {\n              if (!object.frustumCulled || _frustum2.intersectsSprite(object)) {\n                if (sortObjects) {\n                  _vector4.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n                }\n                const geometry = objects.update(object);\n                const material = object.material;\n                if (material.visible) {\n                  currentRenderList.push(object, geometry, material, groupOrder, _vector4.z, null);\n                }\n              }\n            } else if (object.isMesh || object.isLine || object.isPoints) {\n              if (!object.frustumCulled || _frustum2.intersectsObject(object)) {\n                const geometry = objects.update(object);\n                const material = object.material;\n                if (sortObjects) {\n                  if (object.boundingSphere !== void 0) {\n                    if (object.boundingSphere === null) object.computeBoundingSphere();\n                    _vector4.copy(object.boundingSphere.center);\n                  } else {\n                    if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n                    _vector4.copy(geometry.boundingSphere.center);\n                  }\n                  _vector4.applyMatrix4(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n                }\n                if (Array.isArray(material)) {\n                  const groups = geometry.groups;\n                  for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n                    const group = groups[i2];\n                    const groupMaterial = material[group.materialIndex];\n                    if (groupMaterial && groupMaterial.visible) {\n                      currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector4.z, group);\n                    }\n                  }\n                } else if (material.visible) {\n                  currentRenderList.push(object, geometry, material, groupOrder, _vector4.z, null);\n                }\n              }\n            }\n          }\n          const children = object.children;\n          for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n            projectObject(children[i2], camera, groupOrder, sortObjects);\n          }\n        }\n        function renderScene(currentRenderList2, scene, camera, viewport) {\n          const opaqueObjects = currentRenderList2.opaque;\n          const transmissiveObjects = currentRenderList2.transmissive;\n          const transparentObjects = currentRenderList2.transparent;\n          currentRenderState.setupLightsView(camera);\n          if (_clippingEnabled === true) clipping.setGlobalState(_this.clippingPlanes, camera);\n          if (viewport) state.viewport(_currentViewport.copy(viewport));\n          if (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera);\n          if (transmissiveObjects.length > 0) renderObjects(transmissiveObjects, scene, camera);\n          if (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera);\n          state.buffers.depth.setTest(true);\n          state.buffers.depth.setMask(true);\n          state.buffers.color.setMask(true);\n          state.setPolygonOffset(false);\n        }\n        function renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera) {\n          const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n          if (overrideMaterial !== null) {\n            return;\n          }\n          if (currentRenderState.state.transmissionRenderTarget[camera.id] === void 0) {\n            currentRenderState.state.transmissionRenderTarget[camera.id] = new WebGLRenderTarget(1, 1, {\n              generateMipmaps: true,\n              type: extensions.has(\"EXT_color_buffer_half_float\") || extensions.has(\"EXT_color_buffer_float\") ? HalfFloatType : UnsignedByteType,\n              minFilter: LinearMipmapLinearFilter,\n              samples: 4,\n              stencilBuffer: stencil,\n              resolveDepthBuffer: false,\n              resolveStencilBuffer: false,\n              colorSpace: ColorManagement.workingColorSpace\n            });\n          }\n          const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[camera.id];\n          const activeViewport = camera.viewport || _currentViewport;\n          transmissionRenderTarget.setSize(activeViewport.z, activeViewport.w);\n          const currentRenderTarget = _this.getRenderTarget();\n          _this.setRenderTarget(transmissionRenderTarget);\n          _this.getClearColor(_currentClearColor);\n          _currentClearAlpha = _this.getClearAlpha();\n          if (_currentClearAlpha < 1) _this.setClearColor(16777215, 0.5);\n          _this.clear();\n          if (_renderBackground) background.render(scene);\n          const currentToneMapping = _this.toneMapping;\n          _this.toneMapping = NoToneMapping;\n          const currentCameraViewport = camera.viewport;\n          if (camera.viewport !== void 0) camera.viewport = void 0;\n          currentRenderState.setupLightsView(camera);\n          if (_clippingEnabled === true) clipping.setGlobalState(_this.clippingPlanes, camera);\n          renderObjects(opaqueObjects, scene, camera);\n          textures.updateMultisampleRenderTarget(transmissionRenderTarget);\n          textures.updateRenderTargetMipmap(transmissionRenderTarget);\n          if (extensions.has(\"WEBGL_multisampled_render_to_texture\") === false) {\n            let renderTargetNeedsUpdate = false;\n            for (let i2 = 0, l2 = transmissiveObjects.length; i2 < l2; i2++) {\n              const renderItem = transmissiveObjects[i2];\n              const object = renderItem.object;\n              const geometry = renderItem.geometry;\n              const material = renderItem.material;\n              const group = renderItem.group;\n              if (material.side === DoubleSide && object.layers.test(camera.layers)) {\n                const currentSide = material.side;\n                material.side = BackSide;\n                material.needsUpdate = true;\n                renderObject(object, scene, camera, geometry, material, group);\n                material.side = currentSide;\n                material.needsUpdate = true;\n                renderTargetNeedsUpdate = true;\n              }\n            }\n            if (renderTargetNeedsUpdate === true) {\n              textures.updateMultisampleRenderTarget(transmissionRenderTarget);\n              textures.updateRenderTargetMipmap(transmissionRenderTarget);\n            }\n          }\n          _this.setRenderTarget(currentRenderTarget);\n          _this.setClearColor(_currentClearColor, _currentClearAlpha);\n          if (currentCameraViewport !== void 0) camera.viewport = currentCameraViewport;\n          _this.toneMapping = currentToneMapping;\n        }\n        function renderObjects(renderList, scene, camera) {\n          const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n          for (let i2 = 0, l2 = renderList.length; i2 < l2; i2++) {\n            const renderItem = renderList[i2];\n            const object = renderItem.object;\n            const geometry = renderItem.geometry;\n            const material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n            const group = renderItem.group;\n            if (object.layers.test(camera.layers)) {\n              renderObject(object, scene, camera, geometry, material, group);\n            }\n          }\n        }\n        function renderObject(object, scene, camera, geometry, material, group) {\n          object.onBeforeRender(_this, scene, camera, geometry, material, group);\n          object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n          object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n          material.onBeforeRender(_this, scene, camera, geometry, object, group);\n          if (material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false) {\n            material.side = BackSide;\n            material.needsUpdate = true;\n            _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n            material.side = FrontSide;\n            material.needsUpdate = true;\n            _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n            material.side = DoubleSide;\n          } else {\n            _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n          }\n          object.onAfterRender(_this, scene, camera, geometry, material, group);\n        }\n        function getProgram(material, scene, object) {\n          if (scene.isScene !== true) scene = _emptyScene;\n          const materialProperties = properties.get(material);\n          const lights = currentRenderState.state.lights;\n          const shadowsArray = currentRenderState.state.shadowsArray;\n          const lightsStateVersion = lights.state.version;\n          const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n          const programCacheKey = programCache.getProgramCacheKey(parameters2);\n          let programs = materialProperties.programs;\n          materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n          materialProperties.fog = scene.fog;\n          materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n          materialProperties.envMapRotation = materialProperties.environment !== null && material.envMap === null ? scene.environmentRotation : material.envMapRotation;\n          if (programs === void 0) {\n            material.addEventListener(\"dispose\", onMaterialDispose);\n            programs = /* @__PURE__ */ new Map();\n            materialProperties.programs = programs;\n          }\n          let program = programs.get(programCacheKey);\n          if (program !== void 0) {\n            if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n              updateCommonMaterialProperties(material, parameters2);\n              return program;\n            }\n          } else {\n            parameters2.uniforms = programCache.getUniforms(material);\n            material.onBeforeCompile(parameters2, _this);\n            program = programCache.acquireProgram(parameters2, programCacheKey);\n            programs.set(programCacheKey, program);\n            materialProperties.uniforms = parameters2.uniforms;\n          }\n          const uniforms = materialProperties.uniforms;\n          if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n            uniforms.clippingPlanes = clipping.uniform;\n          }\n          updateCommonMaterialProperties(material, parameters2);\n          materialProperties.needsLights = materialNeedsLights(material);\n          materialProperties.lightsStateVersion = lightsStateVersion;\n          if (materialProperties.needsLights) {\n            uniforms.ambientLightColor.value = lights.state.ambient;\n            uniforms.lightProbe.value = lights.state.probe;\n            uniforms.directionalLights.value = lights.state.directional;\n            uniforms.directionalLightShadows.value = lights.state.directionalShadow;\n            uniforms.spotLights.value = lights.state.spot;\n            uniforms.spotLightShadows.value = lights.state.spotShadow;\n            uniforms.rectAreaLights.value = lights.state.rectArea;\n            uniforms.ltc_1.value = lights.state.rectAreaLTC1;\n            uniforms.ltc_2.value = lights.state.rectAreaLTC2;\n            uniforms.pointLights.value = lights.state.point;\n            uniforms.pointLightShadows.value = lights.state.pointShadow;\n            uniforms.hemisphereLights.value = lights.state.hemi;\n            uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n            uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n            uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n            uniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n            uniforms.spotLightMap.value = lights.state.spotLightMap;\n            uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n            uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n          }\n          materialProperties.currentProgram = program;\n          materialProperties.uniformsList = null;\n          return program;\n        }\n        function getUniformList(materialProperties) {\n          if (materialProperties.uniformsList === null) {\n            const progUniforms = materialProperties.currentProgram.getUniforms();\n            materialProperties.uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, materialProperties.uniforms);\n          }\n          return materialProperties.uniformsList;\n        }\n        function updateCommonMaterialProperties(material, parameters2) {\n          const materialProperties = properties.get(material);\n          materialProperties.outputColorSpace = parameters2.outputColorSpace;\n          materialProperties.batching = parameters2.batching;\n          materialProperties.batchingColor = parameters2.batchingColor;\n          materialProperties.instancing = parameters2.instancing;\n          materialProperties.instancingColor = parameters2.instancingColor;\n          materialProperties.instancingMorph = parameters2.instancingMorph;\n          materialProperties.skinning = parameters2.skinning;\n          materialProperties.morphTargets = parameters2.morphTargets;\n          materialProperties.morphNormals = parameters2.morphNormals;\n          materialProperties.morphColors = parameters2.morphColors;\n          materialProperties.morphTargetsCount = parameters2.morphTargetsCount;\n          materialProperties.numClippingPlanes = parameters2.numClippingPlanes;\n          materialProperties.numIntersection = parameters2.numClipIntersection;\n          materialProperties.vertexAlphas = parameters2.vertexAlphas;\n          materialProperties.vertexTangents = parameters2.vertexTangents;\n          materialProperties.toneMapping = parameters2.toneMapping;\n        }\n        function setProgram(camera, scene, geometry, material, object) {\n          if (scene.isScene !== true) scene = _emptyScene;\n          textures.resetTextureUnits();\n          const fog = scene.fog;\n          const environment = material.isMeshStandardMaterial ? scene.environment : null;\n          const colorSpace = _currentRenderTarget === null ? _this.outputColorSpace : _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace;\n          const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n          const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n          const vertexTangents = !!geometry.attributes.tangent && (!!material.normalMap || material.anisotropy > 0);\n          const morphTargets = !!geometry.morphAttributes.position;\n          const morphNormals = !!geometry.morphAttributes.normal;\n          const morphColors = !!geometry.morphAttributes.color;\n          let toneMapping = NoToneMapping;\n          if (material.toneMapped) {\n            if (_currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true) {\n              toneMapping = _this.toneMapping;\n            }\n          }\n          const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n          const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n          const materialProperties = properties.get(material);\n          const lights = currentRenderState.state.lights;\n          if (_clippingEnabled === true) {\n            if (_localClippingEnabled === true || camera !== _currentCamera) {\n              const useCache = camera === _currentCamera && material.id === _currentMaterialId;\n              clipping.setState(material, camera, useCache);\n            }\n          }\n          let needsProgramChange = false;\n          if (material.version === materialProperties.__version) {\n            if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n              needsProgramChange = true;\n            } else if (materialProperties.outputColorSpace !== colorSpace) {\n              needsProgramChange = true;\n            } else if (object.isBatchedMesh && materialProperties.batching === false) {\n              needsProgramChange = true;\n            } else if (!object.isBatchedMesh && materialProperties.batching === true) {\n              needsProgramChange = true;\n            } else if (object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null) {\n              needsProgramChange = true;\n            } else if (object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null) {\n              needsProgramChange = true;\n            } else if (object.isInstancedMesh && materialProperties.instancing === false) {\n              needsProgramChange = true;\n            } else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n              needsProgramChange = true;\n            } else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n              needsProgramChange = true;\n            } else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n              needsProgramChange = true;\n            } else if (object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null) {\n              needsProgramChange = true;\n            } else if (object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null) {\n              needsProgramChange = true;\n            } else if (object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null) {\n              needsProgramChange = true;\n            } else if (object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null) {\n              needsProgramChange = true;\n            } else if (materialProperties.envMap !== envMap) {\n              needsProgramChange = true;\n            } else if (material.fog === true && materialProperties.fog !== fog) {\n              needsProgramChange = true;\n            } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n              needsProgramChange = true;\n            } else if (materialProperties.vertexAlphas !== vertexAlphas) {\n              needsProgramChange = true;\n            } else if (materialProperties.vertexTangents !== vertexTangents) {\n              needsProgramChange = true;\n            } else if (materialProperties.morphTargets !== morphTargets) {\n              needsProgramChange = true;\n            } else if (materialProperties.morphNormals !== morphNormals) {\n              needsProgramChange = true;\n            } else if (materialProperties.morphColors !== morphColors) {\n              needsProgramChange = true;\n            } else if (materialProperties.toneMapping !== toneMapping) {\n              needsProgramChange = true;\n            } else if (materialProperties.morphTargetsCount !== morphTargetsCount) {\n              needsProgramChange = true;\n            }\n          } else {\n            needsProgramChange = true;\n            materialProperties.__version = material.version;\n          }\n          let program = materialProperties.currentProgram;\n          if (needsProgramChange === true) {\n            program = getProgram(material, scene, object);\n          }\n          let refreshProgram = false;\n          let refreshMaterial = false;\n          let refreshLights = false;\n          const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms;\n          if (state.useProgram(program.program)) {\n            refreshProgram = true;\n            refreshMaterial = true;\n            refreshLights = true;\n          }\n          if (material.id !== _currentMaterialId) {\n            _currentMaterialId = material.id;\n            refreshMaterial = true;\n          }\n          if (refreshProgram || _currentCamera !== camera) {\n            if (capabilities.reverseDepthBuffer) {\n              _currentProjectionMatrix.copy(camera.projectionMatrix);\n              toNormalizedProjectionMatrix(_currentProjectionMatrix);\n              toReversedProjectionMatrix(_currentProjectionMatrix);\n              p_uniforms.setValue(_gl, \"projectionMatrix\", _currentProjectionMatrix);\n            } else {\n              p_uniforms.setValue(_gl, \"projectionMatrix\", camera.projectionMatrix);\n            }\n            p_uniforms.setValue(_gl, \"viewMatrix\", camera.matrixWorldInverse);\n            const uCamPos = p_uniforms.map.cameraPosition;\n            if (uCamPos !== void 0) {\n              uCamPos.setValue(_gl, _vector32.setFromMatrixPosition(camera.matrixWorld));\n            }\n            if (capabilities.logarithmicDepthBuffer) {\n              p_uniforms.setValue(\n                _gl,\n                \"logDepthBufFC\",\n                2 / (Math.log(camera.far + 1) / Math.LN2)\n              );\n            }\n            if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n              p_uniforms.setValue(_gl, \"isOrthographic\", camera.isOrthographicCamera === true);\n            }\n            if (_currentCamera !== camera) {\n              _currentCamera = camera;\n              refreshMaterial = true;\n              refreshLights = true;\n            }\n          }\n          if (object.isSkinnedMesh) {\n            p_uniforms.setOptional(_gl, object, \"bindMatrix\");\n            p_uniforms.setOptional(_gl, object, \"bindMatrixInverse\");\n            const skeleton = object.skeleton;\n            if (skeleton) {\n              if (skeleton.boneTexture === null) skeleton.computeBoneTexture();\n              p_uniforms.setValue(_gl, \"boneTexture\", skeleton.boneTexture, textures);\n            }\n          }\n          if (object.isBatchedMesh) {\n            p_uniforms.setOptional(_gl, object, \"batchingTexture\");\n            p_uniforms.setValue(_gl, \"batchingTexture\", object._matricesTexture, textures);\n            p_uniforms.setOptional(_gl, object, \"batchingIdTexture\");\n            p_uniforms.setValue(_gl, \"batchingIdTexture\", object._indirectTexture, textures);\n            p_uniforms.setOptional(_gl, object, \"batchingColorTexture\");\n            if (object._colorsTexture !== null) {\n              p_uniforms.setValue(_gl, \"batchingColorTexture\", object._colorsTexture, textures);\n            }\n          }\n          const morphAttributes = geometry.morphAttributes;\n          if (morphAttributes.position !== void 0 || morphAttributes.normal !== void 0 || morphAttributes.color !== void 0) {\n            morphtargets.update(object, geometry, program);\n          }\n          if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n            materialProperties.receiveShadow = object.receiveShadow;\n            p_uniforms.setValue(_gl, \"receiveShadow\", object.receiveShadow);\n          }\n          if (material.isMeshGouraudMaterial && material.envMap !== null) {\n            m_uniforms.envMap.value = envMap;\n            m_uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n          }\n          if (material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null) {\n            m_uniforms.envMapIntensity.value = scene.environmentIntensity;\n          }\n          if (refreshMaterial) {\n            p_uniforms.setValue(_gl, \"toneMappingExposure\", _this.toneMappingExposure);\n            if (materialProperties.needsLights) {\n              markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n            }\n            if (fog && material.fog === true) {\n              materials.refreshFogUniforms(m_uniforms, fog);\n            }\n            materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[camera.id]);\n            WebGLUniforms.upload(_gl, getUniformList(materialProperties), m_uniforms, textures);\n          }\n          if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n            WebGLUniforms.upload(_gl, getUniformList(materialProperties), m_uniforms, textures);\n            material.uniformsNeedUpdate = false;\n          }\n          if (material.isSpriteMaterial) {\n            p_uniforms.setValue(_gl, \"center\", object.center);\n          }\n          p_uniforms.setValue(_gl, \"modelViewMatrix\", object.modelViewMatrix);\n          p_uniforms.setValue(_gl, \"normalMatrix\", object.normalMatrix);\n          p_uniforms.setValue(_gl, \"modelMatrix\", object.matrixWorld);\n          if (material.isShaderMaterial || material.isRawShaderMaterial) {\n            const groups = material.uniformsGroups;\n            for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n              const group = groups[i2];\n              uniformsGroups.update(group, program);\n              uniformsGroups.bind(group, program);\n            }\n          }\n          return program;\n        }\n        function markUniformsLightsNeedsUpdate(uniforms, value) {\n          uniforms.ambientLightColor.needsUpdate = value;\n          uniforms.lightProbe.needsUpdate = value;\n          uniforms.directionalLights.needsUpdate = value;\n          uniforms.directionalLightShadows.needsUpdate = value;\n          uniforms.pointLights.needsUpdate = value;\n          uniforms.pointLightShadows.needsUpdate = value;\n          uniforms.spotLights.needsUpdate = value;\n          uniforms.spotLightShadows.needsUpdate = value;\n          uniforms.rectAreaLights.needsUpdate = value;\n          uniforms.hemisphereLights.needsUpdate = value;\n        }\n        function materialNeedsLights(material) {\n          return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n        }\n        this.getActiveCubeFace = function() {\n          return _currentActiveCubeFace;\n        };\n        this.getActiveMipmapLevel = function() {\n          return _currentActiveMipmapLevel;\n        };\n        this.getRenderTarget = function() {\n          return _currentRenderTarget;\n        };\n        this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) {\n          properties.get(renderTarget.texture).__webglTexture = colorTexture;\n          properties.get(renderTarget.depthTexture).__webglTexture = depthTexture;\n          const renderTargetProperties = properties.get(renderTarget);\n          renderTargetProperties.__hasExternalTextures = true;\n          renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0;\n          if (!renderTargetProperties.__autoAllocateDepthBuffer) {\n            if (extensions.has(\"WEBGL_multisampled_render_to_texture\") === true) {\n              console.warn(\"THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided\");\n              renderTargetProperties.__useRenderToTexture = false;\n            }\n          }\n        };\n        this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) {\n          const renderTargetProperties = properties.get(renderTarget);\n          renderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n          renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0;\n        };\n        this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n          _currentRenderTarget = renderTarget;\n          _currentActiveCubeFace = activeCubeFace;\n          _currentActiveMipmapLevel = activeMipmapLevel;\n          let useDefaultFramebuffer = true;\n          let framebuffer = null;\n          let isCube = false;\n          let isRenderTarget3D = false;\n          if (renderTarget) {\n            const renderTargetProperties = properties.get(renderTarget);\n            if (renderTargetProperties.__useDefaultFramebuffer !== void 0) {\n              state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n              useDefaultFramebuffer = false;\n            } else if (renderTargetProperties.__webglFramebuffer === void 0) {\n              textures.setupRenderTarget(renderTarget);\n            } else if (renderTargetProperties.__hasExternalTextures) {\n              textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture);\n            } else if (renderTarget.depthBuffer) {\n              const depthTexture = renderTarget.depthTexture;\n              if (renderTargetProperties.__boundDepthTexture !== depthTexture) {\n                if (depthTexture !== null && properties.has(depthTexture) && (renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height)) {\n                  throw new Error(\"WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.\");\n                }\n                textures.setupDepthRenderbuffer(renderTarget);\n              }\n            }\n            const texture = renderTarget.texture;\n            if (texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture) {\n              isRenderTarget3D = true;\n            }\n            const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n            if (renderTarget.isWebGLCubeRenderTarget) {\n              if (Array.isArray(__webglFramebuffer[activeCubeFace])) {\n                framebuffer = __webglFramebuffer[activeCubeFace][activeMipmapLevel];\n              } else {\n                framebuffer = __webglFramebuffer[activeCubeFace];\n              }\n              isCube = true;\n            } else if (renderTarget.samples > 0 && textures.useMultisampledRTT(renderTarget) === false) {\n              framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n            } else {\n              if (Array.isArray(__webglFramebuffer)) {\n                framebuffer = __webglFramebuffer[activeMipmapLevel];\n              } else {\n                framebuffer = __webglFramebuffer;\n              }\n            }\n            _currentViewport.copy(renderTarget.viewport);\n            _currentScissor.copy(renderTarget.scissor);\n            _currentScissorTest = renderTarget.scissorTest;\n          } else {\n            _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n            _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n            _currentScissorTest = _scissorTest;\n          }\n          const framebufferBound = state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n          if (framebufferBound && useDefaultFramebuffer) {\n            state.drawBuffers(renderTarget, framebuffer);\n          }\n          state.viewport(_currentViewport);\n          state.scissor(_currentScissor);\n          state.setScissorTest(_currentScissorTest);\n          if (isCube) {\n            const textureProperties = properties.get(renderTarget.texture);\n            _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n          } else if (isRenderTarget3D) {\n            const textureProperties = properties.get(renderTarget.texture);\n            const layer = activeCubeFace || 0;\n            _gl.framebufferTextureLayer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n          }\n          _currentMaterialId = -1;\n        };\n        this.readRenderTargetPixels = function(renderTarget, x, y2, width, height, buffer, activeCubeFaceIndex) {\n          if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n            console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n            return;\n          }\n          let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n          if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n            framebuffer = framebuffer[activeCubeFaceIndex];\n          }\n          if (framebuffer) {\n            state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n            try {\n              const texture = renderTarget.texture;\n              const textureFormat = texture.format;\n              const textureType = texture.type;\n              if (!capabilities.textureFormatReadable(textureFormat)) {\n                console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");\n                return;\n              }\n              if (!capabilities.textureTypeReadable(textureType)) {\n                console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");\n                return;\n              }\n              if (x >= 0 && x <= renderTarget.width - width && (y2 >= 0 && y2 <= renderTarget.height - height)) {\n                _gl.readPixels(x, y2, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n              }\n            } finally {\n              const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n              state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer2);\n            }\n          }\n        };\n        this.readRenderTargetPixelsAsync = function(renderTarget, x, y2, width, height, buffer, activeCubeFaceIndex) {\n          return __async(this, null, function* () {\n            if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n              throw new Error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n            }\n            let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n            if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n              framebuffer = framebuffer[activeCubeFaceIndex];\n            }\n            if (framebuffer) {\n              const texture = renderTarget.texture;\n              const textureFormat = texture.format;\n              const textureType = texture.type;\n              if (!capabilities.textureFormatReadable(textureFormat)) {\n                throw new Error(\"THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.\");\n              }\n              if (!capabilities.textureTypeReadable(textureType)) {\n                throw new Error(\"THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.\");\n              }\n              if (x >= 0 && x <= renderTarget.width - width && (y2 >= 0 && y2 <= renderTarget.height - height)) {\n                state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n                const glBuffer = _gl.createBuffer();\n                _gl.bindBuffer(_gl.PIXEL_PACK_BUFFER, glBuffer);\n                _gl.bufferData(_gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ);\n                _gl.readPixels(x, y2, width, height, utils.convert(textureFormat), utils.convert(textureType), 0);\n                const currFramebuffer = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n                state.bindFramebuffer(_gl.FRAMEBUFFER, currFramebuffer);\n                const sync = _gl.fenceSync(_gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n                _gl.flush();\n                yield probeAsync(_gl, sync, 4);\n                _gl.bindBuffer(_gl.PIXEL_PACK_BUFFER, glBuffer);\n                _gl.getBufferSubData(_gl.PIXEL_PACK_BUFFER, 0, buffer);\n                _gl.deleteBuffer(glBuffer);\n                _gl.deleteSync(sync);\n                return buffer;\n              } else {\n                throw new Error(\"THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.\");\n              }\n            }\n          });\n        };\n        this.copyFramebufferToTexture = function(texture, position = null, level = 0) {\n          if (texture.isTexture !== true) {\n            warnOnce(\"WebGLRenderer: copyFramebufferToTexture function signature has changed.\");\n            position = arguments[0] || null;\n            texture = arguments[1];\n          }\n          const levelScale = Math.pow(2, -level);\n          const width = Math.floor(texture.image.width * levelScale);\n          const height = Math.floor(texture.image.height * levelScale);\n          const x = position !== null ? position.x : 0;\n          const y2 = position !== null ? position.y : 0;\n          textures.setTexture2D(texture, 0);\n          _gl.copyTexSubImage2D(_gl.TEXTURE_2D, level, 0, 0, x, y2, width, height);\n          state.unbindTexture();\n        };\n        this.copyTextureToTexture = function(srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0) {\n          if (srcTexture.isTexture !== true) {\n            warnOnce(\"WebGLRenderer: copyTextureToTexture function signature has changed.\");\n            dstPosition = arguments[0] || null;\n            srcTexture = arguments[1];\n            dstTexture = arguments[2];\n            level = arguments[3] || 0;\n            srcRegion = null;\n          }\n          let width, height, minX, minY;\n          let dstX, dstY;\n          if (srcRegion !== null) {\n            width = srcRegion.max.x - srcRegion.min.x;\n            height = srcRegion.max.y - srcRegion.min.y;\n            minX = srcRegion.min.x;\n            minY = srcRegion.min.y;\n          } else {\n            width = srcTexture.image.width;\n            height = srcTexture.image.height;\n            minX = 0;\n            minY = 0;\n          }\n          if (dstPosition !== null) {\n            dstX = dstPosition.x;\n            dstY = dstPosition.y;\n          } else {\n            dstX = 0;\n            dstY = 0;\n          }\n          const glFormat = utils.convert(dstTexture.format);\n          const glType = utils.convert(dstTexture.type);\n          textures.setTexture2D(dstTexture, 0);\n          _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY);\n          _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);\n          _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);\n          const currentUnpackRowLen = _gl.getParameter(_gl.UNPACK_ROW_LENGTH);\n          const currentUnpackImageHeight = _gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT);\n          const currentUnpackSkipPixels = _gl.getParameter(_gl.UNPACK_SKIP_PIXELS);\n          const currentUnpackSkipRows = _gl.getParameter(_gl.UNPACK_SKIP_ROWS);\n          const currentUnpackSkipImages = _gl.getParameter(_gl.UNPACK_SKIP_IMAGES);\n          const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[level] : srcTexture.image;\n          _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, image.width);\n          _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, image.height);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, minX);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, minY);\n          if (srcTexture.isDataTexture) {\n            _gl.texSubImage2D(_gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image.data);\n          } else {\n            if (srcTexture.isCompressedTexture) {\n              _gl.compressedTexSubImage2D(_gl.TEXTURE_2D, level, dstX, dstY, image.width, image.height, glFormat, image.data);\n            } else {\n              _gl.texSubImage2D(_gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image);\n            }\n          }\n          _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, currentUnpackRowLen);\n          _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages);\n          if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(_gl.TEXTURE_2D);\n          state.unbindTexture();\n        };\n        this.copyTextureToTexture3D = function(srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0) {\n          if (srcTexture.isTexture !== true) {\n            warnOnce(\"WebGLRenderer: copyTextureToTexture3D function signature has changed.\");\n            srcRegion = arguments[0] || null;\n            dstPosition = arguments[1] || null;\n            srcTexture = arguments[2];\n            dstTexture = arguments[3];\n            level = arguments[4] || 0;\n          }\n          let width, height, depth2, minX, minY, minZ;\n          let dstX, dstY, dstZ;\n          const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[level] : srcTexture.image;\n          if (srcRegion !== null) {\n            width = srcRegion.max.x - srcRegion.min.x;\n            height = srcRegion.max.y - srcRegion.min.y;\n            depth2 = srcRegion.max.z - srcRegion.min.z;\n            minX = srcRegion.min.x;\n            minY = srcRegion.min.y;\n            minZ = srcRegion.min.z;\n          } else {\n            width = image.width;\n            height = image.height;\n            depth2 = image.depth;\n            minX = 0;\n            minY = 0;\n            minZ = 0;\n          }\n          if (dstPosition !== null) {\n            dstX = dstPosition.x;\n            dstY = dstPosition.y;\n            dstZ = dstPosition.z;\n          } else {\n            dstX = 0;\n            dstY = 0;\n            dstZ = 0;\n          }\n          const glFormat = utils.convert(dstTexture.format);\n          const glType = utils.convert(dstTexture.type);\n          let glTarget;\n          if (dstTexture.isData3DTexture) {\n            textures.setTexture3D(dstTexture, 0);\n            glTarget = _gl.TEXTURE_3D;\n          } else if (dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture) {\n            textures.setTexture2DArray(dstTexture, 0);\n            glTarget = _gl.TEXTURE_2D_ARRAY;\n          } else {\n            console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");\n            return;\n          }\n          _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY);\n          _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);\n          _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);\n          const currentUnpackRowLen = _gl.getParameter(_gl.UNPACK_ROW_LENGTH);\n          const currentUnpackImageHeight = _gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT);\n          const currentUnpackSkipPixels = _gl.getParameter(_gl.UNPACK_SKIP_PIXELS);\n          const currentUnpackSkipRows = _gl.getParameter(_gl.UNPACK_SKIP_ROWS);\n          const currentUnpackSkipImages = _gl.getParameter(_gl.UNPACK_SKIP_IMAGES);\n          _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, image.width);\n          _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, image.height);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, minX);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, minY);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, minZ);\n          if (srcTexture.isDataTexture || srcTexture.isData3DTexture) {\n            _gl.texSubImage3D(glTarget, level, dstX, dstY, dstZ, width, height, depth2, glFormat, glType, image.data);\n          } else {\n            if (dstTexture.isCompressedArrayTexture) {\n              _gl.compressedTexSubImage3D(glTarget, level, dstX, dstY, dstZ, width, height, depth2, glFormat, image.data);\n            } else {\n              _gl.texSubImage3D(glTarget, level, dstX, dstY, dstZ, width, height, depth2, glFormat, glType, image);\n            }\n          }\n          _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, currentUnpackRowLen);\n          _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows);\n          _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages);\n          if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(glTarget);\n          state.unbindTexture();\n        };\n        this.initRenderTarget = function(target2) {\n          if (properties.get(target2).__webglFramebuffer === void 0) {\n            textures.setupRenderTarget(target2);\n          }\n        };\n        this.initTexture = function(texture) {\n          if (texture.isCubeTexture) {\n            textures.setTextureCube(texture, 0);\n          } else if (texture.isData3DTexture) {\n            textures.setTexture3D(texture, 0);\n          } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) {\n            textures.setTexture2DArray(texture, 0);\n          } else {\n            textures.setTexture2D(texture, 0);\n          }\n          state.unbindTexture();\n        };\n        this.resetState = function() {\n          _currentActiveCubeFace = 0;\n          _currentActiveMipmapLevel = 0;\n          _currentRenderTarget = null;\n          state.reset();\n          bindingStates.reset();\n        };\n        if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n          __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n        }\n      }\n      get coordinateSystem() {\n        return WebGLCoordinateSystem;\n      }\n      get outputColorSpace() {\n        return this._outputColorSpace;\n      }\n      set outputColorSpace(colorSpace) {\n        this._outputColorSpace = colorSpace;\n        const gl = this.getContext();\n        gl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? \"display-p3\" : \"srgb\";\n        gl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? \"display-p3\" : \"srgb\";\n      }\n    };\n    FogExp2 = class _FogExp2 {\n      constructor(color, density = 25e-5) {\n        this.isFogExp2 = true;\n        this.name = \"\";\n        this.color = new Color(color);\n        this.density = density;\n      }\n      clone() {\n        return new _FogExp2(this.color, this.density);\n      }\n      toJSON() {\n        return {\n          type: \"FogExp2\",\n          name: this.name,\n          color: this.color.getHex(),\n          density: this.density\n        };\n      }\n    };\n    Fog = class _Fog {\n      constructor(color, near = 1, far = 1e3) {\n        this.isFog = true;\n        this.name = \"\";\n        this.color = new Color(color);\n        this.near = near;\n        this.far = far;\n      }\n      clone() {\n        return new _Fog(this.color, this.near, this.far);\n      }\n      toJSON() {\n        return {\n          type: \"Fog\",\n          name: this.name,\n          color: this.color.getHex(),\n          near: this.near,\n          far: this.far\n        };\n      }\n    };\n    Scene = class extends Object3D {\n      constructor() {\n        super();\n        this.isScene = true;\n        this.type = \"Scene\";\n        this.background = null;\n        this.environment = null;\n        this.fog = null;\n        this.backgroundBlurriness = 0;\n        this.backgroundIntensity = 1;\n        this.backgroundRotation = new Euler();\n        this.environmentIntensity = 1;\n        this.environmentRotation = new Euler();\n        this.overrideMaterial = null;\n        if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n          __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n        }\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        if (source.background !== null) this.background = source.background.clone();\n        if (source.environment !== null) this.environment = source.environment.clone();\n        if (source.fog !== null) this.fog = source.fog.clone();\n        this.backgroundBlurriness = source.backgroundBlurriness;\n        this.backgroundIntensity = source.backgroundIntensity;\n        this.backgroundRotation.copy(source.backgroundRotation);\n        this.environmentIntensity = source.environmentIntensity;\n        this.environmentRotation.copy(source.environmentRotation);\n        if (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone();\n        this.matrixAutoUpdate = source.matrixAutoUpdate;\n        return this;\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        if (this.fog !== null) data.object.fog = this.fog.toJSON();\n        if (this.backgroundBlurriness > 0) data.object.backgroundBlurriness = this.backgroundBlurriness;\n        if (this.backgroundIntensity !== 1) data.object.backgroundIntensity = this.backgroundIntensity;\n        data.object.backgroundRotation = this.backgroundRotation.toArray();\n        if (this.environmentIntensity !== 1) data.object.environmentIntensity = this.environmentIntensity;\n        data.object.environmentRotation = this.environmentRotation.toArray();\n        return data;\n      }\n    };\n    InterleavedBuffer = class {\n      constructor(array, stride) {\n        this.isInterleavedBuffer = true;\n        this.array = array;\n        this.stride = stride;\n        this.count = array !== void 0 ? array.length / stride : 0;\n        this.usage = StaticDrawUsage;\n        this.updateRanges = [];\n        this.version = 0;\n        this.uuid = generateUUID();\n      }\n      onUploadCallback() {\n      }\n      set needsUpdate(value) {\n        if (value === true) this.version++;\n      }\n      setUsage(value) {\n        this.usage = value;\n        return this;\n      }\n      addUpdateRange(start, count) {\n        this.updateRanges.push({ start, count });\n      }\n      clearUpdateRanges() {\n        this.updateRanges.length = 0;\n      }\n      copy(source) {\n        this.array = new source.array.constructor(source.array);\n        this.count = source.count;\n        this.stride = source.stride;\n        this.usage = source.usage;\n        return this;\n      }\n      copyAt(index1, attribute, index2) {\n        index1 *= this.stride;\n        index2 *= attribute.stride;\n        for (let i2 = 0, l2 = this.stride; i2 < l2; i2++) {\n          this.array[index1 + i2] = attribute.array[index2 + i2];\n        }\n        return this;\n      }\n      set(value, offset = 0) {\n        this.array.set(value, offset);\n        return this;\n      }\n      clone(data) {\n        if (data.arrayBuffers === void 0) {\n          data.arrayBuffers = {};\n        }\n        if (this.array.buffer._uuid === void 0) {\n          this.array.buffer._uuid = generateUUID();\n        }\n        if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n          data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n        }\n        const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n        const ib = new this.constructor(array, this.stride);\n        ib.setUsage(this.usage);\n        return ib;\n      }\n      onUpload(callback) {\n        this.onUploadCallback = callback;\n        return this;\n      }\n      toJSON(data) {\n        if (data.arrayBuffers === void 0) {\n          data.arrayBuffers = {};\n        }\n        if (this.array.buffer._uuid === void 0) {\n          this.array.buffer._uuid = generateUUID();\n        }\n        if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n          data.arrayBuffers[this.array.buffer._uuid] = Array.from(new Uint32Array(this.array.buffer));\n        }\n        return {\n          uuid: this.uuid,\n          buffer: this.array.buffer._uuid,\n          type: this.array.constructor.name,\n          stride: this.stride\n        };\n      }\n    };\n    _vector$6 = /* @__PURE__ */ new Vector3();\n    InterleavedBufferAttribute = class _InterleavedBufferAttribute {\n      constructor(interleavedBuffer, itemSize, offset, normalized = false) {\n        this.isInterleavedBufferAttribute = true;\n        this.name = \"\";\n        this.data = interleavedBuffer;\n        this.itemSize = itemSize;\n        this.offset = offset;\n        this.normalized = normalized;\n      }\n      get count() {\n        return this.data.count;\n      }\n      get array() {\n        return this.data.array;\n      }\n      set needsUpdate(value) {\n        this.data.needsUpdate = value;\n      }\n      applyMatrix4(m) {\n        for (let i2 = 0, l2 = this.data.count; i2 < l2; i2++) {\n          _vector$6.fromBufferAttribute(this, i2);\n          _vector$6.applyMatrix4(m);\n          this.setXYZ(i2, _vector$6.x, _vector$6.y, _vector$6.z);\n        }\n        return this;\n      }\n      applyNormalMatrix(m) {\n        for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n          _vector$6.fromBufferAttribute(this, i2);\n          _vector$6.applyNormalMatrix(m);\n          this.setXYZ(i2, _vector$6.x, _vector$6.y, _vector$6.z);\n        }\n        return this;\n      }\n      transformDirection(m) {\n        for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n          _vector$6.fromBufferAttribute(this, i2);\n          _vector$6.transformDirection(m);\n          this.setXYZ(i2, _vector$6.x, _vector$6.y, _vector$6.z);\n        }\n        return this;\n      }\n      getComponent(index, component) {\n        let value = this.array[index * this.data.stride + this.offset + component];\n        if (this.normalized) value = denormalize(value, this.array);\n        return value;\n      }\n      setComponent(index, component, value) {\n        if (this.normalized) value = normalize(value, this.array);\n        this.data.array[index * this.data.stride + this.offset + component] = value;\n        return this;\n      }\n      setX(index, x) {\n        if (this.normalized) x = normalize(x, this.array);\n        this.data.array[index * this.data.stride + this.offset] = x;\n        return this;\n      }\n      setY(index, y2) {\n        if (this.normalized) y2 = normalize(y2, this.array);\n        this.data.array[index * this.data.stride + this.offset + 1] = y2;\n        return this;\n      }\n      setZ(index, z2) {\n        if (this.normalized) z2 = normalize(z2, this.array);\n        this.data.array[index * this.data.stride + this.offset + 2] = z2;\n        return this;\n      }\n      setW(index, w) {\n        if (this.normalized) w = normalize(w, this.array);\n        this.data.array[index * this.data.stride + this.offset + 3] = w;\n        return this;\n      }\n      getX(index) {\n        let x = this.data.array[index * this.data.stride + this.offset];\n        if (this.normalized) x = denormalize(x, this.array);\n        return x;\n      }\n      getY(index) {\n        let y2 = this.data.array[index * this.data.stride + this.offset + 1];\n        if (this.normalized) y2 = denormalize(y2, this.array);\n        return y2;\n      }\n      getZ(index) {\n        let z2 = this.data.array[index * this.data.stride + this.offset + 2];\n        if (this.normalized) z2 = denormalize(z2, this.array);\n        return z2;\n      }\n      getW(index) {\n        let w = this.data.array[index * this.data.stride + this.offset + 3];\n        if (this.normalized) w = denormalize(w, this.array);\n        return w;\n      }\n      setXY(index, x, y2) {\n        index = index * this.data.stride + this.offset;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n        }\n        this.data.array[index + 0] = x;\n        this.data.array[index + 1] = y2;\n        return this;\n      }\n      setXYZ(index, x, y2, z2) {\n        index = index * this.data.stride + this.offset;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n          z2 = normalize(z2, this.array);\n        }\n        this.data.array[index + 0] = x;\n        this.data.array[index + 1] = y2;\n        this.data.array[index + 2] = z2;\n        return this;\n      }\n      setXYZW(index, x, y2, z2, w) {\n        index = index * this.data.stride + this.offset;\n        if (this.normalized) {\n          x = normalize(x, this.array);\n          y2 = normalize(y2, this.array);\n          z2 = normalize(z2, this.array);\n          w = normalize(w, this.array);\n        }\n        this.data.array[index + 0] = x;\n        this.data.array[index + 1] = y2;\n        this.data.array[index + 2] = z2;\n        this.data.array[index + 3] = w;\n        return this;\n      }\n      clone(data) {\n        if (data === void 0) {\n          console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.\");\n          const array = [];\n          for (let i2 = 0; i2 < this.count; i2++) {\n            const index = i2 * this.data.stride + this.offset;\n            for (let j2 = 0; j2 < this.itemSize; j2++) {\n              array.push(this.data.array[index + j2]);\n            }\n          }\n          return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n        } else {\n          if (data.interleavedBuffers === void 0) {\n            data.interleavedBuffers = {};\n          }\n          if (data.interleavedBuffers[this.data.uuid] === void 0) {\n            data.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n          }\n          return new _InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n        }\n      }\n      toJSON(data) {\n        if (data === void 0) {\n          console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.\");\n          const array = [];\n          for (let i2 = 0; i2 < this.count; i2++) {\n            const index = i2 * this.data.stride + this.offset;\n            for (let j2 = 0; j2 < this.itemSize; j2++) {\n              array.push(this.data.array[index + j2]);\n            }\n          }\n          return {\n            itemSize: this.itemSize,\n            type: this.array.constructor.name,\n            array,\n            normalized: this.normalized\n          };\n        } else {\n          if (data.interleavedBuffers === void 0) {\n            data.interleavedBuffers = {};\n          }\n          if (data.interleavedBuffers[this.data.uuid] === void 0) {\n            data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n          }\n          return {\n            isInterleavedBufferAttribute: true,\n            itemSize: this.itemSize,\n            data: this.data.uuid,\n            offset: this.offset,\n            normalized: this.normalized\n          };\n        }\n      }\n    };\n    SpriteMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isSpriteMaterial = true;\n        this.type = \"SpriteMaterial\";\n        this.color = new Color(16777215);\n        this.map = null;\n        this.alphaMap = null;\n        this.rotation = 0;\n        this.sizeAttenuation = true;\n        this.transparent = true;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.map = source.map;\n        this.alphaMap = source.alphaMap;\n        this.rotation = source.rotation;\n        this.sizeAttenuation = source.sizeAttenuation;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    _intersectPoint = /* @__PURE__ */ new Vector3();\n    _worldScale = /* @__PURE__ */ new Vector3();\n    _mvPosition = /* @__PURE__ */ new Vector3();\n    _alignedPosition = /* @__PURE__ */ new Vector2();\n    _rotatedPosition = /* @__PURE__ */ new Vector2();\n    _viewWorldMatrix = /* @__PURE__ */ new Matrix4();\n    _vA = /* @__PURE__ */ new Vector3();\n    _vB = /* @__PURE__ */ new Vector3();\n    _vC = /* @__PURE__ */ new Vector3();\n    _uvA = /* @__PURE__ */ new Vector2();\n    _uvB = /* @__PURE__ */ new Vector2();\n    _uvC = /* @__PURE__ */ new Vector2();\n    Sprite = class extends Object3D {\n      constructor(material = new SpriteMaterial()) {\n        super();\n        this.isSprite = true;\n        this.type = \"Sprite\";\n        if (_geometry === void 0) {\n          _geometry = new BufferGeometry();\n          const float32Array = new Float32Array([\n            -0.5,\n            -0.5,\n            0,\n            0,\n            0,\n            0.5,\n            -0.5,\n            0,\n            1,\n            0,\n            0.5,\n            0.5,\n            0,\n            1,\n            1,\n            -0.5,\n            0.5,\n            0,\n            0,\n            1\n          ]);\n          const interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n          _geometry.setIndex([0, 1, 2, 0, 2, 3]);\n          _geometry.setAttribute(\"position\", new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n          _geometry.setAttribute(\"uv\", new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n        }\n        this.geometry = _geometry;\n        this.material = material;\n        this.center = new Vector2(0.5, 0.5);\n      }\n      raycast(raycaster, intersects2) {\n        if (raycaster.camera === null) {\n          console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.');\n        }\n        _worldScale.setFromMatrixScale(this.matrixWorld);\n        _viewWorldMatrix.copy(raycaster.camera.matrixWorld);\n        this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld);\n        _mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n        if (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) {\n          _worldScale.multiplyScalar(-_mvPosition.z);\n        }\n        const rotation = this.material.rotation;\n        let sin, cos;\n        if (rotation !== 0) {\n          cos = Math.cos(rotation);\n          sin = Math.sin(rotation);\n        }\n        const center = this.center;\n        transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n        transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n        transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n        _uvA.set(0, 0);\n        _uvB.set(1, 0);\n        _uvC.set(1, 1);\n        let intersect2 = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint);\n        if (intersect2 === null) {\n          transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n          _uvB.set(0, 1);\n          intersect2 = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint);\n          if (intersect2 === null) {\n            return;\n          }\n        }\n        const distance = raycaster.ray.origin.distanceTo(_intersectPoint);\n        if (distance < raycaster.near || distance > raycaster.far) return;\n        intersects2.push({\n          distance,\n          point: _intersectPoint.clone(),\n          uv: Triangle.getInterpolation(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n          face: null,\n          object: this\n        });\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        if (source.center !== void 0) this.center.copy(source.center);\n        this.material = source.material;\n        return this;\n      }\n    };\n    _v1$2 = /* @__PURE__ */ new Vector3();\n    _v2$1 = /* @__PURE__ */ new Vector3();\n    LOD = class extends Object3D {\n      constructor() {\n        super();\n        this._currentLevel = 0;\n        this.type = \"LOD\";\n        Object.defineProperties(this, {\n          levels: {\n            enumerable: true,\n            value: []\n          },\n          isLOD: {\n            value: true\n          }\n        });\n        this.autoUpdate = true;\n      }\n      copy(source) {\n        super.copy(source, false);\n        const levels = source.levels;\n        for (let i2 = 0, l2 = levels.length; i2 < l2; i2++) {\n          const level = levels[i2];\n          this.addLevel(level.object.clone(), level.distance, level.hysteresis);\n        }\n        this.autoUpdate = source.autoUpdate;\n        return this;\n      }\n      addLevel(object, distance = 0, hysteresis = 0) {\n        distance = Math.abs(distance);\n        const levels = this.levels;\n        let l2;\n        for (l2 = 0; l2 < levels.length; l2++) {\n          if (distance < levels[l2].distance) {\n            break;\n          }\n        }\n        levels.splice(l2, 0, { distance, hysteresis, object });\n        this.add(object);\n        return this;\n      }\n      removeLevel(distance) {\n        const levels = this.levels;\n        for (let i2 = 0; i2 < levels.length; i2++) {\n          if (levels[i2].distance === distance) {\n            const removedElements = levels.splice(i2, 1);\n            this.remove(removedElements[0].object);\n            return true;\n          }\n        }\n        return false;\n      }\n      getCurrentLevel() {\n        return this._currentLevel;\n      }\n      getObjectForDistance(distance) {\n        const levels = this.levels;\n        if (levels.length > 0) {\n          let i2, l2;\n          for (i2 = 1, l2 = levels.length; i2 < l2; i2++) {\n            let levelDistance = levels[i2].distance;\n            if (levels[i2].object.visible) {\n              levelDistance -= levelDistance * levels[i2].hysteresis;\n            }\n            if (distance < levelDistance) {\n              break;\n            }\n          }\n          return levels[i2 - 1].object;\n        }\n        return null;\n      }\n      raycast(raycaster, intersects2) {\n        const levels = this.levels;\n        if (levels.length > 0) {\n          _v1$2.setFromMatrixPosition(this.matrixWorld);\n          const distance = raycaster.ray.origin.distanceTo(_v1$2);\n          this.getObjectForDistance(distance).raycast(raycaster, intersects2);\n        }\n      }\n      update(camera) {\n        const levels = this.levels;\n        if (levels.length > 1) {\n          _v1$2.setFromMatrixPosition(camera.matrixWorld);\n          _v2$1.setFromMatrixPosition(this.matrixWorld);\n          const distance = _v1$2.distanceTo(_v2$1) / camera.zoom;\n          levels[0].object.visible = true;\n          let i2, l2;\n          for (i2 = 1, l2 = levels.length; i2 < l2; i2++) {\n            let levelDistance = levels[i2].distance;\n            if (levels[i2].object.visible) {\n              levelDistance -= levelDistance * levels[i2].hysteresis;\n            }\n            if (distance >= levelDistance) {\n              levels[i2 - 1].object.visible = false;\n              levels[i2].object.visible = true;\n            } else {\n              break;\n            }\n          }\n          this._currentLevel = i2 - 1;\n          for (; i2 < l2; i2++) {\n            levels[i2].object.visible = false;\n          }\n        }\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        if (this.autoUpdate === false) data.object.autoUpdate = false;\n        data.object.levels = [];\n        const levels = this.levels;\n        for (let i2 = 0, l2 = levels.length; i2 < l2; i2++) {\n          const level = levels[i2];\n          data.object.levels.push({\n            object: level.object.uuid,\n            distance: level.distance,\n            hysteresis: level.hysteresis\n          });\n        }\n        return data;\n      }\n    };\n    _basePosition = /* @__PURE__ */ new Vector3();\n    _skinIndex = /* @__PURE__ */ new Vector4();\n    _skinWeight = /* @__PURE__ */ new Vector4();\n    _vector3 = /* @__PURE__ */ new Vector3();\n    _matrix4 = /* @__PURE__ */ new Matrix4();\n    _vertex = /* @__PURE__ */ new Vector3();\n    _sphere$4 = /* @__PURE__ */ new Sphere();\n    _inverseMatrix$2 = /* @__PURE__ */ new Matrix4();\n    _ray$2 = /* @__PURE__ */ new Ray();\n    SkinnedMesh = class extends Mesh {\n      constructor(geometry, material) {\n        super(geometry, material);\n        this.isSkinnedMesh = true;\n        this.type = \"SkinnedMesh\";\n        this.bindMode = AttachedBindMode;\n        this.bindMatrix = new Matrix4();\n        this.bindMatrixInverse = new Matrix4();\n        this.boundingBox = null;\n        this.boundingSphere = null;\n      }\n      computeBoundingBox() {\n        const geometry = this.geometry;\n        if (this.boundingBox === null) {\n          this.boundingBox = new Box3();\n        }\n        this.boundingBox.makeEmpty();\n        const positionAttribute = geometry.getAttribute(\"position\");\n        for (let i2 = 0; i2 < positionAttribute.count; i2++) {\n          this.getVertexPosition(i2, _vertex);\n          this.boundingBox.expandByPoint(_vertex);\n        }\n      }\n      computeBoundingSphere() {\n        const geometry = this.geometry;\n        if (this.boundingSphere === null) {\n          this.boundingSphere = new Sphere();\n        }\n        this.boundingSphere.makeEmpty();\n        const positionAttribute = geometry.getAttribute(\"position\");\n        for (let i2 = 0; i2 < positionAttribute.count; i2++) {\n          this.getVertexPosition(i2, _vertex);\n          this.boundingSphere.expandByPoint(_vertex);\n        }\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.bindMode = source.bindMode;\n        this.bindMatrix.copy(source.bindMatrix);\n        this.bindMatrixInverse.copy(source.bindMatrixInverse);\n        this.skeleton = source.skeleton;\n        if (source.boundingBox !== null) this.boundingBox = source.boundingBox.clone();\n        if (source.boundingSphere !== null) this.boundingSphere = source.boundingSphere.clone();\n        return this;\n      }\n      raycast(raycaster, intersects2) {\n        const material = this.material;\n        const matrixWorld = this.matrixWorld;\n        if (material === void 0) return;\n        if (this.boundingSphere === null) this.computeBoundingSphere();\n        _sphere$4.copy(this.boundingSphere);\n        _sphere$4.applyMatrix4(matrixWorld);\n        if (raycaster.ray.intersectsSphere(_sphere$4) === false) return;\n        _inverseMatrix$2.copy(matrixWorld).invert();\n        _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2);\n        if (this.boundingBox !== null) {\n          if (_ray$2.intersectsBox(this.boundingBox) === false) return;\n        }\n        this._computeIntersections(raycaster, intersects2, _ray$2);\n      }\n      getVertexPosition(index, target2) {\n        super.getVertexPosition(index, target2);\n        this.applyBoneTransform(index, target2);\n        return target2;\n      }\n      bind(skeleton, bindMatrix) {\n        this.skeleton = skeleton;\n        if (bindMatrix === void 0) {\n          this.updateMatrixWorld(true);\n          this.skeleton.calculateInverses();\n          bindMatrix = this.matrixWorld;\n        }\n        this.bindMatrix.copy(bindMatrix);\n        this.bindMatrixInverse.copy(bindMatrix).invert();\n      }\n      pose() {\n        this.skeleton.pose();\n      }\n      normalizeSkinWeights() {\n        const vector = new Vector4();\n        const skinWeight = this.geometry.attributes.skinWeight;\n        for (let i2 = 0, l2 = skinWeight.count; i2 < l2; i2++) {\n          vector.fromBufferAttribute(skinWeight, i2);\n          const scale = 1 / vector.manhattanLength();\n          if (scale !== Infinity) {\n            vector.multiplyScalar(scale);\n          } else {\n            vector.set(1, 0, 0, 0);\n          }\n          skinWeight.setXYZW(i2, vector.x, vector.y, vector.z, vector.w);\n        }\n      }\n      updateMatrixWorld(force) {\n        super.updateMatrixWorld(force);\n        if (this.bindMode === AttachedBindMode) {\n          this.bindMatrixInverse.copy(this.matrixWorld).invert();\n        } else if (this.bindMode === DetachedBindMode) {\n          this.bindMatrixInverse.copy(this.bindMatrix).invert();\n        } else {\n          console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \" + this.bindMode);\n        }\n      }\n      applyBoneTransform(index, vector) {\n        const skeleton = this.skeleton;\n        const geometry = this.geometry;\n        _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n        _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n        _basePosition.copy(vector).applyMatrix4(this.bindMatrix);\n        vector.set(0, 0, 0);\n        for (let i2 = 0; i2 < 4; i2++) {\n          const weight = _skinWeight.getComponent(i2);\n          if (weight !== 0) {\n            const boneIndex = _skinIndex.getComponent(i2);\n            _matrix4.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n            vector.addScaledVector(_vector3.copy(_basePosition).applyMatrix4(_matrix4), weight);\n          }\n        }\n        return vector.applyMatrix4(this.bindMatrixInverse);\n      }\n    };\n    Bone = class extends Object3D {\n      constructor() {\n        super();\n        this.isBone = true;\n        this.type = \"Bone\";\n      }\n    };\n    DataTexture = class extends Texture {\n      constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace) {\n        super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace);\n        this.isDataTexture = true;\n        this.image = { data, width, height };\n        this.generateMipmaps = false;\n        this.flipY = false;\n        this.unpackAlignment = 1;\n      }\n    };\n    _offsetMatrix = /* @__PURE__ */ new Matrix4();\n    _identityMatrix$1 = /* @__PURE__ */ new Matrix4();\n    Skeleton = class _Skeleton {\n      constructor(bones = [], boneInverses = []) {\n        this.uuid = generateUUID();\n        this.bones = bones.slice(0);\n        this.boneInverses = boneInverses;\n        this.boneMatrices = null;\n        this.boneTexture = null;\n        this.init();\n      }\n      init() {\n        const bones = this.bones;\n        const boneInverses = this.boneInverses;\n        this.boneMatrices = new Float32Array(bones.length * 16);\n        if (boneInverses.length === 0) {\n          this.calculateInverses();\n        } else {\n          if (bones.length !== boneInverses.length) {\n            console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\");\n            this.boneInverses = [];\n            for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n              this.boneInverses.push(new Matrix4());\n            }\n          }\n        }\n      }\n      calculateInverses() {\n        this.boneInverses.length = 0;\n        for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n          const inverse = new Matrix4();\n          if (this.bones[i2]) {\n            inverse.copy(this.bones[i2].matrixWorld).invert();\n          }\n          this.boneInverses.push(inverse);\n        }\n      }\n      pose() {\n        for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n          const bone = this.bones[i2];\n          if (bone) {\n            bone.matrixWorld.copy(this.boneInverses[i2]).invert();\n          }\n        }\n        for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n          const bone = this.bones[i2];\n          if (bone) {\n            if (bone.parent && bone.parent.isBone) {\n              bone.matrix.copy(bone.parent.matrixWorld).invert();\n              bone.matrix.multiply(bone.matrixWorld);\n            } else {\n              bone.matrix.copy(bone.matrixWorld);\n            }\n            bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n          }\n        }\n      }\n      update() {\n        const bones = this.bones;\n        const boneInverses = this.boneInverses;\n        const boneMatrices = this.boneMatrices;\n        const boneTexture = this.boneTexture;\n        for (let i2 = 0, il = bones.length; i2 < il; i2++) {\n          const matrix2 = bones[i2] ? bones[i2].matrixWorld : _identityMatrix$1;\n          _offsetMatrix.multiplyMatrices(matrix2, boneInverses[i2]);\n          _offsetMatrix.toArray(boneMatrices, i2 * 16);\n        }\n        if (boneTexture !== null) {\n          boneTexture.needsUpdate = true;\n        }\n      }\n      clone() {\n        return new _Skeleton(this.bones, this.boneInverses);\n      }\n      computeBoneTexture() {\n        let size = Math.sqrt(this.bones.length * 4);\n        size = Math.ceil(size / 4) * 4;\n        size = Math.max(size, 4);\n        const boneMatrices = new Float32Array(size * size * 4);\n        boneMatrices.set(this.boneMatrices);\n        const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n        boneTexture.needsUpdate = true;\n        this.boneMatrices = boneMatrices;\n        this.boneTexture = boneTexture;\n        return this;\n      }\n      getBoneByName(name) {\n        for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n          const bone = this.bones[i2];\n          if (bone.name === name) {\n            return bone;\n          }\n        }\n        return void 0;\n      }\n      dispose() {\n        if (this.boneTexture !== null) {\n          this.boneTexture.dispose();\n          this.boneTexture = null;\n        }\n      }\n      fromJSON(json, bones) {\n        this.uuid = json.uuid;\n        for (let i2 = 0, l2 = json.bones.length; i2 < l2; i2++) {\n          const uuid = json.bones[i2];\n          let bone = bones[uuid];\n          if (bone === void 0) {\n            console.warn(\"THREE.Skeleton: No bone found with UUID:\", uuid);\n            bone = new Bone();\n          }\n          this.bones.push(bone);\n          this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i2]));\n        }\n        this.init();\n        return this;\n      }\n      toJSON() {\n        const data = {\n          metadata: {\n            version: 4.6,\n            type: \"Skeleton\",\n            generator: \"Skeleton.toJSON\"\n          },\n          bones: [],\n          boneInverses: []\n        };\n        data.uuid = this.uuid;\n        const bones = this.bones;\n        const boneInverses = this.boneInverses;\n        for (let i2 = 0, l2 = bones.length; i2 < l2; i2++) {\n          const bone = bones[i2];\n          data.bones.push(bone.uuid);\n          const boneInverse = boneInverses[i2];\n          data.boneInverses.push(boneInverse.toArray());\n        }\n        return data;\n      }\n    };\n    InstancedBufferAttribute = class extends BufferAttribute {\n      constructor(array, itemSize, normalized, meshPerAttribute = 1) {\n        super(array, itemSize, normalized);\n        this.isInstancedBufferAttribute = true;\n        this.meshPerAttribute = meshPerAttribute;\n      }\n      copy(source) {\n        super.copy(source);\n        this.meshPerAttribute = source.meshPerAttribute;\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.meshPerAttribute = this.meshPerAttribute;\n        data.isInstancedBufferAttribute = true;\n        return data;\n      }\n    };\n    _instanceLocalMatrix = /* @__PURE__ */ new Matrix4();\n    _instanceWorldMatrix = /* @__PURE__ */ new Matrix4();\n    _instanceIntersects = [];\n    _box3 = /* @__PURE__ */ new Box3();\n    _identity = /* @__PURE__ */ new Matrix4();\n    _mesh$1 = /* @__PURE__ */ new Mesh();\n    _sphere$3 = /* @__PURE__ */ new Sphere();\n    InstancedMesh = class extends Mesh {\n      constructor(geometry, material, count) {\n        super(geometry, material);\n        this.isInstancedMesh = true;\n        this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n        this.instanceColor = null;\n        this.morphTexture = null;\n        this.count = count;\n        this.boundingBox = null;\n        this.boundingSphere = null;\n        for (let i2 = 0; i2 < count; i2++) {\n          this.setMatrixAt(i2, _identity);\n        }\n      }\n      computeBoundingBox() {\n        const geometry = this.geometry;\n        const count = this.count;\n        if (this.boundingBox === null) {\n          this.boundingBox = new Box3();\n        }\n        if (geometry.boundingBox === null) {\n          geometry.computeBoundingBox();\n        }\n        this.boundingBox.makeEmpty();\n        for (let i2 = 0; i2 < count; i2++) {\n          this.getMatrixAt(i2, _instanceLocalMatrix);\n          _box3.copy(geometry.boundingBox).applyMatrix4(_instanceLocalMatrix);\n          this.boundingBox.union(_box3);\n        }\n      }\n      computeBoundingSphere() {\n        const geometry = this.geometry;\n        const count = this.count;\n        if (this.boundingSphere === null) {\n          this.boundingSphere = new Sphere();\n        }\n        if (geometry.boundingSphere === null) {\n          geometry.computeBoundingSphere();\n        }\n        this.boundingSphere.makeEmpty();\n        for (let i2 = 0; i2 < count; i2++) {\n          this.getMatrixAt(i2, _instanceLocalMatrix);\n          _sphere$3.copy(geometry.boundingSphere).applyMatrix4(_instanceLocalMatrix);\n          this.boundingSphere.union(_sphere$3);\n        }\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.instanceMatrix.copy(source.instanceMatrix);\n        if (source.morphTexture !== null) this.morphTexture = source.morphTexture.clone();\n        if (source.instanceColor !== null) this.instanceColor = source.instanceColor.clone();\n        this.count = source.count;\n        if (source.boundingBox !== null) this.boundingBox = source.boundingBox.clone();\n        if (source.boundingSphere !== null) this.boundingSphere = source.boundingSphere.clone();\n        return this;\n      }\n      getColorAt(index, color) {\n        color.fromArray(this.instanceColor.array, index * 3);\n      }\n      getMatrixAt(index, matrix2) {\n        matrix2.fromArray(this.instanceMatrix.array, index * 16);\n      }\n      getMorphAt(index, object) {\n        const objectInfluences = object.morphTargetInfluences;\n        const array = this.morphTexture.source.data.data;\n        const len = objectInfluences.length + 1;\n        const dataIndex = index * len + 1;\n        for (let i2 = 0; i2 < objectInfluences.length; i2++) {\n          objectInfluences[i2] = array[dataIndex + i2];\n        }\n      }\n      raycast(raycaster, intersects2) {\n        const matrixWorld = this.matrixWorld;\n        const raycastTimes = this.count;\n        _mesh$1.geometry = this.geometry;\n        _mesh$1.material = this.material;\n        if (_mesh$1.material === void 0) return;\n        if (this.boundingSphere === null) this.computeBoundingSphere();\n        _sphere$3.copy(this.boundingSphere);\n        _sphere$3.applyMatrix4(matrixWorld);\n        if (raycaster.ray.intersectsSphere(_sphere$3) === false) return;\n        for (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n          this.getMatrixAt(instanceId, _instanceLocalMatrix);\n          _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n          _mesh$1.matrixWorld = _instanceWorldMatrix;\n          _mesh$1.raycast(raycaster, _instanceIntersects);\n          for (let i2 = 0, l2 = _instanceIntersects.length; i2 < l2; i2++) {\n            const intersect2 = _instanceIntersects[i2];\n            intersect2.instanceId = instanceId;\n            intersect2.object = this;\n            intersects2.push(intersect2);\n          }\n          _instanceIntersects.length = 0;\n        }\n      }\n      setColorAt(index, color) {\n        if (this.instanceColor === null) {\n          this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3).fill(1), 3);\n        }\n        color.toArray(this.instanceColor.array, index * 3);\n      }\n      setMatrixAt(index, matrix2) {\n        matrix2.toArray(this.instanceMatrix.array, index * 16);\n      }\n      setMorphAt(index, object) {\n        const objectInfluences = object.morphTargetInfluences;\n        const len = objectInfluences.length + 1;\n        if (this.morphTexture === null) {\n          this.morphTexture = new DataTexture(new Float32Array(len * this.count), len, this.count, RedFormat, FloatType);\n        }\n        const array = this.morphTexture.source.data.data;\n        let morphInfluencesSum = 0;\n        for (let i2 = 0; i2 < objectInfluences.length; i2++) {\n          morphInfluencesSum += objectInfluences[i2];\n        }\n        const morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n        const dataIndex = len * index;\n        array[dataIndex] = morphBaseInfluence;\n        array.set(objectInfluences, dataIndex + 1);\n      }\n      updateMorphTargets() {\n      }\n      dispose() {\n        this.dispatchEvent({ type: \"dispose\" });\n        if (this.morphTexture !== null) {\n          this.morphTexture.dispose();\n          this.morphTexture = null;\n        }\n        return this;\n      }\n    };\n    MultiDrawRenderList = class {\n      constructor() {\n        this.index = 0;\n        this.pool = [];\n        this.list = [];\n      }\n      push(drawRange, z2, index) {\n        const pool = this.pool;\n        const list = this.list;\n        if (this.index >= pool.length) {\n          pool.push({\n            start: -1,\n            count: -1,\n            z: -1,\n            index: -1\n          });\n        }\n        const item = pool[this.index];\n        list.push(item);\n        this.index++;\n        item.start = drawRange.start;\n        item.count = drawRange.count;\n        item.z = z2;\n        item.index = index;\n      }\n      reset() {\n        this.list.length = 0;\n        this.index = 0;\n      }\n    };\n    _matrix$1 = /* @__PURE__ */ new Matrix4();\n    _invMatrixWorld = /* @__PURE__ */ new Matrix4();\n    _identityMatrix = /* @__PURE__ */ new Matrix4();\n    _whiteColor = /* @__PURE__ */ new Color(1, 1, 1);\n    _projScreenMatrix$2 = /* @__PURE__ */ new Matrix4();\n    _frustum = /* @__PURE__ */ new Frustum();\n    _box$1 = /* @__PURE__ */ new Box3();\n    _sphere$2 = /* @__PURE__ */ new Sphere();\n    _vector$5 = /* @__PURE__ */ new Vector3();\n    _forward = /* @__PURE__ */ new Vector3();\n    _temp = /* @__PURE__ */ new Vector3();\n    _renderList = /* @__PURE__ */ new MultiDrawRenderList();\n    _mesh = /* @__PURE__ */ new Mesh();\n    _batchIntersects = [];\n    BatchedMesh = class extends Mesh {\n      get maxInstanceCount() {\n        return this._maxInstanceCount;\n      }\n      constructor(maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material) {\n        super(new BufferGeometry(), material);\n        this.isBatchedMesh = true;\n        this.perObjectFrustumCulled = true;\n        this.sortObjects = true;\n        this.boundingBox = null;\n        this.boundingSphere = null;\n        this.customSort = null;\n        this._drawInfo = [];\n        this._availableInstanceIds = [];\n        this._drawRanges = [];\n        this._reservedRanges = [];\n        this._bounds = [];\n        this._maxInstanceCount = maxInstanceCount;\n        this._maxVertexCount = maxVertexCount;\n        this._maxIndexCount = maxIndexCount;\n        this._geometryInitialized = false;\n        this._geometryCount = 0;\n        this._multiDrawCounts = new Int32Array(maxInstanceCount);\n        this._multiDrawStarts = new Int32Array(maxInstanceCount);\n        this._multiDrawCount = 0;\n        this._multiDrawInstances = null;\n        this._visibilityChanged = true;\n        this._matricesTexture = null;\n        this._indirectTexture = null;\n        this._colorsTexture = null;\n        this._initMatricesTexture();\n        this._initIndirectTexture();\n      }\n      _initMatricesTexture() {\n        let size = Math.sqrt(this._maxInstanceCount * 4);\n        size = Math.ceil(size / 4) * 4;\n        size = Math.max(size, 4);\n        const matricesArray = new Float32Array(size * size * 4);\n        const matricesTexture = new DataTexture(matricesArray, size, size, RGBAFormat, FloatType);\n        this._matricesTexture = matricesTexture;\n      }\n      _initIndirectTexture() {\n        let size = Math.sqrt(this._maxInstanceCount);\n        size = Math.ceil(size);\n        const indirectArray = new Uint32Array(size * size);\n        const indirectTexture = new DataTexture(indirectArray, size, size, RedIntegerFormat, UnsignedIntType);\n        this._indirectTexture = indirectTexture;\n      }\n      _initColorsTexture() {\n        let size = Math.sqrt(this._maxInstanceCount);\n        size = Math.ceil(size);\n        const colorsArray = new Float32Array(size * size * 4).fill(1);\n        const colorsTexture = new DataTexture(colorsArray, size, size, RGBAFormat, FloatType);\n        colorsTexture.colorSpace = ColorManagement.workingColorSpace;\n        this._colorsTexture = colorsTexture;\n      }\n      _initializeGeometry(reference) {\n        const geometry = this.geometry;\n        const maxVertexCount = this._maxVertexCount;\n        const maxIndexCount = this._maxIndexCount;\n        if (this._geometryInitialized === false) {\n          for (const attributeName in reference.attributes) {\n            const srcAttribute = reference.getAttribute(attributeName);\n            const { array, itemSize, normalized } = srcAttribute;\n            const dstArray = new array.constructor(maxVertexCount * itemSize);\n            const dstAttribute = new BufferAttribute(dstArray, itemSize, normalized);\n            geometry.setAttribute(attributeName, dstAttribute);\n          }\n          if (reference.getIndex() !== null) {\n            const indexArray = maxVertexCount > 65535 ? new Uint32Array(maxIndexCount) : new Uint16Array(maxIndexCount);\n            geometry.setIndex(new BufferAttribute(indexArray, 1));\n          }\n          this._geometryInitialized = true;\n        }\n      }\n      // Make sure the geometry is compatible with the existing combined geometry attributes\n      _validateGeometry(geometry) {\n        const batchGeometry = this.geometry;\n        if (Boolean(geometry.getIndex()) !== Boolean(batchGeometry.getIndex())) {\n          throw new Error('BatchedMesh: All geometries must consistently have \"index\".');\n        }\n        for (const attributeName in batchGeometry.attributes) {\n          if (!geometry.hasAttribute(attributeName)) {\n            throw new Error(`BatchedMesh: Added geometry missing \"${attributeName}\". All geometries must have consistent attributes.`);\n          }\n          const srcAttribute = geometry.getAttribute(attributeName);\n          const dstAttribute = batchGeometry.getAttribute(attributeName);\n          if (srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized) {\n            throw new Error(\"BatchedMesh: All attributes must have a consistent itemSize and normalized value.\");\n          }\n        }\n      }\n      setCustomSort(func) {\n        this.customSort = func;\n        return this;\n      }\n      computeBoundingBox() {\n        if (this.boundingBox === null) {\n          this.boundingBox = new Box3();\n        }\n        const boundingBox = this.boundingBox;\n        const drawInfo = this._drawInfo;\n        boundingBox.makeEmpty();\n        for (let i2 = 0, l2 = drawInfo.length; i2 < l2; i2++) {\n          if (drawInfo[i2].active === false) continue;\n          const geometryId = drawInfo[i2].geometryIndex;\n          this.getMatrixAt(i2, _matrix$1);\n          this.getBoundingBoxAt(geometryId, _box$1).applyMatrix4(_matrix$1);\n          boundingBox.union(_box$1);\n        }\n      }\n      computeBoundingSphere() {\n        if (this.boundingSphere === null) {\n          this.boundingSphere = new Sphere();\n        }\n        const boundingSphere = this.boundingSphere;\n        const drawInfo = this._drawInfo;\n        boundingSphere.makeEmpty();\n        for (let i2 = 0, l2 = drawInfo.length; i2 < l2; i2++) {\n          if (drawInfo[i2].active === false) continue;\n          const geometryId = drawInfo[i2].geometryIndex;\n          this.getMatrixAt(i2, _matrix$1);\n          this.getBoundingSphereAt(geometryId, _sphere$2).applyMatrix4(_matrix$1);\n          boundingSphere.union(_sphere$2);\n        }\n      }\n      addInstance(geometryId) {\n        const atCapacity = this._drawInfo.length >= this.maxInstanceCount;\n        if (atCapacity && this._availableInstanceIds.length === 0) {\n          throw new Error(\"BatchedMesh: Maximum item count reached.\");\n        }\n        const instanceDrawInfo = {\n          visible: true,\n          active: true,\n          geometryIndex: geometryId\n        };\n        let drawId = null;\n        if (this._availableInstanceIds.length > 0) {\n          drawId = this._availableInstanceIds.pop();\n          this._drawInfo[drawId] = instanceDrawInfo;\n        } else {\n          drawId = this._drawInfo.length;\n          this._drawInfo.push(instanceDrawInfo);\n        }\n        const matricesTexture = this._matricesTexture;\n        const matricesArray = matricesTexture.image.data;\n        _identityMatrix.toArray(matricesArray, drawId * 16);\n        matricesTexture.needsUpdate = true;\n        const colorsTexture = this._colorsTexture;\n        if (colorsTexture) {\n          _whiteColor.toArray(colorsTexture.image.data, drawId * 4);\n          colorsTexture.needsUpdate = true;\n        }\n        return drawId;\n      }\n      addGeometry(geometry, vertexCount = -1, indexCount = -1) {\n        this._initializeGeometry(geometry);\n        this._validateGeometry(geometry);\n        if (this._drawInfo.length >= this._maxInstanceCount) {\n          throw new Error(\"BatchedMesh: Maximum item count reached.\");\n        }\n        const reservedRange = {\n          vertexStart: -1,\n          vertexCount: -1,\n          indexStart: -1,\n          indexCount: -1\n        };\n        let lastRange = null;\n        const reservedRanges = this._reservedRanges;\n        const drawRanges = this._drawRanges;\n        const bounds = this._bounds;\n        if (this._geometryCount !== 0) {\n          lastRange = reservedRanges[reservedRanges.length - 1];\n        }\n        if (vertexCount === -1) {\n          reservedRange.vertexCount = geometry.getAttribute(\"position\").count;\n        } else {\n          reservedRange.vertexCount = vertexCount;\n        }\n        if (lastRange === null) {\n          reservedRange.vertexStart = 0;\n        } else {\n          reservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n        }\n        const index = geometry.getIndex();\n        const hasIndex = index !== null;\n        if (hasIndex) {\n          if (indexCount === -1) {\n            reservedRange.indexCount = index.count;\n          } else {\n            reservedRange.indexCount = indexCount;\n          }\n          if (lastRange === null) {\n            reservedRange.indexStart = 0;\n          } else {\n            reservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n          }\n        }\n        if (reservedRange.indexStart !== -1 && reservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount || reservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount) {\n          throw new Error(\"BatchedMesh: Reserved space request exceeds the maximum buffer size.\");\n        }\n        const geometryId = this._geometryCount;\n        this._geometryCount++;\n        reservedRanges.push(reservedRange);\n        drawRanges.push({\n          start: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n          count: -1\n        });\n        bounds.push({\n          boxInitialized: false,\n          box: new Box3(),\n          sphereInitialized: false,\n          sphere: new Sphere()\n        });\n        this.setGeometryAt(geometryId, geometry);\n        return geometryId;\n      }\n      setGeometryAt(geometryId, geometry) {\n        if (geometryId >= this._geometryCount) {\n          throw new Error(\"BatchedMesh: Maximum geometry count reached.\");\n        }\n        this._validateGeometry(geometry);\n        const batchGeometry = this.geometry;\n        const hasIndex = batchGeometry.getIndex() !== null;\n        const dstIndex = batchGeometry.getIndex();\n        const srcIndex = geometry.getIndex();\n        const reservedRange = this._reservedRanges[geometryId];\n        if (hasIndex && srcIndex.count > reservedRange.indexCount || geometry.attributes.position.count > reservedRange.vertexCount) {\n          throw new Error(\"BatchedMesh: Reserved space not large enough for provided geometry.\");\n        }\n        const vertexStart = reservedRange.vertexStart;\n        const vertexCount = reservedRange.vertexCount;\n        for (const attributeName in batchGeometry.attributes) {\n          const srcAttribute = geometry.getAttribute(attributeName);\n          const dstAttribute = batchGeometry.getAttribute(attributeName);\n          copyAttributeData(srcAttribute, dstAttribute, vertexStart);\n          const itemSize = srcAttribute.itemSize;\n          for (let i2 = srcAttribute.count, l2 = vertexCount; i2 < l2; i2++) {\n            const index = vertexStart + i2;\n            for (let c = 0; c < itemSize; c++) {\n              dstAttribute.setComponent(index, c, 0);\n            }\n          }\n          dstAttribute.needsUpdate = true;\n          dstAttribute.addUpdateRange(vertexStart * itemSize, vertexCount * itemSize);\n        }\n        if (hasIndex) {\n          const indexStart = reservedRange.indexStart;\n          for (let i2 = 0; i2 < srcIndex.count; i2++) {\n            dstIndex.setX(indexStart + i2, vertexStart + srcIndex.getX(i2));\n          }\n          for (let i2 = srcIndex.count, l2 = reservedRange.indexCount; i2 < l2; i2++) {\n            dstIndex.setX(indexStart + i2, vertexStart);\n          }\n          dstIndex.needsUpdate = true;\n          dstIndex.addUpdateRange(indexStart, reservedRange.indexCount);\n        }\n        const bound = this._bounds[geometryId];\n        if (geometry.boundingBox !== null) {\n          bound.box.copy(geometry.boundingBox);\n          bound.boxInitialized = true;\n        } else {\n          bound.boxInitialized = false;\n        }\n        if (geometry.boundingSphere !== null) {\n          bound.sphere.copy(geometry.boundingSphere);\n          bound.sphereInitialized = true;\n        } else {\n          bound.sphereInitialized = false;\n        }\n        const drawRange = this._drawRanges[geometryId];\n        const posAttr = geometry.getAttribute(\"position\");\n        drawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n        this._visibilityChanged = true;\n        return geometryId;\n      }\n      /*\n      \tdeleteGeometry( geometryId ) {\n      \n      \t\t// TODO: delete geometry and associated instances\n      \n      \t}\n      \t*/\n      deleteInstance(instanceId) {\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return this;\n        }\n        drawInfo[instanceId].active = false;\n        this._availableInstanceIds.push(instanceId);\n        this._visibilityChanged = true;\n        return this;\n      }\n      // get bounding box and compute it if it doesn't exist\n      getBoundingBoxAt(geometryId, target2) {\n        if (geometryId >= this._geometryCount) {\n          return null;\n        }\n        const bound = this._bounds[geometryId];\n        const box = bound.box;\n        const geometry = this.geometry;\n        if (bound.boxInitialized === false) {\n          box.makeEmpty();\n          const index = geometry.index;\n          const position = geometry.attributes.position;\n          const drawRange = this._drawRanges[geometryId];\n          for (let i2 = drawRange.start, l2 = drawRange.start + drawRange.count; i2 < l2; i2++) {\n            let iv = i2;\n            if (index) {\n              iv = index.getX(iv);\n            }\n            box.expandByPoint(_vector$5.fromBufferAttribute(position, iv));\n          }\n          bound.boxInitialized = true;\n        }\n        target2.copy(box);\n        return target2;\n      }\n      // get bounding sphere and compute it if it doesn't exist\n      getBoundingSphereAt(geometryId, target2) {\n        if (geometryId >= this._geometryCount) {\n          return null;\n        }\n        const bound = this._bounds[geometryId];\n        const sphere = bound.sphere;\n        const geometry = this.geometry;\n        if (bound.sphereInitialized === false) {\n          sphere.makeEmpty();\n          this.getBoundingBoxAt(geometryId, _box$1);\n          _box$1.getCenter(sphere.center);\n          const index = geometry.index;\n          const position = geometry.attributes.position;\n          const drawRange = this._drawRanges[geometryId];\n          let maxRadiusSq = 0;\n          for (let i2 = drawRange.start, l2 = drawRange.start + drawRange.count; i2 < l2; i2++) {\n            let iv = i2;\n            if (index) {\n              iv = index.getX(iv);\n            }\n            _vector$5.fromBufferAttribute(position, iv);\n            maxRadiusSq = Math.max(maxRadiusSq, sphere.center.distanceToSquared(_vector$5));\n          }\n          sphere.radius = Math.sqrt(maxRadiusSq);\n          bound.sphereInitialized = true;\n        }\n        target2.copy(sphere);\n        return target2;\n      }\n      setMatrixAt(instanceId, matrix2) {\n        const drawInfo = this._drawInfo;\n        const matricesTexture = this._matricesTexture;\n        const matricesArray = this._matricesTexture.image.data;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return this;\n        }\n        matrix2.toArray(matricesArray, instanceId * 16);\n        matricesTexture.needsUpdate = true;\n        return this;\n      }\n      getMatrixAt(instanceId, matrix2) {\n        const drawInfo = this._drawInfo;\n        const matricesArray = this._matricesTexture.image.data;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return null;\n        }\n        return matrix2.fromArray(matricesArray, instanceId * 16);\n      }\n      setColorAt(instanceId, color) {\n        if (this._colorsTexture === null) {\n          this._initColorsTexture();\n        }\n        const colorsTexture = this._colorsTexture;\n        const colorsArray = this._colorsTexture.image.data;\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return this;\n        }\n        color.toArray(colorsArray, instanceId * 4);\n        colorsTexture.needsUpdate = true;\n        return this;\n      }\n      getColorAt(instanceId, color) {\n        const colorsArray = this._colorsTexture.image.data;\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return null;\n        }\n        return color.fromArray(colorsArray, instanceId * 4);\n      }\n      setVisibleAt(instanceId, value) {\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false || drawInfo[instanceId].visible === value) {\n          return this;\n        }\n        drawInfo[instanceId].visible = value;\n        this._visibilityChanged = true;\n        return this;\n      }\n      getVisibleAt(instanceId) {\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return false;\n        }\n        return drawInfo[instanceId].visible;\n      }\n      setGeometryIdAt(instanceId, geometryId) {\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return null;\n        }\n        if (geometryId < 0 || geometryId >= this._geometryCount) {\n          return null;\n        }\n        drawInfo[instanceId].geometryIndex = geometryId;\n        return this;\n      }\n      getGeometryIdAt(instanceId) {\n        const drawInfo = this._drawInfo;\n        if (instanceId >= drawInfo.length || drawInfo[instanceId].active === false) {\n          return -1;\n        }\n        return drawInfo[instanceId].geometryIndex;\n      }\n      getGeometryRangeAt(geometryId, target2 = {}) {\n        if (geometryId < 0 || geometryId >= this._geometryCount) {\n          return null;\n        }\n        const drawRange = this._drawRanges[geometryId];\n        target2.start = drawRange.start;\n        target2.count = drawRange.count;\n        return target2;\n      }\n      raycast(raycaster, intersects2) {\n        const drawInfo = this._drawInfo;\n        const drawRanges = this._drawRanges;\n        const matrixWorld = this.matrixWorld;\n        const batchGeometry = this.geometry;\n        _mesh.material = this.material;\n        _mesh.geometry.index = batchGeometry.index;\n        _mesh.geometry.attributes = batchGeometry.attributes;\n        if (_mesh.geometry.boundingBox === null) {\n          _mesh.geometry.boundingBox = new Box3();\n        }\n        if (_mesh.geometry.boundingSphere === null) {\n          _mesh.geometry.boundingSphere = new Sphere();\n        }\n        for (let i2 = 0, l2 = drawInfo.length; i2 < l2; i2++) {\n          if (!drawInfo[i2].visible || !drawInfo[i2].active) {\n            continue;\n          }\n          const geometryId = drawInfo[i2].geometryIndex;\n          const drawRange = drawRanges[geometryId];\n          _mesh.geometry.setDrawRange(drawRange.start, drawRange.count);\n          this.getMatrixAt(i2, _mesh.matrixWorld).premultiply(matrixWorld);\n          this.getBoundingBoxAt(geometryId, _mesh.geometry.boundingBox);\n          this.getBoundingSphereAt(geometryId, _mesh.geometry.boundingSphere);\n          _mesh.raycast(raycaster, _batchIntersects);\n          for (let j2 = 0, l22 = _batchIntersects.length; j2 < l22; j2++) {\n            const intersect2 = _batchIntersects[j2];\n            intersect2.object = this;\n            intersect2.batchId = i2;\n            intersects2.push(intersect2);\n          }\n          _batchIntersects.length = 0;\n        }\n        _mesh.material = null;\n        _mesh.geometry.index = null;\n        _mesh.geometry.attributes = {};\n        _mesh.geometry.setDrawRange(0, Infinity);\n      }\n      copy(source) {\n        super.copy(source);\n        this.geometry = source.geometry.clone();\n        this.perObjectFrustumCulled = source.perObjectFrustumCulled;\n        this.sortObjects = source.sortObjects;\n        this.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n        this.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n        this._drawRanges = source._drawRanges.map((range) => __spreadValues({}, range));\n        this._reservedRanges = source._reservedRanges.map((range) => __spreadValues({}, range));\n        this._drawInfo = source._drawInfo.map((inf) => __spreadValues({}, inf));\n        this._bounds = source._bounds.map((bound) => ({\n          boxInitialized: bound.boxInitialized,\n          box: bound.box.clone(),\n          sphereInitialized: bound.sphereInitialized,\n          sphere: bound.sphere.clone()\n        }));\n        this._maxInstanceCount = source._maxInstanceCount;\n        this._maxVertexCount = source._maxVertexCount;\n        this._maxIndexCount = source._maxIndexCount;\n        this._geometryInitialized = source._geometryInitialized;\n        this._geometryCount = source._geometryCount;\n        this._multiDrawCounts = source._multiDrawCounts.slice();\n        this._multiDrawStarts = source._multiDrawStarts.slice();\n        this._matricesTexture = source._matricesTexture.clone();\n        this._matricesTexture.image.data = this._matricesTexture.image.data.slice();\n        if (this._colorsTexture !== null) {\n          this._colorsTexture = source._colorsTexture.clone();\n          this._colorsTexture.image.data = this._colorsTexture.image.data.slice();\n        }\n        return this;\n      }\n      dispose() {\n        this.geometry.dispose();\n        this._matricesTexture.dispose();\n        this._matricesTexture = null;\n        this._indirectTexture.dispose();\n        this._indirectTexture = null;\n        if (this._colorsTexture !== null) {\n          this._colorsTexture.dispose();\n          this._colorsTexture = null;\n        }\n        return this;\n      }\n      onBeforeRender(renderer, scene, camera, geometry, material) {\n        if (!this._visibilityChanged && !this.perObjectFrustumCulled && !this.sortObjects) {\n          return;\n        }\n        const index = geometry.getIndex();\n        const bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n        const drawInfo = this._drawInfo;\n        const multiDrawStarts = this._multiDrawStarts;\n        const multiDrawCounts = this._multiDrawCounts;\n        const drawRanges = this._drawRanges;\n        const perObjectFrustumCulled = this.perObjectFrustumCulled;\n        const indirectTexture = this._indirectTexture;\n        const indirectArray = indirectTexture.image.data;\n        if (perObjectFrustumCulled) {\n          _projScreenMatrix$2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse).multiply(this.matrixWorld);\n          _frustum.setFromProjectionMatrix(\n            _projScreenMatrix$2,\n            renderer.coordinateSystem\n          );\n        }\n        let count = 0;\n        if (this.sortObjects) {\n          _invMatrixWorld.copy(this.matrixWorld).invert();\n          _vector$5.setFromMatrixPosition(camera.matrixWorld).applyMatrix4(_invMatrixWorld);\n          _forward.set(0, 0, -1).transformDirection(camera.matrixWorld).transformDirection(_invMatrixWorld);\n          for (let i2 = 0, l2 = drawInfo.length; i2 < l2; i2++) {\n            if (drawInfo[i2].visible && drawInfo[i2].active) {\n              const geometryId = drawInfo[i2].geometryIndex;\n              this.getMatrixAt(i2, _matrix$1);\n              this.getBoundingSphereAt(geometryId, _sphere$2).applyMatrix4(_matrix$1);\n              let culled = false;\n              if (perObjectFrustumCulled) {\n                culled = !_frustum.intersectsSphere(_sphere$2);\n              }\n              if (!culled) {\n                const z2 = _temp.subVectors(_sphere$2.center, _vector$5).dot(_forward);\n                _renderList.push(drawRanges[geometryId], z2, i2);\n              }\n            }\n          }\n          const list = _renderList.list;\n          const customSort = this.customSort;\n          if (customSort === null) {\n            list.sort(material.transparent ? sortTransparent : sortOpaque);\n          } else {\n            customSort.call(this, list, camera);\n          }\n          for (let i2 = 0, l2 = list.length; i2 < l2; i2++) {\n            const item = list[i2];\n            multiDrawStarts[count] = item.start * bytesPerElement;\n            multiDrawCounts[count] = item.count;\n            indirectArray[count] = item.index;\n            count++;\n          }\n          _renderList.reset();\n        } else {\n          for (let i2 = 0, l2 = drawInfo.length; i2 < l2; i2++) {\n            if (drawInfo[i2].visible && drawInfo[i2].active) {\n              const geometryId = drawInfo[i2].geometryIndex;\n              let culled = false;\n              if (perObjectFrustumCulled) {\n                this.getMatrixAt(i2, _matrix$1);\n                this.getBoundingSphereAt(geometryId, _sphere$2).applyMatrix4(_matrix$1);\n                culled = !_frustum.intersectsSphere(_sphere$2);\n              }\n              if (!culled) {\n                const range = drawRanges[geometryId];\n                multiDrawStarts[count] = range.start * bytesPerElement;\n                multiDrawCounts[count] = range.count;\n                indirectArray[count] = i2;\n                count++;\n              }\n            }\n          }\n        }\n        indirectTexture.needsUpdate = true;\n        this._multiDrawCount = count;\n        this._visibilityChanged = false;\n      }\n      onBeforeShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial) {\n        this.onBeforeRender(renderer, null, shadowCamera, geometry, depthMaterial);\n      }\n    };\n    LineBasicMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isLineBasicMaterial = true;\n        this.type = \"LineBasicMaterial\";\n        this.color = new Color(16777215);\n        this.map = null;\n        this.linewidth = 1;\n        this.linecap = \"round\";\n        this.linejoin = \"round\";\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.map = source.map;\n        this.linewidth = source.linewidth;\n        this.linecap = source.linecap;\n        this.linejoin = source.linejoin;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    _vStart = /* @__PURE__ */ new Vector3();\n    _vEnd = /* @__PURE__ */ new Vector3();\n    _inverseMatrix$1 = /* @__PURE__ */ new Matrix4();\n    _ray$1 = /* @__PURE__ */ new Ray();\n    _sphere$1 = /* @__PURE__ */ new Sphere();\n    _intersectPointOnRay = /* @__PURE__ */ new Vector3();\n    _intersectPointOnSegment = /* @__PURE__ */ new Vector3();\n    Line = class extends Object3D {\n      constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n        super();\n        this.isLine = true;\n        this.type = \"Line\";\n        this.geometry = geometry;\n        this.material = material;\n        this.updateMorphTargets();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.material = Array.isArray(source.material) ? source.material.slice() : source.material;\n        this.geometry = source.geometry;\n        return this;\n      }\n      computeLineDistances() {\n        const geometry = this.geometry;\n        if (geometry.index === null) {\n          const positionAttribute = geometry.attributes.position;\n          const lineDistances = [0];\n          for (let i2 = 1, l2 = positionAttribute.count; i2 < l2; i2++) {\n            _vStart.fromBufferAttribute(positionAttribute, i2 - 1);\n            _vEnd.fromBufferAttribute(positionAttribute, i2);\n            lineDistances[i2] = lineDistances[i2 - 1];\n            lineDistances[i2] += _vStart.distanceTo(_vEnd);\n          }\n          geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n        } else {\n          console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n        }\n        return this;\n      }\n      raycast(raycaster, intersects2) {\n        const geometry = this.geometry;\n        const matrixWorld = this.matrixWorld;\n        const threshold = raycaster.params.Line.threshold;\n        const drawRange = geometry.drawRange;\n        if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n        _sphere$1.copy(geometry.boundingSphere);\n        _sphere$1.applyMatrix4(matrixWorld);\n        _sphere$1.radius += threshold;\n        if (raycaster.ray.intersectsSphere(_sphere$1) === false) return;\n        _inverseMatrix$1.copy(matrixWorld).invert();\n        _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1);\n        const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n        const localThresholdSq = localThreshold * localThreshold;\n        const step = this.isLineSegments ? 2 : 1;\n        const index = geometry.index;\n        const attributes = geometry.attributes;\n        const positionAttribute = attributes.position;\n        if (index !== null) {\n          const start = Math.max(0, drawRange.start);\n          const end = Math.min(index.count, drawRange.start + drawRange.count);\n          for (let i2 = start, l2 = end - 1; i2 < l2; i2 += step) {\n            const a = index.getX(i2);\n            const b = index.getX(i2 + 1);\n            const intersect2 = checkIntersection(this, raycaster, _ray$1, localThresholdSq, a, b);\n            if (intersect2) {\n              intersects2.push(intersect2);\n            }\n          }\n          if (this.isLineLoop) {\n            const a = index.getX(end - 1);\n            const b = index.getX(start);\n            const intersect2 = checkIntersection(this, raycaster, _ray$1, localThresholdSq, a, b);\n            if (intersect2) {\n              intersects2.push(intersect2);\n            }\n          }\n        } else {\n          const start = Math.max(0, drawRange.start);\n          const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n          for (let i2 = start, l2 = end - 1; i2 < l2; i2 += step) {\n            const intersect2 = checkIntersection(this, raycaster, _ray$1, localThresholdSq, i2, i2 + 1);\n            if (intersect2) {\n              intersects2.push(intersect2);\n            }\n          }\n          if (this.isLineLoop) {\n            const intersect2 = checkIntersection(this, raycaster, _ray$1, localThresholdSq, end - 1, start);\n            if (intersect2) {\n              intersects2.push(intersect2);\n            }\n          }\n        }\n      }\n      updateMorphTargets() {\n        const geometry = this.geometry;\n        const morphAttributes = geometry.morphAttributes;\n        const keys = Object.keys(morphAttributes);\n        if (keys.length > 0) {\n          const morphAttribute = morphAttributes[keys[0]];\n          if (morphAttribute !== void 0) {\n            this.morphTargetInfluences = [];\n            this.morphTargetDictionary = {};\n            for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n              const name = morphAttribute[m].name || String(m);\n              this.morphTargetInfluences.push(0);\n              this.morphTargetDictionary[name] = m;\n            }\n          }\n        }\n      }\n    };\n    _start = /* @__PURE__ */ new Vector3();\n    _end = /* @__PURE__ */ new Vector3();\n    LineSegments = class extends Line {\n      constructor(geometry, material) {\n        super(geometry, material);\n        this.isLineSegments = true;\n        this.type = \"LineSegments\";\n      }\n      computeLineDistances() {\n        const geometry = this.geometry;\n        if (geometry.index === null) {\n          const positionAttribute = geometry.attributes.position;\n          const lineDistances = [];\n          for (let i2 = 0, l2 = positionAttribute.count; i2 < l2; i2 += 2) {\n            _start.fromBufferAttribute(positionAttribute, i2);\n            _end.fromBufferAttribute(positionAttribute, i2 + 1);\n            lineDistances[i2] = i2 === 0 ? 0 : lineDistances[i2 - 1];\n            lineDistances[i2 + 1] = lineDistances[i2] + _start.distanceTo(_end);\n          }\n          geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n        } else {\n          console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n        }\n        return this;\n      }\n    };\n    LineLoop = class extends Line {\n      constructor(geometry, material) {\n        super(geometry, material);\n        this.isLineLoop = true;\n        this.type = \"LineLoop\";\n      }\n    };\n    PointsMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isPointsMaterial = true;\n        this.type = \"PointsMaterial\";\n        this.color = new Color(16777215);\n        this.map = null;\n        this.alphaMap = null;\n        this.size = 1;\n        this.sizeAttenuation = true;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.map = source.map;\n        this.alphaMap = source.alphaMap;\n        this.size = source.size;\n        this.sizeAttenuation = source.sizeAttenuation;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    _inverseMatrix = /* @__PURE__ */ new Matrix4();\n    _ray = /* @__PURE__ */ new Ray();\n    _sphere = /* @__PURE__ */ new Sphere();\n    _position$2 = /* @__PURE__ */ new Vector3();\n    Points = class extends Object3D {\n      constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n        super();\n        this.isPoints = true;\n        this.type = \"Points\";\n        this.geometry = geometry;\n        this.material = material;\n        this.updateMorphTargets();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.material = Array.isArray(source.material) ? source.material.slice() : source.material;\n        this.geometry = source.geometry;\n        return this;\n      }\n      raycast(raycaster, intersects2) {\n        const geometry = this.geometry;\n        const matrixWorld = this.matrixWorld;\n        const threshold = raycaster.params.Points.threshold;\n        const drawRange = geometry.drawRange;\n        if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n        _sphere.copy(geometry.boundingSphere);\n        _sphere.applyMatrix4(matrixWorld);\n        _sphere.radius += threshold;\n        if (raycaster.ray.intersectsSphere(_sphere) === false) return;\n        _inverseMatrix.copy(matrixWorld).invert();\n        _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n        const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n        const localThresholdSq = localThreshold * localThreshold;\n        const index = geometry.index;\n        const attributes = geometry.attributes;\n        const positionAttribute = attributes.position;\n        if (index !== null) {\n          const start = Math.max(0, drawRange.start);\n          const end = Math.min(index.count, drawRange.start + drawRange.count);\n          for (let i2 = start, il = end; i2 < il; i2++) {\n            const a = index.getX(i2);\n            _position$2.fromBufferAttribute(positionAttribute, a);\n            testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n          }\n        } else {\n          const start = Math.max(0, drawRange.start);\n          const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n          for (let i2 = start, l2 = end; i2 < l2; i2++) {\n            _position$2.fromBufferAttribute(positionAttribute, i2);\n            testPoint(_position$2, i2, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n          }\n        }\n      }\n      updateMorphTargets() {\n        const geometry = this.geometry;\n        const morphAttributes = geometry.morphAttributes;\n        const keys = Object.keys(morphAttributes);\n        if (keys.length > 0) {\n          const morphAttribute = morphAttributes[keys[0]];\n          if (morphAttribute !== void 0) {\n            this.morphTargetInfluences = [];\n            this.morphTargetDictionary = {};\n            for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n              const name = morphAttribute[m].name || String(m);\n              this.morphTargetInfluences.push(0);\n              this.morphTargetDictionary[name] = m;\n            }\n          }\n        }\n      }\n    };\n    VideoTexture = class extends Texture {\n      constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n        super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n        this.isVideoTexture = true;\n        this.minFilter = minFilter !== void 0 ? minFilter : LinearFilter;\n        this.magFilter = magFilter !== void 0 ? magFilter : LinearFilter;\n        this.generateMipmaps = false;\n        const scope = this;\n        function updateVideo() {\n          scope.needsUpdate = true;\n          video.requestVideoFrameCallback(updateVideo);\n        }\n        if (\"requestVideoFrameCallback\" in video) {\n          video.requestVideoFrameCallback(updateVideo);\n        }\n      }\n      clone() {\n        return new this.constructor(this.image).copy(this);\n      }\n      update() {\n        const video = this.image;\n        const hasVideoFrameCallback = \"requestVideoFrameCallback\" in video;\n        if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) {\n          this.needsUpdate = true;\n        }\n      }\n    };\n    FramebufferTexture = class extends Texture {\n      constructor(width, height) {\n        super({ width, height });\n        this.isFramebufferTexture = true;\n        this.magFilter = NearestFilter;\n        this.minFilter = NearestFilter;\n        this.generateMipmaps = false;\n        this.needsUpdate = true;\n      }\n    };\n    CompressedTexture = class extends Texture {\n      constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace) {\n        super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace);\n        this.isCompressedTexture = true;\n        this.image = { width, height };\n        this.mipmaps = mipmaps;\n        this.flipY = false;\n        this.generateMipmaps = false;\n      }\n    };\n    CompressedArrayTexture = class extends CompressedTexture {\n      constructor(mipmaps, width, height, depth, format, type) {\n        super(mipmaps, width, height, format, type);\n        this.isCompressedArrayTexture = true;\n        this.image.depth = depth;\n        this.wrapR = ClampToEdgeWrapping;\n        this.layerUpdates = /* @__PURE__ */ new Set();\n      }\n      addLayerUpdate(layerIndex) {\n        this.layerUpdates.add(layerIndex);\n      }\n      clearLayerUpdates() {\n        this.layerUpdates.clear();\n      }\n    };\n    CompressedCubeTexture = class extends CompressedTexture {\n      constructor(images, format, type) {\n        super(void 0, images[0].width, images[0].height, format, type, CubeReflectionMapping);\n        this.isCompressedCubeTexture = true;\n        this.isCubeTexture = true;\n        this.image = images;\n      }\n    };\n    CanvasTexture = class extends Texture {\n      constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n        super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n        this.isCanvasTexture = true;\n        this.needsUpdate = true;\n      }\n    };\n    Curve = class {\n      constructor() {\n        this.type = \"Curve\";\n        this.arcLengthDivisions = 200;\n      }\n      // Virtual base class method to overwrite and implement in subclasses\n      //\t- t [0 .. 1]\n      getPoint() {\n        console.warn(\"THREE.Curve: .getPoint() not implemented.\");\n        return null;\n      }\n      // Get point at relative position in curve according to arc length\n      // - u [0 .. 1]\n      getPointAt(u3, optionalTarget) {\n        const t2 = this.getUtoTmapping(u3);\n        return this.getPoint(t2, optionalTarget);\n      }\n      // Get sequence of points using getPoint( t )\n      getPoints(divisions = 5) {\n        const points = [];\n        for (let d = 0; d <= divisions; d++) {\n          points.push(this.getPoint(d / divisions));\n        }\n        return points;\n      }\n      // Get sequence of points using getPointAt( u )\n      getSpacedPoints(divisions = 5) {\n        const points = [];\n        for (let d = 0; d <= divisions; d++) {\n          points.push(this.getPointAt(d / divisions));\n        }\n        return points;\n      }\n      // Get total curve arc length\n      getLength() {\n        const lengths = this.getLengths();\n        return lengths[lengths.length - 1];\n      }\n      // Get list of cumulative segment lengths\n      getLengths(divisions = this.arcLengthDivisions) {\n        if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n          return this.cacheArcLengths;\n        }\n        this.needsUpdate = false;\n        const cache = [];\n        let current, last = this.getPoint(0);\n        let sum = 0;\n        cache.push(0);\n        for (let p3 = 1; p3 <= divisions; p3++) {\n          current = this.getPoint(p3 / divisions);\n          sum += current.distanceTo(last);\n          cache.push(sum);\n          last = current;\n        }\n        this.cacheArcLengths = cache;\n        return cache;\n      }\n      updateArcLengths() {\n        this.needsUpdate = true;\n        this.getLengths();\n      }\n      // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n      getUtoTmapping(u3, distance) {\n        const arcLengths = this.getLengths();\n        let i2 = 0;\n        const il = arcLengths.length;\n        let targetArcLength;\n        if (distance) {\n          targetArcLength = distance;\n        } else {\n          targetArcLength = u3 * arcLengths[il - 1];\n        }\n        let low = 0, high = il - 1, comparison;\n        while (low <= high) {\n          i2 = Math.floor(low + (high - low) / 2);\n          comparison = arcLengths[i2] - targetArcLength;\n          if (comparison < 0) {\n            low = i2 + 1;\n          } else if (comparison > 0) {\n            high = i2 - 1;\n          } else {\n            high = i2;\n            break;\n          }\n        }\n        i2 = high;\n        if (arcLengths[i2] === targetArcLength) {\n          return i2 / (il - 1);\n        }\n        const lengthBefore = arcLengths[i2];\n        const lengthAfter = arcLengths[i2 + 1];\n        const segmentLength = lengthAfter - lengthBefore;\n        const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n        const t2 = (i2 + segmentFraction) / (il - 1);\n        return t2;\n      }\n      // Returns a unit vector tangent at t\n      // In case any sub curve does not implement its tangent derivation,\n      // 2 points a small delta apart will be used to find its gradient\n      // which seems to give a reasonable approximation\n      getTangent(t2, optionalTarget) {\n        const delta = 1e-4;\n        let t1 = t2 - delta;\n        let t22 = t2 + delta;\n        if (t1 < 0) t1 = 0;\n        if (t22 > 1) t22 = 1;\n        const pt1 = this.getPoint(t1);\n        const pt2 = this.getPoint(t22);\n        const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n        tangent.copy(pt2).sub(pt1).normalize();\n        return tangent;\n      }\n      getTangentAt(u3, optionalTarget) {\n        const t2 = this.getUtoTmapping(u3);\n        return this.getTangent(t2, optionalTarget);\n      }\n      computeFrenetFrames(segments, closed) {\n        const normal = new Vector3();\n        const tangents = [];\n        const normals = [];\n        const binormals = [];\n        const vec = new Vector3();\n        const mat = new Matrix4();\n        for (let i2 = 0; i2 <= segments; i2++) {\n          const u3 = i2 / segments;\n          tangents[i2] = this.getTangentAt(u3, new Vector3());\n        }\n        normals[0] = new Vector3();\n        binormals[0] = new Vector3();\n        let min = Number.MAX_VALUE;\n        const tx = Math.abs(tangents[0].x);\n        const ty = Math.abs(tangents[0].y);\n        const tz = Math.abs(tangents[0].z);\n        if (tx <= min) {\n          min = tx;\n          normal.set(1, 0, 0);\n        }\n        if (ty <= min) {\n          min = ty;\n          normal.set(0, 1, 0);\n        }\n        if (tz <= min) {\n          normal.set(0, 0, 1);\n        }\n        vec.crossVectors(tangents[0], normal).normalize();\n        normals[0].crossVectors(tangents[0], vec);\n        binormals[0].crossVectors(tangents[0], normals[0]);\n        for (let i2 = 1; i2 <= segments; i2++) {\n          normals[i2] = normals[i2 - 1].clone();\n          binormals[i2] = binormals[i2 - 1].clone();\n          vec.crossVectors(tangents[i2 - 1], tangents[i2]);\n          if (vec.length() > Number.EPSILON) {\n            vec.normalize();\n            const theta = Math.acos(clamp(tangents[i2 - 1].dot(tangents[i2]), -1, 1));\n            normals[i2].applyMatrix4(mat.makeRotationAxis(vec, theta));\n          }\n          binormals[i2].crossVectors(tangents[i2], normals[i2]);\n        }\n        if (closed === true) {\n          let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1));\n          theta /= segments;\n          if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n            theta = -theta;\n          }\n          for (let i2 = 1; i2 <= segments; i2++) {\n            normals[i2].applyMatrix4(mat.makeRotationAxis(tangents[i2], theta * i2));\n            binormals[i2].crossVectors(tangents[i2], normals[i2]);\n          }\n        }\n        return {\n          tangents,\n          normals,\n          binormals\n        };\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(source) {\n        this.arcLengthDivisions = source.arcLengthDivisions;\n        return this;\n      }\n      toJSON() {\n        const data = {\n          metadata: {\n            version: 4.6,\n            type: \"Curve\",\n            generator: \"Curve.toJSON\"\n          }\n        };\n        data.arcLengthDivisions = this.arcLengthDivisions;\n        data.type = this.type;\n        return data;\n      }\n      fromJSON(json) {\n        this.arcLengthDivisions = json.arcLengthDivisions;\n        return this;\n      }\n    };\n    EllipseCurve = class extends Curve {\n      constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n        super();\n        this.isEllipseCurve = true;\n        this.type = \"EllipseCurve\";\n        this.aX = aX;\n        this.aY = aY;\n        this.xRadius = xRadius;\n        this.yRadius = yRadius;\n        this.aStartAngle = aStartAngle;\n        this.aEndAngle = aEndAngle;\n        this.aClockwise = aClockwise;\n        this.aRotation = aRotation;\n      }\n      getPoint(t2, optionalTarget = new Vector2()) {\n        const point = optionalTarget;\n        const twoPi = Math.PI * 2;\n        let deltaAngle = this.aEndAngle - this.aStartAngle;\n        const samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n        while (deltaAngle < 0) deltaAngle += twoPi;\n        while (deltaAngle > twoPi) deltaAngle -= twoPi;\n        if (deltaAngle < Number.EPSILON) {\n          if (samePoints) {\n            deltaAngle = 0;\n          } else {\n            deltaAngle = twoPi;\n          }\n        }\n        if (this.aClockwise === true && !samePoints) {\n          if (deltaAngle === twoPi) {\n            deltaAngle = -twoPi;\n          } else {\n            deltaAngle = deltaAngle - twoPi;\n          }\n        }\n        const angle = this.aStartAngle + t2 * deltaAngle;\n        let x = this.aX + this.xRadius * Math.cos(angle);\n        let y2 = this.aY + this.yRadius * Math.sin(angle);\n        if (this.aRotation !== 0) {\n          const cos = Math.cos(this.aRotation);\n          const sin = Math.sin(this.aRotation);\n          const tx = x - this.aX;\n          const ty = y2 - this.aY;\n          x = tx * cos - ty * sin + this.aX;\n          y2 = tx * sin + ty * cos + this.aY;\n        }\n        return point.set(x, y2);\n      }\n      copy(source) {\n        super.copy(source);\n        this.aX = source.aX;\n        this.aY = source.aY;\n        this.xRadius = source.xRadius;\n        this.yRadius = source.yRadius;\n        this.aStartAngle = source.aStartAngle;\n        this.aEndAngle = source.aEndAngle;\n        this.aClockwise = source.aClockwise;\n        this.aRotation = source.aRotation;\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.aX = this.aX;\n        data.aY = this.aY;\n        data.xRadius = this.xRadius;\n        data.yRadius = this.yRadius;\n        data.aStartAngle = this.aStartAngle;\n        data.aEndAngle = this.aEndAngle;\n        data.aClockwise = this.aClockwise;\n        data.aRotation = this.aRotation;\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.aX = json.aX;\n        this.aY = json.aY;\n        this.xRadius = json.xRadius;\n        this.yRadius = json.yRadius;\n        this.aStartAngle = json.aStartAngle;\n        this.aEndAngle = json.aEndAngle;\n        this.aClockwise = json.aClockwise;\n        this.aRotation = json.aRotation;\n        return this;\n      }\n    };\n    ArcCurve = class extends EllipseCurve {\n      constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n        super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n        this.isArcCurve = true;\n        this.type = \"ArcCurve\";\n      }\n    };\n    tmp = /* @__PURE__ */ new Vector3();\n    px = /* @__PURE__ */ new CubicPoly();\n    py = /* @__PURE__ */ new CubicPoly();\n    pz = /* @__PURE__ */ new CubicPoly();\n    CatmullRomCurve3 = class extends Curve {\n      constructor(points = [], closed = false, curveType = \"centripetal\", tension = 0.5) {\n        super();\n        this.isCatmullRomCurve3 = true;\n        this.type = \"CatmullRomCurve3\";\n        this.points = points;\n        this.closed = closed;\n        this.curveType = curveType;\n        this.tension = tension;\n      }\n      getPoint(t2, optionalTarget = new Vector3()) {\n        const point = optionalTarget;\n        const points = this.points;\n        const l2 = points.length;\n        const p3 = (l2 - (this.closed ? 0 : 1)) * t2;\n        let intPoint = Math.floor(p3);\n        let weight = p3 - intPoint;\n        if (this.closed) {\n          intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l2) + 1) * l2;\n        } else if (weight === 0 && intPoint === l2 - 1) {\n          intPoint = l2 - 2;\n          weight = 1;\n        }\n        let p0, p32;\n        if (this.closed || intPoint > 0) {\n          p0 = points[(intPoint - 1) % l2];\n        } else {\n          tmp.subVectors(points[0], points[1]).add(points[0]);\n          p0 = tmp;\n        }\n        const p1 = points[intPoint % l2];\n        const p22 = points[(intPoint + 1) % l2];\n        if (this.closed || intPoint + 2 < l2) {\n          p32 = points[(intPoint + 2) % l2];\n        } else {\n          tmp.subVectors(points[l2 - 1], points[l2 - 2]).add(points[l2 - 1]);\n          p32 = tmp;\n        }\n        if (this.curveType === \"centripetal\" || this.curveType === \"chordal\") {\n          const pow = this.curveType === \"chordal\" ? 0.5 : 0.25;\n          let dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n          let dt1 = Math.pow(p1.distanceToSquared(p22), pow);\n          let dt2 = Math.pow(p22.distanceToSquared(p32), pow);\n          if (dt1 < 1e-4) dt1 = 1;\n          if (dt0 < 1e-4) dt0 = dt1;\n          if (dt2 < 1e-4) dt2 = dt1;\n          px.initNonuniformCatmullRom(p0.x, p1.x, p22.x, p32.x, dt0, dt1, dt2);\n          py.initNonuniformCatmullRom(p0.y, p1.y, p22.y, p32.y, dt0, dt1, dt2);\n          pz.initNonuniformCatmullRom(p0.z, p1.z, p22.z, p32.z, dt0, dt1, dt2);\n        } else if (this.curveType === \"catmullrom\") {\n          px.initCatmullRom(p0.x, p1.x, p22.x, p32.x, this.tension);\n          py.initCatmullRom(p0.y, p1.y, p22.y, p32.y, this.tension);\n          pz.initCatmullRom(p0.z, p1.z, p22.z, p32.z, this.tension);\n        }\n        point.set(\n          px.calc(weight),\n          py.calc(weight),\n          pz.calc(weight)\n        );\n        return point;\n      }\n      copy(source) {\n        super.copy(source);\n        this.points = [];\n        for (let i2 = 0, l2 = source.points.length; i2 < l2; i2++) {\n          const point = source.points[i2];\n          this.points.push(point.clone());\n        }\n        this.closed = source.closed;\n        this.curveType = source.curveType;\n        this.tension = source.tension;\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.points = [];\n        for (let i2 = 0, l2 = this.points.length; i2 < l2; i2++) {\n          const point = this.points[i2];\n          data.points.push(point.toArray());\n        }\n        data.closed = this.closed;\n        data.curveType = this.curveType;\n        data.tension = this.tension;\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.points = [];\n        for (let i2 = 0, l2 = json.points.length; i2 < l2; i2++) {\n          const point = json.points[i2];\n          this.points.push(new Vector3().fromArray(point));\n        }\n        this.closed = json.closed;\n        this.curveType = json.curveType;\n        this.tension = json.tension;\n        return this;\n      }\n    };\n    CubicBezierCurve = class extends Curve {\n      constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n        super();\n        this.isCubicBezierCurve = true;\n        this.type = \"CubicBezierCurve\";\n        this.v0 = v0;\n        this.v1 = v1;\n        this.v2 = v2;\n        this.v3 = v3;\n      }\n      getPoint(t2, optionalTarget = new Vector2()) {\n        const point = optionalTarget;\n        const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n        point.set(\n          CubicBezier(t2, v0.x, v1.x, v2.x, v3.x),\n          CubicBezier(t2, v0.y, v1.y, v2.y, v3.y)\n        );\n        return point;\n      }\n      copy(source) {\n        super.copy(source);\n        this.v0.copy(source.v0);\n        this.v1.copy(source.v1);\n        this.v2.copy(source.v2);\n        this.v3.copy(source.v3);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.v0 = this.v0.toArray();\n        data.v1 = this.v1.toArray();\n        data.v2 = this.v2.toArray();\n        data.v3 = this.v3.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.v0.fromArray(json.v0);\n        this.v1.fromArray(json.v1);\n        this.v2.fromArray(json.v2);\n        this.v3.fromArray(json.v3);\n        return this;\n      }\n    };\n    CubicBezierCurve3 = class extends Curve {\n      constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n        super();\n        this.isCubicBezierCurve3 = true;\n        this.type = \"CubicBezierCurve3\";\n        this.v0 = v0;\n        this.v1 = v1;\n        this.v2 = v2;\n        this.v3 = v3;\n      }\n      getPoint(t2, optionalTarget = new Vector3()) {\n        const point = optionalTarget;\n        const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n        point.set(\n          CubicBezier(t2, v0.x, v1.x, v2.x, v3.x),\n          CubicBezier(t2, v0.y, v1.y, v2.y, v3.y),\n          CubicBezier(t2, v0.z, v1.z, v2.z, v3.z)\n        );\n        return point;\n      }\n      copy(source) {\n        super.copy(source);\n        this.v0.copy(source.v0);\n        this.v1.copy(source.v1);\n        this.v2.copy(source.v2);\n        this.v3.copy(source.v3);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.v0 = this.v0.toArray();\n        data.v1 = this.v1.toArray();\n        data.v2 = this.v2.toArray();\n        data.v3 = this.v3.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.v0.fromArray(json.v0);\n        this.v1.fromArray(json.v1);\n        this.v2.fromArray(json.v2);\n        this.v3.fromArray(json.v3);\n        return this;\n      }\n    };\n    LineCurve = class extends Curve {\n      constructor(v1 = new Vector2(), v2 = new Vector2()) {\n        super();\n        this.isLineCurve = true;\n        this.type = \"LineCurve\";\n        this.v1 = v1;\n        this.v2 = v2;\n      }\n      getPoint(t2, optionalTarget = new Vector2()) {\n        const point = optionalTarget;\n        if (t2 === 1) {\n          point.copy(this.v2);\n        } else {\n          point.copy(this.v2).sub(this.v1);\n          point.multiplyScalar(t2).add(this.v1);\n        }\n        return point;\n      }\n      // Line curve is linear, so we can overwrite default getPointAt\n      getPointAt(u3, optionalTarget) {\n        return this.getPoint(u3, optionalTarget);\n      }\n      getTangent(t2, optionalTarget = new Vector2()) {\n        return optionalTarget.subVectors(this.v2, this.v1).normalize();\n      }\n      getTangentAt(u3, optionalTarget) {\n        return this.getTangent(u3, optionalTarget);\n      }\n      copy(source) {\n        super.copy(source);\n        this.v1.copy(source.v1);\n        this.v2.copy(source.v2);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.v1 = this.v1.toArray();\n        data.v2 = this.v2.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.v1.fromArray(json.v1);\n        this.v2.fromArray(json.v2);\n        return this;\n      }\n    };\n    LineCurve3 = class extends Curve {\n      constructor(v1 = new Vector3(), v2 = new Vector3()) {\n        super();\n        this.isLineCurve3 = true;\n        this.type = \"LineCurve3\";\n        this.v1 = v1;\n        this.v2 = v2;\n      }\n      getPoint(t2, optionalTarget = new Vector3()) {\n        const point = optionalTarget;\n        if (t2 === 1) {\n          point.copy(this.v2);\n        } else {\n          point.copy(this.v2).sub(this.v1);\n          point.multiplyScalar(t2).add(this.v1);\n        }\n        return point;\n      }\n      // Line curve is linear, so we can overwrite default getPointAt\n      getPointAt(u3, optionalTarget) {\n        return this.getPoint(u3, optionalTarget);\n      }\n      getTangent(t2, optionalTarget = new Vector3()) {\n        return optionalTarget.subVectors(this.v2, this.v1).normalize();\n      }\n      getTangentAt(u3, optionalTarget) {\n        return this.getTangent(u3, optionalTarget);\n      }\n      copy(source) {\n        super.copy(source);\n        this.v1.copy(source.v1);\n        this.v2.copy(source.v2);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.v1 = this.v1.toArray();\n        data.v2 = this.v2.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.v1.fromArray(json.v1);\n        this.v2.fromArray(json.v2);\n        return this;\n      }\n    };\n    QuadraticBezierCurve = class extends Curve {\n      constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n        super();\n        this.isQuadraticBezierCurve = true;\n        this.type = \"QuadraticBezierCurve\";\n        this.v0 = v0;\n        this.v1 = v1;\n        this.v2 = v2;\n      }\n      getPoint(t2, optionalTarget = new Vector2()) {\n        const point = optionalTarget;\n        const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n        point.set(\n          QuadraticBezier(t2, v0.x, v1.x, v2.x),\n          QuadraticBezier(t2, v0.y, v1.y, v2.y)\n        );\n        return point;\n      }\n      copy(source) {\n        super.copy(source);\n        this.v0.copy(source.v0);\n        this.v1.copy(source.v1);\n        this.v2.copy(source.v2);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.v0 = this.v0.toArray();\n        data.v1 = this.v1.toArray();\n        data.v2 = this.v2.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.v0.fromArray(json.v0);\n        this.v1.fromArray(json.v1);\n        this.v2.fromArray(json.v2);\n        return this;\n      }\n    };\n    QuadraticBezierCurve3 = class extends Curve {\n      constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n        super();\n        this.isQuadraticBezierCurve3 = true;\n        this.type = \"QuadraticBezierCurve3\";\n        this.v0 = v0;\n        this.v1 = v1;\n        this.v2 = v2;\n      }\n      getPoint(t2, optionalTarget = new Vector3()) {\n        const point = optionalTarget;\n        const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n        point.set(\n          QuadraticBezier(t2, v0.x, v1.x, v2.x),\n          QuadraticBezier(t2, v0.y, v1.y, v2.y),\n          QuadraticBezier(t2, v0.z, v1.z, v2.z)\n        );\n        return point;\n      }\n      copy(source) {\n        super.copy(source);\n        this.v0.copy(source.v0);\n        this.v1.copy(source.v1);\n        this.v2.copy(source.v2);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.v0 = this.v0.toArray();\n        data.v1 = this.v1.toArray();\n        data.v2 = this.v2.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.v0.fromArray(json.v0);\n        this.v1.fromArray(json.v1);\n        this.v2.fromArray(json.v2);\n        return this;\n      }\n    };\n    SplineCurve = class extends Curve {\n      constructor(points = []) {\n        super();\n        this.isSplineCurve = true;\n        this.type = \"SplineCurve\";\n        this.points = points;\n      }\n      getPoint(t2, optionalTarget = new Vector2()) {\n        const point = optionalTarget;\n        const points = this.points;\n        const p3 = (points.length - 1) * t2;\n        const intPoint = Math.floor(p3);\n        const weight = p3 - intPoint;\n        const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n        const p1 = points[intPoint];\n        const p22 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n        const p32 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n        point.set(\n          CatmullRom(weight, p0.x, p1.x, p22.x, p32.x),\n          CatmullRom(weight, p0.y, p1.y, p22.y, p32.y)\n        );\n        return point;\n      }\n      copy(source) {\n        super.copy(source);\n        this.points = [];\n        for (let i2 = 0, l2 = source.points.length; i2 < l2; i2++) {\n          const point = source.points[i2];\n          this.points.push(point.clone());\n        }\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.points = [];\n        for (let i2 = 0, l2 = this.points.length; i2 < l2; i2++) {\n          const point = this.points[i2];\n          data.points.push(point.toArray());\n        }\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.points = [];\n        for (let i2 = 0, l2 = json.points.length; i2 < l2; i2++) {\n          const point = json.points[i2];\n          this.points.push(new Vector2().fromArray(point));\n        }\n        return this;\n      }\n    };\n    Curves = /* @__PURE__ */ Object.freeze({\n      __proto__: null,\n      ArcCurve,\n      CatmullRomCurve3,\n      CubicBezierCurve,\n      CubicBezierCurve3,\n      EllipseCurve,\n      LineCurve,\n      LineCurve3,\n      QuadraticBezierCurve,\n      QuadraticBezierCurve3,\n      SplineCurve\n    });\n    CurvePath = class extends Curve {\n      constructor() {\n        super();\n        this.type = \"CurvePath\";\n        this.curves = [];\n        this.autoClose = false;\n      }\n      add(curve) {\n        this.curves.push(curve);\n      }\n      closePath() {\n        const startPoint = this.curves[0].getPoint(0);\n        const endPoint = this.curves[this.curves.length - 1].getPoint(1);\n        if (!startPoint.equals(endPoint)) {\n          const lineType = startPoint.isVector2 === true ? \"LineCurve\" : \"LineCurve3\";\n          this.curves.push(new Curves[lineType](endPoint, startPoint));\n        }\n        return this;\n      }\n      // To get accurate point with reference to\n      // entire path distance at time t,\n      // following has to be done:\n      // 1. Length of each sub path have to be known\n      // 2. Locate and identify type of curve\n      // 3. Get t for the curve\n      // 4. Return curve.getPointAt(t')\n      getPoint(t2, optionalTarget) {\n        const d = t2 * this.getLength();\n        const curveLengths = this.getCurveLengths();\n        let i2 = 0;\n        while (i2 < curveLengths.length) {\n          if (curveLengths[i2] >= d) {\n            const diff = curveLengths[i2] - d;\n            const curve = this.curves[i2];\n            const segmentLength = curve.getLength();\n            const u3 = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n            return curve.getPointAt(u3, optionalTarget);\n          }\n          i2++;\n        }\n        return null;\n      }\n      // We cannot use the default THREE.Curve getPoint() with getLength() because in\n      // THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n      // getPoint() depends on getLength\n      getLength() {\n        const lens = this.getCurveLengths();\n        return lens[lens.length - 1];\n      }\n      // cacheLengths must be recalculated.\n      updateArcLengths() {\n        this.needsUpdate = true;\n        this.cacheLengths = null;\n        this.getCurveLengths();\n      }\n      // Compute lengths and cache them\n      // We cannot overwrite getLengths() because UtoT mapping uses it.\n      getCurveLengths() {\n        if (this.cacheLengths && this.cacheLengths.length === this.curves.length) {\n          return this.cacheLengths;\n        }\n        const lengths = [];\n        let sums = 0;\n        for (let i2 = 0, l2 = this.curves.length; i2 < l2; i2++) {\n          sums += this.curves[i2].getLength();\n          lengths.push(sums);\n        }\n        this.cacheLengths = lengths;\n        return lengths;\n      }\n      getSpacedPoints(divisions = 40) {\n        const points = [];\n        for (let i2 = 0; i2 <= divisions; i2++) {\n          points.push(this.getPoint(i2 / divisions));\n        }\n        if (this.autoClose) {\n          points.push(points[0]);\n        }\n        return points;\n      }\n      getPoints(divisions = 12) {\n        const points = [];\n        let last;\n        for (let i2 = 0, curves = this.curves; i2 < curves.length; i2++) {\n          const curve = curves[i2];\n          const resolution = curve.isEllipseCurve ? divisions * 2 : curve.isLineCurve || curve.isLineCurve3 ? 1 : curve.isSplineCurve ? divisions * curve.points.length : divisions;\n          const pts = curve.getPoints(resolution);\n          for (let j2 = 0; j2 < pts.length; j2++) {\n            const point = pts[j2];\n            if (last && last.equals(point)) continue;\n            points.push(point);\n            last = point;\n          }\n        }\n        if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) {\n          points.push(points[0]);\n        }\n        return points;\n      }\n      copy(source) {\n        super.copy(source);\n        this.curves = [];\n        for (let i2 = 0, l2 = source.curves.length; i2 < l2; i2++) {\n          const curve = source.curves[i2];\n          this.curves.push(curve.clone());\n        }\n        this.autoClose = source.autoClose;\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.autoClose = this.autoClose;\n        data.curves = [];\n        for (let i2 = 0, l2 = this.curves.length; i2 < l2; i2++) {\n          const curve = this.curves[i2];\n          data.curves.push(curve.toJSON());\n        }\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.autoClose = json.autoClose;\n        this.curves = [];\n        for (let i2 = 0, l2 = json.curves.length; i2 < l2; i2++) {\n          const curve = json.curves[i2];\n          this.curves.push(new Curves[curve.type]().fromJSON(curve));\n        }\n        return this;\n      }\n    };\n    Path = class extends CurvePath {\n      constructor(points) {\n        super();\n        this.type = \"Path\";\n        this.currentPoint = new Vector2();\n        if (points) {\n          this.setFromPoints(points);\n        }\n      }\n      setFromPoints(points) {\n        this.moveTo(points[0].x, points[0].y);\n        for (let i2 = 1, l2 = points.length; i2 < l2; i2++) {\n          this.lineTo(points[i2].x, points[i2].y);\n        }\n        return this;\n      }\n      moveTo(x, y2) {\n        this.currentPoint.set(x, y2);\n        return this;\n      }\n      lineTo(x, y2) {\n        const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y2));\n        this.curves.push(curve);\n        this.currentPoint.set(x, y2);\n        return this;\n      }\n      quadraticCurveTo(aCPx, aCPy, aX, aY) {\n        const curve = new QuadraticBezierCurve(\n          this.currentPoint.clone(),\n          new Vector2(aCPx, aCPy),\n          new Vector2(aX, aY)\n        );\n        this.curves.push(curve);\n        this.currentPoint.set(aX, aY);\n        return this;\n      }\n      bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n        const curve = new CubicBezierCurve(\n          this.currentPoint.clone(),\n          new Vector2(aCP1x, aCP1y),\n          new Vector2(aCP2x, aCP2y),\n          new Vector2(aX, aY)\n        );\n        this.curves.push(curve);\n        this.currentPoint.set(aX, aY);\n        return this;\n      }\n      splineThru(pts) {\n        const npts = [this.currentPoint.clone()].concat(pts);\n        const curve = new SplineCurve(npts);\n        this.curves.push(curve);\n        this.currentPoint.copy(pts[pts.length - 1]);\n        return this;\n      }\n      arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n        const x0 = this.currentPoint.x;\n        const y0 = this.currentPoint.y;\n        this.absarc(\n          aX + x0,\n          aY + y0,\n          aRadius,\n          aStartAngle,\n          aEndAngle,\n          aClockwise\n        );\n        return this;\n      }\n      absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n        this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n        return this;\n      }\n      ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n        const x0 = this.currentPoint.x;\n        const y0 = this.currentPoint.y;\n        this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n        return this;\n      }\n      absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n        const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n        if (this.curves.length > 0) {\n          const firstPoint = curve.getPoint(0);\n          if (!firstPoint.equals(this.currentPoint)) {\n            this.lineTo(firstPoint.x, firstPoint.y);\n          }\n        }\n        this.curves.push(curve);\n        const lastPoint = curve.getPoint(1);\n        this.currentPoint.copy(lastPoint);\n        return this;\n      }\n      copy(source) {\n        super.copy(source);\n        this.currentPoint.copy(source.currentPoint);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.currentPoint = this.currentPoint.toArray();\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.currentPoint.fromArray(json.currentPoint);\n        return this;\n      }\n    };\n    LatheGeometry = class _LatheGeometry extends BufferGeometry {\n      constructor(points = [new Vector2(0, -0.5), new Vector2(0.5, 0), new Vector2(0, 0.5)], segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n        super();\n        this.type = \"LatheGeometry\";\n        this.parameters = {\n          points,\n          segments,\n          phiStart,\n          phiLength\n        };\n        segments = Math.floor(segments);\n        phiLength = clamp(phiLength, 0, Math.PI * 2);\n        const indices = [];\n        const vertices = [];\n        const uvs = [];\n        const initNormals = [];\n        const normals = [];\n        const inverseSegments = 1 / segments;\n        const vertex2 = new Vector3();\n        const uv = new Vector2();\n        const normal = new Vector3();\n        const curNormal = new Vector3();\n        const prevNormal = new Vector3();\n        let dx = 0;\n        let dy = 0;\n        for (let j2 = 0; j2 <= points.length - 1; j2++) {\n          switch (j2) {\n            case 0:\n              dx = points[j2 + 1].x - points[j2].x;\n              dy = points[j2 + 1].y - points[j2].y;\n              normal.x = dy * 1;\n              normal.y = -dx;\n              normal.z = dy * 0;\n              prevNormal.copy(normal);\n              normal.normalize();\n              initNormals.push(normal.x, normal.y, normal.z);\n              break;\n            case points.length - 1:\n              initNormals.push(prevNormal.x, prevNormal.y, prevNormal.z);\n              break;\n            default:\n              dx = points[j2 + 1].x - points[j2].x;\n              dy = points[j2 + 1].y - points[j2].y;\n              normal.x = dy * 1;\n              normal.y = -dx;\n              normal.z = dy * 0;\n              curNormal.copy(normal);\n              normal.x += prevNormal.x;\n              normal.y += prevNormal.y;\n              normal.z += prevNormal.z;\n              normal.normalize();\n              initNormals.push(normal.x, normal.y, normal.z);\n              prevNormal.copy(curNormal);\n          }\n        }\n        for (let i2 = 0; i2 <= segments; i2++) {\n          const phi = phiStart + i2 * inverseSegments * phiLength;\n          const sin = Math.sin(phi);\n          const cos = Math.cos(phi);\n          for (let j2 = 0; j2 <= points.length - 1; j2++) {\n            vertex2.x = points[j2].x * sin;\n            vertex2.y = points[j2].y;\n            vertex2.z = points[j2].x * cos;\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n            uv.x = i2 / segments;\n            uv.y = j2 / (points.length - 1);\n            uvs.push(uv.x, uv.y);\n            const x = initNormals[3 * j2 + 0] * sin;\n            const y2 = initNormals[3 * j2 + 1];\n            const z2 = initNormals[3 * j2 + 0] * cos;\n            normals.push(x, y2, z2);\n          }\n        }\n        for (let i2 = 0; i2 < segments; i2++) {\n          for (let j2 = 0; j2 < points.length - 1; j2++) {\n            const base = j2 + i2 * points.length;\n            const a = base;\n            const b = base + points.length;\n            const c = base + points.length + 1;\n            const d = base + 1;\n            indices.push(a, b, d);\n            indices.push(c, d, b);\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n      }\n    };\n    CapsuleGeometry = class _CapsuleGeometry extends LatheGeometry {\n      constructor(radius = 1, length = 1, capSegments = 4, radialSegments = 8) {\n        const path = new Path();\n        path.absarc(0, -length / 2, radius, Math.PI * 1.5, 0);\n        path.absarc(0, length / 2, radius, 0, Math.PI * 0.5);\n        super(path.getPoints(capSegments), radialSegments);\n        this.type = \"CapsuleGeometry\";\n        this.parameters = {\n          radius,\n          length,\n          capSegments,\n          radialSegments\n        };\n      }\n      static fromJSON(data) {\n        return new _CapsuleGeometry(data.radius, data.length, data.capSegments, data.radialSegments);\n      }\n    };\n    CircleGeometry = class _CircleGeometry extends BufferGeometry {\n      constructor(radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2) {\n        super();\n        this.type = \"CircleGeometry\";\n        this.parameters = {\n          radius,\n          segments,\n          thetaStart,\n          thetaLength\n        };\n        segments = Math.max(3, segments);\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        const vertex2 = new Vector3();\n        const uv = new Vector2();\n        vertices.push(0, 0, 0);\n        normals.push(0, 0, 1);\n        uvs.push(0.5, 0.5);\n        for (let s = 0, i2 = 3; s <= segments; s++, i2 += 3) {\n          const segment = thetaStart + s / segments * thetaLength;\n          vertex2.x = radius * Math.cos(segment);\n          vertex2.y = radius * Math.sin(segment);\n          vertices.push(vertex2.x, vertex2.y, vertex2.z);\n          normals.push(0, 0, 1);\n          uv.x = (vertices[i2] / radius + 1) / 2;\n          uv.y = (vertices[i2 + 1] / radius + 1) / 2;\n          uvs.push(uv.x, uv.y);\n        }\n        for (let i2 = 1; i2 <= segments; i2++) {\n          indices.push(i2, i2 + 1, 0);\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n      }\n    };\n    CylinderGeometry = class _CylinderGeometry extends BufferGeometry {\n      constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n        super();\n        this.type = \"CylinderGeometry\";\n        this.parameters = {\n          radiusTop,\n          radiusBottom,\n          height,\n          radialSegments,\n          heightSegments,\n          openEnded,\n          thetaStart,\n          thetaLength\n        };\n        const scope = this;\n        radialSegments = Math.floor(radialSegments);\n        heightSegments = Math.floor(heightSegments);\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        let index = 0;\n        const indexArray = [];\n        const halfHeight = height / 2;\n        let groupStart = 0;\n        generateTorso();\n        if (openEnded === false) {\n          if (radiusTop > 0) generateCap(true);\n          if (radiusBottom > 0) generateCap(false);\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n        function generateTorso() {\n          const normal = new Vector3();\n          const vertex2 = new Vector3();\n          let groupCount = 0;\n          const slope = (radiusBottom - radiusTop) / height;\n          for (let y2 = 0; y2 <= heightSegments; y2++) {\n            const indexRow = [];\n            const v2 = y2 / heightSegments;\n            const radius = v2 * (radiusBottom - radiusTop) + radiusTop;\n            for (let x = 0; x <= radialSegments; x++) {\n              const u3 = x / radialSegments;\n              const theta = u3 * thetaLength + thetaStart;\n              const sinTheta = Math.sin(theta);\n              const cosTheta = Math.cos(theta);\n              vertex2.x = radius * sinTheta;\n              vertex2.y = -v2 * height + halfHeight;\n              vertex2.z = radius * cosTheta;\n              vertices.push(vertex2.x, vertex2.y, vertex2.z);\n              normal.set(sinTheta, slope, cosTheta).normalize();\n              normals.push(normal.x, normal.y, normal.z);\n              uvs.push(u3, 1 - v2);\n              indexRow.push(index++);\n            }\n            indexArray.push(indexRow);\n          }\n          for (let x = 0; x < radialSegments; x++) {\n            for (let y2 = 0; y2 < heightSegments; y2++) {\n              const a = indexArray[y2][x];\n              const b = indexArray[y2 + 1][x];\n              const c = indexArray[y2 + 1][x + 1];\n              const d = indexArray[y2][x + 1];\n              if (radiusTop > 0) {\n                indices.push(a, b, d);\n                groupCount += 3;\n              }\n              if (radiusBottom > 0) {\n                indices.push(b, c, d);\n                groupCount += 3;\n              }\n            }\n          }\n          scope.addGroup(groupStart, groupCount, 0);\n          groupStart += groupCount;\n        }\n        function generateCap(top) {\n          const centerIndexStart = index;\n          const uv = new Vector2();\n          const vertex2 = new Vector3();\n          let groupCount = 0;\n          const radius = top === true ? radiusTop : radiusBottom;\n          const sign2 = top === true ? 1 : -1;\n          for (let x = 1; x <= radialSegments; x++) {\n            vertices.push(0, halfHeight * sign2, 0);\n            normals.push(0, sign2, 0);\n            uvs.push(0.5, 0.5);\n            index++;\n          }\n          const centerIndexEnd = index;\n          for (let x = 0; x <= radialSegments; x++) {\n            const u3 = x / radialSegments;\n            const theta = u3 * thetaLength + thetaStart;\n            const cosTheta = Math.cos(theta);\n            const sinTheta = Math.sin(theta);\n            vertex2.x = radius * sinTheta;\n            vertex2.y = halfHeight * sign2;\n            vertex2.z = radius * cosTheta;\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n            normals.push(0, sign2, 0);\n            uv.x = cosTheta * 0.5 + 0.5;\n            uv.y = sinTheta * 0.5 * sign2 + 0.5;\n            uvs.push(uv.x, uv.y);\n            index++;\n          }\n          for (let x = 0; x < radialSegments; x++) {\n            const c = centerIndexStart + x;\n            const i2 = centerIndexEnd + x;\n            if (top === true) {\n              indices.push(i2, i2 + 1, c);\n            } else {\n              indices.push(i2 + 1, i2, c);\n            }\n            groupCount += 3;\n          }\n          scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n          groupStart += groupCount;\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n      }\n    };\n    ConeGeometry = class _ConeGeometry extends CylinderGeometry {\n      constructor(radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n        super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n        this.type = \"ConeGeometry\";\n        this.parameters = {\n          radius,\n          height,\n          radialSegments,\n          heightSegments,\n          openEnded,\n          thetaStart,\n          thetaLength\n        };\n      }\n      static fromJSON(data) {\n        return new _ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n      }\n    };\n    PolyhedronGeometry = class _PolyhedronGeometry extends BufferGeometry {\n      constructor(vertices = [], indices = [], radius = 1, detail = 0) {\n        super();\n        this.type = \"PolyhedronGeometry\";\n        this.parameters = {\n          vertices,\n          indices,\n          radius,\n          detail\n        };\n        const vertexBuffer = [];\n        const uvBuffer = [];\n        subdivide(detail);\n        applyRadius(radius);\n        generateUVs();\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertexBuffer, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(vertexBuffer.slice(), 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvBuffer, 2));\n        if (detail === 0) {\n          this.computeVertexNormals();\n        } else {\n          this.normalizeNormals();\n        }\n        function subdivide(detail2) {\n          const a = new Vector3();\n          const b = new Vector3();\n          const c = new Vector3();\n          for (let i2 = 0; i2 < indices.length; i2 += 3) {\n            getVertexByIndex(indices[i2 + 0], a);\n            getVertexByIndex(indices[i2 + 1], b);\n            getVertexByIndex(indices[i2 + 2], c);\n            subdivideFace(a, b, c, detail2);\n          }\n        }\n        function subdivideFace(a, b, c, detail2) {\n          const cols = detail2 + 1;\n          const v2 = [];\n          for (let i2 = 0; i2 <= cols; i2++) {\n            v2[i2] = [];\n            const aj = a.clone().lerp(c, i2 / cols);\n            const bj = b.clone().lerp(c, i2 / cols);\n            const rows = cols - i2;\n            for (let j2 = 0; j2 <= rows; j2++) {\n              if (j2 === 0 && i2 === cols) {\n                v2[i2][j2] = aj;\n              } else {\n                v2[i2][j2] = aj.clone().lerp(bj, j2 / rows);\n              }\n            }\n          }\n          for (let i2 = 0; i2 < cols; i2++) {\n            for (let j2 = 0; j2 < 2 * (cols - i2) - 1; j2++) {\n              const k3 = Math.floor(j2 / 2);\n              if (j2 % 2 === 0) {\n                pushVertex(v2[i2][k3 + 1]);\n                pushVertex(v2[i2 + 1][k3]);\n                pushVertex(v2[i2][k3]);\n              } else {\n                pushVertex(v2[i2][k3 + 1]);\n                pushVertex(v2[i2 + 1][k3 + 1]);\n                pushVertex(v2[i2 + 1][k3]);\n              }\n            }\n          }\n        }\n        function applyRadius(radius2) {\n          const vertex2 = new Vector3();\n          for (let i2 = 0; i2 < vertexBuffer.length; i2 += 3) {\n            vertex2.x = vertexBuffer[i2 + 0];\n            vertex2.y = vertexBuffer[i2 + 1];\n            vertex2.z = vertexBuffer[i2 + 2];\n            vertex2.normalize().multiplyScalar(radius2);\n            vertexBuffer[i2 + 0] = vertex2.x;\n            vertexBuffer[i2 + 1] = vertex2.y;\n            vertexBuffer[i2 + 2] = vertex2.z;\n          }\n        }\n        function generateUVs() {\n          const vertex2 = new Vector3();\n          for (let i2 = 0; i2 < vertexBuffer.length; i2 += 3) {\n            vertex2.x = vertexBuffer[i2 + 0];\n            vertex2.y = vertexBuffer[i2 + 1];\n            vertex2.z = vertexBuffer[i2 + 2];\n            const u3 = azimuth(vertex2) / 2 / Math.PI + 0.5;\n            const v2 = inclination(vertex2) / Math.PI + 0.5;\n            uvBuffer.push(u3, 1 - v2);\n          }\n          correctUVs();\n          correctSeam();\n        }\n        function correctSeam() {\n          for (let i2 = 0; i2 < uvBuffer.length; i2 += 6) {\n            const x0 = uvBuffer[i2 + 0];\n            const x1 = uvBuffer[i2 + 2];\n            const x2 = uvBuffer[i2 + 4];\n            const max = Math.max(x0, x1, x2);\n            const min = Math.min(x0, x1, x2);\n            if (max > 0.9 && min < 0.1) {\n              if (x0 < 0.2) uvBuffer[i2 + 0] += 1;\n              if (x1 < 0.2) uvBuffer[i2 + 2] += 1;\n              if (x2 < 0.2) uvBuffer[i2 + 4] += 1;\n            }\n          }\n        }\n        function pushVertex(vertex2) {\n          vertexBuffer.push(vertex2.x, vertex2.y, vertex2.z);\n        }\n        function getVertexByIndex(index, vertex2) {\n          const stride = index * 3;\n          vertex2.x = vertices[stride + 0];\n          vertex2.y = vertices[stride + 1];\n          vertex2.z = vertices[stride + 2];\n        }\n        function correctUVs() {\n          const a = new Vector3();\n          const b = new Vector3();\n          const c = new Vector3();\n          const centroid = new Vector3();\n          const uvA = new Vector2();\n          const uvB = new Vector2();\n          const uvC = new Vector2();\n          for (let i2 = 0, j2 = 0; i2 < vertexBuffer.length; i2 += 9, j2 += 6) {\n            a.set(vertexBuffer[i2 + 0], vertexBuffer[i2 + 1], vertexBuffer[i2 + 2]);\n            b.set(vertexBuffer[i2 + 3], vertexBuffer[i2 + 4], vertexBuffer[i2 + 5]);\n            c.set(vertexBuffer[i2 + 6], vertexBuffer[i2 + 7], vertexBuffer[i2 + 8]);\n            uvA.set(uvBuffer[j2 + 0], uvBuffer[j2 + 1]);\n            uvB.set(uvBuffer[j2 + 2], uvBuffer[j2 + 3]);\n            uvC.set(uvBuffer[j2 + 4], uvBuffer[j2 + 5]);\n            centroid.copy(a).add(b).add(c).divideScalar(3);\n            const azi = azimuth(centroid);\n            correctUV(uvA, j2 + 0, a, azi);\n            correctUV(uvB, j2 + 2, b, azi);\n            correctUV(uvC, j2 + 4, c, azi);\n          }\n        }\n        function correctUV(uv, stride, vector, azimuth2) {\n          if (azimuth2 < 0 && uv.x === 1) {\n            uvBuffer[stride] = uv.x - 1;\n          }\n          if (vector.x === 0 && vector.z === 0) {\n            uvBuffer[stride] = azimuth2 / 2 / Math.PI + 0.5;\n          }\n        }\n        function azimuth(vector) {\n          return Math.atan2(vector.z, -vector.x);\n        }\n        function inclination(vector) {\n          return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n      }\n    };\n    DodecahedronGeometry = class _DodecahedronGeometry extends PolyhedronGeometry {\n      constructor(radius = 1, detail = 0) {\n        const t2 = (1 + Math.sqrt(5)) / 2;\n        const r2 = 1 / t2;\n        const vertices = [\n          // (±1, ±1, ±1)\n          -1,\n          -1,\n          -1,\n          -1,\n          -1,\n          1,\n          -1,\n          1,\n          -1,\n          -1,\n          1,\n          1,\n          1,\n          -1,\n          -1,\n          1,\n          -1,\n          1,\n          1,\n          1,\n          -1,\n          1,\n          1,\n          1,\n          // (0, ±1/φ, ±φ)\n          0,\n          -r2,\n          -t2,\n          0,\n          -r2,\n          t2,\n          0,\n          r2,\n          -t2,\n          0,\n          r2,\n          t2,\n          // (±1/φ, ±φ, 0)\n          -r2,\n          -t2,\n          0,\n          -r2,\n          t2,\n          0,\n          r2,\n          -t2,\n          0,\n          r2,\n          t2,\n          0,\n          // (±φ, 0, ±1/φ)\n          -t2,\n          0,\n          -r2,\n          t2,\n          0,\n          -r2,\n          -t2,\n          0,\n          r2,\n          t2,\n          0,\n          r2\n        ];\n        const indices = [\n          3,\n          11,\n          7,\n          3,\n          7,\n          15,\n          3,\n          15,\n          13,\n          7,\n          19,\n          17,\n          7,\n          17,\n          6,\n          7,\n          6,\n          15,\n          17,\n          4,\n          8,\n          17,\n          8,\n          10,\n          17,\n          10,\n          6,\n          8,\n          0,\n          16,\n          8,\n          16,\n          2,\n          8,\n          2,\n          10,\n          0,\n          12,\n          1,\n          0,\n          1,\n          18,\n          0,\n          18,\n          16,\n          6,\n          10,\n          2,\n          6,\n          2,\n          13,\n          6,\n          13,\n          15,\n          2,\n          16,\n          18,\n          2,\n          18,\n          3,\n          2,\n          3,\n          13,\n          18,\n          1,\n          9,\n          18,\n          9,\n          11,\n          18,\n          11,\n          3,\n          4,\n          14,\n          12,\n          4,\n          12,\n          0,\n          4,\n          0,\n          8,\n          11,\n          9,\n          5,\n          11,\n          5,\n          19,\n          11,\n          19,\n          7,\n          19,\n          5,\n          14,\n          19,\n          14,\n          4,\n          19,\n          4,\n          17,\n          1,\n          12,\n          14,\n          1,\n          14,\n          5,\n          1,\n          5,\n          9\n        ];\n        super(vertices, indices, radius, detail);\n        this.type = \"DodecahedronGeometry\";\n        this.parameters = {\n          radius,\n          detail\n        };\n      }\n      static fromJSON(data) {\n        return new _DodecahedronGeometry(data.radius, data.detail);\n      }\n    };\n    _v0 = /* @__PURE__ */ new Vector3();\n    _v1$1 = /* @__PURE__ */ new Vector3();\n    _normal = /* @__PURE__ */ new Vector3();\n    _triangle = /* @__PURE__ */ new Triangle();\n    EdgesGeometry = class extends BufferGeometry {\n      constructor(geometry = null, thresholdAngle = 1) {\n        super();\n        this.type = \"EdgesGeometry\";\n        this.parameters = {\n          geometry,\n          thresholdAngle\n        };\n        if (geometry !== null) {\n          const precisionPoints = 4;\n          const precision = Math.pow(10, precisionPoints);\n          const thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n          const indexAttr = geometry.getIndex();\n          const positionAttr = geometry.getAttribute(\"position\");\n          const indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n          const indexArr = [0, 0, 0];\n          const vertKeys = [\"a\", \"b\", \"c\"];\n          const hashes = new Array(3);\n          const edgeData = {};\n          const vertices = [];\n          for (let i2 = 0; i2 < indexCount; i2 += 3) {\n            if (indexAttr) {\n              indexArr[0] = indexAttr.getX(i2);\n              indexArr[1] = indexAttr.getX(i2 + 1);\n              indexArr[2] = indexAttr.getX(i2 + 2);\n            } else {\n              indexArr[0] = i2;\n              indexArr[1] = i2 + 1;\n              indexArr[2] = i2 + 2;\n            }\n            const { a, b, c } = _triangle;\n            a.fromBufferAttribute(positionAttr, indexArr[0]);\n            b.fromBufferAttribute(positionAttr, indexArr[1]);\n            c.fromBufferAttribute(positionAttr, indexArr[2]);\n            _triangle.getNormal(_normal);\n            hashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`;\n            hashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`;\n            hashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`;\n            if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n              continue;\n            }\n            for (let j2 = 0; j2 < 3; j2++) {\n              const jNext = (j2 + 1) % 3;\n              const vecHash0 = hashes[j2];\n              const vecHash1 = hashes[jNext];\n              const v0 = _triangle[vertKeys[j2]];\n              const v1 = _triangle[vertKeys[jNext]];\n              const hash = `${vecHash0}_${vecHash1}`;\n              const reverseHash = `${vecHash1}_${vecHash0}`;\n              if (reverseHash in edgeData && edgeData[reverseHash]) {\n                if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n                  vertices.push(v0.x, v0.y, v0.z);\n                  vertices.push(v1.x, v1.y, v1.z);\n                }\n                edgeData[reverseHash] = null;\n              } else if (!(hash in edgeData)) {\n                edgeData[hash] = {\n                  index0: indexArr[j2],\n                  index1: indexArr[jNext],\n                  normal: _normal.clone()\n                };\n              }\n            }\n          }\n          for (const key in edgeData) {\n            if (edgeData[key]) {\n              const { index0, index1 } = edgeData[key];\n              _v0.fromBufferAttribute(positionAttr, index0);\n              _v1$1.fromBufferAttribute(positionAttr, index1);\n              vertices.push(_v0.x, _v0.y, _v0.z);\n              vertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n            }\n          }\n          this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n    };\n    Shape = class extends Path {\n      constructor(points) {\n        super(points);\n        this.uuid = generateUUID();\n        this.type = \"Shape\";\n        this.holes = [];\n      }\n      getPointsHoles(divisions) {\n        const holesPts = [];\n        for (let i2 = 0, l2 = this.holes.length; i2 < l2; i2++) {\n          holesPts[i2] = this.holes[i2].getPoints(divisions);\n        }\n        return holesPts;\n      }\n      // get points of shape and holes (keypoints based on segments parameter)\n      extractPoints(divisions) {\n        return {\n          shape: this.getPoints(divisions),\n          holes: this.getPointsHoles(divisions)\n        };\n      }\n      copy(source) {\n        super.copy(source);\n        this.holes = [];\n        for (let i2 = 0, l2 = source.holes.length; i2 < l2; i2++) {\n          const hole = source.holes[i2];\n          this.holes.push(hole.clone());\n        }\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.uuid = this.uuid;\n        data.holes = [];\n        for (let i2 = 0, l2 = this.holes.length; i2 < l2; i2++) {\n          const hole = this.holes[i2];\n          data.holes.push(hole.toJSON());\n        }\n        return data;\n      }\n      fromJSON(json) {\n        super.fromJSON(json);\n        this.uuid = json.uuid;\n        this.holes = [];\n        for (let i2 = 0, l2 = json.holes.length; i2 < l2; i2++) {\n          const hole = json.holes[i2];\n          this.holes.push(new Path().fromJSON(hole));\n        }\n        return this;\n      }\n    };\n    Earcut = {\n      triangulate: function(data, holeIndices, dim = 2) {\n        const hasHoles = holeIndices && holeIndices.length;\n        const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n        let outerNode = linkedList(data, 0, outerLen, dim, true);\n        const triangles = [];\n        if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n        let minX, minY, maxX, maxY, x, y2, invSize;\n        if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n        if (data.length > 80 * dim) {\n          minX = maxX = data[0];\n          minY = maxY = data[1];\n          for (let i2 = dim; i2 < outerLen; i2 += dim) {\n            x = data[i2];\n            y2 = data[i2 + 1];\n            if (x < minX) minX = x;\n            if (y2 < minY) minY = y2;\n            if (x > maxX) maxX = x;\n            if (y2 > maxY) maxY = y2;\n          }\n          invSize = Math.max(maxX - minX, maxY - minY);\n          invSize = invSize !== 0 ? 32767 / invSize : 0;\n        }\n        earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n        return triangles;\n      }\n    };\n    ShapeUtils = class _ShapeUtils {\n      // calculate area of the contour polygon\n      static area(contour) {\n        const n = contour.length;\n        let a = 0;\n        for (let p3 = n - 1, q3 = 0; q3 < n; p3 = q3++) {\n          a += contour[p3].x * contour[q3].y - contour[q3].x * contour[p3].y;\n        }\n        return a * 0.5;\n      }\n      static isClockWise(pts) {\n        return _ShapeUtils.area(pts) < 0;\n      }\n      static triangulateShape(contour, holes) {\n        const vertices = [];\n        const holeIndices = [];\n        const faces = [];\n        removeDupEndPts(contour);\n        addContour(vertices, contour);\n        let holeIndex = contour.length;\n        holes.forEach(removeDupEndPts);\n        for (let i2 = 0; i2 < holes.length; i2++) {\n          holeIndices.push(holeIndex);\n          holeIndex += holes[i2].length;\n          addContour(vertices, holes[i2]);\n        }\n        const triangles = Earcut.triangulate(vertices, holeIndices);\n        for (let i2 = 0; i2 < triangles.length; i2 += 3) {\n          faces.push(triangles.slice(i2, i2 + 3));\n        }\n        return faces;\n      }\n    };\n    ExtrudeGeometry = class _ExtrudeGeometry extends BufferGeometry {\n      constructor(shapes = new Shape([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options = {}) {\n        super();\n        this.type = \"ExtrudeGeometry\";\n        this.parameters = {\n          shapes,\n          options\n        };\n        shapes = Array.isArray(shapes) ? shapes : [shapes];\n        const scope = this;\n        const verticesArray = [];\n        const uvArray = [];\n        for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n          const shape = shapes[i2];\n          addShape(shape);\n        }\n        this.setAttribute(\"position\", new Float32BufferAttribute(verticesArray, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvArray, 2));\n        this.computeVertexNormals();\n        function addShape(shape) {\n          const placeholder = [];\n          const curveSegments = options.curveSegments !== void 0 ? options.curveSegments : 12;\n          const steps = options.steps !== void 0 ? options.steps : 1;\n          const depth = options.depth !== void 0 ? options.depth : 1;\n          let bevelEnabled = options.bevelEnabled !== void 0 ? options.bevelEnabled : true;\n          let bevelThickness = options.bevelThickness !== void 0 ? options.bevelThickness : 0.2;\n          let bevelSize = options.bevelSize !== void 0 ? options.bevelSize : bevelThickness - 0.1;\n          let bevelOffset = options.bevelOffset !== void 0 ? options.bevelOffset : 0;\n          let bevelSegments = options.bevelSegments !== void 0 ? options.bevelSegments : 3;\n          const extrudePath = options.extrudePath;\n          const uvgen = options.UVGenerator !== void 0 ? options.UVGenerator : WorldUVGenerator;\n          let extrudePts, extrudeByPath = false;\n          let splineTube, binormal, normal, position2;\n          if (extrudePath) {\n            extrudePts = extrudePath.getSpacedPoints(steps);\n            extrudeByPath = true;\n            bevelEnabled = false;\n            splineTube = extrudePath.computeFrenetFrames(steps, false);\n            binormal = new Vector3();\n            normal = new Vector3();\n            position2 = new Vector3();\n          }\n          if (!bevelEnabled) {\n            bevelSegments = 0;\n            bevelThickness = 0;\n            bevelSize = 0;\n            bevelOffset = 0;\n          }\n          const shapePoints = shape.extractPoints(curveSegments);\n          let vertices = shapePoints.shape;\n          const holes = shapePoints.holes;\n          const reverse = !ShapeUtils.isClockWise(vertices);\n          if (reverse) {\n            vertices = vertices.reverse();\n            for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n              const ahole = holes[h2];\n              if (ShapeUtils.isClockWise(ahole)) {\n                holes[h2] = ahole.reverse();\n              }\n            }\n          }\n          const faces = ShapeUtils.triangulateShape(vertices, holes);\n          const contour = vertices;\n          for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n            const ahole = holes[h2];\n            vertices = vertices.concat(ahole);\n          }\n          function scalePt2(pt, vec, size) {\n            if (!vec) console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n            return pt.clone().addScaledVector(vec, size);\n          }\n          const vlen = vertices.length, flen = faces.length;\n          function getBevelVec(inPt, inPrev, inNext) {\n            let v_trans_x, v_trans_y, shrink_by;\n            const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n            const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n            const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n            const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n            if (Math.abs(collinear0) > Number.EPSILON) {\n              const v_prev_len = Math.sqrt(v_prev_lensq);\n              const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n              const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n              const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n              const ptNextShift_x = inNext.x - v_next_y / v_next_len;\n              const ptNextShift_y = inNext.y + v_next_x / v_next_len;\n              const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n              v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n              v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n              const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n              if (v_trans_lensq <= 2) {\n                return new Vector2(v_trans_x, v_trans_y);\n              } else {\n                shrink_by = Math.sqrt(v_trans_lensq / 2);\n              }\n            } else {\n              let direction_eq = false;\n              if (v_prev_x > Number.EPSILON) {\n                if (v_next_x > Number.EPSILON) {\n                  direction_eq = true;\n                }\n              } else {\n                if (v_prev_x < -Number.EPSILON) {\n                  if (v_next_x < -Number.EPSILON) {\n                    direction_eq = true;\n                  }\n                } else {\n                  if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n                    direction_eq = true;\n                  }\n                }\n              }\n              if (direction_eq) {\n                v_trans_x = -v_prev_y;\n                v_trans_y = v_prev_x;\n                shrink_by = Math.sqrt(v_prev_lensq);\n              } else {\n                v_trans_x = v_prev_x;\n                v_trans_y = v_prev_y;\n                shrink_by = Math.sqrt(v_prev_lensq / 2);\n              }\n            }\n            return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n          }\n          const contourMovements = [];\n          for (let i2 = 0, il = contour.length, j2 = il - 1, k3 = i2 + 1; i2 < il; i2++, j2++, k3++) {\n            if (j2 === il) j2 = 0;\n            if (k3 === il) k3 = 0;\n            contourMovements[i2] = getBevelVec(contour[i2], contour[j2], contour[k3]);\n          }\n          const holesMovements = [];\n          let oneHoleMovements, verticesMovements = contourMovements.concat();\n          for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n            const ahole = holes[h2];\n            oneHoleMovements = [];\n            for (let i2 = 0, il = ahole.length, j2 = il - 1, k3 = i2 + 1; i2 < il; i2++, j2++, k3++) {\n              if (j2 === il) j2 = 0;\n              if (k3 === il) k3 = 0;\n              oneHoleMovements[i2] = getBevelVec(ahole[i2], ahole[j2], ahole[k3]);\n            }\n            holesMovements.push(oneHoleMovements);\n            verticesMovements = verticesMovements.concat(oneHoleMovements);\n          }\n          for (let b = 0; b < bevelSegments; b++) {\n            const t2 = b / bevelSegments;\n            const z2 = bevelThickness * Math.cos(t2 * Math.PI / 2);\n            const bs2 = bevelSize * Math.sin(t2 * Math.PI / 2) + bevelOffset;\n            for (let i2 = 0, il = contour.length; i2 < il; i2++) {\n              const vert = scalePt2(contour[i2], contourMovements[i2], bs2);\n              v2(vert.x, vert.y, -z2);\n            }\n            for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n              const ahole = holes[h2];\n              oneHoleMovements = holesMovements[h2];\n              for (let i2 = 0, il = ahole.length; i2 < il; i2++) {\n                const vert = scalePt2(ahole[i2], oneHoleMovements[i2], bs2);\n                v2(vert.x, vert.y, -z2);\n              }\n            }\n          }\n          const bs = bevelSize + bevelOffset;\n          for (let i2 = 0; i2 < vlen; i2++) {\n            const vert = bevelEnabled ? scalePt2(vertices[i2], verticesMovements[i2], bs) : vertices[i2];\n            if (!extrudeByPath) {\n              v2(vert.x, vert.y, 0);\n            } else {\n              normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n              binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n              position2.copy(extrudePts[0]).add(normal).add(binormal);\n              v2(position2.x, position2.y, position2.z);\n            }\n          }\n          for (let s = 1; s <= steps; s++) {\n            for (let i2 = 0; i2 < vlen; i2++) {\n              const vert = bevelEnabled ? scalePt2(vertices[i2], verticesMovements[i2], bs) : vertices[i2];\n              if (!extrudeByPath) {\n                v2(vert.x, vert.y, depth / steps * s);\n              } else {\n                normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n                binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n                position2.copy(extrudePts[s]).add(normal).add(binormal);\n                v2(position2.x, position2.y, position2.z);\n              }\n            }\n          }\n          for (let b = bevelSegments - 1; b >= 0; b--) {\n            const t2 = b / bevelSegments;\n            const z2 = bevelThickness * Math.cos(t2 * Math.PI / 2);\n            const bs2 = bevelSize * Math.sin(t2 * Math.PI / 2) + bevelOffset;\n            for (let i2 = 0, il = contour.length; i2 < il; i2++) {\n              const vert = scalePt2(contour[i2], contourMovements[i2], bs2);\n              v2(vert.x, vert.y, depth + z2);\n            }\n            for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n              const ahole = holes[h2];\n              oneHoleMovements = holesMovements[h2];\n              for (let i2 = 0, il = ahole.length; i2 < il; i2++) {\n                const vert = scalePt2(ahole[i2], oneHoleMovements[i2], bs2);\n                if (!extrudeByPath) {\n                  v2(vert.x, vert.y, depth + z2);\n                } else {\n                  v2(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z2);\n                }\n              }\n            }\n          }\n          buildLidFaces();\n          buildSideFaces();\n          function buildLidFaces() {\n            const start = verticesArray.length / 3;\n            if (bevelEnabled) {\n              let layer = 0;\n              let offset = vlen * layer;\n              for (let i2 = 0; i2 < flen; i2++) {\n                const face = faces[i2];\n                f3(face[2] + offset, face[1] + offset, face[0] + offset);\n              }\n              layer = steps + bevelSegments * 2;\n              offset = vlen * layer;\n              for (let i2 = 0; i2 < flen; i2++) {\n                const face = faces[i2];\n                f3(face[0] + offset, face[1] + offset, face[2] + offset);\n              }\n            } else {\n              for (let i2 = 0; i2 < flen; i2++) {\n                const face = faces[i2];\n                f3(face[2], face[1], face[0]);\n              }\n              for (let i2 = 0; i2 < flen; i2++) {\n                const face = faces[i2];\n                f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n              }\n            }\n            scope.addGroup(start, verticesArray.length / 3 - start, 0);\n          }\n          function buildSideFaces() {\n            const start = verticesArray.length / 3;\n            let layeroffset = 0;\n            sidewalls(contour, layeroffset);\n            layeroffset += contour.length;\n            for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n              const ahole = holes[h2];\n              sidewalls(ahole, layeroffset);\n              layeroffset += ahole.length;\n            }\n            scope.addGroup(start, verticesArray.length / 3 - start, 1);\n          }\n          function sidewalls(contour2, layeroffset) {\n            let i2 = contour2.length;\n            while (--i2 >= 0) {\n              const j2 = i2;\n              let k3 = i2 - 1;\n              if (k3 < 0) k3 = contour2.length - 1;\n              for (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) {\n                const slen1 = vlen * s;\n                const slen2 = vlen * (s + 1);\n                const a = layeroffset + j2 + slen1, b = layeroffset + k3 + slen1, c = layeroffset + k3 + slen2, d = layeroffset + j2 + slen2;\n                f4(a, b, c, d);\n              }\n            }\n          }\n          function v2(x, y2, z2) {\n            placeholder.push(x);\n            placeholder.push(y2);\n            placeholder.push(z2);\n          }\n          function f3(a, b, c) {\n            addVertex(a);\n            addVertex(b);\n            addVertex(c);\n            const nextIndex = verticesArray.length / 3;\n            const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n            addUV(uvs[0]);\n            addUV(uvs[1]);\n            addUV(uvs[2]);\n          }\n          function f4(a, b, c, d) {\n            addVertex(a);\n            addVertex(b);\n            addVertex(d);\n            addVertex(b);\n            addVertex(c);\n            addVertex(d);\n            const nextIndex = verticesArray.length / 3;\n            const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n            addUV(uvs[0]);\n            addUV(uvs[1]);\n            addUV(uvs[3]);\n            addUV(uvs[1]);\n            addUV(uvs[2]);\n            addUV(uvs[3]);\n          }\n          function addVertex(index) {\n            verticesArray.push(placeholder[index * 3 + 0]);\n            verticesArray.push(placeholder[index * 3 + 1]);\n            verticesArray.push(placeholder[index * 3 + 2]);\n          }\n          function addUV(vector2) {\n            uvArray.push(vector2.x);\n            uvArray.push(vector2.y);\n          }\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        const shapes = this.parameters.shapes;\n        const options = this.parameters.options;\n        return toJSON$1(shapes, options, data);\n      }\n      static fromJSON(data, shapes) {\n        const geometryShapes = [];\n        for (let j2 = 0, jl = data.shapes.length; j2 < jl; j2++) {\n          const shape = shapes[data.shapes[j2]];\n          geometryShapes.push(shape);\n        }\n        const extrudePath = data.options.extrudePath;\n        if (extrudePath !== void 0) {\n          data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n        }\n        return new _ExtrudeGeometry(geometryShapes, data.options);\n      }\n    };\n    WorldUVGenerator = {\n      generateTopUV: function(geometry, vertices, indexA, indexB, indexC) {\n        const a_x = vertices[indexA * 3];\n        const a_y = vertices[indexA * 3 + 1];\n        const b_x = vertices[indexB * 3];\n        const b_y = vertices[indexB * 3 + 1];\n        const c_x = vertices[indexC * 3];\n        const c_y = vertices[indexC * 3 + 1];\n        return [\n          new Vector2(a_x, a_y),\n          new Vector2(b_x, b_y),\n          new Vector2(c_x, c_y)\n        ];\n      },\n      generateSideWallUV: function(geometry, vertices, indexA, indexB, indexC, indexD) {\n        const a_x = vertices[indexA * 3];\n        const a_y = vertices[indexA * 3 + 1];\n        const a_z = vertices[indexA * 3 + 2];\n        const b_x = vertices[indexB * 3];\n        const b_y = vertices[indexB * 3 + 1];\n        const b_z = vertices[indexB * 3 + 2];\n        const c_x = vertices[indexC * 3];\n        const c_y = vertices[indexC * 3 + 1];\n        const c_z = vertices[indexC * 3 + 2];\n        const d_x = vertices[indexD * 3];\n        const d_y = vertices[indexD * 3 + 1];\n        const d_z = vertices[indexD * 3 + 2];\n        if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n          return [\n            new Vector2(a_x, 1 - a_z),\n            new Vector2(b_x, 1 - b_z),\n            new Vector2(c_x, 1 - c_z),\n            new Vector2(d_x, 1 - d_z)\n          ];\n        } else {\n          return [\n            new Vector2(a_y, 1 - a_z),\n            new Vector2(b_y, 1 - b_z),\n            new Vector2(c_y, 1 - c_z),\n            new Vector2(d_y, 1 - d_z)\n          ];\n        }\n      }\n    };\n    IcosahedronGeometry = class _IcosahedronGeometry extends PolyhedronGeometry {\n      constructor(radius = 1, detail = 0) {\n        const t2 = (1 + Math.sqrt(5)) / 2;\n        const vertices = [\n          -1,\n          t2,\n          0,\n          1,\n          t2,\n          0,\n          -1,\n          -t2,\n          0,\n          1,\n          -t2,\n          0,\n          0,\n          -1,\n          t2,\n          0,\n          1,\n          t2,\n          0,\n          -1,\n          -t2,\n          0,\n          1,\n          -t2,\n          t2,\n          0,\n          -1,\n          t2,\n          0,\n          1,\n          -t2,\n          0,\n          -1,\n          -t2,\n          0,\n          1\n        ];\n        const indices = [\n          0,\n          11,\n          5,\n          0,\n          5,\n          1,\n          0,\n          1,\n          7,\n          0,\n          7,\n          10,\n          0,\n          10,\n          11,\n          1,\n          5,\n          9,\n          5,\n          11,\n          4,\n          11,\n          10,\n          2,\n          10,\n          7,\n          6,\n          7,\n          1,\n          8,\n          3,\n          9,\n          4,\n          3,\n          4,\n          2,\n          3,\n          2,\n          6,\n          3,\n          6,\n          8,\n          3,\n          8,\n          9,\n          4,\n          9,\n          5,\n          2,\n          4,\n          11,\n          6,\n          2,\n          10,\n          8,\n          6,\n          7,\n          9,\n          8,\n          1\n        ];\n        super(vertices, indices, radius, detail);\n        this.type = \"IcosahedronGeometry\";\n        this.parameters = {\n          radius,\n          detail\n        };\n      }\n      static fromJSON(data) {\n        return new _IcosahedronGeometry(data.radius, data.detail);\n      }\n    };\n    OctahedronGeometry = class _OctahedronGeometry extends PolyhedronGeometry {\n      constructor(radius = 1, detail = 0) {\n        const vertices = [\n          1,\n          0,\n          0,\n          -1,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          -1,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          -1\n        ];\n        const indices = [\n          0,\n          2,\n          4,\n          0,\n          4,\n          3,\n          0,\n          3,\n          5,\n          0,\n          5,\n          2,\n          1,\n          2,\n          5,\n          1,\n          5,\n          3,\n          1,\n          3,\n          4,\n          1,\n          4,\n          2\n        ];\n        super(vertices, indices, radius, detail);\n        this.type = \"OctahedronGeometry\";\n        this.parameters = {\n          radius,\n          detail\n        };\n      }\n      static fromJSON(data) {\n        return new _OctahedronGeometry(data.radius, data.detail);\n      }\n    };\n    RingGeometry = class _RingGeometry extends BufferGeometry {\n      constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n        super();\n        this.type = \"RingGeometry\";\n        this.parameters = {\n          innerRadius,\n          outerRadius,\n          thetaSegments,\n          phiSegments,\n          thetaStart,\n          thetaLength\n        };\n        thetaSegments = Math.max(3, thetaSegments);\n        phiSegments = Math.max(1, phiSegments);\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        let radius = innerRadius;\n        const radiusStep = (outerRadius - innerRadius) / phiSegments;\n        const vertex2 = new Vector3();\n        const uv = new Vector2();\n        for (let j2 = 0; j2 <= phiSegments; j2++) {\n          for (let i2 = 0; i2 <= thetaSegments; i2++) {\n            const segment = thetaStart + i2 / thetaSegments * thetaLength;\n            vertex2.x = radius * Math.cos(segment);\n            vertex2.y = radius * Math.sin(segment);\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n            normals.push(0, 0, 1);\n            uv.x = (vertex2.x / outerRadius + 1) / 2;\n            uv.y = (vertex2.y / outerRadius + 1) / 2;\n            uvs.push(uv.x, uv.y);\n          }\n          radius += radiusStep;\n        }\n        for (let j2 = 0; j2 < phiSegments; j2++) {\n          const thetaSegmentLevel = j2 * (thetaSegments + 1);\n          for (let i2 = 0; i2 < thetaSegments; i2++) {\n            const segment = i2 + thetaSegmentLevel;\n            const a = segment;\n            const b = segment + thetaSegments + 1;\n            const c = segment + thetaSegments + 2;\n            const d = segment + 1;\n            indices.push(a, b, d);\n            indices.push(b, c, d);\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n      }\n    };\n    ShapeGeometry = class _ShapeGeometry extends BufferGeometry {\n      constructor(shapes = new Shape([new Vector2(0, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), curveSegments = 12) {\n        super();\n        this.type = \"ShapeGeometry\";\n        this.parameters = {\n          shapes,\n          curveSegments\n        };\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        let groupStart = 0;\n        let groupCount = 0;\n        if (Array.isArray(shapes) === false) {\n          addShape(shapes);\n        } else {\n          for (let i2 = 0; i2 < shapes.length; i2++) {\n            addShape(shapes[i2]);\n            this.addGroup(groupStart, groupCount, i2);\n            groupStart += groupCount;\n            groupCount = 0;\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n        function addShape(shape) {\n          const indexOffset = vertices.length / 3;\n          const points = shape.extractPoints(curveSegments);\n          let shapeVertices = points.shape;\n          const shapeHoles = points.holes;\n          if (ShapeUtils.isClockWise(shapeVertices) === false) {\n            shapeVertices = shapeVertices.reverse();\n          }\n          for (let i2 = 0, l2 = shapeHoles.length; i2 < l2; i2++) {\n            const shapeHole = shapeHoles[i2];\n            if (ShapeUtils.isClockWise(shapeHole) === true) {\n              shapeHoles[i2] = shapeHole.reverse();\n            }\n          }\n          const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n          for (let i2 = 0, l2 = shapeHoles.length; i2 < l2; i2++) {\n            const shapeHole = shapeHoles[i2];\n            shapeVertices = shapeVertices.concat(shapeHole);\n          }\n          for (let i2 = 0, l2 = shapeVertices.length; i2 < l2; i2++) {\n            const vertex2 = shapeVertices[i2];\n            vertices.push(vertex2.x, vertex2.y, 0);\n            normals.push(0, 0, 1);\n            uvs.push(vertex2.x, vertex2.y);\n          }\n          for (let i2 = 0, l2 = faces.length; i2 < l2; i2++) {\n            const face = faces[i2];\n            const a = face[0] + indexOffset;\n            const b = face[1] + indexOffset;\n            const c = face[2] + indexOffset;\n            indices.push(a, b, c);\n            groupCount += 3;\n          }\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        const shapes = this.parameters.shapes;\n        return toJSON(shapes, data);\n      }\n      static fromJSON(data, shapes) {\n        const geometryShapes = [];\n        for (let j2 = 0, jl = data.shapes.length; j2 < jl; j2++) {\n          const shape = shapes[data.shapes[j2]];\n          geometryShapes.push(shape);\n        }\n        return new _ShapeGeometry(geometryShapes, data.curveSegments);\n      }\n    };\n    SphereGeometry = class _SphereGeometry extends BufferGeometry {\n      constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n        super();\n        this.type = \"SphereGeometry\";\n        this.parameters = {\n          radius,\n          widthSegments,\n          heightSegments,\n          phiStart,\n          phiLength,\n          thetaStart,\n          thetaLength\n        };\n        widthSegments = Math.max(3, Math.floor(widthSegments));\n        heightSegments = Math.max(2, Math.floor(heightSegments));\n        const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n        let index = 0;\n        const grid = [];\n        const vertex2 = new Vector3();\n        const normal = new Vector3();\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        for (let iy = 0; iy <= heightSegments; iy++) {\n          const verticesRow = [];\n          const v2 = iy / heightSegments;\n          let uOffset = 0;\n          if (iy === 0 && thetaStart === 0) {\n            uOffset = 0.5 / widthSegments;\n          } else if (iy === heightSegments && thetaEnd === Math.PI) {\n            uOffset = -0.5 / widthSegments;\n          }\n          for (let ix = 0; ix <= widthSegments; ix++) {\n            const u3 = ix / widthSegments;\n            vertex2.x = -radius * Math.cos(phiStart + u3 * phiLength) * Math.sin(thetaStart + v2 * thetaLength);\n            vertex2.y = radius * Math.cos(thetaStart + v2 * thetaLength);\n            vertex2.z = radius * Math.sin(phiStart + u3 * phiLength) * Math.sin(thetaStart + v2 * thetaLength);\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n            normal.copy(vertex2).normalize();\n            normals.push(normal.x, normal.y, normal.z);\n            uvs.push(u3 + uOffset, 1 - v2);\n            verticesRow.push(index++);\n          }\n          grid.push(verticesRow);\n        }\n        for (let iy = 0; iy < heightSegments; iy++) {\n          for (let ix = 0; ix < widthSegments; ix++) {\n            const a = grid[iy][ix + 1];\n            const b = grid[iy][ix];\n            const c = grid[iy + 1][ix];\n            const d = grid[iy + 1][ix + 1];\n            if (iy !== 0 || thetaStart > 0) indices.push(a, b, d);\n            if (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b, c, d);\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n      }\n    };\n    TetrahedronGeometry = class _TetrahedronGeometry extends PolyhedronGeometry {\n      constructor(radius = 1, detail = 0) {\n        const vertices = [\n          1,\n          1,\n          1,\n          -1,\n          -1,\n          1,\n          -1,\n          1,\n          -1,\n          1,\n          -1,\n          -1\n        ];\n        const indices = [\n          2,\n          1,\n          0,\n          0,\n          3,\n          2,\n          1,\n          3,\n          0,\n          2,\n          3,\n          1\n        ];\n        super(vertices, indices, radius, detail);\n        this.type = \"TetrahedronGeometry\";\n        this.parameters = {\n          radius,\n          detail\n        };\n      }\n      static fromJSON(data) {\n        return new _TetrahedronGeometry(data.radius, data.detail);\n      }\n    };\n    TorusGeometry = class _TorusGeometry extends BufferGeometry {\n      constructor(radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2) {\n        super();\n        this.type = \"TorusGeometry\";\n        this.parameters = {\n          radius,\n          tube,\n          radialSegments,\n          tubularSegments,\n          arc\n        };\n        radialSegments = Math.floor(radialSegments);\n        tubularSegments = Math.floor(tubularSegments);\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        const center = new Vector3();\n        const vertex2 = new Vector3();\n        const normal = new Vector3();\n        for (let j2 = 0; j2 <= radialSegments; j2++) {\n          for (let i2 = 0; i2 <= tubularSegments; i2++) {\n            const u3 = i2 / tubularSegments * arc;\n            const v2 = j2 / radialSegments * Math.PI * 2;\n            vertex2.x = (radius + tube * Math.cos(v2)) * Math.cos(u3);\n            vertex2.y = (radius + tube * Math.cos(v2)) * Math.sin(u3);\n            vertex2.z = tube * Math.sin(v2);\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n            center.x = radius * Math.cos(u3);\n            center.y = radius * Math.sin(u3);\n            normal.subVectors(vertex2, center).normalize();\n            normals.push(normal.x, normal.y, normal.z);\n            uvs.push(i2 / tubularSegments);\n            uvs.push(j2 / radialSegments);\n          }\n        }\n        for (let j2 = 1; j2 <= radialSegments; j2++) {\n          for (let i2 = 1; i2 <= tubularSegments; i2++) {\n            const a = (tubularSegments + 1) * j2 + i2 - 1;\n            const b = (tubularSegments + 1) * (j2 - 1) + i2 - 1;\n            const c = (tubularSegments + 1) * (j2 - 1) + i2;\n            const d = (tubularSegments + 1) * j2 + i2;\n            indices.push(a, b, d);\n            indices.push(b, c, d);\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n      }\n    };\n    TorusKnotGeometry = class _TorusKnotGeometry extends BufferGeometry {\n      constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p3 = 2, q3 = 3) {\n        super();\n        this.type = \"TorusKnotGeometry\";\n        this.parameters = {\n          radius,\n          tube,\n          tubularSegments,\n          radialSegments,\n          p: p3,\n          q: q3\n        };\n        tubularSegments = Math.floor(tubularSegments);\n        radialSegments = Math.floor(radialSegments);\n        const indices = [];\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        const vertex2 = new Vector3();\n        const normal = new Vector3();\n        const P1 = new Vector3();\n        const P2 = new Vector3();\n        const B2 = new Vector3();\n        const T3 = new Vector3();\n        const N2 = new Vector3();\n        for (let i2 = 0; i2 <= tubularSegments; ++i2) {\n          const u3 = i2 / tubularSegments * p3 * Math.PI * 2;\n          calculatePositionOnCurve(u3, p3, q3, radius, P1);\n          calculatePositionOnCurve(u3 + 0.01, p3, q3, radius, P2);\n          T3.subVectors(P2, P1);\n          N2.addVectors(P2, P1);\n          B2.crossVectors(T3, N2);\n          N2.crossVectors(B2, T3);\n          B2.normalize();\n          N2.normalize();\n          for (let j2 = 0; j2 <= radialSegments; ++j2) {\n            const v2 = j2 / radialSegments * Math.PI * 2;\n            const cx = -tube * Math.cos(v2);\n            const cy = tube * Math.sin(v2);\n            vertex2.x = P1.x + (cx * N2.x + cy * B2.x);\n            vertex2.y = P1.y + (cx * N2.y + cy * B2.y);\n            vertex2.z = P1.z + (cx * N2.z + cy * B2.z);\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n            normal.subVectors(vertex2, P1).normalize();\n            normals.push(normal.x, normal.y, normal.z);\n            uvs.push(i2 / tubularSegments);\n            uvs.push(j2 / radialSegments);\n          }\n        }\n        for (let j2 = 1; j2 <= tubularSegments; j2++) {\n          for (let i2 = 1; i2 <= radialSegments; i2++) {\n            const a = (radialSegments + 1) * (j2 - 1) + (i2 - 1);\n            const b = (radialSegments + 1) * j2 + (i2 - 1);\n            const c = (radialSegments + 1) * j2 + i2;\n            const d = (radialSegments + 1) * (j2 - 1) + i2;\n            indices.push(a, b, d);\n            indices.push(b, c, d);\n          }\n        }\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n        function calculatePositionOnCurve(u3, p22, q22, radius2, position) {\n          const cu = Math.cos(u3);\n          const su = Math.sin(u3);\n          const quOverP = q22 / p22 * u3;\n          const cs = Math.cos(quOverP);\n          position.x = radius2 * (2 + cs) * 0.5 * cu;\n          position.y = radius2 * (2 + cs) * su * 0.5;\n          position.z = radius2 * Math.sin(quOverP) * 0.5;\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      static fromJSON(data) {\n        return new _TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n      }\n    };\n    TubeGeometry = class _TubeGeometry extends BufferGeometry {\n      constructor(path = new QuadraticBezierCurve3(new Vector3(-1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0)), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n        super();\n        this.type = \"TubeGeometry\";\n        this.parameters = {\n          path,\n          tubularSegments,\n          radius,\n          radialSegments,\n          closed\n        };\n        const frames = path.computeFrenetFrames(tubularSegments, closed);\n        this.tangents = frames.tangents;\n        this.normals = frames.normals;\n        this.binormals = frames.binormals;\n        const vertex2 = new Vector3();\n        const normal = new Vector3();\n        const uv = new Vector2();\n        let P2 = new Vector3();\n        const vertices = [];\n        const normals = [];\n        const uvs = [];\n        const indices = [];\n        generateBufferData();\n        this.setIndex(indices);\n        this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n        this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n        function generateBufferData() {\n          for (let i2 = 0; i2 < tubularSegments; i2++) {\n            generateSegment(i2);\n          }\n          generateSegment(closed === false ? tubularSegments : 0);\n          generateUVs();\n          generateIndices();\n        }\n        function generateSegment(i2) {\n          P2 = path.getPointAt(i2 / tubularSegments, P2);\n          const N2 = frames.normals[i2];\n          const B2 = frames.binormals[i2];\n          for (let j2 = 0; j2 <= radialSegments; j2++) {\n            const v2 = j2 / radialSegments * Math.PI * 2;\n            const sin = Math.sin(v2);\n            const cos = -Math.cos(v2);\n            normal.x = cos * N2.x + sin * B2.x;\n            normal.y = cos * N2.y + sin * B2.y;\n            normal.z = cos * N2.z + sin * B2.z;\n            normal.normalize();\n            normals.push(normal.x, normal.y, normal.z);\n            vertex2.x = P2.x + radius * normal.x;\n            vertex2.y = P2.y + radius * normal.y;\n            vertex2.z = P2.z + radius * normal.z;\n            vertices.push(vertex2.x, vertex2.y, vertex2.z);\n          }\n        }\n        function generateIndices() {\n          for (let j2 = 1; j2 <= tubularSegments; j2++) {\n            for (let i2 = 1; i2 <= radialSegments; i2++) {\n              const a = (radialSegments + 1) * (j2 - 1) + (i2 - 1);\n              const b = (radialSegments + 1) * j2 + (i2 - 1);\n              const c = (radialSegments + 1) * j2 + i2;\n              const d = (radialSegments + 1) * (j2 - 1) + i2;\n              indices.push(a, b, d);\n              indices.push(b, c, d);\n            }\n          }\n        }\n        function generateUVs() {\n          for (let i2 = 0; i2 <= tubularSegments; i2++) {\n            for (let j2 = 0; j2 <= radialSegments; j2++) {\n              uv.x = i2 / tubularSegments;\n              uv.y = j2 / radialSegments;\n              uvs.push(uv.x, uv.y);\n            }\n          }\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.path = this.parameters.path.toJSON();\n        return data;\n      }\n      static fromJSON(data) {\n        return new _TubeGeometry(\n          new Curves[data.path.type]().fromJSON(data.path),\n          data.tubularSegments,\n          data.radius,\n          data.radialSegments,\n          data.closed\n        );\n      }\n    };\n    WireframeGeometry = class extends BufferGeometry {\n      constructor(geometry = null) {\n        super();\n        this.type = \"WireframeGeometry\";\n        this.parameters = {\n          geometry\n        };\n        if (geometry !== null) {\n          const vertices = [];\n          const edges = /* @__PURE__ */ new Set();\n          const start = new Vector3();\n          const end = new Vector3();\n          if (geometry.index !== null) {\n            const position = geometry.attributes.position;\n            const indices = geometry.index;\n            let groups = geometry.groups;\n            if (groups.length === 0) {\n              groups = [{ start: 0, count: indices.count, materialIndex: 0 }];\n            }\n            for (let o = 0, ol = groups.length; o < ol; ++o) {\n              const group = groups[o];\n              const groupStart = group.start;\n              const groupCount = group.count;\n              for (let i2 = groupStart, l2 = groupStart + groupCount; i2 < l2; i2 += 3) {\n                for (let j2 = 0; j2 < 3; j2++) {\n                  const index1 = indices.getX(i2 + j2);\n                  const index2 = indices.getX(i2 + (j2 + 1) % 3);\n                  start.fromBufferAttribute(position, index1);\n                  end.fromBufferAttribute(position, index2);\n                  if (isUniqueEdge(start, end, edges) === true) {\n                    vertices.push(start.x, start.y, start.z);\n                    vertices.push(end.x, end.y, end.z);\n                  }\n                }\n              }\n            }\n          } else {\n            const position = geometry.attributes.position;\n            for (let i2 = 0, l2 = position.count / 3; i2 < l2; i2++) {\n              for (let j2 = 0; j2 < 3; j2++) {\n                const index1 = 3 * i2 + j2;\n                const index2 = 3 * i2 + (j2 + 1) % 3;\n                start.fromBufferAttribute(position, index1);\n                end.fromBufferAttribute(position, index2);\n                if (isUniqueEdge(start, end, edges) === true) {\n                  vertices.push(start.x, start.y, start.z);\n                  vertices.push(end.x, end.y, end.z);\n                }\n              }\n            }\n          }\n          this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        }\n      }\n      copy(source) {\n        super.copy(source);\n        this.parameters = Object.assign({}, source.parameters);\n        return this;\n      }\n    };\n    Geometries = /* @__PURE__ */ Object.freeze({\n      __proto__: null,\n      BoxGeometry,\n      CapsuleGeometry,\n      CircleGeometry,\n      ConeGeometry,\n      CylinderGeometry,\n      DodecahedronGeometry,\n      EdgesGeometry,\n      ExtrudeGeometry,\n      IcosahedronGeometry,\n      LatheGeometry,\n      OctahedronGeometry,\n      PlaneGeometry,\n      PolyhedronGeometry,\n      RingGeometry,\n      ShapeGeometry,\n      SphereGeometry,\n      TetrahedronGeometry,\n      TorusGeometry,\n      TorusKnotGeometry,\n      TubeGeometry,\n      WireframeGeometry\n    });\n    ShadowMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isShadowMaterial = true;\n        this.type = \"ShadowMaterial\";\n        this.color = new Color(0);\n        this.transparent = true;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    RawShaderMaterial = class extends ShaderMaterial {\n      constructor(parameters) {\n        super(parameters);\n        this.isRawShaderMaterial = true;\n        this.type = \"RawShaderMaterial\";\n      }\n    };\n    MeshStandardMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshStandardMaterial = true;\n        this.defines = { \"STANDARD\": \"\" };\n        this.type = \"MeshStandardMaterial\";\n        this.color = new Color(16777215);\n        this.roughness = 1;\n        this.metalness = 0;\n        this.map = null;\n        this.lightMap = null;\n        this.lightMapIntensity = 1;\n        this.aoMap = null;\n        this.aoMapIntensity = 1;\n        this.emissive = new Color(0);\n        this.emissiveIntensity = 1;\n        this.emissiveMap = null;\n        this.bumpMap = null;\n        this.bumpScale = 1;\n        this.normalMap = null;\n        this.normalMapType = TangentSpaceNormalMap;\n        this.normalScale = new Vector2(1, 1);\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.roughnessMap = null;\n        this.metalnessMap = null;\n        this.alphaMap = null;\n        this.envMap = null;\n        this.envMapRotation = new Euler();\n        this.envMapIntensity = 1;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.wireframeLinecap = \"round\";\n        this.wireframeLinejoin = \"round\";\n        this.flatShading = false;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.defines = { \"STANDARD\": \"\" };\n        this.color.copy(source.color);\n        this.roughness = source.roughness;\n        this.metalness = source.metalness;\n        this.map = source.map;\n        this.lightMap = source.lightMap;\n        this.lightMapIntensity = source.lightMapIntensity;\n        this.aoMap = source.aoMap;\n        this.aoMapIntensity = source.aoMapIntensity;\n        this.emissive.copy(source.emissive);\n        this.emissiveMap = source.emissiveMap;\n        this.emissiveIntensity = source.emissiveIntensity;\n        this.bumpMap = source.bumpMap;\n        this.bumpScale = source.bumpScale;\n        this.normalMap = source.normalMap;\n        this.normalMapType = source.normalMapType;\n        this.normalScale.copy(source.normalScale);\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.roughnessMap = source.roughnessMap;\n        this.metalnessMap = source.metalnessMap;\n        this.alphaMap = source.alphaMap;\n        this.envMap = source.envMap;\n        this.envMapRotation.copy(source.envMapRotation);\n        this.envMapIntensity = source.envMapIntensity;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.wireframeLinecap = source.wireframeLinecap;\n        this.wireframeLinejoin = source.wireframeLinejoin;\n        this.flatShading = source.flatShading;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    MeshPhysicalMaterial = class extends MeshStandardMaterial {\n      constructor(parameters) {\n        super();\n        this.isMeshPhysicalMaterial = true;\n        this.defines = {\n          \"STANDARD\": \"\",\n          \"PHYSICAL\": \"\"\n        };\n        this.type = \"MeshPhysicalMaterial\";\n        this.anisotropyRotation = 0;\n        this.anisotropyMap = null;\n        this.clearcoatMap = null;\n        this.clearcoatRoughness = 0;\n        this.clearcoatRoughnessMap = null;\n        this.clearcoatNormalScale = new Vector2(1, 1);\n        this.clearcoatNormalMap = null;\n        this.ior = 1.5;\n        Object.defineProperty(this, \"reflectivity\", {\n          get: function() {\n            return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n          },\n          set: function(reflectivity) {\n            this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n          }\n        });\n        this.iridescenceMap = null;\n        this.iridescenceIOR = 1.3;\n        this.iridescenceThicknessRange = [100, 400];\n        this.iridescenceThicknessMap = null;\n        this.sheenColor = new Color(0);\n        this.sheenColorMap = null;\n        this.sheenRoughness = 1;\n        this.sheenRoughnessMap = null;\n        this.transmissionMap = null;\n        this.thickness = 0;\n        this.thicknessMap = null;\n        this.attenuationDistance = Infinity;\n        this.attenuationColor = new Color(1, 1, 1);\n        this.specularIntensity = 1;\n        this.specularIntensityMap = null;\n        this.specularColor = new Color(1, 1, 1);\n        this.specularColorMap = null;\n        this._anisotropy = 0;\n        this._clearcoat = 0;\n        this._dispersion = 0;\n        this._iridescence = 0;\n        this._sheen = 0;\n        this._transmission = 0;\n        this.setValues(parameters);\n      }\n      get anisotropy() {\n        return this._anisotropy;\n      }\n      set anisotropy(value) {\n        if (this._anisotropy > 0 !== value > 0) {\n          this.version++;\n        }\n        this._anisotropy = value;\n      }\n      get clearcoat() {\n        return this._clearcoat;\n      }\n      set clearcoat(value) {\n        if (this._clearcoat > 0 !== value > 0) {\n          this.version++;\n        }\n        this._clearcoat = value;\n      }\n      get iridescence() {\n        return this._iridescence;\n      }\n      set iridescence(value) {\n        if (this._iridescence > 0 !== value > 0) {\n          this.version++;\n        }\n        this._iridescence = value;\n      }\n      get dispersion() {\n        return this._dispersion;\n      }\n      set dispersion(value) {\n        if (this._dispersion > 0 !== value > 0) {\n          this.version++;\n        }\n        this._dispersion = value;\n      }\n      get sheen() {\n        return this._sheen;\n      }\n      set sheen(value) {\n        if (this._sheen > 0 !== value > 0) {\n          this.version++;\n        }\n        this._sheen = value;\n      }\n      get transmission() {\n        return this._transmission;\n      }\n      set transmission(value) {\n        if (this._transmission > 0 !== value > 0) {\n          this.version++;\n        }\n        this._transmission = value;\n      }\n      copy(source) {\n        super.copy(source);\n        this.defines = {\n          \"STANDARD\": \"\",\n          \"PHYSICAL\": \"\"\n        };\n        this.anisotropy = source.anisotropy;\n        this.anisotropyRotation = source.anisotropyRotation;\n        this.anisotropyMap = source.anisotropyMap;\n        this.clearcoat = source.clearcoat;\n        this.clearcoatMap = source.clearcoatMap;\n        this.clearcoatRoughness = source.clearcoatRoughness;\n        this.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n        this.clearcoatNormalMap = source.clearcoatNormalMap;\n        this.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n        this.dispersion = source.dispersion;\n        this.ior = source.ior;\n        this.iridescence = source.iridescence;\n        this.iridescenceMap = source.iridescenceMap;\n        this.iridescenceIOR = source.iridescenceIOR;\n        this.iridescenceThicknessRange = [...source.iridescenceThicknessRange];\n        this.iridescenceThicknessMap = source.iridescenceThicknessMap;\n        this.sheen = source.sheen;\n        this.sheenColor.copy(source.sheenColor);\n        this.sheenColorMap = source.sheenColorMap;\n        this.sheenRoughness = source.sheenRoughness;\n        this.sheenRoughnessMap = source.sheenRoughnessMap;\n        this.transmission = source.transmission;\n        this.transmissionMap = source.transmissionMap;\n        this.thickness = source.thickness;\n        this.thicknessMap = source.thicknessMap;\n        this.attenuationDistance = source.attenuationDistance;\n        this.attenuationColor.copy(source.attenuationColor);\n        this.specularIntensity = source.specularIntensity;\n        this.specularIntensityMap = source.specularIntensityMap;\n        this.specularColor.copy(source.specularColor);\n        this.specularColorMap = source.specularColorMap;\n        return this;\n      }\n    };\n    MeshPhongMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshPhongMaterial = true;\n        this.type = \"MeshPhongMaterial\";\n        this.color = new Color(16777215);\n        this.specular = new Color(1118481);\n        this.shininess = 30;\n        this.map = null;\n        this.lightMap = null;\n        this.lightMapIntensity = 1;\n        this.aoMap = null;\n        this.aoMapIntensity = 1;\n        this.emissive = new Color(0);\n        this.emissiveIntensity = 1;\n        this.emissiveMap = null;\n        this.bumpMap = null;\n        this.bumpScale = 1;\n        this.normalMap = null;\n        this.normalMapType = TangentSpaceNormalMap;\n        this.normalScale = new Vector2(1, 1);\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.specularMap = null;\n        this.alphaMap = null;\n        this.envMap = null;\n        this.envMapRotation = new Euler();\n        this.combine = MultiplyOperation;\n        this.reflectivity = 1;\n        this.refractionRatio = 0.98;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.wireframeLinecap = \"round\";\n        this.wireframeLinejoin = \"round\";\n        this.flatShading = false;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.specular.copy(source.specular);\n        this.shininess = source.shininess;\n        this.map = source.map;\n        this.lightMap = source.lightMap;\n        this.lightMapIntensity = source.lightMapIntensity;\n        this.aoMap = source.aoMap;\n        this.aoMapIntensity = source.aoMapIntensity;\n        this.emissive.copy(source.emissive);\n        this.emissiveMap = source.emissiveMap;\n        this.emissiveIntensity = source.emissiveIntensity;\n        this.bumpMap = source.bumpMap;\n        this.bumpScale = source.bumpScale;\n        this.normalMap = source.normalMap;\n        this.normalMapType = source.normalMapType;\n        this.normalScale.copy(source.normalScale);\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.specularMap = source.specularMap;\n        this.alphaMap = source.alphaMap;\n        this.envMap = source.envMap;\n        this.envMapRotation.copy(source.envMapRotation);\n        this.combine = source.combine;\n        this.reflectivity = source.reflectivity;\n        this.refractionRatio = source.refractionRatio;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.wireframeLinecap = source.wireframeLinecap;\n        this.wireframeLinejoin = source.wireframeLinejoin;\n        this.flatShading = source.flatShading;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    MeshToonMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshToonMaterial = true;\n        this.defines = { \"TOON\": \"\" };\n        this.type = \"MeshToonMaterial\";\n        this.color = new Color(16777215);\n        this.map = null;\n        this.gradientMap = null;\n        this.lightMap = null;\n        this.lightMapIntensity = 1;\n        this.aoMap = null;\n        this.aoMapIntensity = 1;\n        this.emissive = new Color(0);\n        this.emissiveIntensity = 1;\n        this.emissiveMap = null;\n        this.bumpMap = null;\n        this.bumpScale = 1;\n        this.normalMap = null;\n        this.normalMapType = TangentSpaceNormalMap;\n        this.normalScale = new Vector2(1, 1);\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.alphaMap = null;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.wireframeLinecap = \"round\";\n        this.wireframeLinejoin = \"round\";\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.map = source.map;\n        this.gradientMap = source.gradientMap;\n        this.lightMap = source.lightMap;\n        this.lightMapIntensity = source.lightMapIntensity;\n        this.aoMap = source.aoMap;\n        this.aoMapIntensity = source.aoMapIntensity;\n        this.emissive.copy(source.emissive);\n        this.emissiveMap = source.emissiveMap;\n        this.emissiveIntensity = source.emissiveIntensity;\n        this.bumpMap = source.bumpMap;\n        this.bumpScale = source.bumpScale;\n        this.normalMap = source.normalMap;\n        this.normalMapType = source.normalMapType;\n        this.normalScale.copy(source.normalScale);\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.alphaMap = source.alphaMap;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.wireframeLinecap = source.wireframeLinecap;\n        this.wireframeLinejoin = source.wireframeLinejoin;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    MeshNormalMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshNormalMaterial = true;\n        this.type = \"MeshNormalMaterial\";\n        this.bumpMap = null;\n        this.bumpScale = 1;\n        this.normalMap = null;\n        this.normalMapType = TangentSpaceNormalMap;\n        this.normalScale = new Vector2(1, 1);\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.flatShading = false;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.bumpMap = source.bumpMap;\n        this.bumpScale = source.bumpScale;\n        this.normalMap = source.normalMap;\n        this.normalMapType = source.normalMapType;\n        this.normalScale.copy(source.normalScale);\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.flatShading = source.flatShading;\n        return this;\n      }\n    };\n    MeshLambertMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshLambertMaterial = true;\n        this.type = \"MeshLambertMaterial\";\n        this.color = new Color(16777215);\n        this.map = null;\n        this.lightMap = null;\n        this.lightMapIntensity = 1;\n        this.aoMap = null;\n        this.aoMapIntensity = 1;\n        this.emissive = new Color(0);\n        this.emissiveIntensity = 1;\n        this.emissiveMap = null;\n        this.bumpMap = null;\n        this.bumpScale = 1;\n        this.normalMap = null;\n        this.normalMapType = TangentSpaceNormalMap;\n        this.normalScale = new Vector2(1, 1);\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.specularMap = null;\n        this.alphaMap = null;\n        this.envMap = null;\n        this.envMapRotation = new Euler();\n        this.combine = MultiplyOperation;\n        this.reflectivity = 1;\n        this.refractionRatio = 0.98;\n        this.wireframe = false;\n        this.wireframeLinewidth = 1;\n        this.wireframeLinecap = \"round\";\n        this.wireframeLinejoin = \"round\";\n        this.flatShading = false;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.color.copy(source.color);\n        this.map = source.map;\n        this.lightMap = source.lightMap;\n        this.lightMapIntensity = source.lightMapIntensity;\n        this.aoMap = source.aoMap;\n        this.aoMapIntensity = source.aoMapIntensity;\n        this.emissive.copy(source.emissive);\n        this.emissiveMap = source.emissiveMap;\n        this.emissiveIntensity = source.emissiveIntensity;\n        this.bumpMap = source.bumpMap;\n        this.bumpScale = source.bumpScale;\n        this.normalMap = source.normalMap;\n        this.normalMapType = source.normalMapType;\n        this.normalScale.copy(source.normalScale);\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.specularMap = source.specularMap;\n        this.alphaMap = source.alphaMap;\n        this.envMap = source.envMap;\n        this.envMapRotation.copy(source.envMapRotation);\n        this.combine = source.combine;\n        this.reflectivity = source.reflectivity;\n        this.refractionRatio = source.refractionRatio;\n        this.wireframe = source.wireframe;\n        this.wireframeLinewidth = source.wireframeLinewidth;\n        this.wireframeLinecap = source.wireframeLinecap;\n        this.wireframeLinejoin = source.wireframeLinejoin;\n        this.flatShading = source.flatShading;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    MeshMatcapMaterial = class extends Material {\n      constructor(parameters) {\n        super();\n        this.isMeshMatcapMaterial = true;\n        this.defines = { \"MATCAP\": \"\" };\n        this.type = \"MeshMatcapMaterial\";\n        this.color = new Color(16777215);\n        this.matcap = null;\n        this.map = null;\n        this.bumpMap = null;\n        this.bumpScale = 1;\n        this.normalMap = null;\n        this.normalMapType = TangentSpaceNormalMap;\n        this.normalScale = new Vector2(1, 1);\n        this.displacementMap = null;\n        this.displacementScale = 1;\n        this.displacementBias = 0;\n        this.alphaMap = null;\n        this.flatShading = false;\n        this.fog = true;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.defines = { \"MATCAP\": \"\" };\n        this.color.copy(source.color);\n        this.matcap = source.matcap;\n        this.map = source.map;\n        this.bumpMap = source.bumpMap;\n        this.bumpScale = source.bumpScale;\n        this.normalMap = source.normalMap;\n        this.normalMapType = source.normalMapType;\n        this.normalScale.copy(source.normalScale);\n        this.displacementMap = source.displacementMap;\n        this.displacementScale = source.displacementScale;\n        this.displacementBias = source.displacementBias;\n        this.alphaMap = source.alphaMap;\n        this.flatShading = source.flatShading;\n        this.fog = source.fog;\n        return this;\n      }\n    };\n    LineDashedMaterial = class extends LineBasicMaterial {\n      constructor(parameters) {\n        super();\n        this.isLineDashedMaterial = true;\n        this.type = \"LineDashedMaterial\";\n        this.scale = 1;\n        this.dashSize = 3;\n        this.gapSize = 1;\n        this.setValues(parameters);\n      }\n      copy(source) {\n        super.copy(source);\n        this.scale = source.scale;\n        this.dashSize = source.dashSize;\n        this.gapSize = source.gapSize;\n        return this;\n      }\n    };\n    AnimationUtils = {\n      convertArray,\n      isTypedArray,\n      getKeyframeOrder,\n      sortedArray,\n      flattenJSON,\n      subclip,\n      makeClipAdditive\n    };\n    Interpolant = class {\n      constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n        this.parameterPositions = parameterPositions;\n        this._cachedIndex = 0;\n        this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize);\n        this.sampleValues = sampleValues;\n        this.valueSize = sampleSize;\n        this.settings = null;\n        this.DefaultSettings_ = {};\n      }\n      evaluate(t2) {\n        const pp = this.parameterPositions;\n        let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1];\n        validate_interval: {\n          seek: {\n            let right;\n            linear_scan: {\n              forward_scan: if (!(t2 < t1)) {\n                for (let giveUpAt = i1 + 2; ; ) {\n                  if (t1 === void 0) {\n                    if (t2 < t0) break forward_scan;\n                    i1 = pp.length;\n                    this._cachedIndex = i1;\n                    return this.copySampleValue_(i1 - 1);\n                  }\n                  if (i1 === giveUpAt) break;\n                  t0 = t1;\n                  t1 = pp[++i1];\n                  if (t2 < t1) {\n                    break seek;\n                  }\n                }\n                right = pp.length;\n                break linear_scan;\n              }\n              if (!(t2 >= t0)) {\n                const t1global = pp[1];\n                if (t2 < t1global) {\n                  i1 = 2;\n                  t0 = t1global;\n                }\n                for (let giveUpAt = i1 - 2; ; ) {\n                  if (t0 === void 0) {\n                    this._cachedIndex = 0;\n                    return this.copySampleValue_(0);\n                  }\n                  if (i1 === giveUpAt) break;\n                  t1 = t0;\n                  t0 = pp[--i1 - 1];\n                  if (t2 >= t0) {\n                    break seek;\n                  }\n                }\n                right = i1;\n                i1 = 0;\n                break linear_scan;\n              }\n              break validate_interval;\n            }\n            while (i1 < right) {\n              const mid = i1 + right >>> 1;\n              if (t2 < pp[mid]) {\n                right = mid;\n              } else {\n                i1 = mid + 1;\n              }\n            }\n            t1 = pp[i1];\n            t0 = pp[i1 - 1];\n            if (t0 === void 0) {\n              this._cachedIndex = 0;\n              return this.copySampleValue_(0);\n            }\n            if (t1 === void 0) {\n              i1 = pp.length;\n              this._cachedIndex = i1;\n              return this.copySampleValue_(i1 - 1);\n            }\n          }\n          this._cachedIndex = i1;\n          this.intervalChanged_(i1, t0, t1);\n        }\n        return this.interpolate_(i1, t0, t2, t1);\n      }\n      getSettings_() {\n        return this.settings || this.DefaultSettings_;\n      }\n      copySampleValue_(index) {\n        const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride;\n        for (let i2 = 0; i2 !== stride; ++i2) {\n          result[i2] = values[offset + i2];\n        }\n        return result;\n      }\n      // Template methods for derived classes:\n      interpolate_() {\n        throw new Error(\"call to abstract method\");\n      }\n      intervalChanged_() {\n      }\n    };\n    CubicInterpolant = class extends Interpolant {\n      constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n        super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n        this._weightPrev = -0;\n        this._offsetPrev = -0;\n        this._weightNext = -0;\n        this._offsetNext = -0;\n        this.DefaultSettings_ = {\n          endingStart: ZeroCurvatureEnding,\n          endingEnd: ZeroCurvatureEnding\n        };\n      }\n      intervalChanged_(i1, t0, t1) {\n        const pp = this.parameterPositions;\n        let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext];\n        if (tPrev === void 0) {\n          switch (this.getSettings_().endingStart) {\n            case ZeroSlopeEnding:\n              iPrev = i1;\n              tPrev = 2 * t0 - t1;\n              break;\n            case WrapAroundEnding:\n              iPrev = pp.length - 2;\n              tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n              break;\n            default:\n              iPrev = i1;\n              tPrev = t1;\n          }\n        }\n        if (tNext === void 0) {\n          switch (this.getSettings_().endingEnd) {\n            case ZeroSlopeEnding:\n              iNext = i1;\n              tNext = 2 * t1 - t0;\n              break;\n            case WrapAroundEnding:\n              iNext = 1;\n              tNext = t1 + pp[1] - pp[0];\n              break;\n            default:\n              iNext = i1 - 1;\n              tNext = t0;\n          }\n        }\n        const halfDt = (t1 - t0) * 0.5, stride = this.valueSize;\n        this._weightPrev = halfDt / (t0 - tPrev);\n        this._weightNext = halfDt / (tNext - t1);\n        this._offsetPrev = iPrev * stride;\n        this._offsetNext = iNext * stride;\n      }\n      interpolate_(i1, t0, t2, t1) {\n        const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p3 = (t2 - t0) / (t1 - t0), pp = p3 * p3, ppp = pp * p3;\n        const sP = -wP * ppp + 2 * wP * pp - wP * p3;\n        const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p3 + 1;\n        const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p3;\n        const sN = wN * ppp - wN * pp;\n        for (let i2 = 0; i2 !== stride; ++i2) {\n          result[i2] = sP * values[oP + i2] + s0 * values[o0 + i2] + s1 * values[o1 + i2] + sN * values[oN + i2];\n        }\n        return result;\n      }\n    };\n    LinearInterpolant = class extends Interpolant {\n      constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n        super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n      }\n      interpolate_(i1, t0, t2, t1) {\n        const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t2 - t0) / (t1 - t0), weight0 = 1 - weight1;\n        for (let i2 = 0; i2 !== stride; ++i2) {\n          result[i2] = values[offset0 + i2] * weight0 + values[offset1 + i2] * weight1;\n        }\n        return result;\n      }\n    };\n    DiscreteInterpolant = class extends Interpolant {\n      constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n        super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n      }\n      interpolate_(i1) {\n        return this.copySampleValue_(i1 - 1);\n      }\n    };\n    KeyframeTrack = class {\n      constructor(name, times, values, interpolation) {\n        if (name === void 0) throw new Error(\"THREE.KeyframeTrack: track name is undefined\");\n        if (times === void 0 || times.length === 0) throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \" + name);\n        this.name = name;\n        this.times = convertArray(times, this.TimeBufferType);\n        this.values = convertArray(values, this.ValueBufferType);\n        this.setInterpolation(interpolation || this.DefaultInterpolation);\n      }\n      // Serialization (in static context, because of constructor invocation\n      // and automatic invocation of .toJSON):\n      static toJSON(track) {\n        const trackType = track.constructor;\n        let json;\n        if (trackType.toJSON !== this.toJSON) {\n          json = trackType.toJSON(track);\n        } else {\n          json = {\n            \"name\": track.name,\n            \"times\": convertArray(track.times, Array),\n            \"values\": convertArray(track.values, Array)\n          };\n          const interpolation = track.getInterpolation();\n          if (interpolation !== track.DefaultInterpolation) {\n            json.interpolation = interpolation;\n          }\n        }\n        json.type = track.ValueTypeName;\n        return json;\n      }\n      InterpolantFactoryMethodDiscrete(result) {\n        return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n      }\n      InterpolantFactoryMethodLinear(result) {\n        return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n      }\n      InterpolantFactoryMethodSmooth(result) {\n        return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n      }\n      setInterpolation(interpolation) {\n        let factoryMethod;\n        switch (interpolation) {\n          case InterpolateDiscrete:\n            factoryMethod = this.InterpolantFactoryMethodDiscrete;\n            break;\n          case InterpolateLinear:\n            factoryMethod = this.InterpolantFactoryMethodLinear;\n            break;\n          case InterpolateSmooth:\n            factoryMethod = this.InterpolantFactoryMethodSmooth;\n            break;\n        }\n        if (factoryMethod === void 0) {\n          const message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n          if (this.createInterpolant === void 0) {\n            if (interpolation !== this.DefaultInterpolation) {\n              this.setInterpolation(this.DefaultInterpolation);\n            } else {\n              throw new Error(message);\n            }\n          }\n          console.warn(\"THREE.KeyframeTrack:\", message);\n          return this;\n        }\n        this.createInterpolant = factoryMethod;\n        return this;\n      }\n      getInterpolation() {\n        switch (this.createInterpolant) {\n          case this.InterpolantFactoryMethodDiscrete:\n            return InterpolateDiscrete;\n          case this.InterpolantFactoryMethodLinear:\n            return InterpolateLinear;\n          case this.InterpolantFactoryMethodSmooth:\n            return InterpolateSmooth;\n        }\n      }\n      getValueSize() {\n        return this.values.length / this.times.length;\n      }\n      // move all keyframes either forwards or backwards in time\n      shift(timeOffset) {\n        if (timeOffset !== 0) {\n          const times = this.times;\n          for (let i2 = 0, n = times.length; i2 !== n; ++i2) {\n            times[i2] += timeOffset;\n          }\n        }\n        return this;\n      }\n      // scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n      scale(timeScale) {\n        if (timeScale !== 1) {\n          const times = this.times;\n          for (let i2 = 0, n = times.length; i2 !== n; ++i2) {\n            times[i2] *= timeScale;\n          }\n        }\n        return this;\n      }\n      // removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n      // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n      trim(startTime, endTime) {\n        const times = this.times, nKeys = times.length;\n        let from = 0, to = nKeys - 1;\n        while (from !== nKeys && times[from] < startTime) {\n          ++from;\n        }\n        while (to !== -1 && times[to] > endTime) {\n          --to;\n        }\n        ++to;\n        if (from !== 0 || to !== nKeys) {\n          if (from >= to) {\n            to = Math.max(to, 1);\n            from = to - 1;\n          }\n          const stride = this.getValueSize();\n          this.times = times.slice(from, to);\n          this.values = this.values.slice(from * stride, to * stride);\n        }\n        return this;\n      }\n      // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n      validate() {\n        let valid = true;\n        const valueSize = this.getValueSize();\n        if (valueSize - Math.floor(valueSize) !== 0) {\n          console.error(\"THREE.KeyframeTrack: Invalid value size in track.\", this);\n          valid = false;\n        }\n        const times = this.times, values = this.values, nKeys = times.length;\n        if (nKeys === 0) {\n          console.error(\"THREE.KeyframeTrack: Track is empty.\", this);\n          valid = false;\n        }\n        let prevTime = null;\n        for (let i2 = 0; i2 !== nKeys; i2++) {\n          const currTime = times[i2];\n          if (typeof currTime === \"number\" && isNaN(currTime)) {\n            console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i2, currTime);\n            valid = false;\n            break;\n          }\n          if (prevTime !== null && prevTime > currTime) {\n            console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i2, currTime, prevTime);\n            valid = false;\n            break;\n          }\n          prevTime = currTime;\n        }\n        if (values !== void 0) {\n          if (isTypedArray(values)) {\n            for (let i2 = 0, n = values.length; i2 !== n; ++i2) {\n              const value = values[i2];\n              if (isNaN(value)) {\n                console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i2, value);\n                valid = false;\n                break;\n              }\n            }\n          }\n        }\n        return valid;\n      }\n      // removes equivalent sequential keys as common in morph target sequences\n      // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n      optimize() {\n        const times = this.times.slice(), values = this.values.slice(), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1;\n        let writeIndex = 1;\n        for (let i2 = 1; i2 < lastIndex; ++i2) {\n          let keep = false;\n          const time = times[i2];\n          const timeNext = times[i2 + 1];\n          if (time !== timeNext && (i2 !== 1 || time !== times[0])) {\n            if (!smoothInterpolation) {\n              const offset = i2 * stride, offsetP = offset - stride, offsetN = offset + stride;\n              for (let j2 = 0; j2 !== stride; ++j2) {\n                const value = values[offset + j2];\n                if (value !== values[offsetP + j2] || value !== values[offsetN + j2]) {\n                  keep = true;\n                  break;\n                }\n              }\n            } else {\n              keep = true;\n            }\n          }\n          if (keep) {\n            if (i2 !== writeIndex) {\n              times[writeIndex] = times[i2];\n              const readOffset = i2 * stride, writeOffset = writeIndex * stride;\n              for (let j2 = 0; j2 !== stride; ++j2) {\n                values[writeOffset + j2] = values[readOffset + j2];\n              }\n            }\n            ++writeIndex;\n          }\n        }\n        if (lastIndex > 0) {\n          times[writeIndex] = times[lastIndex];\n          for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j2 = 0; j2 !== stride; ++j2) {\n            values[writeOffset + j2] = values[readOffset + j2];\n          }\n          ++writeIndex;\n        }\n        if (writeIndex !== times.length) {\n          this.times = times.slice(0, writeIndex);\n          this.values = values.slice(0, writeIndex * stride);\n        } else {\n          this.times = times;\n          this.values = values;\n        }\n        return this;\n      }\n      clone() {\n        const times = this.times.slice();\n        const values = this.values.slice();\n        const TypedKeyframeTrack = this.constructor;\n        const track = new TypedKeyframeTrack(this.name, times, values);\n        track.createInterpolant = this.createInterpolant;\n        return track;\n      }\n    };\n    KeyframeTrack.prototype.TimeBufferType = Float32Array;\n    KeyframeTrack.prototype.ValueBufferType = Float32Array;\n    KeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n    BooleanKeyframeTrack = class extends KeyframeTrack {\n      // No interpolation parameter because only InterpolateDiscrete is valid.\n      constructor(name, times, values) {\n        super(name, times, values);\n      }\n    };\n    BooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\n    BooleanKeyframeTrack.prototype.ValueBufferType = Array;\n    BooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\n    BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\n    BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\n    ColorKeyframeTrack = class extends KeyframeTrack {\n    };\n    ColorKeyframeTrack.prototype.ValueTypeName = \"color\";\n    NumberKeyframeTrack = class extends KeyframeTrack {\n    };\n    NumberKeyframeTrack.prototype.ValueTypeName = \"number\";\n    QuaternionLinearInterpolant = class extends Interpolant {\n      constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n        super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n      }\n      interpolate_(i1, t0, t2, t1) {\n        const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t2 - t0) / (t1 - t0);\n        let offset = i1 * stride;\n        for (let end = offset + stride; offset !== end; offset += 4) {\n          Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n        }\n        return result;\n      }\n    };\n    QuaternionKeyframeTrack = class extends KeyframeTrack {\n      InterpolantFactoryMethodLinear(result) {\n        return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n      }\n    };\n    QuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\n    QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\n    StringKeyframeTrack = class extends KeyframeTrack {\n      // No interpolation parameter because only InterpolateDiscrete is valid.\n      constructor(name, times, values) {\n        super(name, times, values);\n      }\n    };\n    StringKeyframeTrack.prototype.ValueTypeName = \"string\";\n    StringKeyframeTrack.prototype.ValueBufferType = Array;\n    StringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\n    StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\n    StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\n    VectorKeyframeTrack = class extends KeyframeTrack {\n    };\n    VectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\n    AnimationClip = class {\n      constructor(name = \"\", duration = -1, tracks = [], blendMode = NormalAnimationBlendMode) {\n        this.name = name;\n        this.tracks = tracks;\n        this.duration = duration;\n        this.blendMode = blendMode;\n        this.uuid = generateUUID();\n        if (this.duration < 0) {\n          this.resetDuration();\n        }\n      }\n      static parse(json) {\n        const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1);\n        for (let i2 = 0, n = jsonTracks.length; i2 !== n; ++i2) {\n          tracks.push(parseKeyframeTrack(jsonTracks[i2]).scale(frameTime));\n        }\n        const clip = new this(json.name, json.duration, tracks, json.blendMode);\n        clip.uuid = json.uuid;\n        return clip;\n      }\n      static toJSON(clip) {\n        const tracks = [], clipTracks = clip.tracks;\n        const json = {\n          \"name\": clip.name,\n          \"duration\": clip.duration,\n          \"tracks\": tracks,\n          \"uuid\": clip.uuid,\n          \"blendMode\": clip.blendMode\n        };\n        for (let i2 = 0, n = clipTracks.length; i2 !== n; ++i2) {\n          tracks.push(KeyframeTrack.toJSON(clipTracks[i2]));\n        }\n        return json;\n      }\n      static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n        const numMorphTargets = morphTargetSequence.length;\n        const tracks = [];\n        for (let i2 = 0; i2 < numMorphTargets; i2++) {\n          let times = [];\n          let values = [];\n          times.push(\n            (i2 + numMorphTargets - 1) % numMorphTargets,\n            i2,\n            (i2 + 1) % numMorphTargets\n          );\n          values.push(0, 1, 0);\n          const order = getKeyframeOrder(times);\n          times = sortedArray(times, 1, order);\n          values = sortedArray(values, 1, order);\n          if (!noLoop && times[0] === 0) {\n            times.push(numMorphTargets);\n            values.push(values[0]);\n          }\n          tracks.push(\n            new NumberKeyframeTrack(\n              \".morphTargetInfluences[\" + morphTargetSequence[i2].name + \"]\",\n              times,\n              values\n            ).scale(1 / fps)\n          );\n        }\n        return new this(name, -1, tracks);\n      }\n      static findByName(objectOrClipArray, name) {\n        let clipArray = objectOrClipArray;\n        if (!Array.isArray(objectOrClipArray)) {\n          const o = objectOrClipArray;\n          clipArray = o.geometry && o.geometry.animations || o.animations;\n        }\n        for (let i2 = 0; i2 < clipArray.length; i2++) {\n          if (clipArray[i2].name === name) {\n            return clipArray[i2];\n          }\n        }\n        return null;\n      }\n      static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n        const animationToMorphTargets = {};\n        const pattern = /^([\\w-]*?)([\\d]+)$/;\n        for (let i2 = 0, il = morphTargets.length; i2 < il; i2++) {\n          const morphTarget = morphTargets[i2];\n          const parts = morphTarget.name.match(pattern);\n          if (parts && parts.length > 1) {\n            const name = parts[1];\n            let animationMorphTargets = animationToMorphTargets[name];\n            if (!animationMorphTargets) {\n              animationToMorphTargets[name] = animationMorphTargets = [];\n            }\n            animationMorphTargets.push(morphTarget);\n          }\n        }\n        const clips = [];\n        for (const name in animationToMorphTargets) {\n          clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n        }\n        return clips;\n      }\n      // parse the animation.hierarchy format\n      static parseAnimation(animation, bones) {\n        if (!animation) {\n          console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\");\n          return null;\n        }\n        const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) {\n          if (animationKeys.length !== 0) {\n            const times = [];\n            const values = [];\n            flattenJSON(animationKeys, times, values, propertyName);\n            if (times.length !== 0) {\n              destTracks.push(new trackType(trackName, times, values));\n            }\n          }\n        };\n        const tracks = [];\n        const clipName = animation.name || \"default\";\n        const fps = animation.fps || 30;\n        const blendMode = animation.blendMode;\n        let duration = animation.length || -1;\n        const hierarchyTracks = animation.hierarchy || [];\n        for (let h2 = 0; h2 < hierarchyTracks.length; h2++) {\n          const animationKeys = hierarchyTracks[h2].keys;\n          if (!animationKeys || animationKeys.length === 0) continue;\n          if (animationKeys[0].morphTargets) {\n            const morphTargetNames = {};\n            let k3;\n            for (k3 = 0; k3 < animationKeys.length; k3++) {\n              if (animationKeys[k3].morphTargets) {\n                for (let m = 0; m < animationKeys[k3].morphTargets.length; m++) {\n                  morphTargetNames[animationKeys[k3].morphTargets[m]] = -1;\n                }\n              }\n            }\n            for (const morphTargetName in morphTargetNames) {\n              const times = [];\n              const values = [];\n              for (let m = 0; m !== animationKeys[k3].morphTargets.length; ++m) {\n                const animationKey = animationKeys[k3];\n                times.push(animationKey.time);\n                values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n              }\n              tracks.push(new NumberKeyframeTrack(\".morphTargetInfluence[\" + morphTargetName + \"]\", times, values));\n            }\n            duration = morphTargetNames.length * fps;\n          } else {\n            const boneName = \".bones[\" + bones[h2].name + \"]\";\n            addNonemptyTrack(\n              VectorKeyframeTrack,\n              boneName + \".position\",\n              animationKeys,\n              \"pos\",\n              tracks\n            );\n            addNonemptyTrack(\n              QuaternionKeyframeTrack,\n              boneName + \".quaternion\",\n              animationKeys,\n              \"rot\",\n              tracks\n            );\n            addNonemptyTrack(\n              VectorKeyframeTrack,\n              boneName + \".scale\",\n              animationKeys,\n              \"scl\",\n              tracks\n            );\n          }\n        }\n        if (tracks.length === 0) {\n          return null;\n        }\n        const clip = new this(clipName, duration, tracks, blendMode);\n        return clip;\n      }\n      resetDuration() {\n        const tracks = this.tracks;\n        let duration = 0;\n        for (let i2 = 0, n = tracks.length; i2 !== n; ++i2) {\n          const track = this.tracks[i2];\n          duration = Math.max(duration, track.times[track.times.length - 1]);\n        }\n        this.duration = duration;\n        return this;\n      }\n      trim() {\n        for (let i2 = 0; i2 < this.tracks.length; i2++) {\n          this.tracks[i2].trim(0, this.duration);\n        }\n        return this;\n      }\n      validate() {\n        let valid = true;\n        for (let i2 = 0; i2 < this.tracks.length; i2++) {\n          valid = valid && this.tracks[i2].validate();\n        }\n        return valid;\n      }\n      optimize() {\n        for (let i2 = 0; i2 < this.tracks.length; i2++) {\n          this.tracks[i2].optimize();\n        }\n        return this;\n      }\n      clone() {\n        const tracks = [];\n        for (let i2 = 0; i2 < this.tracks.length; i2++) {\n          tracks.push(this.tracks[i2].clone());\n        }\n        return new this.constructor(this.name, this.duration, tracks, this.blendMode);\n      }\n      toJSON() {\n        return this.constructor.toJSON(this);\n      }\n    };\n    Cache = {\n      enabled: false,\n      files: {},\n      add: function(key, file) {\n        if (this.enabled === false) return;\n        this.files[key] = file;\n      },\n      get: function(key) {\n        if (this.enabled === false) return;\n        return this.files[key];\n      },\n      remove: function(key) {\n        delete this.files[key];\n      },\n      clear: function() {\n        this.files = {};\n      }\n    };\n    LoadingManager = class {\n      constructor(onLoad, onProgress, onError) {\n        const scope = this;\n        let isLoading = false;\n        let itemsLoaded = 0;\n        let itemsTotal = 0;\n        let urlModifier = void 0;\n        const handlers = [];\n        this.onStart = void 0;\n        this.onLoad = onLoad;\n        this.onProgress = onProgress;\n        this.onError = onError;\n        this.itemStart = function(url) {\n          itemsTotal++;\n          if (isLoading === false) {\n            if (scope.onStart !== void 0) {\n              scope.onStart(url, itemsLoaded, itemsTotal);\n            }\n          }\n          isLoading = true;\n        };\n        this.itemEnd = function(url) {\n          itemsLoaded++;\n          if (scope.onProgress !== void 0) {\n            scope.onProgress(url, itemsLoaded, itemsTotal);\n          }\n          if (itemsLoaded === itemsTotal) {\n            isLoading = false;\n            if (scope.onLoad !== void 0) {\n              scope.onLoad();\n            }\n          }\n        };\n        this.itemError = function(url) {\n          if (scope.onError !== void 0) {\n            scope.onError(url);\n          }\n        };\n        this.resolveURL = function(url) {\n          if (urlModifier) {\n            return urlModifier(url);\n          }\n          return url;\n        };\n        this.setURLModifier = function(transform) {\n          urlModifier = transform;\n          return this;\n        };\n        this.addHandler = function(regex, loader) {\n          handlers.push(regex, loader);\n          return this;\n        };\n        this.removeHandler = function(regex) {\n          const index = handlers.indexOf(regex);\n          if (index !== -1) {\n            handlers.splice(index, 2);\n          }\n          return this;\n        };\n        this.getHandler = function(file) {\n          for (let i2 = 0, l2 = handlers.length; i2 < l2; i2 += 2) {\n            const regex = handlers[i2];\n            const loader = handlers[i2 + 1];\n            if (regex.global) regex.lastIndex = 0;\n            if (regex.test(file)) {\n              return loader;\n            }\n          }\n          return null;\n        };\n      }\n    };\n    DefaultLoadingManager = /* @__PURE__ */ new LoadingManager();\n    Loader = class {\n      constructor(manager) {\n        this.manager = manager !== void 0 ? manager : DefaultLoadingManager;\n        this.crossOrigin = \"anonymous\";\n        this.withCredentials = false;\n        this.path = \"\";\n        this.resourcePath = \"\";\n        this.requestHeader = {};\n      }\n      load() {\n      }\n      loadAsync(url, onProgress) {\n        const scope = this;\n        return new Promise(function(resolve2, reject) {\n          scope.load(url, resolve2, onProgress, reject);\n        });\n      }\n      parse() {\n      }\n      setCrossOrigin(crossOrigin) {\n        this.crossOrigin = crossOrigin;\n        return this;\n      }\n      setWithCredentials(value) {\n        this.withCredentials = value;\n        return this;\n      }\n      setPath(path) {\n        this.path = path;\n        return this;\n      }\n      setResourcePath(resourcePath) {\n        this.resourcePath = resourcePath;\n        return this;\n      }\n      setRequestHeader(requestHeader) {\n        this.requestHeader = requestHeader;\n        return this;\n      }\n    };\n    Loader.DEFAULT_MATERIAL_NAME = \"__DEFAULT\";\n    loading = {};\n    HttpError = class extends Error {\n      constructor(message, response) {\n        super(message);\n        this.response = response;\n      }\n    };\n    FileLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        if (url === void 0) url = \"\";\n        if (this.path !== void 0) url = this.path + url;\n        url = this.manager.resolveURL(url);\n        const cached = Cache.get(url);\n        if (cached !== void 0) {\n          this.manager.itemStart(url);\n          setTimeout(() => {\n            if (onLoad) onLoad(cached);\n            this.manager.itemEnd(url);\n          }, 0);\n          return cached;\n        }\n        if (loading[url] !== void 0) {\n          loading[url].push({\n            onLoad,\n            onProgress,\n            onError\n          });\n          return;\n        }\n        loading[url] = [];\n        loading[url].push({\n          onLoad,\n          onProgress,\n          onError\n        });\n        const req = new Request(url, {\n          headers: new Headers(this.requestHeader),\n          credentials: this.withCredentials ? \"include\" : \"same-origin\"\n          // An abort controller could be added within a future PR\n        });\n        const mimeType = this.mimeType;\n        const responseType = this.responseType;\n        fetch(req).then((response) => {\n          if (response.status === 200 || response.status === 0) {\n            if (response.status === 0) {\n              console.warn(\"THREE.FileLoader: HTTP Status 0 received.\");\n            }\n            if (typeof ReadableStream === \"undefined\" || response.body === void 0 || response.body.getReader === void 0) {\n              return response;\n            }\n            const callbacks = loading[url];\n            const reader = response.body.getReader();\n            const contentLength = response.headers.get(\"X-File-Size\") || response.headers.get(\"Content-Length\");\n            const total = contentLength ? parseInt(contentLength) : 0;\n            const lengthComputable = total !== 0;\n            let loaded = 0;\n            const stream = new ReadableStream({\n              start(controller) {\n                readData();\n                function readData() {\n                  reader.read().then(({ done, value }) => {\n                    if (done) {\n                      controller.close();\n                    } else {\n                      loaded += value.byteLength;\n                      const event = new ProgressEvent(\"progress\", { lengthComputable, loaded, total });\n                      for (let i2 = 0, il = callbacks.length; i2 < il; i2++) {\n                        const callback = callbacks[i2];\n                        if (callback.onProgress) callback.onProgress(event);\n                      }\n                      controller.enqueue(value);\n                      readData();\n                    }\n                  }, (e) => {\n                    controller.error(e);\n                  });\n                }\n              }\n            });\n            return new Response(stream);\n          } else {\n            throw new HttpError(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response);\n          }\n        }).then((response) => {\n          switch (responseType) {\n            case \"arraybuffer\":\n              return response.arrayBuffer();\n            case \"blob\":\n              return response.blob();\n            case \"document\":\n              return response.text().then((text) => {\n                const parser = new DOMParser();\n                return parser.parseFromString(text, mimeType);\n              });\n            case \"json\":\n              return response.json();\n            default:\n              if (mimeType === void 0) {\n                return response.text();\n              } else {\n                const re = /charset=\"?([^;\"\\s]*)\"?/i;\n                const exec = re.exec(mimeType);\n                const label = exec && exec[1] ? exec[1].toLowerCase() : void 0;\n                const decoder = new TextDecoder(label);\n                return response.arrayBuffer().then((ab) => decoder.decode(ab));\n              }\n          }\n        }).then((data) => {\n          Cache.add(url, data);\n          const callbacks = loading[url];\n          delete loading[url];\n          for (let i2 = 0, il = callbacks.length; i2 < il; i2++) {\n            const callback = callbacks[i2];\n            if (callback.onLoad) callback.onLoad(data);\n          }\n        }).catch((err) => {\n          const callbacks = loading[url];\n          if (callbacks === void 0) {\n            this.manager.itemError(url);\n            throw err;\n          }\n          delete loading[url];\n          for (let i2 = 0, il = callbacks.length; i2 < il; i2++) {\n            const callback = callbacks[i2];\n            if (callback.onError) callback.onError(err);\n          }\n          this.manager.itemError(url);\n        }).finally(() => {\n          this.manager.itemEnd(url);\n        });\n        this.manager.itemStart(url);\n      }\n      setResponseType(value) {\n        this.responseType = value;\n        return this;\n      }\n      setMimeType(value) {\n        this.mimeType = value;\n        return this;\n      }\n    };\n    AnimationLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const loader = new FileLoader(this.manager);\n        loader.setPath(this.path);\n        loader.setRequestHeader(this.requestHeader);\n        loader.setWithCredentials(this.withCredentials);\n        loader.load(url, function(text) {\n          try {\n            onLoad(scope.parse(JSON.parse(text)));\n          } catch (e) {\n            if (onError) {\n              onError(e);\n            } else {\n              console.error(e);\n            }\n            scope.manager.itemError(url);\n          }\n        }, onProgress, onError);\n      }\n      parse(json) {\n        const animations = [];\n        for (let i2 = 0; i2 < json.length; i2++) {\n          const clip = AnimationClip.parse(json[i2]);\n          animations.push(clip);\n        }\n        return animations;\n      }\n    };\n    CompressedTextureLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const images = [];\n        const texture = new CompressedTexture();\n        const loader = new FileLoader(this.manager);\n        loader.setPath(this.path);\n        loader.setResponseType(\"arraybuffer\");\n        loader.setRequestHeader(this.requestHeader);\n        loader.setWithCredentials(scope.withCredentials);\n        let loaded = 0;\n        function loadTexture(i2) {\n          loader.load(url[i2], function(buffer) {\n            const texDatas = scope.parse(buffer, true);\n            images[i2] = {\n              width: texDatas.width,\n              height: texDatas.height,\n              format: texDatas.format,\n              mipmaps: texDatas.mipmaps\n            };\n            loaded += 1;\n            if (loaded === 6) {\n              if (texDatas.mipmapCount === 1) texture.minFilter = LinearFilter;\n              texture.image = images;\n              texture.format = texDatas.format;\n              texture.needsUpdate = true;\n              if (onLoad) onLoad(texture);\n            }\n          }, onProgress, onError);\n        }\n        if (Array.isArray(url)) {\n          for (let i2 = 0, il = url.length; i2 < il; ++i2) {\n            loadTexture(i2);\n          }\n        } else {\n          loader.load(url, function(buffer) {\n            const texDatas = scope.parse(buffer, true);\n            if (texDatas.isCubemap) {\n              const faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n              for (let f2 = 0; f2 < faces; f2++) {\n                images[f2] = { mipmaps: [] };\n                for (let i2 = 0; i2 < texDatas.mipmapCount; i2++) {\n                  images[f2].mipmaps.push(texDatas.mipmaps[f2 * texDatas.mipmapCount + i2]);\n                  images[f2].format = texDatas.format;\n                  images[f2].width = texDatas.width;\n                  images[f2].height = texDatas.height;\n                }\n              }\n              texture.image = images;\n            } else {\n              texture.image.width = texDatas.width;\n              texture.image.height = texDatas.height;\n              texture.mipmaps = texDatas.mipmaps;\n            }\n            if (texDatas.mipmapCount === 1) {\n              texture.minFilter = LinearFilter;\n            }\n            texture.format = texDatas.format;\n            texture.needsUpdate = true;\n            if (onLoad) onLoad(texture);\n          }, onProgress, onError);\n        }\n        return texture;\n      }\n    };\n    ImageLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        if (this.path !== void 0) url = this.path + url;\n        url = this.manager.resolveURL(url);\n        const scope = this;\n        const cached = Cache.get(url);\n        if (cached !== void 0) {\n          scope.manager.itemStart(url);\n          setTimeout(function() {\n            if (onLoad) onLoad(cached);\n            scope.manager.itemEnd(url);\n          }, 0);\n          return cached;\n        }\n        const image = createElementNS(\"img\");\n        function onImageLoad() {\n          removeEventListeners();\n          Cache.add(url, this);\n          if (onLoad) onLoad(this);\n          scope.manager.itemEnd(url);\n        }\n        function onImageError(event) {\n          removeEventListeners();\n          if (onError) onError(event);\n          scope.manager.itemError(url);\n          scope.manager.itemEnd(url);\n        }\n        function removeEventListeners() {\n          image.removeEventListener(\"load\", onImageLoad, false);\n          image.removeEventListener(\"error\", onImageError, false);\n        }\n        image.addEventListener(\"load\", onImageLoad, false);\n        image.addEventListener(\"error\", onImageError, false);\n        if (url.slice(0, 5) !== \"data:\") {\n          if (this.crossOrigin !== void 0) image.crossOrigin = this.crossOrigin;\n        }\n        scope.manager.itemStart(url);\n        image.src = url;\n        return image;\n      }\n    };\n    CubeTextureLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(urls, onLoad, onProgress, onError) {\n        const texture = new CubeTexture();\n        texture.colorSpace = SRGBColorSpace;\n        const loader = new ImageLoader(this.manager);\n        loader.setCrossOrigin(this.crossOrigin);\n        loader.setPath(this.path);\n        let loaded = 0;\n        function loadTexture(i2) {\n          loader.load(urls[i2], function(image) {\n            texture.images[i2] = image;\n            loaded++;\n            if (loaded === 6) {\n              texture.needsUpdate = true;\n              if (onLoad) onLoad(texture);\n            }\n          }, void 0, onError);\n        }\n        for (let i2 = 0; i2 < urls.length; ++i2) {\n          loadTexture(i2);\n        }\n        return texture;\n      }\n    };\n    DataTextureLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const texture = new DataTexture();\n        const loader = new FileLoader(this.manager);\n        loader.setResponseType(\"arraybuffer\");\n        loader.setRequestHeader(this.requestHeader);\n        loader.setPath(this.path);\n        loader.setWithCredentials(scope.withCredentials);\n        loader.load(url, function(buffer) {\n          let texData;\n          try {\n            texData = scope.parse(buffer);\n          } catch (error2) {\n            if (onError !== void 0) {\n              onError(error2);\n            } else {\n              console.error(error2);\n              return;\n            }\n          }\n          if (texData.image !== void 0) {\n            texture.image = texData.image;\n          } else if (texData.data !== void 0) {\n            texture.image.width = texData.width;\n            texture.image.height = texData.height;\n            texture.image.data = texData.data;\n          }\n          texture.wrapS = texData.wrapS !== void 0 ? texData.wrapS : ClampToEdgeWrapping;\n          texture.wrapT = texData.wrapT !== void 0 ? texData.wrapT : ClampToEdgeWrapping;\n          texture.magFilter = texData.magFilter !== void 0 ? texData.magFilter : LinearFilter;\n          texture.minFilter = texData.minFilter !== void 0 ? texData.minFilter : LinearFilter;\n          texture.anisotropy = texData.anisotropy !== void 0 ? texData.anisotropy : 1;\n          if (texData.colorSpace !== void 0) {\n            texture.colorSpace = texData.colorSpace;\n          }\n          if (texData.flipY !== void 0) {\n            texture.flipY = texData.flipY;\n          }\n          if (texData.format !== void 0) {\n            texture.format = texData.format;\n          }\n          if (texData.type !== void 0) {\n            texture.type = texData.type;\n          }\n          if (texData.mipmaps !== void 0) {\n            texture.mipmaps = texData.mipmaps;\n            texture.minFilter = LinearMipmapLinearFilter;\n          }\n          if (texData.mipmapCount === 1) {\n            texture.minFilter = LinearFilter;\n          }\n          if (texData.generateMipmaps !== void 0) {\n            texture.generateMipmaps = texData.generateMipmaps;\n          }\n          texture.needsUpdate = true;\n          if (onLoad) onLoad(texture, texData);\n        }, onProgress, onError);\n        return texture;\n      }\n    };\n    TextureLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const texture = new Texture();\n        const loader = new ImageLoader(this.manager);\n        loader.setCrossOrigin(this.crossOrigin);\n        loader.setPath(this.path);\n        loader.load(url, function(image) {\n          texture.image = image;\n          texture.needsUpdate = true;\n          if (onLoad !== void 0) {\n            onLoad(texture);\n          }\n        }, onProgress, onError);\n        return texture;\n      }\n    };\n    Light = class extends Object3D {\n      constructor(color, intensity = 1) {\n        super();\n        this.isLight = true;\n        this.type = \"Light\";\n        this.color = new Color(color);\n        this.intensity = intensity;\n      }\n      dispose() {\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.color.copy(source.color);\n        this.intensity = source.intensity;\n        return this;\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        data.object.color = this.color.getHex();\n        data.object.intensity = this.intensity;\n        if (this.groundColor !== void 0) data.object.groundColor = this.groundColor.getHex();\n        if (this.distance !== void 0) data.object.distance = this.distance;\n        if (this.angle !== void 0) data.object.angle = this.angle;\n        if (this.decay !== void 0) data.object.decay = this.decay;\n        if (this.penumbra !== void 0) data.object.penumbra = this.penumbra;\n        if (this.shadow !== void 0) data.object.shadow = this.shadow.toJSON();\n        if (this.target !== void 0) data.object.target = this.target.uuid;\n        return data;\n      }\n    };\n    HemisphereLight = class extends Light {\n      constructor(skyColor, groundColor, intensity) {\n        super(skyColor, intensity);\n        this.isHemisphereLight = true;\n        this.type = \"HemisphereLight\";\n        this.position.copy(Object3D.DEFAULT_UP);\n        this.updateMatrix();\n        this.groundColor = new Color(groundColor);\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.groundColor.copy(source.groundColor);\n        return this;\n      }\n    };\n    _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4();\n    _lightPositionWorld$1 = /* @__PURE__ */ new Vector3();\n    _lookTarget$1 = /* @__PURE__ */ new Vector3();\n    LightShadow = class {\n      constructor(camera) {\n        this.camera = camera;\n        this.intensity = 1;\n        this.bias = 0;\n        this.normalBias = 0;\n        this.radius = 1;\n        this.blurSamples = 8;\n        this.mapSize = new Vector2(512, 512);\n        this.map = null;\n        this.mapPass = null;\n        this.matrix = new Matrix4();\n        this.autoUpdate = true;\n        this.needsUpdate = false;\n        this._frustum = new Frustum();\n        this._frameExtents = new Vector2(1, 1);\n        this._viewportCount = 1;\n        this._viewports = [\n          new Vector4(0, 0, 1, 1)\n        ];\n      }\n      getViewportCount() {\n        return this._viewportCount;\n      }\n      getFrustum() {\n        return this._frustum;\n      }\n      updateMatrices(light) {\n        const shadowCamera = this.camera;\n        const shadowMatrix = this.matrix;\n        _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n        shadowCamera.position.copy(_lightPositionWorld$1);\n        _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n        shadowCamera.lookAt(_lookTarget$1);\n        shadowCamera.updateMatrixWorld();\n        _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n        this._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n        shadowMatrix.set(\n          0.5,\n          0,\n          0,\n          0.5,\n          0,\n          0.5,\n          0,\n          0.5,\n          0,\n          0,\n          0.5,\n          0.5,\n          0,\n          0,\n          0,\n          1\n        );\n        shadowMatrix.multiply(_projScreenMatrix$1);\n      }\n      getViewport(viewportIndex) {\n        return this._viewports[viewportIndex];\n      }\n      getFrameExtents() {\n        return this._frameExtents;\n      }\n      dispose() {\n        if (this.map) {\n          this.map.dispose();\n        }\n        if (this.mapPass) {\n          this.mapPass.dispose();\n        }\n      }\n      copy(source) {\n        this.camera = source.camera.clone();\n        this.intensity = source.intensity;\n        this.bias = source.bias;\n        this.radius = source.radius;\n        this.mapSize.copy(source.mapSize);\n        return this;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      toJSON() {\n        const object = {};\n        if (this.intensity !== 1) object.intensity = this.intensity;\n        if (this.bias !== 0) object.bias = this.bias;\n        if (this.normalBias !== 0) object.normalBias = this.normalBias;\n        if (this.radius !== 1) object.radius = this.radius;\n        if (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray();\n        object.camera = this.camera.toJSON(false).object;\n        delete object.camera.matrix;\n        return object;\n      }\n    };\n    SpotLightShadow = class extends LightShadow {\n      constructor() {\n        super(new PerspectiveCamera(50, 1, 0.5, 500));\n        this.isSpotLightShadow = true;\n        this.focus = 1;\n      }\n      updateMatrices(light) {\n        const camera = this.camera;\n        const fov2 = RAD2DEG * 2 * light.angle * this.focus;\n        const aspect2 = this.mapSize.width / this.mapSize.height;\n        const far = light.distance || camera.far;\n        if (fov2 !== camera.fov || aspect2 !== camera.aspect || far !== camera.far) {\n          camera.fov = fov2;\n          camera.aspect = aspect2;\n          camera.far = far;\n          camera.updateProjectionMatrix();\n        }\n        super.updateMatrices(light);\n      }\n      copy(source) {\n        super.copy(source);\n        this.focus = source.focus;\n        return this;\n      }\n    };\n    SpotLight = class extends Light {\n      constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2) {\n        super(color, intensity);\n        this.isSpotLight = true;\n        this.type = \"SpotLight\";\n        this.position.copy(Object3D.DEFAULT_UP);\n        this.updateMatrix();\n        this.target = new Object3D();\n        this.distance = distance;\n        this.angle = angle;\n        this.penumbra = penumbra;\n        this.decay = decay;\n        this.map = null;\n        this.shadow = new SpotLightShadow();\n      }\n      get power() {\n        return this.intensity * Math.PI;\n      }\n      set power(power) {\n        this.intensity = power / Math.PI;\n      }\n      dispose() {\n        this.shadow.dispose();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.distance = source.distance;\n        this.angle = source.angle;\n        this.penumbra = source.penumbra;\n        this.decay = source.decay;\n        this.target = source.target.clone();\n        this.shadow = source.shadow.clone();\n        return this;\n      }\n    };\n    _projScreenMatrix = /* @__PURE__ */ new Matrix4();\n    _lightPositionWorld = /* @__PURE__ */ new Vector3();\n    _lookTarget = /* @__PURE__ */ new Vector3();\n    PointLightShadow = class extends LightShadow {\n      constructor() {\n        super(new PerspectiveCamera(90, 1, 0.5, 500));\n        this.isPointLightShadow = true;\n        this._frameExtents = new Vector2(4, 2);\n        this._viewportCount = 6;\n        this._viewports = [\n          // These viewports map a cube-map onto a 2D texture with the\n          // following orientation:\n          //\n          //  xzXZ\n          //   y Y\n          //\n          // X - Positive x direction\n          // x - Negative x direction\n          // Y - Positive y direction\n          // y - Negative y direction\n          // Z - Positive z direction\n          // z - Negative z direction\n          // positive X\n          new Vector4(2, 1, 1, 1),\n          // negative X\n          new Vector4(0, 1, 1, 1),\n          // positive Z\n          new Vector4(3, 1, 1, 1),\n          // negative Z\n          new Vector4(1, 1, 1, 1),\n          // positive Y\n          new Vector4(3, 0, 1, 1),\n          // negative Y\n          new Vector4(1, 0, 1, 1)\n        ];\n        this._cubeDirections = [\n          new Vector3(1, 0, 0),\n          new Vector3(-1, 0, 0),\n          new Vector3(0, 0, 1),\n          new Vector3(0, 0, -1),\n          new Vector3(0, 1, 0),\n          new Vector3(0, -1, 0)\n        ];\n        this._cubeUps = [\n          new Vector3(0, 1, 0),\n          new Vector3(0, 1, 0),\n          new Vector3(0, 1, 0),\n          new Vector3(0, 1, 0),\n          new Vector3(0, 0, 1),\n          new Vector3(0, 0, -1)\n        ];\n      }\n      updateMatrices(light, viewportIndex = 0) {\n        const camera = this.camera;\n        const shadowMatrix = this.matrix;\n        const far = light.distance || camera.far;\n        if (far !== camera.far) {\n          camera.far = far;\n          camera.updateProjectionMatrix();\n        }\n        _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n        camera.position.copy(_lightPositionWorld);\n        _lookTarget.copy(camera.position);\n        _lookTarget.add(this._cubeDirections[viewportIndex]);\n        camera.up.copy(this._cubeUps[viewportIndex]);\n        camera.lookAt(_lookTarget);\n        camera.updateMatrixWorld();\n        shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n        _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n        this._frustum.setFromProjectionMatrix(_projScreenMatrix);\n      }\n    };\n    PointLight = class extends Light {\n      constructor(color, intensity, distance = 0, decay = 2) {\n        super(color, intensity);\n        this.isPointLight = true;\n        this.type = \"PointLight\";\n        this.distance = distance;\n        this.decay = decay;\n        this.shadow = new PointLightShadow();\n      }\n      get power() {\n        return this.intensity * 4 * Math.PI;\n      }\n      set power(power) {\n        this.intensity = power / (4 * Math.PI);\n      }\n      dispose() {\n        this.shadow.dispose();\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.distance = source.distance;\n        this.decay = source.decay;\n        this.shadow = source.shadow.clone();\n        return this;\n      }\n    };\n    DirectionalLightShadow = class extends LightShadow {\n      constructor() {\n        super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n        this.isDirectionalLightShadow = true;\n      }\n    };\n    DirectionalLight = class extends Light {\n      constructor(color, intensity) {\n        super(color, intensity);\n        this.isDirectionalLight = true;\n        this.type = \"DirectionalLight\";\n        this.position.copy(Object3D.DEFAULT_UP);\n        this.updateMatrix();\n        this.target = new Object3D();\n        this.shadow = new DirectionalLightShadow();\n      }\n      dispose() {\n        this.shadow.dispose();\n      }\n      copy(source) {\n        super.copy(source);\n        this.target = source.target.clone();\n        this.shadow = source.shadow.clone();\n        return this;\n      }\n    };\n    AmbientLight = class extends Light {\n      constructor(color, intensity) {\n        super(color, intensity);\n        this.isAmbientLight = true;\n        this.type = \"AmbientLight\";\n      }\n    };\n    RectAreaLight = class extends Light {\n      constructor(color, intensity, width = 10, height = 10) {\n        super(color, intensity);\n        this.isRectAreaLight = true;\n        this.type = \"RectAreaLight\";\n        this.width = width;\n        this.height = height;\n      }\n      get power() {\n        return this.intensity * this.width * this.height * Math.PI;\n      }\n      set power(power) {\n        this.intensity = power / (this.width * this.height * Math.PI);\n      }\n      copy(source) {\n        super.copy(source);\n        this.width = source.width;\n        this.height = source.height;\n        return this;\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        data.object.width = this.width;\n        data.object.height = this.height;\n        return data;\n      }\n    };\n    SphericalHarmonics3 = class {\n      constructor() {\n        this.isSphericalHarmonics3 = true;\n        this.coefficients = [];\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients.push(new Vector3());\n        }\n      }\n      set(coefficients) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients[i2].copy(coefficients[i2]);\n        }\n        return this;\n      }\n      zero() {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients[i2].set(0, 0, 0);\n        }\n        return this;\n      }\n      // get the radiance in the direction of the normal\n      // target is a Vector3\n      getAt(normal, target2) {\n        const x = normal.x, y2 = normal.y, z2 = normal.z;\n        const coeff = this.coefficients;\n        target2.copy(coeff[0]).multiplyScalar(0.282095);\n        target2.addScaledVector(coeff[1], 0.488603 * y2);\n        target2.addScaledVector(coeff[2], 0.488603 * z2);\n        target2.addScaledVector(coeff[3], 0.488603 * x);\n        target2.addScaledVector(coeff[4], 1.092548 * (x * y2));\n        target2.addScaledVector(coeff[5], 1.092548 * (y2 * z2));\n        target2.addScaledVector(coeff[6], 0.315392 * (3 * z2 * z2 - 1));\n        target2.addScaledVector(coeff[7], 1.092548 * (x * z2));\n        target2.addScaledVector(coeff[8], 0.546274 * (x * x - y2 * y2));\n        return target2;\n      }\n      // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n      // target is a Vector3\n      // https://graphics.stanford.edu/papers/envmap/envmap.pdf\n      getIrradianceAt(normal, target2) {\n        const x = normal.x, y2 = normal.y, z2 = normal.z;\n        const coeff = this.coefficients;\n        target2.copy(coeff[0]).multiplyScalar(0.886227);\n        target2.addScaledVector(coeff[1], 2 * 0.511664 * y2);\n        target2.addScaledVector(coeff[2], 2 * 0.511664 * z2);\n        target2.addScaledVector(coeff[3], 2 * 0.511664 * x);\n        target2.addScaledVector(coeff[4], 2 * 0.429043 * x * y2);\n        target2.addScaledVector(coeff[5], 2 * 0.429043 * y2 * z2);\n        target2.addScaledVector(coeff[6], 0.743125 * z2 * z2 - 0.247708);\n        target2.addScaledVector(coeff[7], 2 * 0.429043 * x * z2);\n        target2.addScaledVector(coeff[8], 0.429043 * (x * x - y2 * y2));\n        return target2;\n      }\n      add(sh) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients[i2].add(sh.coefficients[i2]);\n        }\n        return this;\n      }\n      addScaledSH(sh, s) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients[i2].addScaledVector(sh.coefficients[i2], s);\n        }\n        return this;\n      }\n      scale(s) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients[i2].multiplyScalar(s);\n        }\n        return this;\n      }\n      lerp(sh, alpha) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          this.coefficients[i2].lerp(sh.coefficients[i2], alpha);\n        }\n        return this;\n      }\n      equals(sh) {\n        for (let i2 = 0; i2 < 9; i2++) {\n          if (!this.coefficients[i2].equals(sh.coefficients[i2])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      copy(sh) {\n        return this.set(sh.coefficients);\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      fromArray(array, offset = 0) {\n        const coefficients = this.coefficients;\n        for (let i2 = 0; i2 < 9; i2++) {\n          coefficients[i2].fromArray(array, offset + i2 * 3);\n        }\n        return this;\n      }\n      toArray(array = [], offset = 0) {\n        const coefficients = this.coefficients;\n        for (let i2 = 0; i2 < 9; i2++) {\n          coefficients[i2].toArray(array, offset + i2 * 3);\n        }\n        return array;\n      }\n      // evaluate the basis functions\n      // shBasis is an Array[ 9 ]\n      static getBasisAt(normal, shBasis) {\n        const x = normal.x, y2 = normal.y, z2 = normal.z;\n        shBasis[0] = 0.282095;\n        shBasis[1] = 0.488603 * y2;\n        shBasis[2] = 0.488603 * z2;\n        shBasis[3] = 0.488603 * x;\n        shBasis[4] = 1.092548 * x * y2;\n        shBasis[5] = 1.092548 * y2 * z2;\n        shBasis[6] = 0.315392 * (3 * z2 * z2 - 1);\n        shBasis[7] = 1.092548 * x * z2;\n        shBasis[8] = 0.546274 * (x * x - y2 * y2);\n      }\n    };\n    LightProbe = class extends Light {\n      constructor(sh = new SphericalHarmonics3(), intensity = 1) {\n        super(void 0, intensity);\n        this.isLightProbe = true;\n        this.sh = sh;\n      }\n      copy(source) {\n        super.copy(source);\n        this.sh.copy(source.sh);\n        return this;\n      }\n      fromJSON(json) {\n        this.intensity = json.intensity;\n        this.sh.fromArray(json.sh);\n        return this;\n      }\n      toJSON(meta) {\n        const data = super.toJSON(meta);\n        data.object.sh = this.sh.toArray();\n        return data;\n      }\n    };\n    MaterialLoader = class _MaterialLoader extends Loader {\n      constructor(manager) {\n        super(manager);\n        this.textures = {};\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const loader = new FileLoader(scope.manager);\n        loader.setPath(scope.path);\n        loader.setRequestHeader(scope.requestHeader);\n        loader.setWithCredentials(scope.withCredentials);\n        loader.load(url, function(text) {\n          try {\n            onLoad(scope.parse(JSON.parse(text)));\n          } catch (e) {\n            if (onError) {\n              onError(e);\n            } else {\n              console.error(e);\n            }\n            scope.manager.itemError(url);\n          }\n        }, onProgress, onError);\n      }\n      parse(json) {\n        const textures = this.textures;\n        function getTexture(name) {\n          if (textures[name] === void 0) {\n            console.warn(\"THREE.MaterialLoader: Undefined texture\", name);\n          }\n          return textures[name];\n        }\n        const material = this.createMaterialFromType(json.type);\n        if (json.uuid !== void 0) material.uuid = json.uuid;\n        if (json.name !== void 0) material.name = json.name;\n        if (json.color !== void 0 && material.color !== void 0) material.color.setHex(json.color);\n        if (json.roughness !== void 0) material.roughness = json.roughness;\n        if (json.metalness !== void 0) material.metalness = json.metalness;\n        if (json.sheen !== void 0) material.sheen = json.sheen;\n        if (json.sheenColor !== void 0) material.sheenColor = new Color().setHex(json.sheenColor);\n        if (json.sheenRoughness !== void 0) material.sheenRoughness = json.sheenRoughness;\n        if (json.emissive !== void 0 && material.emissive !== void 0) material.emissive.setHex(json.emissive);\n        if (json.specular !== void 0 && material.specular !== void 0) material.specular.setHex(json.specular);\n        if (json.specularIntensity !== void 0) material.specularIntensity = json.specularIntensity;\n        if (json.specularColor !== void 0 && material.specularColor !== void 0) material.specularColor.setHex(json.specularColor);\n        if (json.shininess !== void 0) material.shininess = json.shininess;\n        if (json.clearcoat !== void 0) material.clearcoat = json.clearcoat;\n        if (json.clearcoatRoughness !== void 0) material.clearcoatRoughness = json.clearcoatRoughness;\n        if (json.dispersion !== void 0) material.dispersion = json.dispersion;\n        if (json.iridescence !== void 0) material.iridescence = json.iridescence;\n        if (json.iridescenceIOR !== void 0) material.iridescenceIOR = json.iridescenceIOR;\n        if (json.iridescenceThicknessRange !== void 0) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n        if (json.transmission !== void 0) material.transmission = json.transmission;\n        if (json.thickness !== void 0) material.thickness = json.thickness;\n        if (json.attenuationDistance !== void 0) material.attenuationDistance = json.attenuationDistance;\n        if (json.attenuationColor !== void 0 && material.attenuationColor !== void 0) material.attenuationColor.setHex(json.attenuationColor);\n        if (json.anisotropy !== void 0) material.anisotropy = json.anisotropy;\n        if (json.anisotropyRotation !== void 0) material.anisotropyRotation = json.anisotropyRotation;\n        if (json.fog !== void 0) material.fog = json.fog;\n        if (json.flatShading !== void 0) material.flatShading = json.flatShading;\n        if (json.blending !== void 0) material.blending = json.blending;\n        if (json.combine !== void 0) material.combine = json.combine;\n        if (json.side !== void 0) material.side = json.side;\n        if (json.shadowSide !== void 0) material.shadowSide = json.shadowSide;\n        if (json.opacity !== void 0) material.opacity = json.opacity;\n        if (json.transparent !== void 0) material.transparent = json.transparent;\n        if (json.alphaTest !== void 0) material.alphaTest = json.alphaTest;\n        if (json.alphaHash !== void 0) material.alphaHash = json.alphaHash;\n        if (json.depthFunc !== void 0) material.depthFunc = json.depthFunc;\n        if (json.depthTest !== void 0) material.depthTest = json.depthTest;\n        if (json.depthWrite !== void 0) material.depthWrite = json.depthWrite;\n        if (json.colorWrite !== void 0) material.colorWrite = json.colorWrite;\n        if (json.blendSrc !== void 0) material.blendSrc = json.blendSrc;\n        if (json.blendDst !== void 0) material.blendDst = json.blendDst;\n        if (json.blendEquation !== void 0) material.blendEquation = json.blendEquation;\n        if (json.blendSrcAlpha !== void 0) material.blendSrcAlpha = json.blendSrcAlpha;\n        if (json.blendDstAlpha !== void 0) material.blendDstAlpha = json.blendDstAlpha;\n        if (json.blendEquationAlpha !== void 0) material.blendEquationAlpha = json.blendEquationAlpha;\n        if (json.blendColor !== void 0 && material.blendColor !== void 0) material.blendColor.setHex(json.blendColor);\n        if (json.blendAlpha !== void 0) material.blendAlpha = json.blendAlpha;\n        if (json.stencilWriteMask !== void 0) material.stencilWriteMask = json.stencilWriteMask;\n        if (json.stencilFunc !== void 0) material.stencilFunc = json.stencilFunc;\n        if (json.stencilRef !== void 0) material.stencilRef = json.stencilRef;\n        if (json.stencilFuncMask !== void 0) material.stencilFuncMask = json.stencilFuncMask;\n        if (json.stencilFail !== void 0) material.stencilFail = json.stencilFail;\n        if (json.stencilZFail !== void 0) material.stencilZFail = json.stencilZFail;\n        if (json.stencilZPass !== void 0) material.stencilZPass = json.stencilZPass;\n        if (json.stencilWrite !== void 0) material.stencilWrite = json.stencilWrite;\n        if (json.wireframe !== void 0) material.wireframe = json.wireframe;\n        if (json.wireframeLinewidth !== void 0) material.wireframeLinewidth = json.wireframeLinewidth;\n        if (json.wireframeLinecap !== void 0) material.wireframeLinecap = json.wireframeLinecap;\n        if (json.wireframeLinejoin !== void 0) material.wireframeLinejoin = json.wireframeLinejoin;\n        if (json.rotation !== void 0) material.rotation = json.rotation;\n        if (json.linewidth !== void 0) material.linewidth = json.linewidth;\n        if (json.dashSize !== void 0) material.dashSize = json.dashSize;\n        if (json.gapSize !== void 0) material.gapSize = json.gapSize;\n        if (json.scale !== void 0) material.scale = json.scale;\n        if (json.polygonOffset !== void 0) material.polygonOffset = json.polygonOffset;\n        if (json.polygonOffsetFactor !== void 0) material.polygonOffsetFactor = json.polygonOffsetFactor;\n        if (json.polygonOffsetUnits !== void 0) material.polygonOffsetUnits = json.polygonOffsetUnits;\n        if (json.dithering !== void 0) material.dithering = json.dithering;\n        if (json.alphaToCoverage !== void 0) material.alphaToCoverage = json.alphaToCoverage;\n        if (json.premultipliedAlpha !== void 0) material.premultipliedAlpha = json.premultipliedAlpha;\n        if (json.forceSinglePass !== void 0) material.forceSinglePass = json.forceSinglePass;\n        if (json.visible !== void 0) material.visible = json.visible;\n        if (json.toneMapped !== void 0) material.toneMapped = json.toneMapped;\n        if (json.userData !== void 0) material.userData = json.userData;\n        if (json.vertexColors !== void 0) {\n          if (typeof json.vertexColors === \"number\") {\n            material.vertexColors = json.vertexColors > 0 ? true : false;\n          } else {\n            material.vertexColors = json.vertexColors;\n          }\n        }\n        if (json.uniforms !== void 0) {\n          for (const name in json.uniforms) {\n            const uniform = json.uniforms[name];\n            material.uniforms[name] = {};\n            switch (uniform.type) {\n              case \"t\":\n                material.uniforms[name].value = getTexture(uniform.value);\n                break;\n              case \"c\":\n                material.uniforms[name].value = new Color().setHex(uniform.value);\n                break;\n              case \"v2\":\n                material.uniforms[name].value = new Vector2().fromArray(uniform.value);\n                break;\n              case \"v3\":\n                material.uniforms[name].value = new Vector3().fromArray(uniform.value);\n                break;\n              case \"v4\":\n                material.uniforms[name].value = new Vector4().fromArray(uniform.value);\n                break;\n              case \"m3\":\n                material.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n                break;\n              case \"m4\":\n                material.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n                break;\n              default:\n                material.uniforms[name].value = uniform.value;\n            }\n          }\n        }\n        if (json.defines !== void 0) material.defines = json.defines;\n        if (json.vertexShader !== void 0) material.vertexShader = json.vertexShader;\n        if (json.fragmentShader !== void 0) material.fragmentShader = json.fragmentShader;\n        if (json.glslVersion !== void 0) material.glslVersion = json.glslVersion;\n        if (json.extensions !== void 0) {\n          for (const key in json.extensions) {\n            material.extensions[key] = json.extensions[key];\n          }\n        }\n        if (json.lights !== void 0) material.lights = json.lights;\n        if (json.clipping !== void 0) material.clipping = json.clipping;\n        if (json.size !== void 0) material.size = json.size;\n        if (json.sizeAttenuation !== void 0) material.sizeAttenuation = json.sizeAttenuation;\n        if (json.map !== void 0) material.map = getTexture(json.map);\n        if (json.matcap !== void 0) material.matcap = getTexture(json.matcap);\n        if (json.alphaMap !== void 0) material.alphaMap = getTexture(json.alphaMap);\n        if (json.bumpMap !== void 0) material.bumpMap = getTexture(json.bumpMap);\n        if (json.bumpScale !== void 0) material.bumpScale = json.bumpScale;\n        if (json.normalMap !== void 0) material.normalMap = getTexture(json.normalMap);\n        if (json.normalMapType !== void 0) material.normalMapType = json.normalMapType;\n        if (json.normalScale !== void 0) {\n          let normalScale = json.normalScale;\n          if (Array.isArray(normalScale) === false) {\n            normalScale = [normalScale, normalScale];\n          }\n          material.normalScale = new Vector2().fromArray(normalScale);\n        }\n        if (json.displacementMap !== void 0) material.displacementMap = getTexture(json.displacementMap);\n        if (json.displacementScale !== void 0) material.displacementScale = json.displacementScale;\n        if (json.displacementBias !== void 0) material.displacementBias = json.displacementBias;\n        if (json.roughnessMap !== void 0) material.roughnessMap = getTexture(json.roughnessMap);\n        if (json.metalnessMap !== void 0) material.metalnessMap = getTexture(json.metalnessMap);\n        if (json.emissiveMap !== void 0) material.emissiveMap = getTexture(json.emissiveMap);\n        if (json.emissiveIntensity !== void 0) material.emissiveIntensity = json.emissiveIntensity;\n        if (json.specularMap !== void 0) material.specularMap = getTexture(json.specularMap);\n        if (json.specularIntensityMap !== void 0) material.specularIntensityMap = getTexture(json.specularIntensityMap);\n        if (json.specularColorMap !== void 0) material.specularColorMap = getTexture(json.specularColorMap);\n        if (json.envMap !== void 0) material.envMap = getTexture(json.envMap);\n        if (json.envMapRotation !== void 0) material.envMapRotation.fromArray(json.envMapRotation);\n        if (json.envMapIntensity !== void 0) material.envMapIntensity = json.envMapIntensity;\n        if (json.reflectivity !== void 0) material.reflectivity = json.reflectivity;\n        if (json.refractionRatio !== void 0) material.refractionRatio = json.refractionRatio;\n        if (json.lightMap !== void 0) material.lightMap = getTexture(json.lightMap);\n        if (json.lightMapIntensity !== void 0) material.lightMapIntensity = json.lightMapIntensity;\n        if (json.aoMap !== void 0) material.aoMap = getTexture(json.aoMap);\n        if (json.aoMapIntensity !== void 0) material.aoMapIntensity = json.aoMapIntensity;\n        if (json.gradientMap !== void 0) material.gradientMap = getTexture(json.gradientMap);\n        if (json.clearcoatMap !== void 0) material.clearcoatMap = getTexture(json.clearcoatMap);\n        if (json.clearcoatRoughnessMap !== void 0) material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap);\n        if (json.clearcoatNormalMap !== void 0) material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap);\n        if (json.clearcoatNormalScale !== void 0) material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale);\n        if (json.iridescenceMap !== void 0) material.iridescenceMap = getTexture(json.iridescenceMap);\n        if (json.iridescenceThicknessMap !== void 0) material.iridescenceThicknessMap = getTexture(json.iridescenceThicknessMap);\n        if (json.transmissionMap !== void 0) material.transmissionMap = getTexture(json.transmissionMap);\n        if (json.thicknessMap !== void 0) material.thicknessMap = getTexture(json.thicknessMap);\n        if (json.anisotropyMap !== void 0) material.anisotropyMap = getTexture(json.anisotropyMap);\n        if (json.sheenColorMap !== void 0) material.sheenColorMap = getTexture(json.sheenColorMap);\n        if (json.sheenRoughnessMap !== void 0) material.sheenRoughnessMap = getTexture(json.sheenRoughnessMap);\n        return material;\n      }\n      setTextures(value) {\n        this.textures = value;\n        return this;\n      }\n      createMaterialFromType(type) {\n        return _MaterialLoader.createMaterialFromType(type);\n      }\n      static createMaterialFromType(type) {\n        const materialLib = {\n          ShadowMaterial,\n          SpriteMaterial,\n          RawShaderMaterial,\n          ShaderMaterial,\n          PointsMaterial,\n          MeshPhysicalMaterial,\n          MeshStandardMaterial,\n          MeshPhongMaterial,\n          MeshToonMaterial,\n          MeshNormalMaterial,\n          MeshLambertMaterial,\n          MeshDepthMaterial,\n          MeshDistanceMaterial,\n          MeshBasicMaterial,\n          MeshMatcapMaterial,\n          LineDashedMaterial,\n          LineBasicMaterial,\n          Material\n        };\n        return new materialLib[type]();\n      }\n    };\n    LoaderUtils = class {\n      static decodeText(array) {\n        console.warn(\"THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.\");\n        if (typeof TextDecoder !== \"undefined\") {\n          return new TextDecoder().decode(array);\n        }\n        let s = \"\";\n        for (let i2 = 0, il = array.length; i2 < il; i2++) {\n          s += String.fromCharCode(array[i2]);\n        }\n        try {\n          return decodeURIComponent(escape(s));\n        } catch (e) {\n          return s;\n        }\n      }\n      static extractUrlBase(url) {\n        const index = url.lastIndexOf(\"/\");\n        if (index === -1) return \"./\";\n        return url.slice(0, index + 1);\n      }\n      static resolveURL(url, path) {\n        if (typeof url !== \"string\" || url === \"\") return \"\";\n        if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n          path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, \"$1\");\n        }\n        if (/^(https?:)?\\/\\//i.test(url)) return url;\n        if (/^data:.*,.*$/i.test(url)) return url;\n        if (/^blob:.*$/i.test(url)) return url;\n        return path + url;\n      }\n    };\n    InstancedBufferGeometry = class extends BufferGeometry {\n      constructor() {\n        super();\n        this.isInstancedBufferGeometry = true;\n        this.type = \"InstancedBufferGeometry\";\n        this.instanceCount = Infinity;\n      }\n      copy(source) {\n        super.copy(source);\n        this.instanceCount = source.instanceCount;\n        return this;\n      }\n      toJSON() {\n        const data = super.toJSON();\n        data.instanceCount = this.instanceCount;\n        data.isInstancedBufferGeometry = true;\n        return data;\n      }\n    };\n    BufferGeometryLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const loader = new FileLoader(scope.manager);\n        loader.setPath(scope.path);\n        loader.setRequestHeader(scope.requestHeader);\n        loader.setWithCredentials(scope.withCredentials);\n        loader.load(url, function(text) {\n          try {\n            onLoad(scope.parse(JSON.parse(text)));\n          } catch (e) {\n            if (onError) {\n              onError(e);\n            } else {\n              console.error(e);\n            }\n            scope.manager.itemError(url);\n          }\n        }, onProgress, onError);\n      }\n      parse(json) {\n        const interleavedBufferMap = {};\n        const arrayBufferMap = {};\n        function getInterleavedBuffer(json2, uuid) {\n          if (interleavedBufferMap[uuid] !== void 0) return interleavedBufferMap[uuid];\n          const interleavedBuffers = json2.interleavedBuffers;\n          const interleavedBuffer = interleavedBuffers[uuid];\n          const buffer = getArrayBuffer(json2, interleavedBuffer.buffer);\n          const array = getTypedArray(interleavedBuffer.type, buffer);\n          const ib = new InterleavedBuffer(array, interleavedBuffer.stride);\n          ib.uuid = interleavedBuffer.uuid;\n          interleavedBufferMap[uuid] = ib;\n          return ib;\n        }\n        function getArrayBuffer(json2, uuid) {\n          if (arrayBufferMap[uuid] !== void 0) return arrayBufferMap[uuid];\n          const arrayBuffers = json2.arrayBuffers;\n          const arrayBuffer = arrayBuffers[uuid];\n          const ab = new Uint32Array(arrayBuffer).buffer;\n          arrayBufferMap[uuid] = ab;\n          return ab;\n        }\n        const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n        const index = json.data.index;\n        if (index !== void 0) {\n          const typedArray = getTypedArray(index.type, index.array);\n          geometry.setIndex(new BufferAttribute(typedArray, 1));\n        }\n        const attributes = json.data.attributes;\n        for (const key in attributes) {\n          const attribute = attributes[key];\n          let bufferAttribute;\n          if (attribute.isInterleavedBufferAttribute) {\n            const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n            bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n          } else {\n            const typedArray = getTypedArray(attribute.type, attribute.array);\n            const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n            bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n          }\n          if (attribute.name !== void 0) bufferAttribute.name = attribute.name;\n          if (attribute.usage !== void 0) bufferAttribute.setUsage(attribute.usage);\n          geometry.setAttribute(key, bufferAttribute);\n        }\n        const morphAttributes = json.data.morphAttributes;\n        if (morphAttributes) {\n          for (const key in morphAttributes) {\n            const attributeArray = morphAttributes[key];\n            const array = [];\n            for (let i2 = 0, il = attributeArray.length; i2 < il; i2++) {\n              const attribute = attributeArray[i2];\n              let bufferAttribute;\n              if (attribute.isInterleavedBufferAttribute) {\n                const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n                bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n              } else {\n                const typedArray = getTypedArray(attribute.type, attribute.array);\n                bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n              }\n              if (attribute.name !== void 0) bufferAttribute.name = attribute.name;\n              array.push(bufferAttribute);\n            }\n            geometry.morphAttributes[key] = array;\n          }\n        }\n        const morphTargetsRelative = json.data.morphTargetsRelative;\n        if (morphTargetsRelative) {\n          geometry.morphTargetsRelative = true;\n        }\n        const groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n        if (groups !== void 0) {\n          for (let i2 = 0, n = groups.length; i2 !== n; ++i2) {\n            const group = groups[i2];\n            geometry.addGroup(group.start, group.count, group.materialIndex);\n          }\n        }\n        const boundingSphere = json.data.boundingSphere;\n        if (boundingSphere !== void 0) {\n          const center = new Vector3();\n          if (boundingSphere.center !== void 0) {\n            center.fromArray(boundingSphere.center);\n          }\n          geometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n        }\n        if (json.name) geometry.name = json.name;\n        if (json.userData) geometry.userData = json.userData;\n        return geometry;\n      }\n    };\n    ObjectLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n        this.resourcePath = this.resourcePath || path;\n        const loader = new FileLoader(this.manager);\n        loader.setPath(this.path);\n        loader.setRequestHeader(this.requestHeader);\n        loader.setWithCredentials(this.withCredentials);\n        loader.load(url, function(text) {\n          let json = null;\n          try {\n            json = JSON.parse(text);\n          } catch (error2) {\n            if (onError !== void 0) onError(error2);\n            console.error(\"THREE:ObjectLoader: Can't parse \" + url + \".\", error2.message);\n            return;\n          }\n          const metadata = json.metadata;\n          if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n            if (onError !== void 0) onError(new Error(\"THREE.ObjectLoader: Can't load \" + url));\n            console.error(\"THREE.ObjectLoader: Can't load \" + url);\n            return;\n          }\n          scope.parse(json, onLoad);\n        }, onProgress, onError);\n      }\n      loadAsync(url, onProgress) {\n        return __async(this, null, function* () {\n          const scope = this;\n          const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n          this.resourcePath = this.resourcePath || path;\n          const loader = new FileLoader(this.manager);\n          loader.setPath(this.path);\n          loader.setRequestHeader(this.requestHeader);\n          loader.setWithCredentials(this.withCredentials);\n          const text = yield loader.loadAsync(url, onProgress);\n          const json = JSON.parse(text);\n          const metadata = json.metadata;\n          if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n            throw new Error(\"THREE.ObjectLoader: Can't load \" + url);\n          }\n          return yield scope.parseAsync(json);\n        });\n      }\n      parse(json, onLoad) {\n        const animations = this.parseAnimations(json.animations);\n        const shapes = this.parseShapes(json.shapes);\n        const geometries = this.parseGeometries(json.geometries, shapes);\n        const images = this.parseImages(json.images, function() {\n          if (onLoad !== void 0) onLoad(object);\n        });\n        const textures = this.parseTextures(json.textures, images);\n        const materials = this.parseMaterials(json.materials, textures);\n        const object = this.parseObject(json.object, geometries, materials, textures, animations);\n        const skeletons = this.parseSkeletons(json.skeletons, object);\n        this.bindSkeletons(object, skeletons);\n        this.bindLightTargets(object);\n        if (onLoad !== void 0) {\n          let hasImages = false;\n          for (const uuid in images) {\n            if (images[uuid].data instanceof HTMLImageElement) {\n              hasImages = true;\n              break;\n            }\n          }\n          if (hasImages === false) onLoad(object);\n        }\n        return object;\n      }\n      parseAsync(json) {\n        return __async(this, null, function* () {\n          const animations = this.parseAnimations(json.animations);\n          const shapes = this.parseShapes(json.shapes);\n          const geometries = this.parseGeometries(json.geometries, shapes);\n          const images = yield this.parseImagesAsync(json.images);\n          const textures = this.parseTextures(json.textures, images);\n          const materials = this.parseMaterials(json.materials, textures);\n          const object = this.parseObject(json.object, geometries, materials, textures, animations);\n          const skeletons = this.parseSkeletons(json.skeletons, object);\n          this.bindSkeletons(object, skeletons);\n          this.bindLightTargets(object);\n          return object;\n        });\n      }\n      parseShapes(json) {\n        const shapes = {};\n        if (json !== void 0) {\n          for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n            const shape = new Shape().fromJSON(json[i2]);\n            shapes[shape.uuid] = shape;\n          }\n        }\n        return shapes;\n      }\n      parseSkeletons(json, object) {\n        const skeletons = {};\n        const bones = {};\n        object.traverse(function(child) {\n          if (child.isBone) bones[child.uuid] = child;\n        });\n        if (json !== void 0) {\n          for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n            const skeleton = new Skeleton().fromJSON(json[i2], bones);\n            skeletons[skeleton.uuid] = skeleton;\n          }\n        }\n        return skeletons;\n      }\n      parseGeometries(json, shapes) {\n        const geometries = {};\n        if (json !== void 0) {\n          const bufferGeometryLoader = new BufferGeometryLoader();\n          for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n            let geometry;\n            const data = json[i2];\n            switch (data.type) {\n              case \"BufferGeometry\":\n              case \"InstancedBufferGeometry\":\n                geometry = bufferGeometryLoader.parse(data);\n                break;\n              default:\n                if (data.type in Geometries) {\n                  geometry = Geometries[data.type].fromJSON(data, shapes);\n                } else {\n                  console.warn(`THREE.ObjectLoader: Unsupported geometry type \"${data.type}\"`);\n                }\n            }\n            geometry.uuid = data.uuid;\n            if (data.name !== void 0) geometry.name = data.name;\n            if (data.userData !== void 0) geometry.userData = data.userData;\n            geometries[data.uuid] = geometry;\n          }\n        }\n        return geometries;\n      }\n      parseMaterials(json, textures) {\n        const cache = {};\n        const materials = {};\n        if (json !== void 0) {\n          const loader = new MaterialLoader();\n          loader.setTextures(textures);\n          for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n            const data = json[i2];\n            if (cache[data.uuid] === void 0) {\n              cache[data.uuid] = loader.parse(data);\n            }\n            materials[data.uuid] = cache[data.uuid];\n          }\n        }\n        return materials;\n      }\n      parseAnimations(json) {\n        const animations = {};\n        if (json !== void 0) {\n          for (let i2 = 0; i2 < json.length; i2++) {\n            const data = json[i2];\n            const clip = AnimationClip.parse(data);\n            animations[clip.uuid] = clip;\n          }\n        }\n        return animations;\n      }\n      parseImages(json, onLoad) {\n        const scope = this;\n        const images = {};\n        let loader;\n        function loadImage(url) {\n          scope.manager.itemStart(url);\n          return loader.load(url, function() {\n            scope.manager.itemEnd(url);\n          }, void 0, function() {\n            scope.manager.itemError(url);\n            scope.manager.itemEnd(url);\n          });\n        }\n        function deserializeImage(image) {\n          if (typeof image === \"string\") {\n            const url = image;\n            const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n            return loadImage(path);\n          } else {\n            if (image.data) {\n              return {\n                data: getTypedArray(image.type, image.data),\n                width: image.width,\n                height: image.height\n              };\n            } else {\n              return null;\n            }\n          }\n        }\n        if (json !== void 0 && json.length > 0) {\n          const manager = new LoadingManager(onLoad);\n          loader = new ImageLoader(manager);\n          loader.setCrossOrigin(this.crossOrigin);\n          for (let i2 = 0, il = json.length; i2 < il; i2++) {\n            const image = json[i2];\n            const url = image.url;\n            if (Array.isArray(url)) {\n              const imageArray = [];\n              for (let j2 = 0, jl = url.length; j2 < jl; j2++) {\n                const currentUrl = url[j2];\n                const deserializedImage = deserializeImage(currentUrl);\n                if (deserializedImage !== null) {\n                  if (deserializedImage instanceof HTMLImageElement) {\n                    imageArray.push(deserializedImage);\n                  } else {\n                    imageArray.push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n                  }\n                }\n              }\n              images[image.uuid] = new Source(imageArray);\n            } else {\n              const deserializedImage = deserializeImage(image.url);\n              images[image.uuid] = new Source(deserializedImage);\n            }\n          }\n        }\n        return images;\n      }\n      parseImagesAsync(json) {\n        return __async(this, null, function* () {\n          const scope = this;\n          const images = {};\n          let loader;\n          function deserializeImage(image) {\n            return __async(this, null, function* () {\n              if (typeof image === \"string\") {\n                const url = image;\n                const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n                return yield loader.loadAsync(path);\n              } else {\n                if (image.data) {\n                  return {\n                    data: getTypedArray(image.type, image.data),\n                    width: image.width,\n                    height: image.height\n                  };\n                } else {\n                  return null;\n                }\n              }\n            });\n          }\n          if (json !== void 0 && json.length > 0) {\n            loader = new ImageLoader(this.manager);\n            loader.setCrossOrigin(this.crossOrigin);\n            for (let i2 = 0, il = json.length; i2 < il; i2++) {\n              const image = json[i2];\n              const url = image.url;\n              if (Array.isArray(url)) {\n                const imageArray = [];\n                for (let j2 = 0, jl = url.length; j2 < jl; j2++) {\n                  const currentUrl = url[j2];\n                  const deserializedImage = yield deserializeImage(currentUrl);\n                  if (deserializedImage !== null) {\n                    if (deserializedImage instanceof HTMLImageElement) {\n                      imageArray.push(deserializedImage);\n                    } else {\n                      imageArray.push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n                    }\n                  }\n                }\n                images[image.uuid] = new Source(imageArray);\n              } else {\n                const deserializedImage = yield deserializeImage(image.url);\n                images[image.uuid] = new Source(deserializedImage);\n              }\n            }\n          }\n          return images;\n        });\n      }\n      parseTextures(json, images) {\n        function parseConstant(value, type) {\n          if (typeof value === \"number\") return value;\n          console.warn(\"THREE.ObjectLoader.parseTexture: Constant should be in numeric form.\", value);\n          return type[value];\n        }\n        const textures = {};\n        if (json !== void 0) {\n          for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n            const data = json[i2];\n            if (data.image === void 0) {\n              console.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n            }\n            if (images[data.image] === void 0) {\n              console.warn(\"THREE.ObjectLoader: Undefined image\", data.image);\n            }\n            const source = images[data.image];\n            const image = source.data;\n            let texture;\n            if (Array.isArray(image)) {\n              texture = new CubeTexture();\n              if (image.length === 6) texture.needsUpdate = true;\n            } else {\n              if (image && image.data) {\n                texture = new DataTexture();\n              } else {\n                texture = new Texture();\n              }\n              if (image) texture.needsUpdate = true;\n            }\n            texture.source = source;\n            texture.uuid = data.uuid;\n            if (data.name !== void 0) texture.name = data.name;\n            if (data.mapping !== void 0) texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n            if (data.channel !== void 0) texture.channel = data.channel;\n            if (data.offset !== void 0) texture.offset.fromArray(data.offset);\n            if (data.repeat !== void 0) texture.repeat.fromArray(data.repeat);\n            if (data.center !== void 0) texture.center.fromArray(data.center);\n            if (data.rotation !== void 0) texture.rotation = data.rotation;\n            if (data.wrap !== void 0) {\n              texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n              texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n            }\n            if (data.format !== void 0) texture.format = data.format;\n            if (data.internalFormat !== void 0) texture.internalFormat = data.internalFormat;\n            if (data.type !== void 0) texture.type = data.type;\n            if (data.colorSpace !== void 0) texture.colorSpace = data.colorSpace;\n            if (data.minFilter !== void 0) texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n            if (data.magFilter !== void 0) texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n            if (data.anisotropy !== void 0) texture.anisotropy = data.anisotropy;\n            if (data.flipY !== void 0) texture.flipY = data.flipY;\n            if (data.generateMipmaps !== void 0) texture.generateMipmaps = data.generateMipmaps;\n            if (data.premultiplyAlpha !== void 0) texture.premultiplyAlpha = data.premultiplyAlpha;\n            if (data.unpackAlignment !== void 0) texture.unpackAlignment = data.unpackAlignment;\n            if (data.compareFunction !== void 0) texture.compareFunction = data.compareFunction;\n            if (data.userData !== void 0) texture.userData = data.userData;\n            textures[data.uuid] = texture;\n          }\n        }\n        return textures;\n      }\n      parseObject(data, geometries, materials, textures, animations) {\n        let object;\n        function getGeometry(name) {\n          if (geometries[name] === void 0) {\n            console.warn(\"THREE.ObjectLoader: Undefined geometry\", name);\n          }\n          return geometries[name];\n        }\n        function getMaterial(name) {\n          if (name === void 0) return void 0;\n          if (Array.isArray(name)) {\n            const array = [];\n            for (let i2 = 0, l2 = name.length; i2 < l2; i2++) {\n              const uuid = name[i2];\n              if (materials[uuid] === void 0) {\n                console.warn(\"THREE.ObjectLoader: Undefined material\", uuid);\n              }\n              array.push(materials[uuid]);\n            }\n            return array;\n          }\n          if (materials[name] === void 0) {\n            console.warn(\"THREE.ObjectLoader: Undefined material\", name);\n          }\n          return materials[name];\n        }\n        function getTexture(uuid) {\n          if (textures[uuid] === void 0) {\n            console.warn(\"THREE.ObjectLoader: Undefined texture\", uuid);\n          }\n          return textures[uuid];\n        }\n        let geometry, material;\n        switch (data.type) {\n          case \"Scene\":\n            object = new Scene();\n            if (data.background !== void 0) {\n              if (Number.isInteger(data.background)) {\n                object.background = new Color(data.background);\n              } else {\n                object.background = getTexture(data.background);\n              }\n            }\n            if (data.environment !== void 0) {\n              object.environment = getTexture(data.environment);\n            }\n            if (data.fog !== void 0) {\n              if (data.fog.type === \"Fog\") {\n                object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n              } else if (data.fog.type === \"FogExp2\") {\n                object.fog = new FogExp2(data.fog.color, data.fog.density);\n              }\n              if (data.fog.name !== \"\") {\n                object.fog.name = data.fog.name;\n              }\n            }\n            if (data.backgroundBlurriness !== void 0) object.backgroundBlurriness = data.backgroundBlurriness;\n            if (data.backgroundIntensity !== void 0) object.backgroundIntensity = data.backgroundIntensity;\n            if (data.backgroundRotation !== void 0) object.backgroundRotation.fromArray(data.backgroundRotation);\n            if (data.environmentIntensity !== void 0) object.environmentIntensity = data.environmentIntensity;\n            if (data.environmentRotation !== void 0) object.environmentRotation.fromArray(data.environmentRotation);\n            break;\n          case \"PerspectiveCamera\":\n            object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n            if (data.focus !== void 0) object.focus = data.focus;\n            if (data.zoom !== void 0) object.zoom = data.zoom;\n            if (data.filmGauge !== void 0) object.filmGauge = data.filmGauge;\n            if (data.filmOffset !== void 0) object.filmOffset = data.filmOffset;\n            if (data.view !== void 0) object.view = Object.assign({}, data.view);\n            break;\n          case \"OrthographicCamera\":\n            object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n            if (data.zoom !== void 0) object.zoom = data.zoom;\n            if (data.view !== void 0) object.view = Object.assign({}, data.view);\n            break;\n          case \"AmbientLight\":\n            object = new AmbientLight(data.color, data.intensity);\n            break;\n          case \"DirectionalLight\":\n            object = new DirectionalLight(data.color, data.intensity);\n            object.target = data.target || \"\";\n            break;\n          case \"PointLight\":\n            object = new PointLight(data.color, data.intensity, data.distance, data.decay);\n            break;\n          case \"RectAreaLight\":\n            object = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n            break;\n          case \"SpotLight\":\n            object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n            object.target = data.target || \"\";\n            break;\n          case \"HemisphereLight\":\n            object = new HemisphereLight(data.color, data.groundColor, data.intensity);\n            break;\n          case \"LightProbe\":\n            object = new LightProbe().fromJSON(data);\n            break;\n          case \"SkinnedMesh\":\n            geometry = getGeometry(data.geometry);\n            material = getMaterial(data.material);\n            object = new SkinnedMesh(geometry, material);\n            if (data.bindMode !== void 0) object.bindMode = data.bindMode;\n            if (data.bindMatrix !== void 0) object.bindMatrix.fromArray(data.bindMatrix);\n            if (data.skeleton !== void 0) object.skeleton = data.skeleton;\n            break;\n          case \"Mesh\":\n            geometry = getGeometry(data.geometry);\n            material = getMaterial(data.material);\n            object = new Mesh(geometry, material);\n            break;\n          case \"InstancedMesh\":\n            geometry = getGeometry(data.geometry);\n            material = getMaterial(data.material);\n            const count = data.count;\n            const instanceMatrix = data.instanceMatrix;\n            const instanceColor = data.instanceColor;\n            object = new InstancedMesh(geometry, material, count);\n            object.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16);\n            if (instanceColor !== void 0) object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize);\n            break;\n          case \"BatchedMesh\":\n            geometry = getGeometry(data.geometry);\n            material = getMaterial(data.material);\n            object = new BatchedMesh(data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material);\n            object.geometry = geometry;\n            object.perObjectFrustumCulled = data.perObjectFrustumCulled;\n            object.sortObjects = data.sortObjects;\n            object._drawRanges = data.drawRanges;\n            object._reservedRanges = data.reservedRanges;\n            object._visibility = data.visibility;\n            object._active = data.active;\n            object._bounds = data.bounds.map((bound) => {\n              const box = new Box3();\n              box.min.fromArray(bound.boxMin);\n              box.max.fromArray(bound.boxMax);\n              const sphere = new Sphere();\n              sphere.radius = bound.sphereRadius;\n              sphere.center.fromArray(bound.sphereCenter);\n              return {\n                boxInitialized: bound.boxInitialized,\n                box,\n                sphereInitialized: bound.sphereInitialized,\n                sphere\n              };\n            });\n            object._maxInstanceCount = data.maxInstanceCount;\n            object._maxVertexCount = data.maxVertexCount;\n            object._maxIndexCount = data.maxIndexCount;\n            object._geometryInitialized = data.geometryInitialized;\n            object._geometryCount = data.geometryCount;\n            object._matricesTexture = getTexture(data.matricesTexture.uuid);\n            if (data.colorsTexture !== void 0) object._colorsTexture = getTexture(data.colorsTexture.uuid);\n            break;\n          case \"LOD\":\n            object = new LOD();\n            break;\n          case \"Line\":\n            object = new Line(getGeometry(data.geometry), getMaterial(data.material));\n            break;\n          case \"LineLoop\":\n            object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n            break;\n          case \"LineSegments\":\n            object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n            break;\n          case \"PointCloud\":\n          case \"Points\":\n            object = new Points(getGeometry(data.geometry), getMaterial(data.material));\n            break;\n          case \"Sprite\":\n            object = new Sprite(getMaterial(data.material));\n            break;\n          case \"Group\":\n            object = new Group();\n            break;\n          case \"Bone\":\n            object = new Bone();\n            break;\n          default:\n            object = new Object3D();\n        }\n        object.uuid = data.uuid;\n        if (data.name !== void 0) object.name = data.name;\n        if (data.matrix !== void 0) {\n          object.matrix.fromArray(data.matrix);\n          if (data.matrixAutoUpdate !== void 0) object.matrixAutoUpdate = data.matrixAutoUpdate;\n          if (object.matrixAutoUpdate) object.matrix.decompose(object.position, object.quaternion, object.scale);\n        } else {\n          if (data.position !== void 0) object.position.fromArray(data.position);\n          if (data.rotation !== void 0) object.rotation.fromArray(data.rotation);\n          if (data.quaternion !== void 0) object.quaternion.fromArray(data.quaternion);\n          if (data.scale !== void 0) object.scale.fromArray(data.scale);\n        }\n        if (data.up !== void 0) object.up.fromArray(data.up);\n        if (data.castShadow !== void 0) object.castShadow = data.castShadow;\n        if (data.receiveShadow !== void 0) object.receiveShadow = data.receiveShadow;\n        if (data.shadow) {\n          if (data.shadow.intensity !== void 0) object.shadow.intensity = data.shadow.intensity;\n          if (data.shadow.bias !== void 0) object.shadow.bias = data.shadow.bias;\n          if (data.shadow.normalBias !== void 0) object.shadow.normalBias = data.shadow.normalBias;\n          if (data.shadow.radius !== void 0) object.shadow.radius = data.shadow.radius;\n          if (data.shadow.mapSize !== void 0) object.shadow.mapSize.fromArray(data.shadow.mapSize);\n          if (data.shadow.camera !== void 0) object.shadow.camera = this.parseObject(data.shadow.camera);\n        }\n        if (data.visible !== void 0) object.visible = data.visible;\n        if (data.frustumCulled !== void 0) object.frustumCulled = data.frustumCulled;\n        if (data.renderOrder !== void 0) object.renderOrder = data.renderOrder;\n        if (data.userData !== void 0) object.userData = data.userData;\n        if (data.layers !== void 0) object.layers.mask = data.layers;\n        if (data.children !== void 0) {\n          const children = data.children;\n          for (let i2 = 0; i2 < children.length; i2++) {\n            object.add(this.parseObject(children[i2], geometries, materials, textures, animations));\n          }\n        }\n        if (data.animations !== void 0) {\n          const objectAnimations = data.animations;\n          for (let i2 = 0; i2 < objectAnimations.length; i2++) {\n            const uuid = objectAnimations[i2];\n            object.animations.push(animations[uuid]);\n          }\n        }\n        if (data.type === \"LOD\") {\n          if (data.autoUpdate !== void 0) object.autoUpdate = data.autoUpdate;\n          const levels = data.levels;\n          for (let l2 = 0; l2 < levels.length; l2++) {\n            const level = levels[l2];\n            const child = object.getObjectByProperty(\"uuid\", level.object);\n            if (child !== void 0) {\n              object.addLevel(child, level.distance, level.hysteresis);\n            }\n          }\n        }\n        return object;\n      }\n      bindSkeletons(object, skeletons) {\n        if (Object.keys(skeletons).length === 0) return;\n        object.traverse(function(child) {\n          if (child.isSkinnedMesh === true && child.skeleton !== void 0) {\n            const skeleton = skeletons[child.skeleton];\n            if (skeleton === void 0) {\n              console.warn(\"THREE.ObjectLoader: No skeleton found with UUID:\", child.skeleton);\n            } else {\n              child.bind(skeleton, child.bindMatrix);\n            }\n          }\n        });\n      }\n      bindLightTargets(object) {\n        object.traverse(function(child) {\n          if (child.isDirectionalLight || child.isSpotLight) {\n            const uuid = child.target;\n            const target2 = object.getObjectByProperty(\"uuid\", uuid);\n            if (target2 !== void 0) {\n              child.target = target2;\n            } else {\n              child.target = new Object3D();\n            }\n          }\n        });\n      }\n    };\n    TEXTURE_MAPPING = {\n      UVMapping,\n      CubeReflectionMapping,\n      CubeRefractionMapping,\n      EquirectangularReflectionMapping,\n      EquirectangularRefractionMapping,\n      CubeUVReflectionMapping\n    };\n    TEXTURE_WRAPPING = {\n      RepeatWrapping,\n      ClampToEdgeWrapping,\n      MirroredRepeatWrapping\n    };\n    TEXTURE_FILTER = {\n      NearestFilter,\n      NearestMipmapNearestFilter,\n      NearestMipmapLinearFilter,\n      LinearFilter,\n      LinearMipmapNearestFilter,\n      LinearMipmapLinearFilter\n    };\n    ImageBitmapLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n        this.isImageBitmapLoader = true;\n        if (typeof createImageBitmap === \"undefined\") {\n          console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\");\n        }\n        if (typeof fetch === \"undefined\") {\n          console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\");\n        }\n        this.options = { premultiplyAlpha: \"none\" };\n      }\n      setOptions(options) {\n        this.options = options;\n        return this;\n      }\n      load(url, onLoad, onProgress, onError) {\n        if (url === void 0) url = \"\";\n        if (this.path !== void 0) url = this.path + url;\n        url = this.manager.resolveURL(url);\n        const scope = this;\n        const cached = Cache.get(url);\n        if (cached !== void 0) {\n          scope.manager.itemStart(url);\n          if (cached.then) {\n            cached.then((imageBitmap) => {\n              if (onLoad) onLoad(imageBitmap);\n              scope.manager.itemEnd(url);\n            }).catch((e) => {\n              if (onError) onError(e);\n            });\n            return;\n          }\n          setTimeout(function() {\n            if (onLoad) onLoad(cached);\n            scope.manager.itemEnd(url);\n          }, 0);\n          return cached;\n        }\n        const fetchOptions = {};\n        fetchOptions.credentials = this.crossOrigin === \"anonymous\" ? \"same-origin\" : \"include\";\n        fetchOptions.headers = this.requestHeader;\n        const promise = fetch(url, fetchOptions).then(function(res) {\n          return res.blob();\n        }).then(function(blob) {\n          return createImageBitmap(blob, Object.assign(scope.options, { colorSpaceConversion: \"none\" }));\n        }).then(function(imageBitmap) {\n          Cache.add(url, imageBitmap);\n          if (onLoad) onLoad(imageBitmap);\n          scope.manager.itemEnd(url);\n          return imageBitmap;\n        }).catch(function(e) {\n          if (onError) onError(e);\n          Cache.remove(url);\n          scope.manager.itemError(url);\n          scope.manager.itemEnd(url);\n        });\n        Cache.add(url, promise);\n        scope.manager.itemStart(url);\n      }\n    };\n    AudioContext = class {\n      static getContext() {\n        if (_context === void 0) {\n          _context = new (window.AudioContext || window.webkitAudioContext)();\n        }\n        return _context;\n      }\n      static setContext(value) {\n        _context = value;\n      }\n    };\n    AudioLoader = class extends Loader {\n      constructor(manager) {\n        super(manager);\n      }\n      load(url, onLoad, onProgress, onError) {\n        const scope = this;\n        const loader = new FileLoader(this.manager);\n        loader.setResponseType(\"arraybuffer\");\n        loader.setPath(this.path);\n        loader.setRequestHeader(this.requestHeader);\n        loader.setWithCredentials(this.withCredentials);\n        loader.load(url, function(buffer) {\n          try {\n            const bufferCopy = buffer.slice(0);\n            const context2 = AudioContext.getContext();\n            context2.decodeAudioData(bufferCopy, function(audioBuffer) {\n              onLoad(audioBuffer);\n            }).catch(handleError);\n          } catch (e) {\n            handleError(e);\n          }\n        }, onProgress, onError);\n        function handleError(e) {\n          if (onError) {\n            onError(e);\n          } else {\n            console.error(e);\n          }\n          scope.manager.itemError(url);\n        }\n      }\n    };\n    _eyeRight = /* @__PURE__ */ new Matrix4();\n    _eyeLeft = /* @__PURE__ */ new Matrix4();\n    _projectionMatrix = /* @__PURE__ */ new Matrix4();\n    StereoCamera = class {\n      constructor() {\n        this.type = \"StereoCamera\";\n        this.aspect = 1;\n        this.eyeSep = 0.064;\n        this.cameraL = new PerspectiveCamera();\n        this.cameraL.layers.enable(1);\n        this.cameraL.matrixAutoUpdate = false;\n        this.cameraR = new PerspectiveCamera();\n        this.cameraR.layers.enable(2);\n        this.cameraR.matrixAutoUpdate = false;\n        this._cache = {\n          focus: null,\n          fov: null,\n          aspect: null,\n          near: null,\n          far: null,\n          zoom: null,\n          eyeSep: null\n        };\n      }\n      update(camera) {\n        const cache = this._cache;\n        const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n        if (needsUpdate) {\n          cache.focus = camera.focus;\n          cache.fov = camera.fov;\n          cache.aspect = camera.aspect * this.aspect;\n          cache.near = camera.near;\n          cache.far = camera.far;\n          cache.zoom = camera.zoom;\n          cache.eyeSep = this.eyeSep;\n          _projectionMatrix.copy(camera.projectionMatrix);\n          const eyeSepHalf = cache.eyeSep / 2;\n          const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n          const ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom;\n          let xmin, xmax;\n          _eyeLeft.elements[12] = -eyeSepHalf;\n          _eyeRight.elements[12] = eyeSepHalf;\n          xmin = -ymax * cache.aspect + eyeSepOnProjection;\n          xmax = ymax * cache.aspect + eyeSepOnProjection;\n          _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n          _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n          this.cameraL.projectionMatrix.copy(_projectionMatrix);\n          xmin = -ymax * cache.aspect - eyeSepOnProjection;\n          xmax = ymax * cache.aspect - eyeSepOnProjection;\n          _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n          _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n          this.cameraR.projectionMatrix.copy(_projectionMatrix);\n        }\n        this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);\n        this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight);\n      }\n    };\n    Clock = class {\n      constructor(autoStart = true) {\n        this.autoStart = autoStart;\n        this.startTime = 0;\n        this.oldTime = 0;\n        this.elapsedTime = 0;\n        this.running = false;\n      }\n      start() {\n        this.startTime = now();\n        this.oldTime = this.startTime;\n        this.elapsedTime = 0;\n        this.running = true;\n      }\n      stop() {\n        this.getElapsedTime();\n        this.running = false;\n        this.autoStart = false;\n      }\n      getElapsedTime() {\n        this.getDelta();\n        return this.elapsedTime;\n      }\n      getDelta() {\n        let diff = 0;\n        if (this.autoStart && !this.running) {\n          this.start();\n          return 0;\n        }\n        if (this.running) {\n          const newTime = now();\n          diff = (newTime - this.oldTime) / 1e3;\n          this.oldTime = newTime;\n          this.elapsedTime += diff;\n        }\n        return diff;\n      }\n    };\n    _position$1 = /* @__PURE__ */ new Vector3();\n    _quaternion$1 = /* @__PURE__ */ new Quaternion();\n    _scale$1 = /* @__PURE__ */ new Vector3();\n    _orientation$1 = /* @__PURE__ */ new Vector3();\n    AudioListener = class extends Object3D {\n      constructor() {\n        super();\n        this.type = \"AudioListener\";\n        this.context = AudioContext.getContext();\n        this.gain = this.context.createGain();\n        this.gain.connect(this.context.destination);\n        this.filter = null;\n        this.timeDelta = 0;\n        this._clock = new Clock();\n      }\n      getInput() {\n        return this.gain;\n      }\n      removeFilter() {\n        if (this.filter !== null) {\n          this.gain.disconnect(this.filter);\n          this.filter.disconnect(this.context.destination);\n          this.gain.connect(this.context.destination);\n          this.filter = null;\n        }\n        return this;\n      }\n      getFilter() {\n        return this.filter;\n      }\n      setFilter(value) {\n        if (this.filter !== null) {\n          this.gain.disconnect(this.filter);\n          this.filter.disconnect(this.context.destination);\n        } else {\n          this.gain.disconnect(this.context.destination);\n        }\n        this.filter = value;\n        this.gain.connect(this.filter);\n        this.filter.connect(this.context.destination);\n        return this;\n      }\n      getMasterVolume() {\n        return this.gain.gain.value;\n      }\n      setMasterVolume(value) {\n        this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n        return this;\n      }\n      updateMatrixWorld(force) {\n        super.updateMatrixWorld(force);\n        const listener = this.context.listener;\n        const up = this.up;\n        this.timeDelta = this._clock.getDelta();\n        this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1);\n        _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1);\n        if (listener.positionX) {\n          const endTime = this.context.currentTime + this.timeDelta;\n          listener.positionX.linearRampToValueAtTime(_position$1.x, endTime);\n          listener.positionY.linearRampToValueAtTime(_position$1.y, endTime);\n          listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime);\n          listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime);\n          listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime);\n          listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime);\n          listener.upX.linearRampToValueAtTime(up.x, endTime);\n          listener.upY.linearRampToValueAtTime(up.y, endTime);\n          listener.upZ.linearRampToValueAtTime(up.z, endTime);\n        } else {\n          listener.setPosition(_position$1.x, _position$1.y, _position$1.z);\n          listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z);\n        }\n      }\n    };\n    Audio = class extends Object3D {\n      constructor(listener) {\n        super();\n        this.type = \"Audio\";\n        this.listener = listener;\n        this.context = listener.context;\n        this.gain = this.context.createGain();\n        this.gain.connect(listener.getInput());\n        this.autoplay = false;\n        this.buffer = null;\n        this.detune = 0;\n        this.loop = false;\n        this.loopStart = 0;\n        this.loopEnd = 0;\n        this.offset = 0;\n        this.duration = void 0;\n        this.playbackRate = 1;\n        this.isPlaying = false;\n        this.hasPlaybackControl = true;\n        this.source = null;\n        this.sourceType = \"empty\";\n        this._startedAt = 0;\n        this._progress = 0;\n        this._connected = false;\n        this.filters = [];\n      }\n      getOutput() {\n        return this.gain;\n      }\n      setNodeSource(audioNode) {\n        this.hasPlaybackControl = false;\n        this.sourceType = \"audioNode\";\n        this.source = audioNode;\n        this.connect();\n        return this;\n      }\n      setMediaElementSource(mediaElement) {\n        this.hasPlaybackControl = false;\n        this.sourceType = \"mediaNode\";\n        this.source = this.context.createMediaElementSource(mediaElement);\n        this.connect();\n        return this;\n      }\n      setMediaStreamSource(mediaStream) {\n        this.hasPlaybackControl = false;\n        this.sourceType = \"mediaStreamNode\";\n        this.source = this.context.createMediaStreamSource(mediaStream);\n        this.connect();\n        return this;\n      }\n      setBuffer(audioBuffer) {\n        this.buffer = audioBuffer;\n        this.sourceType = \"buffer\";\n        if (this.autoplay) this.play();\n        return this;\n      }\n      play(delay = 0) {\n        if (this.isPlaying === true) {\n          console.warn(\"THREE.Audio: Audio is already playing.\");\n          return;\n        }\n        if (this.hasPlaybackControl === false) {\n          console.warn(\"THREE.Audio: this Audio has no playback control.\");\n          return;\n        }\n        this._startedAt = this.context.currentTime + delay;\n        const source = this.context.createBufferSource();\n        source.buffer = this.buffer;\n        source.loop = this.loop;\n        source.loopStart = this.loopStart;\n        source.loopEnd = this.loopEnd;\n        source.onended = this.onEnded.bind(this);\n        source.start(this._startedAt, this._progress + this.offset, this.duration);\n        this.isPlaying = true;\n        this.source = source;\n        this.setDetune(this.detune);\n        this.setPlaybackRate(this.playbackRate);\n        return this.connect();\n      }\n      pause() {\n        if (this.hasPlaybackControl === false) {\n          console.warn(\"THREE.Audio: this Audio has no playback control.\");\n          return;\n        }\n        if (this.isPlaying === true) {\n          this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate;\n          if (this.loop === true) {\n            this._progress = this._progress % (this.duration || this.buffer.duration);\n          }\n          this.source.stop();\n          this.source.onended = null;\n          this.isPlaying = false;\n        }\n        return this;\n      }\n      stop(delay = 0) {\n        if (this.hasPlaybackControl === false) {\n          console.warn(\"THREE.Audio: this Audio has no playback control.\");\n          return;\n        }\n        this._progress = 0;\n        if (this.source !== null) {\n          this.source.stop(this.context.currentTime + delay);\n          this.source.onended = null;\n        }\n        this.isPlaying = false;\n        return this;\n      }\n      connect() {\n        if (this.filters.length > 0) {\n          this.source.connect(this.filters[0]);\n          for (let i2 = 1, l2 = this.filters.length; i2 < l2; i2++) {\n            this.filters[i2 - 1].connect(this.filters[i2]);\n          }\n          this.filters[this.filters.length - 1].connect(this.getOutput());\n        } else {\n          this.source.connect(this.getOutput());\n        }\n        this._connected = true;\n        return this;\n      }\n      disconnect() {\n        if (this._connected === false) {\n          return;\n        }\n        if (this.filters.length > 0) {\n          this.source.disconnect(this.filters[0]);\n          for (let i2 = 1, l2 = this.filters.length; i2 < l2; i2++) {\n            this.filters[i2 - 1].disconnect(this.filters[i2]);\n          }\n          this.filters[this.filters.length - 1].disconnect(this.getOutput());\n        } else {\n          this.source.disconnect(this.getOutput());\n        }\n        this._connected = false;\n        return this;\n      }\n      getFilters() {\n        return this.filters;\n      }\n      setFilters(value) {\n        if (!value) value = [];\n        if (this._connected === true) {\n          this.disconnect();\n          this.filters = value.slice();\n          this.connect();\n        } else {\n          this.filters = value.slice();\n        }\n        return this;\n      }\n      setDetune(value) {\n        this.detune = value;\n        if (this.isPlaying === true && this.source.detune !== void 0) {\n          this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n        }\n        return this;\n      }\n      getDetune() {\n        return this.detune;\n      }\n      getFilter() {\n        return this.getFilters()[0];\n      }\n      setFilter(filter) {\n        return this.setFilters(filter ? [filter] : []);\n      }\n      setPlaybackRate(value) {\n        if (this.hasPlaybackControl === false) {\n          console.warn(\"THREE.Audio: this Audio has no playback control.\");\n          return;\n        }\n        this.playbackRate = value;\n        if (this.isPlaying === true) {\n          this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n        }\n        return this;\n      }\n      getPlaybackRate() {\n        return this.playbackRate;\n      }\n      onEnded() {\n        this.isPlaying = false;\n      }\n      getLoop() {\n        if (this.hasPlaybackControl === false) {\n          console.warn(\"THREE.Audio: this Audio has no playback control.\");\n          return false;\n        }\n        return this.loop;\n      }\n      setLoop(value) {\n        if (this.hasPlaybackControl === false) {\n          console.warn(\"THREE.Audio: this Audio has no playback control.\");\n          return;\n        }\n        this.loop = value;\n        if (this.isPlaying === true) {\n          this.source.loop = this.loop;\n        }\n        return this;\n      }\n      setLoopStart(value) {\n        this.loopStart = value;\n        return this;\n      }\n      setLoopEnd(value) {\n        this.loopEnd = value;\n        return this;\n      }\n      getVolume() {\n        return this.gain.gain.value;\n      }\n      setVolume(value) {\n        this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n        return this;\n      }\n    };\n    _position = /* @__PURE__ */ new Vector3();\n    _quaternion = /* @__PURE__ */ new Quaternion();\n    _scale = /* @__PURE__ */ new Vector3();\n    _orientation = /* @__PURE__ */ new Vector3();\n    PositionalAudio = class extends Audio {\n      constructor(listener) {\n        super(listener);\n        this.panner = this.context.createPanner();\n        this.panner.panningModel = \"HRTF\";\n        this.panner.connect(this.gain);\n      }\n      connect() {\n        super.connect();\n        this.panner.connect(this.gain);\n      }\n      disconnect() {\n        super.disconnect();\n        this.panner.disconnect(this.gain);\n      }\n      getOutput() {\n        return this.panner;\n      }\n      getRefDistance() {\n        return this.panner.refDistance;\n      }\n      setRefDistance(value) {\n        this.panner.refDistance = value;\n        return this;\n      }\n      getRolloffFactor() {\n        return this.panner.rolloffFactor;\n      }\n      setRolloffFactor(value) {\n        this.panner.rolloffFactor = value;\n        return this;\n      }\n      getDistanceModel() {\n        return this.panner.distanceModel;\n      }\n      setDistanceModel(value) {\n        this.panner.distanceModel = value;\n        return this;\n      }\n      getMaxDistance() {\n        return this.panner.maxDistance;\n      }\n      setMaxDistance(value) {\n        this.panner.maxDistance = value;\n        return this;\n      }\n      setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) {\n        this.panner.coneInnerAngle = coneInnerAngle;\n        this.panner.coneOuterAngle = coneOuterAngle;\n        this.panner.coneOuterGain = coneOuterGain;\n        return this;\n      }\n      updateMatrixWorld(force) {\n        super.updateMatrixWorld(force);\n        if (this.hasPlaybackControl === true && this.isPlaying === false) return;\n        this.matrixWorld.decompose(_position, _quaternion, _scale);\n        _orientation.set(0, 0, 1).applyQuaternion(_quaternion);\n        const panner = this.panner;\n        if (panner.positionX) {\n          const endTime = this.context.currentTime + this.listener.timeDelta;\n          panner.positionX.linearRampToValueAtTime(_position.x, endTime);\n          panner.positionY.linearRampToValueAtTime(_position.y, endTime);\n          panner.positionZ.linearRampToValueAtTime(_position.z, endTime);\n          panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime);\n          panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime);\n          panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime);\n        } else {\n          panner.setPosition(_position.x, _position.y, _position.z);\n          panner.setOrientation(_orientation.x, _orientation.y, _orientation.z);\n        }\n      }\n    };\n    AudioAnalyser = class {\n      constructor(audio, fftSize = 2048) {\n        this.analyser = audio.context.createAnalyser();\n        this.analyser.fftSize = fftSize;\n        this.data = new Uint8Array(this.analyser.frequencyBinCount);\n        audio.getOutput().connect(this.analyser);\n      }\n      getFrequencyData() {\n        this.analyser.getByteFrequencyData(this.data);\n        return this.data;\n      }\n      getAverageFrequency() {\n        let value = 0;\n        const data = this.getFrequencyData();\n        for (let i2 = 0; i2 < data.length; i2++) {\n          value += data[i2];\n        }\n        return value / data.length;\n      }\n    };\n    PropertyMixer = class {\n      constructor(binding, typeName, valueSize) {\n        this.binding = binding;\n        this.valueSize = valueSize;\n        let mixFunction, mixFunctionAdditive, setIdentity;\n        switch (typeName) {\n          case \"quaternion\":\n            mixFunction = this._slerp;\n            mixFunctionAdditive = this._slerpAdditive;\n            setIdentity = this._setAdditiveIdentityQuaternion;\n            this.buffer = new Float64Array(valueSize * 6);\n            this._workIndex = 5;\n            break;\n          case \"string\":\n          case \"bool\":\n            mixFunction = this._select;\n            mixFunctionAdditive = this._select;\n            setIdentity = this._setAdditiveIdentityOther;\n            this.buffer = new Array(valueSize * 5);\n            break;\n          default:\n            mixFunction = this._lerp;\n            mixFunctionAdditive = this._lerpAdditive;\n            setIdentity = this._setAdditiveIdentityNumeric;\n            this.buffer = new Float64Array(valueSize * 5);\n        }\n        this._mixBufferRegion = mixFunction;\n        this._mixBufferRegionAdditive = mixFunctionAdditive;\n        this._setIdentity = setIdentity;\n        this._origIndex = 3;\n        this._addIndex = 4;\n        this.cumulativeWeight = 0;\n        this.cumulativeWeightAdditive = 0;\n        this.useCount = 0;\n        this.referenceCount = 0;\n      }\n      // accumulate data in the 'incoming' region into 'accu<i>'\n      accumulate(accuIndex, weight) {\n        const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride;\n        let currentWeight = this.cumulativeWeight;\n        if (currentWeight === 0) {\n          for (let i2 = 0; i2 !== stride; ++i2) {\n            buffer[offset + i2] = buffer[i2];\n          }\n          currentWeight = weight;\n        } else {\n          currentWeight += weight;\n          const mix = weight / currentWeight;\n          this._mixBufferRegion(buffer, offset, 0, mix, stride);\n        }\n        this.cumulativeWeight = currentWeight;\n      }\n      // accumulate data in the 'incoming' region into 'add'\n      accumulateAdditive(weight) {\n        const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex;\n        if (this.cumulativeWeightAdditive === 0) {\n          this._setIdentity();\n        }\n        this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n        this.cumulativeWeightAdditive += weight;\n      }\n      // apply the state of 'accu<i>' to the binding when accus differ\n      apply(accuIndex) {\n        const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding;\n        this.cumulativeWeight = 0;\n        this.cumulativeWeightAdditive = 0;\n        if (weight < 1) {\n          const originalValueOffset = stride * this._origIndex;\n          this._mixBufferRegion(\n            buffer,\n            offset,\n            originalValueOffset,\n            1 - weight,\n            stride\n          );\n        }\n        if (weightAdditive > 0) {\n          this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n        }\n        for (let i2 = stride, e = stride + stride; i2 !== e; ++i2) {\n          if (buffer[i2] !== buffer[i2 + stride]) {\n            binding.setValue(buffer, offset);\n            break;\n          }\n        }\n      }\n      // remember the state of the bound property and copy it to both accus\n      saveOriginalState() {\n        const binding = this.binding;\n        const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex;\n        binding.getValue(buffer, originalValueOffset);\n        for (let i2 = stride, e = originalValueOffset; i2 !== e; ++i2) {\n          buffer[i2] = buffer[originalValueOffset + i2 % stride];\n        }\n        this._setIdentity();\n        this.cumulativeWeight = 0;\n        this.cumulativeWeightAdditive = 0;\n      }\n      // apply the state previously taken via 'saveOriginalState' to the binding\n      restoreOriginalState() {\n        const originalValueOffset = this.valueSize * 3;\n        this.binding.setValue(this.buffer, originalValueOffset);\n      }\n      _setAdditiveIdentityNumeric() {\n        const startIndex = this._addIndex * this.valueSize;\n        const endIndex = startIndex + this.valueSize;\n        for (let i2 = startIndex; i2 < endIndex; i2++) {\n          this.buffer[i2] = 0;\n        }\n      }\n      _setAdditiveIdentityQuaternion() {\n        this._setAdditiveIdentityNumeric();\n        this.buffer[this._addIndex * this.valueSize + 3] = 1;\n      }\n      _setAdditiveIdentityOther() {\n        const startIndex = this._origIndex * this.valueSize;\n        const targetIndex = this._addIndex * this.valueSize;\n        for (let i2 = 0; i2 < this.valueSize; i2++) {\n          this.buffer[targetIndex + i2] = this.buffer[startIndex + i2];\n        }\n      }\n      // mix functions\n      _select(buffer, dstOffset, srcOffset, t2, stride) {\n        if (t2 >= 0.5) {\n          for (let i2 = 0; i2 !== stride; ++i2) {\n            buffer[dstOffset + i2] = buffer[srcOffset + i2];\n          }\n        }\n      }\n      _slerp(buffer, dstOffset, srcOffset, t2) {\n        Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t2);\n      }\n      _slerpAdditive(buffer, dstOffset, srcOffset, t2, stride) {\n        const workOffset = this._workIndex * stride;\n        Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset);\n        Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t2);\n      }\n      _lerp(buffer, dstOffset, srcOffset, t2, stride) {\n        const s = 1 - t2;\n        for (let i2 = 0; i2 !== stride; ++i2) {\n          const j2 = dstOffset + i2;\n          buffer[j2] = buffer[j2] * s + buffer[srcOffset + i2] * t2;\n        }\n      }\n      _lerpAdditive(buffer, dstOffset, srcOffset, t2, stride) {\n        for (let i2 = 0; i2 !== stride; ++i2) {\n          const j2 = dstOffset + i2;\n          buffer[j2] = buffer[j2] + buffer[srcOffset + i2] * t2;\n        }\n      }\n    };\n    _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\n    _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\n    _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\n    _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\n    _directoryRe = /* @__PURE__ */ /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\n    _nodeRe = /* @__PURE__ */ /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\n    _objectRe = /* @__PURE__ */ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\n    _propertyRe = /* @__PURE__ */ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\n    _trackRe = new RegExp(\n      \"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\"\n    );\n    _supportedObjectNames = [\"material\", \"materials\", \"bones\", \"map\"];\n    Composite = class {\n      constructor(targetGroup, path, optionalParsedPath) {\n        const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n        this._targetGroup = targetGroup;\n        this._bindings = targetGroup.subscribe_(path, parsedPath);\n      }\n      getValue(array, offset) {\n        this.bind();\n        const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex];\n        if (binding !== void 0) binding.getValue(array, offset);\n      }\n      setValue(array, offset) {\n        const bindings = this._bindings;\n        for (let i2 = this._targetGroup.nCachedObjects_, n = bindings.length; i2 !== n; ++i2) {\n          bindings[i2].setValue(array, offset);\n        }\n      }\n      bind() {\n        const bindings = this._bindings;\n        for (let i2 = this._targetGroup.nCachedObjects_, n = bindings.length; i2 !== n; ++i2) {\n          bindings[i2].bind();\n        }\n      }\n      unbind() {\n        const bindings = this._bindings;\n        for (let i2 = this._targetGroup.nCachedObjects_, n = bindings.length; i2 !== n; ++i2) {\n          bindings[i2].unbind();\n        }\n      }\n    };\n    PropertyBinding = class _PropertyBinding {\n      constructor(rootNode, path, parsedPath) {\n        this.path = path;\n        this.parsedPath = parsedPath || _PropertyBinding.parseTrackName(path);\n        this.node = _PropertyBinding.findNode(rootNode, this.parsedPath.nodeName);\n        this.rootNode = rootNode;\n        this.getValue = this._getValue_unbound;\n        this.setValue = this._setValue_unbound;\n      }\n      static create(root, path, parsedPath) {\n        if (!(root && root.isAnimationObjectGroup)) {\n          return new _PropertyBinding(root, path, parsedPath);\n        } else {\n          return new _PropertyBinding.Composite(root, path, parsedPath);\n        }\n      }\n      /**\n       * Replaces spaces with underscores and removes unsupported characters from\n       * node names, to ensure compatibility with parseTrackName().\n       *\n       * @param {string} name Node name to be sanitized.\n       * @return {string}\n       */\n      static sanitizeNodeName(name) {\n        return name.replace(/\\s/g, \"_\").replace(_reservedRe, \"\");\n      }\n      static parseTrackName(trackName) {\n        const matches = _trackRe.exec(trackName);\n        if (matches === null) {\n          throw new Error(\"PropertyBinding: Cannot parse trackName: \" + trackName);\n        }\n        const results = {\n          // directoryName: matches[ 1 ], // (tschw) currently unused\n          nodeName: matches[2],\n          objectName: matches[3],\n          objectIndex: matches[4],\n          propertyName: matches[5],\n          // required\n          propertyIndex: matches[6]\n        };\n        const lastDot = results.nodeName && results.nodeName.lastIndexOf(\".\");\n        if (lastDot !== void 0 && lastDot !== -1) {\n          const objectName = results.nodeName.substring(lastDot + 1);\n          if (_supportedObjectNames.indexOf(objectName) !== -1) {\n            results.nodeName = results.nodeName.substring(0, lastDot);\n            results.objectName = objectName;\n          }\n        }\n        if (results.propertyName === null || results.propertyName.length === 0) {\n          throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \" + trackName);\n        }\n        return results;\n      }\n      static findNode(root, nodeName) {\n        if (nodeName === void 0 || nodeName === \"\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n          return root;\n        }\n        if (root.skeleton) {\n          const bone = root.skeleton.getBoneByName(nodeName);\n          if (bone !== void 0) {\n            return bone;\n          }\n        }\n        if (root.children) {\n          const searchNodeSubtree = function(children) {\n            for (let i2 = 0; i2 < children.length; i2++) {\n              const childNode = children[i2];\n              if (childNode.name === nodeName || childNode.uuid === nodeName) {\n                return childNode;\n              }\n              const result = searchNodeSubtree(childNode.children);\n              if (result) return result;\n            }\n            return null;\n          };\n          const subTreeNode = searchNodeSubtree(root.children);\n          if (subTreeNode) {\n            return subTreeNode;\n          }\n        }\n        return null;\n      }\n      // these are used to \"bind\" a nonexistent property\n      _getValue_unavailable() {\n      }\n      _setValue_unavailable() {\n      }\n      // Getters\n      _getValue_direct(buffer, offset) {\n        buffer[offset] = this.targetObject[this.propertyName];\n      }\n      _getValue_array(buffer, offset) {\n        const source = this.resolvedProperty;\n        for (let i2 = 0, n = source.length; i2 !== n; ++i2) {\n          buffer[offset++] = source[i2];\n        }\n      }\n      _getValue_arrayElement(buffer, offset) {\n        buffer[offset] = this.resolvedProperty[this.propertyIndex];\n      }\n      _getValue_toArray(buffer, offset) {\n        this.resolvedProperty.toArray(buffer, offset);\n      }\n      // Direct\n      _setValue_direct(buffer, offset) {\n        this.targetObject[this.propertyName] = buffer[offset];\n      }\n      _setValue_direct_setNeedsUpdate(buffer, offset) {\n        this.targetObject[this.propertyName] = buffer[offset];\n        this.targetObject.needsUpdate = true;\n      }\n      _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n        this.targetObject[this.propertyName] = buffer[offset];\n        this.targetObject.matrixWorldNeedsUpdate = true;\n      }\n      // EntireArray\n      _setValue_array(buffer, offset) {\n        const dest = this.resolvedProperty;\n        for (let i2 = 0, n = dest.length; i2 !== n; ++i2) {\n          dest[i2] = buffer[offset++];\n        }\n      }\n      _setValue_array_setNeedsUpdate(buffer, offset) {\n        const dest = this.resolvedProperty;\n        for (let i2 = 0, n = dest.length; i2 !== n; ++i2) {\n          dest[i2] = buffer[offset++];\n        }\n        this.targetObject.needsUpdate = true;\n      }\n      _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n        const dest = this.resolvedProperty;\n        for (let i2 = 0, n = dest.length; i2 !== n; ++i2) {\n          dest[i2] = buffer[offset++];\n        }\n        this.targetObject.matrixWorldNeedsUpdate = true;\n      }\n      // ArrayElement\n      _setValue_arrayElement(buffer, offset) {\n        this.resolvedProperty[this.propertyIndex] = buffer[offset];\n      }\n      _setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n        this.resolvedProperty[this.propertyIndex] = buffer[offset];\n        this.targetObject.needsUpdate = true;\n      }\n      _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n        this.resolvedProperty[this.propertyIndex] = buffer[offset];\n        this.targetObject.matrixWorldNeedsUpdate = true;\n      }\n      // HasToFromArray\n      _setValue_fromArray(buffer, offset) {\n        this.resolvedProperty.fromArray(buffer, offset);\n      }\n      _setValue_fromArray_setNeedsUpdate(buffer, offset) {\n        this.resolvedProperty.fromArray(buffer, offset);\n        this.targetObject.needsUpdate = true;\n      }\n      _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n        this.resolvedProperty.fromArray(buffer, offset);\n        this.targetObject.matrixWorldNeedsUpdate = true;\n      }\n      _getValue_unbound(targetArray, offset) {\n        this.bind();\n        this.getValue(targetArray, offset);\n      }\n      _setValue_unbound(sourceArray, offset) {\n        this.bind();\n        this.setValue(sourceArray, offset);\n      }\n      // create getter / setter pair for a property in the scene graph\n      bind() {\n        let targetObject = this.node;\n        const parsedPath = this.parsedPath;\n        const objectName = parsedPath.objectName;\n        const propertyName = parsedPath.propertyName;\n        let propertyIndex = parsedPath.propertyIndex;\n        if (!targetObject) {\n          targetObject = _PropertyBinding.findNode(this.rootNode, parsedPath.nodeName);\n          this.node = targetObject;\n        }\n        this.getValue = this._getValue_unavailable;\n        this.setValue = this._setValue_unavailable;\n        if (!targetObject) {\n          console.warn(\"THREE.PropertyBinding: No target node found for track: \" + this.path + \".\");\n          return;\n        }\n        if (objectName) {\n          let objectIndex = parsedPath.objectIndex;\n          switch (objectName) {\n            case \"materials\":\n              if (!targetObject.material) {\n                console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n                return;\n              }\n              if (!targetObject.material.materials) {\n                console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\", this);\n                return;\n              }\n              targetObject = targetObject.material.materials;\n              break;\n            case \"bones\":\n              if (!targetObject.skeleton) {\n                console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\", this);\n                return;\n              }\n              targetObject = targetObject.skeleton.bones;\n              for (let i2 = 0; i2 < targetObject.length; i2++) {\n                if (targetObject[i2].name === objectIndex) {\n                  objectIndex = i2;\n                  break;\n                }\n              }\n              break;\n            case \"map\":\n              if (\"map\" in targetObject) {\n                targetObject = targetObject.map;\n                break;\n              }\n              if (!targetObject.material) {\n                console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n                return;\n              }\n              if (!targetObject.material.map) {\n                console.error(\"THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.\", this);\n                return;\n              }\n              targetObject = targetObject.material.map;\n              break;\n            default:\n              if (targetObject[objectName] === void 0) {\n                console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\", this);\n                return;\n              }\n              targetObject = targetObject[objectName];\n          }\n          if (objectIndex !== void 0) {\n            if (targetObject[objectIndex] === void 0) {\n              console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\", this, targetObject);\n              return;\n            }\n            targetObject = targetObject[objectIndex];\n          }\n        }\n        const nodeProperty = targetObject[propertyName];\n        if (nodeProperty === void 0) {\n          const nodeName = parsedPath.nodeName;\n          console.error(\"THREE.PropertyBinding: Trying to update property for track: \" + nodeName + \".\" + propertyName + \" but it wasn't found.\", targetObject);\n          return;\n        }\n        let versioning = this.Versioning.None;\n        this.targetObject = targetObject;\n        if (targetObject.needsUpdate !== void 0) {\n          versioning = this.Versioning.NeedsUpdate;\n        } else if (targetObject.matrixWorldNeedsUpdate !== void 0) {\n          versioning = this.Versioning.MatrixWorldNeedsUpdate;\n        }\n        let bindingType = this.BindingType.Direct;\n        if (propertyIndex !== void 0) {\n          if (propertyName === \"morphTargetInfluences\") {\n            if (!targetObject.geometry) {\n              console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\", this);\n              return;\n            }\n            if (!targetObject.geometry.morphAttributes) {\n              console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\", this);\n              return;\n            }\n            if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) {\n              propertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n            }\n          }\n          bindingType = this.BindingType.ArrayElement;\n          this.resolvedProperty = nodeProperty;\n          this.propertyIndex = propertyIndex;\n        } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) {\n          bindingType = this.BindingType.HasFromToArray;\n          this.resolvedProperty = nodeProperty;\n        } else if (Array.isArray(nodeProperty)) {\n          bindingType = this.BindingType.EntireArray;\n          this.resolvedProperty = nodeProperty;\n        } else {\n          this.propertyName = propertyName;\n        }\n        this.getValue = this.GetterByBindingType[bindingType];\n        this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n      }\n      unbind() {\n        this.node = null;\n        this.getValue = this._getValue_unbound;\n        this.setValue = this._setValue_unbound;\n      }\n    };\n    PropertyBinding.Composite = Composite;\n    PropertyBinding.prototype.BindingType = {\n      Direct: 0,\n      EntireArray: 1,\n      ArrayElement: 2,\n      HasFromToArray: 3\n    };\n    PropertyBinding.prototype.Versioning = {\n      None: 0,\n      NeedsUpdate: 1,\n      MatrixWorldNeedsUpdate: 2\n    };\n    PropertyBinding.prototype.GetterByBindingType = [\n      PropertyBinding.prototype._getValue_direct,\n      PropertyBinding.prototype._getValue_array,\n      PropertyBinding.prototype._getValue_arrayElement,\n      PropertyBinding.prototype._getValue_toArray\n    ];\n    PropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n      [\n        // Direct\n        PropertyBinding.prototype._setValue_direct,\n        PropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n        PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate\n      ],\n      [\n        // EntireArray\n        PropertyBinding.prototype._setValue_array,\n        PropertyBinding.prototype._setValue_array_setNeedsUpdate,\n        PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate\n      ],\n      [\n        // ArrayElement\n        PropertyBinding.prototype._setValue_arrayElement,\n        PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n        PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate\n      ],\n      [\n        // HasToFromArray\n        PropertyBinding.prototype._setValue_fromArray,\n        PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n        PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate\n      ]\n    ];\n    AnimationObjectGroup = class {\n      constructor() {\n        this.isAnimationObjectGroup = true;\n        this.uuid = generateUUID();\n        this._objects = Array.prototype.slice.call(arguments);\n        this.nCachedObjects_ = 0;\n        const indices = {};\n        this._indicesByUUID = indices;\n        for (let i2 = 0, n = arguments.length; i2 !== n; ++i2) {\n          indices[arguments[i2].uuid] = i2;\n        }\n        this._paths = [];\n        this._parsedPaths = [];\n        this._bindings = [];\n        this._bindingsIndicesByPath = {};\n        const scope = this;\n        this.stats = {\n          objects: {\n            get total() {\n              return scope._objects.length;\n            },\n            get inUse() {\n              return this.total - scope.nCachedObjects_;\n            }\n          },\n          get bindingsPerObject() {\n            return scope._bindings.length;\n          }\n        };\n      }\n      add() {\n        const objects = this._objects, indicesByUUID = this._indicesByUUID, paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, nBindings = bindings.length;\n        let knownObject = void 0, nObjects = objects.length, nCachedObjects = this.nCachedObjects_;\n        for (let i2 = 0, n = arguments.length; i2 !== n; ++i2) {\n          const object = arguments[i2], uuid = object.uuid;\n          let index = indicesByUUID[uuid];\n          if (index === void 0) {\n            index = nObjects++;\n            indicesByUUID[uuid] = index;\n            objects.push(object);\n            for (let j2 = 0, m = nBindings; j2 !== m; ++j2) {\n              bindings[j2].push(new PropertyBinding(object, paths[j2], parsedPaths[j2]));\n            }\n          } else if (index < nCachedObjects) {\n            knownObject = objects[index];\n            const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex];\n            indicesByUUID[lastCachedObject.uuid] = index;\n            objects[index] = lastCachedObject;\n            indicesByUUID[uuid] = firstActiveIndex;\n            objects[firstActiveIndex] = object;\n            for (let j2 = 0, m = nBindings; j2 !== m; ++j2) {\n              const bindingsForPath = bindings[j2], lastCached = bindingsForPath[firstActiveIndex];\n              let binding = bindingsForPath[index];\n              bindingsForPath[index] = lastCached;\n              if (binding === void 0) {\n                binding = new PropertyBinding(object, paths[j2], parsedPaths[j2]);\n              }\n              bindingsForPath[firstActiveIndex] = binding;\n            }\n          } else if (objects[index] !== knownObject) {\n            console.error(\"THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.\");\n          }\n        }\n        this.nCachedObjects_ = nCachedObjects;\n      }\n      remove() {\n        const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n        let nCachedObjects = this.nCachedObjects_;\n        for (let i2 = 0, n = arguments.length; i2 !== n; ++i2) {\n          const object = arguments[i2], uuid = object.uuid, index = indicesByUUID[uuid];\n          if (index !== void 0 && index >= nCachedObjects) {\n            const lastCachedIndex = nCachedObjects++, firstActiveObject = objects[lastCachedIndex];\n            indicesByUUID[firstActiveObject.uuid] = index;\n            objects[index] = firstActiveObject;\n            indicesByUUID[uuid] = lastCachedIndex;\n            objects[lastCachedIndex] = object;\n            for (let j2 = 0, m = nBindings; j2 !== m; ++j2) {\n              const bindingsForPath = bindings[j2], firstActive = bindingsForPath[lastCachedIndex], binding = bindingsForPath[index];\n              bindingsForPath[index] = firstActive;\n              bindingsForPath[lastCachedIndex] = binding;\n            }\n          }\n        }\n        this.nCachedObjects_ = nCachedObjects;\n      }\n      // remove & forget\n      uncache() {\n        const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n        let nCachedObjects = this.nCachedObjects_, nObjects = objects.length;\n        for (let i2 = 0, n = arguments.length; i2 !== n; ++i2) {\n          const object = arguments[i2], uuid = object.uuid, index = indicesByUUID[uuid];\n          if (index !== void 0) {\n            delete indicesByUUID[uuid];\n            if (index < nCachedObjects) {\n              const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex], lastIndex = --nObjects, lastObject = objects[lastIndex];\n              indicesByUUID[lastCachedObject.uuid] = index;\n              objects[index] = lastCachedObject;\n              indicesByUUID[lastObject.uuid] = firstActiveIndex;\n              objects[firstActiveIndex] = lastObject;\n              objects.pop();\n              for (let j2 = 0, m = nBindings; j2 !== m; ++j2) {\n                const bindingsForPath = bindings[j2], lastCached = bindingsForPath[firstActiveIndex], last = bindingsForPath[lastIndex];\n                bindingsForPath[index] = lastCached;\n                bindingsForPath[firstActiveIndex] = last;\n                bindingsForPath.pop();\n              }\n            } else {\n              const lastIndex = --nObjects, lastObject = objects[lastIndex];\n              if (lastIndex > 0) {\n                indicesByUUID[lastObject.uuid] = index;\n              }\n              objects[index] = lastObject;\n              objects.pop();\n              for (let j2 = 0, m = nBindings; j2 !== m; ++j2) {\n                const bindingsForPath = bindings[j2];\n                bindingsForPath[index] = bindingsForPath[lastIndex];\n                bindingsForPath.pop();\n              }\n            }\n          }\n        }\n        this.nCachedObjects_ = nCachedObjects;\n      }\n      // Internal interface used by befriended PropertyBinding.Composite:\n      subscribe_(path, parsedPath) {\n        const indicesByPath = this._bindingsIndicesByPath;\n        let index = indicesByPath[path];\n        const bindings = this._bindings;\n        if (index !== void 0) return bindings[index];\n        const paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, bindingsForPath = new Array(nObjects);\n        index = bindings.length;\n        indicesByPath[path] = index;\n        paths.push(path);\n        parsedPaths.push(parsedPath);\n        bindings.push(bindingsForPath);\n        for (let i2 = nCachedObjects, n = objects.length; i2 !== n; ++i2) {\n          const object = objects[i2];\n          bindingsForPath[i2] = new PropertyBinding(object, path, parsedPath);\n        }\n        return bindingsForPath;\n      }\n      unsubscribe_(path) {\n        const indicesByPath = this._bindingsIndicesByPath, index = indicesByPath[path];\n        if (index !== void 0) {\n          const paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, lastBindings = bindings[lastBindingsIndex], lastBindingsPath = path[lastBindingsIndex];\n          indicesByPath[lastBindingsPath] = index;\n          bindings[index] = lastBindings;\n          bindings.pop();\n          parsedPaths[index] = parsedPaths[lastBindingsIndex];\n          parsedPaths.pop();\n          paths[index] = paths[lastBindingsIndex];\n          paths.pop();\n        }\n      }\n    };\n    AnimationAction = class {\n      constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n        this._mixer = mixer;\n        this._clip = clip;\n        this._localRoot = localRoot;\n        this.blendMode = blendMode;\n        const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks);\n        const interpolantSettings = {\n          endingStart: ZeroCurvatureEnding,\n          endingEnd: ZeroCurvatureEnding\n        };\n        for (let i2 = 0; i2 !== nTracks; ++i2) {\n          const interpolant = tracks[i2].createInterpolant(null);\n          interpolants[i2] = interpolant;\n          interpolant.settings = interpolantSettings;\n        }\n        this._interpolantSettings = interpolantSettings;\n        this._interpolants = interpolants;\n        this._propertyBindings = new Array(nTracks);\n        this._cacheIndex = null;\n        this._byClipCacheIndex = null;\n        this._timeScaleInterpolant = null;\n        this._weightInterpolant = null;\n        this.loop = LoopRepeat;\n        this._loopCount = -1;\n        this._startTime = null;\n        this.time = 0;\n        this.timeScale = 1;\n        this._effectiveTimeScale = 1;\n        this.weight = 1;\n        this._effectiveWeight = 1;\n        this.repetitions = Infinity;\n        this.paused = false;\n        this.enabled = true;\n        this.clampWhenFinished = false;\n        this.zeroSlopeAtStart = true;\n        this.zeroSlopeAtEnd = true;\n      }\n      // State & Scheduling\n      play() {\n        this._mixer._activateAction(this);\n        return this;\n      }\n      stop() {\n        this._mixer._deactivateAction(this);\n        return this.reset();\n      }\n      reset() {\n        this.paused = false;\n        this.enabled = true;\n        this.time = 0;\n        this._loopCount = -1;\n        this._startTime = null;\n        return this.stopFading().stopWarping();\n      }\n      isRunning() {\n        return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n      }\n      // return true when play has been called\n      isScheduled() {\n        return this._mixer._isActiveAction(this);\n      }\n      startAt(time) {\n        this._startTime = time;\n        return this;\n      }\n      setLoop(mode, repetitions) {\n        this.loop = mode;\n        this.repetitions = repetitions;\n        return this;\n      }\n      // Weight\n      // set the weight stopping any scheduled fading\n      // although .enabled = false yields an effective weight of zero, this\n      // method does *not* change .enabled, because it would be confusing\n      setEffectiveWeight(weight) {\n        this.weight = weight;\n        this._effectiveWeight = this.enabled ? weight : 0;\n        return this.stopFading();\n      }\n      // return the weight considering fading and .enabled\n      getEffectiveWeight() {\n        return this._effectiveWeight;\n      }\n      fadeIn(duration) {\n        return this._scheduleFading(duration, 0, 1);\n      }\n      fadeOut(duration) {\n        return this._scheduleFading(duration, 1, 0);\n      }\n      crossFadeFrom(fadeOutAction, duration, warp) {\n        fadeOutAction.fadeOut(duration);\n        this.fadeIn(duration);\n        if (warp) {\n          const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration;\n          fadeOutAction.warp(1, startEndRatio, duration);\n          this.warp(endStartRatio, 1, duration);\n        }\n        return this;\n      }\n      crossFadeTo(fadeInAction, duration, warp) {\n        return fadeInAction.crossFadeFrom(this, duration, warp);\n      }\n      stopFading() {\n        const weightInterpolant = this._weightInterpolant;\n        if (weightInterpolant !== null) {\n          this._weightInterpolant = null;\n          this._mixer._takeBackControlInterpolant(weightInterpolant);\n        }\n        return this;\n      }\n      // Time Scale Control\n      // set the time scale stopping any scheduled warping\n      // although .paused = true yields an effective time scale of zero, this\n      // method does *not* change .paused, because it would be confusing\n      setEffectiveTimeScale(timeScale) {\n        this.timeScale = timeScale;\n        this._effectiveTimeScale = this.paused ? 0 : timeScale;\n        return this.stopWarping();\n      }\n      // return the time scale considering warping and .paused\n      getEffectiveTimeScale() {\n        return this._effectiveTimeScale;\n      }\n      setDuration(duration) {\n        this.timeScale = this._clip.duration / duration;\n        return this.stopWarping();\n      }\n      syncWith(action) {\n        this.time = action.time;\n        this.timeScale = action.timeScale;\n        return this.stopWarping();\n      }\n      halt(duration) {\n        return this.warp(this._effectiveTimeScale, 0, duration);\n      }\n      warp(startTimeScale, endTimeScale, duration) {\n        const mixer = this._mixer, now2 = mixer.time, timeScale = this.timeScale;\n        let interpolant = this._timeScaleInterpolant;\n        if (interpolant === null) {\n          interpolant = mixer._lendControlInterpolant();\n          this._timeScaleInterpolant = interpolant;\n        }\n        const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n        times[0] = now2;\n        times[1] = now2 + duration;\n        values[0] = startTimeScale / timeScale;\n        values[1] = endTimeScale / timeScale;\n        return this;\n      }\n      stopWarping() {\n        const timeScaleInterpolant = this._timeScaleInterpolant;\n        if (timeScaleInterpolant !== null) {\n          this._timeScaleInterpolant = null;\n          this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n        }\n        return this;\n      }\n      // Object Accessors\n      getMixer() {\n        return this._mixer;\n      }\n      getClip() {\n        return this._clip;\n      }\n      getRoot() {\n        return this._localRoot || this._mixer._root;\n      }\n      // Interna\n      _update(time, deltaTime, timeDirection, accuIndex) {\n        if (!this.enabled) {\n          this._updateWeight(time);\n          return;\n        }\n        const startTime = this._startTime;\n        if (startTime !== null) {\n          const timeRunning = (time - startTime) * timeDirection;\n          if (timeRunning < 0 || timeDirection === 0) {\n            deltaTime = 0;\n          } else {\n            this._startTime = null;\n            deltaTime = timeDirection * timeRunning;\n          }\n        }\n        deltaTime *= this._updateTimeScale(time);\n        const clipTime = this._updateTime(deltaTime);\n        const weight = this._updateWeight(time);\n        if (weight > 0) {\n          const interpolants = this._interpolants;\n          const propertyMixers = this._propertyBindings;\n          switch (this.blendMode) {\n            case AdditiveAnimationBlendMode:\n              for (let j2 = 0, m = interpolants.length; j2 !== m; ++j2) {\n                interpolants[j2].evaluate(clipTime);\n                propertyMixers[j2].accumulateAdditive(weight);\n              }\n              break;\n            case NormalAnimationBlendMode:\n            default:\n              for (let j2 = 0, m = interpolants.length; j2 !== m; ++j2) {\n                interpolants[j2].evaluate(clipTime);\n                propertyMixers[j2].accumulate(accuIndex, weight);\n              }\n          }\n        }\n      }\n      _updateWeight(time) {\n        let weight = 0;\n        if (this.enabled) {\n          weight = this.weight;\n          const interpolant = this._weightInterpolant;\n          if (interpolant !== null) {\n            const interpolantValue = interpolant.evaluate(time)[0];\n            weight *= interpolantValue;\n            if (time > interpolant.parameterPositions[1]) {\n              this.stopFading();\n              if (interpolantValue === 0) {\n                this.enabled = false;\n              }\n            }\n          }\n        }\n        this._effectiveWeight = weight;\n        return weight;\n      }\n      _updateTimeScale(time) {\n        let timeScale = 0;\n        if (!this.paused) {\n          timeScale = this.timeScale;\n          const interpolant = this._timeScaleInterpolant;\n          if (interpolant !== null) {\n            const interpolantValue = interpolant.evaluate(time)[0];\n            timeScale *= interpolantValue;\n            if (time > interpolant.parameterPositions[1]) {\n              this.stopWarping();\n              if (timeScale === 0) {\n                this.paused = true;\n              } else {\n                this.timeScale = timeScale;\n              }\n            }\n          }\n        }\n        this._effectiveTimeScale = timeScale;\n        return timeScale;\n      }\n      _updateTime(deltaTime) {\n        const duration = this._clip.duration;\n        const loop = this.loop;\n        let time = this.time + deltaTime;\n        let loopCount = this._loopCount;\n        const pingPong = loop === LoopPingPong;\n        if (deltaTime === 0) {\n          if (loopCount === -1) return time;\n          return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n        }\n        if (loop === LoopOnce) {\n          if (loopCount === -1) {\n            this._loopCount = 0;\n            this._setEndings(true, true, false);\n          }\n          handle_stop: {\n            if (time >= duration) {\n              time = duration;\n            } else if (time < 0) {\n              time = 0;\n            } else {\n              this.time = time;\n              break handle_stop;\n            }\n            if (this.clampWhenFinished) this.paused = true;\n            else this.enabled = false;\n            this.time = time;\n            this._mixer.dispatchEvent({\n              type: \"finished\",\n              action: this,\n              direction: deltaTime < 0 ? -1 : 1\n            });\n          }\n        } else {\n          if (loopCount === -1) {\n            if (deltaTime >= 0) {\n              loopCount = 0;\n              this._setEndings(true, this.repetitions === 0, pingPong);\n            } else {\n              this._setEndings(this.repetitions === 0, true, pingPong);\n            }\n          }\n          if (time >= duration || time < 0) {\n            const loopDelta = Math.floor(time / duration);\n            time -= duration * loopDelta;\n            loopCount += Math.abs(loopDelta);\n            const pending = this.repetitions - loopCount;\n            if (pending <= 0) {\n              if (this.clampWhenFinished) this.paused = true;\n              else this.enabled = false;\n              time = deltaTime > 0 ? duration : 0;\n              this.time = time;\n              this._mixer.dispatchEvent({\n                type: \"finished\",\n                action: this,\n                direction: deltaTime > 0 ? 1 : -1\n              });\n            } else {\n              if (pending === 1) {\n                const atStart = deltaTime < 0;\n                this._setEndings(atStart, !atStart, pingPong);\n              } else {\n                this._setEndings(false, false, pingPong);\n              }\n              this._loopCount = loopCount;\n              this.time = time;\n              this._mixer.dispatchEvent({\n                type: \"loop\",\n                action: this,\n                loopDelta\n              });\n            }\n          } else {\n            this.time = time;\n          }\n          if (pingPong && (loopCount & 1) === 1) {\n            return duration - time;\n          }\n        }\n        return time;\n      }\n      _setEndings(atStart, atEnd, pingPong) {\n        const settings = this._interpolantSettings;\n        if (pingPong) {\n          settings.endingStart = ZeroSlopeEnding;\n          settings.endingEnd = ZeroSlopeEnding;\n        } else {\n          if (atStart) {\n            settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n          } else {\n            settings.endingStart = WrapAroundEnding;\n          }\n          if (atEnd) {\n            settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n          } else {\n            settings.endingEnd = WrapAroundEnding;\n          }\n        }\n      }\n      _scheduleFading(duration, weightNow, weightThen) {\n        const mixer = this._mixer, now2 = mixer.time;\n        let interpolant = this._weightInterpolant;\n        if (interpolant === null) {\n          interpolant = mixer._lendControlInterpolant();\n          this._weightInterpolant = interpolant;\n        }\n        const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n        times[0] = now2;\n        values[0] = weightNow;\n        times[1] = now2 + duration;\n        values[1] = weightThen;\n        return this;\n      }\n    };\n    _controlInterpolantsResultBuffer = new Float32Array(1);\n    AnimationMixer = class extends EventDispatcher {\n      constructor(root) {\n        super();\n        this._root = root;\n        this._initMemoryManager();\n        this._accuIndex = 0;\n        this.time = 0;\n        this.timeScale = 1;\n      }\n      _bindAction(action, prototypeAction) {\n        const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName;\n        let bindingsByName = bindingsByRoot[rootUuid];\n        if (bindingsByName === void 0) {\n          bindingsByName = {};\n          bindingsByRoot[rootUuid] = bindingsByName;\n        }\n        for (let i2 = 0; i2 !== nTracks; ++i2) {\n          const track = tracks[i2], trackName = track.name;\n          let binding = bindingsByName[trackName];\n          if (binding !== void 0) {\n            ++binding.referenceCount;\n            bindings[i2] = binding;\n          } else {\n            binding = bindings[i2];\n            if (binding !== void 0) {\n              if (binding._cacheIndex === null) {\n                ++binding.referenceCount;\n                this._addInactiveBinding(binding, rootUuid, trackName);\n              }\n              continue;\n            }\n            const path = prototypeAction && prototypeAction._propertyBindings[i2].binding.parsedPath;\n            binding = new PropertyMixer(\n              PropertyBinding.create(root, trackName, path),\n              track.ValueTypeName,\n              track.getValueSize()\n            );\n            ++binding.referenceCount;\n            this._addInactiveBinding(binding, rootUuid, trackName);\n            bindings[i2] = binding;\n          }\n          interpolants[i2].resultBuffer = binding.buffer;\n        }\n      }\n      _activateAction(action) {\n        if (!this._isActiveAction(action)) {\n          if (action._cacheIndex === null) {\n            const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid];\n            this._bindAction(\n              action,\n              actionsForClip && actionsForClip.knownActions[0]\n            );\n            this._addInactiveAction(action, clipUuid, rootUuid);\n          }\n          const bindings = action._propertyBindings;\n          for (let i2 = 0, n = bindings.length; i2 !== n; ++i2) {\n            const binding = bindings[i2];\n            if (binding.useCount++ === 0) {\n              this._lendBinding(binding);\n              binding.saveOriginalState();\n            }\n          }\n          this._lendAction(action);\n        }\n      }\n      _deactivateAction(action) {\n        if (this._isActiveAction(action)) {\n          const bindings = action._propertyBindings;\n          for (let i2 = 0, n = bindings.length; i2 !== n; ++i2) {\n            const binding = bindings[i2];\n            if (--binding.useCount === 0) {\n              binding.restoreOriginalState();\n              this._takeBackBinding(binding);\n            }\n          }\n          this._takeBackAction(action);\n        }\n      }\n      // Memory manager\n      _initMemoryManager() {\n        this._actions = [];\n        this._nActiveActions = 0;\n        this._actionsByClip = {};\n        this._bindings = [];\n        this._nActiveBindings = 0;\n        this._bindingsByRootAndName = {};\n        this._controlInterpolants = [];\n        this._nActiveControlInterpolants = 0;\n        const scope = this;\n        this.stats = {\n          actions: {\n            get total() {\n              return scope._actions.length;\n            },\n            get inUse() {\n              return scope._nActiveActions;\n            }\n          },\n          bindings: {\n            get total() {\n              return scope._bindings.length;\n            },\n            get inUse() {\n              return scope._nActiveBindings;\n            }\n          },\n          controlInterpolants: {\n            get total() {\n              return scope._controlInterpolants.length;\n            },\n            get inUse() {\n              return scope._nActiveControlInterpolants;\n            }\n          }\n        };\n      }\n      // Memory management for AnimationAction objects\n      _isActiveAction(action) {\n        const index = action._cacheIndex;\n        return index !== null && index < this._nActiveActions;\n      }\n      _addInactiveAction(action, clipUuid, rootUuid) {\n        const actions = this._actions, actionsByClip = this._actionsByClip;\n        let actionsForClip = actionsByClip[clipUuid];\n        if (actionsForClip === void 0) {\n          actionsForClip = {\n            knownActions: [action],\n            actionByRoot: {}\n          };\n          action._byClipCacheIndex = 0;\n          actionsByClip[clipUuid] = actionsForClip;\n        } else {\n          const knownActions = actionsForClip.knownActions;\n          action._byClipCacheIndex = knownActions.length;\n          knownActions.push(action);\n        }\n        action._cacheIndex = actions.length;\n        actions.push(action);\n        actionsForClip.actionByRoot[rootUuid] = action;\n      }\n      _removeInactiveAction(action) {\n        const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;\n        lastInactiveAction._cacheIndex = cacheIndex;\n        actions[cacheIndex] = lastInactiveAction;\n        actions.pop();\n        action._cacheIndex = null;\n        const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;\n        lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n        knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n        knownActionsForClip.pop();\n        action._byClipCacheIndex = null;\n        const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;\n        delete actionByRoot[rootUuid];\n        if (knownActionsForClip.length === 0) {\n          delete actionsByClip[clipUuid];\n        }\n        this._removeInactiveBindingsForAction(action);\n      }\n      _removeInactiveBindingsForAction(action) {\n        const bindings = action._propertyBindings;\n        for (let i2 = 0, n = bindings.length; i2 !== n; ++i2) {\n          const binding = bindings[i2];\n          if (--binding.referenceCount === 0) {\n            this._removeInactiveBinding(binding);\n          }\n        }\n      }\n      _lendAction(action) {\n        const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex];\n        action._cacheIndex = lastActiveIndex;\n        actions[lastActiveIndex] = action;\n        firstInactiveAction._cacheIndex = prevIndex;\n        actions[prevIndex] = firstInactiveAction;\n      }\n      _takeBackAction(action) {\n        const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex];\n        action._cacheIndex = firstInactiveIndex;\n        actions[firstInactiveIndex] = action;\n        lastActiveAction._cacheIndex = prevIndex;\n        actions[prevIndex] = lastActiveAction;\n      }\n      // Memory management for PropertyMixer objects\n      _addInactiveBinding(binding, rootUuid, trackName) {\n        const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings;\n        let bindingByName = bindingsByRoot[rootUuid];\n        if (bindingByName === void 0) {\n          bindingByName = {};\n          bindingsByRoot[rootUuid] = bindingByName;\n        }\n        bindingByName[trackName] = binding;\n        binding._cacheIndex = bindings.length;\n        bindings.push(binding);\n      }\n      _removeInactiveBinding(binding) {\n        const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex;\n        lastInactiveBinding._cacheIndex = cacheIndex;\n        bindings[cacheIndex] = lastInactiveBinding;\n        bindings.pop();\n        delete bindingByName[trackName];\n        if (Object.keys(bindingByName).length === 0) {\n          delete bindingsByRoot[rootUuid];\n        }\n      }\n      _lendBinding(binding) {\n        const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex];\n        binding._cacheIndex = lastActiveIndex;\n        bindings[lastActiveIndex] = binding;\n        firstInactiveBinding._cacheIndex = prevIndex;\n        bindings[prevIndex] = firstInactiveBinding;\n      }\n      _takeBackBinding(binding) {\n        const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex];\n        binding._cacheIndex = firstInactiveIndex;\n        bindings[firstInactiveIndex] = binding;\n        lastActiveBinding._cacheIndex = prevIndex;\n        bindings[prevIndex] = lastActiveBinding;\n      }\n      // Memory management of Interpolants for weight and time scale\n      _lendControlInterpolant() {\n        const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++;\n        let interpolant = interpolants[lastActiveIndex];\n        if (interpolant === void 0) {\n          interpolant = new LinearInterpolant(\n            new Float32Array(2),\n            new Float32Array(2),\n            1,\n            _controlInterpolantsResultBuffer\n          );\n          interpolant.__cacheIndex = lastActiveIndex;\n          interpolants[lastActiveIndex] = interpolant;\n        }\n        return interpolant;\n      }\n      _takeBackControlInterpolant(interpolant) {\n        const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex];\n        interpolant.__cacheIndex = firstInactiveIndex;\n        interpolants[firstInactiveIndex] = interpolant;\n        lastActiveInterpolant.__cacheIndex = prevIndex;\n        interpolants[prevIndex] = lastActiveInterpolant;\n      }\n      // return an action for a clip optionally using a custom root target\n      // object (this method allocates a lot of dynamic memory in case a\n      // previously unknown clip/root combination is specified)\n      clipAction(clip, optionalRoot, blendMode) {\n        const root = optionalRoot || this._root, rootUuid = root.uuid;\n        let clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip;\n        const clipUuid = clipObject !== null ? clipObject.uuid : clip;\n        const actionsForClip = this._actionsByClip[clipUuid];\n        let prototypeAction = null;\n        if (blendMode === void 0) {\n          if (clipObject !== null) {\n            blendMode = clipObject.blendMode;\n          } else {\n            blendMode = NormalAnimationBlendMode;\n          }\n        }\n        if (actionsForClip !== void 0) {\n          const existingAction = actionsForClip.actionByRoot[rootUuid];\n          if (existingAction !== void 0 && existingAction.blendMode === blendMode) {\n            return existingAction;\n          }\n          prototypeAction = actionsForClip.knownActions[0];\n          if (clipObject === null)\n            clipObject = prototypeAction._clip;\n        }\n        if (clipObject === null) return null;\n        const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n        this._bindAction(newAction, prototypeAction);\n        this._addInactiveAction(newAction, clipUuid, rootUuid);\n        return newAction;\n      }\n      // get an existing action\n      existingAction(clip, optionalRoot) {\n        const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid];\n        if (actionsForClip !== void 0) {\n          return actionsForClip.actionByRoot[rootUuid] || null;\n        }\n        return null;\n      }\n      // deactivates all previously scheduled actions\n      stopAllAction() {\n        const actions = this._actions, nActions = this._nActiveActions;\n        for (let i2 = nActions - 1; i2 >= 0; --i2) {\n          actions[i2].stop();\n        }\n        return this;\n      }\n      // advance the time and update apply the animation\n      update(deltaTime) {\n        deltaTime *= this.timeScale;\n        const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1;\n        for (let i2 = 0; i2 !== nActions; ++i2) {\n          const action = actions[i2];\n          action._update(time, deltaTime, timeDirection, accuIndex);\n        }\n        const bindings = this._bindings, nBindings = this._nActiveBindings;\n        for (let i2 = 0; i2 !== nBindings; ++i2) {\n          bindings[i2].apply(accuIndex);\n        }\n        return this;\n      }\n      // Allows you to seek to a specific time in an animation.\n      setTime(timeInSeconds) {\n        this.time = 0;\n        for (let i2 = 0; i2 < this._actions.length; i2++) {\n          this._actions[i2].time = 0;\n        }\n        return this.update(timeInSeconds);\n      }\n      // return this mixer's root target object\n      getRoot() {\n        return this._root;\n      }\n      // free all resources specific to a particular clip\n      uncacheClip(clip) {\n        const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid];\n        if (actionsForClip !== void 0) {\n          const actionsToRemove = actionsForClip.knownActions;\n          for (let i2 = 0, n = actionsToRemove.length; i2 !== n; ++i2) {\n            const action = actionsToRemove[i2];\n            this._deactivateAction(action);\n            const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1];\n            action._cacheIndex = null;\n            action._byClipCacheIndex = null;\n            lastInactiveAction._cacheIndex = cacheIndex;\n            actions[cacheIndex] = lastInactiveAction;\n            actions.pop();\n            this._removeInactiveBindingsForAction(action);\n          }\n          delete actionsByClip[clipUuid];\n        }\n      }\n      // free all resources specific to a particular root target object\n      uncacheRoot(root) {\n        const rootUuid = root.uuid, actionsByClip = this._actionsByClip;\n        for (const clipUuid in actionsByClip) {\n          const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid];\n          if (action !== void 0) {\n            this._deactivateAction(action);\n            this._removeInactiveAction(action);\n          }\n        }\n        const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid];\n        if (bindingByName !== void 0) {\n          for (const trackName in bindingByName) {\n            const binding = bindingByName[trackName];\n            binding.restoreOriginalState();\n            this._removeInactiveBinding(binding);\n          }\n        }\n      }\n      // remove a targeted clip from the cache\n      uncacheAction(clip, optionalRoot) {\n        const action = this.existingAction(clip, optionalRoot);\n        if (action !== null) {\n          this._deactivateAction(action);\n          this._removeInactiveAction(action);\n        }\n      }\n    };\n    Uniform = class _Uniform {\n      constructor(value) {\n        this.value = value;\n      }\n      clone() {\n        return new _Uniform(this.value.clone === void 0 ? this.value : this.value.clone());\n      }\n    };\n    _id = 0;\n    UniformsGroup = class extends EventDispatcher {\n      constructor() {\n        super();\n        this.isUniformsGroup = true;\n        Object.defineProperty(this, \"id\", { value: _id++ });\n        this.name = \"\";\n        this.usage = StaticDrawUsage;\n        this.uniforms = [];\n      }\n      add(uniform) {\n        this.uniforms.push(uniform);\n        return this;\n      }\n      remove(uniform) {\n        const index = this.uniforms.indexOf(uniform);\n        if (index !== -1) this.uniforms.splice(index, 1);\n        return this;\n      }\n      setName(name) {\n        this.name = name;\n        return this;\n      }\n      setUsage(value) {\n        this.usage = value;\n        return this;\n      }\n      dispose() {\n        this.dispatchEvent({ type: \"dispose\" });\n        return this;\n      }\n      copy(source) {\n        this.name = source.name;\n        this.usage = source.usage;\n        const uniformsSource = source.uniforms;\n        this.uniforms.length = 0;\n        for (let i2 = 0, l2 = uniformsSource.length; i2 < l2; i2++) {\n          const uniforms = Array.isArray(uniformsSource[i2]) ? uniformsSource[i2] : [uniformsSource[i2]];\n          for (let j2 = 0; j2 < uniforms.length; j2++) {\n            this.uniforms.push(uniforms[j2].clone());\n          }\n        }\n        return this;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    InstancedInterleavedBuffer = class extends InterleavedBuffer {\n      constructor(array, stride, meshPerAttribute = 1) {\n        super(array, stride);\n        this.isInstancedInterleavedBuffer = true;\n        this.meshPerAttribute = meshPerAttribute;\n      }\n      copy(source) {\n        super.copy(source);\n        this.meshPerAttribute = source.meshPerAttribute;\n        return this;\n      }\n      clone(data) {\n        const ib = super.clone(data);\n        ib.meshPerAttribute = this.meshPerAttribute;\n        return ib;\n      }\n      toJSON(data) {\n        const json = super.toJSON(data);\n        json.isInstancedInterleavedBuffer = true;\n        json.meshPerAttribute = this.meshPerAttribute;\n        return json;\n      }\n    };\n    GLBufferAttribute = class {\n      constructor(buffer, type, itemSize, elementSize, count) {\n        this.isGLBufferAttribute = true;\n        this.name = \"\";\n        this.buffer = buffer;\n        this.type = type;\n        this.itemSize = itemSize;\n        this.elementSize = elementSize;\n        this.count = count;\n        this.version = 0;\n      }\n      set needsUpdate(value) {\n        if (value === true) this.version++;\n      }\n      setBuffer(buffer) {\n        this.buffer = buffer;\n        return this;\n      }\n      setType(type, elementSize) {\n        this.type = type;\n        this.elementSize = elementSize;\n        return this;\n      }\n      setItemSize(itemSize) {\n        this.itemSize = itemSize;\n        return this;\n      }\n      setCount(count) {\n        this.count = count;\n        return this;\n      }\n    };\n    _matrix = /* @__PURE__ */ new Matrix4();\n    Raycaster = class {\n      constructor(origin, direction, near = 0, far = Infinity) {\n        this.ray = new Ray(origin, direction);\n        this.near = near;\n        this.far = far;\n        this.camera = null;\n        this.layers = new Layers();\n        this.params = {\n          Mesh: {},\n          Line: { threshold: 1 },\n          LOD: {},\n          Points: { threshold: 1 },\n          Sprite: {}\n        };\n      }\n      set(origin, direction) {\n        this.ray.set(origin, direction);\n      }\n      setFromCamera(coords, camera) {\n        if (camera.isPerspectiveCamera) {\n          this.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n          this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n          this.camera = camera;\n        } else if (camera.isOrthographicCamera) {\n          this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera);\n          this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n          this.camera = camera;\n        } else {\n          console.error(\"THREE.Raycaster: Unsupported camera type: \" + camera.type);\n        }\n      }\n      setFromXRController(controller) {\n        _matrix.identity().extractRotation(controller.matrixWorld);\n        this.ray.origin.setFromMatrixPosition(controller.matrixWorld);\n        this.ray.direction.set(0, 0, -1).applyMatrix4(_matrix);\n        return this;\n      }\n      intersectObject(object, recursive = true, intersects2 = []) {\n        intersect(object, this, intersects2, recursive);\n        intersects2.sort(ascSort);\n        return intersects2;\n      }\n      intersectObjects(objects, recursive = true, intersects2 = []) {\n        for (let i2 = 0, l2 = objects.length; i2 < l2; i2++) {\n          intersect(objects[i2], this, intersects2, recursive);\n        }\n        intersects2.sort(ascSort);\n        return intersects2;\n      }\n    };\n    Spherical = class {\n      constructor(radius = 1, phi = 0, theta = 0) {\n        this.radius = radius;\n        this.phi = phi;\n        this.theta = theta;\n        return this;\n      }\n      set(radius, phi, theta) {\n        this.radius = radius;\n        this.phi = phi;\n        this.theta = theta;\n        return this;\n      }\n      copy(other) {\n        this.radius = other.radius;\n        this.phi = other.phi;\n        this.theta = other.theta;\n        return this;\n      }\n      // restrict phi to be between EPS and PI-EPS\n      makeSafe() {\n        const EPS = 1e-6;\n        this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n        return this;\n      }\n      setFromVector3(v2) {\n        return this.setFromCartesianCoords(v2.x, v2.y, v2.z);\n      }\n      setFromCartesianCoords(x, y2, z2) {\n        this.radius = Math.sqrt(x * x + y2 * y2 + z2 * z2);\n        if (this.radius === 0) {\n          this.theta = 0;\n          this.phi = 0;\n        } else {\n          this.theta = Math.atan2(x, z2);\n          this.phi = Math.acos(clamp(y2 / this.radius, -1, 1));\n        }\n        return this;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    Cylindrical = class {\n      constructor(radius = 1, theta = 0, y2 = 0) {\n        this.radius = radius;\n        this.theta = theta;\n        this.y = y2;\n        return this;\n      }\n      set(radius, theta, y2) {\n        this.radius = radius;\n        this.theta = theta;\n        this.y = y2;\n        return this;\n      }\n      copy(other) {\n        this.radius = other.radius;\n        this.theta = other.theta;\n        this.y = other.y;\n        return this;\n      }\n      setFromVector3(v2) {\n        return this.setFromCartesianCoords(v2.x, v2.y, v2.z);\n      }\n      setFromCartesianCoords(x, y2, z2) {\n        this.radius = Math.sqrt(x * x + z2 * z2);\n        this.theta = Math.atan2(x, z2);\n        this.y = y2;\n        return this;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    Matrix2 = class _Matrix2 {\n      constructor(n11, n12, n21, n22) {\n        _Matrix2.prototype.isMatrix2 = true;\n        this.elements = [\n          1,\n          0,\n          0,\n          1\n        ];\n        if (n11 !== void 0) {\n          this.set(n11, n12, n21, n22);\n        }\n      }\n      identity() {\n        this.set(\n          1,\n          0,\n          0,\n          1\n        );\n        return this;\n      }\n      fromArray(array, offset = 0) {\n        for (let i2 = 0; i2 < 4; i2++) {\n          this.elements[i2] = array[i2 + offset];\n        }\n        return this;\n      }\n      set(n11, n12, n21, n22) {\n        const te = this.elements;\n        te[0] = n11;\n        te[2] = n12;\n        te[1] = n21;\n        te[3] = n22;\n        return this;\n      }\n    };\n    _vector$4 = /* @__PURE__ */ new Vector2();\n    Box2 = class {\n      constructor(min = new Vector2(Infinity, Infinity), max = new Vector2(-Infinity, -Infinity)) {\n        this.isBox2 = true;\n        this.min = min;\n        this.max = max;\n      }\n      set(min, max) {\n        this.min.copy(min);\n        this.max.copy(max);\n        return this;\n      }\n      setFromPoints(points) {\n        this.makeEmpty();\n        for (let i2 = 0, il = points.length; i2 < il; i2++) {\n          this.expandByPoint(points[i2]);\n        }\n        return this;\n      }\n      setFromCenterAndSize(center, size) {\n        const halfSize = _vector$4.copy(size).multiplyScalar(0.5);\n        this.min.copy(center).sub(halfSize);\n        this.max.copy(center).add(halfSize);\n        return this;\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n      copy(box) {\n        this.min.copy(box.min);\n        this.max.copy(box.max);\n        return this;\n      }\n      makeEmpty() {\n        this.min.x = this.min.y = Infinity;\n        this.max.x = this.max.y = -Infinity;\n        return this;\n      }\n      isEmpty() {\n        return this.max.x < this.min.x || this.max.y < this.min.y;\n      }\n      getCenter(target2) {\n        return this.isEmpty() ? target2.set(0, 0) : target2.addVectors(this.min, this.max).multiplyScalar(0.5);\n      }\n      getSize(target2) {\n        return this.isEmpty() ? target2.set(0, 0) : target2.subVectors(this.max, this.min);\n      }\n      expandByPoint(point) {\n        this.min.min(point);\n        this.max.max(point);\n        return this;\n      }\n      expandByVector(vector) {\n        this.min.sub(vector);\n        this.max.add(vector);\n        return this;\n      }\n      expandByScalar(scalar) {\n        this.min.addScalar(-scalar);\n        this.max.addScalar(scalar);\n        return this;\n      }\n      containsPoint(point) {\n        return point.x >= this.min.x && point.x <= this.max.x && point.y >= this.min.y && point.y <= this.max.y;\n      }\n      containsBox(box) {\n        return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n      }\n      getParameter(point, target2) {\n        return target2.set(\n          (point.x - this.min.x) / (this.max.x - this.min.x),\n          (point.y - this.min.y) / (this.max.y - this.min.y)\n        );\n      }\n      intersectsBox(box) {\n        return box.max.x >= this.min.x && box.min.x <= this.max.x && box.max.y >= this.min.y && box.min.y <= this.max.y;\n      }\n      clampPoint(point, target2) {\n        return target2.copy(point).clamp(this.min, this.max);\n      }\n      distanceToPoint(point) {\n        return this.clampPoint(point, _vector$4).distanceTo(point);\n      }\n      intersect(box) {\n        this.min.max(box.min);\n        this.max.min(box.max);\n        if (this.isEmpty()) this.makeEmpty();\n        return this;\n      }\n      union(box) {\n        this.min.min(box.min);\n        this.max.max(box.max);\n        return this;\n      }\n      translate(offset) {\n        this.min.add(offset);\n        this.max.add(offset);\n        return this;\n      }\n      equals(box) {\n        return box.min.equals(this.min) && box.max.equals(this.max);\n      }\n    };\n    _startP = /* @__PURE__ */ new Vector3();\n    _startEnd = /* @__PURE__ */ new Vector3();\n    Line3 = class {\n      constructor(start = new Vector3(), end = new Vector3()) {\n        this.start = start;\n        this.end = end;\n      }\n      set(start, end) {\n        this.start.copy(start);\n        this.end.copy(end);\n        return this;\n      }\n      copy(line) {\n        this.start.copy(line.start);\n        this.end.copy(line.end);\n        return this;\n      }\n      getCenter(target2) {\n        return target2.addVectors(this.start, this.end).multiplyScalar(0.5);\n      }\n      delta(target2) {\n        return target2.subVectors(this.end, this.start);\n      }\n      distanceSq() {\n        return this.start.distanceToSquared(this.end);\n      }\n      distance() {\n        return this.start.distanceTo(this.end);\n      }\n      at(t2, target2) {\n        return this.delta(target2).multiplyScalar(t2).add(this.start);\n      }\n      closestPointToPointParameter(point, clampToLine) {\n        _startP.subVectors(point, this.start);\n        _startEnd.subVectors(this.end, this.start);\n        const startEnd2 = _startEnd.dot(_startEnd);\n        const startEnd_startP = _startEnd.dot(_startP);\n        let t2 = startEnd_startP / startEnd2;\n        if (clampToLine) {\n          t2 = clamp(t2, 0, 1);\n        }\n        return t2;\n      }\n      closestPointToPoint(point, clampToLine, target2) {\n        const t2 = this.closestPointToPointParameter(point, clampToLine);\n        return this.delta(target2).multiplyScalar(t2).add(this.start);\n      }\n      applyMatrix4(matrix2) {\n        this.start.applyMatrix4(matrix2);\n        this.end.applyMatrix4(matrix2);\n        return this;\n      }\n      equals(line) {\n        return line.start.equals(this.start) && line.end.equals(this.end);\n      }\n      clone() {\n        return new this.constructor().copy(this);\n      }\n    };\n    _vector$3 = /* @__PURE__ */ new Vector3();\n    SpotLightHelper = class extends Object3D {\n      constructor(light, color) {\n        super();\n        this.light = light;\n        this.matrixAutoUpdate = false;\n        this.color = color;\n        this.type = \"SpotLightHelper\";\n        const geometry = new BufferGeometry();\n        const positions = [\n          0,\n          0,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0,\n          0,\n          1,\n          0,\n          1,\n          0,\n          0,\n          0,\n          -1,\n          0,\n          1,\n          0,\n          0,\n          0,\n          0,\n          1,\n          1,\n          0,\n          0,\n          0,\n          0,\n          -1,\n          1\n        ];\n        for (let i2 = 0, j2 = 1, l2 = 32; i2 < l2; i2++, j2++) {\n          const p1 = i2 / l2 * Math.PI * 2;\n          const p22 = j2 / l2 * Math.PI * 2;\n          positions.push(\n            Math.cos(p1),\n            Math.sin(p1),\n            1,\n            Math.cos(p22),\n            Math.sin(p22),\n            1\n          );\n        }\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n        const material = new LineBasicMaterial({ fog: false, toneMapped: false });\n        this.cone = new LineSegments(geometry, material);\n        this.add(this.cone);\n        this.update();\n      }\n      dispose() {\n        this.cone.geometry.dispose();\n        this.cone.material.dispose();\n      }\n      update() {\n        this.light.updateWorldMatrix(true, false);\n        this.light.target.updateWorldMatrix(true, false);\n        if (this.parent) {\n          this.parent.updateWorldMatrix(true);\n          this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld);\n        } else {\n          this.matrix.copy(this.light.matrixWorld);\n        }\n        this.matrixWorld.copy(this.light.matrixWorld);\n        const coneLength = this.light.distance ? this.light.distance : 1e3;\n        const coneWidth = coneLength * Math.tan(this.light.angle);\n        this.cone.scale.set(coneWidth, coneWidth, coneLength);\n        _vector$3.setFromMatrixPosition(this.light.target.matrixWorld);\n        this.cone.lookAt(_vector$3);\n        if (this.color !== void 0) {\n          this.cone.material.color.set(this.color);\n        } else {\n          this.cone.material.color.copy(this.light.color);\n        }\n      }\n    };\n    _vector$2 = /* @__PURE__ */ new Vector3();\n    _boneMatrix = /* @__PURE__ */ new Matrix4();\n    _matrixWorldInv = /* @__PURE__ */ new Matrix4();\n    SkeletonHelper = class extends LineSegments {\n      constructor(object) {\n        const bones = getBoneList(object);\n        const geometry = new BufferGeometry();\n        const vertices = [];\n        const colors = [];\n        const color1 = new Color(0, 0, 1);\n        const color2 = new Color(0, 1, 0);\n        for (let i2 = 0; i2 < bones.length; i2++) {\n          const bone = bones[i2];\n          if (bone.parent && bone.parent.isBone) {\n            vertices.push(0, 0, 0);\n            vertices.push(0, 0, 0);\n            colors.push(color1.r, color1.g, color1.b);\n            colors.push(color2.r, color2.g, color2.b);\n          }\n        }\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n        const material = new LineBasicMaterial({ vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true });\n        super(geometry, material);\n        this.isSkeletonHelper = true;\n        this.type = \"SkeletonHelper\";\n        this.root = object;\n        this.bones = bones;\n        this.matrix = object.matrixWorld;\n        this.matrixAutoUpdate = false;\n      }\n      updateMatrixWorld(force) {\n        const bones = this.bones;\n        const geometry = this.geometry;\n        const position = geometry.getAttribute(\"position\");\n        _matrixWorldInv.copy(this.root.matrixWorld).invert();\n        for (let i2 = 0, j2 = 0; i2 < bones.length; i2++) {\n          const bone = bones[i2];\n          if (bone.parent && bone.parent.isBone) {\n            _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n            _vector$2.setFromMatrixPosition(_boneMatrix);\n            position.setXYZ(j2, _vector$2.x, _vector$2.y, _vector$2.z);\n            _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n            _vector$2.setFromMatrixPosition(_boneMatrix);\n            position.setXYZ(j2 + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n            j2 += 2;\n          }\n        }\n        geometry.getAttribute(\"position\").needsUpdate = true;\n        super.updateMatrixWorld(force);\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    PointLightHelper = class extends Mesh {\n      constructor(light, sphereSize, color) {\n        const geometry = new SphereGeometry(sphereSize, 4, 2);\n        const material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false });\n        super(geometry, material);\n        this.light = light;\n        this.color = color;\n        this.type = \"PointLightHelper\";\n        this.matrix = this.light.matrixWorld;\n        this.matrixAutoUpdate = false;\n        this.update();\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n      update() {\n        this.light.updateWorldMatrix(true, false);\n        if (this.color !== void 0) {\n          this.material.color.set(this.color);\n        } else {\n          this.material.color.copy(this.light.color);\n        }\n      }\n    };\n    _vector$1 = /* @__PURE__ */ new Vector3();\n    _color1 = /* @__PURE__ */ new Color();\n    _color2 = /* @__PURE__ */ new Color();\n    HemisphereLightHelper = class extends Object3D {\n      constructor(light, size, color) {\n        super();\n        this.light = light;\n        this.matrix = light.matrixWorld;\n        this.matrixAutoUpdate = false;\n        this.color = color;\n        this.type = \"HemisphereLightHelper\";\n        const geometry = new OctahedronGeometry(size);\n        geometry.rotateY(Math.PI * 0.5);\n        this.material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false });\n        if (this.color === void 0) this.material.vertexColors = true;\n        const position = geometry.getAttribute(\"position\");\n        const colors = new Float32Array(position.count * 3);\n        geometry.setAttribute(\"color\", new BufferAttribute(colors, 3));\n        this.add(new Mesh(geometry, this.material));\n        this.update();\n      }\n      dispose() {\n        this.children[0].geometry.dispose();\n        this.children[0].material.dispose();\n      }\n      update() {\n        const mesh = this.children[0];\n        if (this.color !== void 0) {\n          this.material.color.set(this.color);\n        } else {\n          const colors = mesh.geometry.getAttribute(\"color\");\n          _color1.copy(this.light.color);\n          _color2.copy(this.light.groundColor);\n          for (let i2 = 0, l2 = colors.count; i2 < l2; i2++) {\n            const color = i2 < l2 / 2 ? _color1 : _color2;\n            colors.setXYZ(i2, color.r, color.g, color.b);\n          }\n          colors.needsUpdate = true;\n        }\n        this.light.updateWorldMatrix(true, false);\n        mesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate());\n      }\n    };\n    GridHelper = class extends LineSegments {\n      constructor(size = 10, divisions = 10, color1 = 4473924, color2 = 8947848) {\n        color1 = new Color(color1);\n        color2 = new Color(color2);\n        const center = divisions / 2;\n        const step = size / divisions;\n        const halfSize = size / 2;\n        const vertices = [], colors = [];\n        for (let i2 = 0, j2 = 0, k3 = -halfSize; i2 <= divisions; i2++, k3 += step) {\n          vertices.push(-halfSize, 0, k3, halfSize, 0, k3);\n          vertices.push(k3, 0, -halfSize, k3, 0, halfSize);\n          const color = i2 === center ? color1 : color2;\n          color.toArray(colors, j2);\n          j2 += 3;\n          color.toArray(colors, j2);\n          j2 += 3;\n          color.toArray(colors, j2);\n          j2 += 3;\n          color.toArray(colors, j2);\n          j2 += 3;\n        }\n        const geometry = new BufferGeometry();\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n        const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n        super(geometry, material);\n        this.type = \"GridHelper\";\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    PolarGridHelper = class extends LineSegments {\n      constructor(radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 4473924, color2 = 8947848) {\n        color1 = new Color(color1);\n        color2 = new Color(color2);\n        const vertices = [];\n        const colors = [];\n        if (sectors > 1) {\n          for (let i2 = 0; i2 < sectors; i2++) {\n            const v2 = i2 / sectors * (Math.PI * 2);\n            const x = Math.sin(v2) * radius;\n            const z2 = Math.cos(v2) * radius;\n            vertices.push(0, 0, 0);\n            vertices.push(x, 0, z2);\n            const color = i2 & 1 ? color1 : color2;\n            colors.push(color.r, color.g, color.b);\n            colors.push(color.r, color.g, color.b);\n          }\n        }\n        for (let i2 = 0; i2 < rings; i2++) {\n          const color = i2 & 1 ? color1 : color2;\n          const r2 = radius - radius / rings * i2;\n          for (let j2 = 0; j2 < divisions; j2++) {\n            let v2 = j2 / divisions * (Math.PI * 2);\n            let x = Math.sin(v2) * r2;\n            let z2 = Math.cos(v2) * r2;\n            vertices.push(x, 0, z2);\n            colors.push(color.r, color.g, color.b);\n            v2 = (j2 + 1) / divisions * (Math.PI * 2);\n            x = Math.sin(v2) * r2;\n            z2 = Math.cos(v2) * r2;\n            vertices.push(x, 0, z2);\n            colors.push(color.r, color.g, color.b);\n          }\n        }\n        const geometry = new BufferGeometry();\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n        const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n        super(geometry, material);\n        this.type = \"PolarGridHelper\";\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    _v1 = /* @__PURE__ */ new Vector3();\n    _v2 = /* @__PURE__ */ new Vector3();\n    _v3 = /* @__PURE__ */ new Vector3();\n    DirectionalLightHelper = class extends Object3D {\n      constructor(light, size, color) {\n        super();\n        this.light = light;\n        this.matrix = light.matrixWorld;\n        this.matrixAutoUpdate = false;\n        this.color = color;\n        this.type = \"DirectionalLightHelper\";\n        if (size === void 0) size = 1;\n        let geometry = new BufferGeometry();\n        geometry.setAttribute(\"position\", new Float32BufferAttribute([\n          -size,\n          size,\n          0,\n          size,\n          size,\n          0,\n          size,\n          -size,\n          0,\n          -size,\n          -size,\n          0,\n          -size,\n          size,\n          0\n        ], 3));\n        const material = new LineBasicMaterial({ fog: false, toneMapped: false });\n        this.lightPlane = new Line(geometry, material);\n        this.add(this.lightPlane);\n        geometry = new BufferGeometry();\n        geometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n        this.targetLine = new Line(geometry, material);\n        this.add(this.targetLine);\n        this.update();\n      }\n      dispose() {\n        this.lightPlane.geometry.dispose();\n        this.lightPlane.material.dispose();\n        this.targetLine.geometry.dispose();\n        this.targetLine.material.dispose();\n      }\n      update() {\n        this.light.updateWorldMatrix(true, false);\n        this.light.target.updateWorldMatrix(true, false);\n        _v1.setFromMatrixPosition(this.light.matrixWorld);\n        _v2.setFromMatrixPosition(this.light.target.matrixWorld);\n        _v3.subVectors(_v2, _v1);\n        this.lightPlane.lookAt(_v2);\n        if (this.color !== void 0) {\n          this.lightPlane.material.color.set(this.color);\n          this.targetLine.material.color.set(this.color);\n        } else {\n          this.lightPlane.material.color.copy(this.light.color);\n          this.targetLine.material.color.copy(this.light.color);\n        }\n        this.targetLine.lookAt(_v2);\n        this.targetLine.scale.z = _v3.length();\n      }\n    };\n    _vector = /* @__PURE__ */ new Vector3();\n    _camera = /* @__PURE__ */ new Camera();\n    CameraHelper = class extends LineSegments {\n      constructor(camera) {\n        const geometry = new BufferGeometry();\n        const material = new LineBasicMaterial({ color: 16777215, vertexColors: true, toneMapped: false });\n        const vertices = [];\n        const colors = [];\n        const pointMap = {};\n        addLine(\"n1\", \"n2\");\n        addLine(\"n2\", \"n4\");\n        addLine(\"n4\", \"n3\");\n        addLine(\"n3\", \"n1\");\n        addLine(\"f1\", \"f2\");\n        addLine(\"f2\", \"f4\");\n        addLine(\"f4\", \"f3\");\n        addLine(\"f3\", \"f1\");\n        addLine(\"n1\", \"f1\");\n        addLine(\"n2\", \"f2\");\n        addLine(\"n3\", \"f3\");\n        addLine(\"n4\", \"f4\");\n        addLine(\"p\", \"n1\");\n        addLine(\"p\", \"n2\");\n        addLine(\"p\", \"n3\");\n        addLine(\"p\", \"n4\");\n        addLine(\"u1\", \"u2\");\n        addLine(\"u2\", \"u3\");\n        addLine(\"u3\", \"u1\");\n        addLine(\"c\", \"t\");\n        addLine(\"p\", \"c\");\n        addLine(\"cn1\", \"cn2\");\n        addLine(\"cn3\", \"cn4\");\n        addLine(\"cf1\", \"cf2\");\n        addLine(\"cf3\", \"cf4\");\n        function addLine(a, b) {\n          addPoint(a);\n          addPoint(b);\n        }\n        function addPoint(id) {\n          vertices.push(0, 0, 0);\n          colors.push(0, 0, 0);\n          if (pointMap[id] === void 0) {\n            pointMap[id] = [];\n          }\n          pointMap[id].push(vertices.length / 3 - 1);\n        }\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n        super(geometry, material);\n        this.type = \"CameraHelper\";\n        this.camera = camera;\n        if (this.camera.updateProjectionMatrix) this.camera.updateProjectionMatrix();\n        this.matrix = camera.matrixWorld;\n        this.matrixAutoUpdate = false;\n        this.pointMap = pointMap;\n        this.update();\n        const colorFrustum = new Color(16755200);\n        const colorCone = new Color(16711680);\n        const colorUp = new Color(43775);\n        const colorTarget = new Color(16777215);\n        const colorCross = new Color(3355443);\n        this.setColors(colorFrustum, colorCone, colorUp, colorTarget, colorCross);\n      }\n      setColors(frustum, cone, up, target2, cross) {\n        const geometry = this.geometry;\n        const colorAttribute = geometry.getAttribute(\"color\");\n        colorAttribute.setXYZ(0, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(1, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(2, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(3, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(4, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(5, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(6, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(7, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(8, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(9, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(10, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(11, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(12, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(13, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(14, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(15, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(16, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(17, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(18, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(19, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(20, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(21, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(22, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(23, frustum.r, frustum.g, frustum.b);\n        colorAttribute.setXYZ(24, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(25, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(26, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(27, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(28, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(29, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(30, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(31, cone.r, cone.g, cone.b);\n        colorAttribute.setXYZ(32, up.r, up.g, up.b);\n        colorAttribute.setXYZ(33, up.r, up.g, up.b);\n        colorAttribute.setXYZ(34, up.r, up.g, up.b);\n        colorAttribute.setXYZ(35, up.r, up.g, up.b);\n        colorAttribute.setXYZ(36, up.r, up.g, up.b);\n        colorAttribute.setXYZ(37, up.r, up.g, up.b);\n        colorAttribute.setXYZ(38, target2.r, target2.g, target2.b);\n        colorAttribute.setXYZ(39, target2.r, target2.g, target2.b);\n        colorAttribute.setXYZ(40, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(41, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(42, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(43, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(44, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(45, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(46, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(47, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(48, cross.r, cross.g, cross.b);\n        colorAttribute.setXYZ(49, cross.r, cross.g, cross.b);\n        colorAttribute.needsUpdate = true;\n      }\n      update() {\n        const geometry = this.geometry;\n        const pointMap = this.pointMap;\n        const w = 1, h2 = 1;\n        _camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n        setPoint(\"c\", pointMap, geometry, _camera, 0, 0, -1);\n        setPoint(\"t\", pointMap, geometry, _camera, 0, 0, 1);\n        setPoint(\"n1\", pointMap, geometry, _camera, -w, -h2, -1);\n        setPoint(\"n2\", pointMap, geometry, _camera, w, -h2, -1);\n        setPoint(\"n3\", pointMap, geometry, _camera, -w, h2, -1);\n        setPoint(\"n4\", pointMap, geometry, _camera, w, h2, -1);\n        setPoint(\"f1\", pointMap, geometry, _camera, -w, -h2, 1);\n        setPoint(\"f2\", pointMap, geometry, _camera, w, -h2, 1);\n        setPoint(\"f3\", pointMap, geometry, _camera, -w, h2, 1);\n        setPoint(\"f4\", pointMap, geometry, _camera, w, h2, 1);\n        setPoint(\"u1\", pointMap, geometry, _camera, w * 0.7, h2 * 1.1, -1);\n        setPoint(\"u2\", pointMap, geometry, _camera, -w * 0.7, h2 * 1.1, -1);\n        setPoint(\"u3\", pointMap, geometry, _camera, 0, h2 * 2, -1);\n        setPoint(\"cf1\", pointMap, geometry, _camera, -w, 0, 1);\n        setPoint(\"cf2\", pointMap, geometry, _camera, w, 0, 1);\n        setPoint(\"cf3\", pointMap, geometry, _camera, 0, -h2, 1);\n        setPoint(\"cf4\", pointMap, geometry, _camera, 0, h2, 1);\n        setPoint(\"cn1\", pointMap, geometry, _camera, -w, 0, -1);\n        setPoint(\"cn2\", pointMap, geometry, _camera, w, 0, -1);\n        setPoint(\"cn3\", pointMap, geometry, _camera, 0, -h2, -1);\n        setPoint(\"cn4\", pointMap, geometry, _camera, 0, h2, -1);\n        geometry.getAttribute(\"position\").needsUpdate = true;\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    _box = /* @__PURE__ */ new Box3();\n    BoxHelper = class extends LineSegments {\n      constructor(object, color = 16776960) {\n        const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n        const positions = new Float32Array(8 * 3);\n        const geometry = new BufferGeometry();\n        geometry.setIndex(new BufferAttribute(indices, 1));\n        geometry.setAttribute(\"position\", new BufferAttribute(positions, 3));\n        super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n        this.object = object;\n        this.type = \"BoxHelper\";\n        this.matrixAutoUpdate = false;\n        this.update();\n      }\n      update(object) {\n        if (object !== void 0) {\n          console.warn(\"THREE.BoxHelper: .update() has no longer arguments.\");\n        }\n        if (this.object !== void 0) {\n          _box.setFromObject(this.object);\n        }\n        if (_box.isEmpty()) return;\n        const min = _box.min;\n        const max = _box.max;\n        const position = this.geometry.attributes.position;\n        const array = position.array;\n        array[0] = max.x;\n        array[1] = max.y;\n        array[2] = max.z;\n        array[3] = min.x;\n        array[4] = max.y;\n        array[5] = max.z;\n        array[6] = min.x;\n        array[7] = min.y;\n        array[8] = max.z;\n        array[9] = max.x;\n        array[10] = min.y;\n        array[11] = max.z;\n        array[12] = max.x;\n        array[13] = max.y;\n        array[14] = min.z;\n        array[15] = min.x;\n        array[16] = max.y;\n        array[17] = min.z;\n        array[18] = min.x;\n        array[19] = min.y;\n        array[20] = min.z;\n        array[21] = max.x;\n        array[22] = min.y;\n        array[23] = min.z;\n        position.needsUpdate = true;\n        this.geometry.computeBoundingSphere();\n      }\n      setFromObject(object) {\n        this.object = object;\n        this.update();\n        return this;\n      }\n      copy(source, recursive) {\n        super.copy(source, recursive);\n        this.object = source.object;\n        return this;\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    Box3Helper = class extends LineSegments {\n      constructor(box, color = 16776960) {\n        const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n        const positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1];\n        const geometry = new BufferGeometry();\n        geometry.setIndex(new BufferAttribute(indices, 1));\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n        super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n        this.box = box;\n        this.type = \"Box3Helper\";\n        this.geometry.computeBoundingSphere();\n      }\n      updateMatrixWorld(force) {\n        const box = this.box;\n        if (box.isEmpty()) return;\n        box.getCenter(this.position);\n        box.getSize(this.scale);\n        this.scale.multiplyScalar(0.5);\n        super.updateMatrixWorld(force);\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    PlaneHelper = class extends Line {\n      constructor(plane, size = 1, hex = 16776960) {\n        const color = hex;\n        const positions = [1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0];\n        const geometry = new BufferGeometry();\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n        super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n        this.type = \"PlaneHelper\";\n        this.plane = plane;\n        this.size = size;\n        const positions2 = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0];\n        const geometry2 = new BufferGeometry();\n        geometry2.setAttribute(\"position\", new Float32BufferAttribute(positions2, 3));\n        geometry2.computeBoundingSphere();\n        this.add(new Mesh(geometry2, new MeshBasicMaterial({ color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false })));\n      }\n      updateMatrixWorld(force) {\n        this.position.set(0, 0, 0);\n        this.scale.set(0.5 * this.size, 0.5 * this.size, 1);\n        this.lookAt(this.plane.normal);\n        this.translateZ(-this.plane.constant);\n        super.updateMatrixWorld(force);\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n        this.children[0].geometry.dispose();\n        this.children[0].material.dispose();\n      }\n    };\n    _axis = /* @__PURE__ */ new Vector3();\n    ArrowHelper = class extends Object3D {\n      // dir is assumed to be normalized\n      constructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 16776960, headLength = length * 0.2, headWidth = headLength * 0.2) {\n        super();\n        this.type = \"ArrowHelper\";\n        if (_lineGeometry === void 0) {\n          _lineGeometry = new BufferGeometry();\n          _lineGeometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n          _coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1);\n          _coneGeometry.translate(0, -0.5, 0);\n        }\n        this.position.copy(origin);\n        this.line = new Line(_lineGeometry, new LineBasicMaterial({ color, toneMapped: false }));\n        this.line.matrixAutoUpdate = false;\n        this.add(this.line);\n        this.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({ color, toneMapped: false }));\n        this.cone.matrixAutoUpdate = false;\n        this.add(this.cone);\n        this.setDirection(dir);\n        this.setLength(length, headLength, headWidth);\n      }\n      setDirection(dir) {\n        if (dir.y > 0.99999) {\n          this.quaternion.set(0, 0, 0, 1);\n        } else if (dir.y < -0.99999) {\n          this.quaternion.set(1, 0, 0, 0);\n        } else {\n          _axis.set(dir.z, 0, -dir.x).normalize();\n          const radians = Math.acos(dir.y);\n          this.quaternion.setFromAxisAngle(_axis, radians);\n        }\n      }\n      setLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) {\n        this.line.scale.set(1, Math.max(1e-4, length - headLength), 1);\n        this.line.updateMatrix();\n        this.cone.scale.set(headWidth, headLength, headWidth);\n        this.cone.position.y = length;\n        this.cone.updateMatrix();\n      }\n      setColor(color) {\n        this.line.material.color.set(color);\n        this.cone.material.color.set(color);\n      }\n      copy(source) {\n        super.copy(source, false);\n        this.line.copy(source.line);\n        this.cone.copy(source.cone);\n        return this;\n      }\n      dispose() {\n        this.line.geometry.dispose();\n        this.line.material.dispose();\n        this.cone.geometry.dispose();\n        this.cone.material.dispose();\n      }\n    };\n    AxesHelper = class extends LineSegments {\n      constructor(size = 1) {\n        const vertices = [\n          0,\n          0,\n          0,\n          size,\n          0,\n          0,\n          0,\n          0,\n          0,\n          0,\n          size,\n          0,\n          0,\n          0,\n          0,\n          0,\n          0,\n          size\n        ];\n        const colors = [\n          1,\n          0,\n          0,\n          1,\n          0.6,\n          0,\n          0,\n          1,\n          0,\n          0.6,\n          1,\n          0,\n          0,\n          0,\n          1,\n          0,\n          0.6,\n          1\n        ];\n        const geometry = new BufferGeometry();\n        geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n        geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n        const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n        super(geometry, material);\n        this.type = \"AxesHelper\";\n      }\n      setColors(xAxisColor, yAxisColor, zAxisColor) {\n        const color = new Color();\n        const array = this.geometry.attributes.color.array;\n        color.set(xAxisColor);\n        color.toArray(array, 0);\n        color.toArray(array, 3);\n        color.set(yAxisColor);\n        color.toArray(array, 6);\n        color.toArray(array, 9);\n        color.set(zAxisColor);\n        color.toArray(array, 12);\n        color.toArray(array, 15);\n        this.geometry.attributes.color.needsUpdate = true;\n        return this;\n      }\n      dispose() {\n        this.geometry.dispose();\n        this.material.dispose();\n      }\n    };\n    ShapePath = class {\n      constructor() {\n        this.type = \"ShapePath\";\n        this.color = new Color();\n        this.subPaths = [];\n        this.currentPath = null;\n      }\n      moveTo(x, y2) {\n        this.currentPath = new Path();\n        this.subPaths.push(this.currentPath);\n        this.currentPath.moveTo(x, y2);\n        return this;\n      }\n      lineTo(x, y2) {\n        this.currentPath.lineTo(x, y2);\n        return this;\n      }\n      quadraticCurveTo(aCPx, aCPy, aX, aY) {\n        this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n        return this;\n      }\n      bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n        this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n        return this;\n      }\n      splineThru(pts) {\n        this.currentPath.splineThru(pts);\n        return this;\n      }\n      toShapes(isCCW) {\n        function toShapesNoHoles(inSubpaths) {\n          const shapes2 = [];\n          for (let i2 = 0, l2 = inSubpaths.length; i2 < l2; i2++) {\n            const tmpPath2 = inSubpaths[i2];\n            const tmpShape2 = new Shape();\n            tmpShape2.curves = tmpPath2.curves;\n            shapes2.push(tmpShape2);\n          }\n          return shapes2;\n        }\n        function isPointInsidePolygon(inPt, inPolygon) {\n          const polyLen = inPolygon.length;\n          let inside = false;\n          for (let p3 = polyLen - 1, q3 = 0; q3 < polyLen; p3 = q3++) {\n            let edgeLowPt = inPolygon[p3];\n            let edgeHighPt = inPolygon[q3];\n            let edgeDx = edgeHighPt.x - edgeLowPt.x;\n            let edgeDy = edgeHighPt.y - edgeLowPt.y;\n            if (Math.abs(edgeDy) > Number.EPSILON) {\n              if (edgeDy < 0) {\n                edgeLowPt = inPolygon[q3];\n                edgeDx = -edgeDx;\n                edgeHighPt = inPolygon[p3];\n                edgeDy = -edgeDy;\n              }\n              if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y) continue;\n              if (inPt.y === edgeLowPt.y) {\n                if (inPt.x === edgeLowPt.x) return true;\n              } else {\n                const perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n                if (perpEdge === 0) return true;\n                if (perpEdge < 0) continue;\n                inside = !inside;\n              }\n            } else {\n              if (inPt.y !== edgeLowPt.y) continue;\n              if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x) return true;\n            }\n          }\n          return inside;\n        }\n        const isClockWise = ShapeUtils.isClockWise;\n        const subPaths = this.subPaths;\n        if (subPaths.length === 0) return [];\n        let solid, tmpPath, tmpShape;\n        const shapes = [];\n        if (subPaths.length === 1) {\n          tmpPath = subPaths[0];\n          tmpShape = new Shape();\n          tmpShape.curves = tmpPath.curves;\n          shapes.push(tmpShape);\n          return shapes;\n        }\n        let holesFirst = !isClockWise(subPaths[0].getPoints());\n        holesFirst = isCCW ? !holesFirst : holesFirst;\n        const betterShapeHoles = [];\n        const newShapes = [];\n        let newShapeHoles = [];\n        let mainIdx = 0;\n        let tmpPoints;\n        newShapes[mainIdx] = void 0;\n        newShapeHoles[mainIdx] = [];\n        for (let i2 = 0, l2 = subPaths.length; i2 < l2; i2++) {\n          tmpPath = subPaths[i2];\n          tmpPoints = tmpPath.getPoints();\n          solid = isClockWise(tmpPoints);\n          solid = isCCW ? !solid : solid;\n          if (solid) {\n            if (!holesFirst && newShapes[mainIdx]) mainIdx++;\n            newShapes[mainIdx] = { s: new Shape(), p: tmpPoints };\n            newShapes[mainIdx].s.curves = tmpPath.curves;\n            if (holesFirst) mainIdx++;\n            newShapeHoles[mainIdx] = [];\n          } else {\n            newShapeHoles[mainIdx].push({ h: tmpPath, p: tmpPoints[0] });\n          }\n        }\n        if (!newShapes[0]) return toShapesNoHoles(subPaths);\n        if (newShapes.length > 1) {\n          let ambiguous = false;\n          let toChange = 0;\n          for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n            betterShapeHoles[sIdx] = [];\n          }\n          for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n            const sho = newShapeHoles[sIdx];\n            for (let hIdx = 0; hIdx < sho.length; hIdx++) {\n              const ho = sho[hIdx];\n              let hole_unassigned = true;\n              for (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n                if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n                  if (sIdx !== s2Idx) toChange++;\n                  if (hole_unassigned) {\n                    hole_unassigned = false;\n                    betterShapeHoles[s2Idx].push(ho);\n                  } else {\n                    ambiguous = true;\n                  }\n                }\n              }\n              if (hole_unassigned) {\n                betterShapeHoles[sIdx].push(ho);\n              }\n            }\n          }\n          if (toChange > 0 && ambiguous === false) {\n            newShapeHoles = betterShapeHoles;\n          }\n        }\n        let tmpHoles;\n        for (let i2 = 0, il = newShapes.length; i2 < il; i2++) {\n          tmpShape = newShapes[i2].s;\n          shapes.push(tmpShape);\n          tmpHoles = newShapeHoles[i2];\n          for (let j2 = 0, jl = tmpHoles.length; j2 < jl; j2++) {\n            tmpShape.holes.push(tmpHoles[j2].h);\n          }\n        }\n        return shapes;\n      }\n    };\n    Controls = class extends EventDispatcher {\n      constructor(object, domElement = null) {\n        super();\n        this.object = object;\n        this.domElement = domElement;\n        this.enabled = true;\n        this.state = -1;\n        this.keys = {};\n        this.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null };\n        this.touches = { ONE: null, TWO: null };\n      }\n      connect() {\n      }\n      disconnect() {\n      }\n      dispose() {\n      }\n      update() {\n      }\n    };\n    WebGLMultipleRenderTargets = class extends WebGLRenderTarget {\n      // @deprecated, r162\n      constructor(width = 1, height = 1, count = 1, options = {}) {\n        console.warn('THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the \"count\" parameter to enable MRT.');\n        super(width, height, __spreadProps(__spreadValues({}, options), { count }));\n        this.isWebGLMultipleRenderTargets = true;\n      }\n      get texture() {\n        return this.textures;\n      }\n    };\n    if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n      __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", { detail: {\n        revision: REVISION\n      } }));\n    }\n    if (typeof window !== \"undefined\") {\n      if (window.__THREE__) {\n        console.warn(\"WARNING: Multiple instances of Three.js being imported.\");\n      } else {\n        window.__THREE__ = REVISION;\n      }\n    }\n  }\n});\n\n// ../shadergradient/dist/chunk-73SH6GTX.mjs\nimport * as React from \"react\";\nimport { DefaultEventPriority, ContinuousEventPriority, DiscreteEventPriority, ConcurrentRoot } from \"react-reconciler/constants\";\nimport { useReducer, useRef as useRef2, useDebugValue, useEffect as useEffect2, useLayoutEffect as useLayoutEffect2 } from \"react\";\nimport { jsx as jsx2, Fragment as Fragment2 } from \"react/jsx-runtime\";\nimport Reconciler from \"react-reconciler\";\nimport * as React3 from \"react\";\nimport { useState as T, useRef as p, useEffect as u2, useMemo as M2 } from \"react\";\nimport * as React2 from \"react\";\nimport { jsx as jsx22 } from \"react/jsx-runtime\";\nimport \"react-reconciler/constants\";\nimport \"react-reconciler\";\nfunction createStore(createState) {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === \"function\" ? partial(state) : partial;\n    if (nextState !== state) {\n      const previousState = state;\n      state = replace ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n    console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n    let currentSlice = selector(state);\n    function listenerToAdd() {\n      const nextSlice = selector(state);\n      if (!equalityFn(currentSlice, nextSlice)) {\n        const previousSlice = currentSlice;\n        listener(currentSlice = nextSlice, previousSlice);\n      }\n    }\n    listeners.add(listenerToAdd);\n    return () => listeners.delete(listenerToAdd);\n  };\n  const subscribe = (listener, selector, equalityFn) => {\n    if (selector || equalityFn) {\n      return subscribeWithSelector(listener, selector, equalityFn);\n    }\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const destroy = () => listeners.clear();\n  const api = { setState, getState, subscribe, destroy };\n  state = createState(setState, getState, api);\n  return api;\n}\nfunction create(createState) {\n  const api = typeof createState === \"function\" ? createStore(createState) : createState;\n  const useStore2 = (selector = api.getState, equalityFn = Object.is) => {\n    const [, forceUpdate] = useReducer((c) => c + 1, 0);\n    const state = api.getState();\n    const stateRef = useRef2(state);\n    const selectorRef = useRef2(selector);\n    const equalityFnRef = useRef2(equalityFn);\n    const erroredRef = useRef2(false);\n    const currentSliceRef = useRef2();\n    if (currentSliceRef.current === void 0) {\n      currentSliceRef.current = selector(state);\n    }\n    let newStateSlice;\n    let hasNewStateSlice = false;\n    if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n      newStateSlice = selector(state);\n      hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n    }\n    useIsomorphicLayoutEffect(() => {\n      if (hasNewStateSlice) {\n        currentSliceRef.current = newStateSlice;\n      }\n      stateRef.current = state;\n      selectorRef.current = selector;\n      equalityFnRef.current = equalityFn;\n      erroredRef.current = false;\n    });\n    const stateBeforeSubscriptionRef = useRef2(state);\n    useIsomorphicLayoutEffect(() => {\n      const listener = () => {\n        try {\n          const nextState = api.getState();\n          const nextStateSlice = selectorRef.current(nextState);\n          if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n            stateRef.current = nextState;\n            currentSliceRef.current = nextStateSlice;\n            forceUpdate();\n          }\n        } catch (error2) {\n          erroredRef.current = true;\n          forceUpdate();\n        }\n      };\n      const unsubscribe = api.subscribe(listener);\n      if (api.getState() !== stateBeforeSubscriptionRef.current) {\n        listener();\n      }\n      return unsubscribe;\n    }, []);\n    const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n    useDebugValue(sliceToReturn);\n    return sliceToReturn;\n  };\n  Object.assign(useStore2, api);\n  useStore2[Symbol.iterator] = function() {\n    console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n    const items = [useStore2, api];\n    return {\n      next() {\n        const done = items.length <= 0;\n        return { value: items.shift(), done };\n      }\n    };\n  };\n  return useStore2;\n}\nfunction shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {\n  if (arrA === arrB) return true;\n  if (!arrA || !arrB) return false;\n  const len = arrA.length;\n  if (arrB.length !== len) return false;\n  for (let i2 = 0; i2 < len; i2++) if (!equal(arrA[i2], arrB[i2])) return false;\n  return true;\n}\nfunction query(fn, keys = null, preload2 = false, config = {}) {\n  if (keys === null) keys = [fn];\n  for (const entry2 of globalCache) {\n    if (shallowEqualArrays(keys, entry2.keys, entry2.equal)) {\n      if (preload2) return void 0;\n      if (Object.prototype.hasOwnProperty.call(entry2, \"error\")) throw entry2.error;\n      if (Object.prototype.hasOwnProperty.call(entry2, \"response\")) {\n        if (config.lifespan && config.lifespan > 0) {\n          if (entry2.timeout) clearTimeout(entry2.timeout);\n          entry2.timeout = setTimeout(entry2.remove, config.lifespan);\n        }\n        return entry2.response;\n      }\n      if (!preload2) throw entry2.promise;\n    }\n  }\n  const entry = {\n    keys,\n    equal: config.equal,\n    remove: () => {\n      const index = globalCache.indexOf(entry);\n      if (index !== -1) globalCache.splice(index, 1);\n    },\n    promise: (\n      // Execute the promise\n      (isPromise(fn) ? fn : fn(...keys)).then((response) => {\n        entry.response = response;\n        if (config.lifespan && config.lifespan > 0) {\n          entry.timeout = setTimeout(entry.remove, config.lifespan);\n        }\n      }).catch((error2) => entry.error = error2)\n    )\n  };\n  globalCache.push(entry);\n  if (!preload2) throw entry.promise;\n  return void 0;\n}\nfunction f(a, b) {\n  var c = a.length;\n  a.push(b);\n  a: for (; 0 < c; ) {\n    var d = c - 1 >>> 1, e = a[d];\n    if (0 < g(e, b)) a[d] = b, a[c] = e, c = d;\n    else break a;\n  }\n}\nfunction h(a) {\n  return 0 === a.length ? null : a[0];\n}\nfunction k(a) {\n  if (0 === a.length) return null;\n  var b = a[0], c = a.pop();\n  if (c !== b) {\n    a[0] = c;\n    a: for (var d = 0, e = a.length, w = e >>> 1; d < w; ) {\n      var m = 2 * (d + 1) - 1, C = a[m], n = m + 1, x = a[n];\n      if (0 > g(C, c)) n < e && 0 > g(x, C) ? (a[d] = x, a[n] = c, d = n) : (a[d] = C, a[m] = c, d = m);\n      else if (n < e && 0 > g(x, c)) a[d] = x, a[n] = c, d = n;\n      else break a;\n    }\n  }\n  return b;\n}\nfunction g(a, b) {\n  var c = a.sortIndex - b.sortIndex;\n  return 0 !== c ? c : a.id - b.id;\n}\nfunction G(a) {\n  for (var b = h(t); null !== b; ) {\n    if (null === b.callback) k(t);\n    else if (b.startTime <= a) k(t), b.sortIndex = b.expirationTime, f(r, b);\n    else break;\n    b = h(t);\n  }\n}\nfunction H(a) {\n  B = false;\n  G(a);\n  if (!A) if (null !== h(r)) A = true, I(J);\n  else {\n    var b = h(t);\n    null !== b && K(H, b.startTime - a);\n  }\n}\nfunction J(a, b) {\n  A = false;\n  B && (B = false, E(L), L = -1);\n  z = true;\n  var c = y;\n  try {\n    G(b);\n    for (v = h(r); null !== v && (!(v.expirationTime > b) || a && !M()); ) {\n      var d = v.callback;\n      if (\"function\" === typeof d) {\n        v.callback = null;\n        y = v.priorityLevel;\n        var e = d(v.expirationTime <= b);\n        b = exports2.unstable_now();\n        \"function\" === typeof e ? v.callback = e : v === h(r) && k(r);\n        G(b);\n      } else k(r);\n      v = h(r);\n    }\n    if (null !== v) var w = true;\n    else {\n      var m = h(t);\n      null !== m && K(H, m.startTime - b);\n      w = false;\n    }\n    return w;\n  } finally {\n    v = null, y = c, z = false;\n  }\n}\nfunction M() {\n  return exports2.unstable_now() - Q < P ? false : true;\n}\nfunction R() {\n  if (null !== O) {\n    var a = exports2.unstable_now();\n    Q = a;\n    var b = true;\n    try {\n      b = O(true, a);\n    } finally {\n      b ? S() : (N = false, O = null);\n    }\n  } else N = false;\n}\nfunction I(a) {\n  O = a;\n  N || (N = true, S());\n}\nfunction K(a, b) {\n  L = D(function() {\n    a(exports2.unstable_now());\n  }, b);\n}\nfunction __cjs_default__(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global !== \"undefined\" && global || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k3) {\n      if (k3 === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k3 != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k3] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k3, {\n        get: function() {\n          return requiredModule[k3];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k3) {\n        Object2.defineProperty(specifiers, k3, {\n          get: function() {\n            return requiredModule[k3];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nfunction createRenderer(_roots, _getEventPriority) {\n  function createInstance(type, _a22, root) {\n    var _b2 = _a22, {\n      args = [],\n      attach: attach2\n    } = _b2, props = __objRest(_b2, [\n      \"args\",\n      \"attach\"\n    ]);\n    let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n    let instance;\n    if (type === \"primitive\") {\n      if (props.object === void 0) throw new Error(\"R3F: Primitives without 'object' are invalid!\");\n      const object = props.object;\n      instance = prepare(object, {\n        type,\n        root,\n        attach: attach2,\n        primitive: true\n      });\n    } else {\n      const target2 = catalogue[name];\n      if (!target2) {\n        throw new Error(`R3F: ${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);\n      }\n      if (!Array.isArray(args)) throw new Error(\"R3F: The args prop must be an array!\");\n      instance = prepare(new target2(...args), {\n        type,\n        root,\n        attach: attach2,\n        // Save args in case we need to reconstruct later for HMR\n        memoizedProps: {\n          args\n        }\n      });\n    }\n    if (instance.__r3f.attach === void 0) {\n      if (instance.isBufferGeometry) instance.__r3f.attach = \"geometry\";\n      else if (instance.isMaterial) instance.__r3f.attach = \"material\";\n    }\n    if (name !== \"inject\") applyProps$1(instance, props);\n    return instance;\n  }\n  function appendChild(parentInstance, child) {\n    let added = false;\n    if (child) {\n      var _child$__r3f, _parentInstance$__r3f;\n      if ((_child$__r3f = child.__r3f) != null && _child$__r3f.attach) {\n        attach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        parentInstance.add(child);\n        added = true;\n      }\n      if (!added) (_parentInstance$__r3f = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f.objects.push(child);\n      if (!child.__r3f) prepare(child, {});\n      child.__r3f.parent = parentInstance;\n      updateInstance(child);\n      invalidateInstance(child);\n    }\n  }\n  function insertBefore(parentInstance, child, beforeChild) {\n    let added = false;\n    if (child) {\n      var _child$__r3f2, _parentInstance$__r3f2;\n      if ((_child$__r3f2 = child.__r3f) != null && _child$__r3f2.attach) {\n        attach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        child.parent = parentInstance;\n        child.dispatchEvent({\n          type: \"added\"\n        });\n        parentInstance.dispatchEvent({\n          type: \"childadded\",\n          child\n        });\n        const restSiblings = parentInstance.children.filter((sibling) => sibling !== child);\n        const index = restSiblings.indexOf(beforeChild);\n        parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n        added = true;\n      }\n      if (!added) (_parentInstance$__r3f2 = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f2.objects.push(child);\n      if (!child.__r3f) prepare(child, {});\n      child.__r3f.parent = parentInstance;\n      updateInstance(child);\n      invalidateInstance(child);\n    }\n  }\n  function removeRecursive(array, parent, dispose2 = false) {\n    if (array) [...array].forEach((child) => removeChild(parent, child, dispose2));\n  }\n  function removeChild(parentInstance, child, dispose2) {\n    if (child) {\n      var _parentInstance$__r3f3, _child$__r3f3, _child$__r3f5;\n      if (child.__r3f) child.__r3f.parent = null;\n      if ((_parentInstance$__r3f3 = parentInstance.__r3f) != null && _parentInstance$__r3f3.objects) parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter((x) => x !== child);\n      if ((_child$__r3f3 = child.__r3f) != null && _child$__r3f3.attach) {\n        detach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        var _child$__r3f4;\n        parentInstance.remove(child);\n        if ((_child$__r3f4 = child.__r3f) != null && _child$__r3f4.root) {\n          removeInteractivity(findInitialRoot(child), child);\n        }\n      }\n      const isPrimitive = (_child$__r3f5 = child.__r3f) == null ? void 0 : _child$__r3f5.primitive;\n      const shouldDispose = !isPrimitive && (dispose2 === void 0 ? child.dispose !== null : dispose2);\n      if (!isPrimitive) {\n        var _child$__r3f6;\n        removeRecursive((_child$__r3f6 = child.__r3f) == null ? void 0 : _child$__r3f6.objects, child, shouldDispose);\n        removeRecursive(child.children, child, shouldDispose);\n      }\n      delete child.__r3f;\n      if (shouldDispose && child.dispose && child.type !== \"Scene\") {\n        const callback = () => {\n          try {\n            child.dispose();\n          } catch (e) {\n          }\n        };\n        if (typeof IS_REACT_ACT_ENVIRONMENT === \"undefined\") {\n          __export16(__export1, callback);\n        } else {\n          callback();\n        }\n      }\n      invalidateInstance(parentInstance);\n    }\n  }\n  function switchInstance(instance, type, newProps, fiber) {\n    var _instance$__r3f;\n    const parent = (_instance$__r3f = instance.__r3f) == null ? void 0 : _instance$__r3f.parent;\n    if (!parent) return;\n    const newInstance = createInstance(type, newProps, instance.__r3f.root);\n    if (instance.children) {\n      for (const child of instance.children) {\n        if (child.__r3f) appendChild(newInstance, child);\n      }\n      instance.children = instance.children.filter((child) => !child.__r3f);\n    }\n    instance.__r3f.objects.forEach((child) => appendChild(newInstance, child));\n    instance.__r3f.objects = [];\n    if (!instance.__r3f.autoRemovedBeforeAppend) {\n      removeChild(parent, instance);\n    }\n    if (newInstance.parent) {\n      newInstance.__r3f.autoRemovedBeforeAppend = true;\n    }\n    appendChild(parent, newInstance);\n    if (newInstance.raycast && newInstance.__r3f.eventCount) {\n      const rootState = findInitialRoot(newInstance).getState();\n      rootState.internal.interaction.push(newInstance);\n    }\n    [fiber, fiber.alternate].forEach((fiber2) => {\n      if (fiber2 !== null) {\n        fiber2.stateNode = newInstance;\n        if (fiber2.ref) {\n          if (typeof fiber2.ref === \"function\") fiber2.ref(newInstance);\n          else fiber2.ref.current = newInstance;\n        }\n      }\n    });\n  }\n  const handleTextInstance = () => {\n  };\n  const reconciler2 = Reconciler({\n    createInstance,\n    removeChild,\n    appendChild,\n    appendInitialChild: appendChild,\n    insertBefore,\n    supportsMutation: true,\n    isPrimaryRenderer: false,\n    supportsPersistence: false,\n    supportsHydration: false,\n    noTimeout: -1,\n    appendChildToContainer: (container, child) => {\n      if (!child) return;\n      const scene = container.getState().scene;\n      if (!scene.__r3f) return;\n      scene.__r3f.root = container;\n      appendChild(scene, child);\n    },\n    removeChildFromContainer: (container, child) => {\n      if (!child) return;\n      removeChild(container.getState().scene, child);\n    },\n    insertInContainerBefore: (container, child, beforeChild) => {\n      if (!child || !beforeChild) return;\n      const scene = container.getState().scene;\n      if (!scene.__r3f) return;\n      insertBefore(scene, child, beforeChild);\n    },\n    getRootHostContext: () => null,\n    getChildHostContext: (parentHostContext) => parentHostContext,\n    finalizeInitialChildren(instance) {\n      var _instance$__r3f2;\n      const localState = (_instance$__r3f2 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f2 : {};\n      return Boolean(localState.handlers);\n    },\n    prepareUpdate(instance, _type, oldProps, newProps) {\n      var _instance$__r3f3;\n      const localState = (_instance$__r3f3 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f3 : {};\n      if (localState.primitive && newProps.object && newProps.object !== instance) {\n        return [true];\n      } else {\n        const _a22 = newProps, {\n          args: argsNew = [],\n          children: cN\n        } = _a22, restNew = __objRest(_a22, [\n          \"args\",\n          \"children\"\n        ]);\n        const _b2 = oldProps, {\n          args: argsOld = [],\n          children: cO\n        } = _b2, restOld = __objRest(_b2, [\n          \"args\",\n          \"children\"\n        ]);\n        if (!Array.isArray(argsNew)) throw new Error(\"R3F: the args prop must be an array!\");\n        if (argsNew.some((value, index) => value !== argsOld[index])) return [true];\n        const diff = diffProps(instance, restNew, restOld, true);\n        if (diff.changes.length) return [false, diff];\n        return null;\n      }\n    },\n    commitUpdate(instance, [reconstruct, diff], type, _oldProps, newProps, fiber) {\n      if (reconstruct) switchInstance(instance, type, newProps, fiber);\n      else applyProps$1(instance, diff);\n    },\n    commitMount(instance, _type, _props, _int) {\n      var _instance$__r3f4;\n      const localState = (_instance$__r3f4 = instance.__r3f) != null ? _instance$__r3f4 : {};\n      if (instance.raycast && localState.handlers && localState.eventCount) {\n        findInitialRoot(instance).getState().internal.interaction.push(instance);\n      }\n    },\n    getPublicInstance: (instance) => instance,\n    prepareForCommit: () => null,\n    preparePortalMount: (container) => prepare(container.getState().scene),\n    resetAfterCommit: () => {\n    },\n    shouldSetTextContent: () => false,\n    clearContainer: () => false,\n    hideInstance(instance) {\n      var _instance$__r3f5;\n      const {\n        attach: type,\n        parent\n      } = (_instance$__r3f5 = instance.__r3f) != null ? _instance$__r3f5 : {};\n      if (type && parent) detach(parent, instance, type);\n      if (instance.isObject3D) instance.visible = false;\n      invalidateInstance(instance);\n    },\n    unhideInstance(instance, props) {\n      var _instance$__r3f6;\n      const {\n        attach: type,\n        parent\n      } = (_instance$__r3f6 = instance.__r3f) != null ? _instance$__r3f6 : {};\n      if (type && parent) attach(parent, instance, type);\n      if (instance.isObject3D && props.visible == null || props.visible) instance.visible = true;\n      invalidateInstance(instance);\n    },\n    createTextInstance: handleTextInstance,\n    hideTextInstance: handleTextInstance,\n    unhideTextInstance: handleTextInstance,\n    // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n    // @ts-expect-error\n    getCurrentEventPriority: () => _getEventPriority ? _getEventPriority() : DefaultEventPriority,\n    beforeActiveInstanceBlur: () => {\n    },\n    afterActiveInstanceBlur: () => {\n    },\n    detachDeletedInstance: () => {\n    },\n    now: typeof performance !== \"undefined\" && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : () => 0,\n    // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r920883503\n    scheduleTimeout: is.fun(setTimeout) ? setTimeout : void 0,\n    cancelTimeout: is.fun(clearTimeout) ? clearTimeout : void 0\n  });\n  return {\n    reconciler: reconciler2,\n    applyProps: applyProps$1\n  };\n}\nfunction useMutableCallback(fn) {\n  const ref = React.useRef(fn);\n  useIsomorphicLayoutEffect2(() => void (ref.current = fn), [fn]);\n  return ref;\n}\nfunction Block({\n  set\n}) {\n  useIsomorphicLayoutEffect2(() => {\n    set(new Promise(() => null));\n    return () => set(false);\n  }, [set]);\n  return null;\n}\nfunction calculateDpr(dpr) {\n  var _window$devicePixelRa;\n  const target2 = typeof window !== \"undefined\" ? (_window$devicePixelRa = window.devicePixelRatio) != null ? _window$devicePixelRa : 2 : 1;\n  return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target2), dpr[1]) : dpr;\n}\nfunction findInitialRoot(child) {\n  let root = child.__r3f.root;\n  while (root.getState().previousRoot) root = root.getState().previousRoot;\n  return root;\n}\nfunction buildGraph(object) {\n  const data = {\n    nodes: {},\n    materials: {}\n  };\n  if (object) {\n    object.traverse((obj) => {\n      if (obj.name) data.nodes[obj.name] = obj;\n      if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n    });\n  }\n  return data;\n}\nfunction dispose(obj) {\n  if (obj.dispose && obj.type !== \"Scene\") obj.dispose();\n  for (const p22 in obj) {\n    p22.dispose == null ? void 0 : p22.dispose();\n    delete obj[p22];\n  }\n}\nfunction prepare(object, state) {\n  const instance = object;\n  instance.__r3f = __spreadValues({\n    type: \"\",\n    root: null,\n    previousAttach: null,\n    memoizedProps: {},\n    eventCount: 0,\n    handlers: {},\n    objects: [],\n    parent: null\n  }, state);\n  return object;\n}\nfunction resolve(instance, key) {\n  let target2 = instance;\n  if (key.includes(\"-\")) {\n    const entries = key.split(\"-\");\n    const last = entries.pop();\n    target2 = entries.reduce((acc, key2) => acc[key2], instance);\n    return {\n      target: target2,\n      key: last\n    };\n  } else return {\n    target: target2,\n    key\n  };\n}\nfunction attach(parent, child, type) {\n  if (is.str(type)) {\n    if (INDEX_REGEX.test(type)) {\n      const root = type.replace(INDEX_REGEX, \"\");\n      const {\n        target: target22,\n        key: key2\n      } = resolve(parent, root);\n      if (!Array.isArray(target22[key2])) target22[key2] = [];\n    }\n    const {\n      target: target2,\n      key\n    } = resolve(parent, type);\n    child.__r3f.previousAttach = target2[key];\n    target2[key] = child;\n  } else child.__r3f.previousAttach = type(parent, child);\n}\nfunction detach(parent, child, type) {\n  var _child$__r3f, _child$__r3f2;\n  if (is.str(type)) {\n    const {\n      target: target2,\n      key\n    } = resolve(parent, type);\n    const previous = child.__r3f.previousAttach;\n    if (previous === void 0) delete target2[key];\n    else target2[key] = previous;\n  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);\n  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;\n}\nfunction diffProps(instance, _a22, _c = {}, remove = false) {\n  var _b2 = _a22, {\n    children: cN,\n    key: kN,\n    ref: rN\n  } = _b2, props = __objRest(_b2, [\n    \"children\",\n    \"key\",\n    \"ref\"\n  ]);\n  var _d = _c, {\n    children: cP,\n    key: kP,\n    ref: rP\n  } = _d, previous = __objRest(_d, [\n    \"children\",\n    \"key\",\n    \"ref\"\n  ]);\n  const localState = instance.__r3f;\n  const entries = Object.entries(props);\n  const changes = [];\n  if (remove) {\n    const previousKeys = Object.keys(previous);\n    for (let i2 = 0; i2 < previousKeys.length; i2++) {\n      if (!props.hasOwnProperty(previousKeys[i2])) entries.unshift([previousKeys[i2], DEFAULT + \"remove\"]);\n    }\n  }\n  entries.forEach(([key, value]) => {\n    var _instance$__r3f;\n    if ((_instance$__r3f = instance.__r3f) != null && _instance$__r3f.primitive && key === \"object\") return;\n    if (is.equ(value, previous[key])) return;\n    if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]);\n    let entries2 = [];\n    if (key.includes(\"-\")) entries2 = key.split(\"-\");\n    changes.push([key, value, false, entries2]);\n    for (const prop in props) {\n      const value2 = props[prop];\n      if (prop.startsWith(`${key}-`)) changes.push([prop, value2, false, prop.split(\"-\")]);\n    }\n  });\n  const memoized = __spreadValues({}, props);\n  if (localState != null && localState.memoizedProps && localState != null && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n  if (localState != null && localState.memoizedProps && localState != null && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n  return {\n    memoized,\n    changes\n  };\n}\nfunction applyProps$1(instance, data) {\n  var _instance$__r3f2;\n  const localState = instance.__r3f;\n  const root = localState == null ? void 0 : localState.root;\n  const rootState = root == null ? void 0 : root.getState == null ? void 0 : root.getState();\n  const {\n    memoized,\n    changes\n  } = isDiffSet(data) ? data : diffProps(instance, data);\n  const prevHandlers = localState == null ? void 0 : localState.eventCount;\n  if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n  for (let i2 = 0; i2 < changes.length; i2++) {\n    let [key, value, isEvent, keys] = changes[i2];\n    if (hasColorSpace(instance)) {\n      const sRGBEncoding = 3001;\n      const SRGBColorSpace2 = \"srgb\";\n      const LinearSRGBColorSpace2 = \"srgb-linear\";\n      if (key === \"encoding\") {\n        key = \"colorSpace\";\n        value = value === sRGBEncoding ? SRGBColorSpace2 : LinearSRGBColorSpace2;\n      } else if (key === \"outputEncoding\") {\n        key = \"outputColorSpace\";\n        value = value === sRGBEncoding ? SRGBColorSpace2 : LinearSRGBColorSpace2;\n      }\n    }\n    let currentInstance = instance;\n    let targetProp = currentInstance[key];\n    if (keys.length) {\n      targetProp = keys.reduce((acc, key2) => acc[key2], instance);\n      if (!(targetProp && targetProp.set)) {\n        const [name, ...reverseEntries] = keys.reverse();\n        currentInstance = reverseEntries.reverse().reduce((acc, key2) => acc[key2], instance);\n        key = name;\n      }\n    }\n    if (value === DEFAULT + \"remove\") {\n      if (currentInstance.constructor) {\n        let ctor = DEFAULTS.get(currentInstance.constructor);\n        if (!ctor) {\n          ctor = new currentInstance.constructor();\n          DEFAULTS.set(currentInstance.constructor, ctor);\n        }\n        value = ctor[key];\n      } else {\n        value = 0;\n      }\n    }\n    if (isEvent && localState) {\n      if (value) localState.handlers[key] = value;\n      else delete localState.handlers[key];\n      localState.eventCount = Object.keys(localState.handlers).length;\n    } else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof Layers)) {\n      if (Array.isArray(value)) {\n        if (targetProp.fromArray) targetProp.fromArray(value);\n        else targetProp.set(...value);\n      } else if (targetProp.copy && value && value.constructor && // Some environments may break strict identity checks by duplicating versions of three.js.\n      // Loosen to unminified names, ignoring descendents.\n      // https://github.com/pmndrs/react-three-fiber/issues/2856\n      // TODO: fix upstream and remove in v9\n      (__DEV__ ? targetProp.constructor.name === value.constructor.name : targetProp.constructor === value.constructor)) {\n        targetProp.copy(value);\n      } else if (value !== void 0) {\n        var _targetProp;\n        const isColor = (_targetProp = targetProp) == null ? void 0 : _targetProp.isColor;\n        if (!isColor && targetProp.setScalar) targetProp.setScalar(value);\n        else if (targetProp instanceof Layers && value instanceof Layers) targetProp.mask = value.mask;\n        else targetProp.set(value);\n        if (!getColorManagement() && rootState && !rootState.linear && isColor) targetProp.convertSRGBToLinear();\n      }\n    } else {\n      var _currentInstance$key;\n      currentInstance[key] = value;\n      if ((_currentInstance$key = currentInstance[key]) != null && _currentInstance$key.isTexture && // sRGB textures must be RGBA8 since r137 https://github.com/mrdoob/three.js/pull/23129\n      currentInstance[key].format === RGBAFormat && currentInstance[key].type === UnsignedByteType && rootState) {\n        const texture = currentInstance[key];\n        if (hasColorSpace(texture) && hasColorSpace(rootState.gl)) texture.colorSpace = rootState.gl.outputColorSpace;\n        else texture.encoding = rootState.gl.outputEncoding;\n      }\n    }\n    invalidateInstance(instance);\n  }\n  if (localState && localState.parent && instance.raycast && prevHandlers !== localState.eventCount) {\n    const internal = findInitialRoot(instance).getState().internal;\n    const index = internal.interaction.indexOf(instance);\n    if (index > -1) internal.interaction.splice(index, 1);\n    if (localState.eventCount) internal.interaction.push(instance);\n  }\n  const isCircular = changes.length === 1 && changes[0][0] === \"onUpdate\";\n  if (!isCircular && changes.length && (_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.parent) updateInstance(instance);\n  return instance;\n}\nfunction invalidateInstance(instance) {\n  var _instance$__r3f3, _instance$__r3f3$root;\n  const state = (_instance$__r3f3 = instance.__r3f) == null ? void 0 : (_instance$__r3f3$root = _instance$__r3f3.root) == null ? void 0 : _instance$__r3f3$root.getState == null ? void 0 : _instance$__r3f3$root.getState();\n  if (state && state.internal.frames === 0) state.invalidate();\n}\nfunction updateInstance(instance) {\n  instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n}\nfunction updateCamera(camera, size) {\n  if (!camera.manual) {\n    if (isOrthographicCamera(camera)) {\n      camera.left = size.width / -2;\n      camera.right = size.width / 2;\n      camera.top = size.height / 2;\n      camera.bottom = size.height / -2;\n    } else {\n      camera.aspect = size.width / size.height;\n    }\n    camera.updateProjectionMatrix();\n    camera.updateMatrixWorld();\n  }\n}\nfunction makeId(event) {\n  return (event.eventObject || event.object).uuid + \"/\" + event.index + event.instanceId;\n}\nfunction getEventPriority() {\n  var _globalScope$event;\n  const globalScope = typeof self !== \"undefined\" && self || typeof window !== \"undefined\" && window;\n  if (!globalScope) return DefaultEventPriority;\n  const name = (_globalScope$event = globalScope.event) == null ? void 0 : _globalScope$event.type;\n  switch (name) {\n    case \"click\":\n    case \"contextmenu\":\n    case \"dblclick\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n      return DiscreteEventPriority;\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n    case \"wheel\":\n      return ContinuousEventPriority;\n    default:\n      return DefaultEventPriority;\n  }\n}\nfunction releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {\n  const captureData = captures.get(obj);\n  if (captureData) {\n    captures.delete(obj);\n    if (captures.size === 0) {\n      capturedMap.delete(pointerId);\n      captureData.target.releasePointerCapture(pointerId);\n    }\n  }\n}\nfunction removeInteractivity(store, object) {\n  const {\n    internal\n  } = store.getState();\n  internal.interaction = internal.interaction.filter((o) => o !== object);\n  internal.initialHits = internal.initialHits.filter((o) => o !== object);\n  internal.hovered.forEach((value, key) => {\n    if (value.eventObject === object || value.object === object) {\n      internal.hovered.delete(key);\n    }\n  });\n  internal.capturedMap.forEach((captures, pointerId) => {\n    releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n  });\n}\nfunction createEvents(store) {\n  function calculateDistance(event) {\n    const {\n      internal\n    } = store.getState();\n    const dx = event.offsetX - internal.initialClick[0];\n    const dy = event.offsetY - internal.initialClick[1];\n    return Math.round(Math.sqrt(dx * dx + dy * dy));\n  }\n  function filterPointerEvents(objects) {\n    return objects.filter((obj) => [\"Move\", \"Over\", \"Enter\", \"Out\", \"Leave\"].some((name) => {\n      var _r3f;\n      return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers[\"onPointer\" + name];\n    }));\n  }\n  function intersect2(event, filter) {\n    const state = store.getState();\n    const duplicates = /* @__PURE__ */ new Set();\n    const intersections = [];\n    const eventsObjects = filter ? filter(state.internal.interaction) : state.internal.interaction;\n    for (let i2 = 0; i2 < eventsObjects.length; i2++) {\n      const state2 = getRootState(eventsObjects[i2]);\n      if (state2) {\n        state2.raycaster.camera = void 0;\n      }\n    }\n    if (!state.previousRoot) {\n      state.events.compute == null ? void 0 : state.events.compute(event, state);\n    }\n    function handleRaycast(obj) {\n      const state2 = getRootState(obj);\n      if (!state2 || !state2.events.enabled || state2.raycaster.camera === null) return [];\n      if (state2.raycaster.camera === void 0) {\n        var _state$previousRoot;\n        state2.events.compute == null ? void 0 : state2.events.compute(event, state2, (_state$previousRoot = state2.previousRoot) == null ? void 0 : _state$previousRoot.getState());\n        if (state2.raycaster.camera === void 0) state2.raycaster.camera = null;\n      }\n      return state2.raycaster.camera ? state2.raycaster.intersectObject(obj, true) : [];\n    }\n    let hits = eventsObjects.flatMap(handleRaycast).sort((a, b) => {\n      const aState = getRootState(a.object);\n      const bState = getRootState(b.object);\n      if (!aState || !bState) return a.distance - b.distance;\n      return bState.events.priority - aState.events.priority || a.distance - b.distance;\n    }).filter((item) => {\n      const id = makeId(item);\n      if (duplicates.has(id)) return false;\n      duplicates.add(id);\n      return true;\n    });\n    if (state.events.filter) hits = state.events.filter(hits, state);\n    for (const hit of hits) {\n      let eventObject = hit.object;\n      while (eventObject) {\n        var _r3f2;\n        if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push(__spreadProps(__spreadValues({}, hit), {\n          eventObject\n        }));\n        eventObject = eventObject.parent;\n      }\n    }\n    if (\"pointerId\" in event && state.internal.capturedMap.has(event.pointerId)) {\n      for (let captureData of state.internal.capturedMap.get(event.pointerId).values()) {\n        if (!duplicates.has(makeId(captureData.intersection))) intersections.push(captureData.intersection);\n      }\n    }\n    return intersections;\n  }\n  function handleIntersects(intersections, event, delta, callback) {\n    const rootState = store.getState();\n    if (intersections.length) {\n      const localState = {\n        stopped: false\n      };\n      for (const hit of intersections) {\n        const state = getRootState(hit.object) || rootState;\n        const {\n          raycaster,\n          pointer,\n          camera,\n          internal\n        } = state;\n        const unprojectedPoint = new Vector3(pointer.x, pointer.y, 0).unproject(camera);\n        const hasPointerCapture = (id) => {\n          var _internal$capturedMap, _internal$capturedMap2;\n          return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n        };\n        const setPointerCapture = (id) => {\n          const captureData = {\n            intersection: hit,\n            target: event.target\n          };\n          if (internal.capturedMap.has(id)) {\n            internal.capturedMap.get(id).set(hit.eventObject, captureData);\n          } else {\n            internal.capturedMap.set(id, /* @__PURE__ */ new Map([[hit.eventObject, captureData]]));\n          }\n          event.target.setPointerCapture(id);\n        };\n        const releasePointerCapture = (id) => {\n          const captures = internal.capturedMap.get(id);\n          if (captures) {\n            releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n          }\n        };\n        let extractEventProps = {};\n        for (let prop in event) {\n          let property = event[prop];\n          if (typeof property !== \"function\") extractEventProps[prop] = property;\n        }\n        let raycastEvent = __spreadProps(__spreadValues(__spreadValues({}, hit), extractEventProps), {\n          pointer,\n          intersections,\n          stopped: localState.stopped,\n          delta,\n          unprojectedPoint,\n          ray: raycaster.ray,\n          camera,\n          // Hijack stopPropagation, which just sets a flag\n          stopPropagation() {\n            const capturesForPointer = \"pointerId\" in event && internal.capturedMap.get(event.pointerId);\n            if (\n              // ...if this pointer hasn't been captured\n              !capturesForPointer || // ... or if the hit object is capturing the pointer\n              capturesForPointer.has(hit.eventObject)\n            ) {\n              raycastEvent.stopped = localState.stopped = true;\n              if (internal.hovered.size && Array.from(internal.hovered.values()).find((i2) => i2.eventObject === hit.eventObject)) {\n                const higher = intersections.slice(0, intersections.indexOf(hit));\n                cancelPointer([...higher, hit]);\n              }\n            }\n          },\n          // there should be a distinction between target and currentTarget\n          target: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture\n          },\n          currentTarget: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture\n          },\n          nativeEvent: event\n        });\n        callback(raycastEvent);\n        if (localState.stopped === true) break;\n      }\n    }\n    return intersections;\n  }\n  function cancelPointer(intersections) {\n    const {\n      internal\n    } = store.getState();\n    for (const hoveredObj of internal.hovered.values()) {\n      if (!intersections.length || !intersections.find((hit) => hit.object === hoveredObj.object && hit.index === hoveredObj.index && hit.instanceId === hoveredObj.instanceId)) {\n        const eventObject = hoveredObj.eventObject;\n        const instance = eventObject.__r3f;\n        const handlers = instance == null ? void 0 : instance.handlers;\n        internal.hovered.delete(makeId(hoveredObj));\n        if (instance != null && instance.eventCount) {\n          const data = __spreadProps(__spreadValues({}, hoveredObj), {\n            intersections\n          });\n          handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n          handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n        }\n      }\n    }\n  }\n  function pointerMissed(event, objects) {\n    for (let i2 = 0; i2 < objects.length; i2++) {\n      const instance = objects[i2].__r3f;\n      instance == null ? void 0 : instance.handlers.onPointerMissed == null ? void 0 : instance.handlers.onPointerMissed(event);\n    }\n  }\n  function handlePointer(name) {\n    switch (name) {\n      case \"onPointerLeave\":\n      case \"onPointerCancel\":\n        return () => cancelPointer([]);\n      case \"onLostPointerCapture\":\n        return (event) => {\n          const {\n            internal\n          } = store.getState();\n          if (\"pointerId\" in event && internal.capturedMap.has(event.pointerId)) {\n            requestAnimationFrame(() => {\n              if (internal.capturedMap.has(event.pointerId)) {\n                internal.capturedMap.delete(event.pointerId);\n                cancelPointer([]);\n              }\n            });\n          }\n        };\n    }\n    return function handleEvent(event) {\n      const {\n        onPointerMissed,\n        internal\n      } = store.getState();\n      internal.lastEvent.current = event;\n      const isPointerMove = name === \"onPointerMove\";\n      const isClickEvent = name === \"onClick\" || name === \"onContextMenu\" || name === \"onDoubleClick\";\n      const filter = isPointerMove ? filterPointerEvents : void 0;\n      const hits = intersect2(event, filter);\n      const delta = isClickEvent ? calculateDistance(event) : 0;\n      if (name === \"onPointerDown\") {\n        internal.initialClick = [event.offsetX, event.offsetY];\n        internal.initialHits = hits.map((hit) => hit.eventObject);\n      }\n      if (isClickEvent && !hits.length) {\n        if (delta <= 2) {\n          pointerMissed(event, internal.interaction);\n          if (onPointerMissed) onPointerMissed(event);\n        }\n      }\n      if (isPointerMove) cancelPointer(hits);\n      function onIntersect(data) {\n        const eventObject = data.eventObject;\n        const instance = eventObject.__r3f;\n        const handlers = instance == null ? void 0 : instance.handlers;\n        if (!(instance != null && instance.eventCount)) return;\n        if (isPointerMove) {\n          if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n            const id = makeId(data);\n            const hoveredItem = internal.hovered.get(id);\n            if (!hoveredItem) {\n              internal.hovered.set(id, data);\n              handlers.onPointerOver == null ? void 0 : handlers.onPointerOver(data);\n              handlers.onPointerEnter == null ? void 0 : handlers.onPointerEnter(data);\n            } else if (hoveredItem.stopped) {\n              data.stopPropagation();\n            }\n          }\n          handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n        } else {\n          const handler = handlers[name];\n          if (handler) {\n            if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n              pointerMissed(event, internal.interaction.filter((object) => !internal.initialHits.includes(object)));\n              handler(data);\n            }\n          } else {\n            if (isClickEvent && internal.initialHits.includes(eventObject)) {\n              pointerMissed(event, internal.interaction.filter((object) => !internal.initialHits.includes(object)));\n            }\n          }\n        }\n      }\n      handleIntersects(hits, event, delta, onIntersect);\n    };\n  }\n  return {\n    handlePointer\n  };\n}\nfunction run(effects, timestamp) {\n  if (!effects.size) return;\n  for (const {\n    callback\n  } of effects.values()) {\n    callback(timestamp);\n  }\n}\nfunction flushGlobalEffects(type, timestamp) {\n  switch (type) {\n    case \"before\":\n      return run(globalEffects, timestamp);\n    case \"after\":\n      return run(globalAfterEffects, timestamp);\n    case \"tail\":\n      return run(globalTailEffects, timestamp);\n  }\n}\nfunction render$1(timestamp, state, frame) {\n  let delta = state.clock.getDelta();\n  if (state.frameloop === \"never\" && typeof timestamp === \"number\") {\n    delta = timestamp - state.clock.elapsedTime;\n    state.clock.oldTime = state.clock.elapsedTime;\n    state.clock.elapsedTime = timestamp;\n  }\n  subscribers = state.internal.subscribers;\n  for (i = 0; i < subscribers.length; i++) {\n    subscription = subscribers[i];\n    subscription.ref.current(subscription.store.getState(), delta, frame);\n  }\n  if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera);\n  state.internal.frames = Math.max(0, state.internal.frames - 1);\n  return state.frameloop === \"always\" ? 1 : state.internal.frames;\n}\nfunction createLoop(roots2) {\n  let running = false;\n  let useFrameInProgress = false;\n  let repeat;\n  let frame;\n  let state;\n  function loop(timestamp) {\n    frame = requestAnimationFrame(loop);\n    running = true;\n    repeat = 0;\n    flushGlobalEffects(\"before\", timestamp);\n    useFrameInProgress = true;\n    for (const root of roots2.values()) {\n      var _state$gl$xr;\n      state = root.store.getState();\n      if (state.internal.active && (state.frameloop === \"always\" || state.internal.frames > 0) && !((_state$gl$xr = state.gl.xr) != null && _state$gl$xr.isPresenting)) {\n        repeat += render$1(timestamp, state);\n      }\n    }\n    useFrameInProgress = false;\n    flushGlobalEffects(\"after\", timestamp);\n    if (repeat === 0) {\n      flushGlobalEffects(\"tail\", timestamp);\n      running = false;\n      return cancelAnimationFrame(frame);\n    }\n  }\n  function invalidate2(state2, frames = 1) {\n    var _state$gl$xr2;\n    if (!state2) return roots2.forEach((root) => invalidate2(root.store.getState(), frames));\n    if ((_state$gl$xr2 = state2.gl.xr) != null && _state$gl$xr2.isPresenting || !state2.internal.active || state2.frameloop === \"never\") return;\n    if (frames > 1) {\n      state2.internal.frames = Math.min(60, state2.internal.frames + frames);\n    } else {\n      if (useFrameInProgress) {\n        state2.internal.frames = 2;\n      } else {\n        state2.internal.frames = 1;\n      }\n    }\n    if (!running) {\n      running = true;\n      requestAnimationFrame(loop);\n    }\n  }\n  function advance2(timestamp, runGlobalEffects = true, state2, frame2) {\n    if (runGlobalEffects) flushGlobalEffects(\"before\", timestamp);\n    if (!state2) for (const root of roots2.values()) render$1(timestamp, root.store.getState());\n    else render$1(timestamp, state2, frame2);\n    if (runGlobalEffects) flushGlobalEffects(\"after\", timestamp);\n  }\n  return {\n    loop,\n    invalidate: invalidate2,\n    advance: advance2\n  };\n}\nfunction useStore() {\n  const store = React.useContext(context);\n  if (!store) throw new Error(\"R3F: Hooks can only be used within the Canvas component!\");\n  return store;\n}\nfunction useThree(selector = (state) => state, equalityFn) {\n  return useStore()(selector, equalityFn);\n}\nfunction useFrame(callback, renderPriority = 0) {\n  const store = useStore();\n  const subscribe = store.getState().internal.subscribe;\n  const ref = useMutableCallback(callback);\n  useIsomorphicLayoutEffect2(() => subscribe(ref, renderPriority, store), [renderPriority, subscribe, store]);\n  return null;\n}\nfunction loadingFn(extensions, onProgress) {\n  return function(Proto, ...input) {\n    let loader = memoizedLoaders.get(Proto);\n    if (!loader) {\n      loader = new Proto();\n      memoizedLoaders.set(Proto, loader);\n    }\n    if (extensions) extensions(loader);\n    return Promise.all(input.map((input2) => new Promise((res, reject) => loader.load(input2, (data) => {\n      if (data.scene) Object.assign(data, buildGraph(data.scene));\n      res(data);\n    }, onProgress, (error2) => reject(new Error(`Could not load ${input2}: ${error2 == null ? void 0 : error2.message}`))))));\n  };\n}\nfunction useLoader(Proto, input, extensions, onProgress) {\n  const keys = Array.isArray(input) ? input : [input];\n  const results = suspend(loadingFn(extensions, onProgress), [Proto, ...keys], {\n    equal: is.equ\n  });\n  return Array.isArray(input) ? results : results[0];\n}\nfunction computeInitialSize(canvas, defaultSize) {\n  const defaultStyle = typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement;\n  if (defaultSize) {\n    const {\n      width,\n      height,\n      top,\n      left,\n      updateStyle = defaultStyle\n    } = defaultSize;\n    return {\n      width,\n      height,\n      top,\n      left,\n      updateStyle\n    };\n  } else if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement && canvas.parentElement) {\n    const {\n      width,\n      height,\n      top,\n      left\n    } = canvas.parentElement.getBoundingClientRect();\n    return {\n      width,\n      height,\n      top,\n      left,\n      updateStyle: defaultStyle\n    };\n  } else if (typeof OffscreenCanvas !== \"undefined\" && canvas instanceof OffscreenCanvas) {\n    return {\n      width: canvas.width,\n      height: canvas.height,\n      top: 0,\n      left: 0,\n      updateStyle: defaultStyle\n    };\n  }\n  return {\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  };\n}\nfunction createRoot(canvas) {\n  const prevRoot = roots.get(canvas);\n  const prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;\n  const prevStore = prevRoot == null ? void 0 : prevRoot.store;\n  if (prevRoot) console.warn(\"R3F.createRoot should only be called once!\");\n  const logRecoverableError = typeof reportError === \"function\" ? (\n    // In modern browsers, reportError will dispatch an error event,\n    // emulating an uncaught JavaScript error.\n    reportError\n  ) : (\n    // In older browsers and test environments, fallback to console.error.\n    console.error\n  );\n  const store = prevStore || createStore2(invalidate, advance);\n  const fiber = prevFiber || reconciler.createContainer(store, ConcurrentRoot, null, false, null, \"\", logRecoverableError, null);\n  if (!prevRoot) roots.set(canvas, {\n    fiber,\n    store\n  });\n  let onCreated;\n  let configured = false;\n  let lastCamera;\n  return {\n    configure(props = {}) {\n      let {\n        gl: glConfig,\n        size: propsSize,\n        scene: sceneOptions,\n        events,\n        onCreated: onCreatedCallback,\n        shadows = false,\n        linear = false,\n        flat = false,\n        legacy = false,\n        orthographic = false,\n        frameloop = \"always\",\n        dpr = [1, 2],\n        performance: performance2,\n        raycaster: raycastOptions,\n        camera: cameraOptions,\n        onPointerMissed\n      } = props;\n      let state = store.getState();\n      let gl = state.gl;\n      if (!state.gl) state.set({\n        gl: gl = createRendererInstance(glConfig, canvas)\n      });\n      let raycaster = state.raycaster;\n      if (!raycaster) state.set({\n        raycaster: raycaster = new Raycaster()\n      });\n      const _a22 = raycastOptions || {}, {\n        params\n      } = _a22, options = __objRest(_a22, [\n        \"params\"\n      ]);\n      if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, __spreadValues({}, options));\n      if (!is.equ(params, raycaster.params, shallowLoose)) applyProps(raycaster, {\n        params: __spreadValues(__spreadValues({}, raycaster.params), params)\n      });\n      if (!state.camera || state.camera === lastCamera && !is.equ(lastCamera, cameraOptions, shallowLoose)) {\n        lastCamera = cameraOptions;\n        const isCamera = cameraOptions instanceof Camera;\n        const camera = isCamera ? cameraOptions : orthographic ? new OrthographicCamera(0, 0, 0, 0, 0.1, 1e3) : new PerspectiveCamera(75, 0, 0.1, 1e3);\n        if (!isCamera) {\n          camera.position.z = 5;\n          if (cameraOptions) {\n            applyProps(camera, cameraOptions);\n            if (\"aspect\" in cameraOptions || \"left\" in cameraOptions || \"right\" in cameraOptions || \"bottom\" in cameraOptions || \"top\" in cameraOptions) {\n              camera.manual = true;\n              camera.updateProjectionMatrix();\n            }\n          }\n          if (!state.camera && !(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n        }\n        state.set({\n          camera\n        });\n        raycaster.camera = camera;\n      }\n      if (!state.scene) {\n        let scene;\n        if (sceneOptions != null && sceneOptions.isScene) {\n          scene = sceneOptions;\n        } else {\n          scene = new Scene();\n          if (sceneOptions) applyProps(scene, sceneOptions);\n        }\n        state.set({\n          scene: prepare(scene)\n        });\n      }\n      if (!state.xr) {\n        var _gl$xr;\n        const handleXRFrame = (timestamp, frame) => {\n          const state2 = store.getState();\n          if (state2.frameloop === \"never\") return;\n          advance(timestamp, true, state2, frame);\n        };\n        const handleSessionChange = () => {\n          const state2 = store.getState();\n          state2.gl.xr.enabled = state2.gl.xr.isPresenting;\n          state2.gl.xr.setAnimationLoop(state2.gl.xr.isPresenting ? handleXRFrame : null);\n          if (!state2.gl.xr.isPresenting) invalidate(state2);\n        };\n        const xr = {\n          connect() {\n            const gl2 = store.getState().gl;\n            gl2.xr.addEventListener(\"sessionstart\", handleSessionChange);\n            gl2.xr.addEventListener(\"sessionend\", handleSessionChange);\n          },\n          disconnect() {\n            const gl2 = store.getState().gl;\n            gl2.xr.removeEventListener(\"sessionstart\", handleSessionChange);\n            gl2.xr.removeEventListener(\"sessionend\", handleSessionChange);\n          }\n        };\n        if (typeof ((_gl$xr = gl.xr) == null ? void 0 : _gl$xr.addEventListener) === \"function\") xr.connect();\n        state.set({\n          xr\n        });\n      }\n      if (gl.shadowMap) {\n        const oldEnabled = gl.shadowMap.enabled;\n        const oldType = gl.shadowMap.type;\n        gl.shadowMap.enabled = !!shadows;\n        if (is.boo(shadows)) {\n          gl.shadowMap.type = PCFSoftShadowMap;\n        } else if (is.str(shadows)) {\n          var _types$shadows;\n          const types = {\n            basic: BasicShadowMap,\n            percentage: PCFShadowMap,\n            soft: PCFSoftShadowMap,\n            variance: VSMShadowMap\n          };\n          gl.shadowMap.type = (_types$shadows = types[shadows]) != null ? _types$shadows : PCFSoftShadowMap;\n        } else if (is.obj(shadows)) {\n          Object.assign(gl.shadowMap, shadows);\n        }\n        if (oldEnabled !== gl.shadowMap.enabled || oldType !== gl.shadowMap.type) gl.shadowMap.needsUpdate = true;\n      }\n      const ColorManagement2 = getColorManagement();\n      if (ColorManagement2) {\n        if (\"enabled\" in ColorManagement2) ColorManagement2.enabled = !legacy;\n        else if (\"legacyMode\" in ColorManagement2) ColorManagement2.legacyMode = legacy;\n      }\n      if (!configured) {\n        const LinearEncoding = 3e3;\n        const sRGBEncoding = 3001;\n        applyProps(gl, {\n          outputEncoding: linear ? LinearEncoding : sRGBEncoding,\n          toneMapping: flat ? NoToneMapping : ACESFilmicToneMapping\n        });\n      }\n      if (state.legacy !== legacy) state.set(() => ({\n        legacy\n      }));\n      if (state.linear !== linear) state.set(() => ({\n        linear\n      }));\n      if (state.flat !== flat) state.set(() => ({\n        flat\n      }));\n      if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, gl, shallowLoose)) applyProps(gl, glConfig);\n      if (events && !state.events.handlers) state.set({\n        events: events(store)\n      });\n      const size = computeInitialSize(canvas, propsSize);\n      if (!is.equ(size, state.size, shallowLoose)) {\n        state.setSize(size.width, size.height, size.updateStyle, size.top, size.left);\n      }\n      if (dpr && state.viewport.dpr !== calculateDpr(dpr)) state.setDpr(dpr);\n      if (state.frameloop !== frameloop) state.setFrameloop(frameloop);\n      if (!state.onPointerMissed) state.set({\n        onPointerMissed\n      });\n      if (performance2 && !is.equ(performance2, state.performance, shallowLoose)) state.set((state2) => ({\n        performance: __spreadValues(__spreadValues({}, state2.performance), performance2)\n      }));\n      onCreated = onCreatedCallback;\n      configured = true;\n      return this;\n    },\n    render(children) {\n      if (!configured) this.configure();\n      reconciler.updateContainer(/* @__PURE__ */ jsx2(Provider, {\n        store,\n        children,\n        onCreated,\n        rootElement: canvas\n      }), fiber, null, () => void 0);\n      return store;\n    },\n    unmount() {\n      unmountComponentAtNode(canvas);\n    }\n  };\n}\nfunction Provider({\n  store,\n  children,\n  onCreated,\n  rootElement\n}) {\n  useIsomorphicLayoutEffect2(() => {\n    const state = store.getState();\n    state.set((state2) => ({\n      internal: __spreadProps(__spreadValues({}, state2.internal), {\n        active: true\n      })\n    }));\n    if (onCreated) onCreated(state);\n    if (!store.getState().events.connected) state.events.connect == null ? void 0 : state.events.connect(rootElement);\n  }, []);\n  return /* @__PURE__ */ jsx2(context.Provider, {\n    value: store,\n    children\n  });\n}\nfunction unmountComponentAtNode(canvas, callback) {\n  const root = roots.get(canvas);\n  const fiber = root == null ? void 0 : root.fiber;\n  if (fiber) {\n    const state = root == null ? void 0 : root.store.getState();\n    if (state) state.internal.active = false;\n    reconciler.updateContainer(null, fiber, null, () => {\n      if (state) {\n        setTimeout(() => {\n          try {\n            var _state$gl, _state$gl$renderLists, _state$gl2, _state$gl3;\n            state.events.disconnect == null ? void 0 : state.events.disconnect();\n            (_state$gl = state.gl) == null ? void 0 : (_state$gl$renderLists = _state$gl.renderLists) == null ? void 0 : _state$gl$renderLists.dispose == null ? void 0 : _state$gl$renderLists.dispose();\n            (_state$gl2 = state.gl) == null ? void 0 : _state$gl2.forceContextLoss == null ? void 0 : _state$gl2.forceContextLoss();\n            if ((_state$gl3 = state.gl) != null && _state$gl3.xr) state.xr.disconnect();\n            dispose(state);\n            roots.delete(canvas);\n            if (callback) callback(canvas);\n          } catch (e) {\n          }\n        }, 500);\n      }\n    });\n  }\n}\nfunction createPortal(children, container, state) {\n  return /* @__PURE__ */ jsx2(Portal, {\n    children,\n    container,\n    state\n  }, container.uuid);\n}\nfunction Portal({\n  state = {},\n  children,\n  container\n}) {\n  const _a22 = state, {\n    events,\n    size\n  } = _a22, rest = __objRest(_a22, [\n    \"events\",\n    \"size\"\n  ]);\n  const previousRoot = useStore();\n  const [raycaster] = React.useState(() => new Raycaster());\n  const [pointer] = React.useState(() => new Vector2());\n  const inject = React.useCallback(\n    (rootState, injectState) => {\n      const intersect2 = __spreadValues({}, rootState);\n      Object.keys(rootState).forEach((key) => {\n        if (\n          // Some props should be off-limits\n          privateKeys.includes(key) || // Otherwise filter out the props that are different and let the inject layer take precedence\n          // Unless the inject layer props is undefined, then we keep the root layer\n          rootState[key] !== injectState[key] && injectState[key]\n        ) {\n          delete intersect2[key];\n        }\n      });\n      let viewport = void 0;\n      if (injectState && size) {\n        const camera = injectState.camera;\n        viewport = rootState.viewport.getCurrentViewport(camera, new Vector3(), size);\n        if (camera !== rootState.camera) updateCamera(camera, size);\n      }\n      return __spreadValues(__spreadProps(__spreadValues({}, intersect2), {\n        // Portals have their own scene, which forms the root, a raycaster and a pointer\n        scene: container,\n        raycaster,\n        pointer,\n        mouse: pointer,\n        // Their previous root is the layer before it\n        previousRoot,\n        // Events, size and viewport can be overridden by the inject layer\n        events: __spreadValues(__spreadValues(__spreadValues({}, rootState.events), injectState == null ? void 0 : injectState.events), events),\n        size: __spreadValues(__spreadValues({}, rootState.size), size),\n        viewport: __spreadValues(__spreadValues({}, rootState.viewport), viewport)\n      }), rest);\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [state]\n  );\n  const [usePortalStore] = React.useState(() => {\n    const previousState = previousRoot.getState();\n    const store = create((set, get) => __spreadProps(__spreadValues(__spreadProps(__spreadValues({}, previousState), {\n      scene: container,\n      raycaster,\n      pointer,\n      mouse: pointer,\n      previousRoot,\n      events: __spreadValues(__spreadValues({}, previousState.events), events),\n      size: __spreadValues(__spreadValues({}, previousState.size), size)\n    }), rest), {\n      // Set and get refer to this root-state\n      set,\n      get,\n      // Layers are allowed to override events\n      setEvents: (events2) => set((state2) => __spreadProps(__spreadValues({}, state2), {\n        events: __spreadValues(__spreadValues({}, state2.events), events2)\n      }))\n    }));\n    return store;\n  });\n  React.useEffect(() => {\n    const unsub = previousRoot.subscribe((prev) => usePortalStore.setState((state2) => inject(prev, state2)));\n    return () => {\n      unsub();\n    };\n  }, [inject]);\n  React.useEffect(() => {\n    usePortalStore.setState((injectState) => inject(previousRoot.getState(), injectState));\n  }, [inject]);\n  React.useEffect(() => {\n    return () => {\n      usePortalStore.destroy();\n    };\n  }, []);\n  return /* @__PURE__ */ jsx2(Fragment2, {\n    children: reconciler.createPortal(/* @__PURE__ */ jsx2(context.Provider, {\n      value: usePortalStore,\n      children\n    }), usePortalStore, null)\n  });\n}\nfunction createPointerEvents(store) {\n  const {\n    handlePointer\n  } = createEvents(store);\n  return {\n    priority: 1,\n    enabled: true,\n    compute(event, state, previous) {\n      state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n      state.raycaster.setFromCamera(state.pointer, state.camera);\n    },\n    connected: void 0,\n    handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => __spreadProps(__spreadValues({}, acc), {\n      [key]: handlePointer(key)\n    }), {}),\n    update: () => {\n      var _internal$lastEvent;\n      const {\n        events,\n        internal\n      } = store.getState();\n      if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);\n    },\n    connect: (target2) => {\n      var _events$handlers;\n      const {\n        set,\n        events\n      } = store.getState();\n      events.disconnect == null ? void 0 : events.disconnect();\n      set((state) => ({\n        events: __spreadProps(__spreadValues({}, state.events), {\n          connected: target2\n        })\n      }));\n      Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n        const [eventName, passive] = DOM_EVENTS[name];\n        target2.addEventListener(eventName, event, {\n          passive\n        });\n      });\n    },\n    disconnect: () => {\n      const {\n        set,\n        events\n      } = store.getState();\n      if (events.connected) {\n        var _events$handlers2;\n        Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n          if (events && events.connected instanceof HTMLElement) {\n            const [eventName] = DOM_EVENTS[name];\n            events.connected.removeEventListener(eventName, event);\n          }\n        });\n        set((state) => ({\n          events: __spreadProps(__spreadValues({}, state.events), {\n            connected: void 0\n          })\n        }));\n      }\n    }\n  };\n}\nfunction g2(n, t2) {\n  let o;\n  return (...i2) => {\n    window.clearTimeout(o), o = window.setTimeout(() => n(...i2), t2);\n  };\n}\nfunction j({ debounce: n, scroll: t2, polyfill: o, offsetSize: i2 } = { debounce: 0, scroll: false, offsetSize: false }) {\n  const a = o || (typeof window == \"undefined\" ? class {\n  } : window.ResizeObserver);\n  if (!a) throw new Error(\"This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills\");\n  const [c, h2] = T({ left: 0, top: 0, width: 0, height: 0, bottom: 0, right: 0, x: 0, y: 0 }), e = p({ element: null, scrollContainers: null, resizeObserver: null, lastBounds: c, orientationHandler: null }), d = n ? typeof n == \"number\" ? n : n.scroll : null, f2 = n ? typeof n == \"number\" ? n : n.resize : null, w = p(false);\n  u2(() => (w.current = true, () => void (w.current = false)));\n  const [z2, m, s] = M2(() => {\n    const r2 = () => {\n      if (!e.current.element) return;\n      const { left: y2, top: C, width: H2, height: O2, bottom: S2, right: x, x: B2, y: R2 } = e.current.element.getBoundingClientRect(), l2 = { left: y2, top: C, width: H2, height: O2, bottom: S2, right: x, x: B2, y: R2 };\n      e.current.element instanceof HTMLElement && i2 && (l2.height = e.current.element.offsetHeight, l2.width = e.current.element.offsetWidth), Object.freeze(l2), w.current && !D2(e.current.lastBounds, l2) && h2(e.current.lastBounds = l2);\n    };\n    return [r2, f2 ? g2(r2, f2) : r2, d ? g2(r2, d) : r2];\n  }, [h2, i2, d, f2]);\n  function v2() {\n    e.current.scrollContainers && (e.current.scrollContainers.forEach((r2) => r2.removeEventListener(\"scroll\", s, true)), e.current.scrollContainers = null), e.current.resizeObserver && (e.current.resizeObserver.disconnect(), e.current.resizeObserver = null), e.current.orientationHandler && (\"orientation\" in screen && \"removeEventListener\" in screen.orientation ? screen.orientation.removeEventListener(\"change\", e.current.orientationHandler) : \"onorientationchange\" in window && window.removeEventListener(\"orientationchange\", e.current.orientationHandler));\n  }\n  function b() {\n    e.current.element && (e.current.resizeObserver = new a(s), e.current.resizeObserver.observe(e.current.element), t2 && e.current.scrollContainers && e.current.scrollContainers.forEach((r2) => r2.addEventListener(\"scroll\", s, { capture: true, passive: true })), e.current.orientationHandler = () => {\n      s();\n    }, \"orientation\" in screen && \"addEventListener\" in screen.orientation ? screen.orientation.addEventListener(\"change\", e.current.orientationHandler) : \"onorientationchange\" in window && window.addEventListener(\"orientationchange\", e.current.orientationHandler));\n  }\n  const L2 = (r2) => {\n    !r2 || r2 === e.current.element || (v2(), e.current.element = r2, e.current.scrollContainers = E2(r2), b());\n  };\n  return X(s, !!t2), W(m), u2(() => {\n    v2(), b();\n  }, [t2, s, m]), u2(() => v2, []), [L2, c, z2];\n}\nfunction W(n) {\n  u2(() => {\n    const t2 = n;\n    return window.addEventListener(\"resize\", t2), () => void window.removeEventListener(\"resize\", t2);\n  }, [n]);\n}\nfunction X(n, t2) {\n  u2(() => {\n    if (t2) {\n      const o = n;\n      return window.addEventListener(\"scroll\", o, { capture: true, passive: true }), () => void window.removeEventListener(\"scroll\", o, true);\n    }\n  }, [n, t2]);\n}\nfunction E2(n) {\n  const t2 = [];\n  if (!n || n === document.body) return t2;\n  const { overflow: o, overflowX: i2, overflowY: a } = window.getComputedStyle(n);\n  return [o, i2, a].some((c) => c === \"auto\" || c === \"scroll\") && t2.push(n), [...t2, ...E2(n.parentElement)];\n}\nfunction traverseFiber(fiber, ascending, selector) {\n  if (!fiber)\n    return;\n  if (selector(fiber) === true)\n    return fiber;\n  let child = ascending ? fiber.return : fiber.child;\n  while (child) {\n    const match = traverseFiber(child, ascending, selector);\n    if (match)\n      return match;\n    child = ascending ? null : child.sibling;\n  }\n}\nfunction wrapContext(context2) {\n  try {\n    return Object.defineProperties(context2, {\n      _currentRenderer: {\n        get() {\n          return null;\n        },\n        set() {\n        }\n      },\n      _currentRenderer2: {\n        get() {\n          return null;\n        },\n        set() {\n        }\n      }\n    });\n  } catch (_) {\n    return context2;\n  }\n}\nfunction useFiber() {\n  const root = React2.useContext(FiberContext);\n  if (root === null)\n    throw new Error(\"its-fine: useFiber must be called within a <FiberProvider />!\");\n  const id = React2.useId();\n  const fiber = React2.useMemo(() => {\n    for (const maybeFiber of [root, root == null ? void 0 : root.alternate]) {\n      if (!maybeFiber)\n        continue;\n      const fiber2 = traverseFiber(maybeFiber, false, (node) => {\n        let state = node.memoizedState;\n        while (state) {\n          if (state.memoizedState === id)\n            return true;\n          state = state.next;\n        }\n      });\n      if (fiber2)\n        return fiber2;\n    }\n  }, [root, id]);\n  return fiber;\n}\nfunction useContextMap() {\n  const fiber = useFiber();\n  const [contextMap] = React2.useState(() => /* @__PURE__ */ new Map());\n  contextMap.clear();\n  let node = fiber;\n  while (node) {\n    if (node.type && typeof node.type === \"object\") {\n      const enableRenderableContext = node.type._context === void 0 && node.type.Provider === node.type;\n      const context2 = enableRenderableContext ? node.type : node.type._context;\n      if (context2 && context2 !== FiberContext && !contextMap.has(context2)) {\n        contextMap.set(context2, React2.useContext(wrapContext(context2)));\n      }\n    }\n    node = node.return;\n  }\n  return contextMap;\n}\nfunction useContextBridge() {\n  const contextMap = useContextMap();\n  return React2.useMemo(\n    () => Array.from(contextMap.keys()).reduce(\n      (Prev, context2) => (props) => /* @__PURE__ */ React2.createElement(Prev, null, /* @__PURE__ */ React2.createElement(context2.Provider, __spreadProps2(__spreadValues2({}, props), {\n        value: contextMap.get(context2)\n      }))),\n      (props) => /* @__PURE__ */ React2.createElement(FiberProvider, __spreadValues2({}, props))\n    ),\n    [contextMap]\n  );\n}\nvar isSSR, useIsomorphicLayoutEffect, isPromise, globalCache, suspend, preload, clear, scheduler_development_exports, exports, module, __export0, __export1, __export2, __export3, __export4, __export5, __export6, __export7, __export8, __export9, __export10, __export11, __export12, __export13, __export14, __export15, __export16, __export17, __export18, scheduler_development_default, exports2, module2, l, p2, q, r, t, u, v, y, z, A, B, D, E, F, N, O, L, P, Q, S, T2, U, __export02, __export19, __export22, __export32, __export42, __export52, __export62, __export72, __export82, __export92, __export102, __export112, __export122, __export132, __export142, __export152, __export162, __export172, __export182, scheduler_production_min_default, global, exports3, module3, scheduler_default, catalogue, extend, _window$document, _window$navigator, hasColorSpace, getColorManagement, isOrthographicCamera, isRef, useIsomorphicLayoutEffect2, ErrorBoundary, DEFAULT, DEFAULTS, isDiffSet, getRootState, is, INDEX_REGEX, __DEV__, privateKeys, isRenderer, context, createStore2, i, globalEffects, globalAfterEffects, globalTailEffects, subscribers, subscription, memoizedLoaders, roots, invalidate, advance, reconciler, applyProps, shallowLoose, createRendererInstance, DOM_EVENTS, k2, D2, __defProp2, __defProps2, __getOwnPropDescs2, __getOwnPropSymbols2, __hasOwnProp2, __propIsEnum2, __defNormalProp2, __spreadValues2, __spreadProps2, _a, _b, useIsomorphicLayoutEffect3, error, FiberContext, FiberProvider, CanvasImpl, Canvas2;\nvar init_chunk_73SH6GTX = __esm({\n  \"../shadergradient/dist/chunk-73SH6GTX.mjs\"() {\n    init_chunk_BT6X4JN2();\n    init_chunk_5BEQP2BQ();\n    isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n    useIsomorphicLayoutEffect = isSSR ? useEffect2 : useLayoutEffect2;\n    isPromise = (promise) => typeof promise === \"object\" && typeof promise.then === \"function\";\n    globalCache = [];\n    suspend = (fn, keys, config) => query(fn, keys, false, config);\n    preload = (fn, keys, config) => void query(fn, keys, true, config);\n    clear = (keys) => {\n      if (keys === void 0 || keys.length === 0) globalCache.splice(0, globalCache.length);\n      else {\n        const entry = globalCache.find((entry2) => shallowEqualArrays(keys, entry2.keys, entry2.equal));\n        if (entry) entry.remove();\n      }\n    };\n    scheduler_development_exports = {};\n    __export(scheduler_development_exports, {\n      default: () => scheduler_development_default,\n      unstable_IdlePriority: () => __export1,\n      unstable_ImmediatePriority: () => __export2,\n      unstable_LowPriority: () => __export3,\n      unstable_NormalPriority: () => __export4,\n      unstable_Profiling: () => __export5,\n      unstable_UserBlockingPriority: () => __export6,\n      unstable_cancelCallback: () => __export7,\n      unstable_continueExecution: () => __export8,\n      unstable_forceFrameRate: () => __export9,\n      unstable_getCurrentPriorityLevel: () => __export10,\n      unstable_getFirstCallbackNode: () => __export11,\n      unstable_next: () => __export12,\n      unstable_now: () => __export0,\n      unstable_pauseExecution: () => __export13,\n      unstable_requestPaint: () => __export14,\n      unstable_runWithPriority: () => __export15,\n      unstable_scheduleCallback: () => __export16,\n      unstable_shouldYield: () => __export17,\n      unstable_wrapCallback: () => __export18\n    });\n    exports = {};\n    module = {\n      get exports() {\n        return exports;\n      },\n      set exports(value) {\n        exports = value;\n      }\n    };\n    if (true) {\n      (function() {\n        \"use strict\";\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n        }\n        var enableSchedulerDebugging = false;\n        var enableProfiling = false;\n        var frameYieldMs = 5;\n        function push(heap, node) {\n          var index = heap.length;\n          heap.push(node);\n          siftUp(heap, node, index);\n        }\n        function peek(heap) {\n          return heap.length === 0 ? null : heap[0];\n        }\n        function pop(heap) {\n          if (heap.length === 0) {\n            return null;\n          }\n          var first = heap[0];\n          var last = heap.pop();\n          if (last !== first) {\n            heap[0] = last;\n            siftDown(heap, last, 0);\n          }\n          return first;\n        }\n        function siftUp(heap, node, i2) {\n          var index = i2;\n          while (index > 0) {\n            var parentIndex = index - 1 >>> 1;\n            var parent = heap[parentIndex];\n            if (compare(parent, node) > 0) {\n              heap[parentIndex] = node;\n              heap[index] = parent;\n              index = parentIndex;\n            } else {\n              return;\n            }\n          }\n        }\n        function siftDown(heap, node, i2) {\n          var index = i2;\n          var length = heap.length;\n          var halfLength = length >>> 1;\n          while (index < halfLength) {\n            var leftIndex = (index + 1) * 2 - 1;\n            var left = heap[leftIndex];\n            var rightIndex = leftIndex + 1;\n            var right = heap[rightIndex];\n            if (compare(left, node) < 0) {\n              if (rightIndex < length && compare(right, left) < 0) {\n                heap[index] = right;\n                heap[rightIndex] = node;\n                index = rightIndex;\n              } else {\n                heap[index] = left;\n                heap[leftIndex] = node;\n                index = leftIndex;\n              }\n            } else if (rightIndex < length && compare(right, node) < 0) {\n              heap[index] = right;\n              heap[rightIndex] = node;\n              index = rightIndex;\n            } else {\n              return;\n            }\n          }\n        }\n        function compare(a, b) {\n          var diff = a.sortIndex - b.sortIndex;\n          return diff !== 0 ? diff : a.id - b.id;\n        }\n        var ImmediatePriority = 1;\n        var UserBlockingPriority = 2;\n        var NormalPriority = 3;\n        var LowPriority = 4;\n        var IdlePriority = 5;\n        function markTaskErrored(task, ms) {\n        }\n        var hasPerformanceNow = typeof performance === \"object\" && typeof performance.now === \"function\";\n        if (hasPerformanceNow) {\n          var localPerformance = performance;\n          exports.unstable_now = function() {\n            return localPerformance.now();\n          };\n        } else {\n          var localDate = Date;\n          var initialTime = localDate.now();\n          exports.unstable_now = function() {\n            return localDate.now() - initialTime;\n          };\n        }\n        var maxSigned31BitInt = 1073741823;\n        var IMMEDIATE_PRIORITY_TIMEOUT = -1;\n        var USER_BLOCKING_PRIORITY_TIMEOUT = 250;\n        var NORMAL_PRIORITY_TIMEOUT = 5e3;\n        var LOW_PRIORITY_TIMEOUT = 1e4;\n        var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt;\n        var taskQueue = [];\n        var timerQueue = [];\n        var taskIdCounter = 1;\n        var currentTask = null;\n        var currentPriorityLevel = NormalPriority;\n        var isPerformingWork = false;\n        var isHostCallbackScheduled = false;\n        var isHostTimeoutScheduled = false;\n        var localSetTimeout = typeof setTimeout === \"function\" ? setTimeout : null;\n        var localClearTimeout = typeof clearTimeout === \"function\" ? clearTimeout : null;\n        var localSetImmediate = typeof setImmediate !== \"undefined\" ? setImmediate : null;\n        var isInputPending = typeof navigator !== \"undefined\" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n        function advanceTimers(currentTime) {\n          var timer = peek(timerQueue);\n          while (timer !== null) {\n            if (timer.callback === null) {\n              pop(timerQueue);\n            } else if (timer.startTime <= currentTime) {\n              pop(timerQueue);\n              timer.sortIndex = timer.expirationTime;\n              push(taskQueue, timer);\n            } else {\n              return;\n            }\n            timer = peek(timerQueue);\n          }\n        }\n        function handleTimeout(currentTime) {\n          isHostTimeoutScheduled = false;\n          advanceTimers(currentTime);\n          if (!isHostCallbackScheduled) {\n            if (peek(taskQueue) !== null) {\n              isHostCallbackScheduled = true;\n              requestHostCallback(flushWork);\n            } else {\n              var firstTimer = peek(timerQueue);\n              if (firstTimer !== null) {\n                requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n              }\n            }\n          }\n        }\n        function flushWork(hasTimeRemaining, initialTime2) {\n          isHostCallbackScheduled = false;\n          if (isHostTimeoutScheduled) {\n            isHostTimeoutScheduled = false;\n            cancelHostTimeout();\n          }\n          isPerformingWork = true;\n          var previousPriorityLevel = currentPriorityLevel;\n          try {\n            if (enableProfiling) {\n              try {\n                return workLoop(hasTimeRemaining, initialTime2);\n              } catch (error2) {\n                if (currentTask !== null) {\n                  var currentTime = exports.unstable_now();\n                  markTaskErrored(currentTask, currentTime);\n                  currentTask.isQueued = false;\n                }\n                throw error2;\n              }\n            } else {\n              return workLoop(hasTimeRemaining, initialTime2);\n            }\n          } finally {\n            currentTask = null;\n            currentPriorityLevel = previousPriorityLevel;\n            isPerformingWork = false;\n          }\n        }\n        function workLoop(hasTimeRemaining, initialTime2) {\n          var currentTime = initialTime2;\n          advanceTimers(currentTime);\n          currentTask = peek(taskQueue);\n          while (currentTask !== null && !enableSchedulerDebugging) {\n            if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n              break;\n            }\n            var callback = currentTask.callback;\n            if (typeof callback === \"function\") {\n              currentTask.callback = null;\n              currentPriorityLevel = currentTask.priorityLevel;\n              var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n              var continuationCallback = callback(didUserCallbackTimeout);\n              currentTime = exports.unstable_now();\n              if (typeof continuationCallback === \"function\") {\n                currentTask.callback = continuationCallback;\n              } else {\n                if (currentTask === peek(taskQueue)) {\n                  pop(taskQueue);\n                }\n              }\n              advanceTimers(currentTime);\n            } else {\n              pop(taskQueue);\n            }\n            currentTask = peek(taskQueue);\n          }\n          if (currentTask !== null) {\n            return true;\n          } else {\n            var firstTimer = peek(timerQueue);\n            if (firstTimer !== null) {\n              requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n            }\n            return false;\n          }\n        }\n        function unstable_runWithPriority(priorityLevel, eventHandler) {\n          switch (priorityLevel) {\n            case ImmediatePriority:\n            case UserBlockingPriority:\n            case NormalPriority:\n            case LowPriority:\n            case IdlePriority:\n              break;\n            default:\n              priorityLevel = NormalPriority;\n          }\n          var previousPriorityLevel = currentPriorityLevel;\n          currentPriorityLevel = priorityLevel;\n          try {\n            return eventHandler();\n          } finally {\n            currentPriorityLevel = previousPriorityLevel;\n          }\n        }\n        function unstable_next(eventHandler) {\n          var priorityLevel;\n          switch (currentPriorityLevel) {\n            case ImmediatePriority:\n            case UserBlockingPriority:\n            case NormalPriority:\n              priorityLevel = NormalPriority;\n              break;\n            default:\n              priorityLevel = currentPriorityLevel;\n              break;\n          }\n          var previousPriorityLevel = currentPriorityLevel;\n          currentPriorityLevel = priorityLevel;\n          try {\n            return eventHandler();\n          } finally {\n            currentPriorityLevel = previousPriorityLevel;\n          }\n        }\n        function unstable_wrapCallback(callback) {\n          var parentPriorityLevel = currentPriorityLevel;\n          return function() {\n            var previousPriorityLevel = currentPriorityLevel;\n            currentPriorityLevel = parentPriorityLevel;\n            try {\n              return callback.apply(this, arguments);\n            } finally {\n              currentPriorityLevel = previousPriorityLevel;\n            }\n          };\n        }\n        function unstable_scheduleCallback(priorityLevel, callback, options) {\n          var currentTime = exports.unstable_now();\n          var startTime2;\n          if (typeof options === \"object\" && options !== null) {\n            var delay = options.delay;\n            if (typeof delay === \"number\" && delay > 0) {\n              startTime2 = currentTime + delay;\n            } else {\n              startTime2 = currentTime;\n            }\n          } else {\n            startTime2 = currentTime;\n          }\n          var timeout;\n          switch (priorityLevel) {\n            case ImmediatePriority:\n              timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n              break;\n            case UserBlockingPriority:\n              timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n              break;\n            case IdlePriority:\n              timeout = IDLE_PRIORITY_TIMEOUT;\n              break;\n            case LowPriority:\n              timeout = LOW_PRIORITY_TIMEOUT;\n              break;\n            case NormalPriority:\n            default:\n              timeout = NORMAL_PRIORITY_TIMEOUT;\n              break;\n          }\n          var expirationTime = startTime2 + timeout;\n          var newTask = {\n            id: taskIdCounter++,\n            callback,\n            priorityLevel,\n            startTime: startTime2,\n            expirationTime,\n            sortIndex: -1\n          };\n          if (startTime2 > currentTime) {\n            newTask.sortIndex = startTime2;\n            push(timerQueue, newTask);\n            if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n              if (isHostTimeoutScheduled) {\n                cancelHostTimeout();\n              } else {\n                isHostTimeoutScheduled = true;\n              }\n              requestHostTimeout(handleTimeout, startTime2 - currentTime);\n            }\n          } else {\n            newTask.sortIndex = expirationTime;\n            push(taskQueue, newTask);\n            if (!isHostCallbackScheduled && !isPerformingWork) {\n              isHostCallbackScheduled = true;\n              requestHostCallback(flushWork);\n            }\n          }\n          return newTask;\n        }\n        function unstable_pauseExecution() {\n        }\n        function unstable_continueExecution() {\n          if (!isHostCallbackScheduled && !isPerformingWork) {\n            isHostCallbackScheduled = true;\n            requestHostCallback(flushWork);\n          }\n        }\n        function unstable_getFirstCallbackNode() {\n          return peek(taskQueue);\n        }\n        function unstable_cancelCallback(task) {\n          task.callback = null;\n        }\n        function unstable_getCurrentPriorityLevel() {\n          return currentPriorityLevel;\n        }\n        var isMessageLoopRunning = false;\n        var scheduledHostCallback = null;\n        var taskTimeoutID = -1;\n        var frameInterval = frameYieldMs;\n        var startTime = -1;\n        function shouldYieldToHost() {\n          var timeElapsed = exports.unstable_now() - startTime;\n          if (timeElapsed < frameInterval) {\n            return false;\n          }\n          return true;\n        }\n        function requestPaint() {\n        }\n        function forceFrameRate(fps) {\n          if (fps < 0 || fps > 125) {\n            console[\"error\"](\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\");\n            return;\n          }\n          if (fps > 0) {\n            frameInterval = Math.floor(1e3 / fps);\n          } else {\n            frameInterval = frameYieldMs;\n          }\n        }\n        var performWorkUntilDeadline = function() {\n          if (scheduledHostCallback !== null) {\n            var currentTime = exports.unstable_now();\n            startTime = currentTime;\n            var hasTimeRemaining = true;\n            var hasMoreWork = true;\n            try {\n              hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n            } finally {\n              if (hasMoreWork) {\n                schedulePerformWorkUntilDeadline();\n              } else {\n                isMessageLoopRunning = false;\n                scheduledHostCallback = null;\n              }\n            }\n          } else {\n            isMessageLoopRunning = false;\n          }\n        };\n        var schedulePerformWorkUntilDeadline;\n        if (typeof localSetImmediate === \"function\") {\n          schedulePerformWorkUntilDeadline = function() {\n            localSetImmediate(performWorkUntilDeadline);\n          };\n        } else if (typeof MessageChannel !== \"undefined\") {\n          var channel = new MessageChannel();\n          var port = channel.port2;\n          channel.port1.onmessage = performWorkUntilDeadline;\n          schedulePerformWorkUntilDeadline = function() {\n            port.postMessage(null);\n          };\n        } else {\n          schedulePerformWorkUntilDeadline = function() {\n            localSetTimeout(performWorkUntilDeadline, 0);\n          };\n        }\n        function requestHostCallback(callback) {\n          scheduledHostCallback = callback;\n          if (!isMessageLoopRunning) {\n            isMessageLoopRunning = true;\n            schedulePerformWorkUntilDeadline();\n          }\n        }\n        function requestHostTimeout(callback, ms) {\n          taskTimeoutID = localSetTimeout(function() {\n            callback(exports.unstable_now());\n          }, ms);\n        }\n        function cancelHostTimeout() {\n          localClearTimeout(taskTimeoutID);\n          taskTimeoutID = -1;\n        }\n        var unstable_requestPaint = requestPaint;\n        var unstable_Profiling = null;\n        exports.unstable_IdlePriority = IdlePriority;\n        exports.unstable_ImmediatePriority = ImmediatePriority;\n        exports.unstable_LowPriority = LowPriority;\n        exports.unstable_NormalPriority = NormalPriority;\n        exports.unstable_Profiling = unstable_Profiling;\n        exports.unstable_UserBlockingPriority = UserBlockingPriority;\n        exports.unstable_cancelCallback = unstable_cancelCallback;\n        exports.unstable_continueExecution = unstable_continueExecution;\n        exports.unstable_forceFrameRate = forceFrameRate;\n        exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\n        exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\n        exports.unstable_next = unstable_next;\n        exports.unstable_pauseExecution = unstable_pauseExecution;\n        exports.unstable_requestPaint = unstable_requestPaint;\n        exports.unstable_runWithPriority = unstable_runWithPriority;\n        exports.unstable_scheduleCallback = unstable_scheduleCallback;\n        exports.unstable_shouldYield = shouldYieldToHost;\n        exports.unstable_wrapCallback = unstable_wrapCallback;\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n        }\n      })();\n    }\n    if (Object.isExtensible(module.exports) && Object.keys(module.exports).length === 19) {\n      __export0 = module.exports[\"unstable_now\"];\n      __export1 = module.exports[\"unstable_IdlePriority\"];\n      __export2 = module.exports[\"unstable_ImmediatePriority\"];\n      __export3 = module.exports[\"unstable_LowPriority\"];\n      __export4 = module.exports[\"unstable_NormalPriority\"];\n      __export5 = module.exports[\"unstable_Profiling\"];\n      __export6 = module.exports[\"unstable_UserBlockingPriority\"];\n      __export7 = module.exports[\"unstable_cancelCallback\"];\n      __export8 = module.exports[\"unstable_continueExecution\"];\n      __export9 = module.exports[\"unstable_forceFrameRate\"];\n      __export10 = module.exports[\"unstable_getCurrentPriorityLevel\"];\n      __export11 = module.exports[\"unstable_getFirstCallbackNode\"];\n      __export12 = module.exports[\"unstable_next\"];\n      __export13 = module.exports[\"unstable_pauseExecution\"];\n      __export14 = module.exports[\"unstable_requestPaint\"];\n      __export15 = module.exports[\"unstable_runWithPriority\"];\n      __export16 = module.exports[\"unstable_scheduleCallback\"];\n      __export17 = module.exports[\"unstable_shouldYield\"];\n      __export18 = module.exports[\"unstable_wrapCallback\"];\n    }\n    scheduler_development_default = module.exports;\n    exports2 = {};\n    module2 = {\n      get exports() {\n        return exports2;\n      },\n      set exports(value) {\n        exports2 = value;\n      }\n    };\n    if (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n      l = performance;\n      exports2.unstable_now = function() {\n        return l.now();\n      };\n    } else {\n      p2 = Date, q = p2.now();\n      exports2.unstable_now = function() {\n        return p2.now() - q;\n      };\n    }\n    r = [];\n    t = [];\n    u = 1;\n    v = null;\n    y = 3;\n    z = false;\n    A = false;\n    B = false;\n    D = \"function\" === typeof setTimeout ? setTimeout : null;\n    E = \"function\" === typeof clearTimeout ? clearTimeout : null;\n    F = \"undefined\" !== typeof setImmediate ? setImmediate : null;\n    \"undefined\" !== typeof navigator && void 0 !== navigator.scheduling && void 0 !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);\n    N = false;\n    O = null;\n    L = -1;\n    P = 5;\n    Q = -1;\n    if (\"function\" === typeof F) S = function() {\n      F(R);\n    };\n    else if (\"undefined\" !== typeof MessageChannel) {\n      T2 = new MessageChannel(), U = T2.port2;\n      T2.port1.onmessage = R;\n      S = function() {\n        U.postMessage(null);\n      };\n    } else S = function() {\n      D(R, 0);\n    };\n    exports2.unstable_IdlePriority = 5;\n    exports2.unstable_ImmediatePriority = 1;\n    exports2.unstable_LowPriority = 4;\n    exports2.unstable_NormalPriority = 3;\n    exports2.unstable_Profiling = null;\n    exports2.unstable_UserBlockingPriority = 2;\n    exports2.unstable_cancelCallback = function(a) {\n      a.callback = null;\n    };\n    exports2.unstable_continueExecution = function() {\n      A || z || (A = true, I(J));\n    };\n    exports2.unstable_forceFrameRate = function(a) {\n      0 > a || 125 < a ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\") : P = 0 < a ? Math.floor(1e3 / a) : 5;\n    };\n    exports2.unstable_getCurrentPriorityLevel = function() {\n      return y;\n    };\n    exports2.unstable_getFirstCallbackNode = function() {\n      return h(r);\n    };\n    exports2.unstable_next = function(a) {\n      switch (y) {\n        case 1:\n        case 2:\n        case 3:\n          var b = 3;\n          break;\n        default:\n          b = y;\n      }\n      var c = y;\n      y = b;\n      try {\n        return a();\n      } finally {\n        y = c;\n      }\n    };\n    exports2.unstable_pauseExecution = function() {\n    };\n    exports2.unstable_requestPaint = function() {\n    };\n    exports2.unstable_runWithPriority = function(a, b) {\n      switch (a) {\n        case 1:\n        case 2:\n        case 3:\n        case 4:\n        case 5:\n          break;\n        default:\n          a = 3;\n      }\n      var c = y;\n      y = a;\n      try {\n        return b();\n      } finally {\n        y = c;\n      }\n    };\n    exports2.unstable_scheduleCallback = function(a, b, c) {\n      var d = exports2.unstable_now();\n      \"object\" === typeof c && null !== c ? (c = c.delay, c = \"number\" === typeof c && 0 < c ? d + c : d) : c = d;\n      switch (a) {\n        case 1:\n          var e = -1;\n          break;\n        case 2:\n          e = 250;\n          break;\n        case 5:\n          e = 1073741823;\n          break;\n        case 4:\n          e = 1e4;\n          break;\n        default:\n          e = 5e3;\n      }\n      e = c + e;\n      a = { id: u++, callback: b, priorityLevel: a, startTime: c, expirationTime: e, sortIndex: -1 };\n      c > d ? (a.sortIndex = c, f(t, a), null === h(r) && a === h(t) && (B ? (E(L), L = -1) : B = true, K(H, c - d))) : (a.sortIndex = e, f(r, a), A || z || (A = true, I(J)));\n      return a;\n    };\n    exports2.unstable_shouldYield = M;\n    exports2.unstable_wrapCallback = function(a) {\n      var b = y;\n      return function() {\n        var c = y;\n        y = b;\n        try {\n          return a.apply(this, arguments);\n        } finally {\n          y = c;\n        }\n      };\n    };\n    if (Object.isExtensible(module2.exports) && Object.keys(module2.exports).length === 19) {\n      __export02 = module2.exports[\"unstable_now\"];\n      __export19 = module2.exports[\"unstable_IdlePriority\"];\n      __export22 = module2.exports[\"unstable_ImmediatePriority\"];\n      __export32 = module2.exports[\"unstable_LowPriority\"];\n      __export42 = module2.exports[\"unstable_NormalPriority\"];\n      __export52 = module2.exports[\"unstable_Profiling\"];\n      __export62 = module2.exports[\"unstable_UserBlockingPriority\"];\n      __export72 = module2.exports[\"unstable_cancelCallback\"];\n      __export82 = module2.exports[\"unstable_continueExecution\"];\n      __export92 = module2.exports[\"unstable_forceFrameRate\"];\n      __export102 = module2.exports[\"unstable_getCurrentPriorityLevel\"];\n      __export112 = module2.exports[\"unstable_getFirstCallbackNode\"];\n      __export122 = module2.exports[\"unstable_next\"];\n      __export132 = module2.exports[\"unstable_pauseExecution\"];\n      __export142 = module2.exports[\"unstable_requestPaint\"];\n      __export152 = module2.exports[\"unstable_runWithPriority\"];\n      __export162 = module2.exports[\"unstable_scheduleCallback\"];\n      __export172 = module2.exports[\"unstable_shouldYield\"];\n      __export182 = module2.exports[\"unstable_wrapCallback\"];\n    }\n    scheduler_production_min_default = module2.exports;\n    global = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global !== \"undefined\" && global || typeof globalThis !== \"undefined\" && globalThis || {};\n    exports3 = {};\n    module3 = {\n      get exports() {\n        return exports3;\n      },\n      set exports(value) {\n        exports3 = value;\n      }\n    };\n    if (false) {\n      module3.exports = __cjs_default__(typeof scheduler_production_min_exports !== \"undefined\" ? scheduler_production_min_exports : {});\n    } else {\n      module3.exports = __cjs_default__(typeof scheduler_development_exports !== \"undefined\" ? scheduler_development_exports : {});\n    }\n    scheduler_default = module3.exports;\n    catalogue = {};\n    extend = (objects) => void Object.assign(catalogue, objects);\n    hasColorSpace = (object) => \"colorSpace\" in object || \"outputColorSpace\" in object;\n    getColorManagement = () => {\n      var _ColorManagement;\n      return (_ColorManagement = catalogue.ColorManagement) != null ? _ColorManagement : null;\n    };\n    isOrthographicCamera = (def) => def && def.isOrthographicCamera;\n    isRef = (obj) => obj && obj.hasOwnProperty(\"current\");\n    useIsomorphicLayoutEffect2 = typeof window !== \"undefined\" && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === \"ReactNative\") ? React.useLayoutEffect : React.useEffect;\n    ErrorBoundary = class extends React.Component {\n      constructor(...args) {\n        super(...args);\n        this.state = {\n          error: false\n        };\n      }\n      componentDidCatch(err) {\n        this.props.set(err);\n      }\n      render() {\n        return this.state.error ? null : this.props.children;\n      }\n    };\n    ErrorBoundary.getDerivedStateFromError = () => ({\n      error: true\n    });\n    DEFAULT = \"__default\";\n    DEFAULTS = /* @__PURE__ */ new Map();\n    isDiffSet = (def) => def && !!def.memoized && !!def.changes;\n    getRootState = (obj) => {\n      var _r3f;\n      return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n    };\n    is = {\n      obj: (a) => a === Object(a) && !is.arr(a) && typeof a !== \"function\",\n      fun: (a) => typeof a === \"function\",\n      str: (a) => typeof a === \"string\",\n      num: (a) => typeof a === \"number\",\n      boo: (a) => typeof a === \"boolean\",\n      und: (a) => a === void 0,\n      arr: (a) => Array.isArray(a),\n      equ(a, b, {\n        arrays = \"shallow\",\n        objects = \"reference\",\n        strict = true\n      } = {}) {\n        if (typeof a !== typeof b || !!a !== !!b) return false;\n        if (is.str(a) || is.num(a) || is.boo(a)) return a === b;\n        const isObj = is.obj(a);\n        if (isObj && objects === \"reference\") return a === b;\n        const isArr = is.arr(a);\n        if (isArr && arrays === \"reference\") return a === b;\n        if ((isArr || isObj) && a === b) return true;\n        let i2;\n        for (i2 in a) if (!(i2 in b)) return false;\n        if (isObj && arrays === \"shallow\" && objects === \"shallow\") {\n          for (i2 in strict ? b : a) if (!is.equ(a[i2], b[i2], {\n            strict,\n            objects: \"reference\"\n          })) return false;\n        } else {\n          for (i2 in strict ? b : a) if (a[i2] !== b[i2]) return false;\n        }\n        if (is.und(i2)) {\n          if (isArr && a.length === 0 && b.length === 0) return true;\n          if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0) return true;\n          if (a !== b) return false;\n        }\n        return true;\n      }\n    };\n    INDEX_REGEX = /-\\d+$/;\n    __DEV__ = typeof process !== \"undefined\" && true;\n    privateKeys = [\"set\", \"get\", \"setSize\", \"setFrameloop\", \"setDpr\", \"events\", \"invalidate\", \"advance\", \"size\", \"viewport\"];\n    isRenderer = (def) => !!(def != null && def.render);\n    context = /* @__PURE__ */ React.createContext(null);\n    createStore2 = (invalidate2, advance2) => {\n      const rootState = create((set, get) => {\n        const position = new Vector3();\n        const defaultTarget = new Vector3();\n        const tempTarget = new Vector3();\n        function getCurrentViewport(camera = get().camera, target2 = defaultTarget, size = get().size) {\n          const {\n            width,\n            height,\n            top,\n            left\n          } = size;\n          const aspect2 = width / height;\n          if (target2.isVector3) tempTarget.copy(target2);\n          else tempTarget.set(...target2);\n          const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n          if (isOrthographicCamera(camera)) {\n            return {\n              width: width / camera.zoom,\n              height: height / camera.zoom,\n              top,\n              left,\n              factor: 1,\n              distance,\n              aspect: aspect2\n            };\n          } else {\n            const fov2 = camera.fov * Math.PI / 180;\n            const h2 = 2 * Math.tan(fov2 / 2) * distance;\n            const w = h2 * (width / height);\n            return {\n              width: w,\n              height: h2,\n              top,\n              left,\n              factor: width / w,\n              distance,\n              aspect: aspect2\n            };\n          }\n        }\n        let performanceTimeout = void 0;\n        const setPerformanceCurrent = (current) => set((state2) => ({\n          performance: __spreadProps(__spreadValues({}, state2.performance), {\n            current\n          })\n        }));\n        const pointer = new Vector2();\n        const rootState2 = {\n          set,\n          get,\n          // Mock objects that have to be configured\n          gl: null,\n          camera: null,\n          raycaster: null,\n          events: {\n            priority: 1,\n            enabled: true,\n            connected: false\n          },\n          xr: null,\n          scene: null,\n          invalidate: (frames = 1) => invalidate2(get(), frames),\n          advance: (timestamp, runGlobalEffects) => advance2(timestamp, runGlobalEffects, get()),\n          legacy: false,\n          linear: false,\n          flat: false,\n          controls: null,\n          clock: new Clock(),\n          pointer,\n          mouse: pointer,\n          frameloop: \"always\",\n          onPointerMissed: void 0,\n          performance: {\n            current: 1,\n            min: 0.5,\n            max: 1,\n            debounce: 200,\n            regress: () => {\n              const state2 = get();\n              if (performanceTimeout) clearTimeout(performanceTimeout);\n              if (state2.performance.current !== state2.performance.min) setPerformanceCurrent(state2.performance.min);\n              performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state2.performance.debounce);\n            }\n          },\n          size: {\n            width: 0,\n            height: 0,\n            top: 0,\n            left: 0,\n            updateStyle: false\n          },\n          viewport: {\n            initialDpr: 0,\n            dpr: 0,\n            width: 0,\n            height: 0,\n            top: 0,\n            left: 0,\n            aspect: 0,\n            distance: 0,\n            factor: 0,\n            getCurrentViewport\n          },\n          setEvents: (events) => set((state2) => __spreadProps(__spreadValues({}, state2), {\n            events: __spreadValues(__spreadValues({}, state2.events), events)\n          })),\n          setSize: (width, height, updateStyle, top, left) => {\n            const camera = get().camera;\n            const size = {\n              width,\n              height,\n              top: top || 0,\n              left: left || 0,\n              updateStyle\n            };\n            set((state2) => ({\n              size,\n              viewport: __spreadValues(__spreadValues({}, state2.viewport), getCurrentViewport(camera, defaultTarget, size))\n            }));\n          },\n          setDpr: (dpr) => set((state2) => {\n            const resolved = calculateDpr(dpr);\n            return {\n              viewport: __spreadProps(__spreadValues({}, state2.viewport), {\n                dpr: resolved,\n                initialDpr: state2.viewport.initialDpr || resolved\n              })\n            };\n          }),\n          setFrameloop: (frameloop = \"always\") => {\n            const clock = get().clock;\n            clock.stop();\n            clock.elapsedTime = 0;\n            if (frameloop !== \"never\") {\n              clock.start();\n              clock.elapsedTime = 0;\n            }\n            set(() => ({\n              frameloop\n            }));\n          },\n          previousRoot: void 0,\n          internal: {\n            active: false,\n            priority: 0,\n            frames: 0,\n            lastEvent: /* @__PURE__ */ React.createRef(),\n            interaction: [],\n            hovered: /* @__PURE__ */ new Map(),\n            subscribers: [],\n            initialClick: [0, 0],\n            initialHits: [],\n            capturedMap: /* @__PURE__ */ new Map(),\n            subscribe: (ref, priority, store) => {\n              const internal = get().internal;\n              internal.priority = internal.priority + (priority > 0 ? 1 : 0);\n              internal.subscribers.push({\n                ref,\n                priority,\n                store\n              });\n              internal.subscribers = internal.subscribers.sort((a, b) => a.priority - b.priority);\n              return () => {\n                const internal2 = get().internal;\n                if (internal2 != null && internal2.subscribers) {\n                  internal2.priority = internal2.priority - (priority > 0 ? 1 : 0);\n                  internal2.subscribers = internal2.subscribers.filter((s) => s.ref !== ref);\n                }\n              };\n            }\n          }\n        };\n        return rootState2;\n      });\n      const state = rootState.getState();\n      let oldSize = state.size;\n      let oldDpr = state.viewport.dpr;\n      let oldCamera = state.camera;\n      rootState.subscribe(() => {\n        const {\n          camera,\n          size,\n          viewport,\n          gl,\n          set\n        } = rootState.getState();\n        if (size.width !== oldSize.width || size.height !== oldSize.height || viewport.dpr !== oldDpr) {\n          var _size$updateStyle;\n          oldSize = size;\n          oldDpr = viewport.dpr;\n          updateCamera(camera, size);\n          gl.setPixelRatio(viewport.dpr);\n          const updateStyle = (_size$updateStyle = size.updateStyle) != null ? _size$updateStyle : typeof HTMLCanvasElement !== \"undefined\" && gl.domElement instanceof HTMLCanvasElement;\n          gl.setSize(size.width, size.height, updateStyle);\n        }\n        if (camera !== oldCamera) {\n          oldCamera = camera;\n          set((state2) => ({\n            viewport: __spreadValues(__spreadValues({}, state2.viewport), state2.viewport.getCurrentViewport(camera))\n          }));\n        }\n      });\n      rootState.subscribe((state2) => invalidate2(state2));\n      return rootState;\n    };\n    globalEffects = /* @__PURE__ */ new Set();\n    globalAfterEffects = /* @__PURE__ */ new Set();\n    globalTailEffects = /* @__PURE__ */ new Set();\n    memoizedLoaders = /* @__PURE__ */ new WeakMap();\n    useLoader.preload = function(Proto, input, extensions) {\n      const keys = Array.isArray(input) ? input : [input];\n      return preload(loadingFn(extensions), [Proto, ...keys]);\n    };\n    useLoader.clear = function(Proto, input) {\n      const keys = Array.isArray(input) ? input : [input];\n      return clear([Proto, ...keys]);\n    };\n    roots = /* @__PURE__ */ new Map();\n    ({\n      invalidate,\n      advance\n    } = createLoop(roots));\n    ({\n      reconciler,\n      applyProps\n    } = createRenderer(roots, getEventPriority));\n    shallowLoose = {\n      objects: \"shallow\",\n      strict: false\n    };\n    createRendererInstance = (gl, canvas) => {\n      const customRenderer = typeof gl === \"function\" ? gl(canvas) : gl;\n      if (isRenderer(customRenderer)) return customRenderer;\n      else return new WebGLRenderer(__spreadValues({\n        powerPreference: \"high-performance\",\n        canvas,\n        antialias: true,\n        alpha: true\n      }, gl));\n    };\n    reconciler.injectIntoDevTools({\n      bundleType: false ? 0 : 1,\n      rendererPackageName: \"@react-three/fiber\",\n      version: React.version\n    });\n    DOM_EVENTS = {\n      onClick: [\"click\", false],\n      onContextMenu: [\"contextmenu\", false],\n      onDoubleClick: [\"dblclick\", false],\n      onWheel: [\"wheel\", true],\n      onPointerDown: [\"pointerdown\", true],\n      onPointerUp: [\"pointerup\", true],\n      onPointerLeave: [\"pointerleave\", true],\n      onPointerMove: [\"pointermove\", true],\n      onPointerCancel: [\"pointercancel\", true],\n      onLostPointerCapture: [\"lostpointercapture\", true]\n    };\n    k2 = [\"x\", \"y\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\"];\n    D2 = (n, t2) => k2.every((o) => n[o] === t2[o]);\n    __defProp2 = Object.defineProperty;\n    __defProps2 = Object.defineProperties;\n    __getOwnPropDescs2 = Object.getOwnPropertyDescriptors;\n    __getOwnPropSymbols2 = Object.getOwnPropertySymbols;\n    __hasOwnProp2 = Object.prototype.hasOwnProperty;\n    __propIsEnum2 = Object.prototype.propertyIsEnumerable;\n    __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n    __spreadValues2 = (a, b) => {\n      for (var prop in b || (b = {}))\n        if (__hasOwnProp2.call(b, prop))\n          __defNormalProp2(a, prop, b[prop]);\n      if (__getOwnPropSymbols2)\n        for (var prop of __getOwnPropSymbols2(b)) {\n          if (__propIsEnum2.call(b, prop))\n            __defNormalProp2(a, prop, b[prop]);\n        }\n      return a;\n    };\n    __spreadProps2 = (a, b) => __defProps2(a, __getOwnPropDescs2(b));\n    useIsomorphicLayoutEffect3 = typeof window !== \"undefined\" && (((_a = window.document) == null ? void 0 : _a.createElement) || ((_b = window.navigator) == null ? void 0 : _b.product) === \"ReactNative\") ? React2.useLayoutEffect : React2.useEffect;\n    error = console.error;\n    console.error = function() {\n      const message = [...arguments].join(\"\");\n      if ((message == null ? void 0 : message.startsWith(\"Warning:\")) && message.includes(\"useContext\")) {\n        console.error = error;\n        return;\n      }\n      return error.apply(this, arguments);\n    };\n    FiberContext = wrapContext(React2.createContext(null));\n    FiberProvider = class extends React2.Component {\n      render() {\n        return /* @__PURE__ */ React2.createElement(FiberContext.Provider, {\n          value: this._reactInternals\n        }, this.props.children);\n      }\n    };\n    CanvasImpl = /* @__PURE__ */ React3.forwardRef(function Canvas(_a22, forwardedRef) {\n      var _b2 = _a22, {\n        children,\n        fallback,\n        resize,\n        style,\n        gl,\n        events = createPointerEvents,\n        eventSource,\n        eventPrefix,\n        shadows,\n        linear,\n        flat,\n        legacy,\n        orthographic,\n        frameloop,\n        dpr,\n        performance: performance2,\n        raycaster,\n        camera,\n        scene,\n        onPointerMissed,\n        onCreated\n      } = _b2, props = __objRest(_b2, [\n        \"children\",\n        \"fallback\",\n        \"resize\",\n        \"style\",\n        \"gl\",\n        \"events\",\n        \"eventSource\",\n        \"eventPrefix\",\n        \"shadows\",\n        \"linear\",\n        \"flat\",\n        \"legacy\",\n        \"orthographic\",\n        \"frameloop\",\n        \"dpr\",\n        \"performance\",\n        \"raycaster\",\n        \"camera\",\n        \"scene\",\n        \"onPointerMissed\",\n        \"onCreated\"\n      ]);\n      React3.useMemo(() => extend(three_module_exports), []);\n      const Bridge = useContextBridge();\n      const [containerRef, containerRect] = j(__spreadValues({\n        scroll: true,\n        debounce: {\n          scroll: 50,\n          resize: 0\n        }\n      }, resize));\n      const canvasRef = React3.useRef(null);\n      const divRef = React3.useRef(null);\n      React3.useImperativeHandle(forwardedRef, () => canvasRef.current);\n      const handlePointerMissed = useMutableCallback(onPointerMissed);\n      const [block, setBlock] = React3.useState(false);\n      const [error2, setError] = React3.useState(false);\n      if (block) throw block;\n      if (error2) throw error2;\n      const root = React3.useRef(null);\n      useIsomorphicLayoutEffect2(() => {\n        const canvas = canvasRef.current;\n        if (containerRect.width > 0 && containerRect.height > 0 && canvas) {\n          if (!root.current) root.current = createRoot(canvas);\n          root.current.configure({\n            gl,\n            events,\n            shadows,\n            linear,\n            flat,\n            legacy,\n            orthographic,\n            frameloop,\n            dpr,\n            performance: performance2,\n            raycaster,\n            camera,\n            scene,\n            size: containerRect,\n            // Pass mutable reference to onPointerMissed so it's free to update\n            onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),\n            onCreated: (state) => {\n              state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef(eventSource) ? eventSource.current : eventSource : divRef.current);\n              if (eventPrefix) {\n                state.setEvents({\n                  compute: (event, state2) => {\n                    const x = event[eventPrefix + \"X\"];\n                    const y2 = event[eventPrefix + \"Y\"];\n                    state2.pointer.set(x / state2.size.width * 2 - 1, -(y2 / state2.size.height) * 2 + 1);\n                    state2.raycaster.setFromCamera(state2.pointer, state2.camera);\n                  }\n                });\n              }\n              onCreated == null ? void 0 : onCreated(state);\n            }\n          });\n          root.current.render(/* @__PURE__ */ jsx22(Bridge, {\n            children: /* @__PURE__ */ jsx22(ErrorBoundary, {\n              set: setError,\n              children: /* @__PURE__ */ jsx22(React3.Suspense, {\n                fallback: /* @__PURE__ */ jsx22(Block, {\n                  set: setBlock\n                }),\n                children: children != null ? children : null\n              })\n            })\n          }));\n        }\n      });\n      React3.useEffect(() => {\n        const canvas = canvasRef.current;\n        if (canvas) return () => unmountComponentAtNode(canvas);\n      }, []);\n      const pointerEvents = eventSource ? \"none\" : \"auto\";\n      return /* @__PURE__ */ jsx22(\"div\", __spreadProps(__spreadValues({\n        ref: divRef,\n        style: __spreadValues({\n          position: \"relative\",\n          width: \"100%\",\n          height: \"100%\",\n          overflow: \"hidden\",\n          pointerEvents\n        }, style)\n      }, props), {\n        children: /* @__PURE__ */ jsx22(\"div\", {\n          ref: containerRef,\n          style: {\n            width: \"100%\",\n            height: \"100%\"\n          },\n          children: /* @__PURE__ */ jsx22(\"canvas\", {\n            ref: canvasRef,\n            style: {\n              display: \"block\"\n            },\n            children: fallback\n          })\n        })\n      }));\n    });\n    Canvas2 = /* @__PURE__ */ React3.forwardRef(function CanvasWrapper(props, ref) {\n      return /* @__PURE__ */ jsx22(FiberProvider, {\n        children: /* @__PURE__ */ jsx22(CanvasImpl, __spreadProps(__spreadValues({}, props), {\n          ref\n        }))\n      });\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-V62OMFTZ.mjs\nimport { useEffect as useEffect5, useMemo as useMemo3, useRef as useRef4 } from \"react\";\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar Materials;\nvar init_chunk_V62OMFTZ = __esm({\n  \"../shadergradient/dist/chunk-V62OMFTZ.mjs\"() {\n    init_chunk_BI5IV7LU();\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n    init_chunk_5BEQP2BQ();\n    Materials = ({\n      animate,\n      range,\n      rangeStart,\n      rangeEnd,\n      loop,\n      loopDuration,\n      reflection,\n      uniforms,\n      vertexShader,\n      fragmentShader,\n      onInit,\n      shader\n    }) => {\n      const localClockRef = useRef4(new Clock());\n      const material = useMemo3(() => {\n        const entries = Object.entries(uniforms);\n        const colors = uniforms.colors;\n        const uC1 = colorToRgb(colors[0]);\n        const uC2 = colorToRgb(colors[1]);\n        const uC3 = colorToRgb(colors[2]);\n        const rgbColors = {\n          uC1r: { value: formatColor(uC1 == null ? void 0 : uC1.r) },\n          uC1g: { value: formatColor(uC1 == null ? void 0 : uC1.g) },\n          uC1b: { value: formatColor(uC1 == null ? void 0 : uC1.b) },\n          uC2r: { value: formatColor(uC2 == null ? void 0 : uC2.r) },\n          uC2g: { value: formatColor(uC2 == null ? void 0 : uC2.g) },\n          uC2b: { value: formatColor(uC2 == null ? void 0 : uC2.b) },\n          uC3r: { value: formatColor(uC3 == null ? void 0 : uC3.r) },\n          uC3g: { value: formatColor(uC3 == null ? void 0 : uC3.g) },\n          uC3b: { value: formatColor(uC3 == null ? void 0 : uC3.b) }\n        };\n        const uniformValues = entries.reduce((acc, [name, value]) => {\n          const uniform = UniformsUtils.clone({ [name]: { value } });\n          return __spreadValues(__spreadValues({}, acc), uniform);\n        }, {});\n        const materialConfig = {\n          userData: uniformValues,\n          // sync uniform and userData to update uniforms from outside (MeshPhysicalMaterial)\n          metalness: shader === \"glass\" ? 0 : 0.2,\n          roughness: shader === \"glass\" ? 0.1 : 1 - (typeof reflection === \"number\" ? reflection : 0.1),\n          side: DoubleSide,\n          onBeforeCompile: (shader2) => {\n            shader2.uniforms = __spreadValues(__spreadValues(__spreadValues({}, shader2.uniforms), uniformValues), rgbColors);\n            shader2.vertexShader = vertexShader;\n            shader2.fragmentShader = fragmentShader;\n          }\n          // wireframe: true,\n        };\n        if (shader === \"glass\") {\n          materialConfig.transparent = true;\n          materialConfig.opacity = 0.3;\n          materialConfig.transmission = 0.9;\n          materialConfig.thickness = 0.5;\n          materialConfig.clearcoat = 1;\n          materialConfig.clearcoatRoughness = 0;\n          materialConfig.ior = 1.5;\n          materialConfig.envMapIntensity = 1;\n        }\n        const material2 = new MeshPhysicalMaterial(materialConfig);\n        entries.forEach(\n          ([name]) => Object.defineProperty(material2, name, {\n            get: () => material2.uniforms[name].value,\n            set: (v2) => material2.uniforms[name].value = v2\n          })\n        );\n        if (onInit) onInit(material2);\n        return material2;\n      }, [uniforms, vertexShader, fragmentShader, onInit, reflection, shader]);\n      useEffect5(() => {\n        return () => {\n          material.dispose();\n        };\n      }, [material]);\n      useEffect5(() => {\n        if (animate === \"on\") {\n          localClockRef.current.start();\n        } else {\n          localClockRef.current.stop();\n        }\n      }, [animate]);\n      useFrame(() => {\n        if (animate === \"on\" && material.userData.uTime) {\n          let elapsed = localClockRef.current.getElapsedTime();\n          if (loop === \"on\" && Number.isFinite(loopDuration) && loopDuration > 0) {\n            elapsed = elapsed % loopDuration;\n            if (material.userData.uLoop) {\n              material.userData.uLoop.value = 1;\n            }\n            if (material.userData.uLoopDuration) {\n              material.userData.uLoopDuration.value = loopDuration;\n            }\n          } else {\n            if (material.userData.uLoop) {\n              material.userData.uLoop.value = 0;\n            }\n            if (range === \"enabled\" && Number.isFinite(rangeStart) && Number.isFinite(rangeEnd) && rangeEnd > rangeStart) {\n              elapsed = rangeStart + elapsed;\n              if (elapsed >= rangeEnd) {\n                elapsed = rangeStart;\n                localClockRef.current.start();\n              }\n            }\n          }\n          material.userData.uTime.value = elapsed;\n        }\n      });\n      return /* @__PURE__ */ jsx3(\"primitive\", { attach: \"material\", object: material });\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-R2XBTOLG.mjs\nvar plane_exports, fragment_default, vertex_default;\nvar init_chunk_R2XBTOLG = __esm({\n  \"../shadergradient/dist/chunk-R2XBTOLG.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    plane_exports = {};\n    __export(plane_exports, {\n      fragment: () => fragment_default,\n      vertex: () => vertex_default\n    });\n    fragment_default = \"\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n// #include <transmissionmap_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n// include\\uB97C \\uD1B5\\uD574 \\uAC00\\uC838\\uC628 \\uAC12\\uC740 \\uB300\\uBD80\\uBD84 \\uD658\\uACBD, \\uBE5B \\uB4F1\\uC744 \\uACC4\\uC0B0\\uD558\\uAE30 \\uC704\\uD574\\uC11C \\uAE30\\uBCF8 fragment\\n// shader\\uC758 \\uAC12\\uB4E4\\uC744 \\uBC1B\\uC544\\uC654\\uC2B5\\uB2C8\\uB2E4. \\uC77C\\uB2E8\\uC740 \\uBB34\\uC2DC\\uD558\\uC154\\uB3C4 \\uB429\\uB2C8\\uB2E4.\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\n\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\nvarying vec3 color1;\\nvarying vec3 color2;\\nvarying vec3 color3;\\n\\n// for npm package, need to add this manually\\nfloat linearToRelativeLuminance2( const in vec3 color ) {\\n    vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n    return dot( weights, color.rgb );\\n}\\n\\nvoid main() {\\n\\n  //-------- basic gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.5;\\n\\n  #include <clipping_planes_fragment>\\n\\n  vec4 diffuseColor = vec4(\\n      mix(mix(color1, color2, smoothstep(-3.0, 3.0, vPos.x)), color3, vPos.z),\\n      1);\\n  // diffuseColor\\uB294 \\uC624\\uBE0C\\uC81D\\uD2B8\\uC758 \\uBCA0\\uC774\\uC2A4 \\uC0C9\\uC0C1 (\\uD658\\uACBD\\uC774\\uB098 \\uBE5B\\uC774 \\uACE0\\uB824\\uB418\\uC9C0 \\uC54A\\uC740 \\uBCF8\\uC5F0\\uC758\\n  // \\uC0C9)\\n\\n  // mix(x, y, a): a\\uB97C \\uCD95\\uC73C\\uB85C \\uD588\\uC744 \\uB54C \\uAC00\\uC7A5 \\uB0AE\\uC740 \\uAC12\\uC5D0\\uC11C x\\uAC12\\uC758 \\uC601\\uD5A5\\uB825\\uC744 100%, \\uAC00\\uC7A5\\n  // \\uB192\\uC740 \\uAC12\\uC5D0\\uC11C y\\uAC12\\uC758 \\uC601\\uD5A5\\uB825\\uC744 100%\\uB85C \\uB9CC\\uB4E0\\uB2E4. smoothstep(x, y, a): a\\uCD95\\uC744\\n  // \\uAE30\\uC900\\uC73C\\uB85C x\\uB97C \\uCD5C\\uC18C\\uAC12, y\\uB97C \\uCD5C\\uB300\\uAC12\\uC73C\\uB85C \\uADF8 \\uC0AC\\uC774\\uC758 \\uAC12\\uC744 \\uCABC\\uAC20\\uB2E4. x\\uC640 y \\uC0AC\\uC774\\uB97C\\n  // 0-100 \\uC0AC\\uC774\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uCC98\\uB7FC \\uB2E8\\uACC4\\uBCC4\\uB85C \\uD45C\\uD604\\uD558\\uACE0, x \\uBBF8\\uB9CC\\uC758 \\uAC12\\uC740 0, y \\uC774\\uC0C1\\uC758\\n  // \\uAC12\\uC740 100\\uC73C\\uB85C \\uCC98\\uB9AC\\n\\n  // 1. smoothstep(-3.0, 3.0,vPos.x)\\uB85C x\\uCD95\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uAC00 \\uD45C\\uD604 \\uB420 \\uBC94\\uC704\\uB97C -3,\\n  // 3\\uC73C\\uB85C \\uC815\\uD55C\\uB2E4.\\n  // 2. mix(color1, color3, smoothstep(-3.0, 3.0,vPos.x))\\uB85C color1\\uACFC color3\\uC744\\n  // \\uC704\\uC758 \\uBC94\\uC704 \\uC548\\uC5D0\\uC11C \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uB85C \\uD45C\\uD604\\uD55C\\uB2E4.\\n  // \\uC608\\uB97C \\uB4E4\\uC5B4 color1\\uC774 \\uB178\\uB791, color3\\uC774 \\uD30C\\uB791\\uC774\\uB77C\\uACE0 \\uCE58\\uBA74, x\\uCD95 \\uAE30\\uC900 -3\\uBD80\\uD130 3\\uAE4C\\uC9C0\\n  // \\uB178\\uB791\\uACFC \\uD30C\\uB791 \\uC0AC\\uC774\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uAC00 \\uB098\\uD0C0\\uB098\\uACE0, -3\\uBCF4\\uB2E4 \\uC791\\uC740 \\uAC12\\uC5D0\\uC11C\\uB294 \\uACC4\\uC18D \\uB178\\uB791,\\n  // 3\\uBCF4\\uB2E4 \\uD070 \\uAC12\\uC5D0\\uC11C\\uB294 \\uACC4\\uC18D \\uD30C\\uB791\\uC774 \\uB098\\uD0C0\\uB09C\\uB2E4.\\n  // 3. mix()\\uB97C \\uD55C \\uBC88 \\uB354 \\uC0AC\\uC6A9\\uD574\\uC11C \\uC704\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uC640 color2\\uB97C z\\uCD95 \\uAE30\\uC900\\uC73C\\uB85C\\n  // \\uBD84\\uBC30\\uD55C\\uB2E4.\\n\\n  //-------- materiality ------------\\n  ReflectedLight reflectedLight =\\n      ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n\\n  #ifdef TRANSMISSION\\n    float totalTransmission = transmission;\\n  #endif\\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  // #include <transmissionmap_fragment>\\n  #include <lights_physical_fragment>\\n  #include <lights_fragment_begin>\\n  #include <lights_fragment_maps>\\n  #include <lights_fragment_end>\\n  #include <aomap_fragment>\\n    vec3 outgoingLight =\\n        reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n        reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n    //\\uC704\\uC5D0\\uC11C \\uC815\\uC758\\uD55C diffuseColor\\uC5D0 \\uD658\\uACBD\\uC774\\uB098 \\uBC18\\uC0AC\\uAC12\\uB4E4\\uC744 \\uBC18\\uC601\\uD55C \\uAC12.\\n  #ifdef TRANSMISSION\\n    diffuseColor.a *=\\n        mix(saturate(1. - totalTransmission +\\n                    linearToRelativeLuminance2(reflectedLight.directSpecular +\\n                                              reflectedLight.indirectSpecular)),\\n            1.0, metalness);\\n  #endif\\n\\n\\n  #include <tonemapping_fragment>\\n  #include <encodings_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n\\n\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  // gl_FragColor\\uAC00 fragment shader\\uB97C \\uD1B5\\uD574 \\uB098\\uD0C0\\uB098\\uB294 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C, diffuseColor\\uC5D0\\uC11C\\n  // \\uC815\\uC758\\uD55C \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uC0C9\\uC0C1 \\uC704\\uC5D0 \\uBC18\\uC0AC\\uB098 \\uBE5B\\uC744 \\uACC4\\uC0B0\\uD55C \\uAC12\\uC744 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C \\uC815\\uC758.\\n  // gl_FragColor = vec4(mix(mix(color1, color3, smoothstep(-3.0, 3.0,vPos.x)),\\n  // color2, vNormal.z), 1.0); \\uC704\\uCC98\\uB7FC \\uCD5C\\uC885\\uAC12\\uC744 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uAC12 \\uC790\\uCCB4\\uB97C \\uB123\\uC73C\\uBA74 \\uD658\\uACBD\\n  // \\uC601\\uD5A5\\uC5C6\\uB294 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uB9CC \\uD45C\\uD604\\uB428.\\n}\\n\";\n    vertex_default = \"// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\n\\n// noise source from https://github.com/hughsk/glsl-noise/blob/master/periodic/3d.glsl\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- start here ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\n\\nvarying vec2 vUv;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uLoop;\\nuniform float uLoopDuration;\\n\\nuniform float uLoadingTime;\\n\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- start vertex ------------\\n  vUv = uv;\\n\\n  float t = uTime * uSpeed;\\n  \\n  // For seamless loops, sample noise using 4D-like circular interpolation\\n  vec3 noisePos = 0.43 * position * uNoiseDensity;\\n  float distortion;\\n  \\n  if (uLoop > 0.5) {\\n    // Create truly dynamic seamless loop using 4D noise simulation\\n    // Loop progress only depends on time and duration, not speed\\n    float loopProgress = uTime / uLoopDuration;\\n    float angle = loopProgress * 6.28318530718; // 2*PI\\n    \\n    // Radius scales with speed to maintain consistent visual speed\\n    // Larger radius = more distance traveled = faster perceived motion\\n    float radius = 5.0 * uSpeed;\\n    \\n    // Sample 4 noise values at cardinal points around the circle\\n    vec3 offset0 = vec3(cos(angle) * radius, sin(angle) * radius, 0.0);\\n    vec3 offset1 = vec3(cos(angle + 1.57079632679) * radius, sin(angle + 1.57079632679) * radius, 0.0);\\n    vec3 offset2 = vec3(cos(angle + 3.14159265359) * radius, sin(angle + 3.14159265359) * radius, 0.0);\\n    vec3 offset3 = vec3(cos(angle + 4.71238898038) * radius, sin(angle + 4.71238898038) * radius, 0.0);\\n    \\n    // Get noise at all 4 points\\n    float n0 = cnoise(noisePos + offset0);\\n    float n1 = cnoise(noisePos + offset1);\\n    float n2 = cnoise(noisePos + offset2);\\n    float n3 = cnoise(noisePos + offset3);\\n    \\n    // Smooth interpolation weights using cosine\\n    float w0 = (cos(angle) + 1.0) * 0.5;\\n    float w1 = (cos(angle + 1.57079632679) + 1.0) * 0.5;\\n    float w2 = (cos(angle + 3.14159265359) + 1.0) * 0.5;\\n    float w3 = (cos(angle + 4.71238898038) + 1.0) * 0.5;\\n    \\n    // Normalize weights\\n    float totalWeight = w0 + w1 + w2 + w3;\\n    w0 /= totalWeight;\\n    w1 /= totalWeight;\\n    w2 /= totalWeight;\\n    w3 /= totalWeight;\\n    \\n    // Blend all samples with amplitude boost to match single-sample strength\\n    // Blending reduces amplitude by ~30%, so we compensate\\n    float blendedNoise = n0 * w0 + n1 * w1 + n2 * w2 + n3 * w3;\\n    distortion = 0.75 * blendedNoise * 1.5;\\n  } else {\\n    // Normal linear time progression\\n    distortion = 0.75 * cnoise(noisePos + t);\\n  }\\n\\n  vec3 pos = position + normal * distortion * uNoiseStrength * uLoadingTime;\\n  vPos = pos;\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-5BVQK6OK.mjs\nvar sphere_exports, fragment_default2, vertex_default2;\nvar init_chunk_5BVQK6OK = __esm({\n  \"../shadergradient/dist/chunk-5BVQK6OK.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    sphere_exports = {};\n    __export(sphere_exports, {\n      fragment: () => fragment_default2,\n      vertex: () => vertex_default2\n    });\n    fragment_default2 = \"\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n// #include <transmissionmap_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n// include\\uB97C \\uD1B5\\uD574 \\uAC00\\uC838\\uC628 \\uAC12\\uC740 \\uB300\\uBD80\\uBD84 \\uD658\\uACBD, \\uBE5B \\uB4F1\\uC744 \\uACC4\\uC0B0\\uD558\\uAE30 \\uC704\\uD574\\uC11C \\uAE30\\uBCF8 fragment\\n// shader\\uC758 \\uAC12\\uB4E4\\uC744 \\uBC1B\\uC544\\uC654\\uC2B5\\uB2C8\\uB2E4. \\uC77C\\uB2E8\\uC740 \\uBB34\\uC2DC\\uD558\\uC154\\uB3C4 \\uB429\\uB2C8\\uB2E4.\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\nvarying vec3 color1;\\nvarying vec3 color2;\\nvarying vec3 color3;\\nvarying float distanceToCenter;\\n\\n\\n// for npm package, need to add this manually\\n// 'linearToRelativeLuminance' : function already has a body\\nfloat linearToRelativeLuminance2( const in vec3 color ) {\\n    vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n    return dot( weights, color.rgb );\\n}\\n\\nvoid main() {\\n  //-------- basic gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.5;\\n#include <clipping_planes_fragment>\\n\\n  float distanceToCenter = distance(vPos, vec3(0, 0, 0));\\n  // distanceToCenter\\uB85C \\uC911\\uC2EC\\uC810\\uACFC\\uC758 \\uAC70\\uB9AC\\uB97C \\uAD6C\\uD568.\\n\\n  vec4 diffuseColor =\\n      vec4(mix(color3, mix(color2, color1, smoothstep(-1.0, 1.0, vPos.y)),\\n               distanceToCenter),\\n           1);\\n\\n  //-------- materiality ------------\\n  ReflectedLight reflectedLight =\\n      ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n#ifdef TRANSMISSION\\n  float totalTransmission = transmission;\\n#endif\\n#include <logdepthbuf_fragment>\\n#include <map_fragment>\\n#include <color_fragment>\\n#include <alphamap_fragment>\\n#include <alphatest_fragment>\\n#include <roughnessmap_fragment>\\n#include <metalnessmap_fragment>\\n#include <normal_fragment_begin>\\n#include <normal_fragment_maps>\\n#include <clearcoat_normal_fragment_begin>\\n#include <clearcoat_normal_fragment_maps>\\n#include <emissivemap_fragment>\\n// #include <transmissionmap_fragment>\\n#include <lights_physical_fragment>\\n#include <lights_fragment_begin>\\n#include <lights_fragment_maps>\\n#include <lights_fragment_end>\\n#include <aomap_fragment>\\n  vec3 outgoingLight =\\n      reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n      reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n//\\uC704\\uC5D0\\uC11C \\uC815\\uC758\\uD55C diffuseColor\\uC5D0 \\uD658\\uACBD\\uC774\\uB098 \\uBC18\\uC0AC\\uAC12\\uB4E4\\uC744 \\uBC18\\uC601\\uD55C \\uAC12.\\n#ifdef TRANSMISSION\\n  diffuseColor.a *=\\n      mix(saturate(1. - totalTransmission +\\n                   linearToRelativeLuminance2(reflectedLight.directSpecular +\\n                                             reflectedLight.indirectSpecular)),\\n          1.0, metalness);\\n#endif\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  // gl_FragColor\\uAC00 fragment shader\\uB97C \\uD1B5\\uD574 \\uB098\\uD0C0\\uB098\\uB294 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C, diffuseColor\\uC5D0\\uC11C\\n  // \\uC815\\uC758\\uD55C \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uC0C9\\uC0C1 \\uC704\\uC5D0 \\uBC18\\uC0AC\\uB098 \\uBE5B\\uC744 \\uACC4\\uC0B0\\uD55C \\uAC12\\uC744 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C \\uC815\\uC758.\\n  // gl_FragColor = vec4(mix(mix(color1, color3, smoothstep(-3.0, 3.0,vPos.x)),\\n  // color2, vNormal.z), 1.0); \\uC704\\uCC98\\uB7FC \\uCD5C\\uC885\\uAC12\\uC744 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uAC12 \\uC790\\uCCB4\\uB97C \\uB123\\uC73C\\uBA74 \\uD658\\uACBD\\n  // \\uC601\\uD5A5\\uC5C6\\uB294 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uB9CC \\uD45C\\uD604\\uB428.\\n\\n#include <tonemapping_fragment>\\n#include <encodings_fragment>\\n#include <fog_fragment>\\n#include <premultiplied_alpha_fragment>\\n#include <dithering_fragment>\\n}\\n\";\n    vertex_default2 = \"// #pragma glslify: pnoise = require(glsl-noise/periodic/3d)\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\n// Classic Perlin noise, periodic variant\\nfloat pnoise(vec3 P, vec3 rep)\\n{\\n  vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period\\n  vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\\n  return 2.2 * n_xyz;\\n}\\n\\n\\n//-------- start here ------------\\n\\nvarying vec3 vNormal;\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uLoop;\\nuniform float uLoopDuration;\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\nuniform float uFrequency;\\nuniform float uAmplitude;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying vec3 vViewPosition;\\n\\n#define STANDARD\\n#ifndef FLAT_SHADED\\n  #ifdef USE_TANGENT\\n    varying vec3 vTangent;\\n    varying vec3 vBitangent;\\n  #endif\\n#endif\\n\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\n\\n// rotation\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvoid main() {\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- start vertex ------------\\n  float t = uTime * uSpeed;\\n  \\n  // For seamless loops, sample noise using 4D-like circular interpolation\\n  float distortion;\\n  float angle;\\n  \\n  if (uLoop > 0.5) {\\n    // Create truly dynamic seamless loop using 4D noise simulation\\n    float loopProgress = uTime / uLoopDuration;\\n    float loopAngle = loopProgress * 6.28318530718; // 2*PI\\n    \\n    // Radius scales with speed to maintain consistent visual speed\\n    float radius = 5.0 * uSpeed;\\n    \\n    // Sample 4 noise values at cardinal points\\n    vec3 offset0 = vec3(cos(loopAngle) * radius, sin(loopAngle) * radius, 0.0);\\n    vec3 offset1 = vec3(cos(loopAngle + 1.57079632679) * radius, sin(loopAngle + 1.57079632679) * radius, 0.0);\\n    vec3 offset2 = vec3(cos(loopAngle + 3.14159265359) * radius, sin(loopAngle + 3.14159265359) * radius, 0.0);\\n    vec3 offset3 = vec3(cos(loopAngle + 4.71238898038) * radius, sin(loopAngle + 4.71238898038) * radius, 0.0);\\n    \\n    // Get noise at all 4 points\\n    float n0 = pnoise((normal + offset0) * uNoiseDensity, vec3(10.0));\\n    float n1 = pnoise((normal + offset1) * uNoiseDensity, vec3(10.0));\\n    float n2 = pnoise((normal + offset2) * uNoiseDensity, vec3(10.0));\\n    float n3 = pnoise((normal + offset3) * uNoiseDensity, vec3(10.0));\\n    \\n    // Smooth interpolation weights\\n    float w0 = (cos(loopAngle) + 1.0) * 0.5;\\n    float w1 = (cos(loopAngle + 1.57079632679) + 1.0) * 0.5;\\n    float w2 = (cos(loopAngle + 3.14159265359) + 1.0) * 0.5;\\n    float w3 = (cos(loopAngle + 4.71238898038) + 1.0) * 0.5;\\n    \\n    float totalWeight = w0 + w1 + w2 + w3;\\n    w0 /= totalWeight;\\n    w1 /= totalWeight;\\n    w2 /= totalWeight;\\n    w3 /= totalWeight;\\n    \\n    // Blend samples with amplitude boost to match single-sample strength\\n    float blendedNoise = n0 * w0 + n1 * w1 + n2 * w2 + n3 * w3;\\n    distortion = blendedNoise * 1.5 * uNoiseStrength;\\n    \\n    // Apply loop to spiral effect with blended offset\\n    float angleOffset = offset0.x * w0 + offset1.x * w1 + offset2.x * w2 + offset3.x * w3;\\n    angle = sin(uv.y * uFrequency + angleOffset) * uAmplitude;\\n  } else {\\n    // Normal linear time progression\\n    distortion = pnoise((normal + t) * uNoiseDensity, vec3(10.0)) * uNoiseStrength;\\n    angle = sin(uv.y * uFrequency + t) * uAmplitude;\\n  }\\n  \\n  vec3 pos = position + (normal * distortion);\\n  pos = rotateY(pos, angle);\\n\\n  vPos = pos;\\n  vDistort = distortion;\\n  vNormal = normal;\\n  vUv = uv;\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-CMNL4XFD.mjs\nvar waterPlane_exports, fragment_default3, vertex_default3;\nvar init_chunk_CMNL4XFD = __esm({\n  \"../shadergradient/dist/chunk-CMNL4XFD.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    waterPlane_exports = {};\n    __export(waterPlane_exports, {\n      fragment: () => fragment_default3,\n      vertex: () => vertex_default3\n    });\n    fragment_default3 = \"\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n// #include <transmissionmap_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n// include\\uB97C \\uD1B5\\uD574 \\uAC00\\uC838\\uC628 \\uAC12\\uC740 \\uB300\\uBD80\\uBD84 \\uD658\\uACBD, \\uBE5B \\uB4F1\\uC744 \\uACC4\\uC0B0\\uD558\\uAE30 \\uC704\\uD574\\uC11C \\uAE30\\uBCF8 fragment\\n// shader\\uC758 \\uAC12\\uB4E4\\uC744 \\uBC1B\\uC544\\uC654\\uC2B5\\uB2C8\\uB2E4. \\uC77C\\uB2E8\\uC740 \\uBB34\\uC2DC\\uD558\\uC154\\uB3C4 \\uB429\\uB2C8\\uB2E4.\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\n\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\nvarying vec3 color1;\\nvarying vec3 color2;\\nvarying vec3 color3;\\n\\n// for npm package, need to add this manually\\n// 'linearToRelativeLuminance' : function already has a body\\nfloat linearToRelativeLuminance2( const in vec3 color ) {\\n    vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n    return dot( weights, color.rgb );\\n}\\n\\nvoid main() {\\n\\n  //-------- basic gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.5;\\n\\n  #include <clipping_planes_fragment>\\n\\n  vec4 diffuseColor = vec4(\\n      mix(mix(color1, color2, smoothstep(-3.0, 3.0, vPos.x)), color3, vPos.z),\\n      1);\\n  // diffuseColor\\uB294 \\uC624\\uBE0C\\uC81D\\uD2B8\\uC758 \\uBCA0\\uC774\\uC2A4 \\uC0C9\\uC0C1 (\\uD658\\uACBD\\uC774\\uB098 \\uBE5B\\uC774 \\uACE0\\uB824\\uB418\\uC9C0 \\uC54A\\uC740 \\uBCF8\\uC5F0\\uC758\\n  // \\uC0C9)\\n\\n  // mix(x, y, a): a\\uB97C \\uCD95\\uC73C\\uB85C \\uD588\\uC744 \\uB54C \\uAC00\\uC7A5 \\uB0AE\\uC740 \\uAC12\\uC5D0\\uC11C x\\uAC12\\uC758 \\uC601\\uD5A5\\uB825\\uC744 100%, \\uAC00\\uC7A5\\n  // \\uB192\\uC740 \\uAC12\\uC5D0\\uC11C y\\uAC12\\uC758 \\uC601\\uD5A5\\uB825\\uC744 100%\\uB85C \\uB9CC\\uB4E0\\uB2E4. smoothstep(x, y, a): a\\uCD95\\uC744\\n  // \\uAE30\\uC900\\uC73C\\uB85C x\\uB97C \\uCD5C\\uC18C\\uAC12, y\\uB97C \\uCD5C\\uB300\\uAC12\\uC73C\\uB85C \\uADF8 \\uC0AC\\uC774\\uC758 \\uAC12\\uC744 \\uCABC\\uAC20\\uB2E4. x\\uC640 y \\uC0AC\\uC774\\uB97C\\n  // 0-100 \\uC0AC\\uC774\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uCC98\\uB7FC \\uB2E8\\uACC4\\uBCC4\\uB85C \\uD45C\\uD604\\uD558\\uACE0, x \\uBBF8\\uB9CC\\uC758 \\uAC12\\uC740 0, y \\uC774\\uC0C1\\uC758\\n  // \\uAC12\\uC740 100\\uC73C\\uB85C \\uCC98\\uB9AC\\n\\n  // 1. smoothstep(-3.0, 3.0,vPos.x)\\uB85C x\\uCD95\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uAC00 \\uD45C\\uD604 \\uB420 \\uBC94\\uC704\\uB97C -3,\\n  // 3\\uC73C\\uB85C \\uC815\\uD55C\\uB2E4.\\n  // 2. mix(color1, color3, smoothstep(-3.0, 3.0,vPos.x))\\uB85C color1\\uACFC color3\\uC744\\n  // \\uC704\\uC758 \\uBC94\\uC704 \\uC548\\uC5D0\\uC11C \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uB85C \\uD45C\\uD604\\uD55C\\uB2E4.\\n  // \\uC608\\uB97C \\uB4E4\\uC5B4 color1\\uC774 \\uB178\\uB791, color3\\uC774 \\uD30C\\uB791\\uC774\\uB77C\\uACE0 \\uCE58\\uBA74, x\\uCD95 \\uAE30\\uC900 -3\\uBD80\\uD130 3\\uAE4C\\uC9C0\\n  // \\uB178\\uB791\\uACFC \\uD30C\\uB791 \\uC0AC\\uC774\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uAC00 \\uB098\\uD0C0\\uB098\\uACE0, -3\\uBCF4\\uB2E4 \\uC791\\uC740 \\uAC12\\uC5D0\\uC11C\\uB294 \\uACC4\\uC18D \\uB178\\uB791,\\n  // 3\\uBCF4\\uB2E4 \\uD070 \\uAC12\\uC5D0\\uC11C\\uB294 \\uACC4\\uC18D \\uD30C\\uB791\\uC774 \\uB098\\uD0C0\\uB09C\\uB2E4.\\n  // 3. mix()\\uB97C \\uD55C \\uBC88 \\uB354 \\uC0AC\\uC6A9\\uD574\\uC11C \\uC704\\uC758 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uC640 color2\\uB97C z\\uCD95 \\uAE30\\uC900\\uC73C\\uB85C\\n  // \\uBD84\\uBC30\\uD55C\\uB2E4.\\n\\n  //-------- materiality ------------\\n  ReflectedLight reflectedLight =\\n      ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n\\n  #ifdef TRANSMISSION\\n    float totalTransmission = transmission;\\n  #endif\\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  // #include <transmissionmap_fragment>\\n  #include <lights_physical_fragment>\\n  #include <lights_fragment_begin>\\n  #include <lights_fragment_maps>\\n  #include <lights_fragment_end>\\n  #include <aomap_fragment>\\n    vec3 outgoingLight =\\n        reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n        reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n    //\\uC704\\uC5D0\\uC11C \\uC815\\uC758\\uD55C diffuseColor\\uC5D0 \\uD658\\uACBD\\uC774\\uB098 \\uBC18\\uC0AC\\uAC12\\uB4E4\\uC744 \\uBC18\\uC601\\uD55C \\uAC12.\\n  #ifdef TRANSMISSION\\n    diffuseColor.a *=\\n        mix(saturate(1. - totalTransmission +\\n                    linearToRelativeLuminance2(reflectedLight.directSpecular +\\n                                              reflectedLight.indirectSpecular)),\\n            1.0, metalness);\\n  #endif\\n\\n\\n  #include <tonemapping_fragment>\\n  #include <encodings_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n\\n\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  // gl_FragColor\\uAC00 fragment shader\\uB97C \\uD1B5\\uD574 \\uB098\\uD0C0\\uB098\\uB294 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C, diffuseColor\\uC5D0\\uC11C\\n  // \\uC815\\uC758\\uD55C \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uC0C9\\uC0C1 \\uC704\\uC5D0 \\uBC18\\uC0AC\\uB098 \\uBE5B\\uC744 \\uACC4\\uC0B0\\uD55C \\uAC12\\uC744 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C \\uC815\\uC758.\\n  // gl_FragColor = vec4(mix(mix(color1, color3, smoothstep(-3.0, 3.0,vPos.x)),\\n  // color2, vNormal.z), 1.0); \\uC704\\uCC98\\uB7FC \\uCD5C\\uC885\\uAC12\\uC744 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uAC12 \\uC790\\uCCB4\\uB97C \\uB123\\uC73C\\uBA74 \\uD658\\uACBD\\n  // \\uC601\\uD5A5\\uC5C6\\uB294 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uB9CC \\uD45C\\uD604\\uB428.\\n}\\n\";\n    vertex_default3 = \"// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- start here ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uLoop;\\nuniform float uLoopDuration;\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- start vertex ------------\\n  float t = uTime * uSpeed;\\n  \\n  // For seamless loops, sample noise using 4D-like circular interpolation\\n  vec3 noisePos = 0.43 * position * uNoiseDensity;\\n  float distortion;\\n  \\n  if (uLoop > 0.5) {\\n    // Create truly dynamic seamless loop using 4D noise simulation\\n    float loopProgress = uTime / uLoopDuration;\\n    float angle = loopProgress * 6.28318530718; // 2*PI\\n    \\n    // Radius scales with speed to maintain consistent visual speed\\n    float radius = 5.0 * uSpeed;\\n    \\n    // Sample 4 noise values at cardinal points\\n    vec3 offset0 = vec3(cos(angle) * radius, sin(angle) * radius, 0.0);\\n    vec3 offset1 = vec3(cos(angle + 1.57079632679) * radius, sin(angle + 1.57079632679) * radius, 0.0);\\n    vec3 offset2 = vec3(cos(angle + 3.14159265359) * radius, sin(angle + 3.14159265359) * radius, 0.0);\\n    vec3 offset3 = vec3(cos(angle + 4.71238898038) * radius, sin(angle + 4.71238898038) * radius, 0.0);\\n    \\n    // Get noise at all 4 points\\n    float n0 = cnoise(noisePos + offset0);\\n    float n1 = cnoise(noisePos + offset1);\\n    float n2 = cnoise(noisePos + offset2);\\n    float n3 = cnoise(noisePos + offset3);\\n    \\n    // Smooth interpolation weights\\n    float w0 = (cos(angle) + 1.0) * 0.5;\\n    float w1 = (cos(angle + 1.57079632679) + 1.0) * 0.5;\\n    float w2 = (cos(angle + 3.14159265359) + 1.0) * 0.5;\\n    float w3 = (cos(angle + 4.71238898038) + 1.0) * 0.5;\\n    \\n    float totalWeight = w0 + w1 + w2 + w3;\\n    w0 /= totalWeight;\\n    w1 /= totalWeight;\\n    w2 /= totalWeight;\\n    w3 /= totalWeight;\\n    \\n    // Blend samples with amplitude boost to match single-sample strength\\n    float blendedNoise = n0 * w0 + n1 * w1 + n2 * w2 + n3 * w3;\\n    distortion = 0.75 * blendedNoise * 1.5;\\n  } else {\\n    // Normal linear time progression\\n    distortion = 0.75 * cnoise(noisePos + t);\\n  }\\n\\n  vec3 pos = position + normal * distortion * uNoiseStrength;\\n  vPos = pos;\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-4GZNORIL.mjs\nvar defaults_exports;\nvar init_chunk_4GZNORIL = __esm({\n  \"../shadergradient/dist/chunk-4GZNORIL.mjs\"() {\n    init_chunk_R2XBTOLG();\n    init_chunk_5BVQK6OK();\n    init_chunk_CMNL4XFD();\n    init_chunk_5BEQP2BQ();\n    defaults_exports = {};\n    __export(defaults_exports, {\n      plane: () => plane_exports,\n      sphere: () => sphere_exports,\n      waterPlane: () => waterPlane_exports\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-73SSHDUK.mjs\nvar plane_exports2, fragment_default4, vertex_default4;\nvar init_chunk_73SSHDUK = __esm({\n  \"../shadergradient/dist/chunk-73SSHDUK.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    plane_exports2 = {};\n    __export(plane_exports2, {\n      fragment: () => fragment_default4,\n      vertex: () => vertex_default4\n    });\n    fragment_default4 = \"// Glass Plane Fragment Shader - Transparency & Refraction\\n\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n// transmission is already defined by Three.js when TRANSMISSION is enabled\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\n\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <transmission_pars_fragment>\\n\\n// Custom uniforms for glass effect\\nuniform float uTime;\\nuniform vec3 uColor1;\\nuniform vec3 uColor2;\\nuniform vec3 uColor3;\\nuniform float uTransparency;\\nuniform float uRefraction;\\nuniform float uChromaticAberration;\\nuniform float uFresnelPower;\\nuniform float uReflectivity;\\n// envMap and envMapIntensity are provided by Three.js\\n\\nvarying vec2 vUv;\\nvarying vec3 vPosition;\\nvarying vec3 vNormal;\\nvarying vec3 vGlassWorldPos;\\nvarying vec3 vReflect;\\nvarying vec3 vRefract;\\n\\n// Fresnel calculation\\nfloat fresnel(vec3 viewDirection, vec3 normal, float power) {\\n  return pow(1.0 - dot(viewDirection, normal), power);\\n}\\n\\n// Chromatic aberration for refraction\\nvec3 chromaticRefraction(vec3 viewDirection, vec3 normal, float ior, float chromaticStrength) {\\n  vec3 refractedR = refract(viewDirection, normal, 1.0 / (ior - chromaticStrength));\\n  vec3 refractedG = refract(viewDirection, normal, 1.0 / ior);\\n  vec3 refractedB = refract(viewDirection, normal, 1.0 / (ior + chromaticStrength));\\n  \\n  #ifdef ENVMAP_TYPE_CUBE\\n  return vec3(\\n    textureCube(envMap, refractedR).r,\\n    textureCube(envMap, refractedG).g,\\n    textureCube(envMap, refractedB).b\\n  );\\n  #else\\n  return vec3(0.5);\\n  #endif\\n}\\n\\nvoid main() {\\n  #include <clipping_planes_fragment>\\n  \\n  vec4 diffuseColor = vec4(diffuse, opacity);\\n  ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n  \\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <specularmap_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  \\n  // Glass-specific calculations\\n  vec3 viewDirection = normalize(vViewPosition);\\n  vec3 worldNormal = normalize(vNormal);\\n  \\n  // Calculate Fresnel effect\\n  float fresnelFactor = fresnel(viewDirection, worldNormal, uFresnelPower);\\n  \\n  // Base glass color gradient\\n  vec3 gradientColor = mix(uColor1, uColor2, vUv.y);\\n  gradientColor = mix(gradientColor, uColor3, fresnelFactor);\\n  \\n  // Reflection\\n  #ifdef ENVMAP_TYPE_CUBE\\n  vec3 reflectionColor = textureCube(envMap, vReflect).rgb * envMapIntensity;\\n  #else\\n  vec3 reflectionColor = vec3(0.5);\\n  #endif\\n  \\n  // Refraction with chromatic aberration\\n  vec3 refractionColor;\\n  #ifdef ENVMAP_TYPE_CUBE\\n  if (uChromaticAberration > 0.0) {\\n    refractionColor = chromaticRefraction(-viewDirection, worldNormal, uRefraction, uChromaticAberration);\\n  } else {\\n    refractionColor = textureCube(envMap, vRefract).rgb;\\n  }\\n  refractionColor *= envMapIntensity;\\n  #else\\n  refractionColor = vec3(0.3);\\n  #endif\\n  \\n  // Mix reflection and refraction based on Fresnel\\n  vec3 envColor = mix(refractionColor, reflectionColor, fresnelFactor * uReflectivity);\\n  \\n  // Combine with gradient color\\n  vec3 finalColor = mix(gradientColor, envColor, 0.7);\\n  \\n  // Apply transparency\\n  float finalAlpha = mix(uTransparency, 1.0, fresnelFactor * 0.5);\\n  \\n  // Set diffuse color for standard lighting\\n  diffuseColor.rgb = finalColor;\\n  diffuseColor.a = finalAlpha;\\n  \\n  // Skip transmission_fragment to avoid conflicts\\n  \\n  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + \\n                       reflectedLight.directSpecular + reflectedLight.indirectSpecular + \\n                       totalEmissiveRadiance;\\n  \\n  // Add our glass color contribution\\n  outgoingLight += finalColor * 0.8;\\n  \\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  \\n  #include <tonemapping_fragment>\\n  #include <colorspace_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n}\\n\";\n    vertex_default4 = \"// Glass Plane Vertex Shader - Refraction & Transparency Effects\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvarying vec2 vUv;\\nvarying vec3 vPosition;\\nvarying vec3 vNormal;\\nvarying vec3 vGlassWorldPos;\\nvarying vec3 vReflect;\\nvarying vec3 vRefract;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uWaveAmplitude;\\nuniform float uWaveFrequency;\\nuniform float uNoiseStrength;\\nuniform float uDistortion;\\n\\n// Noise functions for glass distortion\\nvec3 mod289(vec3 x) {\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x) {\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x) {\\n  return mod289(((x * 34.0) + 1.0) * x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r) {\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nfloat snoise(vec3 v) {\\n  const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);\\n  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\\n\\n  vec3 i = floor(v + dot(v, C.yyy));\\n  vec3 x0 = v - i + dot(i, C.xxx);\\n\\n  vec3 g = step(x0.yzx, x0.xyz);\\n  vec3 l = 1.0 - g;\\n  vec3 i1 = min(g.xyz, l.zxy);\\n  vec3 i2 = max(g.xyz, l.zxy);\\n\\n  vec3 x1 = x0 - i1 + C.xxx;\\n  vec3 x2 = x0 - i2 + C.yyy;\\n  vec3 x3 = x0 - D.yyy;\\n\\n  i = mod289(i);\\n  vec4 p = permute(permute(permute(\\n    i.z + vec4(0.0, i1.z, i2.z, 1.0))\\n    + i.y + vec4(0.0, i1.y, i2.y, 1.0))\\n    + i.x + vec4(0.0, i1.x, i2.x, 1.0));\\n\\n  float n_ = 0.142857142857;\\n  vec3 ns = n_ * D.wyz - D.xzx;\\n\\n  vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\\n\\n  vec4 x_ = floor(j * ns.z);\\n  vec4 y_ = floor(j - 7.0 * x_);\\n\\n  vec4 x = x_ * ns.x + ns.yyyy;\\n  vec4 y = y_ * ns.x + ns.yyyy;\\n  vec4 h = 1.0 - abs(x) - abs(y);\\n\\n  vec4 b0 = vec4(x.xy, y.xy);\\n  vec4 b1 = vec4(x.zw, y.zw);\\n\\n  vec4 s0 = floor(b0) * 2.0 + 1.0;\\n  vec4 s1 = floor(b1) * 2.0 + 1.0;\\n  vec4 sh = -step(h, vec4(0.0));\\n\\n  vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\\n  vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\\n\\n  vec3 p0 = vec3(a0.xy, h.x);\\n  vec3 p1 = vec3(a0.zw, h.y);\\n  vec3 p2 = vec3(a1.xy, h.z);\\n  vec3 p3 = vec3(a1.zw, h.w);\\n\\n  vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\\n  p0 *= norm.x;\\n  p1 *= norm.y;\\n  p2 *= norm.z;\\n  p3 *= norm.w;\\n\\n  vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);\\n  m = m * m;\\n  return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1),\\n    dot(p2, x2), dot(p3, x3)));\\n}\\n\\nvoid main() {\\n  #include <uv_pars_vertex>\\n  #include <uv_vertex>\\n  #include <uv2_pars_vertex>\\n  #include <uv2_vertex>\\n  #include <color_pars_vertex>\\n  #include <color_vertex>\\n  #include <morphcolor_vertex>\\n  #include <beginnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <normal_vertex>\\n  \\n  #ifndef FLAT_SHADED\\n  vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n  vTangent = normalize(transformedTangent);\\n  vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  \\n  #include <begin_vertex>\\n  #include <morphtarget_vertex>\\n  #include <skinning_vertex>\\n  #include <displacementmap_vertex>\\n  \\n  // Pass UV coordinates\\n  vUv = uv;\\n\\n  // Calculate time-based animation\\n  float time = uTime * uSpeed;\\n  \\n  // Create subtle wave distortion for glass effect\\n  float waveX = sin(position.x * uWaveFrequency + time) * uWaveAmplitude;\\n  float waveY = cos(position.y * uWaveFrequency + time) * uWaveAmplitude;\\n  float waveZ = sin(position.z * uWaveFrequency + time * 0.5) * uWaveAmplitude * 0.5;\\n  \\n  // Add noise for organic glass distortion\\n  vec3 noisePos = position + vec3(time * 0.1);\\n  float noise = snoise(noisePos * 0.5) * uNoiseStrength;\\n  \\n  // Apply distortion to transformed position\\n  transformed += vec3(waveX, waveY, waveZ) * uDistortion + normal * noise;\\n  \\n  #include <project_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <clipping_planes_vertex>\\n  \\n  vViewPosition = -mvPosition.xyz;\\n  vPosition = transformed;\\n  \\n  // Calculate world position for refraction\\n  vec4 worldPosition = modelMatrix * vec4(transformed, 1.0);\\n  vGlassWorldPos = worldPosition.xyz;\\n  \\n  // Calculate reflection and refraction vectors\\n  vec3 worldNormal = normalize(mat3(modelMatrix) * normal);\\n  vec3 viewVector = normalize(cameraPosition - worldPosition.xyz);\\n  \\n  // Reflection vector\\n  vReflect = reflect(-viewVector, worldNormal);\\n  \\n  // Refraction vector with index of refraction for glass (1.5)\\n  float ior = 1.5;\\n  vRefract = refract(-viewVector, worldNormal, 1.0 / ior);\\n  \\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-IGOCR32Y.mjs\nvar sphere_exports2, fragment_default5, vertex_default5;\nvar init_chunk_IGOCR32Y = __esm({\n  \"../shadergradient/dist/chunk-IGOCR32Y.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    sphere_exports2 = {};\n    __export(sphere_exports2, {\n      fragment: () => fragment_default5,\n      vertex: () => vertex_default5\n    });\n    fragment_default5 = \"// Glass Sphere Fragment Shader - Transparency & Refraction\\n\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n// transmission is already defined by Three.js when TRANSMISSION is enabled\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\n\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <transmission_pars_fragment>\\n\\n// Custom uniforms for glass effect\\nuniform float uTime;\\nuniform vec3 uColor1;\\nuniform vec3 uColor2;\\nuniform vec3 uColor3;\\nuniform float uTransparency;\\nuniform float uRefraction;\\nuniform float uChromaticAberration;\\nuniform float uFresnelPower;\\nuniform float uReflectivity;\\n// envMap and envMapIntensity are provided by Three.js\\n\\nvarying vec2 vUv;\\nvarying vec3 vPosition;\\nvarying vec3 vNormal;\\nvarying vec3 vGlassWorldPos;\\nvarying vec3 vReflect;\\nvarying vec3 vRefract;\\nvarying float vDistortion;\\n\\n// Fresnel calculation\\nfloat fresnel(vec3 viewDirection, vec3 normal, float power) {\\n  return pow(1.0 - abs(dot(viewDirection, normal)), power);\\n}\\n\\n// Chromatic aberration for refraction\\nvec3 chromaticRefraction(vec3 viewDirection, vec3 normal, float ior, float chromaticStrength) {\\n  vec3 refractedR = refract(viewDirection, normal, 1.0 / (ior - chromaticStrength));\\n  vec3 refractedG = refract(viewDirection, normal, 1.0 / ior);\\n  vec3 refractedB = refract(viewDirection, normal, 1.0 / (ior + chromaticStrength));\\n  \\n  #ifdef ENVMAP_TYPE_CUBE\\n  return vec3(\\n    textureCube(envMap, refractedR).r,\\n    textureCube(envMap, refractedG).g,\\n    textureCube(envMap, refractedB).b\\n  );\\n  #else\\n  return vec3(0.5);\\n  #endif\\n}\\n\\n// Caustics simulation for sphere\\nfloat caustics(vec3 position, float time) {\\n  float c1 = sin(position.x * 4.0 + time) * sin(position.y * 4.0 + time * 0.8);\\n  float c2 = sin(position.z * 3.0 - time * 1.2) * sin(position.x * 3.0 + time);\\n  return (c1 + c2) * 0.5 + 0.5;\\n}\\n\\nvoid main() {\\n  #include <clipping_planes_fragment>\\n  \\n  vec4 diffuseColor = vec4(diffuse, opacity);\\n  ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n  \\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <specularmap_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  \\n  // Glass-specific calculations\\n  vec3 viewDirection = normalize(vViewPosition);\\n  vec3 worldNormal = normalize(vNormal);\\n  \\n  // Calculate Fresnel effect\\n  float fresnelFactor = fresnel(viewDirection, worldNormal, uFresnelPower);\\n  \\n  // For sphere, use spherical UV mapping for gradient\\n  float sphericalU = atan(vPosition.z, vPosition.x) / (2.0 * PI) + 0.5;\\n  float sphericalV = acos(vPosition.y / length(vPosition)) / PI;\\n  vec2 sphericalUV = vec2(sphericalU, sphericalV);\\n  \\n  // Create color gradient based on spherical coordinates\\n  vec3 gradientColor = mix(uColor1, uColor2, sphericalUV.y);\\n  gradientColor = mix(gradientColor, uColor3, pow(fresnelFactor, 1.5));\\n  \\n  // Add caustics effect for sphere\\n  float causticsValue = caustics(vGlassWorldPos, uTime);\\n  gradientColor += vec3(causticsValue * 0.1);\\n  \\n  // Reflection\\n  #ifdef ENVMAP_TYPE_CUBE\\n  vec3 reflectionColor = textureCube(envMap, vReflect).rgb * envMapIntensity;\\n  #else\\n  vec3 reflectionColor = vec3(0.5);\\n  #endif\\n  \\n  // Refraction with chromatic aberration (enhanced for sphere)\\n  vec3 refractionColor;\\n  #ifdef ENVMAP_TYPE_CUBE\\n  if (uChromaticAberration > 0.0) {\\n    float chromaticIntensity = uChromaticAberration * (1.0 + vDistortion * 0.5);\\n    refractionColor = chromaticRefraction(-viewDirection, worldNormal, uRefraction, chromaticIntensity);\\n  } else {\\n    refractionColor = textureCube(envMap, vRefract).rgb;\\n  }\\n  refractionColor *= envMapIntensity;\\n  #else\\n  refractionColor = vec3(0.3);\\n  #endif\\n  \\n  // Mix reflection and refraction based on Fresnel (stronger effect for sphere)\\n  vec3 envColor = mix(refractionColor, reflectionColor, fresnelFactor * uReflectivity);\\n  \\n  // Add inner glow effect for sphere\\n  float innerGlow = pow(1.0 - abs(dot(viewDirection, worldNormal)), 3.0);\\n  vec3 glowColor = mix(uColor2, uColor3, innerGlow) * innerGlow * 0.5;\\n  \\n  // Combine all effects\\n  vec3 finalColor = mix(gradientColor, envColor, 0.8) + glowColor;\\n  \\n  // Apply transparency with sphere thickness consideration\\n  float thickness = 1.0 - pow(abs(dot(viewDirection, worldNormal)), 0.5);\\n  float finalAlpha = mix(uTransparency * thickness, 1.0, fresnelFactor * 0.7);\\n  \\n  // Set diffuse color for standard lighting\\n  diffuseColor.rgb = finalColor;\\n  diffuseColor.a = finalAlpha;\\n  \\n  // Skip transmission_fragment to avoid conflicts\\n  \\n  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + \\n                       reflectedLight.directSpecular + reflectedLight.indirectSpecular + \\n                       totalEmissiveRadiance;\\n  \\n  // Add our glass color contribution\\n  outgoingLight += finalColor * 0.9;\\n  \\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  \\n  #include <tonemapping_fragment>\\n  #include <colorspace_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n}\\n\";\n    vertex_default5 = \"// Glass Sphere Vertex Shader - Refraction & Transparency Effects\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvarying vec2 vUv;\\nvarying vec3 vPosition;\\nvarying vec3 vNormal;\\nvarying vec3 vGlassWorldPos;\\nvarying vec3 vReflect;\\nvarying vec3 vRefract;\\nvarying float vDistortion;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uWaveAmplitude;\\nuniform float uWaveFrequency;\\nuniform float uNoiseStrength;\\nuniform float uDistortion;\\n\\n// Noise functions for glass distortion\\nvec3 mod289(vec3 x) {\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x) {\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x) {\\n  return mod289(((x * 34.0) + 1.0) * x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r) {\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nfloat snoise(vec3 v) {\\n  const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);\\n  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\\n\\n  vec3 i = floor(v + dot(v, C.yyy));\\n  vec3 x0 = v - i + dot(i, C.xxx);\\n\\n  vec3 g = step(x0.yzx, x0.xyz);\\n  vec3 l = 1.0 - g;\\n  vec3 i1 = min(g.xyz, l.zxy);\\n  vec3 i2 = max(g.xyz, l.zxy);\\n\\n  vec3 x1 = x0 - i1 + C.xxx;\\n  vec3 x2 = x0 - i2 + C.yyy;\\n  vec3 x3 = x0 - D.yyy;\\n\\n  i = mod289(i);\\n  vec4 p = permute(permute(permute(\\n    i.z + vec4(0.0, i1.z, i2.z, 1.0))\\n    + i.y + vec4(0.0, i1.y, i2.y, 1.0))\\n    + i.x + vec4(0.0, i1.x, i2.x, 1.0));\\n\\n  float n_ = 0.142857142857;\\n  vec3 ns = n_ * D.wyz - D.xzx;\\n\\n  vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\\n\\n  vec4 x_ = floor(j * ns.z);\\n  vec4 y_ = floor(j - 7.0 * x_);\\n\\n  vec4 x = x_ * ns.x + ns.yyyy;\\n  vec4 y = y_ * ns.x + ns.yyyy;\\n  vec4 h = 1.0 - abs(x) - abs(y);\\n\\n  vec4 b0 = vec4(x.xy, y.xy);\\n  vec4 b1 = vec4(x.zw, y.zw);\\n\\n  vec4 s0 = floor(b0) * 2.0 + 1.0;\\n  vec4 s1 = floor(b1) * 2.0 + 1.0;\\n  vec4 sh = -step(h, vec4(0.0));\\n\\n  vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\\n  vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\\n\\n  vec3 p0 = vec3(a0.xy, h.x);\\n  vec3 p1 = vec3(a0.zw, h.y);\\n  vec3 p2 = vec3(a1.xy, h.z);\\n  vec3 p3 = vec3(a1.zw, h.w);\\n\\n  vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\\n  p0 *= norm.x;\\n  p1 *= norm.y;\\n  p2 *= norm.z;\\n  p3 *= norm.w;\\n\\n  vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);\\n  m = m * m;\\n  return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1),\\n    dot(p2, x2), dot(p3, x3)));\\n}\\n\\nvoid main() {\\n  #include <uv_pars_vertex>\\n  #include <uv_vertex>\\n  #include <uv2_pars_vertex>\\n  #include <uv2_vertex>\\n  #include <color_pars_vertex>\\n  #include <color_vertex>\\n  #include <morphcolor_vertex>\\n  #include <beginnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <normal_vertex>\\n  \\n  #ifndef FLAT_SHADED\\n  vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n  vTangent = normalize(transformedTangent);\\n  vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  \\n  #include <begin_vertex>\\n  #include <morphtarget_vertex>\\n  #include <skinning_vertex>\\n  #include <displacementmap_vertex>\\n  \\n  // Pass UV coordinates\\n  vUv = uv;\\n\\n  // Calculate time-based animation\\n  float time = uTime * uSpeed;\\n  \\n  // For sphere, use spherical coordinates for better distortion\\n  float theta = atan(position.z, position.x);\\n  float phi = acos(position.y / length(position));\\n  \\n  // Create waves based on spherical coordinates\\n  float waveTheta = sin(theta * uWaveFrequency * 2.0 + time) * uWaveAmplitude;\\n  float wavePhi = cos(phi * uWaveFrequency + time * 1.5) * uWaveAmplitude;\\n  \\n  // Add noise for organic glass distortion\\n  vec3 noisePos = position + vec3(time * 0.1);\\n  float noise = snoise(noisePos * 0.8) * uNoiseStrength;\\n  \\n  // Calculate distortion based on position on sphere\\n  float distortionAmount = (waveTheta + wavePhi) * uDistortion + noise;\\n  vDistortion = distortionAmount;\\n  \\n  // Apply distortion along normal for sphere\\n  transformed += normal * distortionAmount;\\n  \\n  #include <project_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <clipping_planes_vertex>\\n  \\n  vViewPosition = -mvPosition.xyz;\\n  vPosition = transformed;\\n  \\n  // Calculate world position for refraction\\n  vec4 worldPosition = modelMatrix * vec4(transformed, 1.0);\\n  vGlassWorldPos = worldPosition.xyz;\\n  \\n  // Calculate reflection and refraction vectors\\n  vec3 worldNormal = normalize(mat3(modelMatrix) * normal);\\n  vec3 viewVector = normalize(cameraPosition - worldPosition.xyz);\\n  \\n  // Reflection vector\\n  vReflect = reflect(-viewVector, worldNormal);\\n  \\n  // Refraction vector with index of refraction for glass (1.5)\\n  // For sphere, adjust IOR based on curvature\\n  float ior = 1.5 + sin(theta * 2.0 + time) * 0.1;\\n  vRefract = refract(-viewVector, worldNormal, 1.0 / ior);\\n  \\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-4DHS567T.mjs\nvar waterPlane_exports2, fragment_default6, vertex_default6;\nvar init_chunk_4DHS567T = __esm({\n  \"../shadergradient/dist/chunk-4DHS567T.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    waterPlane_exports2 = {};\n    __export(waterPlane_exports2, {\n      fragment: () => fragment_default6,\n      vertex: () => vertex_default6\n    });\n    fragment_default6 = \"// Glass WaterPlane Fragment Shader - Liquid Glass Effect\\n\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n// transmission is already defined by Three.js when TRANSMISSION is enabled\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\n\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <transmission_pars_fragment>\\n\\n// Custom uniforms for liquid glass effect\\nuniform float uTime;\\nuniform vec3 uColor1;\\nuniform vec3 uColor2;\\nuniform vec3 uColor3;\\nuniform float uTransparency;\\nuniform float uRefraction;\\nuniform float uChromaticAberration;\\nuniform float uFresnelPower;\\nuniform float uReflectivity;\\n// envMap and envMapIntensity are provided by Three.js\\nuniform float uLiquidEffect;\\nuniform float uFoamIntensity;\\n\\nvarying vec2 vUv;\\nvarying vec3 vPosition;\\nvarying vec3 vNormal;\\nvarying vec3 vGlassWorldPos;\\nvarying vec3 vReflect;\\nvarying vec3 vRefract;\\nvarying float vWaveHeight;\\nvarying vec3 vWaveNormal;\\n\\n// Fresnel calculation\\nfloat fresnel(vec3 viewDirection, vec3 normal, float power) {\\n  return pow(1.0 - abs(dot(viewDirection, normal)), power);\\n}\\n\\n// Chromatic aberration for refraction\\nvec3 chromaticRefraction(vec3 viewDirection, vec3 normal, float ior, float chromaticStrength) {\\n  vec3 refractedR = refract(viewDirection, normal, 1.0 / (ior - chromaticStrength));\\n  vec3 refractedG = refract(viewDirection, normal, 1.0 / ior);\\n  vec3 refractedB = refract(viewDirection, normal, 1.0 / (ior + chromaticStrength));\\n  \\n  #ifdef ENVMAP_TYPE_CUBE\\n  vec3 result = vec3(\\n    textureCube(envMap, refractedR).r,\\n    textureCube(envMap, refractedG).g,\\n    textureCube(envMap, refractedB).b\\n  );\\n  \\n  // Add distortion based on wave height\\n  float distortion = vWaveHeight * 0.1;\\n  result = mix(result, textureCube(envMap, refractedG + vec3(distortion)).rgb, 0.3);\\n  #else\\n  vec3 result = vec3(0.5);\\n  #endif\\n  \\n  return result;\\n}\\n\\n// Foam effect for water surface\\nfloat foam(vec2 uv, float waveHeight, float time) {\\n  float foamThreshold = 0.3;\\n  float foamAmount = smoothstep(foamThreshold - 0.1, foamThreshold + 0.1, abs(waveHeight));\\n  \\n  // Add foam texture pattern\\n  float foamPattern = sin(uv.x * 40.0 + time) * cos(uv.y * 30.0 - time * 0.5);\\n  foamPattern += sin(uv.x * 25.0 - time * 0.8) * sin(uv.y * 35.0 + time);\\n  foamPattern = clamp(foamPattern * 0.5 + 0.5, 0.0, 1.0);\\n  \\n  return foamAmount * foamPattern;\\n}\\n\\n// Caustics for underwater effect\\nvec3 caustics(vec3 position, float time) {\\n  float c1 = sin(position.x * 6.0 + time * 1.5) * sin(position.z * 6.0 + time);\\n  float c2 = cos(position.x * 4.0 - time) * cos(position.z * 5.0 + time * 1.2);\\n  float c3 = sin((position.x + position.z) * 3.0 + time * 0.8);\\n  \\n  float causticPattern = (c1 + c2 + c3) / 3.0;\\n  causticPattern = pow(max(0.0, causticPattern), 2.0);\\n  \\n  return vec3(causticPattern) * vec3(0.3, 0.6, 1.0);\\n}\\n\\nvoid main() {\\n  #include <clipping_planes_fragment>\\n  \\n  vec4 diffuseColor = vec4(diffuse, opacity);\\n  ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n  \\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <specularmap_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  \\n  // Use wave normal for more accurate water surface\\n  vec3 viewDirection = normalize(vViewPosition);\\n  vec3 worldNormal = normalize(vWaveNormal);\\n  \\n  // Calculate Fresnel effect\\n  float fresnelFactor = fresnel(viewDirection, worldNormal, uFresnelPower);\\n  \\n  // Water color gradient with depth effect\\n  float depth = 1.0 - abs(vWaveHeight) * 2.0;\\n  vec3 shallowColor = mix(uColor1, uColor2, vUv.y);\\n  vec3 deepColor = mix(uColor2, uColor3, depth);\\n  vec3 gradientColor = mix(shallowColor, deepColor, fresnelFactor);\\n  \\n  // Add foam effect\\n  float foamAmount = foam(vUv, vWaveHeight, uTime) * uFoamIntensity;\\n  vec3 foamColor = vec3(1.0, 1.0, 1.0);\\n  gradientColor = mix(gradientColor, foamColor, foamAmount);\\n  \\n  // Reflection\\n  #ifdef ENVMAP_TYPE_CUBE\\n  vec3 reflectionColor = textureCube(envMap, vReflect).rgb * envMapIntensity;\\n  \\n  // Add slight blur to reflection for water effect\\n  vec3 blurredReflection = reflectionColor;\\n  for (int i = 0; i < 4; i++) {\\n    vec3 offset = vec3(\\n      sin(float(i) * 2.0) * 0.01,\\n      0.0,\\n      cos(float(i) * 2.0) * 0.01\\n    );\\n    blurredReflection += textureCube(envMap, vReflect + offset).rgb * envMapIntensity;\\n  }\\n  blurredReflection /= 5.0;\\n  reflectionColor = mix(reflectionColor, blurredReflection, uLiquidEffect);\\n  #else\\n  vec3 reflectionColor = vec3(0.5);\\n  #endif\\n  \\n  // Refraction with chromatic aberration (stronger for water)\\n  vec3 refractionColor;\\n  #ifdef ENVMAP_TYPE_CUBE\\n  if (uChromaticAberration > 0.0) {\\n    float waterIOR = 1.33 + vWaveHeight * 0.1;\\n    refractionColor = chromaticRefraction(-viewDirection, worldNormal, waterIOR, uChromaticAberration * 1.5);\\n  } else {\\n    refractionColor = textureCube(envMap, vRefract).rgb;\\n  }\\n  refractionColor *= envMapIntensity;\\n  #else\\n  refractionColor = vec3(0.3);\\n  #endif\\n  \\n  // Add caustics to refraction\\n  vec3 causticsColor = caustics(vGlassWorldPos, uTime);\\n  refractionColor += causticsColor * 0.3 * uLiquidEffect;\\n  \\n  // Mix reflection and refraction based on Fresnel and wave\\n  float reflectionMix = fresnelFactor * uReflectivity * (1.0 + abs(vWaveHeight));\\n  vec3 envColor = mix(refractionColor, reflectionColor, clamp(reflectionMix, 0.0, 1.0));\\n  \\n  // Combine all effects\\n  vec3 finalColor = mix(gradientColor, envColor, 0.85);\\n  \\n  // Apply transparency with wave variation\\n  float waveAlpha = 1.0 - abs(vWaveHeight) * 0.3;\\n  float finalAlpha = mix(uTransparency * waveAlpha, 1.0, fresnelFactor * 0.6 + foamAmount * 0.4);\\n  \\n  // Set diffuse color for standard lighting\\n  diffuseColor.rgb = finalColor;\\n  diffuseColor.a = finalAlpha;\\n  \\n  // Skip transmission_fragment to avoid conflicts\\n  \\n  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + \\n                       reflectedLight.directSpecular + reflectedLight.indirectSpecular + \\n                       totalEmissiveRadiance;\\n  \\n  // Add our liquid glass color contribution\\n  outgoingLight += finalColor * 0.95;\\n  \\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  \\n  #include <tonemapping_fragment>\\n  #include <colorspace_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n}\\n\";\n    vertex_default6 = \"// Glass WaterPlane Vertex Shader - Liquid Glass Effect\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvarying vec2 vUv;\\nvarying vec3 vPosition;\\nvarying vec3 vNormal;\\nvarying vec3 vGlassWorldPos;\\nvarying vec3 vReflect;\\nvarying vec3 vRefract;\\nvarying float vWaveHeight;\\nvarying vec3 vWaveNormal;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uWaveAmplitude;\\nuniform float uWaveFrequency;\\nuniform float uNoiseStrength;\\nuniform float uDistortion;\\nuniform float uFlowSpeed;\\nuniform vec2 uFlowDirection;\\n\\n// Noise functions for water-like glass distortion\\nvec3 mod289(vec3 x) {\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x) {\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x) {\\n  return mod289(((x * 34.0) + 1.0) * x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r) {\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nfloat snoise(vec3 v) {\\n  const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);\\n  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\\n\\n  vec3 i = floor(v + dot(v, C.yyy));\\n  vec3 x0 = v - i + dot(i, C.xxx);\\n\\n  vec3 g = step(x0.yzx, x0.xyz);\\n  vec3 l = 1.0 - g;\\n  vec3 i1 = min(g.xyz, l.zxy);\\n  vec3 i2 = max(g.xyz, l.zxy);\\n\\n  vec3 x1 = x0 - i1 + C.xxx;\\n  vec3 x2 = x0 - i2 + C.yyy;\\n  vec3 x3 = x0 - D.yyy;\\n\\n  i = mod289(i);\\n  vec4 p = permute(permute(permute(\\n    i.z + vec4(0.0, i1.z, i2.z, 1.0))\\n    + i.y + vec4(0.0, i1.y, i2.y, 1.0))\\n    + i.x + vec4(0.0, i1.x, i2.x, 1.0));\\n\\n  float n_ = 0.142857142857;\\n  vec3 ns = n_ * D.wyz - D.xzx;\\n\\n  vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\\n\\n  vec4 x_ = floor(j * ns.z);\\n  vec4 y_ = floor(j - 7.0 * x_);\\n\\n  vec4 x = x_ * ns.x + ns.yyyy;\\n  vec4 y = y_ * ns.x + ns.yyyy;\\n  vec4 h = 1.0 - abs(x) - abs(y);\\n\\n  vec4 b0 = vec4(x.xy, y.xy);\\n  vec4 b1 = vec4(x.zw, y.zw);\\n\\n  vec4 s0 = floor(b0) * 2.0 + 1.0;\\n  vec4 s1 = floor(b1) * 2.0 + 1.0;\\n  vec4 sh = -step(h, vec4(0.0));\\n\\n  vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\\n  vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\\n\\n  vec3 p0 = vec3(a0.xy, h.x);\\n  vec3 p1 = vec3(a0.zw, h.y);\\n  vec3 p2 = vec3(a1.xy, h.z);\\n  vec3 p3 = vec3(a1.zw, h.w);\\n\\n  vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\\n  p0 *= norm.x;\\n  p1 *= norm.y;\\n  p2 *= norm.z;\\n  p3 *= norm.w;\\n\\n  vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);\\n  m = m * m;\\n  return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1),\\n    dot(p2, x2), dot(p3, x3)));\\n}\\n\\n// Water wave function\\nvec3 waterWave(vec2 pos, float time) {\\n  // Flow effect\\n  vec2 flowPos = pos + uFlowDirection * time * uFlowSpeed;\\n  \\n  // Multiple wave layers for realistic water\\n  float wave1 = sin(flowPos.x * uWaveFrequency + time) * cos(flowPos.y * uWaveFrequency * 0.8 + time * 0.7);\\n  float wave2 = sin(flowPos.x * uWaveFrequency * 1.7 - time * 1.3) * sin(flowPos.y * uWaveFrequency * 1.3 + time);\\n  float wave3 = cos(flowPos.x * uWaveFrequency * 0.5 + time * 0.5) * sin(flowPos.y * uWaveFrequency * 0.6 - time * 0.8);\\n  \\n  // Combine waves\\n  float height = (wave1 * 0.5 + wave2 * 0.3 + wave3 * 0.2) * uWaveAmplitude;\\n  \\n  // Calculate wave normals\\n  float dx = cos(flowPos.x * uWaveFrequency + time) * uWaveFrequency * 0.5 * uWaveAmplitude;\\n  float dz = -sin(flowPos.y * uWaveFrequency * 0.8 + time * 0.7) * uWaveFrequency * 0.8 * 0.5 * uWaveAmplitude;\\n  \\n  return vec3(dx, height, dz);\\n}\\n\\nvoid main() {\\n  #include <uv_pars_vertex>\\n  #include <uv_vertex>\\n  #include <uv2_pars_vertex>\\n  #include <uv2_vertex>\\n  #include <color_pars_vertex>\\n  #include <color_vertex>\\n  #include <morphcolor_vertex>\\n  #include <beginnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <normal_vertex>\\n  \\n  // Pass UV coordinates\\n  vUv = uv;\\n\\n  // Calculate time-based animation\\n  float time = uTime * uSpeed;\\n  \\n  // Calculate water waves\\n  vec3 waveData = waterWave(position.xz, time);\\n  float waveHeight = waveData.y;\\n  vec2 waveGradient = waveData.xz;\\n  \\n  // Add noise for organic water movement\\n  vec3 noisePos = vec3(position.x, position.y, position.z) + vec3(time * 0.05);\\n  float noise = snoise(noisePos * 1.2) * uNoiseStrength * 0.5;\\n  \\n  // Store wave height for fragment shader\\n  vWaveHeight = waveHeight + noise;\\n  \\n  // Calculate perturbed normal for water surface\\n  vec3 waveNormal = normalize(vec3(-waveGradient.x, 1.0, -waveGradient.y));\\n  vWaveNormal = waveNormal;\\n  \\n  // Blend original normal with wave normal\\n  vec3 blendedNormal = normalize(mix(normal, waveNormal, 0.7));\\n  \\n  #ifndef FLAT_SHADED\\n  vNormal = normalize(mat3(modelViewMatrix) * blendedNormal);\\n  #ifdef USE_TANGENT\\n  vTangent = normalize(transformedTangent);\\n  vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  \\n  #include <begin_vertex>\\n  #include <morphtarget_vertex>\\n  #include <skinning_vertex>\\n  #include <displacementmap_vertex>\\n  \\n  // Apply wave displacement and additional distortion\\n  transformed.y += waveHeight + noise;\\n  transformed += blendedNormal * uDistortion * noise;\\n  \\n  #include <project_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <clipping_planes_vertex>\\n  \\n  vViewPosition = -mvPosition.xyz;\\n  vPosition = transformed;\\n  \\n  // Calculate world position for refraction\\n  vec4 worldPosition = modelMatrix * vec4(transformed, 1.0);\\n  vGlassWorldPos = worldPosition.xyz;\\n  \\n  // Calculate reflection and refraction vectors with wave normal\\n  vec3 worldNormal = normalize(mat3(modelMatrix) * blendedNormal);\\n  vec3 viewVector = normalize(cameraPosition - worldPosition.xyz);\\n  \\n  // Reflection vector\\n  vReflect = reflect(-viewVector, worldNormal);\\n  \\n  // Refraction vector with varying IOR for water effect\\n  float ior = 1.33 + sin(time + position.x * 2.0) * 0.1; // Water IOR ~1.33\\n  vRefract = refract(-viewVector, worldNormal, 1.0 / ior);\\n  \\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-R4TL5TQS.mjs\nvar glass_exports;\nvar init_chunk_R4TL5TQS = __esm({\n  \"../shadergradient/dist/chunk-R4TL5TQS.mjs\"() {\n    init_chunk_73SSHDUK();\n    init_chunk_IGOCR32Y();\n    init_chunk_4DHS567T();\n    init_chunk_5BEQP2BQ();\n    glass_exports = {};\n    __export(glass_exports, {\n      plane: () => plane_exports2,\n      sphere: () => sphere_exports2,\n      waterPlane: () => waterPlane_exports2\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-KR7RCWZK.mjs\nvar plane_exports3, fragment_default7, vertex_default7;\nvar init_chunk_KR7RCWZK = __esm({\n  \"../shadergradient/dist/chunk-KR7RCWZK.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    plane_exports3 = {};\n    __export(plane_exports3, {\n      fragment: () => fragment_default7,\n      vertex: () => vertex_default7\n    });\n    fragment_default7 = \"uniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\n\\nvarying vec3 vNormal;\\nvarying vec3 vPos;\\n\\nvoid main() {\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n\\n  gl_FragColor = vec4(color1 * vPos.x + color2 * vPos.y + color3 * vPos.z, 1.);\\n\\n}\\n\";\n    vertex_default7 = \"// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\n\\n// noise source from https://github.com/hughsk/glsl-noise/blob/master/periodic/3d.glsl\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- start here ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\n\\nvarying vec2 vUv;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\n\\nuniform float uLoadingTime;\\n\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- start vertex ------------\\n  vUv = uv;\\n\\n  // vNormal = normal;\\n\\n  float t = uTime * uSpeed;\\n  // Create a sine wave from top to bottom of the sphere\\n  float distortion = 0.75 * cnoise(0.43 * position * uNoiseDensity + t);\\n\\n  vec3 pos = position + normal * distortion * uNoiseStrength * uLoadingTime;\\n  vPos = pos;\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-Q2QAY7NM.mjs\nvar sphere_exports3, fragment_default8, vertex_default8;\nvar init_chunk_Q2QAY7NM = __esm({\n  \"../shadergradient/dist/chunk-Q2QAY7NM.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    sphere_exports3 = {};\n    __export(sphere_exports3, {\n      fragment: () => fragment_default8,\n      vertex: () => vertex_default8\n    });\n    fragment_default8 = \"\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n// #include <transmissionmap_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n// include\\uB97C \\uD1B5\\uD574 \\uAC00\\uC838\\uC628 \\uAC12\\uC740 \\uB300\\uBD80\\uBD84 \\uD658\\uACBD, \\uBE5B \\uB4F1\\uC744 \\uACC4\\uC0B0\\uD558\\uAE30 \\uC704\\uD574\\uC11C \\uAE30\\uBCF8 fragment\\n// shader\\uC758 \\uAC12\\uB4E4\\uC744 \\uBC1B\\uC544\\uC654\\uC2B5\\uB2C8\\uB2E4. \\uC77C\\uB2E8\\uC740 \\uBB34\\uC2DC\\uD558\\uC154\\uB3C4 \\uB429\\uB2C8\\uB2E4.\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\nvarying vec3 color1;\\nvarying vec3 color2;\\nvarying vec3 color3;\\nvarying float distanceToCenter;\\nvoid main() {\\n  //-------- basic gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.5;\\n#include <clipping_planes_fragment>\\n\\n  float distanceToCenter = distance(vPos, vec3(0, 0, 0));\\n  // distanceToCenter\\uB85C \\uC911\\uC2EC\\uC810\\uACFC\\uC758 \\uAC70\\uB9AC\\uB97C \\uAD6C\\uD568.\\n\\n  vec4 diffuseColor =\\n      vec4(mix(color3, mix(color2, color1, smoothstep(-1.0, 1.0, vPos.y)),\\n               distanceToCenter),\\n           1);\\n\\n  //-------- materiality ------------\\n  ReflectedLight reflectedLight =\\n      ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive;\\n#ifdef TRANSMISSION\\n  float totalTransmission = transmission;\\n#endif\\n#include <logdepthbuf_fragment>\\n#include <map_fragment>\\n#include <color_fragment>\\n#include <alphamap_fragment>\\n#include <alphatest_fragment>\\n#include <roughnessmap_fragment>\\n#include <metalnessmap_fragment>\\n#include <normal_fragment_begin>\\n#include <normal_fragment_maps>\\n#include <clearcoat_normal_fragment_begin>\\n#include <clearcoat_normal_fragment_maps>\\n#include <emissivemap_fragment>\\n// #include <transmissionmap_fragment>\\n#include <lights_physical_fragment>\\n#include <lights_fragment_begin>\\n#include <lights_fragment_maps>\\n#include <lights_fragment_end>\\n#include <aomap_fragment>\\n  vec3 outgoingLight =\\n      reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n      reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n//\\uC704\\uC5D0\\uC11C \\uC815\\uC758\\uD55C diffuseColor\\uC5D0 \\uD658\\uACBD\\uC774\\uB098 \\uBC18\\uC0AC\\uAC12\\uB4E4\\uC744 \\uBC18\\uC601\\uD55C \\uAC12.\\n#ifdef TRANSMISSION\\n  diffuseColor.a *=\\n      mix(saturate(1. - totalTransmission +\\n                   linearToRelativeLuminance(reflectedLight.directSpecular +\\n                                             reflectedLight.indirectSpecular)),\\n          1.0, metalness);\\n#endif\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n  // gl_FragColor\\uAC00 fragment shader\\uB97C \\uD1B5\\uD574 \\uB098\\uD0C0\\uB098\\uB294 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C, diffuseColor\\uC5D0\\uC11C\\n  // \\uC815\\uC758\\uD55C \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uC0C9\\uC0C1 \\uC704\\uC5D0 \\uBC18\\uC0AC\\uB098 \\uBE5B\\uC744 \\uACC4\\uC0B0\\uD55C \\uAC12\\uC744 \\uCD5C\\uC885\\uAC12\\uC73C\\uB85C \\uC815\\uC758.\\n  // gl_FragColor = vec4(mix(mix(color1, color3, smoothstep(-3.0, 3.0,vPos.x)),\\n  // color2, vNormal.z), 1.0); \\uC704\\uCC98\\uB7FC \\uCD5C\\uC885\\uAC12\\uC744 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8 \\uAC12 \\uC790\\uCCB4\\uB97C \\uB123\\uC73C\\uBA74 \\uD658\\uACBD\\n  // \\uC601\\uD5A5\\uC5C6\\uB294 \\uADF8\\uB77C\\uB514\\uC5B8\\uD2B8\\uB9CC \\uD45C\\uD604\\uB428.\\n\\n#include <tonemapping_fragment>\\n#include <encodings_fragment>\\n#include <fog_fragment>\\n#include <premultiplied_alpha_fragment>\\n#include <dithering_fragment>\\n}\\n\";\n    vertex_default8 = \"// #pragma glslify: pnoise = require(glsl-noise/periodic/3d)\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\n// Classic Perlin noise, periodic variant\\nfloat pnoise(vec3 P, vec3 rep)\\n{\\n  vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period\\n  vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\\n  return 2.2 * n_xyz;\\n}\\n\\n\\n//-------- start here ------------\\n\\nvarying vec3 vNormal;\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\nuniform float uFrequency;\\nuniform float uAmplitude;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying vec3 vViewPosition;\\n\\n#define STANDARD\\n#ifndef FLAT_SHADED\\n  #ifdef USE_TANGENT\\n    varying vec3 vTangent;\\n    varying vec3 vBitangent;\\n  #endif\\n#endif\\n\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\n\\n// rotation\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvoid main() {\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- start vertex ------------\\n  float t = uTime * uSpeed;\\n  float distortion =\\n      pnoise((normal + t) * uNoiseDensity, vec3(10.0)) * uNoiseStrength;\\n  vec3 pos = position + (normal * distortion);\\n  float angle = sin(uv.y * uFrequency + t) * uAmplitude;\\n  pos = rotateY(pos, angle);\\n\\n  vPos = pos;\\n  vDistort = distortion;\\n  vNormal = normal;\\n  vUv = uv;\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-NYQYF5HU.mjs\nvar waterPlane_exports3, fragment_default9, vertex_default9;\nvar init_chunk_NYQYF5HU = __esm({\n  \"../shadergradient/dist/chunk-NYQYF5HU.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    waterPlane_exports3 = {};\n    __export(waterPlane_exports3, {\n      fragment: () => fragment_default9,\n      vertex: () => vertex_default9\n    });\n    fragment_default9 = \"uniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\n\\nvarying vec3 vNormal;\\nvarying vec3 vPos;\\n\\nvoid main() {\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n\\n  gl_FragColor = vec4(color1 * vPos.x + color2 * vPos.y + color3 * vPos.z, 1.);\\n\\n}\\n\";\n    vertex_default9 = \"// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\n\\n// noise source from https://github.com/hughsk/glsl-noise/blob/master/periodic/3d.glsl\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- start here ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\n\\nvarying vec2 vUv;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\n\\nuniform float uLoadingTime;\\n\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- start vertex ------------\\n  vUv = uv;\\n\\n  // vNormal = normal;\\n\\n  float t = uTime * uSpeed;\\n  // Create a sine wave from top to bottom of the sphere\\n  float distortion = 0.75 * cnoise(0.43 * position * uNoiseDensity + t);\\n\\n  vec3 pos = position + normal * distortion * uNoiseStrength * uLoadingTime;\\n  vPos = pos;\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-H2RSKIPT.mjs\nvar positionMix_exports;\nvar init_chunk_H2RSKIPT = __esm({\n  \"../shadergradient/dist/chunk-H2RSKIPT.mjs\"() {\n    init_chunk_KR7RCWZK();\n    init_chunk_Q2QAY7NM();\n    init_chunk_NYQYF5HU();\n    init_chunk_5BEQP2BQ();\n    positionMix_exports = {};\n    __export(positionMix_exports, {\n      plane: () => plane_exports3,\n      sphere: () => sphere_exports3,\n      waterPlane: () => waterPlane_exports3\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-UDZCNACG.mjs\nvar plane_exports4, fragment_default10, vertex_default10;\nvar init_chunk_UDZCNACG = __esm({\n  \"../shadergradient/dist/chunk-UDZCNACG.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    plane_exports4 = {};\n    __export(plane_exports4, {\n      fragment: () => fragment_default10,\n      vertex: () => vertex_default10\n    });\n    fragment_default10 = \"// Cosmic Plane Fragment Shader - Holographic Gradient\\n\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying float vHolographicIntensity;\\nvarying float vCosmicWave;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\n\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\n// Holographic helper functions\\nfloat hash(vec2 p) {\\n    return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);\\n}\\n\\nfloat noise2D(vec2 p) {\\n    vec2 i = floor(p);\\n    vec2 f = fract(p);\\n    vec2 u = f * f * (3.0 - 2.0 * f);\\n    \\n    return mix(mix(hash(i + vec2(0.0, 0.0)), \\n                   hash(i + vec2(1.0, 0.0)), u.x),\\n               mix(hash(i + vec2(0.0, 1.0)), \\n                   hash(i + vec2(1.0, 1.0)), u.x), u.y);\\n}\\n\\n// for npm package, need to add this manually\\nfloat linearToRelativeLuminance2( const in vec3 color ) {\\n    vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n    return dot( weights, color.rgb );\\n}\\n\\nvoid main() {\\n\\n  //-------- Cosmic Holographic Gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  \\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.2; // More reflective for holographic effect\\n\\n  #include <clipping_planes_fragment>\\n\\n  float t = uTime * uSpeed;\\n  \\n  // Create holographic interference patterns\\n  float interference1 = sin(vPos.x * 20.0 + t * 3.0) * cos(vPos.y * 15.0 + t * 2.0);\\n  float interference2 = sin(vPos.x * 35.0 + t * 4.0) * sin(vPos.y * 30.0 + t * 3.5);\\n  float interference3 = cos(vPos.x * 50.0 + t * 5.0) * cos(vPos.y * 45.0 + t * 4.5);\\n  \\n  // Combine interference patterns\\n  float holographicPattern = (interference1 + interference2 * 0.5 + interference3 * 0.25) / 1.75;\\n  \\n  // Create cosmic shimmer effect\\n  float shimmer = noise2D(vPos.xy * 40.0 + t * 2.0) * 0.3;\\n  float cosmicGlow = noise2D(vPos.xy * 8.0 + t * 0.5) * 0.5;\\n  \\n  // Holographic color shifting\\n  vec3 holographicShift = vec3(\\n    sin(vPos.x * 10.0 + t * 2.0 + 0.0) * 0.1,\\n    sin(vPos.x * 10.0 + t * 2.0 + 2.094) * 0.1,  // 120 degrees\\n    sin(vPos.x * 10.0 + t * 2.0 + 4.188) * 0.1   // 240 degrees\\n  );\\n  \\n  // Enhanced gradient mixing with cosmic effects\\n  float gradientX = smoothstep(-4.0, 4.0, vPos.x + holographicPattern * 2.0);\\n  float gradientY = smoothstep(-4.0, 4.0, vPos.y + vCosmicWave * 1.5);\\n  float gradientZ = smoothstep(-2.0, 2.0, vPos.z + shimmer);\\n  \\n  // Multi-layer color mixing for depth\\n  vec3 baseGradient = mix(\\n    mix(color1, color2, gradientX), \\n    color3, \\n    gradientY * 0.7 + gradientZ * 0.3\\n  );\\n  \\n  // Apply holographic color shifts\\n  vec3 holographicColor = baseGradient + holographicShift;\\n  \\n  // Add cosmic glow and shimmer\\n  vec3 cosmicEnhancement = vec3(\\n    cosmicGlow * 0.2,\\n    shimmer * 0.15,\\n    (cosmicGlow + shimmer) * 0.1\\n  );\\n  \\n  // Holographic intensity modulation\\n  float intensityMod = 1.0 + vHolographicIntensity * 0.5 + abs(holographicPattern) * 0.3;\\n  \\n  // Final color with cosmic and holographic effects\\n  vec3 finalColor = (holographicColor + cosmicEnhancement) * intensityMod;\\n  \\n  // Add subtle iridescence\\n  float iridescence = sin(vPos.x * 25.0 + t * 3.0) * cos(vPos.y * 20.0 + t * 2.5) * 0.1;\\n  finalColor += vec3(iridescence * 0.2, iridescence * 0.3, iridescence * 0.4);\\n\\n  vec4 diffuseColor = vec4(finalColor, 1.0);\\n\\n  //-------- Enhanced Materiality for Holographic Effect ------------\\n  ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive + finalColor * 0.1; // Add some emission for glow\\n\\n  #ifdef TRANSMISSION\\n    float totalTransmission = transmission;\\n  #endif\\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  #include <lights_physical_fragment>\\n  #include <lights_fragment_begin>\\n  #include <lights_fragment_maps>\\n  #include <lights_fragment_end>\\n  #include <aomap_fragment>\\n  \\n  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n                      reflectedLight.directSpecular + reflectedLight.indirectSpecular +\\n                      totalEmissiveRadiance;\\n\\n  #ifdef TRANSMISSION\\n    diffuseColor.a *= mix(saturate(1. - totalTransmission +\\n                        linearToRelativeLuminance2(reflectedLight.directSpecular +\\n                                                  reflectedLight.indirectSpecular)),\\n                1.0, metalness);\\n  #endif\\n\\n  #include <tonemapping_fragment>\\n  #include <encodings_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n}\\n\";\n    vertex_default10 = \"// Cosmic Plane Vertex Shader - Holographic Effect\\n// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\n\\n// noise source from https://github.com/hughsk/glsl-noise/blob/master/periodic/3d.glsl\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- Holographic Effect Functions ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nmat3 rotation3dX(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(1.0, 0.0, 0.0, 0.0, c, s, 0.0, -s, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\nvec3 rotateX(vec3 v, float angle) { return rotation3dX(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying float vHolographicIntensity;\\nvarying float vCosmicWave;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uLoadingTime;\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- Cosmic Holographic Effect ------------\\n  vUv = uv;\\n  \\n  float t = uTime * uSpeed;\\n  \\n  // Create holographic interference patterns\\n  float holographicPattern = sin(position.x * 15.0 + t * 2.0) * \\n                            sin(position.y * 12.0 + t * 1.5) * 0.1;\\n  \\n  // Cosmic wave distortion\\n  float cosmicWave = cnoise(position * uNoiseDensity * 0.5 + vec3(t * 0.3, t * 0.2, t * 0.4));\\n  vCosmicWave = cosmicWave;\\n  \\n  // Multi-layer noise for depth\\n  float noise1 = cnoise(position * uNoiseDensity * 2.0 + t * 0.8);\\n  float noise2 = cnoise(position * uNoiseDensity * 0.3 + t * 0.2) * 0.5;\\n  float noise3 = cnoise(position * uNoiseDensity * 4.0 + t * 1.2) * 0.25;\\n  \\n  float combinedNoise = noise1 + noise2 + noise3;\\n  \\n  // Holographic shimmer effect\\n  float shimmer = sin(position.x * 30.0 + t * 4.0) * \\n                  cos(position.y * 25.0 + t * 3.0) * 0.05;\\n  \\n  // Calculate holographic intensity for fragment shader\\n  vHolographicIntensity = abs(holographicPattern) + abs(shimmer) * 2.0;\\n  \\n  // Apply displacement with holographic and cosmic effects\\n  float totalDisplacement = (combinedNoise + holographicPattern + shimmer) * uNoiseStrength * uLoadingTime;\\n  \\n  vec3 pos = position + normal * totalDisplacement;\\n  vPos = pos;\\n  \\n  // Add subtle rotation effect for cosmic feel\\n  pos = rotateY(pos, sin(t * 0.1) * 0.05);\\n  pos = rotateX(pos, cos(t * 0.07) * 0.03);\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-PBBG73XU.mjs\nvar sphere_exports4, fragment_default11, vertex_default11;\nvar init_chunk_PBBG73XU = __esm({\n  \"../shadergradient/dist/chunk-PBBG73XU.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    sphere_exports4 = {};\n    __export(sphere_exports4, {\n      fragment: () => fragment_default11,\n      vertex: () => vertex_default11\n    });\n    fragment_default11 = \"// Cosmic Sphere Fragment Shader - Nebula Particle Effect\\n\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying float vNebulaIntensity;\\nvarying float vParticleDensity;\\nvarying vec3 vCosmicSwirl;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\n\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\n// Nebula helper functions\\nfloat hash(vec2 p) {\\n    return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);\\n}\\n\\nfloat noise2D(vec2 p) {\\n    vec2 i = floor(p);\\n    vec2 f = fract(p);\\n    vec2 u = f * f * (3.0 - 2.0 * f);\\n    \\n    return mix(mix(hash(i + vec2(0.0, 0.0)), \\n                   hash(i + vec2(1.0, 0.0)), u.x),\\n               mix(hash(i + vec2(0.0, 1.0)), \\n                   hash(i + vec2(1.0, 1.0)), u.x), u.y);\\n}\\n\\n// Fractal Brownian Motion for complex nebula patterns\\nfloat fbm(vec2 p) {\\n    float value = 0.0;\\n    float amplitude = 0.5;\\n    float frequency = 1.0;\\n    \\n    for(int i = 0; i < 5; i++) {\\n        value += amplitude * noise2D(p * frequency);\\n        amplitude *= 0.5;\\n        frequency *= 2.0;\\n    }\\n    return value;\\n}\\n\\n// Star field generation\\nfloat stars(vec2 p, float density) {\\n    vec2 n = floor(p * density);\\n    vec2 f = fract(p * density);\\n    \\n    float d = 1.0;\\n    for(int i = -1; i <= 1; i++) {\\n        for(int j = -1; j <= 1; j++) {\\n            vec2 g = vec2(float(i), float(j));\\n            vec2 o = hash(n + g) * vec2(1.0);\\n            vec2 r = g + o - f;\\n            d = min(d, dot(r, r));\\n        }\\n    }\\n    \\n    return 1.0 - smoothstep(0.0, 0.02, sqrt(d));\\n}\\n\\n// for npm package, need to add this manually\\nfloat linearToRelativeLuminance2( const in vec3 color ) {\\n    vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n    return dot( weights, color.rgb );\\n}\\n\\nvoid main() {\\n\\n  //-------- Cosmic Nebula Gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  \\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.1; // Very reflective for cosmic shine\\n\\n  #include <clipping_planes_fragment>\\n\\n  float t = uTime * uSpeed;\\n  \\n  // Calculate distance from center for radial effects\\n  float distanceFromCenter = length(vPos);\\n  float angle = atan(vPos.y, vPos.x);\\n  \\n  // Create complex nebula patterns using FBM\\n  vec2 nebulaCoords = vPos.xy * 3.0 + vCosmicSwirl.xy;\\n  float nebulaPattern1 = fbm(nebulaCoords + t * 0.1);\\n  float nebulaPattern2 = fbm(nebulaCoords * 2.0 + t * 0.15);\\n  float nebulaPattern3 = fbm(nebulaCoords * 4.0 + t * 0.2);\\n  \\n  // Combine nebula patterns\\n  float combinedNebula = (nebulaPattern1 + nebulaPattern2 * 0.5 + nebulaPattern3 * 0.25) / 1.75;\\n  \\n  // Create particle-like bright spots\\n  float particleField = stars(vPos.xy * 20.0 + t * 0.5, 50.0);\\n  float microParticles = stars(vPos.xy * 80.0 + t * 1.0, 200.0) * 0.5;\\n  \\n  // Create cosmic dust clouds\\n  float dustClouds = fbm(vPos.xy * 8.0 + t * 0.05) * 0.3;\\n  \\n  // Energy streams\\n  float energyStream1 = sin(vPos.x * 15.0 + t * 3.0 + angle * 2.0) * 0.1;\\n  float energyStream2 = cos(vPos.y * 20.0 + t * 2.5 + distanceFromCenter * 5.0) * 0.1;\\n  \\n  // Cosmic gradient mixing with nebula influence\\n  float gradientX = smoothstep(-3.0, 3.0, vPos.x + combinedNebula * 2.0 + vCosmicSwirl.x * 3.0);\\n  float gradientY = smoothstep(-3.0, 3.0, vPos.y + vNebulaIntensity * 1.5 + vCosmicSwirl.y * 2.0);\\n  float gradientZ = smoothstep(-2.0, 2.0, vPos.z + dustClouds * 2.0);\\n  \\n  // Multi-layer color mixing\\n  vec3 baseGradient = mix(\\n    mix(color1, color2, gradientX), \\n    color3, \\n    gradientY * 0.6 + gradientZ * 0.4\\n  );\\n  \\n  // Add nebula color variations\\n  vec3 nebulaColor = baseGradient;\\n  nebulaColor.r += combinedNebula * 0.3 + energyStream1;\\n  nebulaColor.g += vNebulaIntensity * 0.2 + energyStream2;\\n  nebulaColor.b += dustClouds * 0.4 + abs(vCosmicSwirl.z) * 0.5;\\n  \\n  // Add particle brightness\\n  vec3 particleGlow = vec3(\\n    particleField * 0.8 + microParticles * 0.4,\\n    particleField * 0.6 + microParticles * 0.3,\\n    particleField * 0.9 + microParticles * 0.5\\n  );\\n  \\n  // Create pulsing cosmic energy\\n  float cosmicPulse = sin(t * 1.5 + distanceFromCenter * 3.0) * 0.1 + 1.0;\\n  \\n  // Combine all effects\\n  vec3 finalColor = (nebulaColor + particleGlow * 2.0) * cosmicPulse;\\n  \\n  // Add cosmic rim lighting effect\\n  float rimLight = pow(1.0 - abs(dot(normalize(vNormal), normalize(vViewPosition))), 2.0);\\n  finalColor += rimLight * 0.3 * (color1 + color2 + color3) / 3.0;\\n  \\n  // Enhance particle density areas\\n  finalColor = mix(finalColor, finalColor * 1.5, vParticleDensity * 0.5);\\n  \\n  // Add subtle color temperature variation\\n  float temperature = sin(angle * 3.0 + t * 0.8) * 0.1;\\n  finalColor.r += temperature * 0.1;\\n  finalColor.b -= temperature * 0.1;\\n\\n  vec4 diffuseColor = vec4(finalColor, 1.0);\\n\\n  //-------- Enhanced Materiality for Cosmic Effect ------------\\n  ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive + finalColor * 0.2; // Strong emission for nebula glow\\n\\n  #ifdef TRANSMISSION\\n    float totalTransmission = transmission;\\n  #endif\\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  #include <lights_physical_fragment>\\n  #include <lights_fragment_begin>\\n  #include <lights_fragment_maps>\\n  #include <lights_fragment_end>\\n  #include <aomap_fragment>\\n  \\n  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n                      reflectedLight.directSpecular + reflectedLight.indirectSpecular +\\n                      totalEmissiveRadiance;\\n\\n  #ifdef TRANSMISSION\\n    diffuseColor.a *= mix(saturate(1. - totalTransmission +\\n                        linearToRelativeLuminance2(reflectedLight.directSpecular +\\n                                                  reflectedLight.indirectSpecular)),\\n                1.0, metalness);\\n  #endif\\n\\n  #include <tonemapping_fragment>\\n  #include <encodings_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n}\\n\";\n    vertex_default11 = \"// Cosmic Sphere Vertex Shader - Nebula Effect\\n// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\n\\n// noise source from https://github.com/hughsk/glsl-noise/blob/master/periodic/3d.glsl\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- Nebula Effect Functions ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nmat3 rotation3dX(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(1.0, 0.0, 0.0, 0.0, c, s, 0.0, -s, c);\\n}\\n\\nmat3 rotation3dZ(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(c, s, 0.0, -s, c, 0.0, 0.0, 0.0, 1.0);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\nvec3 rotateX(vec3 v, float angle) { return rotation3dX(angle) * v; }\\nvec3 rotateZ(vec3 v, float angle) { return rotation3dZ(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying float vNebulaIntensity;\\nvarying float vParticleDensity;\\nvarying vec3 vCosmicSwirl;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uLoadingTime;\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- Cosmic Nebula Effect ------------\\n  vUv = uv;\\n  \\n  float t = uTime * uSpeed;\\n  \\n  // Create swirling nebula patterns\\n  vec3 swirlCenter = vec3(0.0, 0.0, 0.0);\\n  vec3 toCenter = position - swirlCenter;\\n  float distanceFromCenter = length(toCenter);\\n  \\n  // Create spiral motion\\n  float angle = atan(toCenter.y, toCenter.x);\\n  float spiralAngle = angle + distanceFromCenter * 2.0 + t * 0.5;\\n  \\n  // Multi-octave noise for nebula density\\n  float nebula1 = cnoise(position * uNoiseDensity * 0.8 + vec3(t * 0.2, t * 0.3, t * 0.1));\\n  float nebula2 = cnoise(position * uNoiseDensity * 1.5 + vec3(t * 0.4, t * 0.2, t * 0.5)) * 0.7;\\n  float nebula3 = cnoise(position * uNoiseDensity * 3.0 + vec3(t * 0.8, t * 0.6, t * 0.9)) * 0.4;\\n  float nebula4 = cnoise(position * uNoiseDensity * 6.0 + vec3(t * 1.2, t * 1.0, t * 1.4)) * 0.2;\\n  \\n  // Combine nebula layers for complexity\\n  float nebulaPattern = nebula1 + nebula2 + nebula3 + nebula4;\\n  vNebulaIntensity = abs(nebulaPattern);\\n  \\n  // Create particle-like density variations\\n  float particleDensity = cnoise(position * uNoiseDensity * 8.0 + vec3(t * 2.0, t * 1.5, t * 2.5));\\n  vParticleDensity = smoothstep(-0.3, 0.8, particleDensity);\\n  \\n  // Create cosmic swirl effect\\n  vec3 swirl = vec3(\\n    sin(spiralAngle + t * 0.3) * distanceFromCenter * 0.1,\\n    cos(spiralAngle + t * 0.2) * distanceFromCenter * 0.1,\\n    sin(distanceFromCenter * 3.0 + t * 0.4) * 0.05\\n  );\\n  vCosmicSwirl = swirl;\\n  \\n  // Create pulsing effect for cosmic energy\\n  float pulse = sin(t * 2.0 + distanceFromCenter * 5.0) * 0.1 + 1.0;\\n  \\n  // Apply complex displacement\\n  float totalDisplacement = nebulaPattern * uNoiseStrength * uLoadingTime * pulse;\\n  \\n  // Add swirl displacement\\n  vec3 pos = position + normal * totalDisplacement + swirl * 0.3;\\n  vPos = pos;\\n  \\n  // Add cosmic rotation for dynamic feel\\n  pos = rotateY(pos, sin(t * 0.1 + distanceFromCenter) * 0.1);\\n  pos = rotateX(pos, cos(t * 0.08 + angle) * 0.08);\\n  pos = rotateZ(pos, sin(t * 0.05 + spiralAngle) * 0.05);\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-6ZGZBJSV.mjs\nvar waterPlane_exports4, fragment_default12, vertex_default12;\nvar init_chunk_6ZGZBJSV = __esm({\n  \"../shadergradient/dist/chunk-6ZGZBJSV.mjs\"() {\n    init_chunk_5BEQP2BQ();\n    waterPlane_exports4 = {};\n    __export(waterPlane_exports4, {\n      fragment: () => fragment_default12,\n      vertex: () => vertex_default12\n    });\n    fragment_default12 = \"// Cosmic WaterPlane Fragment Shader - Aurora Wave Effect\\n\\n#define STANDARD\\n#ifdef PHYSICAL\\n#define REFLECTIVITY\\n#define CLEARCOAT\\n#define TRANSMISSION\\n#endif\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n\\n#ifdef TRANSMISSION\\nuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\nuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\nuniform float clearcoat;\\nuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\nuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <color_pars_fragment>\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <map_pars_fragment>\\n#include <packing>\\n#include <uv2_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <bsdfs>\\n#include <bumpmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <lights_physical_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying float vAuroraIntensity;\\nvarying float vWaveHeight;\\nvarying vec3 vFlowDirection;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\n\\nuniform float uC1r;\\nuniform float uC1g;\\nuniform float uC1b;\\nuniform float uC2r;\\nuniform float uC2g;\\nuniform float uC2b;\\nuniform float uC3r;\\nuniform float uC3g;\\nuniform float uC3b;\\n\\n// Aurora helper functions\\nfloat hash(vec2 p) {\\n    return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);\\n}\\n\\nfloat noise2D(vec2 p) {\\n    vec2 i = floor(p);\\n    vec2 f = fract(p);\\n    vec2 u = f * f * (3.0 - 2.0 * f);\\n    \\n    return mix(mix(hash(i + vec2(0.0, 0.0)), \\n                   hash(i + vec2(1.0, 0.0)), u.x),\\n               mix(hash(i + vec2(0.0, 1.0)), \\n                   hash(i + vec2(1.0, 1.0)), u.x), u.y);\\n}\\n\\n// Fractal Brownian Motion for aurora patterns\\nfloat fbm(vec2 p) {\\n    float value = 0.0;\\n    float amplitude = 0.5;\\n    float frequency = 1.0;\\n    \\n    for(int i = 0; i < 4; i++) {\\n        value += amplitude * noise2D(p * frequency);\\n        amplitude *= 0.5;\\n        frequency *= 2.0;\\n    }\\n    return value;\\n}\\n\\n// Aurora curtain effect\\nfloat aurora(vec2 p, float time) {\\n    vec2 q = vec2(fbm(p + vec2(0.0, time * 0.1)),\\n                  fbm(p + vec2(5.2, time * 0.15)));\\n    \\n    vec2 r = vec2(fbm(p + 4.0 * q + vec2(1.7, time * 0.2)),\\n                  fbm(p + 4.0 * q + vec2(8.3, time * 0.18)));\\n    \\n    return fbm(p + 4.0 * r);\\n}\\n\\n// Water caustics effect\\nfloat caustics(vec2 p, float time) {\\n    vec2 uv = p * 4.0;\\n    vec2 p0 = uv + vec2(time * 0.3, time * 0.2);\\n    vec2 p1 = uv + vec2(time * -0.4, time * 0.3);\\n    \\n    float c1 = sin(length(p0) * 8.0 - time * 2.0) * 0.5 + 0.5;\\n    float c2 = sin(length(p1) * 6.0 - time * 1.5) * 0.5 + 0.5;\\n    \\n    return (c1 + c2) * 0.5;\\n}\\n\\n// for npm package, need to add this manually\\nfloat linearToRelativeLuminance2( const in vec3 color ) {\\n    vec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n    return dot( weights, color.rgb );\\n}\\n\\nvoid main() {\\n\\n  //-------- Cosmic Aurora Water Gradient ------------\\n  vec3 color1 = vec3(uC1r, uC1g, uC1b);\\n  vec3 color2 = vec3(uC2r, uC2g, uC2b);\\n  vec3 color3 = vec3(uC3r, uC3g, uC3b);\\n  \\n  float clearcoat = 1.0;\\n  float clearcoatRoughness = 0.05; // Very smooth for water-like reflection\\n\\n  #include <clipping_planes_fragment>\\n\\n  float t = uTime * uSpeed;\\n  \\n  // Create aurora patterns\\n  vec2 auroraCoords = vPos.xy * 2.0 + vFlowDirection.xy * t * 0.5;\\n  float auroraPattern1 = aurora(auroraCoords, t);\\n  float auroraPattern2 = aurora(auroraCoords * 1.5 + vec2(3.0, 1.0), t * 1.2);\\n  float auroraPattern3 = aurora(auroraCoords * 0.7 + vec2(-2.0, 4.0), t * 0.8);\\n  \\n  // Combine aurora layers\\n  float combinedAurora = (auroraPattern1 + auroraPattern2 * 0.7 + auroraPattern3 * 0.5) / 2.2;\\n  \\n  // Create water caustics\\n  float causticsPattern = caustics(vPos.xy, t);\\n  \\n  // Create flowing light streams\\n  float lightStream1 = sin(vPos.x * 8.0 + t * 2.0 + combinedAurora * 3.0) * 0.2;\\n  float lightStream2 = cos(vPos.y * 6.0 + t * 1.5 + vWaveHeight * 4.0) * 0.15;\\n  float lightStream3 = sin((vPos.x + vPos.y) * 10.0 + t * 2.5) * 0.1;\\n  \\n  // Create cosmic energy waves\\n  float distanceFromCenter = length(vPos.xy);\\n  float energyWave = sin(distanceFromCenter * 5.0 - t * 3.0) * \\n                     exp(-distanceFromCenter * 0.05) * 0.3;\\n  \\n  // Aurora color shifting effect\\n  vec3 auroraShift = vec3(\\n    sin(combinedAurora * 6.28 + t * 1.0) * 0.2,\\n    sin(combinedAurora * 6.28 + t * 1.0 + 2.094) * 0.2,  // 120 degrees\\n    sin(combinedAurora * 6.28 + t * 1.0 + 4.188) * 0.2   // 240 degrees\\n  );\\n  \\n  // Enhanced gradient mixing with aurora and water effects\\n  float gradientX = smoothstep(-4.0, 4.0, vPos.x + combinedAurora * 3.0 + vFlowDirection.x * 2.0);\\n  float gradientY = smoothstep(-4.0, 4.0, vPos.y + vWaveHeight * 2.0 + lightStream1 * 3.0);\\n  float gradientZ = smoothstep(-3.0, 3.0, vPos.z + causticsPattern * 2.0);\\n  \\n  // Multi-layer color mixing\\n  vec3 baseGradient = mix(\\n    mix(color1, color2, gradientX), \\n    color3, \\n    gradientY * 0.7 + gradientZ * 0.3\\n  );\\n  \\n  // Apply aurora color shifts\\n  vec3 auroraColor = baseGradient + auroraShift;\\n  \\n  // Add water caustics coloring\\n  vec3 causticsColor = vec3(\\n    causticsPattern * 0.3,\\n    causticsPattern * 0.4,\\n    causticsPattern * 0.5\\n  );\\n  \\n  // Add light streams\\n  vec3 lightStreams = vec3(\\n    abs(lightStream1) * 0.4,\\n    abs(lightStream2) * 0.3,\\n    abs(lightStream3) * 0.5\\n  );\\n  \\n  // Aurora intensity modulation\\n  float auroraIntensityMod = 1.0 + vAuroraIntensity * 0.8 + abs(combinedAurora) * 0.6;\\n  \\n  // Combine all effects\\n  vec3 finalColor = (auroraColor + causticsColor + lightStreams + vec3(energyWave * 0.2)) * auroraIntensityMod;\\n  \\n  // Add water-like shimmer\\n  float shimmer = sin(vPos.x * 20.0 + t * 4.0) * \\n                  cos(vPos.y * 18.0 + t * 3.5) * \\n                  vWaveHeight * 0.1;\\n  finalColor += vec3(shimmer * 0.3, shimmer * 0.4, shimmer * 0.6);\\n  \\n  // Add aurora dancing effect\\n  float auroraMovement = sin(vPos.x * 3.0 + t * 1.2 + combinedAurora * 2.0) * \\n                         cos(vPos.y * 2.5 + t * 0.9) * 0.15;\\n  finalColor.g += abs(auroraMovement) * 0.4;\\n  finalColor.b += abs(auroraMovement) * 0.2;\\n  \\n  // Add cosmic depth variation\\n  float depthVariation = noise2D(vPos.xy * 5.0 + t * 0.3) * 0.1;\\n  finalColor *= (1.0 + depthVariation);\\n\\n  vec4 diffuseColor = vec4(finalColor, 1.0);\\n\\n  //-------- Enhanced Materiality for Water Aurora Effect ------------\\n  ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\\n  vec3 totalEmissiveRadiance = emissive + finalColor * 0.15; // Moderate emission for aurora glow\\n\\n  #ifdef TRANSMISSION\\n    float totalTransmission = transmission;\\n  #endif\\n  #include <logdepthbuf_fragment>\\n  #include <map_fragment>\\n  #include <color_fragment>\\n  #include <alphamap_fragment>\\n  #include <alphatest_fragment>\\n  #include <roughnessmap_fragment>\\n  #include <metalnessmap_fragment>\\n  #include <normal_fragment_begin>\\n  #include <normal_fragment_maps>\\n  #include <clearcoat_normal_fragment_begin>\\n  #include <clearcoat_normal_fragment_maps>\\n  #include <emissivemap_fragment>\\n  #include <lights_physical_fragment>\\n  #include <lights_fragment_begin>\\n  #include <lights_fragment_maps>\\n  #include <lights_fragment_end>\\n  #include <aomap_fragment>\\n  \\n  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse +\\n                      reflectedLight.directSpecular + reflectedLight.indirectSpecular +\\n                      totalEmissiveRadiance;\\n\\n  #ifdef TRANSMISSION\\n    diffuseColor.a *= mix(saturate(1. - totalTransmission +\\n                        linearToRelativeLuminance2(reflectedLight.directSpecular +\\n                                                  reflectedLight.indirectSpecular)),\\n                1.0, metalness);\\n  #endif\\n\\n  #include <tonemapping_fragment>\\n  #include <encodings_fragment>\\n  #include <fog_fragment>\\n  #include <premultiplied_alpha_fragment>\\n  #include <dithering_fragment>\\n\\n  gl_FragColor = vec4(outgoingLight, diffuseColor.a);\\n}\\n\";\n    vertex_default12 = \"// Cosmic WaterPlane Vertex Shader - Aurora Wave Effect\\n// #pragma glslify: cnoise3 = require(glsl-noise/classic/3d) \\n\\n// noise source from https://github.com/hughsk/glsl-noise/blob/master/periodic/3d.glsl\\n\\nvec3 mod289(vec3 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 mod289(vec4 x)\\n{\\n  return x - floor(x * (1.0 / 289.0)) * 289.0;\\n}\\n\\nvec4 permute(vec4 x)\\n{\\n  return mod289(((x*34.0)+1.0)*x);\\n}\\n\\nvec4 taylorInvSqrt(vec4 r)\\n{\\n  return 1.79284291400159 - 0.85373472095314 * r;\\n}\\n\\nvec3 fade(vec3 t) {\\n  return t*t*t*(t*(t*6.0-15.0)+10.0);\\n}\\n\\nfloat cnoise(vec3 P)\\n{\\n  vec3 Pi0 = floor(P); // Integer part for indexing\\n  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\\n  Pi0 = mod289(Pi0);\\n  Pi1 = mod289(Pi1);\\n  vec3 Pf0 = fract(P); // Fractional part for interpolation\\n  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\\n  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\\n  vec4 iy = vec4(Pi0.yy, Pi1.yy);\\n  vec4 iz0 = Pi0.zzzz;\\n  vec4 iz1 = Pi1.zzzz;\\n\\n  vec4 ixy = permute(permute(ix) + iy);\\n  vec4 ixy0 = permute(ixy + iz0);\\n  vec4 ixy1 = permute(ixy + iz1);\\n\\n  vec4 gx0 = ixy0 * (1.0 / 7.0);\\n  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\\n  gx0 = fract(gx0);\\n  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\\n  vec4 sz0 = step(gz0, vec4(0.0));\\n  gx0 -= sz0 * (step(0.0, gx0) - 0.5);\\n  gy0 -= sz0 * (step(0.0, gy0) - 0.5);\\n\\n  vec4 gx1 = ixy1 * (1.0 / 7.0);\\n  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\\n  gx1 = fract(gx1);\\n  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\\n  vec4 sz1 = step(gz1, vec4(0.0));\\n  gx1 -= sz1 * (step(0.0, gx1) - 0.5);\\n  gy1 -= sz1 * (step(0.0, gy1) - 0.5);\\n\\n  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\\n  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\\n  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\\n  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\\n  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\\n  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\\n  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\\n  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\\n\\n  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\\n  g000 *= norm0.x;\\n  g010 *= norm0.y;\\n  g100 *= norm0.z;\\n  g110 *= norm0.w;\\n  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\\n  g001 *= norm1.x;\\n  g011 *= norm1.y;\\n  g101 *= norm1.z;\\n  g111 *= norm1.w;\\n\\n  float n000 = dot(g000, Pf0);\\n  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\\n  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\\n  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\\n  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\\n  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\\n  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\\n  float n111 = dot(g111, Pf1);\\n\\n  vec3 fade_xyz = fade(Pf0);\\n  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\\n  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\\n  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \\n  return 2.2 * n_xyz;\\n}\\n\\n//-------- Aurora Wave Effect Functions ------------\\n\\nmat3 rotation3dY(float angle) {\\n  float s = sin(angle);\\n  float c = cos(angle);\\n  return mat3(c, 0.0, -s, 0.0, 1.0, 0.0, s, 0.0, c);\\n}\\n\\nvec3 rotateY(vec3 v, float angle) { return rotation3dY(angle) * v; }\\n\\nvarying vec3 vNormal;\\nvarying float displacement;\\nvarying vec3 vPos;\\nvarying float vDistort;\\nvarying vec2 vUv;\\nvarying float vAuroraIntensity;\\nvarying float vWaveHeight;\\nvarying vec3 vFlowDirection;\\n\\nuniform float uTime;\\nuniform float uSpeed;\\nuniform float uLoadingTime;\\nuniform float uNoiseDensity;\\nuniform float uNoiseStrength;\\n\\n#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n#ifdef USE_TANGENT\\nvarying vec3 vTangent;\\nvarying vec3 vBitangent;\\n#endif\\n#endif\\n#include <clipping_planes_pars_vertex>\\n#include <color_pars_vertex>\\n#include <common>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <uv_pars_vertex>\\n\\nvoid main() {\\n\\n  #include <beginnormal_vertex>\\n  #include <color_vertex>\\n  #include <defaultnormal_vertex>\\n  #include <morphnormal_vertex>\\n  #include <skinbase_vertex>\\n  #include <skinnormal_vertex>\\n  #include <uv2_vertex>\\n  #include <uv_vertex>\\n  #ifndef FLAT_SHADED\\n    vNormal = normalize(transformedNormal);\\n  #ifdef USE_TANGENT\\n    vTangent = normalize(transformedTangent);\\n    vBitangent = normalize(cross(vNormal, vTangent) * tangent.w);\\n  #endif\\n  #endif\\n  #include <begin_vertex>\\n\\n  #include <clipping_planes_vertex>\\n  #include <displacementmap_vertex>\\n  #include <logdepthbuf_vertex>\\n  #include <morphtarget_vertex>\\n  #include <project_vertex>\\n  #include <skinning_vertex>\\n    vViewPosition = -mvPosition.xyz;\\n  #include <fog_vertex>\\n  #include <shadowmap_vertex>\\n  #include <worldpos_vertex>\\n\\n  //-------- Cosmic Aurora Wave Effect ------------\\n  vUv = uv;\\n  \\n  float t = uTime * uSpeed;\\n  \\n  // Create flowing aurora patterns\\n  float auroraFlow1 = sin(position.x * 5.0 + t * 1.5) * cos(position.y * 3.0 + t * 1.0);\\n  float auroraFlow2 = sin(position.x * 8.0 + t * 2.0) * sin(position.y * 6.0 + t * 1.8);\\n  float auroraFlow3 = cos(position.x * 12.0 + t * 2.5) * cos(position.y * 9.0 + t * 2.2);\\n  \\n  // Combine aurora flows\\n  float auroraPattern = (auroraFlow1 + auroraFlow2 * 0.7 + auroraFlow3 * 0.4) / 2.1;\\n  vAuroraIntensity = abs(auroraPattern);\\n  \\n  // Create multi-layered waves\\n  float wave1 = cnoise(vec3(position.xy * uNoiseDensity * 0.5, t * 0.3));\\n  float wave2 = cnoise(vec3(position.xy * uNoiseDensity * 1.2, t * 0.5)) * 0.6;\\n  float wave3 = cnoise(vec3(position.xy * uNoiseDensity * 2.5, t * 0.8)) * 0.3;\\n  float wave4 = cnoise(vec3(position.xy * uNoiseDensity * 5.0, t * 1.2)) * 0.15;\\n  \\n  // Combine waves for complex water surface\\n  float combinedWaves = wave1 + wave2 + wave3 + wave4;\\n  vWaveHeight = combinedWaves;\\n  \\n  // Create flowing current patterns\\n  vec2 flowDirection = vec2(\\n    sin(position.x * 2.0 + t * 0.8) + cos(position.y * 1.5 + t * 0.6),\\n    cos(position.x * 1.8 + t * 0.7) + sin(position.y * 2.2 + t * 0.9)\\n  );\\n  vFlowDirection = vec3(normalize(flowDirection), 0.0);\\n  \\n  // Aurora-influenced wave distortion\\n  float auroraWave = sin(position.x * 15.0 + t * 3.0 + auroraPattern * 5.0) * \\n                     cos(position.y * 12.0 + t * 2.5 + auroraPattern * 4.0) * 0.2;\\n  \\n  // Create cosmic energy ripples\\n  float distanceFromCenter = length(position.xy);\\n  float cosmicRipple = sin(distanceFromCenter * 8.0 - t * 4.0) * \\n                       exp(-distanceFromCenter * 0.1) * 0.3;\\n  \\n  // Pulsing effect for cosmic energy\\n  float cosmicPulse = sin(t * 1.5 + distanceFromCenter * 2.0) * 0.1 + 1.0;\\n  \\n  // Apply complex displacement\\n  float totalDisplacement = (combinedWaves + auroraWave + cosmicRipple) * \\n                           uNoiseStrength * uLoadingTime * cosmicPulse;\\n  \\n  vec3 pos = position + normal * totalDisplacement;\\n  vPos = pos;\\n  \\n  // Add subtle rotation for cosmic flow\\n  pos = rotateY(pos, sin(t * 0.05 + distanceFromCenter * 0.1) * 0.02);\\n\\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\\n}\\n\";\n  }\n});\n\n// ../shadergradient/dist/chunk-GLLM6F27.mjs\nvar cosmic_exports;\nvar init_chunk_GLLM6F27 = __esm({\n  \"../shadergradient/dist/chunk-GLLM6F27.mjs\"() {\n    init_chunk_UDZCNACG();\n    init_chunk_PBBG73XU();\n    init_chunk_6ZGZBJSV();\n    init_chunk_5BEQP2BQ();\n    cosmic_exports = {};\n    __export(cosmic_exports, {\n      plane: () => plane_exports4,\n      sphere: () => sphere_exports4,\n      waterPlane: () => waterPlane_exports4\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-BO6EQTP3.mjs\nvar shaders_exports;\nvar init_chunk_BO6EQTP3 = __esm({\n  \"../shadergradient/dist/chunk-BO6EQTP3.mjs\"() {\n    init_chunk_4GZNORIL();\n    init_chunk_R4TL5TQS();\n    init_chunk_H2RSKIPT();\n    init_chunk_GLLM6F27();\n    init_chunk_5BEQP2BQ();\n    shaders_exports = {};\n    __export(shaders_exports, {\n      cosmic: () => cosmic_exports,\n      defaults: () => defaults_exports,\n      glass: () => glass_exports,\n      positionMix: () => positionMix_exports\n    });\n  }\n});\n\n// ../shadergradient/dist/chunk-QRRZJ6IM.mjs\nvar debugState, debug;\nvar init_chunk_QRRZJ6IM = __esm({\n  \"../shadergradient/dist/chunk-QRRZJ6IM.mjs\"() {\n    debugState = {\n      performance: false,\n      render: true\n    };\n    debug = {\n      enable: (category) => {\n        debugState[category] = true;\n      },\n      disable: (category) => {\n        debugState[category] = false;\n      },\n      enableAll: () => {\n        Object.keys(debugState).forEach((key) => {\n          debugState[key] = true;\n        });\n      },\n      disableAll: () => {\n        Object.keys(debugState).forEach((key) => {\n          debugState[key] = false;\n        });\n      },\n      performance: (...args) => {\n        if (debugState.performance) {\n          console.log(\"[Performance]\", ...args);\n        }\n      },\n      render: (...args) => {\n        if (debugState.render) {\n          console.log(\"[Render]\", ...args);\n        }\n      }\n    };\n    if (typeof window !== \"undefined\") {\n      window.debug = debug;\n    }\n  }\n});\n\n// ../shadergradient/dist/chunk-ULEV7Y7T.mjs\nfunction dToR(d) {\n  return d / 180 * Math.PI;\n}\nfunction dToRArr(degrees) {\n  return degrees.map((d) => dToR(d));\n}\nfunction formatUrlString(urlString) {\n  return urlString.replace(\"http://localhost:3001/customize\", \"\").replace(\"https://shadergradient.co/customize\", \"\").replace(\"https://www.shadergradient.co/customize\", \"\");\n}\nfunction formatFramerProps(_a3) {\n  var _b2 = _a3, {\n    position,\n    rotation,\n    cameraAngle,\n    noise,\n    canvas\n  } = _b2, rest = __objRest(_b2, [\n    \"position\",\n    \"rotation\",\n    \"cameraAngle\",\n    \"noise\",\n    \"canvas\"\n  ]);\n  const { positionX, positionY, positionZ } = position || {};\n  const { rotationX, rotationY, rotationZ } = rotation || {};\n  const { cAzimuthAngle, cPolarAngle } = cameraAngle || {};\n  const { uDensity, uStrength } = noise || {};\n  const {\n    pixelDensity,\n    fov: fov2,\n    preserveDrawingBuffer,\n    powerPreference\n  } = canvas || {};\n  const parsedPowerPreference = powerPreference && powerPreference !== \"default\" ? powerPreference : void 0;\n  return __spreadValues({\n    positionX,\n    positionY,\n    positionZ,\n    rotationX,\n    rotationY,\n    rotationZ,\n    cAzimuthAngle,\n    cPolarAngle,\n    uDensity,\n    uStrength,\n    pixelDensity,\n    fov: fov2,\n    preserveDrawingBuffer,\n    powerPreference: parsedPowerPreference\n  }, rest);\n}\nfunction mergeCanvasProps({\n  queryPixelDensity,\n  queryFov,\n  queryPreserveDrawingBuffer,\n  queryPowerPreference,\n  props,\n  defaultPixelDensity = 1,\n  defaultFov = 45\n}) {\n  var _a3, _b2, _c, _d, _e, _f;\n  const flattened = formatFramerProps(props);\n  return {\n    pixelDensity: (_b2 = (_a3 = queryPixelDensity != null ? queryPixelDensity : flattened.pixelDensity) != null ? _a3 : props.pixelDensity) != null ? _b2 : defaultPixelDensity,\n    fov: (_d = (_c = queryFov != null ? queryFov : flattened.fov) != null ? _c : props.fov) != null ? _d : defaultFov,\n    preserveDrawingBuffer: (_e = queryPreserveDrawingBuffer != null ? queryPreserveDrawingBuffer : flattened.preserveDrawingBuffer) != null ? _e : props.preserveDrawingBuffer,\n    powerPreference: (_f = queryPowerPreference != null ? queryPowerPreference : flattened.powerPreference) != null ? _f : props.powerPreference\n  };\n}\nvar init_chunk_ULEV7Y7T = __esm({\n  \"../shadergradient/dist/chunk-ULEV7Y7T.mjs\"() {\n    init_chunk_5BEQP2BQ();\n  }\n});\n\n// ../shadergradient/dist/chunk-EAK6WCTL.mjs\nimport { jsx as jsx4, jsxs as jsxs2 } from \"react/jsx-runtime\";\nfunction Mesh2({\n  animate,\n  range,\n  rangeStart,\n  rangeEnd,\n  loop,\n  loopDuration,\n  positionX,\n  positionY,\n  positionZ,\n  rotationX,\n  rotationY,\n  rotationZ,\n  type,\n  color1,\n  color2,\n  color3,\n  reflection,\n  uTime,\n  uSpeed,\n  uDensity,\n  uStrength,\n  uFrequency,\n  uAmplitude,\n  shader\n}) {\n  const { vertex: vertex2, fragment: fragment2 } = shaders_exports[shader][type];\n  const baseUniforms = {\n    colors: [color1, color2, color3],\n    uTime,\n    uSpeed,\n    uLoadingTime: 1,\n    // no loading animation\n    uNoiseDensity: uDensity,\n    uNoiseStrength: uStrength,\n    uFrequency,\n    uAmplitude,\n    uIntensity: 0.5,\n    uLoop: loop === \"on\" ? 1 : 0,\n    uLoopDuration: loopDuration || 5\n  };\n  const glassUniforms = shader === \"glass\" ? {\n    uColor1: colorToRgb(color1),\n    uColor2: colorToRgb(color2),\n    uColor3: colorToRgb(color3),\n    uTransparency: 0.1,\n    uRefraction: 1.5,\n    uChromaticAberration: 0.1,\n    uFresnelPower: 2,\n    uReflectivity: 0.9,\n    uWaveAmplitude: 0.02,\n    uWaveFrequency: 5,\n    uDistortion: 0.1,\n    uFlowSpeed: 0.1,\n    uFlowDirection: { x: 1, y: 0.5 },\n    uLiquidEffect: 0.5,\n    uFoamIntensity: 0.3,\n    envMapIntensity: 1\n  } : {};\n  const uniforms = __spreadValues(__spreadValues({}, baseUniforms), glassUniforms);\n  return /* @__PURE__ */ jsxs2(\n    \"mesh\",\n    {\n      name: \"shadergradient-mesh\",\n      position: [positionX, positionY, positionZ],\n      rotation: dToRArr([rotationX, rotationY, rotationZ]),\n      children: [\n        /* @__PURE__ */ jsx4(Geometry, { type }),\n        /* @__PURE__ */ jsx4(\n          Materials,\n          {\n            animate,\n            range,\n            rangeStart,\n            rangeEnd,\n            loop,\n            loopDuration,\n            reflection,\n            shader,\n            uniforms,\n            vertexShader: vertex2,\n            fragmentShader: fragment2,\n            onInit: (material) => {\n              debug.performance(\"material (onInit)\", material);\n            }\n          }\n        )\n      ]\n    }\n  );\n}\nvar init_chunk_EAK6WCTL = __esm({\n  \"../shadergradient/dist/chunk-EAK6WCTL.mjs\"() {\n    init_chunk_WBM42ICI();\n    init_chunk_V62OMFTZ();\n    init_chunk_BO6EQTP3();\n    init_chunk_QRRZJ6IM();\n    init_chunk_ULEV7Y7T();\n    init_chunk_BI5IV7LU();\n    init_chunk_5BEQP2BQ();\n  }\n});\n\n// ../shadergradient/dist/chunk-AU32OSCX.mjs\nvar Pass, _camera2, _geometry2, FullScreenQuad;\nvar init_chunk_AU32OSCX = __esm({\n  \"../shadergradient/dist/chunk-AU32OSCX.mjs\"() {\n    init_chunk_BT6X4JN2();\n    Pass = class {\n      constructor() {\n        this.enabled = true;\n        this.needsSwap = true;\n        this.clear = false;\n        this.renderToScreen = false;\n      }\n      setSize() {\n      }\n      render() {\n        console.error(\"THREE.Pass: .render() must be implemented in derived pass.\");\n      }\n    };\n    _camera2 = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n    _geometry2 = new BufferGeometry();\n    _geometry2.setAttribute(\n      \"position\",\n      new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)\n    );\n    _geometry2.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n    FullScreenQuad = class {\n      constructor(material) {\n        this._mesh = new Mesh(_geometry2, material);\n      }\n      dispose() {\n        this._mesh.geometry.dispose();\n      }\n      render(renderer) {\n        renderer.render(this._mesh, _camera2);\n      }\n      get material() {\n        return this._mesh.material;\n      }\n      set material(value) {\n        this._mesh.material = value;\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-OJ2FJ367.mjs\nvar RenderPass;\nvar init_chunk_OJ2FJ367 = __esm({\n  \"../shadergradient/dist/chunk-OJ2FJ367.mjs\"() {\n    init_chunk_AU32OSCX();\n    init_chunk_BT6X4JN2();\n    RenderPass = class extends Pass {\n      constructor(scene, camera, overrideMaterial, clearColor, clearAlpha) {\n        super();\n        this.scene = scene;\n        this.camera = camera;\n        this.overrideMaterial = overrideMaterial;\n        this.clearColor = clearColor;\n        this.clearAlpha = clearAlpha !== void 0 ? clearAlpha : 0;\n        this.clear = true;\n        this.clearDepth = false;\n        this.needsSwap = false;\n        this._oldClearColor = new Color();\n      }\n      render(renderer, writeBuffer, readBuffer) {\n        const oldAutoClear = renderer.autoClear;\n        renderer.autoClear = false;\n        let oldClearAlpha, oldOverrideMaterial;\n        if (this.overrideMaterial !== void 0) {\n          oldOverrideMaterial = this.scene.overrideMaterial;\n          this.scene.overrideMaterial = this.overrideMaterial;\n        }\n        if (this.clearColor) {\n          renderer.getClearColor(this._oldClearColor);\n          oldClearAlpha = renderer.getClearAlpha();\n          renderer.setClearColor(this.clearColor, this.clearAlpha);\n        }\n        if (this.clearDepth) {\n          renderer.clearDepth();\n        }\n        renderer.setRenderTarget(this.renderToScreen ? null : readBuffer);\n        if (this.clear)\n          renderer.clear(\n            renderer.autoClearColor,\n            renderer.autoClearDepth,\n            renderer.autoClearStencil\n          );\n        renderer.render(this.scene, this.camera);\n        if (this.clearColor) {\n          renderer.setClearColor(this._oldClearColor, oldClearAlpha);\n        }\n        if (this.overrideMaterial !== void 0) {\n          this.scene.overrideMaterial = oldOverrideMaterial;\n        }\n        renderer.autoClear = oldAutoClear;\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-EW3CJI4E.mjs\nvar ShaderPass;\nvar init_chunk_EW3CJI4E = __esm({\n  \"../shadergradient/dist/chunk-EW3CJI4E.mjs\"() {\n    init_chunk_AU32OSCX();\n    init_chunk_BT6X4JN2();\n    ShaderPass = class extends Pass {\n      constructor(shader, textureID) {\n        super();\n        this.textureID = textureID !== void 0 ? textureID : \"tDiffuse\";\n        if (shader instanceof ShaderMaterial) {\n          this.uniforms = shader.uniforms;\n          this.material = shader;\n        } else if (shader) {\n          this.uniforms = UniformsUtils.clone(shader.uniforms);\n          this.material = new ShaderMaterial({\n            defines: Object.assign({}, shader.defines),\n            uniforms: this.uniforms,\n            vertexShader: shader.vertexShader,\n            fragmentShader: shader.fragmentShader\n          });\n        }\n        this.fsQuad = new FullScreenQuad(this.material);\n      }\n      render(renderer, writeBuffer, readBuffer) {\n        if (this.uniforms[this.textureID]) {\n          this.uniforms[this.textureID].value = readBuffer.texture;\n        }\n        this.fsQuad.material = this.material;\n        if (this.renderToScreen) {\n          renderer.setRenderTarget(null);\n          this.fsQuad.render(renderer);\n        } else {\n          renderer.setRenderTarget(writeBuffer);\n          if (this.clear)\n            renderer.clear(\n              renderer.autoClearColor,\n              renderer.autoClearDepth,\n              renderer.autoClearStencil\n            );\n          this.fsQuad.render(renderer);\n        }\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-USQFKVUW.mjs\nvar CopyShader;\nvar init_chunk_USQFKVUW = __esm({\n  \"../shadergradient/dist/chunk-USQFKVUW.mjs\"() {\n    CopyShader = {\n      uniforms: {\n        tDiffuse: { value: null },\n        opacity: { value: 1 }\n      },\n      vertexShader: (\n        /* glsl */\n        `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n      ),\n      fragmentShader: (\n        /* glsl */\n        `\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\t\t}`\n      )\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-KXZH64OP.mjs\nvar MaskPass, ClearMaskPass;\nvar init_chunk_KXZH64OP = __esm({\n  \"../shadergradient/dist/chunk-KXZH64OP.mjs\"() {\n    init_chunk_AU32OSCX();\n    MaskPass = class extends Pass {\n      constructor(scene, camera) {\n        super();\n        this.scene = scene;\n        this.camera = camera;\n        this.clear = true;\n        this.needsSwap = false;\n        this.inverse = false;\n      }\n      render(renderer, writeBuffer, readBuffer) {\n        const context2 = renderer.getContext();\n        const state = renderer.state;\n        state.buffers.color.setMask(false);\n        state.buffers.depth.setMask(false);\n        state.buffers.color.setLocked(true);\n        state.buffers.depth.setLocked(true);\n        let writeValue, clearValue;\n        if (this.inverse) {\n          writeValue = 0;\n          clearValue = 1;\n        } else {\n          writeValue = 1;\n          clearValue = 0;\n        }\n        state.buffers.stencil.setTest(true);\n        state.buffers.stencil.setOp(\n          context2.REPLACE,\n          context2.REPLACE,\n          context2.REPLACE\n        );\n        state.buffers.stencil.setFunc(context2.ALWAYS, writeValue, 4294967295);\n        state.buffers.stencil.setClear(clearValue);\n        state.buffers.stencil.setLocked(true);\n        renderer.setRenderTarget(readBuffer);\n        if (this.clear) renderer.clear();\n        renderer.render(this.scene, this.camera);\n        renderer.setRenderTarget(writeBuffer);\n        if (this.clear) renderer.clear();\n        renderer.render(this.scene, this.camera);\n        state.buffers.color.setLocked(false);\n        state.buffers.depth.setLocked(false);\n        state.buffers.stencil.setLocked(false);\n        state.buffers.stencil.setFunc(context2.EQUAL, 1, 4294967295);\n        state.buffers.stencil.setOp(context2.KEEP, context2.KEEP, context2.KEEP);\n        state.buffers.stencil.setLocked(true);\n      }\n    };\n    ClearMaskPass = class extends Pass {\n      constructor() {\n        super();\n        this.needsSwap = false;\n      }\n      render(renderer) {\n        renderer.state.buffers.stencil.setLocked(false);\n        renderer.state.buffers.stencil.setTest(false);\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-QVWWXOVQ.mjs\nvar EffectComposer, _camera3, _geometry3;\nvar init_chunk_QVWWXOVQ = __esm({\n  \"../shadergradient/dist/chunk-QVWWXOVQ.mjs\"() {\n    init_chunk_EW3CJI4E();\n    init_chunk_USQFKVUW();\n    init_chunk_KXZH64OP();\n    init_chunk_BT6X4JN2();\n    EffectComposer = class {\n      constructor(renderer, renderTarget) {\n        this.renderer = renderer;\n        if (renderTarget === void 0) {\n          const parameters = {\n            minFilter: LinearFilter,\n            magFilter: LinearFilter,\n            format: RGBAFormat\n          };\n          const size = renderer.getSize(new Vector2());\n          this._pixelRatio = renderer.getPixelRatio();\n          this._width = size.width;\n          this._height = size.height;\n          renderTarget = new WebGLRenderTarget(\n            this._width * this._pixelRatio,\n            this._height * this._pixelRatio,\n            parameters\n          );\n          renderTarget.texture.name = \"EffectComposer.rt1\";\n        } else {\n          this._pixelRatio = 1;\n          this._width = renderTarget.width;\n          this._height = renderTarget.height;\n        }\n        this.renderTarget1 = renderTarget;\n        this.renderTarget2 = renderTarget.clone();\n        this.renderTarget2.texture.name = \"EffectComposer.rt2\";\n        this.writeBuffer = this.renderTarget1;\n        this.readBuffer = this.renderTarget2;\n        this.renderToScreen = true;\n        this.passes = [];\n        if (CopyShader === void 0) {\n          console.error(\"THREE.EffectComposer relies on CopyShader\");\n        }\n        if (ShaderPass === void 0) {\n          console.error(\"THREE.EffectComposer relies on ShaderPass\");\n        }\n        this.copyPass = new ShaderPass(CopyShader);\n        this.clock = new Clock();\n      }\n      swapBuffers() {\n        const tmp2 = this.readBuffer;\n        this.readBuffer = this.writeBuffer;\n        this.writeBuffer = tmp2;\n      }\n      addPass(pass) {\n        this.passes.push(pass);\n        pass.setSize(\n          this._width * this._pixelRatio,\n          this._height * this._pixelRatio\n        );\n      }\n      insertPass(pass, index) {\n        this.passes.splice(index, 0, pass);\n        pass.setSize(\n          this._width * this._pixelRatio,\n          this._height * this._pixelRatio\n        );\n      }\n      removePass(pass) {\n        const index = this.passes.indexOf(pass);\n        if (index !== -1) {\n          this.passes.splice(index, 1);\n        }\n      }\n      isLastEnabledPass(passIndex) {\n        for (let i2 = passIndex + 1; i2 < this.passes.length; i2++) {\n          if (this.passes[i2].enabled) {\n            return false;\n          }\n        }\n        return true;\n      }\n      render(deltaTime) {\n        if (deltaTime === void 0) {\n          deltaTime = this.clock.getDelta();\n        }\n        const currentRenderTarget = this.renderer.getRenderTarget();\n        let maskActive = false;\n        for (let i2 = 0, il = this.passes.length; i2 < il; i2++) {\n          const pass = this.passes[i2];\n          if (pass.enabled === false) continue;\n          pass.renderToScreen = this.renderToScreen && this.isLastEnabledPass(i2);\n          pass.render(\n            this.renderer,\n            this.writeBuffer,\n            this.readBuffer,\n            deltaTime,\n            maskActive\n          );\n          if (pass.needsSwap) {\n            if (maskActive) {\n              const context2 = this.renderer.getContext();\n              const stencil = this.renderer.state.buffers.stencil;\n              stencil.setFunc(context2.NOTEQUAL, 1, 4294967295);\n              this.copyPass.render(\n                this.renderer,\n                this.writeBuffer,\n                this.readBuffer,\n                deltaTime\n              );\n              stencil.setFunc(context2.EQUAL, 1, 4294967295);\n            }\n            this.swapBuffers();\n          }\n          if (MaskPass !== void 0) {\n            if (pass instanceof MaskPass) {\n              maskActive = true;\n            } else if (pass instanceof ClearMaskPass) {\n              maskActive = false;\n            }\n          }\n        }\n        this.renderer.setRenderTarget(currentRenderTarget);\n      }\n      reset(renderTarget) {\n        if (renderTarget === void 0) {\n          const size = this.renderer.getSize(new Vector2());\n          this._pixelRatio = this.renderer.getPixelRatio();\n          this._width = size.width;\n          this._height = size.height;\n          renderTarget = this.renderTarget1.clone();\n          renderTarget.setSize(\n            this._width * this._pixelRatio,\n            this._height * this._pixelRatio\n          );\n        }\n        this.renderTarget1.dispose();\n        this.renderTarget2.dispose();\n        this.renderTarget1 = renderTarget;\n        this.renderTarget2 = renderTarget.clone();\n        this.writeBuffer = this.renderTarget1;\n        this.readBuffer = this.renderTarget2;\n      }\n      setSize(width, height) {\n        this._width = width;\n        this._height = height;\n        const effectiveWidth = this._width * this._pixelRatio;\n        const effectiveHeight = this._height * this._pixelRatio;\n        this.renderTarget1.setSize(effectiveWidth, effectiveHeight);\n        this.renderTarget2.setSize(effectiveWidth, effectiveHeight);\n        for (let i2 = 0; i2 < this.passes.length; i2++) {\n          this.passes[i2].setSize(effectiveWidth, effectiveHeight);\n        }\n      }\n      setPixelRatio(pixelRatio) {\n        this._pixelRatio = pixelRatio;\n        this.setSize(this._width, this._height);\n      }\n    };\n    _camera3 = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n    _geometry3 = new BufferGeometry();\n    _geometry3.setAttribute(\n      \"position\",\n      new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)\n    );\n    _geometry3.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n  }\n});\n\n// ../shadergradient/dist/chunk-3U6A2N6D.mjs\nvar HalftoneShader;\nvar init_chunk_3U6A2N6D = __esm({\n  \"../shadergradient/dist/chunk-3U6A2N6D.mjs\"() {\n    HalftoneShader = {\n      uniforms: {\n        tDiffuse: { value: null },\n        shape: { value: 1 },\n        radius: { value: 2 },\n        rotateR: { value: Math.PI / 12 * 1 },\n        rotateG: { value: Math.PI / 12 * 2 },\n        rotateB: { value: Math.PI / 12 * 3 },\n        scatter: { value: 1 },\n        width: { value: 20 },\n        height: { value: 20 },\n        blending: { value: 1 },\n        blendingMode: { value: 1 },\n        greyscale: { value: false },\n        disable: { value: false }\n      },\n      vertexShader: (\n        /* glsl */\n        `\n\n\t\tvarying vec2 vUV;\n\t\tvarying vec3 vPosition;\n\n\t\tvoid main() {\n\n\t\t\tvUV = uv;\n\t\t\tvPosition = position;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n\n\t\t}`\n      ),\n      fragmentShader: (\n        /* glsl */\n        `\n\n\t\t#define SQRT2_MINUS_ONE 0.41421356\n\t\t#define SQRT2_HALF_MINUS_ONE 0.20710678\n\t\t#define PI2 6.28318531\n\t\t#define SHAPE_DOT 1\n\t\t#define SHAPE_ELLIPSE 2\n\t\t#define SHAPE_LINE 3\n\t\t#define SHAPE_SQUARE 4\n\t\t#define BLENDING_LINEAR 1\n\t\t#define BLENDING_MULTIPLY 2\n\t\t#define BLENDING_ADD 3\n\t\t#define BLENDING_LIGHTER 4\n\t\t#define BLENDING_DARKER 5\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float radius;\n\t\tuniform float rotateR;\n\t\tuniform float rotateG;\n\t\tuniform float rotateB;\n\t\tuniform float scatter;\n\t\tuniform float width;\n\t\tuniform float height;\n\t\tuniform int shape;\n\t\tuniform bool disable;\n\t\tuniform float blending;\n\t\tuniform int blendingMode;\n\t\tvarying vec2 vUV;\n\t\tvarying vec3 vPosition;\n\t\tuniform bool greyscale;\n\t\tconst int samples = 8;\n\n\t\tfloat blend( float a, float b, float t ) {\n\n\t\t// linear blend\n\t\t\treturn a * ( 1.0 - t ) + b * t;\n\n\t\t}\n\n\t\tfloat hypot( float x, float y ) {\n\n\t\t// vector magnitude\n\t\t\treturn sqrt( x * x + y * y );\n\n\t\t}\n\n\t\tfloat rand( vec2 seed ){\n\n\t\t// get pseudo-random number\n\t\t\treturn fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );\n\n\t\t}\n\n\t\tfloat distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {\n\n\t\t// apply shape-specific transforms\n\t\t\tfloat dist = hypot( coord.x - p.x, coord.y - p.y );\n\t\t\tfloat rad = channel;\n\n\t\t\tif ( shape == SHAPE_DOT ) {\n\n\t\t\t\trad = pow( abs( rad ), 1.125 ) * rad_max;\n\n\t\t\t} else if ( shape == SHAPE_ELLIPSE ) {\n\n\t\t\t\trad = pow( abs( rad ), 1.125 ) * rad_max;\n\n\t\t\t\tif ( dist != 0.0 ) {\n\t\t\t\t\tfloat dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );\n\t\t\t\t\tdist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;\n\t\t\t\t}\n\n\t\t\t} else if ( shape == SHAPE_LINE ) {\n\n\t\t\t\trad = pow( abs( rad ), 1.5) * rad_max;\n\t\t\t\tfloat dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;\n\t\t\t\tdist = hypot( normal.x * dot_p, normal.y * dot_p );\n\n\t\t\t} else if ( shape == SHAPE_SQUARE ) {\n\n\t\t\t\tfloat theta = atan( p.y - coord.y, p.x - coord.x ) - angle;\n\t\t\t\tfloat sin_t = abs( sin( theta ) );\n\t\t\t\tfloat cos_t = abs( cos( theta ) );\n\t\t\t\trad = pow( abs( rad ), 1.4 );\n\t\t\t\trad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );\n\n\t\t\t}\n\n\t\t\treturn rad - dist;\n\n\t\t}\n\n\t\tstruct Cell {\n\n\t\t// grid sample positions\n\t\t\tvec2 normal;\n\t\t\tvec2 p1;\n\t\t\tvec2 p2;\n\t\t\tvec2 p3;\n\t\t\tvec2 p4;\n\t\t\tfloat samp2;\n\t\t\tfloat samp1;\n\t\t\tfloat samp3;\n\t\t\tfloat samp4;\n\n\t\t};\n\n\t\tvec4 getSample( vec2 point ) {\n\n\t\t// multi-sampled point\n\t\t\tvec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );\n\t\t\tfloat base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;\n\t\t\tfloat step = PI2 / float( samples );\n\t\t\t// float dist = radius * 0.66;\n\t\t\tfloat dist = radius * 0.0;\n\n\t\t\tfor ( int i = 0; i < samples; ++i ) {\n\n\t\t\t\tfloat r = base + step * float( i );\n\t\t\t\tvec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );\n\t\t\t\ttex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );\n\n\t\t\t}\n\n\t\t\ttex /= float( samples ) + 1.0;\n\t\t\treturn tex;\n\n\t\t}\n\n\t\tfloat getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {\n\n\t\t// get colour for given point\n\t\t\tfloat dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;\n\n\t\t\tif ( channel == 0 ) {\n\n\t\t\t\tc.samp1 = getSample( c.p1 ).r;\n\t\t\t\tc.samp2 = getSample( c.p2 ).r;\n\t\t\t\tc.samp3 = getSample( c.p3 ).r;\n\t\t\t\tc.samp4 = getSample( c.p4 ).r;\n\n\t\t\t} else if (channel == 1) {\n\n\t\t\t\tc.samp1 = getSample( c.p1 ).g;\n\t\t\t\tc.samp2 = getSample( c.p2 ).g;\n\t\t\t\tc.samp3 = getSample( c.p3 ).g;\n\t\t\t\tc.samp4 = getSample( c.p4 ).g;\n\n\t\t\t} else {\n\n\t\t\t\tc.samp1 = getSample( c.p1 ).b;\n\t\t\t\tc.samp3 = getSample( c.p3 ).b;\n\t\t\t\tc.samp2 = getSample( c.p2 ).b;\n\t\t\t\tc.samp4 = getSample( c.p4 ).b;\n\n\t\t\t}\n\n\t\t\tdist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );\n\t\t\tdist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );\n\t\t\tdist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );\n\t\t\tdist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );\n\t\t\tres = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\t// res = 0.0;\n\t\t\tres += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;\n\t\t\tres = clamp( res, 0.0, 1.0 );\n\n\t\t\treturn res;\n\t\t\t// return 2\n\n\t\t}\n\n\t\tCell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {\n\n\t\t// get containing cell\n\t\t\tCell c;\n\n\t\t// calc grid\n\t\t\tvec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );\n\t\t\tfloat threshold = step * 0.5;\n\t\t\tfloat dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );\n\t\t\tfloat dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );\n\t\t\tvec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );\n\t\t\tfloat offset_normal = mod( hypot( offset.x, offset.y ), step );\n\t\t\tfloat normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;\n\t\t\tfloat normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;\n\t\t\tfloat offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );\n\t\t\tfloat line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;\n\t\t\tfloat line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;\n\n\t\t// get closest corner\n\t\t\tc.normal = n;\n\t\t\tc.p1.x = p.x - n.x * normal_scale + n.y * line_scale;\n\t\t\tc.p1.y = p.y - n.y * normal_scale - n.x * line_scale;\n\n\t\t// scatter\n\t\t\tif ( scatter != 0.0 ) {\n\n\t\t\t\tfloat off_mag = scatter * threshold * 0.5;\n\t\t\t\tfloat off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;\n\t\t\t\tc.p1.x += cos( off_angle ) * off_mag;\n\t\t\t\tc.p1.y += sin( off_angle ) * off_mag;\n\n\t\t\t}\n\n\t\t// find corners\n\t\t\tfloat normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );\n\t\t\tfloat line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );\n\t\t\tc.p2.x = c.p1.x - n.x * normal_step;\n\t\t\tc.p2.y = c.p1.y - n.y * normal_step;\n\t\t\tc.p3.x = c.p1.x + n.y * line_step;\n\t\t\tc.p3.y = c.p1.y - n.x * line_step;\n\t\t\tc.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;\n\t\t\tc.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;\n\n\t\t\treturn c;\n\n\t\t}\n\n\t\tfloat blendColour( float a, float b, float t ) {\n\n\t\t// blend colours\n\t\t\tif ( blendingMode == BLENDING_LINEAR ) {\n\t\t\t\treturn blend( a, b, 1.0 - t );\n\t\t\t} else if ( blendingMode == BLENDING_ADD ) {\n\t\t\t\treturn blend( a, min( 1.0, a + b ), t );\n\t\t\t} else if ( blendingMode == BLENDING_MULTIPLY ) {\n\t\t\t\treturn blend( a, max( 0.0, a * b ), t );\n\t\t\t} else if ( blendingMode == BLENDING_LIGHTER ) {\n\t\t\t\treturn blend( a, max( a, b ), t );\n\t\t\t} else if ( blendingMode == BLENDING_DARKER ) {\n\t\t\t\treturn blend( a, min( a, b ), t );\n\t\t\t} else {\n\t\t\t\treturn blend( a, b, 1.0 - t );\n\t\t\t}\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tif ( ! disable ) {\n\n\t\t// setup\n\t\t\t\tvec2 p = vec2( vUV.x * width, vUV.y * height ) - vec2(vPosition.x, vPosition.y) * 3.0; // - position values to remove black borders.\n\t\t\t\tvec2 origin = vec2( 0, 0 );\n\t\t\t\tfloat aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;\n\t\t\t\t// float aa = 0.0;\n\n\t\t// get channel samples\n\t\t\t\tCell cell_r = getReferenceCell( p, origin, rotateR, radius );\n\t\t\t\tCell cell_g = getReferenceCell( p, origin, rotateG, radius );\n\t\t\t\tCell cell_b = getReferenceCell( p, origin, rotateB, radius );\n\t\t\t\tfloat r = getDotColour( cell_r, p, 0, rotateR, aa );\n\t\t\t\tfloat g = getDotColour( cell_g, p, 1, rotateG, aa );\n\t\t\t\tfloat b = getDotColour( cell_b, p, 2, rotateB, aa );\n\n\t\t// blend with original\n\t\t\t\tvec4 colour = texture2D( tDiffuse, vUV );\n\t\t\t\t\n\t\t\t\t// add masking before blendColour\n\t\t\t\tif (colour.r == 0.0) {\n\t\t\t\t\tr = 0.0;\n\t\t\t\t} else {\n\t\t\t\t\tr = blendColour( r, colour.r, blending );\n\t\t\t\t}\n\n\t\t\t\tif (colour.g == 0.0) {\n\t\t\t\t\tg = 0.0;\n\t\t\t\t} else {\n\t\t\t\t\tg = blendColour( g, colour.g, blending );\n\t\t\t\t}\n\n\t\t\t\tif (colour.b == 0.0) {\n\t\t\t\t\tb = 0.0;\n\t\t\t\t} else {\n\t\t\t\t\tb = blendColour( b, colour.b, blending );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t\tif ( greyscale ) {\n\t\t\t\t\tr = g = b = (r + b + g) / 3.0;\n\t\t\t\t}\n\n\t\t\t\t// add alpha channel to each r, g, b colors\n\t\t\t\tvec4 vR;\n\t\t\t\tvec4 vG;\n\t\t\t\tvec4 vB;\n\t\n\t\t\t\t// apply transparent to outside of mesh\n\t\t\t\tif (r == 0.0 && colour.r == 0.0) {\n\t\t\t\t\tvR = vec4( 0, 0, 0, 0 );\n\t\t\t\t} else {\n\t\t\t\t\tvR = vec4( r, 0, 0, 1 );\n\t\t\t\t}\n\t\n\t\t\t\tif (g == 0.0 && colour.g == 0.0) {\n\t\t\t\t\tvG = vec4( 0, 0, 0, 0 );\n\t\t\t\t} else {\n\t\t\t\t\tvG = vec4( 0, g, 0, 1 );\n\t\t\t\t}\n\t\n\t\t\t\tif (b == 0.0 && colour.b == 0.0) {\n\t\t\t\t\tvB = vec4( 0, 0, 0, 0 );\n\t\t\t\t} else {\n\t\t\t\t\tvB = vec4( 0, 0, b, 1 );\n\t\t\t\t}\n\n\t\t\t\t// gl_FragColor = vec4( r, g, b, 1.0 );\n\t\t\t\tgl_FragColor = vR + vG + vB;\n\n\t\t\t} else {\n\n\t\t\t\tgl_FragColor = texture2D( tDiffuse, vUV );\n\n\t\t\t}\n\n\t\t}`\n      )\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-LZ3DDWYG.mjs\nvar Pass2, _camera4, _geometry4, FullScreenQuad2;\nvar init_chunk_LZ3DDWYG = __esm({\n  \"../shadergradient/dist/chunk-LZ3DDWYG.mjs\"() {\n    init_chunk_BT6X4JN2();\n    Pass2 = class {\n      constructor() {\n        this.enabled = true;\n        this.needsSwap = true;\n        this.clear = false;\n        this.renderToScreen = false;\n      }\n      setSize() {\n      }\n      render() {\n        console.error(\"THREE.Pass: .render() must be implemented in derived pass.\");\n      }\n    };\n    _camera4 = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n    _geometry4 = new BufferGeometry();\n    _geometry4.setAttribute(\n      \"position\",\n      new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)\n    );\n    _geometry4.setAttribute(\"uv\", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n    FullScreenQuad2 = class {\n      constructor(material) {\n        this._mesh = new Mesh(_geometry4, material);\n      }\n      dispose() {\n        this._mesh.geometry.dispose();\n      }\n      render(renderer) {\n        renderer.render(this._mesh, _camera4);\n      }\n      get material() {\n        return this._mesh.material;\n      }\n      set material(value) {\n        this._mesh.material = value;\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-4NRCS6EB.mjs\nvar BlendFunction;\nvar init_chunk_4NRCS6EB = __esm({\n  \"../shadergradient/dist/chunk-4NRCS6EB.mjs\"() {\n    BlendFunction = {\n      SKIP: 0,\n      ADD: 1,\n      ALPHA: 2,\n      AVERAGE: 3,\n      COLOR_BURN: 4,\n      COLOR_DODGE: 5,\n      DARKEN: 6,\n      DIFFERENCE: 7,\n      EXCLUSION: 8,\n      LIGHTEN: 9,\n      MULTIPLY: 10,\n      DIVIDE: 11,\n      NEGATION: 12,\n      NORMAL: 13,\n      OVERLAY: 14,\n      REFLECT: 15,\n      SCREEN: 16,\n      SOFT_LIGHT: 17,\n      SUBTRACT: 18\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-OUMQVT4Y.mjs\nvar shader_default, shader_default2, shader_default3, shader_default4, shader_default5, shader_default6, shader_default7, shader_default8, shader_default9, shader_default10, shader_default11, shader_default12, shader_default13, shader_default14, shader_default15, shader_default16, shader_default17, shader_default18, blendFunctions, BlendMode;\nvar init_chunk_OUMQVT4Y = __esm({\n  \"../shadergradient/dist/chunk-OUMQVT4Y.mjs\"() {\n    init_chunk_4NRCS6EB();\n    init_chunk_BT6X4JN2();\n    shader_default = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn min(x + y, 1.0) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default2 = \"vec3 blend(const in vec3 x, const in vec3 y, const in float opacity) {\\n\\n\treturn y * opacity + x * (1.0 - opacity);\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tfloat a = min(y.a, opacity);\\n\\n\treturn vec4(blend(x.rgb, y.rgb, a), max(x.a, a));\\n\\n}\\n\";\n    shader_default3 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn (x + y) * 0.5 * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default4 = \"float blend(const in float x, const in float y) {\\n\\n\treturn (y == 0.0) ? y : max(1.0 - (1.0 - x) / y, 0.0);\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tvec4 z = vec4(\\n\t\tblend(x.r, y.r),\\n\t\tblend(x.g, y.g),\\n\t\tblend(x.b, y.b),\\n\t\tblend(x.a, y.a)\\n\t);\\n\\n\treturn z * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default5 = \"float blend(const in float x, const in float y) {\\n\\n\treturn (y == 1.0) ? y : min(x / (1.0 - y), 1.0);\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tvec4 z = vec4(\\n\t\tblend(x.r, y.r),\\n\t\tblend(x.g, y.g),\\n\t\tblend(x.b, y.b),\\n\t\tblend(x.a, y.a)\\n\t);\\n\\n\treturn z * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default6 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn min(x, y) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default7 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn abs(x - y) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default8 = \"float blend(const in float x, const in float y) {\\n\\n\treturn (y > 0.0) ? min(x / y, 1.0) : 1.0;\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tvec4 z = vec4(\\n\t\tblend(x.r, y.r),\\n\t\tblend(x.g, y.g),\\n\t\tblend(x.b, y.b),\\n\t\tblend(x.a, y.a)\\n\t);\\n\\n\treturn z * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default9 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn (x + y - 2.0 * x * y) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default10 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn max(x, y) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default11 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn x * y * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default12 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn (1.0 - abs(1.0 - x - y)) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default13 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn y * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default14 = \"float blend(const in float x, const in float y) {\\n\\n\treturn (x < 0.5) ? (2.0 * x * y) : (1.0 - 2.0 * (1.0 - x) * (1.0 - y));\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tvec4 z = vec4(\\n\t\tblend(x.r, y.r),\\n\t\tblend(x.g, y.g),\\n\t\tblend(x.b, y.b),\\n\t\tblend(x.a, y.a)\\n\t);\\n\\n\treturn z * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default15 = \"float blend(const in float x, const in float y) {\\n\\n\treturn (y == 1.0) ? y : min(x * x / (1.0 - y), 1.0);\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tvec4 z = vec4(\\n\t\tblend(x.r, y.r),\\n\t\tblend(x.g, y.g),\\n\t\tblend(x.b, y.b),\\n\t\tblend(x.a, y.a)\\n\t);\\n\\n\treturn z * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default16 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn (1.0 - (1.0 - x) * (1.0 - y)) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default17 = \"float blend(const in float x, const in float y) {\\n\\n\treturn (y < 0.5) ?\\n\t\t(2.0 * x * y + x * x * (1.0 - 2.0 * y)) :\\n\t\t(sqrt(x) * (2.0 * y - 1.0) + 2.0 * x * (1.0 - y));\\n\\n}\\n\\nvec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\tvec4 z = vec4(\\n\t\tblend(x.r, y.r),\\n\t\tblend(x.g, y.g),\\n\t\tblend(x.b, y.b),\\n\t\tblend(x.a, y.a)\\n\t);\\n\\n\treturn z * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    shader_default18 = \"vec4 blend(const in vec4 x, const in vec4 y, const in float opacity) {\\n\\n\treturn max(x + y - 1.0, 0.0) * opacity + x * (1.0 - opacity);\\n\\n}\\n\";\n    blendFunctions = /* @__PURE__ */ new Map([\n      [BlendFunction.SKIP, null],\n      [BlendFunction.ADD, shader_default],\n      [BlendFunction.ALPHA, shader_default2],\n      [BlendFunction.AVERAGE, shader_default3],\n      [BlendFunction.COLOR_BURN, shader_default4],\n      [BlendFunction.COLOR_DODGE, shader_default5],\n      [BlendFunction.DARKEN, shader_default6],\n      [BlendFunction.DIFFERENCE, shader_default7],\n      [BlendFunction.EXCLUSION, shader_default9],\n      [BlendFunction.LIGHTEN, shader_default10],\n      [BlendFunction.MULTIPLY, shader_default11],\n      [BlendFunction.DIVIDE, shader_default8],\n      [BlendFunction.NEGATION, shader_default12],\n      [BlendFunction.NORMAL, shader_default13],\n      [BlendFunction.OVERLAY, shader_default14],\n      [BlendFunction.REFLECT, shader_default15],\n      [BlendFunction.SCREEN, shader_default16],\n      [BlendFunction.SOFT_LIGHT, shader_default17],\n      [BlendFunction.SUBTRACT, shader_default18]\n    ]);\n    BlendMode = class extends EventDispatcher {\n      /**\n       * Constructs a new blend mode.\n       *\n       * @param {BlendFunction} blendFunction - The blend function to use.\n       * @param {Number} opacity - The opacity of the color that will be blended with the base color.\n       */\n      constructor(blendFunction, opacity = 1) {\n        super();\n        this.blendFunction = blendFunction;\n        this.opacity = new Uniform(opacity);\n      }\n      /**\n       * Returns the blend function.\n       *\n       * @return {BlendFunction} The blend function.\n       */\n      getBlendFunction() {\n        return this.blendFunction;\n      }\n      /**\n       * Sets the blend function.\n       *\n       * @param {BlendFunction} blendFunction - The blend function.\n       */\n      setBlendFunction(blendFunction) {\n        this.blendFunction = blendFunction;\n        this.dispatchEvent({ type: \"change\" });\n      }\n      /**\n       * Returns the blend function shader code.\n       *\n       * @return {String} The blend function shader code.\n       */\n      getShaderCode() {\n        return blendFunctions.get(this.blendFunction);\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-2U7BPWZ5.mjs\nvar usePassedMeshSize, HalftonePass;\nvar init_chunk_2U7BPWZ5 = __esm({\n  \"../shadergradient/dist/chunk-2U7BPWZ5.mjs\"() {\n    init_chunk_3U6A2N6D();\n    init_chunk_LZ3DDWYG();\n    init_chunk_OUMQVT4Y();\n    init_chunk_4NRCS6EB();\n    init_chunk_BT6X4JN2();\n    usePassedMeshSize = true;\n    HalftonePass = class extends Pass2 {\n      constructor(width, height, params) {\n        super();\n        if (HalftoneShader === void 0) {\n          console.error(\"THREE.HalftonePass requires HalftoneShader\");\n        }\n        this.uniforms = UniformsUtils.clone(HalftoneShader.uniforms);\n        this.material = new ShaderMaterial({\n          uniforms: this.uniforms,\n          fragmentShader: HalftoneShader.fragmentShader,\n          vertexShader: HalftoneShader.vertexShader\n        });\n        if (usePassedMeshSize) {\n          this.uniforms.width.value = width;\n          this.uniforms.height.value = height;\n        }\n        this.uniforms.disable.value = params[\"disable\"];\n        this.fsQuad = new FullScreenQuad2(this.material);\n        this.blendMode = new BlendMode(BlendFunction.SCREEN);\n        this.extensions = null;\n      }\n      render(renderer, writeBuffer, readBuffer) {\n        this.material.uniforms[\"tDiffuse\"].value = readBuffer.texture;\n        if (this.renderToScreen) {\n          renderer.setRenderTarget(null);\n          this.fsQuad.render(renderer);\n        } else {\n          renderer.setRenderTarget(writeBuffer);\n          if (this.clear) renderer.clear();\n          this.fsQuad.render(renderer);\n        }\n      }\n      setSize(width, height) {\n        if (usePassedMeshSize) {\n          this.uniforms.width.value = width;\n          this.uniforms.height.value = height;\n        }\n      }\n      initialize(renderer, alpha, frameBufferType) {\n      }\n      addEventListener() {\n      }\n      getAttributes() {\n        return this.attributes;\n      }\n      getFragmentShader() {\n        return HalftoneShader.fragmentShader;\n      }\n      getVertexShader() {\n        return HalftoneShader.vertexShader;\n      }\n      update(renderer, inputBuffer, deltaTime) {\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-QWMUKHAS.mjs\nimport { useEffect as useEffect6, useMemo as useMemo4, useRef as useRef5 } from \"react\";\nimport { Fragment as Fragment3, jsx as jsx5 } from \"react/jsx-runtime\";\nfunction PostProcessing({ disable = false }) {\n  const { gl, scene, camera, size } = useThree();\n  const composerRef = useRef5(null);\n  const halftonePassRef = useRef5(null);\n  const halftoneParams = useMemo4(\n    () => ({\n      shape: 1,\n      radius: 2,\n      rotateR: Math.PI / 12,\n      rotateB: Math.PI / 12 * 2,\n      rotateG: Math.PI / 12 * 3,\n      scatter: 1,\n      blending: 1,\n      blendingMode: 1,\n      greyscale: false\n    }),\n    []\n  );\n  useEffect6(() => {\n    const effectComposer = new EffectComposer(gl);\n    const renderPass = new RenderPass(scene, camera);\n    const halftonePass = new HalftonePass(\n      size.width,\n      size.height,\n      __spreadProps(__spreadValues({}, halftoneParams), { disable })\n    );\n    effectComposer.addPass(renderPass);\n    effectComposer.addPass(halftonePass);\n    composerRef.current = effectComposer;\n    halftonePassRef.current = halftonePass;\n    return () => {\n      var _a3, _b2, _c, _d, _e, _f, _g, _h;\n      (_a3 = renderPass.dispose) == null ? void 0 : _a3.call(renderPass);\n      if ((_b2 = halftonePass.fsQuad) == null ? void 0 : _b2.dispose) halftonePass.fsQuad.dispose();\n      (_d = (_c = halftonePass.material) == null ? void 0 : _c.dispose) == null ? void 0 : _d.call(_c);\n      (_f = (_e = effectComposer.renderTarget1) == null ? void 0 : _e.dispose) == null ? void 0 : _f.call(_e);\n      (_h = (_g = effectComposer.renderTarget2) == null ? void 0 : _g.dispose) == null ? void 0 : _h.call(_g);\n      composerRef.current = null;\n      halftonePassRef.current = null;\n    };\n  }, [camera, gl, halftoneParams, scene]);\n  useEffect6(() => {\n    var _a3;\n    const composer = composerRef.current;\n    if (!composer) return;\n    composer.setSize(size.width, size.height);\n    (_a3 = halftonePassRef.current) == null ? void 0 : _a3.setSize(size.width, size.height);\n  }, [size.height, size.width]);\n  useEffect6(() => {\n    var _a3, _b2;\n    if ((_b2 = (_a3 = halftonePassRef.current) == null ? void 0 : _a3.uniforms) == null ? void 0 : _b2.disable) {\n      halftonePassRef.current.uniforms.disable.value = disable;\n    }\n  }, [disable]);\n  useFrame((_, delta) => {\n    const composer = composerRef.current;\n    if (!composer) return;\n    gl.autoClear = true;\n    composer.render(delta);\n  }, 1);\n  return /* @__PURE__ */ jsx5(Fragment3, {});\n}\nvar init_chunk_QWMUKHAS = __esm({\n  \"../shadergradient/dist/chunk-QWMUKHAS.mjs\"() {\n    init_chunk_OJ2FJ367();\n    init_chunk_QVWWXOVQ();\n    init_chunk_2U7BPWZ5();\n    init_chunk_73SH6GTX();\n    init_chunk_5BEQP2BQ();\n  }\n});\n\n// ../shadergradient/dist/chunk-JITLJLKU.mjs\nvar canvasProps, defaultPlanesZoom, defaultSphereDistance, zoomOutPlanes, zoomOutSphere, defaultEnvBasePath;\nvar init_chunk_JITLJLKU = __esm({\n  \"../shadergradient/dist/chunk-JITLJLKU.mjs\"() {\n    canvasProps = (pixelDensity, fov2, glOverrides) => {\n      return {\n        dpr: pixelDensity,\n        //device pixel ratio - 1 default and fast, 2 detailed and slow\n        // mode: 'concurrent' as 'legacy' | 'blocking' | 'concurrent',\n        camera: { fov: fov2 },\n        // could be replaced with zoom or distance?\n        linear: true,\n        //sRGBEncoding\n        flat: true,\n        //ACESFilmicToneMapping\n        gl: {\n          preserveDrawingBuffer: glOverrides == null ? void 0 : glOverrides.preserveDrawingBuffer,\n          powerPreference: glOverrides == null ? void 0 : glOverrides.powerPreference\n        }\n      };\n    };\n    defaultPlanesZoom = 1;\n    defaultSphereDistance = 14;\n    zoomOutPlanes = { zoom: 1, distance: 14 };\n    zoomOutSphere = { zoom: 5, distance: 14 };\n    defaultEnvBasePath = \"https://ruucm.github.io/shadergradient/ui@0.0.0/assets/hdr/\";\n  }\n});\n\n// ../shadergradient/dist/chunk-QTHZVTTJ.mjs\nimport { useEffect as useEffect7, useRef as useRef6 } from \"react\";\nfunction useCameraAnimation({\n  type,\n  cAzimuthAngle,\n  cPolarAngle,\n  cDistance,\n  cameraZoom,\n  zoomOut,\n  enableTransition = true\n}) {\n  const ref = useRef6();\n  useFrame((state, delta) => ref.current.update(delta));\n  useEffect7(() => {\n    const control = ref.current;\n    control == null ? void 0 : control.rotateTo(dToR(cAzimuthAngle), dToR(cPolarAngle), enableTransition);\n  }, [ref, cAzimuthAngle, cPolarAngle, enableTransition]);\n  useEffect7(() => {\n    const control = ref.current;\n    if (zoomOut) {\n      if (type === \"sphere\") {\n        control == null ? void 0 : control.dollyTo(zoomOutSphere.distance, enableTransition);\n        control == null ? void 0 : control.zoomTo(zoomOutSphere.zoom, enableTransition);\n      } else {\n        control == null ? void 0 : control.dollyTo(zoomOutPlanes.distance, enableTransition);\n        control == null ? void 0 : control.zoomTo(zoomOutPlanes.zoom, enableTransition);\n      }\n    } else {\n      if (type === \"sphere\") {\n        control == null ? void 0 : control.zoomTo(cameraZoom, enableTransition);\n        control == null ? void 0 : control.dollyTo(defaultSphereDistance, enableTransition);\n      } else {\n        control == null ? void 0 : control.dollyTo(cDistance, enableTransition);\n        control == null ? void 0 : control.zoomTo(defaultPlanesZoom, enableTransition);\n      }\n    }\n  }, [ref, zoomOut, type, cameraZoom, cDistance, enableTransition]);\n  return ref;\n}\nvar init_chunk_QTHZVTTJ = __esm({\n  \"../shadergradient/dist/chunk-QTHZVTTJ.mjs\"() {\n    init_chunk_ULEV7Y7T();\n    init_chunk_73SH6GTX();\n    init_chunk_JITLJLKU();\n  }\n});\n\n// ../shadergradient/dist/chunk-ODCSFWV5.mjs\nimport { useEffect as useEffect8, useState as useState4 } from \"react\";\nimport { jsx as jsx6 } from \"react/jsx-runtime\";\nfunction isPerspectiveCamera(camera) {\n  return camera.isPerspectiveCamera;\n}\nfunction isOrthographicCamera2(camera) {\n  return camera.isOrthographicCamera;\n}\nfunction clamp2(value, min, max) {\n  return Math.max(min, Math.min(max, value));\n}\nfunction approxZero(number, error2 = EPSILON) {\n  return Math.abs(number) < error2;\n}\nfunction approxEquals(a, b, error2 = EPSILON) {\n  return approxZero(a - b, error2);\n}\nfunction roundToStep(value, step) {\n  return Math.round(value / step) * step;\n}\nfunction infinityToMaxNumber(value) {\n  if (isFinite(value))\n    return value;\n  if (value < 0)\n    return -Number.MAX_VALUE;\n  return Number.MAX_VALUE;\n}\nfunction maxNumberToInfinity(value) {\n  if (Math.abs(value) < Number.MAX_VALUE)\n    return value;\n  return value * Infinity;\n}\nfunction smoothDamp(current, target2, currentVelocityRef, smoothTime, maxSpeed = Infinity, deltaTime) {\n  smoothTime = Math.max(1e-4, smoothTime);\n  const omega = 2 / smoothTime;\n  const x = omega * deltaTime;\n  const exp = 1 / (1 + x + 0.48 * x * x + 0.235 * x * x * x);\n  let change = current - target2;\n  const originalTo = target2;\n  const maxChange = maxSpeed * smoothTime;\n  change = clamp2(change, -maxChange, maxChange);\n  target2 = current - change;\n  const temp = (currentVelocityRef.value + omega * change) * deltaTime;\n  currentVelocityRef.value = (currentVelocityRef.value - omega * temp) * exp;\n  let output = target2 + (change + temp) * exp;\n  if (originalTo - current > 0 === output > originalTo) {\n    output = originalTo;\n    currentVelocityRef.value = (output - originalTo) / deltaTime;\n  }\n  return output;\n}\nfunction smoothDampVec3(current, target2, currentVelocityRef, smoothTime, maxSpeed = Infinity, deltaTime, out) {\n  smoothTime = Math.max(1e-4, smoothTime);\n  const omega = 2 / smoothTime;\n  const x = omega * deltaTime;\n  const exp = 1 / (1 + x + 0.48 * x * x + 0.235 * x * x * x);\n  let targetX = target2.x;\n  let targetY = target2.y;\n  let targetZ = target2.z;\n  let changeX = current.x - targetX;\n  let changeY = current.y - targetY;\n  let changeZ = current.z - targetZ;\n  const originalToX = targetX;\n  const originalToY = targetY;\n  const originalToZ = targetZ;\n  const maxChange = maxSpeed * smoothTime;\n  const maxChangeSq = maxChange * maxChange;\n  const magnitudeSq = changeX * changeX + changeY * changeY + changeZ * changeZ;\n  if (magnitudeSq > maxChangeSq) {\n    const magnitude = Math.sqrt(magnitudeSq);\n    changeX = changeX / magnitude * maxChange;\n    changeY = changeY / magnitude * maxChange;\n    changeZ = changeZ / magnitude * maxChange;\n  }\n  targetX = current.x - changeX;\n  targetY = current.y - changeY;\n  targetZ = current.z - changeZ;\n  const tempX = (currentVelocityRef.x + omega * changeX) * deltaTime;\n  const tempY = (currentVelocityRef.y + omega * changeY) * deltaTime;\n  const tempZ = (currentVelocityRef.z + omega * changeZ) * deltaTime;\n  currentVelocityRef.x = (currentVelocityRef.x - omega * tempX) * exp;\n  currentVelocityRef.y = (currentVelocityRef.y - omega * tempY) * exp;\n  currentVelocityRef.z = (currentVelocityRef.z - omega * tempZ) * exp;\n  out.x = targetX + (changeX + tempX) * exp;\n  out.y = targetY + (changeY + tempY) * exp;\n  out.z = targetZ + (changeZ + tempZ) * exp;\n  const origMinusCurrentX = originalToX - current.x;\n  const origMinusCurrentY = originalToY - current.y;\n  const origMinusCurrentZ = originalToZ - current.z;\n  const outMinusOrigX = out.x - originalToX;\n  const outMinusOrigY = out.y - originalToY;\n  const outMinusOrigZ = out.z - originalToZ;\n  if (origMinusCurrentX * outMinusOrigX + origMinusCurrentY * outMinusOrigY + origMinusCurrentZ * outMinusOrigZ > 0) {\n    out.x = originalToX;\n    out.y = originalToY;\n    out.z = originalToZ;\n    currentVelocityRef.x = (out.x - originalToX) / deltaTime;\n    currentVelocityRef.y = (out.y - originalToY) / deltaTime;\n    currentVelocityRef.z = (out.z - originalToZ) / deltaTime;\n  }\n  return out;\n}\nfunction extractClientCoordFromEvent(pointers, out) {\n  out.set(0, 0);\n  pointers.forEach((pointer) => {\n    out.x += pointer.clientX;\n    out.y += pointer.clientY;\n  });\n  out.x /= pointers.length;\n  out.y /= pointers.length;\n}\nfunction notSupportedInOrthographicCamera(camera, message) {\n  if (isOrthographicCamera2(camera)) {\n    console.warn(`${message} is not supported in OrthographicCamera`);\n    return true;\n  }\n  return false;\n}\nfunction CameraControl(_a22) {\n  var _b2 = _a22, {\n    smoothTime = 0.05\n  } = _b2, props = __objRest(_b2, [\n    \"smoothTime\"\n  ]);\n  CameraControls.install({ THREE: three_module_exports });\n  extend({ CameraControls });\n  const camera = useThree((state) => state.camera);\n  const gl = useThree((state) => state.gl);\n  const ref = useCameraAnimation(props);\n  const [isUserControlling, setIsUserControlling] = useState4(false);\n  useEffect8(() => {\n    const control = ref.current;\n    if (!control) return;\n    const { type, onCameraUpdate } = props || {};\n    if (!onCameraUpdate) return;\n    const toDegrees = (radians) => Math.round(radians * 180 / Math.PI);\n    const getAngles = () => ({\n      cAzimuthAngle: toDegrees(control.azimuthAngle),\n      cPolarAngle: toDegrees(control.polarAngle)\n    });\n    const getZoomDistance = () => {\n      var _a3;\n      const result = {};\n      if (type === \"sphere\") {\n        const ctrlZoom = control == null ? void 0 : control.zoom;\n        if (Number.isFinite(ctrlZoom)) {\n          result.cameraZoom = Number(ctrlZoom.toFixed(2));\n        } else {\n          const camZoom = (_a3 = control == null ? void 0 : control.camera) == null ? void 0 : _a3.zoom;\n          if (Number.isFinite(camZoom)) {\n            result.cameraZoom = Number(camZoom.toFixed(2));\n          }\n        }\n      } else {\n        if (Number.isFinite(control.distance)) {\n          result.cDistance = Number(control.distance.toFixed(2));\n        }\n      }\n      return result;\n    };\n    const handleControlStart = () => {\n      setIsUserControlling(true);\n    };\n    const handleRest = () => {\n      setIsUserControlling(false);\n      onCameraUpdate(__spreadValues(__spreadValues({}, getAngles()), getZoomDistance()));\n    };\n    control.addEventListener(\"controlstart\", handleControlStart);\n    control.addEventListener(\"rest\", handleRest);\n    return () => {\n      control.removeEventListener(\"controlstart\", handleControlStart);\n      control.removeEventListener(\"rest\", handleRest);\n    };\n  }, [ref, props]);\n  return (\n    // @ts-ignore\n    /* @__PURE__ */ jsx6(\n      \"cameraControls\",\n      {\n        ref,\n        args: [camera, gl.domElement],\n        smoothTime: isUserControlling ? 0 : smoothTime,\n        zoomSpeed: 10,\n        dollySpeed: 5,\n        maxDistance: 1e3,\n        restThreshold: 0.01,\n        mouseButtons: {\n          left: CameraControls.ACTION.ROTATE,\n          middle: props.type === \"sphere\" ? CameraControls.ACTION.ZOOM : CameraControls.ACTION.DOLLY,\n          right: CameraControls.ACTION.NONE,\n          // disabling pan for now, as we don't support camera position value in props\n          wheel: props.type === \"sphere\" ? CameraControls.ACTION.ZOOM : CameraControls.ACTION.DOLLY\n        },\n        touches: {\n          one: CameraControls.ACTION.ROTATE,\n          two: CameraControls.ACTION.NONE,\n          // disable touch pan (TRUCK)\n          three: CameraControls.ACTION.NONE\n        }\n      }\n    )\n  );\n}\nvar MOUSE_BUTTON, ACTION, DOLLY_DIRECTION, PI_2, PI_HALF, EPSILON, DEG2RAD2, EventDispatcher2, _a2, VERSION, TOUCH_DOLLY_FACTOR, isMac, THREE, _ORIGIN, _AXIS_Y, _AXIS_Z, _v22, _v3A, _v3B, _v3C, _cameraDirection, _xColumn, _yColumn, _zColumn, _deltaTarget, _deltaOffset, _sphericalA, _sphericalB, _box3A, _box3B, _sphere2, _quaternionA, _quaternionB, _rotationMatrix, _raycaster, CameraControls;\nvar init_chunk_ODCSFWV5 = __esm({\n  \"../shadergradient/dist/chunk-ODCSFWV5.mjs\"() {\n    init_chunk_QTHZVTTJ();\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n    init_chunk_5BEQP2BQ();\n    MOUSE_BUTTON = {\n      LEFT: 1,\n      RIGHT: 2,\n      MIDDLE: 4\n    };\n    ACTION = Object.freeze({\n      NONE: 0,\n      ROTATE: 1,\n      TRUCK: 2,\n      OFFSET: 4,\n      DOLLY: 8,\n      ZOOM: 16,\n      TOUCH_ROTATE: 32,\n      TOUCH_TRUCK: 64,\n      TOUCH_OFFSET: 128,\n      TOUCH_DOLLY: 256,\n      TOUCH_ZOOM: 512,\n      TOUCH_DOLLY_TRUCK: 1024,\n      TOUCH_DOLLY_OFFSET: 2048,\n      TOUCH_DOLLY_ROTATE: 4096,\n      TOUCH_ZOOM_TRUCK: 8192,\n      TOUCH_ZOOM_OFFSET: 16384,\n      TOUCH_ZOOM_ROTATE: 32768\n    });\n    DOLLY_DIRECTION = {\n      NONE: 0,\n      IN: 1,\n      OUT: -1\n    };\n    PI_2 = Math.PI * 2;\n    PI_HALF = Math.PI / 2;\n    EPSILON = 1e-5;\n    DEG2RAD2 = Math.PI / 180;\n    EventDispatcher2 = class {\n      constructor() {\n        this._listeners = {};\n      }\n      /**\n       * Adds the specified event listener.\n       * @param type event name\n       * @param listener handler function\n       * @category Methods\n       */\n      addEventListener(type, listener) {\n        const listeners = this._listeners;\n        if (listeners[type] === void 0)\n          listeners[type] = [];\n        if (listeners[type].indexOf(listener) === -1)\n          listeners[type].push(listener);\n      }\n      /**\n       * Presence of the specified event listener.\n       * @param type event name\n       * @param listener handler function\n       * @category Methods\n       */\n      hasEventListener(type, listener) {\n        const listeners = this._listeners;\n        return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n      }\n      /**\n       * Removes the specified event listener\n       * @param type event name\n       * @param listener handler function\n       * @category Methods\n       */\n      removeEventListener(type, listener) {\n        const listeners = this._listeners;\n        const listenerArray = listeners[type];\n        if (listenerArray !== void 0) {\n          const index = listenerArray.indexOf(listener);\n          if (index !== -1)\n            listenerArray.splice(index, 1);\n        }\n      }\n      /**\n       * Removes all event listeners\n       * @param type event name\n       * @category Methods\n       */\n      removeAllEventListeners(type) {\n        if (!type) {\n          this._listeners = {};\n          return;\n        }\n        if (Array.isArray(this._listeners[type]))\n          this._listeners[type].length = 0;\n      }\n      /**\n       * Fire an event type.\n       * @param event DispatcherEvent\n       * @category Methods\n       */\n      dispatchEvent(event) {\n        const listeners = this._listeners;\n        const listenerArray = listeners[event.type];\n        if (listenerArray !== void 0) {\n          event.target = this;\n          const array = listenerArray.slice(0);\n          for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n            array[i2].call(this, event);\n          }\n        }\n      }\n    };\n    VERSION = \"2.9.0\";\n    TOUCH_DOLLY_FACTOR = 1 / 8;\n    isMac = /Mac/.test((_a2 = globalThis === null || globalThis === void 0 ? void 0 : globalThis.navigator) === null || _a2 === void 0 ? void 0 : _a2.platform);\n    CameraControls = class _CameraControls extends EventDispatcher2 {\n      /**\n           * Injects THREE as the dependency. You can then proceed to use CameraControls.\n           *\n           * e.g\n           * ```javascript\n           * CameraControls.install( { THREE: THREE } );\n           * ```\n           *\n           * Note: If you do not wish to use enter three.js to reduce file size(tree-shaking for example), make a subset to install.\n           *\n           * ```js\n           * import {\n           * \tVector2,\n           * \tVector3,\n           * \tVector4,\n           * \tQuaternion,\n           * \tMatrix4,\n           * \tSpherical,\n           * \tBox3,\n           * \tSphere,\n           * \tRaycaster,\n           * \tMathUtils,\n           * } from 'three';\n           *\n           * const subsetOfTHREE = {\n           * \tVector2   : Vector2,\n           * \tVector3   : Vector3,\n           * \tVector4   : Vector4,\n           * \tQuaternion: Quaternion,\n           * \tMatrix4   : Matrix4,\n           * \tSpherical : Spherical,\n           * \tBox3      : Box3,\n           * \tSphere    : Sphere,\n           * \tRaycaster : Raycaster,\n           * };\n      \n           * CameraControls.install( { THREE: subsetOfTHREE } );\n           * ```\n           * @category Statics\n           */\n      static install(libs) {\n        THREE = libs.THREE;\n        _ORIGIN = Object.freeze(new THREE.Vector3(0, 0, 0));\n        _AXIS_Y = Object.freeze(new THREE.Vector3(0, 1, 0));\n        _AXIS_Z = Object.freeze(new THREE.Vector3(0, 0, 1));\n        _v22 = new THREE.Vector2();\n        _v3A = new THREE.Vector3();\n        _v3B = new THREE.Vector3();\n        _v3C = new THREE.Vector3();\n        _cameraDirection = new THREE.Vector3();\n        _xColumn = new THREE.Vector3();\n        _yColumn = new THREE.Vector3();\n        _zColumn = new THREE.Vector3();\n        _deltaTarget = new THREE.Vector3();\n        _deltaOffset = new THREE.Vector3();\n        _sphericalA = new THREE.Spherical();\n        _sphericalB = new THREE.Spherical();\n        _box3A = new THREE.Box3();\n        _box3B = new THREE.Box3();\n        _sphere2 = new THREE.Sphere();\n        _quaternionA = new THREE.Quaternion();\n        _quaternionB = new THREE.Quaternion();\n        _rotationMatrix = new THREE.Matrix4();\n        _raycaster = new THREE.Raycaster();\n      }\n      /**\n       * list all ACTIONs\n       * @category Statics\n       */\n      static get ACTION() {\n        return ACTION;\n      }\n      /**\n       * Creates a `CameraControls` instance.\n       *\n       * Note:\n       * You **must install** three.js before using camera-controls. see [#install](#install)\n       * Not doing so will lead to runtime errors (`undefined` references to THREE).\n       *\n       * e.g.\n       * ```\n       * CameraControls.install( { THREE } );\n       * const cameraControls = new CameraControls( camera, domElement );\n       * ```\n       *\n       * @param camera A `THREE.PerspectiveCamera` or `THREE.OrthographicCamera` to be controlled.\n       * @param domElement A `HTMLElement` for the draggable area, usually `renderer.domElement`.\n       * @category Constructor\n       */\n      constructor(camera, domElement) {\n        super();\n        this.minPolarAngle = 0;\n        this.maxPolarAngle = Math.PI;\n        this.minAzimuthAngle = -Infinity;\n        this.maxAzimuthAngle = Infinity;\n        this.minDistance = Number.EPSILON;\n        this.maxDistance = Infinity;\n        this.infinityDolly = false;\n        this.minZoom = 0.01;\n        this.maxZoom = Infinity;\n        this.smoothTime = 0.25;\n        this.draggingSmoothTime = 0.125;\n        this.maxSpeed = Infinity;\n        this.azimuthRotateSpeed = 1;\n        this.polarRotateSpeed = 1;\n        this.dollySpeed = 1;\n        this.dollyDragInverted = false;\n        this.truckSpeed = 2;\n        this.dollyToCursor = false;\n        this.dragToOffset = false;\n        this.verticalDragToForward = false;\n        this.boundaryFriction = 0;\n        this.restThreshold = 0.01;\n        this.colliderMeshes = [];\n        this.cancel = () => {\n        };\n        this._enabled = true;\n        this._state = ACTION.NONE;\n        this._viewport = null;\n        this._changedDolly = 0;\n        this._changedZoom = 0;\n        this._hasRested = true;\n        this._boundaryEnclosesCamera = false;\n        this._needsUpdate = true;\n        this._updatedLastTime = false;\n        this._elementRect = new DOMRect();\n        this._isDragging = false;\n        this._dragNeedsUpdate = true;\n        this._activePointers = [];\n        this._lockedPointer = null;\n        this._interactiveArea = new DOMRect(0, 0, 1, 1);\n        this._isUserControllingRotate = false;\n        this._isUserControllingDolly = false;\n        this._isUserControllingTruck = false;\n        this._isUserControllingOffset = false;\n        this._isUserControllingZoom = false;\n        this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n        this._thetaVelocity = { value: 0 };\n        this._phiVelocity = { value: 0 };\n        this._radiusVelocity = { value: 0 };\n        this._targetVelocity = new THREE.Vector3();\n        this._focalOffsetVelocity = new THREE.Vector3();\n        this._zoomVelocity = { value: 0 };\n        this._truckInternal = (deltaX, deltaY, dragToOffset) => {\n          let truckX;\n          let pedestalY;\n          if (isPerspectiveCamera(this._camera)) {\n            const offset = _v3A.copy(this._camera.position).sub(this._target);\n            const fov2 = this._camera.getEffectiveFOV() * DEG2RAD2;\n            const targetDistance = offset.length() * Math.tan(fov2 * 0.5);\n            truckX = this.truckSpeed * deltaX * targetDistance / this._elementRect.height;\n            pedestalY = this.truckSpeed * deltaY * targetDistance / this._elementRect.height;\n          } else if (isOrthographicCamera2(this._camera)) {\n            const camera2 = this._camera;\n            truckX = deltaX * (camera2.right - camera2.left) / camera2.zoom / this._elementRect.width;\n            pedestalY = deltaY * (camera2.top - camera2.bottom) / camera2.zoom / this._elementRect.height;\n          } else {\n            return;\n          }\n          if (this.verticalDragToForward) {\n            dragToOffset ? this.setFocalOffset(this._focalOffsetEnd.x + truckX, this._focalOffsetEnd.y, this._focalOffsetEnd.z, true) : this.truck(truckX, 0, true);\n            this.forward(-pedestalY, true);\n          } else {\n            dragToOffset ? this.setFocalOffset(this._focalOffsetEnd.x + truckX, this._focalOffsetEnd.y + pedestalY, this._focalOffsetEnd.z, true) : this.truck(truckX, pedestalY, true);\n          }\n        };\n        this._rotateInternal = (deltaX, deltaY) => {\n          const theta = PI_2 * this.azimuthRotateSpeed * deltaX / this._elementRect.height;\n          const phi = PI_2 * this.polarRotateSpeed * deltaY / this._elementRect.height;\n          this.rotate(theta, phi, true);\n        };\n        this._dollyInternal = (delta, x, y2) => {\n          const dollyScale = Math.pow(0.95, -delta * this.dollySpeed);\n          const lastDistance = this._sphericalEnd.radius;\n          const distance = this._sphericalEnd.radius * dollyScale;\n          const clampedDistance = clamp2(distance, this.minDistance, this.maxDistance);\n          const overflowedDistance = clampedDistance - distance;\n          if (this.infinityDolly && this.dollyToCursor) {\n            this._dollyToNoClamp(distance, true);\n          } else if (this.infinityDolly && !this.dollyToCursor) {\n            this.dollyInFixed(overflowedDistance, true);\n            this._dollyToNoClamp(clampedDistance, true);\n          } else {\n            this._dollyToNoClamp(clampedDistance, true);\n          }\n          if (this.dollyToCursor) {\n            this._changedDolly += (this.infinityDolly ? distance : clampedDistance) - lastDistance;\n            this._dollyControlCoord.set(x, y2);\n          }\n          this._lastDollyDirection = Math.sign(-delta);\n        };\n        this._zoomInternal = (delta, x, y2) => {\n          const zoomScale = Math.pow(0.95, delta * this.dollySpeed);\n          const lastZoom = this._zoom;\n          const zoom = this._zoom * zoomScale;\n          this.zoomTo(zoom, true);\n          if (this.dollyToCursor) {\n            this._changedZoom += zoom - lastZoom;\n            this._dollyControlCoord.set(x, y2);\n          }\n        };\n        if (typeof THREE === \"undefined\") {\n          console.error(\"camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information.\");\n        }\n        this._camera = camera;\n        this._yAxisUpSpace = new THREE.Quaternion().setFromUnitVectors(this._camera.up, _AXIS_Y);\n        this._yAxisUpSpaceInverse = this._yAxisUpSpace.clone().invert();\n        this._state = ACTION.NONE;\n        this._target = new THREE.Vector3();\n        this._targetEnd = this._target.clone();\n        this._focalOffset = new THREE.Vector3();\n        this._focalOffsetEnd = this._focalOffset.clone();\n        this._spherical = new THREE.Spherical().setFromVector3(_v3A.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace));\n        this._sphericalEnd = this._spherical.clone();\n        this._lastDistance = this._spherical.radius;\n        this._zoom = this._camera.zoom;\n        this._zoomEnd = this._zoom;\n        this._lastZoom = this._zoom;\n        this._nearPlaneCorners = [\n          new THREE.Vector3(),\n          new THREE.Vector3(),\n          new THREE.Vector3(),\n          new THREE.Vector3()\n        ];\n        this._updateNearPlaneCorners();\n        this._boundary = new THREE.Box3(new THREE.Vector3(-Infinity, -Infinity, -Infinity), new THREE.Vector3(Infinity, Infinity, Infinity));\n        this._cameraUp0 = this._camera.up.clone();\n        this._target0 = this._target.clone();\n        this._position0 = this._camera.position.clone();\n        this._zoom0 = this._zoom;\n        this._focalOffset0 = this._focalOffset.clone();\n        this._dollyControlCoord = new THREE.Vector2();\n        this.mouseButtons = {\n          left: ACTION.ROTATE,\n          middle: ACTION.DOLLY,\n          right: ACTION.TRUCK,\n          wheel: isPerspectiveCamera(this._camera) ? ACTION.DOLLY : isOrthographicCamera2(this._camera) ? ACTION.ZOOM : ACTION.NONE\n        };\n        this.touches = {\n          one: ACTION.TOUCH_ROTATE,\n          two: isPerspectiveCamera(this._camera) ? ACTION.TOUCH_DOLLY_TRUCK : isOrthographicCamera2(this._camera) ? ACTION.TOUCH_ZOOM_TRUCK : ACTION.NONE,\n          three: ACTION.TOUCH_TRUCK\n        };\n        const dragStartPosition = new THREE.Vector2();\n        const lastDragPosition = new THREE.Vector2();\n        const dollyStart = new THREE.Vector2();\n        const onPointerDown = (event) => {\n          if (!this._enabled || !this._domElement)\n            return;\n          if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n            const elRect = this._domElement.getBoundingClientRect();\n            const left = event.clientX / elRect.width;\n            const top = event.clientY / elRect.height;\n            if (left < this._interactiveArea.left || left > this._interactiveArea.right || top < this._interactiveArea.top || top > this._interactiveArea.bottom)\n              return;\n          }\n          const mouseButton = event.pointerType !== \"mouse\" ? null : (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT ? MOUSE_BUTTON.LEFT : (event.buttons & MOUSE_BUTTON.MIDDLE) === MOUSE_BUTTON.MIDDLE ? MOUSE_BUTTON.MIDDLE : (event.buttons & MOUSE_BUTTON.RIGHT) === MOUSE_BUTTON.RIGHT ? MOUSE_BUTTON.RIGHT : null;\n          if (mouseButton !== null) {\n            const zombiePointer = this._findPointerByMouseButton(mouseButton);\n            zombiePointer && this._disposePointer(zombiePointer);\n          }\n          if ((event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT && this._lockedPointer)\n            return;\n          const pointer = {\n            pointerId: event.pointerId,\n            clientX: event.clientX,\n            clientY: event.clientY,\n            deltaX: 0,\n            deltaY: 0,\n            mouseButton\n          };\n          this._activePointers.push(pointer);\n          this._domElement.ownerDocument.removeEventListener(\"pointermove\", onPointerMove, { passive: false });\n          this._domElement.ownerDocument.removeEventListener(\"pointerup\", onPointerUp);\n          this._domElement.ownerDocument.addEventListener(\"pointermove\", onPointerMove, { passive: false });\n          this._domElement.ownerDocument.addEventListener(\"pointerup\", onPointerUp);\n          this._isDragging = true;\n          startDragging(event);\n        };\n        const onPointerMove = (event) => {\n          if (event.cancelable)\n            event.preventDefault();\n          const pointerId = event.pointerId;\n          const pointer = this._lockedPointer || this._findPointerById(pointerId);\n          if (!pointer)\n            return;\n          pointer.clientX = event.clientX;\n          pointer.clientY = event.clientY;\n          pointer.deltaX = event.movementX;\n          pointer.deltaY = event.movementY;\n          this._state = 0;\n          if (event.pointerType === \"touch\") {\n            switch (this._activePointers.length) {\n              case 1:\n                this._state = this.touches.one;\n                break;\n              case 2:\n                this._state = this.touches.two;\n                break;\n              case 3:\n                this._state = this.touches.three;\n                break;\n            }\n          } else {\n            if (!this._isDragging && this._lockedPointer || this._isDragging && (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT) {\n              this._state = this._state | this.mouseButtons.left;\n            }\n            if (this._isDragging && (event.buttons & MOUSE_BUTTON.MIDDLE) === MOUSE_BUTTON.MIDDLE) {\n              this._state = this._state | this.mouseButtons.middle;\n            }\n            if (this._isDragging && (event.buttons & MOUSE_BUTTON.RIGHT) === MOUSE_BUTTON.RIGHT) {\n              this._state = this._state | this.mouseButtons.right;\n            }\n          }\n          dragging();\n        };\n        const onPointerUp = (event) => {\n          const pointer = this._findPointerById(event.pointerId);\n          if (pointer && pointer === this._lockedPointer)\n            return;\n          pointer && this._disposePointer(pointer);\n          if (event.pointerType === \"touch\") {\n            switch (this._activePointers.length) {\n              case 0:\n                this._state = ACTION.NONE;\n                break;\n              case 1:\n                this._state = this.touches.one;\n                break;\n              case 2:\n                this._state = this.touches.two;\n                break;\n              case 3:\n                this._state = this.touches.three;\n                break;\n            }\n          } else {\n            this._state = ACTION.NONE;\n          }\n          endDragging();\n        };\n        let lastScrollTimeStamp = -1;\n        const onMouseWheel = (event) => {\n          if (!this._domElement)\n            return;\n          if (!this._enabled || this.mouseButtons.wheel === ACTION.NONE)\n            return;\n          if (this._interactiveArea.left !== 0 || this._interactiveArea.top !== 0 || this._interactiveArea.width !== 1 || this._interactiveArea.height !== 1) {\n            const elRect = this._domElement.getBoundingClientRect();\n            const left = event.clientX / elRect.width;\n            const top = event.clientY / elRect.height;\n            if (left < this._interactiveArea.left || left > this._interactiveArea.right || top < this._interactiveArea.top || top > this._interactiveArea.bottom)\n              return;\n          }\n          event.preventDefault();\n          if (this.dollyToCursor || this.mouseButtons.wheel === ACTION.ROTATE || this.mouseButtons.wheel === ACTION.TRUCK) {\n            const now2 = performance.now();\n            if (lastScrollTimeStamp - now2 < 1e3)\n              this._getClientRect(this._elementRect);\n            lastScrollTimeStamp = now2;\n          }\n          const deltaYFactor = isMac ? -1 : -3;\n          const delta = event.deltaMode === 1 ? event.deltaY / deltaYFactor : event.deltaY / (deltaYFactor * 10);\n          const x = this.dollyToCursor ? (event.clientX - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0;\n          const y2 = this.dollyToCursor ? (event.clientY - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n          switch (this.mouseButtons.wheel) {\n            case ACTION.ROTATE: {\n              this._rotateInternal(event.deltaX, event.deltaY);\n              this._isUserControllingRotate = true;\n              break;\n            }\n            case ACTION.TRUCK: {\n              this._truckInternal(event.deltaX, event.deltaY, false);\n              this._isUserControllingTruck = true;\n              break;\n            }\n            case ACTION.OFFSET: {\n              this._truckInternal(event.deltaX, event.deltaY, true);\n              this._isUserControllingOffset = true;\n              break;\n            }\n            case ACTION.DOLLY: {\n              this._dollyInternal(-delta, x, y2);\n              this._isUserControllingDolly = true;\n              break;\n            }\n            case ACTION.ZOOM: {\n              this._zoomInternal(-delta, x, y2);\n              this._isUserControllingZoom = true;\n              break;\n            }\n          }\n          this.dispatchEvent({ type: \"control\" });\n        };\n        const onContextMenu = (event) => {\n          if (!this._domElement || !this._enabled)\n            return;\n          if (this.mouseButtons.right === _CameraControls.ACTION.NONE) {\n            const pointerId = event instanceof PointerEvent ? event.pointerId : 0;\n            const pointer = this._findPointerById(pointerId);\n            pointer && this._disposePointer(pointer);\n            this._domElement.ownerDocument.removeEventListener(\"pointermove\", onPointerMove, { passive: false });\n            this._domElement.ownerDocument.removeEventListener(\"pointerup\", onPointerUp);\n            return;\n          }\n          event.preventDefault();\n        };\n        const startDragging = (event) => {\n          if (!this._enabled)\n            return;\n          extractClientCoordFromEvent(this._activePointers, _v22);\n          this._getClientRect(this._elementRect);\n          dragStartPosition.copy(_v22);\n          lastDragPosition.copy(_v22);\n          const isMultiTouch = this._activePointers.length >= 2;\n          if (isMultiTouch) {\n            const dx = _v22.x - this._activePointers[1].clientX;\n            const dy = _v22.y - this._activePointers[1].clientY;\n            const distance = Math.sqrt(dx * dx + dy * dy);\n            dollyStart.set(0, distance);\n            const x = (this._activePointers[0].clientX + this._activePointers[1].clientX) * 0.5;\n            const y2 = (this._activePointers[0].clientY + this._activePointers[1].clientY) * 0.5;\n            lastDragPosition.set(x, y2);\n          }\n          this._state = 0;\n          if (!event) {\n            if (this._lockedPointer)\n              this._state = this._state | this.mouseButtons.left;\n          } else if (\"pointerType\" in event && event.pointerType === \"touch\") {\n            switch (this._activePointers.length) {\n              case 1:\n                this._state = this.touches.one;\n                break;\n              case 2:\n                this._state = this.touches.two;\n                break;\n              case 3:\n                this._state = this.touches.three;\n                break;\n            }\n          } else {\n            if (!this._lockedPointer && (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT) {\n              this._state = this._state | this.mouseButtons.left;\n            }\n            if ((event.buttons & MOUSE_BUTTON.MIDDLE) === MOUSE_BUTTON.MIDDLE) {\n              this._state = this._state | this.mouseButtons.middle;\n            }\n            if ((event.buttons & MOUSE_BUTTON.RIGHT) === MOUSE_BUTTON.RIGHT) {\n              this._state = this._state | this.mouseButtons.right;\n            }\n          }\n          if ((this._state & ACTION.ROTATE) === ACTION.ROTATE || (this._state & ACTION.TOUCH_ROTATE) === ACTION.TOUCH_ROTATE || (this._state & ACTION.TOUCH_DOLLY_ROTATE) === ACTION.TOUCH_DOLLY_ROTATE || (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE) {\n            this._sphericalEnd.theta = this._spherical.theta;\n            this._sphericalEnd.phi = this._spherical.phi;\n            this._thetaVelocity.value = 0;\n            this._phiVelocity.value = 0;\n          }\n          if ((this._state & ACTION.TRUCK) === ACTION.TRUCK || (this._state & ACTION.TOUCH_TRUCK) === ACTION.TOUCH_TRUCK || (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK || (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK) {\n            this._targetEnd.copy(this._target);\n            this._targetVelocity.set(0, 0, 0);\n          }\n          if ((this._state & ACTION.DOLLY) === ACTION.DOLLY || (this._state & ACTION.TOUCH_DOLLY) === ACTION.TOUCH_DOLLY || (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK || (this._state & ACTION.TOUCH_DOLLY_OFFSET) === ACTION.TOUCH_DOLLY_OFFSET || (this._state & ACTION.TOUCH_DOLLY_ROTATE) === ACTION.TOUCH_DOLLY_ROTATE) {\n            this._sphericalEnd.radius = this._spherical.radius;\n            this._radiusVelocity.value = 0;\n          }\n          if ((this._state & ACTION.ZOOM) === ACTION.ZOOM || (this._state & ACTION.TOUCH_ZOOM) === ACTION.TOUCH_ZOOM || (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK || (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET || (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE) {\n            this._zoomEnd = this._zoom;\n            this._zoomVelocity.value = 0;\n          }\n          if ((this._state & ACTION.OFFSET) === ACTION.OFFSET || (this._state & ACTION.TOUCH_OFFSET) === ACTION.TOUCH_OFFSET || (this._state & ACTION.TOUCH_DOLLY_OFFSET) === ACTION.TOUCH_DOLLY_OFFSET || (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET) {\n            this._focalOffsetEnd.copy(this._focalOffset);\n            this._focalOffsetVelocity.set(0, 0, 0);\n          }\n          this.dispatchEvent({ type: \"controlstart\" });\n        };\n        const dragging = () => {\n          if (!this._enabled || !this._dragNeedsUpdate)\n            return;\n          this._dragNeedsUpdate = false;\n          extractClientCoordFromEvent(this._activePointers, _v22);\n          const isPointerLockActive = this._domElement && this._domElement.ownerDocument.pointerLockElement === this._domElement;\n          const lockedPointer = isPointerLockActive ? this._lockedPointer || this._activePointers[0] : null;\n          const deltaX = lockedPointer ? -lockedPointer.deltaX : lastDragPosition.x - _v22.x;\n          const deltaY = lockedPointer ? -lockedPointer.deltaY : lastDragPosition.y - _v22.y;\n          lastDragPosition.copy(_v22);\n          if ((this._state & ACTION.ROTATE) === ACTION.ROTATE || (this._state & ACTION.TOUCH_ROTATE) === ACTION.TOUCH_ROTATE || (this._state & ACTION.TOUCH_DOLLY_ROTATE) === ACTION.TOUCH_DOLLY_ROTATE || (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE) {\n            this._rotateInternal(deltaX, deltaY);\n            this._isUserControllingRotate = true;\n          }\n          if ((this._state & ACTION.DOLLY) === ACTION.DOLLY || (this._state & ACTION.ZOOM) === ACTION.ZOOM) {\n            const dollyX = this.dollyToCursor ? (dragStartPosition.x - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0;\n            const dollyY = this.dollyToCursor ? (dragStartPosition.y - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n            const dollyDirection = this.dollyDragInverted ? -1 : 1;\n            if ((this._state & ACTION.DOLLY) === ACTION.DOLLY) {\n              this._dollyInternal(dollyDirection * deltaY * TOUCH_DOLLY_FACTOR, dollyX, dollyY);\n              this._isUserControllingDolly = true;\n            } else {\n              this._zoomInternal(dollyDirection * deltaY * TOUCH_DOLLY_FACTOR, dollyX, dollyY);\n              this._isUserControllingZoom = true;\n            }\n          }\n          if ((this._state & ACTION.TOUCH_DOLLY) === ACTION.TOUCH_DOLLY || (this._state & ACTION.TOUCH_ZOOM) === ACTION.TOUCH_ZOOM || (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK || (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK || (this._state & ACTION.TOUCH_DOLLY_OFFSET) === ACTION.TOUCH_DOLLY_OFFSET || (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET || (this._state & ACTION.TOUCH_DOLLY_ROTATE) === ACTION.TOUCH_DOLLY_ROTATE || (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE) {\n            const dx = _v22.x - this._activePointers[1].clientX;\n            const dy = _v22.y - this._activePointers[1].clientY;\n            const distance = Math.sqrt(dx * dx + dy * dy);\n            const dollyDelta = dollyStart.y - distance;\n            dollyStart.set(0, distance);\n            const dollyX = this.dollyToCursor ? (lastDragPosition.x - this._elementRect.x) / this._elementRect.width * 2 - 1 : 0;\n            const dollyY = this.dollyToCursor ? (lastDragPosition.y - this._elementRect.y) / this._elementRect.height * -2 + 1 : 0;\n            if ((this._state & ACTION.TOUCH_DOLLY) === ACTION.TOUCH_DOLLY || (this._state & ACTION.TOUCH_DOLLY_ROTATE) === ACTION.TOUCH_DOLLY_ROTATE || (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK || (this._state & ACTION.TOUCH_DOLLY_OFFSET) === ACTION.TOUCH_DOLLY_OFFSET) {\n              this._dollyInternal(dollyDelta * TOUCH_DOLLY_FACTOR, dollyX, dollyY);\n              this._isUserControllingDolly = true;\n            } else {\n              this._zoomInternal(dollyDelta * TOUCH_DOLLY_FACTOR, dollyX, dollyY);\n              this._isUserControllingZoom = true;\n            }\n          }\n          if ((this._state & ACTION.TRUCK) === ACTION.TRUCK || (this._state & ACTION.TOUCH_TRUCK) === ACTION.TOUCH_TRUCK || (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK || (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK) {\n            this._truckInternal(deltaX, deltaY, false);\n            this._isUserControllingTruck = true;\n          }\n          if ((this._state & ACTION.OFFSET) === ACTION.OFFSET || (this._state & ACTION.TOUCH_OFFSET) === ACTION.TOUCH_OFFSET || (this._state & ACTION.TOUCH_DOLLY_OFFSET) === ACTION.TOUCH_DOLLY_OFFSET || (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET) {\n            this._truckInternal(deltaX, deltaY, true);\n            this._isUserControllingOffset = true;\n          }\n          this.dispatchEvent({ type: \"control\" });\n        };\n        const endDragging = () => {\n          extractClientCoordFromEvent(this._activePointers, _v22);\n          lastDragPosition.copy(_v22);\n          this._dragNeedsUpdate = false;\n          if (this._activePointers.length === 0 || this._activePointers.length === 1 && this._activePointers[0] === this._lockedPointer) {\n            this._isDragging = false;\n          }\n          if (this._activePointers.length === 0 && this._domElement) {\n            this._domElement.ownerDocument.removeEventListener(\"pointermove\", onPointerMove, { passive: false });\n            this._domElement.ownerDocument.removeEventListener(\"pointerup\", onPointerUp);\n            this.dispatchEvent({ type: \"controlend\" });\n          }\n        };\n        this.lockPointer = () => {\n          if (!this._enabled || !this._domElement)\n            return;\n          this.cancel();\n          this._lockedPointer = {\n            pointerId: -1,\n            clientX: 0,\n            clientY: 0,\n            deltaX: 0,\n            deltaY: 0,\n            mouseButton: null\n          };\n          this._activePointers.push(this._lockedPointer);\n          this._domElement.ownerDocument.removeEventListener(\"pointermove\", onPointerMove, { passive: false });\n          this._domElement.ownerDocument.removeEventListener(\"pointerup\", onPointerUp);\n          this._domElement.requestPointerLock();\n          this._domElement.ownerDocument.addEventListener(\"pointerlockchange\", onPointerLockChange);\n          this._domElement.ownerDocument.addEventListener(\"pointerlockerror\", onPointerLockError);\n          this._domElement.ownerDocument.addEventListener(\"pointermove\", onPointerMove, { passive: false });\n          this._domElement.ownerDocument.addEventListener(\"pointerup\", onPointerUp);\n          startDragging();\n        };\n        this.unlockPointer = () => {\n          var _a22, _b2, _c;\n          if (this._lockedPointer !== null) {\n            this._disposePointer(this._lockedPointer);\n            this._lockedPointer = null;\n          }\n          (_a22 = this._domElement) === null || _a22 === void 0 ? void 0 : _a22.ownerDocument.exitPointerLock();\n          (_b2 = this._domElement) === null || _b2 === void 0 ? void 0 : _b2.ownerDocument.removeEventListener(\"pointerlockchange\", onPointerLockChange);\n          (_c = this._domElement) === null || _c === void 0 ? void 0 : _c.ownerDocument.removeEventListener(\"pointerlockerror\", onPointerLockError);\n          this.cancel();\n        };\n        const onPointerLockChange = () => {\n          const isPointerLockActive = this._domElement && this._domElement.ownerDocument.pointerLockElement === this._domElement;\n          if (!isPointerLockActive)\n            this.unlockPointer();\n        };\n        const onPointerLockError = () => {\n          this.unlockPointer();\n        };\n        this._addAllEventListeners = (domElement2) => {\n          this._domElement = domElement2;\n          this._domElement.style.touchAction = \"none\";\n          this._domElement.style.userSelect = \"none\";\n          this._domElement.style.webkitUserSelect = \"none\";\n          this._domElement.addEventListener(\"pointerdown\", onPointerDown);\n          this._domElement.addEventListener(\"pointercancel\", onPointerUp);\n          this._domElement.addEventListener(\"wheel\", onMouseWheel, { passive: false });\n          this._domElement.addEventListener(\"contextmenu\", onContextMenu);\n        };\n        this._removeAllEventListeners = () => {\n          if (!this._domElement)\n            return;\n          this._domElement.style.touchAction = \"\";\n          this._domElement.style.userSelect = \"\";\n          this._domElement.style.webkitUserSelect = \"\";\n          this._domElement.removeEventListener(\"pointerdown\", onPointerDown);\n          this._domElement.removeEventListener(\"pointercancel\", onPointerUp);\n          this._domElement.removeEventListener(\"wheel\", onMouseWheel, { passive: false });\n          this._domElement.removeEventListener(\"contextmenu\", onContextMenu);\n          this._domElement.ownerDocument.removeEventListener(\"pointermove\", onPointerMove, { passive: false });\n          this._domElement.ownerDocument.removeEventListener(\"pointerup\", onPointerUp);\n          this._domElement.ownerDocument.removeEventListener(\"pointerlockchange\", onPointerLockChange);\n          this._domElement.ownerDocument.removeEventListener(\"pointerlockerror\", onPointerLockError);\n        };\n        this.cancel = () => {\n          if (this._state === ACTION.NONE)\n            return;\n          this._state = ACTION.NONE;\n          this._activePointers.length = 0;\n          endDragging();\n        };\n        if (domElement)\n          this.connect(domElement);\n        this.update(0);\n      }\n      /**\n       * The camera to be controlled\n       * @category Properties\n       */\n      get camera() {\n        return this._camera;\n      }\n      set camera(camera) {\n        this._camera = camera;\n        this.updateCameraUp();\n        this._camera.updateProjectionMatrix();\n        this._updateNearPlaneCorners();\n        this._needsUpdate = true;\n      }\n      /**\n       * Whether or not the controls are enabled.\n       * `false` to disable user dragging/touch-move, but all methods works.\n       * @category Properties\n       */\n      get enabled() {\n        return this._enabled;\n      }\n      set enabled(enabled) {\n        this._enabled = enabled;\n        if (!this._domElement)\n          return;\n        if (enabled) {\n          this._domElement.style.touchAction = \"none\";\n          this._domElement.style.userSelect = \"none\";\n          this._domElement.style.webkitUserSelect = \"none\";\n        } else {\n          this.cancel();\n          this._domElement.style.touchAction = \"\";\n          this._domElement.style.userSelect = \"\";\n          this._domElement.style.webkitUserSelect = \"\";\n        }\n      }\n      /**\n       * Returns `true` if the controls are active updating.\n       * readonly value.\n       * @category Properties\n       */\n      get active() {\n        return !this._hasRested;\n      }\n      /**\n       * Getter for the current `ACTION`.\n       * readonly value.\n       * @category Properties\n       */\n      get currentAction() {\n        return this._state;\n      }\n      /**\n       * get/set Current distance.\n       * @category Properties\n       */\n      get distance() {\n        return this._spherical.radius;\n      }\n      set distance(distance) {\n        if (this._spherical.radius === distance && this._sphericalEnd.radius === distance)\n          return;\n        this._spherical.radius = distance;\n        this._sphericalEnd.radius = distance;\n        this._needsUpdate = true;\n      }\n      // horizontal angle\n      /**\n       * get/set the azimuth angle (horizontal) in radians.\n       * Every 360 degrees turn is added to `.azimuthAngle` value, which is accumulative.\n       * @category Properties\n       */\n      get azimuthAngle() {\n        return this._spherical.theta;\n      }\n      set azimuthAngle(azimuthAngle) {\n        if (this._spherical.theta === azimuthAngle && this._sphericalEnd.theta === azimuthAngle)\n          return;\n        this._spherical.theta = azimuthAngle;\n        this._sphericalEnd.theta = azimuthAngle;\n        this._needsUpdate = true;\n      }\n      // vertical angle\n      /**\n       * get/set the polar angle (vertical) in radians.\n       * @category Properties\n       */\n      get polarAngle() {\n        return this._spherical.phi;\n      }\n      set polarAngle(polarAngle) {\n        if (this._spherical.phi === polarAngle && this._sphericalEnd.phi === polarAngle)\n          return;\n        this._spherical.phi = polarAngle;\n        this._sphericalEnd.phi = polarAngle;\n        this._needsUpdate = true;\n      }\n      /**\n       * Whether camera position should be enclosed in the boundary or not.\n       * @category Properties\n       */\n      get boundaryEnclosesCamera() {\n        return this._boundaryEnclosesCamera;\n      }\n      set boundaryEnclosesCamera(boundaryEnclosesCamera) {\n        this._boundaryEnclosesCamera = boundaryEnclosesCamera;\n        this._needsUpdate = true;\n      }\n      /**\n       * Set drag-start, touches and wheel enable area in the domElement.\n       * each values are between `0` and `1` inclusive, where `0` is left/top and `1` is right/bottom of the screen.\n       * e.g. `{ x: 0, y: 0, width: 1, height: 1 }` for entire area.\n       * @category Properties\n       */\n      set interactiveArea(interactiveArea) {\n        this._interactiveArea.width = clamp2(interactiveArea.width, 0, 1);\n        this._interactiveArea.height = clamp2(interactiveArea.height, 0, 1);\n        this._interactiveArea.x = clamp2(interactiveArea.x, 0, 1 - this._interactiveArea.width);\n        this._interactiveArea.y = clamp2(interactiveArea.y, 0, 1 - this._interactiveArea.height);\n      }\n      /**\n       * Adds the specified event listener.\n       * Applicable event types (which is `K`) are:\n       * | Event name          | Timing |\n       * | ------------------- | ------ |\n       * | `'controlstart'`    | When the user starts to control the camera via mouse / touches. ¹ |\n       * | `'control'`         | When the user controls the camera (dragging). |\n       * | `'controlend'`      | When the user ends to control the camera. ¹ |\n       * | `'transitionstart'` | When any kind of transition starts, either user control or using a method with `enableTransition = true` |\n       * | `'update'`          | When the camera position is updated. |\n       * | `'wake'`            | When the camera starts moving. |\n       * | `'rest'`            | When the camera movement is below `.restThreshold` ². |\n       * | `'sleep'`           | When the camera end moving. |\n       *\n       * 1. `mouseButtons.wheel` (Mouse wheel control) does not emit `'controlstart'` and `'controlend'`. `mouseButtons.wheel` uses scroll-event internally, and scroll-event happens intermittently. That means \"start\" and \"end\" cannot be detected.\n       * 2. Due to damping, `sleep` will usually fire a few seconds after the camera _appears_ to have stopped moving. If you want to do something (e.g. enable UI, perform another transition) at the point when the camera has stopped, you probably want the `rest` event. This can be fine tuned using the `.restThreshold` parameter. See the [Rest and Sleep Example](https://yomotsu.github.io/camera-controls/examples/rest-and-sleep.html).\n       *\n       * e.g.\n       * ```\n       * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n       * ```\n       * @param type event name\n       * @param listener handler function\n       * @category Methods\n       */\n      addEventListener(type, listener) {\n        super.addEventListener(type, listener);\n      }\n      /**\n       * Removes the specified event listener\n       * e.g.\n       * ```\n       * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n       * ```\n       * @param type event name\n       * @param listener handler function\n       * @category Methods\n       */\n      removeEventListener(type, listener) {\n        super.removeEventListener(type, listener);\n      }\n      /**\n       * Rotate azimuthal angle(horizontal) and polar angle(vertical).\n       * Every value is added to the current value.\n       * @param azimuthAngle Azimuth rotate angle. In radian.\n       * @param polarAngle Polar rotate angle. In radian.\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      rotate(azimuthAngle, polarAngle, enableTransition = false) {\n        return this.rotateTo(this._sphericalEnd.theta + azimuthAngle, this._sphericalEnd.phi + polarAngle, enableTransition);\n      }\n      /**\n       * Rotate azimuthal angle(horizontal) to the given angle and keep the same polar angle(vertical) target.\n       *\n       * e.g.\n       * ```\n       * cameraControls.rotateAzimuthTo( 30 * THREE.MathUtils.DEG2RAD, true );\n       * ```\n       * @param azimuthAngle Azimuth rotate angle. In radian.\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      rotateAzimuthTo(azimuthAngle, enableTransition = false) {\n        return this.rotateTo(azimuthAngle, this._sphericalEnd.phi, enableTransition);\n      }\n      /**\n       * Rotate polar angle(vertical) to the given angle and keep the same azimuthal angle(horizontal) target.\n       *\n       * e.g.\n       * ```\n       * cameraControls.rotatePolarTo( 30 * THREE.MathUtils.DEG2RAD, true );\n       * ```\n       * @param polarAngle Polar rotate angle. In radian.\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      rotatePolarTo(polarAngle, enableTransition = false) {\n        return this.rotateTo(this._sphericalEnd.theta, polarAngle, enableTransition);\n      }\n      /**\n       * Rotate azimuthal angle(horizontal) and polar angle(vertical) to the given angle.\n       * Camera view will rotate over the orbit pivot absolutely:\n       *\n       * azimuthAngle\n       * ```\n       *       0º\n       *         \\\n       * 90º -----+----- -90º\n       *           \\\n       *           180º\n       * ```\n       * | direction | angle                  |\n       * | --------- | ---------------------- |\n       * | front     | 0º                     |\n       * | left      | 90º (`Math.PI / 2`)    |\n       * | right     | -90º (`- Math.PI / 2`) |\n       * | back      | 180º (`Math.PI`)       |\n       *\n       * polarAngle\n       * ```\n       *     180º\n       *      |\n       *      90º\n       *      |\n       *      0º\n       * ```\n       * | direction            | angle                  |\n       * | -------------------- | ---------------------- |\n       * | top/sky              | 180º (`Math.PI`)       |\n       * | horizontal from view | 90º (`Math.PI / 2`)    |\n       * | bottom/floor         | 0º                     |\n       *\n       * @param azimuthAngle Azimuth rotate angle to. In radian.\n       * @param polarAngle Polar rotate angle to. In radian.\n       * @param enableTransition  Whether to move smoothly or immediately\n       * @category Methods\n       */\n      rotateTo(azimuthAngle, polarAngle, enableTransition = false) {\n        this._isUserControllingRotate = false;\n        const theta = clamp2(azimuthAngle, this.minAzimuthAngle, this.maxAzimuthAngle);\n        const phi = clamp2(polarAngle, this.minPolarAngle, this.maxPolarAngle);\n        this._sphericalEnd.theta = theta;\n        this._sphericalEnd.phi = phi;\n        this._sphericalEnd.makeSafe();\n        this._needsUpdate = true;\n        if (!enableTransition) {\n          this._spherical.theta = this._sphericalEnd.theta;\n          this._spherical.phi = this._sphericalEnd.phi;\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && approxEquals(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Dolly in/out camera position.\n       * @param distance Distance of dollyIn. Negative number for dollyOut.\n       * @param enableTransition Whether to move smoothly or immediately.\n       * @category Methods\n       */\n      dolly(distance, enableTransition = false) {\n        return this.dollyTo(this._sphericalEnd.radius - distance, enableTransition);\n      }\n      /**\n       * Dolly in/out camera position to given distance.\n       * @param distance Distance of dolly.\n       * @param enableTransition Whether to move smoothly or immediately.\n       * @category Methods\n       */\n      dollyTo(distance, enableTransition = false) {\n        this._isUserControllingDolly = false;\n        this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n        this._changedDolly = 0;\n        return this._dollyToNoClamp(clamp2(distance, this.minDistance, this.maxDistance), enableTransition);\n      }\n      _dollyToNoClamp(distance, enableTransition = false) {\n        const lastRadius = this._sphericalEnd.radius;\n        const hasCollider = this.colliderMeshes.length >= 1;\n        if (hasCollider) {\n          const maxDistanceByCollisionTest = this._collisionTest();\n          const isCollided = approxEquals(maxDistanceByCollisionTest, this._spherical.radius);\n          const isDollyIn = lastRadius > distance;\n          if (!isDollyIn && isCollided)\n            return Promise.resolve();\n          this._sphericalEnd.radius = Math.min(distance, maxDistanceByCollisionTest);\n        } else {\n          this._sphericalEnd.radius = distance;\n        }\n        this._needsUpdate = true;\n        if (!enableTransition) {\n          this._spherical.radius = this._sphericalEnd.radius;\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Dolly in, but does not change the distance between the target and the camera, and moves the target position instead.\n       * Specify a negative value for dolly out.\n       * @param distance Distance of dolly.\n       * @param enableTransition Whether to move smoothly or immediately.\n       * @category Methods\n       */\n      dollyInFixed(distance, enableTransition = false) {\n        this._targetEnd.add(this._getCameraDirection(_cameraDirection).multiplyScalar(distance));\n        if (!enableTransition) {\n          this._target.copy(this._targetEnd);\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) && approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) && approxEquals(this._target.z, this._targetEnd.z, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Zoom in/out camera. The value is added to camera zoom.\n       * Limits set with `.minZoom` and `.maxZoom`\n       * @param zoomStep zoom scale\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      zoom(zoomStep, enableTransition = false) {\n        return this.zoomTo(this._zoomEnd + zoomStep, enableTransition);\n      }\n      /**\n       * Zoom in/out camera to given scale. The value overwrites camera zoom.\n       * Limits set with .minZoom and .maxZoom\n       * @param zoom\n       * @param enableTransition\n       * @category Methods\n       */\n      zoomTo(zoom, enableTransition = false) {\n        this._isUserControllingZoom = false;\n        this._zoomEnd = clamp2(zoom, this.minZoom, this.maxZoom);\n        this._needsUpdate = true;\n        if (!enableTransition) {\n          this._zoom = this._zoomEnd;\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._zoom, this._zoomEnd, this.restThreshold);\n        this._changedZoom = 0;\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * @deprecated `pan()` has been renamed to `truck()`\n       * @category Methods\n       */\n      pan(x, y2, enableTransition = false) {\n        console.warn(\"`pan` has been renamed to `truck`\");\n        return this.truck(x, y2, enableTransition);\n      }\n      /**\n       * Truck and pedestal camera using current azimuthal angle\n       * @param x Horizontal translate amount\n       * @param y Vertical translate amount\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      truck(x, y2, enableTransition = false) {\n        this._camera.updateMatrix();\n        _xColumn.setFromMatrixColumn(this._camera.matrix, 0);\n        _yColumn.setFromMatrixColumn(this._camera.matrix, 1);\n        _xColumn.multiplyScalar(x);\n        _yColumn.multiplyScalar(-y2);\n        const offset = _v3A.copy(_xColumn).add(_yColumn);\n        const to = _v3B.copy(this._targetEnd).add(offset);\n        return this.moveTo(to.x, to.y, to.z, enableTransition);\n      }\n      /**\n       * Move forward / backward.\n       * @param distance Amount to move forward / backward. Negative value to move backward\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      forward(distance, enableTransition = false) {\n        _v3A.setFromMatrixColumn(this._camera.matrix, 0);\n        _v3A.crossVectors(this._camera.up, _v3A);\n        _v3A.multiplyScalar(distance);\n        const to = _v3B.copy(this._targetEnd).add(_v3A);\n        return this.moveTo(to.x, to.y, to.z, enableTransition);\n      }\n      /**\n       * Move up / down.\n       * @param height Amount to move up / down. Negative value to move down\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      elevate(height, enableTransition = false) {\n        _v3A.copy(this._camera.up).multiplyScalar(height);\n        return this.moveTo(this._targetEnd.x + _v3A.x, this._targetEnd.y + _v3A.y, this._targetEnd.z + _v3A.z, enableTransition);\n      }\n      /**\n       * Move target position to given point.\n       * @param x x coord to move center position\n       * @param y y coord to move center position\n       * @param z z coord to move center position\n       * @param enableTransition Whether to move smoothly or immediately\n       * @category Methods\n       */\n      moveTo(x, y2, z2, enableTransition = false) {\n        this._isUserControllingTruck = false;\n        const offset = _v3A.set(x, y2, z2).sub(this._targetEnd);\n        this._encloseToBoundary(this._targetEnd, offset, this.boundaryFriction);\n        this._needsUpdate = true;\n        if (!enableTransition) {\n          this._target.copy(this._targetEnd);\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) && approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) && approxEquals(this._target.z, this._targetEnd.z, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Look in the given point direction.\n       * @param x point x.\n       * @param y point y.\n       * @param z point z.\n       * @param enableTransition Whether to move smoothly or immediately.\n       * @returns Transition end promise\n       * @category Methods\n       */\n      lookInDirectionOf(x, y2, z2, enableTransition = false) {\n        const point = _v3A.set(x, y2, z2);\n        const direction = point.sub(this._targetEnd).normalize();\n        const position = direction.multiplyScalar(-this._sphericalEnd.radius).add(this._targetEnd);\n        return this.setPosition(position.x, position.y, position.z, enableTransition);\n      }\n      /**\n       * Fit the viewport to the box or the bounding box of the object, using the nearest axis. paddings are in unit.\n       * set `cover: true` to fill enter screen.\n       * e.g.\n       * ```\n       * cameraControls.fitToBox( myMesh );\n       * ```\n       * @param box3OrObject Axis aligned bounding box to fit the view.\n       * @param enableTransition Whether to move smoothly or immediately.\n       * @param options | `<object>` { cover: boolean, paddingTop: number, paddingLeft: number, paddingBottom: number, paddingRight: number }\n       * @returns Transition end promise\n       * @category Methods\n       */\n      fitToBox(box3OrObject, enableTransition, { cover: cover2 = false, paddingLeft = 0, paddingRight = 0, paddingBottom = 0, paddingTop = 0 } = {}) {\n        const promises = [];\n        const aabb = box3OrObject.isBox3 ? _box3A.copy(box3OrObject) : _box3A.setFromObject(box3OrObject);\n        if (aabb.isEmpty()) {\n          console.warn(\"camera-controls: fitTo() cannot be used with an empty box. Aborting\");\n          Promise.resolve();\n        }\n        const theta = roundToStep(this._sphericalEnd.theta, PI_HALF);\n        const phi = roundToStep(this._sphericalEnd.phi, PI_HALF);\n        promises.push(this.rotateTo(theta, phi, enableTransition));\n        const normal = _v3A.setFromSpherical(this._sphericalEnd).normalize();\n        const rotation = _quaternionA.setFromUnitVectors(normal, _AXIS_Z);\n        const viewFromPolar = approxEquals(Math.abs(normal.y), 1);\n        if (viewFromPolar) {\n          rotation.multiply(_quaternionB.setFromAxisAngle(_AXIS_Y, theta));\n        }\n        rotation.multiply(this._yAxisUpSpaceInverse);\n        const bb = _box3B.makeEmpty();\n        _v3B.copy(aabb.min).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.min).setX(aabb.max.x).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.min).setY(aabb.max.y).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.max).setZ(aabb.min.z).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.min).setZ(aabb.max.z).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.max).setY(aabb.min.y).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.max).setX(aabb.min.x).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        _v3B.copy(aabb.max).applyQuaternion(rotation);\n        bb.expandByPoint(_v3B);\n        bb.min.x -= paddingLeft;\n        bb.min.y -= paddingBottom;\n        bb.max.x += paddingRight;\n        bb.max.y += paddingTop;\n        rotation.setFromUnitVectors(_AXIS_Z, normal);\n        if (viewFromPolar) {\n          rotation.premultiply(_quaternionB.invert());\n        }\n        rotation.premultiply(this._yAxisUpSpace);\n        const bbSize = bb.getSize(_v3A);\n        const center = bb.getCenter(_v3B).applyQuaternion(rotation);\n        if (isPerspectiveCamera(this._camera)) {\n          const distance = this.getDistanceToFitBox(bbSize.x, bbSize.y, bbSize.z, cover2);\n          promises.push(this.moveTo(center.x, center.y, center.z, enableTransition));\n          promises.push(this.dollyTo(distance, enableTransition));\n          promises.push(this.setFocalOffset(0, 0, 0, enableTransition));\n        } else if (isOrthographicCamera2(this._camera)) {\n          const camera = this._camera;\n          const width = camera.right - camera.left;\n          const height = camera.top - camera.bottom;\n          const zoom = cover2 ? Math.max(width / bbSize.x, height / bbSize.y) : Math.min(width / bbSize.x, height / bbSize.y);\n          promises.push(this.moveTo(center.x, center.y, center.z, enableTransition));\n          promises.push(this.zoomTo(zoom, enableTransition));\n          promises.push(this.setFocalOffset(0, 0, 0, enableTransition));\n        }\n        return Promise.all(promises);\n      }\n      /**\n       * Fit the viewport to the sphere or the bounding sphere of the object.\n       * @param sphereOrMesh\n       * @param enableTransition\n       * @category Methods\n       */\n      fitToSphere(sphereOrMesh, enableTransition) {\n        const promises = [];\n        const isObject3D = \"isObject3D\" in sphereOrMesh;\n        const boundingSphere = isObject3D ? _CameraControls.createBoundingSphere(sphereOrMesh, _sphere2) : _sphere2.copy(sphereOrMesh);\n        promises.push(this.moveTo(boundingSphere.center.x, boundingSphere.center.y, boundingSphere.center.z, enableTransition));\n        if (isPerspectiveCamera(this._camera)) {\n          const distanceToFit = this.getDistanceToFitSphere(boundingSphere.radius);\n          promises.push(this.dollyTo(distanceToFit, enableTransition));\n        } else if (isOrthographicCamera2(this._camera)) {\n          const width = this._camera.right - this._camera.left;\n          const height = this._camera.top - this._camera.bottom;\n          const diameter = 2 * boundingSphere.radius;\n          const zoom = Math.min(width / diameter, height / diameter);\n          promises.push(this.zoomTo(zoom, enableTransition));\n        }\n        promises.push(this.setFocalOffset(0, 0, 0, enableTransition));\n        return Promise.all(promises);\n      }\n      /**\n       * Look at the `target` from the `position`.\n       * @param positionX\n       * @param positionY\n       * @param positionZ\n       * @param targetX\n       * @param targetY\n       * @param targetZ\n       * @param enableTransition\n       * @category Methods\n       */\n      setLookAt(positionX, positionY, positionZ, targetX, targetY, targetZ, enableTransition = false) {\n        this._isUserControllingRotate = false;\n        this._isUserControllingDolly = false;\n        this._isUserControllingTruck = false;\n        this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n        this._changedDolly = 0;\n        const target2 = _v3B.set(targetX, targetY, targetZ);\n        const position = _v3A.set(positionX, positionY, positionZ);\n        this._targetEnd.copy(target2);\n        this._sphericalEnd.setFromVector3(position.sub(target2).applyQuaternion(this._yAxisUpSpace));\n        this.normalizeRotations();\n        this._needsUpdate = true;\n        if (!enableTransition) {\n          this._target.copy(this._targetEnd);\n          this._spherical.copy(this._sphericalEnd);\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) && approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) && approxEquals(this._target.z, this._targetEnd.z, this.restThreshold) && approxEquals(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && approxEquals(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold) && approxEquals(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Similar to setLookAt, but it interpolates between two states.\n       * @param positionAX\n       * @param positionAY\n       * @param positionAZ\n       * @param targetAX\n       * @param targetAY\n       * @param targetAZ\n       * @param positionBX\n       * @param positionBY\n       * @param positionBZ\n       * @param targetBX\n       * @param targetBY\n       * @param targetBZ\n       * @param t\n       * @param enableTransition\n       * @category Methods\n       */\n      lerpLookAt(positionAX, positionAY, positionAZ, targetAX, targetAY, targetAZ, positionBX, positionBY, positionBZ, targetBX, targetBY, targetBZ, t2, enableTransition = false) {\n        this._isUserControllingRotate = false;\n        this._isUserControllingDolly = false;\n        this._isUserControllingTruck = false;\n        this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n        this._changedDolly = 0;\n        const targetA = _v3A.set(targetAX, targetAY, targetAZ);\n        const positionA = _v3B.set(positionAX, positionAY, positionAZ);\n        _sphericalA.setFromVector3(positionA.sub(targetA).applyQuaternion(this._yAxisUpSpace));\n        const targetB = _v3C.set(targetBX, targetBY, targetBZ);\n        const positionB = _v3B.set(positionBX, positionBY, positionBZ);\n        _sphericalB.setFromVector3(positionB.sub(targetB).applyQuaternion(this._yAxisUpSpace));\n        this._targetEnd.copy(targetA.lerp(targetB, t2));\n        const deltaTheta = _sphericalB.theta - _sphericalA.theta;\n        const deltaPhi = _sphericalB.phi - _sphericalA.phi;\n        const deltaRadius = _sphericalB.radius - _sphericalA.radius;\n        this._sphericalEnd.set(_sphericalA.radius + deltaRadius * t2, _sphericalA.phi + deltaPhi * t2, _sphericalA.theta + deltaTheta * t2);\n        this.normalizeRotations();\n        this._needsUpdate = true;\n        if (!enableTransition) {\n          this._target.copy(this._targetEnd);\n          this._spherical.copy(this._sphericalEnd);\n        }\n        const resolveImmediately = !enableTransition || approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) && approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) && approxEquals(this._target.z, this._targetEnd.z, this.restThreshold) && approxEquals(this._spherical.theta, this._sphericalEnd.theta, this.restThreshold) && approxEquals(this._spherical.phi, this._sphericalEnd.phi, this.restThreshold) && approxEquals(this._spherical.radius, this._sphericalEnd.radius, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Set angle and distance by given position.\n       * An alias of `setLookAt()`, without target change. Thus keep gazing at the current target\n       * @param positionX\n       * @param positionY\n       * @param positionZ\n       * @param enableTransition\n       * @category Methods\n       */\n      setPosition(positionX, positionY, positionZ, enableTransition = false) {\n        return this.setLookAt(positionX, positionY, positionZ, this._targetEnd.x, this._targetEnd.y, this._targetEnd.z, enableTransition);\n      }\n      /**\n       * Set the target position where gaze at.\n       * An alias of `setLookAt()`, without position change. Thus keep the same position.\n       * @param targetX\n       * @param targetY\n       * @param targetZ\n       * @param enableTransition\n       * @category Methods\n       */\n      setTarget(targetX, targetY, targetZ, enableTransition = false) {\n        const pos = this.getPosition(_v3A);\n        const promise = this.setLookAt(pos.x, pos.y, pos.z, targetX, targetY, targetZ, enableTransition);\n        this._sphericalEnd.phi = clamp2(this._sphericalEnd.phi, this.minPolarAngle, this.maxPolarAngle);\n        return promise;\n      }\n      /**\n       * Set focal offset using the screen parallel coordinates. z doesn't affect in Orthographic as with Dolly.\n       * @param x\n       * @param y\n       * @param z\n       * @param enableTransition\n       * @category Methods\n       */\n      setFocalOffset(x, y2, z2, enableTransition = false) {\n        this._isUserControllingOffset = false;\n        this._focalOffsetEnd.set(x, y2, z2);\n        this._needsUpdate = true;\n        if (!enableTransition)\n          this._focalOffset.copy(this._focalOffsetEnd);\n        const resolveImmediately = !enableTransition || approxEquals(this._focalOffset.x, this._focalOffsetEnd.x, this.restThreshold) && approxEquals(this._focalOffset.y, this._focalOffsetEnd.y, this.restThreshold) && approxEquals(this._focalOffset.z, this._focalOffsetEnd.z, this.restThreshold);\n        return this._createOnRestPromise(resolveImmediately);\n      }\n      /**\n       * Set orbit point without moving the camera.\n       * SHOULD NOT RUN DURING ANIMATIONS. `setOrbitPoint()` will immediately fix the positions.\n       * @param targetX\n       * @param targetY\n       * @param targetZ\n       * @category Methods\n       */\n      setOrbitPoint(targetX, targetY, targetZ) {\n        this._camera.updateMatrixWorld();\n        _xColumn.setFromMatrixColumn(this._camera.matrixWorldInverse, 0);\n        _yColumn.setFromMatrixColumn(this._camera.matrixWorldInverse, 1);\n        _zColumn.setFromMatrixColumn(this._camera.matrixWorldInverse, 2);\n        const position = _v3A.set(targetX, targetY, targetZ);\n        const distance = position.distanceTo(this._camera.position);\n        const cameraToPoint = position.sub(this._camera.position);\n        _xColumn.multiplyScalar(cameraToPoint.x);\n        _yColumn.multiplyScalar(cameraToPoint.y);\n        _zColumn.multiplyScalar(cameraToPoint.z);\n        _v3A.copy(_xColumn).add(_yColumn).add(_zColumn);\n        _v3A.z = _v3A.z + distance;\n        this.dollyTo(distance, false);\n        this.setFocalOffset(-_v3A.x, _v3A.y, -_v3A.z, false);\n        this.moveTo(targetX, targetY, targetZ, false);\n      }\n      /**\n       * Set the boundary box that encloses the target of the camera. box3 is in THREE.Box3\n       * @param box3\n       * @category Methods\n       */\n      setBoundary(box3) {\n        if (!box3) {\n          this._boundary.min.set(-Infinity, -Infinity, -Infinity);\n          this._boundary.max.set(Infinity, Infinity, Infinity);\n          this._needsUpdate = true;\n          return;\n        }\n        this._boundary.copy(box3);\n        this._boundary.clampPoint(this._targetEnd, this._targetEnd);\n        this._needsUpdate = true;\n      }\n      /**\n       * Set (or unset) the current viewport.\n       * Set this when you want to use renderer viewport and .dollyToCursor feature at the same time.\n       * @param viewportOrX\n       * @param y\n       * @param width\n       * @param height\n       * @category Methods\n       */\n      setViewport(viewportOrX, y2, width, height) {\n        if (viewportOrX === null) {\n          this._viewport = null;\n          return;\n        }\n        this._viewport = this._viewport || new THREE.Vector4();\n        if (typeof viewportOrX === \"number\") {\n          this._viewport.set(viewportOrX, y2, width, height);\n        } else {\n          this._viewport.copy(viewportOrX);\n        }\n      }\n      /**\n       * Calculate the distance to fit the box.\n       * @param width box width\n       * @param height box height\n       * @param depth box depth\n       * @returns distance\n       * @category Methods\n       */\n      getDistanceToFitBox(width, height, depth, cover2 = false) {\n        if (notSupportedInOrthographicCamera(this._camera, \"getDistanceToFitBox\"))\n          return this._spherical.radius;\n        const boundingRectAspect = width / height;\n        const fov2 = this._camera.getEffectiveFOV() * DEG2RAD2;\n        const aspect2 = this._camera.aspect;\n        const heightToFit = (cover2 ? boundingRectAspect > aspect2 : boundingRectAspect < aspect2) ? height : width / aspect2;\n        return heightToFit * 0.5 / Math.tan(fov2 * 0.5) + depth * 0.5;\n      }\n      /**\n       * Calculate the distance to fit the sphere.\n       * @param radius sphere radius\n       * @returns distance\n       * @category Methods\n       */\n      getDistanceToFitSphere(radius) {\n        if (notSupportedInOrthographicCamera(this._camera, \"getDistanceToFitSphere\"))\n          return this._spherical.radius;\n        const vFOV = this._camera.getEffectiveFOV() * DEG2RAD2;\n        const hFOV = Math.atan(Math.tan(vFOV * 0.5) * this._camera.aspect) * 2;\n        const fov2 = 1 < this._camera.aspect ? vFOV : hFOV;\n        return radius / Math.sin(fov2 * 0.5);\n      }\n      /**\n       * Returns the orbit center position, where the camera looking at.\n       * @param out The receiving Vector3 instance to copy the result\n       * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n       * @category Methods\n       */\n      getTarget(out, receiveEndValue = true) {\n        const _out = !!out && out.isVector3 ? out : new THREE.Vector3();\n        return _out.copy(receiveEndValue ? this._targetEnd : this._target);\n      }\n      /**\n       * Returns the camera position.\n       * @param out The receiving Vector3 instance to copy the result\n       * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n       * @category Methods\n       */\n      getPosition(out, receiveEndValue = true) {\n        const _out = !!out && out.isVector3 ? out : new THREE.Vector3();\n        return _out.setFromSpherical(receiveEndValue ? this._sphericalEnd : this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(receiveEndValue ? this._targetEnd : this._target);\n      }\n      /**\n       * Returns the spherical coordinates of the orbit.\n       * @param out The receiving Spherical instance to copy the result\n       * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n       * @category Methods\n       */\n      getSpherical(out, receiveEndValue = true) {\n        const _out = out || new THREE.Spherical();\n        return _out.copy(receiveEndValue ? this._sphericalEnd : this._spherical);\n      }\n      /**\n       * Returns the focal offset, which is how much the camera appears to be translated in screen parallel coordinates.\n       * @param out The receiving Vector3 instance to copy the result\n       * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n       * @category Methods\n       */\n      getFocalOffset(out, receiveEndValue = true) {\n        const _out = !!out && out.isVector3 ? out : new THREE.Vector3();\n        return _out.copy(receiveEndValue ? this._focalOffsetEnd : this._focalOffset);\n      }\n      /**\n       * Normalize camera azimuth angle rotation between 0 and 360 degrees.\n       * @category Methods\n       */\n      normalizeRotations() {\n        this._sphericalEnd.theta = this._sphericalEnd.theta % PI_2;\n        if (this._sphericalEnd.theta < 0)\n          this._sphericalEnd.theta += PI_2;\n        this._spherical.theta += PI_2 * Math.round((this._sphericalEnd.theta - this._spherical.theta) / PI_2);\n      }\n      /**\n       * stop all transitions.\n       */\n      stop() {\n        this._focalOffset.copy(this._focalOffsetEnd);\n        this._target.copy(this._targetEnd);\n        this._spherical.copy(this._sphericalEnd);\n        this._zoom = this._zoomEnd;\n      }\n      /**\n       * Reset all rotation and position to defaults.\n       * @param enableTransition\n       * @category Methods\n       */\n      reset(enableTransition = false) {\n        if (!approxEquals(this._camera.up.x, this._cameraUp0.x) || !approxEquals(this._camera.up.y, this._cameraUp0.y) || !approxEquals(this._camera.up.z, this._cameraUp0.z)) {\n          this._camera.up.copy(this._cameraUp0);\n          const position = this.getPosition(_v3A);\n          this.updateCameraUp();\n          this.setPosition(position.x, position.y, position.z);\n        }\n        const promises = [\n          this.setLookAt(this._position0.x, this._position0.y, this._position0.z, this._target0.x, this._target0.y, this._target0.z, enableTransition),\n          this.setFocalOffset(this._focalOffset0.x, this._focalOffset0.y, this._focalOffset0.z, enableTransition),\n          this.zoomTo(this._zoom0, enableTransition)\n        ];\n        return Promise.all(promises);\n      }\n      /**\n       * Set current camera position as the default position.\n       * @category Methods\n       */\n      saveState() {\n        this._cameraUp0.copy(this._camera.up);\n        this.getTarget(this._target0);\n        this.getPosition(this._position0);\n        this._zoom0 = this._zoom;\n        this._focalOffset0.copy(this._focalOffset);\n      }\n      /**\n       * Sync camera-up direction.\n       * When camera-up vector is changed, `.updateCameraUp()` must be called.\n       * @category Methods\n       */\n      updateCameraUp() {\n        this._yAxisUpSpace.setFromUnitVectors(this._camera.up, _AXIS_Y);\n        this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert();\n      }\n      /**\n       * Apply current camera-up direction to the camera.\n       * The orbit system will be re-initialized with the current position.\n       * @category Methods\n       */\n      applyCameraUp() {\n        const cameraDirection = _v3A.subVectors(this._target, this._camera.position).normalize();\n        const side = _v3B.crossVectors(cameraDirection, this._camera.up);\n        this._camera.up.crossVectors(side, cameraDirection).normalize();\n        this._camera.updateMatrixWorld();\n        const position = this.getPosition(_v3A);\n        this.updateCameraUp();\n        this.setPosition(position.x, position.y, position.z);\n      }\n      /**\n       * Update camera position and directions.\n       * This should be called in your tick loop every time, and returns true if re-rendering is needed.\n       * @param delta\n       * @returns updated\n       * @category Methods\n       */\n      update(delta) {\n        const deltaTheta = this._sphericalEnd.theta - this._spherical.theta;\n        const deltaPhi = this._sphericalEnd.phi - this._spherical.phi;\n        const deltaRadius = this._sphericalEnd.radius - this._spherical.radius;\n        const deltaTarget = _deltaTarget.subVectors(this._targetEnd, this._target);\n        const deltaOffset = _deltaOffset.subVectors(this._focalOffsetEnd, this._focalOffset);\n        const deltaZoom = this._zoomEnd - this._zoom;\n        if (approxZero(deltaTheta)) {\n          this._thetaVelocity.value = 0;\n          this._spherical.theta = this._sphericalEnd.theta;\n        } else {\n          const smoothTime = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;\n          this._spherical.theta = smoothDamp(this._spherical.theta, this._sphericalEnd.theta, this._thetaVelocity, smoothTime, Infinity, delta);\n          this._needsUpdate = true;\n        }\n        if (approxZero(deltaPhi)) {\n          this._phiVelocity.value = 0;\n          this._spherical.phi = this._sphericalEnd.phi;\n        } else {\n          const smoothTime = this._isUserControllingRotate ? this.draggingSmoothTime : this.smoothTime;\n          this._spherical.phi = smoothDamp(this._spherical.phi, this._sphericalEnd.phi, this._phiVelocity, smoothTime, Infinity, delta);\n          this._needsUpdate = true;\n        }\n        if (approxZero(deltaRadius)) {\n          this._radiusVelocity.value = 0;\n          this._spherical.radius = this._sphericalEnd.radius;\n        } else {\n          const smoothTime = this._isUserControllingDolly ? this.draggingSmoothTime : this.smoothTime;\n          this._spherical.radius = smoothDamp(this._spherical.radius, this._sphericalEnd.radius, this._radiusVelocity, smoothTime, this.maxSpeed, delta);\n          this._needsUpdate = true;\n        }\n        if (approxZero(deltaTarget.x) && approxZero(deltaTarget.y) && approxZero(deltaTarget.z)) {\n          this._targetVelocity.set(0, 0, 0);\n          this._target.copy(this._targetEnd);\n        } else {\n          const smoothTime = this._isUserControllingTruck ? this.draggingSmoothTime : this.smoothTime;\n          smoothDampVec3(this._target, this._targetEnd, this._targetVelocity, smoothTime, this.maxSpeed, delta, this._target);\n          this._needsUpdate = true;\n        }\n        if (approxZero(deltaOffset.x) && approxZero(deltaOffset.y) && approxZero(deltaOffset.z)) {\n          this._focalOffsetVelocity.set(0, 0, 0);\n          this._focalOffset.copy(this._focalOffsetEnd);\n        } else {\n          const smoothTime = this._isUserControllingOffset ? this.draggingSmoothTime : this.smoothTime;\n          smoothDampVec3(this._focalOffset, this._focalOffsetEnd, this._focalOffsetVelocity, smoothTime, this.maxSpeed, delta, this._focalOffset);\n          this._needsUpdate = true;\n        }\n        if (approxZero(deltaZoom)) {\n          this._zoomVelocity.value = 0;\n          this._zoom = this._zoomEnd;\n        } else {\n          const smoothTime = this._isUserControllingZoom ? this.draggingSmoothTime : this.smoothTime;\n          this._zoom = smoothDamp(this._zoom, this._zoomEnd, this._zoomVelocity, smoothTime, Infinity, delta);\n        }\n        if (this.dollyToCursor) {\n          if (isPerspectiveCamera(this._camera) && this._changedDolly !== 0) {\n            const dollyControlAmount = this._spherical.radius - this._lastDistance;\n            const camera = this._camera;\n            const cameraDirection = this._getCameraDirection(_cameraDirection);\n            const planeX = _v3A.copy(cameraDirection).cross(camera.up).normalize();\n            if (planeX.lengthSq() === 0)\n              planeX.x = 1;\n            const planeY = _v3B.crossVectors(planeX, cameraDirection);\n            const worldToScreen = this._sphericalEnd.radius * Math.tan(camera.getEffectiveFOV() * DEG2RAD2 * 0.5);\n            const prevRadius = this._sphericalEnd.radius - dollyControlAmount;\n            const lerpRatio = (prevRadius - this._sphericalEnd.radius) / this._sphericalEnd.radius;\n            const cursor = _v3C.copy(this._targetEnd).add(planeX.multiplyScalar(this._dollyControlCoord.x * worldToScreen * camera.aspect)).add(planeY.multiplyScalar(this._dollyControlCoord.y * worldToScreen));\n            const newTargetEnd = _v3A.copy(this._targetEnd).lerp(cursor, lerpRatio);\n            const isMin = this._lastDollyDirection === DOLLY_DIRECTION.IN && this._spherical.radius <= this.minDistance;\n            const isMax = this._lastDollyDirection === DOLLY_DIRECTION.OUT && this.maxDistance <= this._spherical.radius;\n            if (this.infinityDolly && (isMin || isMax)) {\n              this._sphericalEnd.radius -= dollyControlAmount;\n              this._spherical.radius -= dollyControlAmount;\n              const dollyAmount = _v3B.copy(cameraDirection).multiplyScalar(-dollyControlAmount);\n              newTargetEnd.add(dollyAmount);\n            }\n            this._boundary.clampPoint(newTargetEnd, newTargetEnd);\n            const targetEndDiff = _v3B.subVectors(newTargetEnd, this._targetEnd);\n            this._targetEnd.copy(newTargetEnd);\n            this._target.add(targetEndDiff);\n            this._changedDolly -= dollyControlAmount;\n            if (approxZero(this._changedDolly))\n              this._changedDolly = 0;\n          } else if (isOrthographicCamera2(this._camera) && this._changedZoom !== 0) {\n            const dollyControlAmount = this._zoom - this._lastZoom;\n            const camera = this._camera;\n            const worldCursorPosition = _v3A.set(this._dollyControlCoord.x, this._dollyControlCoord.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera);\n            const quaternion = _v3B.set(0, 0, -1).applyQuaternion(camera.quaternion);\n            const cursor = _v3C.copy(worldCursorPosition).add(quaternion.multiplyScalar(-worldCursorPosition.dot(camera.up)));\n            const prevZoom = this._zoom - dollyControlAmount;\n            const lerpRatio = -(prevZoom - this._zoom) / this._zoom;\n            const cameraDirection = this._getCameraDirection(_cameraDirection);\n            const prevPlaneConstant = this._targetEnd.dot(cameraDirection);\n            const newTargetEnd = _v3A.copy(this._targetEnd).lerp(cursor, lerpRatio);\n            const newPlaneConstant = newTargetEnd.dot(cameraDirection);\n            const pullBack = cameraDirection.multiplyScalar(newPlaneConstant - prevPlaneConstant);\n            newTargetEnd.sub(pullBack);\n            this._boundary.clampPoint(newTargetEnd, newTargetEnd);\n            const targetEndDiff = _v3B.subVectors(newTargetEnd, this._targetEnd);\n            this._targetEnd.copy(newTargetEnd);\n            this._target.add(targetEndDiff);\n            this._changedZoom -= dollyControlAmount;\n            if (approxZero(this._changedZoom))\n              this._changedZoom = 0;\n          }\n        }\n        if (this._camera.zoom !== this._zoom) {\n          this._camera.zoom = this._zoom;\n          this._camera.updateProjectionMatrix();\n          this._updateNearPlaneCorners();\n          this._needsUpdate = true;\n        }\n        this._dragNeedsUpdate = true;\n        const maxDistance = this._collisionTest();\n        this._spherical.radius = Math.min(this._spherical.radius, maxDistance);\n        this._spherical.makeSafe();\n        this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target);\n        this._camera.lookAt(this._target);\n        const affectOffset = !approxZero(this._focalOffset.x) || !approxZero(this._focalOffset.y) || !approxZero(this._focalOffset.z);\n        if (affectOffset) {\n          this._camera.updateMatrixWorld();\n          _xColumn.setFromMatrixColumn(this._camera.matrix, 0);\n          _yColumn.setFromMatrixColumn(this._camera.matrix, 1);\n          _zColumn.setFromMatrixColumn(this._camera.matrix, 2);\n          _xColumn.multiplyScalar(this._focalOffset.x);\n          _yColumn.multiplyScalar(-this._focalOffset.y);\n          _zColumn.multiplyScalar(this._focalOffset.z);\n          _v3A.copy(_xColumn).add(_yColumn).add(_zColumn);\n          this._camera.position.add(_v3A);\n        }\n        if (this._boundaryEnclosesCamera) {\n          this._encloseToBoundary(this._camera.position.copy(this._target), _v3A.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse), 1);\n        }\n        const updated = this._needsUpdate;\n        if (updated && !this._updatedLastTime) {\n          this._hasRested = false;\n          this.dispatchEvent({ type: \"wake\" });\n          this.dispatchEvent({ type: \"update\" });\n        } else if (updated) {\n          this.dispatchEvent({ type: \"update\" });\n          if (approxZero(deltaTheta, this.restThreshold) && approxZero(deltaPhi, this.restThreshold) && approxZero(deltaRadius, this.restThreshold) && approxZero(deltaTarget.x, this.restThreshold) && approxZero(deltaTarget.y, this.restThreshold) && approxZero(deltaTarget.z, this.restThreshold) && approxZero(deltaOffset.x, this.restThreshold) && approxZero(deltaOffset.y, this.restThreshold) && approxZero(deltaOffset.z, this.restThreshold) && approxZero(deltaZoom, this.restThreshold) && !this._hasRested) {\n            this._hasRested = true;\n            this.dispatchEvent({ type: \"rest\" });\n          }\n        } else if (!updated && this._updatedLastTime) {\n          this.dispatchEvent({ type: \"sleep\" });\n        }\n        this._lastDistance = this._spherical.radius;\n        this._lastZoom = this._zoom;\n        this._updatedLastTime = updated;\n        this._needsUpdate = false;\n        return updated;\n      }\n      /**\n       * Get all state in JSON string\n       * @category Methods\n       */\n      toJSON() {\n        return JSON.stringify({\n          enabled: this._enabled,\n          minDistance: this.minDistance,\n          maxDistance: infinityToMaxNumber(this.maxDistance),\n          minZoom: this.minZoom,\n          maxZoom: infinityToMaxNumber(this.maxZoom),\n          minPolarAngle: this.minPolarAngle,\n          maxPolarAngle: infinityToMaxNumber(this.maxPolarAngle),\n          minAzimuthAngle: infinityToMaxNumber(this.minAzimuthAngle),\n          maxAzimuthAngle: infinityToMaxNumber(this.maxAzimuthAngle),\n          smoothTime: this.smoothTime,\n          draggingSmoothTime: this.draggingSmoothTime,\n          dollySpeed: this.dollySpeed,\n          truckSpeed: this.truckSpeed,\n          dollyToCursor: this.dollyToCursor,\n          verticalDragToForward: this.verticalDragToForward,\n          target: this._targetEnd.toArray(),\n          position: _v3A.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),\n          zoom: this._zoomEnd,\n          focalOffset: this._focalOffsetEnd.toArray(),\n          target0: this._target0.toArray(),\n          position0: this._position0.toArray(),\n          zoom0: this._zoom0,\n          focalOffset0: this._focalOffset0.toArray()\n        });\n      }\n      /**\n       * Reproduce the control state with JSON. enableTransition is where anim or not in a boolean.\n       * @param json\n       * @param enableTransition\n       * @category Methods\n       */\n      fromJSON(json, enableTransition = false) {\n        const obj = JSON.parse(json);\n        this.enabled = obj.enabled;\n        this.minDistance = obj.minDistance;\n        this.maxDistance = maxNumberToInfinity(obj.maxDistance);\n        this.minZoom = obj.minZoom;\n        this.maxZoom = maxNumberToInfinity(obj.maxZoom);\n        this.minPolarAngle = obj.minPolarAngle;\n        this.maxPolarAngle = maxNumberToInfinity(obj.maxPolarAngle);\n        this.minAzimuthAngle = maxNumberToInfinity(obj.minAzimuthAngle);\n        this.maxAzimuthAngle = maxNumberToInfinity(obj.maxAzimuthAngle);\n        this.smoothTime = obj.smoothTime;\n        this.draggingSmoothTime = obj.draggingSmoothTime;\n        this.dollySpeed = obj.dollySpeed;\n        this.truckSpeed = obj.truckSpeed;\n        this.dollyToCursor = obj.dollyToCursor;\n        this.verticalDragToForward = obj.verticalDragToForward;\n        this._target0.fromArray(obj.target0);\n        this._position0.fromArray(obj.position0);\n        this._zoom0 = obj.zoom0;\n        this._focalOffset0.fromArray(obj.focalOffset0);\n        this.moveTo(obj.target[0], obj.target[1], obj.target[2], enableTransition);\n        _sphericalA.setFromVector3(_v3A.fromArray(obj.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace));\n        this.rotateTo(_sphericalA.theta, _sphericalA.phi, enableTransition);\n        this.dollyTo(_sphericalA.radius, enableTransition);\n        this.zoomTo(obj.zoom, enableTransition);\n        this.setFocalOffset(obj.focalOffset[0], obj.focalOffset[1], obj.focalOffset[2], enableTransition);\n        this._needsUpdate = true;\n      }\n      /**\n       * Attach all internal event handlers to enable drag control.\n       * @category Methods\n       */\n      connect(domElement) {\n        if (this._domElement) {\n          console.warn(\"camera-controls is already connected.\");\n          return;\n        }\n        domElement.setAttribute(\"data-camera-controls-version\", VERSION);\n        this._addAllEventListeners(domElement);\n        this._getClientRect(this._elementRect);\n      }\n      /**\n       * Detach all internal event handlers to disable drag control.\n       */\n      disconnect() {\n        this.cancel();\n        this._removeAllEventListeners();\n        if (this._domElement) {\n          this._domElement.removeAttribute(\"data-camera-controls-version\");\n          this._domElement = void 0;\n        }\n      }\n      /**\n       * Dispose the cameraControls instance itself, remove all eventListeners.\n       * @category Methods\n       */\n      dispose() {\n        this.removeAllEventListeners();\n        this.disconnect();\n      }\n      // it's okay to expose public though\n      _getTargetDirection(out) {\n        return out.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse);\n      }\n      // it's okay to expose public though\n      _getCameraDirection(out) {\n        return this._getTargetDirection(out).negate();\n      }\n      _findPointerById(pointerId) {\n        return this._activePointers.find((activePointer) => activePointer.pointerId === pointerId);\n      }\n      _findPointerByMouseButton(mouseButton) {\n        return this._activePointers.find((activePointer) => activePointer.mouseButton === mouseButton);\n      }\n      _disposePointer(pointer) {\n        this._activePointers.splice(this._activePointers.indexOf(pointer), 1);\n      }\n      _encloseToBoundary(position, offset, friction) {\n        const offsetLength2 = offset.lengthSq();\n        if (offsetLength2 === 0) {\n          return position;\n        }\n        const newTarget = _v3B.copy(offset).add(position);\n        const clampedTarget = this._boundary.clampPoint(newTarget, _v3C);\n        const deltaClampedTarget = clampedTarget.sub(newTarget);\n        const deltaClampedTargetLength2 = deltaClampedTarget.lengthSq();\n        if (deltaClampedTargetLength2 === 0) {\n          return position.add(offset);\n        } else if (deltaClampedTargetLength2 === offsetLength2) {\n          return position;\n        } else if (friction === 0) {\n          return position.add(offset).add(deltaClampedTarget);\n        } else {\n          const offsetFactor = 1 + friction * deltaClampedTargetLength2 / offset.dot(deltaClampedTarget);\n          return position.add(_v3B.copy(offset).multiplyScalar(offsetFactor)).add(deltaClampedTarget.multiplyScalar(1 - friction));\n        }\n      }\n      _updateNearPlaneCorners() {\n        if (isPerspectiveCamera(this._camera)) {\n          const camera = this._camera;\n          const near = camera.near;\n          const fov2 = camera.getEffectiveFOV() * DEG2RAD2;\n          const heightHalf = Math.tan(fov2 * 0.5) * near;\n          const widthHalf = heightHalf * camera.aspect;\n          this._nearPlaneCorners[0].set(-widthHalf, -heightHalf, 0);\n          this._nearPlaneCorners[1].set(widthHalf, -heightHalf, 0);\n          this._nearPlaneCorners[2].set(widthHalf, heightHalf, 0);\n          this._nearPlaneCorners[3].set(-widthHalf, heightHalf, 0);\n        } else if (isOrthographicCamera2(this._camera)) {\n          const camera = this._camera;\n          const zoomInv = 1 / camera.zoom;\n          const left = camera.left * zoomInv;\n          const right = camera.right * zoomInv;\n          const top = camera.top * zoomInv;\n          const bottom = camera.bottom * zoomInv;\n          this._nearPlaneCorners[0].set(left, top, 0);\n          this._nearPlaneCorners[1].set(right, top, 0);\n          this._nearPlaneCorners[2].set(right, bottom, 0);\n          this._nearPlaneCorners[3].set(left, bottom, 0);\n        }\n      }\n      // lateUpdate\n      _collisionTest() {\n        let distance = Infinity;\n        const hasCollider = this.colliderMeshes.length >= 1;\n        if (!hasCollider)\n          return distance;\n        if (notSupportedInOrthographicCamera(this._camera, \"_collisionTest\"))\n          return distance;\n        const rayDirection = this._getTargetDirection(_cameraDirection);\n        _rotationMatrix.lookAt(_ORIGIN, rayDirection, this._camera.up);\n        for (let i2 = 0; i2 < 4; i2++) {\n          const nearPlaneCorner = _v3B.copy(this._nearPlaneCorners[i2]);\n          nearPlaneCorner.applyMatrix4(_rotationMatrix);\n          const origin = _v3C.addVectors(this._target, nearPlaneCorner);\n          _raycaster.set(origin, rayDirection);\n          _raycaster.far = this._spherical.radius + 1;\n          const intersects2 = _raycaster.intersectObjects(this.colliderMeshes);\n          if (intersects2.length !== 0 && intersects2[0].distance < distance) {\n            distance = intersects2[0].distance;\n          }\n        }\n        return distance;\n      }\n      /**\n       * Get its client rect and package into given `DOMRect` .\n       */\n      _getClientRect(target2) {\n        if (!this._domElement)\n          return;\n        const rect = this._domElement.getBoundingClientRect();\n        target2.x = rect.left;\n        target2.y = rect.top;\n        if (this._viewport) {\n          target2.x += this._viewport.x;\n          target2.y += rect.height - this._viewport.w - this._viewport.y;\n          target2.width = this._viewport.z;\n          target2.height = this._viewport.w;\n        } else {\n          target2.width = rect.width;\n          target2.height = rect.height;\n        }\n        return target2;\n      }\n      _createOnRestPromise(resolveImmediately) {\n        if (resolveImmediately)\n          return Promise.resolve();\n        this._hasRested = false;\n        this.dispatchEvent({ type: \"transitionstart\" });\n        return new Promise((resolve2) => {\n          const onResolve = () => {\n            this.removeEventListener(\"rest\", onResolve);\n            resolve2();\n          };\n          this.addEventListener(\"rest\", onResolve);\n        });\n      }\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      _addAllEventListeners(_domElement) {\n      }\n      _removeAllEventListeners() {\n      }\n      /**\n       * backward compatible\n       * @deprecated use smoothTime (in seconds) instead\n       * @category Properties\n       */\n      get dampingFactor() {\n        console.warn(\".dampingFactor has been deprecated. use smoothTime (in seconds) instead.\");\n        return 0;\n      }\n      /**\n       * backward compatible\n       * @deprecated use smoothTime (in seconds) instead\n       * @category Properties\n       */\n      set dampingFactor(_) {\n        console.warn(\".dampingFactor has been deprecated. use smoothTime (in seconds) instead.\");\n      }\n      /**\n       * backward compatible\n       * @deprecated use draggingSmoothTime (in seconds) instead\n       * @category Properties\n       */\n      get draggingDampingFactor() {\n        console.warn(\".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.\");\n        return 0;\n      }\n      /**\n       * backward compatible\n       * @deprecated use draggingSmoothTime (in seconds) instead\n       * @category Properties\n       */\n      set draggingDampingFactor(_) {\n        console.warn(\".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.\");\n      }\n      static createBoundingSphere(object3d, out = new THREE.Sphere()) {\n        const boundingSphere = out;\n        const center = boundingSphere.center;\n        _box3A.makeEmpty();\n        object3d.traverseVisible((object) => {\n          if (!object.isMesh)\n            return;\n          _box3A.expandByObject(object);\n        });\n        _box3A.getCenter(center);\n        let maxRadiusSq = 0;\n        object3d.traverseVisible((object) => {\n          if (!object.isMesh)\n            return;\n          const mesh = object;\n          const geometry = mesh.geometry.clone();\n          geometry.applyMatrix4(mesh.matrixWorld);\n          const bufferGeometry = geometry;\n          const position = bufferGeometry.attributes.position;\n          for (let i2 = 0, l2 = position.count; i2 < l2; i2++) {\n            _v3A.fromBufferAttribute(position, i2);\n            maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_v3A));\n          }\n        });\n        boundingSphere.radius = Math.sqrt(maxRadiusSq);\n        return boundingSphere;\n      }\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-YNCZYV33.mjs\nimport { Fragment as Fragment4, jsx as jsx7 } from \"react/jsx-runtime\";\nfunction Controls2(props) {\n  return /* @__PURE__ */ jsx7(Fragment4, { children: /* @__PURE__ */ jsx7(CameraControl, __spreadValues({}, props)) });\n}\nvar init_chunk_YNCZYV33 = __esm({\n  \"../shadergradient/dist/chunk-YNCZYV33.mjs\"() {\n    init_chunk_ODCSFWV5();\n    init_chunk_5BEQP2BQ();\n  }\n});\n\n// ../shadergradient/dist/chunk-6A4LZ7FD.mjs\nvar RGBELoader, version2, UV1;\nvar init_chunk_6A4LZ7FD = __esm({\n  \"../shadergradient/dist/chunk-6A4LZ7FD.mjs\"() {\n    init_chunk_BT6X4JN2();\n    RGBELoader = class extends DataTextureLoader {\n      constructor(manager) {\n        super(manager);\n        this.type = HalfFloatType;\n      }\n      // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n      parse(buffer) {\n        const rgbe_read_error = 1, rgbe_write_error = 2, rgbe_format_error = 3, rgbe_memory_error = 4, rgbe_error = function(rgbe_error_code, msg) {\n          switch (rgbe_error_code) {\n            case rgbe_read_error:\n              throw new Error(\"THREE.RGBELoader: Read Error: \" + (msg || \"\"));\n            case rgbe_write_error:\n              throw new Error(\"THREE.RGBELoader: Write Error: \" + (msg || \"\"));\n            case rgbe_format_error:\n              throw new Error(\"THREE.RGBELoader: Bad File Format: \" + (msg || \"\"));\n            default:\n            case rgbe_memory_error:\n              throw new Error(\"THREE.RGBELoader: Memory Error: \" + (msg || \"\"));\n          }\n        }, RGBE_VALID_PROGRAMTYPE = 1, RGBE_VALID_FORMAT = 2, RGBE_VALID_DIMENSIONS = 4, NEWLINE = \"\\n\", fgets = function(buffer2, lineLimit, consume) {\n          const chunkSize = 128;\n          lineLimit = !lineLimit ? 1024 : lineLimit;\n          let p3 = buffer2.pos, i2 = -1, len = 0, s = \"\", chunk = String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p3, p3 + chunkSize)));\n          while (0 > (i2 = chunk.indexOf(NEWLINE)) && len < lineLimit && p3 < buffer2.byteLength) {\n            s += chunk;\n            len += chunk.length;\n            p3 += chunkSize;\n            chunk += String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p3, p3 + chunkSize)));\n          }\n          if (-1 < i2) {\n            if (false !== consume)\n              buffer2.pos += len + i2 + 1;\n            return s + chunk.slice(0, i2);\n          }\n          return false;\n        }, RGBE_ReadHeader = function(buffer2) {\n          const magic_token_re = /^#\\?(\\S+)/, gamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/, exposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/, format_re = /^\\s*FORMAT=(\\S+)\\s*$/, dimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/, header = {\n            valid: 0,\n            string: \"\",\n            comments: \"\",\n            programtype: \"RGBE\",\n            format: \"\",\n            gamma: 1,\n            exposure: 1,\n            width: 0,\n            height: 0\n          };\n          let line, match;\n          if (buffer2.pos >= buffer2.byteLength || !(line = fgets(buffer2))) {\n            rgbe_error(rgbe_read_error, \"no header found\");\n          }\n          if (!(match = line.match(magic_token_re))) {\n            rgbe_error(rgbe_format_error, \"bad initial token\");\n          }\n          header.valid |= RGBE_VALID_PROGRAMTYPE;\n          header.programtype = match[1];\n          header.string += line + \"\\n\";\n          while (true) {\n            line = fgets(buffer2);\n            if (false === line)\n              break;\n            header.string += line + \"\\n\";\n            if (\"#\" === line.charAt(0)) {\n              header.comments += line + \"\\n\";\n              continue;\n            }\n            if (match = line.match(gamma_re)) {\n              header.gamma = parseFloat(match[1]);\n            }\n            if (match = line.match(exposure_re)) {\n              header.exposure = parseFloat(match[1]);\n            }\n            if (match = line.match(format_re)) {\n              header.valid |= RGBE_VALID_FORMAT;\n              header.format = match[1];\n            }\n            if (match = line.match(dimensions_re)) {\n              header.valid |= RGBE_VALID_DIMENSIONS;\n              header.height = parseInt(match[1], 10);\n              header.width = parseInt(match[2], 10);\n            }\n            if (header.valid & RGBE_VALID_FORMAT && header.valid & RGBE_VALID_DIMENSIONS)\n              break;\n          }\n          if (!(header.valid & RGBE_VALID_FORMAT)) {\n            rgbe_error(rgbe_format_error, \"missing format specifier\");\n          }\n          if (!(header.valid & RGBE_VALID_DIMENSIONS)) {\n            rgbe_error(rgbe_format_error, \"missing image size specifier\");\n          }\n          return header;\n        }, RGBE_ReadPixels_RLE = function(buffer2, w2, h22) {\n          const scanline_width = w2;\n          if (\n            // run length encoding is not allowed so read flat\n            scanline_width < 8 || scanline_width > 32767 || // this file is not run length encoded\n            2 !== buffer2[0] || 2 !== buffer2[1] || buffer2[2] & 128\n          ) {\n            return new Uint8Array(buffer2);\n          }\n          if (scanline_width !== (buffer2[2] << 8 | buffer2[3])) {\n            rgbe_error(rgbe_format_error, \"wrong scanline width\");\n          }\n          const data_rgba = new Uint8Array(4 * w2 * h22);\n          if (!data_rgba.length) {\n            rgbe_error(rgbe_memory_error, \"unable to allocate buffer space\");\n          }\n          let offset = 0, pos = 0;\n          const ptr_end = 4 * scanline_width;\n          const rgbeStart = new Uint8Array(4);\n          const scanline_buffer = new Uint8Array(ptr_end);\n          let num_scanlines = h22;\n          while (num_scanlines > 0 && pos < buffer2.byteLength) {\n            if (pos + 4 > buffer2.byteLength) {\n              rgbe_error(rgbe_read_error);\n            }\n            rgbeStart[0] = buffer2[pos++];\n            rgbeStart[1] = buffer2[pos++];\n            rgbeStart[2] = buffer2[pos++];\n            rgbeStart[3] = buffer2[pos++];\n            if (2 != rgbeStart[0] || 2 != rgbeStart[1] || (rgbeStart[2] << 8 | rgbeStart[3]) != scanline_width) {\n              rgbe_error(rgbe_format_error, \"bad rgbe scanline format\");\n            }\n            let ptr = 0, count;\n            while (ptr < ptr_end && pos < buffer2.byteLength) {\n              count = buffer2[pos++];\n              const isEncodedRun = count > 128;\n              if (isEncodedRun)\n                count -= 128;\n              if (0 === count || ptr + count > ptr_end) {\n                rgbe_error(rgbe_format_error, \"bad scanline data\");\n              }\n              if (isEncodedRun) {\n                const byteValue = buffer2[pos++];\n                for (let i2 = 0; i2 < count; i2++) {\n                  scanline_buffer[ptr++] = byteValue;\n                }\n              } else {\n                scanline_buffer.set(buffer2.subarray(pos, pos + count), ptr);\n                ptr += count;\n                pos += count;\n              }\n            }\n            const l2 = scanline_width;\n            for (let i2 = 0; i2 < l2; i2++) {\n              let off = 0;\n              data_rgba[offset] = scanline_buffer[i2 + off];\n              off += scanline_width;\n              data_rgba[offset + 1] = scanline_buffer[i2 + off];\n              off += scanline_width;\n              data_rgba[offset + 2] = scanline_buffer[i2 + off];\n              off += scanline_width;\n              data_rgba[offset + 3] = scanline_buffer[i2 + off];\n              offset += 4;\n            }\n            num_scanlines--;\n          }\n          return data_rgba;\n        };\n        const RGBEByteToRGBFloat = function(sourceArray, sourceOffset, destArray, destOffset) {\n          const e = sourceArray[sourceOffset + 3];\n          const scale = Math.pow(2, e - 128) / 255;\n          destArray[destOffset + 0] = sourceArray[sourceOffset + 0] * scale;\n          destArray[destOffset + 1] = sourceArray[sourceOffset + 1] * scale;\n          destArray[destOffset + 2] = sourceArray[sourceOffset + 2] * scale;\n          destArray[destOffset + 3] = 1;\n        };\n        const RGBEByteToRGBHalf = function(sourceArray, sourceOffset, destArray, destOffset) {\n          const e = sourceArray[sourceOffset + 3];\n          const scale = Math.pow(2, e - 128) / 255;\n          destArray[destOffset + 0] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 0] * scale, 65504));\n          destArray[destOffset + 1] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 1] * scale, 65504));\n          destArray[destOffset + 2] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 2] * scale, 65504));\n          destArray[destOffset + 3] = DataUtils.toHalfFloat(1);\n        };\n        const byteArray = new Uint8Array(buffer);\n        byteArray.pos = 0;\n        const rgbe_header_info = RGBE_ReadHeader(byteArray);\n        const w = rgbe_header_info.width, h2 = rgbe_header_info.height, image_rgba_data = RGBE_ReadPixels_RLE(byteArray.subarray(byteArray.pos), w, h2);\n        let data, type;\n        let numElements;\n        switch (this.type) {\n          case FloatType:\n            numElements = image_rgba_data.length / 4;\n            const floatArray = new Float32Array(numElements * 4);\n            for (let j2 = 0; j2 < numElements; j2++) {\n              RGBEByteToRGBFloat(image_rgba_data, j2 * 4, floatArray, j2 * 4);\n            }\n            data = floatArray;\n            type = FloatType;\n            break;\n          case HalfFloatType:\n            numElements = image_rgba_data.length / 4;\n            const halfArray = new Uint16Array(numElements * 4);\n            for (let j2 = 0; j2 < numElements; j2++) {\n              RGBEByteToRGBHalf(image_rgba_data, j2 * 4, halfArray, j2 * 4);\n            }\n            data = halfArray;\n            type = HalfFloatType;\n            break;\n          default:\n            throw new Error(\"THREE.RGBELoader: Unsupported type: \" + this.type);\n        }\n        return {\n          width: w,\n          height: h2,\n          data,\n          header: rgbe_header_info.string,\n          gamma: rgbe_header_info.gamma,\n          exposure: rgbe_header_info.exposure,\n          type\n        };\n      }\n      setDataType(value) {\n        this.type = value;\n        return this;\n      }\n      load(url, onLoad, onProgress, onError) {\n        function onLoadCallback(texture, texData) {\n          switch (texture.type) {\n            case FloatType:\n            case HalfFloatType:\n              if (\"colorSpace\" in texture)\n                texture.colorSpace = \"srgb-linear\";\n              else\n                texture.encoding = 3e3;\n              texture.minFilter = LinearFilter;\n              texture.magFilter = LinearFilter;\n              texture.generateMipmaps = false;\n              texture.flipY = true;\n              break;\n          }\n          if (onLoad)\n            onLoad(texture, texData);\n        }\n        return super.load(url, onLoadCallback, onProgress, onError);\n      }\n    };\n    version2 = /* @__PURE__ */ (() => parseInt(REVISION.replace(/\\D+/g, \"\")))();\n    UV1 = version2 >= 125 ? \"uv1\" : \"uv2\";\n  }\n});\n\n// ../shadergradient/dist/chunk-MSKNCSEN.mjs\nfunction useRGBELoader(file, { path }) {\n  const cubeTexture = useLoader(\n    // @ts-ignore\n    RGBELoader,\n    file,\n    (loader) => loader.setPath(path)\n  );\n  return cubeTexture;\n}\nvar init_chunk_MSKNCSEN = __esm({\n  \"../shadergradient/dist/chunk-MSKNCSEN.mjs\"() {\n    init_chunk_6A4LZ7FD();\n    init_chunk_73SH6GTX();\n  }\n});\n\n// ../shadergradient/dist/chunk-RVPDO3VD.mjs\nimport { useEffect as useEffect9, useState as useState5, useRef as useRef7 } from \"react\";\nfunction useInView(enabled = true, threshold = 0.1, rootMargin = \"0px\") {\n  const [isInView, setIsInView] = useState5(!enabled);\n  const containerRef = useRef7(null);\n  useEffect9(() => {\n    if (!enabled) return;\n    const observer = new IntersectionObserver(\n      ([entry]) => {\n        setIsInView(entry.isIntersecting);\n      },\n      {\n        threshold,\n        rootMargin\n      }\n    );\n    if (containerRef.current) {\n      observer.observe(containerRef.current);\n    }\n    return () => observer.disconnect();\n  }, [enabled, threshold, rootMargin]);\n  return { isInView, containerRef };\n}\nvar init_chunk_RVPDO3VD = __esm({\n  \"../shadergradient/dist/chunk-RVPDO3VD.mjs\"() {\n  }\n});\n\n// ../shadergradient/dist/chunk-OVVMMFGI.mjs\nimport { useEffect as useEffect10, createContext as createContext3, useMemo as useMemo5, useContext as useContext3 } from \"react\";\nimport { jsx as jsx8 } from \"react/jsx-runtime\";\nfunction ShaderGradientCanvas({\n  children,\n  style = {},\n  pixelDensity = 1,\n  fov: fov2 = 45,\n  pointerEvents,\n  className,\n  envBasePath,\n  lazyLoad = true,\n  threshold = 0.1,\n  rootMargin = \"0px\",\n  preserveDrawingBuffer,\n  powerPreference\n}) {\n  const { isInView, containerRef } = useInView(lazyLoad, threshold, rootMargin);\n  const contextValue = useMemo5(\n    () => ({ envBasePath }),\n    [envBasePath]\n  );\n  useShaderChunkFix();\n  return /* @__PURE__ */ jsx8(\"div\", { ref: containerRef, style: __spreadValues({ width: \"100%\", height: \"100%\" }, style), children: (!lazyLoad || isInView) && /* @__PURE__ */ jsx8(Context.Provider, { value: contextValue, children: /* @__PURE__ */ jsx8(\n    Canvas2,\n    __spreadProps(__spreadValues({\n      id: \"gradientCanvas\",\n      style: { pointerEvents },\n      resize: { offsetSize: true },\n      className\n    }, canvasProps(pixelDensity, fov2, {\n      preserveDrawingBuffer,\n      powerPreference\n    })), {\n      children\n    }),\n    pixelDensity + fov2\n  ) }) });\n}\nfunction useShaderChunkFix() {\n  useEffect10(() => {\n    ShaderChunk[\"uv2_pars_vertex\"] = ``;\n    ShaderChunk[\"uv2_vertex\"] = ``;\n    ShaderChunk[\"uv2_pars_fragment\"] = ``;\n    ShaderChunk[\"encodings_fragment\"] = ``;\n  }, []);\n}\nvar Context, useShaderGradientCanvasContext;\nvar init_chunk_OVVMMFGI = __esm({\n  \"../shadergradient/dist/chunk-OVVMMFGI.mjs\"() {\n    init_chunk_73SH6GTX();\n    init_chunk_RVPDO3VD();\n    init_chunk_BT6X4JN2();\n    init_chunk_JITLJLKU();\n    init_chunk_5BEQP2BQ();\n    Context = createContext3(\n      {}\n    );\n    useShaderGradientCanvasContext = () => {\n      return useContext3(Context);\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-WOMYU2KH.mjs\nimport React4 from \"react\";\nfunction EnvironmentMap({ background = false, envPreset }) {\n  const { envBasePath } = useShaderGradientCanvasContext();\n  const path = envBasePath || defaultEnvBasePath;\n  const city = useRGBELoader(\"city.hdr\", { path });\n  const dawn = useRGBELoader(\"dawn.hdr\", { path });\n  const lobby = useRGBELoader(\"lobby.hdr\", { path });\n  const textures = { city, dawn, lobby };\n  const map = textures[envPreset];\n  const defaultScene = useThree((state) => state.scene);\n  React4.useLayoutEffect(() => {\n    if (map) {\n      const target2 = resolveScene(defaultScene);\n      const oldbg = target2.background;\n      const oldenv = target2.environment;\n      if (background !== \"only\") target2.environment = map;\n      if (background) target2.background = map;\n      return () => {\n        if (background !== \"only\") target2.environment = oldenv;\n        if (background) target2.background = \"black\";\n      };\n    }\n  }, [defaultScene, map, background]);\n  const texture = map;\n  texture.mapping = EquirectangularReflectionMapping;\n  return null;\n}\nvar isRef2, resolveScene;\nvar init_chunk_WOMYU2KH = __esm({\n  \"../shadergradient/dist/chunk-WOMYU2KH.mjs\"() {\n    init_chunk_MSKNCSEN();\n    init_chunk_OVVMMFGI();\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n    init_chunk_JITLJLKU();\n    isRef2 = (obj) => obj.current && obj.current.isScene;\n    resolveScene = (scene) => isRef2(scene) ? scene.current : scene;\n  }\n});\n\n// ../shadergradient/dist/chunk-IGT2XWIL.mjs\nimport { Suspense as Suspense2 } from \"react\";\nimport { Fragment as Fragment5, jsx as jsx9, jsxs as jsxs3 } from \"react/jsx-runtime\";\nfunction Lights({ lightType, brightness, envPreset }) {\n  return /* @__PURE__ */ jsxs3(Fragment5, { children: [\n    lightType === \"3d\" && /* @__PURE__ */ jsx9(\"ambientLight\", { intensity: (brightness || 1) * Math.PI }),\n    lightType === \"env\" && /* @__PURE__ */ jsx9(Suspense2, { fallback: /* @__PURE__ */ jsx9(Loader2, {}), children: /* @__PURE__ */ jsx9(\n      EnvironmentMap,\n      {\n        envPreset,\n        background: false,\n        loadingCallback: () => void 0\n      }\n    ) })\n  ] });\n}\nfunction Loader2() {\n  return /* @__PURE__ */ jsx9(\"ambientLight\", { intensity: 0.4 });\n}\nvar init_chunk_IGT2XWIL = __esm({\n  \"../shadergradient/dist/chunk-IGT2XWIL.mjs\"() {\n    init_chunk_WOMYU2KH();\n  }\n});\n\n// ../shadergradient/dist/chunk-B5OTQHNJ.mjs\nimport * as React5 from \"react\";\nfunction useCamera(camera, props) {\n  const pointer = useThree((state) => state.pointer);\n  const [raycast] = React5.useState(() => {\n    const raycaster = new Raycaster();\n    if (props) applyProps(raycaster, props, {});\n    return function(_, intersects2) {\n      raycaster.setFromCamera(\n        pointer,\n        camera instanceof Camera ? camera : camera.current\n      );\n      const rc = this.constructor.prototype.raycast.bind(this);\n      if (rc) rc(raycaster, intersects2);\n    };\n  });\n  return raycast;\n}\nvar init_chunk_B5OTQHNJ = __esm({\n  \"../shadergradient/dist/chunk-B5OTQHNJ.mjs\"() {\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n  }\n});\n\n// ../shadergradient/dist/chunk-RANVICU2.mjs\nimport * as React6 from \"react\";\nfunction useFBO(width, height, settings) {\n  const { gl, size, viewport } = useThree();\n  const _width = typeof width === \"number\" ? width : size.width * viewport.dpr;\n  const _height = typeof height === \"number\" ? height : size.height * viewport.dpr;\n  const _settings = (typeof width === \"number\" ? settings : width) || {};\n  const _a3 = _settings, { samples } = _a3, targetSettings = __objRest(_a3, [\"samples\"]);\n  const target2 = React6.useMemo(() => {\n    let target22;\n    target22 = new WebGLRenderTarget(_width, _height, __spreadValues({\n      minFilter: LinearFilter,\n      magFilter: LinearFilter,\n      encoding: gl.outputEncoding,\n      type: HalfFloatType\n    }, targetSettings));\n    target22.samples = samples;\n    return target22;\n  }, []);\n  React6.useLayoutEffect(() => {\n    target2.setSize(_width, _height);\n    if (samples) target2.samples = samples;\n  }, [samples, target2, _width, _height]);\n  React6.useEffect(() => {\n    return () => target2.dispose();\n  }, []);\n  return target2;\n}\nvar init_chunk_RANVICU2 = __esm({\n  \"../shadergradient/dist/chunk-RANVICU2.mjs\"() {\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n    init_chunk_5BEQP2BQ();\n  }\n});\n\n// ../shadergradient/dist/chunk-LGYLXRYF.mjs\nfunction assignRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\nfunction mergeRefs(refs) {\n  return (value) => {\n    for (const ref of refs) assignRef(ref, value);\n  };\n}\nvar init_chunk_LGYLXRYF = __esm({\n  \"../shadergradient/dist/chunk-LGYLXRYF.mjs\"() {\n  }\n});\n\n// ../shadergradient/dist/chunk-FW2KKI26.mjs\nimport * as React7 from \"react\";\nimport { Fragment as Fragment6, jsx as jsx10, jsxs as jsxs4 } from \"react/jsx-runtime\";\nvar isFunction, OrthographicCamera2;\nvar init_chunk_FW2KKI26 = __esm({\n  \"../shadergradient/dist/chunk-FW2KKI26.mjs\"() {\n    init_chunk_RANVICU2();\n    init_chunk_LGYLXRYF();\n    init_chunk_73SH6GTX();\n    init_chunk_5BEQP2BQ();\n    isFunction = (node) => typeof node === \"function\";\n    OrthographicCamera2 = React7.forwardRef(\n      (_a3, ref) => {\n        var _b2 = _a3, {\n          envMap,\n          resolution = 256,\n          frames = Infinity,\n          children,\n          makeDefault\n        } = _b2, props = __objRest(_b2, [\n          \"envMap\",\n          \"resolution\",\n          \"frames\",\n          \"children\",\n          \"makeDefault\"\n        ]);\n        const set = useThree(({ set: set2 }) => set2);\n        const camera = useThree(({ camera: camera2 }) => camera2);\n        const size = useThree(({ size: size2 }) => size2);\n        const cameraRef = React7.useRef(null);\n        const groupRef = React7.useRef(null);\n        const fbo = useFBO(resolution);\n        React7.useLayoutEffect(() => {\n          if (!props.manual) {\n            cameraRef.current.updateProjectionMatrix();\n          }\n        }, [size, props]);\n        React7.useLayoutEffect(() => {\n          cameraRef.current.updateProjectionMatrix();\n        });\n        React7.useLayoutEffect(() => {\n          if (makeDefault) {\n            const oldCam = camera;\n            set(() => ({ camera: cameraRef.current }));\n            return () => set(() => ({ camera: oldCam }));\n          }\n        }, [cameraRef, makeDefault, set]);\n        let count = 0;\n        let oldEnvMap = null;\n        const functional = isFunction(children);\n        useFrame((state) => {\n          if (functional && (frames === Infinity || count < frames)) {\n            groupRef.current.visible = false;\n            state.gl.setRenderTarget(fbo);\n            oldEnvMap = state.scene.background;\n            if (envMap) state.scene.background = envMap;\n            state.gl.render(state.scene, cameraRef.current);\n            state.scene.background = oldEnvMap;\n            state.gl.setRenderTarget(null);\n            groupRef.current.visible = true;\n            count++;\n          }\n        });\n        return /* @__PURE__ */ jsxs4(Fragment6, { children: [\n          /* @__PURE__ */ jsx10(\n            \"orthographicCamera\",\n            __spreadProps(__spreadValues({\n              left: size.width / -2,\n              right: size.width / 2,\n              top: size.height / 2,\n              bottom: size.height / -2,\n              ref: mergeRefs([cameraRef, ref])\n            }, props), {\n              children: !functional && children\n            })\n          ),\n          /* @__PURE__ */ jsx10(\"group\", { ref: groupRef, children: functional && children(fbo.texture) })\n        ] });\n      }\n    );\n  }\n});\n\n// ../shadergradient/dist/chunk-ZNOFOFJJ.mjs\nimport * as React8 from \"react\";\nimport { jsx as jsx11, jsxs as jsxs5 } from \"react/jsx-runtime\";\nvar Context2, useGizmoContext, turnRate, dummy, matrix, q1, q2, target, targetPosition, isOrbitControls, GizmoHelper;\nvar init_chunk_ZNOFOFJJ = __esm({\n  \"../shadergradient/dist/chunk-ZNOFOFJJ.mjs\"() {\n    init_chunk_B5OTQHNJ();\n    init_chunk_FW2KKI26();\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n    Context2 = React8.createContext(\n      {}\n    );\n    useGizmoContext = () => {\n      return React8.useContext(Context2);\n    };\n    turnRate = 2 * Math.PI;\n    dummy = new Object3D();\n    matrix = new Matrix4();\n    [q1, q2] = [new Quaternion(), new Quaternion()];\n    target = new Vector3();\n    targetPosition = new Vector3();\n    isOrbitControls = (controls) => {\n      return \"minPolarAngle\" in controls;\n    };\n    GizmoHelper = ({\n      alignment = \"bottom-right\",\n      margin = [80, 80],\n      renderPriority = 0,\n      autoClear = true,\n      onUpdate,\n      onTarget,\n      children: GizmoHelperComponent\n    }) => {\n      const size = useThree(({ size: size2 }) => size2);\n      const mainCamera = useThree(({ camera }) => camera);\n      const defaultControls = useThree(\n        ({ controls }) => controls\n      );\n      const gl = useThree(({ gl: gl2 }) => gl2);\n      const scene = useThree(({ scene: scene2 }) => scene2);\n      const invalidate2 = useThree(({ invalidate: invalidate22 }) => invalidate22);\n      const backgroundRef = React8.useRef();\n      const gizmoRef = React8.useRef();\n      const virtualCam = React8.useRef(null);\n      const [virtualScene] = React8.useState(() => new Scene());\n      const animating = React8.useRef(false);\n      const radius = React8.useRef(0);\n      const focusPoint = React8.useRef(new Vector3(0, 0, 0));\n      const defaultUp = React8.useRef(new Vector3(0, 0, 0));\n      React8.useEffect(() => {\n        defaultUp.current.copy(mainCamera.up);\n      }, [mainCamera]);\n      const tweenCamera = React8.useCallback(\n        (direction) => {\n          animating.current = true;\n          if (defaultControls || onTarget)\n            focusPoint.current = (defaultControls == null ? void 0 : defaultControls.target) || (onTarget == null ? void 0 : onTarget());\n          radius.current = mainCamera.position.distanceTo(target);\n          q1.copy(mainCamera.quaternion);\n          targetPosition.copy(direction).multiplyScalar(radius.current).add(target);\n          dummy.lookAt(targetPosition);\n          q2.copy(dummy.quaternion);\n          invalidate2();\n        },\n        [defaultControls, mainCamera, onTarget, invalidate2]\n      );\n      React8.useEffect(() => {\n        if (scene.background) {\n          backgroundRef.current = scene.background;\n          scene.background = null;\n          virtualScene.background = backgroundRef.current;\n        }\n        return () => {\n          if (backgroundRef.current) scene.background = backgroundRef.current;\n        };\n      }, []);\n      useFrame((_, delta) => {\n        var _a3;\n        if (virtualCam.current && gizmoRef.current) {\n          if (animating.current) {\n            if (q1.angleTo(q2) < 0.01) {\n              animating.current = false;\n              if (isOrbitControls(defaultControls)) {\n                mainCamera.up.copy(defaultUp.current);\n              }\n            } else {\n              const step = delta * turnRate;\n              q1.rotateTowards(q2, step);\n              mainCamera.position.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(radius.current).add(focusPoint.current);\n              mainCamera.up.set(0, 1, 0).applyQuaternion(q1).normalize();\n              mainCamera.quaternion.copy(q1);\n              if (onUpdate) onUpdate();\n              else if (defaultControls) defaultControls.update();\n              invalidate2();\n            }\n          }\n          matrix.copy(mainCamera.matrix).invert();\n          (_a3 = gizmoRef.current) == null ? void 0 : _a3.quaternion.setFromRotationMatrix(matrix);\n          if (autoClear) gl.autoClear = false;\n          gl.clearDepth();\n          gl.render(virtualScene, virtualCam.current);\n        }\n      }, renderPriority);\n      const raycast = useCamera(virtualCam);\n      const gizmoHelperContext = React8.useMemo(\n        () => ({ tweenCamera, raycast }),\n        [tweenCamera]\n      );\n      const [marginX, marginY] = margin;\n      const x = alignment.endsWith(\"-center\") ? 0 : alignment.endsWith(\"-left\") ? -size.width / 2 + marginX : size.width / 2 - marginX;\n      const y2 = alignment.startsWith(\"center-\") ? 0 : alignment.startsWith(\"top-\") ? size.height / 2 - marginY : -size.height / 2 + marginY;\n      return createPortal(\n        /* @__PURE__ */ jsxs5(Context2.Provider, { value: gizmoHelperContext, children: [\n          /* @__PURE__ */ jsx11(OrthographicCamera2, { ref: virtualCam, position: [0, 0, 200] }),\n          /* @__PURE__ */ jsx11(\"group\", { ref: gizmoRef, position: [x, y2, 0], children: GizmoHelperComponent })\n        ] }),\n        virtualScene\n      );\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-RDU4SA2T.mjs\nimport * as React9 from \"react\";\nimport { Fragment as Fragment7, jsx as jsx12, jsxs as jsxs6 } from \"react/jsx-runtime\";\nfunction Axis({ scale = [0.8, 0.05, 0.05], color, rotation }) {\n  return /* @__PURE__ */ jsx12(\"group\", { rotation, children: /* @__PURE__ */ jsxs6(\"mesh\", { position: [0.4, 0, 0], children: [\n    /* @__PURE__ */ jsx12(\"boxGeometry\", { args: scale }),\n    /* @__PURE__ */ jsx12(\"meshBasicMaterial\", { color, toneMapped: false })\n  ] }) });\n}\nfunction AxisHead(_a3) {\n  var _b2 = _a3, {\n    onClick,\n    font,\n    disabled,\n    arcStyle,\n    label,\n    labelColor,\n    axisHeadScale = 1\n  } = _b2, props = __objRest(_b2, [\n    \"onClick\",\n    \"font\",\n    \"disabled\",\n    \"arcStyle\",\n    \"label\",\n    \"labelColor\",\n    \"axisHeadScale\"\n  ]);\n  const gl = useThree((state) => state.gl);\n  const texture = React9.useMemo(() => {\n    const canvas = document.createElement(\"canvas\");\n    canvas.width = 64;\n    canvas.height = 64;\n    const context2 = canvas.getContext(\"2d\");\n    context2.beginPath();\n    context2.arc(32, 32, 16, 0, 2 * Math.PI);\n    context2.closePath();\n    context2.fillStyle = arcStyle;\n    context2.fill();\n    if (label) {\n      context2.font = font;\n      context2.textAlign = \"center\";\n      context2.fillStyle = labelColor;\n      context2.fillText(label, 32, 41);\n    }\n    return new CanvasTexture(canvas);\n  }, [arcStyle, label, labelColor, font]);\n  const [active, setActive] = React9.useState(false);\n  const scale = (label ? 1 : 0.75) * (active ? 1.2 : 1) * axisHeadScale;\n  const handlePointerOver = (e) => {\n    e.stopPropagation();\n    setActive(true);\n  };\n  const handlePointerOut = (e) => {\n    e.stopPropagation();\n    setActive(false);\n  };\n  return /* @__PURE__ */ jsx12(\n    \"sprite\",\n    __spreadProps(__spreadValues({\n      scale,\n      onPointerOver: !disabled ? handlePointerOver : void 0,\n      onPointerOut: !disabled ? onClick || handlePointerOut : void 0\n    }, props), {\n      children: /* @__PURE__ */ jsx12(\n        \"spriteMaterial\",\n        {\n          map: texture,\n          \"map-encoding\": gl.outputEncoding,\n          \"map-anisotropy\": gl.capabilities.getMaxAnisotropy() || 1,\n          alphaTest: 0.3,\n          opacity: label ? 1 : 0.75,\n          toneMapped: false\n        }\n      )\n    })\n  );\n}\nvar GizmoViewport;\nvar init_chunk_RDU4SA2T = __esm({\n  \"../shadergradient/dist/chunk-RDU4SA2T.mjs\"() {\n    init_chunk_ZNOFOFJJ();\n    init_chunk_73SH6GTX();\n    init_chunk_BT6X4JN2();\n    init_chunk_5BEQP2BQ();\n    GizmoViewport = (_a3) => {\n      var _b2 = _a3, {\n        hideNegativeAxes,\n        hideAxisHeads,\n        disabled,\n        font = \"18px Inter var, Arial, sans-serif\",\n        axisColors = [\"#ff2060\", \"#20df80\", \"#2080ff\"],\n        axisHeadScale = 1,\n        axisScale,\n        labels = [\"X\", \"Y\", \"Z\"],\n        labelColor = \"#000\",\n        onClick\n      } = _b2, props = __objRest(_b2, [\n        \"hideNegativeAxes\",\n        \"hideAxisHeads\",\n        \"disabled\",\n        \"font\",\n        \"axisColors\",\n        \"axisHeadScale\",\n        \"axisScale\",\n        \"labels\",\n        \"labelColor\",\n        \"onClick\"\n      ]);\n      const [colorX, colorY, colorZ] = axisColors;\n      const { tweenCamera, raycast } = useGizmoContext();\n      const axisHeadProps = {\n        font,\n        disabled,\n        labelColor,\n        raycast,\n        onClick,\n        axisHeadScale,\n        onPointerDown: !disabled ? (e) => {\n          tweenCamera(e.object.position);\n          e.stopPropagation();\n        } : void 0\n      };\n      return /* @__PURE__ */ jsxs6(\"group\", __spreadProps(__spreadValues({ scale: 40 }, props), { children: [\n        /* @__PURE__ */ jsx12(Axis, { color: colorX, rotation: [0, 0, 0], scale: axisScale }),\n        /* @__PURE__ */ jsx12(Axis, { color: colorY, rotation: [0, 0, Math.PI / 2], scale: axisScale }),\n        /* @__PURE__ */ jsx12(Axis, { color: colorZ, rotation: [0, -Math.PI / 2, 0], scale: axisScale }),\n        !hideAxisHeads && /* @__PURE__ */ jsxs6(Fragment7, { children: [\n          /* @__PURE__ */ jsx12(\n            AxisHead,\n            __spreadValues({\n              arcStyle: colorX,\n              position: [1, 0, 0],\n              label: labels[0]\n            }, axisHeadProps)\n          ),\n          /* @__PURE__ */ jsx12(\n            AxisHead,\n            __spreadValues({\n              arcStyle: colorY,\n              position: [0, 1, 0],\n              label: labels[1]\n            }, axisHeadProps)\n          ),\n          /* @__PURE__ */ jsx12(\n            AxisHead,\n            __spreadValues({\n              arcStyle: colorZ,\n              position: [0, 0, 1],\n              label: labels[2]\n            }, axisHeadProps)\n          ),\n          !hideNegativeAxes && /* @__PURE__ */ jsxs6(Fragment7, { children: [\n            /* @__PURE__ */ jsx12(\n              AxisHead,\n              __spreadValues({\n                arcStyle: colorX,\n                position: [-1, 0, 0]\n              }, axisHeadProps)\n            ),\n            /* @__PURE__ */ jsx12(\n              AxisHead,\n              __spreadValues({\n                arcStyle: colorY,\n                position: [0, -1, 0]\n              }, axisHeadProps)\n            ),\n            /* @__PURE__ */ jsx12(\n              AxisHead,\n              __spreadValues({\n                arcStyle: colorZ,\n                position: [0, 0, -1]\n              }, axisHeadProps)\n            )\n          ] })\n        ] }),\n        /* @__PURE__ */ jsx12(\"ambientLight\", { intensity: 0.5 }),\n        /* @__PURE__ */ jsx12(\"pointLight\", { position: [10, 10, 10], intensity: 0.5 })\n      ] }));\n    };\n  }\n});\n\n// ../shadergradient/dist/chunk-E7I5VRNJ.mjs\nimport { Fragment as Fragment8, jsx as jsx13 } from \"react/jsx-runtime\";\nfunction Axis2({ margin = [65, 110] }) {\n  return /* @__PURE__ */ jsx13(Fragment8, { children: /* @__PURE__ */ jsx13(\n    GizmoHelper,\n    {\n      alignment: \"bottom-right\",\n      margin,\n      renderPriority: 2,\n      children: /* @__PURE__ */ jsx13(\n        GizmoViewport,\n        {\n          axisColors: [\"#FF430A\", \"#FF430A\", \"#FF430A\"],\n          labelColor: \"white\",\n          hideNegativeAxes: true,\n          axisHeadScale: 0.8\n        }\n      )\n    }\n  ) });\n}\nvar init_chunk_E7I5VRNJ = __esm({\n  \"../shadergradient/dist/chunk-E7I5VRNJ.mjs\"() {\n    init_chunk_RDU4SA2T();\n    init_chunk_ZNOFOFJJ();\n  }\n});\n\n// ../shadergradient/dist/chunk-PR7ME7PU.mjs\nvar presets, presetsArray;\nvar init_chunk_PR7ME7PU = __esm({\n  \"../shadergradient/dist/chunk-PR7ME7PU.mjs\"() {\n    presets = {\n      halo: {\n        title: \"Halo\",\n        color: \"white\",\n        props: {\n          type: \"plane\",\n          uAmplitude: 1,\n          uDensity: 1.3,\n          uSpeed: 0.4,\n          uStrength: 4,\n          uTime: 0,\n          uFrequency: 5.5,\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          axesHelper: \"off\",\n          brightness: 1.2,\n          cAzimuthAngle: 180,\n          cDistance: 3.6,\n          cPolarAngle: 90,\n          cameraZoom: 1,\n          color1: \"#ff5005\",\n          color2: \"#dbba95\",\n          color3: \"#d0bce1\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          gizmoHelper: \"hide\",\n          grain: \"on\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: -1.4,\n          positionY: 0,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 0,\n          rotationY: 10,\n          rotationZ: 50,\n          shader: \"defaults\",\n          animate: \"on\",\n          wireframe: false\n        }\n      },\n      pensive: {\n        title: \"Pensive\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"off\",\n          brightness: 1.5,\n          cAzimuthAngle: 250,\n          cDistance: 1.5,\n          cPolarAngle: 140,\n          cameraZoom: 12.5,\n          color1: \"#809bd6\",\n          color2: \"#910aff\",\n          color3: \"#af38ff\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          gizmoHelper: \"hide\",\n          grain: \"on\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: 0,\n          positionZ: 0,\n          reflection: 0.5,\n          rotationX: 0,\n          rotationY: 0,\n          rotationZ: 140,\n          shader: \"defaults\",\n          type: \"sphere\",\n          uAmplitude: 7,\n          uDensity: 0.8,\n          uFrequency: 5.5,\n          uSpeed: 0.3,\n          uStrength: 0.4,\n          uTime: 0,\n          wireframe: false\n        }\n      },\n      mint: {\n        title: \"Mint\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"off\",\n          brightness: 1.2,\n          cAzimuthAngle: 170,\n          cDistance: 4.4,\n          cPolarAngle: 70,\n          cameraZoom: 1,\n          color1: \"#94ffd1\",\n          color2: \"#6bf5ff\",\n          color3: \"#ffffff\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          gizmoHelper: \"hide\",\n          grain: \"off\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: 0.9,\n          positionZ: -0.3,\n          reflection: 0.1,\n          rotationX: 45,\n          rotationY: 0,\n          rotationZ: 0,\n          shader: \"defaults\",\n          type: \"waterPlane\",\n          uAmplitude: 0,\n          uDensity: 1.2,\n          uFrequency: 0,\n          uSpeed: 0.2,\n          uStrength: 3.4,\n          uTime: 0,\n          wireframe: false\n        }\n      },\n      interstella: {\n        title: \"Interstella\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"off\",\n          brightness: 0.8,\n          cAzimuthAngle: 270,\n          cDistance: 0.5,\n          cPolarAngle: 180,\n          cameraZoom: 15.1,\n          color1: \"#73bfc4\",\n          color2: \"#ff810a\",\n          color3: \"#8da0ce\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          gizmoHelper: \"hide\",\n          grain: \"on\",\n          lightType: \"env\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: -0.1,\n          positionY: 0,\n          positionZ: 0,\n          reflection: 0.4,\n          rotationX: 0,\n          rotationY: 130,\n          rotationZ: 70,\n          shader: \"defaults\",\n          type: \"sphere\",\n          uAmplitude: 3.2,\n          uDensity: 0.8,\n          uFrequency: 5.5,\n          uSpeed: 0.3,\n          uStrength: 0.3,\n          uTime: 0,\n          wireframe: false\n        }\n      },\n      nightyNight: {\n        title: \"Nighty night\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"off\",\n          brightness: 1,\n          cAzimuthAngle: 180,\n          cDistance: 2.8,\n          cPolarAngle: 80,\n          cameraZoom: 9.1,\n          color1: \"#606080\",\n          color2: \"#8d7dca\",\n          color3: \"#212121\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          gizmoHelper: \"hide\",\n          grain: \"on\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: 0,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 50,\n          rotationY: 0,\n          rotationZ: -60,\n          shader: \"defaults\",\n          type: \"waterPlane\",\n          uAmplitude: 0,\n          uDensity: 1.5,\n          uFrequency: 0,\n          uSpeed: 0.3,\n          uStrength: 1.5,\n          uTime: 8,\n          wireframe: false\n        }\n      },\n      violaOrientalis: {\n        title: \"Viola\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"on\",\n          brightness: 1.1,\n          cAzimuthAngle: 0,\n          cDistance: 7.1,\n          cPolarAngle: 140,\n          cameraZoom: 17.3,\n          color1: \"#ffffff\",\n          color2: \"#ffbb00\",\n          color3: \"#0700ff\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          grain: \"off\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: 0,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 0,\n          rotationY: 0,\n          rotationZ: 0,\n          shader: \"defaults\",\n          type: \"sphere\",\n          uAmplitude: 1.4,\n          uDensity: 1.1,\n          uSpeed: 0.1,\n          uStrength: 1,\n          uTime: 0,\n          uFrequency: 5.5,\n          wireframe: false\n        }\n      },\n      universe: {\n        title: \"Universe\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"on\",\n          brightness: 1.1,\n          cAzimuthAngle: 180,\n          cDistance: 3.9,\n          cPolarAngle: 115,\n          cameraZoom: 1,\n          color1: \"#5606ff\",\n          color2: \"#fe8989\",\n          color3: \"#000000\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          grain: \"off\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: -0.5,\n          positionY: 0.1,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 0,\n          rotationY: 0,\n          rotationZ: 235,\n          shader: \"defaults\",\n          type: \"waterPlane\",\n          uAmplitude: 0,\n          uDensity: 1.1,\n          uSpeed: 0.1,\n          uStrength: 2.4,\n          uTime: 0.2,\n          uFrequency: 5.5,\n          wireframe: false\n        }\n      },\n      sunset: {\n        title: \"Sunset\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"on\",\n          bgColor1: \"#000000\",\n          bgColor2: \"#000000\",\n          brightness: 1.5,\n          cAzimuthAngle: 60,\n          cDistance: 7.1,\n          cPolarAngle: 90,\n          cameraZoom: 15.3,\n          color1: \"#ff7a33\",\n          color2: \"#33a0ff\",\n          color3: \"#ffc53d\",\n          embedMode: \"off\",\n          envPreset: \"dawn\",\n          grain: \"off\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: -0.15,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 0,\n          rotationY: 0,\n          rotationZ: 0,\n          shader: \"defaults\",\n          type: \"sphere\",\n          uAmplitude: 1.4,\n          uDensity: 1.1,\n          uSpeed: 0.1,\n          uStrength: 0.4,\n          uTime: 0,\n          uFrequency: 5.5,\n          wireframe: false\n        }\n      },\n      mandarin: {\n        title: \"Mandarin\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"on\",\n          bgColor1: \"#000000\",\n          bgColor2: \"#000000\",\n          brightness: 1.2,\n          cAzimuthAngle: 180,\n          cDistance: 2.4,\n          cPolarAngle: 95,\n          cameraZoom: 1,\n          color1: \"#ff6a1a\",\n          color2: \"#c73c00\",\n          color3: \"#FD4912\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          grain: \"off\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: -2.1,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 0,\n          rotationY: 0,\n          rotationZ: 225,\n          shader: \"defaults\",\n          type: \"waterPlane\",\n          uAmplitude: 0,\n          uDensity: 1.8,\n          uSpeed: 0.2,\n          uStrength: 3,\n          uTime: 0.2,\n          uFrequency: 5.5,\n          wireframe: false\n        }\n      },\n      cottonCandy: {\n        title: \"Cotton Candy\",\n        color: \"white\",\n        props: {\n          range: \"disabled\",\n          rangeStart: 0,\n          rangeEnd: 40,\n          frameRate: 10,\n          destination: \"onCanvas\",\n          format: \"gif\",\n          animate: \"on\",\n          axesHelper: \"off\",\n          brightness: 1.2,\n          cAzimuthAngle: 180,\n          cDistance: 2.9,\n          cPolarAngle: 120,\n          cameraZoom: 1,\n          color1: \"#ebedff\",\n          color2: \"#f3f2f8\",\n          color3: \"#dbf8ff\",\n          embedMode: \"off\",\n          envPreset: \"city\",\n          grain: \"off\",\n          lightType: \"3d\",\n          pixelDensity: 1,\n          fov: 45,\n          positionX: 0,\n          positionY: 1.8,\n          positionZ: 0,\n          reflection: 0.1,\n          rotationX: 0,\n          rotationY: 0,\n          rotationZ: -90,\n          shader: \"defaults\",\n          type: \"waterPlane\",\n          uAmplitude: 0,\n          uDensity: 1,\n          uSpeed: 0.3,\n          uStrength: 3,\n          uTime: 0.2,\n          uFrequency: 5.5,\n          wireframe: false\n        }\n      }\n    };\n    presetsArray = Object.values(presets);\n  }\n});\n\n// ../shadergradient/dist/chunk-6JCWLHW2.mjs\nimport { Fragment as Fragment9, jsx as jsx14, jsxs as jsxs7 } from \"react/jsx-runtime\";\nfunction decodeComponents(components, split) {\n  try {\n    return [decodeURIComponent(components.join(\"\"))];\n  } catch (err) {\n  }\n  if (components.length === 1) {\n    return components;\n  }\n  split = split || 1;\n  var left = components.slice(0, split);\n  var right = components.slice(split);\n  return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input);\n  } catch (err) {\n    var tokens = input.match(singleMatcher) || [];\n    for (var i2 = 1; i2 < tokens.length; i2++) {\n      input = decodeComponents(tokens, i2).join(\"\");\n      tokens = input.match(singleMatcher) || [];\n    }\n    return input;\n  }\n}\nfunction customDecodeURIComponent(input) {\n  var replaceMap = {\n    \"%FE%FF\": \"\\uFFFD\\uFFFD\",\n    \"%FF%FE\": \"\\uFFFD\\uFFFD\"\n  };\n  var match = multiMatcher.exec(input);\n  while (match) {\n    try {\n      replaceMap[match[0]] = decodeURIComponent(match[0]);\n    } catch (err) {\n      var result = decode(match[0]);\n      if (result !== match[0]) {\n        replaceMap[match[0]] = result;\n      }\n    }\n    match = multiMatcher.exec(input);\n  }\n  replaceMap[\"%C2\"] = \"\\uFFFD\";\n  var entries = Object.keys(replaceMap);\n  for (var i2 = 0; i2 < entries.length; i2++) {\n    var key = entries[i2];\n    input = input.replace(new RegExp(key, \"g\"), replaceMap[key]);\n  }\n  return input;\n}\nfunction __cjs_default__2(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global2 !== \"undefined\" && global2 || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k3) {\n      if (k3 === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k3 != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k3] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k3, {\n        get: function() {\n          return requiredModule[k3];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k3) {\n        Object2.defineProperty(specifiers, k3, {\n          get: function() {\n            return requiredModule[k3];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nfunction encoderForArrayFormat(options) {\n  switch (options.arrayFormat) {\n    case \"index\":\n      return (key) => (result, value) => {\n        const index = result.length;\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, [encode(key, options), \"[\", index, \"]\"].join(\"\")];\n        }\n        return [\n          ...result,\n          [encode(key, options), \"[\", encode(index, options), \"]=\", encode(value, options)].join(\"\")\n        ];\n      };\n    case \"bracket\":\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, [encode(key, options), \"[]\"].join(\"\")];\n        }\n        return [...result, [encode(key, options), \"[]=\", encode(value, options)].join(\"\")];\n      };\n    case \"colon-list-separator\":\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, [encode(key, options), \":list=\"].join(\"\")];\n        }\n        return [...result, [encode(key, options), \":list=\", encode(value, options)].join(\"\")];\n      };\n    case \"comma\":\n    case \"separator\":\n    case \"bracket-separator\": {\n      const keyValueSep = options.arrayFormat === \"bracket-separator\" ? \"[]=\" : \"=\";\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        value = value === null ? \"\" : value;\n        if (result.length === 0) {\n          return [[encode(key, options), keyValueSep, encode(value, options)].join(\"\")];\n        }\n        return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n      };\n    }\n    default:\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, encode(key, options)];\n        }\n        return [...result, [encode(key, options), \"=\", encode(value, options)].join(\"\")];\n      };\n  }\n}\nfunction parserForArrayFormat(options) {\n  let result;\n  switch (options.arrayFormat) {\n    case \"index\":\n      return (key, value, accumulator) => {\n        result = /\\[(\\d*)\\]$/.exec(key);\n        key = key.replace(/\\[\\d*\\]$/, \"\");\n        if (!result) {\n          accumulator[key] = value;\n          return;\n        }\n        if (accumulator[key] === void 0) {\n          accumulator[key] = {};\n        }\n        accumulator[key][result[1]] = value;\n      };\n    case \"bracket\":\n      return (key, value, accumulator) => {\n        result = /(\\[\\])$/.exec(key);\n        key = key.replace(/\\[\\]$/, \"\");\n        if (!result) {\n          accumulator[key] = value;\n          return;\n        }\n        if (accumulator[key] === void 0) {\n          accumulator[key] = [value];\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], value);\n      };\n    case \"colon-list-separator\":\n      return (key, value, accumulator) => {\n        result = /(:list)$/.exec(key);\n        key = key.replace(/:list$/, \"\");\n        if (!result) {\n          accumulator[key] = value;\n          return;\n        }\n        if (accumulator[key] === void 0) {\n          accumulator[key] = [value];\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], value);\n      };\n    case \"comma\":\n    case \"separator\":\n      return (key, value, accumulator) => {\n        const isArray = typeof value === \"string\" && value.includes(options.arrayFormatSeparator);\n        const isEncodedArray = typeof value === \"string\" && !isArray && decode2(value, options).includes(options.arrayFormatSeparator);\n        value = isEncodedArray ? decode2(value, options) : value;\n        const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map((item) => decode2(item, options)) : value === null ? value : decode2(value, options);\n        accumulator[key] = newValue;\n      };\n    case \"bracket-separator\":\n      return (key, value, accumulator) => {\n        const isArray = /(\\[\\])$/.test(key);\n        key = key.replace(/\\[\\]$/, \"\");\n        if (!isArray) {\n          accumulator[key] = value ? decode2(value, options) : value;\n          return;\n        }\n        const arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map((item) => decode2(item, options));\n        if (accumulator[key] === void 0) {\n          accumulator[key] = arrayValue;\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], arrayValue);\n      };\n    default:\n      return (key, value, accumulator) => {\n        if (accumulator[key] === void 0) {\n          accumulator[key] = value;\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], value);\n      };\n  }\n}\nfunction validateArrayFormatSeparator(value) {\n  if (typeof value !== \"string\" || value.length !== 1) {\n    throw new TypeError(\"arrayFormatSeparator must be single character string\");\n  }\n}\nfunction encode(value, options) {\n  if (options.encode) {\n    return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n  }\n  return value;\n}\nfunction decode2(value, options) {\n  if (options.decode) {\n    return decodeComponent(value);\n  }\n  return value;\n}\nfunction keysSorter(input) {\n  if (Array.isArray(input)) {\n    return input.sort();\n  }\n  if (typeof input === \"object\") {\n    return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map((key) => input[key]);\n  }\n  return input;\n}\nfunction removeHash(input) {\n  const hashStart = input.indexOf(\"#\");\n  if (hashStart !== -1) {\n    input = input.slice(0, hashStart);\n  }\n  return input;\n}\nfunction getHash(url) {\n  let hash = \"\";\n  const hashStart = url.indexOf(\"#\");\n  if (hashStart !== -1) {\n    hash = url.slice(hashStart);\n  }\n  return hash;\n}\nfunction extract(input) {\n  input = removeHash(input);\n  const queryStart = input.indexOf(\"?\");\n  if (queryStart === -1) {\n    return \"\";\n  }\n  return input.slice(queryStart + 1);\n}\nfunction parseValue(value, options) {\n  if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === \"string\" && value.trim() !== \"\")) {\n    value = Number(value);\n  } else if (options.parseBooleans && value !== null && (value.toLowerCase() === \"true\" || value.toLowerCase() === \"false\")) {\n    value = value.toLowerCase() === \"true\";\n  }\n  return value;\n}\nfunction parse(query2, options) {\n  options = Object.assign({\n    decode: true,\n    sort: true,\n    arrayFormat: \"none\",\n    arrayFormatSeparator: \",\",\n    parseNumbers: false,\n    parseBooleans: false\n  }, options);\n  validateArrayFormatSeparator(options.arrayFormatSeparator);\n  const formatter = parserForArrayFormat(options);\n  const ret = /* @__PURE__ */ Object.create(null);\n  if (typeof query2 !== \"string\") {\n    return ret;\n  }\n  query2 = query2.trim().replace(/^[?#&]/, \"\");\n  if (!query2) {\n    return ret;\n  }\n  for (const param of query2.split(\"&\")) {\n    if (param === \"\") {\n      continue;\n    }\n    let [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, \" \") : param, \"=\");\n    value = value === void 0 ? null : [\"comma\", \"separator\", \"bracket-separator\"].includes(options.arrayFormat) ? value : decode2(value, options);\n    formatter(decode2(key, options), value, ret);\n  }\n  for (const key of Object.keys(ret)) {\n    const value = ret[key];\n    if (typeof value === \"object\" && value !== null) {\n      for (const k3 of Object.keys(value)) {\n        value[k3] = parseValue(value[k3], options);\n      }\n    } else {\n      ret[key] = parseValue(value, options);\n    }\n  }\n  if (options.sort === false) {\n    return ret;\n  }\n  return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n    const value = ret[key];\n    if (Boolean(value) && typeof value === \"object\" && !Array.isArray(value)) {\n      result[key] = keysSorter(value);\n    } else {\n      result[key] = value;\n    }\n    return result;\n  }, /* @__PURE__ */ Object.create(null));\n}\nfunction ShaderGradient(passedProps) {\n  const _a3 = __spreadValues(__spreadValues({}, presets.halo.props), passedProps), { control, urlString, onCameraUpdate } = _a3, rest = __objRest(_a3, [\"control\", \"urlString\", \"onCameraUpdate\"]);\n  let props = rest;\n  if (control === \"query\")\n    props = __export110(formatUrlString(urlString), {\n      parseNumbers: true,\n      parseBooleans: true,\n      arrayFormat: \"index\"\n    });\n  const _b2 = props, { lightType, envPreset, brightness, grain, toggleAxis } = _b2, others = __objRest(_b2, [\"lightType\", \"envPreset\", \"brightness\", \"grain\", \"toggleAxis\"]);\n  return /* @__PURE__ */ jsxs7(Fragment9, { children: [\n    /* @__PURE__ */ jsx14(Mesh2, __spreadValues({}, props)),\n    /* @__PURE__ */ jsx14(\n      Lights,\n      {\n        lightType,\n        brightness,\n        envPreset\n      }\n    ),\n    grain !== \"off\" && /* @__PURE__ */ jsx14(PostProcessing, {}),\n    toggleAxis && /* @__PURE__ */ jsx14(Axis2, {}),\n    /* @__PURE__ */ jsx14(Controls2, __spreadProps(__spreadValues({}, props), { onCameraUpdate }))\n  ] });\n}\nvar filter_obj_exports, exports4, module4, filter_obj_default, split_on_first_exports, exports22, module22, split_on_first_default, decode_uri_component_exports, exports32, module32, token, singleMatcher, multiMatcher, decode_uri_component_default, strict_uri_encode_exports, exports42, module42, strict_uri_encode_default, global2, exports5, module5, strictUriEncode, decodeComponent, splitOnFirst, filterObject, isNullOrUndefined, encodeFragmentIdentifier, __export03, __export110, __export23, __export33, __export43, __export53, __export63, query_string_default;\nvar init_chunk_6JCWLHW2 = __esm({\n  \"../shadergradient/dist/chunk-6JCWLHW2.mjs\"() {\n    init_chunk_EAK6WCTL();\n    init_chunk_QWMUKHAS();\n    init_chunk_YNCZYV33();\n    init_chunk_IGT2XWIL();\n    init_chunk_E7I5VRNJ();\n    init_chunk_ULEV7Y7T();\n    init_chunk_PR7ME7PU();\n    init_chunk_5BEQP2BQ();\n    filter_obj_exports = {};\n    __export(filter_obj_exports, {\n      default: () => filter_obj_default\n    });\n    exports4 = {};\n    module4 = {\n      get exports() {\n        return exports4;\n      },\n      set exports(value) {\n        exports4 = value;\n      }\n    };\n    module4.exports = function(obj, predicate) {\n      var ret = {};\n      var keys = Object.keys(obj);\n      var isArr = Array.isArray(predicate);\n      for (var i2 = 0; i2 < keys.length; i2++) {\n        var key = keys[i2];\n        var val = obj[key];\n        if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n          ret[key] = val;\n        }\n      }\n      return ret;\n    };\n    filter_obj_default = module4.exports;\n    split_on_first_exports = {};\n    __export(split_on_first_exports, {\n      default: () => split_on_first_default\n    });\n    exports22 = {};\n    module22 = {\n      get exports() {\n        return exports22;\n      },\n      set exports(value) {\n        exports22 = value;\n      }\n    };\n    module22.exports = (string, separator) => {\n      if (!(typeof string === \"string\" && typeof separator === \"string\")) {\n        throw new TypeError(\"Expected the arguments to be of type `string`\");\n      }\n      if (separator === \"\") {\n        return [string];\n      }\n      const separatorIndex = string.indexOf(separator);\n      if (separatorIndex === -1) {\n        return [string];\n      }\n      return [\n        string.slice(0, separatorIndex),\n        string.slice(separatorIndex + separator.length)\n      ];\n    };\n    split_on_first_default = module22.exports;\n    decode_uri_component_exports = {};\n    __export(decode_uri_component_exports, {\n      default: () => decode_uri_component_default\n    });\n    exports32 = {};\n    module32 = {\n      get exports() {\n        return exports32;\n      },\n      set exports(value) {\n        exports32 = value;\n      }\n    };\n    token = \"%[a-f0-9]{2}\";\n    singleMatcher = new RegExp(\"(\" + token + \")|([^%]+?)\", \"gi\");\n    multiMatcher = new RegExp(\"(\" + token + \")+\", \"gi\");\n    module32.exports = function(encodedURI) {\n      if (typeof encodedURI !== \"string\") {\n        throw new TypeError(\"Expected `encodedURI` to be of type `string`, got `\" + typeof encodedURI + \"`\");\n      }\n      try {\n        encodedURI = encodedURI.replace(/\\+/g, \" \");\n        return decodeURIComponent(encodedURI);\n      } catch (err) {\n        return customDecodeURIComponent(encodedURI);\n      }\n    };\n    decode_uri_component_default = module32.exports;\n    strict_uri_encode_exports = {};\n    __export(strict_uri_encode_exports, {\n      default: () => strict_uri_encode_default\n    });\n    exports42 = {};\n    module42 = {\n      get exports() {\n        return exports42;\n      },\n      set exports(value) {\n        exports42 = value;\n      }\n    };\n    module42.exports = (str) => encodeURIComponent(str).replace(/[!'()*]/g, (x) => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n    strict_uri_encode_default = module42.exports;\n    global2 = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global2 !== \"undefined\" && global2 || typeof globalThis !== \"undefined\" && globalThis || {};\n    exports5 = {};\n    module5 = {\n      get exports() {\n        return exports5;\n      },\n      set exports(value) {\n        exports5 = value;\n      }\n    };\n    strictUriEncode = __cjs_default__2(typeof strict_uri_encode_exports !== \"undefined\" ? strict_uri_encode_exports : {});\n    decodeComponent = __cjs_default__2(typeof decode_uri_component_exports !== \"undefined\" ? decode_uri_component_exports : {});\n    splitOnFirst = __cjs_default__2(typeof split_on_first_exports !== \"undefined\" ? split_on_first_exports : {});\n    filterObject = __cjs_default__2(typeof filter_obj_exports !== \"undefined\" ? filter_obj_exports : {});\n    isNullOrUndefined = (value) => value === null || value === void 0;\n    encodeFragmentIdentifier = Symbol(\"encodeFragmentIdentifier\");\n    exports5.extract = extract;\n    exports5.parse = parse;\n    exports5.stringify = (object, options) => {\n      if (!object) {\n        return \"\";\n      }\n      options = Object.assign({\n        encode: true,\n        strict: true,\n        arrayFormat: \"none\",\n        arrayFormatSeparator: \",\"\n      }, options);\n      validateArrayFormatSeparator(options.arrayFormatSeparator);\n      const shouldFilter = (key) => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === \"\";\n      const formatter = encoderForArrayFormat(options);\n      const objectCopy = {};\n      for (const key of Object.keys(object)) {\n        if (!shouldFilter(key)) {\n          objectCopy[key] = object[key];\n        }\n      }\n      const keys = Object.keys(objectCopy);\n      if (options.sort !== false) {\n        keys.sort(options.sort);\n      }\n      return keys.map((key) => {\n        const value = object[key];\n        if (value === void 0) {\n          return \"\";\n        }\n        if (value === null) {\n          return encode(key, options);\n        }\n        if (Array.isArray(value)) {\n          if (value.length === 0 && options.arrayFormat === \"bracket-separator\") {\n            return encode(key, options) + \"[]\";\n          }\n          return value.reduce(formatter(key), []).join(\"&\");\n        }\n        return encode(key, options) + \"=\" + encode(value, options);\n      }).filter((x) => x.length > 0).join(\"&\");\n    };\n    exports5.parseUrl = (url, options) => {\n      options = Object.assign({\n        decode: true\n      }, options);\n      const [url_, hash] = splitOnFirst(url, \"#\");\n      return Object.assign(\n        {\n          url: url_.split(\"?\")[0] || \"\",\n          query: parse(extract(url), options)\n        },\n        options && options.parseFragmentIdentifier && hash ? { fragmentIdentifier: decode2(hash, options) } : {}\n      );\n    };\n    exports5.stringifyUrl = (object, options) => {\n      options = Object.assign({\n        encode: true,\n        strict: true,\n        [encodeFragmentIdentifier]: true\n      }, options);\n      const url = removeHash(object.url).split(\"?\")[0] || \"\";\n      const queryFromUrl = exports5.extract(object.url);\n      const parsedQueryFromUrl = exports5.parse(queryFromUrl, { sort: false });\n      const query2 = Object.assign(parsedQueryFromUrl, object.query);\n      let queryString = exports5.stringify(query2, options);\n      if (queryString) {\n        queryString = `?${queryString}`;\n      }\n      let hash = getHash(object.url);\n      if (object.fragmentIdentifier) {\n        hash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n      }\n      return `${url}${queryString}${hash}`;\n    };\n    exports5.pick = (input, filter, options) => {\n      options = Object.assign({\n        parseFragmentIdentifier: true,\n        [encodeFragmentIdentifier]: false\n      }, options);\n      const { url, query: query2, fragmentIdentifier } = exports5.parseUrl(input, options);\n      return exports5.stringifyUrl({\n        url,\n        query: filterObject(query2, filter),\n        fragmentIdentifier\n      }, options);\n    };\n    exports5.exclude = (input, filter, options) => {\n      const exclusionFilter = Array.isArray(filter) ? (key) => !filter.includes(key) : (key, value) => !filter(key, value);\n      return exports5.pick(input, exclusionFilter, options);\n    };\n    if (Object.isExtensible(module5.exports) && Object.keys(module5.exports).length === 7) {\n      __export03 = module5.exports[\"extract\"];\n      __export110 = module5.exports[\"parse\"];\n      __export23 = module5.exports[\"stringify\"];\n      __export33 = module5.exports[\"parseUrl\"];\n      __export43 = module5.exports[\"stringifyUrl\"];\n      __export53 = module5.exports[\"pick\"];\n      __export63 = module5.exports[\"exclude\"];\n    }\n    query_string_default = module5.exports;\n  }\n});\n\n// ../shadergradient/dist/index.mjs\nvar init_dist = __esm({\n  \"../shadergradient/dist/index.mjs\"() {\n    init_chunk_RJXQ2OEQ();\n    init_chunk_6JCWLHW2();\n    init_chunk_ULEV7Y7T();\n    init_chunk_OVVMMFGI();\n    init_chunk_PR7ME7PU();\n  }\n});\n\n// src/components/Shared/ShaderGradientStateless/store/presetURLs.ts\nfunction convertPresets(presets2) {\n  const PRESETS2 = Object.entries(presets2).map(([key, value]) => {\n    const { title, color, props } = value;\n    const urlParams = new URLSearchParams(\n      Object.entries(props).reduce((acc, [propKey, propValue]) => {\n        acc[propKey] = typeof propValue === \"boolean\" ? String(propValue) : String(propValue);\n        return acc;\n      }, {})\n    ).toString();\n    return {\n      title,\n      color,\n      url: `?${urlParams}`\n    };\n  });\n  return PRESETS2;\n}\nvar initialActivePreset2, PRESETS, DEFAUlT_PRESET;\nvar init_presetURLs = __esm({\n  \"src/components/Shared/ShaderGradientStateless/store/presetURLs.ts\"() {\n    init_dist();\n    initialActivePreset2 = 0;\n    PRESETS = convertPresets(presets);\n    DEFAUlT_PRESET = PRESETS[0].url;\n  }\n});\n\nexport {\n  propertyControls,\n  formatUrlString,\n  formatFramerProps,\n  mergeCanvasProps,\n  ShaderGradientCanvas,\n  ShaderGradient,\n  init_dist,\n  initialActivePreset2 as initialActivePreset,\n  PRESETS,\n  DEFAUlT_PRESET,\n  init_presetURLs\n};\n/*! Bundled license information:\n\nthree/build/three.module.js:\n  (**\n   * @license\n   * Copyright 2010-2024 Three.js Authors\n   * SPDX-License-Identifier: MIT\n   *)\n*/\n/*! Bundled license information:\n\nscheduler/cjs/scheduler.development.js:\n  (**\n   * @license React\n   * scheduler.development.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\nscheduler/cjs/scheduler.production.min.js:\n  (**\n   * @license React\n   * scheduler.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/*! Bundled license information:\n\ncamera-controls/dist/camera-controls.module.js:\n  (*!\n   * camera-controls\n   * https://github.com/yomotsu/camera-controls\n   * (c) 2017 @yomotsu\n   * Released under the MIT License.\n   *)\n*/\n","import {\n  DEFAUlT_PRESET,\n  init_presetURLs,\n  initialActivePreset\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  combine,\n  create,\n  init_esm,\n  init_middleware\n} from \"./chunk-NP5XZW6Z.mjs\";\nimport {\n  __esm,\n  __export,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// ../../node_modules/.pnpm/filter-obj@1.1.0/node_modules/filter-obj/index.js\nvar filter_obj_exports = {};\n__export(filter_obj_exports, {\n  default: () => filter_obj_default\n});\nvar exports, module, filter_obj_default;\nvar init_filter_obj = __esm({\n  \"../../node_modules/.pnpm/filter-obj@1.1.0/node_modules/filter-obj/index.js\"() {\n    exports = {};\n    module = {\n      get exports() {\n        return exports;\n      },\n      set exports(value) {\n        exports = value;\n      }\n    };\n    module.exports = function(obj, predicate) {\n      var ret = {};\n      var keys = Object.keys(obj);\n      var isArr = Array.isArray(predicate);\n      for (var i = 0; i < keys.length; i++) {\n        var key = keys[i];\n        var val = obj[key];\n        if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n          ret[key] = val;\n        }\n      }\n      return ret;\n    };\n    filter_obj_default = module.exports;\n  }\n});\n\n// ../../node_modules/.pnpm/split-on-first@1.1.0/node_modules/split-on-first/index.js\nvar split_on_first_exports = {};\n__export(split_on_first_exports, {\n  default: () => split_on_first_default\n});\nvar exports2, module2, split_on_first_default;\nvar init_split_on_first = __esm({\n  \"../../node_modules/.pnpm/split-on-first@1.1.0/node_modules/split-on-first/index.js\"() {\n    exports2 = {};\n    module2 = {\n      get exports() {\n        return exports2;\n      },\n      set exports(value) {\n        exports2 = value;\n      }\n    };\n    module2.exports = (string, separator) => {\n      if (!(typeof string === \"string\" && typeof separator === \"string\")) {\n        throw new TypeError(\"Expected the arguments to be of type `string`\");\n      }\n      if (separator === \"\") {\n        return [string];\n      }\n      const separatorIndex = string.indexOf(separator);\n      if (separatorIndex === -1) {\n        return [string];\n      }\n      return [\n        string.slice(0, separatorIndex),\n        string.slice(separatorIndex + separator.length)\n      ];\n    };\n    split_on_first_default = module2.exports;\n  }\n});\n\n// ../../node_modules/.pnpm/decode-uri-component@0.2.2/node_modules/decode-uri-component/index.js\nvar decode_uri_component_exports = {};\n__export(decode_uri_component_exports, {\n  default: () => decode_uri_component_default\n});\nfunction decodeComponents(components, split) {\n  try {\n    return [decodeURIComponent(components.join(\"\"))];\n  } catch (err) {\n  }\n  if (components.length === 1) {\n    return components;\n  }\n  split = split || 1;\n  var left = components.slice(0, split);\n  var right = components.slice(split);\n  return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input);\n  } catch (err) {\n    var tokens = input.match(singleMatcher) || [];\n    for (var i = 1; i < tokens.length; i++) {\n      input = decodeComponents(tokens, i).join(\"\");\n      tokens = input.match(singleMatcher) || [];\n    }\n    return input;\n  }\n}\nfunction customDecodeURIComponent(input) {\n  var replaceMap = {\n    \"%FE%FF\": \"\\uFFFD\\uFFFD\",\n    \"%FF%FE\": \"\\uFFFD\\uFFFD\"\n  };\n  var match = multiMatcher.exec(input);\n  while (match) {\n    try {\n      replaceMap[match[0]] = decodeURIComponent(match[0]);\n    } catch (err) {\n      var result = decode(match[0]);\n      if (result !== match[0]) {\n        replaceMap[match[0]] = result;\n      }\n    }\n    match = multiMatcher.exec(input);\n  }\n  replaceMap[\"%C2\"] = \"\\uFFFD\";\n  var entries = Object.keys(replaceMap);\n  for (var i = 0; i < entries.length; i++) {\n    var key = entries[i];\n    input = input.replace(new RegExp(key, \"g\"), replaceMap[key]);\n  }\n  return input;\n}\nvar exports3, module3, token, singleMatcher, multiMatcher, decode_uri_component_default;\nvar init_decode_uri_component = __esm({\n  \"../../node_modules/.pnpm/decode-uri-component@0.2.2/node_modules/decode-uri-component/index.js\"() {\n    exports3 = {};\n    module3 = {\n      get exports() {\n        return exports3;\n      },\n      set exports(value) {\n        exports3 = value;\n      }\n    };\n    token = \"%[a-f0-9]{2}\";\n    singleMatcher = new RegExp(\"(\" + token + \")|([^%]+?)\", \"gi\");\n    multiMatcher = new RegExp(\"(\" + token + \")+\", \"gi\");\n    module3.exports = function(encodedURI) {\n      if (typeof encodedURI !== \"string\") {\n        throw new TypeError(\"Expected `encodedURI` to be of type `string`, got `\" + typeof encodedURI + \"`\");\n      }\n      try {\n        encodedURI = encodedURI.replace(/\\+/g, \" \");\n        return decodeURIComponent(encodedURI);\n      } catch (err) {\n        return customDecodeURIComponent(encodedURI);\n      }\n    };\n    decode_uri_component_default = module3.exports;\n  }\n});\n\n// ../../node_modules/.pnpm/strict-uri-encode@2.0.0/node_modules/strict-uri-encode/index.js\nvar strict_uri_encode_exports = {};\n__export(strict_uri_encode_exports, {\n  default: () => strict_uri_encode_default\n});\nvar exports4, module4, strict_uri_encode_default;\nvar init_strict_uri_encode = __esm({\n  \"../../node_modules/.pnpm/strict-uri-encode@2.0.0/node_modules/strict-uri-encode/index.js\"() {\n    exports4 = {};\n    module4 = {\n      get exports() {\n        return exports4;\n      },\n      set exports(value) {\n        exports4 = value;\n      }\n    };\n    module4.exports = (str) => encodeURIComponent(str).replace(/[!'()*]/g, (x) => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n    strict_uri_encode_default = module4.exports;\n  }\n});\n\n// ../../node_modules/.pnpm/query-string@7.1.3/node_modules/query-string/index.js\nfunction __cjs_default__(requiredModule) {\n  var Object2 = (typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global !== \"undefined\" && global || typeof globalThis !== \"undefined\" && globalThis || {}).Object;\n  var isEsModule = false;\n  var specifiers = Object2.create(null);\n  var hasNamedExports = false;\n  var hasDefaultExport = false;\n  Object2.defineProperty(specifiers, \"__esModule\", {\n    value: true,\n    enumerable: false,\n    configurable: true\n  });\n  if (requiredModule) {\n    var names = Object2.getOwnPropertyNames(requiredModule);\n    ;\n    names.forEach(function(k) {\n      if (k === \"default\") {\n        hasDefaultExport = true;\n      } else if (!hasNamedExports && k != \"__esModule\") {\n        try {\n          hasNamedExports = requiredModule[k] != null;\n        } catch (err) {\n        }\n      }\n      Object2.defineProperty(specifiers, k, {\n        get: function() {\n          return requiredModule[k];\n        },\n        enumerable: true,\n        configurable: false\n      });\n    });\n    if (Object2.getOwnPropertySymbols) {\n      var symbols = Object2.getOwnPropertySymbols(requiredModule);\n      symbols.forEach(function(k) {\n        Object2.defineProperty(specifiers, k, {\n          get: function() {\n            return requiredModule[k];\n          },\n          enumerable: false,\n          configurable: false\n        });\n      });\n    }\n    Object2.preventExtensions(specifiers);\n    Object2.seal(specifiers);\n    if (Object2.freeze) {\n      Object2.freeze(specifiers);\n    }\n  }\n  if (hasNamedExports) {\n    return specifiers;\n  }\n  if (hasDefaultExport) {\n    if (Object2.isExtensible(specifiers.default) && !(\"default\" in specifiers.default)) {\n      Object2.defineProperty(specifiers.default, \"default\", {\n        value: specifiers.default,\n        configurable: false,\n        enumerable: false\n      });\n    }\n    return specifiers.default;\n  }\n  return specifiers;\n}\nfunction encoderForArrayFormat(options) {\n  switch (options.arrayFormat) {\n    case \"index\":\n      return (key) => (result, value) => {\n        const index = result.length;\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, [encode(key, options), \"[\", index, \"]\"].join(\"\")];\n        }\n        return [\n          ...result,\n          [encode(key, options), \"[\", encode(index, options), \"]=\", encode(value, options)].join(\"\")\n        ];\n      };\n    case \"bracket\":\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, [encode(key, options), \"[]\"].join(\"\")];\n        }\n        return [...result, [encode(key, options), \"[]=\", encode(value, options)].join(\"\")];\n      };\n    case \"colon-list-separator\":\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, [encode(key, options), \":list=\"].join(\"\")];\n        }\n        return [...result, [encode(key, options), \":list=\", encode(value, options)].join(\"\")];\n      };\n    case \"comma\":\n    case \"separator\":\n    case \"bracket-separator\": {\n      const keyValueSep = options.arrayFormat === \"bracket-separator\" ? \"[]=\" : \"=\";\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        value = value === null ? \"\" : value;\n        if (result.length === 0) {\n          return [[encode(key, options), keyValueSep, encode(value, options)].join(\"\")];\n        }\n        return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n      };\n    }\n    default:\n      return (key) => (result, value) => {\n        if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n          return result;\n        }\n        if (value === null) {\n          return [...result, encode(key, options)];\n        }\n        return [...result, [encode(key, options), \"=\", encode(value, options)].join(\"\")];\n      };\n  }\n}\nfunction parserForArrayFormat(options) {\n  let result;\n  switch (options.arrayFormat) {\n    case \"index\":\n      return (key, value, accumulator) => {\n        result = /\\[(\\d*)\\]$/.exec(key);\n        key = key.replace(/\\[\\d*\\]$/, \"\");\n        if (!result) {\n          accumulator[key] = value;\n          return;\n        }\n        if (accumulator[key] === void 0) {\n          accumulator[key] = {};\n        }\n        accumulator[key][result[1]] = value;\n      };\n    case \"bracket\":\n      return (key, value, accumulator) => {\n        result = /(\\[\\])$/.exec(key);\n        key = key.replace(/\\[\\]$/, \"\");\n        if (!result) {\n          accumulator[key] = value;\n          return;\n        }\n        if (accumulator[key] === void 0) {\n          accumulator[key] = [value];\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], value);\n      };\n    case \"colon-list-separator\":\n      return (key, value, accumulator) => {\n        result = /(:list)$/.exec(key);\n        key = key.replace(/:list$/, \"\");\n        if (!result) {\n          accumulator[key] = value;\n          return;\n        }\n        if (accumulator[key] === void 0) {\n          accumulator[key] = [value];\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], value);\n      };\n    case \"comma\":\n    case \"separator\":\n      return (key, value, accumulator) => {\n        const isArray = typeof value === \"string\" && value.includes(options.arrayFormatSeparator);\n        const isEncodedArray = typeof value === \"string\" && !isArray && decode2(value, options).includes(options.arrayFormatSeparator);\n        value = isEncodedArray ? decode2(value, options) : value;\n        const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map((item) => decode2(item, options)) : value === null ? value : decode2(value, options);\n        accumulator[key] = newValue;\n      };\n    case \"bracket-separator\":\n      return (key, value, accumulator) => {\n        const isArray = /(\\[\\])$/.test(key);\n        key = key.replace(/\\[\\]$/, \"\");\n        if (!isArray) {\n          accumulator[key] = value ? decode2(value, options) : value;\n          return;\n        }\n        const arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map((item) => decode2(item, options));\n        if (accumulator[key] === void 0) {\n          accumulator[key] = arrayValue;\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], arrayValue);\n      };\n    default:\n      return (key, value, accumulator) => {\n        if (accumulator[key] === void 0) {\n          accumulator[key] = value;\n          return;\n        }\n        accumulator[key] = [].concat(accumulator[key], value);\n      };\n  }\n}\nfunction validateArrayFormatSeparator(value) {\n  if (typeof value !== \"string\" || value.length !== 1) {\n    throw new TypeError(\"arrayFormatSeparator must be single character string\");\n  }\n}\nfunction encode(value, options) {\n  if (options.encode) {\n    return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n  }\n  return value;\n}\nfunction decode2(value, options) {\n  if (options.decode) {\n    return decodeComponent(value);\n  }\n  return value;\n}\nfunction keysSorter(input) {\n  if (Array.isArray(input)) {\n    return input.sort();\n  }\n  if (typeof input === \"object\") {\n    return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map((key) => input[key]);\n  }\n  return input;\n}\nfunction removeHash(input) {\n  const hashStart = input.indexOf(\"#\");\n  if (hashStart !== -1) {\n    input = input.slice(0, hashStart);\n  }\n  return input;\n}\nfunction getHash(url) {\n  let hash = \"\";\n  const hashStart = url.indexOf(\"#\");\n  if (hashStart !== -1) {\n    hash = url.slice(hashStart);\n  }\n  return hash;\n}\nfunction extract(input) {\n  input = removeHash(input);\n  const queryStart = input.indexOf(\"?\");\n  if (queryStart === -1) {\n    return \"\";\n  }\n  return input.slice(queryStart + 1);\n}\nfunction parseValue(value, options) {\n  if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === \"string\" && value.trim() !== \"\")) {\n    value = Number(value);\n  } else if (options.parseBooleans && value !== null && (value.toLowerCase() === \"true\" || value.toLowerCase() === \"false\")) {\n    value = value.toLowerCase() === \"true\";\n  }\n  return value;\n}\nfunction parse(query, options) {\n  options = Object.assign({\n    decode: true,\n    sort: true,\n    arrayFormat: \"none\",\n    arrayFormatSeparator: \",\",\n    parseNumbers: false,\n    parseBooleans: false\n  }, options);\n  validateArrayFormatSeparator(options.arrayFormatSeparator);\n  const formatter = parserForArrayFormat(options);\n  const ret = /* @__PURE__ */ Object.create(null);\n  if (typeof query !== \"string\") {\n    return ret;\n  }\n  query = query.trim().replace(/^[?#&]/, \"\");\n  if (!query) {\n    return ret;\n  }\n  for (const param of query.split(\"&\")) {\n    if (param === \"\") {\n      continue;\n    }\n    let [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, \" \") : param, \"=\");\n    value = value === void 0 ? null : [\"comma\", \"separator\", \"bracket-separator\"].includes(options.arrayFormat) ? value : decode2(value, options);\n    formatter(decode2(key, options), value, ret);\n  }\n  for (const key of Object.keys(ret)) {\n    const value = ret[key];\n    if (typeof value === \"object\" && value !== null) {\n      for (const k of Object.keys(value)) {\n        value[k] = parseValue(value[k], options);\n      }\n    } else {\n      ret[key] = parseValue(value, options);\n    }\n  }\n  if (options.sort === false) {\n    return ret;\n  }\n  return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n    const value = ret[key];\n    if (Boolean(value) && typeof value === \"object\" && !Array.isArray(value)) {\n      result[key] = keysSorter(value);\n    } else {\n      result[key] = value;\n    }\n    return result;\n  }, /* @__PURE__ */ Object.create(null));\n}\nvar global, exports5, module5, strictUriEncode, decodeComponent, splitOnFirst, filterObject, isNullOrUndefined, encodeFragmentIdentifier, __export0, __export1, __export2, __export3, __export4, __export5, __export6, query_string_default;\nvar init_query_string = __esm({\n  \"../../node_modules/.pnpm/query-string@7.1.3/node_modules/query-string/index.js\"() {\n    init_filter_obj();\n    init_split_on_first();\n    init_decode_uri_component();\n    init_strict_uri_encode();\n    global = typeof window !== \"undefined\" && window || typeof self !== \"undefined\" && self || typeof global !== \"undefined\" && global || typeof globalThis !== \"undefined\" && globalThis || {};\n    exports5 = {};\n    module5 = {\n      get exports() {\n        return exports5;\n      },\n      set exports(value) {\n        exports5 = value;\n      }\n    };\n    strictUriEncode = __cjs_default__(typeof strict_uri_encode_exports !== \"undefined\" ? strict_uri_encode_exports : {});\n    decodeComponent = __cjs_default__(typeof decode_uri_component_exports !== \"undefined\" ? decode_uri_component_exports : {});\n    splitOnFirst = __cjs_default__(typeof split_on_first_exports !== \"undefined\" ? split_on_first_exports : {});\n    filterObject = __cjs_default__(typeof filter_obj_exports !== \"undefined\" ? filter_obj_exports : {});\n    isNullOrUndefined = (value) => value === null || value === void 0;\n    encodeFragmentIdentifier = Symbol(\"encodeFragmentIdentifier\");\n    exports5.extract = extract;\n    exports5.parse = parse;\n    exports5.stringify = (object, options) => {\n      if (!object) {\n        return \"\";\n      }\n      options = Object.assign({\n        encode: true,\n        strict: true,\n        arrayFormat: \"none\",\n        arrayFormatSeparator: \",\"\n      }, options);\n      validateArrayFormatSeparator(options.arrayFormatSeparator);\n      const shouldFilter = (key) => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === \"\";\n      const formatter = encoderForArrayFormat(options);\n      const objectCopy = {};\n      for (const key of Object.keys(object)) {\n        if (!shouldFilter(key)) {\n          objectCopy[key] = object[key];\n        }\n      }\n      const keys = Object.keys(objectCopy);\n      if (options.sort !== false) {\n        keys.sort(options.sort);\n      }\n      return keys.map((key) => {\n        const value = object[key];\n        if (value === void 0) {\n          return \"\";\n        }\n        if (value === null) {\n          return encode(key, options);\n        }\n        if (Array.isArray(value)) {\n          if (value.length === 0 && options.arrayFormat === \"bracket-separator\") {\n            return encode(key, options) + \"[]\";\n          }\n          return value.reduce(formatter(key), []).join(\"&\");\n        }\n        return encode(key, options) + \"=\" + encode(value, options);\n      }).filter((x) => x.length > 0).join(\"&\");\n    };\n    exports5.parseUrl = (url, options) => {\n      options = Object.assign({\n        decode: true\n      }, options);\n      const [url_, hash] = splitOnFirst(url, \"#\");\n      return Object.assign(\n        {\n          url: url_.split(\"?\")[0] || \"\",\n          query: parse(extract(url), options)\n        },\n        options && options.parseFragmentIdentifier && hash ? { fragmentIdentifier: decode2(hash, options) } : {}\n      );\n    };\n    exports5.stringifyUrl = (object, options) => {\n      options = Object.assign({\n        encode: true,\n        strict: true,\n        [encodeFragmentIdentifier]: true\n      }, options);\n      const url = removeHash(object.url).split(\"?\")[0] || \"\";\n      const queryFromUrl = exports5.extract(object.url);\n      const parsedQueryFromUrl = exports5.parse(queryFromUrl, { sort: false });\n      const query = Object.assign(parsedQueryFromUrl, object.query);\n      let queryString = exports5.stringify(query, options);\n      if (queryString) {\n        queryString = `?${queryString}`;\n      }\n      let hash = getHash(object.url);\n      if (object.fragmentIdentifier) {\n        hash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n      }\n      return `${url}${queryString}${hash}`;\n    };\n    exports5.pick = (input, filter, options) => {\n      options = Object.assign({\n        parseFragmentIdentifier: true,\n        [encodeFragmentIdentifier]: false\n      }, options);\n      const { url, query, fragmentIdentifier } = exports5.parseUrl(input, options);\n      return exports5.stringifyUrl({\n        url,\n        query: filterObject(query, filter),\n        fragmentIdentifier\n      }, options);\n    };\n    exports5.exclude = (input, filter, options) => {\n      const exclusionFilter = Array.isArray(filter) ? (key) => !filter.includes(key) : (key, value) => !filter(key, value);\n      return exports5.pick(input, exclusionFilter, options);\n    };\n    if (Object.isExtensible(module5.exports) && Object.keys(module5.exports).length === 7) {\n      __export0 = module5.exports[\"extract\"];\n      __export1 = module5.exports[\"parse\"];\n      __export2 = module5.exports[\"stringify\"];\n      __export3 = module5.exports[\"parseUrl\"];\n      __export4 = module5.exports[\"stringifyUrl\"];\n      __export5 = module5.exports[\"pick\"];\n      __export6 = module5.exports[\"exclude\"];\n    }\n    query_string_default = module5.exports;\n  }\n});\n\n// src/components/Shared/ShaderGradientStateless/store/store.ts\nfunction parseState(search = DEFAUlT_PRESET) {\n  return __export1(search, {\n    parseNumbers: true,\n    parseBooleans: true,\n    arrayFormat: \"index\"\n  });\n}\nfunction useFigma() {\n  const figma = useFigmaStore((state) => state.figma);\n  const setFigma = useFigmaStore((state) => state.setFigma);\n  return [figma, setFigma];\n}\nfunction useBillingInterval() {\n  const billingInterval = useBillingIntervalStore(\n    (state) => state.billingInterval\n  );\n  const setBillingInterval = useBillingIntervalStore(\n    (state) => state.setBillingInterval\n  );\n  return [billingInterval, setBillingInterval];\n}\nvar defaultState, useQueryStore, updateGradientState, useDomStore, useCursorStore, useUIStore, useFigmaStore, useBillingIntervalStore;\nvar init_store = __esm({\n  \"src/components/Shared/ShaderGradientStateless/store/store.ts\"() {\n    init_query_string();\n    init_esm();\n    init_middleware();\n    init_presetURLs();\n    defaultState = __spreadValues({}, parseState());\n    useQueryStore = create((set) => defaultState);\n    updateGradientState = (querystate) => {\n      const isString = typeof querystate === \"string\";\n      let state = querystate;\n      if (isString) state = parseState(querystate);\n      useQueryStore.setState(state, isString);\n    };\n    useDomStore = create(() => {\n      return { dom: null };\n    });\n    useCursorStore = create((set) => ({\n      hoverState: 0,\n      hover: \"default\",\n      updateHoverState: (payload) => set({ hoverState: payload })\n    }));\n    useUIStore = create(\n      combine(\n        { activePreset: initialActivePreset, mode: \"full\", loadingPercentage: 0 },\n        (set) => ({\n          setActivePreset: (by) => set((state) => ({ activePreset: by })),\n          setMode: (data) => set((state) => __spreadProps(__spreadValues({}, state), { mode: data })),\n          setLoadingPercentage: (data) => set((state) => __spreadProps(__spreadValues({}, state), { loadingPercentage: data }))\n        })\n      )\n    );\n    useFigmaStore = create((set) => ({\n      figma: { selection: 0, user: null },\n      setFigma: (payload) => set((prev) => ({ figma: __spreadValues(__spreadValues({}, prev.figma), payload) }))\n    }));\n    useBillingIntervalStore = create((set) => ({\n      billingInterval: \"year\",\n      setBillingInterval: (payload) => set((state) => ({ billingInterval: payload }))\n    }));\n  }\n});\n\nexport {\n  __export1,\n  __export4,\n  init_query_string,\n  useQueryStore,\n  updateGradientState,\n  useDomStore,\n  useCursorStore,\n  useUIStore,\n  useFigma,\n  useBillingIntervalStore,\n  useBillingInterval,\n  init_store\n};\n","import {\n  __export1,\n  __export4,\n  init_query_string,\n  init_store,\n  useQueryStore\n} from \"./chunk-UIXDPZLL.mjs\";\nimport {\n  __esm\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/store/useQueryState.ts\nimport { useCallback } from \"react\";\nfunction updateHistory(path) {\n  var _a;\n  window.history.pushState(\n    {\n      prevUrls: [\n        ...((_a = window.history.state) == null ? void 0 : _a.prevUrls) || [],\n        window.location.origin + path\n      ]\n    },\n    document.title,\n    path\n  );\n}\nvar useQueryState, useURLQueryState;\nvar init_useQueryState = __esm({\n  \"src/components/Shared/ShaderGradientStateless/store/useQueryState.ts\"() {\n    init_query_string();\n    init_store();\n    useQueryState = (propName, defaultValue = null) => {\n      const selector = useCallback(\n        (state) => typeof state[propName] !== \"undefined\" ? state[propName] : defaultValue,\n        [propName, defaultValue]\n      );\n      const globalValue = useQueryStore(selector);\n      const _setGlobalValue = useCallback(\n        (valueFun) => useQueryStore.setState({\n          [propName]: valueFun(useQueryStore.getState()[propName])\n        }),\n        [propName]\n      );\n      const setQueryValue = useCallback(\n        (newVal) => {\n          _setGlobalValue((currentState) => {\n            if (typeof newVal === \"function\") {\n              newVal = newVal(currentState || defaultValue);\n            }\n            if (Number.isFinite(newVal)) {\n              newVal = parseFloat(newVal.toFixed(2));\n            }\n            setTimeout(() => {\n              const query = useQueryStore.getState();\n              updateHistory(\n                __export4(\n                  // @ts-ignore\n                  { url: window.location.pathname, query },\n                  { skipNull: true, arrayFormat: \"index\" }\n                )\n              );\n            }, 0);\n            return newVal;\n          });\n        },\n        [_setGlobalValue]\n      );\n      return [globalValue, setQueryValue];\n    };\n    useURLQueryState = () => {\n      const setQueryValue = (search) => {\n        setTimeout(() => {\n          const query = useQueryStore.getState();\n          updateHistory(\n            __export4(\n              { url: window.location.pathname, query },\n              { skipNull: true, arrayFormat: \"index\" }\n            )\n          );\n        }, 0);\n        const state = __export1(search, {\n          parseNumbers: true,\n          parseBooleans: true,\n          arrayFormat: \"index\"\n        });\n        useQueryStore.setState(state);\n      };\n      return setQueryValue;\n    };\n  }\n});\n\nexport {\n  useQueryState,\n  useURLQueryState,\n  init_useQueryState\n};\n","import {\n  useURLQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  PRESETS\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  useUIOverrideStore,\n  useUIStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/Web/UI.tsx\nimport { useState, useEffect, useRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { createElement } from \"react\";\nfunction ArrowLeft(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const activePreset = useUIStore((state) => state.activePreset);\n    const setActivePreset = useUIStore((state) => state.setActivePreset);\n    const setQueryValue = useURLQueryState();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), { cursor: \"pointer\" }),\n        onClick: () => {\n          let presetNumber;\n          if (activePreset !== 0) {\n            presetNumber = activePreset - 1;\n          } else {\n            presetNumber = PRESETS.length - 1;\n          }\n          setActivePreset(presetNumber);\n          setQueryValue(PRESETS[presetNumber].url);\n        }\n      })\n    );\n  };\n}\nfunction ArrowRight(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const activePreset = useUIStore((state) => state.activePreset);\n    const setActivePreset = useUIStore((state) => state.setActivePreset);\n    const setQueryValue = useURLQueryState();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), { cursor: \"pointer\" }),\n        onClick: () => {\n          console.log(\"onClick\");\n          let presetNumber;\n          if (activePreset !== PRESETS.length - 1) {\n            presetNumber = activePreset + 1;\n          } else {\n            presetNumber = 0;\n          }\n          setActivePreset(presetNumber);\n          setQueryValue(PRESETS[presetNumber].url);\n        }\n      })\n    );\n  };\n}\nfunction InitCustomize(Component) {\n  return (props) => {\n    const initialPresetNumber = 0;\n    const setActivePreset = useUIStore((state) => state.setActivePreset);\n    const setQueryValue = useURLQueryState();\n    useEffect(() => {\n      setActivePreset(initialPresetNumber);\n      setQueryValue(PRESETS[initialPresetNumber].url);\n    }, []);\n    return /* @__PURE__ */ jsx(Component, __spreadValues({}, props));\n  };\n}\nfunction PresetIndex(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const activePreset = useUIStore((state) => state.activePreset);\n    return /* @__PURE__ */ createElement(Component, __spreadProps(__spreadValues({}, props), { key: activePreset, content: `0${activePreset}` }));\n  };\n}\nfunction PresetTitle(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const activePreset = useUIStore((state) => state.activePreset);\n    const presetTitle = PRESETS[activePreset].title;\n    return /* @__PURE__ */ createElement(Component, __spreadProps(__spreadValues({}, props), { key: activePreset, content: presetTitle }));\n  };\n}\nfunction withClickOutsideClosed(Component) {\n  return (props) => {\n    const ref = useRef(null);\n    const easyView = useUIStore((state) => state.easyView);\n    const [variant, setVariant] = useState(props.variant);\n    useEffect(() => {\n      const handleClickOutside = (event) => {\n        if (easyView) return;\n        if (ref.current && !ref.current.contains(event.target)) {\n          setVariant(\"Closed\");\n          setTimeout(() => {\n            setVariant(props.variant);\n          }, 500);\n        }\n      };\n      document.addEventListener(\"mousedown\", handleClickOutside);\n      return () => {\n        document.removeEventListener(\"mousedown\", handleClickOutside);\n      };\n    }, [easyView, props.variant]);\n    return /* @__PURE__ */ createElement(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        key: variant,\n        ref,\n        variant\n      })\n    );\n  };\n}\nvar getRandomInt = (max) => {\n  return Math.floor(Math.random() * max);\n};\nvar rgbToHex = (r, g, b) => \"#\" + [r, g, b].map((x) => {\n  const hex = x.toString(16);\n  return hex.length === 1 ? \"0\" + hex : hex;\n}).join(\"\");\nfunction randomGradient(Component) {\n  return (props) => {\n    const randomColor = useUIOverrideStore((state) => state.randomColor);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        color1: \"rgb(\" + randomColor[0][0] + \", \" + randomColor[0][1] + \", \" + randomColor[0][2] + \")\",\n        color2: \"rgb(\" + randomColor[1][0] + \", \" + randomColor[1][1] + \", \" + randomColor[1][2] + \")\",\n        color3: \"rgb(\" + randomColor[2][0] + \", \" + randomColor[2][1] + \", \" + randomColor[2][2] + \")\"\n      })\n    );\n  };\n}\nfunction randomText(Component) {\n  return (props) => {\n    const randomColor = useUIOverrideStore((state) => state.randomColor);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        text: `${rgbToHex(\n          randomColor[0][0],\n          randomColor[0][1],\n          randomColor[0][2]\n        )} - ${rgbToHex(\n          randomColor[1][0],\n          randomColor[1][1],\n          randomColor[1][2]\n        )} - ${rgbToHex(\n          randomColor[2][0],\n          randomColor[2][1],\n          randomColor[2][2]\n        )}`\n      })\n    );\n  };\n}\nfunction randomBtn(Component) {\n  return (props) => {\n    const setRandomColor = useUIOverrideStore((state) => state.setRandomColor);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        whileHover: { scale: 1.05 },\n        onClick: () => {\n          console.log(\"onClick\");\n          setRandomColor([\n            [getRandomInt(255), getRandomInt(255), getRandomInt(255)],\n            [getRandomInt(255), getRandomInt(255), getRandomInt(255)],\n            [getRandomInt(255), getRandomInt(255), getRandomInt(255)]\n          ]);\n        }\n      })\n    );\n  };\n}\nfunction time(Component) {\n  return (props) => {\n    const slider2 = useUIOverrideStore((state) => state.slider);\n    const [hour, setHour] = useState(7);\n    const [min, setMin] = useState(0);\n    const [totalMin, setTotalMin] = useState(0);\n    useEffect(() => {\n      setTotalMin(900 * slider2 / 100);\n      setHour(7 + Math.floor(totalMin / 60));\n      setMin(Math.floor(totalMin % 60));\n    }, [slider2]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        text: min < 10 ? `${hour}:0${min}` : `${hour}:${min}`\n      })\n    );\n  };\n}\nfunction slider(Component) {\n  return (props) => {\n    const setSlider = useUIOverrideStore((state) => state.setSlider);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onChange: (e) => {\n          setSlider(e);\n        }\n      })\n    );\n  };\n}\nvar toRGBArray = (rgbStr) => rgbStr == null ? void 0 : rgbStr.match(/\\d+/g).map(Number);\nfunction sliderSmartComp(Component) {\n  return (props) => {\n    const slider2 = useUIOverrideStore((state) => state.slider);\n    var initial1 = toRGBArray(props.initialColor1);\n    var initial2 = toRGBArray(props.initialColor2);\n    var initial3 = toRGBArray(props.initialColor3);\n    var switch1 = toRGBArray(props.switchColor1);\n    var switch2 = toRGBArray(props.switchColor2);\n    var switch3 = toRGBArray(props.switchColor3);\n    const init1 = \"rgb(\" + Math.round(initial1[0] - (initial1[0] - switch1[0]) * slider2 / 100) + \", \" + Math.round(initial1[1] - (initial1[1] - switch1[1]) * slider2 / 100) + \", \" + Math.round(initial1[2] - (initial1[2] - switch1[2]) * slider2 / 100) + \")\";\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        initialColor1: \"rgb(\" + Math.round(\n          initial1[0] - (initial1[0] - switch1[0]) * slider2 / 100\n        ) + \", \" + Math.round(\n          initial1[1] - (initial1[1] - switch1[1]) * slider2 / 100\n        ) + \", \" + Math.round(\n          initial1[2] - (initial1[2] - switch1[2]) * slider2 / 100\n        ) + \")\",\n        initialColor2: \"rgb(\" + Math.round(\n          initial2[0] - (initial2[0] - switch2[0]) * slider2 / 100\n        ) + \", \" + Math.round(\n          initial2[1] - (initial2[1] - switch2[1]) * slider2 / 100\n        ) + \", \" + Math.round(\n          initial2[2] - (initial2[2] - switch2[2]) * slider2 / 100\n        ) + \")\",\n        initialColor3: \"rgb(\" + Math.round(\n          initial3[0] - (initial3[0] - switch3[0]) * slider2 / 100\n        ) + \", \" + Math.round(\n          initial3[1] - (initial3[1] - switch3[1]) * slider2 / 100\n        ) + \", \" + Math.round(\n          initial3[2] - (initial3[2] - switch3[2]) * slider2 / 100\n        ) + \")\"\n      })\n    );\n  };\n}\nfunction toggleSmartComp(Component) {\n  return (props) => {\n    const toggle = useUIOverrideStore((state) => state.toggle);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { variant: toggle === true ? \"Switch\" : \"Initial\" }));\n  };\n}\nfunction textClipper(Component) {\n  return (props) => {\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: {\n          color: \"rgb(255,255,255)\",\n          background: \"#000000\",\n          mixBlendMode: \"multiply\"\n        }\n      })\n    );\n  };\n}\nfunction WebStatelessOverride(Component) {\n  return (props) => {\n    const easyView = useUIStore((state) => state.easyView);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        pointerEvents: easyView === true ? \"auto\" : \"none\"\n      })\n    );\n  };\n}\nfunction WebEasyViewControl(Component) {\n  return (props) => {\n    const easyView = useUIStore((state) => state.easyView);\n    const setEasyView = useUIStore((state) => state.setEasyView);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: easyView === true ? \"Clicked\" : \"Default\",\n        onClick: () => {\n          setEasyView(!easyView);\n        }\n      })\n    );\n  };\n}\nfunction WebEasyViewInfo(Component) {\n  return (props) => {\n    const easyView = useUIStore((state) => state.easyView);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: { display: easyView === true ? \"flex\" : \"none\" }\n      })\n    );\n  };\n}\n\nexport {\n  ArrowLeft,\n  ArrowRight,\n  InitCustomize,\n  PresetIndex,\n  PresetTitle,\n  withClickOutsideClosed,\n  randomGradient,\n  randomText,\n  randomBtn,\n  time,\n  slider,\n  sliderSmartComp,\n  toggleSmartComp,\n  textClipper,\n  WebStatelessOverride,\n  WebEasyViewControl,\n  WebEasyViewInfo\n};\n","// src/overrides/FigmaPlugin/consts.ts\nvar STRIPE_BUY_YEARLY_URL = \"https://buy.stripe.com/00g5kV0g553QcjC9AB\";\nvar STRIPE_BUY_MONTHLY_URL = \"https://buy.stripe.com/fZe5kVd2R53QcjC7su\";\nvar STRIPE_BILLING_URL = \"https://billing.stripe.com/p/login/aEU8Audql6LagDe9AA\";\n\nexport {\n  STRIPE_BUY_YEARLY_URL,\n  STRIPE_BUY_MONTHLY_URL,\n  STRIPE_BILLING_URL\n};\n","import {\n  useSupabaseStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __async,\n  __objRest\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/useDBTable.ts\nimport { useEffect, useState, useCallback } from \"react\";\nfunction useDBTable(table, channelName = \"any\", options = {}) {\n  const { filter, select = \"*\", limit, enabled = true } = options;\n  const supabase = useSupabaseStore((state) => state.supabase);\n  const [rows, setRows] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState(null);\n  const shouldFetch = enabled && (!filter || filter.value !== void 0 && filter.value !== null);\n  useEffect(() => {\n    if (!supabase) {\n      console.log(\"[useDBTable] supabase client not initialized yet\");\n      return;\n    }\n    if (!shouldFetch) {\n      console.log(\n        `[useDBTable] Skipping fetch for ${table} - filter value not ready:`,\n        filter == null ? void 0 : filter.value\n      );\n      return;\n    }\n    const fetchData = () => __async(this, null, function* () {\n      console.log(\n        `[useDBTable] Fetching data for table: ${table}`,\n        filter ? `with filter: ${filter.column}=${filter.value}` : \"\"\n      );\n      setLoading(true);\n      setError(null);\n      try {\n        let query = supabase.from(table).select(select).order(\"id\", { ascending: false });\n        if (filter) {\n          query = query.eq(filter.column, filter.value);\n        }\n        if (limit) {\n          query = query.limit(limit);\n        }\n        const { data, error: fetchError } = yield query;\n        if (fetchError) {\n          console.error(`[useDBTable] Error fetching ${table}:`, fetchError);\n          setError(fetchError);\n          setRows([]);\n        } else {\n          console.log(\n            `[useDBTable] Fetched ${(data == null ? void 0 : data.length) || 0} rows from ${table}`\n          );\n          setRows(data || []);\n        }\n      } catch (err) {\n        console.error(`[useDBTable] Unexpected error fetching ${table}:`, err);\n        setError(err);\n      } finally {\n        setLoading(false);\n      }\n    });\n    fetchData();\n  }, [\n    supabase,\n    table,\n    filter == null ? void 0 : filter.column,\n    filter == null ? void 0 : filter.value,\n    select,\n    limit,\n    shouldFetch\n  ]);\n  useEffect(() => {\n    if (!supabase || !shouldFetch) return;\n    const realtimeFilter = filter ? `${filter.column}=eq.${filter.value}` : void 0;\n    console.log(\n      `[useDBTable] Subscribing to channel: ${channelName} for table: ${table}`,\n      realtimeFilter ? `with filter: ${realtimeFilter}` : \"\"\n    );\n    const channel = supabase.channel(channelName).on(\n      \"postgres_changes\",\n      {\n        event: \"*\",\n        schema: \"public\",\n        table,\n        filter: realtimeFilter\n        // Apply filter to Realtime\n      },\n      (payload) => {\n        var _a;\n        console.log(\n          `[useDBTable] Realtime change received on ${table}:`,\n          payload.eventType\n        );\n        const eventType = payload.eventType;\n        switch (eventType) {\n          case \"INSERT\":\n            console.log(`[useDBTable] INSERT on ${table}:`, payload.new);\n            setRows((prev) => [payload.new, ...prev]);\n            break;\n          case \"UPDATE\":\n            console.log(`[useDBTable] UPDATE on ${table}:`, payload.new);\n            setRows(\n              (prev) => prev.map(\n                (row) => row.id === payload.new.id ? payload.new : row\n              )\n            );\n            break;\n          case \"DELETE\":\n            console.log(\n              `[useDBTable] DELETE on ${table}, id:`,\n              (_a = payload.old) == null ? void 0 : _a.id\n            );\n            setRows((prev) => prev.filter((row) => row.id !== payload.old.id));\n            break;\n        }\n      }\n    ).subscribe((status) => {\n      console.log(\n        `[useDBTable] Subscription status for ${channelName}:`,\n        status\n      );\n    });\n    return () => {\n      console.log(`[useDBTable] Unsubscribing from channel: ${channelName}`);\n      supabase.removeChannel(channel);\n    };\n  }, [supabase, table, channelName, filter == null ? void 0 : filter.column, filter == null ? void 0 : filter.value, shouldFetch]);\n  const updateRow = useCallback(\n    (updates) => __async(this, null, function* () {\n      if (!supabase) {\n        console.error(\"[useDBTable] Cannot update: supabase not initialized\");\n        return { error: new Error(\"Supabase not initialized\") };\n      }\n      console.log(`[useDBTable] Updating row in ${table}:`, updates);\n      const _a = updates, { id } = _a, data = __objRest(_a, [\"id\"]);\n      const { error: updateError, data: result } = yield supabase.from(table).update(data).eq(\"id\", id).select();\n      if (updateError) {\n        console.error(\n          `[useDBTable] Error updating row in ${table}:`,\n          updateError\n        );\n        return { error: updateError };\n      } else {\n        console.log(`[useDBTable] Row updated in ${table}:`, result);\n        return { data: result };\n      }\n    }),\n    [supabase, table]\n  );\n  const insertRow = useCallback(\n    (item) => __async(this, null, function* () {\n      if (!supabase) {\n        console.error(\"[useDBTable] Cannot insert: supabase not initialized\");\n        return { error: new Error(\"Supabase not initialized\") };\n      }\n      console.log(`[useDBTable] Inserting row into ${table}:`, item);\n      const { error: insertError, data: result } = yield supabase.from(table).insert(item).select();\n      if (insertError) {\n        console.error(\n          `[useDBTable] Error inserting row into ${table}:`,\n          insertError\n        );\n        return { error: insertError };\n      } else {\n        console.log(`[useDBTable] Row inserted into ${table}:`, result);\n        return { data: result };\n      }\n    }),\n    [supabase, table]\n  );\n  const deleteRow = useCallback(\n    (id) => __async(this, null, function* () {\n      if (!supabase) {\n        console.error(\"[useDBTable] Cannot delete: supabase not initialized\");\n        return { error: new Error(\"Supabase not initialized\") };\n      }\n      console.log(`[useDBTable] Deleting row from ${table}, id:`, id);\n      const { error: deleteError } = yield supabase.from(table).delete().eq(\"id\", id);\n      if (deleteError) {\n        console.error(\n          `[useDBTable] Error deleting row from ${table}:`,\n          deleteError\n        );\n        return { error: deleteError };\n      } else {\n        console.log(`[useDBTable] Row deleted from ${table}`);\n        return { success: true };\n      }\n    }),\n    [supabase, table]\n  );\n  return { rows, loading, error, insertRow, updateRow, deleteRow };\n}\nfunction useDBTableLegacy(table, channelName = \"any\", options = {}) {\n  const { rows, loading, insertRow, updateRow, deleteRow } = useDBTable(\n    table,\n    channelName,\n    options\n  );\n  return [rows, loading, insertRow, updateRow, deleteRow];\n}\n\nexport {\n  useDBTable,\n  useDBTableLegacy\n};\n","import {\n  useDBTable\n} from \"./chunk-UMQJMRW4.mjs\";\nimport {\n  useFigma,\n  useSupabaseStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __async\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/utils.ts\nimport { useEffect, useRef } from \"react\";\nfunction signUpToSupabaseAuth(supabase, email) {\n  return __async(this, null, function* () {\n    var _a, _b;\n    if (!supabase || !email) return;\n    try {\n      const { data, error } = yield supabase.auth.signUp({\n        email,\n        password: crypto.randomUUID()\n      });\n      if (error) {\n        if ((_a = error.message) == null ? void 0 : _a.includes(\"already registered\")) {\n          console.log(\n            \"[signUpToSupabaseAuth] User already registered in Auth:\",\n            email\n          );\n          return;\n        }\n        console.error(\"[signUpToSupabaseAuth] Error:\", error.message);\n        return;\n      }\n      console.log(\n        \"[signUpToSupabaseAuth] User signed up in Auth:\",\n        (_b = data == null ? void 0 : data.user) == null ? void 0 : _b.id\n      );\n    } catch (err) {\n      console.error(\"[signUpToSupabaseAuth] Unexpected error:\", err);\n    }\n  });\n}\nfunction useEnsureAuthSignUp() {\n  const [userDB] = useUserDB(\"auth-ensure-channel\");\n  const supabase = useSupabaseStore((state) => state.supabase);\n  const calledRef = useRef(false);\n  useEffect(() => {\n    if ((userDB == null ? void 0 : userDB.email) && supabase && !calledRef.current) {\n      calledRef.current = true;\n      signUpToSupabaseAuth(supabase, userDB.email);\n    }\n  }, [userDB == null ? void 0 : userDB.email, supabase]);\n}\nfunction useUserDB(channel = \"sg-figma-hook\") {\n  var _a;\n  const [figma] = useFigma();\n  const figma_user_id = (_a = figma.user) == null ? void 0 : _a.id;\n  console.log(\"[useUserDB] figma_user_id:\", figma_user_id);\n  const { rows, loading: dbLoading } = useDBTable(\"users\", channel, {\n    filter: { column: \"figma_user_id\", value: figma_user_id },\n    select: \"id, email, figma_user_id, trial_started_at, created_at\",\n    limit: 1,\n    enabled: !!figma_user_id\n    // Only query when figma_user_id exists\n  });\n  const foundUser = rows[0] || null;\n  console.log(\"[useUserDB] foundUser:\", foundUser);\n  return [foundUser, dbLoading];\n}\nfunction useSubscription(subId) {\n  const [userDB, userDBLoading] = useUserDB();\n  const userId = userDB == null ? void 0 : userDB.id;\n  console.log(\"[useSubscription] userId:\", userId);\n  const {\n    rows: subscriptionRows,\n    loading: dbLoading,\n    error\n  } = useDBTable(\"subscriptions\", subId, {\n    filter: { column: \"user_id\", value: userId },\n    // Using '*' to fetch all columns - adjust to specific columns after verifying table schema\n    select: \"*\",\n    enabled: !!userId\n    // Only query when userId exists\n  });\n  console.log(\"[useSubscription] subscriptionRows:\", subscriptionRows);\n  if (error) {\n    console.error(\"[useSubscription] error:\", error);\n  }\n  const subscription = subscriptionRows.find((r) => r.status === \"active\");\n  console.log(\"[useSubscription] active subscription:\", subscription);\n  return [subscription, userDBLoading || dbLoading];\n}\nfunction updateResolution({ setWidth, setHeight, pixelDensity }) {\n  var _a, _b;\n  const r3fCanvas = (_b = (_a = document.getElementById(\"gradientCanvas\")) == null ? void 0 : _a.children[0]) == null ? void 0 : _b.children[0];\n  if (!r3fCanvas) {\n    console.warn(\"[updateResolution] Canvas element not found\");\n    return;\n  }\n  const { width, height } = r3fCanvas.getBoundingClientRect();\n  setWidth(Math.round(width * pixelDensity));\n  setHeight(Math.round(height * pixelDensity));\n}\nfunction estimateSize({\n  format,\n  duration,\n  frameRate,\n  nodeWidth,\n  nodeHeight\n}) {\n  const p = format === \"webm\" ? 745e-5 : 0.149;\n  const baseSize = 320 * 320;\n  const exportPixels = nodeWidth && nodeHeight && nodeWidth > 0 && nodeHeight > 0 ? nodeWidth * nodeHeight : baseSize;\n  const rawScaleFactor = exportPixels / baseSize;\n  const scaleFactor = format === \"gif\" ? Math.pow(rawScaleFactor, 0.7) : rawScaleFactor;\n  const value = p * duration * frameRate * scaleFactor;\n  return Math.round(value * 10) / 10;\n}\nfunction getTrialLeft(trial_started_at, trials) {\n  if (!trial_started_at) return trials;\n  let currentDate = /* @__PURE__ */ new Date();\n  let diffInTime = currentDate.getTime() - new Date(trial_started_at).getTime();\n  let diffInDays = trials - diffInTime / (1e3 * 3600 * 24);\n  if (diffInDays < 0) return 0;\n  return Math.round(diffInDays);\n}\nfunction useFigmaMessage() {\n  const [, setFigma] = useFigma();\n  useEffect(() => {\n    console.log(\"[useFigmaMessage] Sending UI_READY message to Figma\");\n    parent.postMessage({ pluginMessage: { type: \"UI_READY\" } }, \"*\");\n    onmessage = (event) => {\n      var _a;\n      const msg = event.data.pluginMessage;\n      if (!msg) return;\n      console.log(\"[useFigmaMessage] Received message from Figma:\", msg.type);\n      switch (msg.type) {\n        case \"SELECTION\":\n          console.log(\n            \"[useFigmaMessage] Selection count:\",\n            msg.selection.length,\n            \"Node size:\",\n            msg.nodeWidth,\n            \"x\",\n            msg.nodeHeight\n          );\n          setFigma({\n            selection: msg.selection.length,\n            nodeWidth: msg.nodeWidth || 0,\n            nodeHeight: msg.nodeHeight || 0\n          });\n          break;\n        case \"USER_INFO\":\n          console.log(\"[useFigmaMessage] User info received:\", (_a = msg.user) == null ? void 0 : _a.id);\n          setFigma({ user: msg.user });\n          break;\n        case \"EDITOR_TYPE\":\n          console.log(\"[useFigmaMessage] Editor type received:\", msg.editorType);\n          setFigma({ editorType: msg.editorType });\n          break;\n        default:\n          break;\n      }\n    };\n  }, [setFigma]);\n}\nfunction sleep(sec) {\n  return new Promise((resolve) => setTimeout(resolve, sec * 1e3));\n}\nfunction loadImage(src) {\n  return __async(this, null, function* () {\n    const image = new Image();\n    image.src = src;\n    yield new Promise((resolve, reject) => {\n      image.onload = resolve;\n      image.onerror = reject;\n    });\n    return image;\n  });\n}\nfunction parseUrlToCode(url) {\n  try {\n    if (!url.trim().startsWith(\"http\")) {\n      return null;\n    }\n    const parsedUrl = new URL(url);\n    const params = new URLSearchParams(parsedUrl.search);\n    let propsArray = [];\n    params.forEach((value, key) => {\n      let formattedValue = value;\n      if (value === \"true\" || value === \"false\" || !isNaN(Number(value)) && value !== \"\") {\n        formattedValue = `{${value}}`;\n      } else {\n        formattedValue = `\"${value}\"`;\n      }\n      propsArray.push(`${key}=${formattedValue}`);\n    });\n    const formattedProps = propsArray.join(\"\\n  \");\n    return `<ShaderGradient\n  ${formattedProps}\n/>`;\n  } catch (error) {\n    console.error(\"Error parsing URL:\", error);\n    return null;\n  }\n}\nvar copyToClipboard = (text) => {\n  if (navigator.clipboard && window.isSecureContext) {\n    navigator.clipboard.writeText(text).then(\n      () => console.log(\"[copyToClipboard] Copied successfully\"),\n      (err) => console.error(\"[copyToClipboard] Failed:\", err)\n    );\n    return;\n  }\n  const textarea = document.createElement(\"textarea\");\n  textarea.value = text;\n  textarea.style.position = \"fixed\";\n  textarea.style.opacity = \"0\";\n  document.body.appendChild(textarea);\n  textarea.focus();\n  textarea.select();\n  try {\n    const successful = document.execCommand(\"copy\");\n    if (!successful) {\n      console.error(\"[copyToClipboard] execCommand failed\");\n    }\n  } catch (err) {\n    console.error(\"[copyToClipboard] Fallback failed:\", err);\n  } finally {\n    document.body.removeChild(textarea);\n  }\n};\n\nexport {\n  signUpToSupabaseAuth,\n  useEnsureAuthSignUp,\n  useUserDB,\n  useSubscription,\n  updateResolution,\n  estimateSize,\n  getTrialLeft,\n  useFigmaMessage,\n  sleep,\n  loadImage,\n  parseUrlToCode,\n  copyToClipboard\n};\n","import {\n  STRIPE_BILLING_URL,\n  STRIPE_BUY_MONTHLY_URL,\n  STRIPE_BUY_YEARLY_URL\n} from \"./chunk-VQME7MQ6.mjs\";\nimport {\n  signUpToSupabaseAuth,\n  useEnsureAuthSignUp,\n  useSubscription,\n  useUserDB\n} from \"./chunk-3M45RMAS.mjs\";\nimport {\n  useDBTable\n} from \"./chunk-UMQJMRW4.mjs\";\nimport {\n  useBillingInterval,\n  useFigma,\n  useSupabaseStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/Pricing.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction userInfo(Component) {\n  return (props) => {\n    const [subscription, subDBLoading] = useSubscription(\"userInfo-channel\");\n    const [userDB] = useUserDB(\"sg-info\");\n    useEnsureAuthSignUp();\n    console.log(\"[userInfo] subscription:\", subscription);\n    console.log(\"[userInfo] userDB:\", userDB);\n    let variant = \"Loading\";\n    if (subDBLoading) variant = \"Loading\";\n    else if (!userDB) variant = \"NoUser\";\n    else if (subscription) variant = \"Pro\";\n    else variant = \"Free\";\n    console.log(\"[userInfo] Determined variant:\", variant);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        supportLink: `${STRIPE_BILLING_URL}?prefilled_email=${encodeURIComponent(\n          userDB == null ? void 0 : userDB.email\n        )}`,\n        email: userDB ? `${userDB == null ? void 0 : userDB.email}` : \"\",\n        variant\n      })\n    );\n  };\n}\nfunction subscribeLink(Component) {\n  return (props) => {\n    const [figma] = useFigma();\n    const [userDB] = useUserDB();\n    const [billingInterval] = useBillingInterval();\n    const isYearly = billingInterval === \"year\";\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onClick: () => {\n          var _a;\n          window.open(\n            `${isYearly ? STRIPE_BUY_YEARLY_URL : STRIPE_BUY_MONTHLY_URL}?prefilled_email=${encodeURIComponent(\n              userDB == null ? void 0 : userDB.email\n            )}&client_reference_id=${(_a = figma.user) == null ? void 0 : _a.id}`\n          );\n        }\n      })\n    );\n  };\n}\nfunction isUpgraded(Component) {\n  return (props) => {\n    const [subscription] = useSubscription(props[\"data-framer-name\"]);\n    if (subscription) return /* @__PURE__ */ jsx(Component, __spreadValues({}, props));\n  };\n}\nfunction upgradingText(Component) {\n  return (props) => {\n    const [subscription] = useSubscription(props[\"data-framer-name\"]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        text: subscription ? \"Upgraded!\" : `Check\nyour browser`\n      })\n    );\n  };\n}\nfunction userEmail(Component) {\n  return (props) => {\n    const [userDB] = useUserDB();\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: (userDB == null ? void 0 : userDB.email) || \"\" }));\n  };\n}\nfunction TogglePriceFigma(Component) {\n  return (props) => {\n    const [, setBillingInterval] = useBillingInterval();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onMonthly: () => setBillingInterval(\"month\"),\n        onYearly: () => setBillingInterval(\"year\")\n      })\n    );\n  };\n}\nfunction PriceFigma(Component) {\n  return (props) => {\n    const [billingInterval] = useBillingInterval();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: billingInterval === \"year\" ? \"year\" : \"month\"\n      })\n    );\n  };\n}\nfunction PriceText(Component) {\n  return (props) => {\n    const [billingInterval] = useBillingInterval();\n    const isYearly = billingInterval === \"year\";\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        text: isYearly ? \" \\u2014 just $2 a month\" : \" \\u2014 just $4 a month\"\n      })\n    );\n  };\n}\nfunction StartTrial(Component) {\n  return (props) => {\n    var _a;\n    const [figma] = useFigma();\n    const figma_user_id = (_a = figma.user) == null ? void 0 : _a.id;\n    const supabase = useSupabaseStore((state) => state.supabase);\n    const { insertRow } = useDBTable(\"users\", \"sg-figma-t\", {\n      enabled: false\n      // No fetch needed, only use insert\n    });\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onSubmit: (email) => {\n          if (!figma_user_id) {\n            console.error(\"[StartTrial] figma_user_id is missing\");\n            return;\n          }\n          insertRow({ email, figma_user_id, trial_started_at: /* @__PURE__ */ new Date() });\n          signUpToSupabaseAuth(supabase, email);\n          props == null ? void 0 : props.onSubmit();\n        }\n      })\n    );\n  };\n}\n\nexport {\n  userInfo,\n  subscribeLink,\n  isUpgraded,\n  upgradingText,\n  userEmail,\n  TogglePriceFigma,\n  PriceFigma,\n  PriceText,\n  StartTrial\n};\n","// src/overrides/FigmaPlugin/lib/constants.js\nvar constants_default = {\n  signature: \"GIF\",\n  version: \"89a\",\n  trailer: 59,\n  extensionIntroducer: 33,\n  applicationExtensionLabel: 255,\n  graphicControlExtensionLabel: 249,\n  imageSeparator: 44,\n  // Header\n  signatureSize: 3,\n  versionSize: 3,\n  globalColorTableFlagMask: 128,\n  colorResolutionMask: 112,\n  sortFlagMask: 8,\n  globalColorTableSizeMask: 7,\n  // Application extension\n  applicationIdentifierSize: 8,\n  applicationAuthCodeSize: 3,\n  // Graphic control extension\n  disposalMethodMask: 28,\n  userInputFlagMask: 2,\n  transparentColorFlagMask: 1,\n  // Image descriptor\n  localColorTableFlagMask: 128,\n  interlaceFlagMask: 64,\n  idSortFlagMask: 32,\n  localColorTableSizeMask: 7\n};\n\nexport {\n  constants_default\n};\n","// src/overrides/FigmaPlugin/lib/stream.js\nfunction createStream(initialCapacity = 256) {\n  let cursor = 0;\n  let contents = new Uint8Array(initialCapacity);\n  return {\n    get buffer() {\n      return contents.buffer;\n    },\n    reset() {\n      cursor = 0;\n    },\n    bytesView() {\n      return contents.subarray(0, cursor);\n    },\n    bytes() {\n      return contents.slice(0, cursor);\n    },\n    writeByte(byte) {\n      expand(cursor + 1);\n      contents[cursor] = byte;\n      cursor++;\n    },\n    writeBytes(data, offset = 0, byteLength = data.length) {\n      expand(cursor + byteLength);\n      for (let i = 0; i < byteLength; i++) {\n        contents[cursor++] = data[i + offset];\n      }\n    },\n    writeBytesView(data, offset = 0, byteLength = data.byteLength) {\n      expand(cursor + byteLength);\n      contents.set(data.subarray(offset, offset + byteLength), cursor);\n      cursor += byteLength;\n    }\n  };\n  function expand(newCapacity) {\n    var prevCapacity = contents.length;\n    if (prevCapacity >= newCapacity) return;\n    var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n    newCapacity = Math.max(\n      newCapacity,\n      prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0\n    );\n    if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n    const oldContents = contents;\n    contents = new Uint8Array(newCapacity);\n    if (cursor > 0) contents.set(oldContents.subarray(0, cursor), 0);\n  }\n}\n\nexport {\n  createStream\n};\n","import {\n  createStream\n} from \"./chunk-2WMPBKSG.mjs\";\n\n// src/overrides/FigmaPlugin/lib/lzwEncode.js\nvar BITS = 12;\nvar DEFAULT_HSIZE = 5003;\nvar MASKS = [\n  0,\n  1,\n  3,\n  7,\n  15,\n  31,\n  63,\n  127,\n  255,\n  511,\n  1023,\n  2047,\n  4095,\n  8191,\n  16383,\n  32767,\n  65535\n];\nfunction lzwEncode(width, height, pixels, colorDepth, outStream = createStream(512), accum = new Uint8Array(256), htab = new Int32Array(DEFAULT_HSIZE), codetab = new Int32Array(DEFAULT_HSIZE)) {\n  const hsize = htab.length;\n  const initCodeSize = Math.max(2, colorDepth);\n  accum.fill(0);\n  codetab.fill(0);\n  htab.fill(-1);\n  let cur_accum = 0;\n  let cur_bits = 0;\n  const init_bits = initCodeSize + 1;\n  const g_init_bits = init_bits;\n  let clear_flg = false;\n  let n_bits = g_init_bits;\n  let maxcode = (1 << n_bits) - 1;\n  const ClearCode = 1 << init_bits - 1;\n  const EOFCode = ClearCode + 1;\n  let free_ent = ClearCode + 2;\n  let a_count = 0;\n  let ent = pixels[0];\n  let hshift = 0;\n  for (let fcode = hsize; fcode < 65536; fcode *= 2) {\n    ++hshift;\n  }\n  hshift = 8 - hshift;\n  outStream.writeByte(initCodeSize);\n  output(ClearCode);\n  const length = pixels.length;\n  for (let idx = 1; idx < length; idx++) {\n    next_block: {\n      const c = pixels[idx];\n      const fcode = (c << BITS) + ent;\n      let i = c << hshift ^ ent;\n      if (htab[i] === fcode) {\n        ent = codetab[i];\n        break next_block;\n      }\n      const disp = i === 0 ? 1 : hsize - i;\n      while (htab[i] >= 0) {\n        i -= disp;\n        if (i < 0) i += hsize;\n        if (htab[i] === fcode) {\n          ent = codetab[i];\n          break next_block;\n        }\n      }\n      output(ent);\n      ent = c;\n      if (free_ent < 1 << BITS) {\n        codetab[i] = free_ent++;\n        htab[i] = fcode;\n      } else {\n        htab.fill(-1);\n        free_ent = ClearCode + 2;\n        clear_flg = true;\n        output(ClearCode);\n      }\n    }\n  }\n  output(ent);\n  output(EOFCode);\n  outStream.writeByte(0);\n  return outStream.bytesView();\n  function output(code) {\n    cur_accum &= MASKS[cur_bits];\n    if (cur_bits > 0) cur_accum |= code << cur_bits;\n    else cur_accum = code;\n    cur_bits += n_bits;\n    while (cur_bits >= 8) {\n      accum[a_count++] = cur_accum & 255;\n      if (a_count >= 254) {\n        outStream.writeByte(a_count);\n        outStream.writeBytesView(accum, 0, a_count);\n        a_count = 0;\n      }\n      cur_accum >>= 8;\n      cur_bits -= 8;\n    }\n    if (free_ent > maxcode || clear_flg) {\n      if (clear_flg) {\n        n_bits = g_init_bits;\n        maxcode = (1 << n_bits) - 1;\n        clear_flg = false;\n      } else {\n        ++n_bits;\n        maxcode = n_bits === BITS ? 1 << n_bits : (1 << n_bits) - 1;\n      }\n    }\n    if (code == EOFCode) {\n      while (cur_bits > 0) {\n        accum[a_count++] = cur_accum & 255;\n        if (a_count >= 254) {\n          outStream.writeByte(a_count);\n          outStream.writeBytesView(accum, 0, a_count);\n          a_count = 0;\n        }\n        cur_accum >>= 8;\n        cur_bits -= 8;\n      }\n      if (a_count > 0) {\n        outStream.writeByte(a_count);\n        outStream.writeBytesView(accum, 0, a_count);\n        a_count = 0;\n      }\n    }\n  }\n}\nvar lzwEncode_default = lzwEncode;\n\nexport {\n  lzwEncode_default\n};\n","import {\n  constants_default\n} from \"./chunk-BGA6FIQU.mjs\";\nimport {\n  lzwEncode_default\n} from \"./chunk-CK47F4LN.mjs\";\nimport {\n  createStream\n} from \"./chunk-2WMPBKSG.mjs\";\n\n// src/overrides/FigmaPlugin/lib/index.js\nfunction GIFEncoder(opt = {}) {\n  const { initialCapacity = 4096, auto = true } = opt;\n  const stream = createStream(initialCapacity);\n  const HSIZE = 5003;\n  const accum = new Uint8Array(256);\n  const htab = new Int32Array(HSIZE);\n  const codetab = new Int32Array(HSIZE);\n  let hasInit = false;\n  return {\n    reset() {\n      stream.reset();\n      hasInit = false;\n    },\n    finish() {\n      stream.writeByte(constants_default.trailer);\n    },\n    bytes() {\n      return stream.bytes();\n    },\n    bytesView() {\n      return stream.bytesView();\n    },\n    get buffer() {\n      return stream.buffer;\n    },\n    get stream() {\n      return stream;\n    },\n    writeHeader,\n    writeFrame(index, width, height, opts = {}) {\n      const {\n        transparent = false,\n        transparentIndex = 0,\n        delay = 0,\n        palette = null,\n        repeat = 0,\n        // -1=once, 0=forever, >0=count\n        colorDepth = 8,\n        dispose = -1\n      } = opts;\n      let first = false;\n      if (auto) {\n        if (!hasInit) {\n          first = true;\n          writeHeader();\n          hasInit = true;\n        }\n      } else {\n        first = Boolean(opts.first);\n      }\n      width = Math.max(0, Math.floor(width));\n      height = Math.max(0, Math.floor(height));\n      if (first) {\n        if (!palette) {\n          throw new Error(\"First frame must include a { palette } option\");\n        }\n        encodeLogicalScreenDescriptor(\n          stream,\n          width,\n          height,\n          palette,\n          colorDepth\n        );\n        encodeColorTable(stream, palette);\n        if (repeat >= 0) {\n          encodeNetscapeExt(stream, repeat);\n        }\n      }\n      const delayTime = Math.round(delay / 10);\n      encodeGraphicControlExt(\n        stream,\n        dispose,\n        delayTime,\n        transparent,\n        transparentIndex\n      );\n      const useLocalColorTable = Boolean(palette) && !first;\n      encodeImageDescriptor(\n        stream,\n        width,\n        height,\n        useLocalColorTable ? palette : null\n      );\n      if (useLocalColorTable) encodeColorTable(stream, palette);\n      encodePixels(\n        stream,\n        index,\n        width,\n        height,\n        colorDepth,\n        accum,\n        htab,\n        codetab\n      );\n    }\n  };\n  function writeHeader() {\n    writeUTFBytes(stream, \"GIF89a\");\n  }\n}\nfunction encodeGraphicControlExt(stream, dispose, delay, transparent, transparentIndex) {\n  stream.writeByte(33);\n  stream.writeByte(249);\n  stream.writeByte(4);\n  if (transparentIndex < 0) {\n    transparentIndex = 0;\n    transparent = false;\n  }\n  var transp, disp;\n  if (!transparent) {\n    transp = 0;\n    disp = 0;\n  } else {\n    transp = 1;\n    disp = 2;\n  }\n  if (dispose >= 0) {\n    disp = dispose & 7;\n  }\n  disp <<= 2;\n  const userInput = 0;\n  stream.writeByte(\n    0 | // 1:3 reserved\n    disp | // 4:6 disposal\n    userInput | // 7 user input - 0 = none\n    transp\n    // 8 transparency flag\n  );\n  writeUInt16(stream, delay);\n  stream.writeByte(transparentIndex || 0);\n  stream.writeByte(0);\n}\nfunction encodeLogicalScreenDescriptor(stream, width, height, palette, colorDepth = 8) {\n  const globalColorTableFlag = 1;\n  const sortFlag = 0;\n  const globalColorTableSize = colorTableSize(palette.length) - 1;\n  const fields = globalColorTableFlag << 7 | colorDepth - 1 << 4 | sortFlag << 3 | globalColorTableSize;\n  const backgroundColorIndex = 0;\n  const pixelAspectRatio = 0;\n  writeUInt16(stream, width);\n  writeUInt16(stream, height);\n  stream.writeBytes([fields, backgroundColorIndex, pixelAspectRatio]);\n}\nfunction encodeNetscapeExt(stream, repeat) {\n  stream.writeByte(33);\n  stream.writeByte(255);\n  stream.writeByte(11);\n  writeUTFBytes(stream, \"NETSCAPE2.0\");\n  stream.writeByte(3);\n  stream.writeByte(1);\n  writeUInt16(stream, repeat);\n  stream.writeByte(0);\n}\nfunction encodeColorTable(stream, palette) {\n  const colorTableLength = 1 << colorTableSize(palette.length);\n  for (let i = 0; i < colorTableLength; i++) {\n    let color = [0, 0, 0];\n    if (i < palette.length) {\n      color = palette[i];\n    }\n    stream.writeByte(color[0]);\n    stream.writeByte(color[1]);\n    stream.writeByte(color[2]);\n  }\n}\nfunction encodeImageDescriptor(stream, width, height, localPalette) {\n  stream.writeByte(44);\n  writeUInt16(stream, 0);\n  writeUInt16(stream, 0);\n  writeUInt16(stream, width);\n  writeUInt16(stream, height);\n  if (localPalette) {\n    const interlace = 0;\n    const sorted = 0;\n    const palSize = colorTableSize(localPalette.length) - 1;\n    stream.writeByte(\n      128 | // 1 local color table 1=yes\n      interlace | // 2 interlace - 0=no\n      sorted | // 3 sorted - 0=no\n      0 | // 4-5 reserved\n      palSize\n      // 6-8 size of color table\n    );\n  } else {\n    stream.writeByte(0);\n  }\n}\nfunction encodePixels(stream, index, width, height, colorDepth = 8, accum, htab, codetab) {\n  lzwEncode_default(width, height, index, colorDepth, stream, accum, htab, codetab);\n}\nfunction writeUInt16(stream, short) {\n  stream.writeByte(short & 255);\n  stream.writeByte(short >> 8 & 255);\n}\nfunction writeUTFBytes(stream, text) {\n  for (var i = 0; i < text.length; i++) {\n    stream.writeByte(text.charCodeAt(i));\n  }\n}\nfunction colorTableSize(length) {\n  return Math.max(Math.ceil(Math.log2(length)), 1);\n}\nvar lib_default = GIFEncoder;\n\nexport {\n  GIFEncoder,\n  lib_default\n};\n","// src/overrides/FigmaPlugin/lib/rgb-packing.js\nfunction uint32_to_rgba(color) {\n  var a = color >> 24 & 255;\n  var b = color >> 16 & 255;\n  var g = color >> 8 & 255;\n  var r = color & 255;\n  return [r, g, b, a];\n}\nfunction rgba_to_uint32(r, g, b, a) {\n  return a << 24 | b << 16 | g << 8 | r;\n}\nfunction rgb888_to_rgb565(r, g, b) {\n  return r << 8 & 63488 | g << 2 & 992 | b >> 3;\n}\nfunction rgba8888_to_rgba4444(r, g, b, a) {\n  return r >> 4 | g & 240 | (b & 240) << 4 | (a & 240) << 8;\n}\nfunction rgb888_to_rgb444(r, g, b) {\n  return r >> 4 << 8 | g & 240 | b >> 4;\n}\n\nexport {\n  uint32_to_rgba,\n  rgba_to_uint32,\n  rgb888_to_rgb565,\n  rgba8888_to_rgba4444,\n  rgb888_to_rgb444\n};\n","import {\n  euclideanDistanceSquared\n} from \"./chunk-64EKMGYT.mjs\";\nimport {\n  rgb888_to_rgb444,\n  rgb888_to_rgb565,\n  rgba8888_to_rgba4444\n} from \"./chunk-XKMCKCFY.mjs\";\n\n// src/overrides/FigmaPlugin/lib/palettize.js\nfunction roundStep(byte, step) {\n  return step > 1 ? Math.round(byte / step) * step : byte;\n}\nfunction prequantize(rgba, { roundRGB = 5, roundAlpha = 10, oneBitAlpha = null } = {}) {\n  const data = new Uint32Array(rgba.buffer);\n  for (let i = 0; i < data.length; i++) {\n    const color = data[i];\n    let a = color >> 24 & 255;\n    let b = color >> 16 & 255;\n    let g = color >> 8 & 255;\n    let r = color & 255;\n    a = roundStep(a, roundAlpha);\n    if (oneBitAlpha) {\n      const threshold = typeof oneBitAlpha === \"number\" ? oneBitAlpha : 127;\n      a = a <= threshold ? 0 : 255;\n    }\n    r = roundStep(r, roundRGB);\n    g = roundStep(g, roundRGB);\n    b = roundStep(b, roundRGB);\n    data[i] = a << 24 | b << 16 | g << 8 | r << 0;\n  }\n}\nfunction applyPalette(rgba, palette, format = \"rgb565\") {\n  if (!rgba || !rgba.buffer) {\n    throw new Error(\"quantize() expected RGBA Uint8Array data\");\n  }\n  if (!(rgba instanceof Uint8Array) && !(rgba instanceof Uint8ClampedArray)) {\n    throw new Error(\"quantize() expected RGBA Uint8Array data\");\n  }\n  if (palette.length > 256) {\n    throw new Error(\"applyPalette() only works with 256 colors or less\");\n  }\n  const data = new Uint32Array(rgba.buffer);\n  const length = data.length;\n  const bincount = format === \"rgb444\" ? 4096 : 65536;\n  const index = new Uint8Array(length);\n  const cache = new Array(bincount);\n  const hasAlpha = format === \"rgba4444\";\n  if (format === \"rgba4444\") {\n    for (let i = 0; i < length; i++) {\n      const color = data[i];\n      const a = color >> 24 & 255;\n      const b = color >> 16 & 255;\n      const g = color >> 8 & 255;\n      const r = color & 255;\n      const key = rgba8888_to_rgba4444(r, g, b, a);\n      const idx = key in cache ? cache[key] : cache[key] = nearestColorIndexRGBA(r, g, b, a, palette);\n      index[i] = idx;\n    }\n  } else {\n    const rgb888_to_key = format === \"rgb444\" ? rgb888_to_rgb444 : rgb888_to_rgb565;\n    for (let i = 0; i < length; i++) {\n      const color = data[i];\n      const b = color >> 16 & 255;\n      const g = color >> 8 & 255;\n      const r = color & 255;\n      const key = rgb888_to_key(r, g, b);\n      const idx = key in cache ? cache[key] : cache[key] = nearestColorIndexRGB(r, g, b, palette);\n      index[i] = idx;\n    }\n  }\n  return index;\n}\nfunction nearestColorIndexRGBA(r, g, b, a, palette) {\n  let k = 0;\n  let mindist = 1e100;\n  for (let i = 0; i < palette.length; i++) {\n    const px2 = palette[i];\n    const a2 = px2[3];\n    let curdist = sqr(a2 - a);\n    if (curdist > mindist) continue;\n    const r2 = px2[0];\n    curdist += sqr(r2 - r);\n    if (curdist > mindist) continue;\n    const g2 = px2[1];\n    curdist += sqr(g2 - g);\n    if (curdist > mindist) continue;\n    const b2 = px2[2];\n    curdist += sqr(b2 - b);\n    if (curdist > mindist) continue;\n    mindist = curdist;\n    k = i;\n  }\n  return k;\n}\nfunction nearestColorIndexRGB(r, g, b, palette) {\n  let k = 0;\n  let mindist = 1e100;\n  for (let i = 0; i < palette.length; i++) {\n    const px2 = palette[i];\n    const r2 = px2[0];\n    let curdist = sqr(r2 - r);\n    if (curdist > mindist) continue;\n    const g2 = px2[1];\n    curdist += sqr(g2 - g);\n    if (curdist > mindist) continue;\n    const b2 = px2[2];\n    curdist += sqr(b2 - b);\n    if (curdist > mindist) continue;\n    mindist = curdist;\n    k = i;\n  }\n  return k;\n}\nfunction snapColorsToPalette(palette, knownColors, threshold = 5) {\n  if (!palette.length || !knownColors.length) return;\n  const paletteRGB = palette.map((p) => p.slice(0, 3));\n  const thresholdSq = threshold * threshold;\n  const dim = palette[0].length;\n  for (let i = 0; i < knownColors.length; i++) {\n    let color = knownColors[i];\n    if (color.length < dim) {\n      color = [color[0], color[1], color[2], 255];\n    } else if (color.length > dim) {\n      color = color.slice(0, 3);\n    } else {\n      color = color.slice();\n    }\n    const r = nearestColorIndexWithDistance(\n      paletteRGB,\n      color.slice(0, 3),\n      euclideanDistanceSquared\n    );\n    const idx = r[0];\n    const distanceSq = r[1];\n    if (distanceSq > 0 && distanceSq <= thresholdSq) {\n      palette[idx] = color;\n    }\n  }\n}\nfunction sqr(a) {\n  return a * a;\n}\nfunction nearestColorIndex(colors, pixel, distanceFn = euclideanDistanceSquared) {\n  let minDist = Infinity;\n  let minDistIndex = -1;\n  for (let j = 0; j < colors.length; j++) {\n    const paletteColor = colors[j];\n    const dist = distanceFn(pixel, paletteColor);\n    if (dist < minDist) {\n      minDist = dist;\n      minDistIndex = j;\n    }\n  }\n  return minDistIndex;\n}\nfunction nearestColorIndexWithDistance(colors, pixel, distanceFn = euclideanDistanceSquared) {\n  let minDist = Infinity;\n  let minDistIndex = -1;\n  for (let j = 0; j < colors.length; j++) {\n    const paletteColor = colors[j];\n    const dist = distanceFn(pixel, paletteColor);\n    if (dist < minDist) {\n      minDist = dist;\n      minDistIndex = j;\n    }\n  }\n  return [minDistIndex, minDist];\n}\nfunction nearestColor(colors, pixel, distanceFn = euclideanDistanceSquared) {\n  return colors[nearestColorIndex(colors, pixel, distanceFn)];\n}\n\nexport {\n  prequantize,\n  applyPalette,\n  snapColorsToPalette,\n  nearestColorIndex,\n  nearestColorIndexWithDistance,\n  nearestColor\n};\n","import {\n  rgb888_to_rgb444,\n  rgb888_to_rgb565,\n  rgba8888_to_rgba4444\n} from \"./chunk-XKMCKCFY.mjs\";\n\n// src/overrides/FigmaPlugin/lib/pnnquant2.js\nfunction clamp(value, min, max) {\n  return value < min ? min : value > max ? max : value;\n}\nfunction sqr(value) {\n  return value * value;\n}\nfunction find_nn(bins, idx, hasAlpha) {\n  var nn = 0;\n  var err = 1e100;\n  const bin1 = bins[idx];\n  const n1 = bin1.cnt;\n  const wa = bin1.ac;\n  const wr = bin1.rc;\n  const wg = bin1.gc;\n  const wb = bin1.bc;\n  for (var i = bin1.fw; i != 0; i = bins[i].fw) {\n    const bin = bins[i];\n    const n2 = bin.cnt;\n    const nerr2 = n1 * n2 / (n1 + n2);\n    if (nerr2 >= err) continue;\n    var nerr = 0;\n    if (hasAlpha) {\n      nerr += nerr2 * sqr(bin.ac - wa);\n      if (nerr >= err) continue;\n    }\n    nerr += nerr2 * sqr(bin.rc - wr);\n    if (nerr >= err) continue;\n    nerr += nerr2 * sqr(bin.gc - wg);\n    if (nerr >= err) continue;\n    nerr += nerr2 * sqr(bin.bc - wb);\n    if (nerr >= err) continue;\n    err = nerr;\n    nn = i;\n  }\n  bin1.err = err;\n  bin1.nn = nn;\n}\nfunction create_bin() {\n  return {\n    ac: 0,\n    rc: 0,\n    gc: 0,\n    bc: 0,\n    cnt: 0,\n    nn: 0,\n    fw: 0,\n    bk: 0,\n    tm: 0,\n    mtm: 0,\n    err: 0\n  };\n}\nfunction create_bin_list(data, format) {\n  const bincount = format === \"rgb444\" ? 4096 : 65536;\n  const bins = new Array(bincount);\n  const size = data.length;\n  if (format === \"rgba4444\") {\n    for (let i = 0; i < size; ++i) {\n      const color = data[i];\n      const a = color >> 24 & 255;\n      const b = color >> 16 & 255;\n      const g = color >> 8 & 255;\n      const r = color & 255;\n      const index = rgba8888_to_rgba4444(r, g, b, a);\n      let bin = index in bins ? bins[index] : bins[index] = create_bin();\n      bin.rc += r;\n      bin.gc += g;\n      bin.bc += b;\n      bin.ac += a;\n      bin.cnt++;\n    }\n  } else if (format === \"rgb444\") {\n    for (let i = 0; i < size; ++i) {\n      const color = data[i];\n      const b = color >> 16 & 255;\n      const g = color >> 8 & 255;\n      const r = color & 255;\n      const index = rgb888_to_rgb444(r, g, b);\n      let bin = index in bins ? bins[index] : bins[index] = create_bin();\n      bin.rc += r;\n      bin.gc += g;\n      bin.bc += b;\n      bin.cnt++;\n    }\n  } else {\n    for (let i = 0; i < size; ++i) {\n      const color = data[i];\n      const b = color >> 16 & 255;\n      const g = color >> 8 & 255;\n      const r = color & 255;\n      const index = rgb888_to_rgb565(r, g, b);\n      let bin = index in bins ? bins[index] : bins[index] = create_bin();\n      bin.rc += r;\n      bin.gc += g;\n      bin.bc += b;\n      bin.cnt++;\n    }\n  }\n  return bins;\n}\nfunction quantize(rgba, maxColors, opts = {}) {\n  const {\n    format = \"rgb565\",\n    clearAlpha = true,\n    clearAlphaColor = 0,\n    clearAlphaThreshold = 0,\n    oneBitAlpha = false\n  } = opts;\n  if (!rgba || !rgba.buffer) {\n    throw new Error(\"quantize() expected RGBA Uint8Array data\");\n  }\n  if (!(rgba instanceof Uint8Array) && !(rgba instanceof Uint8ClampedArray)) {\n    throw new Error(\"quantize() expected RGBA Uint8Array data\");\n  }\n  const data = new Uint32Array(rgba.buffer);\n  let useSqrt = opts.useSqrt !== false;\n  const hasAlpha = format === \"rgba4444\";\n  const bins = create_bin_list(data, format);\n  const bincount = bins.length;\n  const bincountMinusOne = bincount - 1;\n  const heap = new Uint32Array(bincount + 1);\n  var maxbins = 0;\n  for (var i = 0; i < bincount; ++i) {\n    const bin = bins[i];\n    if (bin != null) {\n      var d = 1 / bin.cnt;\n      if (hasAlpha) bin.ac *= d;\n      bin.rc *= d;\n      bin.gc *= d;\n      bin.bc *= d;\n      bins[maxbins++] = bin;\n    }\n  }\n  if (sqr(maxColors) / maxbins < 0.022) {\n    useSqrt = false;\n  }\n  var i = 0;\n  for (; i < maxbins - 1; ++i) {\n    bins[i].fw = i + 1;\n    bins[i + 1].bk = i;\n    if (useSqrt) bins[i].cnt = Math.sqrt(bins[i].cnt);\n  }\n  if (useSqrt) bins[i].cnt = Math.sqrt(bins[i].cnt);\n  var h, l, l2;\n  for (i = 0; i < maxbins; ++i) {\n    find_nn(bins, i, false);\n    var err = bins[i].err;\n    for (l = ++heap[0]; l > 1; l = l2) {\n      l2 = l >> 1;\n      if (bins[h = heap[l2]].err <= err) break;\n      heap[l] = h;\n    }\n    heap[l] = i;\n  }\n  var extbins = maxbins - maxColors;\n  for (i = 0; i < extbins; ) {\n    var tb;\n    for (; ; ) {\n      var b1 = heap[1];\n      tb = bins[b1];\n      if (tb.tm >= tb.mtm && bins[tb.nn].mtm <= tb.tm) break;\n      if (tb.mtm == bincountMinusOne)\n        b1 = heap[1] = heap[heap[0]--];\n      else {\n        find_nn(bins, b1, false);\n        tb.tm = i;\n      }\n      var err = bins[b1].err;\n      for (l = 1; (l2 = l + l) <= heap[0]; l = l2) {\n        if (l2 < heap[0] && bins[heap[l2]].err > bins[heap[l2 + 1]].err) l2++;\n        if (err <= bins[h = heap[l2]].err) break;\n        heap[l] = h;\n      }\n      heap[l] = b1;\n    }\n    var nb = bins[tb.nn];\n    var n1 = tb.cnt;\n    var n2 = nb.cnt;\n    var d = 1 / (n1 + n2);\n    if (hasAlpha) tb.ac = d * (n1 * tb.ac + n2 * nb.ac);\n    tb.rc = d * (n1 * tb.rc + n2 * nb.rc);\n    tb.gc = d * (n1 * tb.gc + n2 * nb.gc);\n    tb.bc = d * (n1 * tb.bc + n2 * nb.bc);\n    tb.cnt += nb.cnt;\n    tb.mtm = ++i;\n    bins[nb.bk].fw = nb.fw;\n    bins[nb.fw].bk = nb.bk;\n    nb.mtm = bincountMinusOne;\n  }\n  let palette = [];\n  var k = 0;\n  for (i = 0; ; ++k) {\n    let r = clamp(Math.round(bins[i].rc), 0, 255);\n    let g = clamp(Math.round(bins[i].gc), 0, 255);\n    let b = clamp(Math.round(bins[i].bc), 0, 255);\n    let a = 255;\n    if (hasAlpha) {\n      a = clamp(Math.round(bins[i].ac), 0, 255);\n      if (oneBitAlpha) {\n        const threshold = typeof oneBitAlpha === \"number\" ? oneBitAlpha : 127;\n        a = a <= threshold ? 0 : 255;\n      }\n      if (clearAlpha && a <= clearAlphaThreshold) {\n        r = g = b = clearAlphaColor;\n        a = 0;\n      }\n    }\n    const color = hasAlpha ? [r, g, b, a] : [r, g, b];\n    const exists = existsInPalette(palette, color);\n    if (!exists) palette.push(color);\n    if ((i = bins[i].fw) == 0) break;\n  }\n  return palette;\n}\nfunction existsInPalette(palette, color) {\n  for (let i = 0; i < palette.length; i++) {\n    const p = palette[i];\n    let matchesRGB = p[0] === color[0] && p[1] === color[1] && p[2] === color[2];\n    let matchesAlpha = p.length >= 4 && color.length >= 4 ? p[3] === color[3] : true;\n    if (matchesRGB && matchesAlpha) return true;\n  }\n  return false;\n}\n\nexport {\n  quantize\n};\n","import {\n  GIFEncoder\n} from \"./chunk-YFGZA6BU.mjs\";\nimport {\n  applyPalette\n} from \"./chunk-75LPQSKV.mjs\";\nimport {\n  quantize\n} from \"./chunk-BI4IT72G.mjs\";\nimport {\n  loadImage,\n  sleep\n} from \"./chunk-3M45RMAS.mjs\";\nimport {\n  __async\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/exportGIF.ts\nvar stopped = false;\nfunction exportGIF(option, callback, controller) {\n  return __async(this, null, function* () {\n    stopped = false;\n    const {\n      rangeStart,\n      rangeEnd,\n      setAnimate,\n      setUTime,\n      frameRate,\n      grain,\n      nodeWidth,\n      nodeHeight\n    } = option;\n    const frameRateInterval = 1 / frameRate;\n    const delay = frameRateInterval * 1e3;\n    setAnimate(\"off\");\n    setUTime(rangeStart);\n    const duration = rangeEnd - rangeStart;\n    const totalFrames = Math.ceil(duration * frameRate);\n    const canvasContainer = document.getElementById(\"gradientCanvas\");\n    const originalStyle = (canvasContainer == null ? void 0 : canvasContainer.style.cssText) || \"\";\n    if (canvasContainer && nodeWidth && nodeHeight && nodeWidth > 0 && nodeHeight > 0) {\n      canvasContainer.style.position = \"fixed\";\n      canvasContainer.style.top = \"-9999px\";\n      canvasContainer.style.left = \"-9999px\";\n      canvasContainer.style.width = nodeWidth + \"px\";\n      canvasContainer.style.height = nodeHeight + \"px\";\n      window.dispatchEvent(new Event(\"resize\"));\n      yield sleep(0.5);\n    }\n    return new Promise((resolve, reject) => __async(this, null, function* () {\n      const frames = new Array(totalFrames).fill(0).map((_, i) => i);\n      const signal = controller.signal;\n      signal.addEventListener(\"abort\", () => {\n        stopped = true;\n        setAnimate(\"on\");\n        callback(-1);\n        reject({ error: new Error(\"Export was cancelled\"), originalStyle });\n      });\n      try {\n        const gif = GIFEncoder();\n        for (let i of frames) {\n          if (stopped) break;\n          const playhead = rangeStart + i / frameRate;\n          setUTime(playhead);\n          const [imageData, width, height] = yield getImage();\n          const { data } = imageData;\n          const format = \"rgb444\";\n          const palette = quantize(data, 256, { format });\n          const index = applyPalette(data, palette, format);\n          yield gif.writeFrame(index, width, height, { palette, delay });\n          yield sleep(0.01);\n          callback(i / (totalFrames - 1));\n        }\n        if (!stopped) {\n          gif.finish();\n          const buffer = gif.bytesView();\n          if (option.destination === \"localFile\") {\n            download(buffer, \"shadergradient.gif\", { type: \"image/gif\" });\n          }\n          setAnimate(\"on\");\n          const b64 = yield base64_arraybuffer(buffer);\n          const dataURL = \"data:image/gif;base64,\" + b64;\n          const bytes = yield gifToUint8Array(dataURL);\n          resolve({ bytes, originalStyle });\n        }\n      } catch (error) {\n        console.error(\"Export error:\", error);\n        setAnimate(\"on\");\n        callback(-1);\n        reject({ error, originalStyle });\n      } finally {\n        if (stopped) {\n          setAnimate(\"on\");\n        }\n      }\n    }));\n  });\n}\nfunction gifToUint8Array(dataURL) {\n  return __async(this, null, function* () {\n    const binaryString = atob(dataURL.split(\",\")[1]);\n    const uint8Array = new Uint8Array(binaryString.length);\n    for (let i = 0; i < binaryString.length; i++)\n      uint8Array[i] = binaryString.charCodeAt(i);\n    return uint8Array;\n  });\n}\nfunction download(buf, filename, type) {\n  const blob = buf instanceof Blob ? buf : new Blob([buf], { type });\n  downloadBlob(blob, filename);\n}\nfunction downloadBlob(blob, filename) {\n  const url = URL.createObjectURL(blob);\n  const anchor = document.createElement(\"a\");\n  anchor.href = url;\n  anchor.download = filename;\n  anchor.click();\n}\nfunction getImage() {\n  return __async(this, null, function* () {\n    const r3fCanvas = document.getElementById(\"gradientCanvas\").children[0].children[0];\n    const dataURL = r3fCanvas.toDataURL(\"image/png\", 1);\n    const image = yield loadImage(dataURL);\n    const canvas = document.createElement(\"canvas\");\n    const context = canvas.getContext(\"2d\");\n    context.canvas.width = image.width;\n    context.canvas.height = image.height;\n    context.drawImage(image, 0, 0);\n    return [\n      new ImageData(\n        context.getImageData(\n          0,\n          0,\n          context.canvas.width,\n          context.canvas.height\n        ).data,\n        context.canvas.width,\n        context.canvas.height\n      ),\n      image.width,\n      image.height\n    ];\n  });\n}\nvar base64_arraybuffer = (data) => __async(void 0, null, function* () {\n  const base64url = yield new Promise((r) => {\n    const reader = new FileReader();\n    reader.onload = () => r(reader.result);\n    reader.readAsDataURL(new Blob([data]));\n  });\n  return base64url.substring(base64url.indexOf(\",\") + 1);\n});\n\nexport {\n  exportGIF\n};\n","import {\n  loadImage,\n  sleep\n} from \"./chunk-3M45RMAS.mjs\";\nimport {\n  __async\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/exportImage.ts\nfunction restoreCanvas(originalStyle) {\n  const canvasContainer = document.getElementById(\"gradientCanvas\");\n  if (canvasContainer && originalStyle) {\n    canvasContainer.style.cssText = originalStyle;\n    window.dispatchEvent(new Event(\"resize\"));\n  }\n}\nfunction exportImage(nodeWidth, nodeHeight) {\n  return __async(this, null, function* () {\n    var _a;\n    const canvasContainer = document.getElementById(\"gradientCanvas\");\n    const r3fCanvas = (_a = canvasContainer == null ? void 0 : canvasContainer.children[0]) == null ? void 0 : _a.children[0];\n    if (!canvasContainer || !r3fCanvas) {\n      console.error(\"Canvas not found\");\n      throw new Error(\"Canvas not found\");\n    }\n    const originalContainerStyle = canvasContainer.style.cssText;\n    if (nodeWidth && nodeHeight && nodeWidth > 0 && nodeHeight > 0) {\n      canvasContainer.style.position = \"fixed\";\n      canvasContainer.style.top = \"-9999px\";\n      canvasContainer.style.left = \"-9999px\";\n      canvasContainer.style.width = nodeWidth + \"px\";\n      canvasContainer.style.height = nodeHeight + \"px\";\n      window.dispatchEvent(new Event(\"resize\"));\n      yield sleep(0.5);\n    }\n    const dataURL = r3fCanvas.toDataURL(\"image/png\", 1);\n    const image = yield loadImage(dataURL);\n    console.log(\"Image has loaded\");\n    const view = yield imageToUint8Array(image);\n    console.log(`${view.length} bytes!.`);\n    return { bytes: view, originalStyle: originalContainerStyle };\n  });\n}\nfunction imageToUint8Array(image) {\n  return __async(this, null, function* () {\n    return new Promise((resolve, reject) => {\n      const canvas = document.createElement(\"canvas\");\n      const context = canvas.getContext(\"2d\");\n      context.canvas.width = image.width;\n      context.canvas.height = image.height;\n      context.drawImage(image, 0, 0);\n      context.canvas.toBlob(\n        (blob) => blob.arrayBuffer().then((buffer) => resolve(new Uint8Array(buffer))).catch(reject)\n      );\n    });\n  });\n}\n\nexport {\n  restoreCanvas,\n  exportImage\n};\n","import {\n  sleep\n} from \"./chunk-3M45RMAS.mjs\";\nimport {\n  __async\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/exportVideo.ts\nvar stopped = false;\nvar mediaRecorder = null;\nvar recordedChunks = [];\nfunction exportVideo(option, callback, controller) {\n  return __async(this, null, function* () {\n    const { rangeStart, rangeEnd, destination, nodeWidth, nodeHeight } = option;\n    const duration = rangeEnd - rangeStart;\n    stopped = false;\n    const signal = controller.signal;\n    signal.addEventListener(\"abort\", () => {\n      callback(-1);\n      stopped = true;\n      if (mediaRecorder) mediaRecorder.stop();\n    });\n    const canvasContainer = document.getElementById(\"gradientCanvas\");\n    const originalStyle = (canvasContainer == null ? void 0 : canvasContainer.style.cssText) || \"\";\n    if (canvasContainer && nodeWidth && nodeHeight && nodeWidth > 0 && nodeHeight > 0) {\n      canvasContainer.style.position = \"fixed\";\n      canvasContainer.style.top = \"-9999px\";\n      canvasContainer.style.left = \"-9999px\";\n      canvasContainer.style.width = nodeWidth + \"px\";\n      canvasContainer.style.height = nodeHeight + \"px\";\n      window.dispatchEvent(new Event(\"resize\"));\n      yield sleep(0.5);\n    }\n    const blob = yield recordVideo(duration, callback);\n    if (stopped || !blob) return { originalStyle };\n    if (destination === \"onCanvas\") {\n      const arrayBuffer = yield blob.arrayBuffer();\n      const bytes = new Uint8Array(arrayBuffer);\n      return { bytes, originalStyle };\n    } else {\n      downloadVideo(blob);\n      return { originalStyle };\n    }\n  });\n}\nfunction recordVideo(duration, callback) {\n  return __async(this, null, function* () {\n    return new Promise((resolve) => __async(this, null, function* () {\n      var _a;\n      const canvasContainer = document.getElementById(\"gradientCanvas\");\n      const r3fCanvas = (_a = canvasContainer == null ? void 0 : canvasContainer.children[0]) == null ? void 0 : _a.children[0];\n      if (!r3fCanvas || !canvasContainer) {\n        console.error(\"Canvas not found\");\n        resolve(null);\n        return;\n      }\n      recordedChunks = [];\n      const stream = r3fCanvas.captureStream();\n      mediaRecorder = new MediaRecorder(stream, {\n        mimeType: \"video/webm;codecs=h264\",\n        videoBitsPerSecond: 25e6\n        // 25 Mbps for higher quality\n      });\n      const interval = setInterval(() => {\n        callback((prev) => {\n          const progress = prev + 1 / duration;\n          if (progress >= 1) clearInterval(interval);\n          return progress;\n        });\n      }, 1e3);\n      mediaRecorder.addEventListener(\"dataavailable\", (e) => {\n        if (e.data.size > 0) {\n          recordedChunks.push(e.data);\n        }\n      });\n      mediaRecorder.addEventListener(\"stop\", () => {\n        clearInterval(interval);\n        if (!stopped) {\n          const blob = new Blob(recordedChunks, { type: \"video/webm\" });\n          resolve(blob);\n        } else {\n          resolve(null);\n        }\n      });\n      mediaRecorder.start();\n      yield sleep(duration);\n      mediaRecorder.stop();\n    }));\n  });\n}\nfunction downloadVideo(blob) {\n  const url = URL.createObjectURL(blob);\n  const a = document.createElement(\"a\");\n  document.body.appendChild(a);\n  a.style.display = \"none\";\n  a.href = url;\n  a.download = \"shadergradient.webm\";\n  a.click();\n  window.URL.revokeObjectURL(url);\n  document.body.removeChild(a);\n}\n\nexport {\n  exportVideo\n};\n","import {\n  exportGIF\n} from \"./chunk-UYFPDYW7.mjs\";\nimport {\n  exportImage,\n  restoreCanvas\n} from \"./chunk-XZSE53IL.mjs\";\nimport {\n  exportVideo\n} from \"./chunk-SHTJ3O2Z.mjs\";\nimport {\n  useUIStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __async\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/FigmaApi.ts\nvar figma = {};\nvar getCodeString = (func) => {\n  const code = func.toString();\n  const body = code.substring(code.indexOf(\"{\") + 1, code.lastIndexOf(\"}\"));\n  return body;\n};\nvar postFigmaMessage = (func) => __async(void 0, null, function* () {\n  parent.postMessage(\n    {\n      pluginMessage: {\n        type: \"execute\",\n        code: getCodeString(func)\n      }\n    },\n    \"*\"\n  );\n});\nvar postFigmaMessageForExport = (option, callback, controller) => __async(void 0, null, function* () {\n  const { setIsExporting } = useUIStore.getState();\n  setIsExporting(true);\n  let originalStyle = \"\";\n  try {\n    const supportsVideoOnCanvas = option.editorType === \"slides\" || option.editorType === \"buzz\";\n    if (option.destination === \"onCanvas\") {\n      if (supportsVideoOnCanvas && option.format === \"webm\") {\n        const result = yield exportVideo(option, callback, controller);\n        originalStyle = result.originalStyle;\n        if (result.bytes) {\n          parent.postMessage(\n            {\n              pluginMessage: {\n                type: \"SNAPSHOT_VIDEO\",\n                code: getCodeString(callback),\n                bytes: result.bytes\n              }\n            },\n            \"*\"\n          );\n        }\n        callback(-1);\n      } else {\n        const result = yield exportGIF(option, callback, controller);\n        originalStyle = result.originalStyle;\n        parent.postMessage(\n          {\n            pluginMessage: {\n              type: \"SNAPSHOT_GIF\",\n              code: getCodeString(callback),\n              bytes: result.bytes\n            }\n          },\n          \"*\"\n        );\n        callback(-1);\n      }\n    } else if (option.destination === \"localFile\") {\n      if (option.format === \"gif\") {\n        const result = yield exportGIF(option, callback, controller);\n        originalStyle = result.originalStyle;\n      } else if (option.format === \"webm\") {\n        const result = yield exportVideo(option, callback, controller);\n        originalStyle = result.originalStyle;\n      }\n      callback(-1);\n    }\n  } finally {\n    setIsExporting(false);\n    restoreCanvas(originalStyle);\n  }\n});\nvar postFigmaMessageForSnapShot = (func, nodeWidth, nodeHeight) => __async(void 0, null, function* () {\n  const { setIsExporting } = useUIStore.getState();\n  setIsExporting(true);\n  let originalStyle = \"\";\n  try {\n    const result = yield exportImage(nodeWidth, nodeHeight);\n    originalStyle = result.originalStyle;\n    parent.postMessage(\n      {\n        pluginMessage: {\n          type: \"SNAPSHOT\",\n          //@ts-ignore\n          code: getCodeString(func),\n          bytes: result.bytes\n        }\n      },\n      \"*\"\n    );\n  } finally {\n    setIsExporting(false);\n    restoreCanvas(originalStyle);\n  }\n});\n\nexport {\n  figma,\n  getCodeString,\n  postFigmaMessage,\n  postFigmaMessageForExport,\n  postFigmaMessageForSnapShot\n};\n","// src/overrides/utils.tsx\nfunction parseUrlForControls(url) {\n  const parsedUrl = new URL(url);\n  const params = new URLSearchParams(parsedUrl.search);\n  const controls = {};\n  const convertValue = (value) => {\n    if (value === \"true\" || value === \"false\") {\n      return value === \"true\";\n    }\n    if (value === \"on\" || value === \"off\") {\n      return value;\n    }\n    if (!isNaN(value) && value !== \"\") {\n      return Number(value);\n    }\n    return value;\n  };\n  const propertyGroups = {\n    position: [\"positionX\", \"positionY\", \"positionZ\"],\n    rotation: [\"rotationX\", \"rotationY\", \"rotationZ\"],\n    cameraAngle: [\"cAzimuthAngle\", \"cPolarAngle\"],\n    noise: [\"uStrength\", \"uDensity\"]\n  };\n  const allParams = {};\n  for (const [key, value] of params.entries()) {\n    allParams[key] = convertValue(value);\n  }\n  for (const [key, value] of Object.entries(allParams)) {\n    let grouped = false;\n    for (const [groupName, properties] of Object.entries(propertyGroups)) {\n      if (properties.includes(key)) {\n        if (!controls[groupName]) {\n          controls[groupName] = {};\n        }\n        controls[groupName][key] = value;\n        grouped = true;\n        break;\n      }\n    }\n    if (!grouped) {\n      controls[key] = value;\n    }\n  }\n  return controls;\n}\nfunction parseQuery(queryString) {\n  var query = {};\n  var pairs = (queryString[0] === \"?\" ? queryString.substr(1) : queryString).split(\"&\");\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i].split(\"=\");\n    query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || \"\");\n  }\n  return query;\n}\nvar isValidUrl = (urlString) => {\n  const state = parseQuery(urlString);\n  return state.color1 && state.color2 && state.color3;\n};\n\nexport {\n  parseUrlForControls,\n  parseQuery,\n  isValidUrl\n};\n","import {\n  figma,\n  postFigmaMessage,\n  postFigmaMessageForExport,\n  postFigmaMessageForSnapShot\n} from \"./chunk-6V3BLWHH.mjs\";\nimport {\n  copyToClipboard,\n  estimateSize,\n  getTrialLeft,\n  parseUrlToCode,\n  updateResolution,\n  useFigmaMessage,\n  useSubscription\n} from \"./chunk-3M45RMAS.mjs\";\nimport {\n  useDBTable\n} from \"./chunk-UMQJMRW4.mjs\";\nimport {\n  isValidUrl\n} from \"./chunk-2ZZ6H7J7.mjs\";\nimport {\n  useQueryState,\n  useURLQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  useFigma,\n  useFigmaPluginStore,\n  useUIStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __async,\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FigmaPlugin/UI.tsx\nimport {\n  useEffect,\n  useLayoutEffect,\n  useState,\n  useRef,\n  useCallback\n} from \"react\";\nimport { useAnimationControls, useInView } from \"framer-motion\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { createElement } from \"react\";\nfunction insertCanvasAsImage(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const [figma2] = useFigma();\n    const setError = useUIStore((state) => state.setError);\n    const [enabled, setEnabled] = useState(false);\n    useEffect(() => {\n      setEnabled(figma2.selection > 0);\n      if (figma2.selection > 0) setError(\"\");\n    }, [figma2.selection]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), {\n          cursor: enabled ? \"pointer\" : \"default\",\n          opacity: enabled ? 1 : 0.5,\n          PointerEvent: enabled ? \"auto\" : \"none\"\n        }),\n        onClick: () => {\n          if (enabled)\n            postFigmaMessageForSnapShot(\n              () => void 0,\n              figma2.nodeWidth,\n              figma2.nodeHeight\n            );\n          else setError(\"Please select a frame on the canvas\");\n        }\n      })\n    );\n  };\n}\nfunction OpenGIFPage(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const [figma2] = useFigma();\n    const enabled = figma2.selection > 0;\n    const setError = useUIStore((state) => state.setError);\n    const [, setRange] = useQueryState(\"range\");\n    const [, setRangeStart] = useQueryState(\"rangeStart\");\n    const [, setRangeEnd] = useQueryState(\"rangeEnd\");\n    const [, setToggleAxis] = useQueryState(\"toggleAxis\");\n    const [, setZoomOut] = useQueryState(\"zoomOut\");\n    const [, setAnimate] = useQueryState(\"animate\");\n    const setFigmaPage = useUIStore((state) => state.setFigmaPage);\n    useEffect(() => {\n      if (enabled) {\n        setError(\"\");\n      } else {\n        setError(\"Please select a frame on the canvas\");\n      }\n    }, [enabled]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), {\n          cursor: enabled ? \"pointer\" : \"default\",\n          opacity: enabled ? 1 : 0.5,\n          PointerEvent: enabled ? \"auto\" : \"none\"\n        }),\n        onClick: () => {\n          console.log(\"onClick GIF\");\n          setAnimate(\"on\");\n          setRange(\"enabled\");\n          setToggleAxis(false);\n          setZoomOut(false);\n          setFigmaPage(\"gif\");\n        },\n        onGIFNoDB: () => console.log(\"onGIFNoDB (ignore the default event)\"),\n        onGIF: () => console.log(\"onGIF (ignore the default event)\")\n      })\n    );\n  };\n}\nvar controller;\nvar trials = 7;\nfunction goBack(Component) {\n  return (props) => {\n    const figmaPage = useUIStore((state) => state.figmaPage);\n    const setFigmaPage = useUIStore((state) => state.setFigmaPage);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onClick: () => {\n          controller.abort();\n          if (figmaPage === \"gif\") setFigmaPage(\"control\");\n        }\n      })\n    );\n  };\n}\nfunction extractGIF(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    var _a2;\n    const [progress, setProgress] = useState(-1);\n    const setError = useUIStore((state) => state.setError);\n    const loading = progress >= 0 && progress < 1;\n    const controllerRef = useRef(null);\n    const [figma2] = useFigma();\n    const enabled = figma2.selection > 0;\n    const [animate, setAnimate] = useQueryState(\"animate\");\n    const [, setUTime] = useQueryState(\"uTime\");\n    const [range, setRange] = useQueryState(\"range\");\n    const [loop, setLoop] = useQueryState(\"loop\");\n    const [loopDuration, setLoopDuration] = useQueryState(\"loopDuration\");\n    const [rangeStart] = useQueryState(\"rangeStart\");\n    const [rangeEnd] = useQueryState(\"rangeEnd\");\n    const [frameRate] = useQueryState(\"frameRate\");\n    const [pixelDensity] = useQueryState(\"pixelDensity\");\n    const [destination] = useQueryState(\"destination\");\n    const [width, setWidth] = useState(333);\n    const [height, setHeight] = useState(333);\n    const [format] = useQueryState(\"format\");\n    const [grain] = useQueryState(\"grain\");\n    const error = useUIStore((state) => state.error);\n    const [duration, setDuration] = useState(0);\n    const [size, setSize] = useState(0);\n    const startTimeRef = useRef(0);\n    const animationFrameRef = useRef(null);\n    const figma_user_id = (_a2 = figma2.user) == null ? void 0 : _a2.id;\n    const {\n      rows,\n      loading: dbLoading,\n      insertRow,\n      updateRow\n    } = useDBTable(\"users\", \"sg-figma\", {\n      filter: { column: \"figma_user_id\", value: figma_user_id },\n      select: \"id, email, figma_user_id, trial_started_at\",\n      limit: 1,\n      enabled: !!figma_user_id\n    });\n    const userDB = rows[0] || null;\n    const trialLeft = getTrialLeft(userDB == null ? void 0 : userDB.trial_started_at, trials);\n    const [subscription, subDBLoading] = useSubscription(\"sub1\");\n    const needSubscribe = trialLeft <= 0 && !subDBLoading && !subscription;\n    useEffect(() => {\n      console.log(subscription, userDB, \"subscription, userDB\");\n      console.log(trialLeft);\n    }, [subscription, userDB]);\n    useEffect(() => {\n      console.log(destination, \"destination\");\n    }, [destination]);\n    const [titleText, setTitleText] = useState(\"\");\n    const supportsVideoOnCanvas = figma2.editorType === \"slides\" || figma2.editorType === \"buzz\";\n    useEffect(() => {\n      let newTitleText = \"Download\";\n      if (needSubscribe) {\n        newTitleText = \"Upgrade to Pro\";\n      } else if (destination === \"onCanvas\") {\n        if (supportsVideoOnCanvas && format === \"webm\") {\n          newTitleText = \"Add video to canvas\";\n        } else {\n          newTitleText = \"Add GIF to canvas\";\n        }\n      } else {\n        newTitleText = format === \"webm\" ? \"Download video\" : \"Download GIF\";\n      }\n      setTitleText(newTitleText);\n    }, [destination, needSubscribe, format, supportsVideoOnCanvas]);\n    const creditText = `(${trialLeft} days left)`;\n    useEffect(() => {\n      if (loop === \"on\" && loopDuration) {\n        setDuration(loopDuration);\n      } else {\n        setDuration(rangeEnd - rangeStart);\n      }\n    }, [rangeStart, rangeEnd, loop, loopDuration]);\n    useEffect(() => {\n      setSize(\n        estimateSize({\n          format,\n          duration,\n          frameRate,\n          nodeWidth: figma2.nodeWidth,\n          nodeHeight: figma2.nodeHeight\n        })\n      );\n      setTimeout(() => {\n        updateResolution({ setWidth, setHeight, pixelDensity });\n      }, 100);\n    }, [\n      format,\n      duration,\n      pixelDensity,\n      frameRate,\n      loop,\n      loopDuration,\n      figma2.nodeWidth,\n      figma2.nodeHeight\n    ]);\n    useLayoutEffect(() => {\n      function updateSize() {\n        updateResolution({ setWidth, setHeight, pixelDensity });\n      }\n      window.addEventListener(\"resize\", updateSize);\n      return () => window.removeEventListener(\"resize\", updateSize);\n    }, [pixelDensity]);\n    const valid = animate === \"on\" && range === \"enabled\" && size < 300;\n    const effectiveRangeEnd = loop === \"on\" && loopDuration ? loopDuration : rangeEnd;\n    const effectiveRangeStart = loop === \"on\" ? 0 : rangeStart;\n    const option = {\n      rangeStart: effectiveRangeStart,\n      rangeEnd: effectiveRangeEnd,\n      setAnimate,\n      setUTime,\n      frameRate,\n      destination,\n      format,\n      grain,\n      editorType: figma2.editorType,\n      nodeWidth: figma2.nodeWidth,\n      nodeHeight: figma2.nodeHeight\n    };\n    const updateTime = useCallback(() => {\n      if (!loading) return;\n      const elapsed = (Date.now() - startTimeRef.current) / 1e3;\n      const playhead = rangeStart + elapsed % duration;\n      setUTime(playhead);\n      animationFrameRef.current = requestAnimationFrame(updateTime);\n    }, [loading, rangeStart, duration, setUTime]);\n    useEffect(() => {\n      if (loading) {\n        startTimeRef.current = Date.now();\n        updateTime();\n      } else {\n        if (animationFrameRef.current) {\n          cancelAnimationFrame(animationFrameRef.current);\n        }\n      }\n      return () => {\n        if (animationFrameRef.current) {\n          cancelAnimationFrame(animationFrameRef.current);\n        }\n      };\n    }, [loading, updateTime]);\n    useEffect(() => {\n      return () => {\n        if (controllerRef.current) {\n          controllerRef.current.abort();\n        }\n      };\n    }, []);\n    const handleAbort = useCallback(() => {\n      if (controllerRef.current) {\n        controllerRef.current.abort();\n        setProgress(-1);\n        setAnimate(\"on\");\n        console.log(\"Export aborted\");\n      }\n    }, [setAnimate]);\n    const startExport = useCallback(() => {\n      controllerRef.current = new AbortController();\n      setRange(\"enabled\");\n      if (enabled && valid) {\n        if (needSubscribe) {\n          props == null ? void 0 : props.onTapGIFUpgrade();\n          console.log(\"onTapGIFUpgrade\");\n        } else {\n          if (!userDB) {\n            props == null ? void 0 : props.onTapGIFNoDB();\n            console.log(\"onTapGIFNoDB\");\n          } else {\n            setProgress(0);\n            startTimeRef.current = Date.now();\n            console.log(\"startTime\", startTimeRef.current);\n            if (subscription || trialLeft > 0) {\n              postFigmaMessageForExport(\n                option,\n                setProgress,\n                controllerRef.current\n              );\n            } else {\n              console.log(\"No valid subscription or trial\");\n              props == null ? void 0 : props.onTapGIFUpgrade();\n            }\n          }\n        }\n      } else {\n        props == null ? void 0 : props.onTapGIF();\n      }\n    }, [\n      enabled,\n      valid,\n      needSubscribe,\n      userDB,\n      option,\n      setProgress,\n      setRange,\n      props,\n      subscription,\n      trialLeft\n    ]);\n    let variant = \"dbLoading\";\n    if (loading) variant = \"loading\";\n    else if (size > 300) variant = \"error\";\n    else if (!enabled) variant = \"error\";\n    else if (!subDBLoading && !subscription) variant = \"default\";\n    else if (!subDBLoading && subscription) variant = \"pro\";\n    else if (needSubscribe) variant = \"upgrade\";\n    useEffect(() => {\n      if (!enabled) {\n        setError(\"Select a frame on the canvas\");\n      } else if (size > 300) {\n        setError(\"You can only add GIF under 300mb on canvas\");\n      } else {\n        setError(\"\");\n      }\n    }, [enabled, size, setError]);\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ createElement(\n        Component,\n        __spreadProps(__spreadValues({}, props), {\n          key: progress,\n          style: __spreadProps(__spreadValues({}, style), { cursor: \"pointer\" }),\n          onClick: startExport,\n          onTapGIFUpgrade: () => console.log(\"onTapGIFU (ignore the default event)\"),\n          onTapGIFNoDB: () => console.log(\"onTapGIFN (ignore the default event)\"),\n          progress: progress * 100,\n          title: error !== \"\" ? error : titleText,\n          credit: !subscription ? creditText : null,\n          variant\n        })\n      ),\n      variant === \"loading\" && /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          onClick: handleAbort,\n          style: {\n            position: \"absolute\",\n            width: \"100%\",\n            height: \"100%\",\n            top: 0,\n            left: 0,\n            cursor: \"wait\"\n          }\n        }\n      )\n    ] });\n  };\n}\nfunction Timeline(Component) {\n  return (_a) => {\n    var props = __objRest(_a, []);\n    const controls = useAnimationControls();\n    const [rangeStart] = useQueryState(\"rangeStart\");\n    const [rangeEnd] = useQueryState(\"rangeEnd\");\n    const [loop] = useQueryState(\"loop\");\n    const [loopDuration] = useQueryState(\"loopDuration\");\n    const [duration, setDuration] = useState(0);\n    useEffect(() => {\n      if (loop === \"on\" && loopDuration) {\n        setDuration(loopDuration);\n      } else if (rangeStart !== void 0 && rangeEnd !== void 0) {\n        setDuration(rangeEnd - rangeStart);\n      }\n    }, [rangeStart, rangeEnd, loop, loopDuration]);\n    useEffect(() => {\n      const runSequence = () => __async(this, null, function* () {\n        try {\n          controls.set({ width: \"0%\", transition: { duration: 0 } });\n          yield controls.start({\n            width: \"100%\",\n            transition: {\n              duration,\n              repeat: Infinity,\n              repeatType: \"loop\",\n              ease: \"linear\"\n            }\n          });\n        } catch (error) {\n          console.error(\"Timeline animation error:\", error);\n        }\n      });\n      runSequence();\n    }, [duration, controls, loop]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { animate: controls }));\n  };\n}\nfunction EstimatedSize(Component) {\n  return (_a) => {\n    var props = __objRest(_a, []);\n    const [rangeStart] = useQueryState(\"rangeStart\");\n    const [rangeEnd] = useQueryState(\"rangeEnd\");\n    const [frameRate] = useQueryState(\"frameRate\");\n    const [pixelDensity] = useQueryState(\"pixelDensity\");\n    const [format] = useQueryState(\"format\");\n    const [destination] = useQueryState(\"destination\");\n    const [loop] = useQueryState(\"loop\");\n    const [loopDuration] = useQueryState(\"loopDuration\");\n    const [figma2] = useFigma();\n    const [duration, setDuration] = useState(rangeEnd - rangeStart);\n    const [size, setSize] = useState(0);\n    const setError = useUIStore((state) => state.setError);\n    const figmaPage = useUIStore((state) => state.figmaPage);\n    useEffect(() => {\n      if (loop === \"on\" && loopDuration) {\n        setDuration(loopDuration);\n      } else {\n        setDuration(rangeEnd - rangeStart);\n      }\n    }, [rangeStart, rangeEnd, loop, loopDuration]);\n    useEffect(() => {\n      setSize(\n        estimateSize({\n          format,\n          duration,\n          frameRate,\n          nodeWidth: figma2.nodeWidth,\n          nodeHeight: figma2.nodeHeight\n        })\n      );\n    }, [format, duration, frameRate, figma2.nodeWidth, figma2.nodeHeight]);\n    useEffect(() => {\n      if (size > 300 && destination === \"onCanvas\" && figmaPage === \"gif\") {\n        setError(\"GIF size should be below 300MB on Figma.\");\n      } else {\n        setError(\"\");\n      }\n    }, [size, destination]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: size + \"MB\" }));\n  };\n}\nfunction TimelineWrapper(Component) {\n  return (_a) => {\n    var props = __objRest(_a, []);\n    const [animate] = useQueryState(\"animate\");\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        style: {\n          display: animate === \"on\" ? \"block\" : \"none\",\n          width: \"100%\",\n          height: \"100%\"\n        },\n        children: /* @__PURE__ */ jsx(Component, __spreadValues({}, props))\n      }\n    );\n  };\n}\nfunction Duration(Component) {\n  return (_a) => {\n    var props = __objRest(_a, []);\n    const [rangeStart] = useQueryState(\"rangeStart\");\n    const [rangeEnd] = useQueryState(\"rangeEnd\");\n    const [loop] = useQueryState(\"loop\");\n    const [loopDuration] = useQueryState(\"loopDuration\");\n    const [duration, setDuration] = useState(rangeEnd - rangeStart);\n    useEffect(() => {\n      if (loop === \"on\" && loopDuration) {\n        setDuration(loopDuration);\n      } else {\n        setDuration(rangeEnd - rangeStart);\n      }\n    }, [rangeEnd, rangeStart, loop, loopDuration]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: duration + \"s\" }));\n  };\n}\nfunction UndoButton(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const setQueryValue = useURLQueryState();\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), { cursor: \"pointer\" }),\n        onClick: () => {\n          const prevUrls = window.history.state.prevUrls || [];\n          if (prevUrls.length > 1) {\n            prevUrls.pop();\n            const lastURL = new URL(prevUrls[prevUrls.length - 1]).search;\n            setQueryValue(lastURL);\n            console.log(lastURL, \"lastURL\");\n            prevUrls.pop();\n            window.history.pushState({ prevUrls }, document.title, \"\");\n          } else alert(\"no history\");\n        }\n      })\n    );\n  };\n}\nfunction Error(Component) {\n  return (_a) => {\n    var props = __objRest(_a, []);\n    const error = useUIStore((state) => state.error);\n    const [variant, setVariant] = useState(\"hidden\");\n    useEffect(() => {\n      if (error !== \"\") {\n        setVariant(\"onError\");\n      } else {\n        setVariant(\"hidden\");\n      }\n    }, [error]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        errorText: error,\n        variant: error === \"\" ? \"hidden\" : \"onError\"\n      })\n    );\n  };\n}\nfunction ToggleShare(Component) {\n  return (_a) => {\n    var props = __objRest(_a, []);\n    const share = useFigmaPluginStore((state) => state.share);\n    const setShare = useFigmaPluginStore((state) => state.setShare);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: share,\n        onClickUrl: () => {\n          var _a2;\n          setShare(\"url\");\n          (_a2 = props.onClickUrl) == null ? void 0 : _a2.call(props);\n        },\n        onClickCode: () => {\n          var _a2;\n          setShare(\"code\");\n          (_a2 = props.onClickCode) == null ? void 0 : _a2.call(props);\n        }\n      })\n    );\n  };\n}\nfunction ShowCopyContent(Component) {\n  return (props) => {\n    const baseURL = \"https://shadergradient.co/customize\";\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        copyContent: baseURL + window.location.search,\n        copyEvent: () => {\n          navigator.clipboard.writeText(\n            parseUrlToCode(baseURL + window.location.search)\n          );\n        }\n      })\n    );\n  };\n}\nfunction CopyBtn(Component) {\n  return (props) => {\n    const share = useFigmaPluginStore((state) => state.share);\n    const [copied, setCopied] = useState(false);\n    const baseURL = \"https://shadergradient.co/customize\";\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        btnText: `${copied === false ? \"Copy \" : \"Yay, copied \"}${share === \"url\" ? \"URL\" : \"code\"}${copied === false ? \"\" : \"!\"}`,\n        onClick: () => __async(this, null, function* () {\n          setCopied(true);\n          const textToCopy = share === \"url\" ? baseURL + window.location.search : parseUrlToCode(baseURL + window.location.search);\n          copyToClipboard(textToCopy);\n          setTimeout(() => {\n            setCopied(false);\n          }, 2e3);\n        })\n      })\n    );\n  };\n}\nfunction TabSwitcher(Component) {\n  return (props) => {\n    const currentTab = useFigmaPluginStore((state) => state.currentTab);\n    const setScrollingTo = useFigmaPluginStore((state) => state.setScrollingTo);\n    const scrollBehavior = { behavior: \"smooth\", block: \"start\" };\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: \"Tab\" + currentTab,\n        tab0Click: () => {\n          setScrollingTo(0);\n          const tab0 = document.getElementById(\"tab0\");\n          tab0.scrollIntoView(scrollBehavior);\n        },\n        tab1Click: () => {\n          setScrollingTo(1);\n          const tab1 = document.getElementById(\"tab1\");\n          tab1.scrollIntoView(scrollBehavior);\n        },\n        tab2Click: () => {\n          setScrollingTo(2);\n          const tab2 = document.getElementById(\"tab2\");\n          tab2.scrollIntoView(scrollBehavior);\n        },\n        tab3Click: () => {\n          setScrollingTo(3);\n          const tab3 = document.getElementById(\"tab3\");\n          tab3.scrollIntoView(scrollBehavior);\n        }\n      })\n    );\n  };\n}\nfunction ShapeTab(Component) {\n  return (props) => {\n    const scrollingTo = useFigmaPluginStore((state) => state.scrollingTo);\n    const setCurrentTab = useFigmaPluginStore((state) => state.setCurrentTab);\n    const setScrollingTo = useFigmaPluginStore((state) => state.setScrollingTo);\n    const ref = useRef(null);\n    const isInView = useInView(ref, {\n      amount: 0.6\n      // at least 60% in view to be considered visible\n    });\n    useEffect(() => {\n      if (isInView && scrollingTo === null) {\n        setCurrentTab(0);\n      } else if (isInView && scrollingTo === 0) {\n        setCurrentTab(0);\n        setTimeout(() => {\n          setScrollingTo(null);\n        }, 100);\n      }\n    }, [isInView, scrollingTo]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref, id: \"tab0\" }));\n  };\n}\nfunction ColorsTab(Component) {\n  return (props) => {\n    const scrollingTo = useFigmaPluginStore((state) => state.scrollingTo);\n    const setCurrentTab = useFigmaPluginStore((state) => state.setCurrentTab);\n    const setScrollingTo = useFigmaPluginStore((state) => state.setScrollingTo);\n    const ref = useRef(null);\n    const isInView = useInView(ref, {\n      amount: 0.6\n      // at least 60% in view to be considered visible\n    });\n    useEffect(() => {\n      if (isInView && scrollingTo === null) {\n        setCurrentTab(1);\n      } else if (isInView && scrollingTo === 1) {\n        setCurrentTab(1);\n        setTimeout(() => {\n          setScrollingTo(null);\n        }, 100);\n      }\n    }, [isInView, scrollingTo]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref, id: \"tab1\" }));\n  };\n}\nfunction MotionTab(Component) {\n  return (props) => {\n    const scrollingTo = useFigmaPluginStore((state) => state.scrollingTo);\n    const setCurrentTab = useFigmaPluginStore((state) => state.setCurrentTab);\n    const setScrollingTo = useFigmaPluginStore((state) => state.setScrollingTo);\n    const ref = useRef(null);\n    const isInView = useInView(ref, {\n      amount: 0.6\n      // at least 60% in view to be considered visible\n    });\n    useEffect(() => {\n      if (isInView && scrollingTo === null) {\n        setCurrentTab(2);\n      } else if (isInView && scrollingTo === 2) {\n        setCurrentTab(2);\n        setTimeout(() => {\n          setScrollingTo(null);\n        }, 100);\n      }\n    }, [isInView, scrollingTo]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref, id: \"tab2\" }));\n  };\n}\nfunction ViewTab(Component) {\n  return (props) => {\n    const scrollingTo = useFigmaPluginStore((state) => state.scrollingTo);\n    const setCurrentTab = useFigmaPluginStore((state) => state.setCurrentTab);\n    const setScrollingTo = useFigmaPluginStore((state) => state.setScrollingTo);\n    const ref = useRef(null);\n    const isInView = useInView(ref, {\n      amount: 0.6\n      // at least 60% in view to be considered visible\n    });\n    useEffect(() => {\n      if (isInView && scrollingTo === null) {\n        setCurrentTab(3);\n      } else if (isInView && scrollingTo === 3) {\n        setCurrentTab(3);\n        setTimeout(() => {\n          setScrollingTo(null);\n        }, 100);\n      }\n    }, [isInView, scrollingTo]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { ref, id: \"tab3\" }));\n  };\n}\nfunction HighlightButton(Component) {\n  return (props) => {\n    const currentTab = useFigmaPluginStore((state) => state.currentTab);\n    const easyView = useFigmaPluginStore((state) => state.easyView);\n    const setEasyView = useFigmaPluginStore((state) => state.setEasyView);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: currentTab === 3 && easyView === false ? \"ToggleBtn - Highlight\" : easyView === true ? \"ToggleBtn - Clicked\" : \"ToggleBtn - Default\",\n        onClick: () => {\n          setEasyView(!easyView);\n        }\n      })\n    );\n  };\n}\nfunction EasyViewInfo(Component) {\n  return (props) => {\n    const easyView = useFigmaPluginStore((state) => state.easyView);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        style: {\n          display: easyView === true ? \"flex\" : \"none\",\n          width: \"fit-content\",\n          height: \"fit-content\"\n        },\n        children: /* @__PURE__ */ jsx(Component, __spreadValues({}, props))\n      }\n    );\n  };\n}\nfunction StatelessOverride(Component) {\n  return (props) => {\n    const easyView = useFigmaPluginStore((state) => state.easyView);\n    const [loop, setLoop] = useQueryState(\"loop\");\n    const [loopDuration, setLoopDuration] = useQueryState(\"loopDuration\");\n    const [range, setRange] = useQueryState(\"range\");\n    const [rangeStart, setRangeStart] = useQueryState(\"rangeStart\");\n    const [rangeEnd, setRangeEnd] = useQueryState(\"rangeEnd\");\n    useEffect(() => {\n      if (range === \"enabled\" && (loop === void 0 || loop === null)) {\n        setLoop(\"on\");\n        if (rangeEnd && (loopDuration === void 0 || loopDuration === null)) {\n          setLoopDuration(rangeEnd);\n        }\n      } else if (loop === void 0 || loop === null) {\n        setLoop(\"on\");\n      }\n      if (loopDuration === void 0 || loopDuration === null) {\n        setLoopDuration(10);\n      }\n    }, [loop, loopDuration, range, rangeEnd]);\n    useEffect(() => {\n      if (loop === \"on\" && loopDuration) {\n        setRange(\"enabled\");\n        setRangeStart(0);\n        setRangeEnd(loopDuration);\n      }\n    }, [loop, loopDuration]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        pointerEvents: easyView === true ? \"auto\" : \"none\"\n      })\n    );\n  };\n}\nfunction LoadViewAfterStyleSheet(Component) {\n  return (props) => {\n    useFigmaMessage();\n    const [foundStylesheet, setFoundStylesheet] = useState(true);\n    useEffect(() => {\n      const interval = setInterval(() => {\n        const stylesheet = document.getElementById(\"shadergradient-app-styles\");\n        if (stylesheet) setFoundStylesheet(true);\n      }, 200);\n      return () => clearInterval(interval);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, props.style), {\n          opacity: foundStylesheet ? 1 : 0,\n          zIndex: 2147483640\n        })\n      })\n    );\n  };\n}\nfunction ConnectFigmaMessage(Component) {\n  return (props) => {\n    useFigmaMessage();\n    return /* @__PURE__ */ jsx(Component, __spreadValues({}, props));\n  };\n}\nfunction WidthFillOnLoad(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { style: __spreadProps(__spreadValues({}, style), { width: \"100%\" }) }));\n  };\n}\nfunction createRectangle(Component) {\n  return (props) => {\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onClick: () => __async(this, null, function* () {\n          postFigmaMessage(() => {\n            const ellipse = figma.createRectangle();\n            ellipse.resize(300, 300);\n          });\n        })\n      })\n    );\n  };\n}\nfunction FigmaUrlInput(Component) {\n  return (props) => {\n    const setQueryValue = useURLQueryState();\n    const setUrlInput = useUIStore((state) => state.setUrlInput);\n    const [, setLoop] = useQueryState(\"loop\");\n    const [, setLoopDuration] = useQueryState(\"loopDuration\");\n    const [value, setValue] = useState(\"\");\n    const [valid, setValid] = useState(true);\n    let variant = \"default\";\n    if (value) {\n      if (valid) variant = \"valid\";\n      else variant = \"invalid\";\n    }\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onChange: (e) => {\n          const inputValue = e.target.value;\n          setValue(inputValue);\n          if (isValidUrl(inputValue)) {\n            setValid(true);\n            const urlParams = new URLSearchParams(\n              inputValue.split(\"?\")[1] || \"\"\n            );\n            const hasRange = urlParams.get(\"range\") === \"enabled\";\n            setQueryValue(inputValue);\n            setUrlInput(inputValue);\n            if (hasRange) {\n              setLoop(\"on\");\n              setLoopDuration(10);\n            }\n          } else {\n            setValid(false);\n          }\n        }\n      })\n    );\n  };\n}\nfunction DestinationControl(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const [destination, setDestination] = useQueryState(\"destination\");\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), { width: \"100%\" }),\n        variant: destination === \"onCanvas\" ? \"onCanvas\" : \"localFile\",\n        onTapOnCanvas: () => setDestination(\"onCanvas\"),\n        onTapLocalFile: () => setDestination(\"localFile\")\n      })\n    );\n  };\n}\nfunction FormatControl(Component) {\n  return (_a) => {\n    var _b = _a, { style } = _b, props = __objRest(_b, [\"style\"]);\n    const [figma2] = useFigma();\n    const [destination] = useQueryState(\"destination\");\n    const [format, setFormat] = useQueryState(\"format\");\n    const supportsVideoOnCanvas = figma2.editorType === \"slides\" || figma2.editorType === \"buzz\";\n    const showFormatControl = destination === \"localFile\" || supportsVideoOnCanvas;\n    useEffect(() => {\n      if (format === \"webm\" && !showFormatControl) {\n        setFormat(\"gif\");\n      }\n    }, [destination, showFormatControl, format, setFormat]);\n    useEffect(() => {\n      if (supportsVideoOnCanvas && destination === \"onCanvas\") {\n        setFormat(\"webm\");\n      }\n    }, [destination, supportsVideoOnCanvas, setFormat]);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, style), {\n          display: showFormatControl ? \"flex\" : \"none\",\n          width: \"100%\"\n        })\n      })\n    );\n  };\n}\nfunction ExportLoadingOverlay(Component) {\n  return (props) => {\n    const isExporting = useUIStore((state) => state.isExporting);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        style: __spreadProps(__spreadValues({}, props.style), {\n          display: isExporting ? \"flex\" : \"none\",\n          opacity: isExporting ? 1 : 0,\n          transition: \"opacity 0.3s ease-in-out\"\n        })\n      })\n    );\n  };\n}\n\nexport {\n  insertCanvasAsImage,\n  OpenGIFPage,\n  goBack,\n  extractGIF,\n  Timeline,\n  EstimatedSize,\n  TimelineWrapper,\n  Duration,\n  UndoButton,\n  Error,\n  ToggleShare,\n  ShowCopyContent,\n  CopyBtn,\n  TabSwitcher,\n  ShapeTab,\n  ColorsTab,\n  MotionTab,\n  ViewTab,\n  HighlightButton,\n  EasyViewInfo,\n  StatelessOverride,\n  LoadViewAfterStyleSheet,\n  ConnectFigmaMessage,\n  WidthFillOnLoad,\n  createRectangle,\n  FigmaUrlInput,\n  DestinationControl,\n  FormatControl,\n  ExportLoadingOverlay\n};\n","import {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/Spacing.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar Spacing = (_a) => {\n  var _b = _a, { guide = false, className = \"w-3 h-3\" } = _b, props = __objRest(_b, [\"guide\", \"className\"]);\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    __spreadProps(__spreadValues({}, props), {\n      className,\n      style: {\n        position: \"relative\",\n        background: \"hsl(100, 37%, 79%)\",\n        opacity: \"var(--guide-opacity)\"\n      },\n      children: /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          style: {\n            position: \"absolute\",\n            top: \"50%\",\n            left: \"50%\",\n            transform: \"translate(-50%, -50%)\",\n            whiteSpace: \"nowrap\",\n            fontSize: \"8px\"\n          },\n          children: guide && className\n        }\n      )\n    })\n  );\n};\n\nexport {\n  Spacing\n};\n","// ../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function(n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\n\n// ../../node_modules/.pnpm/@uiw+color-convert@1.4.3_@babel+runtime@7.27.0/node_modules/@uiw/color-convert/esm/utils.js\nvar validHex = (hex) => /^#?([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n\n// ../../node_modules/.pnpm/@uiw+color-convert@1.4.3_@babel+runtime@7.27.0/node_modules/@uiw/color-convert/esm/index.js\nvar RGB_MAX = 255;\nvar HUE_MAX = 360;\nvar SV_MAX = 100;\nvar rgbaToHsva = (_ref) => {\n  var {\n    r,\n    g,\n    b,\n    a\n  } = _ref;\n  var max = Math.max(r, g, b);\n  var delta = max - Math.min(r, g, b);\n  var hh = delta ? max === r ? (g - b) / delta : max === g ? 2 + (b - r) / delta : 4 + (r - g) / delta : 0;\n  return {\n    h: 60 * (hh < 0 ? hh + 6 : hh),\n    s: max ? delta / max * SV_MAX : 0,\n    v: max / RGB_MAX * SV_MAX,\n    a\n  };\n};\nvar hsvaToHslaString = (hsva) => {\n  var {\n    h,\n    s,\n    l,\n    a\n  } = hsvaToHsla(hsva);\n  return \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + a + \")\";\n};\nvar hsvaToHsla = (_ref5) => {\n  var {\n    h,\n    s,\n    v,\n    a\n  } = _ref5;\n  var hh = (200 - s) * v / SV_MAX;\n  return {\n    h,\n    s: hh > 0 && hh < 200 ? s * v / SV_MAX / (hh <= SV_MAX ? hh : 200 - hh) * SV_MAX : 0,\n    l: hh / 2,\n    a\n  };\n};\nvar angleUnits = {\n  grad: HUE_MAX / 400,\n  turn: HUE_MAX,\n  rad: HUE_MAX / (Math.PI * 2)\n};\nvar rgbaToHex = (_ref6) => {\n  var {\n    r,\n    g,\n    b\n  } = _ref6;\n  var bin = r << 16 | g << 8 | b;\n  return \"#\" + ((h) => new Array(7 - h.length).join(\"0\") + h)(bin.toString(16));\n};\nvar rgbaToHexa = (_ref7) => {\n  var {\n    r,\n    g,\n    b,\n    a\n  } = _ref7;\n  var alpha = typeof a === \"number\" && (a * 255 | 1 << 8).toString(16).slice(1);\n  return \"\" + rgbaToHex({\n    r,\n    g,\n    b,\n    a\n  }) + (alpha ? alpha : \"\");\n};\nvar hexToHsva = (hex) => rgbaToHsva(hexToRgba(hex));\nvar hexToRgba = (hex) => {\n  var htemp = hex.replace(\"#\", \"\");\n  if (/^#?/.test(hex) && htemp.length === 3) {\n    hex = \"#\" + htemp.charAt(0) + htemp.charAt(0) + htemp.charAt(1) + htemp.charAt(1) + htemp.charAt(2) + htemp.charAt(2);\n  }\n  var reg = new RegExp(\"[A-Za-z0-9]{2}\", \"g\");\n  var [r, g, b = 0, a] = hex.match(reg).map((v) => parseInt(v, 16));\n  return {\n    r,\n    g,\n    b,\n    a: (a != null ? a : 255) / RGB_MAX\n  };\n};\nvar hsvaToRgba = (_ref8) => {\n  var {\n    h,\n    s,\n    v,\n    a\n  } = _ref8;\n  var _h = h / 60, _s = s / SV_MAX, _v = v / SV_MAX, hi = Math.floor(_h) % 6;\n  var f = _h - Math.floor(_h), _p = RGB_MAX * _v * (1 - _s), _q = RGB_MAX * _v * (1 - _s * f), _t = RGB_MAX * _v * (1 - _s * (1 - f));\n  _v *= RGB_MAX;\n  var rgba = {};\n  switch (hi) {\n    case 0:\n      rgba.r = _v;\n      rgba.g = _t;\n      rgba.b = _p;\n      break;\n    case 1:\n      rgba.r = _q;\n      rgba.g = _v;\n      rgba.b = _p;\n      break;\n    case 2:\n      rgba.r = _p;\n      rgba.g = _v;\n      rgba.b = _t;\n      break;\n    case 3:\n      rgba.r = _p;\n      rgba.g = _q;\n      rgba.b = _v;\n      break;\n    case 4:\n      rgba.r = _t;\n      rgba.g = _p;\n      rgba.b = _v;\n      break;\n    case 5:\n      rgba.r = _v;\n      rgba.g = _p;\n      rgba.b = _q;\n      break;\n  }\n  rgba.r = Math.round(rgba.r);\n  rgba.g = Math.round(rgba.g);\n  rgba.b = Math.round(rgba.b);\n  return _extends({}, rgba, {\n    a\n  });\n};\nvar rgbaToRgb = (_ref9) => {\n  var {\n    r,\n    g,\n    b\n  } = _ref9;\n  return {\n    r,\n    g,\n    b\n  };\n};\nvar hslaToHsl = (_ref10) => {\n  var {\n    h,\n    s,\n    l\n  } = _ref10;\n  return {\n    h,\n    s,\n    l\n  };\n};\nvar hsvaToHex = (hsva) => rgbaToHex(hsvaToRgba(hsva));\nvar hsvaToHsv = (_ref11) => {\n  var {\n    h,\n    s,\n    v\n  } = _ref11;\n  return {\n    h,\n    s,\n    v\n  };\n};\nvar color = (str) => {\n  var rgb;\n  var hsl;\n  var hsv;\n  var rgba;\n  var hsla;\n  var hsva;\n  var hex;\n  var hexa;\n  if (typeof str === \"string\" && validHex(str)) {\n    hsva = hexToHsva(str);\n    hex = str;\n  } else if (typeof str !== \"string\") {\n    hsva = str;\n  }\n  if (hsva) {\n    hsv = hsvaToHsv(hsva);\n    hsla = hsvaToHsla(hsva);\n    rgba = hsvaToRgba(hsva);\n    hexa = rgbaToHexa(rgba);\n    hex = hsvaToHex(hsva);\n    hsl = hslaToHsl(hsla);\n    rgb = rgbaToRgb(rgba);\n  }\n  return {\n    rgb,\n    hsl,\n    hsv,\n    rgba,\n    hsla,\n    hsva,\n    hex,\n    hexa\n  };\n};\n\n// ../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\nfunction _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\n\n// ../../node_modules/.pnpm/@uiw+react-color-shade-slider@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-shade-slider/esm/index.js\nimport React4 from \"react\";\n\n// ../../node_modules/.pnpm/@uiw+react-color-alpha@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-alpha/esm/index.js\nimport React3 from \"react\";\n\n// ../../node_modules/.pnpm/@uiw+react-drag-event-interactive@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-drag-event-interactive/esm/index.js\nimport React, { useRef as useRef2, useState, useCallback as useCallback2, useEffect as useEffect2 } from \"react\";\n\n// ../../node_modules/.pnpm/@uiw+react-drag-event-interactive@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-drag-event-interactive/esm/utils.js\nimport { useRef, useEffect, useCallback } from \"react\";\nfunction useEventCallback(handler) {\n  var callbackRef = useRef(handler);\n  useEffect(() => {\n    callbackRef.current = handler;\n  });\n  return useCallback((value, event) => callbackRef.current && callbackRef.current(value, event), []);\n}\nvar isTouch = (event) => \"touches\" in event;\nvar preventDefaultMove = (event) => {\n  !isTouch(event) && event.preventDefault && event.preventDefault();\n};\nvar clamp = function clamp2(number, min, max) {\n  if (min === void 0) {\n    min = 0;\n  }\n  if (max === void 0) {\n    max = 1;\n  }\n  return number > max ? max : number < min ? min : number;\n};\nvar getRelativePosition = (node, event) => {\n  var rect = node.getBoundingClientRect();\n  var pointer = isTouch(event) ? event.touches[0] : event;\n  return {\n    left: clamp((pointer.pageX - (rect.left + window.pageXOffset)) / rect.width),\n    top: clamp((pointer.pageY - (rect.top + window.pageYOffset)) / rect.height),\n    width: rect.width,\n    height: rect.height,\n    x: pointer.pageX - (rect.left + window.pageXOffset),\n    y: pointer.pageY - (rect.top + window.pageYOffset)\n  };\n};\n\n// ../../node_modules/.pnpm/@uiw+react-drag-event-interactive@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-drag-event-interactive/esm/index.js\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar _excluded = [\"prefixCls\", \"className\", \"onMove\", \"onDown\"];\nvar Interactive = /* @__PURE__ */ React.forwardRef((props, ref) => {\n  var {\n    prefixCls = \"w-color-interactive\",\n    className,\n    onMove,\n    onDown\n  } = props, reset = _objectWithoutPropertiesLoose(props, _excluded);\n  var container = useRef2(null);\n  var hasTouched = useRef2(false);\n  var [isDragging, setDragging] = useState(false);\n  var onMoveCallback = useEventCallback(onMove);\n  var onKeyCallback = useEventCallback(onDown);\n  var isValid = (event) => {\n    if (hasTouched.current && !isTouch(event)) return false;\n    hasTouched.current = isTouch(event);\n    return true;\n  };\n  var handleMove = useCallback2((event) => {\n    preventDefaultMove(event);\n    var isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n    if (isDown && container.current) {\n      onMoveCallback && onMoveCallback(getRelativePosition(container.current, event), event);\n    } else {\n      setDragging(false);\n    }\n  }, [onMoveCallback]);\n  var handleMoveEnd = useCallback2(() => setDragging(false), []);\n  var toggleDocumentEvents = useCallback2((state) => {\n    var toggleEvent = state ? window.addEventListener : window.removeEventListener;\n    toggleEvent(hasTouched.current ? \"touchmove\" : \"mousemove\", handleMove);\n    toggleEvent(hasTouched.current ? \"touchend\" : \"mouseup\", handleMoveEnd);\n  }, []);\n  useEffect2(() => {\n    toggleDocumentEvents(isDragging);\n    return () => {\n      isDragging && toggleDocumentEvents(false);\n    };\n  }, [isDragging, toggleDocumentEvents]);\n  var handleMoveStart = useCallback2((event) => {\n    preventDefaultMove(event.nativeEvent);\n    if (!isValid(event.nativeEvent)) return;\n    onKeyCallback && onKeyCallback(getRelativePosition(container.current, event.nativeEvent), event.nativeEvent);\n    setDragging(true);\n  }, [onKeyCallback]);\n  return /* @__PURE__ */ _jsx(\"div\", _extends({}, reset, {\n    className: [prefixCls, className || \"\"].filter(Boolean).join(\" \"),\n    style: _extends({}, reset.style, {\n      touchAction: \"none\"\n    }),\n    ref: container,\n    tabIndex: 0,\n    onMouseDown: handleMoveStart,\n    onTouchStart: handleMoveStart\n  }));\n});\nInteractive.displayName = \"Interactive\";\nvar esm_default = Interactive;\n\n// ../../node_modules/.pnpm/@uiw+react-color-alpha@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-alpha/esm/Pointer.js\nimport React2 from \"react\";\nimport { jsx as _jsx2 } from \"react/jsx-runtime\";\nvar _excluded2 = [\"className\", \"prefixCls\", \"left\", \"top\", \"style\", \"fillProps\"];\nvar Pointer = (_ref) => {\n  var {\n    className,\n    prefixCls,\n    left,\n    top,\n    style,\n    fillProps\n  } = _ref, reset = _objectWithoutPropertiesLoose(_ref, _excluded2);\n  var styleWrapper = _extends({}, style, {\n    position: \"absolute\",\n    left,\n    top\n  });\n  var stylePointer = _extends({\n    width: 18,\n    height: 18,\n    boxShadow: \"var(--alpha-pointer-box-shadow)\",\n    borderRadius: \"50%\",\n    backgroundColor: \"var(--alpha-pointer-background-color)\"\n  }, fillProps == null ? void 0 : fillProps.style, {\n    transform: left ? \"translate(-9px, -1px)\" : \"translate(-1px, -9px)\"\n  });\n  return /* @__PURE__ */ _jsx2(\"div\", _extends({\n    className: prefixCls + \"-pointer \" + (className || \"\"),\n    style: styleWrapper\n  }, reset, {\n    children: /* @__PURE__ */ _jsx2(\"div\", _extends({\n      className: prefixCls + \"-fill\"\n    }, fillProps, {\n      style: stylePointer\n    }))\n  }));\n};\n\n// ../../node_modules/.pnpm/@uiw+react-color-alpha@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-alpha/esm/index.js\nimport { jsx as _jsx3 } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nvar _excluded3 = [\"prefixCls\", \"className\", \"hsva\", \"background\", \"bgProps\", \"innerProps\", \"pointerProps\", \"radius\", \"width\", \"height\", \"direction\", \"style\", \"onChange\", \"pointer\"];\nvar BACKGROUND_IMG = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\";\nvar Alpha = /* @__PURE__ */ React3.forwardRef((props, ref) => {\n  var {\n    prefixCls = \"w-color-alpha\",\n    className,\n    hsva,\n    background,\n    bgProps = {},\n    innerProps = {},\n    pointerProps = {},\n    radius = 0,\n    width,\n    height = 16,\n    direction = \"horizontal\",\n    style,\n    onChange,\n    pointer\n  } = props, other = _objectWithoutPropertiesLoose(props, _excluded3);\n  var handleChange = (offset) => {\n    onChange && onChange(_extends({}, hsva, {\n      a: direction === \"horizontal\" ? offset.left : offset.top\n    }), offset);\n  };\n  var colorTo = hsvaToHslaString(Object.assign({}, hsva, {\n    a: 1\n  }));\n  var innerBackground = \"linear-gradient(to \" + (direction === \"horizontal\" ? \"right\" : \"bottom\") + \", rgba(244, 67, 54, 0) 0%, \" + colorTo + \" 100%)\";\n  var comProps = {};\n  if (direction === \"horizontal\") {\n    comProps.left = hsva.a * 100 + \"%\";\n  } else {\n    comProps.top = hsva.a * 100 + \"%\";\n  }\n  var styleWrapper = _extends({\n    \"--alpha-background-color\": \"#fff\",\n    \"--alpha-pointer-background-color\": \"rgb(248, 248, 248)\",\n    \"--alpha-pointer-box-shadow\": \"rgb(0 0 0 / 37%) 0px 1px 4px 0px\",\n    borderRadius: radius,\n    background: \"url(\" + BACKGROUND_IMG + \") left center\",\n    backgroundColor: \"var(--alpha-background-color)\"\n  }, style, {\n    position: \"relative\"\n  }, {\n    width,\n    height\n  });\n  var pointerElement = pointer && typeof pointer === \"function\" ? pointer(_extends({\n    prefixCls\n  }, pointerProps, comProps)) : /* @__PURE__ */ _jsx3(Pointer, _extends({}, pointerProps, {\n    prefixCls\n  }, comProps));\n  return /* @__PURE__ */ _jsxs(\"div\", _extends({}, other, {\n    className: [prefixCls, prefixCls + \"-\" + direction, className || \"\"].filter(Boolean).join(\" \"),\n    style: styleWrapper,\n    ref,\n    children: [/* @__PURE__ */ _jsx3(\"div\", _extends({}, bgProps, {\n      style: _extends({\n        inset: 0,\n        position: \"absolute\",\n        background: background || innerBackground,\n        borderRadius: radius\n      }, bgProps.style)\n    })), /* @__PURE__ */ _jsx3(esm_default, _extends({}, innerProps, {\n      style: _extends({}, innerProps.style, {\n        inset: 0,\n        zIndex: 1,\n        position: \"absolute\"\n      }),\n      onMove: handleChange,\n      onDown: handleChange,\n      children: pointerElement\n    }))]\n  }));\n});\nAlpha.displayName = \"Alpha\";\nvar esm_default2 = Alpha;\n\n// ../../node_modules/.pnpm/@uiw+react-color-shade-slider@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-shade-slider/esm/index.js\nimport { jsx as _jsx4 } from \"react/jsx-runtime\";\nvar _excluded4 = [\"prefixCls\", \"className\", \"onChange\", \"direction\", \"hsva\"];\nvar ShadeSlider = /* @__PURE__ */ React4.forwardRef((props, ref) => {\n  var {\n    prefixCls = \"w-color-saturation\",\n    className,\n    onChange: _onChange,\n    direction = \"horizontal\",\n    hsva\n  } = props, other = _objectWithoutPropertiesLoose(props, _excluded4);\n  var colorFrom = hsvaToHslaString(_extends({}, hsva, {\n    a: 1,\n    v: 100\n  }));\n  return /* @__PURE__ */ _jsx4(esm_default2, _extends({\n    ref\n  }, other, {\n    className: prefixCls + \" \" + (className || \"\"),\n    hsva: {\n      h: hsva.h,\n      s: hsva.s,\n      v: hsva.v,\n      a: 1 - hsva.v / 100\n    },\n    direction,\n    background: \"linear-gradient(to \" + (direction === \"horizontal\" ? \"right\" : \"bottom\") + \", \" + colorFrom + \", rgb(0, 0, 0))\",\n    onChange: (_, interaction) => {\n      _onChange && _onChange({\n        v: direction === \"horizontal\" ? 100 - interaction.left * 100 : 100 - interaction.top * 100\n      });\n    }\n  }));\n});\nShadeSlider.displayName = \"ShadeSlider\";\nvar esm_default3 = ShadeSlider;\n\n// ../../node_modules/.pnpm/@uiw+react-color-wheel@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-wheel/esm/index.js\nimport React6 from \"react\";\n\n// ../../node_modules/.pnpm/@uiw+react-color-wheel@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-wheel/esm/Pointer.js\nimport React5 from \"react\";\nimport { jsx as _jsx5 } from \"react/jsx-runtime\";\nvar BOXSHADOW = \"rgb(255 255 255) 0px 0px 0px 1.5px, rgb(0 0 0 / 30%) 0px 0px 1px 1px inset, rgb(0 0 0 / 40%) 0px 0px 1px 2px\";\nvar Pointer2 = (_ref) => {\n  var {\n    className,\n    color: color2,\n    left,\n    top,\n    style,\n    prefixCls\n  } = _ref;\n  var styleWarp = _extends({}, style, {\n    position: \"absolute\",\n    top,\n    left\n  });\n  var cls = prefixCls + \"-pointer \" + (className || \"\");\n  return /* @__PURE__ */ _jsx5(\"div\", {\n    className: cls,\n    style: styleWarp,\n    children: /* @__PURE__ */ _jsx5(\"div\", {\n      className: prefixCls + \"-fill\",\n      style: {\n        width: 10,\n        height: 10,\n        transform: \"translate(-5px, -5px)\",\n        boxShadow: BOXSHADOW,\n        borderRadius: \"50%\",\n        backgroundColor: \"#fff\"\n      },\n      children: /* @__PURE__ */ _jsx5(\"div\", {\n        style: {\n          inset: 0,\n          borderRadius: \"50%\",\n          position: \"absolute\",\n          backgroundColor: color2\n        }\n      })\n    })\n  });\n};\n\n// ../../node_modules/.pnpm/@uiw+react-color-wheel@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-wheel/esm/utils.js\nvar TAU = Math.PI * 2;\nvar mod = (a, n) => (a % n + n) % n;\nvar dist = (x, y) => Math.sqrt(x * x + y * y);\nfunction getWheelDimensions(_ref) {\n  var {\n    width = 0\n  } = _ref;\n  var r = width / 2;\n  return {\n    width,\n    radius: r,\n    cx: r,\n    cy: r\n  };\n}\nfunction getWheelHandlePosition(props, hsv) {\n  var {\n    cx,\n    cy\n  } = getWheelDimensions(props);\n  var handleRange = getHandleRange(props);\n  var handleAngle = (180 + translateWheelAngle(props, hsv.h, true)) * (TAU / 360);\n  var handleDist = hsv.s / 100 * handleRange;\n  var direction = props.direction === \"clockwise\" ? -1 : 1;\n  return {\n    x: cx + handleDist * Math.cos(handleAngle) * direction,\n    y: cy + handleDist * Math.sin(handleAngle) * direction\n  };\n}\nfunction getHandleRange(_ref2) {\n  var {\n    width = 0\n  } = _ref2;\n  return width / 2;\n}\nfunction translateWheelAngle(props, angle, invert) {\n  var wheelAngle = props.angle || 0;\n  var direction = props.direction;\n  if (invert && direction === \"clockwise\") angle = wheelAngle + angle;\n  else if (direction === \"clockwise\") angle = 360 - wheelAngle + angle;\n  else if (invert && direction === \"anticlockwise\") angle = wheelAngle + 180 - angle;\n  else if (direction === \"anticlockwise\") angle = wheelAngle - angle;\n  return mod(angle, 360);\n}\nfunction getWheelValueFromInput(props, x, y) {\n  var {\n    cx,\n    cy\n  } = getWheelDimensions(props);\n  var handleRange = getHandleRange(props);\n  x = cx - x;\n  y = cy - y;\n  var hue = translateWheelAngle(props, Math.atan2(-y, -x) * (360 / TAU));\n  var handleDist = Math.min(dist(x, y), handleRange);\n  return {\n    h: Math.round(hue),\n    s: Math.round(100 / handleRange * handleDist)\n  };\n}\n\n// ../../node_modules/.pnpm/@uiw+react-color-wheel@1.4.3_@babel+runtime@7.27.0_react-dom@19.2.0_react@18.3.1__react@18.3.1/node_modules/@uiw/react-color-wheel/esm/index.js\nimport { jsx as _jsx6 } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs2 } from \"react/jsx-runtime\";\nvar _excluded5 = [\"prefixCls\", \"radius\", \"pointer\", \"className\", \"style\", \"width\", \"height\", \"oval\", \"direction\", \"angle\", \"color\", \"onChange\"];\nvar HUE_GRADIENT_CLOCKWISE = \"conic-gradient(red, yellow, lime, aqua, blue, magenta, red)\";\nvar HUE_GRADIENT_ANTICLOCKWISE = \"conic-gradient(red, magenta, blue, aqua, lime, yellow, red)\";\nvar Wheel = /* @__PURE__ */ React6.forwardRef((props, ref) => {\n  var {\n    prefixCls = \"w-color-wheel\",\n    radius = 0,\n    pointer,\n    className,\n    style,\n    width = 200,\n    height = 200,\n    oval,\n    direction = \"anticlockwise\",\n    angle = 180,\n    color: color2,\n    onChange\n  } = props, other = _objectWithoutPropertiesLoose(props, _excluded5);\n  var hsva = typeof color2 === \"string\" && validHex(color2) ? hexToHsva(color2) : color2 || {};\n  var hex = color2 ? hsvaToHex(hsva) : \"\";\n  var positions = getWheelHandlePosition({\n    width\n  }, hsva);\n  var comProps = {\n    top: \"0\",\n    left: \"0\",\n    color: hex\n  };\n  var handleChange = (interaction, event) => {\n    var result = getWheelValueFromInput({\n      width\n    }, width - interaction.x, height - interaction.y);\n    var handleHsva = {\n      h: result.h,\n      s: result.s,\n      v: hsva.v,\n      a: hsva.a\n    };\n    onChange && onChange(color(handleHsva));\n  };\n  var pointerStyle = {\n    zIndex: 1,\n    transform: \"translate(\" + positions.x + \"px, \" + positions.y + \"px) \" + (oval === \"x\" || oval === \"X\" ? \"scaleY(2)\" : oval === \"y\" || oval === \"Y\" ? \"scaleX(2)\" : \"\")\n  };\n  var pointerElement = pointer && typeof pointer === \"function\" ? pointer(_extends({\n    prefixCls,\n    style: pointerStyle\n  }, comProps)) : /* @__PURE__ */ _jsx6(Pointer2, _extends({\n    prefixCls,\n    style: pointerStyle\n  }, comProps));\n  return /* @__PURE__ */ _jsxs2(esm_default, _extends({\n    className: [prefixCls, className || \"\"].filter(Boolean).join(\" \")\n  }, other, {\n    style: _extends({\n      position: \"relative\",\n      width,\n      transform: oval === \"x\" || oval === \"X\" ? \"scaleY(0.5)\" : oval === \"y\" || oval === \"Y\" ? \"scaleX(0.5)\" : \"\",\n      height\n    }, style),\n    ref,\n    onMove: handleChange,\n    onDown: handleChange,\n    children: [pointerElement, /* @__PURE__ */ _jsx6(\"div\", {\n      style: {\n        position: \"absolute\",\n        borderRadius: \"50%\",\n        background: direction === \"anticlockwise\" ? HUE_GRADIENT_CLOCKWISE : HUE_GRADIENT_ANTICLOCKWISE,\n        transform: \"rotateZ(\" + (angle + 90) + \"deg)\",\n        inset: 0\n      }\n    }), /* @__PURE__ */ _jsx6(\"div\", {\n      style: {\n        position: \"absolute\",\n        borderRadius: \"50%\",\n        background: \"radial-gradient(circle closest-side, #fff, transparent)\",\n        inset: 0\n      }\n    }), /* @__PURE__ */ _jsx6(\"div\", {\n      style: {\n        backgroundColor: \"#000\",\n        borderRadius: \"50%\",\n        position: \"absolute\",\n        inset: 0,\n        opacity: typeof hsva.v === \"number\" ? 1 - hsva.v / 100 : 0\n      }\n    })]\n  }));\n});\nWheel.displayName = \"Wheel\";\nvar esm_default4 = Wheel;\n\nexport {\n  hexToHsva,\n  hsvaToHex,\n  esm_default3 as esm_default,\n  esm_default4 as esm_default2\n};\n","// src/hooks/useOnClickOutside.ts\nimport { useEffect } from \"react\";\nfunction useOnClickOutside(ref, handler) {\n  useEffect(() => {\n    const listener = (event) => {\n      if (!ref.current || ref.current.contains(event.target)) {\n        return;\n      }\n      handler(event);\n    };\n    document.addEventListener(\"mousedown\", listener);\n    document.addEventListener(\"touchstart\", listener);\n    return () => {\n      document.removeEventListener(\"mousedown\", listener);\n      document.removeEventListener(\"touchstart\", listener);\n    };\n  }, [ref, handler]);\n}\n\nexport {\n  useOnClickOutside\n};\n","// src/hooks/usePropState.ts\nimport { useState } from \"react\";\nvar usePropState = (prop) => {\n  const [current, setCurrent] = useState(() => ({ prop, state: prop }));\n  if (current.prop != prop) {\n    current.prop = prop;\n    current.state = prop;\n  }\n  return [\n    current.state,\n    (state) => {\n      setCurrent({ prop, state });\n    }\n  ];\n};\n\nexport {\n  usePropState\n};\n","import {\n  Spacing\n} from \"./chunk-3I3TPE7B.mjs\";\nimport {\n  esm_default,\n  esm_default2,\n  hexToHsva,\n  hsvaToHex\n} from \"./chunk-FHHPRMGM.mjs\";\nimport {\n  useOnClickOutside\n} from \"./chunk-B4GXHE46.mjs\";\nimport {\n  usePropState\n} from \"./chunk-QNYMEATR.mjs\";\n\n// src/components/Web/Customize/CustomizeColorInput.tsx\nimport * as React from \"react\";\nimport { useEffect, useState, useRef } from \"react\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar isValidHex = (color) => {\n  if (!color || typeof color !== \"string\") return false;\n  return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color);\n};\nvar getValidColorOrFallback = (color, fallback = \"#000000\") => {\n  return isValidHex(color) ? color : fallback;\n};\nvar CustomizeColorInput = React.forwardRef(({ label = \"\", defaultValue, setValue }, ref) => {\n  const [sharedValue, setSharedValue] = usePropState(defaultValue);\n  const [toggle, setToggle] = useState(false);\n  useEffect(() => {\n    setSharedValue(defaultValue);\n  }, []);\n  useEffect(() => {\n    setValue(sharedValue);\n  }, [sharedValue]);\n  const tabRef = useRef(null);\n  useOnClickOutside(tabRef, () => setToggle(false));\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center\", children: [\n    label && /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\"label\", { className: \"font-semibold text-primary text-base\", children: label }),\n      /* @__PURE__ */ jsx(Spacing, { className: \"w-2\" })\n    ] }),\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center gap-2 w-full relative\", children: [\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          className: \"w-full h-input rounded\",\n          style: { background: getValidColorOrFallback(sharedValue) },\n          onClick: () => {\n            setToggle(!toggle);\n          }\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          ref: tabRef,\n          style: {\n            width: \"fit-content\",\n            height: \"fit-content\",\n            position: \"absolute\",\n            bottom: 25,\n            left: -10,\n            zIndex: 100,\n            display: toggle === true ? \"block\" : \"none\"\n          },\n          children: /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              style: {\n                display: \"flex\",\n                width: \"fit-content\",\n                height: \"fit-content\",\n                background: \"white\",\n                padding: 16,\n                flexDirection: \"column\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                gap: 16,\n                borderRadius: 5,\n                filter: \"drop-shadow(0px 0px 10px rgba(0,0,0,0.37))\"\n              },\n              children: [\n                /* @__PURE__ */ jsx(\n                  esm_default2,\n                  {\n                    color: getValidColorOrFallback(sharedValue),\n                    onChange: (color) => {\n                      setSharedValue(color.hex);\n                    },\n                    width: 200,\n                    height: 200\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  esm_default,\n                  {\n                    width: 200,\n                    style: { display: \"flex\", alignItems: \"center\" },\n                    hsva: hexToHsva(getValidColorOrFallback(sharedValue)),\n                    onChange: (color) => {\n                      const validColor = getValidColorOrFallback(sharedValue);\n                      setSharedValue(\n                        hsvaToHex({\n                          h: hexToHsva(validColor).h,\n                          // @ts-ignore\n                          s: color.s,\n                          v: color.v,\n                          a: 1\n                        })\n                      );\n                    }\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  \"div\",\n                  {\n                    style: {\n                      width: 16,\n                      height: 16,\n                      background: \"white\",\n                      position: \"absolute\",\n                      borderRadius: 3,\n                      bottom: -5,\n                      transform: \"rotate(45deg)\"\n                    }\n                  }\n                )\n              ]\n            }\n          )\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"input\",\n        {\n          type: \"text\",\n          value: sharedValue,\n          onChange: (e) => setSharedValue(e.target.value),\n          className: \"font-medium text-primary bg-primary bg-opacity-10 rounded h-input w-[90px] text-center outline-none text-base\"\n        }\n      )\n    ] })\n  ] });\n});\n\nexport {\n  CustomizeColorInput\n};\n","// src/utils.tsx\nimport { RenderTarget } from \"framer\";\nimport { useEffect } from \"react\";\nvar cx = (...classes) => classes.filter(Boolean).join(\" \");\nfunction useOnClickOutside(ref, handler) {\n  useEffect(() => {\n    const listener = (event) => {\n      if (!ref.current || ref.current.contains(event.target)) {\n        return;\n      }\n      handler(event);\n    };\n    document.addEventListener(\"mousedown\", listener);\n    document.addEventListener(\"touchstart\", listener);\n    return () => {\n      document.removeEventListener(\"mousedown\", listener);\n      document.removeEventListener(\"touchstart\", listener);\n    };\n  }, [ref, handler]);\n}\nvar isCanvas = (() => {\n  try {\n    return RenderTarget.current() !== RenderTarget.preview;\n  } catch (e) {\n    return false;\n  }\n})();\nvar isDebug = false;\nvar canvasProps = (pixelDensity, fov) => ({\n  dpr: pixelDensity,\n  //device pixel ratio - 1 default and fast, 2 detailed and slow\n  // mode: 'concurrent' as 'legacy' | 'blocking' | 'concurrent',\n  camera: { fov },\n  // could be replaced with zoom or distance?\n  linear: true,\n  //sRGBEncoding\n  flat: true,\n  //ACESFilmicToneMapping\n  gl: { preserveDrawingBuffer: true }\n  // to capture the canvas (Figma Plugin)\n});\n\nexport {\n  cx,\n  useOnClickOutside,\n  isCanvas,\n  isDebug,\n  canvasProps\n};\n","import {\n  cx\n} from \"./chunk-XLY254CY.mjs\";\n\n// src/components/Web/Customize/CustomizeRadio.tsx\nimport * as React from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CustomizeRadio = React.forwardRef(\n  ({ label, check, setValue, value, name }, ref) => {\n    return /* @__PURE__ */ jsxs(\n      \"label\",\n      {\n        className: cx(\n          \"flex justify-center items-center w-full h-input text-primary rounded cursor-pointer bg-primary hover:bg-opacity-10 select-none\",\n          check ? \"bg-opacity-10\" : \"bg-opacity-0\"\n        ),\n        htmlFor: value,\n        children: [\n          /* @__PURE__ */ jsx(\n            \"input\",\n            {\n              name,\n              value,\n              type: \"radio\",\n              id: value,\n              className: \"absolute inline-block opacity-0 cursor-pointer\",\n              onChange: (e) => setValue(e.target.value)\n            }\n          ),\n          /* @__PURE__ */ jsx(\"span\", { className: \"text-base font-medium\", children: label || value })\n        ]\n      }\n    );\n  }\n);\n\nexport {\n  CustomizeRadio\n};\n","import {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Web/Spacing.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar Spacing = (_a) => {\n  var _b = _a, { guide = false, className = \"w-3 h-3\" } = _b, props = __objRest(_b, [\"guide\", \"className\"]);\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    __spreadProps(__spreadValues({}, props), {\n      className,\n      style: {\n        position: \"relative\",\n        background: \"hsl(100, 37%, 79%)\",\n        opacity: \"var(--guide-opacity)\"\n      },\n      children: /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          style: {\n            position: \"absolute\",\n            top: \"50%\",\n            left: \"50%\",\n            transform: \"translate(-50%, -50%)\",\n            whiteSpace: \"nowrap\",\n            fontSize: \"8px\"\n          },\n          children: guide && className\n        }\n      )\n    })\n  );\n};\n\nexport {\n  Spacing\n};\n","import {\n  Spacing\n} from \"./chunk-VDGKXM7B.mjs\";\nimport {\n  __objRest,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Web/Customize/CustomizeNumberInput/CustomizeNumberInput.tsx\nimport React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CustomizeNumberInput = React.forwardRef(\n  (_a, ref) => {\n    var _b = _a, {\n      label = null,\n      value,\n      setValue = () => void 0,\n      arrow = false,\n      step = 0\n    } = _b, inputProps = __objRest(_b, [\n      \"label\",\n      \"value\",\n      \"setValue\",\n      \"arrow\",\n      \"step\"\n    ]);\n    return /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center\", children: [\n      label && /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(\"label\", { className: \"font-semibold text-[#FF430A] text-base\", children: label }),\n        /* @__PURE__ */ jsx(Spacing, { className: \"w-2\" })\n      ] }),\n      /* @__PURE__ */ jsxs(\"div\", { className: \"bg-[#FF430A] bg-opacity-10 flex flex-row w-fit h-fit rounded items-center\", children: [\n        /* @__PURE__ */ jsx(\n          \"input\",\n          __spreadValues({\n            type: \"number\",\n            className: \"font-medium text-[#FF430A] bg-transparent h-input w-[53px] text-center outline-none text-base\",\n            ref,\n            value,\n            onChange: (e) => setValue(e.target.valueAsNumber),\n            step\n          }, inputProps)\n        ),\n        arrow === true && /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            className: \"h-input flex flex-col text-[#FF430A] justify-start items-center w-1 max-md:hidden\",\n            style: { marginRight: 8, marginLeft: -5 },\n            children: [\n              /* @__PURE__ */ jsx(\n                motion.div,\n                {\n                  className: \"h-[50%] w-fit cursor-pointer flex items-center\",\n                  onClick: () => {\n                    setValue(value + step);\n                  },\n                  initial: { opacity: 0.5 },\n                  whileHover: { opacity: 1 },\n                  children: /* @__PURE__ */ jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"8\", height: \"8\", children: /* @__PURE__ */ jsx(\n                    \"path\",\n                    {\n                      d: \"M 4.468 2.048 C 4.306 1.616 3.694 1.616 3.532 2.048 L 1.853 6.524 C 1.731 6.851 1.972 7.2 2.322 7.2 L 4 7.2 L 4 7.2 L 5.678 7.2 C 6.028 7.2 6.269 6.851 6.147 6.524 Z\",\n                      fill: \"rgb(255, 67, 10)\"\n                    }\n                  ) })\n                }\n              ),\n              /* @__PURE__ */ jsx(\n                motion.div,\n                {\n                  className: \"h-[50%] w-fit cursor-pointer flex items-center\",\n                  onClick: () => {\n                    setValue(value - step);\n                  },\n                  initial: { opacity: 0.5 },\n                  whileHover: { opacity: 1 },\n                  children: /* @__PURE__ */ jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"8\", height: \"8\", children: /* @__PURE__ */ jsx(\n                    \"path\",\n                    {\n                      d: \"M 2.868 1.248 C 2.706 0.816 2.094 0.816 1.932 1.248 L 0.253 5.724 C 0.131 6.051 0.372 6.4 0.722 6.4 L 4.078 6.4 C 4.428 6.4 4.669 6.051 4.547 5.724 Z\",\n                      transform: \"translate(1.6 0.8) rotate(180 2.4 3.2)\",\n                      fill: \"rgb(255, 67, 10)\"\n                    }\n                  ) })\n                }\n              )\n            ]\n          }\n        )\n      ] })\n    ] });\n  }\n);\n\nexport {\n  CustomizeNumberInput\n};\n","// ../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\nfunction _setPrototypeOf(t2, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t3, e2) {\n    return t3.__proto__ = e2, t3;\n  }, _setPrototypeOf(t2, e);\n}\n\n// ../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\nfunction _inheritsLoose(t2, o2) {\n  t2.prototype = Object.create(o2.prototype), t2.prototype.constructor = t2, _setPrototypeOf(t2, o2);\n}\n\n// ../../node_modules/.pnpm/react-slider@2.0.6_react@18.3.1/node_modules/react-slider/dist/es/prod/components/ReactSlider/ReactSlider.mjs\nimport t from \"react\";\nfunction s(e) {\n  return e && e.stopPropagation && e.stopPropagation(), e && e.preventDefault && e.preventDefault(), false;\n}\nfunction n(e) {\n  return null == e ? [] : Array.isArray(e) ? e.slice() : [e];\n}\nfunction i(e) {\n  return null !== e && 1 === e.length ? e[0] : e.slice();\n}\nfunction o(e) {\n  Object.keys(e).forEach((t2) => {\n    \"undefined\" != typeof document && document.addEventListener(t2, e[t2], false);\n  });\n}\nfunction r(e, t2) {\n  return a(function(e2, t3) {\n    let s2 = e2;\n    s2 <= t3.min && (s2 = t3.min);\n    s2 >= t3.max && (s2 = t3.max);\n    return s2;\n  }(e, t2), t2);\n}\nfunction a(e, t2) {\n  const s2 = (e - t2.min) % t2.step;\n  let n2 = e - s2;\n  return 2 * Math.abs(s2) >= t2.step && (n2 += s2 > 0 ? t2.step : -t2.step), parseFloat(n2.toFixed(5));\n}\nvar p = function(p2) {\n  function u2(e) {\n    var a2;\n    (a2 = p2.call(this, e) || this).onKeyUp = () => {\n      a2.onEnd();\n    }, a2.onMouseUp = () => {\n      a2.onEnd(a2.getMouseEventMap());\n    }, a2.onTouchEnd = (e2) => {\n      e2.preventDefault(), a2.onEnd(a2.getTouchEventMap());\n    }, a2.onBlur = () => {\n      a2.setState({ index: -1 }, a2.onEnd(a2.getKeyDownEventMap()));\n    }, a2.onMouseMove = (e2) => {\n      a2.setState({ pending: true });\n      const t2 = a2.getMousePosition(e2), s2 = a2.getDiffPosition(t2[0]), n2 = a2.getValueFromPosition(s2);\n      a2.move(n2);\n    }, a2.onTouchMove = (e2) => {\n      if (e2.touches.length > 1) return;\n      a2.setState({ pending: true });\n      const t2 = a2.getTouchPosition(e2);\n      if (void 0 === a2.isScrolling) {\n        const e3 = t2[0] - a2.startPosition[0], s3 = t2[1] - a2.startPosition[1];\n        a2.isScrolling = Math.abs(s3) > Math.abs(e3);\n      }\n      if (a2.isScrolling) return void a2.setState({ index: -1 });\n      const s2 = a2.getDiffPosition(t2[0]), n2 = a2.getValueFromPosition(s2);\n      a2.move(n2);\n    }, a2.onKeyDown = (e2) => {\n      if (!(e2.ctrlKey || e2.shiftKey || e2.altKey || e2.metaKey)) switch (a2.setState({ pending: true }), e2.key) {\n        case \"ArrowLeft\":\n        case \"ArrowDown\":\n        case \"Left\":\n        case \"Down\":\n          e2.preventDefault(), a2.moveDownByStep();\n          break;\n        case \"ArrowRight\":\n        case \"ArrowUp\":\n        case \"Right\":\n        case \"Up\":\n          e2.preventDefault(), a2.moveUpByStep();\n          break;\n        case \"Home\":\n          e2.preventDefault(), a2.move(a2.props.min);\n          break;\n        case \"End\":\n          e2.preventDefault(), a2.move(a2.props.max);\n          break;\n        case \"PageDown\":\n          e2.preventDefault(), a2.moveDownByStep(a2.props.pageFn(a2.props.step));\n          break;\n        case \"PageUp\":\n          e2.preventDefault(), a2.moveUpByStep(a2.props.pageFn(a2.props.step));\n      }\n    }, a2.onSliderMouseDown = (e2) => {\n      if (!a2.props.disabled && 2 !== e2.button) {\n        if (a2.setState({ pending: true }), !a2.props.snapDragDisabled) {\n          const t2 = a2.getMousePosition(e2);\n          a2.forceValueFromPosition(t2[0], (e3) => {\n            a2.start(e3, t2[0]), o(a2.getMouseEventMap());\n          });\n        }\n        s(e2);\n      }\n    }, a2.onSliderClick = (e2) => {\n      if (!a2.props.disabled && a2.props.onSliderClick && !a2.hasMoved) {\n        const t2 = a2.getMousePosition(e2), s2 = r(a2.calcValue(a2.calcOffsetFromPosition(t2[0])), a2.props);\n        a2.props.onSliderClick(s2);\n      }\n    }, a2.createOnKeyDown = (e2) => (t2) => {\n      a2.props.disabled || (a2.start(e2), o(a2.getKeyDownEventMap()), s(t2));\n    }, a2.createOnMouseDown = (e2) => (t2) => {\n      if (a2.props.disabled || 2 === t2.button) return;\n      a2.setState({ pending: true });\n      const n2 = a2.getMousePosition(t2);\n      a2.start(e2, n2[0]), o(a2.getMouseEventMap()), s(t2);\n    }, a2.createOnTouchStart = (e2) => (t2) => {\n      if (a2.props.disabled || t2.touches.length > 1) return;\n      a2.setState({ pending: true });\n      const s2 = a2.getTouchPosition(t2);\n      a2.startPosition = s2, a2.isScrolling = void 0, a2.start(e2, s2[0]), o(a2.getTouchEventMap()), function(e3) {\n        e3.stopPropagation && e3.stopPropagation();\n      }(t2);\n    }, a2.handleResize = () => {\n      const e2 = window.setTimeout(() => {\n        a2.pendingResizeTimeouts.shift(), a2.resize();\n      }, 0);\n      a2.pendingResizeTimeouts.push(e2);\n    }, a2.renderThumb = (e2, t2) => {\n      const s2 = a2.props.thumbClassName + \" \" + a2.props.thumbClassName + \"-\" + t2 + \" \" + (a2.state.index === t2 ? a2.props.thumbActiveClassName : \"\"), n2 = { ref: (e3) => {\n        a2[\"thumb\" + t2] = e3;\n      }, key: a2.props.thumbClassName + \"-\" + t2, className: s2, style: e2, onMouseDown: a2.createOnMouseDown(t2), onTouchStart: a2.createOnTouchStart(t2), onFocus: a2.createOnKeyDown(t2), tabIndex: 0, role: \"slider\", \"aria-orientation\": a2.props.orientation, \"aria-valuenow\": a2.state.value[t2], \"aria-valuemin\": a2.props.min, \"aria-valuemax\": a2.props.max, \"aria-label\": Array.isArray(a2.props.ariaLabel) ? a2.props.ariaLabel[t2] : a2.props.ariaLabel, \"aria-labelledby\": Array.isArray(a2.props.ariaLabelledby) ? a2.props.ariaLabelledby[t2] : a2.props.ariaLabelledby, \"aria-disabled\": a2.props.disabled }, o2 = { index: t2, value: i(a2.state.value), valueNow: a2.state.value[t2] };\n      return a2.props.ariaValuetext && (n2[\"aria-valuetext\"] = \"string\" == typeof a2.props.ariaValuetext ? a2.props.ariaValuetext : a2.props.ariaValuetext(o2)), a2.props.renderThumb(n2, o2);\n    }, a2.renderTrack = (e2, t2, s2) => {\n      const n2 = { key: a2.props.trackClassName + \"-\" + e2, className: a2.props.trackClassName + \" \" + a2.props.trackClassName + \"-\" + e2, style: a2.buildTrackStyle(t2, a2.state.upperBound - s2) }, o2 = { index: e2, value: i(a2.state.value) };\n      return a2.props.renderTrack(n2, o2);\n    };\n    let u3 = n(e.value);\n    u3.length || (u3 = n(e.defaultValue)), a2.pendingResizeTimeouts = [];\n    const h2 = [];\n    for (let t2 = 0; t2 < u3.length; t2 += 1) u3[t2] = r(u3[t2], e), h2.push(t2);\n    return a2.resizeObserver = null, a2.resizeElementRef = t.createRef(), a2.state = { index: -1, upperBound: 0, sliderLength: 0, value: u3, zIndices: h2 }, a2;\n  }\n  _inheritsLoose(u2, p2);\n  var h = u2.prototype;\n  return h.componentDidMount = function() {\n    \"undefined\" != typeof window && (this.resizeObserver = new ResizeObserver(this.handleResize), this.resizeObserver.observe(this.resizeElementRef.current), this.resize());\n  }, u2.getDerivedStateFromProps = function(e, t2) {\n    const s2 = n(e.value);\n    return s2.length ? t2.pending ? null : { value: s2.map((t3) => r(t3, e)) } : null;\n  }, h.componentDidUpdate = function() {\n    0 === this.state.upperBound && this.resize();\n  }, h.componentWillUnmount = function() {\n    this.clearPendingResizeTimeouts(), this.resizeObserver && this.resizeObserver.disconnect();\n  }, h.onEnd = function(e) {\n    e && function(e2) {\n      Object.keys(e2).forEach((t2) => {\n        \"undefined\" != typeof document && document.removeEventListener(t2, e2[t2], false);\n      });\n    }(e), this.hasMoved && this.fireChangeEvent(\"onAfterChange\"), this.setState({ pending: false }), this.hasMoved = false;\n  }, h.getValue = function() {\n    return i(this.state.value);\n  }, h.getClosestIndex = function(e) {\n    let t2 = Number.MAX_VALUE, s2 = -1;\n    const { value: n2 } = this.state, i2 = n2.length;\n    for (let o2 = 0; o2 < i2; o2 += 1) {\n      const i3 = this.calcOffset(n2[o2]), r2 = Math.abs(e - i3);\n      r2 < t2 && (t2 = r2, s2 = o2);\n    }\n    return s2;\n  }, h.getMousePosition = function(e) {\n    return [e[\"page\" + this.axisKey()], e[\"page\" + this.orthogonalAxisKey()]];\n  }, h.getTouchPosition = function(e) {\n    const t2 = e.touches[0];\n    return [t2[\"page\" + this.axisKey()], t2[\"page\" + this.orthogonalAxisKey()]];\n  }, h.getKeyDownEventMap = function() {\n    return { keydown: this.onKeyDown, keyup: this.onKeyUp, focusout: this.onBlur };\n  }, h.getMouseEventMap = function() {\n    return { mousemove: this.onMouseMove, mouseup: this.onMouseUp };\n  }, h.getTouchEventMap = function() {\n    return { touchmove: this.onTouchMove, touchend: this.onTouchEnd };\n  }, h.getValueFromPosition = function(e) {\n    const t2 = e / (this.state.sliderLength - this.state.thumbSize) * (this.props.max - this.props.min);\n    return r(this.state.startValue + t2, this.props);\n  }, h.getDiffPosition = function(e) {\n    let t2 = e - this.state.startPosition;\n    return this.props.invert && (t2 *= -1), t2;\n  }, h.resize = function() {\n    const { slider: e, thumb0: t2 } = this;\n    if (!e || !t2) return;\n    const s2 = this.sizeKey(), n2 = e.getBoundingClientRect(), i2 = e[s2], o2 = n2[this.posMaxKey()], r2 = n2[this.posMinKey()], a2 = t2.getBoundingClientRect()[s2.replace(\"client\", \"\").toLowerCase()], p3 = i2 - a2, u3 = Math.abs(o2 - r2);\n    this.state.upperBound === p3 && this.state.sliderLength === u3 && this.state.thumbSize === a2 || this.setState({ upperBound: p3, sliderLength: u3, thumbSize: a2 });\n  }, h.calcOffset = function(e) {\n    const t2 = this.props.max - this.props.min;\n    if (0 === t2) return 0;\n    return (e - this.props.min) / t2 * this.state.upperBound;\n  }, h.calcValue = function(e) {\n    return e / this.state.upperBound * (this.props.max - this.props.min) + this.props.min;\n  }, h.calcOffsetFromPosition = function(e) {\n    const { slider: t2 } = this, s2 = t2.getBoundingClientRect(), n2 = s2[this.posMaxKey()], i2 = s2[this.posMinKey()];\n    let o2 = e - (window[\"page\" + this.axisKey() + \"Offset\"] + (this.props.invert ? n2 : i2));\n    return this.props.invert && (o2 = this.state.sliderLength - o2), o2 -= this.state.thumbSize / 2, o2;\n  }, h.forceValueFromPosition = function(e, t2) {\n    const s2 = this.calcOffsetFromPosition(e), n2 = this.getClosestIndex(s2), i2 = r(this.calcValue(s2), this.props), o2 = this.state.value.slice();\n    o2[n2] = i2;\n    for (let e2 = 0; e2 < o2.length - 1; e2 += 1) if (o2[e2 + 1] - o2[e2] < this.props.minDistance) return;\n    this.fireChangeEvent(\"onBeforeChange\"), this.hasMoved = true, this.setState({ value: o2 }, () => {\n      t2(n2), this.fireChangeEvent(\"onChange\");\n    });\n  }, h.clearPendingResizeTimeouts = function() {\n    do {\n      const e = this.pendingResizeTimeouts.shift();\n      clearTimeout(e);\n    } while (this.pendingResizeTimeouts.length);\n  }, h.start = function(e, t2) {\n    const s2 = this[\"thumb\" + e];\n    s2 && s2.focus();\n    const { zIndices: n2 } = this.state;\n    n2.splice(n2.indexOf(e), 1), n2.push(e), this.setState((s3) => ({ startValue: s3.value[e], startPosition: void 0 !== t2 ? t2 : s3.startPosition, index: e, zIndices: n2 }));\n  }, h.moveUpByStep = function(e) {\n    void 0 === e && (e = this.props.step);\n    const t2 = this.state.value[this.state.index], s2 = r(this.props.invert && \"horizontal\" === this.props.orientation ? t2 - e : t2 + e, this.props);\n    this.move(Math.min(s2, this.props.max));\n  }, h.moveDownByStep = function(e) {\n    void 0 === e && (e = this.props.step);\n    const t2 = this.state.value[this.state.index], s2 = r(this.props.invert && \"horizontal\" === this.props.orientation ? t2 + e : t2 - e, this.props);\n    this.move(Math.max(s2, this.props.min));\n  }, h.move = function(e) {\n    const t2 = this.state.value.slice(), { index: s2 } = this.state, { length: n2 } = t2, i2 = t2[s2];\n    if (e === i2) return;\n    this.hasMoved || this.fireChangeEvent(\"onBeforeChange\"), this.hasMoved = true;\n    const { pearling: o2, max: r2, min: a2, minDistance: p3 } = this.props;\n    if (!o2) {\n      if (s2 > 0) {\n        const n3 = t2[s2 - 1];\n        e < n3 + p3 && (e = n3 + p3);\n      }\n      if (s2 < n2 - 1) {\n        const n3 = t2[s2 + 1];\n        e > n3 - p3 && (e = n3 - p3);\n      }\n    }\n    t2[s2] = e, o2 && n2 > 1 && (e > i2 ? (this.pushSucceeding(t2, p3, s2), function(e2, t3, s3, n3) {\n      for (let i3 = 0; i3 < e2; i3 += 1) {\n        const o3 = n3 - i3 * s3;\n        t3[e2 - 1 - i3] > o3 && (t3[e2 - 1 - i3] = o3);\n      }\n    }(n2, t2, p3, r2)) : e < i2 && (this.pushPreceding(t2, p3, s2), function(e2, t3, s3, n3) {\n      for (let i3 = 0; i3 < e2; i3 += 1) {\n        const e3 = n3 + i3 * s3;\n        t3[i3] < e3 && (t3[i3] = e3);\n      }\n    }(n2, t2, p3, a2))), this.setState({ value: t2 }, this.fireChangeEvent.bind(this, \"onChange\"));\n  }, h.pushSucceeding = function(e, t2, s2) {\n    let n2, i2;\n    for (n2 = s2, i2 = e[n2] + t2; null !== e[n2 + 1] && i2 > e[n2 + 1]; n2 += 1, i2 = e[n2] + t2) e[n2 + 1] = a(i2, this.props);\n  }, h.pushPreceding = function(e, t2, s2) {\n    for (let n2 = s2, i2 = e[n2] - t2; null !== e[n2 - 1] && i2 < e[n2 - 1]; n2 -= 1, i2 = e[n2] - t2) e[n2 - 1] = a(i2, this.props);\n  }, h.axisKey = function() {\n    return \"vertical\" === this.props.orientation ? \"Y\" : \"X\";\n  }, h.orthogonalAxisKey = function() {\n    return \"vertical\" === this.props.orientation ? \"X\" : \"Y\";\n  }, h.posMinKey = function() {\n    return \"vertical\" === this.props.orientation ? this.props.invert ? \"bottom\" : \"top\" : this.props.invert ? \"right\" : \"left\";\n  }, h.posMaxKey = function() {\n    return \"vertical\" === this.props.orientation ? this.props.invert ? \"top\" : \"bottom\" : this.props.invert ? \"left\" : \"right\";\n  }, h.sizeKey = function() {\n    return \"vertical\" === this.props.orientation ? \"clientHeight\" : \"clientWidth\";\n  }, h.fireChangeEvent = function(e) {\n    this.props[e] && this.props[e](i(this.state.value), this.state.index);\n  }, h.buildThumbStyle = function(e, t2) {\n    const s2 = { position: \"absolute\", touchAction: \"none\", willChange: this.state.index >= 0 ? this.posMinKey() : void 0, zIndex: this.state.zIndices.indexOf(t2) + 1 };\n    return s2[this.posMinKey()] = e + \"px\", s2;\n  }, h.buildTrackStyle = function(e, t2) {\n    const s2 = { position: \"absolute\", willChange: this.state.index >= 0 ? this.posMinKey() + \",\" + this.posMaxKey() : void 0 };\n    return s2[this.posMinKey()] = e, s2[this.posMaxKey()] = t2, s2;\n  }, h.buildMarkStyle = function(e) {\n    var t2;\n    return (t2 = { position: \"absolute\" })[this.posMinKey()] = e, t2;\n  }, h.renderThumbs = function(e) {\n    const { length: t2 } = e, s2 = [];\n    for (let n3 = 0; n3 < t2; n3 += 1) s2[n3] = this.buildThumbStyle(e[n3], n3);\n    const n2 = [];\n    for (let e2 = 0; e2 < t2; e2 += 1) n2[e2] = this.renderThumb(s2[e2], e2);\n    return n2;\n  }, h.renderTracks = function(e) {\n    const t2 = [], s2 = e.length - 1;\n    t2.push(this.renderTrack(0, 0, e[0]));\n    for (let n2 = 0; n2 < s2; n2 += 1) t2.push(this.renderTrack(n2 + 1, e[n2], e[n2 + 1]));\n    return t2.push(this.renderTrack(s2 + 1, e[s2], this.state.upperBound)), t2;\n  }, h.renderMarks = function() {\n    let { marks: e } = this.props;\n    const t2 = this.props.max - this.props.min + 1;\n    return \"boolean\" == typeof e ? e = Array.from({ length: t2 }).map((e2, t3) => t3) : \"number\" == typeof e && (e = Array.from({ length: t2 }).map((e2, t3) => t3).filter((t3) => t3 % e == 0)), e.map(parseFloat).sort((e2, t3) => e2 - t3).map((e2) => {\n      const t3 = this.calcOffset(e2), s2 = { key: e2, className: this.props.markClassName, style: this.buildMarkStyle(t3) };\n      return this.props.renderMark(s2);\n    });\n  }, h.render = function() {\n    const e = [], { value: s2 } = this.state, n2 = s2.length;\n    for (let t2 = 0; t2 < n2; t2 += 1) e[t2] = this.calcOffset(s2[t2], t2);\n    const i2 = this.props.withTracks ? this.renderTracks(e) : null, o2 = this.renderThumbs(e), r2 = this.props.marks ? this.renderMarks() : null;\n    return t.createElement(\"div\", { ref: (e2) => {\n      this.slider = e2, this.resizeElementRef.current = e2;\n    }, style: { position: \"relative\" }, className: this.props.className + (this.props.disabled ? \" disabled\" : \"\"), onMouseDown: this.onSliderMouseDown, onClick: this.onSliderClick }, i2, o2, r2);\n  }, u2;\n}(t.Component);\np.displayName = \"ReactSlider\", p.defaultProps = { min: 0, max: 100, step: 1, pageFn: (e) => 10 * e, minDistance: 0, defaultValue: 0, orientation: \"horizontal\", className: \"slider\", thumbClassName: \"thumb\", thumbActiveClassName: \"active\", trackClassName: \"track\", markClassName: \"mark\", withTracks: true, pearling: false, disabled: false, snapDragDisabled: false, invert: false, marks: [], renderThumb: (e) => t.createElement(\"div\", e), renderTrack: (e) => t.createElement(\"div\", e), renderMark: (e) => t.createElement(\"span\", e) };\nvar u = p;\n\nexport {\n  u\n};\n","import {\n  CustomizeNumberInput\n} from \"./chunk-OUDGQEHL.mjs\";\nimport {\n  Spacing\n} from \"./chunk-VDGKXM7B.mjs\";\nimport {\n  u\n} from \"./chunk-2FOTMNF6.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Web/Customize/CustomizeRangeSlider.tsx\nimport { useEffect, useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CustomizeRangeSlider = ({\n  defaultValue,\n  setValue,\n  step,\n  min,\n  max\n}) => {\n  const defaultStart = (defaultValue == null ? void 0 : defaultValue[0]) || min;\n  const defaultEnd = (defaultValue == null ? void 0 : defaultValue[1]) || max;\n  const [rangeStart, setRangeStart] = useState(defaultStart);\n  const [rangeEnd, setRangeEnd] = useState(defaultEnd);\n  useEffect(() => {\n    var _a, _b;\n    const nextStart = Array.isArray(defaultValue) ? (_a = defaultValue == null ? void 0 : defaultValue[0]) != null ? _a : min : min;\n    const nextEnd = Array.isArray(defaultValue) ? (_b = defaultValue == null ? void 0 : defaultValue[1]) != null ? _b : max : max;\n    setRangeStart(nextStart);\n    setRangeEnd(nextEnd);\n  }, [defaultValue, min, max]);\n  useEffect(() => {\n    setValue([rangeStart, rangeEnd]);\n  }, [rangeStart, rangeEnd]);\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center w-full\", children: [\n    /* @__PURE__ */ jsx(\n      CustomizeNumberInput,\n      {\n        value: rangeStart,\n        setValue: setRangeStart,\n        step\n      }\n    ),\n    /* @__PURE__ */ jsx(Spacing, { className: \"w-4\" }),\n    /* @__PURE__ */ jsx(\n      u,\n      {\n        value: [Number(rangeStart), Number(rangeEnd)],\n        step,\n        min,\n        max,\n        onChange: (value, index) => {\n          setRangeStart(value[0]);\n          setRangeEnd(value[1]);\n        },\n        defaultValue: [min, max],\n        pearling: true,\n        minDistance: 0.5,\n        withTracks: true,\n        className: \"bg-primary h-[8px] w-full bg-opacity-20 rounded-full\",\n        marks: [(min + max) / 2],\n        markClassName: \"w-mark h-mark bg-primary top-1/2 transform translate-x-1 -translate-y-1/2 slider-mark-center-x\",\n        thumbClassName: \"bg-primary w-thumb h-thumb rounded-full top-1/2 transform -translate-y-1/2 outline-none cursor-pointer\",\n        trackClassName: \"bg-primary h-[8px] rounded-full relative\",\n        renderTrack: (props, state) => /* @__PURE__ */ jsx(\n          \"div\",\n          __spreadProps(__spreadValues({}, props), {\n            style: __spreadProps(__spreadValues({}, props.style), {\n              opacity: state.index === 1 ? 0.7 : 0\n            })\n          })\n        )\n      }\n    ),\n    /* @__PURE__ */ jsx(Spacing, { className: \"w-4\" }),\n    /* @__PURE__ */ jsx(\n      CustomizeNumberInput,\n      {\n        value: rangeEnd,\n        setValue: setRangeEnd,\n        step\n      }\n    )\n  ] });\n};\n\nexport {\n  CustomizeRangeSlider\n};\n","import {\n  CustomizeNumberInput\n} from \"./chunk-OUDGQEHL.mjs\";\nimport {\n  Spacing\n} from \"./chunk-VDGKXM7B.mjs\";\nimport {\n  u\n} from \"./chunk-2FOTMNF6.mjs\";\n\n// src/components/Web/Customize/CustomizeSlider.tsx\nimport * as React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CustomizeSlider = React.forwardRef(\n  ({ defaultValue, setValue, step, min, max }, ref) => {\n    const [sharedValue, setSharedValue] = useState(defaultValue);\n    useEffect(() => {\n      setSharedValue(defaultValue);\n    }, [defaultValue]);\n    useEffect(() => {\n      setValue(sharedValue);\n    }, [sharedValue]);\n    return /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center w-full\", children: [\n      /* @__PURE__ */ jsx(\n        CustomizeNumberInput,\n        {\n          value: sharedValue,\n          setValue: setSharedValue,\n          step\n        }\n      ),\n      /* @__PURE__ */ jsx(Spacing, { className: \"w-4\" }),\n      /* @__PURE__ */ jsx(\n        u,\n        {\n          value: Number(sharedValue),\n          step,\n          min,\n          max,\n          onChange: (value, index) => setSharedValue(value),\n          className: \"bg-[#FF430A] h-[2px] w-full\",\n          marks: [(min + max) / 2],\n          markClassName: \"w-[2px] h-[2px] bg-[#FF430A] top-1/2 transform -translate-y-1/2\",\n          thumbClassName: \"bg-[#FF430A] w-[16px] h-[16px] rounded-full top-1/2 transform -translate-y-1/2 outline-none cursor-pointer\",\n          thumbActiveClassName: \"bg-opacity-80\"\n        }\n      )\n    ] });\n  }\n);\n\nexport {\n  CustomizeSlider\n};\n","import {\n  cx\n} from \"./chunk-XLY254CY.mjs\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Web/Button.tsx\nimport { jsx } from \"react/jsx-runtime\";\nvar ButtonKind = {\n  primary: \"bg-primary text-white\",\n  secondary: \"ring-1 ring-primary text-primary\"\n};\nvar Button = (_a) => {\n  var _b = _a, {\n    kind = \"primary\",\n    children\n  } = _b, rest = __objRest(_b, [\n    \"kind\",\n    \"children\"\n  ]);\n  return /* @__PURE__ */ jsx(\n    \"button\",\n    __spreadProps(__spreadValues({\n      className: cx(\"h-button font-medium rounded w-full\", ButtonKind[kind])\n    }, rest), {\n      children\n    })\n  );\n};\n\nexport {\n  Button\n};\n","// src/components/Web/Icons.tsx\nimport { ControlType } from \"framer\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Icons({ iconName, color }) {\n  return /* @__PURE__ */ jsxs(\"div\", { style: containerStyle, children: [\n    iconName === \"framer\" && /* @__PURE__ */ jsx(\n      \"svg\",\n      {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        fill: color,\n        stroke: color,\n        display: \"inline-block\",\n        viewBox: \"0 0 256 256\",\n        style: {\n          WebkitUserSelect: \"none\",\n          MozUserSelect: \"none\",\n          msUserSelect: \"none\",\n          userSelect: \"none\",\n          width: \"100%\",\n          height: \"100%\",\n          WebkitFlexShrink: \"0\",\n          flexShrink: \"0\"\n        },\n        children: /* @__PURE__ */ jsx(\"path\", { d: \"M200 104h-51l56.27 50a8 8 0 01-5.27 14h-64v64a8 8 0 01-13.66 5.66l-72-72A8 8 0 0148 160V96a8 8 0 018-8h51L50.69 38A8 8 0 0156 24h144a8 8 0 018 8v64a8 8 0 01-8 8z\" })\n      }\n    ),\n    iconName === \"figma\" && /* @__PURE__ */ jsx(\n      \"svg\",\n      {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        fill: color,\n        stroke: color,\n        display: \"inline-block\",\n        viewBox: \"0 0 256 256\",\n        style: {\n          WebkitUserSelect: \"none\",\n          MozUserSelect: \"none\",\n          msUserSelect: \"none\",\n          userSelect: \"none\",\n          width: \"100%\",\n          height: \"100%\",\n          WebkitFlexShrink: \"0\",\n          flexShrink: \"0\"\n        },\n        children: /* @__PURE__ */ jsx(\"path\", { d: \"M184 96a40 40 0 00-24-72H88a40 40 0 00-24 72 40 40 0 001.37 65A44 44 0 10136 196v-36a40 40 0 1048-64zm-48-56h24a24 24 0 010 48h-24zm24 112a24 24 0 1124-24 24 24 0 01-24 24z\" })\n      }\n    ),\n    iconName === \"github\" && /* @__PURE__ */ jsxs(\n      \"svg\",\n      {\n        xmlns: \"http://www.w3.org/2000/svg\",\n        width: \"30\",\n        height: \"30\",\n        fill: \"none\",\n        viewBox: \"0 0 30 30\",\n        children: [\n          /* @__PURE__ */ jsx(\n            \"path\",\n            {\n              fill: color,\n              d: \"M19.949 28v-3.726a4.41 4.41 0 00-1.205-3.388c4.025-.455 8.256-2 8.256-9.088a7.11 7.11 0 00-1.923-4.869 6.663 6.663 0 00-.115-4.894s-1.513-.454-5.013 1.921a16.959 16.959 0 00-8.975 0c-3.5-2.375-5.012-1.921-5.012-1.921a6.658 6.658 0 00-.116 4.894 7.113 7.113 0 00-1.923 4.908c0 7.036 4.231 8.581 8.256 9.088a4.406 4.406 0 00-1.205 3.349V28h8.975z\"\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"path\",\n            {\n              stroke: color,\n              strokeLinecap: \"round\",\n              strokeLinejoin: \"round\",\n              strokeWidth: \"2\",\n              d: \"M10.974 25.404c-3.846 1.263-7.051 0-8.974-3.895\"\n            }\n          )\n        ]\n      }\n    )\n  ] });\n}\nvar containerStyle = {\n  height: \"100%\",\n  display: \"flex\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  overflow: \"hidden\"\n};\nIcons.propertyControls = {\n  color: { type: ControlType.Color },\n  iconName: {\n    type: ControlType.Enum,\n    options: [\"framer\", \"figma\", \"github\"]\n  }\n};\n\nexport {\n  Icons\n};\n","// Generated by Framer (20dc3ed)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const serializationHash=\"framer-k10K7\";const variantClassNames={gWXP_7XI1:\"framer-v-6l24oz\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,title,width,...props})=>{return{...props,F9Qt912EM:title??props.F9Qt912EM??\"Shape\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,F9Qt912EM,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"gWXP_7XI1\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-6l24oz\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"gWXP_7XI1\",ref:refBinding,style:{...style},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"R0Y7TG9yYS1yZWd1bGFy\",\"--framer-font-family\":'\"Lora\", \"Lora Placeholder\", serif',\"--framer-font-size\":\"40px\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 255, 255))\"},children:\"Shape\"})}),className:\"framer-u6t1wn\",fonts:[\"GF;Lora-regular\"],layoutDependency:layoutDependency,layoutId:\"kFs_awEj_\",style:{\"--extracted-r6o4lv\":\"rgb(255, 255, 255)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:F9Qt912EM,verticalAlignment:\"top\",withExternalLayout:true})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-k10K7.framer-1jxnxrn, .framer-k10K7 .framer-1jxnxrn { display: block; }\",\".framer-k10K7.framer-6l24oz { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-k10K7 .framer-u6t1wn { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 48\n * @framerIntrinsicWidth 113\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"F9Qt912EM\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerBsYasZ7Eq=withCSS(Component,css,\"framer-k10K7\");export default FramerBsYasZ7Eq;FramerBsYasZ7Eq.displayName=\"ScrollBoxText\";FramerBsYasZ7Eq.defaultProps={height:48,width:113};addPropertyControls(FramerBsYasZ7Eq,{F9Qt912EM:{defaultValue:\"Shape\",displayTextArea:false,title:\"Title\",type:ControlType.String}});addFonts(FramerBsYasZ7Eq,[{explicitInter:true,fonts:[{family:\"Lora\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/lora/v36/0QI6MX1D_JOuGQbT0gvTJPa787weuyJDmKxemMeZ.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerBsYasZ7Eq\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"48\",\"framerImmutableVariables\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"F9Qt912EM\\\":\\\"title\\\"}\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"113\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BsYasZ7Eq.map","/*\n * ScrollBoxText\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/dAbmHGORc6ySSz5foCsF/29uCVnMGdQUdJm69qdwL/BsYasZ7Eq.js\"\nexport { default } from \"https://framerusercontent.com/modules/dAbmHGORc6ySSz5foCsF/29uCVnMGdQUdJm69qdwL/BsYasZ7Eq.js\"\n","import {\n  isDebug\n} from \"./chunk-XLY254CY.mjs\";\nimport {\n  useScrollStore,\n  useScrollableBoxStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __async,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Web/ScrollableBox.tsx\nimport { useEffect, useRef, useState } from \"react\";\nimport { motion } from \"framer-motion\";\nimport ScrollBoxText from \"https://framer.com/m/ScrollBoxText-zgHd.js\";\nimport { ControlType } from \"framer\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar textItems = [\n  \"Shape\",\n  \"Colors\",\n  \"Noise Strength\",\n  \"Noise Density\",\n  \"Spiral\",\n  \"Speed\",\n  \"Grain\",\n  \"Lighting\",\n  \"Position\",\n  \"Rotation\",\n  \"Animation\",\n  \"\",\n  // end space\n  \"\",\n  // end space\n  \"\",\n  // end space\n  \"\",\n  // end space\n  \"\",\n  // end space\n  \"\"\n  // end space\n];\nvar visibleItems = 13;\nfunction ScrollableTextBox({\n  enableFadeIn = true,\n  fadeInDelay = 0.3,\n  enableFadeOut = false,\n  fadeOutThreshold = 0.8\n} = {}) {\n  var _a;\n  const containerRef = useRef(null);\n  const { activeIndex, setActiveIndex } = useScrollableBoxStore();\n  const setHighlightWord = useScrollStore((state) => state.setHighlightWord);\n  const [itemHeight, setItemHeight] = useState(80);\n  const [isVisible, setIsVisible] = useState(!enableFadeIn);\n  const [scrollOpacity, setScrollOpacity] = useState(1);\n  const audioContextRef = useRef(null);\n  const tickSoundBufferRef = useRef(null);\n  const lastSoundIndexRef = useRef(-1);\n  useEffect(() => {\n    const fetchSound = () => __async(this, null, function* () {\n      try {\n        const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n        audioContextRef.current = audioContext;\n        const response = yield fetch(\n          \"https://ruucm.github.io/shadergradient/ui@0.0.0/assets/sounds/tick.mp3\"\n        );\n        const arrayBuffer = yield response.arrayBuffer();\n        const audioBuffer = yield audioContext.decodeAudioData(arrayBuffer);\n        tickSoundBufferRef.current = audioBuffer;\n      } catch (error) {\n        console.log(\"Could not load tick sound:\", error);\n      }\n    });\n    fetchSound();\n  }, []);\n  const playTickSound = () => {\n    if (audioContextRef.current && tickSoundBufferRef.current) {\n      const source = audioContextRef.current.createBufferSource();\n      const gainNode = audioContextRef.current.createGain();\n      source.buffer = tickSoundBufferRef.current;\n      gainNode.gain.value = 0.5;\n      source.connect(gainNode);\n      gainNode.connect(audioContextRef.current.destination);\n      source.start(0);\n    }\n  };\n  useEffect(() => {\n    if (!enableFadeIn) {\n      setIsVisible(true);\n      return;\n    }\n    const timer = setTimeout(() => {\n      setIsVisible(true);\n    }, fadeInDelay * 1e3);\n    return () => clearTimeout(timer);\n  }, [enableFadeIn, fadeInDelay]);\n  useEffect(() => {\n    const container = containerRef.current;\n    if (!container || itemHeight === 0) return;\n    const targetScrollTop = activeIndex * itemHeight;\n    container.scrollTop = targetScrollTop;\n    if (isDebug) {\n      console.log(\"Restored scroll position:\", targetScrollTop);\n      console.log(\"Restored activeIndex:\", activeIndex);\n    }\n    setHighlightWord(activeIndex);\n  }, [itemHeight]);\n  useEffect(() => {\n    const container = containerRef.current;\n    if (!container) return;\n    const calculateItemHeight = () => {\n      const containerHeight = container.clientHeight;\n      if (containerHeight <= 0) {\n        setTimeout(calculateItemHeight, 100);\n        return;\n      }\n      const newItemHeight = Math.max(50, containerHeight * (1 / visibleItems));\n      setItemHeight(newItemHeight);\n      if (isDebug) {\n        console.log(\"containerHeight\", containerHeight);\n        console.log(\"newItemHeight\", newItemHeight);\n      }\n    };\n    const initialTimeout = setTimeout(calculateItemHeight, 50);\n    const resizeObserver = new ResizeObserver(calculateItemHeight);\n    resizeObserver.observe(container);\n    const style = container.style;\n    style.setProperty(\"-webkit-scrollbar\", \"none\");\n    style.setProperty(\"-webkit-scrollbar-track\", \"none\");\n    style.setProperty(\"-webkit-scrollbar-thumb\", \"none\");\n    const handleScroll = () => {\n      const scrollTop = container.scrollTop;\n      const currentIndex = Math.round(scrollTop / itemHeight);\n      const result = Math.max(0, Math.min(currentIndex, textItems.length - 1));\n      setActiveIndex(result);\n      setHighlightWord(result);\n      if (result !== lastSoundIndexRef.current) {\n        lastSoundIndexRef.current = result;\n        playTickSound();\n      }\n      if (enableFadeOut) {\n        const maxScroll = container.scrollHeight - container.clientHeight;\n        const scrollProgress = scrollTop / maxScroll;\n        if (scrollProgress >= fadeOutThreshold) {\n          const fadeRange = 1 - fadeOutThreshold;\n          const fadeProgress = (scrollProgress - fadeOutThreshold) / fadeRange;\n          const opacity = Math.max(0, 1 - fadeProgress);\n          setScrollOpacity(opacity);\n        } else {\n          setScrollOpacity(1);\n        }\n      }\n    };\n    container.addEventListener(\"scroll\", handleScroll);\n    return () => {\n      container.removeEventListener(\"scroll\", handleScroll);\n      resizeObserver.disconnect();\n      clearTimeout(initialTimeout);\n    };\n  }, [itemHeight, isVisible]);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      style: {\n        // position: \"relative\",\n        width: \"100%\",\n        // height: \"100%\",\n        height: \"100vh\",\n        overflow: \"hidden\",\n        position: \"sticky\",\n        top: 0,\n        opacity: isVisible ? scrollOpacity : 0,\n        transition: \"opacity 0.5s ease-in-out\"\n        // paddingTop: \"25vh\",\n        // paddingBottom: \"25vh\",\n        // top: \"50%\",\n        // transform: \"translateY(-50%)\",\n        // background: \"rgba(0,255,0,0.25)\", // debug\n      },\n      children: [\n        /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            ref: containerRef,\n            style: __spreadValues({\n              position: \"relative\",\n              height: \"100%\",\n              overflowY: \"scroll\",\n              scrollSnapType: \"y mandatory\",\n              msOverflowStyle: \"none\",\n              scrollbarWidth: \"none\",\n              overflowX: \"hidden\"\n            }, isDebug ? { background: \"rgba(0,255,0,0.25)\" } : {}),\n            children: [\n              /* @__PURE__ */ jsx(\n                \"div\",\n                {\n                  style: {\n                    height: `${(((_a = containerRef.current) == null ? void 0 : _a.clientHeight) || 0) / 2 - itemHeight / 2}px`\n                  }\n                }\n              ),\n              textItems.map((text, index) => /* @__PURE__ */ jsx(\n                motion.div,\n                {\n                  style: {\n                    display: \"flex\",\n                    alignItems: \"center\",\n                    justifyContent: \"center\",\n                    height: `${itemHeight}px`,\n                    scrollSnapAlign: \"center\",\n                    color: \"white\",\n                    fontWeight: \"300\"\n                    // border: \"1px solid red\", // debug\n                  },\n                  animate: {\n                    scale: index === activeIndex ? 1.2 : 1,\n                    opacity: index === activeIndex ? 1 : 0.4\n                  },\n                  transition: {\n                    duration: 0.4,\n                    ease: \"easeOut\"\n                  },\n                  children: /* @__PURE__ */ jsx(ScrollBoxText, { title: text })\n                },\n                index\n              ))\n            ]\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.div,\n          {\n            style: {\n              position: \"absolute\",\n              top: \"50%\",\n              left: \"0\",\n              right: \"0\",\n              height: `${itemHeight}px`,\n              transform: \"translateY(-50%)\",\n              pointerEvents: \"none\"\n            },\n            initial: { opacity: 0 },\n            animate: { opacity: 1 },\n            transition: { duration: 0.5 },\n            children: /* @__PURE__ */ jsx(\n              motion.div,\n              {\n                style: {\n                  height: \"100%\"\n                  // background: \"rgba(255, 255, 255, 0.1)\",\n                  // backdropFilter: \"blur(4px)\",\n                  // borderTop: \"1px solid rgba(255, 255, 255, 0.2)\", // debug\n                  // borderBottom: \"1px solid rgba(255, 255, 255, 0.2)\",\n                },\n                children: isDebug && /* @__PURE__ */ jsxs(\"div\", { children: [\n                  \"activeIndex: \",\n                  activeIndex\n                ] })\n              }\n            )\n          }\n        )\n      ]\n    }\n  );\n}\nScrollableTextBox.propertyControls = {\n  enableFadeIn: {\n    type: ControlType.Boolean,\n    title: \"Enable Fade In\",\n    defaultValue: true,\n    description: \"Enable opacity animation on first appearance\"\n  },\n  fadeInDelay: {\n    type: ControlType.Number,\n    title: \"Fade In Delay\",\n    defaultValue: 0.3,\n    min: 0,\n    max: 5,\n    step: 0.1,\n    unit: \"s\",\n    description: \"Delay before fade in animation starts\",\n    hidden: (props) => !props.enableFadeIn\n  },\n  enableFadeOut: {\n    type: ControlType.Boolean,\n    title: \"Enable Fade Out\",\n    defaultValue: false,\n    description: \"Enable opacity fade out when reaching end of scroll\"\n  },\n  fadeOutThreshold: {\n    type: ControlType.Number,\n    title: \"Fade Out Threshold\",\n    defaultValue: 0.8,\n    min: 0,\n    max: 1,\n    step: 0.05,\n    description: \"Scroll progress (0-1) where fade out begins\",\n    hidden: (props) => !props.enableFadeOut\n  }\n};\n\nexport {\n  ScrollableTextBox\n};\n","import { ControlType } from \"framer\";\nexport const fontStack = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport const containerStyles = {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(136, 85, 255, 0.3)\",\n    color: \"#85F\",\n    border: \"1px dashed #85F\",\n    flexDirection: \"column\"\n};\nexport const defaultEvents = {\n    onClick: {\n        type: ControlType.EventHandler\n    },\n    onMouseEnter: {\n        type: ControlType.EventHandler\n    },\n    onMouseLeave: {\n        type: ControlType.EventHandler\n    }\n};\nexport const fontSizeOptions = {\n    type: ControlType.Number,\n    title: \"Font Size\",\n    min: 2,\n    max: 200,\n    step: 1,\n    displayStepper: true\n};\nexport const fontControls = {\n    font: {\n        type: ControlType.Boolean,\n        title: \"Font\",\n        defaultValue: false,\n        disabledTitle: \"Default\",\n        enabledTitle: \"Custom\"\n    },\n    fontFamily: {\n        type: ControlType.String,\n        title: \"Family\",\n        placeholder: \"Inter\",\n        hidden: ({ font  })=>!font\n    },\n    fontWeight: {\n        type: ControlType.Enum,\n        title: \"Weight\",\n        options: [\n            100,\n            200,\n            300,\n            400,\n            500,\n            600,\n            700,\n            800,\n            900\n        ],\n        optionTitles: [\n            \"Thin\",\n            \"Extra-light\",\n            \"Light\",\n            \"Regular\",\n            \"Medium\",\n            \"Semi-bold\",\n            \"Bold\",\n            \"Extra-bold\",\n            \"Black\", \n        ],\n        hidden: ({ font  })=>!font\n    }\n};\n// @TODO check if we're missing anything here — there doesn't seem to be a reliable browser API for this\nexport const localeOptions = {\n    af: \"Afrikaans\",\n    sq: \"Albanian\",\n    an: \"Aragonese\",\n    ar: \"Arabic (Standard)\",\n    \"ar-dz\": \"Arabic (Algeria)\",\n    \"ar-bh\": \"Arabic (Bahrain)\",\n    \"ar-eg\": \"Arabic (Egypt)\",\n    \"ar-iq\": \"Arabic (Iraq)\",\n    \"ar-jo\": \"Arabic (Jordan)\",\n    \"ar-kw\": \"Arabic (Kuwait)\",\n    \"ar-lb\": \"Arabic (Lebanon)\",\n    \"ar-ly\": \"Arabic (Libya)\",\n    \"ar-ma\": \"Arabic (Morocco)\",\n    \"ar-om\": \"Arabic (Oman)\",\n    \"ar-qa\": \"Arabic (Qatar)\",\n    \"ar-sa\": \"Arabic (Saudi Arabia)\",\n    \"ar-sy\": \"Arabic (Syria)\",\n    \"ar-tn\": \"Arabic (Tunisia)\",\n    \"ar-ae\": \"Arabic (U.A.E.)\",\n    \"ar-ye\": \"Arabic (Yemen)\",\n    hy: \"Armenian\",\n    as: \"Assamese\",\n    ast: \"Asturian\",\n    az: \"Azerbaijani\",\n    eu: \"Basque\",\n    bg: \"Bulgarian\",\n    be: \"Belarusian\",\n    bn: \"Bengali\",\n    bs: \"Bosnian\",\n    br: \"Breton\",\n    my: \"Burmese\",\n    ca: \"Catalan\",\n    ch: \"Chamorro\",\n    ce: \"Chechen\",\n    zh: \"Chinese\",\n    \"zh-hk\": \"Chinese (Hong Kong)\",\n    \"zh-cn\": \"Chinese (PRC)\",\n    \"zh-sg\": \"Chinese (Singapore)\",\n    \"zh-tw\": \"Chinese (Taiwan)\",\n    cv: \"Chuvash\",\n    co: \"Corsican\",\n    cr: \"Cree\",\n    hr: \"Croatian\",\n    cs: \"Czech\",\n    da: \"Danish\",\n    nl: \"Dutch (Standard)\",\n    \"nl-be\": \"Dutch (Belgian)\",\n    en: \"English\",\n    \"en-au\": \"English (Australia)\",\n    \"en-bz\": \"English (Belize)\",\n    \"en-ca\": \"English (Canada)\",\n    \"en-ie\": \"English (Ireland)\",\n    \"en-jm\": \"English (Jamaica)\",\n    \"en-nz\": \"English (New Zealand)\",\n    \"en-ph\": \"English (Philippines)\",\n    \"en-za\": \"English (South Africa)\",\n    \"en-tt\": \"English (Trinidad & Tobago)\",\n    \"en-gb\": \"English (United Kingdom)\",\n    \"en-us\": \"English (United States)\",\n    \"en-zw\": \"English (Zimbabwe)\",\n    eo: \"Esperanto\",\n    et: \"Estonian\",\n    fo: \"Faeroese\",\n    fa: \"Farsi\",\n    fj: \"Fijian\",\n    fi: \"Finnish\",\n    fr: \"French (Standard)\",\n    \"fr-be\": \"French (Belgium)\",\n    \"fr-ca\": \"French (Canada)\",\n    \"fr-fr\": \"French (France)\",\n    \"fr-lu\": \"French (Luxembourg)\",\n    \"fr-mc\": \"French (Monaco)\",\n    \"fr-ch\": \"French (Switzerland)\",\n    fy: \"Frisian\",\n    fur: \"Friulian\",\n    gd: \"Gaelic (Scots)\",\n    \"gd-ie\": \"Gaelic (Irish)\",\n    gl: \"Galacian\",\n    ka: \"Georgian\",\n    de: \"German (Standard)\",\n    \"de-at\": \"German (Austria)\",\n    \"de-de\": \"German (Germany)\",\n    \"de-li\": \"German (Liechtenstein)\",\n    \"de-lu\": \"German (Luxembourg)\",\n    \"de-ch\": \"German (Switzerland)\",\n    el: \"Greek\",\n    gu: \"Gujurati\",\n    ht: \"Haitian\",\n    he: \"Hebrew\",\n    hi: \"Hindi\",\n    hu: \"Hungarian\",\n    is: \"Icelandic\",\n    id: \"Indonesian\",\n    iu: \"Inuktitut\",\n    ga: \"Irish\",\n    it: \"Italian (Standard)\",\n    \"it-ch\": \"Italian (Switzerland)\",\n    ja: \"Japanese\",\n    kn: \"Kannada\",\n    ks: \"Kashmiri\",\n    kk: \"Kazakh\",\n    km: \"Khmer\",\n    ky: \"Kirghiz\",\n    tlh: \"Klingon\",\n    ko: \"Korean\",\n    \"ko-kp\": \"Korean (North Korea)\",\n    \"ko-kr\": \"Korean (South Korea)\",\n    la: \"Latin\",\n    lv: \"Latvian\",\n    lt: \"Lithuanian\",\n    lb: \"Luxembourgish\",\n    mk: \"FYRO Macedonian\",\n    ms: \"Malay\",\n    ml: \"Malayalam\",\n    mt: \"Maltese\",\n    mi: \"Maori\",\n    mr: \"Marathi\",\n    mo: \"Moldavian\",\n    nv: \"Navajo\",\n    ng: \"Ndonga\",\n    ne: \"Nepali\",\n    no: \"Norwegian\",\n    nb: \"Norwegian (Bokmal)\",\n    nn: \"Norwegian (Nynorsk)\",\n    oc: \"Occitan\",\n    or: \"Oriya\",\n    om: \"Oromo\",\n    \"fa-ir\": \"Persian/Iran\",\n    pl: \"Polish\",\n    pt: \"Portuguese\",\n    \"pt-br\": \"Portuguese (Brazil)\",\n    pa: \"Punjabi\",\n    \"pa-in\": \"Punjabi (India)\",\n    \"pa-pk\": \"Punjabi (Pakistan)\",\n    qu: \"Quechua\",\n    rm: \"Rhaeto-Romanic\",\n    ro: \"Romanian\",\n    \"ro-mo\": \"Romanian (Moldavia)\",\n    ru: \"Russian\",\n    \"ru-mo\": \"Russian (Moldavia)\",\n    sz: \"Sami (Lappish)\",\n    sg: \"Sango\",\n    sa: \"Sanskrit\",\n    sc: \"Sardinian\",\n    sd: \"Sindhi\",\n    si: \"Singhalese\",\n    sr: \"Serbian\",\n    sk: \"Slovak\",\n    sl: \"Slovenian\",\n    so: \"Somani\",\n    sb: \"Sorbian\",\n    es: \"Spanish\",\n    \"es-ar\": \"Spanish (Argentina)\",\n    \"es-bo\": \"Spanish (Bolivia)\",\n    \"es-cl\": \"Spanish (Chile)\",\n    \"es-co\": \"Spanish (Colombia)\",\n    \"es-cr\": \"Spanish (Costa Rica)\",\n    \"es-do\": \"Spanish (Dominican Republic)\",\n    \"es-ec\": \"Spanish (Ecuador)\",\n    \"es-sv\": \"Spanish (El Salvador)\",\n    \"es-gt\": \"Spanish (Guatemala)\",\n    \"es-hn\": \"Spanish (Honduras)\",\n    \"es-mx\": \"Spanish (Mexico)\",\n    \"es-ni\": \"Spanish (Nicaragua)\",\n    \"es-pa\": \"Spanish (Panama)\",\n    \"es-py\": \"Spanish (Paraguay)\",\n    \"es-pe\": \"Spanish (Peru)\",\n    \"es-pr\": \"Spanish (Puerto Rico)\",\n    \"es-es\": \"Spanish (Spain)\",\n    \"es-uy\": \"Spanish (Uruguay)\",\n    \"es-ve\": \"Spanish (Venezuela)\",\n    sx: \"Sutu\",\n    sw: \"Swahili\",\n    sv: \"Swedish\",\n    \"sv-fi\": \"Swedish (Finland)\",\n    \"sv-sv\": \"Swedish (Sweden)\",\n    ta: \"Tamil\",\n    tt: \"Tatar\",\n    te: \"Teluga\",\n    th: \"Thai\",\n    tig: \"Tigre\",\n    ts: \"Tsonga\",\n    tn: \"Tswana\",\n    tr: \"Turkish\",\n    tk: \"Turkmen\",\n    uk: \"Ukrainian\",\n    hsb: \"Upper Sorbian\",\n    ur: \"Urdu\",\n    ve: \"Venda\",\n    vi: \"Vietnamese\",\n    vo: \"Volapuk\",\n    wa: \"Walloon\",\n    cy: \"Welsh\",\n    xh: \"Xhosa\",\n    ji: \"Yiddish\",\n    zu: \"Zulu\"\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./constants.map","import { useIsInCurrentNavigationTarget } from \"framer\";\nimport { useEffect } from \"react\";\nexport function useOnEnter(onEnter, enabled) {\n    return useOnSpecificTargetChange(true, onEnter, enabled);\n}\nexport function useOnExit(onExit, enabled) {\n    return useOnSpecificTargetChange(false, onExit, enabled);\n}\nfunction useOnSpecificTargetChange(goal, callback, enabled = true) {\n    const isInTarget = useIsInCurrentNavigationTarget();\n    useEffect(()=>{\n        if (enabled && isInTarget === goal) callback();\n    }, [\n        isInTarget\n    ]);\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useOnEnter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnNavigationTargetChange.map","import { useRef } from \"react\";\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */ export function useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useConstant.map","import { Color } from \"framer\";\nexport function colorFromToken(color) {\n    if (color.startsWith(\"var(--token-\")) return \"rgb\" + color.split(\") /*\")[0].split(\", rgb\")[1];\n    return color;\n}\nexport function colorTokentoValue(color) {\n    return Color(colorFromToken(color)).toValue();\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"colorFromToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./colorFromToken.map","import { MotionValue } from \"framer\";\nexport const isMotionValue = (v)=>v instanceof MotionValue\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isMotionValue.map","import * as React from \"react\";\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst l = ()=>letters[Math.floor(Math.random() * letters.length)]\n;\nexport const randomID = ()=>l() + l() + l() + l() + l() + l() + l() + l() + l()\n;\nfunction createUniqueClass(suffix) {\n    return `framer-${suffix}-${randomID()}`;\n}\nexport function useUniqueClassName(suffix, deps) {\n    const [className, setClassName] = React.useState(createUniqueClass(suffix));\n    React.useEffect(()=>{\n        setClassName(createUniqueClass(suffix));\n    }, [\n        suffix,\n        ...deps\n    ]);\n    return className;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useUniqueClassName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useUniqueClassName.map","import { ControlType } from \"framer\";\n// I realize this only applies to select right now\n// but we can work on it in here\nexport function getVariantControls(Component, variant, additionalControls = {\n}) {\n    return {\n        [`${variant}TextColor`]: {\n            type: ControlType.Color,\n            title: \"Text Color\",\n            defaultValue: Component.defaultProps[`${variant}TextColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}IconColor`]: {\n            type: ControlType.Color,\n            title: \"Icon Color\",\n            defaultValue: Component.defaultProps[`${variant}IconColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BackgroundColor`]: {\n            type: ControlType.Color,\n            title: \"Bg Color\",\n            defaultValue: Component.defaultProps[`${variant}BackgroundColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderColor`]: {\n            type: ControlType.Color,\n            title: \"Border Color\",\n            defaultValue: Component.defaultProps[`${variant}BorderColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderWidth`]: {\n            type: ControlType.Number,\n            title: \" \",\n            min: 0,\n            max: 5,\n            displayStepper: true,\n            defaultValue: Component.defaultProps[`${variant}BorderWidth`],\n            hidden: (props)=>props.variant !== variant\n        },\n        ...additionalControls\n    };\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./variantUtils.map","import { useMemo } from \"react\";\nexport const isBrowserSafari = ()=>{\n    if (typeof navigator !== `undefined`) {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const isSafari = (userAgent.indexOf(\"safari\") > -1 || userAgent.indexOf(\"framermobile\") > -1 || userAgent.indexOf(\"framerx\") > -1) && userAgent.indexOf(\"chrome\") < 0;\n        return isSafari;\n    } else return false;\n};\nexport const useIsBrowserSafari = ()=>useMemo(()=>isBrowserSafari()\n    , [])\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isBrowser.map","import { useEffect } from \"react\";\n//@ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\nexport function useOnChange(value, callback) {\n    useEffect(()=>// @ts-ignore this should be detected as a MV :shrug:\n        isMotionValue(value) ? value.onChange(callback) : undefined\n    );\n}\nexport function useMultiOnChange(values, handler) {\n    useEffect(()=>{\n        const subscriptions = values.map((value)=>value.onChange(handler)\n        );\n        return ()=>subscriptions.forEach((unsubscribe)=>unsubscribe()\n            )\n        ;\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"Subscriber\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnChange.map","import { useCallback, useEffect, useRef } from \"react\";\nimport { motionValue, animate, RenderTarget } from \"framer\";\n// @ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\n// @ts-ignore\nimport { useConstant } from \"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";\nexport function useAutoMotionValue(inputValue, options) {\n    var ref;\n    // Put options on a local ref\n    // Might wanna just memo instead but it works for now\n    const optionsRef = useRef(options);\n    const animation = useRef();\n    const didInitialMount = useRef(false);\n    const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n    // in-progress - trying to figure out effect hooks\n    const onChangeDeps = (options === null || options === void 0 ? void 0 : options.onChangeDeps) ? options.onChangeDeps : [];\n    // Memoize the onChange handler\n    const onChange = useCallback(options === null || options === void 0 ? void 0 : options.onChange, [\n        ...onChangeDeps, \n    ]);\n    // Optionally scale the value from props\n    const transformer = useCallback((value)=>((ref = optionsRef.current) === null || ref === void 0 ? void 0 : ref.transform) ? optionsRef.current.transform(value) : value\n    , []);\n    // Create new MotionValue from inputValue\n    const value = useConstant(()=>isMotionValue(inputValue) ? inputValue : motionValue(transformer(inputValue))\n    );\n    // Setting value from prop change\n    useEffect(()=>{\n        if (!isMotionValue(inputValue) && didInitialMount.current) {\n            var ref1, ref2;\n            const newValue = transformer(inputValue);\n            (ref1 = animation.current) === null || ref1 === void 0 ? void 0 : ref1.stop();\n            // Call change callback\n            if (onChange) onChange(newValue, value);\n            // Trigger animation to new value\n            if (((ref2 = optionsRef.current) === null || ref2 === void 0 ? void 0 : ref2.animate) && !isOnCanvas) {\n                var ref3;\n                // @ts-ignore\n                animation.current = animate(value, newValue, (ref3 = optionsRef.current) === null || ref3 === void 0 ? void 0 : ref3.transition);\n            } else {\n                value.set(newValue);\n            }\n        }\n        didInitialMount.current = true;\n    }, [\n        inputValue,\n        ...onChangeDeps\n    ]);\n    return value;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// @ts-ignore\nimport{fontStore}from\"framer\";import{useEffect}from\"react\";import{fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";const fontWeights={100:\"Thin\",200:\"Extra-light\",300:\"Light\",400:\"Regular\",500:\"Medium\",600:\"Semi-bold\",700:\"Bold\",800:\"Extra-bold\",900:\"Black\"};export function useFontControls(props){const{fontFamily=\"Inter\",fontSize=16,fontWeight=400,font=false}=props;const fontWeightName=fontWeights[fontWeight];const customFontStack=`\"${fontFamily} ${fontWeightName}\", \"${fontFamily}\", ${fontStack}`;const fontFamilyStyle=fontFamily?{fontSize,fontWeight,fontFamily:customFontStack}:{fontSize,fontWeight};const fetchCustomFonts=async()=>{await fontStore.loadWebFontsFromSelectors([`CUSTOM;${fontFamily}`,`CUSTOM;${fontFamily} ${fontWeightName}`,`GF;${fontFamily}-${fontWeightName.toLowerCase()}`,]).catch(e=>console.error(e));};useEffect(()=>{if(font)fetchCustomFonts();},[font,fontFamily,fontWeight]);return fontFamilyStyle;}\nexport const __FramerMetadata__ = {\"exports\":{\"useFontControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useFontControls.map","import { useMemo } from \"react\";\nimport { RenderTarget } from \"framer\";\nexport function useRenderTarget() {\n    const currentRenderTarget = useMemo(()=>RenderTarget.current()\n    , []);\n    return currentRenderTarget;\n}\nexport function useIsInPreview() {\n    const inPreview = useMemo(()=>RenderTarget.current() === RenderTarget.preview\n    , []);\n    return inPreview;\n}\nexport function useIsOnCanvas() {\n    const onCanvas = useMemo(()=>RenderTarget.current() === RenderTarget.canvas\n    , []);\n    return onCanvas;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsInPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useRenderTarget.map","import * as React from \"react\";\nexport function useControlledState(value) {\n    const [controlledValue, setValue] = React.useState(value);\n    React.useEffect(()=>{\n        setValue(value);\n    }, [\n        value\n    ]);\n    return [\n        controlledValue,\n        setValue\n    ];\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useControlledState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useControlledState.map","import { useMemo } from \"react\";\nimport { ControlType } from \"framer\";\nexport function useRadius(props) {\n    const { borderRadius , isMixedBorderRadius , topLeftRadius , topRightRadius , bottomRightRadius , bottomLeftRadius ,  } = props;\n    const radiusValue = useMemo(()=>isMixedBorderRadius ? `${topLeftRadius}px ${topRightRadius}px ${bottomRightRadius}px ${bottomLeftRadius}px` : `${borderRadius}px`\n    , [\n        borderRadius,\n        isMixedBorderRadius,\n        topLeftRadius,\n        topRightRadius,\n        bottomRightRadius,\n        bottomLeftRadius, \n    ]);\n    return radiusValue;\n}\nexport const borderRadiusControl = {\n    borderRadius: {\n        title: \"Radius\",\n        type: ControlType.FusedNumber,\n        toggleKey: \"isMixedBorderRadius\",\n        toggleTitles: [\n            \"Radius\",\n            \"Radius per corner\"\n        ],\n        valueKeys: [\n            \"topLeftRadius\",\n            \"topRightRadius\",\n            \"bottomRightRadius\",\n            \"bottomLeftRadius\", \n        ],\n        valueLabels: [\n            \"TL\",\n            \"TR\",\n            \"BR\",\n            \"BL\"\n        ],\n        min: 0\n    }\n};\nexport function usePadding(props) {\n    const { padding , paddingPerSide , paddingTop , paddingRight , paddingBottom , paddingLeft ,  } = props;\n    const paddingValue = useMemo(()=>paddingPerSide ? `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px` : padding\n    , [\n        padding,\n        paddingPerSide,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft, \n    ]);\n    return paddingValue;\n}\nexport const paddingControl = {\n    padding: {\n        type: ControlType.FusedNumber,\n        toggleKey: \"paddingPerSide\",\n        toggleTitles: [\n            \"Padding\",\n            \"Padding per side\"\n        ],\n        valueKeys: [\n            \"paddingTop\",\n            \"paddingRight\",\n            \"paddingBottom\",\n            \"paddingLeft\", \n        ],\n        valueLabels: [\n            \"T\",\n            \"R\",\n            \"B\",\n            \"L\"\n        ],\n        min: 0,\n        title: \"Padding\"\n    }\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RadiusProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaddingProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./propUtils.map","import{defaultEvents,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";import{useOnEnter,useOnExit}from\"https://framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";import{colorTokentoValue,colorFromToken}from\"https://framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";import{useUniqueClassName,randomID}from\"https://framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js\";import{getVariantControls}from\"https://framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js\";import{useIsBrowserSafari}from\"https://framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js\";import{useMultiOnChange,useOnChange}from\"https://framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js\";import{mstoMinAndSec,secondsToMinutes}from\"https://framerusercontent.com/modules/4zHZnO5JojN1PrIbu2jm/revv9QCWpkh8lPzi2jje/time.js\";import{useAutoMotionValue}from\"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js\";import{useFontControls}from\"https://framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js\";import{useRenderTarget,useIsInPreview,useIsOnCanvas}from\"https://framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js\";import{useControlledState}from\"https://framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js\";import{usePadding,useRadius,paddingControl,borderRadiusControl}from\"https://framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js\";import{detectAutoSizingAxis}from\"https://framerusercontent.com/modules/8CkHAZatUz1UR8jNTcfD/HwbnIAZlUmQ2oTpcLkaH/detectAutoSizingAxis.js\";export{useOnEnter,useOnExit,defaultEvents,isMotionValue,colorFromToken,colorTokentoValue,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack,useUniqueClassName,getVariantControls,useIsBrowserSafari,randomID,useConstant,useMultiOnChange,useOnChange,usePadding,useRadius,paddingControl,borderRadiusControl,mstoMinAndSec,useFontControls,secondsToMinutes,useAutoMotionValue,useRenderTarget,useIsInPreview,useControlledState,detectAutoSizingAxis,useIsOnCanvas,};\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useUniqueClassName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getVariantControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorFromToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useControlledState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAutoMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectAutoSizingAxis\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mstoMinAndSec\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnEnter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"secondsToMinutes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","/*\n * index (framer/default-utils@0.45.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js\"\n","/** Error message constants. */ var FUNC_ERROR_TEXT = \"Expected a function\";\n/* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max, nativeMin = Math.min;\n/** Used as references for various `Number` constants. */ var NAN = 0 / 0;\n/** Used to match leading and trailing whitespace. */ var reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */ var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */ var reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */ var reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */ var freeParseInt = parseInt;\nvar now = function() {\n    return Date.now();\n};\nfunction isObject(value) {\n    var type = typeof value;\n    return value != null && (type == \"object\" || type == \"function\");\n}\nfunction isObjectLike(value) {\n    return value != null && typeof value == \"object\";\n}\nfunction toNumber(value) {\n    if (typeof value == \"number\") {\n        return value;\n    }\n    if (typeof value == \"symbol\") {\n        return NAN;\n    }\n    if (isObject(value)) {\n        var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n        value = isObject(other) ? other + \"\" : other;\n    }\n    if (typeof value != \"string\") {\n        return value === 0 ? value : +value;\n    }\n    value = value.replace(reTrim, \"\");\n    var isBinary = reIsBinary.test(value);\n    return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nexport function debounce(func, wait, options) {\n    var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n    if (typeof func != \"function\") {\n        throw new TypeError(FUNC_ERROR_TEXT);\n    }\n    wait = toNumber(wait) || 0;\n    if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = \"maxWait\" in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = \"trailing\" in options ? !!options.trailing : trailing;\n    }\n    function invokeFunc(time) {\n        var args = lastArgs, thisArg = lastThis;\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n    }\n    function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n    }\n    function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;\n        return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n    }\n    function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n    }\n    function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n            return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n    }\n    function trailingEdge(time) {\n        timerId = undefined;\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n            return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n    }\n    function cancel() {\n        if (timerId !== undefined) {\n            clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n    }\n    function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n    }\n    function debounced() {\n        var time = now(), isInvoking = shouldInvoke(time);\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n        if (isInvoking) {\n            if (timerId === undefined) {\n                return leadingEdge(lastCallTime);\n            }\n            if (maxing) {\n                // Handle invocations in a tight loop.\n                clearTimeout(timerId);\n                timerId = setTimeout(timerExpired, wait);\n                return invokeFunc(lastCallTime);\n            }\n        }\n        if (timerId === undefined) {\n            timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n    }\n    debounced.cancel = cancel;\n    debounced.flush = flush;\n    return debounced;\n}\nexport function throttle(func, wait, options) {\n    var leading = true, trailing = true;\n    if (typeof func != \"function\") {\n        throw new TypeError(FUNC_ERROR_TEXT);\n    }\n    if (isObject(options)) {\n        leading = \"leading\" in options ? !!options.leading : leading;\n        trailing = \"trailing\" in options ? !!options.trailing : trailing;\n    }\n    return debounce(func, wait, {\n        leading: leading,\n        maxWait: wait,\n        trailing: trailing\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"throttle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"debounce\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./lodash.map","/*\n * lodash (framer/lodash@0.3.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/0tL3NK6Gdibfi84549mt/wxfj3uKBUiepHMkJD9XI/lodash.js\"\n","import {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Web/SimpleSlider.tsx\nimport { ControlType, RenderTarget, withCSS } from \"framer\";\nimport {\n  animate,\n  transform,\n  motion,\n  useTransform\n} from \"framer-motion\";\nimport { useRef, useState, useCallback } from \"react\";\nimport {\n  isMotionValue,\n  useOnChange,\n  useAutoMotionValue\n} from \"https://framer.com/m/framer/default-utils.js@^0.45.0\";\nimport { throttle } from \"https://framer.com/m/framer/lodash.js@0.3.0\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SimpleSlider = withCSS(\n  function Slider(props) {\n    const {\n      value: valueProp,\n      trackHeight,\n      fillColor,\n      focusColor,\n      min,\n      max,\n      onChange,\n      onChangeLive,\n      onMax,\n      onMin,\n      trackColor,\n      trackRadius,\n      knobSize,\n      knobColor,\n      constrainKnob,\n      shadow,\n      shouldAnimateChange,\n      transition,\n      overdrag,\n      knobSetting,\n      style\n    } = props;\n    const [hovered, setHovered] = useState(false);\n    const [focused, setFocused] = useState(false);\n    const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n    const shouldAnimate = shouldAnimateChange && !onCanvas;\n    const isConstrained = constrainKnob && knobSetting === \"Show\" /* Show */;\n    const showKnob = knobSetting !== \"Hide\" /* Hide */;\n    const input = useRef();\n    const knobPadding = 8;\n    const updateValue = useCallback(\n      (newVal, target) => {\n        throttledInputUpdate(newVal);\n        if (onChange) onChange(newVal);\n        if (shouldAnimate) animate(target, newVal, transition);\n        else requestAnimationFrame(() => target.set(newVal));\n      },\n      [transition, shouldAnimate, onChange]\n    );\n    const value = useAutoMotionValue(valueProp, {\n      onChange: updateValue,\n      transform: (value2) => transform(value2, [0, 100], [min, max])\n    });\n    const knobX = useTransform(value, [min, max], [\"0%\", \"100%\"]);\n    const normalizedValue = useTransform(value, [min, max], [0, 1]);\n    const throttledInputUpdate = useCallback(\n      throttle((val) => {\n        var _a;\n        if ((_a = input.current) == null ? void 0 : _a.value) input.current.value = val;\n      }, 100),\n      [input]\n    );\n    useOnChange(value, (val) => {\n      if (isMotionValue(valueProp)) throttledInputUpdate(val);\n      if (onMax && val >= max) onMax();\n      if (onMin && val <= min) onMin();\n      if (onChangeLive) onChangeLive(val);\n    });\n    const handleInputChange = (e) => {\n      updateValue(parseFloat(e.target.value), value);\n    };\n    const handleMouseDown = (e) => {\n      if (parseFloat(e.target.value) !== 0)\n        updateValue(parseFloat(e.target.value), value);\n    };\n    const handleMouseUp = () => {\n    };\n    const totalKnobWidth = showKnob ? knobSize + knobPadding : knobPadding;\n    const totalHeight = Math.max(knobSize + knobPadding, trackHeight);\n    return /* @__PURE__ */ jsxs(\n      \"div\",\n      {\n        className: \"framer-default-slider\",\n        onMouseEnter: () => setHovered(true),\n        onMouseLeave: () => setHovered(false),\n        style: __spreadProps(__spreadValues({\n          position: \"relative\"\n        }, style), {\n          alignItems: \"center\",\n          justifyContent: \"flex-start\",\n          border: `0px solid ${focusColor}`,\n          \"--framer-default-slider-height\": totalHeight,\n          \"--framer-default-slider-width\": totalKnobWidth\n        }),\n        children: [\n          /* @__PURE__ */ jsx(\n            \"input\",\n            {\n              ref: input,\n              style: __spreadValues(__spreadProps(__spreadValues({\n                flexShrink: 0,\n                minHeight: totalHeight,\n                opacity: 0,\n                margin: 0,\n                display: \"flex\"\n              }, style), {\n                WebkitTapHighlightColor: \"rgba(0, 0, 0, 0)\"\n              }), !isConstrained && {\n                width: `calc(100% + ${totalKnobWidth}px)`,\n                marginLeft: -totalKnobWidth / 2\n              }),\n              onFocus: () => setFocused(true),\n              onBlur: () => setFocused(false),\n              type: \"range\",\n              min,\n              max,\n              defaultValue: -1,\n              step: \"any\",\n              onChange: handleInputChange,\n              onMouseDown: handleMouseDown,\n              onMouseUp: handleMouseUp\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            \"div\",\n            {\n              style: {\n                background: trackColor,\n                position: \"absolute\",\n                top: `calc(50% - ${Math.ceil(trackHeight / 2)}px)`,\n                borderRadius: trackRadius,\n                display: \"flex\",\n                height: trackHeight,\n                width: \"100%\",\n                transformOrigin: \"left\",\n                pointerEvents: \"none\",\n                overflow: \"hidden\"\n              },\n              children: /* @__PURE__ */ jsx(\n                motion.div,\n                {\n                  style: {\n                    height: trackHeight,\n                    width: \"100%\",\n                    background: fillColor,\n                    scaleX: normalizedValue,\n                    position: \"absolute\",\n                    top: `calc(50% - ${Math.ceil(trackHeight / 2)}px)`,\n                    transformOrigin: \"left\",\n                    pointerEvents: \"none\"\n                  }\n                }\n              )\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            motion.div,\n            {\n              style: __spreadValues({\n                x: knobX,\n                position: \"absolute\",\n                display: \"flex\",\n                width: \"100%\",\n                top: `calc(50% - ${Math.floor(knobSize / 2)}px)`,\n                pointerEvents: \"none\"\n              }, isConstrained ? {\n                width: `calc(100% - ${knobSize}px`,\n                left: 0\n              } : {\n                width: `100%`,\n                left: -knobSize / 2\n              }),\n              children: /* @__PURE__ */ jsx(\n                motion.div,\n                {\n                  initial: false,\n                  animate: {\n                    scale: hovered && knobSetting === \"Hover\" /* Hover */ || knobSetting === \"Show\" /* Show */ ? 1 : 0\n                  },\n                  transition: {\n                    type: \"spring\",\n                    stiffness: 900,\n                    damping: 40\n                  },\n                  style: {\n                    transformOrigin: \"50% 50%\",\n                    width: knobSize,\n                    height: knobSize,\n                    borderRadius: \"50%\",\n                    background: knobColor,\n                    pointerEvents: \"none\",\n                    boxShadow: `0px 1px 2px 0px ${shadow}, \n                                0px 2px 4px 0px ${shadow}, \n                                0px 4px 8px 0px ${shadow}`\n                  }\n                }\n              )\n            }\n          )\n        ]\n      }\n    );\n  },\n  [\n    \".framer-default-slider input[type=range] {  width: 100%; height: 100% background:transparent margin: 0;}\",\n    \".framer-default-slider input[type=range]:focus { outline: none; }\",\n    \".framer-default-slider input[type=range]::-ms-track { width: 100%; cursor: pointer; background: transparent; border-color: transparent; color: transparent; }\",\n    \".framer-default-slider input[type=range]::-webkit-slider-thumb { height: var(--framer-default-slider-height, 0px); width: var(--framer-default-slider-width, 0px); border-radius: 0;  background: none; }\",\n    \".framer-default-slider input[type=range]::-moz-range-thumb { height: var(--framer-default-slider-height, 0px); width: var(--framer-default-slider-width, 0px); border-radius: 0;  background: none; }\",\n    \".framer-default-slider input[type=range]::-ms-thumb  { height: var(--framer-default-slider-height, 0px); width: var(--framer-default-slider-width, 0px); border-radius: 0;  background: none; }\"\n  ]\n);\nSimpleSlider.displayName = \"SimpleSlider\";\nSimpleSlider.defaultProps = {\n  height: 20,\n  width: 200,\n  trackHeight: 4,\n  fillColor: \"#09F\",\n  trackColor: \"#DDD\",\n  knobColor: \"#FFF\",\n  focusColor: \"rgba(0, 153, 255,0)\",\n  shadow: \"rgba(0,0,0,0.1)\",\n  knobSize: 20,\n  overdrag: true,\n  min: 0,\n  max: 100,\n  value: 50,\n  trackRadius: 5,\n  knobSetting: \"Show\" /* Show */,\n  constrainKnob: false,\n  transition: {\n    type: \"spring\",\n    delay: 0,\n    stiffness: 750,\n    damping: 50\n  },\n  shouldAnimateChange: true\n};\nSimpleSlider.propertyControls = {\n  fillColor: {\n    title: \"Tint\",\n    type: ControlType.Color\n  },\n  trackColor: {\n    title: \"Track\",\n    type: ControlType.Color\n  },\n  knobColor: {\n    title: \"Knob\",\n    type: ControlType.Color\n  },\n  shadow: { type: ControlType.Color, title: \"Shadow\" },\n  // focusColor: {\n  //     title: \"Focus\",\n  //     type: ControlType.Color,\n  // },\n  shouldAnimateChange: {\n    type: ControlType.Boolean,\n    title: \"Changes\",\n    enabledTitle: \"Animate\",\n    disabledTitle: \"Instant\"\n  },\n  transition: {\n    type: ControlType.Transition,\n    defaultValue: SimpleSlider.defaultProps.transition\n  },\n  knobSetting: {\n    type: ControlType.Enum,\n    displaySegmentedControl: true,\n    title: \"Knob\",\n    options: [\"Hide\", \"Hover\", \"Show\"]\n  },\n  constrainKnob: {\n    type: ControlType.Boolean,\n    title: \"Constrain\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\",\n    hidden: ({ knobSetting }) => knobSetting !== \"Show\" /* Show */\n  },\n  knobSize: {\n    type: ControlType.Number,\n    title: \"Knob\",\n    min: 10,\n    max: 100,\n    hidden: ({ knobSetting }) => knobSetting === \"Hide\" /* Hide */\n  },\n  value: {\n    type: ControlType.Number,\n    title: \"Value\",\n    min: 0,\n    max: 100,\n    unit: \"%\"\n  },\n  trackHeight: {\n    title: \"Height\",\n    type: ControlType.Number,\n    min: 0\n  },\n  min: {\n    title: \"Min\",\n    type: ControlType.Number,\n    displayStepper: true\n  },\n  trackRadius: {\n    type: ControlType.Number,\n    displayStepper: true,\n    min: 0,\n    max: 200,\n    title: \"Radius\"\n  },\n  max: {\n    title: \"Max\",\n    type: ControlType.Number,\n    displayStepper: true\n  },\n  onChange: { type: ControlType.EventHandler },\n  onMax: { type: ControlType.EventHandler },\n  onMin: { type: ControlType.EventHandler }\n};\n\nexport {\n  SimpleSlider\n};\n","import {\n  isDebug\n} from \"./chunk-XLY254CY.mjs\";\n\n// src/components/Web/TriggerSection.tsx\nimport { ControlType } from \"framer\";\nimport { useState, useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction TriggerSection({ width, height, title }) {\n  const [isVisible, setIsVisible] = useState(isDebug);\n  useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.metaKey && event.shiftKey && event.key === \"d\") {\n        setIsVisible((prevState) => !prevState);\n      }\n    };\n    window.addEventListener(\"keydown\", handleKeyDown);\n    return () => {\n      window.removeEventListener(\"keydown\", handleKeyDown);\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    {\n      style: {\n        position: \"absolute\",\n        width: \"100%\",\n        height: \"100%\",\n        display: \"flex\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        opacity: isVisible ? 1 : 0,\n        background: \"rgba(255, 168, 168, .8)\",\n        color: \"red\",\n        boxShadow: \"inset 0px 0px 0px 2px red\",\n        fontSize: 8,\n        fontFamily: \"Inter\"\n      },\n      children: title\n    }\n  );\n}\nTriggerSection.propertyControls = {\n  title: {\n    type: ControlType.String,\n    defaultValue: \"title\"\n  }\n};\n\nexport {\n  TriggerSection\n};\n","import {\n  useSupabaseStore\n} from \"./chunk-R6GBIJ5D.mjs\";\n\n// src/components/FigmaPlugin/SupabaseClient.tsx\nimport { useEffect } from \"react\";\nimport { ControlType } from \"framer\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction SupabaseClient(props) {\n  const { databaseURL, anonKey } = props;\n  const initSupabase = useSupabaseStore((state) => state.initSupabase);\n  useEffect(() => {\n    console.log(\n      \"[SupabaseClient] Component mounted with URL:\",\n      databaseURL ? \"provided\" : \"missing\"\n    );\n    if (databaseURL && anonKey) {\n      console.log(\"[SupabaseClient] Initializing Supabase client...\");\n      initSupabase(databaseURL, anonKey);\n    } else {\n      console.warn(\"[SupabaseClient] Missing databaseURL or anonKey\");\n    }\n  }, [databaseURL, anonKey]);\n  return /* @__PURE__ */ jsx(\"div\", { style: { width: \"100%\", height: \"100%\", background: \"blue\" } });\n}\nSupabaseClient.propertyControls = {\n  databaseURL: {\n    title: \"DB URL\",\n    type: ControlType.String,\n    defaultValue: \"\"\n  },\n  anonKey: {\n    title: \"Anon Key\",\n    type: ControlType.String,\n    defaultValue: \"\"\n  }\n};\n\nexport {\n  SupabaseClient\n};\n","// src/components/FigmaPlugin/NumberInput.tsx\nimport { useState, useCallback, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar NumberInput = ({\n  label,\n  value,\n  setValue,\n  mouseOverOn,\n  setMouseOverOn,\n  min,\n  max,\n  step\n}) => {\n  const [snapshot, setSnapshot] = useState(value);\n  const [startVal, setStartVal] = useState(0);\n  const onStart = useCallback(\n    (event) => {\n      setStartVal(event.clientX);\n      setSnapshot(value);\n    },\n    [value]\n  );\n  useEffect(() => {\n    const onUpdate = (event) => {\n      var _a;\n      if (startVal) {\n        const diff = event.clientX - startVal;\n        const sensitivity = 0.5;\n        const rawValue = snapshot + diff * sensitivity;\n        const newValue = step ? Math.round(rawValue / step) * step : rawValue;\n        if (min !== void 0 && newValue < min) return;\n        if (max !== void 0 && newValue > max) return;\n        const decimalPlaces = step ? ((_a = step.toString().split(\".\")[1]) == null ? void 0 : _a.length) || 0 : 0;\n        setValue(parseFloat(newValue.toFixed(decimalPlaces)));\n      }\n    };\n    const onEnd = () => {\n      setStartVal(0);\n    };\n    document.addEventListener(\"mousemove\", onUpdate);\n    document.addEventListener(\"mouseup\", onEnd);\n    return () => {\n      document.removeEventListener(\"mousemove\", onUpdate);\n      document.removeEventListener(\"mouseup\", onEnd);\n    };\n  }, [startVal, setValue, snapshot, min, max, step]);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: 'w-full bg-[#F2F2F2] rounded-md flex flex-row gap-0 justify-center items-center h-full relative cursor-ew-resize font-[\"Inter\"]',\n      onMouseOver: () => setMouseOverOn(label),\n      onMouseLeave: () => setMouseOverOn(\"\"),\n      onMouseDown: onStart,\n      children: [\n        /* @__PURE__ */ jsx(\"div\", { className: \"h-full w-fit flex justify-center items-center text-[9px] text-black opacity-70 capitalize ml-2 select-none\", children: label }),\n        /* @__PURE__ */ jsx(\"div\", { className: \"w-full flex justify-center items-center\", children: /* @__PURE__ */ jsx(\n          \"input\",\n          {\n            type: \"number\",\n            value,\n            onChange: (e) => {\n              const parsed = parseFloat(e.target.value);\n              if (!isNaN(parsed)) {\n                setValue(parsed);\n              }\n            },\n            className: \"font-medium w-[24px] h-[26px] outline-none text-center bg-[#F2F2F2] rounded-md [&::-webkit-inner-spin-button]:appearance-none overflow-visible select-none \" + (mouseOverOn === label ? \"text-[#ff340a]\" : \"text-[#000000]\"),\n            min,\n            max,\n            step\n          }\n        ) })\n      ]\n    }\n  );\n};\n\nexport {\n  NumberInput\n};\n","// src/components/FigmaPlugin/InputTitle.tsx\nimport { useState } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction InputTitle({\n  title,\n  info,\n  infoContent,\n  condition = false\n}) {\n  const [isMouseOver, setIsMouseOver] = useState(false);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: 'w-[105px] flex items-center flex-shrink-0 gap-0.5 select-none font-[\"Inter\"] relative',\n      children: [\n        /* @__PURE__ */ jsxs(\"p\", { className: \"font-medium whitespace-nowrap select-none\", children: [\n          condition === true && /* @__PURE__ */ jsx(\"span\", { className: \"opacity-30\", children: \"\\u21B3 \" }),\n          title\n        ] }),\n        info === true && /* @__PURE__ */ jsx(\n          \"div\",\n          {\n            className: \"flex items-center justify-center relative w-fit h-fit p-0.5 cursor-pointer\",\n            onMouseOver: () => setIsMouseOver(true),\n            onMouseLeave: () => setIsMouseOver(false),\n            children: /* @__PURE__ */ jsx(\n              \"svg\",\n              {\n                xmlns: \"http://www.w3.org/2000/svg\",\n                width: \"16\",\n                height: \"16\",\n                fill: \"#000000\",\n                viewBox: \"0 0 256 256\",\n                className: \"opacity-30\",\n                children: /* @__PURE__ */ jsx(\"path\", { d: \"M144,180a16,16,0,1,1-16-16A16,16,0,0,1,144,180Zm92-52A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128ZM128,64c-24.26,0-44,17.94-44,40v4a12,12,0,0,0,24,0v-4c0-8.82,9-16,20-16s20,7.18,20,16-9,16-20,16a12,12,0,0,0-12,12v8a12,12,0,0,0,23.73,2.56C158.31,137.88,172,122.37,172,104,172,81.94,152.26,64,128,64Z\" })\n              }\n            )\n          }\n        ),\n        info === true && /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            className: \"w-fit h-fit absolute z-20 pointer-events-none duration-300 \" + (isMouseOver === true ? \"opacity-100 bottom-7\" : \"opacity-0 bottom-6\"),\n            children: [\n              /* @__PURE__ */ jsx(\"div\", { className: \"absolute w-full h-full bg-[#ff340a] z-0 rounded-md opacity-80\", children: /* @__PURE__ */ jsx(\"div\", { className: \"bg-[#ff340a] absolute w-3 h-3 rotate-45 rounded-sm bottom-[-4px] left-[12px]\" }) }),\n              /* @__PURE__ */ jsx(\"p\", { className: \"relative z-20 p-2 text-white min-w-[200px] font-medium\", children: infoContent })\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  InputTitle\n};\n","import {\n  NumberInput\n} from \"./chunk-Q4ROEIZI.mjs\";\nimport {\n  InputTitle\n} from \"./chunk-SIKJUSOK.mjs\";\n\n// src/components/FigmaPlugin/TripleNumberInput.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction TripleNumberInput({\n  title,\n  defaultValueX,\n  defaultValueY,\n  defaultValueZ,\n  setValueX,\n  setValueY,\n  setValueZ,\n  step,\n  min,\n  max,\n  info,\n  infoContent,\n  condition\n}) {\n  const [sharedValueX, setSharedValueX] = useState(defaultValueX);\n  const [sharedValueY, setSharedValueY] = useState(defaultValueY);\n  const [sharedValueZ, setSharedValueZ] = useState(defaultValueZ);\n  const [mouseOverOn, setMouseOverOn] = useState(\"\");\n  useEffect(() => {\n    setSharedValueX(defaultValueX);\n    setSharedValueY(defaultValueY);\n    setSharedValueZ(defaultValueZ);\n  }, []);\n  useEffect(() => {\n    setValueX(sharedValueX);\n  }, [sharedValueX]);\n  useEffect(() => {\n    setValueY(sharedValueY);\n  }, [sharedValueY]);\n  useEffect(() => {\n    setValueZ(sharedValueZ);\n  }, [sharedValueZ]);\n  useEffect(() => {\n    setSharedValueX(defaultValueX);\n  }, [defaultValueX]);\n  useEffect(() => {\n    setSharedValueY(defaultValueY);\n  }, [defaultValueY]);\n  useEffect(() => {\n    setSharedValueZ(defaultValueZ);\n  }, [defaultValueZ]);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: \"flex items-center w-full h-[26px] flex-row gap-2\",\n      style: { fontFamily: \"Inter Medium\" },\n      children: [\n        /* @__PURE__ */ jsx(\n          InputTitle,\n          {\n            title,\n            info,\n            infoContent,\n            condition\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center w-full h-fit flex-row gap-2\", children: [\n          /* @__PURE__ */ jsx(\n            NumberInput,\n            {\n              label: \"x\",\n              value: sharedValueX,\n              setValue: setSharedValueX,\n              mouseOverOn,\n              setMouseOverOn,\n              min,\n              max,\n              step\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            NumberInput,\n            {\n              label: \"y\",\n              value: sharedValueY,\n              setValue: setSharedValueY,\n              mouseOverOn,\n              setMouseOverOn,\n              min,\n              max,\n              step\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            NumberInput,\n            {\n              label: \"z\",\n              value: sharedValueZ,\n              setValue: setSharedValueZ,\n              mouseOverOn,\n              setMouseOverOn,\n              min,\n              max,\n              step\n            }\n          )\n        ] })\n      ]\n    }\n  );\n}\n\nexport {\n  TripleNumberInput\n};\n","import {\n  useQueryState,\n  useURLQueryState\n} from \"./chunk-I5E26MJT.mjs\";\n\n// src/components/Shared/BasicControls.tsx\nimport { ControlType } from \"framer\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction ChangeColorButton() {\n  const [, setColor1] = useQueryState(\"color1\");\n  return /* @__PURE__ */ jsx(\"button\", { onClick: () => setColor1(\"#0D77E0\"), children: \"useQueryState\" });\n}\nfunction ChangeButton3({ url }) {\n  const setQueryValue = useURLQueryState();\n  return /* @__PURE__ */ jsx(\"button\", { onClick: () => setQueryValue(url), children: \"setQueryValue\" });\n}\nChangeButton3.propertyControls = {\n  url: {\n    type: ControlType.String\n  }\n};\n\nexport {\n  ChangeColorButton,\n  ChangeButton3\n};\n","import {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/TextAnimation.tsx\nimport { ControlType, RenderTarget } from \"framer\";\nimport { useState, useEffect, useRef } from \"react\";\nimport { motion, useAnimation, useInView } from \"framer-motion\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar currentTarget = RenderTarget.current();\nvar isOnCanvas = currentTarget === RenderTarget.canvas;\nfunction TextAnimation({\n  fontSize,\n  color,\n  content,\n  delay = 100,\n  width = null,\n  yBefore = 20,\n  fontFamily = '\"Lora\", serif',\n  hiddenOpacity = 0\n}) {\n  const textStyles = {\n    textAlign: \"left\",\n    fontSize,\n    color,\n    fontWeight: 500,\n    fontFamily,\n    lineHeight: 1.2\n  };\n  const letterContainerVariants = {\n    before: { transition: { staggerChildren: 0.015 } },\n    after: { transition: { staggerChildren: 0.015 } }\n  };\n  const letterVariants = {\n    before: {\n      opacity: 0,\n      y: yBefore,\n      rotate: -15,\n      scale: 0.4,\n      transition: {\n        type: \"spring\",\n        duration: 0.4,\n        damping: 10\n      }\n    },\n    after: {\n      opacity: 1,\n      y: 0,\n      scale: 1,\n      rotate: 0,\n      transition: {\n        type: \"spring\",\n        duration: 0.4,\n        damping: 10\n        // stiffness: 80,\n      }\n    }\n  };\n  const ref = useRef(null);\n  const inView = useInView(ref);\n  const controls = useAnimation();\n  const [activePresetInView, setActivePresetInView] = useState(false);\n  useEffect(() => {\n    if (inView) {\n      controls.start(\"after\");\n    } else {\n      controls.start(\"before\");\n    }\n  }, [controls, inView]);\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setActivePresetInView(true);\n    }, delay);\n    return () => clearTimeout(timer);\n  }, [delay]);\n  return /* @__PURE__ */ jsxs(\n    motion.div,\n    {\n      style: {\n        position: \"relative\",\n        wordBreak: \"break-word\",\n        width: width === 0 ? \"fit-content\" : width\n      },\n      children: [\n        /* @__PURE__ */ jsx(\n          \"div\",\n          {\n            style: __spreadProps(__spreadValues({}, textStyles), {\n              opacity: hiddenOpacity,\n              pointerEvents: \"none\",\n              userSelect: \"none\",\n              whiteSpace: \"nowrap\",\n              margin: 0\n            }),\n            children: content\n          }\n        ),\n        /* @__PURE__ */ jsx(\n          motion.h1,\n          {\n            variants: letterContainerVariants,\n            ref,\n            initial: isOnCanvas ? \"after\" : \"before\",\n            animate: isOnCanvas ? \"after\" : controls,\n            \"aria-hidden\": true,\n            style: __spreadProps(__spreadValues({}, textStyles), {\n              position: \"absolute\",\n              inset: 0,\n              margin: 0,\n              width: \"100%\",\n              pointerEvents: \"none\",\n              display: \"flex\",\n              alignItems: \"flex-start\"\n            }),\n            children: /* @__PURE__ */ jsx(\"div\", { style: { width: \"100%\" }, children: content.split(\" \").map((word, wordI) => /* @__PURE__ */ jsxs(\n              \"div\",\n              {\n                style: {\n                  display: \"inline-flex\"\n                },\n                children: [\n                  Array.from(word).map((letter, index) => /* @__PURE__ */ jsx(\n                    motion.span,\n                    {\n                      style: {\n                        position: \"relative\",\n                        display: \"inline-block\",\n                        width: \"auto\",\n                        verticalAlign: \"top\"\n                      },\n                      variants: letterVariants,\n                      children: letter === \" \" ? \"\\xA0\" : letter\n                    },\n                    `${index}-${letter}`\n                  )),\n                  wordI !== content.split(\" \").length - 1 ? \"\\xA0\" : null\n                ]\n              },\n              `word-${word}-${wordI}`\n            )) })\n          }\n        )\n      ]\n    }\n  );\n}\nTextAnimation.propertyControls = {\n  width: { type: ControlType.Number, defaultValue: 300 },\n  content: { type: ControlType.String, defaultValue: \"Hello World\" },\n  color: { type: ControlType.Color, defaultValue: \"#ffffff\" },\n  fontSize: { type: ControlType.Number, defaultValue: 20 },\n  fontFamily: { type: ControlType.String, defaultValue: \"Lora\" },\n  hiddenOpacity: { type: ControlType.Number, defaultValue: 0, min: 0, max: 1 }\n};\n\nexport {\n  TextAnimation\n};\n","// src/components/Shared/TextHover.tsx\nimport { motion } from \"framer-motion\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar letterContainerVariants = {\n  initial: { transition: { staggerChildren: 0.015 } },\n  default: { transition: { staggerChildren: 0.015 } },\n  hover: { transition: { staggerChildren: 0.03 } }\n};\nvar letterVariants = {\n  initial: {\n    opacity: 0,\n    y: 60,\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      damping: 12,\n      stiffness: 200\n    }\n  },\n  default: {\n    opacity: 1,\n    y: 0,\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      damping: 20,\n      stiffness: 200\n    }\n  },\n  hover: {\n    opacity: 1,\n    y: -4,\n    rotate: 0,\n    transition: {\n      type: \"spring\",\n      damping: 12,\n      stiffness: 200\n    }\n  }\n};\nfunction TextHover({\n  fontSize,\n  color,\n  content,\n  delay = 0,\n  width = null,\n  font = null,\n  border = false,\n  fontWeight = 400,\n  isFramerCanvas = false\n}) {\n  return /* @__PURE__ */ jsx(\n    motion.div,\n    {\n      style: {\n        position: \"relative\",\n        wordBreak: \"break-word\",\n        maxWidth: width === 0 ? \"fit-content\" : width,\n        width: \"fit-content\",\n        height: \"fit-content\",\n        fontFamily: '\"' + font + '\", san-serif',\n        display: \"flex\",\n        flexDirection: \"column\",\n        color,\n        whiteSpace: \"nowrap\",\n        userSelect: \"none\"\n      },\n      children: /* @__PURE__ */ jsxs(\n        motion.h1,\n        {\n          variants: letterContainerVariants,\n          initial: isFramerCanvas ? \"default\" : \"initial\",\n          whileInView: \"default\",\n          whileHover: \"hover\",\n          style: {\n            fontWeight,\n            margin: 0,\n            width: \"fit-content\",\n            userSelect: \"none\"\n          },\n          transition: { delay },\n          children: [\n            /* @__PURE__ */ jsx(\n              \"div\",\n              {\n                style: {\n                  textAlign: \"left\",\n                  fontSize,\n                  color,\n                  display: \"flex\",\n                  flexWrap: \"wrap\",\n                  alignItems: \"center\",\n                  height: \"fit-content\"\n                },\n                children: content.split(\" \").map((word, wordI) => /* @__PURE__ */ jsxs(\n                  \"div\",\n                  {\n                    style: {\n                      height: \"fit-content\",\n                      display: \"flex\",\n                      alignItems: \"center\"\n                    },\n                    children: [\n                      Array.from(word).map((letter, index) => /* @__PURE__ */ jsx(\n                        motion.div,\n                        {\n                          style: {\n                            width: \"fit-content\",\n                            height: \"fit-content\",\n                            overflow: \"hidden\",\n                            position: \"relative\",\n                            display: \"inline-block\"\n                          },\n                          children: /* @__PURE__ */ jsx(\n                            motion.span,\n                            {\n                              variants: letterVariants,\n                              transition: { duration: 0.5 },\n                              style: {\n                                position: \"relative\",\n                                display: \"inline-block\"\n                              },\n                              children: letter === \" \" ? \"\\xA0\" : letter\n                            }\n                          )\n                        },\n                        `${index}-${letter}`\n                      )),\n                      wordI !== content.split(\" \").length - 1 ? \"\\xA0\" : null\n                    ]\n                  },\n                  `word-${word}-${wordI}`\n                ))\n              }\n            ),\n            border && /* @__PURE__ */ jsx(\n              motion.div,\n              {\n                style: { background: color, height: 2, marginTop: 3 },\n                initial: { width: 0 },\n                animate: { width: \"100%\" },\n                transition: { delay: delay + 0.5 }\n              }\n            )\n          ]\n        }\n      )\n    }\n  );\n}\n\nexport {\n  TextHover\n};\n","import {\n  esm_default,\n  esm_default2,\n  hexToHsva,\n  hsvaToHex\n} from \"./chunk-FHHPRMGM.mjs\";\nimport {\n  useOnClickOutside\n} from \"./chunk-XLY254CY.mjs\";\n\n// src/components/FigmaPlugin/ColorInput.tsx\nimport * as React from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar isValidHex = (color) => {\n  if (!color || typeof color !== \"string\") return false;\n  return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color);\n};\nvar getValidColorOrFallback = (color, fallback = \"#000000\") => {\n  return isValidHex(color) ? color : fallback;\n};\nfunction ColorInput({\n  defaultValue,\n  setValue\n}) {\n  const [sharedValue, setSharedValue] = React.useState(defaultValue);\n  const [isClicked, setIsClicked] = React.useState(false);\n  const colorPickerRef = React.useRef(null);\n  const triggerRef = React.useRef(null);\n  React.useEffect(() => {\n    setSharedValue(defaultValue);\n  }, []);\n  React.useEffect(() => {\n    setValue(sharedValue);\n  }, [sharedValue]);\n  React.useEffect(() => {\n    setSharedValue(defaultValue);\n  }, [defaultValue]);\n  React.useEffect(() => {\n    const observer = new IntersectionObserver(\n      ([entry]) => {\n        if (!entry.isIntersecting && isClicked) {\n          setIsClicked(false);\n        }\n      },\n      { threshold: 0.5 }\n      // Trigger when any part of the element is not visible\n    );\n    if (triggerRef.current) {\n      observer.observe(triggerRef.current);\n    }\n    return () => {\n      if (triggerRef.current) {\n        observer.unobserve(triggerRef.current);\n      }\n    };\n  }, [isClicked]);\n  const updateColorWheelPosition = React.useCallback(() => {\n    if (isClicked && colorPickerRef.current && triggerRef.current) {\n      const triggerRect = triggerRef.current.getBoundingClientRect();\n      const colorWheelRect = colorPickerRef.current.getBoundingClientRect();\n      const left = triggerRect.left + triggerRect.width / 2 - colorWheelRect.width / 2;\n      const top = triggerRect.top - colorWheelRect.height - 5;\n      colorPickerRef.current.style.left = `${left}px`;\n      colorPickerRef.current.style.top = `${top}px`;\n    }\n  }, [isClicked]);\n  useOnClickOutside(colorPickerRef, () => setIsClicked(false));\n  React.useEffect(() => {\n    updateColorWheelPosition();\n    const handleScroll = () => {\n      updateColorWheelPosition();\n    };\n    if (isClicked) {\n      window.addEventListener(\"scroll\", handleScroll, true);\n    }\n    return () => {\n      window.removeEventListener(\"scroll\", handleScroll, true);\n    };\n  }, [isClicked, updateColorWheelPosition]);\n  return /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center w-full h-full flex-row gap-2\", children: [\n    /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center gap-2 w-full relative h-full\", children: [\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          ref: triggerRef,\n          className: \"w-full h-[26px] rounded-md cursor-pointer\",\n          style: {\n            background: getValidColorOrFallback(sharedValue),\n            border: getValidColorOrFallback(sharedValue) === \"#ffffff\" ? \"1px solid #F2F2F2\" : \"0px solid transparent\"\n          },\n          onClick: () => {\n            setIsClicked(!isClicked);\n          }\n        }\n      ),\n      /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          ref: colorPickerRef,\n          id: \"colorwheel\",\n          style: {\n            width: \"fit-content\",\n            height: \"fit-content\",\n            position: \"fixed\",\n            zIndex: 100,\n            display: isClicked === true ? \"block\" : \"none\"\n          },\n          children: /* @__PURE__ */ jsxs(\n            \"div\",\n            {\n              style: {\n                display: \"flex\",\n                width: \"fit-content\",\n                height: \"fit-content\",\n                background: \"white\",\n                padding: 16,\n                flexDirection: \"column\",\n                justifyContent: \"center\",\n                alignItems: \"center\",\n                gap: 16,\n                borderRadius: 5,\n                filter: \"drop-shadow(0px 0px 10px rgba(0,0,0,0.10))\"\n              },\n              children: [\n                /* @__PURE__ */ jsx(\n                  esm_default2,\n                  {\n                    color: getValidColorOrFallback(sharedValue),\n                    onChange: (color) => {\n                      setSharedValue(color.hex);\n                    },\n                    width: 200,\n                    height: 200\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  esm_default,\n                  {\n                    width: 200,\n                    radius: 4,\n                    style: { display: \"flex\", alignItems: \"center\" },\n                    hsva: hexToHsva(getValidColorOrFallback(sharedValue)),\n                    onChange: (color) => {\n                      const validColor = getValidColorOrFallback(sharedValue);\n                      setSharedValue(\n                        hsvaToHex({\n                          h: hexToHsva(validColor).h,\n                          // @ts-ignore\n                          s: color.s,\n                          v: color.v,\n                          a: 1\n                        })\n                      );\n                    }\n                  }\n                ),\n                /* @__PURE__ */ jsx(\n                  \"div\",\n                  {\n                    style: {\n                      width: 16,\n                      height: 16,\n                      background: \"white\",\n                      position: \"absolute\",\n                      borderRadius: 3,\n                      bottom: -5,\n                      transform: \"rotate(45deg)\"\n                    }\n                  }\n                )\n              ]\n            }\n          )\n        }\n      )\n    ] }),\n    /* @__PURE__ */ jsx(\n      \"input\",\n      {\n        type: \"text\",\n        value: sharedValue,\n        onChange: (e) => setSharedValue(e.target.value),\n        className: \"w-[84px] h-[26px] outline-none text-center bg-[#F2F2F2] rounded-md flex items-center justify-center\"\n      }\n    )\n  ] });\n}\n\nexport {\n  ColorInput\n};\n","import {\n  NumberInput\n} from \"./chunk-Q4ROEIZI.mjs\";\nimport {\n  InputTitle\n} from \"./chunk-SIKJUSOK.mjs\";\n\n// src/components/FigmaPlugin/DoubleNumberInput.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction DoubleNumberInput({\n  title,\n  defaultValueX,\n  defaultValueY,\n  labelX,\n  labelY,\n  setValueX,\n  setValueY,\n  step,\n  min,\n  max,\n  info,\n  infoContent,\n  condition\n}) {\n  const [sharedValueX, setSharedValueX] = useState(defaultValueX);\n  const [sharedValueY, setSharedValueY] = useState(defaultValueY);\n  const [mouseOverOn, setMouseOverOn] = useState(\"\");\n  useEffect(() => {\n    setSharedValueX(defaultValueX);\n    setSharedValueY(defaultValueY);\n  }, []);\n  useEffect(() => {\n    setValueX(sharedValueX);\n  }, [sharedValueX]);\n  useEffect(() => {\n    setValueY(sharedValueY);\n  }, [sharedValueY]);\n  useEffect(() => {\n    setSharedValueX(defaultValueX);\n  }, [defaultValueX]);\n  useEffect(() => {\n    setSharedValueY(defaultValueY);\n  }, [defaultValueY]);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: \"flex items-center w-full h-[26px] flex-row gap-2\",\n      style: { fontFamily: \"Inter Medium\" },\n      children: [\n        /* @__PURE__ */ jsx(\n          InputTitle,\n          {\n            title,\n            info,\n            infoContent,\n            condition\n          }\n        ),\n        /* @__PURE__ */ jsxs(\"div\", { className: \"flex items-center w-full h-fit flex-row gap-2\", children: [\n          /* @__PURE__ */ jsx(\n            NumberInput,\n            {\n              label: labelX,\n              value: sharedValueX,\n              setValue: setSharedValueX,\n              mouseOverOn,\n              setMouseOverOn,\n              min,\n              max,\n              step\n            }\n          ),\n          /* @__PURE__ */ jsx(\n            NumberInput,\n            {\n              label: labelY,\n              value: sharedValueY,\n              setValue: setSharedValueY,\n              mouseOverOn,\n              setMouseOverOn,\n              min,\n              max,\n              step\n            }\n          )\n        ] })\n      ]\n    }\n  );\n}\n\nexport {\n  DoubleNumberInput\n};\n","import {\n  u\n} from \"./chunk-2FOTMNF6.mjs\";\nimport {\n  InputTitle\n} from \"./chunk-SIKJUSOK.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/FigmaPlugin/RangeSlider.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction RangeSlider({\n  title,\n  defaultValue,\n  setValue,\n  step,\n  min,\n  max,\n  info,\n  infoContent,\n  condition\n}) {\n  const [rangeValue, setRangeValue] = useState(defaultValue);\n  const [isMouseOver, setIsMouseOver] = useState(false);\n  useEffect(() => {\n    setRangeValue(defaultValue);\n  }, []);\n  useEffect(() => {\n    setRangeValue(defaultValue);\n  }, [defaultValue]);\n  useEffect(() => {\n    setValue(rangeValue);\n  }, [rangeValue]);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: 'flex items-center w-full h-[26px] flex-row gap-2 font-[\"Inter\"]',\n      children: [\n        /* @__PURE__ */ jsx(\n          InputTitle,\n          {\n            title,\n            info,\n            infoContent,\n            condition\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            className: \"flex items-center w-full h-fit flex-row gap-2\",\n            onMouseOver: () => setIsMouseOver(true),\n            onMouseLeave: () => setIsMouseOver(false),\n            children: [\n              /* @__PURE__ */ jsx(\n                \"input\",\n                {\n                  type: \"number\",\n                  value: rangeValue[0],\n                  onChange: (e) => {\n                    setRangeValue([Number(e.target.value), rangeValue[1]]);\n                  },\n                  min: 0,\n                  className: \"font-medium w-[42px] h-[26px] outline-none text-center bg-[#F2F2F2] rounded-md flex items-center justify-center [&::-webkit-inner-spin-button]:appearance-none \" + (isMouseOver === true ? \"text-[#ff340a]\" : \"text-[#000000]\"),\n                  step\n                }\n              ),\n              /* @__PURE__ */ jsx(\n                u,\n                {\n                  value: rangeValue,\n                  step,\n                  min,\n                  max,\n                  onChange: (values) => {\n                    setRangeValue(values);\n                  },\n                  className: \"w-full rounded-md bg-[#F2F2F2] cursor-ew-resize overflow-hidden transition-height duration-300 \" + (isMouseOver === true ? \"h-[26px]\" : \"h-[5px]\"),\n                  trackClassName: \"h-full duration-300 \" + (isMouseOver === true ? \"bg-[#ff340a]\" : \"bg-[#ABABAB]\"),\n                  renderTrack: (props, state) => /* @__PURE__ */ jsx(\n                    \"div\",\n                    __spreadProps(__spreadValues({}, props), {\n                      className: \"h-full flex relative \" + (isMouseOver === true ? \"bg-[#ff340a]\" : \"bg-[#ABABAB]\"),\n                      style: __spreadProps(__spreadValues({}, props.style), {\n                        opacity: state.index === 1 ? 1 : 0\n                      })\n                    })\n                  ),\n                  renderThumb: (props, state) => /* @__PURE__ */ jsx(\n                    \"div\",\n                    __spreadProps(__spreadValues({}, props), {\n                      className: \"w-[8px] h-full justify-center items-center flex\",\n                      children: /* @__PURE__ */ jsx(\n                        \"div\",\n                        {\n                          className: \"absolute w-[2px] bg-[#ffffff] rounded-full pointer-events-none duration-200 h-[30%] \" + (isMouseOver === true ? \"opacity-100\" : \"opacity-0\")\n                        }\n                      )\n                    })\n                  )\n                }\n              ),\n              /* @__PURE__ */ jsx(\n                \"input\",\n                {\n                  type: \"number\",\n                  value: rangeValue[1],\n                  onChange: (e) => {\n                    setRangeValue([rangeValue[0], Number(e.target.value)]);\n                  },\n                  className: \"font-medium w-[42px] h-[26px] outline-none text-center bg-[#F2F2F2] rounded-md flex items-center justify-center [&::-webkit-inner-spin-button]:appearance-none \" + (isMouseOver === true ? \"text-[#ff340a]\" : \"text-[#000000]\"),\n                  step,\n                  max\n                }\n              )\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  RangeSlider\n};\n","import {\n  u\n} from \"./chunk-2FOTMNF6.mjs\";\nimport {\n  InputTitle\n} from \"./chunk-SIKJUSOK.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/FigmaPlugin/Slider.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nfunction Slider({\n  title,\n  defaultValue,\n  setValue,\n  step,\n  min,\n  max,\n  info,\n  infoContent,\n  condition\n}) {\n  const [sharedValue, setSharedValue] = useState(defaultValue);\n  const [isMouseOver, setIsMouseOver] = useState(false);\n  useEffect(() => {\n    setSharedValue(defaultValue);\n  }, []);\n  useEffect(() => {\n    setValue(sharedValue);\n  }, [sharedValue]);\n  useEffect(() => {\n    setSharedValue(defaultValue);\n  }, [defaultValue]);\n  return /* @__PURE__ */ jsxs(\n    \"div\",\n    {\n      className: 'flex items-center w-full h-[26px] flex-row gap-2 font-[\"Inter\"]',\n      children: [\n        /* @__PURE__ */ jsx(\n          InputTitle,\n          {\n            title,\n            info,\n            infoContent,\n            condition\n          }\n        ),\n        /* @__PURE__ */ jsxs(\n          \"div\",\n          {\n            className: \"flex items-center w-full h-fit flex-row gap-2\",\n            onMouseOver: () => setIsMouseOver(true),\n            onMouseLeave: () => setIsMouseOver(false),\n            children: [\n              /* @__PURE__ */ jsx(\n                u,\n                {\n                  value: Number(sharedValue),\n                  step,\n                  min,\n                  max,\n                  onChange: (value, index) => setSharedValue(value),\n                  className: \"w-full rounded-md bg-[#F2F2F2] cursor-ew-resize overflow-hidden transition-height duration-300 \" + (isMouseOver === true ? \"h-[26px]\" : \"h-[5px]\"),\n                  trackClassName: \"h-full duration-300 \" + (isMouseOver === true ? \"bg-[#ff340a]\" : \"bg-[#ABABAB]\"),\n                  renderTrack: (props, state) => /* @__PURE__ */ jsx(\n                    \"div\",\n                    __spreadProps(__spreadValues({}, props), {\n                      className: \"h-full flex relative \" + (isMouseOver === true ? \"bg-[#ff340a]\" : \"bg-[#ABABAB]\"),\n                      style: __spreadProps(__spreadValues({}, props.style), {\n                        opacity: state.index === 1 ? 0 : 1\n                      })\n                    })\n                  ),\n                  renderThumb: (props, state) => /* @__PURE__ */ jsx(\n                    \"div\",\n                    __spreadProps(__spreadValues({}, props), {\n                      className: \"w-[8px] h-full justify-center items-center flex\",\n                      children: /* @__PURE__ */ jsx(\n                        \"div\",\n                        {\n                          className: \"absolute w-[2px] bg-[#ffffff] rounded-full pointer-events-none duration-200 h-[30%] \" + (isMouseOver === true ? \"opacity-100\" : \"opacity-0\")\n                        }\n                      )\n                    })\n                  )\n                }\n              ),\n              /* @__PURE__ */ jsx(\n                \"input\",\n                {\n                  type: \"number\",\n                  value: sharedValue,\n                  onChange: (e) => setSharedValue(e.target.value),\n                  className: \"font-medium w-[42px] h-[26px] outline-none text-center bg-[#F2F2F2] rounded-md flex items-center justify-center [&::-webkit-inner-spin-button]:appearance-none \" + (isMouseOver === true ? \"text-[#ff340a]\" : \"text-[#000000]\"),\n                  min,\n                  max,\n                  step\n                }\n              )\n            ]\n          }\n        )\n      ]\n    }\n  );\n}\n\nexport {\n  Slider\n};\n","import {\n  parseUrlForControls\n} from \"./chunk-2ZZ6H7J7.mjs\";\nimport {\n  PRESETS\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  useUIStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __async,\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/FramerPlugin.tsx\nimport { useState, useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction updateTheme(Component) {\n  return (props) => {\n    const [theme, setTheme] = useState(\"\");\n    useEffect(() => {\n      setTheme(document.body.dataset.framerTheme);\n      console.log(props);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: theme === \"light\" ? \"preset\" : \"dark\"\n      })\n    );\n  };\n}\nfunction AddToCanvas(Component) {\n  return (props) => {\n    const activePreset = useUIStore((state) => state.activePreset);\n    const inputMode = useUIStore((state) => state.inputMode);\n    const urlInput = useUIStore((state) => state.urlInput);\n    console.log(\"[AddToCanvas] state\", { inputMode, urlInput, activePreset });\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        variant: inputMode === \"preset\" || inputMode === \"url\" && urlInput !== \"\" ? \"Active\" : \"Inactive\",\n        onClick: () => __async(this, null, function* () {\n          console.log(\"[AddToCanvas] click\", {\n            inputMode,\n            urlInput,\n            activePreset\n          });\n          if (inputMode === \"url\" && urlInput !== \"\") {\n            console.log(\n              \"[AddToCanvas] parsing url input\",\n              urlInput,\n              parseUrlForControls(urlInput)\n            );\n            window.parent.postMessage(\n              __spreadValues({\n                message: \"ADD_TO_CANVAS\"\n              }, parseUrlForControls(urlInput)),\n              \"*\"\n            );\n          } else if (inputMode === \"preset\") {\n            const activePresetUrl = \"https://shadergradient.co/customize\" + PRESETS[activePreset].url;\n            console.log(\n              \"[AddToCanvas] parsing preset\",\n              activePreset,\n              activePresetUrl,\n              parseUrlForControls(activePresetUrl)\n            );\n            window.parent.postMessage(\n              __spreadValues({\n                message: \"ADD_TO_CANVAS\"\n              }, parseUrlForControls(activePresetUrl)),\n              \"*\"\n            );\n          }\n        })\n      })\n    );\n  };\n}\n\nexport {\n  updateTheme,\n  AddToCanvas\n};\n","import {\n  isValidUrl,\n  parseUrlForControls\n} from \"./chunk-2ZZ6H7J7.mjs\";\nimport {\n  useURLQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  PRESETS\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  useUIStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/overrides/Shared.tsx\nimport { useEffect, useState, forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction HideBanner(Component) {\n  return (props) => {\n    useEffect(() => {\n      const badge = document.getElementById(\"__framer-badge-container\");\n      if (badge) badge.remove();\n    }, []);\n    return /* @__PURE__ */ jsx(Component, __spreadValues({}, props));\n  };\n}\nfunction CurrentPreset(Component) {\n  return (props) => {\n    const activePreset = useUIStore((state) => state.activePreset);\n    const presetTitle = PRESETS[activePreset].title;\n    return /* @__PURE__ */ jsx(Component, __spreadProps(__spreadValues({}, props), { text: presetTitle }));\n  };\n}\nfunction togglePreset(Component) {\n  return (props) => {\n    const setInputMode = useUIStore((state) => state.setInputMode);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onClick: () => {\n          setInputMode(\"preset\");\n          console.log(\"preset\");\n        }\n      })\n    );\n  };\n}\nfunction toggleUrl(Component) {\n  return (props) => {\n    const setInputMode = useUIStore((state) => state.setInputMode);\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onClick: () => {\n          setInputMode(\"url\");\n          console.log(\"url\");\n        }\n      })\n    );\n  };\n}\nfunction UrlInput(Component) {\n  return (props) => {\n    const setQueryValue = useURLQueryState();\n    const setUrlInput = useUIStore((state) => state.setUrlInput);\n    const [value, setValue] = useState(\"\");\n    const [valid, setValid] = useState(true);\n    let variant = \"default\";\n    if (value) {\n      if (valid) variant = \"valid\";\n      else variant = \"invalid\";\n    }\n    return /* @__PURE__ */ jsx(\n      Component,\n      __spreadProps(__spreadValues({}, props), {\n        onChange: (e) => {\n          const value2 = e.target.value;\n          setValue(value2);\n          console.log(isValidUrl(value2));\n          if (isValidUrl(value2)) {\n            setValid(true);\n            setQueryValue(value2);\n            setUrlInput(value2);\n            console.log(parseUrlForControls(value2));\n          } else {\n            setValid(false);\n          }\n        }\n      })\n    );\n  };\n}\nvar href = \"https://ruucm.github.io/shadergradient/ui@latest/styles.css\";\nfunction TailwindWrapper(Component) {\n  return forwardRef((props, ref) => {\n    const [isLoaded, setIsLoaded] = useState(false);\n    useEffect(() => {\n      let link = document.querySelector(\n        `link[href=\"${href}\"]`\n      );\n      if (!link) {\n        link = document.createElement(\"link\");\n        link.rel = \"stylesheet\";\n        link.href = href;\n        document.head.appendChild(link);\n      }\n      const handleLoad = () => setIsLoaded(true);\n      if (link.sheet) {\n        setIsLoaded(true);\n      } else {\n        link.addEventListener(\"load\", handleLoad);\n        link.addEventListener(\"error\", () => {\n          console.error(`Failed to load CSS: ${href}`);\n          setIsLoaded(true);\n        });\n      }\n      return () => {\n        link.removeEventListener(\"load\", handleLoad);\n      };\n    }, []);\n    if (!isLoaded) return null;\n    return /* @__PURE__ */ jsx(Component, __spreadValues({ ref }, props));\n  });\n}\n\nexport {\n  HideBanner,\n  CurrentPreset,\n  togglePreset,\n  toggleUrl,\n  UrlInput,\n  TailwindWrapper\n};\n","import {\n  init_useQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  init_store\n} from \"./chunk-UIXDPZLL.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/index.ts\ninit_useQueryState();\ninit_store();\n","import {\n  init_useQueryState,\n  useQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  ShaderGradientCanvas,\n  init_dist,\n  mergeCanvasProps\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/ShaderGradientStatelessCanvas.tsx\ninit_dist();\ninit_useQueryState();\nimport { jsx } from \"react/jsx-runtime\";\nfunction ShaderGradientStatelessCanvas(props) {\n  const [pixelDensity] = useQueryState(\"pixelDensity\");\n  const [fov] = useQueryState(\"fov\");\n  const [preserveDrawingBuffer] = useQueryState(\"preserveDrawingBuffer\");\n  const [powerPreference] = useQueryState(\"powerPreference\");\n  const canvasProps = mergeCanvasProps({\n    queryPixelDensity: pixelDensity,\n    queryFov: fov,\n    queryPreserveDrawingBuffer: preserveDrawingBuffer,\n    queryPowerPreference: powerPreference,\n    props\n  });\n  return /* @__PURE__ */ jsx(\n    ShaderGradientCanvas,\n    __spreadProps(__spreadValues({}, props), {\n      pixelDensity: canvasProps.pixelDensity,\n      fov: canvasProps.fov,\n      preserveDrawingBuffer: canvasProps.preserveDrawingBuffer,\n      powerPreference: canvasProps.powerPreference\n    })\n  );\n}\n\nexport {\n  ShaderGradientStatelessCanvas\n};\n","import {\n  init_store,\n  updateGradientState\n} from \"./chunk-UIXDPZLL.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/store/useSearchParamToStore.ts\ninit_store();\nimport { useEffect } from \"react\";\nfunction useSearchParamToStore() {\n  useEffect(() => {\n    updateGradientState(window.location.search);\n  }, []);\n}\n\nexport {\n  useSearchParamToStore\n};\n","import {\n  init_store,\n  updateGradientState,\n  useUIStore\n} from \"./chunk-UIXDPZLL.mjs\";\nimport {\n  PRESETS,\n  init_presetURLs\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  __esm\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/store/usePresetToStore.ts\nimport { useEffect } from \"react\";\nfunction usePresetToStore() {\n  const activePreset = useUIStore((state) => state.activePreset);\n  useEffect(() => {\n    var _a;\n    let gradientURL;\n    if (!pageLoaded && ((_a = window.location.search) == null ? void 0 : _a.includes(\"pixelDensity\")))\n      gradientURL = window.location.search;\n    else gradientURL = PRESETS[activePreset].url;\n    updateGradientState(gradientURL);\n    pageLoaded = true;\n  }, [activePreset]);\n}\nvar pageLoaded;\nvar init_usePresetToStore = __esm({\n  \"src/components/Shared/ShaderGradientStateless/store/usePresetToStore.ts\"() {\n    init_presetURLs();\n    init_store();\n    pageLoaded = false;\n  }\n});\n\nexport {\n  usePresetToStore,\n  init_usePresetToStore\n};\n","import {\n  init_usePresetToStore,\n  usePresetToStore\n} from \"./chunk-MKH7JDZ4.mjs\";\nimport {\n  init_useQueryState,\n  useQueryState,\n  useURLQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  init_store,\n  updateGradientState,\n  useBillingInterval,\n  useBillingIntervalStore,\n  useCursorStore,\n  useDomStore,\n  useFigma,\n  useQueryStore,\n  useUIStore\n} from \"./chunk-UIXDPZLL.mjs\";\nimport {\n  DEFAUlT_PRESET,\n  PRESETS,\n  init_presetURLs,\n  initialActivePreset\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  __esm,\n  __export\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/store/index.ts\nvar store_exports = {};\n__export(store_exports, {\n  DEFAUlT_PRESET: () => DEFAUlT_PRESET,\n  PRESETS: () => PRESETS,\n  initialActivePreset: () => initialActivePreset,\n  updateGradientState: () => updateGradientState,\n  useBillingInterval: () => useBillingInterval,\n  useBillingIntervalStore: () => useBillingIntervalStore,\n  useCursorStore: () => useCursorStore,\n  useDomStore: () => useDomStore,\n  useFigma: () => useFigma,\n  usePresetToStore: () => usePresetToStore,\n  useQueryState: () => useQueryState,\n  useQueryStore: () => useQueryStore,\n  useUIStore: () => useUIStore,\n  useURLQueryState: () => useURLQueryState\n});\nvar init_store2 = __esm({\n  \"src/components/Shared/ShaderGradientStateless/store/index.ts\"() {\n    init_store();\n    init_useQueryState();\n    init_presetURLs();\n    init_usePresetToStore();\n  }\n});\n\nexport {\n  store_exports,\n  init_store2 as init_store\n};\n","import {\n  init_store\n} from \"./chunk-YDTEP3DZ.mjs\";\nimport {\n  init_useQueryState,\n  useQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  __export1,\n  init_query_string,\n  useCursorStore\n} from \"./chunk-UIXDPZLL.mjs\";\nimport {\n  formatFramerProps,\n  formatUrlString,\n  init_dist\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  __objRest,\n  __spreadValues\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/useControlValues.ts\ninit_store();\ninit_dist();\ninit_useQueryState();\ninit_query_string();\nfunction useControlValues(control, _a) {\n  var _b = _a, { urlString } = _b, props = __objRest(_b, [\"urlString\"]);\n  const [type] = useQueryState(\"type\");\n  const [animate] = useQueryState(\"animate\");\n  const [range] = useQueryState(\"range\");\n  const [rangeStart] = useQueryState(\"rangeStart\");\n  const [rangeEnd] = useQueryState(\"rangeEnd\");\n  const [loop] = useQueryState(\"loop\");\n  const [loopDuration] = useQueryState(\"loopDuration\");\n  const [uTime] = useQueryState(\"uTime\");\n  const [uSpeed] = useQueryState(\"uSpeed\");\n  const [uStrength] = useQueryState(\"uStrength\");\n  const [uDensity] = useQueryState(\"uDensity\");\n  const [uFrequency] = useQueryState(\"uFrequency\");\n  const [uAmplitude] = useQueryState(\"uAmplitude\");\n  const [positionX] = useQueryState(\"positionX\");\n  const [positionY] = useQueryState(\"positionY\");\n  const [positionZ] = useQueryState(\"positionZ\");\n  const [rotationX] = useQueryState(\"rotationX\");\n  const [rotationY] = useQueryState(\"rotationY\");\n  const [rotationZ] = useQueryState(\"rotationZ\");\n  const [color1] = useQueryState(\"color1\");\n  const [color2] = useQueryState(\"color2\");\n  const [color3] = useQueryState(\"color3\");\n  const [cAzimuthAngle] = useQueryState(\"cAzimuthAngle\");\n  const [cPolarAngle] = useQueryState(\"cPolarAngle\");\n  const [cDistance] = useQueryState(\"cDistance\");\n  const [cameraZoom] = useQueryState(\"cameraZoom\");\n  const [wireframe] = useQueryState(\"wireframe\");\n  const [shader] = useQueryState(\"shader\");\n  const [lightType] = useQueryState(\"lightType\");\n  const [brightness] = useQueryState(\"brightness\");\n  const [envPreset] = useQueryState(\"envPreset\");\n  const [grain] = useQueryState(\"grain\");\n  const [reflection] = useQueryState(\"reflection\");\n  const [zoomOut] = useQueryState(\"zoomOut\");\n  const [toggleAxis] = useQueryState(\"toggleAxis\");\n  const hoverState = useCursorStore((state) => state.hoverState);\n  const [frameRate] = useQueryState(\"frameRate\");\n  const [destination] = useQueryState(\"destination\");\n  const [format] = useQueryState(\"format\");\n  const queryProps = {\n    type,\n    animate,\n    range,\n    rangeStart,\n    rangeEnd,\n    loop,\n    loopDuration,\n    frameRate,\n    destination,\n    format,\n    uTime,\n    uSpeed,\n    uStrength,\n    uDensity,\n    uFrequency,\n    uAmplitude,\n    positionX,\n    positionY,\n    positionZ,\n    rotationX,\n    rotationY,\n    rotationZ,\n    color1,\n    color2,\n    color3,\n    cAzimuthAngle,\n    cPolarAngle,\n    cDistance,\n    cameraZoom,\n    wireframe,\n    shader,\n    lightType,\n    brightness,\n    envPreset,\n    grain,\n    reflection,\n    zoomOut,\n    toggleAxis,\n    hoverState\n    // include hoverState to flush the shader when it is hovered\n  };\n  if (control === \"props\")\n    return clean(__spreadValues(__spreadValues({}, queryProps), formatFramerProps(props)));\n  else if (control === \"query\")\n    return clean(\n      urlString ? __export1(formatUrlString(urlString), {\n        parseNumbers: true,\n        parseBooleans: true,\n        arrayFormat: \"index\"\n      }) : queryProps\n    );\n}\nfunction clean(obj) {\n  const cleanedObject = {};\n  for (const key in obj) {\n    if (obj[key] !== null) {\n      cleanedObject[key] = obj[key];\n    }\n  }\n  return cleanedObject;\n}\n\nexport {\n  useControlValues\n};\n","import {\n  useSearchParamToStore\n} from \"./chunk-HLHO6DZG.mjs\";\nimport {\n  useControlValues\n} from \"./chunk-3TVNMPH3.mjs\";\nimport {\n  init_store,\n  store_exports\n} from \"./chunk-YDTEP3DZ.mjs\";\nimport {\n  ShaderGradient,\n  init_dist,\n  init_presetURLs,\n  propertyControls\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  __spreadProps,\n  __spreadValues,\n  __toCommonJS\n} from \"./chunk-HXGKXP63.mjs\";\n\n// src/components/Shared/ShaderGradientStateless/ShaderGradientStateless.tsx\ninit_dist();\nimport { ControlType } from \"framer\";\ninit_presetURLs();\nimport { jsx } from \"react/jsx-runtime\";\nfunction ShaderGradientStateless(passedProps) {\n  useSearchParamToStore();\n  const props = useControlValues(passedProps.control, passedProps);\n  const enableCameraUpdate = passedProps.enableCameraUpdate !== false;\n  return /* @__PURE__ */ jsx(\n    ShaderGradient,\n    __spreadProps(__spreadValues({}, props), {\n      onCameraUpdate: enableCameraUpdate ? (updates) => {\n        const { cAzimuthAngle, cPolarAngle, cDistance, cameraZoom } = updates;\n        if (typeof window !== \"undefined\") {\n          const { useQueryStore } = (init_store(), __toCommonJS(store_exports));\n          const next = {};\n          if (typeof cAzimuthAngle !== \"undefined\")\n            next.cAzimuthAngle = cAzimuthAngle;\n          if (typeof cPolarAngle !== \"undefined\")\n            next.cPolarAngle = cPolarAngle;\n          if (typeof cDistance !== \"undefined\") next.cDistance = cDistance;\n          if (typeof cameraZoom !== \"undefined\")\n            next.cameraZoom = cameraZoom;\n          if (Object.keys(next).length) {\n            useQueryStore.setState(next);\n          }\n        }\n      } : void 0\n    })\n  );\n}\nShaderGradientStateless.propertyControls = propertyControls(\n  ControlType,\n  \"stateless\"\n);\n\nexport {\n  ShaderGradientStateless\n};\n","import \"./chunk-J35WMPEU.mjs\";\nimport \"./chunk-JATPNCR2.mjs\";\nimport {\n  Price,\n  TogglePrice\n} from \"./chunk-GISSEJFZ.mjs\";\nimport {\n  CenterCrop1,\n  CenterCrop2,\n  Gap,\n  HideGradientsOnMobile,\n  MainGradient,\n  SectionObserver,\n  SectionText,\n  WordGradient,\n  WordGradientText,\n  WordHighlight,\n  WordHighlight2,\n  fpsCount,\n  memoryUsage,\n  wordHighlightText\n} from \"./chunk-GD6HMUGA.mjs\";\nimport {\n  ArrowLeft,\n  ArrowRight,\n  InitCustomize,\n  PresetIndex,\n  PresetTitle,\n  WebEasyViewControl,\n  WebEasyViewInfo,\n  WebStatelessOverride,\n  randomBtn,\n  randomGradient,\n  randomText,\n  slider,\n  sliderSmartComp,\n  textClipper,\n  time,\n  toggleSmartComp,\n  withClickOutsideClosed\n} from \"./chunk-SJZJCCP5.mjs\";\nimport \"./chunk-425BLYMY.mjs\";\nimport \"./chunk-AGDIGZ2U.mjs\";\nimport {\n  PriceFigma,\n  PriceText,\n  StartTrial,\n  TogglePriceFigma,\n  isUpgraded,\n  subscribeLink,\n  upgradingText,\n  userEmail,\n  userInfo\n} from \"./chunk-O6NO2YVM.mjs\";\nimport {\n  ColorsTab,\n  ConnectFigmaMessage,\n  CopyBtn,\n  DestinationControl,\n  Duration,\n  EasyViewInfo,\n  Error,\n  EstimatedSize,\n  ExportLoadingOverlay,\n  FigmaUrlInput,\n  FormatControl,\n  HighlightButton,\n  LoadViewAfterStyleSheet,\n  MotionTab,\n  OpenGIFPage,\n  ShapeTab,\n  ShowCopyContent,\n  StatelessOverride,\n  TabSwitcher,\n  Timeline,\n  TimelineWrapper,\n  ToggleShare,\n  UndoButton,\n  ViewTab,\n  WidthFillOnLoad,\n  createRectangle,\n  extractGIF,\n  goBack,\n  insertCanvasAsImage\n} from \"./chunk-I2ZUP7NU.mjs\";\nimport \"./chunk-6V3BLWHH.mjs\";\nimport \"./chunk-VQME7MQ6.mjs\";\nimport \"./chunk-UYFPDYW7.mjs\";\nimport \"./chunk-YFGZA6BU.mjs\";\nimport \"./chunk-BGA6FIQU.mjs\";\nimport \"./chunk-CK47F4LN.mjs\";\nimport \"./chunk-75LPQSKV.mjs\";\nimport \"./chunk-64EKMGYT.mjs\";\nimport \"./chunk-BI4IT72G.mjs\";\nimport \"./chunk-XKMCKCFY.mjs\";\nimport \"./chunk-2WMPBKSG.mjs\";\nimport \"./chunk-XZSE53IL.mjs\";\nimport \"./chunk-SHTJ3O2Z.mjs\";\nimport \"./chunk-3M45RMAS.mjs\";\nimport \"./chunk-UMQJMRW4.mjs\";\nimport \"./chunk-PQRWYNOC.mjs\";\nimport \"./chunk-MMICMJ2O.mjs\";\nimport \"./chunk-7PXGVEQA.mjs\";\nimport \"./chunk-52ME4UGP.mjs\";\nimport {\n  CustomizeColorInput\n} from \"./chunk-GAUTZI25.mjs\";\nimport {\n  CustomizeRadio\n} from \"./chunk-PVBM535U.mjs\";\nimport {\n  CustomizeRangeSlider\n} from \"./chunk-NP467S2G.mjs\";\nimport {\n  CustomizeSlider\n} from \"./chunk-AOTIM5NS.mjs\";\nimport \"./chunk-OHMYNLEK.mjs\";\nimport {\n  CustomizeNumberInput\n} from \"./chunk-OUDGQEHL.mjs\";\nimport {\n  Button\n} from \"./chunk-X4SBI64H.mjs\";\nimport {\n  Icons\n} from \"./chunk-ZK6FQ3TL.mjs\";\nimport {\n  ScrollableTextBox\n} from \"./chunk-5VV6G3RV.mjs\";\nimport {\n  SimpleSlider\n} from \"./chunk-G2ZIPR5M.mjs\";\nimport \"./chunk-VDGKXM7B.mjs\";\nimport {\n  TriggerSection\n} from \"./chunk-ODN7DQFH.mjs\";\nimport \"./chunk-LSJHI6I5.mjs\";\nimport {\n  SupabaseClient\n} from \"./chunk-ZQPHMFNB.mjs\";\nimport {\n  TripleNumberInput\n} from \"./chunk-QIDNC2OV.mjs\";\nimport {\n  ChangeButton3,\n  ChangeColorButton\n} from \"./chunk-NSSTPG3L.mjs\";\nimport \"./chunk-3I3TPE7B.mjs\";\nimport {\n  TextAnimation\n} from \"./chunk-J3KEJBIZ.mjs\";\nimport {\n  TextHover\n} from \"./chunk-IK6DJNIF.mjs\";\nimport {\n  ColorInput\n} from \"./chunk-M62OL3J4.mjs\";\nimport \"./chunk-FHHPRMGM.mjs\";\nimport \"./chunk-5DN6VBB3.mjs\";\nimport {\n  DoubleNumberInput\n} from \"./chunk-F7QBAWNO.mjs\";\nimport \"./chunk-Q4ROEIZI.mjs\";\nimport {\n  RangeSlider\n} from \"./chunk-IWS7MKAX.mjs\";\nimport {\n  Slider\n} from \"./chunk-R6AEDQIR.mjs\";\nimport \"./chunk-2FOTMNF6.mjs\";\nimport {\n  InputTitle\n} from \"./chunk-SIKJUSOK.mjs\";\nimport \"./chunk-XLY254CY.mjs\";\nimport \"./chunk-B4GXHE46.mjs\";\nimport \"./chunk-QNYMEATR.mjs\";\nimport {\n  AddToCanvas,\n  updateTheme\n} from \"./chunk-TGUBEWSX.mjs\";\nimport {\n  CurrentPreset,\n  HideBanner,\n  TailwindWrapper,\n  UrlInput,\n  togglePreset,\n  toggleUrl\n} from \"./chunk-V3EAFMCM.mjs\";\nimport \"./chunk-2ZZ6H7J7.mjs\";\nimport \"./chunk-4QCA3AWF.mjs\";\nimport {\n  ShaderGradientStatelessCanvas\n} from \"./chunk-EAFV6DTZ.mjs\";\nimport {\n  ShaderGradientStateless\n} from \"./chunk-YNCXEE5A.mjs\";\nimport \"./chunk-HLHO6DZG.mjs\";\nimport \"./chunk-3TVNMPH3.mjs\";\nimport \"./chunk-YDTEP3DZ.mjs\";\nimport \"./chunk-MKH7JDZ4.mjs\";\nimport {\n  useQueryState,\n  useURLQueryState\n} from \"./chunk-I5E26MJT.mjs\";\nimport {\n  updateGradientState\n} from \"./chunk-UIXDPZLL.mjs\";\nimport {\n  PRESETS\n} from \"./chunk-6T37OWYT.mjs\";\nimport {\n  useBillingInterval,\n  useBillingIntervalStore,\n  useFigma,\n  useFigmaPluginStore,\n  useFigmaStore,\n  useScrollStore,\n  useScrollableBoxStore,\n  useSupabaseStore,\n  useUIOverrideStore,\n  useUIStore\n} from \"./chunk-R6GBIJ5D.mjs\";\nimport \"./chunk-NP5XZW6Z.mjs\";\nimport \"./chunk-HXGKXP63.mjs\";\nexport {\n  AddToCanvas,\n  ArrowLeft,\n  ArrowRight,\n  Button,\n  CenterCrop1,\n  CenterCrop2,\n  ChangeButton3,\n  ChangeColorButton,\n  ColorInput,\n  ColorsTab,\n  ConnectFigmaMessage,\n  CopyBtn,\n  CurrentPreset,\n  CustomizeColorInput,\n  CustomizeNumberInput,\n  CustomizeRadio,\n  CustomizeRangeSlider,\n  CustomizeSlider,\n  DestinationControl,\n  DoubleNumberInput,\n  Duration,\n  EasyViewInfo,\n  Error,\n  EstimatedSize,\n  ExportLoadingOverlay,\n  FigmaUrlInput,\n  FormatControl,\n  Gap,\n  HideBanner,\n  HideGradientsOnMobile,\n  HighlightButton,\n  Icons,\n  InitCustomize,\n  InputTitle,\n  LoadViewAfterStyleSheet,\n  MainGradient,\n  MotionTab,\n  OpenGIFPage,\n  PRESETS,\n  PresetIndex,\n  PresetTitle,\n  Price,\n  PriceFigma,\n  PriceText,\n  RangeSlider,\n  ScrollableTextBox,\n  SectionObserver,\n  SectionText,\n  ShaderGradientStateless,\n  ShaderGradientStatelessCanvas,\n  ShapeTab,\n  ShowCopyContent,\n  SimpleSlider,\n  Slider,\n  StartTrial,\n  StatelessOverride,\n  SupabaseClient,\n  TabSwitcher,\n  TailwindWrapper,\n  TextAnimation,\n  TextHover,\n  Timeline,\n  TimelineWrapper,\n  TogglePrice,\n  TogglePriceFigma,\n  ToggleShare,\n  TriggerSection,\n  TripleNumberInput,\n  UndoButton,\n  UrlInput,\n  ViewTab,\n  WebEasyViewControl,\n  WebEasyViewInfo,\n  WebStatelessOverride,\n  WidthFillOnLoad,\n  WordGradient,\n  WordGradientText,\n  WordHighlight,\n  WordHighlight2,\n  createRectangle,\n  extractGIF,\n  fpsCount,\n  goBack,\n  insertCanvasAsImage,\n  isUpgraded,\n  memoryUsage,\n  randomBtn,\n  randomGradient,\n  randomText,\n  slider,\n  sliderSmartComp,\n  subscribeLink,\n  textClipper,\n  time,\n  togglePreset,\n  toggleSmartComp,\n  toggleUrl,\n  updateGradientState,\n  updateTheme,\n  upgradingText,\n  useBillingInterval,\n  useBillingIntervalStore,\n  useFigma,\n  useFigmaPluginStore,\n  useFigmaStore,\n  useQueryState,\n  useScrollStore,\n  useScrollableBoxStore,\n  useSupabaseStore,\n  useUIOverrideStore,\n  useUIStore,\n  useURLQueryState,\n  userEmail,\n  userInfo,\n  withClickOutsideClosed,\n  wordHighlightText\n};\n","import*as ui from\"https://ruucm.github.io/shadergradient/ui@0.1.68/index.mjs\";// import * as ui from \"https://esm.ngrok.dev/index.mjs\" // pnpm dev:ui\nexport{ui};\nexport const __FramerMetadata__ = {\"exports\":{\"ui\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ui.map","/*\n * ui\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/Gd2z19IMRFXGQYMhrnAK/Fqm5Jd60Yb0OfYRRpBdE/ui.js\"\n","// import * as ui from \"https://ruucm.github.io/shadergradient/ui@0.1.30/index.mjs\"\n// import * as ui from \"https://esm.ngrok.dev/index.mjs\" // pnpm dev:ui\nimport{ui}from\"https://framer.com/m/ui-gy7Z.js\";export{ui};\nexport const __FramerMetadata__ = {\"exports\":{\"ui\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ui.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nexport const containerStyles = {\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nconst nullIconStyle = {\n    minWidth: \"10px\",\n    minHeight: \"10px\",\n    maxWidth: \"20px\",\n    maxHeight: \"20px\",\n    width: \"60%\",\n    height: \"60%\"\n};\nconst emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(149, 149, 149, 0.1)\",\n    border: \"1px dashed rgba(149, 149, 149, 0.15)\",\n    color: \"#a5a5a5\",\n    flexDirection: \"column\"\n};\nexport const NullState = /*#__PURE__*/ React.forwardRef((_, ref)=>{\n    return(/*#__PURE__*/ _jsx(\"div\", {\n        style: emptyStateStyle,\n        ref: ref\n    }));\n}) /*\n\n<svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 30 30\"\n                style={nullIconStyle}\n            >\n                <path\n                    d=\"M 12.857 0 C 19.958 0 25.714 5.756 25.714 12.857 C 25.714 19.958 19.958 25.714 12.857 25.714 C 5.756 25.714 0 19.958 0 12.857 C 0 5.756 5.756 0 12.857 0 Z\"\n                    fill=\"#FFFFFF\"\n                ></path>\n                <path\n                    d=\"M 20.357 20.357 L 27.857 27.857\"\n                    fill=\"transparent\"\n                    strokeWidth=\"4.28\"\n                    stroke=\"#FFFFFF\"\n                    strokeLinecap=\"round\"\n                ></path>\n                <g transform=\"translate(9.643 6.429)\">\n                    <path\n                        d=\"M 3.214 12.857 L 3.214 12.857\"\n                        fill=\"transparent\"\n                        strokeWidth=\"3.75\"\n                        stroke=\"currentColor\"\n                        strokeLinecap=\"round\"\n                    ></path>\n                    <path\n                        d=\"M 0 3.214 C 0 1.004 1.843 0 3.214 0 C 4.586 0 6.429 0.603 6.429 3.214 C 6.429 5.826 3.214 5.913 3.214 7.232 C 3.214 8.552 3.214 8.571 3.214 8.571\"\n                        fill=\"transparent\"\n                        strokeWidth=\"3.22\"\n                        stroke=\"currentColor\"\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                    ></path>\n                </g>\n            </svg>\n            */ ;\n\nexport const __FramerMetadata__ = {\"exports\":{\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NullState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./nullstate.map","/*\n * nullstate (framer/icon-nullstate@0.7.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/DyldKav0OOAWR3bCAlhK/8c3l9FzyOlGpbPncYhfc/nullstate.js\"\n","let Component;\nlet IconInner;\nvar Icon = (React) => {\n  if (!Component) {\n    Component = /* @__PURE__ */ new Map([\n      [\n        \"bold\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M222.14,105.85l-80-80a20,20,0,0,0-28.28,0l-80,80A19.86,19.86,0,0,0,28,120v96a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V164h24v52a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V120A19.86,19.86,0,0,0,222.14,105.85ZM204,204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52V121.65l76-76,76,76Z\" }))\n      ],\n      [\n        \"duotone\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n          \"path\",\n          {\n            d: \"M216,120v96H152V152H104v64H40V120a8,8,0,0,1,2.34-5.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,216,120Z\",\n            opacity: \"0.2\"\n          }\n        ), /* @__PURE__ */ React.createElement(\"path\", { d: \"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z\" }))\n      ],\n      [\n        \"fill\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z\" }))\n      ],\n      [\n        \"light\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M217.9,110.1l-80-80a14,14,0,0,0-19.8,0l-80,80A13.92,13.92,0,0,0,34,120v96a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V158h36v58a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V120A13.92,13.92,0,0,0,217.9,110.1ZM210,210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46V120a2,2,0,0,1,.58-1.42l80-80a2,2,0,0,1,2.84,0l80,80A2,2,0,0,1,210,120Z\" }))\n      ],\n      [\n        \"regular\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z\" }))\n      ],\n      [\n        \"thin\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M216.49,111.51l-80-80a12,12,0,0,0-17,0l-80,80A12,12,0,0,0,36,120v96a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V156h40v60a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V120A12,12,0,0,0,216.49,111.51ZM212,212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44V120a4,4,0,0,1,1.17-2.83l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,212,120Z\" }))\n      ]\n    ]);\n    IconInner = React.forwardRef((props, ref) => /* @__PURE__ */ React.createElement(\"g\", { ref, ...props }, Component.get(props.weight)));\n  }\n  return IconInner;\n};\nconst __FramerMetadata__ = {\n  exports: {\n    default: {\n      type: \"reactComponent\",\n      slots: [],\n      annotations: { framerContractVersion: \"1\" }\n    },\n    __FramerMetadata__: { type: \"variable\" }\n  }\n};\nvar House_default = Icon;\nexport {\n  __FramerMetadata__,\n  House_default as default\n};\n","/*\n * House (phosphor-icons/House@0.0.57)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/Qc8yuHkQmGO0kFiSWbkX/rVmMAFttOHuuiwSg6KjZ/House.js\"\nexport { default } from \"https://framerusercontent.com/modules/Qc8yuHkQmGO0kFiSWbkX/rVmMAFttOHuuiwSg6KjZ/House.js\"\n","import{useMemo}from\"react\";import{ControlType}from\"framer\";/*\n ** ICON UTILS\n ** Pull as much re-usable logic into here as possible\n ** This will make it easier to replace in all icon components\n */ export const containerStyles={width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\"};export const defaultEvents={onClick:{type:ControlType.EventHandler},onMouseDown:{type:ControlType.EventHandler},onMouseUp:{type:ControlType.EventHandler},onMouseEnter:{type:ControlType.EventHandler},onMouseLeave:{type:ControlType.EventHandler}};const findByArray=(arr,search)=>arr.find(a=>a.toLowerCase().includes(search));export function getIconSelection(iconKeys,selectByList,iconSearch=\"\",iconSelection,lowercaseIconKeyPairs){// gotta get the exact match first THEN find\n// have a set and try to access ?\nif(selectByList)return iconSelection;if(iconSearch==null||(iconSearch===null||iconSearch===void 0?void 0:iconSearch.length)===0)return null;const iconSearchTerm=iconSearch.toLowerCase().replace(/-|\\s/g,\"\");var _iconSearchTerm;// check for exact match, otherwise use .find\nconst searchResult=(_iconSearchTerm=lowercaseIconKeyPairs[iconSearchTerm])!==null&&_iconSearchTerm!==void 0?_iconSearchTerm:findByArray(iconKeys,iconSearchTerm);return searchResult;}export function useIconSelection(iconKeys,selectByList,iconSearch=\"\",iconSelection,lowercaseIconKeyPairs){// Clean search term\nconst iconSearchResult=useMemo(()=>{if(iconSearch==null||(iconSearch===null||iconSearch===void 0?void 0:iconSearch.length)===0)return null;const iconSearchTerm=iconSearch.toLowerCase().replace(/-|\\s/g,\"\");var _iconSearchTerm;// check for exact match, otherwise use .find\nconst searchResult=(_iconSearchTerm=lowercaseIconKeyPairs[iconSearchTerm])!==null&&_iconSearchTerm!==void 0?_iconSearchTerm:findByArray(iconKeys,iconSearchTerm);return searchResult;},[iconSelection,iconSearch]);const name=selectByList?iconSelection:iconSearchResult;return name;}\nexport const __FramerMetadata__ = {\"exports\":{\"getIconSelection\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIconSelection\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./utils.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion}from\"framer-motion\";import{NullState}from\"https://framer.com/m/framer/icon-nullstate.js@0.7.0\";import HouseFactory from\"https://framer.com/m/phosphor-icons/House.js@0.0.57\";import{defaultEvents,useIconSelection}from\"https://framerusercontent.com/modules/Ma20hU0GGRxLxZphbywl/OSpwWF91FHPVFyQJjMHt/utils.js\";const iconKeys=[\"Acorn\",\"AddressBook\",\"AddressBookTabs\",\"AirTrafficControl\",\"Airplane\",\"AirplaneInFlight\",\"AirplaneLanding\",\"AirplaneTakeoff\",\"AirplaneTaxiing\",\"AirplaneTilt\",\"Airplay\",\"Alarm\",\"Alien\",\"AlignBottom\",\"AlignBottomSimple\",\"AlignCenterVertical\",\"AlignLeft\",\"AlignLeftSimple\",\"AlignRight\",\"AlignRightSimple\",\"AlignTop\",\"AlignTopSimple\",\"AmazonLogo\",\"Ambulance\",\"Anchor\",\"AnchorSimple\",\"AndroidLogo\",\"Angle\",\"AngularLogo\",\"Aperture\",\"AppStoreLogo\",\"AppWindow\",\"AppleLogo\",\"ApplePodcastsLogo\",\"ApproximateEquals\",\"Archive\",\"ArchiveBox\",\"ArchiveTray\",\"Armchair\",\"ArrowArcLeft\",\"ArrowArcRight\",\"ArrowBendDownLeft\",\"ArrowBendDownRight\",\"ArrowBendLeftDown\",\"ArrowBendLeftUp\",\"ArrowBendRightDown\",\"ArrowBendRightUp\",\"ArrowBendUpLeft\",\"ArrowBendUpRight\",\"ArrowCircleDown\",\"ArrowCircleDownLeft\",\"ArrowCircleDownRight\",\"ArrowCircleLeft\",\"ArrowCircleRight\",\"ArrowCircleUp\",\"ArrowCircleUpLeft\",\"ArrowCircleUpRight\",\"ArrowClockwise\",\"ArrowDown\",\"ArrowDownLeft\",\"ArrowDownRight\",\"ArrowElbowDownLeft\",\"ArrowElbowDownRight\",\"ArrowElbowLeft\",\"ArrowElbowLeftDown\",\"ArrowElbowLeftUp\",\"ArrowElbowRight\",\"ArrowElbowRightDown\",\"ArrowElbowRightUp\",\"ArrowElbowUpLeft\",\"ArrowElbowUpRight\",\"ArrowFatDown\",\"ArrowFatLeft\",\"ArrowFatLineDown\",\"ArrowFatLineLeft\",\"ArrowFatLineRight\",\"ArrowFatLineUp\",\"ArrowFatLinesDown\",\"ArrowFatLinesLeft\",\"ArrowFatLinesRight\",\"ArrowFatLinesUp\",\"ArrowFatRight\",\"ArrowFatUp\",\"ArrowLeft\",\"ArrowLineDown\",\"ArrowLineDownLeft\",\"ArrowLineDownRight\",\"ArrowLineLeft\",\"ArrowLineRight\",\"ArrowLineUp\",\"ArrowLineUpLeft\",\"ArrowLineUpRight\",\"ArrowRight\",\"ArrowSquareDown\",\"ArrowSquareDownLeft\",\"ArrowSquareDownRight\",\"ArrowSquareIn\",\"ArrowSquareLeft\",\"ArrowSquareOut\",\"ArrowSquareRight\",\"ArrowSquareUp\",\"ArrowSquareUpLeft\",\"ArrowSquareUpRight\",\"ArrowUDownLeft\",\"ArrowUDownRight\",\"ArrowULeftDown\",\"ArrowULeftUp\",\"ArrowURightDown\",\"ArrowURightUp\",\"ArrowUUpLeft\",\"ArrowUUpRight\",\"ArrowUp\",\"ArrowUpLeft\",\"ArrowUpRight\",\"ArrowsClockwise\",\"ArrowsDownUp\",\"ArrowsHorizontal\",\"ArrowsIn\",\"ArrowsInCardinal\",\"ArrowsInLineVertical\",\"ArrowsInSimple\",\"ArrowsLeftRight\",\"ArrowsMerge\",\"ArrowsOut\",\"ArrowsOutCardinal\",\"ArrowsOutSimple\",\"ArrowsSplit\",\"ArrowsVertical\",\"Article\",\"ArticleMedium\",\"ArticleNyTimes\",\"Asclepius\",\"Asterisk\",\"AsteriskSimple\",\"At\",\"Atom\",\"Avocado\",\"Axe\",\"Baby\",\"BabyCarriage\",\"Backpack\",\"Backspace\",\"Bag\",\"BagSimple\",\"Balloon\",\"Bandaids\",\"Bank\",\"Barbell\",\"Barcode\",\"Barn\",\"Barricade\",\"Baseball\",\"BaseballCap\",\"BaseballHelmet\",\"Basket\",\"Basketball\",\"Bathtub\",\"BatteryCharging\",\"BatteryEmpty\",\"BatteryFull\",\"BatteryHigh\",\"BatteryLow\",\"BatteryMedium\",\"BatteryPlus\",\"BatteryPlusVertical\",\"BatteryVerticalEmpty\",\"BatteryVerticalFull\",\"BatteryVerticalHigh\",\"BatteryVerticalLow\",\"BatteryWarning\",\"BeachBall\",\"Beanie\",\"Bed\",\"BeerBottle\",\"BeerStein\",\"BehanceLogo\",\"Bell\",\"BellRinging\",\"BellSimple\",\"BellSimpleRinging\",\"BellSimpleSlash\",\"BellSimpleZ\",\"BellSlash\",\"BellZ\",\"Belt\",\"BezierCurve\",\"Bicycle\",\"Binary\",\"Binoculars\",\"Biohazard\",\"Bird\",\"Blueprint\",\"Bluetooth\",\"BluetoothConnected\",\"BluetoothSlash\",\"BluetoothX\",\"Boat\",\"Bomb\",\"Bone\",\"Book\",\"BookBookmark\",\"BookOpen\",\"BookOpenText\",\"BookOpenUser\",\"BookUser\",\"Bookmark\",\"BookmarkSimple\",\"Bookmarks\",\"BookmarksSimple\",\"Books\",\"Boot\",\"Boules\",\"BoundingBox\",\"BowlFood\",\"BowlSteam\",\"BowlingBall\",\"BoxArrowDown\",\"BoxArrowUp\",\"BoxingGlove\",\"BracketsAngle\",\"BracketsCurly\",\"BracketsRound\",\"BracketsSquare\",\"Brain\",\"Brandy\",\"Bread\",\"Bridge\",\"Briefcase\",\"BriefcaseMetal\",\"Broadcast\",\"Broom\",\"Browser\",\"Browsers\",\"Bug\",\"BugBeetle\",\"BugDroid\",\"Building\",\"BuildingApartment\",\"BuildingOffice\",\"Buildings\",\"Bulldozer\",\"Bus\",\"Butterfly\",\"CableCar\",\"Cactus\",\"Cake\",\"Calculator\",\"Calendar\",\"CalendarBlank\",\"CalendarCheck\",\"CalendarDot\",\"CalendarDots\",\"CalendarHeart\",\"CalendarMinus\",\"CalendarPlus\",\"CalendarSlash\",\"CalendarStar\",\"CalendarX\",\"CallBell\",\"Camera\",\"CameraPlus\",\"CameraRotate\",\"CameraSlash\",\"Campfire\",\"Car\",\"CarBattery\",\"CarProfile\",\"CarSimple\",\"Cardholder\",\"Cards\",\"CardsThree\",\"CaretCircleDoubleUp\",\"CaretCircleDown\",\"CaretCircleLeft\",\"CaretCircleRight\",\"CaretCircleUp\",\"CaretCircleUpDown\",\"CaretDoubleDown\",\"CaretDoubleLeft\",\"CaretDoubleRight\",\"CaretDoubleUp\",\"CaretDown\",\"CaretLeft\",\"CaretLineDown\",\"CaretLineLeft\",\"CaretLineRight\",\"CaretLineUp\",\"CaretRight\",\"CaretUp\",\"CaretUpDown\",\"Carrot\",\"CashRegister\",\"CassetteTape\",\"CastleTurret\",\"Cat\",\"CellSignalFull\",\"CellSignalHigh\",\"CellSignalLow\",\"CellSignalMedium\",\"CellSignalNone\",\"CellSignalSlash\",\"CellSignalX\",\"CellTower\",\"Certificate\",\"Chair\",\"Chalkboard\",\"ChalkboardSimple\",\"ChalkboardTeacher\",\"Champagne\",\"ChargingStation\",\"ChartBar\",\"ChartBarHorizontal\",\"ChartDonut\",\"ChartLine\",\"ChartLineDown\",\"ChartLineUp\",\"ChartPie\",\"ChartPieSlice\",\"ChartPolar\",\"ChartScatter\",\"Chat\",\"ChatCentered\",\"ChatCenteredDots\",\"ChatCenteredSlash\",\"ChatCenteredText\",\"ChatCircle\",\"ChatCircleDots\",\"ChatCircleSlash\",\"ChatCircleText\",\"ChatDots\",\"ChatSlash\",\"ChatTeardrop\",\"ChatTeardropDots\",\"ChatTeardropSlash\",\"ChatTeardropText\",\"ChatText\",\"Chats\",\"ChatsCircle\",\"ChatsTeardrop\",\"Check\",\"CheckCircle\",\"CheckFat\",\"CheckSquare\",\"CheckSquareOffset\",\"Checkerboard\",\"Checks\",\"Cheers\",\"Cheese\",\"ChefHat\",\"Cherries\",\"Church\",\"Cigarette\",\"CigaretteSlash\",\"Circle\",\"CircleDashed\",\"CircleHalf\",\"CircleHalfTilt\",\"CircleNotch\",\"CirclesFour\",\"CirclesThree\",\"CirclesThreePlus\",\"Circuitry\",\"City\",\"Clipboard\",\"ClipboardText\",\"Clock\",\"ClockAfternoon\",\"ClockClockwise\",\"ClockCountdown\",\"ClockUser\",\"ClosedCaptioning\",\"Cloud\",\"CloudArrowDown\",\"CloudArrowUp\",\"CloudCheck\",\"CloudFog\",\"CloudLightning\",\"CloudMoon\",\"CloudRain\",\"CloudSlash\",\"CloudSnow\",\"CloudSun\",\"CloudWarning\",\"CloudX\",\"Clover\",\"Club\",\"CoatHanger\",\"CodaLogo\",\"Code\",\"CodeBlock\",\"CodeSimple\",\"CodepenLogo\",\"CodesandboxLogo\",\"Coffee\",\"CoffeeBean\",\"Coin\",\"CoinVertical\",\"Coins\",\"Columns\",\"ColumnsPlusLeft\",\"ColumnsPlusRight\",\"Command\",\"Compass\",\"CompassRose\",\"CompassTool\",\"ComputerTower\",\"Confetti\",\"ContactlessPayment\",\"Control\",\"Cookie\",\"CookingPot\",\"Copy\",\"CopySimple\",\"Copyleft\",\"Copyright\",\"CornersIn\",\"CornersOut\",\"Couch\",\"CourtBasketball\",\"Cow\",\"CowboyHat\",\"Cpu\",\"Crane\",\"CraneTower\",\"CreditCard\",\"Cricket\",\"Crop\",\"Cross\",\"Crosshair\",\"CrosshairSimple\",\"Crown\",\"CrownCross\",\"CrownSimple\",\"Cube\",\"CubeFocus\",\"CubeTransparent\",\"CurrencyBtc\",\"CurrencyCircleDollar\",\"CurrencyCny\",\"CurrencyDollar\",\"CurrencyDollarSimple\",\"CurrencyEth\",\"CurrencyEur\",\"CurrencyGbp\",\"CurrencyInr\",\"CurrencyJpy\",\"CurrencyKrw\",\"CurrencyKzt\",\"CurrencyNgn\",\"CurrencyRub\",\"Cursor\",\"CursorClick\",\"CursorText\",\"Cylinder\",\"Database\",\"Desk\",\"Desktop\",\"DesktopTower\",\"Detective\",\"DevToLogo\",\"DeviceMobile\",\"DeviceMobileCamera\",\"DeviceMobileSlash\",\"DeviceMobileSpeaker\",\"DeviceRotate\",\"DeviceTablet\",\"DeviceTabletCamera\",\"DeviceTabletSpeaker\",\"Devices\",\"Diamond\",\"DiamondsFour\",\"DiceFive\",\"DiceFour\",\"DiceOne\",\"DiceSix\",\"DiceThree\",\"DiceTwo\",\"Disc\",\"DiscoBall\",\"DiscordLogo\",\"Divide\",\"Dna\",\"Dog\",\"Door\",\"DoorOpen\",\"Dot\",\"DotOutline\",\"DotsNine\",\"DotsSix\",\"DotsSixVertical\",\"DotsThree\",\"DotsThreeCircle\",\"DotsThreeOutline\",\"DotsThreeVertical\",\"Download\",\"DownloadSimple\",\"Dress\",\"Dresser\",\"DribbbleLogo\",\"Drone\",\"Drop\",\"DropHalf\",\"DropHalfBottom\",\"DropSimple\",\"DropSlash\",\"DropboxLogo\",\"Ear\",\"EarSlash\",\"Egg\",\"EggCrack\",\"Eject\",\"EjectSimple\",\"Elevator\",\"Empty\",\"Engine\",\"Envelope\",\"EnvelopeOpen\",\"EnvelopeSimple\",\"EnvelopeSimpleOpen\",\"Equalizer\",\"Equals\",\"Eraser\",\"EscalatorDown\",\"EscalatorUp\",\"Exam\",\"ExclamationMark\",\"Exclude\",\"ExcludeSquare\",\"Export\",\"Eye\",\"EyeClosed\",\"EyeSlash\",\"Eyedropper\",\"EyedropperSample\",\"Eyeglasses\",\"Eyes\",\"FaceMask\",\"FacebookLogo\",\"Factory\",\"Faders\",\"FadersHorizontal\",\"FalloutShelter\",\"Fan\",\"Farm\",\"FastForward\",\"FastForwardCircle\",\"Feather\",\"FediverseLogo\",\"FigmaLogo\",\"File\",\"FileArchive\",\"FileArrowDown\",\"FileArrowUp\",\"FileAudio\",\"FileC\",\"FileCloud\",\"FileCode\",\"FileCpp\",\"FileCss\",\"FileCsv\",\"FileDashed\",\"FileDoc\",\"FileHtml\",\"FileImage\",\"FileIni\",\"FileJpg\",\"FileJs\",\"FileJsx\",\"FileLock\",\"FileMagnifyingGlass\",\"FileMd\",\"FileMinus\",\"FilePdf\",\"FilePlus\",\"FilePng\",\"FilePpt\",\"FilePy\",\"FileRs\",\"FileSql\",\"FileSvg\",\"FileText\",\"FileTs\",\"FileTsx\",\"FileTxt\",\"FileVideo\",\"FileVue\",\"FileX\",\"FileXls\",\"FileZip\",\"Files\",\"FilmReel\",\"FilmScript\",\"FilmSlate\",\"FilmStrip\",\"Fingerprint\",\"FingerprintSimple\",\"FinnTheHuman\",\"Fire\",\"FireExtinguisher\",\"FireSimple\",\"FireTruck\",\"FirstAid\",\"FirstAidKit\",\"Fish\",\"FishSimple\",\"Flag\",\"FlagBanner\",\"FlagBannerFold\",\"FlagCheckered\",\"FlagPennant\",\"Flame\",\"Flashlight\",\"Flask\",\"FlipHorizontal\",\"FlipVertical\",\"FloppyDisk\",\"FloppyDiskBack\",\"FlowArrow\",\"Flower\",\"FlowerLotus\",\"FlowerTulip\",\"FlyingSaucer\",\"Folder\",\"FolderDashed\",\"FolderLock\",\"FolderMinus\",\"FolderNotch\",\"FolderNotchMinus\",\"FolderNotchOpen\",\"FolderNotchPlus\",\"FolderOpen\",\"FolderPlus\",\"FolderSimple\",\"FolderSimpleDashed\",\"FolderSimpleLock\",\"FolderSimpleMinus\",\"FolderSimplePlus\",\"FolderSimpleStar\",\"FolderSimpleUser\",\"FolderStar\",\"FolderUser\",\"Folders\",\"Football\",\"FootballHelmet\",\"Footprints\",\"ForkKnife\",\"FourK\",\"FrameCorners\",\"FramerLogo\",\"Function\",\"Funnel\",\"FunnelSimple\",\"FunnelSimpleX\",\"FunnelX\",\"GameController\",\"Garage\",\"GasCan\",\"GasPump\",\"Gauge\",\"Gavel\",\"Gear\",\"GearFine\",\"GearSix\",\"GenderFemale\",\"GenderIntersex\",\"GenderMale\",\"GenderNeuter\",\"GenderNonbinary\",\"GenderTransgender\",\"Ghost\",\"Gif\",\"Gift\",\"GitBranch\",\"GitCommit\",\"GitDiff\",\"GitFork\",\"GitMerge\",\"GitPullRequest\",\"GithubLogo\",\"GitlabLogo\",\"GitlabLogoSimple\",\"Globe\",\"GlobeHemisphereEast\",\"GlobeHemisphereWest\",\"GlobeSimple\",\"GlobeSimpleX\",\"GlobeStand\",\"GlobeX\",\"Goggles\",\"Golf\",\"GoodreadsLogo\",\"GoogleCardboardLogo\",\"GoogleChromeLogo\",\"GoogleDriveLogo\",\"GoogleLogo\",\"GooglePhotosLogo\",\"GooglePlayLogo\",\"GooglePodcastsLogo\",\"Gps\",\"GpsFix\",\"GpsSlash\",\"Gradient\",\"GraduationCap\",\"Grains\",\"GrainsSlash\",\"Graph\",\"GraphicsCard\",\"GreaterThan\",\"GreaterThanOrEqual\",\"GridFour\",\"GridNine\",\"Guitar\",\"HairDryer\",\"Hamburger\",\"Hammer\",\"Hand\",\"HandArrowDown\",\"HandArrowUp\",\"HandCoins\",\"HandDeposit\",\"HandEye\",\"HandFist\",\"HandGrabbing\",\"HandHeart\",\"HandPalm\",\"HandPeace\",\"HandPointing\",\"HandSoap\",\"HandSwipeLeft\",\"HandSwipeRight\",\"HandTap\",\"HandWaving\",\"HandWithdraw\",\"Handbag\",\"HandbagSimple\",\"HandsClapping\",\"HandsPraying\",\"Handshake\",\"HardDrive\",\"HardDrives\",\"HardHat\",\"Hash\",\"HashStraight\",\"HeadCircuit\",\"Headlights\",\"Headphones\",\"Headset\",\"Heart\",\"HeartBreak\",\"HeartHalf\",\"HeartStraight\",\"HeartStraightBreak\",\"Heartbeat\",\"Hexagon\",\"HighDefinition\",\"HighHeel\",\"Highlighter\",\"HighlighterCircle\",\"Hockey\",\"Hoodie\",\"Horse\",\"Hospital\",\"Hourglass\",\"HourglassHigh\",\"HourglassLow\",\"HourglassMedium\",\"HourglassSimple\",\"HourglassSimpleHigh\",\"HourglassSimpleLow\",\"House\",\"HouseLine\",\"HouseSimple\",\"Hurricane\",\"IceCream\",\"IdentificationBadge\",\"IdentificationCard\",\"Image\",\"ImageBroken\",\"ImageSquare\",\"Images\",\"ImagesSquare\",\"Infinity\",\"Info\",\"InstagramLogo\",\"Intersect\",\"IntersectSquare\",\"IntersectThree\",\"Intersection\",\"Invoice\",\"Island\",\"Jar\",\"JarLabel\",\"Jeep\",\"Joystick\",\"Kanban\",\"Key\",\"KeyReturn\",\"Keyboard\",\"Keyhole\",\"Knife\",\"Ladder\",\"LadderSimple\",\"Lamp\",\"LampPendant\",\"Laptop\",\"Lasso\",\"LastfmLogo\",\"Layout\",\"Leaf\",\"Lectern\",\"Lego\",\"LegoSmiley\",\"LessThan\",\"LessThanOrEqual\",\"LetterCircleH\",\"LetterCircleP\",\"LetterCircleV\",\"Lifebuoy\",\"Lightbulb\",\"LightbulbFilament\",\"Lighthouse\",\"Lightning\",\"LightningA\",\"LightningSlash\",\"LineSegment\",\"LineSegments\",\"LineVertical\",\"Link\",\"LinkBreak\",\"LinkSimple\",\"LinkSimpleBreak\",\"LinkSimpleHorizontal\",\"LinkedinLogo\",\"LinktreeLogo\",\"LinuxLogo\",\"List\",\"ListBullets\",\"ListChecks\",\"ListDashes\",\"ListHeart\",\"ListMagnifyingGlass\",\"ListNumbers\",\"ListPlus\",\"ListStar\",\"Lock\",\"LockKey\",\"LockKeyOpen\",\"LockLaminated\",\"LockLaminatedOpen\",\"LockOpen\",\"LockSimple\",\"LockSimpleOpen\",\"Lockers\",\"Log\",\"MagicWand\",\"Magnet\",\"MagnetStraight\",\"MagnifyingGlass\",\"MagnifyingGlassMinus\",\"MagnifyingGlassPlus\",\"Mailbox\",\"MapPin\",\"MapPinArea\",\"MapPinLine\",\"MapPinPlus\",\"MapPinSimple\",\"MapPinSimpleArea\",\"MapPinSimpleLine\",\"MapTrifold\",\"MarkdownLogo\",\"MarkerCircle\",\"Martini\",\"MaskHappy\",\"MaskSad\",\"MastodonLogo\",\"MathOperations\",\"MatrixLogo\",\"Medal\",\"MedalMilitary\",\"MediumLogo\",\"Megaphone\",\"MegaphoneSimple\",\"MemberOf\",\"Memory\",\"MessengerLogo\",\"MetaLogo\",\"Meteor\",\"Metronome\",\"Microphone\",\"MicrophoneSlash\",\"MicrophoneStage\",\"Microscope\",\"MicrosoftExcelLogo\",\"MicrosoftOutlookLogo\",\"MicrosoftTeamsLogo\",\"MicrosoftWordLogo\",\"Minus\",\"MinusCircle\",\"MinusSquare\",\"Money\",\"MoneyWavy\",\"Monitor\",\"MonitorArrowUp\",\"MonitorPlay\",\"Moon\",\"MoonStars\",\"Moped\",\"MopedFront\",\"Mosque\",\"Motorcycle\",\"Mountains\",\"Mouse\",\"MouseLeftClick\",\"MouseMiddleClick\",\"MouseRightClick\",\"MouseScroll\",\"MouseSimple\",\"MusicNote\",\"MusicNoteSimple\",\"MusicNotes\",\"MusicNotesMinus\",\"MusicNotesPlus\",\"MusicNotesSimple\",\"NavigationArrow\",\"Needle\",\"Network\",\"NetworkSlash\",\"NetworkX\",\"Newspaper\",\"NewspaperClipping\",\"NotEquals\",\"NotMemberOf\",\"NotSubsetOf\",\"NotSupersetOf\",\"Notches\",\"Note\",\"NoteBlank\",\"NotePencil\",\"Notebook\",\"Notepad\",\"Notification\",\"NotionLogo\",\"NuclearPlant\",\"NumberCircleEight\",\"NumberCircleFive\",\"NumberCircleFour\",\"NumberCircleNine\",\"NumberCircleOne\",\"NumberCircleSeven\",\"NumberCircleSix\",\"NumberCircleThree\",\"NumberCircleTwo\",\"NumberCircleZero\",\"NumberEight\",\"NumberFive\",\"NumberFour\",\"NumberNine\",\"NumberOne\",\"NumberSeven\",\"NumberSix\",\"NumberSquareEight\",\"NumberSquareFive\",\"NumberSquareFour\",\"NumberSquareNine\",\"NumberSquareOne\",\"NumberSquareSeven\",\"NumberSquareSix\",\"NumberSquareThree\",\"NumberSquareTwo\",\"NumberSquareZero\",\"NumberThree\",\"NumberTwo\",\"NumberZero\",\"Numpad\",\"Nut\",\"NyTimesLogo\",\"Octagon\",\"OfficeChair\",\"Onigiri\",\"OpenAiLogo\",\"Option\",\"Orange\",\"OrangeSlice\",\"Oven\",\"Package\",\"PaintBrush\",\"PaintBrushBroad\",\"PaintBrushHousehold\",\"PaintBucket\",\"PaintRoller\",\"Palette\",\"Panorama\",\"Pants\",\"PaperPlane\",\"PaperPlaneRight\",\"PaperPlaneTilt\",\"Paperclip\",\"PaperclipHorizontal\",\"Parachute\",\"Paragraph\",\"Parallelogram\",\"Park\",\"Password\",\"Path\",\"PatreonLogo\",\"Pause\",\"PauseCircle\",\"PawPrint\",\"PaypalLogo\",\"Peace\",\"Pen\",\"PenNib\",\"PenNibStraight\",\"Pencil\",\"PencilCircle\",\"PencilLine\",\"PencilRuler\",\"PencilSimple\",\"PencilSimpleLine\",\"PencilSimpleSlash\",\"PencilSlash\",\"Pentagon\",\"Pentagram\",\"Pepper\",\"Percent\",\"Person\",\"PersonArmsSpread\",\"PersonSimple\",\"PersonSimpleBike\",\"PersonSimpleCircle\",\"PersonSimpleHike\",\"PersonSimpleRun\",\"PersonSimpleSki\",\"PersonSimpleSwim\",\"PersonSimpleTaiChi\",\"PersonSimpleThrow\",\"PersonSimpleWalk\",\"Perspective\",\"Phone\",\"PhoneCall\",\"PhoneDisconnect\",\"PhoneIncoming\",\"PhoneList\",\"PhoneOutgoing\",\"PhonePause\",\"PhonePlus\",\"PhoneSlash\",\"PhoneTransfer\",\"PhoneX\",\"PhosphorLogo\",\"Pi\",\"PianoKeys\",\"PicnicTable\",\"PictureInPicture\",\"PiggyBank\",\"Pill\",\"PingPong\",\"PintGlass\",\"PinterestLogo\",\"Pinwheel\",\"Pipe\",\"PipeWrench\",\"PixLogo\",\"Pizza\",\"Placeholder\",\"Planet\",\"Plant\",\"Play\",\"PlayCircle\",\"PlayPause\",\"Playlist\",\"Plug\",\"PlugCharging\",\"Plugs\",\"PlugsConnected\",\"Plus\",\"PlusCircle\",\"PlusMinus\",\"PlusSquare\",\"PokerChip\",\"PoliceCar\",\"Polygon\",\"Popcorn\",\"Popsicle\",\"PottedPlant\",\"Power\",\"Prescription\",\"Presentation\",\"PresentationChart\",\"Printer\",\"Prohibit\",\"ProhibitInset\",\"ProjectorScreen\",\"ProjectorScreenChart\",\"Pulse\",\"PushPin\",\"PushPinSimple\",\"PushPinSimpleSlash\",\"PushPinSlash\",\"PuzzlePiece\",\"QrCode\",\"Question\",\"QuestionMark\",\"Queue\",\"Quotes\",\"Rabbit\",\"Racquet\",\"Radical\",\"Radio\",\"RadioButton\",\"Radioactive\",\"Rainbow\",\"RainbowCloud\",\"Ranking\",\"ReadCvLogo\",\"Receipt\",\"ReceiptX\",\"Record\",\"Rectangle\",\"RectangleDashed\",\"Recycle\",\"RedditLogo\",\"Repeat\",\"RepeatOnce\",\"ReplitLogo\",\"Resize\",\"Rewind\",\"RewindCircle\",\"RoadHorizon\",\"Robot\",\"Rocket\",\"RocketLaunch\",\"Rows\",\"RowsPlusBottom\",\"RowsPlusTop\",\"Rss\",\"RssSimple\",\"Rug\",\"Ruler\",\"Sailboat\",\"Scales\",\"Scan\",\"ScanSmiley\",\"Scissors\",\"Scooter\",\"Screencast\",\"Screwdriver\",\"Scribble\",\"ScribbleLoop\",\"Scroll\",\"Seal\",\"SealCheck\",\"SealPercent\",\"SealQuestion\",\"SealWarning\",\"Seat\",\"Seatbelt\",\"SecurityCamera\",\"Selection\",\"SelectionAll\",\"SelectionBackground\",\"SelectionForeground\",\"SelectionInverse\",\"SelectionPlus\",\"SelectionSlash\",\"Shapes\",\"Share\",\"ShareFat\",\"ShareNetwork\",\"Shield\",\"ShieldCheck\",\"ShieldCheckered\",\"ShieldChevron\",\"ShieldPlus\",\"ShieldSlash\",\"ShieldStar\",\"ShieldWarning\",\"ShippingContainer\",\"ShirtFolded\",\"ShootingStar\",\"ShoppingBag\",\"ShoppingBagOpen\",\"ShoppingCart\",\"ShoppingCartSimple\",\"Shovel\",\"Shower\",\"Shrimp\",\"Shuffle\",\"ShuffleAngular\",\"ShuffleSimple\",\"Sidebar\",\"SidebarSimple\",\"Sigma\",\"SignIn\",\"SignOut\",\"Signature\",\"Signpost\",\"SimCard\",\"Siren\",\"SketchLogo\",\"SkipBack\",\"SkipBackCircle\",\"SkipForward\",\"SkipForwardCircle\",\"Skull\",\"SkypeLogo\",\"SlackLogo\",\"Sliders\",\"SlidersHorizontal\",\"Slideshow\",\"Smiley\",\"SmileyAngry\",\"SmileyBlank\",\"SmileyMeh\",\"SmileyMelting\",\"SmileyNervous\",\"SmileySad\",\"SmileySticker\",\"SmileyWink\",\"SmileyXEyes\",\"SnapchatLogo\",\"Sneaker\",\"SneakerMove\",\"Snowflake\",\"SoccerBall\",\"Sock\",\"SolarPanel\",\"SolarRoof\",\"SortAscending\",\"SortDescending\",\"SoundcloudLogo\",\"Spade\",\"Sparkle\",\"SpeakerHifi\",\"SpeakerHigh\",\"SpeakerLow\",\"SpeakerNone\",\"SpeakerSimpleHigh\",\"SpeakerSimpleLow\",\"SpeakerSimpleNone\",\"SpeakerSimpleSlash\",\"SpeakerSimpleX\",\"SpeakerSlash\",\"SpeakerX\",\"Speedometer\",\"Sphere\",\"Spinner\",\"SpinnerBall\",\"SpinnerGap\",\"Spiral\",\"SplitHorizontal\",\"SplitVertical\",\"SpotifyLogo\",\"SprayBottle\",\"Square\",\"SquareHalf\",\"SquareHalfBottom\",\"SquareLogo\",\"SquareSplitVertical\",\"SquaresFour\",\"Stack\",\"StackMinus\",\"StackOverflowLogo\",\"StackPlus\",\"StackSimple\",\"Stairs\",\"Stamp\",\"StandardDefinition\",\"Star\",\"StarAndCrescent\",\"StarFour\",\"StarHalf\",\"StarOfDavid\",\"SteamLogo\",\"SteeringWheel\",\"Steps\",\"Stethoscope\",\"Sticker\",\"Stool\",\"Stop\",\"StopCircle\",\"Storefront\",\"Strategy\",\"StripeLogo\",\"Student\",\"SubsetOf\",\"SubsetProperOf\",\"Subtitles\",\"SubtitlesSlash\",\"Subtract\",\"SubtractSquare\",\"Subway\",\"Suitcase\",\"SuitcaseRolling\",\"SuitcaseSimple\",\"Sun\",\"SunDim\",\"SunHorizon\",\"Sunglasses\",\"SupersetOf\",\"SupersetProperOf\",\"Swap\",\"Swatches\",\"SwimmingPool\",\"Sword\",\"Synagogue\",\"Syringe\",\"TShirt\",\"Table\",\"Tabs\",\"Tag\",\"TagChevron\",\"TagSimple\",\"Target\",\"Taxi\",\"TeaBag\",\"TelegramLogo\",\"Television\",\"TelevisionSimple\",\"TennisBall\",\"Tent\",\"Terminal\",\"TerminalWindow\",\"TestTube\",\"TextAUnderline\",\"TextAa\",\"TextAlignCenter\",\"TextAlignJustify\",\"TextAlignLeft\",\"TextAlignRight\",\"TextB\",\"TextColumns\",\"TextH\",\"TextHFive\",\"TextHFour\",\"TextHOne\",\"TextHSix\",\"TextHThree\",\"TextHTwo\",\"TextIndent\",\"TextItalic\",\"TextOutdent\",\"TextStrikethrough\",\"TextSubscript\",\"TextSuperscript\",\"TextT\",\"TextTSlash\",\"TextUnderline\",\"Textbox\",\"Thermometer\",\"ThermometerCold\",\"ThermometerHot\",\"ThermometerSimple\",\"ThreadsLogo\",\"ThreeD\",\"ThumbsDown\",\"ThumbsUp\",\"Ticket\",\"TidalLogo\",\"TiktokLogo\",\"Tilde\",\"Timer\",\"TipJar\",\"Tipi\",\"Tire\",\"ToggleLeft\",\"ToggleRight\",\"Toilet\",\"ToiletPaper\",\"Toolbox\",\"Tooth\",\"Tornado\",\"Tote\",\"ToteSimple\",\"Towel\",\"Tractor\",\"Trademark\",\"TrademarkRegistered\",\"TrafficCone\",\"TrafficSign\",\"TrafficSignal\",\"Train\",\"TrainRegional\",\"TrainSimple\",\"Tram\",\"Translate\",\"Trash\",\"TrashSimple\",\"Tray\",\"TrayArrowDown\",\"TrayArrowUp\",\"TreasureChest\",\"Tree\",\"TreeEvergreen\",\"TreePalm\",\"TreeStructure\",\"TreeView\",\"TrendDown\",\"TrendUp\",\"Triangle\",\"TriangleDashed\",\"Trolley\",\"TrolleySuitcase\",\"Trophy\",\"Truck\",\"TruckTrailer\",\"TumblrLogo\",\"TwitchLogo\",\"TwitterLogo\",\"Umbrella\",\"UmbrellaSimple\",\"Union\",\"Unite\",\"UniteSquare\",\"Upload\",\"UploadSimple\",\"Usb\",\"User\",\"UserCheck\",\"UserCircle\",\"UserCircleCheck\",\"UserCircleDashed\",\"UserCircleGear\",\"UserCircleMinus\",\"UserCirclePlus\",\"UserFocus\",\"UserGear\",\"UserList\",\"UserMinus\",\"UserPlus\",\"UserRectangle\",\"UserSound\",\"UserSquare\",\"UserSwitch\",\"Users\",\"UsersFour\",\"UsersThree\",\"Van\",\"Vault\",\"VectorThree\",\"VectorTwo\",\"Vibrate\",\"Video\",\"VideoCamera\",\"VideoCameraSlash\",\"VideoConference\",\"Vignette\",\"VinylRecord\",\"VirtualReality\",\"Virus\",\"Visor\",\"Voicemail\",\"Volleyball\",\"Wall\",\"Wallet\",\"Warehouse\",\"Warning\",\"WarningCircle\",\"WarningDiamond\",\"WarningOctagon\",\"WashingMachine\",\"Watch\",\"WaveSawtooth\",\"WaveSine\",\"WaveSquare\",\"WaveTriangle\",\"Waveform\",\"WaveformSlash\",\"Waves\",\"Webcam\",\"WebcamSlash\",\"WebhooksLogo\",\"WechatLogo\",\"WhatsappLogo\",\"Wheelchair\",\"WheelchairMotion\",\"WifiHigh\",\"WifiLow\",\"WifiMedium\",\"WifiNone\",\"WifiSlash\",\"WifiX\",\"Wind\",\"Windmill\",\"WindowsLogo\",\"Wine\",\"Wrench\",\"X\",\"XCircle\",\"XLogo\",\"XSquare\",\"Yarn\",\"YinYang\",\"YoutubeLogo\"];const moduleBaseUrl=\"https://framer.com/m/phosphor-icons/\";const weightOptions=[\"thin\",\"light\",\"regular\",\"bold\",\"fill\",\"duotone\"];const lowercaseIconKeyPairs=iconKeys.reduce((res,key)=>{res[key.toLowerCase()]=key;return res;},{});/**\n * PHOSPHOR\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n */export function Icon(props){const{color,selectByList,iconSearch,iconSelection,onClick,onMouseDown,onMouseUp,onMouseEnter,onMouseLeave,weight,mirrored}=props;const isMounted=useRef(false);const iconKey=useIconSelection(iconKeys,selectByList,iconSearch,iconSelection,lowercaseIconKeyPairs);const[SelectedIcon,setSelectedIcon]=useState(iconKey===\"Home\"?HouseFactory(React):null);async function importModule(){// Get the selected module\ntry{const version=\"0.0.57\";const iconModuleUrl=`${moduleBaseUrl}${iconKey}.js@${version}`;const module=await import(/* webpackIgnore: true */iconModuleUrl);if(isMounted.current)setSelectedIcon(module.default(React));}catch(err){if(isMounted.current)setSelectedIcon(null);}}useEffect(()=>{isMounted.current=true;importModule();return()=>{isMounted.current=false;};},[iconKey]);const isOnCanvas=RenderTarget.current()===RenderTarget.canvas;const emptyState=isOnCanvas?/*#__PURE__*/_jsx(NullState,{}):null;return /*#__PURE__*/_jsx(motion.div,{style:{display:\"contents\"},onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,children:SelectedIcon?/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 256 256\",style:{userSelect:\"none\",width:\"100%\",height:\"100%\",display:\"inline-block\",fill:color,color,flexShrink:0,transform:mirrored?\"scale(-1, 1)\":undefined},focusable:\"false\",color:color,children:/*#__PURE__*/_jsx(SelectedIcon,{color:color,weight:weight})}):emptyState});}Icon.displayName=\"Phosphor\";Icon.defaultProps={width:24,height:24,iconSelection:\"House\",iconSearch:\"House\",color:\"#66F\",selectByList:true,weight:\"regular\",mirrored:false};addPropertyControls(Icon,{selectByList:{type:ControlType.Boolean,title:\"Select\",enabledTitle:\"List\",disabledTitle:\"Search\",defaultValue:Icon.defaultProps.selectByList},iconSelection:{type:ControlType.Enum,options:iconKeys,defaultValue:Icon.defaultProps.iconSelection,title:\"Name\",hidden:({selectByList})=>!selectByList,description:\"Find every icon name on the [Phosphor site](https://phosphoricons.com/)\"},iconSearch:{type:ControlType.String,title:\"Name\",placeholder:\"Menu, Wifi, Box…\",hidden:({selectByList})=>selectByList},color:{type:ControlType.Color,title:\"Color\",defaultValue:Icon.defaultProps.color},weight:{type:ControlType.Enum,title:\"Weight\",optionTitles:weightOptions.map(piece=>piece.charAt(0).toUpperCase()+piece.slice(1)),options:weightOptions,defaultValue:Icon.defaultProps.weight},mirrored:{type:ControlType.Boolean,enabledTitle:\"Yes\",disabledTitle:\"No\",defaultValue:Icon.defaultProps.mirrored},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"IconProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Icon\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Phosphor.map","// Generated by Framer (3bd990b)\nexport default function metadata(params,activeLocale){return{description:\"Create beautiful moving gradients on Framer, Figma and React\",favicon:\"https://framerusercontent.com/assets/ddKsbSCnuwitwNKu4sRpXTfamkk.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/ha9u6Qtcp2kivmMTouWYSaaXZ9g.png\",title:\"Shader Gradient\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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X,GAAa;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;GACX,GAAa;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;GACX,GAAa;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;GACb,GAAW;;;;;;;;;;;;;;;;;;;;;;;;GACX,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;GACb,GAAc,CACZ,sBACA,2BACA,qBACA,0BACA,sBACA,2BACA,kBACA,uBACA,wBACA,mBACA,gBACA,sBACA,SACA,wBACA,yBACA,4BACA,iCACA,+BACA,0BACA,kBACA,uBACA,qBACA,gBACA,UACA,+BACA,wBACA,+BACA,0BACA,wBACA,6BACA,uBACA,4BACA,mBACA,+BACA,wBACA,sBACA,iCACA,iBACA,cACA,mBACA,gBACA,qBACA,6BACA,0BACA,2BACA,gCACA,qBACA,wBACA,6BACA,yBACA,8BACA,4BACA,iCACA,yBACA,wBACA,uBACA,wBACA,6BACA,2BACA,sBACA,gBACA,qBACA,yBACA,8BACA,yBACA,8BACA,wBACA,qBACA,sBACA,2BACA,sBACA,yBACA,wBACA,wBACA,sBACA,iBACA,2BACA,mCACA,kCACA,2BACA,6BACA,mBACA,WACA,gCACA,kBACA,sBACA,2BACA,yBACA,8BACA,2BACA,yBACA,oBACA,4BACA,mBACA,wBACA,mBACA,qBACA,wBACA,6BACA,wBACA,6BACA,yBACA,8BACA,oBACA,kBACA,aACA,mBACA,gBAAiB,GACjB,gBAAiB,GACjB,oBAAqB,GACrB,oBAAqB,GACrB,UAAW,GACX,UAAW,GACX,WAAY,GACZ,WAAY,GACZ,kBAAmB,GACnB,kBAAmB,GACnB,cAAe,GACf,cAAe,GACf,gBAAiB,GACjB,gBAAiB,GACjB,eAAgB,GAChB,eAAgB,GAChB,iBAAkB,GAClB,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,GACjB,gBAAiB,GACjB,gBAAiB,GACjB,eAAgB,GAChB,eAAgB,GAChB,kBAAmB,GACnB,kBAAmB,GACnB,cAAe,GACf,cAAe,GACf,YAAa,GACb,YAAa,GACb,YAAa,GACb,YAAa,GACb,YAAa,GACb,YAAa,GACd,CACD,EAAc,CACZ,OAAQ,CACN,QAAS,CAAE,MAAuB,IAAIR,E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A,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,EAEA,EACA,CAAC,EACD,CAAC,EACD,EACA,CAAC,EACD,EACA,EACA,EACA,CAAC,EACD,EACA,EACA,EAEA,CAAC,EACD,CAAC,EACD,EACA,CAAC,EACD,EACA,EACA,EACA,CAAC,EACD,EACA,EACA,EACA,EAEA,CAAC,EACD,EACA,CAAC,EACD,EACA,EACA,CAAC,EACD,CAAC,EACD,EACA,EACA,EACA,EACA,EACD,CA+GD,MAAM,EA9GU,CACd,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACD,CACwB,EAAQ,EAAO,CACxC,KAAK,KAAO,uBACZ,KAAK,WAAa,CAChB,SACA,SACD,CAEH,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAsB,EAAK,OAAQ,EAAK,OAAO,GAG9D,GAAsB,IAAI,EAC1B,GAAwB,IAAI,EAC5B,GAA0B,IAAI,EAC9B,GAA4B,IAAI,GAChC,GAAgB,cAAc,EAAe,CAC3C,YAAY,EAAW,KAAM,EAAiB,EAAG,CAO/C,GANA,OAAO,CACP,KAAK,KAAO,gBACZ,KAAK,WAAa,CAChB,WACA,iBACD,CACG,IAAa,KAAM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EACA,CAAC,EACD,EACA,GACA,CAAC,EACD,EACA,EACD,CA+DD,MAAM,EA9DU,CACd,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACD,CACwB,EAAQ,EAAO,CACxC,KAAK,KAAO,sBACZ,KAAK,WAAa,CAChB,SACA,SACD,CAEH,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAqB,EAAK,OAAQ,EAAK,OAAO,GAG7D,GAAqB,MAAM,UAA4B,EAAmB,CACxE,YAAY,EAAS,EAAG,EAAS,EAAG,CA+ClC,MA9CiB,CACf,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACD,CACe,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACwB,EAAQ,EAAO,CACxC,KAAK,KAAO,qBACZ,KAAK,WAAa,CAChB,SACA,SACD,CAEH,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAoB,EAAK,OAAQ,EAAK,OAAO,GAG5D,GAAe,MAAM,UAAsB,EAAe,CACxD,YAAY,EAAc,GAAK,EAAc,EAAG,EAAgB,GAAI,EAAc,EAAG,EAAa,EAAG,EAAc,KAAK,GAAK,EAAG,CAC9H,OAAO,CACP,KAAK,KAAO,eACZ,KAAK,WAAa,CAChB,cACA,cACA,gBACA,cACA,aACA,cACD,CACD,EAAgB,KAAK,IAAI,EAAG,EAAc,CAC1C,EAAc,KAAK,IAAI,EAAG,EAAY,CACtC,IAAM,EAAU,EAAE,CACZ,EAAW,EAAE,CACb,EAAU,EAAE,CACZ,EAAM,EAAE,CACV,EAAS,EACP,GAAc,EAAc,GAAe,EAC3C,EAAU,IAAI,EACd,EAAK,IAAI,EACf,IAAK,IAAI,EAAK,EAAG,GAAM,EAAa,IAAM,CACxC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAe,IAAM,CAC1C,IAAM,EAAU,EAAa,EAAK,EAAgB,EAClD,EAAQ,EAAI,EAAS,KAAK,IAAI,EAAQ,CACtC,EAAQ,EAAI,EAAS,KAAK,IAAI,EAAQ,CACtC,EAAS,KAAK,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC9C,EAAQ,KAAK,EAAG,EAAG,EAAE,CACrB,EAAG,GAAK,EAAQ,EAAI,EAAc,GAAK,EACvC,EAAG,GAAK,EAAQ,EAAI,EAAc,GAAK,EACvC,EAAI,KAAK,EAAG,EAAG,EAAG,EAAE,CAEtB,GAAU,EAEZ,IAAK,IAAI,EAAK,EAAG,EAAK,EAAa,IAAM,CACvC,IAAM,EAAoB,GAAM,EAAgB,GAChD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAe,IAAM,CACzC,IAAM,EAAU,EAAK,EACfd,EAAI,EACJD,EAAI,EAAU,EAAgB,EAC9BE,EAAI,EAAU,EAAgB,EAC9Ba,EAAI,EAAU,EACpB,EAAQ,KAAKd,EAAGD,EAAGe,EAAE,CACrB,EAAQ,KAAKf,EAAGE,EAAGa,EAAE,EAGzB,KAAK,SAAS,EAAQ,CACtB,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CACtE,KAAK,aAAa,SAAU,IAAI,EAAuB,EAAS,EAAE,CAAC,CACnE,KAAK,aAAa,KAAM,IAAI,EAAuB,EAAK,EAAE,CAAC,CAE7D,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,KAET,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAc,EAAK,YAAa,EAAK,YAAa,EAAK,cAAe,EAAK,YAAa,EAAK,WAAY,EAAK,YAAY,GAGzI,GAAgB,MAAM,UAAuB,EAAe,CAC1D,YAAY,EAAS,IAAI,GAAM,CAAC,IAAI,EAAQ,EAAG,GAAI,CAAE,IAAI,EAAQ,IAAM,IAAK,CAAE,IAAI,EAAQ,GAAK,IAAK,CAAC,CAAC,CAAE,EAAgB,GAAI,CAC1H,OAAO,CACP,KAAK,KAAO,gBACZ,KAAK,WAAa,CAChB,SACA,gBACD,CACD,IAAM,EAAU,EAAE,CACZ,EAAW,EAAE,CACb,EAAU,EAAE,CACZ,EAAM,EAAE,CACV,EAAa,EACb,EAAa,EACjB,GAAI,MAAM,QAAQ,EAAO,GAAK,GAC5B,EAAS,EAAO,MAEhB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,OAAQ,IACnC,EAAS,EAAO,GAAI,CACpB,KAAK,SAAS,EAAY,EAAY,EAAG,CACzC,GAAc,EACd,EAAa,EAGjB,KAAK,SAAS,EAAQ,CACtB,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CACtE,KAAK,aAAa,SAAU,IAAI,EAAuB,EAAS,EAAE,CAAC,CACnE,KAAK,aAAa,KAAM,IAAI,EAAuB,EAAK,EAAE,CAAC,CAC3D,SAAS,EAAS,EAAO,CACvB,IAAM,EAAc,EAAS,OAAS,EAChC,EAAS,EAAM,cAAc,EAAc,CAC7C,EAAgB,EAAO,MACrB,EAAa,EAAO,MACtB,GAAW,YAAY,EAAc,GAAK,KAC5C,EAAgB,EAAc,SAAS,EAEzC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAW,OAAQ,EAAK,EAAI,IAAM,CACtD,IAAM,EAAY,EAAW,GACzB,GAAW,YAAY,EAAU,GAAK,KACxC,EAAW,GAAM,EAAU,SAAS,EAGxC,IAAM,EAAQ,GAAW,iBAAiB,EAAe,EAAW,CACpE,IAAK,IAAI,EAAK,EAAG,EAAK,EAAW,OAAQ,EAAK,EAAI,IAAM,CACtD,IAAM,EAAY,EAAW,GAC7B,EAAgB,EAAc,OAAO,EAAU,CAEjD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAc,OAAQ,EAAK,EAAI,IAAM,CACzD,IAAM,EAAU,EAAc,GAC9B,EAAS,KAAK,EAAQ,EAAG,EAAQ,EAAG,EAAE,CACtC,EAAQ,KAAK,EAAG,EAAG,EAAE,CACrB,EAAI,KAAK,EAAQ,EAAG,EAAQ,EAAE,CAEhC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAM,OAAQ,EAAK,EAAI,IAAM,CACjD,IAAM,EAAO,EAAM,GACbd,EAAI,EAAK,GAAK,EACdD,EAAI,EAAK,GAAK,EACdE,EAAI,EAAK,GAAK,EACpB,EAAQ,KAAKD,EAAGD,EAAGE,EAAE,CACrB,GAAc,IAIpB,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,KAET,QAAS,CACP,IAAM,EAAO,MAAM,QAAQ,CACrB,EAAS,KAAK,WAAW,OAC/B,OAAO,GAAO,EAAQ,EAAK,CAE7B,OAAO,SAAS,EAAM,EAAQ,CAC5B,IAAM,EAAiB,EAAE,CACzB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAO,OAAQ,EAAK,EAAI,IAAM,CACvD,IAAM,EAAQ,EAAO,EAAK,OAAO,IACjC,EAAe,KAAK,EAAM,CAE5B,OAAO,IAAI,EAAe,EAAgB,EAAK,cAAc,GAGjE,GAAiB,MAAM,UAAwB,EAAe,CAC5D,YAAY,EAAS,EAAG,EAAgB,GAAI,EAAiB,GAAI,EAAW,EAAG,EAAY,KAAK,GAAK,EAAG,EAAa,EAAG,EAAc,KAAK,GAAI,CAC7I,OAAO,CACP,KAAK,KAAO,iBACZ,KAAK,WAAa,CAChB,SACA,gBACA,iBACA,WACA,YACA,aACA,cACD,CACD,EAAgB,KAAK,IAAI,EAAG,KAAK,MAAM,EAAc,CAAC,CACtD,EAAiB,KAAK,IAAI,EAAG,KAAK,MAAM,EAAe,CAAC,CACxD,IAAM,EAAW,KAAK,IAAI,EAAa,EAAa,KAAK,GAAG,CACxD,EAAQ,EACN,EAAO,EAAE,CACT,EAAU,IAAI,EACd,EAAS,IAAI,EACb,EAAU,EAAE,CACZ,EAAW,EAAE,CACb,EAAU,EAAE,CACZ,EAAM,EAAE,CACd,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IAAM,CAC3C,IAAM,EAAc,EAAE,CAChB,EAAK,EAAK,EACZ,EAAU,EACV,IAAO,GAAK,IAAe,EAC7B,EAAU,GAAM,EACP,IAAO,GAAkB,IAAa,KAAK,KACpD,EAAU,IAAO,GAEnB,IAAK,IAAI,EAAK,EAAG,GAAM,EAAe,IAAM,CAC1C,IAAM,EAAK,EAAK,EAChB,EAAQ,EAAI,CAAC,EAAS,KAAK,IAAI,EAAW,EAAK,EAAU,CAAG,KAAK,IAAI,EAAa,EAAK,EAAY,CACnG,EAAQ,EAAI,EAAS,KAAK,IAAI,EAAa,EAAK,EAAY,CAC5D,EAAQ,EAAI,EAAS,KAAK,IAAI,EAAW,EAAK,EAAU,CAAG,KAAK,IAAI,EAAa,EAAK,EAAY,CAClG,EAAS,KAAK,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC9C,EAAO,KAAK,EAAQ,CAAC,WAAW,CAChC,EAAQ,KAAK,EAAO,EAAG,EAAO,EAAG,EAAO,EAAE,CAC1C,EAAI,KAAK,EAAK,EAAS,EAAI,EAAG,CAC9B,EAAY,KAAK,IAAQ,CAE3B,EAAK,KAAK,EAAY,CAExB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAgB,IACpC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAe,IAAM,CACzC,IAAMD,EAAI,EAAK,GAAI,EAAK,GAClBD,EAAI,EAAK,GAAI,GACbE,EAAI,EAAK,EAAK,GAAG,GACjBa,EAAI,EAAK,EAAK,GAAG,EAAK,IACxB,IAAO,GAAK,EAAa,IAAG,EAAQ,KAAKd,EAAGD,EAAGe,EAAE,EACjD,IAAO,EAAiB,GAAK,EAAW,KAAK,KAAI,EAAQ,KAAKf,EAAGE,EAAGa,EAAE,CAG9E,KAAK,SAAS,EAAQ,CACtB,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CACtE,KAAK,aAAa,SAAU,IAAI,EAAuB,EAAS,EAAE,CAAC,CACnE,KAAK,aAAa,KAAM,IAAI,EAAuB,EAAK,EAAE,CAAC,CAE7D,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,KAET,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAgB,EAAK,OAAQ,EAAK,cAAe,EAAK,eAAgB,EAAK,SAAU,EAAK,UAAW,EAAK,WAAY,EAAK,YAAY,GAGtJ,GAAsB,MAAM,UAA6B,EAAmB,CAC1E,YAAY,EAAS,EAAG,EAAS,EAAG,CA6BlC,MA5BiB,CACf,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,GACD,CACe,CACd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACwB,EAAQ,EAAO,CACxC,KAAK,KAAO,sBACZ,KAAK,WAAa,CAChB,SACA,SACD,CAEH,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAqB,EAAK,OAAQ,EAAK,OAAO,GAG7D,GAAgB,MAAM,UAAuB,EAAe,CAC1D,YAAY,EAAS,EAAG,EAAO,GAAK,EAAiB,GAAI,EAAkB,GAAI,EAAM,KAAK,GAAK,EAAG,CAChG,OAAO,CACP,KAAK,KAAO,gBACZ,KAAK,WAAa,CAChB,SACA,OACA,iBACA,kBACA,MACD,CACD,EAAiB,KAAK,MAAM,EAAe,CAC3C,EAAkB,KAAK,MAAM,EAAgB,CAC7C,IAAM,EAAU,EAAE,CACZ,EAAW,EAAE,CACb,EAAU,EAAE,CACZ,EAAM,EAAE,CACR,EAAS,IAAI,EACb,EAAU,IAAI,EACd,EAAS,IAAI,EACnB,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IACrC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAiB,IAAM,CAC5C,IAAM,EAAK,EAAK,EAAkB,EAC5B,EAAK,EAAK,EAAiB,KAAK,GAAK,EAC3C,EAAQ,GAAK,EAAS,EAAO,KAAK,IAAI,EAAG,EAAI,KAAK,IAAI,EAAG,CACzD,EAAQ,GAAK,EAAS,EAAO,KAAK,IAAI,EAAG,EAAI,KAAK,IAAI,EAAG,CACzD,EAAQ,EAAI,EAAO,KAAK,IAAI,EAAG,CAC/B,EAAS,KAAK,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC9C,EAAO,EAAI,EAAS,KAAK,IAAI,EAAG,CAChC,EAAO,EAAI,EAAS,KAAK,IAAI,EAAG,CAChC,EAAO,WAAW,EAAS,EAAO,CAAC,WAAW,CAC9C,EAAQ,KAAK,EAAO,EAAG,EAAO,EAAG,EAAO,EAAE,CAC1C,EAAI,KAAK,EAAK,EAAgB,CAC9B,EAAI,KAAK,EAAK,EAAe,CAGjC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IACrC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAiB,IAAM,CAC5C,IAAMd,GAAK,EAAkB,GAAK,EAAK,EAAK,EACtCD,GAAK,EAAkB,IAAM,EAAK,GAAK,EAAK,EAC5CE,GAAK,EAAkB,IAAM,EAAK,GAAK,EACvCa,GAAK,EAAkB,GAAK,EAAK,EACvC,EAAQ,KAAKd,EAAGD,EAAGe,EAAE,CACrB,EAAQ,KAAKf,EAAGE,EAAGa,EAAE,CAGzB,KAAK,SAAS,EAAQ,CACtB,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CACtE,KAAK,aAAa,SAAU,IAAI,EAAuB,EAAS,EAAE,CAAC,CACnE,KAAK,aAAa,KAAM,IAAI,EAAuB,EAAK,EAAE,CAAC,CAE7D,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,KAET,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAe,EAAK,OAAQ,EAAK,KAAM,EAAK,eAAgB,EAAK,gBAAiB,EAAK,IAAI,GAG1G,GAAoB,MAAM,UAA2B,EAAe,CAClE,YAAY,EAAS,EAAG,EAAO,GAAK,EAAkB,GAAI,EAAiB,EAAG,EAAK,EAAG,EAAK,EAAG,CAC5F,OAAO,CACP,KAAK,KAAO,oBACZ,KAAK,WAAa,CAChB,SACA,OACA,kBACA,iBACA,EAAG,EACH,EAAG,EACJ,CACD,EAAkB,KAAK,MAAM,EAAgB,CAC7C,EAAiB,KAAK,MAAM,EAAe,CAC3C,IAAM,EAAU,EAAE,CACZ,EAAW,EAAE,CACb,EAAU,EAAE,CACZ,EAAM,EAAE,CACR,EAAU,IAAI,EACd,EAAS,IAAI,EACb,EAAK,IAAI,EACT,EAAK,IAAI,EACT,EAAK,IAAI,EACT,EAAK,IAAI,EACT,EAAK,IAAI,EACf,IAAK,IAAI,EAAK,EAAG,GAAM,EAAiB,EAAE,EAAI,CAC5C,IAAM,EAAK,EAAK,EAAkB,EAAK,KAAK,GAAK,EACjD,EAAyB,EAAI,EAAI,EAAI,EAAQ,EAAG,CAChD,EAAyB,EAAK,IAAM,EAAI,EAAI,EAAQ,EAAG,CACvD,EAAG,WAAW,EAAI,EAAG,CACrB,EAAG,WAAW,EAAI,EAAG,CACrB,EAAG,aAAa,EAAI,EAAG,CACvB,EAAG,aAAa,EAAI,EAAG,CACvB,EAAG,WAAW,CACd,EAAG,WAAW,CACd,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,EAAE,EAAI,CAC3C,IAAM,EAAK,EAAK,EAAiB,KAAK,GAAK,EACrCL,EAAK,CAAC,EAAO,KAAK,IAAI,EAAG,CACzB,EAAK,EAAO,KAAK,IAAI,EAAG,CAC9B,EAAQ,EAAI,EAAG,GAAKA,EAAK,EAAG,EAAI,EAAK,EAAG,GACxC,EAAQ,EAAI,EAAG,GAAKA,EAAK,EAAG,EAAI,EAAK,EAAG,GACxC,EAAQ,EAAI,EAAG,GAAKA,EAAK,EAAG,EAAI,EAAK,EAAG,GACxC,EAAS,KAAK,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC9C,EAAO,WAAW,EAAS,EAAG,CAAC,WAAW,CAC1C,EAAQ,KAAK,EAAO,EAAG,EAAO,EAAG,EAAO,EAAE,CAC1C,EAAI,KAAK,EAAK,EAAgB,CAC9B,EAAI,KAAK,EAAK,EAAe,EAGjC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAiB,IACtC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IAAM,CAC3C,IAAMT,GAAK,EAAiB,IAAM,EAAK,IAAM,EAAK,GAC5CD,GAAK,EAAiB,GAAK,GAAM,EAAK,GACtCE,GAAK,EAAiB,GAAK,EAAK,EAChCa,GAAK,EAAiB,IAAM,EAAK,GAAK,EAC5C,EAAQ,KAAKd,EAAGD,EAAGe,EAAE,CACrB,EAAQ,KAAKf,EAAGE,EAAGa,EAAE,CAGzB,KAAK,SAAS,EAAQ,CACtB,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CACtE,KAAK,aAAa,SAAU,IAAI,EAAuB,EAAS,EAAE,CAAC,CACnE,KAAK,aAAa,KAAM,IAAI,EAAuB,EAAK,EAAE,CAAC,CAC3D,SAAS,EAAyB,EAAI,EAAK,EAAK,EAAS,EAAU,CACjE,IAAM,EAAK,KAAK,IAAI,EAAG,CACjB,EAAK,KAAK,IAAI,EAAG,CACjB,EAAU,EAAM,EAAM,EACtB,EAAK,KAAK,IAAI,EAAQ,CAC5B,EAAS,EAAI,GAAW,EAAI,GAAM,GAAM,EACxC,EAAS,EAAI,GAAW,EAAI,GAAM,EAAK,GACvC,EAAS,EAAI,EAAU,KAAK,IAAI,EAAQ,CAAG,IAG/C,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,KAET,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAmB,EAAK,OAAQ,EAAK,KAAM,EAAK,gBAAiB,EAAK,eAAgB,EAAK,EAAG,EAAK,EAAE,GAGpH,GAAe,MAAM,UAAsB,EAAe,CACxD,YAAY,EAAO,IAAI,GAAsB,IAAI,EAAQ,GAAI,GAAI,EAAE,CAAE,IAAI,EAAQ,GAAI,EAAG,EAAE,CAAE,IAAI,EAAQ,EAAG,EAAG,EAAE,CAAC,CAAE,EAAkB,GAAI,EAAS,EAAG,EAAiB,EAAG,EAAS,GAAO,CACvL,OAAO,CACP,KAAK,KAAO,eACZ,KAAK,WAAa,CAChB,OACA,kBACA,SACA,iBACA,SACD,CACD,IAAM,EAAS,EAAK,oBAAoB,EAAiB,EAAO,CAChE,KAAK,SAAW,EAAO,SACvB,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,IAAM,EAAU,IAAI,EACd,EAAS,IAAI,EACb,EAAK,IAAI,EACX,EAAK,IAAI,EACP,EAAW,EAAE,CACb,EAAU,EAAE,CACZ,EAAM,EAAE,CACR,EAAU,EAAE,CAClB,GAAoB,CACpB,KAAK,SAAS,EAAQ,CACtB,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CACtE,KAAK,aAAa,SAAU,IAAI,EAAuB,EAAS,EAAE,CAAC,CACnE,KAAK,aAAa,KAAM,IAAI,EAAuB,EAAK,EAAE,CAAC,CAC3D,SAAS,GAAqB,CAC5B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAiB,IACrC,EAAgB,EAAG,CAErB,EAAgB,IAAW,GAAQ,EAAkB,EAAE,CACvD,GAAa,CACb,GAAiB,CAEnB,SAAS,EAAgB,EAAI,CAC3B,EAAK,EAAK,WAAW,EAAK,EAAiB,EAAG,CAC9C,IAAM,EAAK,EAAO,QAAQ,GACpB,EAAK,EAAO,UAAU,GAC5B,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IAAM,CAC3C,IAAM,EAAK,EAAK,EAAiB,KAAK,GAAK,EACrC,EAAM,KAAK,IAAI,EAAG,CAClB,EAAM,CAAC,KAAK,IAAI,EAAG,CACzB,EAAO,EAAI,EAAM,EAAG,EAAI,EAAM,EAAG,EACjC,EAAO,EAAI,EAAM,EAAG,EAAI,EAAM,EAAG,EACjC,EAAO,EAAI,EAAM,EAAG,EAAI,EAAM,EAAG,EACjC,EAAO,WAAW,CAClB,EAAQ,KAAK,EAAO,EAAG,EAAO,EAAG,EAAO,EAAE,CAC1C,EAAQ,EAAI,EAAG,EAAI,EAAS,EAAO,EACnC,EAAQ,EAAI,EAAG,EAAI,EAAS,EAAO,EACnC,EAAQ,EAAI,EAAG,EAAI,EAAS,EAAO,EACnC,EAAS,KAAK,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,EAGlD,SAAS,GAAkB,CACzB,IAAK,IAAI,EAAK,EAAG,GAAM,EAAiB,IACtC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IAAM,CAC3C,IAAMd,GAAK,EAAiB,IAAM,EAAK,IAAM,EAAK,GAC5CD,GAAK,EAAiB,GAAK,GAAM,EAAK,GACtCE,GAAK,EAAiB,GAAK,EAAK,EAChCa,GAAK,EAAiB,IAAM,EAAK,GAAK,EAC5C,EAAQ,KAAKd,EAAGD,EAAGe,EAAE,CACrB,EAAQ,KAAKf,EAAGE,EAAGa,EAAE,EAI3B,SAAS,GAAc,CACrB,IAAK,IAAI,EAAK,EAAG,GAAM,EAAiB,IACtC,IAAK,IAAI,EAAK,EAAG,GAAM,EAAgB,IACrC,EAAG,EAAI,EAAK,EACZ,EAAG,EAAI,EAAK,EACZ,EAAI,KAAK,EAAG,EAAG,EAAG,EAAE,EAK5B,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,KAET,QAAS,CACP,IAAM,EAAO,MAAM,QAAQ,CAE3B,MADA,GAAK,KAAO,KAAK,WAAW,KAAK,QAAQ,CAClC,EAET,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EACT,IAAI,GAAO,EAAK,KAAK,OAAO,CAAC,SAAS,EAAK,KAAK,CAChD,EAAK,gBACL,EAAK,OACL,EAAK,eACL,EAAK,OACN,GAGL,GAAoB,cAAc,EAAe,CAC/C,YAAY,EAAW,KAAM,CAM3B,GALA,OAAO,CACP,KAAK,KAAO,oBACZ,KAAK,WAAa,CAChB,WACD,CACG,IAAa,KAAM,CACrB,IAAM,EAAW,EAAE,CACb,EAAwB,IAAI,IAC5B,EAAQ,IAAI,EACZ,EAAM,IAAI,EAChB,GAAI,EAAS,QAAU,KAAM,CAC3B,IAAM,EAAW,EAAS,WAAW,SAC/B,EAAU,EAAS,MACrB,EAAS,EAAS,OAClB,EAAO,SAAW,IACpB,EAAS,CAAC,CAAE,MAAO,EAAG,MAAO,EAAQ,MAAO,cAAe,EAAG,CAAC,EAEjE,IAAK,IAAIiB,EAAI,EAAG,EAAK,EAAO,OAAQA,EAAI,EAAI,EAAEA,EAAG,CAC/C,IAAM,EAAQ,EAAOA,GACf,EAAa,EAAM,MACnB,EAAa,EAAM,MACzB,IAAK,IAAI,EAAK,EAAY,EAAK,EAAa,EAAY,EAAK,EAAI,GAAM,EACrE,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IAAM,CAC7B,IAAM,EAAS,EAAQ,KAAK,EAAK,EAAG,CAC9B,EAAS,EAAQ,KAAK,GAAM,EAAK,GAAK,EAAE,CAC9C,EAAM,oBAAoB,EAAU,EAAO,CAC3C,EAAI,oBAAoB,EAAU,EAAO,CACrC,GAAa,EAAO,EAAK,EAAM,GAAK,KACtC,EAAS,KAAK,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACxC,EAAS,KAAK,EAAI,EAAG,EAAI,EAAG,EAAI,EAAE,QAKrC,CACL,IAAM,EAAW,EAAS,WAAW,SACrC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,MAAQ,EAAG,EAAK,EAAI,IACjD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IAAM,CAC7B,IAAM,EAAS,EAAI,EAAK,EAClB,EAAS,EAAI,GAAM,EAAK,GAAK,EACnC,EAAM,oBAAoB,EAAU,EAAO,CAC3C,EAAI,oBAAoB,EAAU,EAAO,CACrC,GAAa,EAAO,EAAK,EAAM,GAAK,KACtC,EAAS,KAAK,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACxC,EAAS,KAAK,EAAI,EAAG,EAAI,EAAG,EAAI,EAAE,GAK1C,KAAK,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,EAG1E,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,WAAa,OAAO,OAAO,EAAE,CAAE,EAAO,WAAW,CAC/C,OAGX,GAA6B,OAAO,OAAO,CACzC,UAAW,KACX,eACA,mBACA,kBACA,gBACA,oBACA,wBACA,iBACA,mBACA,uBACA,iBACA,sBACA,iBACA,sBACA,gBACA,iBACA,kBACA,uBACA,iBACA,qBACA,gBACA,qBACD,CAAC,CACF,GAAiB,cAAc,EAAS,CACtC,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,iBAAmB,GACxB,KAAK,KAAO,iBACZ,KAAK,MAAQ,IAAIzB,EAAM,EAAE,CACzB,KAAK,YAAc,GACnB,KAAK,IAAM,GACX,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAIX,OAHA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,IAAM,EAAO,IACX,OAGX,GAAoB,cAAc,EAAe,CAC/C,YAAY,EAAY,CACtB,MAAM,EAAW,CACjB,KAAK,oBAAsB,GAC3B,KAAK,KAAO,sBAGhB,GAAuB,cAAc,EAAS,CAC5C,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,uBAAyB,GAC9B,KAAK,QAAU,CAAE,SAAY,GAAI,CACjC,KAAK,KAAO,uBACZ,KAAK,MAAQ,IAAIA,EAAM,SAAS,CAChC,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,kBAAoB,EACzB,KAAK,MAAQ,KACb,KAAK,eAAiB,EACtB,KAAK,SAAW,IAAIA,EAAM,EAAE,CAC5B,KAAK,kBAAoB,EACzB,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,UAAY,EACjB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,YAAc,IAAI,EAAQ,EAAG,EAAE,CACpC,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,aAAe,KACpB,KAAK,aAAe,KACpB,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,eAAiB,IAAI,GAC1B,KAAK,gBAAkB,EACvB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,QACxB,KAAK,kBAAoB,QACzB,KAAK,YAAc,GACnB,KAAK,IAAM,GACX,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAkCX,OAjCA,MAAM,KAAK,EAAO,CAClB,KAAK,QAAU,CAAE,SAAY,GAAI,CACjC,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,IAAM,EAAO,IAClB,KAAK,SAAW,EAAO,SACvB,KAAK,kBAAoB,EAAO,kBAChC,KAAK,MAAQ,EAAO,MACpB,KAAK,eAAiB,EAAO,eAC7B,KAAK,SAAS,KAAK,EAAO,SAAS,CACnC,KAAK,YAAc,EAAO,YAC1B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,cAAgB,EAAO,cAC5B,KAAK,YAAY,KAAK,EAAO,YAAY,CACzC,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,aAAe,EAAO,aAC3B,KAAK,aAAe,EAAO,aAC3B,KAAK,SAAW,EAAO,SACvB,KAAK,OAAS,EAAO,OACrB,KAAK,eAAe,KAAK,EAAO,eAAe,CAC/C,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,UAAY,EAAO,UACxB,KAAK,mBAAqB,EAAO,mBACjC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,YAAc,EAAO,YAC1B,KAAK,IAAM,EAAO,IACX,OAGX,GAAuB,cAAc,EAAqB,CACxD,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,uBAAyB,GAC9B,KAAK,QAAU,CACb,SAAY,GACZ,SAAY,GACb,CACD,KAAK,KAAO,uBACZ,KAAK,mBAAqB,EAC1B,KAAK,cAAgB,KACrB,KAAK,aAAe,KACpB,KAAK,mBAAqB,EAC1B,KAAK,sBAAwB,KAC7B,KAAK,qBAAuB,IAAI,EAAQ,EAAG,EAAE,CAC7C,KAAK,mBAAqB,KAC1B,KAAK,IAAM,IACX,OAAO,eAAe,KAAM,eAAgB,CAC1C,IAAK,UAAW,CACd,OAAOZ,GAAM,KAAO,KAAK,IAAM,IAAM,KAAK,IAAM,GAAI,EAAG,EAAE,EAE3D,IAAK,SAAS,EAAc,CAC1B,KAAK,KAAO,EAAI,GAAM,IAAiB,EAAI,GAAM,IAEpD,CAAC,CACF,KAAK,eAAiB,KACtB,KAAK,eAAiB,IACtB,KAAK,0BAA4B,CAAC,IAAK,IAAI,CAC3C,KAAK,wBAA0B,KAC/B,KAAK,WAAa,IAAIY,EAAM,EAAE,CAC9B,KAAK,cAAgB,KACrB,KAAK,eAAiB,EACtB,KAAK,kBAAoB,KACzB,KAAK,gBAAkB,KACvB,KAAK,UAAY,EACjB,KAAK,aAAe,KACpB,KAAK,oBAAsB,IAC3B,KAAK,iBAAmB,IAAIA,EAAM,EAAG,EAAG,EAAE,CAC1C,KAAK,kBAAoB,EACzB,KAAK,qBAAuB,KAC5B,KAAK,cAAgB,IAAIA,EAAM,EAAG,EAAG,EAAE,CACvC,KAAK,iBAAmB,KACxB,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,YAAc,EACnB,KAAK,aAAe,EACpB,KAAK,OAAS,EACd,KAAK,cAAgB,EACrB,KAAK,UAAU,EAAW,CAE5B,IAAI,YAAa,CACf,OAAO,KAAK,YAEd,IAAI,WAAW,EAAO,CAChB,KAAK,YAAc,GAAM,EAAQ,GACnC,KAAK,UAEP,KAAK,YAAc,EAErB,IAAI,WAAY,CACd,OAAO,KAAK,WAEd,IAAI,UAAU,EAAO,CACf,KAAK,WAAa,GAAM,EAAQ,GAClC,KAAK,UAEP,KAAK,WAAa,EAEpB,IAAI,aAAc,CAChB,OAAO,KAAK,aAEd,IAAI,YAAY,EAAO,CACjB,KAAK,aAAe,GAAM,EAAQ,GACpC,KAAK,UAEP,KAAK,aAAe,EAEtB,IAAI,YAAa,CACf,OAAO,KAAK,YAEd,IAAI,WAAW,EAAO,CAChB,KAAK,YAAc,GAAM,EAAQ,GACnC,KAAK,UAEP,KAAK,YAAc,EAErB,IAAI,OAAQ,CACV,OAAO,KAAK,OAEd,IAAI,MAAM,EAAO,CACX,KAAK,OAAS,GAAM,EAAQ,GAC9B,KAAK,UAEP,KAAK,OAAS,EAEhB,IAAI,cAAe,CACjB,OAAO,KAAK,cAEd,IAAI,aAAa,EAAO,CAClB,KAAK,cAAgB,GAAM,EAAQ,GACrC,KAAK,UAEP,KAAK,cAAgB,EAEvB,KAAK,EAAQ,CAqCX,OApCA,MAAM,KAAK,EAAO,CAClB,KAAK,QAAU,CACb,SAAY,GACZ,SAAY,GACb,CACD,KAAK,WAAa,EAAO,WACzB,KAAK,mBAAqB,EAAO,mBACjC,KAAK,cAAgB,EAAO,cAC5B,KAAK,UAAY,EAAO,UACxB,KAAK,aAAe,EAAO,aAC3B,KAAK,mBAAqB,EAAO,mBACjC,KAAK,sBAAwB,EAAO,sBACpC,KAAK,mBAAqB,EAAO,mBACjC,KAAK,qBAAqB,KAAK,EAAO,qBAAqB,CAC3D,KAAK,WAAa,EAAO,WACzB,KAAK,IAAM,EAAO,IAClB,KAAK,YAAc,EAAO,YAC1B,KAAK,eAAiB,EAAO,eAC7B,KAAK,eAAiB,EAAO,eAC7B,KAAK,0BAA4B,CAAC,GAAG,EAAO,0BAA0B,CACtE,KAAK,wBAA0B,EAAO,wBACtC,KAAK,MAAQ,EAAO,MACpB,KAAK,WAAW,KAAK,EAAO,WAAW,CACvC,KAAK,cAAgB,EAAO,cAC5B,KAAK,eAAiB,EAAO,eAC7B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,aAAe,EAAO,aAC3B,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,UAAY,EAAO,UACxB,KAAK,aAAe,EAAO,aAC3B,KAAK,oBAAsB,EAAO,oBAClC,KAAK,iBAAiB,KAAK,EAAO,iBAAiB,CACnD,KAAK,kBAAoB,EAAO,kBAChC,KAAK,qBAAuB,EAAO,qBACnC,KAAK,cAAc,KAAK,EAAO,cAAc,CAC7C,KAAK,iBAAmB,EAAO,iBACxB,OAGX,GAAoB,cAAc,EAAS,CACzC,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,oBAAsB,GAC3B,KAAK,KAAO,oBACZ,KAAK,MAAQ,IAAIA,EAAM,SAAS,CAChC,KAAK,SAAW,IAAIA,EAAM,QAAQ,CAClC,KAAK,UAAY,GACjB,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,kBAAoB,EACzB,KAAK,MAAQ,KACb,KAAK,eAAiB,EACtB,KAAK,SAAW,IAAIA,EAAM,EAAE,CAC5B,KAAK,kBAAoB,EACzB,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,UAAY,EACjB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,YAAc,IAAI,EAAQ,EAAG,EAAE,CACpC,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,YAAc,KACnB,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,eAAiB,IAAI,GAC1B,KAAK,QAAU,GACf,KAAK,aAAe,EACpB,KAAK,gBAAkB,IACvB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,QACxB,KAAK,kBAAoB,QACzB,KAAK,YAAc,GACnB,KAAK,IAAM,GACX,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAkCX,OAjCA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,SAAS,KAAK,EAAO,SAAS,CACnC,KAAK,UAAY,EAAO,UACxB,KAAK,IAAM,EAAO,IAClB,KAAK,SAAW,EAAO,SACvB,KAAK,kBAAoB,EAAO,kBAChC,KAAK,MAAQ,EAAO,MACpB,KAAK,eAAiB,EAAO,eAC7B,KAAK,SAAS,KAAK,EAAO,SAAS,CACnC,KAAK,YAAc,EAAO,YAC1B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,cAAgB,EAAO,cAC5B,KAAK,YAAY,KAAK,EAAO,YAAY,CACzC,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,YAAc,EAAO,YAC1B,KAAK,SAAW,EAAO,SACvB,KAAK,OAAS,EAAO,OACrB,KAAK,eAAe,KAAK,EAAO,eAAe,CAC/C,KAAK,QAAU,EAAO,QACtB,KAAK,aAAe,EAAO,aAC3B,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,UAAY,EAAO,UACxB,KAAK,mBAAqB,EAAO,mBACjC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,YAAc,EAAO,YAC1B,KAAK,IAAM,EAAO,IACX,OAGX,GAAmB,cAAc,EAAS,CACxC,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,mBAAqB,GAC1B,KAAK,QAAU,CAAE,KAAQ,GAAI,CAC7B,KAAK,KAAO,mBACZ,KAAK,MAAQ,IAAIA,EAAM,SAAS,CAChC,KAAK,IAAM,KACX,KAAK,YAAc,KACnB,KAAK,SAAW,KAChB,KAAK,kBAAoB,EACzB,KAAK,MAAQ,KACb,KAAK,eAAiB,EACtB,KAAK,SAAW,IAAIA,EAAM,EAAE,CAC5B,KAAK,kBAAoB,EACzB,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,UAAY,EACjB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,YAAc,IAAI,EAAQ,EAAG,EAAE,CACpC,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,SAAW,KAChB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,QACxB,KAAK,kBAAoB,QACzB,KAAK,IAAM,GACX,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CA0BX,OAzBA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,IAAM,EAAO,IAClB,KAAK,YAAc,EAAO,YAC1B,KAAK,SAAW,EAAO,SACvB,KAAK,kBAAoB,EAAO,kBAChC,KAAK,MAAQ,EAAO,MACpB,KAAK,eAAiB,EAAO,eAC7B,KAAK,SAAS,KAAK,EAAO,SAAS,CACnC,KAAK,YAAc,EAAO,YAC1B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,cAAgB,EAAO,cAC5B,KAAK,YAAY,KAAK,EAAO,YAAY,CACzC,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,SAAW,EAAO,SACvB,KAAK,UAAY,EAAO,UACxB,KAAK,mBAAqB,EAAO,mBACjC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,IAAM,EAAO,IACX,OAGX,GAAqB,cAAc,EAAS,CAC1C,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,qBAAuB,GAC5B,KAAK,KAAO,qBACZ,KAAK,QAAU,KACf,KAAK,UAAY,EACjB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,YAAc,IAAI,EAAQ,EAAG,EAAE,CACpC,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,YAAc,GACnB,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAaX,OAZA,MAAM,KAAK,EAAO,CAClB,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,cAAgB,EAAO,cAC5B,KAAK,YAAY,KAAK,EAAO,YAAY,CACzC,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,UAAY,EAAO,UACxB,KAAK,mBAAqB,EAAO,mBACjC,KAAK,YAAc,EAAO,YACnB,OAGX,GAAsB,cAAc,EAAS,CAC3C,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,sBAAwB,GAC7B,KAAK,KAAO,sBACZ,KAAK,MAAQ,IAAIA,EAAM,SAAS,CAChC,KAAK,IAAM,KACX,KAAK,SAAW,KAChB,KAAK,kBAAoB,EACzB,KAAK,MAAQ,KACb,KAAK,eAAiB,EACtB,KAAK,SAAW,IAAIA,EAAM,EAAE,CAC5B,KAAK,kBAAoB,EACzB,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,UAAY,EACjB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,YAAc,IAAI,EAAQ,EAAG,EAAE,CACpC,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,YAAc,KACnB,KAAK,SAAW,KAChB,KAAK,OAAS,KACd,KAAK,eAAiB,IAAI,GAC1B,KAAK,QAAU,GACf,KAAK,aAAe,EACpB,KAAK,gBAAkB,IACvB,KAAK,UAAY,GACjB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,QACxB,KAAK,kBAAoB,QACzB,KAAK,YAAc,GACnB,KAAK,IAAM,GACX,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAgCX,OA/BA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,IAAM,EAAO,IAClB,KAAK,SAAW,EAAO,SACvB,KAAK,kBAAoB,EAAO,kBAChC,KAAK,MAAQ,EAAO,MACpB,KAAK,eAAiB,EAAO,eAC7B,KAAK,SAAS,KAAK,EAAO,SAAS,CACnC,KAAK,YAAc,EAAO,YAC1B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,cAAgB,EAAO,cAC5B,KAAK,YAAY,KAAK,EAAO,YAAY,CACzC,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,YAAc,EAAO,YAC1B,KAAK,SAAW,EAAO,SACvB,KAAK,OAAS,EAAO,OACrB,KAAK,eAAe,KAAK,EAAO,eAAe,CAC/C,KAAK,QAAU,EAAO,QACtB,KAAK,aAAe,EAAO,aAC3B,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,UAAY,EAAO,UACxB,KAAK,mBAAqB,EAAO,mBACjC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,YAAc,EAAO,YAC1B,KAAK,IAAM,EAAO,IACX,OAGX,GAAqB,cAAc,EAAS,CAC1C,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,qBAAuB,GAC5B,KAAK,QAAU,CAAE,OAAU,GAAI,CAC/B,KAAK,KAAO,qBACZ,KAAK,MAAQ,IAAIA,EAAM,SAAS,CAChC,KAAK,OAAS,KACd,KAAK,IAAM,KACX,KAAK,QAAU,KACf,KAAK,UAAY,EACjB,KAAK,UAAY,KACjB,KAAK,cAAgB,GACrB,KAAK,YAAc,IAAI,EAAQ,EAAG,EAAE,CACpC,KAAK,gBAAkB,KACvB,KAAK,kBAAoB,EACzB,KAAK,iBAAmB,EACxB,KAAK,SAAW,KAChB,KAAK,YAAc,GACnB,KAAK,IAAM,GACX,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAiBX,OAhBA,MAAM,KAAK,EAAO,CAClB,KAAK,QAAU,CAAE,OAAU,GAAI,CAC/B,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,OAAS,EAAO,OACrB,KAAK,IAAM,EAAO,IAClB,KAAK,QAAU,EAAO,QACtB,KAAK,UAAY,EAAO,UACxB,KAAK,UAAY,EAAO,UACxB,KAAK,cAAgB,EAAO,cAC5B,KAAK,YAAY,KAAK,EAAO,YAAY,CACzC,KAAK,gBAAkB,EAAO,gBAC9B,KAAK,kBAAoB,EAAO,kBAChC,KAAK,iBAAmB,EAAO,iBAC/B,KAAK,SAAW,EAAO,SACvB,KAAK,YAAc,EAAO,YAC1B,KAAK,IAAM,EAAO,IACX,OAGX,GAAqB,cAAc,EAAkB,CACnD,YAAY,EAAY,CACtB,OAAO,CACP,KAAK,qBAAuB,GAC5B,KAAK,KAAO,qBACZ,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,QAAU,EACf,KAAK,UAAU,EAAW,CAE5B,KAAK,EAAQ,CAKX,OAJA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAQ,EAAO,MACpB,KAAK,SAAW,EAAO,SACvB,KAAK,QAAU,EAAO,QACf,OAGX,GAAiB,CACf,gBACA,gBACA,oBACA,eACA,eACA,WACA,oBACD,CACD,GAAc,KAAM,CAClB,YAAY,EAAoB,EAAc,EAAY,EAAc,CACtE,KAAK,mBAAqB,EAC1B,KAAK,aAAe,EACpB,KAAK,aAAe,IAAiB,IAAK,GAAmB,IAAI,EAAa,YAAY,EAAW,CAAvD,EAC9C,KAAK,aAAe,EACpB,KAAK,UAAY,EACjB,KAAK,SAAW,KAChB,KAAK,iBAAmB,EAAE,CAE5B,SAAS,EAAI,CACX,IAAM,EAAK,KAAK,mBACZ,EAAK,KAAK,aAAc,EAAK,EAAG,GAAK,EAAK,EAAG,EAAK,GACtD,kBAAmB,CACjB,KAAM,CACJ,IAAI,EACJ,YAAa,CACX,aAAc,GAAI,EAAE,EAAK,GAAK,CAC5B,IAAK,IAAI,EAAW,EAAK,IAAO,CAC9B,GAAI,IAAO,IAAK,GAAG,CACjB,GAAI,EAAK,EAAI,MAAM,aAGnB,MAFA,GAAK,EAAG,OACR,KAAK,aAAe,EACb,KAAK,iBAAiB,EAAK,EAAE,CAEtC,GAAI,IAAO,EAAU,MAGrB,GAFA,EAAK,EACL,EAAK,EAAG,EAAE,GACN,EAAK,EACP,MAAM,KAGV,EAAQ,EAAG,OACX,MAAM,YAER,GAAI,EAAE,GAAM,GAAK,CACf,IAAM,EAAW,EAAG,GAChB,EAAK,IACP,EAAK,EACL,EAAK,GAEP,IAAK,IAAI,EAAW,EAAK,IAAO,CAC9B,GAAI,IAAO,IAAK,GAEd,MADA,MAAK,aAAe,EACb,KAAK,iBAAiB,EAAE,CAEjC,GAAI,IAAO,EAAU,MAGrB,GAFA,EAAK,EACL,EAAK,EAAG,EAAE,EAAK,GACX,GAAM,EACR,MAAM,KAGV,EAAQ,EACR,EAAK,EACL,MAAM,YAER,MAAM,kBAER,KAAO,EAAK,GAAO,CACjB,IAAM,EAAM,EAAK,IAAU,EACvB,EAAK,EAAG,GACV,EAAQ,EAER,EAAK,EAAM,EAKf,GAFA,EAAK,EAAG,GACR,EAAK,EAAG,EAAK,GACT,IAAO,IAAK,GAEd,MADA,MAAK,aAAe,EACb,KAAK,iBAAiB,EAAE,CAEjC,GAAI,IAAO,IAAK,GAGd,MAFA,GAAK,EAAG,OACR,KAAK,aAAe,EACb,KAAK,iBAAiB,EAAK,EAAE,CAGxC,KAAK,aAAe,EACpB,KAAK,iBAAiB,EAAI,EAAI,EAAG,CAEnC,OAAO,KAAK,aAAa,EAAI,EAAI,EAAI,EAAG,CAE1C,cAAe,CACb,OAAO,KAAK,UAAY,KAAK,iBAE/B,iBAAiB,EAAO,CACtB,IAAM,EAAS,KAAK,aAAc,EAAS,KAAK,aAAc,EAAS,KAAK,UAAW,EAAS,EAAQ,EACxG,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAChC,EAAO,GAAM,EAAO,EAAS,GAE/B,OAAO,EAGT,cAAe,CACb,MAAU,MAAM,0BAA0B,CAE5C,kBAAmB,IAGrB,GAAmB,cAAc,EAAY,CAC3C,YAAY,EAAoB,EAAc,EAAY,EAAc,CACtE,MAAM,EAAoB,EAAc,EAAY,EAAa,CACjE,KAAK,YAAc,GACnB,KAAK,YAAc,GACnB,KAAK,YAAc,GACnB,KAAK,YAAc,GACnB,KAAK,iBAAmB,CACtB,YAAa,GACb,UAAW,GACZ,CAEH,iBAAiB,EAAI,EAAI,EAAI,CAC3B,IAAM,EAAK,KAAK,mBACZ,EAAQ,EAAK,EAAG,EAAQ,EAAK,EAAG,EAAQ,EAAG,GAAQ,EAAQ,EAAG,GAClE,GAAI,IAAU,IAAK,GACjB,OAAQ,KAAK,cAAc,CAAC,YAA5B,CACE,KAAK,GACH,EAAQ,EACR,EAAQ,EAAI,EAAK,EACjB,MACF,KAAK,GACH,EAAQ,EAAG,OAAS,EACpB,EAAQ,EAAK,EAAG,GAAS,EAAG,EAAQ,GACpC,MACF,QACE,EAAQ,EACR,EAAQ,EAGd,GAAI,IAAU,IAAK,GACjB,OAAQ,KAAK,cAAc,CAAC,UAA5B,CACE,KAAK,GACH,EAAQ,EACR,EAAQ,EAAI,EAAK,EACjB,MACF,KAAK,GACH,EAAQ,EACR,EAAQ,EAAK,EAAG,GAAK,EAAG,GACxB,MACF,QACE,EAAQ,EAAK,EACb,EAAQ,EAGd,IAAM,GAAU,EAAK,GAAM,GAAK,EAAS,KAAK,UAC9C,KAAK,YAAc,GAAU,EAAK,GAClC,KAAK,YAAc,GAAU,EAAQ,GACrC,KAAK,YAAc,EAAQ,EAC3B,KAAK,YAAc,EAAQ,EAE7B,aAAa,EAAI,EAAI,EAAI,EAAI,CAC3B,IAAM,EAAS,KAAK,aAAc,EAAS,KAAK,aAAc,EAAS,KAAK,UAAW,EAAK,EAAK,EAAQ,EAAK,EAAK,EAAQ,EAAK,KAAK,YAAa,EAAK,KAAK,YAAa,EAAK,KAAK,YAAa,EAAK,KAAK,YAAa,GAAM,EAAK,IAAO,EAAK,GAAK,EAAK,EAAK,EAAI,EAAM,EAAK,EACtQ,EAAK,CAAC,EAAK,EAAM,EAAI,EAAK,EAAK,EAAK,EACpC,GAAM,EAAI,GAAM,GAAO,KAAO,EAAI,GAAM,GAAM,IAAO,GAAM,EAAK,EAChE,GAAM,GAAK,GAAM,GAAO,IAAM,GAAM,EAAK,GAAM,EAC/C,EAAK,EAAK,EAAM,EAAK,EAC3B,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAChC,EAAO,GAAM,EAAK,EAAO,EAAK,GAAM,EAAK,EAAO,EAAK,GAAM,EAAK,EAAO,EAAK,GAAM,EAAK,EAAO,EAAK,GAErG,OAAO,IAGX,GAAoB,cAAc,EAAY,CAC5C,YAAY,EAAoB,EAAc,EAAY,EAAc,CACtE,MAAM,EAAoB,EAAc,EAAY,EAAa,CAEnE,aAAa,EAAI,EAAI,EAAI,EAAI,CAC3B,IAAM,EAAS,KAAK,aAAc,EAAS,KAAK,aAAc,EAAS,KAAK,UAAW,EAAU,EAAK,EAAQ,EAAU,EAAU,EAAQ,GAAW,EAAK,IAAO,EAAK,GAAK,EAAU,EAAI,EACzL,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAChC,EAAO,GAAM,EAAO,EAAU,GAAM,EAAU,EAAO,EAAU,GAAM,EAEvE,OAAO,IAGX,GAAsB,cAAc,EAAY,CAC9C,YAAY,EAAoB,EAAc,EAAY,EAAc,CACtE,MAAM,EAAoB,EAAc,EAAY,EAAa,CAEnE,aAAa,EAAI,CACf,OAAO,KAAK,iBAAiB,EAAK,EAAE,GAGxC,GAAgB,KAAM,CACpB,YAAY,EAAM,EAAO,EAAQ,EAAe,CAC9C,GAAI,IAAS,IAAK,GAAG,MAAU,MAAM,+CAA+C,CACpF,GAAI,IAAU,IAAK,IAAK,EAAM,SAAW,EAAG,MAAU,MAAM,oDAAsD,EAAK,CACvH,KAAK,KAAO,EACZ,KAAK,MAAQ,GAAa,EAAO,KAAK,eAAe,CACrD,KAAK,OAAS,GAAa,EAAQ,KAAK,gBAAgB,CACxD,KAAK,iBAAiB,GAAiB,KAAK,qBAAqB,CAInE,OAAO,OAAO,EAAO,CACnB,IAAM,EAAY,EAAM,YACpB,EACJ,GAAI,EAAU,SAAW,KAAK,OAC5B,EAAO,EAAU,OAAO,EAAM,KACzB,CACL,EAAO,CACL,KAAQ,EAAM,KACd,MAAS,GAAa,EAAM,MAAO,MAAM,CACzC,OAAU,GAAa,EAAM,OAAQ,MAAM,CAC5C,CACD,IAAM,EAAgB,EAAM,kBAAkB,CAC1C,IAAkB,EAAM,uBAC1B,EAAK,cAAgB,GAIzB,MADA,GAAK,KAAO,EAAM,cACX,EAET,iCAAiC,EAAQ,CACvC,OAAO,IAAI,GAAoB,KAAK,MAAO,KAAK,OAAQ,KAAK,cAAc,CAAE,EAAO,CAEtF,+BAA+B,EAAQ,CACrC,OAAO,IAAI,GAAkB,KAAK,MAAO,KAAK,OAAQ,KAAK,cAAc,CAAE,EAAO,CAEpF,+BAA+B,EAAQ,CACrC,OAAO,IAAI,GAAiB,KAAK,MAAO,KAAK,OAAQ,KAAK,cAAc,CAAE,EAAO,CAEnF,iBAAiB,EAAe,CAC9B,IAAI,EACJ,OAAQ,EAAR,CACE,KAAK,GACH,EAAgB,KAAK,iCACrB,MACF,KAAK,GACH,EAAgB,KAAK,+BACrB,MACF,KAAK,GACH,EAAgB,KAAK,+BACrB,MAEJ,GAAI,IAAkB,IAAK,GAAG,CAC5B,IAAM,EAAU,iCAAmC,KAAK,cAAgB,yBAA2B,KAAK,KACxG,GAAI,KAAK,oBAAsB,IAAK,GAClC,GAAI,IAAkB,KAAK,qBACzB,KAAK,iBAAiB,KAAK,qBAAqB,MAEhD,MAAU,MAAM,EAAQ,CAI5B,OADA,QAAQ,KAAK,uBAAwB,EAAQ,CACtC,KAGT,MADA,MAAK,kBAAoB,EAClB,KAET,kBAAmB,CACjB,OAAQ,KAAK,kBAAb,CACE,KAAK,KAAK,iCACR,OAAO,GACT,KAAK,KAAK,+BACR,OAAO,GACT,KAAK,KAAK,+BACR,OAAO,IAGb,cAAe,CACb,OAAO,KAAK,OAAO,OAAS,KAAK,MAAM,OAGzC,MAAM,EAAY,CAChB,GAAI,IAAe,EAAG,CACpB,IAAM,EAAQ,KAAK,MACnB,IAAK,IAAI,EAAK,EAAGX,EAAI,EAAM,OAAQ,IAAOA,EAAG,EAAE,EAC7C,EAAM,IAAO,EAGjB,OAAO,KAGT,MAAM,EAAW,CACf,GAAI,IAAc,EAAG,CACnB,IAAM,EAAQ,KAAK,MACnB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAM,OAAQ,IAAOA,EAAG,EAAE,EAC7C,EAAM,IAAO,EAGjB,OAAO,KAIT,KAAK,EAAW,EAAS,CACvB,IAAM,EAAQ,KAAK,MAAO,EAAQ,EAAM,OACpC,EAAO,EAAG,EAAK,EAAQ,EAC3B,KAAO,IAAS,GAAS,EAAM,GAAQ,GACrC,EAAE,EAEJ,KAAO,IAAO,IAAM,EAAM,GAAM,GAC9B,EAAE,EAGJ,GADA,EAAE,EACE,IAAS,GAAK,IAAO,EAAO,CAC1B,GAAQ,IACV,EAAK,KAAK,IAAI,EAAI,EAAE,CACpB,EAAO,EAAK,GAEd,IAAM,EAAS,KAAK,cAAc,CAClC,KAAK,MAAQ,EAAM,MAAM,EAAM,EAAG,CAClC,KAAK,OAAS,KAAK,OAAO,MAAM,EAAO,EAAQ,EAAK,EAAO,CAE7D,OAAO,KAGT,UAAW,CACT,IAAI,EAAQ,GACN,EAAY,KAAK,cAAc,CACjC,EAAY,KAAK,MAAM,EAAU,GAAK,IACxC,QAAQ,MAAM,oDAAqD,KAAK,CACxE,EAAQ,IAEV,IAAM,EAAQ,KAAK,MAAO,EAAS,KAAK,OAAQ,EAAQ,EAAM,OAC1D,IAAU,IACZ,QAAQ,MAAM,uCAAwC,KAAK,CAC3D,EAAQ,IAEV,IAAI,EAAW,KACf,IAAK,IAAI,EAAK,EAAG,IAAO,EAAO,IAAM,CACnC,IAAM,EAAW,EAAM,GACvB,GAAI,OAAO,GAAa,UAAY,MAAM,EAAS,CAAE,CACnD,QAAQ,MAAM,mDAAoD,KAAM,EAAI,EAAS,CACrF,EAAQ,GACR,MAEF,GAAI,IAAa,MAAQ,EAAW,EAAU,CAC5C,QAAQ,MAAM,0CAA2C,KAAM,EAAI,EAAU,EAAS,CACtF,EAAQ,GACR,MAEF,EAAW,EAEb,GAAI,IAAW,IAAK,IACd,GAAa,EAAO,CACtB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAO,OAAQ,IAAOA,EAAG,EAAE,EAAI,CAClD,IAAM,EAAQ,EAAO,GACrB,GAAI,MAAM,EAAM,CAAE,CAChB,QAAQ,MAAM,oDAAqD,KAAM,EAAI,EAAM,CACnF,EAAQ,GACR,OAKR,OAAO,EAIT,UAAW,CACT,IAAM,EAAQ,KAAK,MAAM,OAAO,CAAE,EAAS,KAAK,OAAO,OAAO,CAAE,EAAS,KAAK,cAAc,CAAE,EAAsB,KAAK,kBAAkB,GAAK,GAAmB,EAAY,EAAM,OAAS,EAC1L,EAAa,EACjB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAW,EAAE,EAAI,CACrC,IAAI,EAAO,GACLQ,EAAO,EAAM,GAEnB,GAAIA,IADa,EAAM,EAAK,KACF,IAAO,GAAKA,IAAS,EAAM,IACnD,GAAK,EAUH,EAAO,OAViB,CACxB,IAAM,EAAS,EAAK,EAAQ,EAAU,EAAS,EAAQ,EAAU,EAAS,EAC1E,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAAI,CACpC,IAAM,EAAQ,EAAO,EAAS,GAC9B,GAAI,IAAU,EAAO,EAAU,IAAO,IAAU,EAAO,EAAU,GAAK,CACpE,EAAO,GACP,QAOR,GAAI,EAAM,CACR,GAAI,IAAO,EAAY,CACrB,EAAM,GAAc,EAAM,GAC1B,IAAM,EAAa,EAAK,EAAQ,EAAc,EAAa,EAC3D,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAChC,EAAO,EAAc,GAAM,EAAO,EAAa,GAGnD,EAAE,GAGN,GAAI,EAAY,EAAG,CACjB,EAAM,GAAc,EAAM,GAC1B,IAAK,IAAI,EAAa,EAAY,EAAQ,EAAc,EAAa,EAAQ,EAAK,EAAG,IAAO,EAAQ,EAAE,EACpG,EAAO,EAAc,GAAM,EAAO,EAAa,GAEjD,EAAE,EASJ,OAPI,IAAe,EAAM,QAIvB,KAAK,MAAQ,EACb,KAAK,OAAS,IAJd,KAAK,MAAQ,EAAM,MAAM,EAAG,EAAW,CACvC,KAAK,OAAS,EAAO,MAAM,EAAG,EAAa,EAAO,EAK7C,KAET,OAAQ,CACN,IAAM,EAAQ,KAAK,MAAM,OAAO,CAC1B,EAAS,KAAK,OAAO,OAAO,CAC5B,EAAqB,KAAK,YAC1B,EAAQ,IAAI,EAAmB,KAAK,KAAM,EAAO,EAAO,CAE9D,MADA,GAAM,kBAAoB,KAAK,kBACxB,IAGX,GAAc,UAAU,eAAiB,aACzC,GAAc,UAAU,gBAAkB,aAC1C,GAAc,UAAU,qBAAuB,GAC/C,GAAuB,cAAc,EAAc,CAEjD,YAAY,EAAM,EAAO,EAAQ,CAC/B,MAAM,EAAM,EAAO,EAAO,GAG9B,GAAqB,UAAU,cAAgB,OAC/C,GAAqB,UAAU,gBAAkB,MACjD,GAAqB,UAAU,qBAAuB,GACtD,GAAqB,UAAU,+BAAiC,IAAK,GACrE,GAAqB,UAAU,+BAAiC,IAAK,GACrE,GAAqB,cAAc,EAAc,GAEjD,GAAmB,UAAU,cAAgB,QAC7C,GAAsB,cAAc,EAAc,GAElD,GAAoB,UAAU,cAAgB,SAC9C,GAA8B,cAAc,EAAY,CACtD,YAAY,EAAoB,EAAc,EAAY,EAAc,CACtE,MAAM,EAAoB,EAAc,EAAY,EAAa,CAEnE,aAAa,EAAI,EAAI,EAAI,EAAI,CAC3B,IAAM,EAAS,KAAK,aAAc,EAAS,KAAK,aAAc,EAAS,KAAK,UAAW,GAAS,EAAK,IAAO,EAAK,GAC7G,EAAS,EAAK,EAClB,IAAK,IAAI,EAAM,EAAS,EAAQ,IAAW,EAAK,GAAU,EACxD,GAAW,UAAU,EAAQ,EAAG,EAAQ,EAAS,EAAQ,EAAQ,EAAQ,EAAM,CAEjF,OAAO,IAGX,GAA0B,cAAc,EAAc,CACpD,+BAA+B,EAAQ,CACrC,OAAO,IAAI,GAA4B,KAAK,MAAO,KAAK,OAAQ,KAAK,cAAc,CAAE,EAAO,GAGhG,GAAwB,UAAU,cAAgB,aAClD,GAAwB,UAAU,+BAAiC,IAAK,GACxE,GAAsB,cAAc,EAAc,CAEhD,YAAY,EAAM,EAAO,EAAQ,CAC/B,MAAM,EAAM,EAAO,EAAO,GAG9B,GAAoB,UAAU,cAAgB,SAC9C,GAAoB,UAAU,gBAAkB,MAChD,GAAoB,UAAU,qBAAuB,GACrD,GAAoB,UAAU,+BAAiC,IAAK,GACpE,GAAoB,UAAU,+BAAiC,IAAK,GACpE,GAAsB,cAAc,EAAc,GAElD,GAAoB,UAAU,cAAgB,SAC9C,GAAgB,KAAM,CACpB,YAAY,EAAO,GAAI,EAAW,GAAI,EAAS,EAAE,CAAE,EAAY,GAA0B,CACvF,KAAK,KAAO,EACZ,KAAK,OAAS,EACd,KAAK,SAAW,EAChB,KAAK,UAAY,EACjB,KAAK,KAAO,IAAc,CACtB,KAAK,SAAW,GAClB,KAAK,eAAe,CAGxB,OAAO,MAAM,EAAM,CACjB,IAAM,EAAS,EAAE,CAAE,EAAa,EAAK,OAAQ,EAAY,GAAK,EAAK,KAAO,GAC1E,IAAK,IAAI,EAAK,EAAGR,EAAI,EAAW,OAAQ,IAAOA,EAAG,EAAE,EAClD,EAAO,KAAK,GAAmB,EAAW,GAAI,CAAC,MAAM,EAAU,CAAC,CAElE,IAAM,EAAO,IAAI,KAAK,EAAK,KAAM,EAAK,SAAU,EAAQ,EAAK,UAAU,CAEvE,MADA,GAAK,KAAO,EAAK,KACV,EAET,OAAO,OAAO,EAAM,CAClB,IAAM,EAAS,EAAE,CAAE,EAAa,EAAK,OAC/B,EAAO,CACX,KAAQ,EAAK,KACb,SAAY,EAAK,SACjB,OAAU,EACV,KAAQ,EAAK,KACb,UAAa,EAAK,UACnB,CACD,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAW,OAAQ,IAAOA,EAAG,EAAE,EAClD,EAAO,KAAK,GAAc,OAAO,EAAW,GAAI,CAAC,CAEnD,OAAO,EAET,OAAO,8BAA8B,EAAM,EAAqB,EAAK,EAAQ,CAC3E,IAAM,EAAkB,EAAoB,OACtC,EAAS,EAAE,CACjB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAiB,IAAM,CAC3C,IAAI,EAAQ,EAAE,CACV,EAAS,EAAE,CACf,EAAM,MACH,EAAK,EAAkB,GAAK,EAC7B,GACC,EAAK,GAAK,EACZ,CACD,EAAO,KAAK,EAAG,EAAG,EAAE,CACpB,IAAM,EAAQ,GAAiB,EAAM,CACrC,EAAQ,GAAY,EAAO,EAAG,EAAM,CACpC,EAAS,GAAY,EAAQ,EAAG,EAAM,CAClC,CAAC,GAAU,EAAM,KAAO,IAC1B,EAAM,KAAK,EAAgB,CAC3B,EAAO,KAAK,EAAO,GAAG,EAExB,EAAO,KACL,IAAI,GACF,0BAA4B,EAAoB,GAAI,KAAO,IAC3D,EACA,EACD,CAAC,MAAM,EAAI,EAAI,CACjB,CAEH,OAAO,IAAI,KAAK,EAAM,GAAI,EAAO,CAEnC,OAAO,WAAW,EAAmB,EAAM,CACzC,IAAI,EAAY,EAChB,GAAI,CAAC,MAAM,QAAQ,EAAkB,CAAE,CACrC,IAAMoC,EAAI,EACV,EAAYA,EAAE,UAAYA,EAAE,SAAS,YAAcA,EAAE,WAEvD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAU,OAAQ,IACtC,GAAI,EAAU,GAAI,OAAS,EACzB,OAAO,EAAU,GAGrB,OAAO,KAET,OAAO,oCAAoC,EAAc,EAAK,EAAQ,CACpE,IAAM,EAA0B,EAAE,CAC5B,EAAU,qBAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAa,OAAQ,EAAK,EAAI,IAAM,CACxD,IAAM,EAAc,EAAa,GAC3B,EAAQ,EAAY,KAAK,MAAM,EAAQ,CAC7C,GAAI,GAAS,EAAM,OAAS,EAAG,CAC7B,IAAM,EAAO,EAAM,GACf,EAAwB,EAAwB,GAC/C,IACH,EAAwB,GAAQ,EAAwB,EAAE,EAE5D,EAAsB,KAAK,EAAY,EAG3C,IAAM,EAAQ,EAAE,CAChB,IAAK,IAAM,KAAQ,EACjB,EAAM,KAAK,KAAK,8BAA8B,EAAM,EAAwB,GAAO,EAAK,EAAO,CAAC,CAElG,OAAO,EAGT,OAAO,eAAe,EAAW,EAAO,CACtC,GAAI,CAAC,EAEH,OADA,QAAQ,MAAM,wDAAwD,CAC/D,KAET,IAAM,EAAmB,SAAS,EAAW,EAAW,EAAe,EAAc,EAAY,CAC/F,GAAI,EAAc,SAAW,EAAG,CAC9B,IAAM,EAAQ,EAAE,CACV,EAAS,EAAE,CACjB,GAAY,EAAe,EAAO,EAAQ,EAAa,CACnD,EAAM,SAAW,GACnB,EAAW,KAAK,IAAI,EAAU,EAAW,EAAO,EAAO,CAAC,GAIxD,EAAS,EAAE,CACX,EAAW,EAAU,MAAQ,UAC7B,EAAM,EAAU,KAAO,GACvB,EAAY,EAAU,UACxB,EAAW,EAAU,QAAU,GAC7B,EAAkB,EAAU,WAAa,EAAE,CACjD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAgB,OAAQ,IAAM,CAClD,IAAM,EAAgB,EAAgB,GAAI,KACtC,MAAC,GAAiB,EAAc,SAAW,GAC/C,GAAI,EAAc,GAAG,aAAc,CACjC,IAAM,EAAmB,EAAE,CACvB,EACJ,IAAK,EAAK,EAAG,EAAK,EAAc,OAAQ,IACtC,GAAI,EAAc,GAAI,aACpB,IAAK,IAAInC,EAAI,EAAGA,EAAI,EAAc,GAAI,aAAa,OAAQ,IACzD,EAAiB,EAAc,GAAI,aAAaA,IAAM,GAI5D,IAAK,IAAM,KAAmB,EAAkB,CAC9C,IAAM,EAAQ,EAAE,CACV,EAAS,EAAE,CACjB,IAAK,IAAIA,EAAI,EAAGA,IAAM,EAAc,GAAI,aAAa,OAAQ,EAAEA,EAAG,CAChE,IAAM,EAAe,EAAc,GACnC,EAAM,KAAK,EAAa,KAAK,CAC7B,EAAO,KAAK,EAAa,cAAgB,EAAkB,EAAI,EAAE,CAEnE,EAAO,KAAK,IAAI,GAAoB,yBAA2B,EAAkB,IAAK,EAAO,EAAO,CAAC,CAEvG,EAAW,EAAiB,OAAS,MAChC,CACL,IAAM,EAAW,UAAY,EAAM,GAAI,KAAO,IAC9C,EACE,GACA,EAAW,YACX,EACA,MACA,EACD,CACD,EACE,GACA,EAAW,cACX,EACA,MACA,EACD,CACD,EACE,GACA,EAAW,SACX,EACA,MACA,EACD,EAOL,OAJI,EAAO,SAAW,EACb,KAEI,IAAI,KAAK,EAAU,EAAU,EAAQ,EAAU,CAG9D,eAAgB,CACd,IAAM,EAAS,KAAK,OAChB,EAAW,EACf,IAAK,IAAI,EAAK,EAAGD,EAAI,EAAO,OAAQ,IAAOA,EAAG,EAAE,EAAI,CAClD,IAAM,EAAQ,KAAK,OAAO,GAC1B,EAAW,KAAK,IAAI,EAAU,EAAM,MAAM,EAAM,MAAM,OAAS,GAAG,CAGpE,MADA,MAAK,SAAW,EACT,KAET,MAAO,CACL,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,OAAO,OAAQ,IACxC,KAAK,OAAO,GAAI,KAAK,EAAG,KAAK,SAAS,CAExC,OAAO,KAET,UAAW,CACT,IAAI,EAAQ,GACZ,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,OAAO,OAAQ,IACxC,IAAiB,KAAK,OAAO,GAAI,UAAU,CAE7C,OAAO,EAET,UAAW,CACT,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,OAAO,OAAQ,IACxC,KAAK,OAAO,GAAI,UAAU,CAE5B,OAAO,KAET,OAAQ,CACN,IAAM,EAAS,EAAE,CACjB,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,OAAO,OAAQ,IACxC,EAAO,KAAK,KAAK,OAAO,GAAI,OAAO,CAAC,CAEtC,OAAO,IAAI,KAAK,YAAY,KAAK,KAAM,KAAK,SAAU,EAAQ,KAAK,UAAU,CAE/E,QAAS,CACP,OAAO,KAAK,YAAY,OAAO,KAAK,GAGxC,GAAQ,CACN,QAAS,GACT,MAAO,EAAE,CACT,IAAK,SAAS,EAAK,EAAM,CACnB,KAAK,UAAY,KACrB,KAAK,MAAM,GAAO,IAEpB,IAAK,SAAS,EAAK,CACb,QAAK,UAAY,GACrB,OAAO,KAAK,MAAM,IAEpB,OAAQ,SAAS,EAAK,CACpB,OAAO,KAAK,MAAM,IAEpB,MAAO,UAAW,CAChB,KAAK,MAAQ,EAAE,EAElB,CACD,GAAiB,KAAM,CACrB,YAAY,EAAQ,EAAY,EAAS,CACvC,IAAM,EAAQ,KACV,EAAY,GACZ,EAAc,EACd,EAAa,EACb,EACE,EAAW,EAAE,CACnB,KAAK,QAAU,IAAK,GACpB,KAAK,OAAS,EACd,KAAK,WAAa,EAClB,KAAK,QAAU,EACf,KAAK,UAAY,SAAS,EAAK,CAC7B,IACI,IAAc,IACZ,EAAM,UAAY,IAAK,IACzB,EAAM,QAAQ,EAAK,EAAa,EAAW,CAG/C,EAAY,IAEd,KAAK,QAAU,SAAS,EAAK,CAC3B,IACI,EAAM,aAAe,IAAK,IAC5B,EAAM,WAAW,EAAK,EAAa,EAAW,CAE5C,IAAgB,IAClB,EAAY,GACR,EAAM,SAAW,IAAK,IACxB,EAAM,QAAQ,GAIpB,KAAK,UAAY,SAAS,EAAK,CACzB,EAAM,UAAY,IAAK,IACzB,EAAM,QAAQ,EAAI,EAGtB,KAAK,WAAa,SAAS,EAAK,CAI9B,OAHI,EACK,EAAY,EAAI,CAElB,GAET,KAAK,eAAiB,SAAS,EAAW,CAExC,MADA,GAAcoG,EACP,MAET,KAAK,WAAa,SAAS,EAAO,EAAQ,CAExC,OADA,EAAS,KAAK,EAAO,EAAO,CACrB,MAET,KAAK,cAAgB,SAAS,EAAO,CACnC,IAAM,EAAQ,EAAS,QAAQ,EAAM,CAIrC,OAHI,IAAU,IACZ,EAAS,OAAO,EAAO,EAAE,CAEpB,MAET,KAAK,WAAa,SAAS,EAAM,CAC/B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,OAAQ,EAAK,EAAI,GAAM,EAAG,CACvD,IAAM,EAAQ,EAAS,GACjB,EAAS,EAAS,EAAK,GAE7B,GADI,EAAM,SAAQ,EAAM,UAAY,GAChC,EAAM,KAAK,EAAK,CAClB,OAAO,EAGX,OAAO,QAIb,GAAwC,IAAI,GAC5C,GAAS,KAAM,CACb,YAAY,EAAS,CACnB,KAAK,QAAU,IAAY,IAAK,GAAc,GAAV,EACpC,KAAK,YAAc,YACnB,KAAK,gBAAkB,GACvB,KAAK,KAAO,GACZ,KAAK,aAAe,GACpB,KAAK,cAAgB,EAAE,CAEzB,MAAO,EAEP,UAAU,EAAK,EAAY,CACzB,IAAM,EAAQ,KACd,OAAO,IAAI,QAAQ,SAAS,EAAU,EAAQ,CAC5C,EAAM,KAAK,EAAK,EAAU,EAAY,EAAO,EAC7C,CAEJ,OAAQ,EAER,eAAe,EAAa,CAE1B,MADA,MAAK,YAAc,EACZ,KAET,mBAAmB,EAAO,CAExB,MADA,MAAK,gBAAkB,EAChB,KAET,QAAQ,EAAM,CAEZ,MADA,MAAK,KAAO,EACL,KAET,gBAAgB,EAAc,CAE5B,MADA,MAAK,aAAe,EACb,KAET,iBAAiB,EAAe,CAE9B,MADA,MAAK,cAAgB,EACd,OAGX,GAAO,sBAAwB,YAC/B,GAAU,EAAE,CACZ,GAAY,cAAc,KAAM,CAC9B,YAAY,EAAS,EAAU,CAC7B,MAAM,EAAQ,CACd,KAAK,SAAW,IAGpB,GAAa,cAAc,EAAO,CAChC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACjC,IAAQ,IAAK,KAAG,EAAM,IACtB,KAAK,OAAS,IAAK,KAAG,EAAM,KAAK,KAAO,GAC5C,EAAM,KAAK,QAAQ,WAAW,EAAI,CAClC,IAAM,EAAS,GAAM,IAAI,EAAI,CAC7B,GAAI,IAAW,IAAK,GAMlB,OALA,KAAK,QAAQ,UAAU,EAAI,CAC3B,eAAiB,CACX,GAAQ,EAAO,EAAO,CAC1B,KAAK,QAAQ,QAAQ,EAAI,EACxB,EAAE,CACE,EAET,GAAI,GAAQ,KAAS,IAAK,GAAG,CAC3B,GAAQ,GAAK,KAAK,CAChB,SACA,aACA,UACD,CAAC,CACF,OAEF,GAAQ,GAAO,EAAE,CACjB,GAAQ,GAAK,KAAK,CAChB,SACA,aACA,UACD,CAAC,CACF,IAAM,EAAM,IAAI,QAAQ,EAAK,CAC3B,QAAS,IAAI,QAAQ,KAAK,cAAc,CACxC,YAAa,KAAK,gBAAkB,UAAY,cAEjD,CAAC,CACI,EAAW,KAAK,SAChB,EAAe,KAAK,aAC1B,MAAM,EAAI,CAAC,KAAM,GAAa,CAC5B,GAAI,EAAS,SAAW,KAAO,EAAS,SAAW,EAAG,CAIpD,GAHI,EAAS,SAAW,GACtB,QAAQ,KAAK,4CAA4C,CAEvD,OAAO,eAAmB,KAAe,EAAS,OAAS,IAAK,IAAK,EAAS,KAAK,YAAc,IAAK,GACxG,OAAO,EAET,IAAM,EAAY,GAAQ,GACpB,EAAS,EAAS,KAAK,WAAW,CAClC,EAAgB,EAAS,QAAQ,IAAI,cAAc,EAAI,EAAS,QAAQ,IAAI,iBAAiB,CAC7F,EAAQ,EAAgB,SAAS,EAAc,CAAG,EAClD,EAAmB,IAAU,EAC/B,EAAS,EACP,EAAS,IAAI,eAAe,CAChC,MAAM,EAAY,CAChB,GAAU,CACV,SAAS,GAAW,CAClB,EAAO,MAAM,CAAC,MAAM,CAAE,OAAM,WAAY,CACtC,GAAI,EACF,EAAW,OAAO,KACb,CACL,GAAU,EAAM,WAChB,IAAM,EAAQ,IAAI,cAAc,WAAY,CAAE,mBAAkB,SAAQ,QAAO,CAAC,CAChF,IAAK,IAAI,EAAK,EAAG,EAAK,EAAU,OAAQ,EAAK,EAAI,IAAM,CACrD,IAAM,EAAW,EAAU,GACvB,EAAS,YAAY,EAAS,WAAW,EAAM,CAErD,EAAW,QAAQ,EAAM,CACzB,GAAU,GAEV,GAAM,CACR,EAAW,MAAM7F,EAAE,EACnB,GAGP,CAAC,CACF,OAAO,IAAI,SAAS,EAAO,MAE3B,MAAM,IAAI,GAAU,cAAc,EAAS,IAAI,mBAAmB,EAAS,OAAO,IAAI,EAAS,aAAc,EAAS,EAExH,CAAC,KAAM,GAAa,CACpB,OAAQ,EAAR,CACE,IAAK,cACH,OAAO,EAAS,aAAa,CAC/B,IAAK,OACH,OAAO,EAAS,MAAM,CACxB,IAAK,WACH,OAAO,EAAS,MAAM,CAAC,KAAM,GACZ,IAAI,WAAW,CAChB,gBAAgB,EAAM,EAAS,CAC7C,CACJ,IAAK,OACH,OAAO,EAAS,MAAM,CACxB,QACE,GAAI,IAAa,IAAK,GACpB,OAAO,EAAS,MAAM,CACjB,CAEL,IAAM,EADK,0BACK,KAAK,EAAS,CACxB,EAAQ,GAAQ,EAAK,GAAK,EAAK,GAAG,aAAa,CAAG,IAAK,GACvD,EAAU,IAAI,YAAY,EAAM,CACtC,OAAO,EAAS,aAAa,CAAC,KAAM,GAAO,EAAQ,OAAO,EAAG,CAAC,IAGpE,CAAC,KAAM,GAAS,CAChB,GAAM,IAAI,EAAK,EAAK,CACpB,IAAM,EAAY,GAAQ,GAC1B,OAAO,GAAQ,GACf,IAAK,IAAI,EAAK,EAAG,EAAK,EAAU,OAAQ,EAAK,EAAI,IAAM,CACrD,IAAM,EAAW,EAAU,GACvB,EAAS,QAAQ,EAAS,OAAO,EAAK,GAE5C,CAAC,MAAO,GAAQ,CAChB,IAAM,EAAY,GAAQ,GAC1B,GAAI,IAAc,IAAK,GAErB,MADA,KAAK,QAAQ,UAAU,EAAI,CACrB,EAER,OAAO,GAAQ,GACf,IAAK,IAAI,EAAK,EAAG,EAAK,EAAU,OAAQ,EAAK,EAAI,IAAM,CACrD,IAAM,EAAW,EAAU,GACvB,EAAS,SAAS,EAAS,QAAQ,EAAI,CAE7C,KAAK,QAAQ,UAAU,EAAI,EAC3B,CAAC,YAAc,CACf,KAAK,QAAQ,QAAQ,EAAI,EACzB,CACF,KAAK,QAAQ,UAAU,EAAI,CAE7B,gBAAgB,EAAO,CAErB,MADA,MAAK,aAAe,EACb,KAET,YAAY,EAAO,CAEjB,MADA,MAAK,SAAW,EACT,OAGX,GAAkB,cAAc,EAAO,CACrC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAS,IAAI,GAAW,KAAK,QAAQ,CAC3C,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,iBAAiB,KAAK,cAAc,CAC3C,EAAO,mBAAmB,KAAK,gBAAgB,CAC/C,EAAO,KAAK,EAAK,SAAS,EAAM,CAC9B,GAAI,CACF,EAAO,EAAM,MAAM,KAAK,MAAM,EAAK,CAAC,CAAC,OAC9BA,EAAG,CACN,EACF,EAAQA,EAAE,CAEV,QAAQ,MAAMA,EAAE,CAElB,EAAM,QAAQ,UAAU,EAAI,GAE7B,EAAY,EAAQ,CAEzB,MAAM,EAAM,CACV,IAAM,EAAa,EAAE,CACrB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,IAAM,CACvC,IAAM,EAAO,GAAc,MAAM,EAAK,GAAI,CAC1C,EAAW,KAAK,EAAK,CAEvB,OAAO,IAGX,GAA0B,cAAc,EAAO,CAC7C,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAS,EAAE,CACX,EAAU,IAAI,GACd,EAAS,IAAI,GAAW,KAAK,QAAQ,CAC3C,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,gBAAgB,cAAc,CACrC,EAAO,iBAAiB,KAAK,cAAc,CAC3C,EAAO,mBAAmB,EAAM,gBAAgB,CAChD,IAAI,EAAS,EACb,SAAS,EAAY,EAAI,CACvB,EAAO,KAAK,EAAI,GAAK,SAAS,EAAQ,CACpC,IAAM,EAAW,EAAM,MAAM,EAAQ,GAAK,CAC1C,EAAO,GAAM,CACX,MAAO,EAAS,MAChB,OAAQ,EAAS,OACjB,OAAQ,EAAS,OACjB,QAAS,EAAS,QACnB,CACD,GAAU,EACN,IAAW,IACT,EAAS,cAAgB,IAAG,EAAQ,UAAY,IACpD,EAAQ,MAAQ,EAChB,EAAQ,OAAS,EAAS,OAC1B,EAAQ,YAAc,GAClB,GAAQ,EAAO,EAAQ,GAE5B,EAAY,EAAQ,CAEzB,GAAI,MAAM,QAAQ,EAAI,CACpB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,OAAQ,EAAK,EAAI,EAAE,EAC3C,EAAY,EAAG,MAGjB,EAAO,KAAK,EAAK,SAAS,EAAQ,CAChC,IAAM,EAAW,EAAM,MAAM,EAAQ,GAAK,CAC1C,GAAI,EAAS,UAAW,CACtB,IAAM,EAAQ,EAAS,QAAQ,OAAS,EAAS,YACjD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,IAAM,CACjC,EAAO,GAAM,CAAE,QAAS,EAAE,CAAE,CAC5B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,YAAa,IAC1C,EAAO,GAAI,QAAQ,KAAK,EAAS,QAAQ,EAAK,EAAS,YAAc,GAAI,CACzE,EAAO,GAAI,OAAS,EAAS,OAC7B,EAAO,GAAI,MAAQ,EAAS,MAC5B,EAAO,GAAI,OAAS,EAAS,OAGjC,EAAQ,MAAQ,OAEhB,EAAQ,MAAM,MAAQ,EAAS,MAC/B,EAAQ,MAAM,OAAS,EAAS,OAChC,EAAQ,QAAU,EAAS,QAEzB,EAAS,cAAgB,IAC3B,EAAQ,UAAY,IAEtB,EAAQ,OAAS,EAAS,OAC1B,EAAQ,YAAc,GAClB,GAAQ,EAAO,EAAQ,EAC1B,EAAY,EAAQ,CAEzB,OAAO,IAGX,GAAc,cAAc,EAAO,CACjC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACjC,KAAK,OAAS,IAAK,KAAG,EAAM,KAAK,KAAO,GAC5C,EAAM,KAAK,QAAQ,WAAW,EAAI,CAClC,IAAM,EAAQ,KACR,EAAS,GAAM,IAAI,EAAI,CAC7B,GAAI,IAAW,IAAK,GAMlB,OALA,EAAM,QAAQ,UAAU,EAAI,CAC5B,WAAW,UAAW,CAChB,GAAQ,EAAO,EAAO,CAC1B,EAAM,QAAQ,QAAQ,EAAI,EACzB,EAAE,CACE,EAET,IAAM,EAAQ,GAAgB,MAAM,CACpC,SAAS,GAAc,CACrB,GAAsB,CACtB,GAAM,IAAI,EAAK,KAAK,CAChB,GAAQ,EAAO,KAAK,CACxB,EAAM,QAAQ,QAAQ,EAAI,CAE5B,SAAS,EAAa,EAAO,CAC3B,GAAsB,CAClB,GAAS,EAAQ,EAAM,CAC3B,EAAM,QAAQ,UAAU,EAAI,CAC5B,EAAM,QAAQ,QAAQ,EAAI,CAE5B,SAAS,GAAuB,CAC9B,EAAM,oBAAoB,OAAQ,EAAa,GAAM,CACrD,EAAM,oBAAoB,QAAS,EAAc,GAAM,CASzD,OAPA,EAAM,iBAAiB,OAAQ,EAAa,GAAM,CAClD,EAAM,iBAAiB,QAAS,EAAc,GAAM,CAChD,EAAI,MAAM,EAAG,EAAE,GAAK,SAClB,KAAK,cAAgB,IAAK,KAAG,EAAM,YAAc,KAAK,aAE5D,EAAM,QAAQ,UAAU,EAAI,CAC5B,EAAM,IAAM,EACL,IAGX,GAAoB,cAAc,EAAO,CACvC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAM,EAAQ,EAAY,EAAS,CACtC,IAAM,EAAU,IAAI,GACpB,EAAQ,WAAa,GACrB,IAAM,EAAS,IAAI,GAAY,KAAK,QAAQ,CAC5C,EAAO,eAAe,KAAK,YAAY,CACvC,EAAO,QAAQ,KAAK,KAAK,CACzB,IAAI,EAAS,EACb,SAAS,EAAY,EAAI,CACvB,EAAO,KAAK,EAAK,GAAK,SAAS,EAAO,CACpC,EAAQ,OAAO,GAAM,EACrB,IACI,IAAW,IACb,EAAQ,YAAc,GAClB,GAAQ,EAAO,EAAQ,GAE5B,IAAK,GAAG,EAAQ,CAErB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAE,EACnC,EAAY,EAAG,CAEjB,OAAO,IAGX,GAAoB,cAAc,EAAO,CACvC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAU,IAAI,GACd,EAAS,IAAI,GAAW,KAAK,QAAQ,CAsD3C,OArDA,EAAO,gBAAgB,cAAc,CACrC,EAAO,iBAAiB,KAAK,cAAc,CAC3C,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,mBAAmB,EAAM,gBAAgB,CAChD,EAAO,KAAK,EAAK,SAAS,EAAQ,CAChC,IAAI,EACJ,GAAI,CACF,EAAU,EAAM,MAAM,EAAO,OACtB,EAAQ,CACf,GAAI,IAAY,IAAK,GACnB,EAAQ,EAAO,KACV,CACL,QAAQ,MAAM,EAAO,CACrB,QAGA,EAAQ,QAAU,IAAK,GAEhB,EAAQ,OAAS,IAAK,KAC/B,EAAQ,MAAM,MAAQ,EAAQ,MAC9B,EAAQ,MAAM,OAAS,EAAQ,OAC/B,EAAQ,MAAM,KAAO,EAAQ,MAJ7B,EAAQ,MAAQ,EAAQ,MAM1B,EAAQ,MAAQ,EAAQ,QAAU,IAAK,GAAoB,GAAhB,EAAQ,MACnD,EAAQ,MAAQ,EAAQ,QAAU,IAAK,GAAoB,GAAhB,EAAQ,MACnD,EAAQ,UAAY,EAAQ,YAAc,IAAK,GAAwB,GAApB,EAAQ,UAC3D,EAAQ,UAAY,EAAQ,YAAc,IAAK,GAAwB,GAApB,EAAQ,UAC3D,EAAQ,WAAa,EAAQ,aAAe,IAAK,GAAyB,EAArB,EAAQ,WACzD,EAAQ,aAAe,IAAK,KAC9B,EAAQ,WAAa,EAAQ,YAE3B,EAAQ,QAAU,IAAK,KACzB,EAAQ,MAAQ,EAAQ,OAEtB,EAAQ,SAAW,IAAK,KAC1B,EAAQ,OAAS,EAAQ,QAEvB,EAAQ,OAAS,IAAK,KACxB,EAAQ,KAAO,EAAQ,MAErB,EAAQ,UAAY,IAAK,KAC3B,EAAQ,QAAU,EAAQ,QAC1B,EAAQ,UAAY,IAElB,EAAQ,cAAgB,IAC1B,EAAQ,UAAY,IAElB,EAAQ,kBAAoB,IAAK,KACnC,EAAQ,gBAAkB,EAAQ,iBAEpC,EAAQ,YAAc,GAClB,GAAQ,EAAO,EAAS,EAAQ,EACnC,EAAY,EAAQ,CAChB,IAGX,GAAgB,cAAc,EAAO,CACnC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAU,IAAI,GACd,EAAS,IAAI,GAAY,KAAK,QAAQ,CAU5C,OATA,EAAO,eAAe,KAAK,YAAY,CACvC,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,KAAK,EAAK,SAAS,EAAO,CAC/B,EAAQ,MAAQ,EAChB,EAAQ,YAAc,GAClB,IAAW,IAAK,IAClB,EAAO,EAAQ,EAEhB,EAAY,EAAQ,CAChB,IAGX,GAAQ,cAAc,EAAS,CAC7B,YAAY,EAAO,EAAY,EAAG,CAChC,OAAO,CACP,KAAK,QAAU,GACf,KAAK,KAAO,QACZ,KAAK,MAAQ,IAAII,EAAMb,EAAM,CAC7B,KAAK,UAAY,EAEnB,SAAU,EAEV,KAAK,EAAQ,EAAW,CAItB,OAHA,MAAM,KAAK,EAAQ,EAAU,CAC7B,KAAK,MAAM,KAAK,EAAO,MAAM,CAC7B,KAAK,UAAY,EAAO,UACjB,KAET,OAAO,EAAM,CACX,IAAM,EAAO,MAAM,OAAO,EAAK,CAU/B,MATA,GAAK,OAAO,MAAQ,KAAK,MAAM,QAAQ,CACvC,EAAK,OAAO,UAAY,KAAK,UACzB,KAAK,cAAgB,IAAK,KAAG,EAAK,OAAO,YAAc,KAAK,YAAY,QAAQ,EAChF,KAAK,WAAa,IAAK,KAAG,EAAK,OAAO,SAAW,KAAK,UACtD,KAAK,QAAU,IAAK,KAAG,EAAK,OAAO,MAAQ,KAAK,OAChD,KAAK,QAAU,IAAK,KAAG,EAAK,OAAO,MAAQ,KAAK,OAChD,KAAK,WAAa,IAAK,KAAG,EAAK,OAAO,SAAW,KAAK,UACtD,KAAK,SAAW,IAAK,KAAG,EAAK,OAAO,OAAS,KAAK,OAAO,QAAQ,EACjE,KAAK,SAAW,IAAK,KAAG,EAAK,OAAO,OAAS,KAAK,OAAO,MACtD,IAGX,GAAkB,cAAc,EAAM,CACpC,YAAY,EAAU,EAAa,EAAW,CAC5C,MAAM,EAAU,EAAU,CAC1B,KAAK,kBAAoB,GACzB,KAAK,KAAO,kBACZ,KAAK,SAAS,KAAK,GAAS,WAAW,CACvC,KAAK,cAAc,CACnB,KAAK,YAAc,IAAIa,EAAM,EAAY,CAE3C,KAAK,EAAQ,EAAW,CAGtB,OAFA,MAAM,KAAK,EAAQ,EAAU,CAC7B,KAAK,YAAY,KAAK,EAAO,YAAY,CAClC,OAGX,GAAsC,IAAI,GAC1C,GAAwC,IAAI,EAC5C,GAAgC,IAAI,EACpC,GAAc,KAAM,CAClB,YAAY,EAAQ,CAClB,KAAK,OAAS,EACd,KAAK,UAAY,EACjB,KAAK,KAAO,EACZ,KAAK,WAAa,EAClB,KAAK,OAAS,EACd,KAAK,YAAc,EACnB,KAAK,QAAU,IAAI,EAAQ,IAAK,IAAI,CACpC,KAAK,IAAM,KACX,KAAK,QAAU,KACf,KAAK,OAAS,IAAI,GAClB,KAAK,WAAa,GAClB,KAAK,YAAc,GACnB,KAAK,SAAW,IAAI,GACpB,KAAK,cAAgB,IAAI,EAAQ,EAAG,EAAE,CACtC,KAAK,eAAiB,EACtB,KAAK,WAAa,CAChB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CACxB,CAEH,kBAAmB,CACjB,OAAO,KAAK,eAEd,YAAa,CACX,OAAO,KAAK,SAEd,eAAe,EAAO,CACpB,IAAM,EAAe,KAAK,OACpB,EAAe,KAAK,OAC1B,GAAsB,sBAAsB,EAAM,YAAY,CAC9D,EAAa,SAAS,KAAK,GAAsB,CACjD,GAAc,sBAAsB,EAAM,OAAO,YAAY,CAC7D,EAAa,OAAO,GAAc,CAClC,EAAa,mBAAmB,CAChC,GAAoB,iBAAiB,EAAa,iBAAkB,EAAa,mBAAmB,CACpG,KAAK,SAAS,wBAAwB,GAAoB,CAC1D,EAAa,IACX,GACA,EACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACD,CACD,EAAa,SAAS,GAAoB,CAE5C,YAAY,EAAe,CACzB,OAAO,KAAK,WAAW,GAEzB,iBAAkB,CAChB,OAAO,KAAK,cAEd,SAAU,CACJ,KAAK,KACP,KAAK,IAAI,SAAS,CAEhB,KAAK,SACP,KAAK,QAAQ,SAAS,CAG1B,KAAK,EAAQ,CAMX,MALA,MAAK,OAAS,EAAO,OAAO,OAAO,CACnC,KAAK,UAAY,EAAO,UACxB,KAAK,KAAO,EAAO,KACnB,KAAK,OAAS,EAAO,OACrB,KAAK,QAAQ,KAAK,EAAO,QAAQ,CAC1B,KAET,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,CAE1C,QAAS,CACP,IAAM,EAAS,EAAE,CAQjB,OAPI,KAAK,YAAc,IAAG,EAAO,UAAY,KAAK,WAC9C,KAAK,OAAS,IAAG,EAAO,KAAO,KAAK,MACpC,KAAK,aAAe,IAAG,EAAO,WAAa,KAAK,YAChD,KAAK,SAAW,IAAG,EAAO,OAAS,KAAK,SACxC,KAAK,QAAQ,IAAM,KAAO,KAAK,QAAQ,IAAM,OAAK,EAAO,QAAU,KAAK,QAAQ,SAAS,EAC7F,EAAO,OAAS,KAAK,OAAO,OAAO,GAAM,CAAC,OAC1C,OAAO,EAAO,OAAO,OACd,IAGX,GAAkB,cAAc,EAAY,CAC1C,aAAc,CACZ,MAAM,IAAI,GAAkB,GAAI,EAAG,GAAK,IAAI,CAAC,CAC7C,KAAK,kBAAoB,GACzB,KAAK,MAAQ,EAEf,eAAe,EAAO,CACpB,IAAM,EAAS,KAAK,OACd,EAAO,GAAU,EAAI,EAAM,MAAQ,KAAK,MACxC,EAAU,KAAK,QAAQ,MAAQ,KAAK,QAAQ,OAC5C,EAAM,EAAM,UAAY,EAAO,KACjC,IAAS,EAAO,KAAO,IAAY,EAAO,QAAU,IAAQ,EAAO,OACrE,EAAO,IAAM,EACb,EAAO,OAAS,EAChB,EAAO,IAAM,EACb,EAAO,wBAAwB,EAEjC,MAAM,eAAe,EAAM,CAE7B,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAQ,EAAO,MACb,OAGX,GAAY,cAAc,EAAM,CAC9B,YAAY,EAAO,EAAW,EAAW,EAAG,EAAQ,KAAK,GAAK,EAAG,EAAW,EAAG,EAAQ,EAAG,CACxF,MAAMb,EAAO,EAAU,CACvB,KAAK,YAAc,GACnB,KAAK,KAAO,YACZ,KAAK,SAAS,KAAK,GAAS,WAAW,CACvC,KAAK,cAAc,CACnB,KAAK,OAAS,IAAI,GAClB,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,IAAM,KACX,KAAK,OAAS,IAAI,GAEpB,IAAI,OAAQ,CACV,OAAO,KAAK,UAAY,KAAK,GAE/B,IAAI,MAAM,EAAO,CACf,KAAK,UAAY,EAAQ,KAAK,GAEhC,SAAU,CACR,KAAK,OAAO,SAAS,CAEvB,KAAK,EAAQ,EAAW,CAQtB,OAPA,MAAM,KAAK,EAAQ,EAAU,CAC7B,KAAK,SAAW,EAAO,SACvB,KAAK,MAAQ,EAAO,MACpB,KAAK,SAAW,EAAO,SACvB,KAAK,MAAQ,EAAO,MACpB,KAAK,OAAS,EAAO,OAAO,OAAO,CACnC,KAAK,OAAS,EAAO,OAAO,OAAO,CAC5B,OAGX,GAAoC,IAAI,GACxC,GAAsC,IAAI,EAC1C,GAA8B,IAAI,EAClC,GAAmB,cAAc,EAAY,CAC3C,aAAc,CACZ,MAAM,IAAI,GAAkB,GAAI,EAAG,GAAK,IAAI,CAAC,CAC7C,KAAK,mBAAqB,GAC1B,KAAK,cAAgB,IAAI,EAAQ,EAAG,EAAE,CACtC,KAAK,eAAiB,EACtB,KAAK,WAAa,CAchB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CAEvB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CAEvB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CAEvB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CAEvB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CAEvB,IAAI,GAAQ,EAAG,EAAG,EAAG,EAAE,CACxB,CACD,KAAK,gBAAkB,CACrB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,GAAI,EAAG,EAAE,CACrB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,EAAG,GAAG,CACrB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,GAAI,EAAE,CACtB,CACD,KAAK,SAAW,CACd,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,EAAG,EAAE,CACpB,IAAI,EAAQ,EAAG,EAAG,GAAG,CACtB,CAEH,eAAe,EAAO,EAAgB,EAAG,CACvC,IAAM,EAAS,KAAK,OACd,EAAe,KAAK,OACpB,EAAM,EAAM,UAAY,EAAO,IACjC,IAAQ,EAAO,MACjB,EAAO,IAAM,EACb,EAAO,wBAAwB,EAEjC,GAAoB,sBAAsB,EAAM,YAAY,CAC5D,EAAO,SAAS,KAAK,GAAoB,CACzC,GAAY,KAAK,EAAO,SAAS,CACjC,GAAY,IAAI,KAAK,gBAAgB,GAAe,CACpD,EAAO,GAAG,KAAK,KAAK,SAAS,GAAe,CAC5C,EAAO,OAAO,GAAY,CAC1B,EAAO,mBAAmB,CAC1B,EAAa,gBAAgB,CAAC,GAAoB,EAAG,CAAC,GAAoB,EAAG,CAAC,GAAoB,EAAE,CACpG,GAAkB,iBAAiB,EAAO,iBAAkB,EAAO,mBAAmB,CACtF,KAAK,SAAS,wBAAwB,GAAkB,GAG5D,GAAa,cAAc,EAAM,CAC/B,YAAY,EAAO,EAAW,EAAW,EAAG,EAAQ,EAAG,CACrD,MAAMA,EAAO,EAAU,CACvB,KAAK,aAAe,GACpB,KAAK,KAAO,aACZ,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,OAAS,IAAI,GAEpB,IAAI,OAAQ,CACV,OAAO,KAAK,UAAY,EAAI,KAAK,GAEnC,IAAI,MAAM,EAAO,CACf,KAAK,UAAY,GAAS,EAAI,KAAK,IAErC,SAAU,CACR,KAAK,OAAO,SAAS,CAEvB,KAAK,EAAQ,EAAW,CAKtB,OAJA,MAAM,KAAK,EAAQ,EAAU,CAC7B,KAAK,SAAW,EAAO,SACvB,KAAK,MAAQ,EAAO,MACpB,KAAK,OAAS,EAAO,OAAO,OAAO,CAC5B,OAGX,GAAyB,cAAc,EAAY,CACjD,aAAc,CACZ,MAAM,IAAI,GAAmB,GAAI,EAAG,EAAG,GAAI,GAAK,IAAI,CAAC,CACrD,KAAK,yBAA2B,KAGpC,GAAmB,cAAc,EAAM,CACrC,YAAY,EAAO,EAAW,CAC5B,MAAMA,EAAO,EAAU,CACvB,KAAK,mBAAqB,GAC1B,KAAK,KAAO,mBACZ,KAAK,SAAS,KAAK,GAAS,WAAW,CACvC,KAAK,cAAc,CACnB,KAAK,OAAS,IAAI,GAClB,KAAK,OAAS,IAAI,GAEpB,SAAU,CACR,KAAK,OAAO,SAAS,CAEvB,KAAK,EAAQ,CAIX,OAHA,MAAM,KAAK,EAAO,CAClB,KAAK,OAAS,EAAO,OAAO,OAAO,CACnC,KAAK,OAAS,EAAO,OAAO,OAAO,CAC5B,OAGX,GAAe,cAAc,EAAM,CACjC,YAAY,EAAO,EAAW,CAC5B,MAAMA,EAAO,EAAU,CACvB,KAAK,eAAiB,GACtB,KAAK,KAAO,iBAGhB,GAAgB,cAAc,EAAM,CAClC,YAAY,EAAO,EAAW,EAAQ,GAAI,EAAS,GAAI,CACrD,MAAMA,EAAO,EAAU,CACvB,KAAK,gBAAkB,GACvB,KAAK,KAAO,gBACZ,KAAK,MAAQ,EACb,KAAK,OAAS,EAEhB,IAAI,OAAQ,CACV,OAAO,KAAK,UAAY,KAAK,MAAQ,KAAK,OAAS,KAAK,GAE1D,IAAI,MAAM,EAAO,CACf,KAAK,UAAY,GAAS,KAAK,MAAQ,KAAK,OAAS,KAAK,IAE5D,KAAK,EAAQ,CAIX,OAHA,MAAM,KAAK,EAAO,CAClB,KAAK,MAAQ,EAAO,MACpB,KAAK,OAAS,EAAO,OACd,KAET,OAAO,EAAM,CACX,IAAM,EAAO,MAAM,OAAO,EAAK,CAG/B,MAFA,GAAK,OAAO,MAAQ,KAAK,MACzB,EAAK,OAAO,OAAS,KAAK,OACnB,IAGX,GAAsB,KAAM,CAC1B,aAAc,CACZ,KAAK,sBAAwB,GAC7B,KAAK,aAAe,EAAE,CACtB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,KAAK,IAAI,EAAU,CAGzC,IAAI,EAAc,CAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,GAAI,KAAK,EAAa,GAAI,CAE9C,OAAO,KAET,MAAO,CACL,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,GAAI,IAAI,EAAG,EAAG,EAAE,CAEpC,OAAO,KAIT,MAAM,EAAQ,EAAS,CACrB,IAAMI,EAAI,EAAO,EAAG,EAAK,EAAO,EAAG,EAAK,EAAO,EACzC,EAAQ,KAAK,aAUnB,OATA,EAAQ,KAAK,EAAM,GAAG,CAAC,eAAe,QAAS,CAC/C,EAAQ,gBAAgB,EAAM,GAAI,QAAW,EAAG,CAChD,EAAQ,gBAAgB,EAAM,GAAI,QAAW,EAAG,CAChD,EAAQ,gBAAgB,EAAM,GAAI,QAAWA,EAAE,CAC/C,EAAQ,gBAAgB,EAAM,GAAgBA,EAAI,EAAhB,SAAoB,CACtD,EAAQ,gBAAgB,EAAM,GAAgB,EAAK,EAAjB,SAAqB,CACvD,EAAQ,gBAAgB,EAAM,GAAI,SAAY,EAAI,EAAK,EAAK,GAAG,CAC/D,EAAQ,gBAAgB,EAAM,GAAgBA,EAAI,EAAhB,SAAoB,CACtD,EAAQ,gBAAgB,EAAM,GAAI,SAAYA,EAAIA,EAAI,EAAK,GAAI,CACxD,EAKT,gBAAgB,EAAQ,EAAS,CAC/B,IAAMA,EAAI,EAAO,EAAG,EAAK,EAAO,EAAG,EAAK,EAAO,EACzC,EAAQ,KAAK,aAUnB,OATA,EAAQ,KAAK,EAAM,GAAG,CAAC,eAAe,QAAS,CAC/C,EAAQ,gBAAgB,EAAM,GAAI,EAAI,QAAW,EAAG,CACpD,EAAQ,gBAAgB,EAAM,GAAI,EAAI,QAAW,EAAG,CACpD,EAAQ,gBAAgB,EAAM,GAAI,EAAI,QAAWA,EAAE,CACnD,EAAQ,gBAAgB,EAAM,GAAI,EAAI,QAAWA,EAAI,EAAG,CACxD,EAAQ,gBAAgB,EAAM,GAAI,EAAI,QAAW,EAAK,EAAG,CACzD,EAAQ,gBAAgB,EAAM,GAAI,QAAW,EAAK,EAAK,QAAS,CAChE,EAAQ,gBAAgB,EAAM,GAAI,EAAI,QAAWA,EAAI,EAAG,CACxD,EAAQ,gBAAgB,EAAM,GAAI,SAAYA,EAAIA,EAAI,EAAK,GAAI,CACxD,EAET,IAAI,EAAI,CACN,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,GAAI,IAAI,EAAG,aAAa,GAAI,CAEhD,OAAO,KAET,YAAY,EAAI,EAAG,CACjB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,GAAI,gBAAgB,EAAG,aAAa,GAAKC,EAAE,CAE/D,OAAO,KAET,MAAM,EAAG,CACP,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,GAAI,eAAeA,EAAE,CAEzC,OAAO,KAET,KAAK,EAAI,EAAO,CACd,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,aAAa,GAAI,KAAK,EAAG,aAAa,GAAK,EAAM,CAExD,OAAO,KAET,OAAO,EAAI,CACT,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,GAAI,CAAC,KAAK,aAAa,GAAI,OAAO,EAAG,aAAa,GAAI,CACpD,MAAO,GAGX,MAAO,GAET,KAAK,EAAI,CACP,OAAO,KAAK,IAAI,EAAG,aAAa,CAElC,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,CAE1C,UAAU,EAAO,EAAS,EAAG,CAC3B,IAAM,EAAe,KAAK,aAC1B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,EAAa,GAAI,UAAU,EAAO,EAAS,EAAK,EAAE,CAEpD,OAAO,KAET,QAAQ,EAAQ,EAAE,CAAE,EAAS,EAAG,CAC9B,IAAM,EAAe,KAAK,aAC1B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,EAAa,GAAI,QAAQ,EAAO,EAAS,EAAK,EAAE,CAElD,OAAO,EAIT,OAAO,WAAW,EAAQ,EAAS,CACjC,IAAMD,EAAI,EAAO,EAAG,EAAK,EAAO,EAAG,EAAK,EAAO,EAC/C,EAAQ,GAAK,QACb,EAAQ,GAAK,QAAW,EACxB,EAAQ,GAAK,QAAW,EACxB,EAAQ,GAAK,QAAWA,EACxB,EAAQ,GAAK,SAAWA,EAAI,EAC5B,EAAQ,GAAK,SAAW,EAAK,EAC7B,EAAQ,GAAK,SAAY,EAAI,EAAK,EAAK,GACvC,EAAQ,GAAK,SAAWA,EAAI,EAC5B,EAAQ,GAAK,SAAYA,EAAIA,EAAI,EAAK,KAG1C,GAAa,cAAc,EAAM,CAC/B,YAAY,EAAK,IAAI,GAAuB,EAAY,EAAG,CACzD,MAAM,IAAK,GAAG,EAAU,CACxB,KAAK,aAAe,GACpB,KAAK,GAAK,EAEZ,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,GAAG,KAAK,EAAO,GAAG,CAChB,KAET,SAAS,EAAM,CAGb,MAFA,MAAK,UAAY,EAAK,UACtB,KAAK,GAAG,UAAU,EAAK,GAAG,CACnB,KAET,OAAO,EAAM,CACX,IAAM,EAAO,MAAM,OAAO,EAAK,CAE/B,MADA,GAAK,OAAO,GAAK,KAAK,GAAG,SAAS,CAC3B,IAGX,GAAiB,MAAM,UAAwB,EAAO,CACpD,YAAY,EAAS,CACnB,MAAM,EAAQ,CACd,KAAK,SAAW,EAAE,CAEpB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAS,IAAI,GAAW,EAAM,QAAQ,CAC5C,EAAO,QAAQ,EAAM,KAAK,CAC1B,EAAO,iBAAiB,EAAM,cAAc,CAC5C,EAAO,mBAAmB,EAAM,gBAAgB,CAChD,EAAO,KAAK,EAAK,SAAS,EAAM,CAC9B,GAAI,CACF,EAAO,EAAM,MAAM,KAAK,MAAM,EAAK,CAAC,CAAC,OAC9BK,EAAG,CACN,EACF,EAAQA,EAAE,CAEV,QAAQ,MAAMA,EAAE,CAElB,EAAM,QAAQ,UAAU,EAAI,GAE7B,EAAY,EAAQ,CAEzB,MAAM,EAAM,CACV,IAAM,EAAW,KAAK,SACtB,SAAS,EAAW,EAAM,CAIxB,OAHI,EAAS,KAAU,IAAK,IAC1B,QAAQ,KAAK,0CAA2C,EAAK,CAExD,EAAS,GAElB,IAAM,EAAW,KAAK,uBAAuB,EAAK,KAAK,CAkFvD,GAjFI,EAAK,OAAS,IAAK,KAAG,EAAS,KAAO,EAAK,MAC3C,EAAK,OAAS,IAAK,KAAG,EAAS,KAAO,EAAK,MAC3C,EAAK,QAAU,IAAK,IAAK,EAAS,QAAU,IAAK,IAAG,EAAS,MAAM,OAAO,EAAK,MAAM,CACrF,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,QAAU,IAAK,KAAG,EAAS,MAAQ,EAAK,OAC7C,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,IAAII,GAAO,CAAC,OAAO,EAAK,WAAW,EACrF,EAAK,iBAAmB,IAAK,KAAG,EAAS,eAAiB,EAAK,gBAC/D,EAAK,WAAa,IAAK,IAAK,EAAS,WAAa,IAAK,IAAG,EAAS,SAAS,OAAO,EAAK,SAAS,CACjG,EAAK,WAAa,IAAK,IAAK,EAAS,WAAa,IAAK,IAAG,EAAS,SAAS,OAAO,EAAK,SAAS,CACjG,EAAK,oBAAsB,IAAK,KAAG,EAAS,kBAAoB,EAAK,mBACrE,EAAK,gBAAkB,IAAK,IAAK,EAAS,gBAAkB,IAAK,IAAG,EAAS,cAAc,OAAO,EAAK,cAAc,CACrH,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAK,oBACvE,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAK,aACzD,EAAK,iBAAmB,IAAK,KAAG,EAAS,eAAiB,EAAK,gBAC/D,EAAK,4BAA8B,IAAK,KAAG,EAAS,0BAA4B,EAAK,2BACrF,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAK,cAC3D,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,sBAAwB,IAAK,KAAG,EAAS,oBAAsB,EAAK,qBACzE,EAAK,mBAAqB,IAAK,IAAK,EAAS,mBAAqB,IAAK,IAAG,EAAS,iBAAiB,OAAO,EAAK,iBAAiB,CACjI,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAK,oBACvE,EAAK,MAAQ,IAAK,KAAG,EAAS,IAAM,EAAK,KACzC,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAK,aACzD,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,UAAY,IAAK,KAAG,EAAS,QAAU,EAAK,SACjD,EAAK,OAAS,IAAK,KAAG,EAAS,KAAO,EAAK,MAC3C,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,UAAY,IAAK,KAAG,EAAS,QAAU,EAAK,SACjD,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAK,aACzD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAK,eAC7D,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAK,eAC7D,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAK,eAC7D,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAK,oBACvE,EAAK,aAAe,IAAK,IAAK,EAAS,aAAe,IAAK,IAAG,EAAS,WAAW,OAAO,EAAK,WAAW,CACzG,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,mBAAqB,IAAK,KAAG,EAAS,iBAAmB,EAAK,kBACnE,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAK,aACzD,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAK,iBACjE,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAK,aACzD,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAK,cAC3D,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAK,cAC3D,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAK,cAC3D,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAK,oBACvE,EAAK,mBAAqB,IAAK,KAAG,EAAS,iBAAmB,EAAK,kBACnE,EAAK,oBAAsB,IAAK,KAAG,EAAS,kBAAoB,EAAK,mBACrE,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,UAAY,IAAK,KAAG,EAAS,QAAU,EAAK,SACjD,EAAK,QAAU,IAAK,KAAG,EAAS,MAAQ,EAAK,OAC7C,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAK,eAC7D,EAAK,sBAAwB,IAAK,KAAG,EAAS,oBAAsB,EAAK,qBACzE,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAK,oBACvE,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAK,iBACjE,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAK,oBACvE,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAK,iBACjE,EAAK,UAAY,IAAK,KAAG,EAAS,QAAU,EAAK,SACjD,EAAK,aAAe,IAAK,KAAG,EAAS,WAAa,EAAK,YACvD,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,eAAiB,IAAK,KACzB,OAAO,EAAK,cAAiB,SAC/B,EAAS,aAAe,EAAK,aAAe,EAE5C,EAAS,aAAe,EAAK,cAG7B,EAAK,WAAa,IAAK,GACzB,IAAK,IAAM,KAAQ,EAAK,SAAU,CAChC,IAAM,EAAU,EAAK,SAAS,GAE9B,OADA,EAAS,SAAS,GAAQ,EAAE,CACpB,EAAQ,KAAhB,CACE,IAAK,IACH,EAAS,SAAS,GAAM,MAAQ,EAAW,EAAQ,MAAM,CACzD,MACF,IAAK,IACH,EAAS,SAAS,GAAM,MAAQ,IAAIA,GAAO,CAAC,OAAO,EAAQ,MAAM,CACjE,MACF,IAAK,KACH,EAAS,SAAS,GAAM,MAAQ,IAAI,GAAS,CAAC,UAAU,EAAQ,MAAM,CACtE,MACF,IAAK,KACH,EAAS,SAAS,GAAM,MAAQ,IAAI,GAAS,CAAC,UAAU,EAAQ,MAAM,CACtE,MACF,IAAK,KACH,EAAS,SAAS,GAAM,MAAQ,IAAI,IAAS,CAAC,UAAU,EAAQ,MAAM,CACtE,MACF,IAAK,KACH,EAAS,SAAS,GAAM,MAAQ,IAAI,IAAS,CAAC,UAAU,EAAQ,MAAM,CACtE,MACF,IAAK,KACH,EAAS,SAAS,GAAM,MAAQ,IAAI,IAAS,CAAC,UAAU,EAAQ,MAAM,CACtE,MACF,QACE,EAAS,SAAS,GAAM,MAAQ,EAAQ,OAQhD,GAJI,EAAK,UAAY,IAAK,KAAG,EAAS,QAAU,EAAK,SACjD,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAK,cAC3D,EAAK,iBAAmB,IAAK,KAAG,EAAS,eAAiB,EAAK,gBAC/D,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAK,aACzD,EAAK,aAAe,IAAK,GAC3B,IAAK,IAAM,KAAO,EAAK,WACrB,EAAS,WAAW,GAAO,EAAK,WAAW,GAc/C,GAXI,EAAK,SAAW,IAAK,KAAG,EAAS,OAAS,EAAK,QAC/C,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACnD,EAAK,OAAS,IAAK,KAAG,EAAS,KAAO,EAAK,MAC3C,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAK,iBACjE,EAAK,MAAQ,IAAK,KAAG,EAAS,IAAM,EAAW,EAAK,IAAI,EACxD,EAAK,SAAW,IAAK,KAAG,EAAS,OAAS,EAAW,EAAK,OAAO,EACjE,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAW,EAAK,SAAS,EACvE,EAAK,UAAY,IAAK,KAAG,EAAS,QAAU,EAAW,EAAK,QAAQ,EACpE,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAK,WACrD,EAAK,YAAc,IAAK,KAAG,EAAS,UAAY,EAAW,EAAK,UAAU,EAC1E,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAK,eAC7D,EAAK,cAAgB,IAAK,GAAG,CAC/B,IAAI,EAAc,EAAK,YACnB,MAAM,QAAQ,EAAY,GAAK,KACjC,EAAc,CAAC,EAAa,EAAY,EAE1C,EAAS,YAAc,IAAI,GAAS,CAAC,UAAU,EAAY,CAiC7D,OA/BI,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAW,EAAK,gBAAgB,EAC5F,EAAK,oBAAsB,IAAK,KAAG,EAAS,kBAAoB,EAAK,mBACrE,EAAK,mBAAqB,IAAK,KAAG,EAAS,iBAAmB,EAAK,kBACnE,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAW,EAAK,aAAa,EACnF,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAW,EAAK,aAAa,EACnF,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAW,EAAK,YAAY,EAChF,EAAK,oBAAsB,IAAK,KAAG,EAAS,kBAAoB,EAAK,mBACrE,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAW,EAAK,YAAY,EAChF,EAAK,uBAAyB,IAAK,KAAG,EAAS,qBAAuB,EAAW,EAAK,qBAAqB,EAC3G,EAAK,mBAAqB,IAAK,KAAG,EAAS,iBAAmB,EAAW,EAAK,iBAAiB,EAC/F,EAAK,SAAW,IAAK,KAAG,EAAS,OAAS,EAAW,EAAK,OAAO,EACjE,EAAK,iBAAmB,IAAK,IAAG,EAAS,eAAe,UAAU,EAAK,eAAe,CACtF,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAK,iBACjE,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAK,cAC3D,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAK,iBACjE,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAW,EAAK,SAAS,EACvE,EAAK,oBAAsB,IAAK,KAAG,EAAS,kBAAoB,EAAK,mBACrE,EAAK,QAAU,IAAK,KAAG,EAAS,MAAQ,EAAW,EAAK,MAAM,EAC9D,EAAK,iBAAmB,IAAK,KAAG,EAAS,eAAiB,EAAK,gBAC/D,EAAK,cAAgB,IAAK,KAAG,EAAS,YAAc,EAAW,EAAK,YAAY,EAChF,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAW,EAAK,aAAa,EACnF,EAAK,wBAA0B,IAAK,KAAG,EAAS,sBAAwB,EAAW,EAAK,sBAAsB,EAC9G,EAAK,qBAAuB,IAAK,KAAG,EAAS,mBAAqB,EAAW,EAAK,mBAAmB,EACrG,EAAK,uBAAyB,IAAK,KAAG,EAAS,qBAAuB,IAAI,GAAS,CAAC,UAAU,EAAK,qBAAqB,EACxH,EAAK,iBAAmB,IAAK,KAAG,EAAS,eAAiB,EAAW,EAAK,eAAe,EACzF,EAAK,0BAA4B,IAAK,KAAG,EAAS,wBAA0B,EAAW,EAAK,wBAAwB,EACpH,EAAK,kBAAoB,IAAK,KAAG,EAAS,gBAAkB,EAAW,EAAK,gBAAgB,EAC5F,EAAK,eAAiB,IAAK,KAAG,EAAS,aAAe,EAAW,EAAK,aAAa,EACnF,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAW,EAAK,cAAc,EACtF,EAAK,gBAAkB,IAAK,KAAG,EAAS,cAAgB,EAAW,EAAK,cAAc,EACtF,EAAK,oBAAsB,IAAK,KAAG,EAAS,kBAAoB,EAAW,EAAK,kBAAkB,EAC/F,EAET,YAAY,EAAO,CAEjB,MADA,MAAK,SAAW,EACT,KAET,uBAAuB,EAAM,CAC3B,OAAO,EAAgB,uBAAuB,EAAK,CAErD,OAAO,uBAAuB,EAAM,CAqBlC,OAAO,GApBa,CAClB,kBACA,kBACA,qBACA,kBACA,kBACA,wBACA,wBACA,qBACA,oBACA,sBACA,uBACA,qBACA,wBACA,qBACA,sBACA,sBACA,qBACA,YACD,CACsB,KAG3B,GAAc,KAAM,CAClB,OAAO,WAAW,EAAO,CAEvB,GADA,QAAQ,KAAK,wHAAwH,CACjI,OAAO,YAAgB,IACzB,OAAO,IAAI,aAAa,CAAC,OAAO,EAAM,CAExC,IAAIR,EAAI,GACR,IAAK,IAAI,EAAK,EAAG,EAAK,EAAM,OAAQ,EAAK,EAAI,IAC3C,GAAK,OAAO,aAAa,EAAM,GAAI,CAErC,GAAI,CACF,OAAO,mBAAmB,OAAOA,EAAE,CAAC,MAC1B,CACV,OAAOA,GAGX,OAAO,eAAe,EAAK,CACzB,IAAM,EAAQ,EAAI,YAAY,IAAI,CAElC,OADI,IAAU,GAAW,KAClB,EAAI,MAAM,EAAG,EAAQ,EAAE,CAEhC,OAAO,WAAW,EAAK,EAAM,CAQ3B,OAPI,OAAO,GAAQ,UAAY,IAAQ,GAAW,IAC9C,gBAAgB,KAAK,EAAK,EAAI,MAAM,KAAK,EAAI,GAC/C,EAAO,EAAK,QAAQ,0BAA2B,KAAK,EAElD,mBAAmB,KAAK,EAAI,EAC5B,gBAAgB,KAAK,EAAI,EACzB,aAAa,KAAK,EAAI,CAAS,EAC5B,EAAO,KAGlB,GAA0B,cAAc,EAAe,CACrD,aAAc,CACZ,OAAO,CACP,KAAK,0BAA4B,GACjC,KAAK,KAAO,0BACZ,KAAK,cAAgB,IAEvB,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,cAAgB,EAAO,cACrB,KAET,QAAS,CACP,IAAM,EAAO,MAAM,QAAQ,CAG3B,MAFA,GAAK,cAAgB,KAAK,cAC1B,EAAK,0BAA4B,GAC1B,IAGX,GAAuB,cAAc,EAAO,CAC1C,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAS,IAAI,GAAW,EAAM,QAAQ,CAC5C,EAAO,QAAQ,EAAM,KAAK,CAC1B,EAAO,iBAAiB,EAAM,cAAc,CAC5C,EAAO,mBAAmB,EAAM,gBAAgB,CAChD,EAAO,KAAK,EAAK,SAAS,EAAM,CAC9B,GAAI,CACF,EAAO,EAAM,MAAM,KAAK,MAAM,EAAK,CAAC,CAAC,OAC9BI,EAAG,CACN,EACF,EAAQA,EAAE,CAEV,QAAQ,MAAMA,EAAE,CAElB,EAAM,QAAQ,UAAU,EAAI,GAE7B,EAAY,EAAQ,CAEzB,MAAM,EAAM,CACV,IAAM,EAAuB,EAAE,CACzB,EAAiB,EAAE,CACzB,SAAS,EAAqB,EAAO,EAAM,CACzC,GAAI,EAAqB,KAAU,IAAK,GAAG,OAAO,EAAqB,GAEvE,IAAM,EADqB,EAAM,mBACY,GACvC,EAAS,EAAe,EAAO,EAAkB,OAAO,CACxD,EAAQ,GAAc,EAAkB,KAAM,EAAO,CACrD,EAAK,IAAI,GAAkB,EAAO,EAAkB,OAAO,CAGjE,MAFA,GAAG,KAAO,EAAkB,KAC5B,EAAqB,GAAQ,EACtB,EAET,SAAS,EAAe,EAAO,EAAM,CACnC,GAAI,EAAe,KAAU,IAAK,GAAG,OAAO,EAAe,GAE3D,IAAM,EADe,EAAM,aACM,GAC3B,EAAK,IAAI,YAAY,EAAY,CAAC,OAExC,MADA,GAAe,GAAQ,EAChB,EAET,IAAM,EAAW,EAAK,0BAA4B,IAAI,GAA4B,IAAI,GAChF,EAAQ,EAAK,KAAK,MACxB,GAAI,IAAU,IAAK,GAAG,CACpB,IAAM,EAAa,GAAc,EAAM,KAAM,EAAM,MAAM,CACzD,EAAS,SAAS,IAAI,GAAgB,EAAY,EAAE,CAAC,CAEvD,IAAM,EAAa,EAAK,KAAK,WAC7B,IAAK,IAAM,KAAO,EAAY,CAC5B,IAAM,EAAY,EAAW,GACzB,EACJ,GAAI,EAAU,6BAA8B,CAC1C,IAAM,EAAoB,EAAqB,EAAK,KAAM,EAAU,KAAK,CACzE,EAAkB,IAAI,GAA2B,EAAmB,EAAU,SAAU,EAAU,OAAQ,EAAU,WAAW,KAC1H,CACL,IAAM,EAAa,GAAc,EAAU,KAAM,EAAU,MAAM,CAEjE,EAAkB,IADY,EAAU,2BAA6B,GAA2B,IACpD,EAAY,EAAU,SAAU,EAAU,WAAW,CAE/F,EAAU,OAAS,IAAK,KAAG,EAAgB,KAAO,EAAU,MAC5D,EAAU,QAAU,IAAK,IAAG,EAAgB,SAAS,EAAU,MAAM,CACzE,EAAS,aAAa,EAAK,EAAgB,CAE7C,IAAM,EAAkB,EAAK,KAAK,gBAClC,GAAI,EACF,IAAK,IAAM,KAAO,EAAiB,CACjC,IAAM,EAAiB,EAAgB,GACjC,EAAQ,EAAE,CAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAe,OAAQ,EAAK,EAAI,IAAM,CAC1D,IAAM,EAAY,EAAe,GAC7B,EACJ,GAAI,EAAU,6BAA8B,CAC1C,IAAM,EAAoB,EAAqB,EAAK,KAAM,EAAU,KAAK,CACzE,EAAkB,IAAI,GAA2B,EAAmB,EAAU,SAAU,EAAU,OAAQ,EAAU,WAAW,KAC1H,CACL,IAAM,EAAa,GAAc,EAAU,KAAM,EAAU,MAAM,CACjE,EAAkB,IAAI,GAAgB,EAAY,EAAU,SAAU,EAAU,WAAW,CAEzF,EAAU,OAAS,IAAK,KAAG,EAAgB,KAAO,EAAU,MAChE,EAAM,KAAK,EAAgB,CAE7B,EAAS,gBAAgB,GAAO,EAGP,EAAK,KAAK,uBAErC,EAAS,qBAAuB,IAElC,IAAM,EAAS,EAAK,KAAK,QAAU,EAAK,KAAK,WAAa,EAAK,KAAK,QACpE,GAAI,IAAW,IAAK,GAClB,IAAK,IAAI,EAAK,EAAGP,EAAI,EAAO,OAAQ,IAAOA,EAAG,EAAE,EAAI,CAClD,IAAM,EAAQ,EAAO,GACrB,EAAS,SAAS,EAAM,MAAO,EAAM,MAAO,EAAM,cAAc,CAGpE,IAAM,EAAiB,EAAK,KAAK,eACjC,GAAI,IAAmB,IAAK,GAAG,CAC7B,IAAM,EAAS,IAAI,EACf,EAAe,SAAW,IAAK,IACjC,EAAO,UAAU,EAAe,OAAO,CAEzC,EAAS,eAAiB,IAAI,GAAO,EAAQ,EAAe,OAAO,CAIrE,OAFI,EAAK,OAAM,EAAS,KAAO,EAAK,MAChC,EAAK,WAAU,EAAS,SAAW,EAAK,UACrC,IAGX,GAAe,cAAc,EAAO,CAClC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAO,KAAK,OAAS,GAAK,GAAY,eAAe,EAAI,CAAG,KAAK,KACvE,KAAK,aAAe,KAAK,cAAgB,EACzC,IAAM,EAAS,IAAI,GAAW,KAAK,QAAQ,CAC3C,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,iBAAiB,KAAK,cAAc,CAC3C,EAAO,mBAAmB,KAAK,gBAAgB,CAC/C,EAAO,KAAK,EAAK,SAAS,EAAM,CAC9B,IAAI,EAAO,KACX,GAAI,CACF,EAAO,KAAK,MAAM,EAAK,OAChB,EAAQ,CACX,IAAY,IAAK,IAAG,EAAQ,EAAO,CACvC,QAAQ,MAAM,mCAAqC,EAAM,IAAK,EAAO,QAAQ,CAC7E,OAEF,IAAMqG,EAAW,EAAK,SACtB,GAAIA,IAAa,IAAK,IAAKA,EAAS,OAAS,IAAK,IAAKA,EAAS,KAAK,aAAa,GAAK,WAAY,CAC7F,IAAY,IAAK,IAAG,EAAY,MAAM,kCAAoC,EAAI,CAAC,CACnF,QAAQ,MAAM,kCAAoC,EAAI,CACtD,OAEF,EAAM,MAAM,EAAM,EAAO,EACxB,EAAY,EAAQ,CAEzB,UAAU,EAAK,EAAY,CACzB,OAAOF,GAAQ,KAAM,KAAM,WAAa,CACtC,IAAM,EAAQ,KACR,EAAO,KAAK,OAAS,GAAK,GAAY,eAAe,EAAI,CAAG,KAAK,KACvE,KAAK,aAAe,KAAK,cAAgB,EACzC,IAAM,EAAS,IAAI,GAAW,KAAK,QAAQ,CAC3C,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,iBAAiB,KAAK,cAAc,CAC3C,EAAO,mBAAmB,KAAK,gBAAgB,CAC/C,IAAM,EAAO,MAAM,EAAO,UAAU,EAAK,EAAW,CAC9C,EAAO,KAAK,MAAM,EAAK,CACvBE,EAAW,EAAK,SACtB,GAAIA,IAAa,IAAK,IAAKA,EAAS,OAAS,IAAK,IAAKA,EAAS,KAAK,aAAa,GAAK,WACrF,MAAU,MAAM,kCAAoC,EAAI,CAE1D,OAAO,MAAM,EAAM,WAAW,EAAK,EACnC,CAEJ,MAAM,EAAM,EAAQ,CAClB,IAAM,EAAa,KAAK,gBAAgB,EAAK,WAAW,CAClD,EAAS,KAAK,YAAY,EAAK,OAAO,CACtC,EAAa,KAAK,gBAAgB,EAAK,WAAY,EAAO,CAC1D,EAAS,KAAK,YAAY,EAAK,OAAQ,UAAW,CAClD,IAAW,IAAK,IAAG,EAAO,EAAO,EACrC,CACI,EAAW,KAAK,cAAc,EAAK,SAAU,EAAO,CACpD,EAAY,KAAK,eAAe,EAAK,UAAW,EAAS,CACzD,EAAS,KAAK,YAAY,EAAK,OAAQ,EAAY,EAAW,EAAU,EAAW,CACnF,EAAY,KAAK,eAAe,EAAK,UAAW,EAAO,CAG7D,GAFA,KAAK,cAAc,EAAQ,EAAU,CACrC,KAAK,iBAAiB,EAAO,CACzB,IAAW,IAAK,GAAG,CACrB,IAAI,EAAY,GAChB,IAAK,IAAM,KAAQ,EACjB,GAAI,EAAO,GAAM,gBAAgB,iBAAkB,CACjD,EAAY,GACZ,MAGA,IAAc,IAAO,EAAO,EAAO,CAEzC,OAAO,EAET,WAAW,EAAM,CACf,OAAOF,GAAQ,KAAM,KAAM,WAAa,CACtC,IAAM,EAAa,KAAK,gBAAgB,EAAK,WAAW,CAClD,EAAS,KAAK,YAAY,EAAK,OAAO,CACtC,EAAa,KAAK,gBAAgB,EAAK,WAAY,EAAO,CAC1D,EAAS,MAAM,KAAK,iBAAiB,EAAK,OAAO,CACjD,EAAW,KAAK,cAAc,EAAK,SAAU,EAAO,CACpD,EAAY,KAAK,eAAe,EAAK,UAAW,EAAS,CACzD,EAAS,KAAK,YAAY,EAAK,OAAQ,EAAY,EAAW,EAAU,EAAW,CACnF,EAAY,KAAK,eAAe,EAAK,UAAW,EAAO,CAG7D,OAFA,KAAK,cAAc,EAAQ,EAAU,CACrC,KAAK,iBAAiB,EAAO,CACtB,GACP,CAEJ,YAAY,EAAM,CAChB,IAAM,EAAS,EAAE,CACjB,GAAI,IAAS,IAAK,GAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAQ,IAAI,IAAO,CAAC,SAAS,EAAK,GAAI,CAC5C,EAAO,EAAM,MAAQ,EAGzB,OAAO,EAET,eAAe,EAAM,EAAQ,CAC3B,IAAM,EAAY,EAAE,CACd,EAAQ,EAAE,CAIhB,GAHA,EAAO,SAAS,SAAS,EAAO,CAC1B,EAAM,SAAQ,EAAM,EAAM,MAAQ,IACtC,CACE,IAAS,IAAK,GAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAW,IAAI,IAAU,CAAC,SAAS,EAAK,GAAK,EAAM,CACzD,EAAU,EAAS,MAAQ,EAG/B,OAAO,EAET,gBAAgB,EAAM,EAAQ,CAC5B,IAAM,EAAa,EAAE,CACrB,GAAI,IAAS,IAAK,GAAG,CACnB,IAAM,EAAuB,IAAI,GACjC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAI,EACE,EAAO,EAAK,GAClB,OAAQ,EAAK,KAAb,CACE,IAAK,iBACL,IAAK,0BACH,EAAW,EAAqB,MAAM,EAAK,CAC3C,MACF,QACM,EAAK,QAAQ,GACf,EAAW,GAAW,EAAK,MAAM,SAAS,EAAM,EAAO,CAEvD,QAAQ,KAAK,kDAAkD,EAAK,KAAK,GAAG,CAGlF,EAAS,KAAO,EAAK,KACjB,EAAK,OAAS,IAAK,KAAG,EAAS,KAAO,EAAK,MAC3C,EAAK,WAAa,IAAK,KAAG,EAAS,SAAW,EAAK,UACvD,EAAW,EAAK,MAAQ,GAG5B,OAAO,EAET,eAAe,EAAM,EAAU,CAC7B,IAAM,EAAQ,EAAE,CACV,EAAY,EAAE,CACpB,GAAI,IAAS,IAAK,GAAG,CACnB,IAAM,EAAS,IAAI,GACnB,EAAO,YAAY,EAAS,CAC5B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAO,EAAK,GACd,EAAM,EAAK,QAAU,IAAK,KAC5B,EAAM,EAAK,MAAQ,EAAO,MAAM,EAAK,EAEvC,EAAU,EAAK,MAAQ,EAAM,EAAK,OAGtC,OAAO,EAET,gBAAgB,EAAM,CACpB,IAAM,EAAa,EAAE,CACrB,GAAI,IAAS,IAAK,GAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,IAAM,CACvC,IAAM,EAAO,EAAK,GACZ,EAAO,GAAc,MAAM,EAAK,CACtC,EAAW,EAAK,MAAQ,EAG5B,OAAO,EAET,YAAY,EAAM,EAAQ,CACxB,IAAM,EAAQ,KACR,EAAS,EAAE,CACb,EACJ,SAASG,EAAU,EAAK,CAEtB,OADA,EAAM,QAAQ,UAAU,EAAI,CACrB,EAAO,KAAK,EAAK,UAAW,CACjC,EAAM,QAAQ,QAAQ,EAAI,EACzB,IAAK,GAAG,UAAW,CACpB,EAAM,QAAQ,UAAU,EAAI,CAC5B,EAAM,QAAQ,QAAQ,EAAI,EAC1B,CAEJ,SAAS,EAAiB,EAAO,CAC/B,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAM,EAEZ,OAAOA,EADM,4BAA4B,KAAK,EAAI,CAAG,EAAM,EAAM,aAAe,EAC1D,SAElB,EAAM,KACR,MAAO,CACL,KAAM,GAAc,EAAM,KAAM,EAAM,KAAK,CAC3C,MAAO,EAAM,MACb,OAAQ,EAAM,OACf,MAED,OAAO,KAIb,GAAI,IAAS,IAAK,IAAK,EAAK,OAAS,EAAG,CACtC,IAAM,EAAU,IAAI,GAAe,EAAO,CAC1C,EAAS,IAAI,GAAY,EAAQ,CACjC,EAAO,eAAe,KAAK,YAAY,CACvC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAQ,EAAK,GACb,EAAM,EAAM,IAClB,GAAI,MAAM,QAAQ,EAAI,CAAE,CACtB,IAAM,EAAa,EAAE,CACrB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,OAAQ,EAAK,EAAI,IAAM,CAC/C,IAAM,EAAa,EAAI,GACjB,EAAoB,EAAiB,EAAW,CAClD,IAAsB,OACpB,aAA6B,iBAC/B,EAAW,KAAK,EAAkB,CAElC,EAAW,KAAK,IAAI,GAAY,EAAkB,KAAM,EAAkB,MAAO,EAAkB,OAAO,CAAC,EAIjH,EAAO,EAAM,MAAQ,IAAI,GAAO,EAAW,KACtC,CACL,IAAM,EAAoB,EAAiB,EAAM,IAAI,CACrD,EAAO,EAAM,MAAQ,IAAI,GAAO,EAAkB,GAIxD,OAAO,EAET,iBAAiB,EAAM,CACrB,OAAOH,GAAQ,KAAM,KAAM,WAAa,CACtC,IAAM,EAAQ,KACR,EAAS,EAAE,CACb,EACJ,SAAS,EAAiB,EAAO,CAC/B,OAAOA,GAAQ,KAAM,KAAM,WAAa,CACtC,GAAI,OAAO,GAAU,SAAU,CAC7B,IAAM,EAAM,EACN,EAAO,4BAA4B,KAAK,EAAI,CAAG,EAAM,EAAM,aAAe,EAChF,OAAO,MAAM,EAAO,UAAU,EAAK,SAE/B,EAAM,KACR,MAAO,CACL,KAAM,GAAc,EAAM,KAAM,EAAM,KAAK,CAC3C,MAAO,EAAM,MACb,OAAQ,EAAM,OACf,MAED,OAAO,MAGX,CAEJ,GAAI,IAAS,IAAK,IAAK,EAAK,OAAS,EAAG,CACtC,EAAS,IAAI,GAAY,KAAK,QAAQ,CACtC,EAAO,eAAe,KAAK,YAAY,CACvC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAQ,EAAK,GACb,EAAM,EAAM,IAClB,GAAI,MAAM,QAAQ,EAAI,CAAE,CACtB,IAAM,EAAa,EAAE,CACrB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,OAAQ,EAAK,EAAI,IAAM,CAC/C,IAAM,EAAa,EAAI,GACjB,EAAoB,MAAM,EAAiB,EAAW,CACxD,IAAsB,OACpB,aAA6B,iBAC/B,EAAW,KAAK,EAAkB,CAElC,EAAW,KAAK,IAAI,GAAY,EAAkB,KAAM,EAAkB,MAAO,EAAkB,OAAO,CAAC,EAIjH,EAAO,EAAM,MAAQ,IAAI,GAAO,EAAW,KACtC,CACL,IAAM,EAAoB,MAAM,EAAiB,EAAM,IAAI,CAC3D,EAAO,EAAM,MAAQ,IAAI,GAAO,EAAkB,GAIxD,OAAO,GACP,CAEJ,cAAc,EAAM,EAAQ,CAC1B,SAAS,EAAc,EAAO,EAAM,CAGlC,OAFI,OAAO,GAAU,SAAiB,GACtC,QAAQ,KAAK,uEAAwE,EAAM,CACpF,EAAK,IAEd,IAAM,EAAW,EAAE,CACnB,GAAI,IAAS,IAAK,GAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAO,EAAK,GACd,EAAK,QAAU,IAAK,IACtB,QAAQ,KAAK,+CAAgD,EAAK,KAAK,CAErE,EAAO,EAAK,SAAW,IAAK,IAC9B,QAAQ,KAAK,sCAAuC,EAAK,MAAM,CAEjE,IAAM,EAAS,EAAO,EAAK,OACrB,EAAQ,EAAO,KACjB,EACA,MAAM,QAAQ,EAAM,EACtB,EAAU,IAAI,GACV,EAAM,SAAW,IAAG,EAAQ,YAAc,MAE9C,AAGE,EAHE,GAAS,EAAM,KACP,IAAI,GAEJ,IAAI,GAEZ,IAAO,EAAQ,YAAc,KAEnC,EAAQ,OAAS,EACjB,EAAQ,KAAO,EAAK,KAChB,EAAK,OAAS,IAAK,KAAG,EAAQ,KAAO,EAAK,MAC1C,EAAK,UAAY,IAAK,KAAG,EAAQ,QAAU,EAAc,EAAK,QAAS,GAAgB,EACvF,EAAK,UAAY,IAAK,KAAG,EAAQ,QAAU,EAAK,SAChD,EAAK,SAAW,IAAK,IAAG,EAAQ,OAAO,UAAU,EAAK,OAAO,CAC7D,EAAK,SAAW,IAAK,IAAG,EAAQ,OAAO,UAAU,EAAK,OAAO,CAC7D,EAAK,SAAW,IAAK,IAAG,EAAQ,OAAO,UAAU,EAAK,OAAO,CAC7D,EAAK,WAAa,IAAK,KAAG,EAAQ,SAAW,EAAK,UAClD,EAAK,OAAS,IAAK,KACrB,EAAQ,MAAQ,EAAc,EAAK,KAAK,GAAI,GAAiB,CAC7D,EAAQ,MAAQ,EAAc,EAAK,KAAK,GAAI,GAAiB,EAE3D,EAAK,SAAW,IAAK,KAAG,EAAQ,OAAS,EAAK,QAC9C,EAAK,iBAAmB,IAAK,KAAG,EAAQ,eAAiB,EAAK,gBAC9D,EAAK,OAAS,IAAK,KAAG,EAAQ,KAAO,EAAK,MAC1C,EAAK,aAAe,IAAK,KAAG,EAAQ,WAAa,EAAK,YACtD,EAAK,YAAc,IAAK,KAAG,EAAQ,UAAY,EAAc,EAAK,UAAW,GAAe,EAC5F,EAAK,YAAc,IAAK,KAAG,EAAQ,UAAY,EAAc,EAAK,UAAW,GAAe,EAC5F,EAAK,aAAe,IAAK,KAAG,EAAQ,WAAa,EAAK,YACtD,EAAK,QAAU,IAAK,KAAG,EAAQ,MAAQ,EAAK,OAC5C,EAAK,kBAAoB,IAAK,KAAG,EAAQ,gBAAkB,EAAK,iBAChE,EAAK,mBAAqB,IAAK,KAAG,EAAQ,iBAAmB,EAAK,kBAClE,EAAK,kBAAoB,IAAK,KAAG,EAAQ,gBAAkB,EAAK,iBAChE,EAAK,kBAAoB,IAAK,KAAG,EAAQ,gBAAkB,EAAK,iBAChE,EAAK,WAAa,IAAK,KAAG,EAAQ,SAAW,EAAK,UACtD,EAAS,EAAK,MAAQ,EAG1B,OAAO,EAET,YAAY,EAAM,EAAY,EAAW,EAAU,EAAY,CAC7D,IAAI,EACJ,SAAS,EAAY,EAAM,CAIzB,OAHI,EAAW,KAAU,IAAK,IAC5B,QAAQ,KAAK,yCAA0C,EAAK,CAEvD,EAAW,GAEpB,SAAS,EAAY,EAAM,CACrB,OAAS,IAAK,GAClB,IAAI,MAAM,QAAQ,EAAK,CAAE,CACvB,IAAM,EAAQ,EAAE,CAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,EAAK,EAAI,IAAM,CAChD,IAAM,EAAO,EAAK,GACd,EAAU,KAAU,IAAK,IAC3B,QAAQ,KAAK,yCAA0C,EAAK,CAE9D,EAAM,KAAK,EAAU,GAAM,CAE7B,OAAO,EAKT,OAHI,EAAU,KAAU,IAAK,IAC3B,QAAQ,KAAK,yCAA0C,EAAK,CAEvD,EAAU,IAEnB,SAAS,EAAW,EAAM,CAIxB,OAHI,EAAS,KAAU,IAAK,IAC1B,QAAQ,KAAK,wCAAyC,EAAK,CAEtD,EAAS,GAElB,IAAI,EAAU,EACd,OAAQ,EAAK,KAAb,CACE,IAAK,QACH,EAAS,IAAI,GACT,EAAK,aAAe,IAAK,KACvB,OAAO,UAAU,EAAK,WAAW,CACnC,EAAO,WAAa,IAAIxF,EAAM,EAAK,WAAW,CAE9C,EAAO,WAAa,EAAW,EAAK,WAAW,EAG/C,EAAK,cAAgB,IAAK,KAC5B,EAAO,YAAc,EAAW,EAAK,YAAY,EAE/C,EAAK,MAAQ,IAAK,KAChB,EAAK,IAAI,OAAS,MACpB,EAAO,IAAM,IAAI,GAAI,EAAK,IAAI,MAAO,EAAK,IAAI,KAAM,EAAK,IAAI,IAAI,CACxD,EAAK,IAAI,OAAS,YAC3B,EAAO,IAAM,IAAI,GAAQ,EAAK,IAAI,MAAO,EAAK,IAAI,QAAQ,EAExD,EAAK,IAAI,OAAS,KACpB,EAAO,IAAI,KAAO,EAAK,IAAI,OAG3B,EAAK,uBAAyB,IAAK,KAAG,EAAO,qBAAuB,EAAK,sBACzE,EAAK,sBAAwB,IAAK,KAAG,EAAO,oBAAsB,EAAK,qBACvE,EAAK,qBAAuB,IAAK,IAAG,EAAO,mBAAmB,UAAU,EAAK,mBAAmB,CAChG,EAAK,uBAAyB,IAAK,KAAG,EAAO,qBAAuB,EAAK,sBACzE,EAAK,sBAAwB,IAAK,IAAG,EAAO,oBAAoB,UAAU,EAAK,oBAAoB,CACvG,MACF,IAAK,oBACH,EAAS,IAAI,GAAkB,EAAK,IAAK,EAAK,OAAQ,EAAK,KAAM,EAAK,IAAI,CACtE,EAAK,QAAU,IAAK,KAAG,EAAO,MAAQ,EAAK,OAC3C,EAAK,OAAS,IAAK,KAAG,EAAO,KAAO,EAAK,MACzC,EAAK,YAAc,IAAK,KAAG,EAAO,UAAY,EAAK,WACnD,EAAK,aAAe,IAAK,KAAG,EAAO,WAAa,EAAK,YACrD,EAAK,OAAS,IAAK,KAAG,EAAO,KAAO,OAAO,OAAO,EAAE,CAAE,EAAK,KAAK,EACpE,MACF,IAAK,qBACH,EAAS,IAAI,GAAmB,EAAK,KAAM,EAAK,MAAO,EAAK,IAAK,EAAK,OAAQ,EAAK,KAAM,EAAK,IAAI,CAC9F,EAAK,OAAS,IAAK,KAAG,EAAO,KAAO,EAAK,MACzC,EAAK,OAAS,IAAK,KAAG,EAAO,KAAO,OAAO,OAAO,EAAE,CAAE,EAAK,KAAK,EACpE,MACF,IAAK,eACH,EAAS,IAAI,GAAa,EAAK,MAAO,EAAK,UAAU,CACrD,MACF,IAAK,mBACH,EAAS,IAAI,GAAiB,EAAK,MAAO,EAAK,UAAU,CACzD,EAAO,OAAS,EAAK,QAAU,GAC/B,MACF,IAAK,aACH,EAAS,IAAI,GAAW,EAAK,MAAO,EAAK,UAAW,EAAK,SAAU,EAAK,MAAM,CAC9E,MACF,IAAK,gBACH,EAAS,IAAI,GAAc,EAAK,MAAO,EAAK,UAAW,EAAK,MAAO,EAAK,OAAO,CAC/E,MACF,IAAK,YACH,EAAS,IAAI,GAAU,EAAK,MAAO,EAAK,UAAW,EAAK,SAAU,EAAK,MAAO,EAAK,SAAU,EAAK,MAAM,CACxG,EAAO,OAAS,EAAK,QAAU,GAC/B,MACF,IAAK,kBACH,EAAS,IAAI,GAAgB,EAAK,MAAO,EAAK,YAAa,EAAK,UAAU,CAC1E,MACF,IAAK,aACH,EAAS,IAAI,IAAY,CAAC,SAAS,EAAK,CACxC,MACF,IAAK,cACH,EAAW,EAAY,EAAK,SAAS,CACrC,EAAW,EAAY,EAAK,SAAS,CACrC,EAAS,IAAI,GAAY,EAAU,EAAS,CACxC,EAAK,WAAa,IAAK,KAAG,EAAO,SAAW,EAAK,UACjD,EAAK,aAAe,IAAK,IAAG,EAAO,WAAW,UAAU,EAAK,WAAW,CACxE,EAAK,WAAa,IAAK,KAAG,EAAO,SAAW,EAAK,UACrD,MACF,IAAK,OACH,EAAW,EAAY,EAAK,SAAS,CACrC,EAAW,EAAY,EAAK,SAAS,CACrC,EAAS,IAAI,GAAK,EAAU,EAAS,CACrC,MACF,IAAK,gBACH,EAAW,EAAY,EAAK,SAAS,CACrC,EAAW,EAAY,EAAK,SAAS,CACrC,IAAM,EAAQ,EAAK,MACb,EAAiB,EAAK,eACtB,EAAgB,EAAK,cAC3B,EAAS,IAAI,GAAc,EAAU,EAAU,EAAM,CACrD,EAAO,eAAiB,IAAI,GAAyB,IAAI,aAAa,EAAe,MAAM,CAAE,GAAG,CAC5F,IAAkB,IAAK,KAAG,EAAO,cAAgB,IAAI,GAAyB,IAAI,aAAa,EAAc,MAAM,CAAE,EAAc,SAAS,EAChJ,MACF,IAAK,cACH,EAAW,EAAY,EAAK,SAAS,CACrC,EAAW,EAAY,EAAK,SAAS,CACrC,EAAS,IAAI,GAAY,EAAK,iBAAkB,EAAK,eAAgB,EAAK,cAAe,EAAS,CAClG,EAAO,SAAW,EAClB,EAAO,uBAAyB,EAAK,uBACrC,EAAO,YAAc,EAAK,YAC1B,EAAO,YAAc,EAAK,WAC1B,EAAO,gBAAkB,EAAK,eAC9B,EAAO,YAAc,EAAK,WAC1B,EAAO,QAAU,EAAK,OACtB,EAAO,QAAU,EAAK,OAAO,IAAK,GAAU,CAC1C,IAAM,EAAM,IAAI,GAChB,EAAI,IAAI,UAAU,EAAM,OAAO,CAC/B,EAAI,IAAI,UAAU,EAAM,OAAO,CAC/B,IAAM,EAAS,IAAI,GAGnB,MAFA,GAAO,OAAS,EAAM,aACtB,EAAO,OAAO,UAAU,EAAM,aAAa,CACpC,CACL,eAAgB,EAAM,eACtB,MACA,kBAAmB,EAAM,kBACzB,SACD,EACD,CACF,EAAO,kBAAoB,EAAK,iBAChC,EAAO,gBAAkB,EAAK,eAC9B,EAAO,eAAiB,EAAK,cAC7B,EAAO,qBAAuB,EAAK,oBACnC,EAAO,eAAiB,EAAK,cAC7B,EAAO,iBAAmB,EAAW,EAAK,gBAAgB,KAAK,CAC3D,EAAK,gBAAkB,IAAK,KAAG,EAAO,eAAiB,EAAW,EAAK,cAAc,KAAK,EAC9F,MACF,IAAK,MACH,EAAS,IAAI,GACb,MACF,IAAK,OACH,EAAS,IAAI,GAAK,EAAY,EAAK,SAAS,CAAE,EAAY,EAAK,SAAS,CAAC,CACzE,MACF,IAAK,WACH,EAAS,IAAI,GAAS,EAAY,EAAK,SAAS,CAAE,EAAY,EAAK,SAAS,CAAC,CAC7E,MACF,IAAK,eACH,EAAS,IAAI,GAAa,EAAY,EAAK,SAAS,CAAE,EAAY,EAAK,SAAS,CAAC,CACjF,MACF,IAAK,aACL,IAAK,SACH,EAAS,IAAI,GAAO,EAAY,EAAK,SAAS,CAAE,EAAY,EAAK,SAAS,CAAC,CAC3E,MACF,IAAK,SACH,EAAS,IAAI,GAAO,EAAY,EAAK,SAAS,CAAC,CAC/C,MACF,IAAK,QACH,EAAS,IAAI,GACb,MACF,IAAK,OACH,EAAS,IAAI,GACb,MACF,QACE,EAAS,IAAI,GA8BjB,GA5BA,EAAO,KAAO,EAAK,KACf,EAAK,OAAS,IAAK,KAAG,EAAO,KAAO,EAAK,MACzC,EAAK,SAAW,IAAK,IAKnB,EAAK,WAAa,IAAK,IAAG,EAAO,SAAS,UAAU,EAAK,SAAS,CAClE,EAAK,WAAa,IAAK,IAAG,EAAO,SAAS,UAAU,EAAK,SAAS,CAClE,EAAK,aAAe,IAAK,IAAG,EAAO,WAAW,UAAU,EAAK,WAAW,CACxE,EAAK,QAAU,IAAK,IAAG,EAAO,MAAM,UAAU,EAAK,MAAM,GAP7D,EAAO,OAAO,UAAU,EAAK,OAAO,CAChC,EAAK,mBAAqB,IAAK,KAAG,EAAO,iBAAmB,EAAK,kBACjE,EAAO,kBAAkB,EAAO,OAAO,UAAU,EAAO,SAAU,EAAO,WAAY,EAAO,MAAM,EAOpG,EAAK,KAAO,IAAK,IAAG,EAAO,GAAG,UAAU,EAAK,GAAG,CAChD,EAAK,aAAe,IAAK,KAAG,EAAO,WAAa,EAAK,YACrD,EAAK,gBAAkB,IAAK,KAAG,EAAO,cAAgB,EAAK,eAC3D,EAAK,SACH,EAAK,OAAO,YAAc,IAAK,KAAG,EAAO,OAAO,UAAY,EAAK,OAAO,WACxE,EAAK,OAAO,OAAS,IAAK,KAAG,EAAO,OAAO,KAAO,EAAK,OAAO,MAC9D,EAAK,OAAO,aAAe,IAAK,KAAG,EAAO,OAAO,WAAa,EAAK,OAAO,YAC1E,EAAK,OAAO,SAAW,IAAK,KAAG,EAAO,OAAO,OAAS,EAAK,OAAO,QAClE,EAAK,OAAO,UAAY,IAAK,IAAG,EAAO,OAAO,QAAQ,UAAU,EAAK,OAAO,QAAQ,CACpF,EAAK,OAAO,SAAW,IAAK,KAAG,EAAO,OAAO,OAAS,KAAK,YAAY,EAAK,OAAO,OAAO,GAE5F,EAAK,UAAY,IAAK,KAAG,EAAO,QAAU,EAAK,SAC/C,EAAK,gBAAkB,IAAK,KAAG,EAAO,cAAgB,EAAK,eAC3D,EAAK,cAAgB,IAAK,KAAG,EAAO,YAAc,EAAK,aACvD,EAAK,WAAa,IAAK,KAAG,EAAO,SAAW,EAAK,UACjD,EAAK,SAAW,IAAK,KAAG,EAAO,OAAO,KAAO,EAAK,QAClD,EAAK,WAAa,IAAK,GAAG,CAC5B,IAAM,EAAW,EAAK,SACtB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,OAAQ,IACrC,EAAO,IAAI,KAAK,YAAY,EAAS,GAAK,EAAY,EAAW,EAAU,EAAW,CAAC,CAG3F,GAAI,EAAK,aAAe,IAAK,GAAG,CAC9B,IAAM,EAAmB,EAAK,WAC9B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAiB,OAAQ,IAAM,CACnD,IAAM,EAAO,EAAiB,GAC9B,EAAO,WAAW,KAAK,EAAW,GAAM,EAG5C,GAAI,EAAK,OAAS,MAAO,CACnB,EAAK,aAAe,IAAK,KAAG,EAAO,WAAa,EAAK,YACzD,IAAM,EAAS,EAAK,OACpB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,OAAQ,IAAM,CACzC,IAAM,EAAQ,EAAO,GACf,EAAQ,EAAO,oBAAoB,OAAQ,EAAM,OAAO,CAC1D,IAAU,IAAK,IACjB,EAAO,SAAS,EAAO,EAAM,SAAU,EAAM,WAAW,EAI9D,OAAO,EAET,cAAc,EAAQ,EAAW,CAC3B,OAAO,KAAK,EAAU,CAAC,SAAW,GACtC,EAAO,SAAS,SAAS,EAAO,CAC9B,GAAI,EAAM,gBAAkB,IAAQ,EAAM,WAAa,IAAK,GAAG,CAC7D,IAAM,EAAW,EAAU,EAAM,UAC7B,IAAa,IAAK,GACpB,QAAQ,KAAK,mDAAoD,EAAM,SAAS,CAEhF,EAAM,KAAK,EAAU,EAAM,WAAW,GAG1C,CAEJ,iBAAiB,EAAQ,CACvB,EAAO,SAAS,SAAS,EAAO,CAC9B,GAAI,EAAM,oBAAsB,EAAM,YAAa,CACjD,IAAM,EAAO,EAAM,OACb,EAAU,EAAO,oBAAoB,OAAQ,EAAK,CACpD,IAAY,IAAK,GAGnB,EAAM,OAAS,IAAI,GAFnB,EAAM,OAAS,IAKnB,GAGN,GAAkB,CAChB,aACA,yBACA,yBACA,oCACA,oCACA,2BACD,CACD,GAAmB,CACjB,kBACA,uBACA,0BACD,CACD,GAAiB,CACf,iBACA,8BACA,6BACA,gBACA,6BACA,4BACD,CACD,GAAoB,cAAc,EAAO,CACvC,YAAY,EAAS,CACnB,MAAM,EAAQ,CACd,KAAK,oBAAsB,GACvB,OAAO,kBAAsB,KAC/B,QAAQ,KAAK,8DAA8D,CAEzE,OAAO,MAAU,KACnB,QAAQ,KAAK,kDAAkD,CAEjE,KAAK,QAAU,CAAE,iBAAkB,OAAQ,CAE7C,WAAW,EAAS,CAElB,MADA,MAAK,QAAU,EACR,KAET,KAAK,EAAK,EAAQ,EAAY,EAAS,CACjC,IAAQ,IAAK,KAAG,EAAM,IACtB,KAAK,OAAS,IAAK,KAAG,EAAM,KAAK,KAAO,GAC5C,EAAM,KAAK,QAAQ,WAAW,EAAI,CAClC,IAAM,EAAQ,KACR,EAAS,GAAM,IAAI,EAAI,CAC7B,GAAI,IAAW,IAAK,GAAG,CAErB,GADA,EAAM,QAAQ,UAAU,EAAI,CACxB,EAAO,KAAM,CACf,EAAO,KAAM,GAAgB,CACvB,GAAQ,EAAO,EAAY,CAC/B,EAAM,QAAQ,QAAQ,EAAI,EAC1B,CAAC,MAAO,GAAM,CACV,GAAS,EAAQJ,EAAE,EACvB,CACF,OAMF,OAJA,WAAW,UAAW,CAChB,GAAQ,EAAO,EAAO,CAC1B,EAAM,QAAQ,QAAQ,EAAI,EACzB,EAAE,CACE,EAET,IAAM,EAAe,EAAE,CACvB,EAAa,YAAc,KAAK,cAAgB,YAAc,cAAgB,UAC9E,EAAa,QAAU,KAAK,cAC5B,IAAM,EAAU,MAAM,EAAK,EAAa,CAAC,KAAK,SAAS,EAAK,CAC1D,OAAO,EAAI,MAAM,EACjB,CAAC,KAAK,SAAS,EAAM,CACrB,OAAO,kBAAkB,EAAM,OAAO,OAAO,EAAM,QAAS,CAAE,qBAAsB,OAAQ,CAAC,CAAC,EAC9F,CAAC,KAAK,SAAS,EAAa,CAI5B,OAHA,GAAM,IAAI,EAAK,EAAY,CACvB,GAAQ,EAAO,EAAY,CAC/B,EAAM,QAAQ,QAAQ,EAAI,CACnB,GACP,CAAC,MAAM,SAAS,EAAG,CACf,GAAS,EAAQA,EAAE,CACvB,GAAM,OAAO,EAAI,CACjB,EAAM,QAAQ,UAAU,EAAI,CAC5B,EAAM,QAAQ,QAAQ,EAAI,EAC1B,CACF,GAAM,IAAI,EAAK,EAAQ,CACvB,EAAM,QAAQ,UAAU,EAAI,GAGhC,GAAe,KAAM,CACnB,OAAO,YAAa,CAIlB,OAHI,KAAa,IAAK,KACpB,GAAW,IAAK,EAAO,cAAgB,EAAO,qBAEzC,GAET,OAAO,WAAW,EAAO,CACvB,GAAW,IAGf,GAAc,cAAc,EAAO,CACjC,YAAY,EAAS,CACnB,MAAM,EAAQ,CAEhB,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,IAAM,EAAQ,KACR,EAAS,IAAI,GAAW,KAAK,QAAQ,CAC3C,EAAO,gBAAgB,cAAc,CACrC,EAAO,QAAQ,KAAK,KAAK,CACzB,EAAO,iBAAiB,KAAK,cAAc,CAC3C,EAAO,mBAAmB,KAAK,gBAAgB,CAC/C,EAAO,KAAK,EAAK,SAAS,EAAQ,CAChC,GAAI,CACF,IAAM,EAAa,EAAO,MAAM,EAAE,CACjB,GAAa,YAAY,CACjC,gBAAgB,EAAY,SAAS,EAAa,CACzD,EAAO,EAAY,EACnB,CAAC,MAAMgG,EAAY,OACdhG,EAAG,CACV,EAAYA,EAAE,GAEf,EAAY,EAAQ,CACvB,SAASgG,EAAY,EAAG,CAClB,EACF,EAAQhG,EAAE,CAEV,QAAQ,MAAMA,EAAE,CAElB,EAAM,QAAQ,UAAU,EAAI,IAIlC,GAA4B,IAAI,GAChC,GAA2B,IAAI,GAC/B,GAAoC,IAAI,GACxC,GAAe,KAAM,CACnB,aAAc,CACZ,KAAK,KAAO,eACZ,KAAK,OAAS,EACd,KAAK,OAAS,KACd,KAAK,QAAU,IAAI,GACnB,KAAK,QAAQ,OAAO,OAAO,EAAE,CAC7B,KAAK,QAAQ,iBAAmB,GAChC,KAAK,QAAU,IAAI,GACnB,KAAK,QAAQ,OAAO,OAAO,EAAE,CAC7B,KAAK,QAAQ,iBAAmB,GAChC,KAAK,OAAS,CACZ,MAAO,KACP,IAAK,KACL,OAAQ,KACR,KAAM,KACN,IAAK,KACL,KAAM,KACN,OAAQ,KACT,CAEH,OAAO,EAAQ,CACb,IAAM,EAAQ,KAAK,OAEnB,GADoB,EAAM,QAAU,EAAO,OAAS,EAAM,MAAQ,EAAO,KAAO,EAAM,SAAW,EAAO,OAAS,KAAK,QAAU,EAAM,OAAS,EAAO,MAAQ,EAAM,MAAQ,EAAO,KAAO,EAAM,OAAS,EAAO,MAAQ,EAAM,SAAW,KAAK,OAC7N,CACf,EAAM,MAAQ,EAAO,MACrB,EAAM,IAAM,EAAO,IACnB,EAAM,OAAS,EAAO,OAAS,KAAK,OACpC,EAAM,KAAO,EAAO,KACpB,EAAM,IAAM,EAAO,IACnB,EAAM,KAAO,EAAO,KACpB,EAAM,OAAS,KAAK,OACpB,GAAkB,KAAK,EAAO,iBAAiB,CAC/C,IAAM,EAAa,EAAM,OAAS,EAC5B,EAAqB,EAAa,EAAM,KAAO,EAAM,MACrD,EAAO,EAAM,KAAO,KAAK,IAAI,GAAU,EAAM,IAAM,GAAI,CAAG,EAAM,KAClE,EAAM,EACV,GAAS,SAAS,IAAM,CAAC,EACzB,GAAU,SAAS,IAAM,EACzB,EAAO,CAAC,EAAO,EAAM,OAAS,EAC9B,EAAO,EAAO,EAAM,OAAS,EAC7B,GAAkB,SAAS,GAAK,EAAI,EAAM,MAAQ,EAAO,GACzD,GAAkB,SAAS,IAAM,EAAO,IAAS,EAAO,GACxD,KAAK,QAAQ,iBAAiB,KAAK,GAAkB,CACrD,EAAO,CAAC,EAAO,EAAM,OAAS,EAC9B,EAAO,EAAO,EAAM,OAAS,EAC7B,GAAkB,SAAS,GAAK,EAAI,EAAM,MAAQ,EAAO,GACzD,GAAkB,SAAS,IAAM,EAAO,IAAS,EAAO,GACxD,KAAK,QAAQ,iBAAiB,KAAK,GAAkB,CAEvD,KAAK,QAAQ,YAAY,KAAK,EAAO,YAAY,CAAC,SAAS,GAAS,CACpE,KAAK,QAAQ,YAAY,KAAK,EAAO,YAAY,CAAC,SAAS,GAAU,GAGzE,GAAQ,KAAM,CACZ,YAAY,EAAY,GAAM,CAC5B,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,QAAU,EACf,KAAK,YAAc,EACnB,KAAK,QAAU,GAEjB,OAAQ,CACN,KAAK,UAAYQ,IAAK,CACtB,KAAK,QAAU,KAAK,UACpB,KAAK,YAAc,EACnB,KAAK,QAAU,GAEjB,MAAO,CACL,KAAK,gBAAgB,CACrB,KAAK,QAAU,GACf,KAAK,UAAY,GAEnB,gBAAiB,CAEf,OADA,KAAK,UAAU,CACR,KAAK,YAEd,UAAW,CACT,IAAI,EAAO,EACX,GAAI,KAAK,WAAa,CAAC,KAAK,QAE1B,OADA,KAAK,OAAO,CACL,EAET,GAAI,KAAK,QAAS,CAChB,IAAM,EAAUA,IAAK,CACrB,GAAQ,EAAU,KAAK,SAAW,IAClC,KAAK,QAAU,EACf,KAAK,aAAe,EAEtB,OAAO,IAGX,GAA8B,IAAI,EAClC,GAAgC,IAAI,GACpC,GAA2B,IAAI,EAC/B,GAAiC,IAAI,EACrC,GAAgB,cAAc,EAAS,CACrC,aAAc,CACZ,OAAO,CACP,KAAK,KAAO,gBACZ,KAAK,QAAU,GAAa,YAAY,CACxC,KAAK,KAAO,KAAK,QAAQ,YAAY,CACrC,KAAK,KAAK,QAAQ,KAAK,QAAQ,YAAY,CAC3C,KAAK,OAAS,KACd,KAAK,UAAY,EACjB,KAAK,OAAS,IAAI,GAEpB,UAAW,CACT,OAAO,KAAK,KAEd,cAAe,CAOb,OANI,KAAK,SAAW,OAClB,KAAK,KAAK,WAAW,KAAK,OAAO,CACjC,KAAK,OAAO,WAAW,KAAK,QAAQ,YAAY,CAChD,KAAK,KAAK,QAAQ,KAAK,QAAQ,YAAY,CAC3C,KAAK,OAAS,MAET,KAET,WAAY,CACV,OAAO,KAAK,OAEd,UAAU,EAAO,CAUf,OATI,KAAK,SAAW,KAIlB,KAAK,KAAK,WAAW,KAAK,QAAQ,YAAY,EAH9C,KAAK,KAAK,WAAW,KAAK,OAAO,CACjC,KAAK,OAAO,WAAW,KAAK,QAAQ,YAAY,EAIlD,KAAK,OAAS,EACd,KAAK,KAAK,QAAQ,KAAK,OAAO,CAC9B,KAAK,OAAO,QAAQ,KAAK,QAAQ,YAAY,CACtC,KAET,iBAAkB,CAChB,OAAO,KAAK,KAAK,KAAK,MAExB,gBAAgB,EAAO,CAErB,OADA,KAAK,KAAK,KAAK,gBAAgB,EAAO,KAAK,QAAQ,YAAa,IAAK,CAC9D,KAET,kBAAkB,EAAO,CACvB,MAAM,kBAAkB,EAAM,CAC9B,IAAM,EAAW,KAAK,QAAQ,SACxB,EAAK,KAAK,GAIhB,GAHA,KAAK,UAAY,KAAK,OAAO,UAAU,CACvC,KAAK,YAAY,UAAU,GAAa,GAAe,GAAS,CAChE,GAAe,IAAI,EAAG,EAAG,GAAG,CAAC,gBAAgB,GAAc,CACvD,EAAS,UAAW,CACtB,IAAM,EAAU,KAAK,QAAQ,YAAc,KAAK,UAChD,EAAS,UAAU,wBAAwB,GAAY,EAAG,EAAQ,CAClE,EAAS,UAAU,wBAAwB,GAAY,EAAG,EAAQ,CAClE,EAAS,UAAU,wBAAwB,GAAY,EAAG,EAAQ,CAClE,EAAS,SAAS,wBAAwB,GAAe,EAAG,EAAQ,CACpE,EAAS,SAAS,wBAAwB,GAAe,EAAG,EAAQ,CACpE,EAAS,SAAS,wBAAwB,GAAe,EAAG,EAAQ,CACpE,EAAS,IAAI,wBAAwB,EAAG,EAAG,EAAQ,CACnD,EAAS,IAAI,wBAAwB,EAAG,EAAG,EAAQ,CACnD,EAAS,IAAI,wBAAwB,EAAG,EAAG,EAAQ,MAEnD,EAAS,YAAY,GAAY,EAAG,GAAY,EAAG,GAAY,EAAE,CACjE,EAAS,eAAe,GAAe,EAAG,GAAe,EAAG,GAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,GAIrG,GAAQ,cAAc,EAAS,CAC7B,YAAY,EAAU,CACpB,OAAO,CACP,KAAK,KAAO,QACZ,KAAK,SAAW,EAChB,KAAK,QAAU,EAAS,QACxB,KAAK,KAAO,KAAK,QAAQ,YAAY,CACrC,KAAK,KAAK,QAAQ,EAAS,UAAU,CAAC,CACtC,KAAK,SAAW,GAChB,KAAK,OAAS,KACd,KAAK,OAAS,EACd,KAAK,KAAO,GACZ,KAAK,UAAY,EACjB,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,SAAW,IAAK,GACrB,KAAK,aAAe,EACpB,KAAK,UAAY,GACjB,KAAK,mBAAqB,GAC1B,KAAK,OAAS,KACd,KAAK,WAAa,QAClB,KAAK,WAAa,EAClB,KAAK,UAAY,EACjB,KAAK,WAAa,GAClB,KAAK,QAAU,EAAE,CAEnB,WAAY,CACV,OAAO,KAAK,KAEd,cAAc,EAAW,CAKvB,MAJA,MAAK,mBAAqB,GAC1B,KAAK,WAAa,YAClB,KAAK,OAAS,EACd,KAAK,SAAS,CACP,KAET,sBAAsB,EAAc,CAKlC,MAJA,MAAK,mBAAqB,GAC1B,KAAK,WAAa,YAClB,KAAK,OAAS,KAAK,QAAQ,yBAAyB,EAAa,CACjE,KAAK,SAAS,CACP,KAET,qBAAqB,EAAa,CAKhC,MAJA,MAAK,mBAAqB,GAC1B,KAAK,WAAa,kBAClB,KAAK,OAAS,KAAK,QAAQ,wBAAwB,EAAY,CAC/D,KAAK,SAAS,CACP,KAET,UAAU,EAAa,CAIrB,MAHA,MAAK,OAAS,EACd,KAAK,WAAa,SACd,KAAK,UAAU,KAAK,MAAM,CACvB,KAET,KAAK,EAAQ,EAAG,CACd,GAAI,KAAK,YAAc,GAAM,CAC3B,QAAQ,KAAK,yCAAyC,CACtD,OAEF,GAAI,KAAK,qBAAuB,GAAO,CACrC,QAAQ,KAAK,mDAAmD,CAChE,OAEF,KAAK,WAAa,KAAK,QAAQ,YAAc,EAC7C,IAAM,EAAS,KAAK,QAAQ,oBAAoB,CAWhD,MAVA,GAAO,OAAS,KAAK,OACrB,EAAO,KAAO,KAAK,KACnB,EAAO,UAAY,KAAK,UACxB,EAAO,QAAU,KAAK,QACtB,EAAO,QAAU,KAAK,QAAQ,KAAK,KAAK,CACxC,EAAO,MAAM,KAAK,WAAY,KAAK,UAAY,KAAK,OAAQ,KAAK,SAAS,CAC1E,KAAK,UAAY,GACjB,KAAK,OAAS,EACd,KAAK,UAAU,KAAK,OAAO,CAC3B,KAAK,gBAAgB,KAAK,aAAa,CAChC,KAAK,SAAS,CAEvB,OAAQ,CACN,GAAI,KAAK,qBAAuB,GAAO,CACrC,QAAQ,KAAK,mDAAmD,CAChE,OAWF,OATI,KAAK,YAAc,KACrB,KAAK,WAAa,KAAK,IAAI,KAAK,QAAQ,YAAc,KAAK,WAAY,EAAE,CAAG,KAAK,aAC7E,KAAK,OAAS,KAChB,KAAK,WAA8B,KAAK,UAAY,KAAK,OAAO,UAElE,KAAK,OAAO,MAAM,CAClB,KAAK,OAAO,QAAU,KACtB,KAAK,UAAY,IAEZ,KAET,KAAK,EAAQ,EAAG,CACd,GAAI,KAAK,qBAAuB,GAAO,CACrC,QAAQ,KAAK,mDAAmD,CAChE,OAQF,MANA,MAAK,UAAY,EACb,KAAK,SAAW,OAClB,KAAK,OAAO,KAAK,KAAK,QAAQ,YAAc,EAAM,CAClD,KAAK,OAAO,QAAU,MAExB,KAAK,UAAY,GACV,KAET,SAAU,CACR,GAAI,KAAK,QAAQ,OAAS,EAAG,CAC3B,KAAK,OAAO,QAAQ,KAAK,QAAQ,GAAG,CACpC,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,QAAQ,OAAQ,EAAK,EAAI,IAClD,KAAK,QAAQ,EAAK,GAAG,QAAQ,KAAK,QAAQ,GAAI,CAEhD,KAAK,QAAQ,KAAK,QAAQ,OAAS,GAAG,QAAQ,KAAK,WAAW,CAAC,MAE/D,KAAK,OAAO,QAAQ,KAAK,WAAW,CAAC,CAGvC,MADA,MAAK,WAAa,GACX,KAET,YAAa,CACP,QAAK,aAAe,GAGxB,IAAI,KAAK,QAAQ,OAAS,EAAG,CAC3B,KAAK,OAAO,WAAW,KAAK,QAAQ,GAAG,CACvC,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,QAAQ,OAAQ,EAAK,EAAI,IAClD,KAAK,QAAQ,EAAK,GAAG,WAAW,KAAK,QAAQ,GAAI,CAEnD,KAAK,QAAQ,KAAK,QAAQ,OAAS,GAAG,WAAW,KAAK,WAAW,CAAC,MAElE,KAAK,OAAO,WAAW,KAAK,WAAW,CAAC,CAG1C,MADA,MAAK,WAAa,GACX,MAET,YAAa,CACX,OAAO,KAAK,QAEd,WAAW,EAAO,CAShB,MARA,CAAY,IAAQ,EAAE,CAClB,KAAK,aAAe,IACtB,KAAK,YAAY,CACjB,KAAK,QAAU,EAAM,OAAO,CAC5B,KAAK,SAAS,EAEd,KAAK,QAAU,EAAM,OAAO,CAEvB,KAET,UAAU,EAAO,CAKf,MAJA,MAAK,OAAS,EACV,KAAK,YAAc,IAAQ,KAAK,OAAO,SAAW,IAAK,IACzD,KAAK,OAAO,OAAO,gBAAgB,KAAK,OAAQ,KAAK,QAAQ,YAAa,IAAK,CAE1E,KAET,WAAY,CACV,OAAO,KAAK,OAEd,WAAY,CACV,OAAO,KAAK,YAAY,CAAC,GAE3B,UAAU,EAAQ,CAChB,OAAO,KAAK,WAAW,EAAS,CAAC,EAAO,CAAG,EAAE,CAAC,CAEhD,gBAAgB,EAAO,CACrB,GAAI,KAAK,qBAAuB,GAAO,CACrC,QAAQ,KAAK,mDAAmD,CAChE,OAMF,MAJA,MAAK,aAAe,EAChB,KAAK,YAAc,IACrB,KAAK,OAAO,aAAa,gBAAgB,KAAK,aAAc,KAAK,QAAQ,YAAa,IAAK,CAEtF,KAET,iBAAkB,CAChB,OAAO,KAAK,aAEd,SAAU,CACR,KAAK,UAAY,GAEnB,SAAU,CAKR,OAJI,KAAK,qBAAuB,IAC9B,QAAQ,KAAK,mDAAmD,CACzD,IAEF,KAAK,KAEd,QAAQ,EAAO,CACb,GAAI,KAAK,qBAAuB,GAAO,CACrC,QAAQ,KAAK,mDAAmD,CAChE,OAMF,MAJA,MAAK,KAAO,EACR,KAAK,YAAc,KACrB,KAAK,OAAO,KAAO,KAAK,MAEnB,KAET,aAAa,EAAO,CAElB,MADA,MAAK,UAAY,EACV,KAET,WAAW,EAAO,CAEhB,MADA,MAAK,QAAU,EACR,KAET,WAAY,CACV,OAAO,KAAK,KAAK,KAAK,MAExB,UAAU,EAAO,CAEf,OADA,KAAK,KAAK,KAAK,gBAAgB,EAAO,KAAK,QAAQ,YAAa,IAAK,CAC9D,OAGX,GAA4B,IAAI,EAChC,GAA8B,IAAI,GAClC,GAAyB,IAAI,EAC7B,GAA+B,IAAI,EACnC,GAAkB,cAAc,EAAM,CACpC,YAAY,EAAU,CACpB,MAAM,EAAS,CACf,KAAK,OAAS,KAAK,QAAQ,cAAc,CACzC,KAAK,OAAO,aAAe,OAC3B,KAAK,OAAO,QAAQ,KAAK,KAAK,CAEhC,SAAU,CACR,MAAM,SAAS,CACf,KAAK,OAAO,QAAQ,KAAK,KAAK,CAEhC,YAAa,CACX,MAAM,YAAY,CAClB,KAAK,OAAO,WAAW,KAAK,KAAK,CAEnC,WAAY,CACV,OAAO,KAAK,OAEd,gBAAiB,CACf,OAAO,KAAK,OAAO,YAErB,eAAe,EAAO,CAEpB,MADA,MAAK,OAAO,YAAc,EACnB,KAET,kBAAmB,CACjB,OAAO,KAAK,OAAO,cAErB,iBAAiB,EAAO,CAEtB,MADA,MAAK,OAAO,cAAgB,EACrB,KAET,kBAAmB,CACjB,OAAO,KAAK,OAAO,cAErB,iBAAiB,EAAO,CAEtB,MADA,MAAK,OAAO,cAAgB,EACrB,KAET,gBAAiB,CACf,OAAO,KAAK,OAAO,YAErB,eAAe,EAAO,CAEpB,MADA,MAAK,OAAO,YAAc,EACnB,KAET,mBAAmB,EAAgB,EAAgB,EAAe,CAIhE,MAHA,MAAK,OAAO,eAAiB,EAC7B,KAAK,OAAO,eAAiB,EAC7B,KAAK,OAAO,cAAgB,EACrB,KAET,kBAAkB,EAAO,CAEvB,GADA,MAAM,kBAAkB,EAAM,CAC1B,KAAK,qBAAuB,IAAQ,KAAK,YAAc,GAAO,OAClE,KAAK,YAAY,UAAU,GAAW,GAAa,GAAO,CAC1D,GAAa,IAAI,EAAG,EAAG,EAAE,CAAC,gBAAgB,GAAY,CACtD,IAAM,EAAS,KAAK,OACpB,GAAI,EAAO,UAAW,CACpB,IAAM,EAAU,KAAK,QAAQ,YAAc,KAAK,SAAS,UACzD,EAAO,UAAU,wBAAwB,GAAU,EAAG,EAAQ,CAC9D,EAAO,UAAU,wBAAwB,GAAU,EAAG,EAAQ,CAC9D,EAAO,UAAU,wBAAwB,GAAU,EAAG,EAAQ,CAC9D,EAAO,aAAa,wBAAwB,GAAa,EAAG,EAAQ,CACpE,EAAO,aAAa,wBAAwB,GAAa,EAAG,EAAQ,CACpE,EAAO,aAAa,wBAAwB,GAAa,EAAG,EAAQ,MAEpE,EAAO,YAAY,GAAU,EAAG,GAAU,EAAG,GAAU,EAAE,CACzD,EAAO,eAAe,GAAa,EAAG,GAAa,EAAG,GAAa,EAAE,GAI3E,GAAgB,KAAM,CACpB,YAAY,EAAO,EAAU,KAAM,CACjC,KAAK,SAAW,EAAM,QAAQ,gBAAgB,CAC9C,KAAK,SAAS,QAAU,EACxB,KAAK,KAAO,IAAI,WAAW,KAAK,SAAS,kBAAkB,CAC3D,EAAM,WAAW,CAAC,QAAQ,KAAK,SAAS,CAE1C,kBAAmB,CAEjB,OADA,KAAK,SAAS,qBAAqB,KAAK,KAAK,CACtC,KAAK,KAEd,qBAAsB,CACpB,IAAI,EAAQ,EACN,EAAO,KAAK,kBAAkB,CACpC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAK,OAAQ,IACjC,GAAS,EAAK,GAEhB,OAAO,EAAQ,EAAK,SAGxB,GAAgB,KAAM,CACpB,YAAY,EAAS,EAAU,EAAW,CACxC,KAAK,QAAU,EACf,KAAK,UAAY,EACjB,IAAI,EAAa,EAAqB,EACtC,OAAQ,EAAR,CACE,IAAK,aACH,EAAc,KAAK,OACnB,EAAsB,KAAK,eAC3B,EAAc,KAAK,+BACnB,KAAK,OAAS,IAAI,aAAa,EAAY,EAAE,CAC7C,KAAK,WAAa,EAClB,MACF,IAAK,SACL,IAAK,OACH,EAAc,KAAK,QACnB,EAAsB,KAAK,QAC3B,EAAc,KAAK,0BACnB,KAAK,OAAa,MAAM,EAAY,EAAE,CACtC,MACF,QACE,EAAc,KAAK,MACnB,EAAsB,KAAK,cAC3B,EAAc,KAAK,4BACnB,KAAK,OAAS,IAAI,aAAa,EAAY,EAAE,CAEjD,KAAK,iBAAmB,EACxB,KAAK,yBAA2B,EAChC,KAAK,aAAe,EACpB,KAAK,WAAa,EAClB,KAAK,UAAY,EACjB,KAAK,iBAAmB,EACxB,KAAK,yBAA2B,EAChC,KAAK,SAAW,EAChB,KAAK,eAAiB,EAGxB,WAAW,EAAW,EAAQ,CAC5B,IAAM,EAAS,KAAK,OAAQ,EAAS,KAAK,UAAW,EAAS,EAAY,EAAS,EAC/E,EAAgB,KAAK,iBACzB,GAAI,IAAkB,EAAG,CACvB,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAChC,EAAO,EAAS,GAAM,EAAO,GAE/B,EAAgB,MACX,CACL,GAAiB,EACjB,IAAM,EAAM,EAAS,EACrB,KAAK,iBAAiB,EAAQ,EAAQ,EAAG,EAAK,EAAO,CAEvD,KAAK,iBAAmB,EAG1B,mBAAmB,EAAQ,CACzB,IAAM,EAAS,KAAK,OAAQ,EAAS,KAAK,UAAW,EAAS,EAAS,KAAK,UACxE,KAAK,2BAA6B,GACpC,KAAK,cAAc,CAErB,KAAK,yBAAyB,EAAQ,EAAQ,EAAG,EAAQ,EAAO,CAChE,KAAK,0BAA4B,EAGnC,MAAM,EAAW,CACf,IAAM,EAAS,KAAK,UAAW,EAAS,KAAK,OAAQ,EAAS,EAAY,EAAS,EAAQ,EAAS,KAAK,iBAAkB,EAAiB,KAAK,yBAA0B,EAAU,KAAK,QAG1L,GAFA,KAAK,iBAAmB,EACxB,KAAK,yBAA2B,EAC5B,EAAS,EAAG,CACd,IAAM,EAAsB,EAAS,KAAK,WAC1C,KAAK,iBACH,EACA,EACA,EACA,EAAI,EACJ,EACD,CAEC,EAAiB,GACnB,KAAK,yBAAyB,EAAQ,EAAQ,KAAK,UAAY,EAAQ,EAAG,EAAO,CAEnF,IAAK,IAAI,EAAK,EAAQR,EAAI,EAAS,EAAQ,IAAOA,EAAG,EAAE,EACrD,GAAI,EAAO,KAAQ,EAAO,EAAK,GAAS,CACtC,EAAQ,SAAS,EAAQ,EAAO,CAChC,OAKN,mBAAoB,CAClB,IAAM,EAAU,KAAK,QACf,EAAS,KAAK,OAAQ,EAAS,KAAK,UAAW,EAAsB,EAAS,KAAK,WACzF,EAAQ,SAAS,EAAQ,EAAoB,CAC7C,IAAK,IAAI,EAAK,EAAQA,EAAI,EAAqB,IAAOA,EAAG,EAAE,EACzD,EAAO,GAAM,EAAO,EAAsB,EAAK,GAEjD,KAAK,cAAc,CACnB,KAAK,iBAAmB,EACxB,KAAK,yBAA2B,EAGlC,sBAAuB,CACrB,IAAM,EAAsB,KAAK,UAAY,EAC7C,KAAK,QAAQ,SAAS,KAAK,OAAQ,EAAoB,CAEzD,6BAA8B,CAC5B,IAAM,EAAa,KAAK,UAAY,KAAK,UACnC,EAAW,EAAa,KAAK,UACnC,IAAK,IAAI,EAAK,EAAY,EAAK,EAAU,IACvC,KAAK,OAAO,GAAM,EAGtB,gCAAiC,CAC/B,KAAK,6BAA6B,CAClC,KAAK,OAAO,KAAK,UAAY,KAAK,UAAY,GAAK,EAErD,2BAA4B,CAC1B,IAAM,EAAa,KAAK,WAAa,KAAK,UACpC,EAAc,KAAK,UAAY,KAAK,UAC1C,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,UAAW,IACpC,KAAK,OAAO,EAAc,GAAM,KAAK,OAAO,EAAa,GAI7D,QAAQ,EAAQ,EAAW,EAAW,EAAI,EAAQ,CAChD,GAAI,GAAM,GACR,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAChC,EAAO,EAAY,GAAM,EAAO,EAAY,GAIlD,OAAO,EAAQ,EAAW,EAAW,EAAI,CACvC,GAAW,UAAU,EAAQ,EAAW,EAAQ,EAAW,EAAQ,EAAW,EAAG,CAEnF,eAAe,EAAQ,EAAW,EAAW,EAAI,EAAQ,CACvD,IAAM,EAAa,KAAK,WAAa,EACrC,GAAW,wBAAwB,EAAQ,EAAY,EAAQ,EAAW,EAAQ,EAAU,CAC5F,GAAW,UAAU,EAAQ,EAAW,EAAQ,EAAW,EAAQ,EAAY,EAAG,CAEpF,MAAM,EAAQ,EAAW,EAAW,EAAI,EAAQ,CAC9C,IAAMJ,EAAI,EAAI,EACd,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAAI,CACpC,IAAM,EAAK,EAAY,EACvB,EAAO,GAAM,EAAO,GAAMA,EAAI,EAAO,EAAY,GAAM,GAG3D,cAAc,EAAQ,EAAW,EAAW,EAAI,EAAQ,CACtD,IAAK,IAAI,EAAK,EAAG,IAAO,EAAQ,EAAE,EAAI,CACpC,IAAM,EAAK,EAAY,EACvB,EAAO,GAAM,EAAO,GAAM,EAAO,EAAY,GAAM,KAIzD,GAAqB,gBACrB,GAAkB,OAAO,IAAM,GAAqB,IAAK,IAAI,CAC7D,GAAY,KAAO,GAAqB,IACxC,GAAiB,KAAO,GAAmB,QAAQ,MAAO,GAAG,CAAG,IAChE,GAA+B,mBAAyB,QAAQ,KAAM,GAAU,CAChF,GAA0B,WAAkB,QAAQ,OAAQ,GAAe,CAC3E,GAA4B,+BAAmC,QAAQ,KAAM,GAAU,CACvF,GAA8B,0BAA8B,QAAQ,KAAM,GAAU,CACpF,GAAe,OACb,IAAM,GAAe,GAAU,GAAY,GAAc,IAC1D,CACD,GAAwB,CAAC,WAAY,YAAa,QAAS,MAAM,CACjE,GAAY,KAAM,CAChB,YAAY,EAAa,EAAM,EAAoB,CACjD,IAAM,EAAa,GAAsB,GAAgB,eAAe,EAAK,CAC7E,KAAK,aAAe,EACpB,KAAK,UAAY,EAAY,WAAW,EAAM,EAAW,CAE3D,SAAS,EAAO,EAAQ,CACtB,KAAK,MAAM,CACX,IAAM,EAAkB,KAAK,aAAa,gBAAiB,EAAU,KAAK,UAAU,GAChF,IAAY,IAAK,IAAG,EAAQ,SAAS,EAAO,EAAO,CAEzD,SAAS,EAAO,EAAQ,CACtB,IAAM,EAAW,KAAK,UACtB,IAAK,IAAI,EAAK,KAAK,aAAa,gBAAiBH,EAAI,EAAS,OAAQ,IAAOA,EAAG,EAAE,EAChF,EAAS,GAAI,SAAS,EAAO,EAAO,CAGxC,MAAO,CACL,IAAM,EAAW,KAAK,UACtB,IAAK,IAAI,EAAK,KAAK,aAAa,gBAAiBA,EAAI,EAAS,OAAQ,IAAOA,EAAG,EAAE,EAChF,EAAS,GAAI,MAAM,CAGvB,QAAS,CACP,IAAM,EAAW,KAAK,UACtB,IAAK,IAAI,EAAK,KAAK,aAAa,gBAAiBA,EAAI,EAAS,OAAQ,IAAOA,EAAG,EAAE,EAChF,EAAS,GAAI,QAAQ,GAI3B,GAAkB,MAAM,CAAiB,CACvC,YAAY,EAAU,EAAM,EAAY,CACtC,KAAK,KAAO,EACZ,KAAK,WAAa,GAAc,EAAiB,eAAe,EAAK,CACrE,KAAK,KAAO,EAAiB,SAAS,EAAU,KAAK,WAAW,SAAS,CACzE,KAAK,SAAW,EAChB,KAAK,SAAW,KAAK,kBACrB,KAAK,SAAW,KAAK,kBAEvB,OAAO,OAAO,EAAM,EAAM,EAAY,CAElC,OADI,GAAQ,EAAK,uBAGV,IAAI,EAAiB,UAAU,EAAM,EAAM,EAAW,CAFtD,IAAI,EAAiB,EAAM,EAAM,EAAW,CAYvD,OAAO,iBAAiB,EAAM,CAC5B,OAAO,EAAK,QAAQ,MAAO,IAAI,CAAC,QAAQ,GAAa,GAAG,CAE1D,OAAO,eAAe,EAAW,CAC/B,IAAM,EAAU,GAAS,KAAK,EAAU,CACxC,GAAI,IAAY,KACd,MAAU,MAAM,4CAA8C,EAAU,CAE1E,IAAM,EAAU,CAEd,SAAU,EAAQ,GAClB,WAAY,EAAQ,GACpB,YAAa,EAAQ,GACrB,aAAc,EAAQ,GAEtB,cAAe,EAAQ,GACxB,CACK,EAAU,EAAQ,UAAY,EAAQ,SAAS,YAAY,IAAI,CACrE,GAAI,IAAY,IAAK,IAAK,IAAY,GAAI,CACxC,IAAM,EAAa,EAAQ,SAAS,UAAU,EAAU,EAAE,CACtD,GAAsB,QAAQ,EAAW,GAAK,KAChD,EAAQ,SAAW,EAAQ,SAAS,UAAU,EAAG,EAAQ,CACzD,EAAQ,WAAa,GAGzB,GAAI,EAAQ,eAAiB,MAAQ,EAAQ,aAAa,SAAW,EACnE,MAAU,MAAM,+DAAiE,EAAU,CAE7F,OAAO,EAET,OAAO,SAAS,EAAM,EAAU,CAC9B,GAAI,IAAa,IAAK,IAAK,IAAa,IAAM,IAAa,KAAO,IAAa,IAAM,IAAa,EAAK,MAAQ,IAAa,EAAK,KAC/H,OAAO,EAET,GAAI,EAAK,SAAU,CACjB,IAAM,EAAO,EAAK,SAAS,cAAc,EAAS,CAClD,GAAI,IAAS,IAAK,GAChB,OAAO,EAGX,GAAI,EAAK,SAAU,CACjB,IAAM,EAAoB,SAAS,EAAU,CAC3C,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,OAAQ,IAAM,CAC3C,IAAM,EAAY,EAAS,GAC3B,GAAI,EAAU,OAAS,GAAY,EAAU,OAAS,EACpD,OAAO,EAET,IAAM,EAAS,EAAkB,EAAU,SAAS,CACpD,GAAI,EAAQ,OAAO,EAErB,OAAO,MAEH,EAAc,EAAkB,EAAK,SAAS,CACpD,GAAI,EACF,OAAO,EAGX,OAAO,KAGT,uBAAwB,EAExB,uBAAwB,EAGxB,iBAAiB,EAAQ,EAAQ,CAC/B,EAAO,GAAU,KAAK,aAAa,KAAK,cAE1C,gBAAgB,EAAQ,EAAQ,CAC9B,IAAM,EAAS,KAAK,iBACpB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAO,OAAQ,IAAOA,EAAG,EAAE,EAC9C,EAAO,KAAY,EAAO,GAG9B,uBAAuB,EAAQ,EAAQ,CACrC,EAAO,GAAU,KAAK,iBAAiB,KAAK,eAE9C,kBAAkB,EAAQ,EAAQ,CAChC,KAAK,iBAAiB,QAAQ,EAAQ,EAAO,CAG/C,iBAAiB,EAAQ,EAAQ,CAC/B,KAAK,aAAa,KAAK,cAAgB,EAAO,GAEhD,gCAAgC,EAAQ,EAAQ,CAC9C,KAAK,aAAa,KAAK,cAAgB,EAAO,GAC9C,KAAK,aAAa,YAAc,GAElC,2CAA2C,EAAQ,EAAQ,CACzD,KAAK,aAAa,KAAK,cAAgB,EAAO,GAC9C,KAAK,aAAa,uBAAyB,GAG7C,gBAAgB,EAAQ,EAAQ,CAC9B,IAAM,EAAO,KAAK,iBAClB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAK,OAAQ,IAAOA,EAAG,EAAE,EAC5C,EAAK,GAAM,EAAO,KAGtB,+BAA+B,EAAQ,EAAQ,CAC7C,IAAM,EAAO,KAAK,iBAClB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAK,OAAQ,IAAOA,EAAG,EAAE,EAC5C,EAAK,GAAM,EAAO,KAEpB,KAAK,aAAa,YAAc,GAElC,0CAA0C,EAAQ,EAAQ,CACxD,IAAM,EAAO,KAAK,iBAClB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAK,OAAQ,IAAOA,EAAG,EAAE,EAC5C,EAAK,GAAM,EAAO,KAEpB,KAAK,aAAa,uBAAyB,GAG7C,uBAAuB,EAAQ,EAAQ,CACrC,KAAK,iBAAiB,KAAK,eAAiB,EAAO,GAErD,sCAAsC,EAAQ,EAAQ,CACpD,KAAK,iBAAiB,KAAK,eAAiB,EAAO,GACnD,KAAK,aAAa,YAAc,GAElC,iDAAiD,EAAQ,EAAQ,CAC/D,KAAK,iBAAiB,KAAK,eAAiB,EAAO,GACnD,KAAK,aAAa,uBAAyB,GAG7C,oBAAoB,EAAQ,EAAQ,CAClC,KAAK,iBAAiB,UAAU,EAAQ,EAAO,CAEjD,mCAAmC,EAAQ,EAAQ,CACjD,KAAK,iBAAiB,UAAU,EAAQ,EAAO,CAC/C,KAAK,aAAa,YAAc,GAElC,8CAA8C,EAAQ,EAAQ,CAC5D,KAAK,iBAAiB,UAAU,EAAQ,EAAO,CAC/C,KAAK,aAAa,uBAAyB,GAE7C,kBAAkB,EAAa,EAAQ,CACrC,KAAK,MAAM,CACX,KAAK,SAAS,EAAa,EAAO,CAEpC,kBAAkB,EAAa,EAAQ,CACrC,KAAK,MAAM,CACX,KAAK,SAAS,EAAa,EAAO,CAGpC,MAAO,CACL,IAAI,EAAe,KAAK,KAClB,EAAa,KAAK,WAClB,EAAa,EAAW,WACxB,EAAe,EAAW,aAC5B,EAAgB,EAAW,cAO/B,GANK,IACH,EAAe,EAAiB,SAAS,KAAK,SAAU,EAAW,SAAS,CAC5E,KAAK,KAAO,GAEd,KAAK,SAAW,KAAK,sBACrB,KAAK,SAAW,KAAK,sBACjB,CAAC,EAAc,CACjB,QAAQ,KAAK,0DAA4D,KAAK,KAAO,IAAI,CACzF,OAEF,GAAI,EAAY,CACd,IAAI,EAAc,EAAW,YAC7B,OAAQ,EAAR,CACE,IAAK,YACH,GAAI,CAAC,EAAa,SAAU,CAC1B,QAAQ,MAAM,oFAAqF,KAAK,CACxG,OAEF,GAAI,CAAC,EAAa,SAAS,UAAW,CACpC,QAAQ,MAAM,8GAA+G,KAAK,CAClI,OAEF,EAAe,EAAa,SAAS,UACrC,MACF,IAAK,QACH,GAAI,CAAC,EAAa,SAAU,CAC1B,QAAQ,MAAM,iFAAkF,KAAK,CACrG,OAEF,EAAe,EAAa,SAAS,MACrC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAa,OAAQ,IACzC,GAAI,EAAa,GAAI,OAAS,EAAa,CACzC,EAAc,EACd,MAGJ,MACF,IAAK,MACH,GAAI,QAAS,EAAc,CACzB,EAAe,EAAa,IAC5B,MAEF,GAAI,CAAC,EAAa,SAAU,CAC1B,QAAQ,MAAM,oFAAqF,KAAK,CACxG,OAEF,GAAI,CAAC,EAAa,SAAS,IAAK,CAC9B,QAAQ,MAAM,4FAA6F,KAAK,CAChH,OAEF,EAAe,EAAa,SAAS,IACrC,MACF,QACE,GAAI,EAAa,KAAgB,IAAK,GAAG,CACvC,QAAQ,MAAM,uEAAwE,KAAK,CAC3F,OAEF,EAAe,EAAa,GAEhC,GAAI,IAAgB,IAAK,GAAG,CAC1B,GAAI,EAAa,KAAiB,IAAK,GAAG,CACxC,QAAQ,MAAM,wFAAyF,KAAM,EAAa,CAC1H,OAEF,EAAe,EAAa,IAGhC,IAAM,EAAe,EAAa,GAClC,GAAI,IAAiB,IAAK,GAAG,CAC3B,IAAM,EAAW,EAAW,SAC5B,QAAQ,MAAM,+DAAiE,EAAW,IAAM,EAAe,wBAAyB,EAAa,CACrJ,OAEF,IAAI,EAAa,KAAK,WAAW,KACjC,KAAK,aAAe,EAChB,EAAa,cAAgB,IAAK,GAE3B,EAAa,yBAA2B,IAAK,KACtD,EAAa,KAAK,WAAW,wBAF7B,EAAa,KAAK,WAAW,YAI/B,IAAI,EAAc,KAAK,YAAY,OACnC,GAAI,IAAkB,IAAK,GAAG,CAC5B,GAAI,IAAiB,wBAAyB,CAC5C,GAAI,CAAC,EAAa,SAAU,CAC1B,QAAQ,MAAM,sGAAuG,KAAK,CAC1H,OAEF,GAAI,CAAC,EAAa,SAAS,gBAAiB,CAC1C,QAAQ,MAAM,sHAAuH,KAAK,CAC1I,OAEE,EAAa,sBAAsB,KAAmB,IAAK,KAC7D,EAAgB,EAAa,sBAAsB,IAGvD,EAAc,KAAK,YAAY,aAC/B,KAAK,iBAAmB,EACxB,KAAK,cAAgB,OACZ,EAAa,YAAc,IAAK,IAAK,EAAa,UAAY,IAAK,IAC5E,EAAc,KAAK,YAAY,eAC/B,KAAK,iBAAmB,GACf,MAAM,QAAQ,EAAa,EACpC,EAAc,KAAK,YAAY,YAC/B,KAAK,iBAAmB,GAExB,KAAK,aAAe,EAEtB,KAAK,SAAW,KAAK,oBAAoB,GACzC,KAAK,SAAW,KAAK,iCAAiC,GAAa,GAErE,QAAS,CACP,KAAK,KAAO,KACZ,KAAK,SAAW,KAAK,kBACrB,KAAK,SAAW,KAAK,oBAGzB,GAAgB,UAAY,GAC5B,GAAgB,UAAU,YAAc,CACtC,OAAQ,EACR,YAAa,EACb,aAAc,EACd,eAAgB,EACjB,CACD,GAAgB,UAAU,WAAa,CACrC,KAAM,EACN,YAAa,EACb,uBAAwB,EACzB,CACD,GAAgB,UAAU,oBAAsB,CAC9C,GAAgB,UAAU,iBAC1B,GAAgB,UAAU,gBAC1B,GAAgB,UAAU,uBAC1B,GAAgB,UAAU,kBAC3B,CACD,GAAgB,UAAU,iCAAmC,CAC3D,CAEE,GAAgB,UAAU,iBAC1B,GAAgB,UAAU,gCAC1B,GAAgB,UAAU,2CAC3B,CACD,CAEE,GAAgB,UAAU,gBAC1B,GAAgB,UAAU,+BAC1B,GAAgB,UAAU,0CAC3B,CACD,CAEE,GAAgB,UAAU,uBAC1B,GAAgB,UAAU,sCAC1B,GAAgB,UAAU,iDAC3B,CACD,CAEE,GAAgB,UAAU,oBAC1B,GAAgB,UAAU,mCAC1B,GAAgB,UAAU,8CAC3B,CACF,CACD,GAAuB,KAAM,CAC3B,aAAc,CACZ,KAAK,uBAAyB,GAC9B,KAAK,KAAO,IAAc,CAC1B,KAAK,SAAW,MAAM,UAAU,MAAM,KAAK,UAAU,CACrD,KAAK,gBAAkB,EACvB,IAAM,EAAU,EAAE,CAClB,KAAK,eAAiB,EACtB,IAAK,IAAI,EAAK,EAAGA,EAAI,UAAU,OAAQ,IAAOA,EAAG,EAAE,EACjD,EAAQ,UAAU,GAAI,MAAQ,EAEhC,KAAK,OAAS,EAAE,CAChB,KAAK,aAAe,EAAE,CACtB,KAAK,UAAY,EAAE,CACnB,KAAK,uBAAyB,EAAE,CAChC,IAAM,EAAQ,KACd,KAAK,MAAQ,CACX,QAAS,CACP,IAAI,OAAQ,CACV,OAAO,EAAM,SAAS,QAExB,IAAI,OAAQ,CACV,OAAO,KAAK,MAAQ,EAAM,iBAE7B,CACD,IAAI,mBAAoB,CACtB,OAAO,EAAM,UAAU,QAE1B,CAEH,KAAM,CACJ,IAAM,EAAU,KAAK,SAAU,EAAgB,KAAK,eAAgB,EAAQ,KAAK,OAAQ,EAAc,KAAK,aAAc,EAAW,KAAK,UAAW,EAAY,EAAS,OACtK,EAAsB,EAAW,EAAQ,OAAQ,EAAiB,KAAK,gBAC3E,IAAK,IAAI,EAAK,EAAGA,EAAI,UAAU,OAAQ,IAAOA,EAAG,EAAE,EAAI,CACrD,IAAM,EAAS,UAAU,GAAK,EAAO,EAAO,KACxC,EAAQ,EAAc,GAC1B,GAAI,IAAU,IAAK,GAAG,CACpB,EAAQ,IACR,EAAc,GAAQ,EACtB,EAAQ,KAAK,EAAO,CACpB,IAAK,IAAI,EAAK,EAAGC,EAAI,EAAW,IAAOA,EAAG,EAAE,EAC1C,EAAS,GAAI,KAAK,IAAI,GAAgB,EAAQ,EAAM,GAAK,EAAY,GAAI,CAAC,SAEnE,EAAQ,EAAgB,CACjC,EAAc,EAAQ,GACtB,IAAM,EAAmB,EAAE,EAAgB,EAAmB,EAAQ,GACtE,EAAc,EAAiB,MAAQ,EACvC,EAAQ,GAAS,EACjB,EAAc,GAAQ,EACtB,EAAQ,GAAoB,EAC5B,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAW,IAAOA,EAAG,EAAE,EAAI,CAC9C,IAAM,EAAkB,EAAS,GAAK,EAAa,EAAgB,GAC/D,EAAU,EAAgB,GAC9B,EAAgB,GAAS,EACrB,IAAY,IAAK,KACnB,EAAU,IAAI,GAAgB,EAAQ,EAAM,GAAK,EAAY,GAAI,EAEnE,EAAgB,GAAoB,QAE7B,EAAQ,KAAW,GAC5B,QAAQ,MAAM,qJAAqJ,CAGvK,KAAK,gBAAkB,EAEzB,QAAS,CACP,IAAM,EAAU,KAAK,SAAU,EAAgB,KAAK,eAAgB,EAAW,KAAK,UAAW,EAAY,EAAS,OAChH,EAAiB,KAAK,gBAC1B,IAAK,IAAI,EAAK,EAAGD,EAAI,UAAU,OAAQ,IAAOA,EAAG,EAAE,EAAI,CACrD,IAAM,EAAS,UAAU,GAAK,EAAO,EAAO,KAAM,EAAQ,EAAc,GACxE,GAAI,IAAU,IAAK,IAAK,GAAS,EAAgB,CAC/C,IAAM,EAAkB,IAAkB,EAAoB,EAAQ,GACtE,EAAc,EAAkB,MAAQ,EACxC,EAAQ,GAAS,EACjB,EAAc,GAAQ,EACtB,EAAQ,GAAmB,EAC3B,IAAK,IAAI,EAAK,EAAGC,EAAI,EAAW,IAAOA,EAAG,EAAE,EAAI,CAC9C,IAAM,EAAkB,EAAS,GAAK,EAAc,EAAgB,GAAkB,EAAU,EAAgB,GAChH,EAAgB,GAAS,EACzB,EAAgB,GAAmB,IAIzC,KAAK,gBAAkB,EAGzB,SAAU,CACR,IAAM,EAAU,KAAK,SAAU,EAAgB,KAAK,eAAgB,EAAW,KAAK,UAAW,EAAY,EAAS,OAChH,EAAiB,KAAK,gBAAiB,EAAW,EAAQ,OAC9D,IAAK,IAAI,EAAK,EAAGD,EAAI,UAAU,OAAQ,IAAOA,EAAG,EAAE,EAAI,CACrD,IAA8B,EAAf,UAAU,GAAmB,KAAM,EAAQ,EAAc,GACxE,GAAI,IAAU,IAAK,GAEjB,GADA,OAAO,EAAc,GACjB,EAAQ,EAAgB,CAC1B,IAAM,EAAmB,EAAE,EAAgB,EAAmB,EAAQ,GAAmB,EAAY,EAAE,EAAU,EAAa,EAAQ,GACtI,EAAc,EAAiB,MAAQ,EACvC,EAAQ,GAAS,EACjB,EAAc,EAAW,MAAQ,EACjC,EAAQ,GAAoB,EAC5B,EAAQ,KAAK,CACb,IAAK,IAAI,EAAK,EAAGC,EAAI,EAAW,IAAOA,EAAG,EAAE,EAAI,CAC9C,IAAM,EAAkB,EAAS,GAAK,EAAa,EAAgB,GAAmB,EAAO,EAAgB,GAC7G,EAAgB,GAAS,EACzB,EAAgB,GAAoB,EACpC,EAAgB,KAAK,MAElB,CACL,IAAM,EAAY,EAAE,EAAU,EAAa,EAAQ,GAC/C,EAAY,IACd,EAAc,EAAW,MAAQ,GAEnC,EAAQ,GAAS,EACjB,EAAQ,KAAK,CACb,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAW,IAAOA,EAAG,EAAE,EAAI,CAC9C,IAAM,EAAkB,EAAS,GACjC,EAAgB,GAAS,EAAgB,GACzC,EAAgB,KAAK,GAK7B,KAAK,gBAAkB,EAGzB,WAAW,EAAM,EAAY,CAC3B,IAAM,EAAgB,KAAK,uBACvB,EAAQ,EAAc,GACpB,EAAW,KAAK,UACtB,GAAI,IAAU,IAAK,GAAG,OAAO,EAAS,GACtC,IAAM,EAAQ,KAAK,OAAQ,EAAc,KAAK,aAAc,EAAU,KAAK,SAAU,EAAW,EAAQ,OAAQ,EAAiB,KAAK,gBAAiB,EAAsB,MAAM,EAAS,CAC5L,EAAQ,EAAS,OACjB,EAAc,GAAQ,EACtB,EAAM,KAAK,EAAK,CAChB,EAAY,KAAK,EAAW,CAC5B,EAAS,KAAK,EAAgB,CAC9B,IAAK,IAAI,EAAK,EAAgBD,EAAI,EAAQ,OAAQ,IAAOA,EAAG,EAAE,EAAI,CAChE,IAAM,EAAS,EAAQ,GACvB,EAAgB,GAAM,IAAI,GAAgB,EAAQ,EAAM,EAAW,CAErE,OAAO,EAET,aAAa,EAAM,CACjB,IAAM,EAAgB,KAAK,uBAAwB,EAAQ,EAAc,GACzE,GAAI,IAAU,IAAK,GAAG,CACpB,IAAM,EAAQ,KAAK,OAAQ,EAAc,KAAK,aAAc,EAAW,KAAK,UAAW,EAAoB,EAAS,OAAS,EAAG,EAAe,EAAS,GAAoB,EAAmB,EAAK,GACpM,EAAc,GAAoB,EAClC,EAAS,GAAS,EAClB,EAAS,KAAK,CACd,EAAY,GAAS,EAAY,GACjC,EAAY,KAAK,CACjB,EAAM,GAAS,EAAM,GACrB,EAAM,KAAK,IAIjB,GAAkB,KAAM,CACtB,YAAY,EAAO,EAAM,EAAY,KAAM,EAAY,EAAK,UAAW,CACrE,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,WAAa,EAClB,KAAK,UAAY,EACjB,IAAM,EAAS,EAAK,OAAQ,EAAU,EAAO,OAAQ,EAAmB,MAAM,EAAQ,CAChF,EAAsB,CAC1B,YAAa,GACb,UAAW,GACZ,CACD,IAAK,IAAI,EAAK,EAAG,IAAO,EAAS,EAAE,EAAI,CACrC,IAAM,EAAc,EAAO,GAAI,kBAAkB,KAAK,CACtD,EAAa,GAAM,EACnB,EAAY,SAAW,EAEzB,KAAK,qBAAuB,EAC5B,KAAK,cAAgB,EACrB,KAAK,kBAAwB,MAAM,EAAQ,CAC3C,KAAK,YAAc,KACnB,KAAK,kBAAoB,KACzB,KAAK,sBAAwB,KAC7B,KAAK,mBAAqB,KAC1B,KAAK,KAAO,GACZ,KAAK,WAAa,GAClB,KAAK,WAAa,KAClB,KAAK,KAAO,EACZ,KAAK,UAAY,EACjB,KAAK,oBAAsB,EAC3B,KAAK,OAAS,EACd,KAAK,iBAAmB,EACxB,KAAK,YAAc,IACnB,KAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,kBAAoB,GACzB,KAAK,iBAAmB,GACxB,KAAK,eAAiB,GAGxB,MAAO,CAEL,OADA,KAAK,OAAO,gBAAgB,KAAK,CAC1B,KAET,MAAO,CAEL,OADA,KAAK,OAAO,kBAAkB,KAAK,CAC5B,KAAK,OAAO,CAErB,OAAQ,CAMN,MALA,MAAK,OAAS,GACd,KAAK,QAAU,GACf,KAAK,KAAO,EACZ,KAAK,WAAa,GAClB,KAAK,WAAa,KACX,KAAK,YAAY,CAAC,aAAa,CAExC,WAAY,CACV,OAAO,KAAK,SAAW,CAAC,KAAK,QAAU,KAAK,YAAc,GAAK,KAAK,aAAe,MAAQ,KAAK,OAAO,gBAAgB,KAAK,CAG9H,aAAc,CACZ,OAAO,KAAK,OAAO,gBAAgB,KAAK,CAE1C,QAAQ,EAAM,CAEZ,MADA,MAAK,WAAaQ,EACX,KAET,QAAQ,EAAM,EAAa,CAGzB,MAFA,MAAK,KAAO,EACZ,KAAK,YAAc,EACZ,KAMT,mBAAmB,EAAQ,CAGzB,MAFA,MAAK,OAAS,EACd,KAAK,iBAAmB,KAAK,QAAU,EAAS,EACzC,KAAK,YAAY,CAG1B,oBAAqB,CACnB,OAAO,KAAK,iBAEd,OAAO,EAAU,CACf,OAAO,KAAK,gBAAgB,EAAU,EAAG,EAAE,CAE7C,QAAQ,EAAU,CAChB,OAAO,KAAK,gBAAgB,EAAU,EAAG,EAAE,CAE7C,cAAc,EAAe,EAAU,EAAM,CAG3C,GAFA,EAAc,QAAQ,EAAS,CAC/B,KAAK,OAAO,EAAS,CACjB,EAAM,CACR,IAAM,EAAiB,KAAK,MAAM,SAAU,EAAkB,EAAc,MAAM,SAAU,EAAgB,EAAkB,EAAgB,EAAgB,EAAiB,EAC/K,EAAc,KAAK,EAAG,EAAe,EAAS,CAC9C,KAAK,KAAK,EAAe,EAAG,EAAS,CAEvC,OAAO,KAET,YAAY,EAAc,EAAU,EAAM,CACxC,OAAO,EAAa,cAAc,KAAM,EAAU,EAAK,CAEzD,YAAa,CACX,IAAM,EAAoB,KAAK,mBAK/B,OAJI,IAAsB,OACxB,KAAK,mBAAqB,KAC1B,KAAK,OAAO,4BAA4B,EAAkB,EAErD,KAMT,sBAAsB,EAAW,CAG/B,MAFA,MAAK,UAAY,EACjB,KAAK,oBAAsB,KAAK,OAAS,EAAI,EACtC,KAAK,aAAa,CAG3B,uBAAwB,CACtB,OAAO,KAAK,oBAEd,YAAY,EAAU,CAEpB,MADA,MAAK,UAAY,KAAK,MAAM,SAAW,EAChC,KAAK,aAAa,CAE3B,SAAS,EAAQ,CAGf,MAFA,MAAK,KAAO,EAAO,KACnB,KAAK,UAAY,EAAO,UACjB,KAAK,aAAa,CAE3B,KAAK,EAAU,CACb,OAAO,KAAK,KAAK,KAAK,oBAAqB,EAAG,EAAS,CAEzD,KAAK,EAAgB,EAAc,EAAU,CAC3C,IAAM,EAAQ,KAAK,OAAQ,EAAO,EAAM,KAAM,EAAY,KAAK,UAC3D,EAAc,KAAK,sBACnB,IAAgB,OAClB,EAAc,EAAM,yBAAyB,CAC7C,KAAK,sBAAwB,GAE/B,IAAM,EAAQ,EAAY,mBAAoB,EAAS,EAAY,aAKnE,MAJA,GAAM,GAAK,EACX,EAAM,GAAK,EAAO,EAClB,EAAO,GAAK,EAAiB,EAC7B,EAAO,GAAK,EAAe,EACpB,KAET,aAAc,CACZ,IAAM,EAAuB,KAAK,sBAKlC,OAJI,IAAyB,OAC3B,KAAK,sBAAwB,KAC7B,KAAK,OAAO,4BAA4B,EAAqB,EAExD,KAGT,UAAW,CACT,OAAO,KAAK,OAEd,SAAU,CACR,OAAO,KAAK,MAEd,SAAU,CACR,OAAO,KAAK,YAAc,KAAK,OAAO,MAGxC,QAAQ,EAAM,EAAW,EAAe,EAAW,CACjD,GAAI,CAAC,KAAK,QAAS,CACjB,KAAK,cAAcA,EAAK,CACxB,OAEF,IAAM,EAAY,KAAK,WACvB,GAAI,IAAc,KAAM,CACtB,IAAM,GAAeA,EAAO,GAAa,EACrC,EAAc,GAAK,IAAkB,EACvC,EAAY,GAEZ,KAAK,WAAa,KAClB,EAAY,EAAgB,GAGhC,GAAa,KAAK,iBAAiBA,EAAK,CACxC,IAAM,EAAW,KAAK,YAAY,EAAU,CACtC,EAAS,KAAK,cAAcA,EAAK,CACvC,GAAI,EAAS,EAAG,CACd,IAAM,EAAe,KAAK,cACpB,EAAiB,KAAK,kBAC5B,OAAQ,KAAK,UAAb,CACE,KAAK,GACH,IAAK,IAAI,EAAK,EAAGP,EAAI,EAAa,OAAQ,IAAOA,EAAG,EAAE,EACpD,EAAa,GAAI,SAAS,EAAS,CACnC,EAAe,GAAI,mBAAmB,EAAO,CAE/C,MACF,KAAK,GACL,QACE,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAa,OAAQ,IAAOA,EAAG,EAAE,EACpD,EAAa,GAAI,SAAS,EAAS,CACnC,EAAe,GAAI,WAAW,EAAW,EAAO,GAK1D,cAAc,EAAM,CAClB,IAAI,EAAS,EACb,GAAI,KAAK,QAAS,CAChB,EAAS,KAAK,OACd,IAAM,EAAc,KAAK,mBACzB,GAAI,IAAgB,KAAM,CACxB,IAAM,EAAmB,EAAY,SAASO,EAAK,CAAC,GACpD,GAAU,EACNA,EAAO,EAAY,mBAAmB,KACxC,KAAK,YAAY,CACb,IAAqB,IACvB,KAAK,QAAU,MAMvB,MADA,MAAK,iBAAmB,EACjB,EAET,iBAAiB,EAAM,CACrB,IAAI,EAAY,EAChB,GAAI,CAAC,KAAK,OAAQ,CAChB,EAAY,KAAK,UACjB,IAAM,EAAc,KAAK,sBACzB,GAAI,IAAgB,KAAM,CACxB,IAAM,EAAmB,EAAY,SAASA,EAAK,CAAC,GACpD,GAAa,EACTA,EAAO,EAAY,mBAAmB,KACxC,KAAK,aAAa,CACd,IAAc,EAChB,KAAK,OAAS,GAEd,KAAK,UAAY,IAMzB,MADA,MAAK,oBAAsB,EACpB,EAET,YAAY,EAAW,CACrB,IAAM,EAAW,KAAK,MAAM,SACtB,EAAO,KAAK,KACdA,EAAO,KAAK,KAAO,EACnB,EAAY,KAAK,WACf,EAAW,IAAS,GAC1B,GAAI,IAAc,EAEhB,OADI,IAAc,GAAWA,EACtB,IAAa,EAAY,IAAO,EAAI,EAAWA,EAAOA,EAE/D,GAAI,IAAS,GAAU,CACjB,IAAc,KAChB,KAAK,WAAa,EAClB,KAAK,YAAY,GAAM,GAAM,GAAM,EAErC,YAAa,CACX,GAAIA,GAAQ,EACV,EAAO,UACEA,EAAO,EAChB,EAAO,MACF,CACL,KAAK,KAAOA,EACZ,MAAM,YAEJ,KAAK,kBAAmB,KAAK,OAAS,GACrC,KAAK,QAAU,GACpB,KAAK,KAAOA,EACZ,KAAK,OAAO,cAAc,CACxB,KAAM,WACN,OAAQ,KACR,UAAW,EAAY,EAAI,GAAK,EACjC,CAAC,MAEC,CASL,GARI,IAAc,KACZ,GAAa,GACf,EAAY,EACZ,KAAK,YAAY,GAAM,KAAK,cAAgB,EAAG,EAAS,EAExD,KAAK,YAAY,KAAK,cAAgB,EAAG,GAAM,EAAS,EAGxDA,GAAQ,GAAYA,EAAO,EAAG,CAChC,IAAM,EAAY,KAAK,MAAMA,EAAO,EAAS,CAC7C,GAAQ,EAAW,EACnB,GAAa,KAAK,IAAI,EAAU,CAChC,IAAM,EAAU,KAAK,YAAc,EACnC,GAAI,GAAW,EACT,KAAK,kBAAmB,KAAK,OAAS,GACrC,KAAK,QAAU,GACpB,EAAO,EAAY,EAAI,EAAW,EAClC,KAAK,KAAOA,EACZ,KAAK,OAAO,cAAc,CACxB,KAAM,WACN,OAAQ,KACR,UAAW,EAAY,EAAI,EAAI,GAChC,CAAC,KACG,CACL,GAAI,IAAY,EAAG,CACjB,IAAM,EAAU,EAAY,EAC5B,KAAK,YAAY,EAAS,CAAC,EAAS,EAAS,MAE7C,KAAK,YAAY,GAAO,GAAO,EAAS,CAE1C,KAAK,WAAa,EAClB,KAAK,KAAOA,EACZ,KAAK,OAAO,cAAc,CACxB,KAAM,OACN,OAAQ,KACR,YACD,CAAC,OAGJ,KAAK,KAAOA,EAEd,GAAI,IAAa,EAAY,IAAO,EAClC,OAAO,EAAWA,EAGtB,OAAOA,EAET,YAAY,EAAS,EAAO,EAAU,CACpC,IAAM,EAAW,KAAK,qBAClB,GACF,EAAS,YAAc,GACvB,EAAS,UAAY,KAEjB,EACF,EAAS,YAAc,KAAK,iBAAmB,GAAkB,GAEjE,EAAS,YAAc,GAErB,EACF,EAAS,UAAY,KAAK,eAAiB,GAAkB,GAE7D,EAAS,UAAY,IAI3B,gBAAgB,EAAU,EAAW,EAAY,CAC/C,IAAM,EAAQ,KAAK,OAAQ,EAAO,EAAM,KACpC,EAAc,KAAK,mBACnB,IAAgB,OAClB,EAAc,EAAM,yBAAyB,CAC7C,KAAK,mBAAqB,GAE5B,IAAM,EAAQ,EAAY,mBAAoB,EAAS,EAAY,aAKnE,MAJA,GAAM,GAAK,EACX,EAAO,GAAK,EACZ,EAAM,GAAK,EAAO,EAClB,EAAO,GAAK,EACL,OAGX,GAAmC,IAAI,aAAa,EAAE,CACtD,GAAiB,cAAc,EAAgB,CAC7C,YAAY,EAAM,CAChB,OAAO,CACP,KAAK,MAAQ,EACb,KAAK,oBAAoB,CACzB,KAAK,WAAa,EAClB,KAAK,KAAO,EACZ,KAAK,UAAY,EAEnB,YAAY,EAAQ,EAAiB,CACnC,IAAM,EAAO,EAAO,YAAc,KAAK,MAAO,EAAS,EAAO,MAAM,OAAQ,EAAU,EAAO,OAAQ,EAAW,EAAO,kBAAmB,EAAe,EAAO,cAAe,EAAW,EAAK,KAAM,EAAiB,KAAK,uBACvN,EAAiB,EAAe,GAChC,IAAmB,IAAK,KAC1B,EAAiB,EAAE,CACnB,EAAe,GAAY,GAE7B,IAAK,IAAI,EAAK,EAAG,IAAO,EAAS,EAAE,EAAI,CACrC,IAAM,EAAQ,EAAO,GAAK,EAAY,EAAM,KACxC,EAAU,EAAe,GAC7B,GAAI,IAAY,IAAK,GACnB,EAAE,EAAQ,eACV,EAAS,GAAM,MACV,CAEL,GADA,EAAU,EAAS,GACf,IAAY,IAAK,GAAG,CAClB,EAAQ,cAAgB,OAC1B,EAAE,EAAQ,eACV,KAAK,oBAAoB,EAAS,EAAU,EAAU,EAExD,SAEF,IAAM,EAAO,GAAmB,EAAgB,kBAAkB,GAAI,QAAQ,WAC9E,EAAU,IAAI,GACZ,GAAgB,OAAO,EAAM,EAAW,EAAK,CAC7C,EAAM,cACN,EAAM,cAAc,CACrB,CACD,EAAE,EAAQ,eACV,KAAK,oBAAoB,EAAS,EAAU,EAAU,CACtD,EAAS,GAAM,EAEjB,EAAa,GAAI,aAAe,EAAQ,QAG5C,gBAAgB,EAAQ,CACtB,GAAI,CAAC,KAAK,gBAAgB,EAAO,CAAE,CACjC,GAAI,EAAO,cAAgB,KAAM,CAC/B,IAAM,GAAY,EAAO,YAAc,KAAK,OAAO,KAAM,EAAW,EAAO,MAAM,KAAM,EAAiB,KAAK,eAAe,GAC5H,KAAK,YACH,EACA,GAAkB,EAAe,aAAa,GAC/C,CACD,KAAK,mBAAmB,EAAQ,EAAU,EAAS,CAErD,IAAM,EAAW,EAAO,kBACxB,IAAK,IAAI,EAAK,EAAGR,EAAI,EAAS,OAAQ,IAAOA,EAAG,EAAE,EAAI,CACpD,IAAM,EAAU,EAAS,GACrB,EAAQ,aAAe,IACzB,KAAK,aAAa,EAAQ,CAC1B,EAAQ,mBAAmB,EAG/B,KAAK,YAAY,EAAO,EAG5B,kBAAkB,EAAQ,CACxB,GAAI,KAAK,gBAAgB,EAAO,CAAE,CAChC,IAAM,EAAW,EAAO,kBACxB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAS,OAAQ,IAAOA,EAAG,EAAE,EAAI,CACpD,IAAM,EAAU,EAAS,GACrB,EAAE,EAAQ,WAAa,IACzB,EAAQ,sBAAsB,CAC9B,KAAK,iBAAiB,EAAQ,EAGlC,KAAK,gBAAgB,EAAO,EAIhC,oBAAqB,CACnB,KAAK,SAAW,EAAE,CAClB,KAAK,gBAAkB,EACvB,KAAK,eAAiB,EAAE,CACxB,KAAK,UAAY,EAAE,CACnB,KAAK,iBAAmB,EACxB,KAAK,uBAAyB,EAAE,CAChC,KAAK,qBAAuB,EAAE,CAC9B,KAAK,4BAA8B,EACnC,IAAM,EAAQ,KACd,KAAK,MAAQ,CACX,QAAS,CACP,IAAI,OAAQ,CACV,OAAO,EAAM,SAAS,QAExB,IAAI,OAAQ,CACV,OAAO,EAAM,iBAEhB,CACD,SAAU,CACR,IAAI,OAAQ,CACV,OAAO,EAAM,UAAU,QAEzB,IAAI,OAAQ,CACV,OAAO,EAAM,kBAEhB,CACD,oBAAqB,CACnB,IAAI,OAAQ,CACV,OAAO,EAAM,qBAAqB,QAEpC,IAAI,OAAQ,CACV,OAAO,EAAM,6BAEhB,CACF,CAGH,gBAAgB,EAAQ,CACtB,IAAM,EAAQ,EAAO,YACrB,OAAO,IAAU,MAAQ,EAAQ,KAAK,gBAExC,mBAAmB,EAAQ,EAAU,EAAU,CAC7C,IAAM,EAAU,KAAK,SAAU,EAAgB,KAAK,eAChD,EAAiB,EAAc,GACnC,GAAI,IAAmB,IAAK,GAC1B,EAAiB,CACf,aAAc,CAAC,EAAO,CACtB,aAAc,EAAE,CACjB,CACD,EAAO,kBAAoB,EAC3B,EAAc,GAAY,MACrB,CACL,IAAM,EAAe,EAAe,aACpC,EAAO,kBAAoB,EAAa,OACxC,EAAa,KAAK,EAAO,CAE3B,EAAO,YAAc,EAAQ,OAC7B,EAAQ,KAAK,EAAO,CACpB,EAAe,aAAa,GAAY,EAE1C,sBAAsB,EAAQ,CAC5B,IAAM,EAAU,KAAK,SAAU,EAAqB,EAAQ,EAAQ,OAAS,GAAI,EAAa,EAAO,YACrG,EAAmB,YAAc,EACjC,EAAQ,GAAc,EACtB,EAAQ,KAAK,CACb,EAAO,YAAc,KACrB,IAAM,EAAW,EAAO,MAAM,KAAM,EAAgB,KAAK,eAAgB,EAAiB,EAAc,GAAW,EAAsB,EAAe,aAAc,EAAkB,EAAoB,EAAoB,OAAS,GAAI,EAAmB,EAAO,kBACvQ,EAAgB,kBAAoB,EACpC,EAAoB,GAAoB,EACxC,EAAoB,KAAK,CACzB,EAAO,kBAAoB,KAC3B,IAAM,EAAe,EAAe,aAAc,GAAY,EAAO,YAAc,KAAK,OAAO,KAC/F,OAAO,EAAa,GAChB,EAAoB,SAAW,GACjC,OAAO,EAAc,GAEvB,KAAK,iCAAiC,EAAO,CAE/C,iCAAiC,EAAQ,CACvC,IAAM,EAAW,EAAO,kBACxB,IAAK,IAAI,EAAK,EAAGA,EAAI,EAAS,OAAQ,IAAOA,EAAG,EAAE,EAAI,CACpD,IAAM,EAAU,EAAS,GACrB,EAAE,EAAQ,iBAAmB,GAC/B,KAAK,uBAAuB,EAAQ,EAI1C,YAAY,EAAQ,CAClB,IAAM,EAAU,KAAK,SAAU,EAAY,EAAO,YAAa,EAAkB,KAAK,kBAAmB,EAAsB,EAAQ,GACvI,EAAO,YAAc,EACrB,EAAQ,GAAmB,EAC3B,EAAoB,YAAc,EAClC,EAAQ,GAAa,EAEvB,gBAAgB,EAAQ,CACtB,IAAM,EAAU,KAAK,SAAU,EAAY,EAAO,YAAa,EAAqB,EAAE,KAAK,gBAAiB,EAAmB,EAAQ,GACvI,EAAO,YAAc,EACrB,EAAQ,GAAsB,EAC9B,EAAiB,YAAc,EAC/B,EAAQ,GAAa,EAGvB,oBAAoB,EAAS,EAAU,EAAW,CAChD,IAAM,EAAiB,KAAK,uBAAwB,EAAW,KAAK,UAChE,EAAgB,EAAe,GAC/B,IAAkB,IAAK,KACzB,EAAgB,EAAE,CAClB,EAAe,GAAY,GAE7B,EAAc,GAAa,EAC3B,EAAQ,YAAc,EAAS,OAC/B,EAAS,KAAK,EAAQ,CAExB,uBAAuB,EAAS,CAC9B,IAAM,EAAW,KAAK,UAAW,EAAc,EAAQ,QAAS,EAAW,EAAY,SAAS,KAAM,EAAY,EAAY,KAAM,EAAiB,KAAK,uBAAwB,EAAgB,EAAe,GAAW,EAAsB,EAAS,EAAS,OAAS,GAAI,EAAa,EAAQ,YACtS,EAAoB,YAAc,EAClC,EAAS,GAAc,EACvB,EAAS,KAAK,CACd,OAAO,EAAc,GACjB,OAAO,KAAK,EAAc,CAAC,SAAW,GACxC,OAAO,EAAe,GAG1B,aAAa,EAAS,CACpB,IAAM,EAAW,KAAK,UAAW,EAAY,EAAQ,YAAa,EAAkB,KAAK,mBAAoB,EAAuB,EAAS,GAC7I,EAAQ,YAAc,EACtB,EAAS,GAAmB,EAC5B,EAAqB,YAAc,EACnC,EAAS,GAAa,EAExB,iBAAiB,EAAS,CACxB,IAAM,EAAW,KAAK,UAAW,EAAY,EAAQ,YAAa,EAAqB,EAAE,KAAK,iBAAkB,EAAoB,EAAS,GAC7I,EAAQ,YAAc,EACtB,EAAS,GAAsB,EAC/B,EAAkB,YAAc,EAChC,EAAS,GAAa,EAGxB,yBAA0B,CACxB,IAAM,EAAe,KAAK,qBAAsB,EAAkB,KAAK,8BACnE,EAAc,EAAa,GAW/B,OAVI,IAAgB,IAAK,KACvB,EAAc,IAAI,GAChB,IAAI,aAAa,EAAE,CACnB,IAAI,aAAa,EAAE,CACnB,EACA,GACD,CACD,EAAY,aAAe,EAC3B,EAAa,GAAmB,GAE3B,EAET,4BAA4B,EAAa,CACvC,IAAM,EAAe,KAAK,qBAAsB,EAAY,EAAY,aAAc,EAAqB,EAAE,KAAK,4BAA6B,EAAwB,EAAa,GACpL,EAAY,aAAe,EAC3B,EAAa,GAAsB,EACnC,EAAsB,aAAe,EACrC,EAAa,GAAa,EAK5B,WAAW,EAAM,EAAc,EAAW,CACxC,IAAM,EAAO,GAAgB,KAAK,MAAO,EAAW,EAAK,KACrD,EAAa,OAAO,GAAS,SAAW,GAAc,WAAW,EAAM,EAAK,CAAG,EAC7E,EAAW,IAAe,KAAyB,EAAlB,EAAW,KAC5C,EAAiB,KAAK,eAAe,GACvC,EAAkB,KAQtB,GAPI,IAAc,IAAK,KACrB,AACE,EADE,IAAe,KAGL,GAFA,EAAW,WAKvB,IAAmB,IAAK,GAAG,CAC7B,IAAM,EAAiB,EAAe,aAAa,GACnD,GAAI,IAAmB,IAAK,IAAK,EAAe,YAAc,EAC5D,OAAO,EAET,EAAkB,EAAe,aAAa,GAC1C,IAAe,OACjB,EAAa,EAAgB,OAEjC,GAAI,IAAe,KAAM,OAAO,KAChC,IAAM,EAAY,IAAI,GAAgB,KAAM,EAAY,EAAc,EAAU,CAGhF,OAFA,KAAK,YAAY,EAAW,EAAgB,CAC5C,KAAK,mBAAmB,EAAW,EAAU,EAAS,CAC/C,EAGT,eAAe,EAAM,EAAc,CACjC,IAAM,EAAO,GAAgB,KAAK,MAAO,EAAW,EAAK,KAAM,EAAa,OAAO,GAAS,SAAW,GAAc,WAAW,EAAM,EAAK,CAAG,EAAM,EAAW,EAAa,EAAW,KAAO,EAAM,EAAiB,KAAK,eAAe,GAIzO,OAHI,IAAmB,IAAK,GAGrB,KAFE,EAAe,aAAa,IAAa,KAKpD,eAAgB,CACd,IAAM,EAAU,KAAK,SAAU,EAAW,KAAK,gBAC/C,IAAK,IAAI,EAAK,EAAW,EAAG,GAAM,EAAG,EAAE,EACrC,EAAQ,GAAI,MAAM,CAEpB,OAAO,KAGT,OAAO,EAAW,CAChB,GAAa,KAAK,UAClB,IAAM,EAAU,KAAK,SAAU,EAAW,KAAK,gBAAiBQ,EAAO,KAAK,MAAQ,EAAW,EAAgB,KAAK,KAAK,EAAU,CAAE,EAAY,KAAK,YAAc,EACpK,IAAK,IAAI,EAAK,EAAG,IAAO,EAAU,EAAE,EACnB,EAAQ,GAChB,QAAQA,EAAM,EAAW,EAAe,EAAU,CAE3D,IAAM,EAAW,KAAK,UAAW,EAAY,KAAK,iBAClD,IAAK,IAAI,EAAK,EAAG,IAAO,EAAW,EAAE,EACnC,EAAS,GAAI,MAAM,EAAU,CAE/B,OAAO,KAGT,QAAQ,EAAe,CACrB,KAAK,KAAO,EACZ,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,SAAS,OAAQ,IAC1C,KAAK,SAAS,GAAI,KAAO,EAE3B,OAAO,KAAK,OAAO,EAAc,CAGnC,SAAU,CACR,OAAO,KAAK,MAGd,YAAY,EAAM,CAChB,IAAM,EAAU,KAAK,SAAU,EAAW,EAAK,KAAM,EAAgB,KAAK,eAAgB,EAAiB,EAAc,GACzH,GAAI,IAAmB,IAAK,GAAG,CAC7B,IAAM,EAAkB,EAAe,aACvC,IAAK,IAAI,EAAK,EAAGR,EAAI,EAAgB,OAAQ,IAAOA,EAAG,EAAE,EAAI,CAC3D,IAAM,EAAS,EAAgB,GAC/B,KAAK,kBAAkB,EAAO,CAC9B,IAAM,EAAa,EAAO,YAAa,EAAqB,EAAQ,EAAQ,OAAS,GACrF,EAAO,YAAc,KACrB,EAAO,kBAAoB,KAC3B,EAAmB,YAAc,EACjC,EAAQ,GAAc,EACtB,EAAQ,KAAK,CACb,KAAK,iCAAiC,EAAO,CAE/C,OAAO,EAAc,IAIzB,YAAY,EAAM,CAChB,IAAM,EAAW,EAAK,KAAM,EAAgB,KAAK,eACjD,IAAK,IAAM,KAAY,EAAe,CACpC,IAA2D,EAAtC,EAAc,GAAU,aAAoC,GAC7E,IAAW,IAAK,KAClB,KAAK,kBAAkB,EAAO,CAC9B,KAAK,sBAAsB,EAAO,EAGtC,IAAoD,EAA7B,KAAK,uBAAuD,GACnF,GAAI,IAAkB,IAAK,GACzB,IAAK,IAAM,KAAa,EAAe,CACrC,IAAM,EAAU,EAAc,GAC9B,EAAQ,sBAAsB,CAC9B,KAAK,uBAAuB,EAAQ,EAK1C,cAAc,EAAM,EAAc,CAChC,IAAM,EAAS,KAAK,eAAe,EAAM,EAAa,CAClD,IAAW,OACb,KAAK,kBAAkB,EAAO,CAC9B,KAAK,sBAAsB,EAAO,IAIxC,GAAU,MAAM,CAAS,CACvB,YAAY,EAAO,CACjB,KAAK,MAAQ,EAEf,OAAQ,CACN,OAAO,IAAI,EAAS,KAAK,MAAM,QAAU,IAAK,GAAI,KAAK,MAAQ,KAAK,MAAM,OAAO,CAAC,GAGtF,GAAM,EACN,GAAgB,cAAc,EAAgB,CAC5C,aAAc,CACZ,OAAO,CACP,KAAK,gBAAkB,GACvB,OAAO,eAAe,KAAM,KAAM,CAAE,MAAO,KAAO,CAAC,CACnD,KAAK,KAAO,GACZ,KAAK,MAAQ,GACb,KAAK,SAAW,EAAE,CAEpB,IAAI,EAAS,CAEX,OADA,KAAK,SAAS,KAAK,EAAQ,CACpB,KAET,OAAO,EAAS,CACd,IAAM,EAAQ,KAAK,SAAS,QAAQ,EAAQ,CAE5C,OADI,IAAU,IAAI,KAAK,SAAS,OAAO,EAAO,EAAE,CACzC,KAET,QAAQ,EAAM,CAEZ,MADA,MAAK,KAAO,EACL,KAET,SAAS,EAAO,CAEd,MADA,MAAK,MAAQ,EACN,KAET,SAAU,CAER,OADA,KAAK,cAAc,CAAE,KAAM,UAAW,CAAC,CAChC,KAET,KAAK,EAAQ,CACX,KAAK,KAAO,EAAO,KACnB,KAAK,MAAQ,EAAO,MACpB,IAAM,EAAiB,EAAO,SAC9B,KAAK,SAAS,OAAS,EACvB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAe,OAAQ,EAAK,EAAI,IAAM,CAC1D,IAAM,EAAW,MAAM,QAAQ,EAAe,GAAI,CAAG,EAAe,GAAM,CAAC,EAAe,GAAI,CAC9F,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,OAAQ,IACrC,KAAK,SAAS,KAAK,EAAS,GAAI,OAAO,CAAC,CAG5C,OAAO,KAET,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,GAG5C,GAA6B,cAAc,EAAkB,CAC3D,YAAY,EAAO,EAAQ,EAAmB,EAAG,CAC/C,MAAM,EAAO,EAAO,CACpB,KAAK,6BAA+B,GACpC,KAAK,iBAAmB,EAE1B,KAAK,EAAQ,CAGX,OAFA,MAAM,KAAK,EAAO,CAClB,KAAK,iBAAmB,EAAO,iBACxB,KAET,MAAM,EAAM,CACV,IAAM,EAAK,MAAM,MAAM,EAAK,CAE5B,MADA,GAAG,iBAAmB,KAAK,iBACpB,EAET,OAAO,EAAM,CACX,IAAM,EAAO,MAAM,OAAO,EAAK,CAG/B,MAFA,GAAK,6BAA+B,GACpC,EAAK,iBAAmB,KAAK,iBACtB,IAGX,GAAoB,KAAM,CACxB,YAAY,EAAQ,EAAM,EAAU,EAAa,EAAO,CACtD,KAAK,oBAAsB,GAC3B,KAAK,KAAO,GACZ,KAAK,OAAS,EACd,KAAK,KAAO,EACZ,KAAK,SAAW,EAChB,KAAK,YAAc,EACnB,KAAK,MAAQ,EACb,KAAK,QAAU,EAEjB,IAAI,YAAY,EAAO,CACjB,IAAU,IAAM,KAAK,UAE3B,UAAU,EAAQ,CAEhB,MADA,MAAK,OAAS,EACP,KAET,QAAQ,EAAM,EAAa,CAGzB,MAFA,MAAK,KAAO,EACZ,KAAK,YAAc,EACZ,KAET,YAAY,EAAU,CAEpB,MADA,MAAK,SAAW,EACT,KAET,SAAS,EAAO,CAEd,MADA,MAAK,MAAQ,EACN,OAGX,GAA0B,IAAI,GAC9B,GAAY,KAAM,CAChB,YAAY,EAAQ,EAAW,EAAO,EAAG,EAAM,IAAU,CACvD,KAAK,IAAM,IAAI,GAAI,EAAQ,EAAU,CACrC,KAAK,KAAO,EACZ,KAAK,IAAM,EACX,KAAK,OAAS,KACd,KAAK,OAAS,IAAI,GAClB,KAAK,OAAS,CACZ,KAAM,EAAE,CACR,KAAM,CAAE,UAAW,EAAG,CACtB,IAAK,EAAE,CACP,OAAQ,CAAE,UAAW,EAAG,CACxB,OAAQ,EAAE,CACX,CAEH,IAAI,EAAQ,EAAW,CACrB,KAAK,IAAI,IAAI,EAAQ,EAAU,CAEjC,cAAc,EAAQ,EAAQ,CACxB,EAAO,qBACT,KAAK,IAAI,OAAO,sBAAsB,EAAO,YAAY,CACzD,KAAK,IAAI,UAAU,IAAI,EAAO,EAAG,EAAO,EAAG,GAAI,CAAC,UAAU,EAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,WAAW,CAClG,KAAK,OAAS,GACL,EAAO,sBAChB,KAAK,IAAI,OAAO,IAAI,EAAO,EAAG,EAAO,GAAI,EAAO,KAAO,EAAO,MAAQ,EAAO,KAAO,EAAO,KAAK,CAAC,UAAU,EAAO,CAClH,KAAK,IAAI,UAAU,IAAI,EAAG,EAAG,GAAG,CAAC,mBAAmB,EAAO,YAAY,CACvE,KAAK,OAAS,GAEd,QAAQ,MAAM,6CAA+C,EAAO,KAAK,CAG7E,oBAAoB,EAAY,CAI9B,OAHA,GAAQ,UAAU,CAAC,gBAAgBkG,EAAW,YAAY,CAC1D,KAAK,IAAI,OAAO,sBAAsBA,EAAW,YAAY,CAC7D,KAAK,IAAI,UAAU,IAAI,EAAG,EAAG,GAAG,CAAC,aAAa,GAAQ,CAC/C,KAET,gBAAgB,EAAQ,EAAY,GAAM,EAAc,EAAE,CAAE,CAG1D,OAFA,GAAU,EAAQ,KAAM,EAAa,EAAU,CAC/C,EAAY,KAAK,GAAQ,CAClB,EAET,iBAAiB,EAAS,EAAY,GAAM,EAAc,EAAE,CAAE,CAC5D,IAAK,IAAI,EAAK,EAAG,EAAK,EAAQ,OAAQ,EAAK,EAAI,IAC7C,GAAU,EAAQ,GAAK,KAAM,EAAa,EAAU,CAGtD,OADA,EAAY,KAAK,GAAQ,CAClB,IAGX,GAAY,KAAM,CAChB,YAAY,EAAS,EAAG,EAAM,EAAG,EAAQ,EAAG,CAI1C,MAHA,MAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,MAAQ,EACN,KAET,IAAI,EAAQ,EAAK,EAAO,CAItB,MAHA,MAAK,OAAS,EACd,KAAK,IAAM,EACX,KAAK,MAAQ,EACN,KAET,KAAK,EAAO,CAIV,MAHA,MAAK,OAAS,EAAM,OACpB,KAAK,IAAM,EAAM,IACjB,KAAK,MAAQ,EAAM,MACZ,KAGT,UAAW,CACT,IAAM,EAAM,KAEZ,MADA,MAAK,IAAM,KAAK,IAAI,EAAK,KAAK,IAAI,KAAK,GAAK,EAAK,KAAK,IAAI,CAAC,CACpD,KAET,eAAe,EAAI,CACjB,OAAO,KAAK,uBAAuB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAEtD,uBAAuB,EAAG,EAAI,EAAI,CAShC,MARA,MAAK,OAAS,KAAK,KAAKhG,EAAIA,EAAI,EAAK,EAAK,EAAK,EAAG,CAC9C,KAAK,SAAW,GAClB,KAAK,MAAQ,EACb,KAAK,IAAM,IAEX,KAAK,MAAQ,KAAK,MAAMA,EAAG,EAAG,CAC9B,KAAK,IAAM,KAAK,KAAKH,GAAM,EAAK,KAAK,OAAQ,GAAI,EAAE,CAAC,EAE/C,KAET,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,GAG5C,GAAc,KAAM,CAClB,YAAY,EAAS,EAAG,EAAQ,EAAG,EAAK,EAAG,CAIzC,MAHA,MAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,EAAI,EACF,KAET,IAAI,EAAQ,EAAO,EAAI,CAIrB,MAHA,MAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,EAAI,EACF,KAET,KAAK,EAAO,CAIV,MAHA,MAAK,OAAS,EAAM,OACpB,KAAK,MAAQ,EAAM,MACnB,KAAK,EAAI,EAAM,EACR,KAET,eAAe,EAAI,CACjB,OAAO,KAAK,uBAAuB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAEtD,uBAAuB,EAAG,EAAI,EAAI,CAIhC,MAHA,MAAK,OAAS,KAAK,KAAKG,EAAIA,EAAI,EAAK,EAAG,CACxC,KAAK,MAAQ,KAAK,MAAMA,EAAG,EAAG,CAC9B,KAAK,EAAI,EACF,KAET,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,GAG5C,GAAU,MAAM,CAAS,CACvB,YAAY,EAAK,EAAK,EAAK,EAAK,CAC9B,EAAS,UAAU,UAAY,GAC/B,KAAK,SAAW,CACd,EACA,EACA,EACA,EACD,CACG,IAAQ,IAAK,IACf,KAAK,IAAI,EAAK,EAAK,EAAK,EAAI,CAGhC,UAAW,CAOT,OANA,KAAK,IACH,EACA,EACA,EACA,EACD,CACM,KAET,UAAU,EAAO,EAAS,EAAG,CAC3B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IACvB,KAAK,SAAS,GAAM,EAAM,EAAK,GAEjC,OAAO,KAET,IAAI,EAAK,EAAK,EAAK,EAAK,CACtB,IAAM2F,EAAK,KAAK,SAKhB,MAJA,GAAG,GAAK,EACR,EAAG,GAAK,EACR,EAAG,GAAK,EACR,EAAG,GAAK,EACD,OAGX,GAA4B,IAAI,EAChC,GAAO,KAAM,CACX,YAAY,EAAM,IAAI,EAAQ,IAAU,IAAS,CAAE,EAAM,IAAI,EAAQ,KAAW,KAAU,CAAE,CAC1F,KAAK,OAAS,GACd,KAAK,IAAM,EACX,KAAK,IAAM,EAEb,IAAI,EAAK,EAAK,CAGZ,OAFA,KAAK,IAAI,KAAK,EAAI,CAClB,KAAK,IAAI,KAAK,EAAI,CACX,KAET,cAAc,EAAQ,CACpB,KAAK,WAAW,CAChB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,OAAQ,EAAK,EAAI,IAC5C,KAAK,cAAc,EAAO,GAAI,CAEhC,OAAO,KAET,qBAAqB,EAAQ,EAAM,CACjC,IAAM,EAAW,GAAU,KAAK,EAAK,CAAC,eAAe,GAAI,CAGzD,OAFA,KAAK,IAAI,KAAK,EAAO,CAAC,IAAI,EAAS,CACnC,KAAK,IAAI,KAAK,EAAO,CAAC,IAAI,EAAS,CAC5B,KAET,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,CAE1C,KAAK,EAAK,CAGR,OAFA,KAAK,IAAI,KAAK,EAAI,IAAI,CACtB,KAAK,IAAI,KAAK,EAAI,IAAI,CACf,KAET,WAAY,CAGV,MAFA,MAAK,IAAI,EAAI,KAAK,IAAI,EAAI,IAC1B,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,KACnB,KAET,SAAU,CACR,OAAO,KAAK,IAAI,EAAI,KAAK,IAAI,GAAK,KAAK,IAAI,EAAI,KAAK,IAAI,EAE1D,UAAU,EAAS,CACjB,OAAO,KAAK,SAAS,CAAG,EAAQ,IAAI,EAAG,EAAE,CAAG,EAAQ,WAAW,KAAK,IAAK,KAAK,IAAI,CAAC,eAAe,GAAI,CAExG,QAAQ,EAAS,CACf,OAAO,KAAK,SAAS,CAAG,EAAQ,IAAI,EAAG,EAAE,CAAG,EAAQ,WAAW,KAAK,IAAK,KAAK,IAAI,CAEpF,cAAc,EAAO,CAGnB,OAFA,KAAK,IAAI,IAAI,EAAM,CACnB,KAAK,IAAI,IAAI,EAAM,CACZ,KAET,eAAe,EAAQ,CAGrB,OAFA,KAAK,IAAI,IAAI,EAAO,CACpB,KAAK,IAAI,IAAI,EAAO,CACb,KAET,eAAe,EAAQ,CAGrB,OAFA,KAAK,IAAI,UAAU,CAAC,EAAO,CAC3B,KAAK,IAAI,UAAU,EAAO,CACnB,KAET,cAAc,EAAO,CACnB,OAAO,EAAM,GAAK,KAAK,IAAI,GAAK,EAAM,GAAK,KAAK,IAAI,GAAK,EAAM,GAAK,KAAK,IAAI,GAAK,EAAM,GAAK,KAAK,IAAI,EAExG,YAAY,EAAK,CACf,OAAO,KAAK,IAAI,GAAK,EAAI,IAAI,GAAK,EAAI,IAAI,GAAK,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAI,IAAI,GAAK,EAAI,IAAI,GAAK,KAAK,IAAI,EAEhH,aAAa,EAAO,EAAS,CAC3B,OAAO,EAAQ,KACZ,EAAM,EAAI,KAAK,IAAI,IAAM,KAAK,IAAI,EAAI,KAAK,IAAI,IAC/C,EAAM,EAAI,KAAK,IAAI,IAAM,KAAK,IAAI,EAAI,KAAK,IAAI,GACjD,CAEH,cAAc,EAAK,CACjB,OAAO,EAAI,IAAI,GAAK,KAAK,IAAI,GAAK,EAAI,IAAI,GAAK,KAAK,IAAI,GAAK,EAAI,IAAI,GAAK,KAAK,IAAI,GAAK,EAAI,IAAI,GAAK,KAAK,IAAI,EAEhH,WAAW,EAAO,EAAS,CACzB,OAAO,EAAQ,KAAK,EAAM,CAAC,MAAM,KAAK,IAAK,KAAK,IAAI,CAEtD,gBAAgB,EAAO,CACrB,OAAO,KAAK,WAAW,EAAO,GAAU,CAAC,WAAW,EAAM,CAE5D,UAAU,EAAK,CAIb,OAHA,KAAK,IAAI,IAAI,EAAI,IAAI,CACrB,KAAK,IAAI,IAAI,EAAI,IAAI,CACjB,KAAK,SAAS,EAAE,KAAK,WAAW,CAC7B,KAET,MAAM,EAAK,CAGT,OAFA,KAAK,IAAI,IAAI,EAAI,IAAI,CACrB,KAAK,IAAI,IAAI,EAAI,IAAI,CACd,KAET,UAAU,EAAQ,CAGhB,OAFA,KAAK,IAAI,IAAI,EAAO,CACpB,KAAK,IAAI,IAAI,EAAO,CACb,KAET,OAAO,EAAK,CACV,OAAO,EAAI,IAAI,OAAO,KAAK,IAAI,EAAI,EAAI,IAAI,OAAO,KAAK,IAAI,GAG/D,GAA0B,IAAI,EAC9B,GAA4B,IAAI,EAChC,GAAQ,KAAM,CACZ,YAAY,EAAQ,IAAI,EAAW,EAAM,IAAI,EAAW,CACtD,KAAK,MAAQ,EACb,KAAK,IAAM,EAEb,IAAI,EAAO,EAAK,CAGd,OAFA,KAAK,MAAM,KAAK,EAAM,CACtB,KAAK,IAAI,KAAK,EAAI,CACX,KAET,KAAK,EAAM,CAGT,OAFA,KAAK,MAAM,KAAK,EAAK,MAAM,CAC3B,KAAK,IAAI,KAAK,EAAK,IAAI,CAChB,KAET,UAAU,EAAS,CACjB,OAAO,EAAQ,WAAW,KAAK,MAAO,KAAK,IAAI,CAAC,eAAe,GAAI,CAErE,MAAM,EAAS,CACb,OAAO,EAAQ,WAAW,KAAK,IAAK,KAAK,MAAM,CAEjD,YAAa,CACX,OAAO,KAAK,MAAM,kBAAkB,KAAK,IAAI,CAE/C,UAAW,CACT,OAAO,KAAK,MAAM,WAAW,KAAK,IAAI,CAExC,GAAG,EAAI,EAAS,CACd,OAAO,KAAK,MAAM,EAAQ,CAAC,eAAe,EAAG,CAAC,IAAI,KAAK,MAAM,CAE/D,6BAA6B,EAAO,EAAa,CAC/C,GAAQ,WAAW,EAAO,KAAK,MAAM,CACrC,GAAU,WAAW,KAAK,IAAK,KAAK,MAAM,CAC1C,IAAM,EAAY,GAAU,IAAI,GAAU,CAEtC,EADoB,GAAU,IAAI,GAAQ,CACnB,EAI3B,OAHI,IACF,EAAK9F,GAAM,EAAI,EAAG,EAAE,EAEf,EAET,oBAAoB,EAAO,EAAa,EAAS,CAC/C,IAAM,EAAK,KAAK,6BAA6B,EAAO,EAAY,CAChE,OAAO,KAAK,MAAM,EAAQ,CAAC,eAAe,EAAG,CAAC,IAAI,KAAK,MAAM,CAE/D,aAAa,EAAS,CAGpB,OAFA,KAAK,MAAM,aAAa,EAAQ,CAChC,KAAK,IAAI,aAAa,EAAQ,CACvB,KAET,OAAO,EAAM,CACX,OAAO,EAAK,MAAM,OAAO,KAAK,MAAM,EAAI,EAAK,IAAI,OAAO,KAAK,IAAI,CAEnE,OAAQ,CACN,OAAO,IAAI,KAAK,aAAa,CAAC,KAAK,KAAK,GAG5C,GAA4B,IAAI,EAChC,GAAkB,cAAc,EAAS,CACvC,YAAY,EAAO,EAAO,CACxB,OAAO,CACP,KAAK,MAAQ,EACb,KAAK,iBAAmB,GACxB,KAAK,MAAQD,EACb,KAAK,KAAO,kBACZ,IAAM,EAAW,IAAI,GACf,EAAY,CAChB,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACD,CACD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAY,EAAK,GAAI,IAAM,IAAM,CACrD,IAAM,EAAK,EAAK,GAAK,KAAK,GAAK,EACzB,EAAM,EAAK,GAAK,KAAK,GAAK,EAChC,EAAU,KACR,KAAK,IAAI,EAAG,CACZ,KAAK,IAAI,EAAG,CACZ,EACA,KAAK,IAAI,EAAI,CACb,KAAK,IAAI,EAAI,CACb,EACD,CAEH,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAW,EAAE,CAAC,CAC3E,IAAM,EAAW,IAAI,GAAkB,CAAE,IAAK,GAAO,WAAY,GAAO,CAAC,CACzE,KAAK,KAAO,IAAI,GAAa,EAAU,EAAS,CAChD,KAAK,IAAI,KAAK,KAAK,CACnB,KAAK,QAAQ,CAEf,SAAU,CACR,KAAK,KAAK,SAAS,SAAS,CAC5B,KAAK,KAAK,SAAS,SAAS,CAE9B,QAAS,CACP,KAAK,MAAM,kBAAkB,GAAM,GAAM,CACzC,KAAK,MAAM,OAAO,kBAAkB,GAAM,GAAM,CAC5C,KAAK,QACP,KAAK,OAAO,kBAAkB,GAAK,CACnC,KAAK,OAAO,KAAK,KAAK,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,EAEnF,KAAK,OAAO,KAAK,KAAK,MAAM,YAAY,CAE1C,KAAK,YAAY,KAAK,KAAK,MAAM,YAAY,CAC7C,IAAM,EAAa,KAAK,MAAM,SAAW,KAAK,MAAM,SAAW,IACzD,EAAY,EAAa,KAAK,IAAI,KAAK,MAAM,MAAM,CACzD,KAAK,KAAK,MAAM,IAAI,EAAW,EAAW,EAAW,CACrD,GAAU,sBAAsB,KAAK,MAAM,OAAO,YAAY,CAC9D,KAAK,KAAK,OAAO,GAAU,CACvB,KAAK,QAAU,IAAK,GAGtB,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,MAAM,MAAM,CAF/C,KAAK,KAAK,SAAS,MAAM,IAAI,KAAK,MAAM,GAM9C,GAA4B,IAAI,EAChC,GAA8B,IAAI,GAClC,GAAkC,IAAI,GACtC,GAAiB,cAAc,EAAa,CAC1C,YAAY,EAAQ,CAClB,IAAM,EAAQ,GAAY,EAAO,CAC3B,EAAW,IAAI,GACf,EAAW,EAAE,CACb,EAAS,EAAE,CACX,EAAS,IAAIa,EAAM,EAAG,EAAG,EAAE,CAC3B,EAAS,IAAIA,EAAM,EAAG,EAAG,EAAE,CACjC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAM,OAAQ,IAAM,CACxC,IAAM,EAAO,EAAM,GACf,EAAK,QAAU,EAAK,OAAO,SAC7B,EAAS,KAAK,EAAG,EAAG,EAAE,CACtB,EAAS,KAAK,EAAG,EAAG,EAAE,CACtB,EAAO,KAAK,EAAO,EAAG,EAAO,EAAG,EAAO,EAAE,CACzC,EAAO,KAAK,EAAO,EAAG,EAAO,EAAG,EAAO,EAAE,EAG7C,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CAC1E,EAAS,aAAa,QAAS,IAAI,EAAuB,EAAQ,EAAE,CAAC,CACrE,IAAM,EAAW,IAAI,GAAkB,CAAE,aAAc,GAAM,UAAW,GAAO,WAAY,GAAO,WAAY,GAAO,YAAa,GAAM,CAAC,CACzI,MAAM,EAAU,EAAS,CACzB,KAAK,iBAAmB,GACxB,KAAK,KAAO,iBACZ,KAAK,KAAO,EACZ,KAAK,MAAQ,EACb,KAAK,OAAS,EAAO,YACrB,KAAK,iBAAmB,GAE1B,kBAAkB,EAAO,CACvB,IAAM,EAAQ,KAAK,MACb,EAAW,KAAK,SAChB,EAAW,EAAS,aAAa,WAAW,CAClD,GAAgB,KAAK,KAAK,KAAK,YAAY,CAAC,QAAQ,CACpD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAM,OAAQ,IAAM,CAChD,IAAM,EAAO,EAAM,GACf,EAAK,QAAU,EAAK,OAAO,SAC7B,GAAY,iBAAiB,GAAiB,EAAK,YAAY,CAC/D,GAAU,sBAAsB,GAAY,CAC5C,EAAS,OAAO,EAAI,GAAU,EAAG,GAAU,EAAG,GAAU,EAAE,CAC1D,GAAY,iBAAiB,GAAiB,EAAK,OAAO,YAAY,CACtE,GAAU,sBAAsB,GAAY,CAC5C,EAAS,OAAO,EAAK,EAAG,GAAU,EAAG,GAAU,EAAG,GAAU,EAAE,CAC9D,GAAM,GAGV,EAAS,aAAa,WAAW,CAAC,YAAc,GAChD,MAAM,kBAAkB,EAAM,CAEhC,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAmB,cAAc,EAAK,CACpC,YAAY,EAAO,EAAY,EAAO,CACpC,IAAM,EAAW,IAAI,GAAe,EAAY,EAAG,EAAE,CAC/C,EAAW,IAAI,GAAkB,CAAE,UAAW,GAAM,IAAK,GAAO,WAAY,GAAO,CAAC,CAC1F,MAAM,EAAU,EAAS,CACzB,KAAK,MAAQ,EACb,KAAK,MAAQb,EACb,KAAK,KAAO,mBACZ,KAAK,OAAS,KAAK,MAAM,YACzB,KAAK,iBAAmB,GACxB,KAAK,QAAQ,CAEf,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,CAEzB,QAAS,CACP,KAAK,MAAM,kBAAkB,GAAM,GAAM,CACrC,KAAK,QAAU,IAAK,GAGtB,KAAK,SAAS,MAAM,KAAK,KAAK,MAAM,MAAM,CAF1C,KAAK,SAAS,MAAM,IAAI,KAAK,MAAM,GAMzC,GAA4B,IAAI,EAChC,GAA0B,IAAIa,EAC9B,GAA0B,IAAIA,EAC9B,GAAwB,cAAc,EAAS,CAC7C,YAAY,EAAO,EAAM,EAAO,CAC9B,OAAO,CACP,KAAK,MAAQ,EACb,KAAK,OAAS,EAAM,YACpB,KAAK,iBAAmB,GACxB,KAAK,MAAQb,EACb,KAAK,KAAO,wBACZ,IAAM,EAAW,IAAI,GAAmB,EAAK,CAC7C,EAAS,QAAQ,KAAK,GAAK,GAAI,CAC/B,KAAK,SAAW,IAAI,GAAkB,CAAE,UAAW,GAAM,IAAK,GAAO,WAAY,GAAO,CAAC,CACrF,KAAK,QAAU,IAAK,KAAG,KAAK,SAAS,aAAe,IACxD,IAAM,EAAW,EAAS,aAAa,WAAW,CAC5C,EAAS,IAAI,aAAa,EAAS,MAAQ,EAAE,CACnD,EAAS,aAAa,QAAS,IAAI,GAAgB,EAAQ,EAAE,CAAC,CAC9D,KAAK,IAAI,IAAI,GAAK,EAAU,KAAK,SAAS,CAAC,CAC3C,KAAK,QAAQ,CAEf,SAAU,CACR,KAAK,SAAS,GAAG,SAAS,SAAS,CACnC,KAAK,SAAS,GAAG,SAAS,SAAS,CAErC,QAAS,CACP,IAAM,EAAO,KAAK,SAAS,GAC3B,GAAI,KAAK,QAAU,IAAK,GACtB,KAAK,SAAS,MAAM,IAAI,KAAK,MAAM,KAC9B,CACL,IAAM,EAAS,EAAK,SAAS,aAAa,QAAQ,CAClD,GAAQ,KAAK,KAAK,MAAM,MAAM,CAC9B,GAAQ,KAAK,KAAK,MAAM,YAAY,CACpC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,MAAO,EAAK,EAAI,IAAM,CACjD,IAAMA,EAAQ,EAAK,EAAK,EAAI,GAAU,GACtC,EAAO,OAAO,EAAIA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAE,CAE9C,EAAO,YAAc,GAEvB,KAAK,MAAM,kBAAkB,GAAM,GAAM,CACzC,EAAK,OAAO,GAAU,sBAAsB,KAAK,MAAM,YAAY,CAAC,QAAQ,CAAC,GAGjF,GAAa,cAAc,EAAa,CACtC,YAAY,EAAO,GAAI,EAAY,GAAI,EAAS,QAAS,EAAS,QAAS,CACzE,EAAS,IAAIa,EAAM,EAAO,CAC1B,EAAS,IAAIA,EAAM,EAAO,CAC1B,IAAM,EAAS,EAAY,EACrB,EAAO,EAAO,EACd,EAAW,EAAO,EAClB,EAAW,EAAE,CAAE,EAAS,EAAE,CAChC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,EAAK,CAAC,EAAU,GAAM,EAAW,IAAM,GAAM,EAAM,CAC1E,EAAS,KAAK,CAAC,EAAU,EAAG,EAAI,EAAU,EAAG,EAAG,CAChD,EAAS,KAAK,EAAI,EAAG,CAAC,EAAU,EAAI,EAAG,EAAS,CAChD,IAAMb,EAAQ,IAAO,EAAS,EAAS,EACvC,EAAM,QAAQ,EAAQ,EAAG,CACzB,GAAM,EACN,EAAM,QAAQ,EAAQ,EAAG,CACzB,GAAM,EACN,EAAM,QAAQ,EAAQ,EAAG,CACzB,GAAM,EACN,EAAM,QAAQ,EAAQ,EAAG,CACzB,GAAM,EAER,IAAM,EAAW,IAAI,GACrB,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CAC1E,EAAS,aAAa,QAAS,IAAI,EAAuB,EAAQ,EAAE,CAAC,CACrE,IAAM,EAAW,IAAI,GAAkB,CAAE,aAAc,GAAM,WAAY,GAAO,CAAC,CACjF,MAAM,EAAU,EAAS,CACzB,KAAK,KAAO,aAEd,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAkB,cAAc,EAAa,CAC3C,YAAY,EAAS,GAAI,EAAU,GAAI,EAAQ,EAAG,EAAY,GAAI,EAAS,QAAS,EAAS,QAAS,CACpG,EAAS,IAAIa,EAAM,EAAO,CAC1B,EAAS,IAAIA,EAAM,EAAO,CAC1B,IAAM,EAAW,EAAE,CACb,EAAS,EAAE,CACjB,GAAI,EAAU,EACZ,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,IAAM,CACnC,IAAM,EAAK,EAAK,GAAW,KAAK,GAAK,GAC/BT,EAAI,KAAK,IAAI,EAAG,CAAG,EACnB,EAAK,KAAK,IAAI,EAAG,CAAG,EAC1B,EAAS,KAAK,EAAG,EAAG,EAAE,CACtB,EAAS,KAAKA,EAAG,EAAG,EAAG,CACvB,IAAMJ,EAAQ,EAAK,EAAI,EAAS,EAChC,EAAO,KAAKA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAE,CACtC,EAAO,KAAKA,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAE,CAG1C,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,IAAM,CACjC,IAAMA,EAAQ,EAAK,EAAI,EAAS,EAC1B,EAAK,EAAS,EAAS,EAAQ,EACrC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAW,IAAM,CACrC,IAAI,EAAK,EAAK,GAAa,KAAK,GAAK,GACjCI,EAAI,KAAK,IAAI,EAAG,CAAG,EACnB,EAAK,KAAK,IAAI,EAAG,CAAG,EACxB,EAAS,KAAKA,EAAG,EAAG,EAAG,CACvB,EAAO,KAAKJ,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAE,CACtC,GAAM,EAAK,GAAK,GAAa,KAAK,GAAK,GACvC,EAAI,KAAK,IAAI,EAAG,CAAG,EACnB,EAAK,KAAK,IAAI,EAAG,CAAG,EACpB,EAAS,KAAKI,EAAG,EAAG,EAAG,CACvB,EAAO,KAAKJ,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAE,EAG1C,IAAM,EAAW,IAAI,GACrB,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CAC1E,EAAS,aAAa,QAAS,IAAI,EAAuB,EAAQ,EAAE,CAAC,CACrE,IAAM,EAAW,IAAI,GAAkB,CAAE,aAAc,GAAM,WAAY,GAAO,CAAC,CACjF,MAAM,EAAU,EAAS,CACzB,KAAK,KAAO,kBAEd,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAsB,IAAI,EAC1B,GAAsB,IAAI,EAC1B,GAAsB,IAAI,EAC1B,GAAyB,cAAc,EAAS,CAC9C,YAAY,EAAO,EAAM,EAAO,CAC9B,OAAO,CACP,KAAK,MAAQ,EACb,KAAK,OAAS,EAAM,YACpB,KAAK,iBAAmB,GACxB,KAAK,MAAQA,EACb,KAAK,KAAO,yBACR,IAAS,IAAK,KAAG,EAAO,GAC5B,IAAI,EAAW,IAAI,GACnB,EAAS,aAAa,WAAY,IAAI,EAAuB,CAC3D,CAAC,EACD,EACA,EACA,EACA,EACA,EACA,EACA,CAAC,EACD,EACA,CAAC,EACD,CAAC,EACD,EACA,CAAC,EACD,EACA,EACD,CAAE,EAAE,CAAC,CACN,IAAM,EAAW,IAAI,GAAkB,CAAE,IAAK,GAAO,WAAY,GAAO,CAAC,CACzE,KAAK,WAAa,IAAI,GAAK,EAAU,EAAS,CAC9C,KAAK,IAAI,KAAK,WAAW,CACzB,EAAW,IAAI,GACf,EAAS,aAAa,WAAY,IAAI,EAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAE,EAAE,CAAC,CACpF,KAAK,WAAa,IAAI,GAAK,EAAU,EAAS,CAC9C,KAAK,IAAI,KAAK,WAAW,CACzB,KAAK,QAAQ,CAEf,SAAU,CACR,KAAK,WAAW,SAAS,SAAS,CAClC,KAAK,WAAW,SAAS,SAAS,CAClC,KAAK,WAAW,SAAS,SAAS,CAClC,KAAK,WAAW,SAAS,SAAS,CAEpC,QAAS,CACP,KAAK,MAAM,kBAAkB,GAAM,GAAM,CACzC,KAAK,MAAM,OAAO,kBAAkB,GAAM,GAAM,CAChD,GAAI,sBAAsB,KAAK,MAAM,YAAY,CACjD,GAAI,sBAAsB,KAAK,MAAM,OAAO,YAAY,CACxD,GAAI,WAAW,GAAK,GAAI,CACxB,KAAK,WAAW,OAAO,GAAI,CACvB,KAAK,QAAU,IAAK,IAItB,KAAK,WAAW,SAAS,MAAM,KAAK,KAAK,MAAM,MAAM,CACrD,KAAK,WAAW,SAAS,MAAM,KAAK,KAAK,MAAM,MAAM,GAJrD,KAAK,WAAW,SAAS,MAAM,IAAI,KAAK,MAAM,CAC9C,KAAK,WAAW,SAAS,MAAM,IAAI,KAAK,MAAM,EAKhD,KAAK,WAAW,OAAO,GAAI,CAC3B,KAAK,WAAW,MAAM,EAAI,GAAI,QAAQ,GAG1C,GAA0B,IAAI,EAC9B,GAA0B,IAAI,GAC9B,GAAe,cAAc,EAAa,CACxC,YAAY,EAAQ,CAClB,IAAM,EAAW,IAAI,GACf,EAAW,IAAI,GAAkB,CAAE,MAAO,SAAU,aAAc,GAAM,WAAY,GAAO,CAAC,CAC5F,EAAW,EAAE,CACb,EAAS,EAAE,CACX,EAAW,EAAE,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,IAAK,KAAK,CAClB,EAAQ,IAAK,KAAK,CAClB,EAAQ,IAAK,KAAK,CAClB,EAAQ,IAAK,KAAK,CAClB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,KAAM,KAAK,CACnB,EAAQ,IAAK,IAAI,CACjB,EAAQ,IAAK,IAAI,CACjB,EAAQ,MAAO,MAAM,CACrB,EAAQ,MAAO,MAAM,CACrB,EAAQ,MAAO,MAAM,CACrB,EAAQ,MAAO,MAAM,CACrB,SAAS,EAAQ,EAAG,EAAG,CACrB,EAASO,EAAE,CACX,EAASD,EAAE,CAEb,SAAS,EAAS,EAAI,CACpB,EAAS,KAAK,EAAG,EAAG,EAAE,CACtB,EAAO,KAAK,EAAG,EAAG,EAAE,CAChB,EAAS,KAAQ,IAAK,KACxB,EAAS,GAAM,EAAE,EAEnB,EAAS,GAAI,KAAK,EAAS,OAAS,EAAI,EAAE,CAE5C,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CAC1E,EAAS,aAAa,QAAS,IAAI,EAAuB,EAAQ,EAAE,CAAC,CACrE,MAAM,EAAU,EAAS,CACzB,KAAK,KAAO,eACZ,KAAK,OAAS,EACV,KAAK,OAAO,wBAAwB,KAAK,OAAO,wBAAwB,CAC5E,KAAK,OAAS,EAAO,YACrB,KAAK,iBAAmB,GACxB,KAAK,SAAW,EAChB,KAAK,QAAQ,CACb,IAAM,EAAe,IAAIO,EAAM,SAAS,CAClC,EAAY,IAAIA,EAAM,SAAS,CAC/B,EAAU,IAAIA,EAAM,MAAM,CAC1B,EAAc,IAAIA,EAAM,SAAS,CACjC,EAAa,IAAIA,EAAM,QAAQ,CACrC,KAAK,UAAU,EAAc,EAAW,EAAS,EAAa,EAAW,CAE3E,UAAU,EAAS,EAAM,EAAI,EAAS,EAAO,CAE3C,IAAM,EADW,KAAK,SACU,aAAa,QAAQ,CACrD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,EAAG,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CACzD,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAK,EAAG,EAAK,EAAG,EAAK,EAAE,CACjD,EAAe,OAAO,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC3C,EAAe,OAAO,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC3C,EAAe,OAAO,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC3C,EAAe,OAAO,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC3C,EAAe,OAAO,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC3C,EAAe,OAAO,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC3C,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAQ,EAAG,EAAQ,EAAG,EAAQ,EAAE,CAC1D,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,OAAO,GAAI,EAAM,EAAG,EAAM,EAAG,EAAM,EAAE,CACpD,EAAe,YAAc,GAE/B,QAAS,CACP,IAAM,EAAW,KAAK,SAChB,EAAW,KAAK,SAEtB,GAAQ,wBAAwB,KAAK,KAAK,OAAO,wBAAwB,CACzE,GAAS,IAAK,EAAU,EAAU,GAAS,EAAG,EAAG,GAAG,CACpD,GAAS,IAAK,EAAU,EAAU,GAAS,EAAG,EAAG,EAAE,CACnD,GAAS,KAAM,EAAU,EAAU,GAAS,GAAI,GAAK,GAAG,CACxD,GAAS,KAAM,EAAU,EAAU,GAAS,EAAG,GAAK,GAAG,CACvD,GAAS,KAAM,EAAU,EAAU,GAAS,GAAI,EAAI,GAAG,CACvD,GAAS,KAAM,EAAU,EAAU,GAAS,EAAG,EAAI,GAAG,CACtD,GAAS,KAAM,EAAU,EAAU,GAAS,GAAI,GAAK,EAAE,CACvD,GAAS,KAAM,EAAU,EAAU,GAAS,EAAG,GAAK,EAAE,CACtD,GAAS,KAAM,EAAU,EAAU,GAAS,GAAI,EAAI,EAAE,CACtD,GAAS,KAAM,EAAU,EAAU,GAAS,EAAG,EAAI,EAAE,CACrD,GAAS,KAAM,EAAU,EAAU,GAAS,EAAI,GAAK,EAAK,IAAK,GAAG,CAClE,GAAS,KAAM,EAAU,EAAU,GAAS,GAAK,GAAK,EAAK,IAAK,GAAG,CACnE,GAAS,KAAM,EAAU,EAAU,GAAS,EAAG,EAAQ,GAAG,CAC1D,GAAS,MAAO,EAAU,EAAU,GAAS,GAAI,EAAG,EAAE,CACtD,GAAS,MAAO,EAAU,EAAU,GAAS,EAAG,EAAG,EAAE,CACrD,GAAS,MAAO,EAAU,EAAU,GAAS,EAAG,GAAK,EAAE,CACvD,GAAS,MAAO,EAAU,EAAU,GAAS,EAAG,EAAI,EAAE,CACtD,GAAS,MAAO,EAAU,EAAU,GAAS,GAAI,EAAG,GAAG,CACvD,GAAS,MAAO,EAAU,EAAU,GAAS,EAAG,EAAG,GAAG,CACtD,GAAS,MAAO,EAAU,EAAU,GAAS,EAAG,GAAK,GAAG,CACxD,GAAS,MAAO,EAAU,EAAU,GAAS,EAAG,EAAI,GAAG,CACvD,EAAS,aAAa,WAAW,CAAC,YAAc,GAElD,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAuB,IAAI,GAC3B,GAAY,cAAc,EAAa,CACrC,YAAY,EAAQ,EAAQ,SAAU,CACpC,IAAM,EAAU,IAAI,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAC,CACnG,EAAY,IAAI,aAAa,GAAM,CACnC,EAAW,IAAI,GACrB,EAAS,SAAS,IAAI,GAAgB,EAAS,EAAE,CAAC,CAClD,EAAS,aAAa,WAAY,IAAI,GAAgB,EAAW,EAAE,CAAC,CACpE,MAAM,EAAU,IAAI,GAAkB,CAAE,MAAA,EAAO,WAAY,GAAO,CAAC,CAAC,CACpE,KAAK,OAAS,EACd,KAAK,KAAO,YACZ,KAAK,iBAAmB,GACxB,KAAK,QAAQ,CAEf,OAAO,EAAQ,CAOb,GANI,IAAW,IAAK,IAClB,QAAQ,KAAK,sDAAsD,CAEjE,KAAK,SAAW,IAAK,IACvB,GAAK,cAAc,KAAK,OAAO,CAE7B,GAAK,SAAS,CAAE,OACpB,IAAM,EAAM,GAAK,IACX,EAAM,GAAK,IACX,EAAW,KAAK,SAAS,WAAW,SACpC,EAAQ,EAAS,MACvB,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,GAAK,EAAI,EACf,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAM,IAAM,EAAI,EAChB,EAAS,YAAc,GACvB,KAAK,SAAS,uBAAuB,CAEvC,cAAc,EAAQ,CAGpB,MAFA,MAAK,OAAS,EACd,KAAK,QAAQ,CACN,KAET,KAAK,EAAQ,EAAW,CAGtB,OAFA,MAAM,KAAK,EAAQ,EAAU,CAC7B,KAAK,OAAS,EAAO,OACd,KAET,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAa,cAAc,EAAa,CACtC,YAAY,EAAK,EAAQ,SAAU,CACjC,IAAM,EAAU,IAAI,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAC,CACnG,EAAY,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAG,CAChG,EAAW,IAAI,GACrB,EAAS,SAAS,IAAI,GAAgB,EAAS,EAAE,CAAC,CAClD,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAW,EAAE,CAAC,CAC3E,MAAM,EAAU,IAAI,GAAkB,CAAE,MAAA,EAAO,WAAY,GAAO,CAAC,CAAC,CACpE,KAAK,IAAM,EACX,KAAK,KAAO,aACZ,KAAK,SAAS,uBAAuB,CAEvC,kBAAkB,EAAO,CACvB,IAAM,EAAM,KAAK,IACb,EAAI,SAAS,GACjB,EAAI,UAAU,KAAK,SAAS,CAC5B,EAAI,QAAQ,KAAK,MAAM,CACvB,KAAK,MAAM,eAAe,GAAI,CAC9B,MAAM,kBAAkB,EAAM,EAEhC,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAc,cAAc,EAAK,CAC/B,YAAY,EAAO,EAAO,EAAG,EAAM,SAAU,CAC3C,IAAMb,EAAQ,EACR,EAAY,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAE,CAC5F,EAAW,IAAI,GACrB,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAW,EAAE,CAAC,CAC3E,EAAS,uBAAuB,CAChC,MAAM,EAAU,IAAI,GAAkB,CAAE,MAAA,EAAO,WAAY,GAAO,CAAC,CAAC,CACpE,KAAK,KAAO,cACZ,KAAK,MAAQ,EACb,KAAK,KAAO,EACZ,IAAM,EAAa,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAE,CACzE,EAAY,IAAI,GACtB,EAAU,aAAa,WAAY,IAAI,EAAuB,EAAY,EAAE,CAAC,CAC7E,EAAU,uBAAuB,CACjC,KAAK,IAAI,IAAI,GAAK,EAAW,IAAI,GAAkB,CAAE,MAAA,EAAO,QAAS,GAAK,YAAa,GAAM,WAAY,GAAO,WAAY,GAAO,CAAC,CAAC,CAAC,CAExI,kBAAkB,EAAO,CACvB,KAAK,SAAS,IAAI,EAAG,EAAG,EAAE,CAC1B,KAAK,MAAM,IAAI,GAAM,KAAK,KAAM,GAAM,KAAK,KAAM,EAAE,CACnD,KAAK,OAAO,KAAK,MAAM,OAAO,CAC9B,KAAK,WAAW,CAAC,KAAK,MAAM,SAAS,CACrC,MAAM,kBAAkB,EAAM,CAEhC,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,GAAG,SAAS,SAAS,CACnC,KAAK,SAAS,GAAG,SAAS,SAAS,GAGvC,GAAwB,IAAI,EAC5B,GAAc,cAAc,EAAS,CAEnC,YAAY,EAAM,IAAI,EAAQ,EAAG,EAAG,EAAE,CAAE,EAAS,IAAI,EAAQ,EAAG,EAAG,EAAE,CAAE,EAAS,EAAG,EAAQ,SAAU,EAAa,EAAS,GAAK,EAAY,EAAa,GAAK,CAC5J,OAAO,CACP,KAAK,KAAO,cACR,KAAkB,IAAK,KACzB,GAAgB,IAAI,GACpB,GAAc,aAAa,WAAY,IAAI,EAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAE,EAAE,CAAC,CACzF,GAAgB,IAAI,GAAiB,EAAG,GAAK,EAAG,EAAG,EAAE,CACrD,GAAc,UAAU,EAAG,IAAM,EAAE,EAErC,KAAK,SAAS,KAAK,EAAO,CAC1B,KAAK,KAAO,IAAI,GAAK,GAAe,IAAI,GAAkB,CAAE,MAAA,EAAO,WAAY,GAAO,CAAC,CAAC,CACxF,KAAK,KAAK,iBAAmB,GAC7B,KAAK,IAAI,KAAK,KAAK,CACnB,KAAK,KAAO,IAAI,GAAK,GAAe,IAAI,GAAkB,CAAE,MAAA,EAAO,WAAY,GAAO,CAAC,CAAC,CACxF,KAAK,KAAK,iBAAmB,GAC7B,KAAK,IAAI,KAAK,KAAK,CACnB,KAAK,aAAa,EAAI,CACtB,KAAK,UAAU,EAAQ,EAAY,EAAU,CAE/C,aAAa,EAAK,CAChB,GAAI,EAAI,EAAI,OACV,KAAK,WAAW,IAAI,EAAG,EAAG,EAAG,EAAE,SACtB,EAAI,EAAI,QACjB,KAAK,WAAW,IAAI,EAAG,EAAG,EAAG,EAAE,KAC1B,CACL,GAAM,IAAI,EAAI,EAAG,EAAG,CAAC,EAAI,EAAE,CAAC,WAAW,CACvC,IAAM,EAAU,KAAK,KAAK,EAAI,EAAE,CAChC,KAAK,WAAW,iBAAiB,GAAO,EAAQ,EAGpD,UAAU,EAAQ,EAAa,EAAS,GAAK,EAAY,EAAa,GAAK,CACzE,KAAK,KAAK,MAAM,IAAI,EAAG,KAAK,IAAI,KAAM,EAAS,EAAW,CAAE,EAAE,CAC9D,KAAK,KAAK,cAAc,CACxB,KAAK,KAAK,MAAM,IAAI,EAAW,EAAY,EAAU,CACrD,KAAK,KAAK,SAAS,EAAI,EACvB,KAAK,KAAK,cAAc,CAE1B,SAAS,EAAO,CACd,KAAK,KAAK,SAAS,MAAM,IAAIA,EAAM,CACnC,KAAK,KAAK,SAAS,MAAM,IAAIA,EAAM,CAErC,KAAK,EAAQ,CAIX,OAHA,MAAM,KAAK,EAAQ,GAAM,CACzB,KAAK,KAAK,KAAK,EAAO,KAAK,CAC3B,KAAK,KAAK,KAAK,EAAO,KAAK,CACpB,KAET,SAAU,CACR,KAAK,KAAK,SAAS,SAAS,CAC5B,KAAK,KAAK,SAAS,SAAS,CAC5B,KAAK,KAAK,SAAS,SAAS,CAC5B,KAAK,KAAK,SAAS,SAAS,GAGhC,GAAa,cAAc,EAAa,CACtC,YAAY,EAAO,EAAG,CACpB,IAAM,EAAW,CACf,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,CACK,EAAS,CACb,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACD,CACK,EAAW,IAAI,GACrB,EAAS,aAAa,WAAY,IAAI,EAAuB,EAAU,EAAE,CAAC,CAC1E,EAAS,aAAa,QAAS,IAAI,EAAuB,EAAQ,EAAE,CAAC,CACrE,IAAM,EAAW,IAAI,GAAkB,CAAE,aAAc,GAAM,WAAY,GAAO,CAAC,CACjF,MAAM,EAAU,EAAS,CACzB,KAAK,KAAO,aAEd,UAAU,EAAY,EAAY,EAAY,CAC5C,IAAMA,EAAQ,IAAIa,EACZ,EAAQ,KAAK,SAAS,WAAW,MAAM,MAW7C,OAVA,EAAM,IAAI,EAAW,CACrB,EAAM,QAAQ,EAAO,EAAE,CACvB,EAAM,QAAQ,EAAO,EAAE,CACvB,EAAM,IAAI,EAAW,CACrB,EAAM,QAAQ,EAAO,EAAE,CACvB,EAAM,QAAQ,EAAO,EAAE,CACvB,EAAM,IAAI,EAAW,CACrB,EAAM,QAAQ,EAAO,GAAG,CACxB,EAAM,QAAQ,EAAO,GAAG,CACxB,KAAK,SAAS,WAAW,MAAM,YAAc,GACtC,KAET,SAAU,CACR,KAAK,SAAS,SAAS,CACvB,KAAK,SAAS,SAAS,GAG3B,GAAY,KAAM,CAChB,aAAc,CACZ,KAAK,KAAO,YACZ,KAAK,MAAQ,IAAIA,EACjB,KAAK,SAAW,EAAE,CAClB,KAAK,YAAc,KAErB,OAAO,EAAG,EAAI,CAIZ,MAHA,MAAK,YAAc,IAAI,GACvB,KAAK,SAAS,KAAK,KAAK,YAAY,CACpC,KAAK,YAAY,OAAOT,EAAG,EAAG,CACvB,KAET,OAAO,EAAG,EAAI,CAEZ,OADA,KAAK,YAAY,OAAOA,EAAG,EAAG,CACvB,KAET,iBAAiB,EAAM,EAAM,EAAI,EAAI,CAEnC,OADA,KAAK,YAAY,iBAAiB,EAAM,EAAM,EAAI,EAAG,CAC9C,KAET,cAAc,EAAO,EAAO,EAAO,EAAO,EAAI,EAAI,CAEhD,OADA,KAAK,YAAY,cAAc,EAAO,EAAO,EAAO,EAAO,EAAI,EAAG,CAC3D,KAET,WAAW,EAAK,CAEd,OADA,KAAK,YAAY,WAAW,EAAI,CACzB,KAET,SAAS,EAAO,CACd,SAAS,EAAgB,EAAY,CACnC,IAAM,EAAU,EAAE,CAClB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAW,OAAQ,EAAK,EAAI,IAAM,CACtD,IAAM,EAAW,EAAW,GACtB,EAAY,IAAI,GACtB,EAAU,OAAS,EAAS,OAC5B,EAAQ,KAAK,EAAU,CAEzB,OAAO,EAET,SAAS,EAAqB,EAAM,EAAW,CAC7C,IAAM,EAAU,EAAU,OACtB,EAAS,GACb,IAAK,IAAI,EAAK,EAAU,EAAG,EAAK,EAAG,EAAK,EAAS,EAAK,IAAM,CAC1D,IAAI,EAAY,EAAU,GACtB,EAAa,EAAU,GACvB,EAAS,EAAW,EAAI,EAAU,EAClC,EAAS,EAAW,EAAI,EAAU,EACtC,GAAI,KAAK,IAAI,EAAO,QAAmB,CAOrC,GANI,EAAS,IACX,EAAY,EAAU,GACtB,EAAS,CAAC,EACV,EAAa,EAAU,GACvB,EAAS,CAAC,GAER,EAAK,EAAI,EAAU,GAAK,EAAK,EAAI,EAAW,EAAG,SACnD,GAAI,EAAK,IAAM,EAAU,MACnB,EAAK,IAAM,EAAU,EAAG,MAAO,OAC9B,CACL,IAAM,EAAW,GAAU,EAAK,EAAI,EAAU,GAAK,GAAU,EAAK,EAAI,EAAU,GAChF,GAAI,IAAa,EAAG,MAAO,GAC3B,GAAI,EAAW,EAAG,SAClB,EAAS,CAAC,OAEP,CACL,GAAI,EAAK,IAAM,EAAU,EAAG,SAC5B,GAAI,EAAW,GAAK,EAAK,GAAK,EAAK,GAAK,EAAU,GAAK,EAAU,GAAK,EAAK,GAAK,EAAK,GAAK,EAAW,EAAG,MAAO,IAGnH,OAAO,EAET,IAAM,EAAc,GAAW,YACzB,EAAW,KAAK,SACtB,GAAI,EAAS,SAAW,EAAG,MAAO,EAAE,CACpC,IAAI,EAAO,EAAS,EACd,EAAS,EAAE,CACjB,GAAI,EAAS,SAAW,EAKtB,MAJA,GAAU,EAAS,GACnB,EAAW,IAAI,GACf,EAAS,OAAS,EAAQ,OAC1B,EAAO,KAAK,EAAS,CACd,EAET,IAAI,EAAa,CAAC,EAAY,EAAS,GAAG,WAAW,CAAC,CACtD,EAAa,EAAQ,CAAC,EAAa,EACnC,IAAM,EAAmB,EAAE,CACrB,EAAY,EAAE,CAChB,EAAgB,EAAE,CAClB,EAAU,EACV,EACJ,EAAU,GAAW,IAAK,GAC1B,EAAc,GAAW,EAAE,CAC3B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,OAAQ,EAAK,EAAI,IAC9C,EAAU,EAAS,GACnB,EAAY,EAAQ,WAAW,CAC/B,EAAQ,EAAY,EAAU,CAC9B,EAAQ,EAAQ,CAAC,EAAQ,EACrB,GACE,CAAC,GAAc,EAAU,IAAU,IACvC,EAAU,GAAW,CAAE,EAAG,IAAI,GAAS,EAAG,EAAW,CACrD,EAAU,GAAS,EAAE,OAAS,EAAQ,OAClC,GAAY,IAChB,EAAc,GAAW,EAAE,EAE3B,EAAc,GAAS,KAAK,CAAE,EAAG,EAAS,EAAG,EAAU,GAAI,CAAC,CAGhE,GAAI,CAAC,EAAU,GAAI,OAAO,EAAgB,EAAS,CACnD,GAAI,EAAU,OAAS,EAAG,CACxB,IAAI,EAAY,GACZ,EAAW,EACf,IAAK,IAAI,EAAO,EAAG,EAAO,EAAU,OAAQ,EAAO,EAAM,IACvD,EAAiB,GAAQ,EAAE,CAE7B,IAAK,IAAI,EAAO,EAAG,EAAO,EAAU,OAAQ,EAAO,EAAM,IAAQ,CAC/D,IAAM,EAAM,EAAc,GAC1B,IAAK,IAAI,EAAO,EAAG,EAAO,EAAI,OAAQ,IAAQ,CAC5C,IAAM,EAAK,EAAI,GACX,EAAkB,GACtB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAU,OAAQ,IACxC,EAAqB,EAAG,EAAG,EAAU,GAAO,EAAE,GAC5C,IAAS,GAAO,IAChB,GACF,EAAkB,GAClB,EAAiB,GAAO,KAAK,EAAG,EAEhC,EAAY,IAId,GACF,EAAiB,GAAM,KAAK,EAAG,EAIjC,EAAW,GAAK,IAAc,KAChC,EAAgB,GAGpB,IAAI,EACJ,IAAK,IAAI,EAAK,EAAG,EAAK,EAAU,OAAQ,EAAK,EAAI,IAAM,CACrD,EAAW,EAAU,GAAI,EACzB,EAAO,KAAK,EAAS,CACrB,EAAW,EAAc,GACzB,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,OAAQ,EAAK,EAAI,IAC9C,EAAS,MAAM,KAAK,EAAS,GAAI,EAAE,CAGvC,OAAO,IAGX,GAAW,cAAc,EAAgB,CACvC,YAAY,EAAQ,EAAa,KAAM,CACrC,OAAO,CACP,KAAK,OAAS,EACd,KAAK,WAAa,EAClB,KAAK,QAAU,GACf,KAAK,MAAQ,GACb,KAAK,KAAO,EAAE,CACd,KAAK,aAAe,CAAE,KAAM,KAAM,OAAQ,KAAM,MAAO,KAAM,CAC7D,KAAK,QAAU,CAAE,IAAK,KAAM,IAAK,KAAM,CAEzC,SAAU,EAEV,YAAa,EAEb,SAAU,EAEV,QAAS,IAGX,GAA6B,cAAc,EAAkB,CAE3D,YAAY,EAAQ,EAAG,EAAS,EAAG,EAAQ,EAAG,EAAU,EAAE,CAAE,CAC1D,QAAQ,KAAK,6JAA6J,CAC1K,MAAM,EAAO,EAAQmC,GAAcJ,EAAe,EAAE,CAAE,EAAQ,CAAE,CAAE,QAAO,CAAC,CAAC,CAC3E,KAAK,6BAA+B,GAEtC,IAAI,SAAU,CACZ,OAAO,KAAK,WAGZ,OAAO,mBAAuB,KAChC,mBAAmB,cAAc,IAAI,YAAY,WAAY,CAAE,OAAQ,CACrE,SAAU,GACX,CAAE,CAAC,CAAC,CAEI,IAAW,SAChB,EAAO,UACT,QAAQ,KAAK,0DAA0D,CAEvE,EAAO,UAAY,KAI1B,CAAC,CA63DE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,GAAe,IAAW,QAAe,CAAC,EAAO,WAAa,8BAA8B,KAAK,EAAO,UAAU,UAAU,CAC5H,GAA4B,GAAQuE,EAAaC,EACjD,GAAa,GAAY,OAAO,GAAY,UAAY,OAAO,EAAQ,MAAS,WAChF,GAAc,EAAE,CAChB,IAAW,EAAI,EAAM,IAAW,GAAM,EAAI,EAAM,GAAO,EAAO,CAC9D,IAAW,EAAI,EAAM,IAAW,KAAK,GAAM,EAAI,EAAM,GAAM,EAAO,CAClE,GAAS,GAAS,CAChB,GAAI,IAAS,IAAK,IAAK,EAAK,SAAW,EAAG,GAAY,OAAO,EAAG,GAAY,OAAO,KAC9E,CACH,IAAM,EAAQ,GAAY,KAAM,GAAW,GAAmB,EAAM,EAAO,KAAM,EAAO,MAAM,CAAC,CAC3F,GAAO,EAAM,QAAQ,GAG7B,GAAgC,EAAE,CAClC,GAAS,GAA+B,CACtC,YAAe,GACf,0BAA6B5E,GAC7B,+BAAkC,GAClC,yBAA4B,GAC5B,4BAA+B6E,GAC/B,uBAA0B,GAC1B,kCAAqC,GACrC,4BAA+B,GAC/B,+BAAkC,GAClC,4BAA+B,GAC/B,qCAAwC,GACxC,kCAAqC,GACrC,kBAAqB,GACrB,iBAAoB,GACpB,4BAA+B,GAC/B,0BAA6B,GAC7B,6BAAgC,GAChC,8BAAiC,GACjC,yBAA4B,GAC5B,0BAA6B,GAC9B,CAAC,CACF,GAAU,EAAE,CACZ,GAAS,CACP,IAAI,SAAU,CACZ,OAAOC,IAET,IAAI,QAAQ,EAAO,CACjB,GAAU,GAEb,EAEE,UAAW,CAEN,OAAO,+BAAmC,KAAe,OAAO,+BAA+B,6BAAgC,YACjI,+BAA+B,4BAAgC,OAAO,CAAC,CAEzE,IAAI,EAA2B,GAC3B,EAAkB,GAClB,EAAe,EACnB,SAAS,EAAK,EAAM,EAAM,CACxB,IAAI,EAAQ,EAAK,OACjB,EAAK,KAAK,EAAK,CACf,EAAO,EAAM,EAAM,EAAM,CAE3B,SAAS,EAAK,EAAM,CAClB,OAAO,EAAK,SAAW,EAAI,KAAO,EAAK,GAEzC,SAAS,EAAI,EAAM,CACjB,GAAI,EAAK,SAAW,EAClB,OAAO,KAET,IAAI,EAAQ,EAAK,GACb,EAAO,EAAK,KAAK,CAKrB,OAJI,IAAS,IACX,EAAK,GAAK,EACV,EAAS,EAAM,EAAM,EAAE,EAElB,EAET,SAAS,EAAO,EAAM,EAAM,EAAI,CAE9B,IADA,IAAI,EAAQ,EACL,EAAQ,GAAG,CAChB,IAAI,EAAc,EAAQ,IAAM,EAC5B/E,EAAS,EAAK,GAClB,GAAI,EAAQA,EAAQ,EAAK,CAAG,EAC1B,EAAK,GAAe,EACpB,EAAK,GAASA,EACd,EAAQ,OAER,QAIN,SAAS,EAAS,EAAM,EAAM,EAAI,CAIhC,IAHA,IAAI,EAAQ,EACR,EAAS,EAAK,OACd,EAAa,IAAW,EACrB,EAAQ,GAAY,CACzB,IAAI,GAAa,EAAQ,GAAK,EAAI,EAC9B,EAAO,EAAK,GACZ,EAAa,EAAY,EACzB,EAAQ,EAAK,GACjB,GAAI,EAAQ,EAAM,EAAK,CAAG,EACpB,EAAa,GAAU,EAAQ,EAAO,EAAK,CAAG,GAChD,EAAK,GAAS,EACd,EAAK,GAAc,EACnB,EAAQ,IAER,EAAK,GAAS,EACd,EAAK,GAAa,EAClB,EAAQ,WAED,EAAa,GAAU,EAAQ,EAAO,EAAK,CAAG,EACvD,EAAK,GAAS,EACd,EAAK,GAAc,EACnB,EAAQ,OAER,QAIN,SAAS,EAAQ,EAAG,EAAG,CACrB,IAAI,EAAOvB,EAAE,UAAYD,EAAE,UAC3B,OAAO,IAAS,EAAWC,EAAE,GAAKD,EAAE,GAAhB,EAEtB,IAAI,EAAoB,EACpB,EAAuB,EACvB,EAAiB,EACjB,EAAc,EACd,EAAe,EAInB,GADwB,OAAO,aAAgB,UAAY,OAAO,YAAY,KAAQ,WAC/D,CACrB,IAAI,EAAmB,YACvB,GAAQ,aAAe,UAAW,CAChC,OAAO,EAAiB,KAAK,MAE1B,CACL,IAAI,EAAY,KACZ,EAAc,EAAU,KAAK,CACjC,GAAQ,aAAe,UAAW,CAChC,OAAO,EAAU,KAAK,CAAG,GAG7B,IAAI,EAAoB,WACpB,EAA6B,GAC7B,EAAiC,IACjC,EAA0B,IAC1B,EAAuB,IACvB,EAAwB,EACxB,EAAY,EAAE,CACd,EAAa,EAAE,CACf,EAAgB,EAChB,EAAc,KACd,EAAuB,EACvB,EAAmB,GACnB,EAA0B,GAC1B,GAAyB,GACzB,EAAkB,OAAO,YAAe,WAAa,WAAa,KAClE,GAAoB,OAAO,cAAiB,WAAa,aAAe,KACxE,EAAoB,OAAO,aAAiB,IAAc,aAAe,KACjD,IAAc,QAAe,EAAU,aAAe,IAAK,IAAK,EAAU,WAAW,iBAAmB,IAAK,IAAI,EAAU,WAAW,eAAe,KAAK,EAAU,WAAW,CAC3M,SAAS,GAAc,EAAa,CAElC,IADA,IAAI,EAAQ,EAAK,EAAW,CACrB,IAAU,MAAM,CACrB,GAAI,EAAM,WAAa,KACrB,EAAI,EAAW,SACN,EAAM,WAAa,EAC5B,EAAI,EAAW,CACf,EAAM,UAAY,EAAM,eACxB,EAAK,EAAW,EAAM,MAEtB,OAEF,EAAQ,EAAK,EAAW,EAG5B,SAAS,GAAc,EAAa,CAGlC,GAFA,GAAyB,GACzB,GAAc,EAAY,CACtB,CAAC,EACH,GAAI,EAAK,EAAU,GAAK,KACtB,EAA0B,GAC1B,GAAoB,GAAU,KACzB,CACL,IAAI,EAAa,EAAK,EAAW,CAC7B,IAAe,MACjB,GAAmB,GAAe,EAAW,UAAY,EAAY,EAK7E,SAAS,GAAU,EAAkB,EAAc,CACjD,EAA0B,GACtB,KACF,GAAyB,GACzB,IAAmB,EAErB,EAAmB,GACnB,IAAI,EAAwB,EAC5B,GAAI,CACF,GAAI,EACF,GAAI,CACF,OAAO,GAAS,EAAkB,EAAa,OACxC,EAAQ,CAMf,MALI,IAAgB,OACAuG,GAAQ,cAAc,CAExC,EAAY,SAAW,IAEnB,OAGR,OAAO,GAAS,EAAkB,EAAa,QAEzC,CACR,EAAc,KACd,EAAuB,EACvB,EAAmB,IAGvB,SAAS,GAAS,EAAkB,EAAc,CAChD,IAAI,EAAc,EAGlB,IAFA,GAAc,EAAY,CAC1B,EAAc,EAAK,EAAU,CACtB,IAAgB,MAAQ,CAAC,GAC1B,IAAY,eAAiB,IAAgB,CAAC,GAAoB,IAAmB,IADjC,CAIxD,IAAI,EAAW,EAAY,SAC3B,GAAI,OAAO,GAAa,WAAY,CAClC,EAAY,SAAW,KACvB,EAAuB,EAAY,cAEnC,IAAI,EAAuB,EADE,EAAY,gBAAkB,EACA,CAC3D,EAAcA,GAAQ,cAAc,CAChC,OAAO,GAAyB,WAClC,EAAY,SAAW,EAEnB,IAAgB,EAAK,EAAU,EACjC,EAAI,EAAU,CAGlB,GAAc,EAAY,MAE1B,EAAI,EAAU,CAEhB,EAAc,EAAK,EAAU,CAE/B,GAAI,IAAgB,KAClB,MAAO,GAEP,IAAI,EAAa,EAAK,EAAW,CAIjC,OAHI,IAAe,MACjB,GAAmB,GAAe,EAAW,UAAY,EAAY,CAEhE,GAGX,SAAS,EAAyB,EAAe,EAAc,CAC7D,OAAQ,EAAR,CACE,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MACF,QACE,EAAgB,EAEpB,IAAI,EAAwB,EAC5B,EAAuB,EACvB,GAAI,CACF,OAAO,GAAc,QACb,CACR,EAAuB,GAG3B,SAAS,GAAc,EAAc,CACnC,IAAI,EACJ,OAAQ,EAAR,CACE,KAAK,EACL,KAAK,EACL,KAAK,EACH,EAAgB,EAChB,MACF,QACE,EAAgB,EAChB,MAEJ,IAAI,EAAwB,EAC5B,EAAuB,EACvB,GAAI,CACF,OAAO,GAAc,QACb,CACR,EAAuB,GAG3B,SAAS,GAAsB,EAAU,CACvC,IAAI,EAAsB,EAC1B,OAAO,UAAW,CAChB,IAAI,EAAwB,EAC5B,EAAuB,EACvB,GAAI,CACF,OAAO,EAAS,MAAM,KAAM,UAAU,QAC9B,CACR,EAAuB,IAI7B,SAAS,GAA0B,EAAe,EAAU,EAAS,CACnE,IAAI,EAAcA,GAAQ,cAAc,CACpC,EACJ,GAAI,OAAO,GAAY,UAAY,EAAkB,CACnD,IAAI,EAAQ,EAAQ,MACpB,AAGE,EAHE,OAAO,GAAU,UAAY,EAAQ,EAC1B,EAAc,EAEd,OAGf,EAAa,EAEf,IAAI,EACJ,OAAQ,EAAR,CACE,KAAK,EACH,EAAU,EACV,MACF,KAAK,EACH,EAAU,EACV,MACF,KAAK,EACH,EAAU,EACV,MACF,KAAK,EACH,EAAU,EACV,MACF,KAAK,EACL,QACE,EAAU,EACV,MAEJ,IAAI,EAAiB,EAAa,EAC9B,EAAU,CACZ,GAAI,IACJ,WACA,gBACA,UAAW,EACX,iBACA,UAAW,GACZ,CAoBD,OAnBI,EAAa,GACf,EAAQ,UAAY,EACpB,EAAK,EAAY,EAAQ,CACrB,EAAK,EAAU,GAAK,MAAQ,IAAY,EAAK,EAAW,GACtD,GACF,IAAmB,CAEnB,GAAyB,GAE3B,GAAmB,GAAe,EAAa,EAAY,IAG7D,EAAQ,UAAY,EACpB,EAAK,EAAW,EAAQ,CACpB,CAAC,GAA2B,CAAC,IAC/B,EAA0B,GAC1B,GAAoB,GAAU,GAG3B,EAET,SAAS,IAA0B,EAEnC,SAAS,IAA6B,CAChC,CAAC,GAA2B,CAAC,IAC/B,EAA0B,GAC1B,GAAoB,GAAU,EAGlC,SAAS,IAAgC,CACvC,OAAO,EAAK,EAAU,CAExB,SAAS,GAAwB,EAAM,CACrC,EAAK,SAAW,KAElB,SAAS,IAAmC,CAC1C,OAAO,EAET,IAAI,EAAuB,GACvB,GAAwB,KACxB,EAAgB,GAChB,GAAgB,EAChB,GAAY,GAChB,SAAS,IAAoB,CAK3B,MAHA,EADkBA,GAAQ,cAAc,CAAG,GACzB,IAKpB,SAAS,GAAe,EAExB,SAAS,GAAe,EAAK,CAC3B,GAAI,EAAM,GAAK,EAAM,IAAK,CACxB,QAAQ,MAAS,kHAAkH,CACnI,OAEF,AAGE,GAHE,EAAM,EACQ,KAAK,MAAM,IAAM,EAAI,CAErB,EAGpB,IAAI,GAA2B,UAAW,CACxC,GAAI,KAA0B,KAAM,CAClC,IAAI,EAAcA,GAAQ,cAAc,CACxC,GAAY,EACZ,IAAI,EAAmB,GACnB,EAAc,GAClB,GAAI,CACF,EAAc,GAAsB,EAAkB,EAAY,QAC1D,CACJ,EACF,IAAkC,EAElC,EAAuB,GACvB,GAAwB,YAI5B,EAAuB,IAGvB,GACJ,GAAI,OAAO,GAAsB,WAC/B,GAAmC,UAAW,CAC5C,EAAkB,GAAyB,UAEpC,OAAO,eAAmB,IAAa,CAChD,IAAI,EAAU,IAAI,eACd,GAAO,EAAQ,MACnB,EAAQ,MAAM,UAAY,GAC1B,GAAmC,UAAW,CAC5C,GAAK,YAAY,KAAK,OAGxB,GAAmC,UAAW,CAC5C,EAAgB,GAA0B,EAAE,EAGhD,SAAS,GAAoB,EAAU,CACrC,GAAwB,EACnB,IACH,EAAuB,GACvB,IAAkC,EAGtC,SAAS,GAAmB,EAAU,EAAI,CACxC,EAAgB,EAAgB,UAAW,CACzC,EAASA,GAAQ,cAAc,CAAC,EAC/B,EAAG,CAER,SAAS,IAAoB,CAC3B,GAAkB,EAAc,CAChC,EAAgB,GAElB,IAAI,GAAwB,EAE5B,GAAQ,sBAAwB,EAChC,GAAQ,2BAA6B,EACrC,GAAQ,qBAAuB,EAC/B,GAAQ,wBAA0B,EAClC,GAAQ,mBALiB,KAMzB,GAAQ,8BAAgC,EACxC,GAAQ,wBAA0B,GAClC,GAAQ,2BAA6B,GACrC,GAAQ,wBAA0B,GAClC,GAAQ,iCAAmC,GAC3C,GAAQ,8BAAgC,GACxC,GAAQ,cAAgB,GACxB,GAAQ,wBAA0B,GAClC,GAAQ,sBAAwB,GAChC,GAAQ,yBAA2B,EACnC,GAAQ,0BAA4B,GACpC,GAAQ,qBAAuB,GAC/B,GAAQ,sBAAwB,GAC5B,OAAO,+BAAmC,KAAe,OAAO,+BAA+B,4BAA+B,YAChI,+BAA+B,2BAA+B,OAAO,CAAC,IAEtE,CAEF,OAAO,aAAaC,GAAO,QAAQ,EAAI,OAAO,KAAKA,GAAO,QAAQ,CAAC,SAAW,KAChF,GAAYA,GAAO,QAAQ,aAC3B,GAAYA,GAAO,QAAQ,sBAC3B,GAAYA,GAAO,QAAQ,2BAC3B,GAAYA,GAAO,QAAQ,qBAC3B,GAAYA,GAAO,QAAQ,wBAC3B,GAAYA,GAAO,QAAQ,mBAC3B,GAAYA,GAAO,QAAQ,8BAC3B,GAAYA,GAAO,QAAQ,wBAC3B,GAAYA,GAAO,QAAQ,2BAC3B,GAAYA,GAAO,QAAQ,wBAC3B,GAAaA,GAAO,QAAQ,iCAC5B,GAAaA,GAAO,QAAQ,8BAC5B,GAAaA,GAAO,QAAQ,cAC5B,GAAaA,GAAO,QAAQ,wBAC5B,GAAaA,GAAO,QAAQ,sBAC5B,GAAaA,GAAO,QAAQ,yBAC5B,GAAaA,GAAO,QAAQ,0BAC5B,GAAaA,GAAO,QAAQ,qBAC5B,GAAaA,GAAO,QAAQ,uBAE9B,GAAgCA,GAAO,QACvC,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAOpF,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACgB,OAAO,aAApB,UAAkD,OAAO,YAAY,KAAlC,YACrC,GAAI,YACJ,GAAS,aAAe,UAAW,CACjC,OAAOqF,GAAE,KAAK,IAGhB,GAAK,KAAM,GAAI,GAAG,KAAK,CACvB,GAAS,aAAe,UAAW,CACjC,OAAO,GAAG,KAAK,CAAG,KAGtB,GAAI,EAAE,CACN,GAAI,EAAE,CACN,GAAI,EACJ,GAAI,KACJ,GAAI,EACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAmB,OAAO,YAAtB,WAAmC,WAAa,KACpD,GAAmB,OAAO,cAAtB,WAAqC,aAAe,KACxD,GAAoB,OAAO,aAAvB,IAAsC,aAAe,KAClC,IAAvB,QAA+C,EAAU,aAArB,IAAK,IAAyC,EAAU,WAAW,iBAAhC,IAAK,IAA6C,EAAU,WAAW,eAAe,KAAK,EAAU,WAAW,CACvL,GAAI,GACJ,GAAI,KACJ,GAAI,GACJ,GAAI,EACJ,GAAI,GACe,OAAO,IAAtB,WAAyB,GAAI,UAAW,CAC1C,GAAE,GAAE,EAEmB,OAAO,eAAvB,KACP,GAAK,IAAI,eAAkB,GAAI,GAAG,MAClC,GAAG,MAAM,UAAY,GACrB,GAAI,UAAW,CACb,GAAE,YAAY,KAAK,GAEhB,GAAI,UAAW,CACpB,GAAE,GAAG,EAAE,EAET,GAAS,sBAAwB,EACjC,GAAS,2BAA6B,EACtC,GAAS,qBAAuB,EAChC,GAAS,wBAA0B,EACnC,GAAS,mBAAqB,KAC9B,GAAS,8BAAgC,EACzC,GAAS,wBAA0B,SAAS,EAAG,CAC7C,EAAE,SAAW,MAEf,GAAS,2BAA6B,UAAW,CAC/C,IAAKC,KAAM,GAAI,GAAM,GAAE,GAAE,GAE3B,GAAS,wBAA0B,SAAS,EAAG,CAC7C,EAAIzG,GAAK,IAAMA,EAAI,QAAQ,MAAM,kHAAkH,CAAG,GAAI,EAAIA,EAAI,KAAK,MAAM,IAAMA,EAAE,CAAG,GAE1L,GAAS,iCAAmC,UAAW,CACrD,OAAOkB,IAET,GAAS,8BAAgC,UAAW,CAClD,OAAO,GAAEF,GAAE,EAEb,GAAS,cAAgB,SAAS,EAAG,CACnC,OAAQE,GAAR,CACE,IAAK,GACL,IAAK,GACL,IAAK,GACH,IAAInB,EAAI,EACR,MACF,QACE,EAAImB,GAER,IAAIjB,EAAIiB,GACR,GAAInB,EACJ,GAAI,CACF,OAAOC,GAAG,QACF,CACR,GAAIC,IAGR,GAAS,wBAA0B,UAAW,GAE9C,GAAS,sBAAwB,UAAW,GAE5C,GAAS,yBAA2B,SAAS,EAAG,EAAG,CACjD,OAAQD,EAAR,CACE,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACH,MACF,QACE,EAAI,EAER,IAAIC,EAAIiB,GACR,GAAIlB,EACJ,GAAI,CACF,OAAOD,GAAG,QACF,CACR,GAAIE,IAGR,GAAS,0BAA4B,SAAS,EAAG,EAAG,EAAG,CACrD,IAAIa,EAAIK,GAAS,cAAc,CAE/B,OADa,OAAOlB,GAApB,UAAkCA,GAAK,EAAIA,EAAE,MAAO,EAAiB,OAAOA,GAApB,UAAyB,EAAIA,EAAIa,EAAIb,EAAIa,GAAK,EAAIA,EAClGd,EAAR,CACE,IAAK,GACH,IAAIE,EAAI,GACR,MACF,IAAK,GACH,EAAI,IACJ,MACF,IAAK,GACH,EAAI,WACJ,MACF,IAAK,GACH,EAAI,IACJ,MACF,QACE,EAAI,IAKR,MAHA,GAAID,EAAIC,EACR,EAAI,CAAE,GAAI,KAAK,SAAUH,EAAG,cAAeC,EAAG,UAAWC,EAAG,eAAgBC,EAAG,UAAW,GAAI,CAC9F,EAAIY,GAAK,EAAE,UAAYb,EAAG,GAAE,GAAGD,EAAE,CAAW,GAAEgB,GAAE,GAAb,MAAiBhB,IAAM,GAAE,GAAE,GAAK0G,IAAK,GAAEzF,GAAE,CAAE,GAAI,IAAM,GAAI,GAAM,GAAE,GAAGhB,EAAIa,EAAE,IAAM,EAAE,UAAYZ,EAAG,GAAEc,GAAGhB,EAAE,CAAE,IAAKyG,KAAM,GAAI,GAAM,GAAE,GAAE,GAC/JzG,GAET,GAAS,qBAAuB,GAChC,GAAS,sBAAwB,SAAS,EAAG,CAC3C,IAAID,EAAImB,GACR,OAAO,UAAW,CAChB,IAAIjB,EAAIiB,GACR,GAAInB,EACJ,GAAI,CACF,OAAOC,EAAE,MAAM,KAAM,UAAU,QACvB,CACR,GAAIC,KAIN,OAAO,aAAa0G,GAAQ,QAAQ,EAAI,OAAO,KAAKA,GAAQ,QAAQ,CAAC,SAAW,KACrEA,GAAQ,QAAQ,aAChBA,GAAQ,QAAQ,sBAChBA,GAAQ,QAAQ,2BAChBA,GAAQ,QAAQ,qBAChBA,GAAQ,QAAQ,wBAChBA,GAAQ,QAAQ,mBAChBA,GAAQ,QAAQ,8BAChBA,GAAQ,QAAQ,wBAChBA,GAAQ,QAAQ,2BAChBA,GAAQ,QAAQ,wBACfA,GAAQ,QAAQ,iCAChBA,GAAQ,QAAQ,8BAChBA,GAAQ,QAAQ,cAChBA,GAAQ,QAAQ,wBAChBA,GAAQ,QAAQ,sBAChBA,GAAQ,QAAQ,yBAChBA,GAAQ,QAAQ,0BAChBA,GAAQ,QAAQ,qBAChBA,GAAQ,QAAQ,uBAEGA,GAAQ,QAC3C,GAAgB,IAAW,QAAe,GAAU,OAAO,KAAS,KAAe,MAAetF,KAAW,QAAeA,IAAU,OAAO,WAAe,KAAe,YAAc,EAAE,CAC3L,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAOuF,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CAIC,GAAQ,QAAUxF,GAAuB,KAAkC,OAA8C,EAAE,CAAlC,GAAmC,CAE1GyF,GAAQ,QAC5B,GAAY,EAAE,CACd,GAAU,GAAY,KAAK,OAAO,OAAO,GAAW,EAAQ,CAC5D,GAAiB,GAAW,eAAgB,GAAU,qBAAsB,EAC5E,OAE6B,GAAU,iBAA8C,KAErF,GAAwB,GAAQ,GAAO,EAAI,qBAC3C,GAAS,GAAQ,GAAO,EAAI,eAAe,UAAU,CACrD,GAAoC,IAAW,UAAiB,GAAmB,EAAO,WAAa,MAAQ,GAAiB,eAAuC,EAAO,WAAgD,UAAa,eAAiBC,EAAwBC,EACpR,GAAgB,cAAcC,CAAgB,CAC5C,YAAY,GAAG,EAAM,CACnB,MAAM,GAAG,EAAK,CACd,KAAK,MAAQ,CACX,MAAO,GACR,CAEH,kBAAkB,EAAK,CACrB,KAAK,MAAM,IAAI,EAAI,CAErB,QAAS,CACP,OAAO,KAAK,MAAM,MAAQ,KAAO,KAAK,MAAM,WAGhD,GAAc,8BAAkC,CAC9C,MAAO,GACR,EACD,GAAU,YACV,GAA2B,IAAI,IAC/B,GAAa,GAAQ,GAAO,CAAC,CAAC,EAAI,UAAY,CAAC,CAAC,EAAI,QACpD,GAAgB,GAEC,EAAI,OAA+B,KAAK,UAAU,CAEnE,GAAK,CACH,IAAM,GAAMhH,IAAM,OAAOA,EAAE,EAAI,CAAC,GAAG,IAAIA,EAAE,EAAI,OAAOA,GAAM,WAC1D,IAAM,GAAM,OAAOA,GAAM,WACzB,IAAM,GAAM,OAAOA,GAAM,SACzB,IAAM,GAAM,OAAOA,GAAM,SACzB,IAAM,GAAM,OAAOA,GAAM,UACzB,IAAM,GAAMA,IAAM,IAAK,GACvB,IAAM,GAAM,MAAM,QAAQA,EAAE,CAC5B,IAAI,EAAG,EAAG,CACR,SAAS,UACT,UAAU,YACV,SAAS,IACP,EAAE,CAAE,CACN,GAAI,OAAOA,GAAM,OAAOD,GAAK,CAAC,CAACC,GAAM,CAAC,CAACD,EAAG,MAAO,GACjD,GAAI,GAAG,IAAIC,EAAE,EAAI,GAAG,IAAIA,EAAE,EAAI,GAAG,IAAIA,EAAE,CAAE,OAAOA,IAAMD,EACtD,IAAM,EAAQ,GAAG,IAAIC,EAAE,CACvB,GAAI,GAAS,IAAY,YAAa,OAAOA,IAAMD,EACnD,IAAM,EAAQ,GAAG,IAAIC,EAAE,CACvB,GAAI,GAAS,IAAW,YAAa,OAAOA,IAAMD,EAClD,IAAK,GAAS,IAAUC,IAAMD,EAAG,MAAO,GACxC,IAAI,EACJ,IAAK,KAAMC,EAAG,GAAI,EAAE,KAAMD,GAAI,MAAO,GACrC,GAAI,GAAS,IAAW,WAAa,IAAY,eAC1C,KAAM,EAASA,EAAIC,EAAG,GAAI,CAAC,GAAG,IAAIA,EAAE,GAAKD,EAAE,GAAK,CACnD,SACA,QAAS,YACV,CAAC,CAAE,MAAO,QAEX,IAAK,KAAM,EAASA,EAAIC,EAAG,GAAIA,EAAE,KAAQD,EAAE,GAAK,MAAO,GAEzD,GAAI,GAAG,IAAI,EAAG,CAAE,CAEd,GADI,GAASC,EAAE,SAAW,GAAKD,EAAE,SAAW,GACxC,GAAS,OAAO,KAAKC,EAAE,CAAC,SAAW,GAAK,OAAO,KAAKD,EAAE,CAAC,SAAW,EAAG,MAAO,GAChF,GAAIC,IAAMD,EAAG,MAAO,GAEtB,MAAO,IAEV,CACD,GAAc,QACd,GAAU,OAAO,QAAY,KAAe,GAC5C,GAAc,CAAC,MAAO,MAAO,UAAW,eAAgB,SAAU,SAAU,aAAc,UAAW,OAAQ,WAAW,CACxH,GAAc,GAAQ,CAAC,EAAE,GAAO,MAAQ,EAAI,QAC5C,GAA0B,EAAoB,KAAK,CACnD,IAAgB,EAAa,IAAa,CACxC,IAAM,EAAYY,IAAQ,EAAK,IAAQ,CACrC,IAAM,EAAW,IAAI,EACf,EAAgB,IAAI,EACpB,EAAa,IAAI,EACvB,SAAS,EAAmB,EAASP,GAAK,CAAC,OAAQ,EAAU,EAAe,EAAOA,GAAK,CAAC,KAAM,CAC7F,GAAM,CACJ,QACA,SACA,MACA,QACE,EACE,EAAU,EAAQ,EACpB,EAAQ,UAAW,EAAW,KAAK,EAAQ,CAC1C,EAAW,IAAI,GAAG,EAAQ,CAC/B,IAAM,EAAW,EAAO,iBAAiB,EAAS,CAAC,WAAW,EAAW,CACzE,GAAI,GAAqB,EAAO,CAC9B,MAAO,CACL,MAAO,EAAQ,EAAO,KACtB,OAAQ,EAAS,EAAO,KACxB,MACA,OACA,OAAQ,EACR,WACA,OAAQ,EACT,CACI,CACL,IAAM,EAAO,EAAO,IAAM,KAAK,GAAK,IAC9B,EAAK,EAAI,KAAK,IAAI,EAAO,EAAE,CAAG,EAC9B,EAAU,EAAQ,EAAd,EACV,MAAO,CACL,MAAO,EACP,OAAQ,EACR,MACA,OACA,OAAQ,EAAQ,EAChB,WACA,OAAQ,EACT,EAGL,IAAI,EACE,EAAyB,GAAY,EAAK,IAAY,CAC1D,YAAa4B,GAAcJ,EAAe,EAAE,CAAE,EAAO,YAAY,CAAE,CACjE,UACD,CAAC,CACH,EAAE,CACG,EAAU,IAAI,EA8HpB,MA7HmB,CACjB,MACA,IAAA,EAEA,GAAI,KACJ,OAAQ,KACR,UAAW,KACX,OAAQ,CACN,SAAU,EACV,QAAS,GACT,UAAW,GACZ,CACD,GAAI,KACJ,MAAO,KACP,YAAa,EAAS,IAAM,EAAYxB,GAAK,CAAE,EAAO,CACtD,SAAU,EAAW,IAAqB,EAAS,EAAW,EAAkBA,GAAK,CAAC,CACtF,OAAQ,GACR,OAAQ,GACR,KAAM,GACN,SAAU,KACV,MAAO,IAAI,GACX,UACA,MAAO,EACP,UAAW,SACX,gBAAiB,IAAK,GACtB,YAAa,CACX,QAAS,EACT,IAAK,GACL,IAAK,EACL,SAAU,IACV,YAAe,CACb,IAAM,EAASA,GAAK,CAChB,GAAoB,aAAa,EAAmB,CACpD,EAAO,YAAY,UAAY,EAAO,YAAY,KAAK,EAAsB,EAAO,YAAY,IAAI,CACxG,EAAqB,eAAiB,EAAsBA,GAAK,CAAC,YAAY,IAAI,CAAE,EAAO,YAAY,SAAS,EAEnH,CACD,KAAM,CACJ,MAAO,EACP,OAAQ,EACR,IAAK,EACL,KAAM,EACN,YAAa,GACd,CACD,SAAU,CACR,WAAY,EACZ,IAAK,EACL,MAAO,EACP,OAAQ,EACR,IAAK,EACL,KAAM,EACN,OAAQ,EACR,SAAU,EACV,OAAQ,EACR,qBACD,CACD,UAAY,GAAW,EAAK,GAAW4B,GAAcJ,EAAe,EAAE,CAAE,EAAO,CAAE,CAC/E,OAAQA,EAAeA,EAAe,EAAE,CAAE,EAAO,OAAO,CAAE,EAAO,CAClE,CAAC,CAAC,CACH,SAAU,EAAO,EAAQ,EAAa,EAAK,IAAS,CAClD,IAAM,EAASxB,GAAK,CAAC,OACf,EAAO,CACX,QACA,SACA,IAAK,GAAO,EACZ,KAAM,GAAQ,EACd,cACD,CACD,EAAK,IAAY,CACf,OACA,SAAUwB,EAAeA,EAAe,EAAE,CAAE,EAAO,SAAS,CAAE,EAAmB,EAAQ,EAAe,EAAK,CAAC,CAC/G,EAAE,EAEL,OAAS,GAAQ,EAAK,GAAW,CAC/B,IAAM,EAAW,GAAa,EAAI,CAClC,MAAO,CACL,SAAUI,GAAcJ,EAAe,EAAE,CAAE,EAAO,SAAS,CAAE,CAC3D,IAAK,EACL,WAAY,EAAO,SAAS,YAAc,EAC3C,CAAC,CACH,EACD,CACF,cAAe,EAAY,WAAa,CACtC,IAAM,EAAQxB,GAAK,CAAC,MACpB,EAAM,MAAM,CACZ,EAAM,YAAc,EAChB,IAAc,UAChB,EAAM,OAAO,CACb,EAAM,YAAc,GAEtB,OAAW,CACT,YACD,EAAE,EAEL,aAAc,IAAK,GACnB,SAAU,CACR,OAAQ,GACR,SAAU,EACV,OAAQ,EACR,UAA2B,IAAiB,CAC5C,YAAa,EAAE,CACf,QAAyB,IAAI,IAC7B,YAAa,EAAE,CACf,aAAc,CAAC,EAAG,EAAE,CACpB,YAAa,EAAE,CACf,YAA6B,IAAI,IACjC,WAAY,EAAK,EAAU,IAAU,CACnC,IAAM,EAAWA,GAAK,CAAC,SAQvB,MAPA,GAAS,UAAgC,EAAW,EAAI,EAAI,EAC5D,EAAS,YAAY,KAAK,CACxB,MACA,WACA,QACD,CAAC,CACF,EAAS,YAAc,EAAS,YAAY,MAAM,EAAG,IAAMJ,EAAE,SAAWD,EAAE,SAAS,KACtE,CACX,IAAM,EAAYK,GAAK,CAAC,SACpB,GAAa,MAAQ,EAAU,cACjC,EAAU,UAAiC,EAAW,EAAI,EAAI,EAC9D,EAAU,YAAc,EAAU,YAAY,OAAQ,GAAMN,EAAE,MAAQ,EAAI,IAIjF,CACF,EAED,CACI,EAAQ,EAAU,UAAU,CAC9B,EAAU,EAAM,KAChB,EAAS,EAAM,SAAS,IACxB,EAAY,EAAM,OA0BtB,OAzBA,EAAU,cAAgB,CACxB,GAAM,CACJ,SACA,OACA,WACA,KACA,OACE,EAAU,UAAU,CACxB,GAAI,EAAK,QAAU,EAAQ,OAAS,EAAK,SAAW,EAAQ,QAAU,EAAS,MAAQ,EAAQ,CAE7F,EAAU,EACV,EAAS,EAAS,IAClB,GAAa,EAAQ,EAAK,CAC1B,EAAG,cAAc,EAAS,IAAI,CAC9B,IAAM,EAAmC,EAAK,cAA2C,OAAO,kBAAsB,KAAe,EAAG,sBAAsB,mBAC9J,EAAG,QAAQ,EAAK,MAAO,EAAK,OAAQ,EAAY,CAE9C,IAAW,IACb,EAAY,EACZ,EAAK,IAAY,CACf,SAAU8B,EAAeA,EAAe,EAAE,CAAE,EAAO,SAAS,CAAE,EAAO,SAAS,mBAAmB,EAAO,CAAC,CAC1G,EAAE,GAEL,CACF,EAAU,UAAW,GAAW,EAAY,EAAO,CAAC,CAC7C,GAET,GAAgC,IAAI,IACpC,GAAqC,IAAI,IACzC,GAAoC,IAAI,IACxC,GAAkC,IAAI,QACtC,GAAU,QAAU,SAAS,EAAO,EAAO,EAAY,CACrD,IAAM,EAAO,MAAM,QAAQ,EAAM,CAAG,EAAQ,CAAC,EAAM,CACnD,OAAO,GAAQ,GAAU,EAAW,CAAE,CAAC,EAAO,GAAG,EAAK,CAAC,EAEzD,GAAU,MAAQ,SAAS,EAAO,EAAO,CAEvC,OAAO,GAAM,CAAC,EAAO,GADR,MAAM,QAAQ,EAAM,CAAG,EAAQ,CAAC,EAAM,CACtB,CAAC,EAEhC,GAAwB,IAAI,IAC3B,2BAGG,GAAW,GAAM,CACpB,8BAGG,GAAe,GAAO,GAAiB,CAC3C,GAAe,CACb,QAAS,UACT,OAAQ,GACT,CACD,IAA0B,EAAI,IAAW,CACvC,IAAM,EAAiB,OAAO,GAAO,WAAa,EAAG,EAAO,CAAG,EAE1D,OADD,GAAW,EAAe,CAAS,EAC3B,IAAI,GAAcA,EAAe,CAC3C,gBAAiB,mBACjB,SACA,UAAW,GACX,MAAO,GACR,CAAE,EAAG,CAAC,EAET,GAAW,mBAAmB,CAC5B,WAAwB,EACxB,oBAAqB,qBACrB,QAASqF,EACV,CAAC,CACF,GAAa,CACX,QAAS,CAAC,QAAS,GAAM,CACzB,cAAe,CAAC,cAAe,GAAM,CACrC,cAAe,CAAC,WAAY,GAAM,CAClC,QAAS,CAAC,QAAS,GAAK,CACxB,cAAe,CAAC,cAAe,GAAK,CACpC,YAAa,CAAC,YAAa,GAAK,CAChC,eAAgB,CAAC,eAAgB,GAAK,CACtC,cAAe,CAAC,cAAe,GAAK,CACpC,gBAAiB,CAAC,gBAAiB,GAAK,CACxC,qBAAsB,CAAC,qBAAsB,GAAK,CACnD,CACD,GAAK,CAAC,IAAK,IAAK,MAAO,SAAU,OAAQ,QAAS,QAAS,SAAS,CACpE,IAAM,EAAG,IAAO,GAAG,MAAO,GAAMtH,EAAEoC,KAAO,EAAGA,GAAG,CAC/C,GAAa,OAAO,eACpB,GAAc,OAAO,iBACrB,GAAqB,OAAO,0BAC5B,GAAuB,OAAO,sBAC9B,GAAgB,OAAO,UAAU,eACjC,GAAgB,OAAO,UAAU,qBACjC,IAAoB,EAAK,EAAK,IAAU,KAAO,EAAM,GAAW,EAAK,EAAK,CAAE,WAAY,GAAM,aAAc,GAAM,SAAU,GAAM,QAAO,CAAC,CAAG,EAAI,GAAO,EACxJ,IAAmB,EAAG,IAAM,CAC1B,IAAK,IAAI,IAAQhC,CAAM,IAAI,EAAE,CACvB,GAAc,KAAKA,EAAG,EAAK,EAC7B,GAAiBC,EAAG,EAAMD,EAAE,GAAM,CACtC,GAAI,OACG,IAAI,KAAQ,GAAqBA,EAAE,CAClC,GAAc,KAAKA,EAAG,EAAK,EAC7B,GAAiBC,EAAG,EAAMD,EAAE,GAAM,CAExC,OAAOC,GAET,IAAkB,EAAG,IAAM,GAAYA,EAAG,GAAmBD,EAAE,CAAC,CAC5B,IAAW,SAAuB,EAAO,UAAgC,eAAyB,EAAO,WAAiC,SAC9K,GAAQ,QAAQ,MAChB,QAAQ,MAAQ,UAAW,CACzB,IAAM,EAAU,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CACvC,GAAK,GAAmC,WAAW,WAAW,EAAK,EAAQ,SAAS,aAAa,CAAE,CACjG,QAAQ,MAAQ,GAChB,OAEF,OAAO,GAAM,MAAM,KAAM,UAAU,EAErC,GAAe,GAAYqH,EAAqB,KAAK,CAAC,CACtD,GAAgB,cAAcC,CAAiB,CAC7C,QAAS,CACP,OAAuB,EAAqB,GAAa,SAAU,CACjE,MAAO,KAAK,gBACb,CAAE,KAAK,MAAM,SAAS,GAG3B,GAA6B,EAAkB,SAAgB,EAAM,EAAc,CACjF,IAAI,EAAM,EAAM,CACd,WACA,WACA,SACA,QACA,KACA,SAAS,GACT,cACA,cACA,UACA,SACA,OACA,SACA,eACA,YACA,MACA,YAAa,EACb,YACA,SACA,QACA,kBACA,aACE,EAAK,EAAQ/F,GAAU,EAAK,CAC9B,WACA,WACA,SACA,QACA,KACA,SACA,cACA,cACA,UACA,SACA,OACA,SACA,eACA,YACA,MACA,cACA,YACA,SACA,QACA,kBACA,YACD,CAAC,CACF,MAAqB,GAAO,GAAqB,CAAE,EAAE,CAAC,CACtD,IAAM,GAAS,IAAkB,CAC3B,CAAC,EAAc,IAAiB,GAAEM,EAAe,CACrD,OAAQ,GACR,SAAU,CACR,OAAQ,GACR,OAAQ,EACT,CACF,CAAE,EAAO,CAAC,CACL,GAAY0F,EAAc,KAAK,CAC/B,GAASA,EAAc,KAAK,CAClC,EAA2B,MAAoB,GAAU,QAAQ,CACjE,IAAM,GAAsB,GAAmB,EAAgB,CACzD,CAAC,GAAO,GAAYC,EAAgB,GAAM,CAC1C,CAAC,GAAQ,IAAYA,EAAgB,GAAM,CACjD,GAAI,GAAO,MAAM,GACjB,GAAI,GAAQ,MAAM,GAClB,IAAM,GAAOD,EAAc,KAAK,CAuDhC,OAtDA,OAAiC,CAC/B,IAAM,EAAS,GAAU,QACrB,GAAc,MAAQ,GAAK,GAAc,OAAS,GAAK,IACzD,AAAmB,GAAK,UAAU,GAAW,EAAO,CACpD,GAAK,QAAQ,UAAU,CACrB,KACA,SACA,UACA,SACA,OACA,SACA,eACA,YACA,MACA,YAAa,EACb,YACA,SACA,QACA,KAAM,GAEN,iBAAkB,GAAG,IAAS,GAAoB,SAAW,KAAO,IAAK,GAAI,GAAoB,QAAQ,GAAG,EAAK,CACjH,UAAY,GAAU,CACpB,EAAM,OAAO,SAAW,MAAgB,EAAM,OAAO,QAAQ,EAAc,GAAM,EAAY,CAAG,EAAY,QAAU,EAAc,GAAO,QAAQ,CAC/I,GACF,EAAM,UAAU,CACd,SAAU,EAAO,IAAW,CAC1B,IAAMzH,EAAI,EAAM,EAAc,KACxB,EAAK,EAAM,EAAc,KAC/B,EAAO,QAAQ,IAAIA,EAAI,EAAO,KAAK,MAAQ,EAAI,EAAG,EAAE,EAAK,EAAO,KAAK,QAAU,EAAI,EAAE,CACrF,EAAO,UAAU,cAAc,EAAO,QAAS,EAAO,OAAO,EAEhE,CAAC,CAEJ,IAAuC,EAAM,EAEhD,CAAC,CACF,GAAK,QAAQ,OAAuB,EAAM,GAAQ,CAChD,SAA0B,EAAM,GAAe,CAC7C,IAAK,GACL,SAA0B,EAAM2H,EAAiB,CAC/C,SAA0B,EAAM,GAAO,CACrC,IAAK,EACN,CAAC,CACF,SAAU,GAA8B,KACzC,CAAC,CACH,CAAC,CACH,CAAC,CAAC,GAEL,CACF,MAAuB,CACrB,IAAM,EAAS,GAAU,QACzB,GAAI,EAAQ,UAAa,GAAuB,EAAO,EACtD,EAAE,CAAC,CAEiB,EAAM,MAAOxF,GAAcJ,EAAe,CAC/D,IAAK,GACL,MAAOA,EAAe,CACpB,SAAU,WACV,MAAO,OACP,OAAQ,OACR,SAAU,SACV,cARkB,EAAc,OAAS,OAS1C,CAAE,EAAM,CACV,CAAE,EAAM,CAAE,CACT,SAA0B,EAAM,MAAO,CACrC,IAAK,EACL,MAAO,CACL,MAAO,OACP,OAAQ,OACT,CACD,SAA0B,EAAM,SAAU,CACxC,IAAK,GACL,MAAO,CACL,QAAS,QACV,CACD,SAAU,EACX,CAAC,CACH,CAAC,CACH,CAAC,CAAC,EACH,CACF,GAA0B,EAAkB,SAAuB,EAAO,EAAK,CAC7E,OAAuB,EAAM,GAAe,CAC1C,SAA0B,EAAM,GAAYI,GAAcJ,EAAe,EAAE,CAAE,EAAM,CAAE,CACnF,MACD,CAAC,CAAC,CACJ,CAAC,EACF,EAEL,CAAC,CAME,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAa,CACX,QAAA,EACA,QACA,aACA,WACA,OACA,eACA,aACA,WACA,eACA,iBACA,SACA,YACI,CACJ,IAAM,EAAgB6F,EAAQ,IAAI,GAAQ,CACpC,EAAWC,MAAe,CAC9B,IAAM,EAAU,OAAO,QAAQ,EAAS,CAClC,EAAS,EAAS,OAClB,EAAM,GAAW,EAAO,GAAG,CAC3B,EAAM,GAAW,EAAO,GAAG,CAC3B,EAAM,GAAW,EAAO,GAAG,CAC3B,EAAY,CAChB,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC1D,KAAM,CAAE,MAAO,GAAY,GAA2B,EAAE,CAAE,CAC3D,CACK,EAAgB,EAAQ,QAAQ,EAAK,CAAC,EAAM,KAAW,CAC3D,IAAM,EAAU,GAAc,MAAM,EAAG,GAAO,CAAE,QAAO,CAAE,CAAC,CAC1D,OAAO9F,EAAeA,EAAe,EAAE,CAAE,EAAI,CAAE,EAAQ,EACtD,EAAE,CAAC,CACA,EAAiB,CACrB,SAAU,EAEV,UAAW,IAAW,QAAU,EAAI,GACpC,UAAW,IAAW,QAAU,GAAM,GAAK,OAAO,GAAe,SAAW,EAAa,IACzF,KAAM,GACN,gBAAkB,GAAY,CAC5B,EAAQ,SAAWA,EAAeA,EAAeA,EAAe,EAAE,CAAE,EAAQ,SAAS,CAAE,EAAc,CAAE,EAAU,CACjH,EAAQ,aAAe,EACvB,EAAQ,eAAiB,GAG5B,CACG,IAAW,UACb,EAAe,YAAc,GAC7B,EAAe,QAAU,GACzB,EAAe,aAAe,GAC9B,EAAe,UAAY,GAC3B,EAAe,UAAY,EAC3B,EAAe,mBAAqB,EACpC,EAAe,IAAM,IACrB,EAAe,gBAAkB,GAEnC,IAAM,EAAY,IAAI,GAAqB,EAAe,CAQ1D,OAPA,EAAQ,SACL,CAAC,KAAU,OAAO,eAAe,EAAW,EAAM,CACjD,QAAW,EAAU,SAAS,GAAM,MACpC,IAAM,GAAO,EAAU,SAAS,GAAM,MAAQ,EAC/C,CAAC,CACH,CACG,GAAQ,EAAO,EAAU,CACtB,GACN,CAAC,EAAU,EAAc,EAAgB,EAAQ,EAAY,EAAO,CAAC,CAuCxE,OAtCA,UACe,CACX,EAAS,SAAS,EAEnB,CAAC,EAAS,CAAC,CACd,MAAiB,CACX+F,IAAY,KACd,EAAc,QAAQ,OAAO,CAE7B,EAAc,QAAQ,MAAM,EAE7B,CAACA,EAAQ,CAAC,CACb,OAAe,CACb,GAAIA,IAAY,MAAQ,EAAS,SAAS,MAAO,CAC/C,IAAI,EAAU,EAAc,QAAQ,gBAAgB,CAChD,IAAS,MAAQ,OAAO,SAAS,EAAa,EAAI,EAAe,GACnE,GAAoB,EAChB,EAAS,SAAS,QACpB,EAAS,SAAS,MAAM,MAAQ,GAE9B,EAAS,SAAS,gBACpB,EAAS,SAAS,cAAc,MAAQ,KAGtC,EAAS,SAAS,QACpB,EAAS,SAAS,MAAM,MAAQ,GAE9B,IAAU,WAAa,OAAO,SAAS,EAAW,EAAI,OAAO,SAAS,EAAS,EAAI,EAAW,IAChG,EAAU,EAAa,EACnB,GAAW,IACb,EAAU,EACV,EAAc,QAAQ,OAAO,IAInC,EAAS,SAAS,MAAM,MAAQ,IAElC,CACqB,EAAK,YAAa,CAAE,OAAQ,WAAY,OAAQ,EAAU,CAAC,GAGvF,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAgB,EAAE,CAClB,GAAS,GAAe,CACtB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACnB,GAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEpB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAiB,EAAE,CACnB,GAAS,GAAgB,CACvB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAqB,EAAE,CACvB,GAAS,GAAoB,CAC3B,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAmB,EAAE,CACrB,GAAS,GAAkB,CACzB,UAAa,GACb,WAAc,GACd,eAAkB,GACnB,CAAC,EAEL,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAiB,EAAE,CACnB,GAAS,GAAgB,CACvB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAkB,EAAE,CACpB,GAAS,GAAiB,CACxB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAsB,EAAE,CACxB,GAAS,GAAqB,CAC5B,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAgB,EAAE,CAClB,GAAS,GAAe,CACtB,UAAa,GACb,WAAc,GACd,eAAkB,GACnB,CAAC,EAEL,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAiB,EAAE,CACnB,GAAS,GAAgB,CACvB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAkB,EAAE,CACpB,GAAS,GAAiB,CACxB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAsB,EAAE,CACxB,GAAS,GAAqB,CAC5B,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAoB;;;;;;;;;;;;;;;;;;;;;;EACpB,GAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAsB,EAAE,CACxB,GAAS,GAAqB,CAC5B,UAAa,GACb,WAAc,GACd,eAAkB,GACnB,CAAC,EAEL,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAiB,EAAE,CACnB,GAAS,GAAgB,CACvB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACrB,GAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEtB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAkB,EAAE,CACpB,GAAS,GAAiB,CACxB,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACrB,GAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEtB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAsB,EAAE,CACxB,GAAS,GAAqB,CAC5B,aAAgB,GAChB,WAAc,GACf,CAAC,CACF,GAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACrB,GAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEtB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAiB,EAAE,CACnB,GAAS,GAAgB,CACvB,UAAa,GACb,WAAc,GACd,eAAkB,GACnB,CAAC,EAEL,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAkB,EAAE,CACpB,GAAS,GAAiB,CACxB,WAAc,GACd,aAAgB,GAChB,UAAa,GACb,gBAAmB,GACpB,CAAC,EAEL,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,GAAa,CACX,YAAa,GACb,OAAQ,GACT,CACD,GAAQ,CACN,OAAS,GAAa,CACpB,GAAW,GAAY,IAEzB,QAAU,GAAa,CACrB,GAAW,GAAY,IAEzB,cAAiB,CACf,OAAO,KAAK,GAAW,CAAC,QAAS,GAAQ,CACvC,GAAW,GAAO,IAClB,EAEJ,eAAkB,CAChB,OAAO,KAAK,GAAW,CAAC,QAAS,GAAQ,CACvC,GAAW,GAAO,IAClB,EAEJ,aAAc,GAAG,IAAS,CACpB,GAAW,aACb,QAAQ,IAAI,gBAAiB,GAAG,EAAK,EAGzC,QAAS,GAAG,IAAS,CACf,GAAW,QACb,QAAQ,IAAI,WAAY,GAAG,EAAK,EAGrC,CACU,IAAW,SACpB,EAAO,MAAQ,KAGpB,CAAC,CAwEE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,EAExB,CAAC,CA+FE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAO,KAAM,CACX,aAAc,CACZ,KAAK,QAAU,GACf,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,eAAiB,GAExB,SAAU,EAEV,QAAS,CACP,QAAQ,MAAM,6DAA6D,GAG/E,GAAW,IAAI,GAAmB,GAAI,EAAG,EAAG,GAAI,EAAG,EAAE,CACrD,GAAa,IAAI,GACjB,GAAW,aACT,WACA,IAAI,EAAuB,CAAC,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAE,CAAE,EAAE,CAC/D,CACD,GAAW,aAAa,KAAM,IAAI,EAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAE,EAAE,CAAC,CAChF,GAAiB,KAAM,CACrB,YAAY,EAAU,CACpB,KAAK,MAAQ,IAAI,GAAK,GAAY,EAAS,CAE7C,SAAU,CACR,KAAK,MAAM,SAAS,SAAS,CAE/B,OAAO,EAAU,CACf,EAAS,OAAO,KAAK,MAAO,GAAS,CAEvC,IAAI,UAAW,CACb,OAAO,KAAK,MAAM,SAEpB,IAAI,SAAS,EAAO,CAClB,KAAK,MAAM,SAAW,KAI7B,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,GAAa,cAAc,EAAK,CAC9B,YAAY,EAAO,EAAQ,EAAkB,EAAY,EAAY,CACnE,OAAO,CACP,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,iBAAmB,EACxB,KAAK,WAAa,EAClB,KAAK,WAAa,IAAe,IAAK,GAAiB,EAAb,EAC1C,KAAK,MAAQ,GACb,KAAK,WAAa,GAClB,KAAK,UAAY,GACjB,KAAK,eAAiB,IAAIrH,EAE5B,OAAO,EAAU,EAAa,EAAY,CACxC,IAAM,EAAe,EAAS,UAC9B,EAAS,UAAY,GACrB,IAAI,EAAe,EACf,KAAK,mBAAqB,IAAK,KACjC,EAAsB,KAAK,MAAM,iBACjC,KAAK,MAAM,iBAAmB,KAAK,kBAEjC,KAAK,aACP,EAAS,cAAc,KAAK,eAAe,CAC3C,EAAgB,EAAS,eAAe,CACxC,EAAS,cAAc,KAAK,WAAY,KAAK,WAAW,EAEtD,KAAK,YACP,EAAS,YAAY,CAEvB,EAAS,gBAAgB,KAAK,eAAiB,KAAO,EAAW,CAC7D,KAAK,OACP,EAAS,MACP,EAAS,eACT,EAAS,eACT,EAAS,iBACV,CACH,EAAS,OAAO,KAAK,MAAO,KAAK,OAAO,CACpC,KAAK,YACP,EAAS,cAAc,KAAK,eAAgB,EAAc,CAExD,KAAK,mBAAqB,IAAK,KACjC,KAAK,MAAM,iBAAmB,GAEhC,EAAS,UAAY,KAI5B,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,GAAa,cAAc,EAAK,CAC9B,YAAY,EAAQ,EAAW,CAC7B,OAAO,CACP,KAAK,UAAY,IAAc,IAAK,GAAgB,WAAZ,EACpC,aAAkB,IACpB,KAAK,SAAW,EAAO,SACvB,KAAK,SAAW,GACP,IACT,KAAK,SAAW,GAAc,MAAM,EAAO,SAAS,CACpD,KAAK,SAAW,IAAI,GAAe,CACjC,QAAS,OAAO,OAAO,EAAE,CAAE,EAAO,QAAQ,CAC1C,SAAU,KAAK,SACf,aAAc,EAAO,aACrB,eAAgB,EAAO,eACxB,CAAC,EAEJ,KAAK,OAAS,IAAI,GAAe,KAAK,SAAS,CAEjD,OAAO,EAAU,EAAa,EAAY,CACpC,KAAK,SAAS,KAAK,aACrB,KAAK,SAAS,KAAK,WAAW,MAAQ,EAAW,SAEnD,KAAK,OAAO,SAAW,KAAK,SACxB,KAAK,gBACP,EAAS,gBAAgB,KAAK,CAC9B,KAAK,OAAO,OAAO,EAAS,GAE5B,EAAS,gBAAgB,EAAY,CACjC,KAAK,OACP,EAAS,MACP,EAAS,eACT,EAAS,eACT,EAAS,iBACV,CACH,KAAK,OAAO,OAAO,EAAS,KAKrC,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,GAAa,CACX,SAAU,CACR,SAAU,CAAE,MAAO,KAAM,CACzB,QAAS,CAAE,MAAO,EAAG,CACtB,CACD,aAEE;;;;;;;;;KAWF,eAEE;;;;;;;;;;;;;KAeH,EAEJ,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAW,cAAc,EAAK,CAC5B,YAAY,EAAO,EAAQ,CACzB,OAAO,CACP,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,MAAQ,GACb,KAAK,UAAY,GACjB,KAAK,QAAU,GAEjB,OAAO,EAAU,EAAa,EAAY,CACxC,IAAM,EAAW,EAAS,YAAY,CAChC,EAAQ,EAAS,MACvB,EAAM,QAAQ,MAAM,QAAQ,GAAM,CAClC,EAAM,QAAQ,MAAM,QAAQ,GAAM,CAClC,EAAM,QAAQ,MAAM,UAAU,GAAK,CACnC,EAAM,QAAQ,MAAM,UAAU,GAAK,CACnC,IAAI,EAAY,EACZ,KAAK,SACP,EAAa,EACb,EAAa,IAEb,EAAa,EACb,EAAa,GAEf,EAAM,QAAQ,QAAQ,QAAQ,GAAK,CACnC,EAAM,QAAQ,QAAQ,MACpB,EAAS,QACT,EAAS,QACT,EAAS,QACV,CACD,EAAM,QAAQ,QAAQ,QAAQ,EAAS,OAAQ,EAAY,WAAW,CACtE,EAAM,QAAQ,QAAQ,SAAS,EAAW,CAC1C,EAAM,QAAQ,QAAQ,UAAU,GAAK,CACrC,EAAS,gBAAgB,EAAW,CAChC,KAAK,OAAO,EAAS,OAAO,CAChC,EAAS,OAAO,KAAK,MAAO,KAAK,OAAO,CACxC,EAAS,gBAAgB,EAAY,CACjC,KAAK,OAAO,EAAS,OAAO,CAChC,EAAS,OAAO,KAAK,MAAO,KAAK,OAAO,CACxC,EAAM,QAAQ,MAAM,UAAU,GAAM,CACpC,EAAM,QAAQ,MAAM,UAAU,GAAM,CACpC,EAAM,QAAQ,QAAQ,UAAU,GAAM,CACtC,EAAM,QAAQ,QAAQ,QAAQ,EAAS,MAAO,EAAG,WAAW,CAC5D,EAAM,QAAQ,QAAQ,MAAM,EAAS,KAAM,EAAS,KAAM,EAAS,KAAK,CACxE,EAAM,QAAQ,QAAQ,UAAU,GAAK,GAGzC,GAAgB,cAAc,EAAK,CACjC,aAAc,CACZ,OAAO,CACP,KAAK,UAAY,GAEnB,OAAO,EAAU,CACf,EAAS,MAAM,QAAQ,QAAQ,UAAU,GAAM,CAC/C,EAAS,MAAM,QAAQ,QAAQ,QAAQ,GAAM,IAIpD,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAiB,KAAM,CACrB,YAAY,EAAU,EAAc,CAElC,GADA,KAAK,SAAW,EACZ,IAAiB,IAAK,GAAG,CAC3B,IAAM,EAAa,CACjB,UAAW,GACX,UAAW,GACX,OAAQ,GACT,CACK,EAAO,EAAS,QAAQ,IAAI,EAAU,CAC5C,KAAK,YAAc,EAAS,eAAe,CAC3C,KAAK,OAAS,EAAK,MACnB,KAAK,QAAU,EAAK,OACpB,EAAe,IAAI,GACjB,KAAK,OAAS,KAAK,YACnB,KAAK,QAAU,KAAK,YACpB,EACD,CACD,EAAa,QAAQ,KAAO,0BAE5B,KAAK,YAAc,EACnB,KAAK,OAAS,EAAa,MAC3B,KAAK,QAAU,EAAa,OAE9B,KAAK,cAAgB,EACrB,KAAK,cAAgB,EAAa,OAAO,CACzC,KAAK,cAAc,QAAQ,KAAO,qBAClC,KAAK,YAAc,KAAK,cACxB,KAAK,WAAa,KAAK,cACvB,KAAK,eAAiB,GACtB,KAAK,OAAS,EAAE,CACZ,KAAe,IAAK,IACtB,QAAQ,MAAM,4CAA4C,CAExD,KAAe,IAAK,IACtB,QAAQ,MAAM,4CAA4C,CAE5D,KAAK,SAAW,IAAI,GAAW,GAAW,CAC1C,KAAK,MAAQ,IAAI,GAEnB,aAAc,CACZ,IAAM,EAAO,KAAK,WAClB,KAAK,WAAa,KAAK,YACvB,KAAK,YAAc,EAErB,QAAQ,EAAM,CACZ,KAAK,OAAO,KAAK,EAAK,CACtB,EAAK,QACH,KAAK,OAAS,KAAK,YACnB,KAAK,QAAU,KAAK,YACrB,CAEH,WAAW,EAAM,EAAO,CACtB,KAAK,OAAO,OAAO,EAAO,EAAG,EAAK,CAClC,EAAK,QACH,KAAK,OAAS,KAAK,YACnB,KAAK,QAAU,KAAK,YACrB,CAEH,WAAW,EAAM,CACf,IAAM,EAAQ,KAAK,OAAO,QAAQ,EAAK,CACnC,IAAU,IACZ,KAAK,OAAO,OAAO,EAAO,EAAE,CAGhC,kBAAkB,EAAW,CAC3B,IAAK,IAAI,EAAK,EAAY,EAAG,EAAK,KAAK,OAAO,OAAQ,IACpD,GAAI,KAAK,OAAO,GAAI,QAClB,MAAO,GAGX,MAAO,GAET,OAAO,EAAW,CACZ,IAAc,IAAK,KACrB,EAAY,KAAK,MAAM,UAAU,EAEnC,IAAM,EAAsB,KAAK,SAAS,iBAAiB,CACvD,EAAa,GACjB,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,OAAO,OAAQ,EAAK,EAAI,IAAM,CACvD,IAAM,EAAO,KAAK,OAAO,GACrB,KAAK,UAAY,GASrB,IARA,EAAK,eAAiB,KAAK,gBAAkB,KAAK,kBAAkB,EAAG,CACvE,EAAK,OACH,KAAK,SACL,KAAK,YACL,KAAK,WACL,EACA,EACD,CACG,EAAK,UAAW,CAClB,GAAI,EAAY,CACd,IAAM,EAAW,KAAK,SAAS,YAAY,CACrC,EAAU,KAAK,SAAS,MAAM,QAAQ,QAC5C,EAAQ,QAAQ,EAAS,SAAU,EAAG,WAAW,CACjD,KAAK,SAAS,OACZ,KAAK,SACL,KAAK,YACL,KAAK,WACL,EACD,CACD,EAAQ,QAAQ,EAAS,MAAO,EAAG,WAAW,CAEhD,KAAK,aAAa,CAEhB,KAAa,IAAK,KAChB,aAAgB,GAClB,EAAa,GACJ,aAAgB,KACzB,EAAa,MAInB,KAAK,SAAS,gBAAgB,EAAoB,CAEpD,MAAM,EAAc,CAClB,GAAI,IAAiB,IAAK,GAAG,CAC3B,IAAM,EAAO,KAAK,SAAS,QAAQ,IAAI,EAAU,CACjD,KAAK,YAAc,KAAK,SAAS,eAAe,CAChD,KAAK,OAAS,EAAK,MACnB,KAAK,QAAU,EAAK,OACpB,EAAe,KAAK,cAAc,OAAO,CACzC,EAAa,QACX,KAAK,OAAS,KAAK,YACnB,KAAK,QAAU,KAAK,YACrB,CAEH,KAAK,cAAc,SAAS,CAC5B,KAAK,cAAc,SAAS,CAC5B,KAAK,cAAgB,EACrB,KAAK,cAAgB,EAAa,OAAO,CACzC,KAAK,YAAc,KAAK,cACxB,KAAK,WAAa,KAAK,cAEzB,QAAQ,EAAO,EAAQ,CACrB,KAAK,OAAS,EACd,KAAK,QAAU,EACf,IAAM,EAAiB,KAAK,OAAS,KAAK,YACpC,EAAkB,KAAK,QAAU,KAAK,YAC5C,KAAK,cAAc,QAAQ,EAAgB,EAAgB,CAC3D,KAAK,cAAc,QAAQ,EAAgB,EAAgB,CAC3D,IAAK,IAAI,EAAK,EAAG,EAAK,KAAK,OAAO,OAAQ,IACxC,KAAK,OAAO,GAAI,QAAQ,EAAgB,EAAgB,CAG5D,cAAc,EAAY,CACxB,KAAK,YAAc,EACnB,KAAK,QAAQ,KAAK,OAAQ,KAAK,QAAQ,GAGhC,IAAI,GAAmB,GAAI,EAAG,EAAG,GAAI,EAAG,EAAE,CACrD,GAAa,IAAI,GACjB,GAAW,aACT,WACA,IAAI,EAAuB,CAAC,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAE,CAAE,EAAE,CAC/D,CACD,GAAW,aAAa,KAAM,IAAI,EAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAE,EAAE,CAAC,EAEnF,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,GAAiB,CACf,SAAU,CACR,SAAU,CAAE,MAAO,KAAM,CACzB,MAAO,CAAE,MAAO,EAAG,CACnB,OAAQ,CAAE,MAAO,EAAG,CACpB,QAAS,CAAE,MAAO,KAAK,GAAK,GAAK,EAAG,CACpC,QAAS,CAAE,MAAO,KAAK,GAAK,GAAK,EAAG,CACpC,QAAS,CAAE,MAAO,KAAK,GAAK,GAAK,EAAG,CACpC,QAAS,CAAE,MAAO,EAAG,CACrB,MAAO,CAAE,MAAO,GAAI,CACpB,OAAQ,CAAE,MAAO,GAAI,CACrB,SAAU,CAAE,MAAO,EAAG,CACtB,aAAc,CAAE,MAAO,EAAG,CAC1B,UAAW,CAAE,MAAO,GAAO,CAC3B,QAAS,CAAE,MAAO,GAAO,CAC1B,CACD,aAEE;;;;;;;;;;;;KAcF,eAEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgUH,EAEJ,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAQ,KAAM,CACZ,aAAc,CACZ,KAAK,QAAU,GACf,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,eAAiB,GAExB,SAAU,EAEV,QAAS,CACP,QAAQ,MAAM,6DAA6D,GAG/E,GAAW,IAAI,GAAmB,GAAI,EAAG,EAAG,GAAI,EAAG,EAAE,CACrD,GAAa,IAAI,GACjB,GAAW,aACT,WACA,IAAI,EAAuB,CAAC,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAE,CAAE,EAAE,CAC/D,CACD,GAAW,aAAa,KAAM,IAAI,EAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAAE,EAAE,CAAC,CAChF,GAAkB,KAAM,CACtB,YAAY,EAAU,CACpB,KAAK,MAAQ,IAAI,GAAK,GAAY,EAAS,CAE7C,SAAU,CACR,KAAK,MAAM,SAAS,SAAS,CAE/B,OAAO,EAAU,CACf,EAAS,OAAO,KAAK,MAAO,GAAS,CAEvC,IAAI,UAAW,CACb,OAAO,KAAK,MAAM,SAEpB,IAAI,SAAS,EAAO,CAClB,KAAK,MAAM,SAAW,KAI7B,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,GAAgB,CACd,KAAM,EACN,IAAK,EACL,MAAO,EACP,QAAS,EACT,WAAY,EACZ,YAAa,EACb,OAAQ,EACR,WAAY,EACZ,UAAW,EACX,QAAS,EACT,SAAU,GACV,OAAQ,GACR,SAAU,GACV,OAAQ,GACR,QAAS,GACT,QAAS,GACT,OAAQ,GACR,WAAY,GACZ,SAAU,GACX,EAEJ,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,GAAiB;;;;;EACjB,GAAkB;;;;;;;;;;;;;EAClB,GAAkB;;;;;EAClB,GAAkB;;;;;;;;;;;;;;;;;;EAClB,GAAkB;;;;;;;;;;;;;;;;;;EAClB,GAAkB;;;;;EAClB,GAAkB;;;;;EAClB,GAAkB;;;;;;;;;;;;;;;;;;EAClB,GAAkB;;;;;EAClB,GAAmB;;;;;EACnB,GAAmB;;;;;EACnB,GAAmB;;;;;EACnB,GAAmB;;;;;EACnB,GAAmB;;;;;;;;;;;;;;;;;;EACnB,GAAmB;;;;;;;;;;;;;;;;;;EACnB,GAAmB;;;;;EACnB,GAAmB;;;;;;;;;;;;;;;;;;;;EACnB,GAAmB;;;;;EACnB,GAAiC,IAAI,IAAI,CACvC,CAAC,GAAc,KAAM,KAAK,CAC1B,CAAC,GAAc,IAAK,GAAe,CACnC,CAAC,GAAc,MAAO,GAAgB,CACtC,CAAC,GAAc,QAAS,GAAgB,CACxC,CAAC,GAAc,WAAY,GAAgB,CAC3C,CAAC,GAAc,YAAa,GAAgB,CAC5C,CAAC,GAAc,OAAQ,GAAgB,CACvC,CAAC,GAAc,WAAY,GAAgB,CAC3C,CAAC,GAAc,UAAW,GAAgB,CAC1C,CAAC,GAAc,QAAS,GAAiB,CACzC,CAAC,GAAc,SAAU,GAAiB,CAC1C,CAAC,GAAc,OAAQ,GAAgB,CACvC,CAAC,GAAc,SAAU,GAAiB,CAC1C,CAAC,GAAc,OAAQ,GAAiB,CACxC,CAAC,GAAc,QAAS,GAAiB,CACzC,CAAC,GAAc,QAAS,GAAiB,CACzC,CAAC,GAAc,OAAQ,GAAiB,CACxC,CAAC,GAAc,WAAY,GAAiB,CAC5C,CAAC,GAAc,SAAU,GAAiB,CAC3C,CAAC,CACF,GAAY,cAAc,EAAgB,CAOxC,YAAY,EAAe,EAAU,EAAG,CACtC,OAAO,CACP,KAAK,cAAgB,EACrB,KAAK,QAAU,IAAI,GAAQ,EAAQ,CAOrC,kBAAmB,CACjB,OAAO,KAAK,cAOd,iBAAiB,EAAe,CAC9B,KAAK,cAAgB,EACrB,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,CAOxC,eAAgB,CACd,OAAO,GAAe,IAAI,KAAK,cAAc,IAIpD,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAoB,GACpB,GAAe,cAAc,EAAM,CACjC,YAAY,EAAO,EAAQ,EAAQ,CACjC,OAAO,CACH,KAAmB,IAAK,IAC1B,QAAQ,MAAM,6CAA6C,CAE7D,KAAK,SAAW,GAAc,MAAM,GAAe,SAAS,CAC5D,KAAK,SAAW,IAAI,GAAe,CACjC,SAAU,KAAK,SACf,eAAgB,GAAe,eAC/B,aAAc,GAAe,aAC9B,CAAC,CACE,KACF,KAAK,SAAS,MAAM,MAAQ,EAC5B,KAAK,SAAS,OAAO,MAAQ,GAE/B,KAAK,SAAS,QAAQ,MAAQ,EAAO,QACrC,KAAK,OAAS,IAAI,GAAgB,KAAK,SAAS,CAChD,KAAK,UAAY,IAAI,GAAU,GAAc,OAAO,CACpD,KAAK,WAAa,KAEpB,OAAO,EAAU,EAAa,EAAY,CACxC,KAAK,SAAS,SAAS,SAAY,MAAQ,EAAW,QAClD,KAAK,gBACP,EAAS,gBAAgB,KAAK,CAC9B,KAAK,OAAO,OAAO,EAAS,GAE5B,EAAS,gBAAgB,EAAY,CACjC,KAAK,OAAO,EAAS,OAAO,CAChC,KAAK,OAAO,OAAO,EAAS,EAGhC,QAAQ,EAAO,EAAQ,CACjB,KACF,KAAK,SAAS,MAAM,MAAQ,EAC5B,KAAK,SAAS,OAAO,MAAQ,GAGjC,WAAW,EAAU,EAAO,EAAiB,EAE7C,kBAAmB,EAEnB,eAAgB,CACd,OAAO,KAAK,WAEd,mBAAoB,CAClB,OAAO,GAAe,eAExB,iBAAkB,CAChB,OAAO,GAAe,aAExB,OAAO,EAAU,EAAa,EAAW,KAI9C,CAAC,CAmEE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAe,EAAc,EAAM,KAC1B,CACL,IAAK,EAGL,OAAQ,CAAE,IAAK,EAAM,CAErB,OAAQ,GAER,KAAM,GAEN,GAAI,CACF,sBAAuB,GAA2C,sBAClE,gBAAiB,GAA2C,gBAC7D,CACF,EAEH,GAAoB,EACpB,GAAwB,GACxB,GAAgB,CAAE,KAAM,EAAG,SAAU,GAAI,CACzC,GAAgB,CAAE,KAAM,EAAG,SAAU,GAAI,CACzC,GAAqB,+DAExB,CAAC,CAyCE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,EAExB,CAAC,CA+ME,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAe,CACb,KAAM,EACN,MAAO,EACP,OAAQ,EACT,CACD,EAAS,OAAO,OAAO,CACrB,KAAM,EACN,OAAQ,EACR,MAAO,EACP,OAAQ,EACR,MAAO,EACP,KAAM,GACN,aAAc,GACd,YAAa,GACb,aAAc,IACd,YAAa,IACb,WAAY,IACZ,kBAAmB,KACnB,mBAAoB,KACpB,mBAAoB,KACpB,iBAAkB,KAClB,kBAAmB,MACnB,kBAAmB,MACpB,CAAC,CACF,GAAkB,CAChB,KAAM,EACN,GAAI,EACJ,IAAK,GACN,CACD,GAAO,KAAK,GAAK,EACjB,GAAU,KAAK,GAAK,EACpB,GAAU,KACV,GAAW,KAAK,GAAK,IACrB,GAAmB,KAAM,CACvB,aAAc,CACZ,KAAK,WAAa,EAAE,CAQtB,iBAAiB,EAAM,EAAU,CAC/B,IAAM,EAAY,KAAK,WACnB,EAAU,KAAU,IAAK,KAC3B,EAAU,GAAQ,EAAE,EAClB,EAAU,GAAM,QAAQ,EAAS,GAAK,IACxC,EAAU,GAAM,KAAK,EAAS,CAQlC,iBAAiB,EAAM,EAAU,CAC/B,IAAM,EAAY,KAAK,WACvB,OAAO,EAAU,KAAU,IAAK,IAAK,EAAU,GAAM,QAAQ,EAAS,GAAK,GAQ7E,oBAAoB,EAAM,EAAU,CAElC,IAAM,EADY,KAAK,WACS,GAChC,GAAI,IAAkB,IAAK,GAAG,CAC5B,IAAM,EAAQ,EAAc,QAAQ,EAAS,CACzC,IAAU,IACZ,EAAc,OAAO,EAAO,EAAE,EAQpC,wBAAwB,EAAM,CAC5B,GAAI,CAAC,EAAM,CACT,KAAK,WAAa,EAAE,CACpB,OAEE,MAAM,QAAQ,KAAK,WAAW,GAAM,GACtC,KAAK,WAAW,GAAM,OAAS,GAOnC,cAAc,EAAO,CAEnB,IAAM,EADY,KAAK,WACS,EAAM,MACtC,GAAI,IAAkB,IAAK,GAAG,CAC5B,EAAM,OAAS,KACf,IAAM,EAAQ,EAAc,MAAM,EAAE,CACpC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAM,OAAQ,EAAK,EAAI,IAC3C,EAAM,GAAI,KAAK,KAAM,EAAM,IAKnC,GAAU,QACV,GAAqB,EAAI,EACzB,GAAQ,MAAM,MAAY,YAAe,KAAgC,IAAK,GAAI,WAAW,YAAqD,SAAS,CAC3J,GAAiB,MAAM,UAAwB,EAAiB,CAyC9D,OAAO,QAAQ,EAAM,CACnB,GAAQ,EAAK,MACb,GAAU,OAAO,OAAO,IAAI,GAAM,QAAQ,EAAG,EAAG,EAAE,CAAC,CACnD,GAAU,OAAO,OAAO,IAAI,GAAM,QAAQ,EAAG,EAAG,EAAE,CAAC,CACnD,GAAU,OAAO,OAAO,IAAI,GAAM,QAAQ,EAAG,EAAG,EAAE,CAAC,CACnD,GAAO,IAAI,GAAM,QACjB,GAAO,IAAI,GAAM,QACjB,GAAO,IAAI,GAAM,QACjB,GAAO,IAAI,GAAM,QACjB,GAAmB,IAAI,GAAM,QAC7B,GAAW,IAAI,GAAM,QACrB,GAAW,IAAI,GAAM,QACrB,GAAW,IAAI,GAAM,QACrB,GAAe,IAAI,GAAM,QACzB,GAAe,IAAI,GAAM,QACzB,GAAc,IAAI,GAAM,UACxB,GAAc,IAAI,GAAM,UACxB,GAAS,IAAI,GAAM,KACnB,GAAS,IAAI,GAAM,KACnB,GAAW,IAAI,GAAM,OACrB,GAAe,IAAI,GAAM,WACzB,GAAe,IAAI,GAAM,WACzB,GAAkB,IAAI,GAAM,QAC5B,GAAa,IAAI,GAAM,UAMzB,WAAW,QAAS,CAClB,OAAO,EAmBT,YAAY,EAAQ,EAAY,CAC9B,OAAO,CACP,KAAK,cAAgB,EACrB,KAAK,cAAgB,KAAK,GAC1B,KAAK,gBAAkB,KACvB,KAAK,gBAAkB,IACvB,KAAK,mBACL,KAAK,YAAc,IACnB,KAAK,cAAgB,GACrB,KAAK,QAAU,IACf,KAAK,QAAU,IACf,KAAK,WAAa,IAClB,KAAK,mBAAqB,KAC1B,KAAK,SAAW,IAChB,KAAK,mBAAqB,EAC1B,KAAK,iBAAmB,EACxB,KAAK,WAAa,EAClB,KAAK,kBAAoB,GACzB,KAAK,WAAa,EAClB,KAAK,cAAgB,GACrB,KAAK,aAAe,GACpB,KAAK,sBAAwB,GAC7B,KAAK,iBAAmB,EACxB,KAAK,cAAgB,IACrB,KAAK,eAAiB,EAAE,CACxB,KAAK,WAAe,GAEpB,KAAK,SAAW,GAChB,KAAK,OAAS,EAAO,KACrB,KAAK,UAAY,KACjB,KAAK,cAAgB,EACrB,KAAK,aAAe,EACpB,KAAK,WAAa,GAClB,KAAK,wBAA0B,GAC/B,KAAK,aAAe,GACpB,KAAK,iBAAmB,GACxB,KAAK,aAAe,IAAI,QACxB,KAAK,YAAc,GACnB,KAAK,iBAAmB,GACxB,KAAK,gBAAkB,EAAE,CACzB,KAAK,eAAiB,KACtB,KAAK,iBAAmB,IAAI,QAAQ,EAAG,EAAG,EAAG,EAAE,CAC/C,KAAK,yBAA2B,GAChC,KAAK,wBAA0B,GAC/B,KAAK,wBAA0B,GAC/B,KAAK,yBAA2B,GAChC,KAAK,uBAAyB,GAC9B,KAAK,oBAAsB,GAAgB,KAC3C,KAAK,eAAiB,CAAE,MAAO,EAAG,CAClC,KAAK,aAAe,CAAE,MAAO,EAAG,CAChC,KAAK,gBAAkB,CAAE,MAAO,EAAG,CACnC,KAAK,gBAAkB,IAAI,GAAM,QACjC,KAAK,qBAAuB,IAAI,GAAM,QACtC,KAAK,cAAgB,CAAE,MAAO,EAAG,CACjC,KAAK,gBAAkB,EAAQ,EAAQ,IAAiB,CACtD,IAAI,EACA,EACJ,GAAI,GAAoB,KAAK,QAAQ,CAAE,CACrC,IAAM,EAAS,GAAK,KAAK,KAAK,QAAQ,SAAS,CAAC,IAAI,KAAK,QAAQ,CAC3D,EAAO,KAAK,QAAQ,iBAAiB,CAAG,GACxC,EAAiB,EAAO,QAAQ,CAAG,KAAK,IAAI,EAAO,GAAI,CAC7D,EAAS,KAAK,WAAa,EAAS,EAAiB,KAAK,aAAa,OACvE,EAAY,KAAK,WAAa,EAAS,EAAiB,KAAK,aAAa,eACjE,GAAsB,KAAK,QAAQ,CAAE,CAC9C,IAAM,EAAU,KAAK,QACrB,EAAS,GAAU,EAAQ,MAAQ,EAAQ,MAAQ,EAAQ,KAAO,KAAK,aAAa,MACpF,EAAY,GAAU,EAAQ,IAAM,EAAQ,QAAU,EAAQ,KAAO,KAAK,aAAa,YAEvF,OAEE,KAAK,uBACP,EAAe,KAAK,eAAe,KAAK,gBAAgB,EAAI,EAAQ,KAAK,gBAAgB,EAAG,KAAK,gBAAgB,EAAG,GAAK,CAAG,KAAK,MAAM,EAAQ,EAAG,GAAK,CACvJ,KAAK,QAAQ,CAAC,EAAW,GAAK,EAE9B,EAAe,KAAK,eAAe,KAAK,gBAAgB,EAAI,EAAQ,KAAK,gBAAgB,EAAI,EAAW,KAAK,gBAAgB,EAAG,GAAK,CAAG,KAAK,MAAM,EAAQ,EAAW,GAAK,EAG/K,KAAK,iBAAmB,EAAQ,IAAW,CACzC,IAAM,EAAQ,GAAO,KAAK,mBAAqB,EAAS,KAAK,aAAa,OACpE,EAAM,GAAO,KAAK,iBAAmB,EAAS,KAAK,aAAa,OACtE,KAAK,OAAO,EAAO,EAAK,GAAK,EAE/B,KAAK,gBAAkB,EAAO,EAAG,IAAO,CACtC,IAAM,EAAsB,MAAM,CAAC,EAAQ,KAAK,YAC1C,EAAe,KAAK,cAAc,OAClC,EAAW,KAAK,cAAc,OAAS,EACvC,EAAkB,GAAO,EAAU,KAAK,YAAa,KAAK,YAAY,CACtE,EAAqB,EAAkB,EACzC,KAAK,eAAiB,KAAK,cAC7B,KAAK,gBAAgB,EAAU,GAAK,EAC3B,KAAK,eAAiB,CAAC,KAAK,eACrC,KAAK,aAAa,EAAoB,GAAK,CAG3C,KAAK,gBAAgB,EAAiB,GAAK,EAEzC,KAAK,gBACP,KAAK,gBAAkB,KAAK,cAAgB,EAAW,GAAmB,EAC1E,KAAK,mBAAmB,IAAIT,EAAG,EAAG,EAEpC,KAAK,oBAAsB,KAAK,KAAK,CAAC,EAAM,EAE9C,KAAK,eAAiB,EAAO,EAAG,IAAO,CACrC,IAAM,EAAqB,MAAM,EAAQ,KAAK,YACxC,EAAW,KAAK,MAChB,EAAO,KAAK,MAAQ,EAC1B,KAAK,OAAO,EAAM,GAAK,CACnB,KAAK,gBACP,KAAK,cAAgB,EAAO,EAC5B,KAAK,mBAAmB,IAAIA,EAAG,EAAG,GAG3B,KAAU,QACnB,QAAQ,MAAM,kJAAkJ,CAElK,KAAK,QAAU,EACf,KAAK,cAAgB,IAAI,GAAM,YAAY,CAAC,mBAAmB,KAAK,QAAQ,GAAI,GAAQ,CACxF,KAAK,qBAAuB,KAAK,cAAc,OAAO,CAAC,QAAQ,CAC/D,KAAK,OAAS,EAAO,KACrB,KAAK,QAAU,IAAI,GAAM,QACzB,KAAK,WAAa,KAAK,QAAQ,OAAO,CACtC,KAAK,aAAe,IAAI,GAAM,QAC9B,KAAK,gBAAkB,KAAK,aAAa,OAAO,CAChD,KAAK,WAAa,IAAI,GAAM,WAAW,CAAC,eAAe,GAAK,KAAK,KAAK,QAAQ,SAAS,CAAC,gBAAgB,KAAK,cAAc,CAAC,CAC5H,KAAK,cAAgB,KAAK,WAAW,OAAO,CAC5C,KAAK,cAAgB,KAAK,WAAW,OACrC,KAAK,MAAQ,KAAK,QAAQ,KAC1B,KAAK,SAAW,KAAK,MACrB,KAAK,UAAY,KAAK,MACtB,KAAK,kBAAoB,CACvB,IAAI,GAAM,QACV,IAAI,GAAM,QACV,IAAI,GAAM,QACV,IAAI,GAAM,QACX,CACD,KAAK,yBAAyB,CAC9B,KAAK,UAAY,IAAI,GAAM,KAAK,IAAI,GAAM,QAAQ,KAAW,KAAW,KAAU,CAAE,IAAI,GAAM,QAAQ,IAAU,IAAU,IAAS,CAAC,CACpI,KAAK,WAAa,KAAK,QAAQ,GAAG,OAAO,CACzC,KAAK,SAAW,KAAK,QAAQ,OAAO,CACpC,KAAK,WAAa,KAAK,QAAQ,SAAS,OAAO,CAC/C,KAAK,OAAS,KAAK,MACnB,KAAK,cAAgB,KAAK,aAAa,OAAO,CAC9C,KAAK,mBAAqB,IAAI,GAAM,QACpC,KAAK,aAAe,CAClB,KAAM,EAAO,OACb,OAAQ,EAAO,MACf,MAAO,EAAO,MACd,MAAO,GAAoB,KAAK,QAAQ,CAAG,EAAO,MAAQ,GAAsB,KAAK,QAAQ,CAAG,EAAO,KAAO,EAAO,KACtH,CACD,KAAK,QAAU,CACb,IAAK,EAAO,aACZ,IAAK,GAAoB,KAAK,QAAQ,CAAG,EAAO,kBAAoB,GAAsB,KAAK,QAAQ,CAAG,EAAO,iBAAmB,EAAO,KAC3I,MAAO,EAAO,YACf,CACD,IAAM,EAAoB,IAAI,GAAM,QAC9B,EAAmB,IAAI,GAAM,QAC7B,EAAa,IAAI,GAAM,QACvB,EAAiB,GAAU,CAC/B,GAAI,CAAC,KAAK,UAAY,CAAC,KAAK,YAC1B,OACF,GAAI,KAAK,iBAAiB,OAAS,GAAK,KAAK,iBAAiB,MAAQ,GAAK,KAAK,iBAAiB,QAAU,GAAK,KAAK,iBAAiB,SAAW,EAAG,CAClJ,IAAM,EAAS,KAAK,YAAY,uBAAuB,CACjD,EAAO,EAAM,QAAU,EAAO,MAC9B,EAAM,EAAM,QAAU,EAAO,OACnC,GAAI,EAAO,KAAK,iBAAiB,MAAQ,EAAO,KAAK,iBAAiB,OAAS,EAAM,KAAK,iBAAiB,KAAO,EAAM,KAAK,iBAAiB,OAC5I,OAEJ,IAAM,EAAc,EAAM,cAAgB,SAAkB,EAAM,QAAU,GAAa,QAAU,GAAa,KAAO,GAAa,MAAQ,EAAM,QAAU,GAAa,UAAY,GAAa,OAAS,GAAa,QAAU,EAAM,QAAU,GAAa,SAAW,GAAa,MAAQ,GAAa,MAAQ,KAAhQ,KACpD,GAAI,IAAgB,KAAM,CACxB,IAAM,EAAgB,KAAK,0BAA0B,EAAY,CACjE,GAAiB,KAAK,gBAAgB,EAAc,CAEtD,IAAK,EAAM,QAAU,GAAa,QAAU,GAAa,MAAQ,KAAK,eACpE,OACF,IAAM,EAAU,CACd,UAAW,EAAM,UACjB,QAAS,EAAM,QACf,QAAS,EAAM,QACf,OAAQ,EACR,OAAQ,EACR,cACD,CACD,KAAK,gBAAgB,KAAK,EAAQ,CAClC,KAAK,YAAY,cAAc,oBAAoB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACpG,KAAK,YAAY,cAAc,oBAAoB,YAAa,EAAY,CAC5E,KAAK,YAAY,cAAc,iBAAiB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACjG,KAAK,YAAY,cAAc,iBAAiB,YAAa,EAAY,CACzE,KAAK,YAAc,GACnB,EAAc,EAAM,EAEhB,EAAiB,GAAU,CAC3B,EAAM,YACR,EAAM,gBAAgB,CACxB,IAAM,EAAY,EAAM,UAClB,EAAU,KAAK,gBAAkB,KAAK,iBAAiB,EAAU,CAClE,KAOL,IALA,EAAQ,QAAU,EAAM,QACxB,EAAQ,QAAU,EAAM,QACxB,EAAQ,OAAS,EAAM,UACvB,EAAQ,OAAS,EAAM,UACvB,KAAK,OAAS,EACV,EAAM,cAAgB,QACxB,OAAQ,KAAK,gBAAgB,OAA7B,CACE,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,IAC3B,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,IAC3B,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,MAC3B,YAGA,CAAC,KAAK,aAAe,KAAK,gBAAkB,KAAK,cAAgB,EAAM,QAAU,GAAa,QAAU,GAAa,QACvH,KAAK,QAAuB,KAAK,aAAa,MAE5C,KAAK,cAAgB,EAAM,QAAU,GAAa,UAAY,GAAa,SAC7E,KAAK,QAAuB,KAAK,aAAa,QAE5C,KAAK,cAAgB,EAAM,QAAU,GAAa,SAAW,GAAa,QAC5E,KAAK,QAAuB,KAAK,aAAa,OAGlD,GAAU,GAEN,EAAe,GAAU,CAC7B,IAAM,EAAU,KAAK,iBAAiB,EAAM,UAAU,CAClD,QAAW,IAAY,KAAK,gBAGhC,IADA,GAAW,KAAK,gBAAgB,EAAQ,CACpC,EAAM,cAAgB,QACxB,OAAQ,KAAK,gBAAgB,OAA7B,CACE,IAAK,GACH,KAAK,OAAS,EAAO,KACrB,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,IAC3B,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,IAC3B,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,MAC3B,WAGJ,KAAK,OAAS,EAAO,KAEvB,GAAa,GAEX,EAAsB,GACpB,EAAgB,GAAU,CAG9B,GAFI,CAAC,KAAK,aAEN,CAAC,KAAK,UAAY,KAAK,aAAa,QAAU,EAAO,KACvD,OACF,GAAI,KAAK,iBAAiB,OAAS,GAAK,KAAK,iBAAiB,MAAQ,GAAK,KAAK,iBAAiB,QAAU,GAAK,KAAK,iBAAiB,SAAW,EAAG,CAClJ,IAAM,EAAS,KAAK,YAAY,uBAAuB,CACjD,EAAO,EAAM,QAAU,EAAO,MAC9B,EAAM,EAAM,QAAU,EAAO,OACnC,GAAI,EAAO,KAAK,iBAAiB,MAAQ,EAAO,KAAK,iBAAiB,OAAS,EAAM,KAAK,iBAAiB,KAAO,EAAM,KAAK,iBAAiB,OAC5I,OAGJ,GADA,EAAM,gBAAgB,CAClB,KAAK,eAAiB,KAAK,aAAa,QAAU,EAAO,QAAU,KAAK,aAAa,QAAU,EAAO,MAAO,CAC/G,IAAM,EAAO,YAAY,KAAK,CAC1B,EAAsB,EAAO,KAC/B,KAAK,eAAe,KAAK,aAAa,CACxC,EAAsB,EAExB,IAAM,EAAe,GAAQ,GAAK,GAC5B,EAAQ,EAAM,YAAc,EAAI,EAAM,OAAS,EAAe,EAAM,QAAU,EAAe,IAC7FA,EAAI,KAAK,eAAiB,EAAM,QAAU,KAAK,aAAa,GAAK,KAAK,aAAa,MAAQ,EAAI,EAAI,EACnG,EAAK,KAAK,eAAiB,EAAM,QAAU,KAAK,aAAa,GAAK,KAAK,aAAa,OAAS,GAAK,EAAI,EAC5G,OAAQ,KAAK,aAAa,MAA1B,CACE,KAAK,EAAO,OACV,KAAK,gBAAgB,EAAM,OAAQ,EAAM,OAAO,CAChD,KAAK,yBAA2B,GAChC,MAEF,KAAK,EAAO,MACV,KAAK,eAAe,EAAM,OAAQ,EAAM,OAAQ,GAAM,CACtD,KAAK,wBAA0B,GAC/B,MAEF,KAAK,EAAO,OACV,KAAK,eAAe,EAAM,OAAQ,EAAM,OAAQ,GAAK,CACrD,KAAK,yBAA2B,GAChC,MAEF,KAAK,EAAO,MACV,KAAK,eAAe,CAAC,EAAOA,EAAG,EAAG,CAClC,KAAK,wBAA0B,GAC/B,MAEF,KAAK,EAAO,KACV,KAAK,cAAc,CAAC,EAAOA,EAAG,EAAG,CACjC,KAAK,uBAAyB,GAC9B,MAGJ,KAAK,cAAc,CAAE,KAAM,UAAW,CAAC,EAEnC,EAAiB,GAAU,CAC3B,MAAC,KAAK,aAAe,CAAC,KAAK,UAE/B,IAAI,KAAK,aAAa,QAAU,EAAgB,OAAO,KAAM,CAC3D,IAAM,EAAY,aAAiB,aAAe,EAAM,UAAY,EAC9D,EAAU,KAAK,iBAAiB,EAAU,CAChD,GAAW,KAAK,gBAAgB,EAAQ,CACxC,KAAK,YAAY,cAAc,oBAAoB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACpG,KAAK,YAAY,cAAc,oBAAoB,YAAa,EAAY,CAC5E,OAEF,EAAM,gBAAgB,GAElB,EAAiB,GAAU,CAC1B,QAAK,SAOV,IALA,GAA4B,KAAK,gBAAiB,GAAK,CACvD,KAAK,eAAe,KAAK,aAAa,CACtC,EAAkB,KAAK,GAAK,CAC5B,EAAiB,KAAK,GAAK,CACN,KAAK,gBAAgB,QAAU,EAClC,CAChB,IAAM,EAAK,GAAK,EAAI,KAAK,gBAAgB,GAAG,QACtC,EAAK,GAAK,EAAI,KAAK,gBAAgB,GAAG,QACtC,EAAW,KAAK,KAAK,EAAK,EAAK,EAAK,EAAG,CAC7C,EAAW,IAAI,EAAG,EAAS,CAC3B,IAAMA,GAAK,KAAK,gBAAgB,GAAG,QAAU,KAAK,gBAAgB,GAAG,SAAW,GAC1E,GAAM,KAAK,gBAAgB,GAAG,QAAU,KAAK,gBAAgB,GAAG,SAAW,GACjF,EAAiB,IAAIA,EAAG,EAAG,CAG7B,GADA,KAAK,OAAS,EACV,CAAC,EACC,KAAK,iBACP,KAAK,QAAuB,KAAK,aAAa,cACvC,gBAAiB,GAAS,EAAM,cAAgB,QACzD,OAAQ,KAAK,gBAAgB,OAA7B,CACE,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,IAC3B,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,IAC3B,MACF,IAAK,GACH,KAAK,OAAS,KAAK,QAAQ,MAC3B,WAGA,CAAC,KAAK,iBAAmB,EAAM,QAAU,GAAa,QAAU,GAAa,OAC/E,KAAK,QAAuB,KAAK,aAAa,OAE3C,EAAM,QAAU,GAAa,UAAY,GAAa,SACzD,KAAK,QAAuB,KAAK,aAAa,SAE3C,EAAM,QAAU,GAAa,SAAW,GAAa,QACxD,KAAK,QAAuB,KAAK,aAAa,SAG7C,KAAK,OAAS,EAAO,UAAY,EAAO,SAAW,KAAK,OAAS,EAAO,gBAAkB,EAAO,eAAiB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,qBACnP,KAAK,cAAc,MAAQ,KAAK,WAAW,MAC3C,KAAK,cAAc,IAAM,KAAK,WAAW,IACzC,KAAK,eAAe,MAAQ,EAC5B,KAAK,aAAa,MAAQ,KAEvB,KAAK,OAAS,EAAO,SAAW,EAAO,QAAU,KAAK,OAAS,EAAO,eAAiB,EAAO,cAAgB,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,oBAAsB,EAAO,oBAC5O,KAAK,WAAW,KAAK,KAAK,QAAQ,CAClC,KAAK,gBAAgB,IAAI,EAAG,EAAG,EAAE,IAE9B,KAAK,OAAS,EAAO,SAAW,EAAO,QAAU,KAAK,OAAS,EAAO,eAAiB,EAAO,cAAgB,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,sBAAwB,EAAO,sBACzT,KAAK,cAAc,OAAS,KAAK,WAAW,OAC5C,KAAK,gBAAgB,MAAQ,KAE1B,KAAK,OAAS,EAAO,QAAU,EAAO,OAAS,KAAK,OAAS,EAAO,cAAgB,EAAO,aAAe,KAAK,OAAS,EAAO,oBAAsB,EAAO,mBAAqB,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,qBAAuB,EAAO,qBAChT,KAAK,SAAW,KAAK,MACrB,KAAK,cAAc,MAAQ,KAExB,KAAK,OAAS,EAAO,UAAY,EAAO,SAAW,KAAK,OAAS,EAAO,gBAAkB,EAAO,eAAiB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,qBACnP,KAAK,gBAAgB,KAAK,KAAK,aAAa,CAC5C,KAAK,qBAAqB,IAAI,EAAG,EAAG,EAAE,EAExC,KAAK,cAAc,CAAE,KAAM,eAAgB,CAAC,GAExC,MAAiB,CACrB,GAAI,CAAC,KAAK,UAAY,CAAC,KAAK,iBAC1B,OACF,KAAK,iBAAmB,GACxB,GAA4B,KAAK,gBAAiB,GAAK,CAEvD,IAAM,EADsB,KAAK,aAAe,KAAK,YAAY,cAAc,qBAAuB,KAAK,YAC/D,KAAK,gBAAkB,KAAK,gBAAgB,GAAK,KACvF,EAAS,EAAgB,CAAC,EAAc,OAAS,EAAiB,EAAI,GAAK,EAC3E,EAAS,EAAgB,CAAC,EAAc,OAAS,EAAiB,EAAI,GAAK,EAMjF,GALA,EAAiB,KAAK,GAAK,GACtB,KAAK,OAAS,EAAO,UAAY,EAAO,SAAW,KAAK,OAAS,EAAO,gBAAkB,EAAO,eAAiB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,qBACnP,KAAK,gBAAgB,EAAQ,EAAO,CACpC,KAAK,yBAA2B,KAE7B,KAAK,OAAS,EAAO,SAAW,EAAO,QAAU,KAAK,OAAS,EAAO,QAAU,EAAO,KAAM,CAChG,IAAM,EAAS,KAAK,eAAiB,EAAkB,EAAI,KAAK,aAAa,GAAK,KAAK,aAAa,MAAQ,EAAI,EAAI,EAC9G,EAAS,KAAK,eAAiB,EAAkB,EAAI,KAAK,aAAa,GAAK,KAAK,aAAa,OAAS,GAAK,EAAI,EAChH,EAAiB,KAAK,kBAAoB,GAAK,GAChD,KAAK,OAAS,EAAO,SAAW,EAAO,OAC1C,KAAK,eAAe,EAAiB,EAAS,GAAoB,EAAQ,EAAO,CACjF,KAAK,wBAA0B,KAE/B,KAAK,cAAc,EAAiB,EAAS,GAAoB,EAAQ,EAAO,CAChF,KAAK,uBAAyB,IAGlC,IAAK,KAAK,OAAS,EAAO,eAAiB,EAAO,cAAgB,KAAK,OAAS,EAAO,cAAgB,EAAO,aAAe,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,oBAAsB,EAAO,mBAAqB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,kBAAmB,CAChjB,IAAM,EAAK,GAAK,EAAI,KAAK,gBAAgB,GAAG,QACtC,EAAK,GAAK,EAAI,KAAK,gBAAgB,GAAG,QACtC,EAAW,KAAK,KAAK,EAAK,EAAK,EAAK,EAAG,CACvC,EAAa,EAAW,EAAI,EAClC,EAAW,IAAI,EAAG,EAAS,CAC3B,IAAM,EAAS,KAAK,eAAiB,EAAiB,EAAI,KAAK,aAAa,GAAK,KAAK,aAAa,MAAQ,EAAI,EAAI,EAC7G,EAAS,KAAK,eAAiB,EAAiB,EAAI,KAAK,aAAa,GAAK,KAAK,aAAa,OAAS,GAAK,EAAI,GAChH,KAAK,OAAS,EAAO,eAAiB,EAAO,cAAgB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,sBAAwB,EAAO,oBACxQ,KAAK,eAAe,EAAa,GAAoB,EAAQ,EAAO,CACpE,KAAK,wBAA0B,KAE/B,KAAK,cAAc,EAAa,GAAoB,EAAQ,EAAO,CACnE,KAAK,uBAAyB,MAG7B,KAAK,OAAS,EAAO,SAAW,EAAO,QAAU,KAAK,OAAS,EAAO,eAAiB,EAAO,cAAgB,KAAK,OAAS,EAAO,qBAAuB,EAAO,oBAAsB,KAAK,OAAS,EAAO,oBAAsB,EAAO,oBAC5O,KAAK,eAAe,EAAQ,EAAQ,GAAM,CAC1C,KAAK,wBAA0B,MAE5B,KAAK,OAAS,EAAO,UAAY,EAAO,SAAW,KAAK,OAAS,EAAO,gBAAkB,EAAO,eAAiB,KAAK,OAAS,EAAO,sBAAwB,EAAO,qBAAuB,KAAK,OAAS,EAAO,qBAAuB,EAAO,qBACnP,KAAK,eAAe,EAAQ,EAAQ,GAAK,CACzC,KAAK,yBAA2B,IAElC,KAAK,cAAc,CAAE,KAAM,UAAW,CAAC,EAEnC,MAAoB,CACxB,GAA4B,KAAK,gBAAiB,GAAK,CACvD,EAAiB,KAAK,GAAK,CAC3B,KAAK,iBAAmB,IACpB,KAAK,gBAAgB,SAAW,GAAK,KAAK,gBAAgB,SAAW,GAAK,KAAK,gBAAgB,KAAO,KAAK,kBAC7G,KAAK,YAAc,IAEjB,KAAK,gBAAgB,SAAW,GAAK,KAAK,cAC5C,KAAK,YAAY,cAAc,oBAAoB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACpG,KAAK,YAAY,cAAc,oBAAoB,YAAa,EAAY,CAC5E,KAAK,cAAc,CAAE,KAAM,aAAc,CAAC,GAG9C,KAAK,gBAAoB,CACnB,CAAC,KAAK,UAAY,CAAC,KAAK,cAE5B,KAAK,QAAQ,CACb,KAAK,eAAiB,CACpB,UAAW,GACX,QAAS,EACT,QAAS,EACT,OAAQ,EACR,OAAQ,EACR,YAAa,KACd,CACD,KAAK,gBAAgB,KAAK,KAAK,eAAe,CAC9C,KAAK,YAAY,cAAc,oBAAoB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACpG,KAAK,YAAY,cAAc,oBAAoB,YAAa,EAAY,CAC5E,KAAK,YAAY,oBAAoB,CACrC,KAAK,YAAY,cAAc,iBAAiB,oBAAqB,EAAoB,CACzF,KAAK,YAAY,cAAc,iBAAiB,mBAAoB,EAAmB,CACvF,KAAK,YAAY,cAAc,iBAAiB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACjG,KAAK,YAAY,cAAc,iBAAiB,YAAa,EAAY,CACzE,GAAe,GAEjB,KAAK,kBAAsB,CACzB,IAAI,EAAM,EAAK,EACX,KAAK,iBAAmB,OAC1B,KAAK,gBAAgB,KAAK,eAAe,CACzC,KAAK,eAAiB,OAEvB,EAAO,KAAK,cAAiB,MAAmC,EAAK,cAAc,iBAAiB,EACpG,EAAM,KAAK,cAAiB,MAAkC,EAAI,cAAc,oBAAoB,oBAAqB,EAAoB,EAC7I,EAAK,KAAK,cAAiB,MAAiC,EAAG,cAAc,oBAAoB,mBAAoB,EAAmB,CACzI,KAAK,QAAQ,EAEf,IAAM,MAA4B,CACJ,KAAK,aAAe,KAAK,YAAY,cAAc,qBAAuB,KAAK,aAEzG,KAAK,eAAe,EAElB,MAA2B,CAC/B,KAAK,eAAe,EAEtB,KAAK,sBAAyB,GAAgB,CAC5C,KAAK,YAAc,EACnB,KAAK,YAAY,MAAM,YAAc,OACrC,KAAK,YAAY,MAAM,WAAa,OACpC,KAAK,YAAY,MAAM,iBAAmB,OAC1C,KAAK,YAAY,iBAAiB,cAAe,EAAc,CAC/D,KAAK,YAAY,iBAAiB,gBAAiB,EAAY,CAC/D,KAAK,YAAY,iBAAiB,QAAS,EAAc,CAAE,QAAS,GAAO,CAAC,CAC5E,KAAK,YAAY,iBAAiB,cAAe,EAAc,EAEjE,KAAK,6BAAiC,CAC/B,KAAK,cAEV,KAAK,YAAY,MAAM,YAAc,GACrC,KAAK,YAAY,MAAM,WAAa,GACpC,KAAK,YAAY,MAAM,iBAAmB,GAC1C,KAAK,YAAY,oBAAoB,cAAe,EAAc,CAClE,KAAK,YAAY,oBAAoB,gBAAiB,EAAY,CAClE,KAAK,YAAY,oBAAoB,QAAS,EAAc,CAAE,QAAS,GAAO,CAAC,CAC/E,KAAK,YAAY,oBAAoB,cAAe,EAAc,CAClE,KAAK,YAAY,cAAc,oBAAoB,cAAe,EAAe,CAAE,QAAS,GAAO,CAAC,CACpG,KAAK,YAAY,cAAc,oBAAoB,YAAa,EAAY,CAC5E,KAAK,YAAY,cAAc,oBAAoB,oBAAqB,EAAoB,CAC5F,KAAK,YAAY,cAAc,oBAAoB,mBAAoB,EAAmB,GAE5F,KAAK,WAAe,CACd,KAAK,SAAW,EAAO,OAE3B,KAAK,OAAS,EAAO,KACrB,KAAK,gBAAgB,OAAS,EAC9B,GAAa,GAEX,GACF,KAAK,QAAQ,EAAW,CAC1B,KAAK,OAAO,EAAE,CAMhB,IAAI,QAAS,CACX,OAAO,KAAK,QAEd,IAAI,OAAO,EAAQ,CACjB,KAAK,QAAU,EACf,KAAK,gBAAgB,CACrB,KAAK,QAAQ,wBAAwB,CACrC,KAAK,yBAAyB,CAC9B,KAAK,aAAe,GAOtB,IAAI,SAAU,CACZ,OAAO,KAAK,SAEd,IAAI,QAAQ,EAAS,CACnB,KAAK,SAAW,EACX,KAAK,cAEN,GACF,KAAK,YAAY,MAAM,YAAc,OACrC,KAAK,YAAY,MAAM,WAAa,OACpC,KAAK,YAAY,MAAM,iBAAmB,SAE1C,KAAK,QAAQ,CACb,KAAK,YAAY,MAAM,YAAc,GACrC,KAAK,YAAY,MAAM,WAAa,GACpC,KAAK,YAAY,MAAM,iBAAmB,KAQ9C,IAAI,QAAS,CACX,MAAO,CAAC,KAAK,WAOf,IAAI,eAAgB,CAClB,OAAO,KAAK,OAMd,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,OAEzB,IAAI,SAAS,EAAU,CACjB,KAAK,WAAW,SAAW,GAAY,KAAK,cAAc,SAAW,IAEzE,KAAK,WAAW,OAAS,EACzB,KAAK,cAAc,OAAS,EAC5B,KAAK,aAAe,IAQtB,IAAI,cAAe,CACjB,OAAO,KAAK,WAAW,MAEzB,IAAI,aAAa,EAAc,CACzB,KAAK,WAAW,QAAU,GAAgB,KAAK,cAAc,QAAU,IAE3E,KAAK,WAAW,MAAQ,EACxB,KAAK,cAAc,MAAQ,EAC3B,KAAK,aAAe,IAOtB,IAAI,YAAa,CACf,OAAO,KAAK,WAAW,IAEzB,IAAI,WAAW,EAAY,CACrB,KAAK,WAAW,MAAQ,GAAc,KAAK,cAAc,MAAQ,IAErE,KAAK,WAAW,IAAM,EACtB,KAAK,cAAc,IAAM,EACzB,KAAK,aAAe,IAMtB,IAAI,wBAAyB,CAC3B,OAAO,KAAK,wBAEd,IAAI,uBAAuB,EAAwB,CACjD,KAAK,wBAA0B,EAC/B,KAAK,aAAe,GAQtB,IAAI,gBAAgB,EAAiB,CACnC,KAAK,iBAAiB,MAAQ,GAAO,EAAgB,MAAO,EAAG,EAAE,CACjE,KAAK,iBAAiB,OAAS,GAAO,EAAgB,OAAQ,EAAG,EAAE,CACnE,KAAK,iBAAiB,EAAI,GAAO,EAAgB,EAAG,EAAG,EAAI,KAAK,iBAAiB,MAAM,CACvF,KAAK,iBAAiB,EAAI,GAAO,EAAgB,EAAG,EAAG,EAAI,KAAK,iBAAiB,OAAO,CA2B1F,iBAAiB,EAAM,EAAU,CAC/B,MAAM,iBAAiB,EAAM,EAAS,CAYxC,oBAAoB,EAAM,EAAU,CAClC,MAAM,oBAAoB,EAAM,EAAS,CAU3C,OAAO,EAAc,EAAY,EAAmB,GAAO,CACzD,OAAO,KAAK,SAAS,KAAK,cAAc,MAAQ,EAAc,KAAK,cAAc,IAAM,EAAY,EAAiB,CAatH,gBAAgB,EAAc,EAAmB,GAAO,CACtD,OAAO,KAAK,SAAS,EAAc,KAAK,cAAc,IAAK,EAAiB,CAa9E,cAAc,EAAY,EAAmB,GAAO,CAClD,OAAO,KAAK,SAAS,KAAK,cAAc,MAAO,EAAY,EAAiB,CAwC9E,SAAS,EAAc,EAAY,EAAmB,GAAO,CAC3D,KAAK,yBAA2B,GAChC,IAAM,EAAQ,GAAO,EAAc,KAAK,gBAAiB,KAAK,gBAAgB,CACxE,EAAM,GAAO,EAAY,KAAK,cAAe,KAAK,cAAc,CACtE,KAAK,cAAc,MAAQ,EAC3B,KAAK,cAAc,IAAM,EACzB,KAAK,cAAc,UAAU,CAC7B,KAAK,aAAe,GACf,IACH,KAAK,WAAW,MAAQ,KAAK,cAAc,MAC3C,KAAK,WAAW,IAAM,KAAK,cAAc,KAE3C,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,WAAW,MAAO,KAAK,cAAc,MAAO,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,IAAK,KAAK,cAAc,IAAK,KAAK,cAAc,CAClN,OAAO,KAAK,qBAAqB,EAAmB,CAQtD,MAAM,EAAU,EAAmB,GAAO,CACxC,OAAO,KAAK,QAAQ,KAAK,cAAc,OAAS,EAAU,EAAiB,CAQ7E,QAAQ,EAAU,EAAmB,GAAO,CAI1C,MAHA,MAAK,wBAA0B,GAC/B,KAAK,oBAAsB,GAAgB,KAC3C,KAAK,cAAgB,EACd,KAAK,gBAAgB,GAAO,EAAU,KAAK,YAAa,KAAK,YAAY,CAAE,EAAiB,CAErG,gBAAgB,EAAU,EAAmB,GAAO,CAClD,IAAM,EAAa,KAAK,cAAc,OAEtC,GADoB,KAAK,eAAe,QAAU,EACjC,CACf,IAAM,EAA6B,KAAK,gBAAgB,CAClD,EAAa,GAAa,EAA4B,KAAK,WAAW,OAAO,CAEnF,GAAI,EADc,EAAa,IACb,EAChB,OAAO,QAAQ,SAAS,CAC1B,KAAK,cAAc,OAAS,KAAK,IAAI,EAAU,EAA2B,MAE1E,KAAK,cAAc,OAAS,EAE9B,KAAK,aAAe,GACf,IACH,KAAK,WAAW,OAAS,KAAK,cAAc,QAE9C,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,WAAW,OAAQ,KAAK,cAAc,OAAQ,KAAK,cAAc,CACnI,OAAO,KAAK,qBAAqB,EAAmB,CAStD,aAAa,EAAU,EAAmB,GAAO,CAC/C,KAAK,WAAW,IAAI,KAAK,oBAAoB,GAAiB,CAAC,eAAe,EAAS,CAAC,CACnF,GACH,KAAK,QAAQ,KAAK,KAAK,WAAW,CAEpC,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,CACjQ,OAAO,KAAK,qBAAqB,EAAmB,CAStD,KAAK,EAAU,EAAmB,GAAO,CACvC,OAAO,KAAK,OAAO,KAAK,SAAW,EAAU,EAAiB,CAShE,OAAO,EAAM,EAAmB,GAAO,CACrC,KAAK,uBAAyB,GAC9B,KAAK,SAAW,GAAO,EAAM,KAAK,QAAS,KAAK,QAAQ,CACxD,KAAK,aAAe,GACf,IACH,KAAK,MAAQ,KAAK,UAEpB,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,MAAO,KAAK,SAAU,KAAK,cAAc,CAE3G,MADA,MAAK,aAAe,EACb,KAAK,qBAAqB,EAAmB,CAMtD,IAAI,EAAG,EAAI,EAAmB,GAAO,CAEnC,OADA,QAAQ,KAAK,oCAAoC,CAC1C,KAAK,MAAMA,EAAG,EAAI,EAAiB,CAS5C,MAAM,EAAG,EAAI,EAAmB,GAAO,CACrC,KAAK,QAAQ,cAAc,CAC3B,GAAS,oBAAoB,KAAK,QAAQ,OAAQ,EAAE,CACpD,GAAS,oBAAoB,KAAK,QAAQ,OAAQ,EAAE,CACpD,GAAS,eAAeA,EAAE,CAC1B,GAAS,eAAe,CAAC,EAAG,CAC5B,IAAM,EAAS,GAAK,KAAK,GAAS,CAAC,IAAI,GAAS,CAC1C,EAAK,GAAK,KAAK,KAAK,WAAW,CAAC,IAAI,EAAO,CACjD,OAAO,KAAK,OAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAiB,CAQxD,QAAQ,EAAU,EAAmB,GAAO,CAC1C,GAAK,oBAAoB,KAAK,QAAQ,OAAQ,EAAE,CAChD,GAAK,aAAa,KAAK,QAAQ,GAAI,GAAK,CACxC,GAAK,eAAe,EAAS,CAC7B,IAAM,EAAK,GAAK,KAAK,KAAK,WAAW,CAAC,IAAI,GAAK,CAC/C,OAAO,KAAK,OAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAiB,CAQxD,QAAQ,EAAQ,EAAmB,GAAO,CAExC,OADA,GAAK,KAAK,KAAK,QAAQ,GAAG,CAAC,eAAe,EAAO,CAC1C,KAAK,OAAO,KAAK,WAAW,EAAI,GAAK,EAAG,KAAK,WAAW,EAAI,GAAK,EAAG,KAAK,WAAW,EAAI,GAAK,EAAG,EAAiB,CAU1H,OAAO,EAAG,EAAI,EAAI,EAAmB,GAAO,CAC1C,KAAK,wBAA0B,GAC/B,IAAM,EAAS,GAAK,IAAIA,EAAG,EAAI,EAAG,CAAC,IAAI,KAAK,WAAW,CACvD,KAAK,mBAAmB,KAAK,WAAY,EAAQ,KAAK,iBAAiB,CACvE,KAAK,aAAe,GACf,GACH,KAAK,QAAQ,KAAK,KAAK,WAAW,CAEpC,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,CACjQ,OAAO,KAAK,qBAAqB,EAAmB,CAWtD,kBAAkB,EAAG,EAAI,EAAI,EAAmB,GAAO,CAGrD,IAAM,EAFQ,GAAK,IAAIA,EAAG,EAAI,EAAG,CACT,IAAI,KAAK,WAAW,CAAC,WAAW,CAC7B,eAAe,CAAC,KAAK,cAAc,OAAO,CAAC,IAAI,KAAK,WAAW,CAC1F,OAAO,KAAK,YAAY,EAAS,EAAG,EAAS,EAAG,EAAS,EAAG,EAAiB,CAe/E,SAAS,EAAc,EAAkB,CAAE,MAAO,EAAS,GAAO,cAAc,EAAG,eAAe,EAAG,gBAAgB,EAAG,aAAa,GAAM,EAAE,CAAE,CAC7I,IAAM,EAAW,EAAE,CACb,EAAO,EAAa,OAAS,GAAO,KAAK,EAAa,CAAG,GAAO,cAAc,EAAa,CAC7F,EAAK,SAAS,GAChB,QAAQ,KAAK,sEAAsE,CACnF,QAAQ,SAAS,EAEnB,IAAM,EAAQ,GAAY,KAAK,cAAc,MAAO,GAAQ,CACtD,EAAM,GAAY,KAAK,cAAc,IAAK,GAAQ,CACxD,EAAS,KAAK,KAAK,SAAS,EAAO,EAAK,EAAiB,CAAC,CAC1D,IAAM,EAAS,GAAK,iBAAiB,KAAK,cAAc,CAAC,WAAW,CAC9D,EAAW,GAAa,mBAAmB,EAAQ,GAAQ,CAC3D,EAAgB,GAAa,KAAK,IAAI,EAAO,EAAE,CAAE,EAAE,CACrD,GACF,EAAS,SAAS,GAAa,iBAAiB,GAAS,EAAM,CAAC,CAElE,EAAS,SAAS,KAAK,qBAAqB,CAC5C,IAAM,EAAK,GAAO,WAAW,CAC7B,GAAK,KAAK,EAAK,IAAI,CAAC,gBAAgB,EAAS,CAC7C,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,KAAK,EAAK,IAAI,EAAE,CAAC,gBAAgB,EAAS,CAC9D,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,KAAK,EAAK,IAAI,EAAE,CAAC,gBAAgB,EAAS,CAC9D,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,KAAK,EAAK,IAAI,EAAE,CAAC,gBAAgB,EAAS,CAC9D,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,KAAK,EAAK,IAAI,EAAE,CAAC,gBAAgB,EAAS,CAC9D,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,KAAK,EAAK,IAAI,EAAE,CAAC,gBAAgB,EAAS,CAC9D,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,KAAK,EAAK,IAAI,EAAE,CAAC,gBAAgB,EAAS,CAC9D,EAAG,cAAc,GAAK,CACtB,GAAK,KAAK,EAAK,IAAI,CAAC,gBAAgB,EAAS,CAC7C,EAAG,cAAc,GAAK,CACtB,EAAG,IAAI,GAAK,EACZ,EAAG,IAAI,GAAK,EACZ,EAAG,IAAI,GAAK,EACZ,EAAG,IAAI,GAAK,EACZ,EAAS,mBAAmB,GAAS,EAAO,CACxC,GACF,EAAS,YAAY,GAAa,QAAQ,CAAC,CAE7C,EAAS,YAAY,KAAK,cAAc,CACxC,IAAM,EAAS,EAAG,QAAQ,GAAK,CACzB,EAAS,EAAG,UAAU,GAAK,CAAC,gBAAgB,EAAS,CAC3D,GAAI,GAAoB,KAAK,QAAQ,CAAE,CACrC,IAAM,EAAW,KAAK,oBAAoB,EAAO,EAAG,EAAO,EAAG,EAAO,EAAG,EAAO,CAC/E,EAAS,KAAK,KAAK,OAAO,EAAO,EAAG,EAAO,EAAG,EAAO,EAAG,EAAiB,CAAC,CAC1E,EAAS,KAAK,KAAK,QAAQ,EAAU,EAAiB,CAAC,CACvD,EAAS,KAAK,KAAK,eAAe,EAAG,EAAG,EAAG,EAAiB,CAAC,SACpD,GAAsB,KAAK,QAAQ,CAAE,CAC9C,IAAM,EAAS,KAAK,QACd,EAAQ,EAAO,MAAQ,EAAO,KAC9B,EAAS,EAAO,IAAM,EAAO,OAC7B,EAAO,EAAS,KAAK,IAAI,EAAQ,EAAO,EAAG,EAAS,EAAO,EAAE,CAAG,KAAK,IAAI,EAAQ,EAAO,EAAG,EAAS,EAAO,EAAE,CACnH,EAAS,KAAK,KAAK,OAAO,EAAO,EAAG,EAAO,EAAG,EAAO,EAAG,EAAiB,CAAC,CAC1E,EAAS,KAAK,KAAK,OAAO,EAAM,EAAiB,CAAC,CAClD,EAAS,KAAK,KAAK,eAAe,EAAG,EAAG,EAAG,EAAiB,CAAC,CAE/D,OAAO,QAAQ,IAAI,EAAS,CAQ9B,YAAY,EAAc,EAAkB,CAC1C,IAAM,EAAW,EAAE,CAEb,EADa,eAAgB,EACC,EAAgB,qBAAqB,EAAc,GAAS,CAAG,GAAS,KAAK,EAAa,CAE9H,GADA,EAAS,KAAK,KAAK,OAAO,EAAe,OAAO,EAAG,EAAe,OAAO,EAAG,EAAe,OAAO,EAAG,EAAiB,CAAC,CACnH,GAAoB,KAAK,QAAQ,CAAE,CACrC,IAAM,EAAgB,KAAK,uBAAuB,EAAe,OAAO,CACxE,EAAS,KAAK,KAAK,QAAQ,EAAe,EAAiB,CAAC,SACnD,GAAsB,KAAK,QAAQ,CAAE,CAC9C,IAAM,EAAQ,KAAK,QAAQ,MAAQ,KAAK,QAAQ,KAC1C,EAAS,KAAK,QAAQ,IAAM,KAAK,QAAQ,OACzC,EAAW,EAAI,EAAe,OAC9B,EAAO,KAAK,IAAI,EAAQ,EAAU,EAAS,EAAS,CAC1D,EAAS,KAAK,KAAK,OAAO,EAAM,EAAiB,CAAC,CAGpD,OADA,EAAS,KAAK,KAAK,eAAe,EAAG,EAAG,EAAG,EAAiB,CAAC,CACtD,QAAQ,IAAI,EAAS,CAa9B,UAAU,EAAW,EAAW,EAAW,EAAS,EAAS,EAAS,EAAmB,GAAO,CAC9F,KAAK,yBAA2B,GAChC,KAAK,wBAA0B,GAC/B,KAAK,wBAA0B,GAC/B,KAAK,oBAAsB,GAAgB,KAC3C,KAAK,cAAgB,EACrB,IAAM,EAAU,GAAK,IAAI,EAAS,EAAS,EAAQ,CAC7C,EAAW,GAAK,IAAI,EAAW,EAAW,EAAU,CAC1D,KAAK,WAAW,KAAK,EAAQ,CAC7B,KAAK,cAAc,eAAe,EAAS,IAAI,EAAQ,CAAC,gBAAgB,KAAK,cAAc,CAAC,CAC5F,KAAK,oBAAoB,CACzB,KAAK,aAAe,GACf,IACH,KAAK,QAAQ,KAAK,KAAK,WAAW,CAClC,KAAK,WAAW,KAAK,KAAK,cAAc,EAE1C,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,MAAO,KAAK,cAAc,MAAO,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,IAAK,KAAK,cAAc,IAAK,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,OAAQ,KAAK,cAAc,OAAQ,KAAK,cAAc,CAC9f,OAAO,KAAK,qBAAqB,EAAmB,CAoBtD,WAAW,EAAY,EAAY,EAAY,EAAU,EAAU,EAAU,EAAY,EAAY,EAAY,EAAU,EAAU,EAAU,EAAI,EAAmB,GAAO,CAC3K,KAAK,yBAA2B,GAChC,KAAK,wBAA0B,GAC/B,KAAK,wBAA0B,GAC/B,KAAK,oBAAsB,GAAgB,KAC3C,KAAK,cAAgB,EACrB,IAAM,EAAU,GAAK,IAAI,EAAU,EAAU,EAAS,CAChD,EAAY,GAAK,IAAI,EAAY,EAAY,EAAW,CAC9D,GAAY,eAAe,EAAU,IAAI,EAAQ,CAAC,gBAAgB,KAAK,cAAc,CAAC,CACtF,IAAM,EAAU,GAAK,IAAI,EAAU,EAAU,EAAS,CAChD,EAAY,GAAK,IAAI,EAAY,EAAY,EAAW,CAC9D,GAAY,eAAe,EAAU,IAAI,EAAQ,CAAC,gBAAgB,KAAK,cAAc,CAAC,CACtF,KAAK,WAAW,KAAK,EAAQ,KAAK,EAAS,EAAG,CAAC,CAC/C,IAAM,EAAa,GAAY,MAAQ,GAAY,MAC7C,EAAW,GAAY,IAAM,GAAY,IACzC,EAAc,GAAY,OAAS,GAAY,OACrD,KAAK,cAAc,IAAI,GAAY,OAAS,EAAc,EAAI,GAAY,IAAM,EAAW,EAAI,GAAY,MAAQ,EAAa,EAAG,CACnI,KAAK,oBAAoB,CACzB,KAAK,aAAe,GACf,IACH,KAAK,QAAQ,KAAK,KAAK,WAAW,CAClC,KAAK,WAAW,KAAK,KAAK,cAAc,EAE1C,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,QAAQ,EAAG,KAAK,WAAW,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,MAAO,KAAK,cAAc,MAAO,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,IAAK,KAAK,cAAc,IAAK,KAAK,cAAc,EAAI,GAAa,KAAK,WAAW,OAAQ,KAAK,cAAc,OAAQ,KAAK,cAAc,CAC9f,OAAO,KAAK,qBAAqB,EAAmB,CAWtD,YAAY,EAAW,EAAW,EAAW,EAAmB,GAAO,CACrE,OAAO,KAAK,UAAU,EAAW,EAAW,EAAW,KAAK,WAAW,EAAG,KAAK,WAAW,EAAG,KAAK,WAAW,EAAG,EAAiB,CAWnI,UAAU,EAAS,EAAS,EAAS,EAAmB,GAAO,CAC7D,IAAM,EAAM,KAAK,YAAY,GAAK,CAC5B,EAAU,KAAK,UAAU,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAS,EAAS,EAAS,EAAiB,CAEhG,MADA,MAAK,cAAc,IAAM,GAAO,KAAK,cAAc,IAAK,KAAK,cAAe,KAAK,cAAc,CACxF,EAUT,eAAe,EAAG,EAAI,EAAI,EAAmB,GAAO,CAClD,KAAK,yBAA2B,GAChC,KAAK,gBAAgB,IAAIA,EAAG,EAAI,EAAG,CACnC,KAAK,aAAe,GACf,GACH,KAAK,aAAa,KAAK,KAAK,gBAAgB,CAC9C,IAAM,EAAqB,CAAC,GAAoB,GAAa,KAAK,aAAa,EAAG,KAAK,gBAAgB,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,aAAa,EAAG,KAAK,gBAAgB,EAAG,KAAK,cAAc,EAAI,GAAa,KAAK,aAAa,EAAG,KAAK,gBAAgB,EAAG,KAAK,cAAc,CAC/R,OAAO,KAAK,qBAAqB,EAAmB,CAUtD,cAAc,EAAS,EAAS,EAAS,CACvC,KAAK,QAAQ,mBAAmB,CAChC,GAAS,oBAAoB,KAAK,QAAQ,mBAAoB,EAAE,CAChE,GAAS,oBAAoB,KAAK,QAAQ,mBAAoB,EAAE,CAChE,GAAS,oBAAoB,KAAK,QAAQ,mBAAoB,EAAE,CAChE,IAAM,EAAW,GAAK,IAAI,EAAS,EAAS,EAAQ,CAC9C,EAAW,EAAS,WAAW,KAAK,QAAQ,SAAS,CACrD,EAAgB,EAAS,IAAI,KAAK,QAAQ,SAAS,CACzD,GAAS,eAAe,EAAc,EAAE,CACxC,GAAS,eAAe,EAAc,EAAE,CACxC,GAAS,eAAe,EAAc,EAAE,CACxC,GAAK,KAAK,GAAS,CAAC,IAAI,GAAS,CAAC,IAAI,GAAS,CAC/C,GAAK,GAAa,EAClB,KAAK,QAAQ,EAAU,GAAM,CAC7B,KAAK,eAAe,CAAC,GAAK,EAAG,GAAK,EAAG,CAAC,GAAK,EAAG,GAAM,CACpD,KAAK,OAAO,EAAS,EAAS,EAAS,GAAM,CAO/C,YAAY,EAAM,CAChB,GAAI,CAAC,EAAM,CACT,KAAK,UAAU,IAAI,IAAI,KAAW,KAAW,KAAU,CACvD,KAAK,UAAU,IAAI,IAAI,IAAU,IAAU,IAAS,CACpD,KAAK,aAAe,GACpB,OAEF,KAAK,UAAU,KAAK,EAAK,CACzB,KAAK,UAAU,WAAW,KAAK,WAAY,KAAK,WAAW,CAC3D,KAAK,aAAe,GAWtB,YAAY,EAAa,EAAI,EAAO,EAAQ,CAC1C,GAAI,IAAgB,KAAM,CACxB,KAAK,UAAY,KACjB,OAEF,KAAK,UAAY,KAAK,WAAa,IAAI,GAAM,QACzC,OAAO,GAAgB,SACzB,KAAK,UAAU,IAAI,EAAa,EAAI,EAAO,EAAO,CAElD,KAAK,UAAU,KAAK,EAAY,CAWpC,oBAAoB,EAAO,EAAQ,EAAO,EAAS,GAAO,CACxD,GAAI,GAAiC,KAAK,QAAS,sBAAsB,CACvE,OAAO,KAAK,WAAW,OACzB,IAAM,EAAqB,EAAQ,EAC7B,EAAO,KAAK,QAAQ,iBAAiB,CAAG,GACxC,EAAU,KAAK,QAAQ,OAE7B,QADqB,EAAS,EAAqB,EAAU,EAAqB,GAAW,EAAS,EAAQ,GACzF,GAAM,KAAK,IAAI,EAAO,GAAI,CAAG,EAAQ,GAQ5D,uBAAuB,EAAQ,CAC7B,GAAI,GAAiC,KAAK,QAAS,yBAAyB,CAC1E,OAAO,KAAK,WAAW,OACzB,IAAM,EAAO,KAAK,QAAQ,iBAAiB,CAAG,GACxC,EAAO,KAAK,KAAK,KAAK,IAAI,EAAO,GAAI,CAAG,KAAK,QAAQ,OAAO,CAAG,EAC/D,EAAO,EAAI,KAAK,QAAQ,OAAS,EAAO,EAC9C,OAAO,EAAS,KAAK,IAAI,EAAO,GAAI,CAQtC,UAAU,EAAK,EAAkB,GAAM,CAErC,OADe,GAAO,EAAI,UAAY,EAAM,IAAI,GAAM,SAC1C,KAAK,EAAkB,KAAK,WAAa,KAAK,QAAQ,CAQpE,YAAY,EAAK,EAAkB,GAAM,CAEvC,OADe,GAAO,EAAI,UAAY,EAAM,IAAI,GAAM,SAC1C,iBAAiB,EAAkB,KAAK,cAAgB,KAAK,WAAW,CAAC,gBAAgB,KAAK,qBAAqB,CAAC,IAAI,EAAkB,KAAK,WAAa,KAAK,QAAQ,CAQvL,aAAa,EAAK,EAAkB,GAAM,CAExC,OADa,GAAO,IAAI,GAAM,WAClB,KAAK,EAAkB,KAAK,cAAgB,KAAK,WAAW,CAQ1E,eAAe,EAAK,EAAkB,GAAM,CAE1C,OADe,GAAO,EAAI,UAAY,EAAM,IAAI,GAAM,SAC1C,KAAK,EAAkB,KAAK,gBAAkB,KAAK,aAAa,CAM9E,oBAAqB,CACnB,KAAK,cAAc,MAAQ,KAAK,cAAc,MAAQ,GAClD,KAAK,cAAc,MAAQ,IAC7B,KAAK,cAAc,OAAS,IAC9B,KAAK,WAAW,OAAS,GAAO,KAAK,OAAO,KAAK,cAAc,MAAQ,KAAK,WAAW,OAAS,GAAK,CAKvG,MAAO,CACL,KAAK,aAAa,KAAK,KAAK,gBAAgB,CAC5C,KAAK,QAAQ,KAAK,KAAK,WAAW,CAClC,KAAK,WAAW,KAAK,KAAK,cAAc,CACxC,KAAK,MAAQ,KAAK,SAOpB,MAAM,EAAmB,GAAO,CAC9B,GAAI,CAAC,GAAa,KAAK,QAAQ,GAAG,EAAG,KAAK,WAAW,EAAE,EAAI,CAAC,GAAa,KAAK,QAAQ,GAAG,EAAG,KAAK,WAAW,EAAE,EAAI,CAAC,GAAa,KAAK,QAAQ,GAAG,EAAG,KAAK,WAAW,EAAE,CAAE,CACrK,KAAK,QAAQ,GAAG,KAAK,KAAK,WAAW,CACrC,IAAM,EAAW,KAAK,YAAY,GAAK,CACvC,KAAK,gBAAgB,CACrB,KAAK,YAAY,EAAS,EAAG,EAAS,EAAG,EAAS,EAAE,CAEtD,IAAM,EAAW,CACf,KAAK,UAAU,KAAK,WAAW,EAAG,KAAK,WAAW,EAAG,KAAK,WAAW,EAAG,KAAK,SAAS,EAAG,KAAK,SAAS,EAAG,KAAK,SAAS,EAAG,EAAiB,CAC5I,KAAK,eAAe,KAAK,cAAc,EAAG,KAAK,cAAc,EAAG,KAAK,cAAc,EAAG,EAAiB,CACvG,KAAK,OAAO,KAAK,OAAQ,EAAiB,CAC3C,CACD,OAAO,QAAQ,IAAI,EAAS,CAM9B,WAAY,CACV,KAAK,WAAW,KAAK,KAAK,QAAQ,GAAG,CACrC,KAAK,UAAU,KAAK,SAAS,CAC7B,KAAK,YAAY,KAAK,WAAW,CACjC,KAAK,OAAS,KAAK,MACnB,KAAK,cAAc,KAAK,KAAK,aAAa,CAO5C,gBAAiB,CACf,KAAK,cAAc,mBAAmB,KAAK,QAAQ,GAAI,GAAQ,CAC/D,KAAK,qBAAqB,KAAK,KAAK,cAAc,CAAC,QAAQ,CAO7D,eAAgB,CACd,IAAM,EAAkB,GAAK,WAAW,KAAK,QAAS,KAAK,QAAQ,SAAS,CAAC,WAAW,CAClF,EAAO,GAAK,aAAa,EAAiB,KAAK,QAAQ,GAAG,CAChE,KAAK,QAAQ,GAAG,aAAa,EAAM,EAAgB,CAAC,WAAW,CAC/D,KAAK,QAAQ,mBAAmB,CAChC,IAAM,EAAW,KAAK,YAAY,GAAK,CACvC,KAAK,gBAAgB,CACrB,KAAK,YAAY,EAAS,EAAG,EAAS,EAAG,EAAS,EAAE,CAStD,OAAO,EAAO,CACZ,IAAM,EAAa,KAAK,cAAc,MAAQ,KAAK,WAAW,MACxD,EAAW,KAAK,cAAc,IAAM,KAAK,WAAW,IACpD,EAAc,KAAK,cAAc,OAAS,KAAK,WAAW,OAC1D,EAAc,GAAa,WAAW,KAAK,WAAY,KAAK,QAAQ,CACpE,EAAc,GAAa,WAAW,KAAK,gBAAiB,KAAK,aAAa,CAC9E,EAAY,KAAK,SAAW,KAAK,MACvC,GAAI,GAAW,EAAW,CACxB,KAAK,eAAe,MAAQ,EAC5B,KAAK,WAAW,MAAQ,KAAK,cAAc,UACtC,CACL,IAAM,EAAa,KAAK,yBAA2B,KAAK,mBAAqB,KAAK,WAClF,KAAK,WAAW,MAAQ,GAAW,KAAK,WAAW,MAAO,KAAK,cAAc,MAAO,KAAK,eAAgB,EAAY,IAAU,EAAM,CACrI,KAAK,aAAe,GAEtB,GAAI,GAAW,EAAS,CACtB,KAAK,aAAa,MAAQ,EAC1B,KAAK,WAAW,IAAM,KAAK,cAAc,QACpC,CACL,IAAM,EAAa,KAAK,yBAA2B,KAAK,mBAAqB,KAAK,WAClF,KAAK,WAAW,IAAM,GAAW,KAAK,WAAW,IAAK,KAAK,cAAc,IAAK,KAAK,aAAc,EAAY,IAAU,EAAM,CAC7H,KAAK,aAAe,GAEtB,GAAI,GAAW,EAAY,CACzB,KAAK,gBAAgB,MAAQ,EAC7B,KAAK,WAAW,OAAS,KAAK,cAAc,WACvC,CACL,IAAM,EAAa,KAAK,wBAA0B,KAAK,mBAAqB,KAAK,WACjF,KAAK,WAAW,OAAS,GAAW,KAAK,WAAW,OAAQ,KAAK,cAAc,OAAQ,KAAK,gBAAiB,EAAY,KAAK,SAAU,EAAM,CAC9I,KAAK,aAAe,GAEtB,GAAI,GAAW,EAAY,EAAE,EAAI,GAAW,EAAY,EAAE,EAAI,GAAW,EAAY,EAAE,CACrF,KAAK,gBAAgB,IAAI,EAAG,EAAG,EAAE,CACjC,KAAK,QAAQ,KAAK,KAAK,WAAW,KAC7B,CACL,IAAM,EAAa,KAAK,wBAA0B,KAAK,mBAAqB,KAAK,WACjF,GAAe,KAAK,QAAS,KAAK,WAAY,KAAK,gBAAiB,EAAY,KAAK,SAAU,EAAO,KAAK,QAAQ,CACnH,KAAK,aAAe,GAEtB,GAAI,GAAW,EAAY,EAAE,EAAI,GAAW,EAAY,EAAE,EAAI,GAAW,EAAY,EAAE,CACrF,KAAK,qBAAqB,IAAI,EAAG,EAAG,EAAE,CACtC,KAAK,aAAa,KAAK,KAAK,gBAAgB,KACvC,CACL,IAAM,EAAa,KAAK,yBAA2B,KAAK,mBAAqB,KAAK,WAClF,GAAe,KAAK,aAAc,KAAK,gBAAiB,KAAK,qBAAsB,EAAY,KAAK,SAAU,EAAO,KAAK,aAAa,CACvI,KAAK,aAAe,GAEtB,GAAI,GAAW,EAAU,CACvB,KAAK,cAAc,MAAQ,EAC3B,KAAK,MAAQ,KAAK,aACb,CACL,IAAM,EAAa,KAAK,uBAAyB,KAAK,mBAAqB,KAAK,WAChF,KAAK,MAAQ,GAAW,KAAK,MAAO,KAAK,SAAU,KAAK,cAAe,EAAY,IAAU,EAAM,CAErG,GAAI,KAAK,kBACH,GAAoB,KAAK,QAAQ,EAAI,KAAK,gBAAkB,EAAG,CACjE,IAAM,EAAqB,KAAK,WAAW,OAAS,KAAK,cACnD,EAAS,KAAK,QACd,EAAkB,KAAK,oBAAoB,GAAiB,CAC5D,EAAS,GAAK,KAAK,EAAgB,CAAC,MAAM,EAAO,GAAG,CAAC,WAAW,CAClE,EAAO,UAAU,GAAK,IACxB,EAAO,EAAI,GACb,IAAM,EAAS,GAAK,aAAa,EAAQ,EAAgB,CACnD,EAAgB,KAAK,cAAc,OAAS,KAAK,IAAI,EAAO,iBAAiB,CAAG,GAAW,GAAI,CAE/F,GADa,KAAK,cAAc,OAAS,EACf,KAAK,cAAc,QAAU,KAAK,cAAc,OAC1E,EAAS,GAAK,KAAK,KAAK,WAAW,CAAC,IAAI,EAAO,eAAe,KAAK,mBAAmB,EAAI,EAAgB,EAAO,OAAO,CAAC,CAAC,IAAI,EAAO,eAAe,KAAK,mBAAmB,EAAI,EAAc,CAAC,CAC/L,EAAe,GAAK,KAAK,KAAK,WAAW,CAAC,KAAK,EAAQ,EAAU,CACjE,EAAQ,KAAK,sBAAwB,GAAgB,IAAM,KAAK,WAAW,QAAU,KAAK,YAC1F,EAAQ,KAAK,sBAAwB,GAAgB,KAAO,KAAK,aAAe,KAAK,WAAW,OACtG,GAAI,KAAK,gBAAkB,GAAS,GAAQ,CAC1C,KAAK,cAAc,QAAU,EAC7B,KAAK,WAAW,QAAU,EAC1B,IAAM,EAAc,GAAK,KAAK,EAAgB,CAAC,eAAe,CAAC,EAAmB,CAClF,EAAa,IAAI,EAAY,CAE/B,KAAK,UAAU,WAAW,EAAc,EAAa,CACrD,IAAM,EAAgB,GAAK,WAAW,EAAc,KAAK,WAAW,CACpE,KAAK,WAAW,KAAK,EAAa,CAClC,KAAK,QAAQ,IAAI,EAAc,CAC/B,KAAK,eAAiB,EAClB,GAAW,KAAK,cAAc,GAChC,KAAK,cAAgB,WACd,GAAsB,KAAK,QAAQ,EAAI,KAAK,eAAiB,EAAG,CACzE,IAAM,EAAqB,KAAK,MAAQ,KAAK,UACvC,EAAS,KAAK,QACd,EAAsB,GAAK,IAAI,KAAK,mBAAmB,EAAG,KAAK,mBAAmB,GAAI,EAAO,KAAO,EAAO,MAAQ,EAAO,KAAO,EAAO,KAAK,CAAC,UAAU,EAAO,CAC/J,EAAa,GAAK,IAAI,EAAG,EAAG,GAAG,CAAC,gBAAgB,EAAO,WAAW,CAClE,EAAS,GAAK,KAAK,EAAoB,CAAC,IAAI,EAAW,eAAe,CAAC,EAAoB,IAAI,EAAO,GAAG,CAAC,CAAC,CAE3G,EAAY,EADD,KAAK,MAAQ,EACC,KAAK,OAAS,KAAK,MAC5C,EAAkB,KAAK,oBAAoB,GAAiB,CAC5D,EAAoB,KAAK,WAAW,IAAI,EAAgB,CACxD,EAAe,GAAK,KAAK,KAAK,WAAW,CAAC,KAAK,EAAQ,EAAU,CACjE,EAAmB,EAAa,IAAI,EAAgB,CACpD,EAAW,EAAgB,eAAe,EAAmB,EAAkB,CACrF,EAAa,IAAI,EAAS,CAC1B,KAAK,UAAU,WAAW,EAAc,EAAa,CACrD,IAAM,EAAgB,GAAK,WAAW,EAAc,KAAK,WAAW,CACpE,KAAK,WAAW,KAAK,EAAa,CAClC,KAAK,QAAQ,IAAI,EAAc,CAC/B,KAAK,cAAgB,EACjB,GAAW,KAAK,aAAa,GAC/B,KAAK,aAAe,IAGtB,KAAK,QAAQ,OAAS,KAAK,QAC7B,KAAK,QAAQ,KAAO,KAAK,MACzB,KAAK,QAAQ,wBAAwB,CACrC,KAAK,yBAAyB,CAC9B,KAAK,aAAe,IAEtB,KAAK,iBAAmB,GACxB,IAAM,EAAc,KAAK,gBAAgB,CACzC,KAAK,WAAW,OAAS,KAAK,IAAI,KAAK,WAAW,OAAQ,EAAY,CACtE,KAAK,WAAW,UAAU,CAC1B,KAAK,QAAQ,SAAS,iBAAiB,KAAK,WAAW,CAAC,gBAAgB,KAAK,qBAAqB,CAAC,IAAI,KAAK,QAAQ,CACpH,KAAK,QAAQ,OAAO,KAAK,QAAQ,EACZ,CAAC,GAAW,KAAK,aAAa,EAAE,EAAI,CAAC,GAAW,KAAK,aAAa,EAAE,EAAI,CAAC,GAAW,KAAK,aAAa,EAAE,IAE3H,KAAK,QAAQ,mBAAmB,CAChC,GAAS,oBAAoB,KAAK,QAAQ,OAAQ,EAAE,CACpD,GAAS,oBAAoB,KAAK,QAAQ,OAAQ,EAAE,CACpD,GAAS,oBAAoB,KAAK,QAAQ,OAAQ,EAAE,CACpD,GAAS,eAAe,KAAK,aAAa,EAAE,CAC5C,GAAS,eAAe,CAAC,KAAK,aAAa,EAAE,CAC7C,GAAS,eAAe,KAAK,aAAa,EAAE,CAC5C,GAAK,KAAK,GAAS,CAAC,IAAI,GAAS,CAAC,IAAI,GAAS,CAC/C,KAAK,QAAQ,SAAS,IAAI,GAAK,EAE7B,KAAK,yBACP,KAAK,mBAAmB,KAAK,QAAQ,SAAS,KAAK,KAAK,QAAQ,CAAE,GAAK,iBAAiB,KAAK,WAAW,CAAC,gBAAgB,KAAK,qBAAqB,CAAE,EAAE,CAEzJ,IAAM,EAAU,KAAK,aAkBrB,OAjBI,GAAW,CAAC,KAAK,kBACnB,KAAK,WAAa,GAClB,KAAK,cAAc,CAAE,KAAM,OAAQ,CAAC,CACpC,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,EAC7B,GACT,KAAK,cAAc,CAAE,KAAM,SAAU,CAAC,CAClC,GAAW,EAAY,KAAK,cAAc,EAAI,GAAW,EAAU,KAAK,cAAc,EAAI,GAAW,EAAa,KAAK,cAAc,EAAI,GAAW,EAAY,EAAG,KAAK,cAAc,EAAI,GAAW,EAAY,EAAG,KAAK,cAAc,EAAI,GAAW,EAAY,EAAG,KAAK,cAAc,EAAI,GAAW,EAAY,EAAG,KAAK,cAAc,EAAI,GAAW,EAAY,EAAG,KAAK,cAAc,EAAI,GAAW,EAAY,EAAG,KAAK,cAAc,EAAI,GAAW,EAAW,KAAK,cAAc,EAAI,CAAC,KAAK,aACpe,KAAK,WAAa,GAClB,KAAK,cAAc,CAAE,KAAM,OAAQ,CAAC,GAE7B,CAAC,GAAW,KAAK,kBAC1B,KAAK,cAAc,CAAE,KAAM,QAAS,CAAC,CAEvC,KAAK,cAAgB,KAAK,WAAW,OACrC,KAAK,UAAY,KAAK,MACtB,KAAK,iBAAmB,EACxB,KAAK,aAAe,GACb,EAMT,QAAS,CACP,OAAO,KAAK,UAAU,CACpB,QAAS,KAAK,SACd,YAAa,KAAK,YAClB,YAAa,GAAoB,KAAK,YAAY,CAClD,QAAS,KAAK,QACd,QAAS,GAAoB,KAAK,QAAQ,CAC1C,cAAe,KAAK,cACpB,cAAe,GAAoB,KAAK,cAAc,CACtD,gBAAiB,GAAoB,KAAK,gBAAgB,CAC1D,gBAAiB,GAAoB,KAAK,gBAAgB,CAC1D,WAAY,KAAK,WACjB,mBAAoB,KAAK,mBACzB,WAAY,KAAK,WACjB,WAAY,KAAK,WACjB,cAAe,KAAK,cACpB,sBAAuB,KAAK,sBAC5B,OAAQ,KAAK,WAAW,SAAS,CACjC,SAAU,GAAK,iBAAiB,KAAK,cAAc,CAAC,IAAI,KAAK,WAAW,CAAC,SAAS,CAClF,KAAM,KAAK,SACX,YAAa,KAAK,gBAAgB,SAAS,CAC3C,QAAS,KAAK,SAAS,SAAS,CAChC,UAAW,KAAK,WAAW,SAAS,CACpC,MAAO,KAAK,OACZ,aAAc,KAAK,cAAc,SAAS,CAC3C,CAAC,CAQJ,SAAS,EAAM,EAAmB,GAAO,CACvC,IAAM,EAAM,KAAK,MAAM,EAAK,CAC5B,KAAK,QAAU,EAAI,QACnB,KAAK,YAAc,EAAI,YACvB,KAAK,YAAc,GAAoB,EAAI,YAAY,CACvD,KAAK,QAAU,EAAI,QACnB,KAAK,QAAU,GAAoB,EAAI,QAAQ,CAC/C,KAAK,cAAgB,EAAI,cACzB,KAAK,cAAgB,GAAoB,EAAI,cAAc,CAC3D,KAAK,gBAAkB,GAAoB,EAAI,gBAAgB,CAC/D,KAAK,gBAAkB,GAAoB,EAAI,gBAAgB,CAC/D,KAAK,WAAa,EAAI,WACtB,KAAK,mBAAqB,EAAI,mBAC9B,KAAK,WAAa,EAAI,WACtB,KAAK,WAAa,EAAI,WACtB,KAAK,cAAgB,EAAI,cACzB,KAAK,sBAAwB,EAAI,sBACjC,KAAK,SAAS,UAAU,EAAI,QAAQ,CACpC,KAAK,WAAW,UAAU,EAAI,UAAU,CACxC,KAAK,OAAS,EAAI,MAClB,KAAK,cAAc,UAAU,EAAI,aAAa,CAC9C,KAAK,OAAO,EAAI,OAAO,GAAI,EAAI,OAAO,GAAI,EAAI,OAAO,GAAI,EAAiB,CAC1E,GAAY,eAAe,GAAK,UAAU,EAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,gBAAgB,KAAK,cAAc,CAAC,CACjH,KAAK,SAAS,GAAY,MAAO,GAAY,IAAK,EAAiB,CACnE,KAAK,QAAQ,GAAY,OAAQ,EAAiB,CAClD,KAAK,OAAO,EAAI,KAAM,EAAiB,CACvC,KAAK,eAAe,EAAI,YAAY,GAAI,EAAI,YAAY,GAAI,EAAI,YAAY,GAAI,EAAiB,CACjG,KAAK,aAAe,GAMtB,QAAQ,EAAY,CAClB,GAAI,KAAK,YAAa,CACpB,QAAQ,KAAK,wCAAwC,CACrD,OAEF,EAAW,aAAa,+BAAgC,GAAQ,CAChE,KAAK,sBAAsB,EAAW,CACtC,KAAK,eAAe,KAAK,aAAa,CAKxC,YAAa,CACX,KAAK,QAAQ,CACb,KAAK,0BAA0B,CAC/B,AAEE,KAAK,eADL,KAAK,YAAY,gBAAgB,+BAA+B,CAC7C,IAAK,IAO5B,SAAU,CACR,KAAK,yBAAyB,CAC9B,KAAK,YAAY,CAGnB,oBAAoB,EAAK,CACvB,OAAO,EAAI,iBAAiB,KAAK,WAAW,CAAC,aAAa,KAAK,WAAW,OAAO,CAAC,gBAAgB,KAAK,qBAAqB,CAG9H,oBAAoB,EAAK,CACvB,OAAO,KAAK,oBAAoB,EAAI,CAAC,QAAQ,CAE/C,iBAAiB,EAAW,CAC1B,OAAO,KAAK,gBAAgB,KAAM,GAAkB,EAAc,YAAc,EAAU,CAE5F,0BAA0B,EAAa,CACrC,OAAO,KAAK,gBAAgB,KAAM,GAAkB,EAAc,cAAgB,EAAY,CAEhG,gBAAgB,EAAS,CACvB,KAAK,gBAAgB,OAAO,KAAK,gBAAgB,QAAQ,EAAQ,CAAE,EAAE,CAEvE,mBAAmB,EAAU,EAAQ,EAAU,CAC7C,IAAM,EAAgB,EAAO,UAAU,CACvC,GAAI,IAAkB,EACpB,OAAO,EAET,IAAM,EAAY,GAAK,KAAK,EAAO,CAAC,IAAI,EAAS,CAE3C,EADgB,KAAK,UAAU,WAAW,EAAW,GAAK,CACvB,IAAI,EAAU,CACjD,EAA4B,EAAmB,UAAU,CAC/D,GAAI,IAA8B,EAChC,OAAO,EAAS,IAAI,EAAO,IAClB,IAA8B,EACvC,OAAO,KACE,IAAa,EACtB,OAAO,EAAS,IAAI,EAAO,CAAC,IAAI,EAAmB,CAC9C,CACL,IAAM,EAAe,EAAI,EAAW,EAA4B,EAAO,IAAI,EAAmB,CAC9F,OAAO,EAAS,IAAI,GAAK,KAAK,EAAO,CAAC,eAAe,EAAa,CAAC,CAAC,IAAI,EAAmB,eAAe,EAAI,EAAS,CAAC,EAG5H,yBAA0B,CACxB,GAAI,GAAoB,KAAK,QAAQ,CAAE,CACrC,IAAM,EAAS,KAAK,QACd,EAAO,EAAO,KACd,EAAO,EAAO,iBAAiB,CAAG,GAClC,EAAa,KAAK,IAAI,EAAO,GAAI,CAAG,EACpC,EAAY,EAAa,EAAO,OACtC,KAAK,kBAAkB,GAAG,IAAI,CAAC,EAAW,CAAC,EAAY,EAAE,CACzD,KAAK,kBAAkB,GAAG,IAAI,EAAW,CAAC,EAAY,EAAE,CACxD,KAAK,kBAAkB,GAAG,IAAI,EAAW,EAAY,EAAE,CACvD,KAAK,kBAAkB,GAAG,IAAI,CAAC,EAAW,EAAY,EAAE,SAC/C,GAAsB,KAAK,QAAQ,CAAE,CAC9C,IAAM,EAAS,KAAK,QACd,EAAU,EAAI,EAAO,KACrB,EAAO,EAAO,KAAO,EACrB,EAAQ,EAAO,MAAQ,EACvB,EAAM,EAAO,IAAM,EACnB,EAAS,EAAO,OAAS,EAC/B,KAAK,kBAAkB,GAAG,IAAI,EAAM,EAAK,EAAE,CAC3C,KAAK,kBAAkB,GAAG,IAAI,EAAO,EAAK,EAAE,CAC5C,KAAK,kBAAkB,GAAG,IAAI,EAAO,EAAQ,EAAE,CAC/C,KAAK,kBAAkB,GAAG,IAAI,EAAM,EAAQ,EAAE,EAIlD,gBAAiB,CACf,IAAI,EAAW,IAIf,GAFI,EADgB,KAAK,eAAe,QAAU,IAG9C,GAAiC,KAAK,QAAS,iBAAiB,CAClE,OAAO,EACT,IAAM,EAAe,KAAK,oBAAoB,GAAiB,CAC/D,GAAgB,OAAO,GAAS,EAAc,KAAK,QAAQ,GAAG,CAC9D,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,IAAM,CAC7B,IAAM,EAAkB,GAAK,KAAK,KAAK,kBAAkB,GAAI,CAC7D,EAAgB,aAAa,GAAgB,CAC7C,IAAM,EAAS,GAAK,WAAW,KAAK,QAAS,EAAgB,CAC7D,GAAW,IAAI,EAAQ,EAAa,CACpC,GAAW,IAAM,KAAK,WAAW,OAAS,EAC1C,IAAM,EAAc,GAAW,iBAAiB,KAAK,eAAe,CAChE,EAAY,SAAW,GAAK,EAAY,GAAG,SAAW,IACxD,EAAW,EAAY,GAAG,UAG9B,OAAO,EAKT,eAAe,EAAS,CACtB,GAAI,CAAC,KAAK,YACR,OACF,IAAM,EAAO,KAAK,YAAY,uBAAuB,CAYrD,MAXA,GAAQ,EAAI,EAAK,KACjB,EAAQ,EAAI,EAAK,IACb,KAAK,WACP,EAAQ,GAAK,KAAK,UAAU,EAC5B,EAAQ,GAAK,EAAK,OAAS,KAAK,UAAU,EAAI,KAAK,UAAU,EAC7D,EAAQ,MAAQ,KAAK,UAAU,EAC/B,EAAQ,OAAS,KAAK,UAAU,IAEhC,EAAQ,MAAQ,EAAK,MACrB,EAAQ,OAAS,EAAK,QAEjB,EAET,qBAAqB,EAAoB,CAKvC,OAJI,EACK,QAAQ,SAAS,EAC1B,KAAK,WAAa,GAClB,KAAK,cAAc,CAAE,KAAM,kBAAmB,CAAC,CACxC,IAAI,QAAS,GAAa,CAC/B,IAAM,MAAkB,CACtB,KAAK,oBAAoB,OAAQ,EAAU,CAC3C,GAAU,EAEZ,KAAK,iBAAiB,OAAQ,EAAU,EACxC,EAGJ,sBAAsB,EAAa,EAEnC,0BAA2B,EAO3B,IAAI,eAAgB,CAElB,OADA,QAAQ,KAAK,2EAA2E,CACjF,EAOT,IAAI,cAAc,EAAG,CACnB,QAAQ,KAAK,2EAA2E,CAO1F,IAAI,uBAAwB,CAE1B,OADA,QAAQ,KAAK,2FAA2F,CACjG,EAOT,IAAI,sBAAsB,EAAG,CAC3B,QAAQ,KAAK,2FAA2F,CAE1G,OAAO,qBAAqB,EAAU,EAAM,IAAI,GAAM,OAAU,CAC9D,IAAM,EAAiB,EACjB,EAAS,EAAe,OAC9B,GAAO,WAAW,CAClB,EAAS,gBAAiB,GAAW,CAC9B,EAAO,QAEZ,GAAO,eAAe,EAAO,EAC7B,CACF,GAAO,UAAU,EAAO,CACxB,IAAI,EAAc,EAelB,OAdA,EAAS,gBAAiB,GAAW,CACnC,GAAI,CAAC,EAAO,OACV,OACF,IAAM,EAAO,EACP,EAAW,EAAK,SAAS,OAAO,CACtC,EAAS,aAAa,EAAK,YAAY,CAEvC,IAAM,EADiB,EACS,WAAW,SAC3C,IAAK,IAAI,EAAK,EAAG,EAAK,EAAS,MAAO,EAAK,EAAI,IAC7C,GAAK,oBAAoB,EAAU,EAAG,CACtC,EAAc,KAAK,IAAI,EAAa,EAAO,kBAAkB,GAAK,CAAC,EAErE,CACF,EAAe,OAAS,KAAK,KAAK,EAAY,CACvC,KAId,CAAC,CAOE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,GAAa,cAAc,EAAkB,CAC3C,YAAY,EAAS,CACnB,MAAM,EAAQ,CACd,KAAK,KAAO,GAGd,MAAM,EAAQ,CACZ,IAA+F,EAAa,SAAS,EAAiB,EAAK,CACzI,OAAQ,EAAR,CACE,IAAK,GACH,MAAU,MAAM,kCAAoC,GAAO,IAAI,CACjE,IAAK,GACH,MAAU,MAAM,mCAAqC,GAAO,IAAI,CAClE,IAAK,GACH,MAAU,MAAM,uCAAyC,GAAO,IAAI,CACtE,QACA,IAAK,GACH,MAAU,MAAM,oCAAsC,GAAO,IAAI,GAE0B,EAAQ,SAAS,EAAS,EAAW,EAAS,CAE7I,IAAyB,KACzB,IAAI,EAAK,EAAQ,IAAK,EAAK,GAAI,EAAM,EAAGC,EAAI,GAAI,EAAQ,OAAO,aAAa,MAAM,KAAM,IAAI,YAAY,EAAQ,SAAS,EAAI,EAAK,IAAU,CAAC,CAAC,CAC9I,KAAO,GAAK,EAAK,EAAM,QAAQ;EAAQ,GAAK,EAAM,GAAa,EAAK,EAAQ,YAC1E,GAAK,EACL,GAAO,EAAM,OACb,GAAM,IACN,GAAS,OAAO,aAAa,MAAM,KAAM,IAAI,YAAY,EAAQ,SAAS,EAAI,EAAK,IAAU,CAAC,CAAC,CAOjG,MALI,GAAK,GACH,KAAU,IACZ,EAAQ,KAAO,EAAM,EAAK,GACrBA,EAAI,EAAM,MAAM,EAAG,EAAG,EAExB,IACN,EAAkB,SAAS,EAAS,CACrC,IAAM,EAAiB,YAAa,EAAW,oCAAqC,EAAc,uCAAwC,EAAY,uBAAwB,EAAgB,oCAAqC,EAAS,CAC1O,MAAO,EACP,OAAQ,GACR,SAAU,GACV,YAAa,OACb,OAAQ,GACR,MAAO,EACP,SAAU,EACV,MAAO,EACP,OAAQ,EACT,CACG,EAAM,EAUV,KATI,EAAQ,KAAO,EAAQ,YAAc,EAAE,EAAO,EAAM,EAAQ,IAC9D,EAAW,EAAiB,kBAAkB,EAE1C,EAAQ,EAAK,MAAM,EAAe,GACtC,EAAW,EAAmB,oBAAoB,CAEpD,EAAO,OAAS,EAChB,EAAO,YAAc,EAAM,GAC3B,EAAO,QAAU,EAAO;EAEtB,EAAO,EAAM,EAAQ,CACjB,KAAU,GAFH,CAKX,GADA,EAAO,QAAU,EAAO;EACZ,EAAK,OAAO,EAAE,GAAtB,IAAwB,CAC1B,EAAO,UAAY,EAAO;EAC1B,SAiBF,IAfI,EAAQ,EAAK,MAAM,EAAS,IAC9B,EAAO,MAAQ,WAAW,EAAM,GAAG,GAEjC,EAAQ,EAAK,MAAM,EAAY,IACjC,EAAO,SAAW,WAAW,EAAM,GAAG,GAEpC,EAAQ,EAAK,MAAM,EAAU,IAC/B,EAAO,OAAS,EAChB,EAAO,OAAS,EAAM,KAEpB,EAAQ,EAAK,MAAM,EAAc,IACnC,EAAO,OAAS,EAChB,EAAO,OAAS,SAAS,EAAM,GAAI,GAAG,CACtC,EAAO,MAAQ,SAAS,EAAM,GAAI,GAAG,EAEnC,EAAO,MAAQ,GAAqB,EAAO,MAAQ,EACrD,MAQJ,OANM,EAAO,MAAQ,GACnB,EAAW,EAAmB,2BAA2B,CAErD,EAAO,MAAQ,GACnB,EAAW,EAAmB,+BAA+B,CAExD,GACN,EAAsB,SAAS,EAAS,EAAI,EAAK,CAClD,IAAM,EAAiB,EACvB,GAEE,EAAiB,GAAK,EAAiB,OACjC,EAAQ,KAAd,GAA0B,EAAQ,KAAd,GAAoB,EAAQ,GAAK,IAErD,OAAO,IAAI,WAAW,EAAQ,CAE5B,KAAoB,EAAQ,IAAM,EAAI,EAAQ,KAChD,EAAW,EAAmB,uBAAuB,CAEvD,IAAM,EAAY,IAAI,WAAW,EAAI,EAAK,EAAI,CACzC,EAAU,QACb,EAAW,EAAmB,kCAAkC,CAElE,IAAI,EAAS,EAAG,EAAM,EAChB,EAAU,EAAI,EACd,EAAY,IAAI,WAAW,EAAE,CAC7B,EAAkB,IAAI,WAAW,EAAQ,CAC3C,EAAgB,EACpB,KAAO,EAAgB,GAAK,EAAM,EAAQ,YAAY,CAChD,EAAM,EAAI,EAAQ,YACpB,EAAW,EAAgB,CAE7B,EAAU,GAAK,EAAQ,KACvB,EAAU,GAAK,EAAQ,KACvB,EAAU,GAAK,EAAQ,KACvB,EAAU,GAAK,EAAQ,MACd,EAAU,IAAf,GAA0B,EAAU,IAAf,IAAsB,EAAU,IAAM,EAAI,EAAU,KAAO,IAClF,EAAW,EAAmB,2BAA2B,CAE3D,IAAI,EAAM,EAAG,EACb,KAAO,EAAM,GAAW,EAAM,EAAQ,YAAY,CAChD,EAAQ,EAAQ,KAChB,IAAM,EAAe,EAAQ,IAM7B,GALI,IACF,GAAS,MACD,IAAN,GAAe,EAAM,EAAQ,IAC/B,EAAW,EAAmB,oBAAoB,CAEhD,EAAc,CAChB,IAAM,EAAY,EAAQ,KAC1B,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,IAC3B,EAAgB,KAAS,OAG3B,EAAgB,IAAI,EAAQ,SAAS,EAAK,EAAM,EAAM,CAAE,EAAI,CAC5D,GAAO,EACP,GAAO,EAGX,IAAM,EAAK,EACX,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,IAAM,CAC9B,IAAI,EAAM,EACV,EAAU,GAAU,EAAgB,EAAK,GACzC,GAAO,EACP,EAAU,EAAS,GAAK,EAAgB,EAAK,GAC7C,GAAO,EACP,EAAU,EAAS,GAAK,EAAgB,EAAK,GAC7C,GAAO,EACP,EAAU,EAAS,GAAK,EAAgB,EAAK,GAC7C,GAAU,EAEZ,IAEF,OAAO,GAEH,EAAqB,SAAS,EAAa,EAAc,EAAW,EAAY,CAEpF,IAAM,EAAiB,IADb,EAAY,EAAe,GACP,KAAO,IACrC,EAAU,EAAa,GAAK,EAAY,EAAe,GAAK,EAC5D,EAAU,EAAa,GAAK,EAAY,EAAe,GAAK,EAC5D,EAAU,EAAa,GAAK,EAAY,EAAe,GAAK,EAC5D,EAAU,EAAa,GAAK,GAExB,EAAoB,SAAS,EAAa,EAAc,EAAW,EAAY,CAEnF,IAAM,EAAiB,IADb,EAAY,EAAe,GACP,KAAO,IACrC,EAAU,EAAa,GAAK,GAAU,YAAY,KAAK,IAAI,EAAY,EAAe,GAAK,EAAO,MAAM,CAAC,CACzG,EAAU,EAAa,GAAK,GAAU,YAAY,KAAK,IAAI,EAAY,EAAe,GAAK,EAAO,MAAM,CAAC,CACzG,EAAU,EAAa,GAAK,GAAU,YAAY,KAAK,IAAI,EAAY,EAAe,GAAK,EAAO,MAAM,CAAC,CACzG,EAAU,EAAa,GAAK,GAAU,YAAY,EAAE,EAEhD,EAAY,IAAI,WAAW,EAAO,CACxC,EAAU,IAAM,EAChB,IAAM,EAAmB,EAAgB,EAAU,CAC7C,EAAI,EAAiB,MAAO,EAAK,EAAiB,OAAQ,EAAkB,EAAoB,EAAU,SAAS,EAAU,IAAI,CAAE,EAAG,EAAG,CAC3I,EAAM,EACN,EACJ,OAAQ,KAAK,KAAb,CACE,KAAK,GACH,EAAc,EAAgB,OAAS,EACvC,IAAM,EAAa,IAAI,aAAa,EAAc,EAAE,CACpD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAa,IACjC,EAAmB,EAAiB,EAAK,EAAG,EAAY,EAAK,EAAE,CAEjE,EAAO,EACP,EAAO,GACP,MACF,KAAK,GACH,EAAc,EAAgB,OAAS,EACvC,IAAM,EAAY,IAAI,YAAY,EAAc,EAAE,CAClD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAa,IACjC,EAAkB,EAAiB,EAAK,EAAG,EAAW,EAAK,EAAE,CAE/D,EAAO,EACP,EAAO,GACP,MACF,QACE,MAAU,MAAM,uCAAyC,KAAK,KAAK,CAEvE,MAAO,CACL,MAAO,EACP,OAAQ,EACR,OACA,OAAQ,EAAiB,OACzB,MAAO,EAAiB,MACxB,SAAU,EAAiB,SAC3B,OACD,CAEH,YAAY,EAAO,CAEjB,MADA,MAAK,KAAO,EACL,KAET,KAAK,EAAK,EAAQ,EAAY,EAAS,CACrC,SAAS,EAAe,EAAS,EAAS,CACxC,OAAQ,EAAQ,KAAhB,CACE,KAAK,GACL,KAAK,GACC,eAAgB,EAClB,EAAQ,WAAa,cAErB,EAAQ,SAAW,IACrB,EAAQ,UAAY,GACpB,EAAQ,UAAY,GACpB,EAAQ,gBAAkB,GAC1B,EAAQ,MAAQ,GAChB,MAEA,GACF,EAAO,EAAS,EAAQ,CAE5B,OAAO,MAAM,KAAK,EAAK,EAAgB,EAAY,EAAQ,IAMlE,CAAC,CAYE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAyBE,GAAsB,EAAM,CAC9B,6CAA8C,GAE/C,CAAC,CAkDE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAU8H,EACR,EAAE,CACH,CACD,OACSC,EAAY,GAAQ,EAGhC,CAAC,CA+BE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAU,GAAQ,EAAI,SAAW,EAAI,QAAQ,QAC7C,GAAgB,GAAU,GAAO,EAAM,CAAG,EAAM,QAAU,GAE7D,CAAC,CAqBE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,EAExB,CAAC,CAoBE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,EAExB,CAAC,CA8BE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAeE,GAAsB,EAAM,CAC9B,6CAA8C,GAE/C,CAAC,CAME,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAc,GAAS,OAAO,GAAS,WACvC,GAAsBC,GACnB,EAAK,IAAQ,CACZ,IAAI,EAAM,EAAK,CACb,SACA,aAAa,IACb,SAAS,IACT,WACA,eACE,EAAK,EAAQxG,GAAU,EAAK,CAC9B,SACA,aACA,SACA,WACA,cACD,CAAC,CACF,IAAM,EAAM,IAAU,CAAE,IAAK,KAAW,EAAK,CACvC,EAAS,IAAU,CAAE,OAAQ,KAAc,EAAQ,CACnD,EAAO,IAAU,CAAE,KAAM,KAAY,EAAM,CAC3C,EAAYyG,EAAc,KAAK,CAC/B,EAAWA,EAAc,KAAK,CAC9B,EAAM,GAAO,EAAW,CAC9B,MAA6B,CACtB,EAAM,QACT,EAAU,QAAQ,wBAAwB,EAE3C,CAAC,EAAM,EAAM,CAAC,CACjB,MAA6B,CAC3B,EAAU,QAAQ,wBAAwB,EAC1C,CACF,MAA6B,CAC3B,GAAI,EAAa,CACf,IAAM,EAAS,EAEf,OADA,OAAW,CAAE,OAAQ,EAAU,QAAS,EAAE,KAC7B,OAAW,CAAE,OAAQ,EAAQ,EAAE,GAE7C,CAAC,EAAW,EAAa,EAAI,CAAC,CACjC,IAAI,EAAQ,EACR,EAAY,KACV,EAAa,GAAW,EAAS,CAcvC,OAbA,GAAU,GAAU,CACd,IAAe,IAAW,KAAY,EAAQ,KAChD,EAAS,QAAQ,QAAU,GAC3B,EAAM,GAAG,gBAAgB,EAAI,CAC7B,EAAY,EAAM,MAAM,WACpB,IAAQ,EAAM,MAAM,WAAa,GACrC,EAAM,GAAG,OAAO,EAAM,MAAO,EAAU,QAAQ,CAC/C,EAAM,MAAM,WAAa,EACzB,EAAM,GAAG,gBAAgB,KAAK,CAC9B,EAAS,QAAQ,QAAU,GAC3B,MAEF,CACqB,EAAMC,EAAW,CAAE,SAAU,CAClC,EACd,qBACAhG,GAAcJ,EAAe,CAC3B,KAAM,EAAK,MAAQ,GACnB,MAAO,EAAK,MAAQ,EACpB,IAAK,EAAK,OAAS,EACnB,OAAQ,EAAK,OAAS,GACtB,IAAK,GAAU,CAAC,EAAW,EAAI,CAAC,CACjC,CAAE,EAAM,CAAE,CACT,SAAU,CAAC,GAAc,EAC1B,CAAC,CACH,CACe,EAAM,QAAS,CAAE,IAAK,EAAU,SAAU,GAAc,EAAS,EAAI,QAAQ,CAAE,CAAC,CACjG,CAAE,CAAC,EAEP,EAEJ,CAAC,CAME,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAWqG,EACT,EAAE,CACH,CACD,OACSC,EAAkB,GAAS,CAEpC,GAAW,EAAI,KAAK,GACpB,GAAQ,IAAI,GACZ,GAAS,IAAI,GACb,CAAC,GAAI,IAAM,CAAC,IAAI,GAAc,IAAI,GAAa,CAC/C,GAAS,IAAI,EACb,GAAiB,IAAI,EACrB,GAAmB,GACV,kBAAmB,EAE5B,IAAe,CACb,YAAY,eACZ,SAAS,CAAC,GAAI,GAAG,CACjB,iBAAiB,EACjB,YAAY,GACZ,WACA,WACA,SAAU,KACN,CACJ,IAAM,EAAO,IAAU,CAAE,KAAM,KAAY,EAAM,CAC3C,EAAa,IAAU,CAAE,YAAa,EAAO,CAC7C,EAAkB,IACrB,CAAE,cAAe,EACnB,CACK,EAAK,IAAU,CAAE,GAAI,KAAU,EAAI,CACnC,EAAQ,IAAU,CAAE,MAAO,KAAa,EAAO,CAC/C,EAAc,IAAU,CAAE,WAAY,KAAmB,EAAa,CACtE,EAAgBC,GAAe,CAC/B,EAAWA,GAAe,CAC1B,EAAaA,EAAc,KAAK,CAChC,CAAC,GAAgBC,MAAsB,IAAI,GAAQ,CACnD,EAAYD,EAAc,GAAM,CAChC,EAASA,EAAc,EAAE,CACzB,EAAaA,EAAc,IAAI,EAAQ,EAAG,EAAG,EAAE,CAAC,CAChD,EAAYA,EAAc,IAAI,EAAQ,EAAG,EAAG,EAAE,CAAC,CACrD,MAAuB,CACrB,EAAU,QAAQ,KAAK,EAAW,GAAG,EACpC,CAAC,EAAW,CAAC,CAChB,IAAM,EAAcE,EACjB,GAAc,CACb,EAAU,QAAU,IAChB,GAAmB,KACrB,EAAW,QAAW,GAAmD,QAAY,KAAsC,EAC7H,EAAO,QAAU,EAAW,SAAS,WAAW,GAAO,CACvD,GAAG,KAAK,EAAW,WAAW,CAC9B,GAAe,KAAK,EAAU,CAAC,eAAe,EAAO,QAAQ,CAAC,IAAI,GAAO,CACzE,GAAM,OAAO,GAAe,CAC5B,GAAG,KAAK,GAAM,WAAW,CACzB,GAAa,EAEf,CAAC,EAAiB,EAAY,EAAU,EAAY,CACrD,CACD,OACM,EAAM,aACR,EAAc,QAAU,EAAM,WAC9B,EAAM,WAAa,KACnB,EAAa,WAAa,EAAc,aAE7B,CACP,EAAc,UAAS,EAAM,WAAa,EAAc,WAE7D,EAAE,CAAC,CACN,IAAU,EAAG,IAAU,CACrB,IAAI,EACJ,GAAI,EAAW,SAAW,EAAS,QAAS,CAC1C,GAAI,EAAU,QACZ,GAAI,GAAG,QAAQ,GAAG,CAAG,IACnB,EAAU,QAAU,GAChB,GAAgB,EAAgB,EAClC,EAAW,GAAG,KAAK,EAAU,QAAQ,KAElC,CACL,IAAM,EAAO,EAAQ,GACrB,GAAG,cAAc,GAAI,EAAK,CAC1B,EAAW,SAAS,IAAI,EAAG,EAAG,EAAE,CAAC,gBAAgB,GAAG,CAAC,eAAe,EAAO,QAAQ,CAAC,IAAI,EAAW,QAAQ,CAC3G,EAAW,GAAG,IAAI,EAAG,EAAG,EAAE,CAAC,gBAAgB,GAAG,CAAC,WAAW,CAC1D,EAAW,WAAW,KAAK,GAAG,CAC1B,EAAU,GAAU,CACf,GAAiB,EAAgB,QAAQ,CAClD,GAAa,CAGjB,GAAO,KAAK,EAAW,OAAO,CAAC,QAAQ,EACtC,EAAM,EAAS,UAAY,MAAgB,EAAI,WAAW,sBAAsB,GAAO,CACpF,IAAW,EAAG,UAAY,IAC9B,EAAG,YAAY,CACf,EAAG,OAAO,EAAc,EAAW,QAAQ,GAE5C,EAAe,CAClB,IAAM,EAAU,GAAU,EAAW,CAC/B,EAAqBC,OAClB,CAAE,cAAa,UAAS,EAC/B,CAAC,EAAY,CACd,CACK,CAAC,EAAS,IAAW,EACrBzI,EAAI,EAAU,SAAS,UAAU,CAAG,EAAI,EAAU,SAAS,QAAQ,CAAG,CAAC,EAAK,MAAQ,EAAI,EAAU,EAAK,MAAQ,EAAI,EACnH,GAAK,EAAU,WAAW,UAAU,CAAG,EAAI,EAAU,WAAW,OAAO,CAAG,EAAK,OAAS,EAAI,GAAU,CAAC,EAAK,OAAS,EAAI,GAC/H,OAAO,GACW,EAAM,GAAS,SAAU,CAAE,MAAO,EAAoB,SAAU,CAC9D,EAAM,GAAqB,CAAE,IAAK,EAAY,SAAU,CAAC,EAAG,EAAG,IAAI,CAAE,CAAC,CACtE,EAAM,QAAS,CAAE,IAAK,EAAU,SAAU,CAACA,EAAG,GAAI,EAAE,CAAE,SAAU,EAAsB,CAAC,CACxG,CAAE,CAAC,CACJ,EACD,GAGN,CAAC,CAgFE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAiB,GAAQ,CACvB,IAAI,EAAM,EAAK,CACb,mBACA,gBACA,WACA,OAAO,oCACP,aAAa,CAAC,UAAW,UAAW,UAAU,CAC9C,gBAAgB,EAChB,YACA,SAAS,CAAC,IAAK,IAAK,IAAI,CACxB,aAAa,OACb,WACE,EAAK,EAAQyB,GAAU,EAAK,CAC9B,mBACA,gBACA,WACA,OACA,aACA,gBACA,YACA,SACA,aACA,UACD,CAAC,CACF,GAAM,CAAC,EAAQ,EAAQ,GAAU,EAC3B,CAAE,cAAa,WAAY,IAAiB,CAC5C,EAAgB,CACpB,OACA,WACA,aACA,UACA,UACA,gBACA,cAAgB,EAGZ,IAAK,GAHmB,GAAM,CAChC,EAAYpB,EAAE,OAAO,SAAS,CAC9B,EAAE,iBAAiB,EAEtB,CACD,OAAuB,EAAM,QAAS8B,GAAcJ,EAAe,CAAE,MAAO,GAAI,CAAE,EAAM,CAAE,CAAE,SAAU,CACpF,EAAM,GAAM,CAAE,MAAO,EAAQ,SAAU,CAAC,EAAG,EAAG,EAAE,CAAE,MAAO,EAAW,CAAC,CACrE,EAAM,GAAM,CAAE,MAAO,EAAQ,SAAU,CAAC,EAAG,EAAG,KAAK,GAAK,EAAE,CAAE,MAAO,EAAW,CAAC,CAC/E,EAAM,GAAM,CAAE,MAAO,EAAQ,SAAU,CAAC,EAAG,CAAC,KAAK,GAAK,EAAG,EAAE,CAAE,MAAO,EAAW,CAAC,CAChG,CAAC,GAAiC,EAAM2G,EAAW,CAAE,SAAU,CAC7C,EACd,GACA3G,EAAe,CACb,SAAU,EACV,SAAU,CAAC,EAAG,EAAG,EAAE,CACnB,MAAO,EAAO,GACf,CAAE,EAAc,CAClB,CACe,EACd,GACAA,EAAe,CACb,SAAU,EACV,SAAU,CAAC,EAAG,EAAG,EAAE,CACnB,MAAO,EAAO,GACf,CAAE,EAAc,CAClB,CACe,EACd,GACAA,EAAe,CACb,SAAU,EACV,SAAU,CAAC,EAAG,EAAG,EAAE,CACnB,MAAO,EAAO,GACf,CAAE,EAAc,CAClB,CACD,CAAC,GAAoC,EAAM2G,EAAW,CAAE,SAAU,CAChD,EACd,GACA3G,EAAe,CACb,SAAU,EACV,SAAU,CAAC,GAAI,EAAG,EAAE,CACrB,CAAE,EAAc,CAClB,CACe,EACd,GACAA,EAAe,CACb,SAAU,EACV,SAAU,CAAC,EAAG,GAAI,EAAE,CACrB,CAAE,EAAc,CAClB,CACe,EACd,GACAA,EAAe,CACb,SAAU,EACV,SAAU,CAAC,EAAG,EAAG,GAAG,CACrB,CAAE,EAAc,CAClB,CACF,CAAE,CAAC,CACL,CAAE,CAAC,CACY,EAAM,eAAgB,CAAE,UAAW,GAAK,CAAC,CACzC,EAAM,aAAc,CAAE,SAAU,CAAC,GAAI,GAAI,GAAG,CAAE,UAAW,GAAK,CAAC,CAChF,CAAE,CAAC,CAAC,GAGV,CAAC,CAuBE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAIE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,GAAU,CACR,KAAM,CACJ,MAAO,OACP,MAAO,QACP,MAAO,CACL,KAAM,QACN,WAAY,EACZ,SAAU,IACV,OAAQ,GACR,UAAW,EACX,MAAO,EACP,WAAY,IACZ,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,WAAY,MACZ,WAAY,IACZ,cAAe,IACf,UAAW,IACX,YAAa,GACb,WAAY,EACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,YAAa,OACb,MAAO,KACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,KACX,UAAW,EACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,GACX,UAAW,GACX,OAAQ,WACR,QAAS,KACT,UAAW,GACZ,CACF,CACD,QAAS,CACP,MAAO,UACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,MACZ,WAAY,IACZ,cAAe,IACf,UAAW,IACX,YAAa,IACb,WAAY,KACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,YAAa,OACb,MAAO,KACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,EACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,EACX,UAAW,IACX,OAAQ,WACR,KAAM,SACN,WAAY,EACZ,SAAU,GACV,WAAY,IACZ,OAAQ,GACR,UAAW,GACX,MAAO,EACP,UAAW,GACZ,CACF,CACD,KAAM,CACJ,MAAO,OACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,MACZ,WAAY,IACZ,cAAe,IACf,UAAW,IACX,YAAa,GACb,WAAY,EACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,YAAa,OACb,MAAO,MACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,GACX,UAAW,IACX,WAAY,GACZ,UAAW,GACX,UAAW,EACX,UAAW,EACX,OAAQ,WACR,KAAM,aACN,WAAY,EACZ,SAAU,IACV,WAAY,EACZ,OAAQ,GACR,UAAW,IACX,MAAO,EACP,UAAW,GACZ,CACF,CACD,YAAa,CACX,MAAO,cACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,MACZ,WAAY,GACZ,cAAe,IACf,UAAW,GACX,YAAa,IACb,WAAY,KACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,YAAa,OACb,MAAO,KACP,UAAW,MACX,aAAc,EACd,IAAK,GACL,UAAW,IACX,UAAW,EACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,IACX,UAAW,GACX,OAAQ,WACR,KAAM,SACN,WAAY,IACZ,SAAU,GACV,WAAY,IACZ,OAAQ,GACR,UAAW,GACX,MAAO,EACP,UAAW,GACZ,CACF,CACD,YAAa,CACX,MAAO,eACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,MACZ,WAAY,EACZ,cAAe,IACf,UAAW,IACX,YAAa,GACb,WAAY,IACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,YAAa,OACb,MAAO,KACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,EACX,UAAW,EACX,WAAY,GACZ,UAAW,GACX,UAAW,EACX,UAAW,IACX,OAAQ,WACR,KAAM,aACN,WAAY,EACZ,SAAU,IACV,WAAY,EACZ,OAAQ,GACR,UAAW,IACX,MAAO,EACP,UAAW,GACZ,CACF,CACD,gBAAiB,CACf,MAAO,QACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,KACZ,WAAY,IACZ,cAAe,EACf,UAAW,IACX,YAAa,IACb,WAAY,KACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,MAAO,MACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,EACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,EACX,UAAW,EACX,OAAQ,WACR,KAAM,SACN,WAAY,IACZ,SAAU,IACV,OAAQ,GACR,UAAW,EACX,MAAO,EACP,WAAY,IACZ,UAAW,GACZ,CACF,CACD,SAAU,CACR,MAAO,WACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,KACZ,WAAY,IACZ,cAAe,IACf,UAAW,IACX,YAAa,IACb,WAAY,EACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,MAAO,MACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,IACX,UAAW,GACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,EACX,UAAW,IACX,OAAQ,WACR,KAAM,aACN,WAAY,EACZ,SAAU,IACV,OAAQ,GACR,UAAW,IACX,MAAO,GACP,WAAY,IACZ,UAAW,GACZ,CACF,CACD,OAAQ,CACN,MAAO,SACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,KACZ,SAAU,UACV,SAAU,UACV,WAAY,IACZ,cAAe,GACf,UAAW,IACX,YAAa,GACb,WAAY,KACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,MAAO,MACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,KACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,EACX,UAAW,EACX,OAAQ,WACR,KAAM,SACN,WAAY,IACZ,SAAU,IACV,OAAQ,GACR,UAAW,GACX,MAAO,EACP,WAAY,IACZ,UAAW,GACZ,CACF,CACD,SAAU,CACR,MAAO,WACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,KACZ,SAAU,UACV,SAAU,UACV,WAAY,IACZ,cAAe,IACf,UAAW,IACX,YAAa,GACb,WAAY,EACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,MAAO,MACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,KACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,EACX,UAAW,IACX,OAAQ,WACR,KAAM,aACN,WAAY,EACZ,SAAU,IACV,OAAQ,GACR,UAAW,EACX,MAAO,GACP,WAAY,IACZ,UAAW,GACZ,CACF,CACD,YAAa,CACX,MAAO,eACP,MAAO,QACP,MAAO,CACL,MAAO,WACP,WAAY,EACZ,SAAU,GACV,UAAW,GACX,YAAa,WACb,OAAQ,MACR,QAAS,KACT,WAAY,MACZ,WAAY,IACZ,cAAe,IACf,UAAW,IACX,YAAa,IACb,WAAY,EACZ,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,UAAW,MACX,UAAW,OACX,MAAO,MACP,UAAW,KACX,aAAc,EACd,IAAK,GACL,UAAW,EACX,UAAW,IACX,UAAW,EACX,WAAY,GACZ,UAAW,EACX,UAAW,EACX,UAAW,IACX,OAAQ,WACR,KAAM,aACN,WAAY,EACZ,SAAU,EACV,OAAQ,GACR,UAAW,EACX,MAAO,GACP,WAAY,IACZ,UAAW,GACZ,CACF,CACF,CACc,OAAO,OAAO,GAAQ,EAExC,CAAC,CAwYE,GAAsB,EAAM,CAC9B,6CAA8C,CAC5C,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,GAAqB,EAAE,CACvB,GAAS4G,GAAoB,CAC3B,YAAeC,GAChB,CAAC,CACF,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAOC,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACD,GAAQ,QAAU,SAAS,EAAK,EAAW,CAIzC,IAAK,IAHD,EAAM,EAAE,CACR,EAAO,OAAO,KAAK,EAAI,CACvB,EAAQ,MAAM,QAAQ,EAAU,CAC3B,EAAK,EAAG,EAAK,EAAK,OAAQ,IAAM,CACvC,IAAI,EAAM,EAAK,GACX,EAAM,EAAI,IACV,EAAQ,EAAU,QAAQ,EAAI,GAAK,GAAK,EAAU,EAAK,EAAK,EAAI,IAClE,EAAI,GAAO,GAGf,OAAO,GAET,GAAqBC,GAAQ,QAC7B,GAAyB,EAAE,CAC3B,GAASC,GAAwB,CAC/B,YAAeC,GAChB,CAAC,CACF,GAAY,EAAE,CACd,GAAW,CACT,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAY,GAEf,CACD,GAAS,SAAW,EAAQ,IAAc,CACxC,GAAI,EAAE,OAAO,GAAW,UAAY,OAAO,GAAc,UACvD,MAAU,UAAU,gDAAgD,CAEtE,GAAI,IAAc,GAChB,MAAO,CAAC,EAAO,CAEjB,IAAM,EAAiB,EAAO,QAAQ,EAAU,CAIhD,OAHI,IAAmB,GACd,CAAC,EAAO,CAEV,CACL,EAAO,MAAM,EAAG,EAAe,CAC/B,EAAO,MAAM,EAAiB,EAAU,OAAO,CAChD,EAEH,GAAyB,GAAS,QAClC,GAA+B,EAAE,CACjC,GAASC,GAA8B,CACrC,YAAeC,GAChB,CAAC,CACF,GAAY,EAAE,CACd,GAAW,CACT,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAY,GAEf,CACD,GAAQ,eACR,GAAoB,OAAO,IAAMC,GAAQ,aAAc,KAAK,CAC5D,GAAmB,OAAO,IAAMA,GAAQ,KAAM,KAAK,CACnD,GAAS,QAAU,SAAS,EAAY,CACtC,GAAI,OAAO,GAAe,SACxB,MAAU,UAAU,sDAAwD,OAAO,EAAa,IAAI,CAEtG,GAAI,CAEF,MADA,GAAa,EAAW,QAAQ,MAAO,IAAI,CACpC,mBAAmB,EAAW,MACzB,CACZ,OAAO3E,GAAyB,EAAW,GAG/C,GAA+B,GAAS,QACxC,GAA4B,EAAE,CAC9B,GAAS4E,GAA2B,CAClC,YAAeC,GAChB,CAAC,CACF,GAAY,EAAE,CACd,GAAW,CACT,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAY,GAEf,CACD,GAAS,QAAW,GAAQ,mBAAmB,EAAI,CAAC,QAAQ,WAAa,GAAM,IAAIrJ,EAAE,WAAW,EAAE,CAAC,SAAS,GAAG,CAAC,aAAa,GAAG,CAChI,GAA4B,GAAS,QACrC,GAAiB,IAAW,QAAe,GAAU,OAAO,KAAS,KAAe,MAAe,KAAY,QAAe,IAAW,OAAO,WAAe,KAAe,YAAc,EAAE,CAC9L,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAOsJ,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACD,GAAkB,GAAwBF,KAA8B,OAA0C,EAAE,CAA9BA,GAA+B,CACrH,GAAkB,GAAwBH,KAAiC,OAA6C,EAAE,CAAjCA,GAAkC,CAC3H,GAAe,GAAwBF,KAA2B,OAAuC,EAAE,CAA3BA,GAA4B,CAC5G,GAAe,GAAwBJ,KAAuB,OAAmC,EAAE,CAAvBA,GAAwB,CACpG,GAAqB,GAAU,GAAU,KACzC,GAA2B,OAAO,2BAA2B,CAC7D,GAAS,QAAUvD,GACnB,GAAS,MAAQE,GACjB,GAAS,WAAa,EAAQ,IAAY,CACxC,GAAI,CAAC,EACH,MAAO,GAET,EAAU,OAAO,OAAO,CACtB,OAAQ,GACR,OAAQ,GACR,YAAa,OACb,qBAAsB,IACvB,CAAE,EAAQ,CACX,GAA6B,EAAQ,qBAAqB,CAC1D,IAAM,EAAgB,GAAQ,EAAQ,UAAYiE,GAAkB,EAAO,GAAK,EAAI,EAAQ,iBAAmB,EAAO,KAAS,GACzH,EAAY7E,GAAsB,EAAQ,CAC1C,EAAa,EAAE,CACrB,IAAK,IAAM,KAAO,OAAO,KAAK,EAAO,CAC9B,EAAa,EAAI,GACpB,EAAW,GAAO,EAAO,IAG7B,IAAM,EAAO,OAAO,KAAK,EAAW,CAIpC,OAHI,EAAQ,OAAS,IACnB,EAAK,KAAK,EAAQ,KAAK,CAElB,EAAK,IAAK,GAAQ,CACvB,IAAM,EAAQ,EAAO,GAarB,OAZI,IAAU,IAAK,GACV,GAEL,IAAU,KACLC,GAAO,EAAK,EAAQ,CAEzB,MAAM,QAAQ,EAAM,CAClB,EAAM,SAAW,GAAK,EAAQ,cAAgB,oBACzCA,GAAO,EAAK,EAAQ,CAAG,KAEzB,EAAM,OAAO,EAAU,EAAI,CAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAE5CA,GAAO,EAAK,EAAQ,CAAG,IAAMA,GAAO,EAAO,EAAQ,EAC1D,CAAC,OAAQ,GAAM3E,EAAE,OAAS,EAAE,CAAC,KAAK,IAAI,EAE1C,GAAS,UAAY,EAAK,IAAY,CACpC,EAAU,OAAO,OAAO,CACtB,OAAQ,GACT,CAAE,EAAQ,CACX,GAAM,CAAC,EAAM,GAAQuF,GAAa,EAAK,IAAI,CAC3C,OAAO,OAAO,OACZ,CACE,IAAK,EAAK,MAAM,IAAI,CAAC,IAAM,GAC3B,MAAOD,GAAMF,GAAQ,EAAI,CAAE,EAAQ,CACpC,CACD,GAAW,EAAQ,yBAA2B,EAAO,CAAE,mBAAoBP,GAAQ,EAAM,EAAQ,CAAE,CAAG,EAAE,CACzG,EAEH,GAAS,cAAgB,EAAQ,IAAY,CAC3C,EAAU,OAAO,OAAO,CACtB,OAAQ,GACR,OAAQ,IACP2E,IAA2B,GAC7B,CAAE,EAAQ,CACX,IAAM,EAAMtE,GAAW,EAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAM,GAC9C,EAAeoE,GAAS,QAAQ,EAAO,IAAI,CAC3C,EAAqBA,GAAS,MAAM,EAAc,CAAE,KAAM,GAAO,CAAC,CAClE,EAAS,OAAO,OAAO,EAAoB,EAAO,MAAM,CAC1D,EAAcA,GAAS,UAAU,EAAQ,EAAQ,CACrD,AACE,IAAc,IAAI,IAEpB,IAAI,EAAOnE,GAAQ,EAAO,IAAI,CAI9B,OAHI,EAAO,qBACT,EAAO,IAAI,EAAQqE,IAA4B7E,GAAO,EAAO,mBAAoB,EAAQ,CAAG,EAAO,sBAE9F,GAAG,IAAM,IAAc,KAEhC,GAAS,MAAQ,EAAO,EAAQ,IAAY,CAC1C,EAAU,OAAO,OAAO,CACtB,wBAAyB,IACxB6E,IAA2B,GAC7B,CAAE,EAAQ,CACX,GAAM,CAAE,MAAK,MAAO,EAAQ,sBAAuBF,GAAS,SAAS,EAAO,EAAQ,CACpF,OAAOA,GAAS,aAAa,CAC3B,MACA,MAAOG,GAAa,EAAQ,EAAO,CACnC,qBACD,CAAE,EAAQ,EAEb,GAAS,SAAW,EAAO,EAAQ,IAAY,CAC7C,IAAM,EAAkB,MAAM,QAAQ,EAAO,CAAI,GAAQ,CAAC,EAAO,SAAS,EAAI,EAAI,EAAK,IAAU,CAAC,EAAO,EAAK,EAAM,CACpH,OAAOH,GAAS,KAAK,EAAO,EAAiB,EAAQ,EAEnD,OAAO,aAAaI,GAAQ,QAAQ,EAAI,OAAO,KAAKA,GAAQ,QAAQ,CAAC,SAAW,IACrEA,GAAQ,QAAQ,QAC7B,GAAcA,GAAQ,QAAQ,MACjBA,GAAQ,QAAQ,UAChBA,GAAQ,QAAQ,SAChBA,GAAQ,QAAQ,aAChBA,GAAQ,QAAQ,KAChBA,GAAQ,QAAQ,SAERA,GAAQ,SAElC,CAAC,CAGE,GAAY,EAAM,CACpB,oCAAqC,CACnC,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,CACrB,IAAqB,EAExB,CAAC,CAqBE,GAAkB,EAAM,CAC1B,qEAAsE,CACpE,IAAW,CACX,GAAuB,EACvB,GAAU,GAAe,GAAQ,CACjC,GAAiB,GAAQ,GAAG,KAE/B,CAAC,ICr/vCF,SAAS,GAAiB,EAAY,EAAO,CAC3C,GAAI,CACF,MAAO,CAAC,mBAAmB,EAAW,KAAK,GAAG,CAAC,CAAC,MACpC,EAEd,GAAI,EAAW,SAAW,EACxB,OAAO,EAET,IAAiB,EACjB,IAAI,EAAO,EAAW,MAAM,EAAG,EAAM,CACjC,EAAQ,EAAW,MAAM,EAAM,CACnC,OAAO,MAAM,UAAU,OAAO,KAAK,EAAE,CAAE,GAAiB,EAAK,CAAE,GAAiB,EAAM,CAAC,CAEzF,SAAS,GAAO,EAAO,CACrB,GAAI,CACF,OAAO,mBAAmB,EAAM,MACpB,CAEZ,IAAK,IADD,EAAS,EAAM,MAAM,GAAc,EAAI,EAAE,CACpCC,EAAI,EAAGA,EAAI,EAAO,OAAQ,IACjC,EAAQ,GAAiB,EAAQA,EAAE,CAAC,KAAK,GAAG,CAC5C,EAAS,EAAM,MAAM,GAAc,EAAI,EAAE,CAE3C,OAAO,GAGX,SAAS,GAAyB,EAAO,CAMvC,IALA,IAAI,EAAa,CACf,SAAU,KACV,SAAU,KACX,CACG,EAAQ,GAAa,KAAK,EAAM,CAC7B,GAAO,CACZ,GAAI,CACF,EAAW,EAAM,IAAM,mBAAmB,EAAM,GAAG,MACvC,CACZ,IAAI,EAAS,GAAO,EAAM,GAAG,CACzB,IAAW,EAAM,KACnB,EAAW,EAAM,IAAM,GAG3B,EAAQ,GAAa,KAAK,EAAM,CAElC,EAAW,OAAS,IAEpB,IAAK,IADD,EAAU,OAAO,KAAK,EAAW,CAC5BA,EAAI,EAAGA,EAAI,EAAQ,OAAQ,IAAK,CACvC,IAAI,EAAM,EAAQA,GAClB,EAAQ,EAAM,QAAQ,IAAI,OAAO,EAAK,IAAI,CAAE,EAAW,GAAK,CAE9D,OAAO,EAuDT,SAAS,GAAgB,EAAgB,CACvC,IAAI,GAAkB,IAAW,QAAe,GAAU,OAAO,KAAS,KAAe,MAAe,KAAW,QAAe,IAAU,OAAO,WAAe,KAAe,YAAc,EAAE,EAAE,OAE/L,EAAa,EAAQ,OAAO,KAAK,CACjC,EAAkB,GAClB,EAAmB,GAyDvB,OAxDA,EAAQ,eAAe,EAAY,aAAc,CAC/C,MAAO,GACP,WAAY,GACZ,aAAc,GACf,CAAC,CACE,IACU,EAAQ,oBAAoB,EAAe,CAEjD,QAAQ,SAAS,EAAG,CACxB,GAAIC,IAAM,UACR,EAAmB,WACV,CAAC,GAAmBA,GAAK,aAClC,GAAI,CACF,EAAkB,EAAeA,IAAM,UAC3B,EAGhB,EAAQ,eAAe,EAAYA,EAAG,CACpC,IAAK,UAAW,CACd,OAAO,EAAeA,IAExB,WAAY,GACZ,aAAc,GACf,CAAC,EACF,CACE,EAAQ,uBACI,EAAQ,sBAAsB,EAAe,CACnD,QAAQ,SAAS,EAAG,CAC1B,EAAQ,eAAe,EAAYA,EAAG,CACpC,IAAK,UAAW,CACd,OAAO,EAAeA,IAExB,WAAY,GACZ,aAAc,GACf,CAAC,EACF,CAEJ,EAAQ,kBAAkB,EAAW,CACrC,EAAQ,KAAK,EAAW,CACpB,EAAQ,QACV,EAAQ,OAAO,EAAW,EAG1B,EACK,EAEL,GACE,EAAQ,aAAa,EAAW,QAAQ,EAAI,EAAE,YAAa,EAAW,UACxE,EAAQ,eAAe,EAAW,QAAS,UAAW,CACpD,MAAO,EAAW,QAClB,aAAc,GACd,WAAY,GACb,CAAC,CAEG,EAAW,SAEb,EAET,SAAS,GAAsB,EAAS,CACtC,OAAQ,EAAQ,YAAhB,CACE,IAAK,QACH,MAAQ,KAAS,EAAQ,IAAU,CACjC,IAAM,EAAQ,EAAO,OAOrB,OANI,IAAU,IAAK,IAAK,EAAQ,UAAY,IAAU,MAAQ,EAAQ,iBAAmB,IAAU,GAC1F,EAEL,IAAU,KACL,CAAC,GAAG,EAAQ,CAAC,GAAO,EAAK,EAAQ,CAAE,IAAK,EAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAE/D,CACL,GAAG,EACH,CAAC,GAAO,EAAK,EAAQ,CAAE,IAAK,GAAO,EAAO,EAAQ,CAAE,KAAM,GAAO,EAAO,EAAQ,CAAC,CAAC,KAAK,GAAG,CAC3F,EAEL,IAAK,UACH,MAAQ,KAAS,EAAQ,IACnB,IAAU,IAAK,IAAK,EAAQ,UAAY,IAAU,MAAQ,EAAQ,iBAAmB,IAAU,GAC1F,EAEL,IAAU,KACL,CAAC,GAAG,EAAQ,CAAC,GAAO,EAAK,EAAQ,CAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAEpD,CAAC,GAAG,EAAQ,CAAC,GAAO,EAAK,EAAQ,CAAE,MAAO,GAAO,EAAO,EAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAEtF,IAAK,uBACH,MAAQ,KAAS,EAAQ,IACnB,IAAU,IAAK,IAAK,EAAQ,UAAY,IAAU,MAAQ,EAAQ,iBAAmB,IAAU,GAC1F,EAEL,IAAU,KACL,CAAC,GAAG,EAAQ,CAAC,GAAO,EAAK,EAAQ,CAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAExD,CAAC,GAAG,EAAQ,CAAC,GAAO,EAAK,EAAQ,CAAE,SAAU,GAAO,EAAO,EAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAEzF,IAAK,QACL,IAAK,YACL,IAAK,oBAAqB,CACxB,IAAM,EAAc,EAAQ,cAAgB,oBAAsB,MAAQ,IAC1E,MAAQ,KAAS,EAAQ,IACnB,IAAU,IAAK,IAAK,EAAQ,UAAY,IAAU,MAAQ,EAAQ,iBAAmB,IAAU,GAC1F,GAET,EAAQ,IAAU,KAAO,GAAK,EAC1B,EAAO,SAAW,EACb,CAAC,CAAC,GAAO,EAAK,EAAQ,CAAE,EAAa,GAAO,EAAO,EAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAExE,CAAC,CAAC,EAAQ,GAAO,EAAO,EAAQ,CAAC,CAAC,KAAK,EAAQ,qBAAqB,CAAC,EAGhF,QACE,MAAQ,KAAS,EAAQ,IACnB,IAAU,IAAK,IAAK,EAAQ,UAAY,IAAU,MAAQ,EAAQ,iBAAmB,IAAU,GAC1F,EAEL,IAAU,KACL,CAAC,GAAG,EAAQ,GAAO,EAAK,EAAQ,CAAC,CAEnC,CAAC,GAAG,EAAQ,CAAC,GAAO,EAAK,EAAQ,CAAE,IAAK,GAAO,EAAO,EAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,EAIxF,SAAS,GAAqB,EAAS,CACrC,IAAI,EACJ,OAAQ,EAAQ,YAAhB,CACE,IAAK,QACH,OAAQ,EAAK,EAAO,IAAgB,CAGlC,GAFA,EAAS,aAAa,KAAK,EAAI,CAC/B,EAAM,EAAI,QAAQ,WAAY,GAAG,CAC7B,CAAC,EAAQ,CACX,EAAY,GAAO,EACnB,OAEE,EAAY,KAAS,IAAK,KAC5B,EAAY,GAAO,EAAE,EAEvB,EAAY,GAAK,EAAO,IAAM,GAElC,IAAK,UACH,OAAQ,EAAK,EAAO,IAAgB,CAGlC,GAFA,EAAS,UAAU,KAAK,EAAI,CAC5B,EAAM,EAAI,QAAQ,QAAS,GAAG,CAC1B,CAAC,EAAQ,CACX,EAAY,GAAO,EACnB,OAEF,GAAI,EAAY,KAAS,IAAK,GAAG,CAC/B,EAAY,GAAO,CAAC,EAAM,CAC1B,OAEF,EAAY,GAAO,EAAE,CAAC,OAAO,EAAY,GAAM,EAAM,EAEzD,IAAK,uBACH,OAAQ,EAAK,EAAO,IAAgB,CAGlC,GAFA,EAAS,WAAW,KAAK,EAAI,CAC7B,EAAM,EAAI,QAAQ,SAAU,GAAG,CAC3B,CAAC,EAAQ,CACX,EAAY,GAAO,EACnB,OAEF,GAAI,EAAY,KAAS,IAAK,GAAG,CAC/B,EAAY,GAAO,CAAC,EAAM,CAC1B,OAEF,EAAY,GAAO,EAAE,CAAC,OAAO,EAAY,GAAM,EAAM,EAEzD,IAAK,QACL,IAAK,YACH,OAAQ,EAAK,EAAO,IAAgB,CAClC,IAAM,EAAU,OAAO,GAAU,UAAY,EAAM,SAAS,EAAQ,qBAAqB,CACnF,EAAiB,OAAO,GAAU,UAAY,CAAC,GAAW,GAAQ,EAAO,EAAQ,CAAC,SAAS,EAAQ,qBAAqB,CAC9H,EAAQ,EAAiB,GAAQ,EAAO,EAAQ,CAAG,EAEnD,EAAY,GADK,GAAW,EAAiB,EAAM,MAAM,EAAQ,qBAAqB,CAAC,IAAK,GAAS,GAAQ,EAAM,EAAQ,CAAC,CAAG,IAAU,KAAO,EAAQ,GAAQ,EAAO,EAAQ,EAGnL,IAAK,oBACH,OAAQ,EAAK,EAAO,IAAgB,CAClC,IAAM,EAAU,UAAU,KAAK,EAAI,CAEnC,GADA,EAAM,EAAI,QAAQ,QAAS,GAAG,CAC1B,CAAC,EAAS,CACZ,EAAY,GAAO,GAAQ,GAAQ,EAAO,EAAQ,CAClD,OAEF,IAAM,EAAa,IAAU,KAAO,EAAE,CAAG,EAAM,MAAM,EAAQ,qBAAqB,CAAC,IAAK,GAAS,GAAQ,EAAM,EAAQ,CAAC,CACxH,GAAI,EAAY,KAAS,IAAK,GAAG,CAC/B,EAAY,GAAO,EACnB,OAEF,EAAY,GAAO,EAAE,CAAC,OAAO,EAAY,GAAM,EAAW,EAE9D,QACE,OAAQ,EAAK,EAAO,IAAgB,CAClC,GAAI,EAAY,KAAS,IAAK,GAAG,CAC/B,EAAY,GAAO,EACnB,OAEF,EAAY,GAAO,EAAE,CAAC,OAAO,EAAY,GAAM,EAAM,GAI7D,SAAS,GAA6B,EAAO,CAC3C,GAAI,OAAO,GAAU,UAAY,EAAM,SAAW,EAChD,MAAU,UAAU,uDAAuD,CAG/E,SAAS,GAAO,EAAO,EAAS,CAI9B,OAHI,EAAQ,OACH,EAAQ,OAAS,GAAgB,EAAM,CAAG,mBAAmB,EAAM,CAErE,EAET,SAAS,GAAQ,EAAO,EAAS,CAI/B,OAHI,EAAQ,OACH,GAAgB,EAAM,CAExB,EAET,SAAS,GAAW,EAAO,CAOzB,OANI,MAAM,QAAQ,EAAM,CACf,EAAM,MAAM,CAEjB,OAAO,GAAU,SACZ,GAAW,OAAO,KAAK,EAAM,CAAC,CAAC,MAAM,EAAG,IAAM,OAAOC,EAAE,CAAG,OAAOC,EAAE,CAAC,CAAC,IAAK,GAAQ,EAAM,GAAK,CAE/F,EAET,SAAS,GAAW,EAAO,CACzB,IAAM,EAAY,EAAM,QAAQ,IAAI,CAIpC,OAHI,IAAc,KAChB,EAAQ,EAAM,MAAM,EAAG,EAAU,EAE5B,EAET,SAAS,GAAQ,EAAK,CACpB,IAAI,EAAO,GACL,EAAY,EAAI,QAAQ,IAAI,CAIlC,OAHI,IAAc,KAChB,EAAO,EAAI,MAAM,EAAU,EAEtB,EAET,SAAS,GAAQ,EAAO,CACtB,EAAQ,GAAW,EAAM,CACzB,IAAM,EAAa,EAAM,QAAQ,IAAI,CAIrC,OAHI,IAAe,GACV,GAEF,EAAM,MAAM,EAAa,EAAE,CAEpC,SAAS,GAAW,EAAO,EAAS,CAMlC,OALI,EAAQ,cAAgB,CAAC,OAAO,MAAM,OAAO,EAAM,CAAC,EAAK,OAAO,GAAU,UAAY,EAAM,MAAM,GAAK,GACzG,EAAQ,OAAO,EAAM,CACZ,EAAQ,eAAiB,IAAU,OAAS,EAAM,aAAa,GAAK,QAAU,EAAM,aAAa,GAAK,WAC/G,EAAQ,EAAM,aAAa,GAAK,QAE3B,EAET,SAAS,GAAM,EAAO,EAAS,CAC7B,EAAU,OAAO,OAAO,CACtB,OAAQ,GACR,KAAM,GACN,YAAa,OACb,qBAAsB,IACtB,aAAc,GACd,cAAe,GAChB,CAAE,EAAQ,CACX,GAA6B,EAAQ,qBAAqB,CAC1D,IAAM,EAAY,GAAqB,EAAQ,CACzC,EAAsB,OAAO,OAAO,KAAK,CAK/C,GAJI,OAAOC,GAAU,WAGrB,EAAQA,EAAM,MAAM,CAAC,QAAQ,SAAU,GAAG,CACtC,CAACA,GACH,OAAO,EAET,IAAK,IAAM,KAASA,EAAM,MAAM,IAAI,CAAE,CACpC,GAAI,IAAU,GACZ,SAEF,GAAI,CAAC,EAAK,GAAS,GAAa,EAAQ,OAAS,EAAM,QAAQ,MAAO,IAAI,CAAG,EAAO,IAAI,CACxF,EAAQ,IAAU,IAAK,GAAI,KAAO,CAAC,QAAS,YAAa,oBAAoB,CAAC,SAAS,EAAQ,YAAY,CAAG,EAAQ,GAAQ,EAAO,EAAQ,CAC7I,EAAU,GAAQ,EAAK,EAAQ,CAAE,EAAO,EAAI,CAE9C,IAAK,IAAM,KAAO,OAAO,KAAK,EAAI,CAAE,CAClC,IAAM,EAAQ,EAAI,GAClB,GAAI,OAAO,GAAU,UAAY,EAC/B,IAAK,IAAMH,KAAK,OAAO,KAAK,EAAM,CAChC,EAAMA,GAAK,GAAW,EAAMA,GAAI,EAAQ,MAG1C,EAAI,GAAO,GAAW,EAAO,EAAQ,CAMzC,OAHI,EAAQ,OAAS,GACZ,GAED,EAAQ,OAAS,GAAO,OAAO,KAAK,EAAI,CAAC,MAAM,CAAG,OAAO,KAAK,EAAI,CAAC,KAAK,EAAQ,KAAK,EAAE,QAAQ,EAAQ,IAAQ,CACrH,IAAM,EAAQ,EAAI,GAMlB,OALY,GAAU,OAAO,GAAU,UAAY,CAAC,MAAM,QAAQ,EAAM,CACtE,EAAO,GAAO,GAAW,EAAM,CAE/B,EAAO,GAAO,EAET,GACU,OAAO,OAAO,KAAK,CAAC,CAkIzC,SAAS,GAAW,EAAS,GAAgB,CAC3C,OAAO,GAAU,EAAQ,CACvB,aAAc,GACd,cAAe,GACf,YAAa,QACd,CAAC,CAEJ,SAASI,IAAW,CAGlB,MAAO,CAFOC,GAAe,GAAU,EAAM,MAAM,CAClCA,GAAe,GAAU,EAAM,SAAS,CACjC,CAE1B,SAASC,IAAqB,CAO5B,MAAO,CANiBC,GACrB,GAAU,EAAM,gBAClB,CAC0BA,GACxB,GAAU,EAAM,mBAClB,CAC2C,4JA5oBhB,KAMA,KAMA,CAG1B,GAAqB,EAAE,CAC3B,GAAS,GAAoB,CAC3B,YAAe,GAChB,CAAC,CAEE,GAAkB,EAAM,CAC1B,8EAA+E,CAC7E,GAAU,EAAE,CACZ,GAAS,CACP,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAU,GAEb,CACD,GAAO,QAAU,SAAS,EAAK,EAAW,CAIxC,IAAK,IAHD,EAAM,EAAE,CACR,EAAO,OAAO,KAAK,EAAI,CACvB,EAAQ,MAAM,QAAQ,EAAU,CAC3BR,EAAI,EAAGA,EAAI,EAAK,OAAQ,IAAK,CACpC,IAAI,EAAM,EAAKA,GACX,EAAM,EAAI,IACV,EAAQ,EAAU,QAAQ,EAAI,GAAK,GAAK,EAAU,EAAK,EAAK,EAAI,IAClE,EAAI,GAAO,GAGf,OAAO,GAET,GAAqB,GAAO,SAE/B,CAAC,CAGE,GAAyB,EAAE,CAC/B,GAAS,GAAwB,CAC/B,YAAe,GAChB,CAAC,CAEE,GAAsB,EAAM,CAC9B,sFAAuF,CACrF,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACD,GAAQ,SAAW,EAAQ,IAAc,CACvC,GAAI,EAAE,OAAO,GAAW,UAAY,OAAO,GAAc,UACvD,MAAU,UAAU,gDAAgD,CAEtE,GAAI,IAAc,GAChB,MAAO,CAAC,EAAO,CAEjB,IAAM,EAAiB,EAAO,QAAQ,EAAU,CAIhD,OAHI,IAAmB,GACd,CAAC,EAAO,CAEV,CACL,EAAO,MAAM,EAAG,EAAe,CAC/B,EAAO,MAAM,EAAiB,EAAU,OAAO,CAChD,EAEH,GAAyB,GAAQ,SAEpC,CAAC,CAGE,GAA+B,EAAE,CACrC,GAAS,GAA8B,CACrC,YAAe,GAChB,CAAC,CAoDE,GAA4B,EAAM,CACpC,kGAAmG,CACjG,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACD,GAAQ,eACR,GAAoB,OAAO,IAAM,GAAQ,aAAc,KAAK,CAC5D,GAAmB,OAAO,IAAM,GAAQ,KAAM,KAAK,CACnD,GAAQ,QAAU,SAAS,EAAY,CACrC,GAAI,OAAO,GAAe,SACxB,MAAU,UAAU,sDAAwD,OAAO,EAAa,IAAI,CAEtG,GAAI,CAEF,MADA,GAAa,EAAW,QAAQ,MAAO,IAAI,CACpC,mBAAmB,EAAW,MACzB,CACZ,OAAO,GAAyB,EAAW,GAG/C,GAA+B,GAAQ,SAE1C,CAAC,CAGE,GAA4B,EAAE,CAClC,GAAS,GAA2B,CAClC,YAAe,GAChB,CAAC,CAEE,GAAyB,EAAM,CACjC,4FAA6F,CAC3F,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACD,GAAQ,QAAW,GAAQ,mBAAmB,EAAI,CAAC,QAAQ,WAAa,GAAM,IAAIS,EAAE,WAAW,EAAE,CAAC,SAAS,GAAG,CAAC,aAAa,GAAG,CAC/H,GAA4B,GAAQ,SAEvC,CAAC,CA4TE,GAAoB,EAAM,CAC5B,kFAAmF,CACjF,IAAiB,CACjB,IAAqB,CACrB,IAA2B,CAC3B,IAAwB,CACxB,GAAgB,IAAW,QAAe,GAAU,OAAO,KAAS,KAAe,MAAe,KAAW,QAAe,IAAU,OAAO,WAAe,KAAe,YAAc,EAAE,CAC3L,GAAW,EAAE,CACb,GAAU,CACR,IAAI,SAAU,CACZ,OAAO,IAET,IAAI,QAAQ,EAAO,CACjB,GAAW,GAEd,CACD,GAAkB,GAAuB,KAA8B,OAA0C,EAAE,CAA9B,GAA+B,CACpH,GAAkB,GAAuB,KAAiC,OAA6C,EAAE,CAAjC,GAAkC,CAC1H,GAAe,GAAuB,KAA2B,OAAuC,EAAE,CAA3B,GAA4B,CAC3G,GAAe,GAAuB,KAAuB,OAAmC,EAAE,CAAvB,GAAwB,CACnG,GAAqB,GAAU,GAAU,KACzC,GAA2B,OAAO,2BAA2B,CAC7D,GAAS,QAAU,GACnB,GAAS,MAAQ,GACjB,GAAS,WAAa,EAAQ,IAAY,CACxC,GAAI,CAAC,EACH,MAAO,GAET,EAAU,OAAO,OAAO,CACtB,OAAQ,GACR,OAAQ,GACR,YAAa,OACb,qBAAsB,IACvB,CAAE,EAAQ,CACX,GAA6B,EAAQ,qBAAqB,CAC1D,IAAM,EAAgB,GAAQ,EAAQ,UAAY,GAAkB,EAAO,GAAK,EAAI,EAAQ,iBAAmB,EAAO,KAAS,GACzH,EAAY,GAAsB,EAAQ,CAC1C,EAAa,EAAE,CACrB,IAAK,IAAM,KAAO,OAAO,KAAK,EAAO,CAC9B,EAAa,EAAI,GACpB,EAAW,GAAO,EAAO,IAG7B,IAAM,EAAO,OAAO,KAAK,EAAW,CAIpC,OAHI,EAAQ,OAAS,IACnB,EAAK,KAAK,EAAQ,KAAK,CAElB,EAAK,IAAK,GAAQ,CACvB,IAAM,EAAQ,EAAO,GAarB,OAZI,IAAU,IAAK,GACV,GAEL,IAAU,KACL,GAAO,EAAK,EAAQ,CAEzB,MAAM,QAAQ,EAAM,CAClB,EAAM,SAAW,GAAK,EAAQ,cAAgB,oBACzC,GAAO,EAAK,EAAQ,CAAG,KAEzB,EAAM,OAAO,EAAU,EAAI,CAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAE5C,GAAO,EAAK,EAAQ,CAAG,IAAM,GAAO,EAAO,EAAQ,EAC1D,CAAC,OAAQ,GAAMA,EAAE,OAAS,EAAE,CAAC,KAAK,IAAI,EAE1C,GAAS,UAAY,EAAK,IAAY,CACpC,EAAU,OAAO,OAAO,CACtB,OAAQ,GACT,CAAE,EAAQ,CACX,GAAM,CAAC,EAAM,GAAQ,GAAa,EAAK,IAAI,CAC3C,OAAO,OAAO,OACZ,CACE,IAAK,EAAK,MAAM,IAAI,CAAC,IAAM,GAC3B,MAAO,GAAM,GAAQ,EAAI,CAAE,EAAQ,CACpC,CACD,GAAW,EAAQ,yBAA2B,EAAO,CAAE,mBAAoB,GAAQ,EAAM,EAAQ,CAAE,CAAG,EAAE,CACzG,EAEH,GAAS,cAAgB,EAAQ,IAAY,CAC3C,EAAU,OAAO,OAAO,CACtB,OAAQ,GACR,OAAQ,IACP,IAA2B,GAC7B,CAAE,EAAQ,CACX,IAAM,EAAM,GAAW,EAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAM,GAC9C,EAAe,GAAS,QAAQ,EAAO,IAAI,CAC3C,EAAqB,GAAS,MAAM,EAAc,CAAE,KAAM,GAAO,CAAC,CAClEL,EAAQ,OAAO,OAAO,EAAoB,EAAO,MAAM,CACzD,EAAc,GAAS,UAAUA,EAAO,EAAQ,CACpD,AACE,IAAc,IAAI,IAEpB,IAAI,EAAO,GAAQ,EAAO,IAAI,CAI9B,OAHI,EAAO,qBACT,EAAO,IAAI,EAAQ,IAA4B,GAAO,EAAO,mBAAoB,EAAQ,CAAG,EAAO,sBAE9F,GAAG,IAAM,IAAc,KAEhC,GAAS,MAAQ,EAAO,EAAQ,IAAY,CAC1C,EAAU,OAAO,OAAO,CACtB,wBAAyB,IACxB,IAA2B,GAC7B,CAAE,EAAQ,CACX,GAAM,CAAE,MAAK,MAAA,EAAO,sBAAuB,GAAS,SAAS,EAAO,EAAQ,CAC5E,OAAO,GAAS,aAAa,CAC3B,MACA,MAAO,GAAaA,EAAO,EAAO,CAClC,qBACD,CAAE,EAAQ,EAEb,GAAS,SAAW,EAAO,EAAQ,IAAY,CAC7C,IAAM,EAAkB,MAAM,QAAQ,EAAO,CAAI,GAAQ,CAAC,EAAO,SAAS,EAAI,EAAI,EAAK,IAAU,CAAC,EAAO,EAAK,EAAM,CACpH,OAAO,GAAS,KAAK,EAAO,EAAiB,EAAQ,EAEnD,OAAO,aAAa,GAAQ,QAAQ,EAAI,OAAO,KAAK,GAAQ,QAAQ,CAAC,SAAW,IACtE,GAAQ,QAAQ,QAC5B,GAAY,GAAQ,QAAQ,MAChB,GAAQ,QAAQ,UAChB,GAAQ,QAAQ,SAC5B,GAAY,GAAQ,QAAQ,aAChB,GAAQ,QAAQ,KAChB,GAAQ,QAAQ,SAEP,GAAQ,SAElC,CAAC,CAyBE,GAAa,EAAM,CACrB,gEAAiE,CAC/D,IAAmB,CACnB,IAAU,CACV,IAAiB,CACjB,IAAiB,CACjB,GAAe,EAAe,EAAE,CAAE,IAAY,CAAC,CAC/C,GAAgB,GAAQ,GAAQ,GAAa,CAC7C,GAAuB,GAAe,CACpC,IAAM,EAAW,OAAO,GAAe,SACnC,EAAQ,EACR,IAAU,EAAQ,GAAW,EAAW,EAC5C,GAAc,SAAS,EAAO,EAAS,EAEzC,GAAc,QACL,CAAE,IAAK,KAAM,EACpB,CACF,GAAiB,GAAQ,IAAS,CAChC,WAAY,EACZ,MAAO,UACP,iBAAmB,GAAY,EAAI,CAAE,WAAY,EAAS,CAAC,CAC5D,EAAE,CACH,GAAa,GACX,GACE,CAAE,aAAcM,GAAqB,KAAM,OAAQ,kBAAmB,EAAG,CACxE,IAAS,CACR,gBAAkB,GAAO,EAAK,IAAW,CAAE,aAAc,EAAI,EAAE,CAC/D,QAAU,GAAS,EAAK,GAAU,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,KAAM,EAAM,CAAC,CAAC,CAC3F,qBAAuB,GAAS,EAAK,GAAU,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,kBAAmB,EAAM,CAAC,CAAC,CACtH,EACF,CACF,CACD,GAAgB,GAAQ,IAAS,CAC/B,MAAO,CAAE,UAAW,EAAG,KAAM,KAAM,CACnC,SAAW,GAAY,EAAK,IAAU,CAAE,MAAO,EAAe,EAAe,EAAE,CAAE,EAAK,MAAM,CAAE,EAAQ,CAAE,EAAE,CAC3G,EAAE,CACH,GAA0B,GAAQ,IAAS,CACzC,gBAAiB,OACjB,mBAAqB,GAAY,EAAK,IAAW,CAAE,gBAAiB,EAAS,EAAE,CAChF,EAAE,EAEN,CAAC,IC/qBF,SAAS,GAAc,EAAM,CAE3B,EAAO,QAAQ,UACb,CACE,SAAU,CACR,GAAU,EAAO,QAAQ,OAA6B,UAAa,EAAE,CACrE,EAAO,SAAS,OAAS,EAC1B,CACF,CACD,SAAS,MACT,EACD,gCAlB2B,KAGA,IAGM,CAehC,GAAqB,EAAM,CAC7B,wEAAyE,CACvE,IAAmB,CACnB,IAAY,CACZ,GAAiB,EAAU,EAAe,OAAS,CAKjD,IAAM,EAAc,GAJHE,EACd,GAAiB,EAAM,KAAc,OAAgC,EAAlB,EAAM,GAC1D,CAAC,EAAU,EAAa,CACzB,CAC0C,CACrC,EAAkBA,EACrB,GAAa,GAAc,SAAS,EAClC,GAAW,EAAS,GAAc,UAAU,CAAC,GAAU,CACzD,CAAC,CACF,CAAC,EAAS,CACX,CAyBD,MAAO,CAAC,EAxBcA,EACnB,GAAW,CACV,EAAiB,IACX,OAAO,GAAW,aACpB,EAAS,EAAO,GAAgB,EAAa,EAE3C,OAAO,SAAS,EAAO,GACzB,EAAS,WAAW,EAAO,QAAQ,EAAE,CAAC,EAExC,eAAiB,CACf,IAAMC,EAAQ,GAAc,UAAU,CACtC,GACE,GAEE,CAAE,IAAK,EAAO,SAAS,SAAU,MAAA,EAAO,CACxC,CAAE,SAAU,GAAM,YAAa,QAAS,CACzC,CACF,EACA,EAAE,CACE,GACP,EAEJ,CAAC,EAAgB,CAClB,CACkC,EAErC,OACyB,GAAW,CAChC,eAAiB,CACf,IAAMA,EAAQ,GAAc,UAAU,CACtC,GACE,GACE,CAAE,IAAK,EAAO,SAAS,SAAU,MAAA,EAAO,CACxC,CAAE,SAAU,GAAM,YAAa,QAAS,CACzC,CACF,EACA,EAAE,CACL,IAAM,EAAQ,GAAU,EAAQ,CAC9B,aAAc,GACd,cAAe,GACf,YAAa,QACd,CAAC,CACF,GAAc,SAAS,EAAM,GAKpC,CAAC,ICtEF,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAO,CACb,IAAIC,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CACxD,EAAkB,GAAY,GAAU,EAAM,gBAAgB,CAC9D,EAAgB,IAAkB,CACxC,OAAuB,EACrBE,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,OAAQ,UAAW,CAAC,CACtE,YAAe,CACb,IAAI,EACJ,AACE,EADE,IAAiB,EAGJ,GAAQ,OAAS,EAFjB,EAAe,EAIhC,EAAgB,EAAa,CAC7B,EAAc,GAAQ,GAAc,IAAI,EAE3C,CAAC,CACH,EAGL,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAO,CACb,IAAIF,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CACxD,EAAkB,GAAY,GAAU,EAAM,gBAAgB,CAC9D,EAAgB,IAAkB,CACxC,OAAuB,EACrBE,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,OAAQ,UAAW,CAAC,CACtE,YAAe,CACb,QAAQ,IAAI,UAAU,CACtB,IAAI,EACJ,AACE,EADE,IAAiB,GAAQ,OAAS,EAGrB,EAFA,EAAe,EAIhC,EAAgB,EAAa,CAC7B,EAAc,GAAQ,GAAc,IAAI,EAE3C,CAAC,CACH,EAGL,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAU,CAChB,IACM,EAAkB,GAAY,GAAU,EAAM,gBAAgB,CAC9D,EAAgB,IAAkB,CAKxC,OAJA,MAAgB,CACd,EAAgB,EAAoB,CACpC,EAAc,GAAQ,GAAqB,IAAI,EAC9C,EAAE,CAAC,CACiB,EAAIA,EAAW,EAAe,EAAE,CAAE,EAAM,CAAC,EAGpE,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAO,CACb,IAAIF,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CAC9D,OAAuB,EAAcE,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,IAAK,EAAc,QAAS,IAAI,IAAgB,CAAC,CAAC,EAGjJ,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAO,CACb,IAAIF,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CACxD,EAAc,GAAQ,GAAc,MAC1C,OAAuB,EAAcE,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,IAAK,EAAc,QAAS,EAAa,CAAC,CAAC,EAG1I,SAAS,GAAuB,EAAW,CACzC,MAAQ,IAAU,CAChB,IAAM,EAAMC,EAAO,KAAK,CAClB,EAAW,GAAY,GAAU,EAAM,SAAS,CAChD,CAAC,EAAS,GAAcC,EAAS,EAAM,QAAQ,CAgBrD,OAfA,MAAgB,CACd,IAAM,EAAsB,GAAU,CAChC,GACA,EAAI,SAAW,CAAC,EAAI,QAAQ,SAAS,EAAM,OAAO,GACpD,EAAW,SAAS,CACpB,eAAiB,CACf,EAAW,EAAM,QAAQ,EACxB,IAAI,GAIX,OADA,SAAS,iBAAiB,YAAa,EAAmB,KAC7C,CACX,SAAS,oBAAoB,YAAa,EAAmB,GAE9D,CAAC,EAAU,EAAM,QAAQ,CAAC,CACN,EACrBF,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,IAAK,EACL,MACA,UACD,CAAC,CACH,EAUL,SAAS,GAAe,EAAW,CACjC,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAoB,GAAU,EAAM,YAAY,CACpE,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,OAAQ,OAAS,EAAY,GAAG,GAAK,KAAO,EAAY,GAAG,GAAK,KAAO,EAAY,GAAG,GAAK,IAC3F,OAAQ,OAAS,EAAY,GAAG,GAAK,KAAO,EAAY,GAAG,GAAK,KAAO,EAAY,GAAG,GAAK,IAC3F,OAAQ,OAAS,EAAY,GAAG,GAAK,KAAO,EAAY,GAAG,GAAK,KAAO,EAAY,GAAG,GAAK,IAC5F,CAAC,CACH,EAGL,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAoB,GAAU,EAAM,YAAY,CACpE,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,KAAM,GAAG,GACP,EAAY,GAAG,GACf,EAAY,GAAG,GACf,EAAY,GAAG,GAChB,CAAC,KAAK,GACL,EAAY,GAAG,GACf,EAAY,GAAG,GACf,EAAY,GAAG,GAChB,CAAC,KAAK,GACL,EAAY,GAAG,GACf,EAAY,GAAG,GACf,EAAY,GAAG,GAChB,GACF,CAAC,CACH,EAGL,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAU,CAChB,IAAM,EAAiB,GAAoB,GAAU,EAAM,eAAe,CAC1E,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,WAAY,CAAE,MAAO,KAAM,CAC3B,YAAe,CACb,QAAQ,IAAI,UAAU,CACtB,EAAe,CACb,CAAC,GAAa,IAAI,CAAE,GAAa,IAAI,CAAE,GAAa,IAAI,CAAC,CACzD,CAAC,GAAa,IAAI,CAAE,GAAa,IAAI,CAAE,GAAa,IAAI,CAAC,CACzD,CAAC,GAAa,IAAI,CAAE,GAAa,IAAI,CAAE,GAAa,IAAI,CAAC,CAC1D,CAAC,EAEL,CAAC,CACH,EAGL,SAAS,GAAK,EAAW,CACvB,MAAQ,IAAU,CAChB,IAAM,EAAU,GAAoB,GAAU,EAAM,OAAO,CACrD,CAAC,EAAM,GAAWE,EAAS,EAAE,CAC7B,CAAC,EAAK,GAAUA,EAAS,EAAE,CAC3B,CAAC,EAAU,GAAeA,EAAS,EAAE,CAM3C,OALA,MAAgB,CACd,EAAY,IAAM,EAAU,IAAI,CAChC,EAAQ,EAAI,KAAK,MAAM,EAAW,GAAG,CAAC,CACtC,EAAO,KAAK,MAAM,EAAW,GAAG,CAAC,EAChC,CAAC,EAAQ,CAAC,CACU,EACrBF,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,KAAM,EAAM,GAAK,GAAG,EAAK,IAAI,IAAQ,GAAG,EAAK,GAAG,IACjD,CAAC,CACH,EAGL,SAAS,GAAO,EAAW,CACzB,MAAQ,IAAU,CAChB,IAAM,EAAY,GAAoB,GAAU,EAAM,UAAU,CAChE,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,SAAW,GAAM,CACf,EAAUG,EAAE,EAEf,CAAC,CACH,EAIL,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAU,CAChB,IAAM,EAAU,GAAoB,GAAU,EAAM,OAAO,CAC3D,IAAI,EAAW,GAAW,EAAM,cAAc,CAC1C,EAAW,GAAW,EAAM,cAAc,CAC1C,EAAW,GAAW,EAAM,cAAc,CAC1C,EAAU,GAAW,EAAM,aAAa,CACxC,EAAU,GAAW,EAAM,aAAa,CACxC,EAAU,GAAW,EAAM,aAAa,CAE5C,MADc,GAAS,KAAK,MAAM,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IAAI,CAAU,KAAK,MAAM,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IAAI,CAAU,KAAK,MAAM,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IAAI,CAChO,EACrBH,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,cAAe,OAAS,KAAK,MAC3B,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,KAAO,KAAK,MACd,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,KAAO,KAAK,MACd,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,IACJ,cAAe,OAAS,KAAK,MAC3B,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,KAAO,KAAK,MACd,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,KAAO,KAAK,MACd,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,IACJ,cAAe,OAAS,KAAK,MAC3B,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,KAAO,KAAK,MACd,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,KAAO,KAAK,MACd,EAAS,IAAM,EAAS,GAAK,EAAQ,IAAM,EAAU,IACtD,CAAG,IACL,CAAC,CACH,EAGL,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAU,CAChB,IAAM,EAAS,GAAoB,GAAU,EAAM,OAAO,CAC1D,OAAuB,EAAIA,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,QAAS,IAAW,GAAO,SAAW,UAAW,CAAC,CAAC,EAGxI,SAAS,GAAY,EAAW,CAC9B,MAAQ,IACiB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,CACL,MAAO,mBACP,WAAY,UACZ,aAAc,WACf,CACF,CAAC,CACH,CAGL,SAAS,GAAqB,EAAW,CACvC,MAAQ,IAAU,CAChB,IAAM,EAAW,GAAY,GAAU,EAAM,SAAS,CACtD,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,cAAe,IAAa,GAAO,OAAS,OAC7C,CAAC,CACH,EAGL,SAAS,GAAmB,EAAW,CACrC,MAAQ,IAAU,CAChB,IAAM,EAAW,GAAY,GAAU,EAAM,SAAS,CAChD,EAAc,GAAY,GAAU,EAAM,YAAY,CAC5D,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,IAAa,GAAO,UAAY,UACzC,YAAe,CACb,EAAY,CAAC,EAAS,EAEzB,CAAC,CACH,EAGL,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAU,CAChB,IAAM,EAAW,GAAY,GAAU,EAAM,SAAS,CACtD,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,CAAE,QAAS,IAAa,GAAO,OAAS,OAAQ,CACxD,CAAC,CACH,8BAvTyB,KAGA,KAIA,KAKA,IAGsB,IACZ,CA4GpC,GAAgB,GACX,KAAK,MAAM,KAAK,QAAQ,CAAG,EAAI,CAEpC,IAAY,EAAG,EAAG,IAAM,IAAM,CAACI,EAAGC,EAAGC,EAAE,CAAC,IAAK,GAAM,CACrD,IAAM,EAAMC,EAAE,SAAS,GAAG,CAC1B,OAAO,EAAI,SAAW,EAAI,IAAM,EAAM,GACtC,CAAC,KAAK,GAAG,CAwFP,GAAc,GAAW,GAAiC,MAAM,OAAO,CAAC,IAAI,OAAO,wBC3NnF,GAAwB,4CACxB,GAAyB,4CACzB,GAAqB,2DCOzB,SAAS,GAAW,EAAO,EAAc,MAAO,EAAU,EAAE,CAAE,CAC5D,GAAM,CAAE,SAAQ,SAAS,IAAK,QAAO,UAAU,IAAS,EAClD,EAAW,GAAkB,GAAU,EAAM,SAAS,CACtD,CAAC,EAAM,GAAWC,EAAS,EAAE,CAAC,CAC9B,CAACC,EAAS,GAAcD,EAAS,GAAM,CACvC,CAACE,EAAO,GAAYF,EAAS,KAAK,CAClC,EAAc,IAAY,CAAC,GAAU,EAAO,QAAU,IAAK,IAAK,EAAO,QAAU,MACvF,MAAgB,CACd,GAAI,CAAC,EAAU,CACb,QAAQ,IAAI,mDAAmD,CAC/D,OAEF,GAAI,CAAC,EAAa,CAChB,QAAQ,IACN,mCAAmC,EAAM,4BACzC,GAAiC,MAClC,CACD,OAEsB,EAAQ,KAAM,KAAM,WAAa,CACvD,QAAQ,IACN,yCAAyC,IACzC,EAAS,gBAAgB,EAAO,OAAO,GAAG,EAAO,QAAU,GAC5D,CACD,EAAW,GAAK,CAChB,EAAS,KAAK,CACd,GAAI,CACF,IAAIG,EAAQ,EAAS,KAAK,EAAM,CAAC,OAAO,EAAO,CAAC,MAAM,KAAM,CAAE,UAAW,GAAO,CAAC,CAC7E,IACF,EAAQA,EAAM,GAAG,EAAO,OAAQ,EAAO,MAAM,EAE3C,IACF,EAAQA,EAAM,MAAM,EAAM,EAE5B,GAAM,CAAE,OAAM,MAAO,GAAe,MAAMA,EACtC,GACF,QAAQ,MAAM,+BAA+B,EAAM,GAAI,EAAW,CAClE,EAAS,EAAW,CACpB,EAAQ,EAAE,CAAC,GAEX,QAAQ,IACN,wBAAyB,GAA6B,QAAW,EAAE,aAAa,IACjF,CACD,EAAQ,GAAQ,EAAE,CAAC,QAEd,EAAK,CACZ,QAAQ,MAAM,0CAA0C,EAAM,GAAI,EAAI,CACtE,EAAS,EAAI,QACL,CACR,EAAW,GAAM,GAEnB,EAED,CACD,EACA,EACA,GAAiC,OACjC,GAAiC,MACjC,EACA,EACA,EACD,CAAC,CACF,MAAgB,CACd,GAAI,CAAC,GAAY,CAAC,EAAa,OAC/B,IAAM,EAAiB,EAAS,GAAG,EAAO,OAAO,MAAM,EAAO,QAAU,IAAK,GAC7E,QAAQ,IACN,wCAAwC,EAAY,cAAc,IAClE,EAAiB,gBAAgB,IAAmB,GACrD,CACD,IAAM,EAAU,EAAS,QAAQ,EAAY,CAAC,GAC5C,mBACA,CACE,MAAO,IACP,OAAQ,SACR,QACA,OAAQ,EAET,CACA,GAAY,CAOX,OALA,QAAQ,IACN,4CAA4C,EAAM,GAClD,EAAQ,UACT,CACiB,EAAQ,UAC1B,CACE,IAAK,SACH,QAAQ,IAAI,0BAA0B,EAAM,GAAI,EAAQ,IAAI,CAC5D,EAAS,GAAS,CAAC,EAAQ,IAAK,GAAG,EAAK,CAAC,CACzC,MACF,IAAK,SACH,QAAQ,IAAI,0BAA0B,EAAM,GAAI,EAAQ,IAAI,CAC5D,EACG,GAAS,EAAK,IACZ,GAAQ,EAAI,KAAO,EAAQ,IAAI,GAAK,EAAQ,IAAM,EACpD,CACF,CACD,MACF,IAAK,SACH,QAAQ,IACN,0BAA0B,EAAM,OAC1B,EAAQ,KAA2B,GAC1C,CACD,EAAS,GAAS,EAAK,OAAQ,GAAQ,EAAI,KAAO,EAAQ,IAAI,GAAG,CAAC,CAClE,QAGP,CAAC,UAAW,GAAW,CACtB,QAAQ,IACN,wCAAwC,EAAY,GACpD,EACD,EACD,CACF,UAAa,CACX,QAAQ,IAAI,4CAA4C,IAAc,CACtE,EAAS,cAAc,EAAQ,GAEhC,CAAC,EAAU,EAAO,EAAa,GAAiC,OAAQ,GAAiC,MAAO,EAAY,CAAC,CAChI,IAAM,EAAYE,EACf,GAAY,EAAQ,KAAM,KAAM,WAAa,CAC5C,GAAI,CAAC,EAEH,OADA,QAAQ,MAAM,uDAAuD,CAC9D,CAAE,MAAW,MAAM,2BAA2B,CAAE,CAEzD,QAAQ,IAAI,gCAAgC,EAAM,GAAI,EAAQ,CAC9D,IAAMD,EAAK,EAAS,CAAE,MAAOA,EAAI,EAAO,GAAUA,EAAI,CAAC,KAAK,CAAC,CACvD,CAAE,MAAO,EAAa,KAAM,GAAW,MAAM,EAAS,KAAK,EAAM,CAAC,OAAO,EAAK,CAAC,GAAG,KAAM,EAAG,CAAC,QAAQ,CASxG,OARE,GACF,QAAQ,MACN,sCAAsC,EAAM,GAC5C,EACD,CACM,CAAE,MAAO,EAAa,GAE7B,QAAQ,IAAI,+BAA+B,EAAM,GAAI,EAAO,CACrD,CAAE,KAAM,EAAQ,GAEzB,CACF,CAAC,EAAU,EAAM,CAClB,CA2CD,MAAO,CAAE,OAAM,QAAA,EAAS,MAAA,EAAO,UA1CbC,EACf,GAAS,EAAQ,KAAM,KAAM,WAAa,CACzC,GAAI,CAAC,EAEH,OADA,QAAQ,MAAM,uDAAuD,CAC9D,CAAE,MAAW,MAAM,2BAA2B,CAAE,CAEzD,QAAQ,IAAI,mCAAmC,EAAM,GAAI,EAAK,CAC9D,GAAM,CAAE,MAAO,EAAa,KAAM,GAAW,MAAM,EAAS,KAAK,EAAM,CAAC,OAAO,EAAK,CAAC,QAAQ,CAS3F,OARE,GACF,QAAQ,MACN,yCAAyC,EAAM,GAC/C,EACD,CACM,CAAE,MAAO,EAAa,GAE7B,QAAQ,IAAI,kCAAkC,EAAM,GAAI,EAAO,CACxD,CAAE,KAAM,EAAQ,GAEzB,CACF,CAAC,EAAU,EAAM,CAClB,CAsByC,YAAW,UArBnCA,EACf,GAAO,EAAQ,KAAM,KAAM,WAAa,CACvC,GAAI,CAAC,EAEH,OADA,QAAQ,MAAM,uDAAuD,CAC9D,CAAE,MAAW,MAAM,2BAA2B,CAAE,CAEzD,QAAQ,IAAI,kCAAkC,EAAM,OAAQ,EAAG,CAC/D,GAAM,CAAE,MAAO,GAAgB,MAAM,EAAS,KAAK,EAAM,CAAC,QAAQ,CAAC,GAAG,KAAM,EAAG,CAS7E,OARE,GACF,QAAQ,MACN,wCAAwC,EAAM,GAC9C,EACD,CACM,CAAE,MAAO,EAAa,GAE7B,QAAQ,IAAI,iCAAiC,IAAQ,CAC9C,CAAE,QAAS,GAAM,GAE1B,CACF,CAAC,EAAU,EAAM,CAClB,CAC+D,oBA9LpC,KAIA,IAG2B,ICIzD,SAAS,GAAqB,EAAU,EAAO,CAC7C,OAAO,EAAQ,KAAM,KAAM,WAAa,CAElC,MAAC,GAAY,CAAC,GAClB,GAAI,CACF,GAAM,CAAE,OAAM,MAAA,GAAU,MAAM,EAAS,KAAK,OAAO,CACjD,QACA,SAAU,OAAO,YAAY,CAC9B,CAAC,CACF,GAAIG,EAAO,CACT,GAAUA,EAAM,SAA+B,SAAS,qBAAqB,CAAE,CAC7E,QAAQ,IACN,0DACA,EACD,CACD,OAEF,QAAQ,MAAM,gCAAiCA,EAAM,QAAQ,CAC7D,OAEF,QAAQ,IACN,iDACM,GAA6B,MAA4B,GAChE,OACM,EAAK,CACZ,QAAQ,MAAM,2CAA4C,EAAI,GAEhE,CAEJ,SAAS,IAAsB,CAC7B,GAAM,CAAC,GAAU,GAAU,sBAAsB,CAC3C,EAAW,GAAkB,GAAU,EAAM,SAAS,CACtD,EAAYC,EAAO,GAAM,CAC/B,MAAgB,CACT,GAAiC,OAAU,GAAY,CAAC,EAAU,UACrE,EAAU,QAAU,GACpB,GAAqB,EAAU,EAAO,MAAM,GAE7C,CAAC,GAAiC,MAAO,EAAS,CAAC,CAExD,SAAS,GAAU,EAAU,gBAAiB,CAE5C,GAAM,CAACC,GAAS,IAAU,CACpB,EAAsBA,EAAM,MAA4B,GAC9D,QAAQ,IAAI,6BAA8B,EAAc,CACxD,GAAM,CAAE,OAAM,QAAS,GAAc,GAAW,QAAS,EAAS,CAChE,OAAQ,CAAE,OAAQ,gBAAiB,MAAO,EAAe,CACzD,OAAQ,yDACR,MAAO,EACP,QAAS,CAAC,CAAC,EAEZ,CAAC,CACI,EAAY,EAAK,IAAM,KAE7B,OADA,QAAQ,IAAI,yBAA0B,EAAU,CACzC,CAAC,EAAW,EAAU,CAE/B,SAAS,GAAgB,EAAO,CAC9B,GAAM,CAAC,EAAQ,GAAiB,IAAW,CACrC,EAAS,GAAiC,GAChD,QAAQ,IAAI,4BAA6B,EAAO,CAChD,GAAM,CACJ,KAAM,EACN,QAAS,EACT,MAAA,GACE,GAAW,gBAAiB,EAAO,CACrC,OAAQ,CAAE,OAAQ,UAAW,MAAO,EAAQ,CAE5C,OAAQ,IACR,QAAS,CAAC,CAAC,EAEZ,CAAC,CACF,QAAQ,IAAI,sCAAuC,EAAiB,CAChEF,GACF,QAAQ,MAAM,2BAA4BA,EAAM,CAElD,IAAMG,EAAe,EAAiB,KAAM,GAAMC,EAAE,SAAW,SAAS,CAExE,OADA,QAAQ,IAAI,yCAA0CD,EAAa,CAC5D,CAACA,EAAc,GAAiB,EAAU,CAEnD,SAAS,GAAiB,CAAE,WAAU,YAAW,gBAAgB,CAE/D,IAAM,GAAwB,SAAS,eAAe,iBAAiB,EAAwB,SAAS,KAA0B,SAAS,GAC3I,GAAI,CAAC,EAAW,CACd,QAAQ,KAAK,8CAA8C,CAC3D,OAEF,GAAM,CAAE,QAAO,UAAW,EAAU,uBAAuB,CAC3D,EAAS,KAAK,MAAM,EAAQ,EAAa,CAAC,CAC1C,EAAU,KAAK,MAAM,EAAS,EAAa,CAAC,CAE9C,SAAS,GAAa,CACpB,SACA,WACA,YACA,YACA,cACC,CACD,IAAME,EAAI,IAAW,OAAS,OAAS,KACjC,EAAW,IAAM,IAEjB,GADe,GAAa,GAAc,EAAY,GAAK,EAAa,EAAI,EAAY,EAAa,GACrE,EAChC,EAAc,IAAW,MAAiB,GAAgB,GAAO,EACjE,EAAQA,EAAI,EAAW,EAAY,EACzC,OAAO,KAAK,MAAM,EAAQ,GAAG,CAAG,GAElC,SAAS,GAAa,EAAkB,EAAQ,CAC9C,GAAI,CAAC,EAAkB,OAAOC,EAG9B,IAAI,EAAaA,GAFiB,IAAI,MAAM,CACf,SAAS,CAAG,IAAI,KAAK,EAAiB,CAAC,SAAS,GACrC,IAAM,KAAO,IAErD,OADI,EAAa,EAAU,EACpB,KAAK,MAAM,EAAW,CAE/B,SAAS,IAAkB,CACzB,GAAM,EAAG,GAAY,IAAU,CAC/B,MAAgB,CACd,QAAQ,IAAI,sDAAsD,CAClE,OAAO,YAAY,CAAE,cAAe,CAAE,KAAM,WAAY,CAAE,CAAE,IAAI,CAChE,UAAa,GAAU,CAErB,IAAM,EAAM,EAAM,KAAK,cAClB,KAEL,OADA,QAAQ,IAAI,iDAAkD,EAAI,KAAK,CAC/D,EAAI,KAAZ,CACE,IAAK,YACH,QAAQ,IACN,qCACA,EAAI,UAAU,OACd,aACA,EAAI,UACJ,IACA,EAAI,WACL,CACD,EAAS,CACP,UAAW,EAAI,UAAU,OACzB,UAAW,EAAI,WAAa,EAC5B,WAAY,EAAI,YAAc,EAC/B,CAAC,CACF,MACF,IAAK,YACH,QAAQ,IAAI,wCAA+C,EAAI,MAA4B,GAAG,CAC9F,EAAS,CAAE,KAAM,EAAI,KAAM,CAAC,CAC5B,MACF,IAAK,cACH,QAAQ,IAAI,0CAA2C,EAAI,WAAW,CACtE,EAAS,CAAE,WAAY,EAAI,WAAY,CAAC,CACxC,MACF,QACE,SAGL,CAAC,EAAS,CAAC,CAEhB,SAAS,GAAM,EAAK,CAClB,OAAO,IAAI,QAAS,GAAY,WAAWC,EAAS,EAAM,IAAI,CAAC,CAEjE,SAAS,GAAU,EAAK,CACtB,OAAO,EAAQ,KAAM,KAAM,WAAa,CACtC,IAAM,EAAQ,IAAI,MAMlB,MALA,GAAM,IAAM,EACZ,MAAM,IAAI,SAAS,EAAS,IAAW,CACrC,EAAM,OAASA,EACf,EAAM,QAAU,GAChB,CACK,GACP,CAEJ,SAAS,GAAe,EAAK,CAC3B,GAAI,CACF,GAAI,CAAC,EAAI,MAAM,CAAC,WAAW,OAAO,CAChC,OAAO,KAET,IAAM,EAAY,IAAI,IAAI,EAAI,CACxB,EAAS,IAAI,gBAAgB,EAAU,OAAO,CAChD,EAAa,EAAE,CAWnB,OAVA,EAAO,SAAS,EAAO,IAAQ,CAC7B,IAAI,EAAiB,EACrB,AAGE,EAHE,IAAU,QAAU,IAAU,SAAW,CAAC,MAAM,OAAO,EAAM,CAAC,EAAI,IAAU,GAC7D,IAAI,EAAM,GAEV,IAAI,EAAM,GAE7B,EAAW,KAAK,GAAG,EAAI,GAAG,IAAiB,EAC3C,CAEK;IADgB,EAAW,KAAK;IAAO,CAE/B;UAERP,EAAO,CAEd,OADA,QAAQ,MAAM,qBAAsBA,EAAM,CACnC,gCAzMmB,KAIA,KAGA,IAGY,CAkMtC,GAAmB,GAAS,CAC9B,GAAI,EAAU,WAAa,EAAO,gBAAiB,CACjD,EAAU,UAAU,UAAU,EAAK,CAAC,SAC5B,QAAQ,IAAI,wCAAwC,CACzD,GAAQ,QAAQ,MAAM,4BAA6B,EAAI,CACzD,CACD,OAEF,IAAM,EAAW,SAAS,cAAc,WAAW,CACnD,EAAS,MAAQ,EACjB,EAAS,MAAM,SAAW,QAC1B,EAAS,MAAM,QAAU,IACzB,SAAS,KAAK,YAAY,EAAS,CACnC,EAAS,OAAO,CAChB,EAAS,QAAQ,CACjB,GAAI,CACiB,SAAS,YAAY,OAAO,EAE7C,QAAQ,MAAM,uCAAuC,OAEhD,EAAK,CACZ,QAAQ,MAAM,qCAAsC,EAAI,QAChD,CACR,SAAS,KAAK,YAAY,EAAS,MC3MvC,SAAS,GAAS,EAAW,CAC3B,MAAQ,IAAU,CAChB,GAAM,CAACQ,EAAc,GAAgB,GAAgB,mBAAmB,CAClE,CAAC,GAAU,GAAU,UAAU,CACrC,IAAqB,CACrB,QAAQ,IAAI,2BAA4BA,EAAa,CACrD,QAAQ,IAAI,qBAAsB,EAAO,CACzC,IAAI,EAAU,UAMd,MALA,CACkB,EADd,EAAwB,UAClB,EACDA,EAAwB,MAClB,OAFa,SAG5B,QAAQ,IAAI,iCAAkC,EAAQ,CAC/B,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAa,GAAG,GAAmB,mBAAmB,mBACpD,GAAiC,MAClC,GACD,MAAO,EAAS,GAAG,GAAiC,QAAU,GAC9D,UACD,CAAC,CACH,EAGL,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAU,CAChB,GAAM,CAACC,GAAS,IAAU,CACpB,CAAC,GAAU,IAAW,CACtB,CAAC,GAAmB,IAAoB,CACxC,EAAW,IAAoB,OACrC,OAAuB,EACrBD,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAe,CAEb,EAAO,KACL,GAAG,EAAW,GAAwB,GAAuB,mBAAmB,mBAC9E,GAAiC,MAClC,CAAC,uBAA6BC,EAAM,MAA4B,KAClE,EAEJ,CAAC,CACH,EAGL,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAU,CAChB,GAAM,CAACF,GAAgB,GAAgB,EAAM,oBAAoB,CACjE,GAAIA,EAAc,OAAuB,EAAIC,EAAW,EAAe,EAAE,CAAE,EAAM,CAAC,EAGtF,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAU,CAChB,GAAM,CAACD,GAAgB,GAAgB,EAAM,oBAAoB,CACjE,OAAuB,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,KAAMD,EAAe,YAAc;cAEpC,CAAC,CACH,EAGL,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAU,CAChB,GAAM,CAAC,GAAU,IAAW,CAC5B,OAAuB,EAAIC,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,KAAO,GAAiC,OAAU,GAAI,CAAC,CAAC,EAG7I,SAAS,GAAiB,EAAW,CACnC,MAAQ,IAAU,CAChB,GAAM,EAAG,GAAsB,IAAoB,CACnD,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,cAAiB,EAAmB,QAAQ,CAC5C,aAAgB,EAAmB,OAAO,CAC3C,CAAC,CACH,EAGL,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAU,CAChB,GAAM,CAAC,GAAmB,IAAoB,CAC9C,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,IAAoB,OAAS,OAAS,QAChD,CAAC,CACH,EAGL,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAU,CAChB,GAAM,CAAC,GAAmB,IAAoB,CACxC,EAAW,IAAoB,OACrC,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,KAAM,EAAW,qBAA4B,qBAC9C,CAAC,CACH,EAGL,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAU,CAEhB,GAAM,CAACC,GAAS,IAAU,CACpB,EAAsBA,EAAM,MAA4B,GACxD,EAAW,GAAkB,GAAU,EAAM,SAAS,CACtD,CAAE,aAAc,GAAW,QAAS,aAAc,CACtD,QAAS,GAEV,CAAC,CACF,OAAuB,EACrBD,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,SAAW,GAAU,CACnB,GAAI,CAAC,EAAe,CAClB,QAAQ,MAAM,wCAAwC,CACtD,OAEF,EAAU,CAAE,QAAO,gBAAe,iBAAkC,IAAI,KAAQ,CAAC,CACjF,GAAqB,EAAU,EAAM,CACrC,GAA+B,UAAU,EAE5C,CAAC,CACH,yBAtJyB,KAMA,KAGA,KAKA,KAIA,IAGU,kBCxBpC,GAAoB,CACtB,UAAW,MACX,QAAS,MACT,QAAS,GACT,oBAAqB,GACrB,0BAA2B,IAC3B,6BAA8B,IAC9B,eAAgB,GAEhB,cAAe,EACf,YAAa,EACb,yBAA0B,IAC1B,oBAAqB,IACrB,aAAc,EACd,yBAA0B,EAE1B,0BAA2B,EAC3B,wBAAyB,EAEzB,mBAAoB,GACpB,kBAAmB,EACnB,yBAA0B,EAE1B,wBAAyB,IACzB,kBAAmB,GACnB,eAAgB,GAChB,wBAAyB,EAC1B,IC3BD,SAAS,GAAa,EAAkB,IAAK,CAC3C,IAAI,EAAS,EACT,EAAW,IAAI,WAAW,EAAgB,CAC9C,MAAO,CACL,IAAI,QAAS,CACX,OAAO,EAAS,QAElB,OAAQ,CACN,EAAS,GAEX,WAAY,CACV,OAAO,EAAS,SAAS,EAAG,EAAO,EAErC,OAAQ,CACN,OAAO,EAAS,MAAM,EAAG,EAAO,EAElC,UAAU,EAAM,CACd,EAAO,EAAS,EAAE,CAClB,EAAS,GAAU,EACnB,KAEF,WAAW,EAAM,EAAS,EAAG,EAAa,EAAK,OAAQ,CACrD,EAAO,EAAS,EAAW,CAC3B,IAAK,IAAIG,EAAI,EAAGA,EAAI,EAAY,IAC9B,EAAS,KAAY,EAAKA,EAAI,IAGlC,eAAe,EAAM,EAAS,EAAG,EAAa,EAAK,WAAY,CAC7D,EAAO,EAAS,EAAW,CAC3B,EAAS,IAAI,EAAK,SAAS,EAAQ,EAAS,EAAW,CAAE,EAAO,CAChE,GAAU,GAEb,CACD,SAAS,EAAO,EAAa,CAC3B,IAAI,EAAe,EAAS,OAC5B,GAAI,GAAgB,EAAa,OAEjC,EAAc,KAAK,IACjB,EACA,GAAgB,EAHU,KAAO,KAGsB,EAAI,SAAW,EACvE,CACG,GAAgB,IAAG,EAAc,KAAK,IAAI,EAAa,IAAI,EAC/D,IAAM,EAAc,EACpB,EAAW,IAAI,WAAW,EAAY,CAClC,EAAS,GAAG,EAAS,IAAI,EAAY,SAAS,EAAG,EAAO,CAAE,EAAE,qBCnBpE,SAAS,GAAU,EAAO,EAAQ,EAAQ,EAAY,EAAY,GAAa,IAAI,CAAE,EAAQ,IAAI,WAAW,IAAI,CAAE,EAAO,IAAI,WAAW,GAAc,CAAE,EAAU,IAAI,WAAW,GAAc,CAAE,CAC/L,IAAM,EAAQ,EAAK,OACb,EAAe,KAAK,IAAI,EAAG,EAAW,CAC5C,EAAM,KAAK,EAAE,CACb,EAAQ,KAAK,EAAE,CACf,EAAK,KAAK,GAAG,CACb,IAAI,EAAY,EACZ,EAAW,EACT,EAAY,EAAe,EAC3B,EAAc,EAChB,EAAY,GACZ,EAAS,EACT,GAAW,GAAK,GAAU,EACxB,EAAY,GAAK,EAAY,EAC7B,EAAU,EAAY,EACxB,EAAW,EAAY,EACvB,EAAU,EACV,EAAM,EAAO,GACb,EAAS,EACb,IAAK,IAAI,EAAQ,EAAO,EAAQ,MAAO,GAAS,EAC9C,EAAE,EAEJ,EAAS,EAAI,EACb,EAAU,UAAU,EAAa,CACjC,EAAO,EAAU,CACjB,IAAM,EAAS,EAAO,OACtB,IAAK,IAAI,EAAM,EAAG,EAAM,EAAQ,IAC9B,WAAY,CACV,IAAMC,EAAI,EAAO,GACX,GAASA,GAAK,IAAQ,EACxBC,EAAID,GAAK,EAAS,EACtB,GAAI,EAAKC,KAAO,EAAO,CACrB,EAAM,EAAQA,GACd,MAAM,WAER,IAAM,EAAOA,IAAM,EAAI,EAAI,EAAQA,EACnC,KAAO,EAAKA,IAAM,GAGhB,GAFA,GAAK,EACDA,EAAI,IAAG,GAAK,GACZ,EAAKA,KAAO,EAAO,CACrB,EAAM,EAAQA,GACd,MAAM,WAGV,EAAO,EAAI,CACX,EAAMD,EACF,EAAW,GAAK,IAClB,EAAQC,GAAK,IACb,EAAKA,GAAK,IAEV,EAAK,KAAK,GAAG,CACb,EAAW,EAAY,EACvB,EAAY,GACZ,EAAO,EAAU,EAOvB,OAHA,EAAO,EAAI,CACX,EAAO,EAAQ,CACf,EAAU,UAAU,EAAE,CACf,EAAU,WAAW,CAC5B,SAAS,EAAO,EAAM,CAKpB,IAJA,GAAa,GAAM,GACf,EAAW,EAAG,GAAa,GAAQ,EAClC,EAAY,EACjB,GAAY,EACL,GAAY,GACjB,EAAM,KAAa,EAAY,IAC3B,GAAW,MACb,EAAU,UAAU,EAAQ,CAC5B,EAAU,eAAe,EAAO,EAAG,EAAQ,CAC3C,EAAU,GAEZ,IAAc,EACd,GAAY,EAYd,IAVI,EAAW,GAAW,KACpB,GACF,EAAS,EACT,GAAW,GAAK,GAAU,EAC1B,EAAY,KAEZ,EAAE,EACF,EAAU,IAAW,GAAO,GAAK,GAAU,GAAK,GAAU,IAG1D,GAAQ,EAAS,CACnB,KAAO,EAAW,GAChB,EAAM,KAAa,EAAY,IAC3B,GAAW,MACb,EAAU,UAAU,EAAQ,CAC5B,EAAU,eAAe,EAAO,EAAG,EAAQ,CAC3C,EAAU,GAEZ,IAAc,EACd,GAAY,EAEV,EAAU,IACZ,EAAU,UAAU,EAAQ,CAC5B,EAAU,eAAe,EAAO,EAAG,EAAQ,CAC3C,EAAU,oCA5HY,CAG1B,GAAO,GACP,GAAgB,KAChB,GAAQ,CACV,EACA,EACA,EACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,MACA,MACA,MACD,CA0GG,GAAoB,MCxHxB,SAAS,GAAW,EAAM,EAAE,CAAE,CAC5B,GAAM,CAAE,kBAAkB,KAAM,OAAO,IAAS,EAC1C,EAAS,GAAa,EAAgB,CACtC,EAAQ,KACR,EAAQ,IAAI,WAAW,IAAI,CAC3B,EAAO,IAAI,WAAW,EAAM,CAC5B,EAAU,IAAI,WAAW,EAAM,CACjC,EAAU,GACd,MAAO,CACL,OAAQ,CACN,EAAO,OAAO,CACd,EAAU,IAEZ,QAAS,CACP,EAAO,UAAU,GAAkB,QAAQ,EAE7C,OAAQ,CACN,OAAO,EAAO,OAAO,EAEvB,WAAY,CACV,OAAO,EAAO,WAAW,EAE3B,IAAI,QAAS,CACX,OAAO,EAAO,QAEhB,IAAI,QAAS,CACX,OAAO,GAET,cACA,WAAW,EAAO,EAAO,EAAQ,EAAO,EAAE,CAAE,CAC1C,GAAM,CACJ,cAAc,GACd,mBAAmB,EACnB,QAAQ,EACR,UAAU,KACV,SAAS,EAET,aAAa,EACb,QAAA,EAAU,IACR,EACA,EAAQ,GAYZ,GAXI,EAIA,KAFA,EAAQ,GACR,GAAa,CACH,IAGZ,EAAQ,EAAQ,EAAK,MAEvB,EAAQ,KAAK,IAAI,EAAG,KAAK,MAAM,EAAM,CAAC,CACtC,EAAS,KAAK,IAAI,EAAG,KAAK,MAAM,EAAO,CAAC,CACpC,EAAO,CACT,GAAI,CAAC,EACH,MAAU,MAAM,gDAAgD,CAElE,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GAAiB,EAAQ,EAAQ,CAC7B,GAAU,GACZ,GAAkB,EAAQ,EAAO,CAIrC,GACE,EACAC,EAHgB,KAAK,MAAM,EAAQ,GAAG,CAKtC,EACA,EACD,CACD,IAAM,EAAqB,EAAQ,GAAY,CAAC,EAChD,GACE,EACA,EACA,EACA,EAAqB,EAAU,KAChC,CACG,GAAoB,GAAiB,EAAQ,EAAQ,CACzD,GACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACD,EAEJ,CACD,SAAS,GAAc,CACrB,GAAc,EAAQ,SAAS,EAGnC,SAAS,GAAwB,EAAQ,EAAS,EAAO,EAAa,EAAkB,CACtF,EAAO,UAAU,GAAG,CACpB,EAAO,UAAU,IAAI,CACrB,EAAO,UAAU,EAAE,CACf,EAAmB,IACrB,EAAmB,EACnB,EAAc,IAEhB,IAAI,EAAQ,EACP,GAIH,EAAS,EACT,EAAO,IAJP,EAAS,EACT,EAAO,GAKLA,GAAW,IACb,EAAOA,EAAU,GAEnB,IAAS,EAET,EAAO,UAEL,EAAA,EAEA,EAED,CACD,GAAY,EAAQ,EAAM,CAC1B,EAAO,UAAU,GAAoB,EAAE,CACvC,EAAO,UAAU,EAAE,CAErB,SAAS,GAA8B,EAAQ,EAAO,EAAQ,EAAS,EAAa,EAAG,CAGrF,IAAM,EAAuB,GAAe,EAAQ,OAAO,CAAG,EACxD,EAAqC,EAAa,GAAK,EAAA,IAAoB,EAGjF,GAAY,EAAQ,EAAM,CAC1B,GAAY,EAAQ,EAAO,CAC3B,EAAO,WAAW,CAAC,EAAQ,EAAsB,EAAiB,CAAC,CAErE,SAAS,GAAkB,EAAQ,EAAQ,CACzC,EAAO,UAAU,GAAG,CACpB,EAAO,UAAU,IAAI,CACrB,EAAO,UAAU,GAAG,CACpB,GAAc,EAAQ,cAAc,CACpC,EAAO,UAAU,EAAE,CACnB,EAAO,UAAU,EAAE,CACnB,GAAY,EAAQ,EAAO,CAC3B,EAAO,UAAU,EAAE,CAErB,SAAS,GAAiB,EAAQ,EAAS,CACzC,IAAM,EAAmB,GAAK,GAAe,EAAQ,OAAO,CAC5D,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAkB,IAAK,CACzC,IAAIC,EAAQ,CAAC,EAAG,EAAG,EAAE,CACjBD,EAAI,EAAQ,SACd,EAAQ,EAAQA,IAElB,EAAO,UAAUC,EAAM,GAAG,CAC1B,EAAO,UAAUA,EAAM,GAAG,CAC1B,EAAO,UAAUA,EAAM,GAAG,EAG9B,SAAS,GAAsB,EAAQ,EAAO,EAAQ,EAAc,CAMlE,GALA,EAAO,UAAU,GAAG,CACpB,GAAY,EAAQ,EAAE,CACtB,GAAY,EAAQ,EAAE,CACtB,GAAY,EAAQ,EAAM,CAC1B,GAAY,EAAQ,EAAO,CACvB,EAAc,CAGhB,IAAM,EAAU,GAAe,EAAa,OAAO,CAAG,EACtD,EAAO,UACL,IAIA,EAED,MAED,EAAO,UAAU,EAAE,CAGvB,SAAS,GAAa,EAAQ,EAAO,EAAO,EAAQ,EAAa,EAAG,EAAO,EAAM,EAAS,CACxF,GAAkB,EAAO,EAAQ,EAAO,EAAY,EAAQ,EAAO,EAAM,EAAQ,CAEnF,SAAS,GAAY,EAAQ,EAAO,CAClC,EAAO,UAAU,EAAQ,IAAI,CAC7B,EAAO,UAAU,GAAS,EAAI,IAAI,CAEpC,SAAS,GAAc,EAAQ,EAAM,CACnC,IAAK,IAAID,EAAI,EAAGA,EAAI,EAAK,OAAQ,IAC/B,EAAO,UAAU,EAAK,WAAWA,EAAE,CAAC,CAGxC,SAAS,GAAe,EAAQ,CAC9B,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,EAAO,CAAC,CAAE,EAAE,oBAjNpB,KAGA,KAGA,ICG9B,SAAS,GAAiB,EAAG,EAAG,EAAG,CACjC,OAAOE,GAAK,EAAI,MAAQC,GAAK,EAAI,IAAMC,GAAK,EAE9C,SAAS,GAAqB,EAAG,EAAG,EAAG,EAAG,CACxC,OAAOF,GAAK,EAAIC,EAAI,KAAOC,EAAI,MAAQ,GAAKC,EAAI,MAAQ,EAE1D,SAAS,GAAiB,EAAG,EAAG,EAAG,CACjC,OAAOH,GAAK,GAAK,EAAIC,EAAI,IAAMC,GAAK,qBCctC,SAAS,GAAa,EAAM,EAAS,EAAS,SAAU,CAItD,GAHI,CAAC,GAAQ,CAAC,EAAK,QAGf,EAAE,aAAgB,aAAe,EAAE,aAAgB,mBACrD,MAAU,MAAM,2CAA2C,CAE7D,GAAI,EAAQ,OAAS,IACnB,MAAU,MAAM,oDAAoD,CAEtE,IAAM,EAAO,IAAI,YAAY,EAAK,OAAO,CACnC,EAAS,EAAK,OACd,EAAW,IAAW,SAAW,KAAO,MACxC,EAAQ,IAAI,WAAW,EAAO,CAC9B,EAAY,MAAM,EAAS,CAEjC,GAAI,IAAW,WACb,IAAK,IAAIE,EAAI,EAAGA,EAAI,EAAQ,IAAK,CAC/B,IAAMC,EAAQ,EAAKD,GACbE,EAAID,GAAS,GAAK,IAClBE,EAAIF,GAAS,GAAK,IAClBG,EAAIH,GAAS,EAAI,IACjBI,EAAIJ,EAAQ,IACZ,EAAM,GAAqBI,EAAGD,EAAGD,EAAGD,EAAE,CAE5C,EAAMF,GADM,KAAO,EAAQ,EAAM,GAAO,EAAM,GAAO,GAAsBK,EAAGD,EAAGD,EAAGD,EAAG,EAAQ,KAG5F,CACL,IAAM,EAAgB,IAAW,SAAW,GAAmB,GAC/D,IAAK,IAAIF,EAAI,EAAGA,EAAI,EAAQ,IAAK,CAC/B,IAAMC,EAAQ,EAAKD,GACbG,EAAIF,GAAS,GAAK,IAClBG,EAAIH,GAAS,EAAI,IACjBI,EAAIJ,EAAQ,IACZ,EAAM,EAAcI,EAAGD,EAAGD,EAAE,CAElC,EAAMH,GADM,KAAO,EAAQ,EAAM,GAAO,EAAM,GAAO,GAAqBK,EAAGD,EAAGD,EAAG,EAAQ,EAI/F,OAAO,EAET,SAAS,GAAsB,EAAG,EAAG,EAAG,EAAG,EAAS,CAClD,IAAIG,EAAI,EACJ,EAAU,MACd,IAAK,IAAIN,EAAI,EAAGA,EAAI,EAAQ,OAAQ,IAAK,CACvC,IAAM,EAAM,EAAQA,GACd,EAAK,EAAI,GACX,EAAUO,GAAI,EAAKL,EAAE,CACzB,GAAI,EAAU,EAAS,SACvB,IAAM,EAAK,EAAI,GAEf,GADA,GAAWK,GAAI,EAAKF,EAAE,CAClB,EAAU,EAAS,SACvB,IAAMG,EAAK,EAAI,GAEf,GADA,GAAWD,GAAIC,EAAKJ,EAAE,CAClB,EAAU,EAAS,SACvB,IAAM,EAAK,EAAI,GACf,GAAWG,GAAI,EAAKJ,EAAE,CAClB,IAAU,KACd,EAAU,EACV,EAAIH,GAEN,OAAOM,EAET,SAAS,GAAqB,EAAG,EAAG,EAAG,EAAS,CAC9C,IAAIA,EAAI,EACJ,EAAU,MACd,IAAK,IAAIN,EAAI,EAAGA,EAAI,EAAQ,OAAQ,IAAK,CACvC,IAAM,EAAM,EAAQA,GACd,EAAK,EAAI,GACX,EAAUO,GAAI,EAAKF,EAAE,CACzB,GAAI,EAAU,EAAS,SACvB,IAAMG,EAAK,EAAI,GAEf,GADA,GAAWD,GAAIC,EAAKJ,EAAE,CAClB,EAAU,EAAS,SACvB,IAAM,EAAK,EAAI,GACf,GAAWG,GAAI,EAAKJ,EAAE,CAClB,IAAU,KACd,EAAU,EACV,EAAIH,GAEN,OAAOM,EA4BT,SAASC,GAAI,EAAG,CACd,OAAOL,EAAIA,qBAtIiB,ICA9B,SAASO,GAAM,EAAO,EAAK,EAAK,CAC9B,OAAO,EAAQ,EAAM,EAAM,EAAQ,EAAM,EAAM,EAEjD,SAAS,GAAI,EAAO,CAClB,OAAO,EAAQ,EAEjB,SAAS,GAAQ,EAAM,EAAK,EAAU,CACpC,IAAI,EAAK,EACL,EAAM,MACV,IAAM,EAAO,EAAK,GACZ,EAAK,EAAK,IACV,EAAK,EAAK,GACV,EAAK,EAAK,GACV,EAAK,EAAK,GACV,EAAK,EAAK,GAChB,IAAK,IAAIC,EAAI,EAAK,GAAIA,GAAK,EAAG,EAAI,EAAKA,GAAG,GAAI,CAC5C,IAAM,EAAM,EAAKA,GACX,EAAK,EAAI,IACT,EAAQ,EAAK,GAAM,EAAK,GAC1B,QAAS,GACb,KAAI,EAAO,EACP,IACF,GAAQ,EAAQ,GAAI,EAAI,GAAK,EAAG,CAC5B,GAAQ,KAEd,GAAQ,EAAQ,GAAI,EAAI,GAAK,EAAG,CAC5B,KAAQ,KACZ,GAAQ,EAAQ,GAAI,EAAI,GAAK,EAAG,CAC5B,KAAQ,KACZ,GAAQ,EAAQ,GAAI,EAAI,GAAK,EAAG,CAC5B,KAAQ,KACZ,EAAM,EACN,EAAKA,OAEP,EAAK,IAAM,EACX,EAAK,GAAK,EAEZ,SAAS,IAAa,CACpB,MAAO,CACL,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACN,CAEH,SAAS,GAAgB,EAAM,EAAQ,CACrC,IAAM,EAAW,IAAW,SAAW,KAAO,MACxC,EAAW,MAAM,EAAS,CAC1B,EAAO,EAAK,OAClB,GAAI,IAAW,WACb,IAAK,IAAIA,EAAI,EAAGA,EAAI,EAAM,EAAEA,EAAG,CAC7B,IAAMC,EAAQ,EAAKD,GACbE,EAAID,GAAS,GAAK,IAClBE,EAAIF,GAAS,GAAK,IAClBG,EAAIH,GAAS,EAAI,IACjBI,EAAIJ,EAAQ,IACZ,EAAQ,GAAqBI,EAAGD,EAAGD,EAAGD,EAAE,CAC1C,EAAM,KAAS,EAAO,EAAK,GAAS,EAAK,GAAS,IAAY,CAClE,EAAI,IAAMG,EACV,EAAI,IAAMD,EACV,EAAI,IAAMD,EACV,EAAI,IAAMD,EACV,EAAI,cAEG,IAAW,SACpB,IAAK,IAAIF,EAAI,EAAGA,EAAI,EAAM,EAAEA,EAAG,CAC7B,IAAMC,EAAQ,EAAKD,GACbG,EAAIF,GAAS,GAAK,IAClBG,EAAIH,GAAS,EAAI,IACjBI,EAAIJ,EAAQ,IACZ,EAAQ,GAAiBI,EAAGD,EAAGD,EAAE,CACnC,EAAM,KAAS,EAAO,EAAK,GAAS,EAAK,GAAS,IAAY,CAClE,EAAI,IAAME,EACV,EAAI,IAAMD,EACV,EAAI,IAAMD,EACV,EAAI,WAGN,IAAK,IAAIH,EAAI,EAAGA,EAAI,EAAM,EAAEA,EAAG,CAC7B,IAAMC,EAAQ,EAAKD,GACbG,EAAIF,GAAS,GAAK,IAClBG,EAAIH,GAAS,EAAI,IACjBI,EAAIJ,EAAQ,IACZ,EAAQ,GAAiBI,EAAGD,EAAGD,EAAE,CACnC,EAAM,KAAS,EAAO,EAAK,GAAS,EAAK,GAAS,IAAY,CAClE,EAAI,IAAME,EACV,EAAI,IAAMD,EACV,EAAI,IAAMD,EACV,EAAI,MAGR,OAAO,EAET,SAAS,GAAS,EAAM,EAAW,EAAO,EAAE,CAAE,CAC5C,GAAM,CACJ,SAAS,SACT,aAAa,GACb,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,IACZ,EAIJ,GAHI,CAAC,GAAQ,CAAC,EAAK,QAGf,EAAE,aAAgB,aAAe,EAAE,aAAgB,mBACrD,MAAU,MAAM,2CAA2C,CAE7D,IAAM,EAAO,IAAI,YAAY,EAAK,OAAO,CACrC,EAAU,EAAK,UAAY,GACzB,EAAW,IAAW,WACtB,EAAO,GAAgB,EAAM,EAAO,CACpC,EAAW,EAAK,OAChB,EAAmB,EAAW,EAC9B,EAAO,IAAI,YAAY,EAAW,EAAE,CAE1C,IAAK,IADD,EAAU,EACLH,EAAI,EAAGA,EAAI,EAAU,EAAEA,EAAG,CACjC,IAAM,EAAM,EAAKA,GACjB,GAAI,GAAO,KAAM,CACf,IAAIM,EAAI,EAAI,EAAI,IACZ,IAAU,EAAI,IAAMA,GACxB,EAAI,IAAMA,EACV,EAAI,IAAMA,EACV,EAAI,IAAMA,EACV,EAAK,KAAa,GAGlB,GAAI,EAAU,CAAG,EAAU,OAC7B,EAAU,IAGZ,IADA,IAAIN,EAAI,EACDA,EAAI,EAAU,EAAG,EAAEA,EACxB,EAAKA,GAAG,GAAKA,EAAI,EACjB,EAAKA,EAAI,GAAG,GAAKA,EACb,IAAS,EAAKA,GAAG,IAAM,KAAK,KAAK,EAAKA,GAAG,IAAI,EAE/C,IAAS,EAAKA,GAAG,IAAM,KAAK,KAAK,EAAKA,GAAG,IAAI,EACjD,IAAIO,EAAGC,EAAG,EACV,IAAK,EAAI,EAAGR,EAAI,EAAS,EAAEA,EAAG,CAC5B,GAAQ,EAAMA,EAAG,GAAM,CACvB,IAAI,EAAM,EAAKA,GAAG,IAClB,IAAK,EAAI,EAAE,EAAK,GAAIQ,EAAI,IACtB,EAAKA,GAAK,EACN,IAAK,EAAI,EAAK,IAAK,KAAO,IAFL,EAAI,EAG7B,EAAKA,GAAKD,EAEZ,EAAKC,GAAKR,EAEZ,IAAI,EAAU,EAAU,EACxB,IAAK,EAAI,EAAGA,EAAI,GAAW,CAEzB,IADA,IAAI,IACO,CACT,IAAI,EAAK,EAAK,GAEd,GADA,EAAK,EAAK,GACN,EAAG,IAAM,EAAG,KAAO,EAAK,EAAG,IAAI,KAAO,EAAG,GAAI,MAC7C,EAAG,KAAO,EACZ,EAAK,EAAK,GAAK,EAAK,EAAK,OAEzB,GAAQ,EAAM,EAAI,GAAM,CACxB,EAAG,GAAKA,GAEV,IAAI,EAAM,EAAK,GAAI,IACnB,IAAK,EAAI,GAAI,EAAKQ,EAAIA,IAAM,EAAK,KAC3B,EAAK,EAAK,IAAM,EAAK,EAAK,IAAK,IAAM,EAAK,EAAK,EAAK,IAAI,KAAK,IAC7D,KAAO,EAAK,EAAI,EAAK,IAAK,MAFK,EAAI,EAGvC,EAAKA,GAAKD,EAEZ,EAAKC,GAAK,EAEZ,IAAI,EAAK,EAAK,EAAG,IACb,EAAK,EAAG,IACR,EAAK,EAAG,IACRF,EAAI,GAAK,EAAK,GACd,IAAU,EAAG,GAAKA,GAAK,EAAK,EAAG,GAAK,EAAK,EAAG,KAChD,EAAG,GAAKA,GAAK,EAAK,EAAG,GAAK,EAAK,EAAG,IAClC,EAAG,GAAKA,GAAK,EAAK,EAAG,GAAK,EAAK,EAAG,IAClC,EAAG,GAAKA,GAAK,EAAK,EAAG,GAAK,EAAK,EAAG,IAClC,EAAG,KAAO,EAAG,IACb,EAAG,IAAM,EAAEN,EACX,EAAK,EAAG,IAAI,GAAK,EAAG,GACpB,EAAK,EAAG,IAAI,GAAK,EAAG,GACpB,EAAG,IAAM,EAEX,IAAI,EAAU,EAAE,CAChB,IAAIS,EAAI,EACR,IAAK,EAAI,GAAK,EAAEA,EAAG,CACjB,IAAIJ,EAAIN,GAAM,KAAK,MAAM,EAAKC,GAAG,GAAG,CAAE,EAAG,IAAI,CACzCI,EAAIL,GAAM,KAAK,MAAM,EAAKC,GAAG,GAAG,CAAE,EAAG,IAAI,CACzCG,EAAIJ,GAAM,KAAK,MAAM,EAAKC,GAAG,GAAG,CAAE,EAAG,IAAI,CACzCE,EAAI,IACJ,IACF,EAAIH,GAAM,KAAK,MAAM,EAAKC,GAAG,GAAG,CAAE,EAAG,IAAI,CACrC,IAEF,EAAIE,IADc,OAAO,GAAgB,SAAW,EAAc,KAC7C,EAAI,KAEvB,GAAcA,GAAK,IACrB,EAAI,EAAI,EAAI,EACZ,EAAI,IAGR,IAAMD,EAAQ,EAAW,CAACI,EAAGD,EAAGD,EAAGD,EAAE,CAAG,CAACG,EAAGD,EAAGD,EAAE,CAGjD,GAFe,GAAgB,EAASF,EAAM,EACjC,EAAQ,KAAKA,EAAM,EAC3B,EAAI,EAAKD,GAAG,KAAO,EAAG,MAE7B,OAAO,EAET,SAAS,GAAgB,EAAS,EAAO,CACvC,IAAK,IAAIA,EAAI,EAAGA,EAAI,EAAQ,OAAQ,IAAK,CACvC,IAAMU,EAAI,EAAQV,GACd,EAAaU,EAAE,KAAOT,EAAM,IAAMS,EAAE,KAAOT,EAAM,IAAMS,EAAE,KAAOT,EAAM,GACtE,EAAeS,EAAE,QAAU,GAAKT,EAAM,QAAU,EAAIS,EAAE,KAAOT,EAAM,GAAK,GAC5E,GAAI,GAAc,EAAc,MAAO,GAEzC,MAAO,sBAhOqB,ICe9B,SAAS,GAAU,EAAQ,EAAU,EAAY,CAC/C,OAAO,EAAQ,KAAM,KAAM,WAAa,CACtC,GAAU,GACV,GAAM,CACJ,aACA,WACA,aACA,WACA,YACA,QACA,YACA,cACE,EAEE,EADoB,EAAI,EACI,IAClC,EAAW,MAAM,CACjB,EAAS,EAAW,CACpB,IAAM,EAAW,EAAW,EACtB,EAAc,KAAK,KAAK,EAAW,EAAU,CAC7C,EAAkB,SAAS,eAAe,iBAAiB,CAC3D,EAAiB,GAAmD,MAAM,SAAY,GAU5F,OATI,GAAmB,GAAa,GAAc,EAAY,GAAK,EAAa,IAC9E,EAAgB,MAAM,SAAW,QACjC,EAAgB,MAAM,IAAM,UAC5B,EAAgB,MAAM,KAAO,UAC7B,EAAgB,MAAM,MAAQ,EAAY,KAC1C,EAAgB,MAAM,OAAS,EAAa,KAC5C,EAAO,cAAc,IAAI,MAAM,SAAS,CAAC,CACzC,MAAM,GAAM,GAAI,EAEX,IAAI,SAAS,EAAS,IAAW,EAAQ,KAAM,KAAM,WAAa,CACvE,IAAM,EAAa,MAAM,EAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAG,IAAMU,EAAE,CAC/CC,EAAW,OACnB,iBAAiB,YAAe,CACrC,GAAU,GACV,EAAW,KAAK,CAChB,EAAS,GAAG,CACZ,EAAO,CAAE,MAAW,MAAM,uBAAuB,CAAE,gBAAe,CAAC,EACnE,CACF,GAAI,CACF,IAAM,EAAM,IAAY,CACxB,IAAK,IAAID,KAAK,EAAQ,CACpB,GAAIE,GAAS,MAEb,EADiB,EAAaF,EAAI,EAChB,CAClB,GAAM,CAAC,EAAW,EAAO,GAAU,MAAM,IAAU,CAC7C,CAAE,QAAS,EACX,EAAS,SACT,EAAU,GAAS,EAAM,IAAK,CAAE,SAAQ,CAAC,CACzC,EAAQ,GAAa,EAAM,EAAS,EAAO,CACjD,MAAM,EAAI,WAAW,EAAO,EAAO,EAAQ,CAAE,UAAS,QAAO,CAAC,CAC9D,MAAM,GAAM,IAAK,CACjB,EAASA,GAAK,EAAc,GAAG,CAEjC,GAAI,CAACE,GAAS,CACZ,EAAI,QAAQ,CACZ,IAAM,EAAS,EAAI,WAAW,CAC1B,EAAO,cAAgB,aACzB,GAAS,EAAQ,qBAAsB,CAAE,KAAM,YAAa,CAAC,CAE/D,EAAW,KAAK,CAIhB,EAAQ,CAAE,MADI,MAAM,GADJ,0BADJ,MAAM,GAAmB,EAAO,EAEA,CAC3B,gBAAe,CAAC,QAE5BC,EAAO,CACd,QAAQ,MAAM,gBAAiBA,EAAM,CACrC,EAAW,KAAK,CAChB,EAAS,GAAG,CACZ,EAAO,CAAE,MAAA,EAAO,gBAAe,CAAC,QACxB,CACJD,IACF,EAAW,KAAK,GAGpB,CAAC,EACH,CAEJ,SAAS,GAAgB,EAAS,CAChC,OAAO,EAAQ,KAAM,KAAM,WAAa,CACtC,IAAM,EAAe,KAAK,EAAQ,MAAM,IAAI,CAAC,GAAG,CAC1C,EAAa,IAAI,WAAW,EAAa,OAAO,CACtD,IAAK,IAAIF,EAAI,EAAGA,EAAI,EAAa,OAAQ,IACvC,EAAWA,GAAK,EAAa,WAAWA,EAAE,CAC5C,OAAO,GACP,CAEJ,SAAS,GAAS,EAAK,EAAU,EAAM,CAErC,GADa,aAAe,KAAO,EAAM,IAAI,KAAK,CAAC,EAAI,CAAE,CAAE,OAAM,CAAC,CAC/C,EAAS,CAE9B,SAAS,GAAa,EAAM,EAAU,CACpC,IAAM,EAAM,IAAI,gBAAgB,EAAK,CAC/B,EAAS,SAAS,cAAc,IAAI,CAC1C,EAAO,KAAO,EACd,EAAO,SAAW,EAClB,EAAO,OAAO,CAEhB,SAAS,IAAW,CAClB,OAAO,EAAQ,KAAM,KAAM,WAAa,CAGtC,IAAM,EAAQ,MAAM,GAFF,SAAS,eAAe,iBAAiB,CAAC,SAAS,GAAG,SAAS,GACvD,UAAU,YAAa,EAAE,CACb,CAEhCI,EADS,SAAS,cAAc,SAAS,CACxB,WAAW,KAAK,CAIvC,MAHA,GAAQ,OAAO,MAAQ,EAAM,MAC7B,EAAQ,OAAO,OAAS,EAAM,OAC9B,EAAQ,UAAU,EAAO,EAAG,EAAE,CACvB,CACL,IAAI,UACFA,EAAQ,aACN,EACA,EACAA,EAAQ,OAAO,MACfA,EAAQ,OAAO,OAChB,CAAC,KACFA,EAAQ,OAAO,MACfA,EAAQ,OAAO,OAChB,CACD,EAAM,MACN,EAAM,OACP,EACD,8BA5I0B,KAGA,KAGA,KAIA,KAGA,CAG1BF,GAAU,GA8HV,GAAsB,GAAS,EAAQ,IAAK,GAAG,KAAM,WAAa,CACpE,IAAM,EAAY,MAAM,IAAI,QAAS,GAAM,CACzC,IAAM,EAAS,IAAI,WACnB,EAAO,WAAeG,EAAE,EAAO,OAAO,CACtC,EAAO,cAAc,IAAI,KAAK,CAAC,EAAK,CAAC,CAAC,EACtC,CACF,OAAO,EAAU,UAAU,EAAU,QAAQ,IAAI,CAAG,EAAE,EACtD,IC9IF,SAAS,GAAc,EAAe,CACpC,IAAM,EAAkB,SAAS,eAAe,iBAAiB,CAC7D,GAAmB,IACrB,EAAgB,MAAM,QAAU,EAChC,EAAO,cAAc,IAAI,MAAM,SAAS,CAAC,EAG7C,SAAS,GAAY,EAAW,EAAY,CAC1C,OAAO,EAAQ,KAAM,KAAM,WAAa,CAEtC,IAAM,EAAkB,SAAS,eAAe,iBAAiB,CAC3D,GAAkB,GAAmD,SAAS,KAA0B,SAAS,GACvH,GAAI,CAAC,GAAmB,CAAC,EAEvB,MADA,QAAQ,MAAM,mBAAmB,CACvB,MAAM,mBAAmB,CAErC,IAAM,EAAyB,EAAgB,MAAM,QACjD,GAAa,GAAc,EAAY,GAAK,EAAa,IAC3D,EAAgB,MAAM,SAAW,QACjC,EAAgB,MAAM,IAAM,UAC5B,EAAgB,MAAM,KAAO,UAC7B,EAAgB,MAAM,MAAQ,EAAY,KAC1C,EAAgB,MAAM,OAAS,EAAa,KAC5C,EAAO,cAAc,IAAI,MAAM,SAAS,CAAC,CACzC,MAAM,GAAM,GAAI,EAGlB,IAAM,EAAQ,MAAM,GADJ,EAAU,UAAU,YAAa,EAAE,CACb,CACtC,QAAQ,IAAI,mBAAmB,CAC/B,IAAM,EAAO,MAAM,GAAkB,EAAM,CAE3C,OADA,QAAQ,IAAI,GAAG,EAAK,OAAO,UAAU,CAC9B,CAAE,MAAO,EAAM,cAAe,EAAwB,EAC7D,CAEJ,SAAS,GAAkB,EAAO,CAChC,OAAO,EAAQ,KAAM,KAAM,WAAa,CACtC,OAAO,IAAI,SAAS,EAAS,IAAW,CAEtC,IAAME,EADS,SAAS,cAAc,SAAS,CACxB,WAAW,KAAK,CACvC,EAAQ,OAAO,MAAQ,EAAM,MAC7B,EAAQ,OAAO,OAAS,EAAM,OAC9B,EAAQ,UAAU,EAAO,EAAG,EAAE,CAC9B,EAAQ,OAAO,OACZ,GAAS,EAAK,aAAa,CAAC,KAAM,GAAWC,EAAQ,IAAI,WAAW,EAAO,CAAC,CAAC,CAAC,MAAM,EAAO,CAC7F,EACD,EACF,wBApD0B,KAGA,ICK9B,SAAS,GAAY,EAAQ,EAAU,EAAY,CACjD,OAAO,EAAQ,KAAM,KAAM,WAAa,CACtC,GAAM,CAAE,aAAY,WAAU,cAAa,YAAW,cAAe,EAC/D,EAAW,EAAW,EAC5B,GAAU,GACKC,EAAW,OACnB,iBAAiB,YAAe,CACrC,EAAS,GAAG,CACZ,GAAU,GACN,IAAe,GAAc,MAAM,EACvC,CACF,IAAM,EAAkB,SAAS,eAAe,iBAAiB,CAC3D,EAAiB,GAAmD,MAAM,SAAY,GACxF,GAAmB,GAAa,GAAc,EAAY,GAAK,EAAa,IAC9E,EAAgB,MAAM,SAAW,QACjC,EAAgB,MAAM,IAAM,UAC5B,EAAgB,MAAM,KAAO,UAC7B,EAAgB,MAAM,MAAQ,EAAY,KAC1C,EAAgB,MAAM,OAAS,EAAa,KAC5C,EAAO,cAAc,IAAI,MAAM,SAAS,CAAC,CACzC,MAAM,GAAM,GAAI,EAElB,IAAM,EAAO,MAAM,GAAY,EAAU,EAAS,CAClD,GAAI,IAAW,CAAC,EAAM,MAAO,CAAE,gBAAe,CAC9C,GAAI,IAAgB,WAAY,CAC9B,IAAM,EAAc,MAAM,EAAK,aAAa,CAE5C,MAAO,CAAE,MADK,IAAI,WAAW,EAAY,CACzB,gBAAe,MAG/B,OADA,GAAc,EAAK,CACZ,CAAE,gBAAe,EAE1B,CAEJ,SAAS,GAAY,EAAU,EAAU,CACvC,OAAO,EAAQ,KAAM,KAAM,WAAa,CACtC,OAAO,IAAI,QAAS,GAAY,EAAQ,KAAM,KAAM,WAAa,CAE/D,IAAM,EAAkB,SAAS,eAAe,iBAAiB,CAC3D,GAAkB,GAAmD,SAAS,KAA0B,SAAS,GACvH,GAAI,CAAC,GAAa,CAAC,EAAiB,CAClC,QAAQ,MAAM,mBAAmB,CACjC,EAAQ,KAAK,CACb,OAEF,GAAiB,EAAE,CACnB,IAAM,EAAS,EAAU,eAAe,CACxC,GAAgB,IAAI,cAAc,EAAQ,CACxC,SAAU,yBACV,mBAAoB,KAErB,CAAC,CACF,IAAM,EAAW,gBAAkB,CACjC,EAAU,GAAS,CACjB,IAAM,EAAW,EAAO,EAAI,EAE5B,OADI,GAAY,GAAG,cAAc,EAAS,CACnC,GACP,EACD,IAAI,CACP,GAAc,iBAAiB,gBAAkB,GAAM,CACjDE,EAAE,KAAK,KAAO,GAChB,GAAe,KAAKA,EAAE,KAAK,EAE7B,CACF,GAAc,iBAAiB,WAAc,CAC3C,cAAc,EAAS,CAKrB,EAJG,GAIK,KAHK,IAAI,KAAK,GAAgB,CAAE,KAAM,aAAc,CAAC,CAGhD,EAEf,CACF,GAAc,OAAO,CACrB,MAAM,GAAM,EAAS,CACrB,GAAc,MAAM,EACpB,CAAC,EACH,CAEJ,SAAS,GAAc,EAAM,CAC3B,IAAM,EAAM,IAAI,gBAAgB,EAAK,CAC/BC,EAAI,SAAS,cAAc,IAAI,CACrC,SAAS,KAAK,YAAYA,EAAE,CAC5B,EAAE,MAAM,QAAU,OAClB,EAAE,KAAO,EACT,EAAE,SAAW,sBACb,EAAE,OAAO,CACT,EAAO,IAAI,gBAAgB,EAAI,CAC/B,SAAS,KAAK,YAAYA,EAAE,iCAjGA,KAGA,CAG1B,GAAU,GACV,GAAgB,KAChB,GAAiB,EAAE,kCCRO,KAIA,KAGA,KAGA,KAGA,CAG1B,GAAQ,EAAE,CACV,GAAiB,GAAS,CAC5B,IAAM,EAAO,EAAK,UAAU,CAE5B,OADa,EAAK,UAAU,EAAK,QAAQ,IAAI,CAAG,EAAG,EAAK,YAAY,IAAI,CAAC,EAGvE,GAAoB,GAAS,EAAQ,IAAK,GAAG,KAAM,WAAa,CAClE,OAAO,YACL,CACE,cAAe,CACb,KAAM,UACN,KAAM,GAAc,EAAK,CAC1B,CACF,CACD,IACD,EACD,CACE,IAA6B,EAAQ,EAAU,IAAe,EAAQ,IAAK,GAAG,KAAM,WAAa,CACnG,GAAM,CAAE,kBAAmB,GAAW,UAAU,CAChD,EAAe,GAAK,CACpB,IAAI,EAAgB,GACpB,GAAI,CACF,IAAM,EAAwB,EAAO,aAAe,UAAY,EAAO,aAAe,OACtF,GAAI,EAAO,cAAgB,WACzB,GAAI,GAAyB,EAAO,SAAW,OAAQ,CACrD,IAAM,EAAS,MAAM,GAAY,EAAQ,EAAUC,EAAW,CAC9D,EAAgB,EAAO,cACnB,EAAO,OACT,OAAO,YACL,CACE,cAAe,CACb,KAAM,iBACN,KAAM,GAAc,EAAS,CAC7B,MAAO,EAAO,MACf,CACF,CACD,IACD,CAEH,EAAS,GAAG,KACP,CACL,IAAM,EAAS,MAAM,GAAU,EAAQ,EAAUA,EAAW,CAC5D,EAAgB,EAAO,cACvB,OAAO,YACL,CACE,cAAe,CACb,KAAM,eACN,KAAM,GAAc,EAAS,CAC7B,MAAO,EAAO,MACf,CACF,CACD,IACD,CACD,EAAS,GAAG,MAEL,EAAO,cAAgB,cAC5B,EAAO,SAAW,MAEpB,GADe,MAAM,GAAU,EAAQ,EAAUA,EAAW,EACrC,cACd,EAAO,SAAW,SAE3B,GADe,MAAM,GAAY,EAAQ,EAAUA,EAAW,EACvC,eAEzB,EAAS,GAAG,SAEN,CACR,EAAe,GAAM,CACrB,GAAc,EAAc,GAE9B,CACE,IAA+B,EAAM,EAAW,IAAe,EAAQ,IAAK,GAAG,KAAM,WAAa,CACpG,GAAM,CAAE,kBAAmB,GAAW,UAAU,CAChD,EAAe,GAAK,CACpB,IAAI,EAAgB,GACpB,GAAI,CACF,IAAM,EAAS,MAAM,GAAY,EAAW,EAAW,CACvD,EAAgB,EAAO,cACvB,OAAO,YACL,CACE,cAAe,CACb,KAAM,WAEN,KAAM,GAAc,EAAK,CACzB,MAAO,EAAO,MACf,CACF,CACD,IACD,QACO,CACR,EAAe,GAAM,CACrB,GAAc,EAAc,GAE9B,IC7GF,SAAS,GAAoB,EAAK,CAChC,IAAM,EAAY,IAAI,IAAI,EAAI,CACxB,EAAS,IAAI,gBAAgB,EAAU,OAAO,CAC9C,EAAW,EAAE,CACb,EAAgB,GAChB,IAAU,QAAU,IAAU,QACzB,IAAU,OAEf,IAAU,MAAQ,IAAU,MACvB,EAEL,CAAC,MAAM,EAAM,EAAI,IAAU,GACtB,OAAO,EAAM,CAEf,EAEH,EAAiB,CACrB,SAAU,CAAC,YAAa,YAAa,YAAY,CACjD,SAAU,CAAC,YAAa,YAAa,YAAY,CACjD,YAAa,CAAC,gBAAiB,cAAc,CAC7C,MAAO,CAAC,YAAa,WAAW,CACjC,CACK,EAAY,EAAE,CACpB,IAAK,GAAM,CAAC,EAAK,KAAU,EAAO,SAAS,CACzC,EAAU,GAAO,EAAa,EAAM,CAEtC,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAU,CAAE,CACpD,IAAI,EAAU,GACd,IAAK,GAAM,CAAC,EAAW,KAAe,OAAO,QAAQ,EAAe,CAClE,GAAI,EAAW,SAAS,EAAI,CAAE,CACvB,EAAS,KACZ,EAAS,GAAa,EAAE,EAE1B,EAAS,GAAW,GAAO,EAC3B,EAAU,GACV,MAGC,IACH,EAAS,GAAO,GAGpB,OAAO,EAET,SAAS,GAAW,EAAa,CAG/B,IAAK,IAFDC,EAAQ,EAAE,CACV,GAAS,EAAY,KAAO,IAAM,EAAY,OAAO,EAAE,CAAG,GAAa,MAAM,IAAI,CAC5EC,EAAI,EAAGA,EAAI,EAAM,OAAQ,IAAK,CACrC,IAAI,EAAO,EAAMA,GAAG,MAAM,IAAI,CAC9B,EAAM,mBAAmB,EAAK,GAAG,EAAI,mBAAmB,EAAK,IAAM,GAAG,CAExE,OAAOD,oBAEL,GAAc,GAAc,CAC9B,IAAM,EAAQ,GAAW,EAAU,CACnC,OAAO,EAAM,QAAU,EAAM,QAAU,EAAM,WCR/C,SAAS,GAAoB,EAAW,CACtC,MAAQ,IAAO,CACb,IAAIE,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,GAAM,CAAC,GAAU,IAAU,CACrB,EAAW,GAAY,GAAU,EAAM,SAAS,CAChD,CAAC,EAAS,GAAcE,EAAS,GAAM,CAK7C,OAJA,MAAgB,CACd,EAAW,EAAO,UAAY,EAAE,CAC5B,EAAO,UAAY,GAAG,EAAS,GAAG,EACrC,CAAC,EAAO,UAAU,CAAC,CACC,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAC9C,OAAQ,EAAU,UAAY,UAC9B,QAAS,EAAU,EAAI,GACvB,aAAc,EAAU,OAAS,OAClC,CAAC,CACF,YAAe,CACT,EACF,OACQ,IAAK,GACX,EAAO,UACP,EAAO,WACR,CACE,EAAS,sCAAsC,EAEvD,CAAC,CACH,EAGL,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAO,CACb,IAAIH,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,GAAM,CAAC,GAAU,IAAU,CACrB,EAAU,EAAO,UAAY,EAC7B,EAAW,GAAY,GAAU,EAAM,SAAS,CAChD,EAAG,GAAY,EAAc,QAAQ,CACrC,EAAG,GAAiB,EAAc,aAAa,CAC/C,EAAG,GAAe,EAAc,WAAW,CAC3C,EAAG,GAAiB,EAAc,aAAa,CAC/C,EAAG,GAAc,EAAc,UAAU,CACzC,EAAG,GAAc,EAAc,UAAU,CACzC,EAAe,GAAY,GAAU,EAAM,aAAa,CAQ9D,OAPA,MAAgB,CAEZ,EADE,EACO,GAEA,sCAAsC,EAEhD,CAAC,EAAQ,CAAC,CACU,EACrBG,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAC9C,OAAQ,EAAU,UAAY,UAC9B,QAAS,EAAU,EAAI,GACvB,aAAc,EAAU,OAAS,OAClC,CAAC,CACF,YAAe,CACb,QAAQ,IAAI,cAAc,CAC1B,EAAW,KAAK,CAChB,EAAS,UAAU,CACnB,EAAc,GAAM,CACpB,EAAW,GAAM,CACjB,EAAa,MAAM,EAErB,cAAiB,QAAQ,IAAI,uCAAuC,CACpE,UAAa,QAAQ,IAAI,mCAAmC,CAC7D,CAAC,CACH,EAKL,SAAS,GAAO,EAAW,CACzB,MAAQ,IAAU,CAChB,IAAM,EAAY,GAAY,GAAU,EAAM,UAAU,CAClD,EAAe,GAAY,GAAU,EAAM,aAAa,CAC9D,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAe,CACb,GAAW,OAAO,CACd,IAAc,OAAO,EAAa,UAAU,EAEnD,CAAC,CACH,EAGL,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAO,CACb,IAAIH,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAE7D,GAAM,CAAC,EAAU,GAAeE,EAAS,GAAG,CACtC,EAAW,GAAY,GAAU,EAAM,SAAS,CAChDG,EAAU,GAAY,GAAK,EAAW,EACtC,EAAgBC,EAAO,KAAK,CAC5B,CAAC,GAAU,IAAU,CACrB,EAAU,EAAO,UAAY,EAC7B,CAACC,EAAS,GAAc,EAAc,UAAU,CAChD,EAAG,GAAY,EAAc,QAAQ,CACrC,CAAC,EAAO,GAAY,EAAc,QAAQ,CAC1C,CAAC,EAAM,GAAW,EAAc,OAAO,CACvC,CAAC,EAAc,GAAmB,EAAc,eAAe,CAC/D,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,IAAY,EAAc,WAAW,CACtC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,IAAgB,EAAc,eAAe,CAC9C,CAAC,IAAe,EAAc,cAAc,CAC5C,CAAC,GAAO,IAAYL,EAAS,IAAI,CACjC,CAAC,GAAQ,GAAaA,EAAS,IAAI,CACnC,CAAC,IAAU,EAAc,SAAS,CAClC,CAAC,IAAS,EAAc,QAAQ,CAChCM,GAAQ,GAAY,GAAU,EAAM,MAAM,CAC1C,CAAC,GAAU,IAAeN,EAAS,EAAE,CACrC,CAAC,GAAM,IAAWA,EAAS,EAAE,CAC7B,GAAeI,EAAO,EAAE,CACxB,EAAoBA,EAAO,KAAK,CAChC,GAAuB,EAAO,MAA6B,GAC3D,CACJ,OACA,QAAS,GACT,aACA,cACE,GAAW,QAAS,WAAY,CAClC,OAAQ,CAAE,OAAQ,gBAAiB,MAAO,GAAe,CACzD,OAAQ,6CACR,MAAO,EACP,QAAS,CAAC,CAAC,GACZ,CAAC,CACI,EAAS,EAAK,IAAM,KACpB,GAAY,GAAa,GAAiC,iBAAkB,GAAO,CACnF,CAACG,GAAc,IAAgB,GAAgB,OAAO,CACtD,EAAgB,IAAa,GAAK,CAAC,IAAgB,CAACA,GAC1D,MAAgB,CACd,QAAQ,IAAIA,GAAc,EAAQ,uBAAuB,CACzD,QAAQ,IAAI,GAAU,EACrB,CAACA,GAAc,EAAO,CAAC,CAC1B,MAAgB,CACd,QAAQ,IAAI,GAAa,cAAc,EACtC,CAAC,GAAY,CAAC,CACjB,GAAM,CAAC,GAAW,IAAgBP,EAAS,GAAG,CACxC,GAAwB,EAAO,aAAe,UAAY,EAAO,aAAe,OACtF,MAAgB,CACd,IAAI,EAAe,WACnB,AASE,EATE,EACa,iBACN,KAAgB,WACrB,IAAyB,KAAW,OACvB,sBAEA,oBAGF,KAAW,OAAS,iBAAmB,eAExD,GAAa,EAAa,EACzB,CAAC,GAAa,EAAe,GAAQ,GAAsB,CAAC,CAC/D,IAAM,GAAa,IAAI,GAAU,aACjC,MAAgB,CAEZ,GADE,IAAS,MAAQ,EACP,EAEA,GAAW,EAAW,EAEnC,CAAC,EAAY,GAAU,EAAM,EAAa,CAAC,CAC9C,MAAgB,CACd,GACE,GAAa,CACX,UACA,YACA,YACA,UAAW,EAAO,UAClB,WAAY,EAAO,WACpB,CAAC,CACH,CACD,eAAiB,CACf,GAAiB,CAAE,YAAU,YAAW,gBAAc,CAAC,EACtD,IAAI,EACN,CACD,GACA,GACA,GACA,EACA,EACA,EACA,EAAO,UACP,EAAO,WACR,CAAC,CACF,MAAsB,CACpB,SAAS,GAAa,CACpB,GAAiB,CAAE,YAAU,YAAW,gBAAc,CAAC,CAGzD,OADA,EAAO,iBAAiB,SAAU,EAAW,KAChC,EAAO,oBAAoB,SAAU,EAAW,EAC5D,CAAC,GAAa,CAAC,CAClB,IAAM,GAAQK,IAAY,MAAQ,IAAU,WAAa,GAAO,IAG1D,GAAS,CACb,WAF0B,IAAS,KAAO,EAAI,EAG9C,SAJwB,IAAS,MAAQ,EAAe,EAAe,GAKvE,aACA,WACA,YACA,eACA,UACA,SACA,WAAY,EAAO,WACnB,UAAW,EAAO,UAClB,WAAY,EAAO,WACpB,CACK,GAAaG,MAAkB,CAC9BL,IAGL,EADiB,GADA,KAAK,KAAK,CAAG,GAAa,SAAW,IACd,GACtB,CAClB,EAAkB,QAAU,sBAAsB,GAAW,GAC5D,CAACA,EAAS,EAAY,GAAU,EAAS,CAAC,CAC7C,OACMA,GACF,GAAa,QAAU,KAAK,KAAK,CACjC,IAAY,EAER,EAAkB,SACpB,qBAAqB,EAAkB,QAAQ,KAGtC,CACP,EAAkB,SACpB,qBAAqB,EAAkB,QAAQ,GAGlD,CAACA,EAAS,GAAW,CAAC,CACzB,UACe,CACP,EAAc,SAChB,EAAc,QAAQ,OAAO,EAGhC,EAAE,CAAC,CACN,IAAM,GAAcK,MAAkB,CAChC,EAAc,UAChB,EAAc,QAAQ,OAAO,CAC7B,EAAY,GAAG,CACf,EAAW,KAAK,CAChB,QAAQ,IAAI,iBAAiB,GAE9B,CAAC,EAAW,CAAC,CACV,GAAcA,MAAkB,CACpC,EAAc,QAAU,IAAI,gBAC5B,EAAS,UAAU,CACf,GAAW,GACT,GACF,GAA+B,iBAAiB,CAChD,QAAQ,IAAI,kBAAkB,EAEzB,GAIH,EAAY,EAAE,CACd,GAAa,QAAU,KAAK,KAAK,CACjC,QAAQ,IAAI,YAAa,GAAa,QAAQ,CAC1CD,IAAgB,GAAY,EAC9B,GACE,GACA,EACA,EAAc,QACf,EAED,QAAQ,IAAI,iCAAiC,CAC7C,GAA+B,iBAAiB,IAdlD,GAA+B,cAAc,CAC7C,QAAQ,IAAI,eAAe,EAkB/B,GAA+B,UAAU,EAE1C,CACD,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACAA,GACA,GACD,CAAC,CACE,GAAU,YAgBd,OAfIJ,EAAS,GAAU,UACd,GAAO,IAAK,GAAU,QACrB,EACD,CAAC,IAAgB,CAACI,GAAc,GAAU,UAC1C,CAAC,IAAgBA,GAAc,GAAU,MACzC,IAAe,GAAU,WAHf,GAAU,QAI7B,MAAgB,CAIZ,EAHG,EAEM,GAAO,IACP,6CAEA,GAJA,+BAIG,EAEb,CAAC,EAAS,GAAM,EAAS,CAAC,CACN,EAAKE,EAAU,CAAE,SAAU,CAChC,EACdR,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,IAAK,EACL,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,OAAQ,UAAW,CAAC,CACtE,QAAS,GACT,oBAAuB,QAAQ,IAAI,uCAAuC,CAC1E,iBAAoB,QAAQ,IAAI,uCAAuC,CACvE,SAAU,EAAW,IACrB,MAAOK,KAAU,GAAa,GAARA,GACtB,OAASC,GAA4B,KAAb,GACxB,WACD,CAAC,CACH,CACD,KAAY,WAA6B,EACvC,MACA,CACE,QAAS,GACT,MAAO,CACL,SAAU,WACV,MAAO,OACP,OAAQ,OACR,IAAK,EACL,KAAM,EACN,OAAQ,OACT,CACF,CACF,CACF,CAAE,CAAC,EAGR,SAAS,GAAS,EAAW,CAC3B,MAAQ,IAAO,CACb,IAAI,EAAQ,GAAUR,EAAI,EAAE,CAAC,CAC7B,IAAM,EAAW,IAAsB,CACjC,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,GAAY,EAAc,WAAW,CACtC,CAAC,GAAQ,EAAc,OAAO,CAC9B,CAAC,GAAgB,EAAc,eAAe,CAC9C,CAAC,EAAU,GAAeC,EAAS,EAAE,CA2B3C,OA1BA,MAAgB,CACV,IAAS,MAAQ,EACnB,EAAY,EAAa,CAChB,IAAe,IAAK,IAAK,IAAa,IAAK,IACpD,EAAY,EAAW,EAAW,EAEnC,CAAC,EAAY,EAAU,EAAM,EAAa,CAAC,CAC9C,MAAgB,CACY,EAAQ,KAAM,KAAM,WAAa,CACzD,GAAI,CACF,EAAS,IAAI,CAAE,MAAO,KAAM,WAAY,CAAE,SAAU,EAAG,CAAE,CAAC,CAC1D,MAAM,EAAS,MAAM,CACnB,MAAO,OACP,WAAY,CACV,WACA,OAAQ,IACR,WAAY,OACZ,KAAM,SACP,CACF,CAAC,OACKM,EAAO,CACd,QAAQ,MAAM,4BAA6BA,EAAM,GAEnD,EAED,CAAC,EAAU,EAAU,EAAK,CAAC,CACP,EAAIL,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,QAAS,EAAU,CAAC,CAAC,EAG1G,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAO,CACb,IAAI,EAAQ,GAAUF,EAAI,EAAE,CAAC,CAC7B,GAAM,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,GAAY,EAAc,WAAW,CACtC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAgB,EAAc,eAAe,CAC9C,CAAC,GAAU,EAAc,SAAS,CAClC,CAAC,GAAe,EAAc,cAAc,CAC5C,CAAC,GAAQ,EAAc,OAAO,CAC9B,CAAC,GAAgB,EAAc,eAAe,CAC9C,CAAC,GAAU,IAAU,CACrB,CAAC,EAAU,GAAeC,EAAS,EAAW,EAAW,CACzD,CAAC,EAAM,GAAWA,EAAS,EAAE,CAC7B,EAAW,GAAY,GAAU,EAAM,SAAS,CAChD,EAAY,GAAY,GAAU,EAAM,UAAU,CA0BxD,OAzBA,MAAgB,CAEZ,EADE,IAAS,MAAQ,EACP,EAEA,EAAW,EAAW,EAEnC,CAAC,EAAY,EAAU,EAAM,EAAa,CAAC,CAC9C,MAAgB,CACd,EACE,GAAa,CACX,SACA,WACA,YACA,UAAW,EAAO,UAClB,WAAY,EAAO,WACpB,CAAC,CACH,EACA,CAAC,EAAQ,EAAU,EAAW,EAAO,UAAW,EAAO,WAAW,CAAC,CACtE,MAAgB,CAEZ,EADE,EAAO,KAAO,IAAgB,YAAc,IAAc,MACnD,2CAEA,GAAG,EAEb,CAAC,EAAM,EAAY,CAAC,CACA,EAAIC,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,KAAM,EAAO,KAAM,CAAC,CAAC,EAG1G,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAO,CACb,IAAI,EAAQ,GAAUF,EAAI,EAAE,CAAC,CAC7B,GAAM,CAACM,GAAW,EAAc,UAAU,CAC1C,OAAuB,EACrB,MACA,CACE,MAAO,CACL,QAASA,IAAY,KAAO,QAAU,OACtC,MAAO,OACP,OAAQ,OACT,CACD,SAA0B,EAAIJ,EAAW,EAAe,EAAE,CAAE,EAAM,CAAC,CACpE,CACF,EAGL,SAAS,GAAS,EAAW,CAC3B,MAAQ,IAAO,CACb,IAAI,EAAQ,GAAUF,EAAI,EAAE,CAAC,CAC7B,GAAM,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,GAAY,EAAc,WAAW,CACtC,CAAC,GAAQ,EAAc,OAAO,CAC9B,CAAC,GAAgB,EAAc,eAAe,CAC9C,CAAC,EAAU,GAAeC,EAAS,EAAW,EAAW,CAQ/D,OAPA,MAAgB,CAEZ,EADE,IAAS,MAAQ,EACP,EAEA,EAAW,EAAW,EAEnC,CAAC,EAAU,EAAY,EAAM,EAAa,CAAC,CACvB,EAAIC,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,KAAM,EAAW,IAAK,CAAC,CAAC,EAG7G,SAAS,GAAW,EAAW,CAC7B,MAAQ,IAAO,CACb,IAAIH,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,IAAM,EAAgB,IAAkB,CACxC,OAAuB,EACrBG,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,OAAQ,UAAW,CAAC,CACtE,YAAe,CACb,IAAM,EAAW,EAAO,QAAQ,MAAM,UAAY,EAAE,CACpD,GAAI,EAAS,OAAS,EAAG,CACvB,EAAS,KAAK,CACd,IAAM,EAAU,IAAI,IAAI,EAAS,EAAS,OAAS,GAAG,CAAC,OACvD,EAAc,EAAQ,CACtB,QAAQ,IAAI,EAAS,UAAU,CAC/B,EAAS,KAAK,CACd,EAAO,QAAQ,UAAU,CAAE,WAAU,CAAE,SAAS,MAAO,GAAG,MACrD,MAAM,aAAa,EAE7B,CAAC,CACH,EAGL,SAASS,GAAM,EAAW,CACxB,MAAQ,IAAO,CACb,IAAI,EAAQ,GAAUX,EAAI,EAAE,CAAC,CAC7B,IAAMO,EAAQ,GAAY,GAAU,EAAM,MAAM,CAC1C,CAAC,EAAS,GAAcN,EAAS,SAAS,CAQhD,OAPA,MAAgB,CAIZ,EAHEM,IAAU,GAGD,SAFA,UAES,EAErB,CAACA,EAAM,CAAC,CACY,EACrBL,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,UAAWK,EACX,QAASA,IAAU,GAAK,SAAW,UACpC,CAAC,CACH,EAGL,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAO,CACb,IAAI,EAAQ,GAAUP,EAAI,EAAE,CAAC,CAC7B,IAAM,EAAQ,GAAqB,GAAU,EAAM,MAAM,CACnD,EAAW,GAAqB,GAAU,EAAM,SAAS,CAC/D,OAAuB,EACrBE,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,EACT,eAAkB,CAChB,IAAIC,EACJ,EAAS,MAAM,EACd,EAAM,EAAM,aAAe,MAAgBA,EAAI,KAAK,EAAM,EAE7D,gBAAmB,CACjB,IAAIA,EACJ,EAAS,OAAO,EACf,EAAM,EAAM,cAAgB,MAAgBA,EAAI,KAAK,EAAM,EAE/D,CAAC,CACH,EAGL,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAU,CAChB,IAAM,EAAU,sCAChB,OAAuB,EACrBD,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAa,EAAU,EAAO,SAAS,OACvC,cAAiB,CACf,EAAU,UAAU,UAClB,GAAe,EAAU,EAAO,SAAS,OAAO,CACjD,EAEJ,CAAC,CACH,EAGL,SAAS,GAAQ,EAAW,CAC1B,MAAQ,IAAU,CAChB,IAAM,EAAQ,GAAqB,GAAU,EAAM,MAAM,CACnD,CAAC,EAAQ,GAAaD,EAAS,GAAM,CACrC,EAAU,sCAChB,OAAuB,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,GAAG,IAAW,GAAQ,QAAU,iBAAiB,IAAU,MAAQ,MAAQ,SAAS,IAAW,GAAQ,GAAK,MACrH,YAAe,EAAQ,KAAM,KAAM,WAAa,CAC9C,EAAU,GAAK,CAEf,GADmB,IAAU,MAAQ,EAAU,EAAO,SAAS,OAAS,GAAe,EAAU,EAAO,SAAS,OAAO,CAC7F,CAC3B,eAAiB,CACf,EAAU,GAAM,EACf,IAAI,EACP,CACH,CAAC,CACH,EAGL,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAU,CAChB,IAAM,EAAa,GAAqB,GAAU,EAAM,WAAW,CAC7D,EAAiB,GAAqB,GAAU,EAAM,eAAe,CACrE,EAAiB,CAAE,SAAU,SAAU,MAAO,QAAS,CAC7D,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,MAAQ,EACjB,cAAiB,CACf,EAAe,EAAE,CACJ,SAAS,eAAe,OAAO,CACvC,eAAe,EAAe,EAErC,cAAiB,CACf,EAAe,EAAE,CACJ,SAAS,eAAe,OAAO,CACvC,eAAe,EAAe,EAErC,cAAiB,CACf,EAAe,EAAE,CACJ,SAAS,eAAe,OAAO,CACvC,eAAe,EAAe,EAErC,cAAiB,CACf,EAAe,EAAE,CACJ,SAAS,eAAe,OAAO,CACvC,eAAe,EAAe,EAEtC,CAAC,CACH,EAGL,SAAS,GAAS,EAAW,CAC3B,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAqB,GAAU,EAAM,YAAY,CAC/D,EAAgB,GAAqB,GAAU,EAAM,cAAc,CACnE,EAAiB,GAAqB,GAAU,EAAM,eAAe,CACrE,EAAMG,EAAO,KAAK,CAClB,EAAW,GAAU,EAAK,CAC9B,OAAQ,GAET,CAAC,CAWF,OAVA,MAAgB,CACV,GAAY,IAAgB,KAC9B,EAAc,EAAE,CACP,GAAY,IAAgB,IACrC,EAAc,EAAE,CAChB,eAAiB,CACf,EAAe,KAAK,EACnB,IAAI,GAER,CAAC,EAAU,EAAY,CAAC,CACJ,EAAIH,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,MAAK,GAAI,OAAQ,CAAC,CAAC,EAGxG,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAqB,GAAU,EAAM,YAAY,CAC/D,EAAgB,GAAqB,GAAU,EAAM,cAAc,CACnE,EAAiB,GAAqB,GAAU,EAAM,eAAe,CACrE,EAAMG,EAAO,KAAK,CAClB,EAAW,GAAU,EAAK,CAC9B,OAAQ,GAET,CAAC,CAWF,OAVA,MAAgB,CACV,GAAY,IAAgB,KAC9B,EAAc,EAAE,CACP,GAAY,IAAgB,IACrC,EAAc,EAAE,CAChB,eAAiB,CACf,EAAe,KAAK,EACnB,IAAI,GAER,CAAC,EAAU,EAAY,CAAC,CACJ,EAAIH,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,MAAK,GAAI,OAAQ,CAAC,CAAC,EAGxG,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAqB,GAAU,EAAM,YAAY,CAC/D,EAAgB,GAAqB,GAAU,EAAM,cAAc,CACnE,EAAiB,GAAqB,GAAU,EAAM,eAAe,CACrE,EAAMG,EAAO,KAAK,CAClB,EAAW,GAAU,EAAK,CAC9B,OAAQ,GAET,CAAC,CAWF,OAVA,MAAgB,CACV,GAAY,IAAgB,KAC9B,EAAc,EAAE,CACP,GAAY,IAAgB,IACrC,EAAc,EAAE,CAChB,eAAiB,CACf,EAAe,KAAK,EACnB,IAAI,GAER,CAAC,EAAU,EAAY,CAAC,CACJ,EAAIH,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,MAAK,GAAI,OAAQ,CAAC,CAAC,EAGxG,SAAS,GAAQ,EAAW,CAC1B,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAqB,GAAU,EAAM,YAAY,CAC/D,EAAgB,GAAqB,GAAU,EAAM,cAAc,CACnE,EAAiB,GAAqB,GAAU,EAAM,eAAe,CACrE,EAAMG,EAAO,KAAK,CAClB,EAAW,GAAU,EAAK,CAC9B,OAAQ,GAET,CAAC,CAWF,OAVA,MAAgB,CACV,GAAY,IAAgB,KAC9B,EAAc,EAAE,CACP,GAAY,IAAgB,IACrC,EAAc,EAAE,CAChB,eAAiB,CACf,EAAe,KAAK,EACnB,IAAI,GAER,CAAC,EAAU,EAAY,CAAC,CACJ,EAAIH,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,MAAK,GAAI,OAAQ,CAAC,CAAC,EAGxG,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAU,CAChB,IAAM,EAAa,GAAqB,GAAU,EAAM,WAAW,CAC7D,EAAW,GAAqB,GAAU,EAAM,SAAS,CACzD,EAAc,GAAqB,GAAU,EAAM,YAAY,CACrE,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,IAAe,GAAK,IAAa,GAAQ,wBAA0B,IAAa,GAAO,sBAAwB,sBACxH,YAAe,CACb,EAAY,CAAC,EAAS,EAEzB,CAAC,CACH,EAGL,SAAS,GAAa,EAAW,CAC/B,MAAQ,IAEiB,EACrB,MACA,CACE,MAAO,CACL,QALW,GAAqB,GAAU,EAAM,SAAS,GAKnC,GAAO,OAAS,OACtC,MAAO,cACP,OAAQ,cACT,CACD,SAA0B,EAAIA,EAAW,EAAe,EAAE,CAAE,EAAM,CAAC,CACpE,CACF,CAGL,SAAS,GAAkB,EAAW,CACpC,MAAQ,IAAU,CAChB,IAAM,EAAW,GAAqB,GAAU,EAAM,SAAS,CACzD,CAAC,EAAM,GAAW,EAAc,OAAO,CACvC,CAAC,EAAc,GAAmB,EAAc,eAAe,CAC/D,CAAC,EAAO,GAAY,EAAc,QAAQ,CAC1C,CAAC,EAAY,GAAiB,EAAc,aAAa,CACzD,CAAC,EAAU,GAAe,EAAc,WAAW,CAqBzD,OApBA,MAAgB,CACV,IAAU,WAAc,GAA4B,MACtD,EAAQ,KAAK,CACT,GAAa,GAA4C,MAC3D,EAAgB,EAAS,EAElB,GACT,EAAQ,KAAK,CAEX,GACF,EAAgB,GAAG,EAEpB,CAAC,EAAM,EAAc,EAAO,EAAS,CAAC,CACzC,MAAgB,CACV,IAAS,MAAQ,IACnB,EAAS,UAAU,CACnB,EAAc,EAAE,CAChB,EAAY,EAAa,GAE1B,CAAC,EAAM,EAAa,CAAC,CACD,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,cAAe,IAAa,GAAO,OAAS,OAC7C,CAAC,CACH,EAGL,SAAS,GAAwB,EAAW,CAC1C,MAAQ,IAAU,CAChB,IAAiB,CACjB,GAAM,CAAC,EAAiB,GAAsBD,EAAS,GAAK,CAQ5D,OAPA,MAAgB,CACd,IAAM,EAAW,gBAAkB,CACd,SAAS,eAAe,4BAA4B,EACvD,EAAmB,GAAK,EACvC,IAAI,CACP,UAAa,cAAc,EAAS,EACnC,EAAE,CAAC,CACiB,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,MAAM,CAAE,CACpD,QAAS,EAAkB,EAAI,EAC/B,OAAQ,WACT,CAAC,CACH,CAAC,CACH,EAGL,SAAS,GAAoB,EAAW,CACtC,MAAQ,KACN,IAAiB,CACM,EAAIA,EAAW,EAAe,EAAE,CAAE,EAAM,CAAC,EAGpE,SAAS,GAAgB,EAAW,CAClC,MAAQ,IAAO,CACb,IAAIH,EAAKC,EAAI,CAAE,SAAUD,EACzB,OAAuB,EAAIG,EAAW,EAAc,EAAe,EAAE,CADhC,GAAUH,EAAI,CAAC,QAAQ,CAAC,CACgB,CAAE,CAAE,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,MAAO,OAAQ,CAAC,CAAE,CAAC,CAAC,EAG3J,SAAS,GAAgB,EAAW,CAClC,MAAQ,IACiB,EACrBG,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAe,EAAQ,KAAM,KAAM,WAAa,CAC9C,OAAuB,CACL,GAAM,iBAAiB,CAC/B,OAAO,IAAK,IAAI,EACxB,EACF,CACH,CAAC,CACH,CAGL,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAU,CAChB,IAAM,EAAgB,IAAkB,CAClC,EAAc,GAAY,GAAU,EAAM,YAAY,CACtD,EAAG,GAAW,EAAc,OAAO,CACnC,EAAG,GAAmB,EAAc,eAAe,CACnD,CAAC,EAAO,GAAYD,EAAS,GAAG,CAChC,CAAC,EAAO,GAAYA,EAAS,GAAK,CAMxC,OAAuB,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,SAAW,GAAM,CACf,IAAM,EAAaU,EAAE,OAAO,MAE5B,GADA,EAAS,EAAW,CAChB,GAAW,EAAW,CAAE,CAC1B,EAAS,GAAK,CAId,IAAM,EAHY,IAAI,gBACpB,EAAW,MAAM,IAAI,CAAC,IAAM,GAC7B,CAC0B,IAAI,QAAQ,GAAK,UAC5C,EAAc,EAAW,CACzB,EAAY,EAAW,CACnB,IACF,EAAQ,KAAK,CACb,EAAgB,GAAG,OAGrB,EAAS,GAAM,EAGpB,CAAC,CACH,EAGL,SAAS,GAAmB,EAAW,CACrC,MAAQ,IAAO,CACb,IAAIb,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,GAAM,CAAC,EAAa,GAAkB,EAAc,cAAc,CAClE,OAAuB,EACrBG,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,MAAO,OAAQ,CAAC,CAClE,QAAS,IAAgB,WAAa,WAAa,YACnD,kBAAqB,EAAe,WAAW,CAC/C,mBAAsB,EAAe,YAAY,CAClD,CAAC,CACH,EAGL,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAO,CACb,IAAIH,EAAKC,EAAI,CAAE,SAAUD,EAAI,EAAQ,GAAUA,EAAI,CAAC,QAAQ,CAAC,CAC7D,GAAM,CAAC,GAAU,IAAU,CACrB,CAAC,GAAe,EAAc,cAAc,CAC5C,CAAC,EAAQ,GAAa,EAAc,SAAS,CAC7C,EAAwB,EAAO,aAAe,UAAY,EAAO,aAAe,OAChF,EAAoB,IAAgB,aAAe,EAWzD,OAVA,MAAgB,CACV,IAAW,QAAU,CAAC,GACxB,EAAU,MAAM,EAEjB,CAAC,EAAa,EAAmB,EAAQ,EAAU,CAAC,CACvD,MAAgB,CACV,GAAyB,IAAgB,YAC3C,EAAU,OAAO,EAElB,CAAC,EAAa,EAAuB,EAAU,CAAC,CAC5B,EACrBG,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAC9C,QAAS,EAAoB,OAAS,OACtC,MAAO,OACR,CAAC,CACH,CAAC,CACH,EAGL,SAAS,GAAqB,EAAW,CACvC,MAAQ,IAAU,CAChB,IAAM,EAAc,GAAY,GAAU,EAAM,YAAY,CAC5D,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,MAAM,CAAE,CACpD,QAAS,EAAc,OAAS,OAChC,QAAS,EAAc,EAAI,EAC3B,WAAY,2BACb,CAAC,CACH,CAAC,CACH,+BA76ByB,KASA,KAGA,KAGA,KAIA,KAKA,KAMA,IASf,KACiD,IACR,CA4EpD,GAAS,uBCtHiB,IAGU,CACpCW,GAAW,GAAO,CACpB,IAAIC,EAAKC,EAAI,CAAE,QAAQ,GAAO,YAAY,WAAcD,EACxD,OAAuB,EACrB,MACA,EAAc,EAAe,EAAE,CAHmC,GAAUA,EAAI,CAAC,QAAS,YAAY,CAAC,CAGhE,CAAE,CACvC,YACA,MAAO,CACL,SAAU,WACV,WAAY,qBACZ,QAAS,uBACV,CACD,SAA0B,EACxB,MACA,CACE,MAAO,CACL,SAAU,WACV,IAAK,MACL,KAAM,MACN,UAAW,wBACX,WAAY,SACZ,SAAU,MACX,CACD,SAAU,GAAS,EACpB,CACF,CACF,CAAC,CACH,KCjCH,SAAS,IAAW,CAClB,MAAO,IAAW,OAAO,OAAS,OAAO,OAAO,MAAM,CAAG,SAAS,EAAG,CACnE,IAAK,IAAIE,EAAI,EAAGA,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAIC,EAAI,UAAUD,GAClB,IAAK,IAAIE,KAAKD,GAAI,EAAE,EAAE,eAAe,KAAKA,EAAGC,EAAE,GAAK,EAAEA,GAAKD,EAAEC,IAE/D,OAAOC,GACN,GAAS,MAAM,KAAM,UAAU,CA2NpC,SAAS,GAA8B,EAAG,EAAG,CAC3C,GAAYD,GAAR,KAAW,MAAO,EAAE,CACxB,IAAID,EAAI,EAAE,CACV,IAAK,IAAIE,KAAKD,EAAG,GAAI,EAAE,CAAC,eAAe,KAAKA,EAAGC,EAAE,CAAE,CACjD,GAAWH,EAAE,QAAQG,EAAE,GAAnB,GAAqB,SACzB,EAAEA,GAAKD,EAAEC,GAEX,OAAOF,EAcT,SAAS,GAAiB,EAAS,CACjC,IAAI,EAAcG,EAAO,EAAQ,CAIjC,OAHA,MAAgB,CACd,EAAY,QAAU,GACtB,CACKC,GAAa,EAAO,IAAU,EAAY,SAAW,EAAY,QAAQ,EAAO,EAAM,CAAE,EAAE,CAAC,CAySpG,SAAS,GAAmB,EAAM,CAChC,GAAI,CACF,QAAQ,GACN,EACAH,EAAI,EAAQ,EAChB,MAAO,CACL,QACA,OAAQA,EACR,GAAIA,EACJ,GAAIA,EACL,CAEH,SAAS,GAAuB,EAAO,EAAK,CAC1C,GAAI,CACF,GAAA,EACA,MACE,GAAmB,EAAM,CACzB,EAAc,GAAe,EAAM,CACnC,GAAe,IAAM,GAAoB,EAAO,EAAI,EAAG,GAAK,GAAK,GAAM,KACvE,EAAa,EAAI,EAAI,IAAM,EAC3B,EAAY,EAAM,YAAc,YAAc,GAAK,EACvD,MAAO,CACL,EAAGI,EAAK,EAAa,KAAK,IAAI,EAAY,CAAG,EAC7C,EAAG,EAAK,EAAa,KAAK,IAAI,EAAY,CAAG,EAC9C,CAEH,SAAS,GAAe,EAAO,CAC7B,GAAI,CACF,QAAQ,GACN,EACJ,OAAO,EAAQ,EAEjB,SAAS,GAAoB,EAAO,EAAO,EAAQ,CACjD,IAAI,EAAa,EAAM,OAAS,EAC5B,EAAY,EAAM,UAKtB,OAJI,GAAU,IAAc,YAAa,EAAQ,EAAa,EACrD,IAAc,YAAa,EAAQ,IAAM,EAAa,EACtD,GAAU,IAAc,gBAAiB,EAAQ,EAAa,IAAM,EACpE,IAAc,kBAAiB,EAAQ,EAAa,GACtD,GAAI,EAAO,IAAI,CAExB,SAAS,GAAuB,EAAO,EAAG,EAAG,CAC3C,GAAI,CACF,GAAA,EACA,MACE,GAAmB,EAAM,CACzB,EAAc,GAAe,EAAM,CACvC,EAAIA,EAAKC,EACT,EAAI,EAAKC,EACT,IAAI,EAAM,GAAoB,EAAO,KAAK,MAAM,CAACA,EAAG,CAACD,EAAE,EAAI,IAAM,IAAK,CAClE,EAAa,KAAK,IAAI,GAAKA,EAAGC,EAAE,CAAE,EAAY,CAClD,MAAO,CACL,EAAG,KAAK,MAAM,EAAI,CAClB,EAAG,KAAK,MAAM,IAAM,EAAc,EAAW,CAC9C,wJA9WwB,IA4CqB,CA9Q5C,GAAY,GAAQ,8BAA8B,KAAK,EAAI,CAG3D,GAAU,IACV,GAAU,IACV,GAAS,IACT,GAAc,GAAS,CACzB,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACA,EAAM,KAAK,IAAIN,EAAGO,EAAGC,EAAE,CACvB,EAAQ,EAAM,KAAK,IAAIR,EAAGO,EAAGC,EAAE,CAC/B,EAAK,EAAQ,IAAQR,GAAKO,EAAIC,GAAK,EAAQ,IAAQD,EAAI,GAAKC,EAAIR,GAAK,EAAQ,GAAKA,EAAIO,GAAK,EAAQ,EACvG,MAAO,CACL,EAAG,IAAM,EAAK,EAAI,EAAK,EAAI,GAC3B,EAAG,EAAM,EAAQ,EAAM,GAAS,EAChC,EAAG,EAAM,GAAU,GACnB,EAAA,EACD,EAEC,GAAoB,GAAS,CAC/B,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACE,GAAW,EAAK,CACpB,MAAO,QAAUE,EAAI,KAAOC,EAAI,MAAQC,EAAI,MAAQC,EAAI,KAEtD,GAAc,GAAU,CAC1B,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACA,GAAM,IAAMF,GAAKG,EAAI,GACzB,MAAO,CACL,EAAA,EACA,EAAG,EAAK,GAAK,EAAK,IAAMH,EAAIG,EAAI,IAAU,GAAM,GAAS,EAAK,IAAM,GAAM,GAAS,EACnF,EAAG,EAAK,EACR,EAAA,EACD,EAGK,GAAU,IAEX,IAAW,KAAK,GAAK,GAExB,GAAa,GAAU,CACzB,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,GACE,EAEJ,MAAO,KAAQ,GAAU,MAAM,EAAIJ,EAAE,OAAO,CAAC,KAAK,IAAI,CAAGA,IAD/CT,GAAK,GAAKO,GAAK,EAAIC,GACmC,SAAS,GAAG,CAAC,EAE3E,GAAc,GAAU,CAC1B,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACA,EAAQ,OAAOI,GAAM,WAAaA,EAAI,IAAM,KAAQ,SAAS,GAAG,CAAC,MAAM,EAAE,CAC7E,MAAO,GAAK,GAAU,CACpB,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,EACD,CAAC,EAAI,GAAgB,KAEpB,GAAa,GAAQ,GAAW,GAAU,EAAI,CAAC,CAC/C,GAAa,GAAQ,CACvB,IAAI,EAAQ,EAAI,QAAQ,IAAK,GAAG,CAC5B,MAAM,KAAK,EAAI,EAAI,EAAM,SAAW,IACtC,EAAM,IAAM,EAAM,OAAO,EAAE,CAAG,EAAM,OAAO,EAAE,CAAG,EAAM,OAAO,EAAE,CAAG,EAAM,OAAO,EAAE,CAAG,EAAM,OAAO,EAAE,CAAG,EAAM,OAAO,EAAE,EAEvH,IAAI,EAAU,OAAO,iBAAkB,IAAI,CACvC,CAACZ,EAAGO,EAAGC,EAAI,EAAGI,GAAK,EAAI,MAAM,EAAI,CAAC,IAAK,GAAM,SAASC,EAAG,GAAG,CAAC,CACjE,MAAO,CACL,EACA,EAAA,EACA,EAAA,EACA,GAAID,GAAgB,KAAO,GAC5B,EAEC,GAAc,GAAU,CAC1B,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACA,EAAKH,EAAI,GAAI,EAAKC,EAAI,GAAQ,EAAKG,EAAI,GAAQ,EAAK,KAAK,MAAM,EAAG,CAAG,EACrEC,EAAI,EAAK,KAAK,MAAM,EAAG,CAAE,EAAK,GAAU,GAAM,EAAI,GAAK,EAAK,GAAU,GAAM,EAAI,EAAKA,GAAI,EAAK,GAAU,GAAM,EAAI,GAAM,EAAIA,IAChI,GAAM,GACN,IAAI,EAAO,EAAE,CACb,OAAQ,EAAR,CACE,IAAK,GACH,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAI,EACT,MACF,IAAK,GACH,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAI,EACT,MACF,IAAK,GACH,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAI,EACT,MACF,IAAK,GACH,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAI,EACT,MACF,IAAK,GACH,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAI,EACT,MACF,IAAK,GACH,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAI,EACT,MAKJ,MAHA,GAAK,EAAI,KAAK,MAAM,EAAK,EAAE,CAC3B,EAAK,EAAI,KAAK,MAAM,EAAK,EAAE,CAC3B,EAAK,EAAI,KAAK,MAAM,EAAK,EAAE,CACpB,GAAS,EAAE,CAAE,EAAM,CACxB,EAAA,EACD,CAAC,EAEA,GAAa,GAAU,CACzB,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACJ,MAAO,CACL,EAAA,EACA,EAAA,EACA,EAAA,EACD,EAEC,GAAa,GAAW,CAC1B,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACJ,MAAO,CACL,EAAA,EACA,EAAA,EACA,EAAA,EACD,EAEC,GAAa,GAAS,GAAU,GAAW,EAAK,CAAC,CACjD,GAAa,GAAW,CAC1B,GAAI,CACF,EAAA,EACA,EAAA,EACA,EAAA,GACE,EACJ,MAAO,CACL,EAAA,EACA,EAAA,EACA,EAAA,EACD,EAEC,GAAS,GAAQ,CACnB,IAAI,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAgBJ,OAfI,OAAO,GAAQ,UAAY,GAAS,EAAI,EAC1C,EAAO,GAAU,EAAI,CACrB,EAAM,GACG,OAAO,GAAQ,WACxB,EAAO,GAEL,IACF,EAAM,GAAU,EAAK,CACrB,EAAO,GAAW,EAAK,CACvB,EAAO,GAAW,EAAK,CACvB,EAAO,GAAW,EAAK,CACvB,EAAM,GAAU,EAAK,CACrB,EAAM,GAAU,EAAK,CACrB,EAAM,GAAU,EAAK,EAEhB,CACL,MACA,MACA,MACA,OACA,OACA,OACA,MACA,OACD,EAgCC,GAAW,GAAU,YAAa,EAClC,GAAsB,GAAU,CAClC,CAAC,GAAQ,EAAM,EAAI,EAAM,gBAAkB,EAAM,gBAAgB,EAE/D,GAAQ,SAAgB,EAAQ,EAAK,EAAK,CAO5C,OANI,IAAQ,IAAK,KACf,EAAM,GAEJ,IAAQ,IAAK,KACf,EAAM,GAED,EAAS,EAAM,EAAM,EAAS,EAAM,EAAM,GAE/C,IAAuB,EAAM,IAAU,CACzC,IAAI,EAAO,EAAK,uBAAuB,CACnC,EAAU,GAAQ,EAAM,CAAG,EAAM,QAAQ,GAAK,EAClD,MAAO,CACL,KAAM,IAAO,EAAQ,OAAS,EAAK,KAAO,EAAO,cAAgB,EAAK,MAAM,CAC5E,IAAK,IAAO,EAAQ,OAAS,EAAK,IAAM,EAAO,cAAgB,EAAK,OAAO,CAC3E,MAAO,EAAK,MACZ,OAAQ,EAAK,OACb,EAAG,EAAQ,OAAS,EAAK,KAAO,EAAO,aACvC,EAAG,EAAQ,OAAS,EAAK,IAAM,EAAO,aACvC,EAKC,GAAY,CAAC,YAAa,YAAa,SAAU,SAAS,CAC1D,GAA8B,EAAM,YAAY,EAAO,IAAQ,CACjE,GAAI,CACF,YAAY,sBACZ,YACA,SACA,UACE,EAAO,EAAQ,GAA8B,EAAO,GAAU,CAC9D,EAAYE,EAAQ,KAAK,CACzB,EAAaA,EAAQ,GAAM,CAC3B,CAAC,EAAY,GAAeC,EAAS,GAAM,CAC3C,EAAiB,GAAiB,EAAO,CACzC,EAAgB,GAAiB,EAAO,CACxC,EAAW,GACT,EAAW,SAAW,CAAC,GAAQ,EAAM,CAAS,IAClD,EAAW,QAAU,GAAQ,EAAM,CAC5B,IAEL,EAAaC,EAAc,GAAU,CACvC,GAAmB,EAAM,EACZ,GAAQ,EAAM,CAAG,EAAM,QAAQ,OAAS,EAAI,EAAM,QAAU,IAC3D,EAAU,QACtB,GAAkB,EAAe,GAAoB,EAAU,QAAS,EAAM,CAAE,EAAM,CAEtF,EAAY,GAAM,EAEnB,CAAC,EAAe,CAAC,CAChB,EAAgBA,MAAmB,EAAY,GAAM,CAAE,EAAE,CAAC,CAC1D,EAAuBA,EAAc,GAAU,CACjD,IAAI,EAAc,EAAQ,EAAO,iBAAmB,EAAO,oBAC3D,EAAY,EAAW,QAAU,YAAc,YAAa,EAAW,CACvE,EAAY,EAAW,QAAU,WAAa,UAAW,EAAc,EACtE,EAAE,CAAC,CACN,OACE,EAAqB,EAAW,KACnB,CACX,GAAc,EAAqB,GAAM,GAE1C,CAAC,EAAY,EAAqB,CAAC,CACtC,IAAI,EAAkBA,EAAc,GAAU,CAC5C,GAAmB,EAAM,YAAY,CAChC,EAAQ,EAAM,YAAY,GAC/B,GAAiB,EAAc,GAAoB,EAAU,QAAS,EAAM,YAAY,CAAE,EAAM,YAAY,CAC5G,EAAY,GAAK,GAChB,CAAC,EAAc,CAAC,CACnB,OAAuB,EAAK,MAAO,GAAS,EAAE,CAAE,EAAO,CACrD,UAAW,CAAC,EAAW,GAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CACjE,MAAO,GAAS,EAAE,CAAE,EAAM,MAAO,CAC/B,YAAa,OACd,CAAC,CACF,IAAK,EACL,SAAU,EACV,YAAa,EACb,aAAc,EACf,CAAC,CAAC,EACH,CACF,GAAY,YAAc,cACtB,GAAc,GAKd,GAAa,CAAC,YAAa,YAAa,OAAQ,MAAO,QAAS,YAAY,CAC5E,GAAW,GAAS,CACtB,GAAI,CACF,YACA,YACA,OACA,MACA,QACA,aACE,EAAM,EAAQ,GAA8B,EAAM,GAAW,CAC7D,EAAe,GAAS,EAAE,CAAE,EAAO,CACrC,SAAU,WACV,OACA,MACD,CAAC,CACE,EAAe,GAAS,CAC1B,MAAO,GACP,OAAQ,GACR,UAAW,kCACX,aAAc,MACd,gBAAiB,wCAClB,CAAE,GAAuC,MAAO,CAC/C,UAAW,EAAO,wBAA0B,wBAC7C,CAAC,CACF,OAAuB,EAAM,MAAO,GAAS,CAC3C,UAAW,EAAY,aAAe,GAAa,IACnD,MAAO,EACR,CAAE,EAAO,CACR,SAA0B,EAAM,MAAO,GAAS,CAC9C,UAAW,EAAY,QACxB,CAAE,EAAW,CACZ,MAAO,EACR,CAAC,CAAC,CACJ,CAAC,CAAC,EAMD,GAAa,CAAC,YAAa,YAAa,OAAQ,aAAc,UAAW,aAAc,eAAgB,SAAU,QAAS,SAAU,YAAa,QAAS,WAAY,UAAU,CAChL,GAAiB,yKACjB,GAAwB,EAAO,YAAY,EAAO,IAAQ,CAC5D,GAAI,CACF,YAAY,gBACZ,YACA,OACA,aACA,UAAU,EAAE,CACZ,aAAa,EAAE,CACf,eAAe,EAAE,CACjB,SAAS,EACT,QACA,SAAS,GACT,YAAY,aACZ,QACA,WACA,WACE,EAAO,EAAQ,GAA8B,EAAO,GAAW,CAC/D,EAAgB,GAAW,CAC7B,GAAY,EAAS,GAAS,EAAE,CAAE,EAAM,CACtC,EAAG,IAAc,aAAe,EAAO,KAAO,EAAO,IACtD,CAAC,CAAE,EAAO,EAET,EAAU,GAAiB,OAAO,OAAO,EAAE,CAAE,EAAM,CACrD,EAAG,EACJ,CAAC,CAAC,CACC,EAAkB,uBAAyB,IAAc,aAAe,QAAU,UAAY,8BAAgC,EAAU,SACxI,EAAW,EAAE,CACb,IAAc,aAChB,EAAS,KAAO,EAAK,EAAI,IAAM,IAE/B,EAAS,IAAM,EAAK,EAAI,IAAM,IAEhC,IAAI,EAAe,GAAS,CAC1B,2BAA4B,OAC5B,mCAAoC,qBACpC,6BAA8B,mCAC9B,aAAc,EACd,WAAY,OAAS,GAAiB,gBACtC,gBAAiB,gCAClB,CAAE,EAAO,CACR,SAAU,WACX,CAAE,CACD,QACA,SACD,CAAC,CACE,EAAiB,GAAW,OAAO,GAAY,WAAa,EAAQ,GAAS,CAC/E,YACD,CAAE,EAAc,EAAS,CAAC,CAAmB,EAAM,GAAS,GAAS,EAAE,CAAE,EAAc,CACtF,YACD,CAAE,EAAS,CAAC,CACb,OAAuB,EAAM,MAAO,GAAS,EAAE,CAAE,EAAO,CACtD,UAAW,CAAC,EAAW,EAAY,IAAM,EAAW,GAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC9F,MAAO,EACP,MACA,SAAU,CAAiB,EAAM,MAAO,GAAS,EAAE,CAAE,EAAS,CAC5D,MAAO,GAAS,CACd,MAAO,EACP,SAAU,WACV,WAAY,GAAc,EAC1B,aAAc,EACf,CAAE,EAAQ,MAAM,CAClB,CAAC,CAAC,CAAkB,EAAM,GAAa,GAAS,EAAE,CAAE,EAAY,CAC/D,MAAO,GAAS,EAAE,CAAE,EAAW,MAAO,CACpC,MAAO,EACP,OAAQ,EACR,SAAU,WACX,CAAC,CACF,OAAQ,EACR,OAAQ,EACR,SAAU,EACX,CAAC,CAAC,CAAC,CACL,CAAC,CAAC,EACH,CACF,GAAM,YAAc,QAChB,GAAe,GAIf,GAAa,CAAC,YAAa,YAAa,WAAY,YAAa,OAAO,CACxE,GAA8B,EAAO,YAAY,EAAO,IAAQ,CAClE,GAAI,CACF,YAAY,qBACZ,YACA,SAAU,EACV,YAAY,aACZ,QACE,EAAO,EAAQ,GAA8B,EAAO,GAAW,CAC/D,EAAY,GAAiB,GAAS,EAAE,CAAE,EAAM,CAClD,EAAG,EACH,EAAG,IACJ,CAAC,CAAC,CACH,OAAuB,EAAM,GAAc,GAAS,CAClD,MACD,CAAE,EAAO,CACR,UAAW,EAAY,KAAO,GAAa,IAC3C,KAAM,CACJ,EAAG,EAAK,EACR,EAAG,EAAK,EACR,EAAG,EAAK,EACR,EAAG,EAAI,EAAK,EAAI,IACjB,CACD,YACA,WAAY,uBAAyB,IAAc,aAAe,QAAU,UAAY,KAAO,EAAY,kBAC3G,UAAW,EAAG,IAAgB,CAC5B,GAAa,EAAU,CACrB,EAAG,IAAc,aAAe,IAAM,EAAY,KAAO,IAAM,IAAM,EAAY,IAAM,IACxF,CAAC,EAEL,CAAC,CAAC,EACH,CACF,GAAY,YAAc,cACtB,GAAe,GAQf,GAAY,+GACZ,GAAY,GAAS,CACvB,GAAI,CACF,YACA,MAAO,EACP,OACA,MACA,QACA,aACE,EACA,EAAY,GAAS,EAAE,CAAE,EAAO,CAClC,SAAU,WACV,MACA,OACD,CAAC,CAEF,OAAuB,EAAM,MAAO,CAClC,UAFQ,EAAY,aAAe,GAAa,IAGhD,MAAO,EACP,SAA0B,EAAM,MAAO,CACrC,UAAW,EAAY,QACvB,MAAO,CACL,MAAO,GACP,OAAQ,GACR,UAAW,wBACX,UAAW,GACX,aAAc,MACd,gBAAiB,OAClB,CACD,SAA0B,EAAM,MAAO,CACrC,MAAO,CACL,MAAO,EACP,aAAc,MACd,SAAU,WACV,gBAAiB,EAClB,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAIA,GAAM,KAAK,GAAK,EAChB,IAAO,EAAG,KAAON,EAAIX,EAAIA,GAAKA,EAC9B,IAAQ,EAAG,IAAM,KAAK,KAAKI,EAAIA,EAAIC,EAAIA,EAAE,CA6DzC,GAAa,CAAC,YAAa,SAAU,UAAW,YAAa,QAAS,QAAS,SAAU,OAAQ,YAAa,QAAS,QAAS,WAAW,CAC3I,GAAyB,8DACzB,GAA6B,8DAC7B,GAAwB,EAAO,YAAY,EAAO,IAAQ,CAC5D,GAAI,CACF,YAAY,gBACZ,SAAS,EACT,UACA,YACA,QACA,QAAQ,IACR,SAAS,IACT,OACA,YAAY,gBACZ,QAAQ,IACR,MAAO,EACP,YACE,EAAO,EAAQ,GAA8B,EAAO,GAAW,CAC/D,EAAO,OAAO,GAAW,UAAY,GAAS,EAAO,CAAG,GAAU,EAAO,CAAG,GAAU,EAAE,CACxF,EAAM,EAAS,GAAU,EAAK,CAAG,GACjC,EAAY,GAAuB,CACrC,QACD,CAAE,EAAK,CACJ,EAAW,CACb,IAAK,IACL,KAAM,IACN,MAAO,EACR,CACG,GAAgB,EAAa,IAAU,CACzC,IAAI,EAAS,GAAuB,CAClC,QACD,CAAE,EAAQ,EAAY,EAAG,EAAS,EAAY,EAAE,CAC7C,EAAa,CACf,EAAG,EAAO,EACV,EAAG,EAAO,EACV,EAAG,EAAK,EACR,EAAG,EAAK,EACT,CACD,GAAY,EAAS,GAAM,EAAW,CAAC,EAErC,EAAe,CACjB,OAAQ,EACR,UAAW,aAAe,EAAU,EAAI,OAAS,EAAU,EAAI,QAAU,IAAS,KAAO,IAAS,IAAM,YAAc,IAAS,KAAO,IAAS,IAAM,YAAc,IACpK,CACG,EAAiB,GAAW,OAAO,GAAY,WAAa,EAAQ,GAAS,CAC/E,YACA,MAAO,EACR,CAAE,EAAS,CAAC,CAAmB,EAAM,GAAU,GAAS,CACvD,YACA,MAAO,EACR,CAAE,EAAS,CAAC,CACb,OAAuB,EAAO,GAAa,GAAS,CAClD,UAAW,CAAC,EAAW,GAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAClE,CAAE,EAAO,CACR,MAAO,GAAS,CACd,SAAU,WACV,QACA,UAAW,IAAS,KAAO,IAAS,IAAM,cAAgB,IAAS,KAAO,IAAS,IAAM,cAAgB,GACzG,SACD,CAAE,EAAM,CACT,MACA,OAAQ,EACR,OAAQ,EACR,SAAU,CAAC,EAAgC,EAAM,MAAO,CACtD,MAAO,CACL,SAAU,WACV,aAAc,MACd,WAAY,IAAc,gBAAkB,GAAyB,GACrE,UAAW,YAAc,EAAQ,IAAM,OACvC,MAAO,EACR,CACF,CAAC,CAAkB,EAAM,MAAO,CAC/B,MAAO,CACL,SAAU,WACV,aAAc,MACd,WAAY,0DACZ,MAAO,EACR,CACF,CAAC,CAAkB,EAAM,MAAO,CAC/B,MAAO,CACL,gBAAiB,OACjB,aAAc,MACd,SAAU,WACV,MAAO,EACP,QAAS,OAAO,EAAK,GAAM,SAAW,EAAI,EAAK,EAAI,IAAM,EAC1D,CACF,CAAC,CAAC,CACJ,CAAC,CAAC,EACH,CACF,GAAM,YAAc,QAChB,GAAe,MC1rBnB,SAASa,GAAkB,EAAK,EAAS,CACvC,MAAgB,CACd,IAAM,EAAY,GAAU,CACtB,CAAC,EAAI,SAAW,EAAI,QAAQ,SAAS,EAAM,OAAO,EAGtD,EAAQ,EAAM,EAIhB,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,aAAc,EAAS,KACpC,CACX,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,aAAc,EAAS,GAErD,CAAC,EAAK,EAAQ,CAAC,mBAfc,qBCAD,CAC7B,GAAgB,GAAS,CAC3B,GAAM,CAAC,EAAS,GAAcC,OAAgB,CAAE,OAAM,MAAO,EAAM,EAAE,CAKrE,OAJI,EAAQ,MAAQ,IAClB,EAAQ,KAAO,EACf,EAAQ,MAAQ,GAEX,CACL,EAAQ,MACP,GAAU,CACT,EAAW,CAAE,OAAM,QAAO,CAAC,EAE9B,6BCX2B,KAMA,KAGA,KAGA,IAGC,IAEyB,CACpDC,GAAc,GACZ,CAACC,GAAS,OAAOA,GAAU,SAAiB,GACzC,qCAAqC,KAAKA,EAAM,CAErDC,IAA2B,EAAO,EAAW,YACxCF,GAAWC,EAAM,CAAGA,EAAQ,EAEjC,GAAsBE,GAAkB,CAAE,QAAQ,GAAI,eAAc,YAAY,IAAQ,CAC1F,GAAM,CAAC,EAAa,GAAkB,GAAa,EAAa,CAC1D,CAAC,EAAQ,GAAaC,EAAS,GAAM,CAC3C,MAAgB,CACd,EAAe,EAAa,EAC3B,EAAE,CAAC,CACN,MAAgB,CACd,EAAS,EAAY,EACpB,CAAC,EAAY,CAAC,CACjB,IAAM,EAASC,EAAO,KAAK,CAE3B,OADA,GAAkB,MAAc,EAAU,GAAM,CAAC,CAC1B,EAAK,MAAO,CAAE,UAAW,oBAAqB,SAAU,CAC7E,GAAyB,EAAKC,EAAU,CAAE,SAAU,CAClC,EAAI,QAAS,CAAE,UAAW,uCAAwC,SAAU,EAAO,CAAC,CACpF,EAAIC,GAAS,CAAE,UAAW,MAAO,CAAC,CACnD,CAAE,CAAC,CACY,EAAK,MAAO,CAAE,UAAW,0CAA2C,SAAU,CAC5E,EACd,MACA,CACE,UAAW,yBACX,MAAO,CAAE,WAAYL,GAAwB,EAAY,CAAE,CAC3D,YAAe,CACb,EAAU,CAAC,EAAO,EAErB,CACF,CACe,EACd,MACA,CACE,IAAK,EACL,MAAO,CACL,MAAO,cACP,OAAQ,cACR,SAAU,WACV,OAAQ,GACR,KAAM,IACN,OAAQ,IACR,QAAS,IAAW,GAAO,QAAU,OACtC,CACD,SAA0B,EACxB,MACA,CACE,MAAO,CACL,QAAS,OACT,MAAO,cACP,OAAQ,cACR,WAAY,QACZ,QAAS,GACT,cAAe,SACf,eAAgB,SAChB,WAAY,SACZ,IAAK,GACL,aAAc,EACd,OAAQ,6CACT,CACD,SAAU,CACQ,EACdM,GACA,CACE,MAAON,GAAwB,EAAY,CAC3C,SAAW,GAAU,CACnB,EAAeD,EAAM,IAAI,EAE3B,MAAO,IACP,OAAQ,IACT,CACF,CACe,EACdQ,GACA,CACE,MAAO,IACP,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,CAChD,KAAM,GAAUP,GAAwB,EAAY,CAAC,CACrD,SAAW,GAAU,CAEnB,EACE,GAAU,CACR,EAAG,GAHYA,GAAwB,EAAY,CAG3B,CAAC,EAEzB,EAAGD,EAAM,EACT,EAAGA,EAAM,EACT,EAAG,EACJ,CAAC,CACH,EAEJ,CACF,CACe,EACd,MACA,CACE,MAAO,CACL,MAAO,GACP,OAAQ,GACR,WAAY,QACZ,SAAU,WACV,aAAc,EACd,OAAQ,GACR,UAAW,gBACZ,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACe,EACd,QACA,CACE,KAAM,OACN,MAAO,EACP,SAAW,GAAM,EAAeS,EAAE,OAAO,MAAM,CAC/C,UAAW,gHACZ,CACF,CACF,CAAE,CAAC,CACL,CAAE,CAAC,EACJ,IC7IF,SAAS,GAAkB,EAAK,EAAS,CACvC,MAAgB,CACd,IAAM,EAAY,GAAU,CACtB,CAAC,EAAI,SAAW,EAAI,QAAQ,SAAS,EAAM,OAAO,EAGtD,EAAQ,EAAM,EAIhB,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,aAAc,EAAS,KACpC,CACX,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,aAAc,EAAS,GAErD,CAAC,EAAK,EAAQ,CAAC,yBAjBkB,IACJ,CAC9BC,IAAM,GAAG,IAAY,EAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI,MAiBpC,CACpB,GAAI,CACF,OAAO,EAAa,SAAS,GAAK,EAAa,aACrC,CACV,MAAO,OAEP,CACA,GAAU,wBCzBgB,IAGC,IACe,CAC1C,GAAiBE,GAClB,CAAE,QAAO,QAAO,WAAU,QAAO,QAAQ,IACjB,EACrB,QACA,CACE,UAAWC,GACT,iIACA,EAAQ,gBAAkB,eAC3B,CACD,QAAS,EACT,SAAU,CACQ,EACd,QACA,CACE,OACA,QACA,KAAM,QACN,GAAI,EACJ,UAAW,iDACX,SAAW,GAAM,EAASC,EAAE,OAAO,MAAM,CAC1C,CACF,CACe,EAAI,OAAQ,CAAE,UAAW,wBAAyB,SAAU,GAAS,EAAO,CAAC,CAC9F,CACF,CACF,CAEJ,sBC9B6B,IAGU,CACpC,GAAW,GAAO,CACpB,IAAIC,EAAKC,EAAI,CAAE,QAAQ,GAAO,YAAY,WAAcD,EACxD,OAAuB,EACrB,MACA,EAAc,EAAe,EAAE,CAHmC,GAAUA,EAAI,CAAC,QAAS,YAAY,CAAC,CAGhE,CAAE,CACvC,YACA,MAAO,CACL,SAAU,WACV,WAAY,qBACZ,QAAS,uBACV,CACD,SAA0B,EACxB,MACA,CACE,MAAO,CACL,SAAU,WACV,IAAK,MACL,KAAM,MACN,UAAW,wBACX,WAAY,SACZ,SAAU,MACX,CACD,SAAU,GAAS,EACpB,CACF,CACF,CAAC,CACH,uBChC2B,KAIA,IAGJ,KACa,IACiB,CACpD,GAAuBE,EAAM,YAC9B,EAAI,IAAQ,CACX,IAAIC,EAAKC,EAAI,CACX,QAAQ,KACR,QACA,eAAiB,IAAK,GACtB,QAAQ,GACR,OAAO,GACLD,EAAI,EAAa,GAAUA,EAAI,CACjC,QACA,QACA,WACA,QACA,OACD,CAAC,CACF,OAAuB,EAAK,MAAO,CAAE,UAAW,oBAAqB,SAAU,CAC7E,GAAyB,EAAKE,EAAU,CAAE,SAAU,CAClC,EAAI,QAAS,CAAE,UAAW,yCAA0C,SAAU,EAAO,CAAC,CACtF,EAAI,GAAS,CAAE,UAAW,MAAO,CAAC,CACnD,CAAE,CAAC,CACY,EAAK,MAAO,CAAE,UAAW,4EAA6E,SAAU,CAC9G,EACd,QACA,EAAe,CACb,KAAM,SACN,UAAW,gGACX,MACA,QACA,SAAW,GAAM,EAASC,EAAE,OAAO,cAAc,CACjD,OACD,CAAE,EAAW,CACf,CACD,IAAU,IAAwB,EAChC,MACA,CACE,UAAW,oFACX,MAAO,CAAE,YAAa,EAAG,WAAY,GAAI,CACzC,SAAU,CACQ,EACd,EAAO,IACP,CACE,UAAW,iDACX,YAAe,CACb,EAAS,EAAQ,EAAK,EAExB,QAAS,CAAE,QAAS,GAAK,CACzB,WAAY,CAAE,QAAS,EAAG,CAC1B,SAA0B,EAAI,MAAO,CAAE,MAAO,6BAA8B,MAAO,IAAK,OAAQ,IAAK,SAA0B,EAC7H,OACA,CACE,EAAG,wKACH,KAAM,mBACP,CACF,CAAE,CAAC,CACL,CACF,CACe,EACd,EAAO,IACP,CACE,UAAW,iDACX,YAAe,CACb,EAAS,EAAQ,EAAK,EAExB,QAAS,CAAE,QAAS,GAAK,CACzB,WAAY,CAAE,QAAS,EAAG,CAC1B,SAA0B,EAAI,MAAO,CAAE,MAAO,6BAA8B,MAAO,IAAK,OAAQ,IAAK,SAA0B,EAC7H,OACA,CACE,EAAG,wJACH,UAAW,yCACX,KAAM,mBACP,CACF,CAAE,CAAC,CACL,CACF,CACF,CACF,CACF,CACF,CAAE,CAAC,CACL,CAAE,CAAC,EAEP,IC5FD,SAAS,GAAgB,EAAI,EAAG,CAC9B,MAAO,IAAkB,OAAO,eAAiB,OAAO,eAAe,MAAM,CAAG,SAAS,EAAI,EAAI,CAC/F,MAAO,GAAG,UAAY,EAAI,GACzB,GAAgB,EAAIC,EAAE,CAI3B,SAAS,GAAe,EAAI,EAAI,CAC9B,EAAG,UAAY,OAAO,OAAO,EAAG,UAAU,CAAE,EAAG,UAAU,YAAc,EAAI,GAAgB,EAAI,EAAG,CAKpG,SAAS,GAAE,EAAG,CACZ,OAAOA,GAAKA,EAAE,iBAAmBA,EAAE,iBAAiB,CAAEA,GAAKA,EAAE,gBAAkBA,EAAE,gBAAgB,CAAE,GAErG,SAAS,GAAE,EAAG,CACZ,OAAeA,GAAR,KAAY,EAAE,CAAG,MAAM,QAAQA,EAAE,CAAGA,EAAE,OAAO,CAAG,CAACA,EAAE,CAE5D,SAAS,GAAE,EAAG,CACZ,OAAgBA,IAAT,MAAoBA,EAAE,SAAR,EAAiBA,EAAE,GAAKA,EAAE,OAAO,CAExD,SAAS,GAAE,EAAG,CACZ,OAAO,KAAKA,EAAE,CAAC,QAAS,GAAO,CACd,OAAO,SAAtB,KAAkC,SAAS,iBAAiB,EAAIA,EAAE,GAAK,GAAM,EAC7E,CAEJ,SAAS,GAAE,EAAG,EAAI,CAChB,OAAO,GAAE,SAAS,EAAI,EAAI,CACxB,IAAI,EAAK,EAGT,OAFA,GAAM,EAAG,MAAQ,EAAK,EAAG,KACzB,GAAM,EAAG,MAAQ,EAAK,EAAG,KAClB,GACPA,EAAG,EAAG,CAAE,EAAG,CAEf,SAAS,GAAE,EAAG,EAAI,CAChB,IAAM,GAAMA,EAAI,EAAG,KAAO,EAAG,KACzB,EAAKA,EAAI,EACb,MAAO,GAAI,KAAK,IAAI,EAAG,EAAI,EAAG,OAAS,GAAM,EAAK,EAAI,EAAG,KAAO,CAAC,EAAG,MAAO,WAAW,EAAG,QAAQ,EAAE,CAAC,6BA1BhF,CA4BlBC,GAAI,SAAS,EAAI,CACnB,SAAS,EAAG,EAAG,CACb,IAAI,EACJ,CAAC,EAAKC,EAAG,KAAK,KAAMF,EAAE,EAAI,MAAM,YAAgB,CAC9C,EAAG,OAAO,EACT,EAAG,cAAkB,CACtB,EAAG,MAAM,EAAG,kBAAkB,CAAC,EAC9B,EAAG,WAAc,GAAO,CACzB,EAAG,gBAAgB,CAAE,EAAG,MAAM,EAAG,kBAAkB,CAAC,EACnD,EAAG,WAAe,CACnB,EAAG,SAAS,CAAE,MAAO,GAAI,CAAE,EAAG,MAAM,EAAG,oBAAoB,CAAC,CAAC,EAC5D,EAAG,YAAe,GAAO,CAC1B,EAAG,SAAS,CAAE,QAAS,GAAM,CAAC,CAC9B,IAAM,EAAK,EAAG,iBAAiB,EAAG,CAAE,EAAK,EAAG,gBAAgB,EAAG,GAAG,CAAE,EAAK,EAAG,qBAAqB,EAAG,CACpG,EAAG,KAAK,EAAG,EACV,EAAG,YAAe,GAAO,CAC1B,GAAI,EAAG,QAAQ,OAAS,EAAG,OAC3B,EAAG,SAAS,CAAE,QAAS,GAAM,CAAC,CAC9B,IAAM,EAAK,EAAG,iBAAiB,EAAG,CAClC,GAAe,EAAG,cAAd,IAAK,GAAsB,CAC7B,IAAM,EAAK,EAAG,GAAK,EAAG,cAAc,GAAI,EAAK,EAAG,GAAK,EAAG,cAAc,GACtE,EAAG,YAAc,KAAK,IAAI,EAAG,CAAG,KAAK,IAAI,EAAG,CAE9C,GAAI,EAAG,YAAa,OAAO,KAAK,EAAG,SAAS,CAAE,MAAO,GAAI,CAAC,CAC1D,IAAM,EAAK,EAAG,gBAAgB,EAAG,GAAG,CAAE,EAAK,EAAG,qBAAqB,EAAG,CACtE,EAAG,KAAK,EAAG,EACV,EAAG,UAAa,GAAO,CACxB,GAAI,EAAE,EAAG,SAAW,EAAG,UAAY,EAAG,QAAU,EAAG,SAAU,OAAQ,EAAG,SAAS,CAAE,QAAS,GAAM,CAAC,CAAE,EAAG,IAA3C,CAC3D,IAAK,YACL,IAAK,YACL,IAAK,OACL,IAAK,OACH,EAAG,gBAAgB,CAAE,EAAG,gBAAgB,CACxC,MACF,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,KACH,EAAG,gBAAgB,CAAE,EAAG,cAAc,CACtC,MACF,IAAK,OACH,EAAG,gBAAgB,CAAE,EAAG,KAAK,EAAG,MAAM,IAAI,CAC1C,MACF,IAAK,MACH,EAAG,gBAAgB,CAAE,EAAG,KAAK,EAAG,MAAM,IAAI,CAC1C,MACF,IAAK,WACH,EAAG,gBAAgB,CAAE,EAAG,eAAe,EAAG,MAAM,OAAO,EAAG,MAAM,KAAK,CAAC,CACtE,MACF,IAAK,SACH,EAAG,gBAAgB,CAAE,EAAG,aAAa,EAAG,MAAM,OAAO,EAAG,MAAM,KAAK,CAAC,GAEvE,EAAG,kBAAqB,GAAO,CAChC,GAAI,CAAC,EAAG,MAAM,UAAkB,EAAG,SAAT,EAAiB,CACzC,GAAI,EAAG,SAAS,CAAE,QAAS,GAAM,CAAC,CAAE,CAAC,EAAG,MAAM,iBAAkB,CAC9D,IAAM,EAAK,EAAG,iBAAiB,EAAG,CAClC,EAAG,uBAAuB,EAAG,GAAK,GAAO,CACvC,EAAG,MAAM,EAAI,EAAG,GAAG,CAAE,GAAE,EAAG,kBAAkB,CAAC,EAC7C,CAEJ,GAAE,EAAG,GAEN,EAAG,cAAiB,GAAO,CAC5B,GAAI,CAAC,EAAG,MAAM,UAAY,EAAG,MAAM,eAAiB,CAAC,EAAG,SAAU,CAChE,IAAM,EAAK,EAAG,iBAAiB,EAAG,CAAE,EAAK,GAAE,EAAG,UAAU,EAAG,uBAAuB,EAAG,GAAG,CAAC,CAAE,EAAG,MAAM,CACpG,EAAG,MAAM,cAAc,EAAG,GAE3B,EAAG,gBAAmB,GAAQ,GAAO,CACtC,EAAG,MAAM,WAAa,EAAG,MAAM,EAAG,CAAE,GAAE,EAAG,oBAAoB,CAAC,CAAE,GAAE,EAAG,GACpE,EAAG,kBAAqB,GAAQ,GAAO,CACxC,GAAI,EAAG,MAAM,UAAkB,EAAG,SAAT,EAAiB,OAC1C,EAAG,SAAS,CAAE,QAAS,GAAM,CAAC,CAC9B,IAAM,EAAK,EAAG,iBAAiB,EAAG,CAClC,EAAG,MAAM,EAAI,EAAG,GAAG,CAAE,GAAE,EAAG,kBAAkB,CAAC,CAAE,GAAE,EAAG,EACnD,EAAG,mBAAsB,GAAQ,GAAO,CACzC,GAAI,EAAG,MAAM,UAAY,EAAG,QAAQ,OAAS,EAAG,OAChD,EAAG,SAAS,CAAE,QAAS,GAAM,CAAC,CAC9B,IAAM,EAAK,EAAG,iBAAiB,EAAG,CAClC,EAAG,cAAgB,EAAI,EAAG,YAAc,IAAK,GAAG,EAAG,MAAM,EAAI,EAAG,GAAG,CAAE,GAAE,EAAG,kBAAkB,CAAC,CAAE,SAAS,EAAI,CAC1G,EAAG,iBAAmB,EAAG,iBAAiB,EAC1C,EAAG,EACJ,EAAG,iBAAqB,CACzB,IAAM,EAAK,EAAO,eAAiB,CACjC,EAAG,sBAAsB,OAAO,CAAE,EAAG,QAAQ,EAC5C,EAAE,CACL,EAAG,sBAAsB,KAAK,EAAG,EAChC,EAAG,aAAe,EAAI,IAAO,CAC9B,IAAM,EAAK,EAAG,MAAM,eAAiB,IAAM,EAAG,MAAM,eAAiB,IAAM,EAAK,KAAO,EAAG,MAAM,QAAU,EAAK,EAAG,MAAM,qBAAuB,IAAK,EAAK,CAAE,IAAM,GAAO,CACtK,EAAG,QAAU,GAAM,GAClB,IAAK,EAAG,MAAM,eAAiB,IAAM,EAAI,UAAW,EAAI,MAAO,EAAI,YAAa,EAAG,kBAAkB,EAAG,CAAE,aAAc,EAAG,mBAAmB,EAAG,CAAE,QAAS,EAAG,gBAAgB,EAAG,CAAE,SAAU,EAAG,KAAM,SAAU,mBAAoB,EAAG,MAAM,YAAa,gBAAiB,EAAG,MAAM,MAAM,GAAK,gBAAiB,EAAG,MAAM,IAAK,gBAAiB,EAAG,MAAM,IAAK,aAAc,MAAM,QAAQ,EAAG,MAAM,UAAU,CAAG,EAAG,MAAM,UAAU,GAAM,EAAG,MAAM,UAAW,kBAAmB,MAAM,QAAQ,EAAG,MAAM,eAAe,CAAG,EAAG,MAAM,eAAe,GAAM,EAAG,MAAM,eAAgB,gBAAiB,EAAG,MAAM,SAAU,CAAE,EAAK,CAAE,MAAO,EAAI,MAAO,GAAE,EAAG,MAAM,MAAM,CAAE,SAAU,EAAG,MAAM,MAAM,GAAK,CACnqB,OAAO,EAAG,MAAM,gBAAkB,EAAG,kBAAgC,OAAO,EAAG,MAAM,eAA5B,SAA4C,EAAG,MAAM,cAAgB,EAAG,MAAM,cAAc,EAAG,EAAG,EAAG,MAAM,YAAY,EAAI,EAAG,EACtL,EAAG,aAAe,EAAI,EAAI,IAAO,CAClC,IAAM,EAAK,CAAE,IAAK,EAAG,MAAM,eAAiB,IAAM,EAAI,UAAW,EAAG,MAAM,eAAiB,IAAM,EAAG,MAAM,eAAiB,IAAM,EAAI,MAAO,EAAG,gBAAgB,EAAI,EAAG,MAAM,WAAa,EAAG,CAAE,CAAE,EAAK,CAAE,MAAO,EAAI,MAAO,GAAE,EAAG,MAAM,MAAM,CAAE,CAC5O,OAAO,EAAG,MAAM,YAAY,EAAI,EAAG,EAErC,IAAI,EAAK,GAAEA,EAAE,MAAM,CACnB,EAAG,SAAW,EAAK,GAAEA,EAAE,aAAa,EAAG,EAAG,sBAAwB,EAAE,CACpE,IAAM,EAAK,EAAE,CACb,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,OAAQ,GAAM,EAAG,EAAG,GAAM,GAAE,EAAG,GAAKA,EAAE,CAAE,EAAG,KAAK,EAAG,CAC5E,MAAO,GAAG,eAAiB,KAAM,EAAG,iBAAmBG,EAAE,WAAW,CAAE,EAAG,MAAQ,CAAE,MAAO,GAAI,WAAY,EAAG,aAAc,EAAG,MAAO,EAAI,SAAU,EAAI,CAAE,EAE3J,GAAe,EAAID,EAAG,CACtB,IAAIE,EAAI,EAAG,UACX,MAAO,GAAE,kBAAoB,UAAW,CAChB,IAAtB,SAAiC,KAAK,eAAiB,IAAI,eAAe,KAAK,aAAa,CAAE,KAAK,eAAe,QAAQ,KAAK,iBAAiB,QAAQ,CAAE,KAAK,QAAQ,GACtK,EAAG,yBAA2B,SAAS,EAAG,EAAI,CAC/C,IAAM,EAAK,GAAEJ,EAAE,MAAM,CACrB,OAAO,EAAG,OAAS,EAAG,QAAU,KAAO,CAAE,MAAO,EAAG,IAAK,GAAO,GAAE,EAAIA,EAAE,CAAC,CAAE,CAAG,MAC5E,EAAE,mBAAqB,UAAW,CAC7B,KAAK,MAAM,aAAjB,GAA+B,KAAK,QAAQ,EAC3C,EAAE,qBAAuB,UAAW,CACrC,KAAK,4BAA4B,CAAE,KAAK,gBAAkB,KAAK,eAAe,YAAY,EACzF,EAAE,MAAQ,SAAS,EAAG,CACvB,GAAK,SAAS,EAAI,CAChB,OAAO,KAAK,EAAG,CAAC,QAAS,GAAO,CACf,OAAO,SAAtB,KAAkC,SAAS,oBAAoB,EAAI,EAAG,GAAK,GAAM,EACjF,EACFA,EAAE,CAAE,KAAK,UAAY,KAAK,gBAAgB,gBAAgB,CAAE,KAAK,SAAS,CAAE,QAAS,GAAO,CAAC,CAAE,KAAK,SAAW,IAChH,EAAE,SAAW,UAAW,CACzB,OAAO,GAAE,KAAK,MAAM,MAAM,EACzB,EAAE,gBAAkB,SAAS,EAAG,CACjC,IAAI,EAAK,OAAO,UAAW,EAAK,GAC1B,CAAE,MAAO,GAAO,KAAK,MAAO,EAAK,EAAG,OAC1C,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,CACjC,IAAM,EAAK,KAAK,WAAW,EAAG,GAAI,CAAE,EAAK,KAAK,IAAIA,EAAI,EAAG,CACzD,EAAK,IAAO,EAAK,EAAI,EAAK,GAE5B,OAAO,GACN,EAAE,iBAAmB,SAAS,EAAG,CAClC,MAAO,CAACA,EAAE,OAAS,KAAK,SAAS,EAAGA,EAAE,OAAS,KAAK,mBAAmB,EAAE,EACxE,EAAE,iBAAmB,SAAS,EAAG,CAClC,IAAM,EAAKA,EAAE,QAAQ,GACrB,MAAO,CAAC,EAAG,OAAS,KAAK,SAAS,EAAG,EAAG,OAAS,KAAK,mBAAmB,EAAE,EAC1E,EAAE,mBAAqB,UAAW,CACnC,MAAO,CAAE,QAAS,KAAK,UAAW,MAAO,KAAK,QAAS,SAAU,KAAK,OAAQ,EAC7E,EAAE,iBAAmB,UAAW,CACjC,MAAO,CAAE,UAAW,KAAK,YAAa,QAAS,KAAK,UAAW,EAC9D,EAAE,iBAAmB,UAAW,CACjC,MAAO,CAAE,UAAW,KAAK,YAAa,SAAU,KAAK,WAAY,EAChE,EAAE,qBAAuB,SAAS,EAAG,CACtC,IAAM,EAAKA,GAAK,KAAK,MAAM,aAAe,KAAK,MAAM,YAAc,KAAK,MAAM,IAAM,KAAK,MAAM,KAC/F,OAAO,GAAE,KAAK,MAAM,WAAa,EAAI,KAAK,MAAM,EAC/C,EAAE,gBAAkB,SAAS,EAAG,CACjC,IAAI,EAAKA,EAAI,KAAK,MAAM,cACxB,OAAO,KAAK,MAAM,SAAW,GAAM,IAAK,GACvC,EAAE,OAAS,UAAW,CACvB,GAAM,CAAE,OAAQA,EAAG,OAAQ,GAAO,KAClC,GAAI,CAACA,GAAK,CAAC,EAAI,OACf,IAAM,EAAK,KAAK,SAAS,CAAE,EAAKA,EAAE,uBAAuB,CAAE,EAAKA,EAAE,GAAK,EAAK,EAAG,KAAK,WAAW,EAAG,EAAK,EAAG,KAAK,WAAW,EAAG,EAAK,EAAG,uBAAuB,CAAC,EAAG,QAAQ,SAAU,GAAG,CAAC,aAAa,EAAG,EAAK,EAAK,EAAI,EAAK,KAAK,IAAI,EAAK,EAAG,CAC1O,KAAK,MAAM,aAAe,GAAM,KAAK,MAAM,eAAiB,GAAM,KAAK,MAAM,YAAc,GAAM,KAAK,SAAS,CAAE,WAAY,EAAI,aAAc,EAAI,UAAW,EAAI,CAAC,EAClK,EAAE,WAAa,SAAS,EAAG,CAC5B,IAAM,EAAK,KAAK,MAAM,IAAM,KAAK,MAAM,IAEvC,OADU,IAAN,EAAiB,GACbA,EAAI,KAAK,MAAM,KAAO,EAAK,KAAK,MAAM,YAC7C,EAAE,UAAY,SAAS,EAAG,CAC3B,OAAOA,EAAI,KAAK,MAAM,YAAc,KAAK,MAAM,IAAM,KAAK,MAAM,KAAO,KAAK,MAAM,KACjF,EAAE,uBAAyB,SAAS,EAAG,CACxC,GAAM,CAAE,OAAQ,GAAO,KAAM,EAAK,EAAG,uBAAuB,CAAE,EAAK,EAAG,KAAK,WAAW,EAAG,EAAK,EAAG,KAAK,WAAW,EAC7G,EAAKA,GAAK,EAAO,OAAS,KAAK,SAAS,CAAG,WAAa,KAAK,MAAM,OAAS,EAAK,IACrF,OAAO,KAAK,MAAM,SAAW,EAAK,KAAK,MAAM,aAAe,GAAK,GAAM,KAAK,MAAM,UAAY,EAAG,GAChG,EAAE,uBAAyB,SAAS,EAAG,EAAI,CAC5C,IAAM,EAAK,KAAK,uBAAuBA,EAAE,CAAE,EAAK,KAAK,gBAAgB,EAAG,CAAE,EAAK,GAAE,KAAK,UAAU,EAAG,CAAE,KAAK,MAAM,CAAE,EAAK,KAAK,MAAM,MAAM,OAAO,CAC/I,EAAG,GAAM,EACT,IAAK,IAAI,EAAK,EAAG,EAAK,EAAG,OAAS,EAAG,GAAM,EAAG,GAAI,EAAG,EAAK,GAAK,EAAG,GAAM,KAAK,MAAM,YAAa,OAChG,KAAK,gBAAgB,iBAAiB,CAAE,KAAK,SAAW,GAAM,KAAK,SAAS,CAAE,MAAO,EAAI,KAAQ,CAC/F,EAAG,EAAG,CAAE,KAAK,gBAAgB,WAAW,EACxC,EACD,EAAE,2BAA6B,UAAW,CAC3C,EAAG,CACD,IAAMA,EAAI,KAAK,sBAAsB,OAAO,CAC5C,aAAaA,EAAE,OACR,KAAK,sBAAsB,SACnC,EAAE,MAAQ,SAAS,EAAG,EAAI,CAC3B,IAAM,EAAK,KAAK,QAAUA,GAC1B,GAAM,EAAG,OAAO,CAChB,GAAM,CAAE,SAAU,GAAO,KAAK,MAC9B,EAAG,OAAO,EAAG,QAAQA,EAAE,CAAE,EAAE,CAAE,EAAG,KAAKA,EAAE,CAAE,KAAK,SAAU,IAAQ,CAAE,WAAY,EAAG,MAAMA,GAAI,cAA0B,IAAX,IAAK,GAAgB,EAAG,cAAR,EAAuB,MAAOA,EAAG,SAAU,EAAI,EAAE,EAC1K,EAAE,aAAe,SAAS,EAAG,CACnBA,IAAX,IAAK,KAAY,EAAI,KAAK,MAAM,MAChC,IAAM,EAAK,KAAK,MAAM,MAAM,KAAK,MAAM,OAAQ,EAAK,GAAE,KAAK,MAAM,QAA2B,KAAK,MAAM,cAA5B,aAA0C,EAAKA,EAAI,EAAKA,EAAG,KAAK,MAAM,CACjJ,KAAK,KAAK,KAAK,IAAI,EAAI,KAAK,MAAM,IAAI,CAAC,EACtC,EAAE,eAAiB,SAAS,EAAG,CACrBA,IAAX,IAAK,KAAY,EAAI,KAAK,MAAM,MAChC,IAAM,EAAK,KAAK,MAAM,MAAM,KAAK,MAAM,OAAQ,EAAK,GAAE,KAAK,MAAM,QAA2B,KAAK,MAAM,cAA5B,aAA0C,EAAKA,EAAI,EAAKA,EAAG,KAAK,MAAM,CACjJ,KAAK,KAAK,KAAK,IAAI,EAAI,KAAK,MAAM,IAAI,CAAC,EACtC,EAAE,KAAO,SAAS,EAAG,CACtB,IAAM,EAAK,KAAK,MAAM,MAAM,OAAO,CAAE,CAAE,MAAO,GAAO,KAAK,MAAO,CAAE,OAAQ,GAAO,EAAI,EAAK,EAAG,GAC9F,GAAIA,IAAM,EAAI,OACd,KAAK,UAAY,KAAK,gBAAgB,iBAAiB,CAAE,KAAK,SAAW,GACzE,GAAM,CAAE,SAAU,EAAI,IAAK,EAAI,IAAK,EAAI,YAAa,GAAO,KAAK,MACjE,GAAI,CAAC,EAAI,CACP,GAAI,EAAK,EAAG,CACV,IAAM,EAAK,EAAG,EAAK,GACnB,EAAI,EAAK,IAAO,EAAI,EAAK,GAE3B,GAAI,EAAK,EAAK,EAAG,CACf,IAAM,EAAK,EAAG,EAAK,GACnB,EAAI,EAAK,IAAO,EAAI,EAAK,IAG7B,EAAG,GAAMA,EAAG,GAAM,EAAK,IAAMA,EAAI,GAAM,KAAK,eAAe,EAAI,EAAI,EAAG,CAAE,SAAS,EAAI,EAAI,EAAI,EAAI,CAC/F,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,CACjC,IAAM,EAAK,EAAK,EAAK,EACrB,EAAG,EAAK,EAAI,GAAM,IAAO,EAAG,EAAK,EAAI,GAAM,KAE7C,EAAI,EAAI,EAAI,EAAG,EAAIA,EAAI,IAAO,KAAK,cAAc,EAAI,EAAI,EAAG,CAAE,SAAS,EAAI,EAAI,EAAI,EAAI,CACvF,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,CACjC,IAAM,EAAK,EAAK,EAAK,EACrB,EAAG,GAAM,IAAO,EAAG,GAAM,KAE3B,EAAI,EAAI,EAAI,EAAG,GAAI,KAAK,SAAS,CAAE,MAAO,EAAI,CAAE,KAAK,gBAAgB,KAAK,KAAM,WAAW,CAAC,EAC7F,EAAE,eAAiB,SAAS,EAAG,EAAI,EAAI,CACxC,IAAI,EAAI,EACR,IAAK,EAAK,EAAI,EAAKA,EAAE,GAAM,EAAaA,EAAE,EAAK,KAAhB,MAAsB,EAAKA,EAAE,EAAK,GAAI,GAAM,EAAG,EAAKA,EAAE,GAAM,EAAI,EAAE,EAAK,GAAK,GAAE,EAAI,KAAK,MAAM,EAC3H,EAAE,cAAgB,SAAS,EAAG,EAAI,EAAI,CACvC,IAAK,IAAI,EAAK,EAAI,EAAKA,EAAE,GAAM,EAAaA,EAAE,EAAK,KAAhB,MAAsB,EAAKA,EAAE,EAAK,GAAI,IAAS,EAAKA,EAAE,GAAM,EAAI,EAAE,EAAK,GAAK,GAAE,EAAI,KAAK,MAAM,EAC/H,EAAE,QAAU,UAAW,CACxB,OAAsB,KAAK,MAAM,cAA1B,WAAwC,IAAM,KACpD,EAAE,kBAAoB,UAAW,CAClC,OAAsB,KAAK,MAAM,cAA1B,WAAwC,IAAM,KACpD,EAAE,UAAY,UAAW,CAC1B,OAAsB,KAAK,MAAM,cAA1B,WAAwC,KAAK,MAAM,OAAS,SAAW,MAAQ,KAAK,MAAM,OAAS,QAAU,QACnH,EAAE,UAAY,UAAW,CAC1B,OAAsB,KAAK,MAAM,cAA1B,WAAwC,KAAK,MAAM,OAAS,MAAQ,SAAW,KAAK,MAAM,OAAS,OAAS,SAClH,EAAE,QAAU,UAAW,CACxB,OAAsB,KAAK,MAAM,cAA1B,WAAwC,eAAiB,eAC/D,EAAE,gBAAkB,SAAS,EAAG,CACjC,KAAK,MAAMA,IAAM,KAAK,MAAMA,GAAG,GAAE,KAAK,MAAM,MAAM,CAAE,KAAK,MAAM,MAAM,EACpE,EAAE,gBAAkB,SAAS,EAAG,EAAI,CACrC,IAAM,EAAK,CAAE,SAAU,WAAY,YAAa,OAAQ,WAAY,KAAK,MAAM,OAAS,EAAI,KAAK,WAAW,CAAG,IAAK,GAAG,OAAQ,KAAK,MAAM,SAAS,QAAQ,EAAG,CAAG,EAAG,CACpK,MAAO,GAAG,KAAK,WAAW,EAAIA,EAAI,KAAM,GACvC,EAAE,gBAAkB,SAAS,EAAG,EAAI,CACrC,IAAM,EAAK,CAAE,SAAU,WAAY,WAAY,KAAK,MAAM,OAAS,EAAI,KAAK,WAAW,CAAG,IAAM,KAAK,WAAW,CAAG,IAAK,GAAG,CAC3H,MAAO,GAAG,KAAK,WAAW,EAAIA,EAAG,EAAG,KAAK,WAAW,EAAI,EAAI,GAC3D,EAAE,eAAiB,SAAS,EAAG,CAChC,IAAI,EACJ,MAAO,CAAC,EAAK,CAAE,SAAU,WAAY,EAAE,KAAK,WAAW,EAAIA,EAAG,GAC7D,EAAE,aAAe,SAAS,EAAG,CAC9B,GAAM,CAAE,OAAQ,GAAOA,EAAG,EAAK,EAAE,CACjC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,EAAG,GAAM,KAAK,gBAAgBA,EAAE,GAAK,EAAG,CAC3E,IAAM,EAAK,EAAE,CACb,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,EAAG,GAAM,KAAK,YAAY,EAAG,GAAK,EAAG,CACxE,OAAO,GACN,EAAE,aAAe,SAAS,EAAG,CAC9B,IAAM,EAAK,EAAE,CAAE,EAAKA,EAAE,OAAS,EAC/B,EAAG,KAAK,KAAK,YAAY,EAAG,EAAGA,EAAE,GAAG,CAAC,CACrC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,EAAG,KAAK,KAAK,YAAY,EAAK,EAAGA,EAAE,GAAKA,EAAE,EAAK,GAAG,CAAC,CACtF,OAAO,EAAG,KAAK,KAAK,YAAY,EAAK,EAAGA,EAAE,GAAK,KAAK,MAAM,WAAW,CAAC,CAAE,GACvE,EAAE,YAAc,UAAW,CAC5B,GAAI,CAAE,MAAOA,GAAM,KAAK,MAClB,EAAK,KAAK,MAAM,IAAM,KAAK,MAAM,IAAM,EAC7C,OAAoB,OAAOA,GAApB,UAAwB,EAAI,MAAM,KAAK,CAAE,OAAQ,EAAI,CAAC,CAAC,KAAK,EAAI,IAAO,EAAG,CAAe,OAAOA,GAAnB,WAAyB,EAAI,MAAM,KAAK,CAAE,OAAQ,EAAI,CAAC,CAAC,KAAK,EAAI,IAAO,EAAG,CAAC,OAAQ,GAAO,EAAKA,GAAK,EAAE,EAAGA,EAAE,IAAI,WAAW,CAAC,MAAM,EAAI,IAAO,EAAK,EAAG,CAAC,IAAK,GAAO,CACpP,IAAM,EAAK,KAAK,WAAW,EAAG,CAAE,EAAK,CAAE,IAAK,EAAI,UAAW,KAAK,MAAM,cAAe,MAAO,KAAK,eAAe,EAAG,CAAE,CACrH,OAAO,KAAK,MAAM,WAAW,EAAG,EAChC,EACD,EAAE,OAAS,UAAW,CACvB,IAAMA,EAAI,EAAE,CAAE,CAAE,MAAO,GAAO,KAAK,MAAO,EAAK,EAAG,OAClD,IAAK,IAAI,EAAK,EAAG,EAAK,EAAI,GAAM,EAAG,EAAE,GAAM,KAAK,WAAW,EAAG,GAAK,EAAG,CACtE,IAAM,EAAK,KAAK,MAAM,WAAa,KAAK,aAAaA,EAAE,CAAG,KAAM,EAAK,KAAK,aAAaA,EAAE,CAAE,EAAK,KAAK,MAAM,MAAQ,KAAK,aAAa,CAAG,KACxI,OAAOG,EAAE,cAAc,MAAO,CAAE,IAAM,GAAO,CAC3C,KAAK,OAAS,EAAI,KAAK,iBAAiB,QAAU,GACjD,MAAO,CAAE,SAAU,WAAY,CAAE,UAAW,KAAK,MAAM,WAAa,KAAK,MAAM,SAAW,YAAc,IAAK,YAAa,KAAK,kBAAmB,QAAS,KAAK,cAAe,CAAE,EAAI,EAAI,EAAG,EAC9L,GACHA,EAAE,UAAU,CACd,GAAE,YAAc,cAAe,GAAE,aAAe,CAAE,IAAK,EAAG,IAAK,IAAK,KAAM,EAAG,OAAS,GAAM,GAAKH,EAAG,YAAa,EAAG,aAAc,EAAG,YAAa,aAAc,UAAW,SAAU,eAAgB,QAAS,qBAAsB,SAAU,eAAgB,QAAS,cAAe,OAAQ,WAAY,GAAM,SAAU,GAAO,SAAU,GAAO,iBAAkB,GAAO,OAAQ,GAAO,MAAO,EAAE,CAAE,YAAc,GAAMG,EAAE,cAAc,MAAOH,EAAE,CAAE,YAAc,GAAMG,EAAE,cAAc,MAAOH,EAAE,CAAE,WAAa,GAAMG,EAAE,cAAc,OAAQH,EAAE,CAAE,CAC9gB,GAAIC,wBChTsB,KAGA,KAGA,KAIA,IAGc,IACE,CAC1C,IAAwB,CAC1B,eACA,WACA,OACA,MACA,SACI,CACJ,IAAM,EAAgB,IAA6C,IAAO,EACpE,EAAc,IAA6C,IAAO,EAClE,CAAC,EAAY,GAAiBI,EAAS,EAAa,CACpD,CAAC,EAAU,GAAeA,EAAS,EAAW,CAWpD,OAVA,MAAgB,CAEd,IAAM,EAAY,MAAM,QAAQ,EAAa,CAAS,IAA6C,IAAmB,EAAM,EACtH,EAAU,MAAM,QAAQ,EAAa,CAAS,IAA6C,IAAmB,EAAM,EAC1H,EAAc,EAAU,CACxB,EAAY,EAAQ,EACnB,CAAC,EAAc,EAAK,EAAI,CAAC,CAC5B,MAAgB,CACd,EAAS,CAAC,EAAY,EAAS,CAAC,EAC/B,CAAC,EAAY,EAAS,CAAC,CACH,EAAK,MAAO,CAAE,UAAW,2BAA4B,SAAU,CACpE,EACd,GACA,CACE,MAAO,EACP,SAAU,EACV,OACD,CACF,CACe,EAAI,GAAS,CAAE,UAAW,MAAO,CAAC,CAClC,EACd,GACA,CACE,MAAO,CAAC,OAAO,EAAW,CAAE,OAAO,EAAS,CAAC,CAC7C,OACA,MACA,MACA,UAAW,EAAO,IAAU,CAC1B,EAAc,EAAM,GAAG,CACvB,EAAY,EAAM,GAAG,EAEvB,aAAc,CAAC,EAAK,EAAI,CACxB,SAAU,GACV,YAAa,GACb,WAAY,GACZ,UAAW,uDACX,MAAO,EAAE,EAAM,GAAO,EAAE,CACxB,cAAe,iGACf,eAAgB,yGAChB,eAAgB,2CAChB,aAAc,EAAO,IAA0B,EAC7C,MACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,MAAM,CAAE,CACpD,QAAS,EAAM,QAAU,EAAI,GAAM,EACpC,CAAC,CACH,CAAC,CACH,CACF,CACF,CACe,EAAI,GAAS,CAAE,UAAW,MAAO,CAAC,CAClC,EACd,GACA,CACE,MAAO,EACP,SAAU,EACV,OACD,CACF,CACF,CAAE,CAAC,uBCrFwB,KAGA,KAGA,IAGC,IAEe,CAC1C,GAAkBG,GACnB,CAAE,eAAc,WAAU,OAAM,MAAK,OAAO,IAAQ,CACnD,GAAM,CAAC,EAAa,GAAkBC,EAAS,EAAa,CAO5D,OANA,MAAgB,CACd,EAAe,EAAa,EAC3B,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAS,EAAY,EACpB,CAAC,EAAY,CAAC,CACM,EAAK,MAAO,CAAE,UAAW,2BAA4B,SAAU,CACpE,EACd,GACA,CACE,MAAO,EACP,SAAU,EACV,OACD,CACF,CACe,EAAI,GAAS,CAAE,UAAW,MAAO,CAAC,CAClC,EACd,GACA,CACE,MAAO,OAAO,EAAY,CAC1B,OACA,MACA,MACA,UAAW,EAAO,IAAU,EAAe,EAAM,CACjD,UAAW,8BACX,MAAO,EAAE,EAAM,GAAO,EAAE,CACxB,cAAe,kEACf,eAAgB,6GAChB,qBAAsB,gBACvB,CACF,CACF,CAAE,CAAC,EAEP,yBChD6B,KAKA,IAGU,CACpC,GAAa,CACf,QAAS,wBACT,UAAW,mCACZ,CACG,GAAU,GAAO,CACnB,IAAIC,EAAKC,EAAI,CACX,OAAO,UACP,YACED,EAAI,EAAO,GAAUA,EAAI,CAC3B,OACA,WACD,CAAC,CACF,OAAuB,EACrB,SACA,EAAc,EAAe,CAC3B,UAAWE,GAAG,sCAAuC,GAAW,GAAM,CACvE,CAAE,EAAK,CAAE,CACR,WACD,CAAC,CACH,KC3BH,SAAS,GAAM,CAAE,WAAU,MAAA,GAAS,CAClC,OAAuB,EAAK,MAAO,CAAE,MAAO,GAAgB,SAAU,CACpE,IAAa,UAA4B,EACvC,MACA,CACE,MAAO,6BACP,KAAMC,EACN,OAAQA,EACR,QAAS,eACT,QAAS,cACT,MAAO,CACL,iBAAkB,OAClB,cAAe,OACf,aAAc,OACd,WAAY,OACZ,MAAO,OACP,OAAQ,OACR,iBAAkB,IAClB,WAAY,IACb,CACD,SAA0B,EAAI,OAAQ,CAAE,EAAG,oKAAqK,CAAC,CAClN,CACF,CACD,IAAa,SAA2B,EACtC,MACA,CACE,MAAO,6BACP,KAAMA,EACN,OAAQA,EACR,QAAS,eACT,QAAS,cACT,MAAO,CACL,iBAAkB,OAClB,cAAe,OACf,aAAc,OACd,WAAY,OACZ,MAAO,OACP,OAAQ,OACR,iBAAkB,IAClB,WAAY,IACb,CACD,SAA0B,EAAI,OAAQ,CAAE,EAAG,+KAAgL,CAAC,CAC7N,CACF,CACD,IAAa,UAA4B,EACvC,MACA,CACE,MAAO,6BACP,MAAO,KACP,OAAQ,KACR,KAAM,OACN,QAAS,YACT,SAAU,CACQ,EACd,OACA,CACE,KAAMA,EACN,EAAG,2VACJ,CACF,CACe,EACd,OACA,CACE,OAAQA,EACR,cAAe,QACf,eAAgB,QAChB,YAAa,IACb,EAAG,kDACJ,CACF,CACF,CACF,CACF,CACF,CAAE,CAAC,sBA3E+B,IACS,CA4E1C,GAAiB,CACnB,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,SAAU,SACX,CACD,GAAM,iBAAmB,CACvB,MAAO,CAAE,KAAM,EAAY,MAAO,CAClC,SAAU,CACR,KAAM,EAAY,KAClB,QAAS,CAAC,SAAU,QAAS,SAAS,CACvC,CACF,6CC1F0C,IAAoI,KAAkE,IAA4B,CAAgC,GAAkB,eAAqB,GAAkB,CAAC,UAAU,kBAAkB,CAA8L,GAAY,CAAC,OAAO,GAAG,MAAM,EAAE,SAAS,GAAG,KAAK,SAAS,CAAO,IAAY,CAAC,QAAM,cAAY,CAAC,IAAM,EAAOC,EAAiB,GAAoB,CAAO,EAAW,GAAO,EAAO,WAAiB,EAAaC,OAAmB,CAAC,GAAG,EAAO,aAAW,EAAE,CAAC,KAAK,UAAU,EAAW,CAAC,CAAC,CAAC,OAAoB,EAAK,GAAoB,SAAS,CAAC,MAAM,EAAsB,WAAS,CAAC,EAAS,GAAS,EAAO,OAAOC,EAAe,CAAO,IAAU,CAAC,SAAO,KAAG,QAAM,QAAM,GAAG,MAAgB,CAAC,GAAG,EAAM,UAAU,GAAO,EAAM,WAAW,QAAQ,EAAS,IAAwB,EAAM,IAAe,EAAM,iBAAwB,EAAS,KAAK,IAAI,CAAC,EAAM,iBAAwB,EAAS,KAAK,IAAI,CAWnuC,GAAgB,GAXmvC,EAAiB,SAAS,EAAM,EAAI,CAAC,IAAM,EAAYC,EAAO,KAAK,CAAO,EAAW,GAAK,EAAkB,EAAgBC,GAAa,CAAM,CAAC,eAAa,aAAW,IAAe,CAAyB,IAAsB,CAAC,GAAK,CAAC,QAAM,YAAU,WAAS,UAAQ,YAAU,GAAG,GAAW,GAAS,EAAM,CAAM,CAAC,cAAY,aAAW,sBAAoB,kBAAgB,iBAAe,YAAU,kBAAgB,aAAW,YAAU,GAAgB,CAAC,eAAe,YAAY,IAAI,EAAW,UAAQ,qBAAkB,CAAC,CAAO,EAAiB,GAAuB,EAAM,EAAS,CAAsC,EAAkB,GAAG,GAA2C,CAAC,OAAoB,EAAK,GAAY,CAAC,GAAG,GAAU,EAAgB,SAAsB,EAAK,GAAS,CAAC,QAAQ,EAAS,QAAQ,GAAM,SAAsB,EAAK,GAAW,CAAC,MAAM,GAAY,SAAsB,EAAK,EAAO,IAAI,CAAC,GAAG,EAAU,GAAG,EAAgB,UAAU,GAAG,EAAkB,gBAAgB,EAAU,EAAW,CAAC,mBAAmB,YAA6B,mBAAiB,SAAS,YAAY,IAAI,EAAW,MAAM,CAAC,GAAG,EAAM,CAAC,SAAsB,EAAKC,GAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKH,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,uBAAuB,uBAAuB,oCAAoC,qBAAqB,OAAO,0BAA0B,SAAS,sBAAsB,8CAA8C,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,gBAAgB,MAAM,CAAC,kBAAkB,CAAkB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,qBAAqB,2BAA2B,mBAAmB,gCAAgC,YAAY,CAAC,KAAK,EAAU,kBAAkB,MAAM,mBAAmB,GAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,CAAW,CAAC,kFAAkF,kFAAkF,uQAAuQ,gHAAgH,CAW5kH,eAAe,IAAgB,GAAgB,GAAgB,YAAY,gBAAgB,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAoB,GAAgB,CAAC,UAAU,CAAC,aAAa,QAAQ,gBAAgB,GAAM,MAAM,QAAQ,KAAK,EAAY,OAAO,CAAC,CAAC,CAAC,GAAS,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,OAAO,OAAO,SAAS,MAAM,SAAS,IAAI,sFAAsF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,GAAK,CAAC,wBCL7b,ICqCtH,SAAS,GAAkB,CACzB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,mBAAmB,IACjB,EAAE,CAAE,CAEN,IAAM,EAAeK,EAAO,KAAK,CAC3B,CAAE,cAAa,kBAAmB,IAAuB,CACzD,EAAmB,GAAgB,GAAU,EAAM,iBAAiB,CACpE,CAAC,EAAY,GAAiBC,EAAS,GAAG,CAC1C,CAAC,EAAW,GAAgBA,EAAS,CAAC,EAAa,CACnD,CAAC,EAAe,GAAoBA,EAAS,EAAE,CAC/C,EAAkBD,EAAO,KAAK,CAC9B,EAAqBA,EAAO,KAAK,CACjC,EAAoBA,EAAO,GAAG,CACpC,MAAgB,CACW,EAAQ,KAAM,KAAM,WAAa,CACxD,GAAI,CACF,IAAM,EAAe,IAAK,EAAO,cAAgB,EAAO,oBACxD,EAAgB,QAAU,EAI1B,IAAM,EAAc,MAHH,MAAM,MACrB,yEACD,EACkC,aAAa,CAEhD,EAAmB,QADC,MAAM,EAAa,gBAAgB,EAAY,OAE5DE,EAAO,CACd,QAAQ,IAAI,6BAA8BA,EAAM,GAElD,EAED,EAAE,CAAC,CACN,IAAM,MAAsB,CAC1B,GAAI,EAAgB,SAAW,EAAmB,QAAS,CACzD,IAAM,EAAS,EAAgB,QAAQ,oBAAoB,CACrD,EAAW,EAAgB,QAAQ,YAAY,CACrD,EAAO,OAAS,EAAmB,QACnC,EAAS,KAAK,MAAQ,GACtB,EAAO,QAAQ,EAAS,CACxB,EAAS,QAAQ,EAAgB,QAAQ,YAAY,CACrD,EAAO,MAAM,EAAE,GA6EnB,OA1EA,MAAgB,CACd,GAAI,CAAC,EAAc,CACjB,EAAa,GAAK,CAClB,OAEF,IAAM,EAAQ,eAAiB,CAC7B,EAAa,GAAK,EACjB,EAAc,IAAI,CACrB,UAAa,aAAa,EAAM,EAC/B,CAAC,EAAc,EAAY,CAAC,CAC/B,MAAgB,CACd,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,GAAa,IAAe,EAAG,OACpC,IAAM,EAAkB,EAAc,EACtC,EAAU,UAAY,EAClB,KACF,QAAQ,IAAI,4BAA6B,EAAgB,CACzD,QAAQ,IAAI,wBAAyB,EAAY,EAEnD,EAAiB,EAAY,EAC5B,CAAC,EAAW,CAAC,CAChB,MAAgB,CACd,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,EAAW,OAChB,IAAM,MAA4B,CAChC,IAAM,EAAkB,EAAU,aAClC,GAAI,GAAmB,EAAG,CACxB,WAAW,EAAqB,IAAI,CACpC,OAEF,IAAM,EAAgB,KAAK,IAAI,GAAuB,EAAI,GAAvB,EAAqC,CACxE,EAAc,EAAc,CACxB,KACF,QAAQ,IAAI,kBAAmB,EAAgB,CAC/C,QAAQ,IAAI,gBAAiB,EAAc,GAGzC,EAAiB,WAAW,EAAqB,GAAG,CACpD,EAAiB,IAAI,eAAe,EAAoB,CAC9D,EAAe,QAAQ,EAAU,CACjC,IAAM,EAAQ,EAAU,MACxB,EAAM,YAAY,oBAAqB,OAAO,CAC9C,EAAM,YAAY,0BAA2B,OAAO,CACpD,EAAM,YAAY,0BAA2B,OAAO,CACpD,IAAM,MAAqB,CACzB,IAAM,EAAY,EAAU,UACtB,EAAe,KAAK,MAAM,EAAY,EAAW,CACjD,EAAS,KAAK,IAAI,EAAG,KAAK,IAAI,EAAc,GAAU,OAAS,EAAE,CAAC,CAOxE,GANA,EAAe,EAAO,CACtB,EAAiB,EAAO,CACpB,IAAW,EAAkB,UAC/B,EAAkB,QAAU,EAC5B,GAAe,EAEb,EAAe,CAEjB,IAAM,EAAiB,GADL,EAAU,aAAe,EAAU,cAErD,GAAI,GAAkB,EAAkB,CACtC,IAAM,EAAY,EAAI,EAChB,GAAgB,EAAiB,GAAoB,EAE3D,EADgB,KAAK,IAAI,EAAG,EAAI,EAAa,CACpB,MAEzB,EAAiB,EAAE,GAKzB,OADA,EAAU,iBAAiB,SAAU,EAAa,KACrC,CACX,EAAU,oBAAoB,SAAU,EAAa,CACrD,EAAe,YAAY,CAC3B,aAAa,EAAe,GAE7B,CAAC,EAAY,EAAU,CAAC,CACJ,EACrB,MACA,CACE,MAAO,CAEL,MAAO,OAEP,OAAQ,QACR,SAAU,SACV,SAAU,SACV,IAAK,EACL,QAAS,EAAY,EAAgB,EACrC,WAAY,2BAMb,CACD,SAAU,CACQ,EACd,MACA,CACE,IAAK,EACL,MAAO,EAAe,CACpB,SAAU,WACV,OAAQ,OACR,UAAW,SACX,eAAgB,cAChB,gBAAiB,OACjB,eAAgB,OAChB,UAAW,SACZ,CAAE,GAAU,CAAE,WAAY,qBAAsB,CAAG,EAAE,CAAC,CACvD,SAAU,CACQ,EACd,MACA,CACE,MAAO,CACL,OAAQ,IAAW,EAAa,SAA+B,cAAiB,GAAK,EAAI,EAAa,EAAE,IACzG,CACF,CACF,CACD,GAAU,KAAK,EAAM,IAA0B,EAC7C,EAAO,IACP,CACE,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,OAAQ,GAAG,EAAW,IACtB,gBAAiB,SACjB,MAAO,QACP,WAAY,MAEb,CACD,QAAS,CACP,MAAO,IAAU,EAAc,IAAM,EACrC,QAAS,IAAU,EAAc,EAAI,GACtC,CACD,WAAY,CACV,SAAU,GACV,KAAM,UACP,CACD,SAA0B,EAAIC,GAAe,CAAE,MAAO,EAAM,CAAC,CAC9D,CACD,EACD,CAAC,CACH,CACF,CACF,CACe,EACd,EAAO,IACP,CACE,MAAO,CACL,SAAU,WACV,IAAK,MACL,KAAM,IACN,MAAO,IACP,OAAQ,GAAG,EAAW,IACtB,UAAW,mBACX,cAAe,OAChB,CACD,QAAS,CAAE,QAAS,EAAG,CACvB,QAAS,CAAE,QAAS,EAAG,CACvB,WAAY,CAAE,SAAU,GAAK,CAC7B,SAA0B,EACxB,EAAO,IACP,CACE,MAAO,CACL,OAAQ,OAKT,CACD,SAAU,IAA2B,EAAK,MAAO,CAAE,SAAU,CAC3D,gBACA,EACD,CAAE,CAAC,CACL,CACF,CACF,CACF,CACF,CACF,CACF,8BAzQ2B,KAIA,KAIA,IAGsB,KACb,KACgC,IAClC,IACS,CAC1C,GAAY,CACd,QACA,SACA,iBACA,gBACA,SACA,QACA,QACA,WACA,WACA,WACA,YACA,GAEA,GAEA,GAEA,GAEA,GAEA,GAED,CACG,GAAe,GAkOnB,GAAkB,iBAAmB,CACnC,aAAc,CACZ,KAAM,EAAY,QAClB,MAAO,iBACP,aAAc,GACd,YAAa,+CACd,CACD,YAAa,CACX,KAAM,EAAY,OAClB,MAAO,gBACP,aAAc,GACd,IAAK,EACL,IAAK,EACL,KAAM,GACN,KAAM,IACN,YAAa,wCACb,OAAS,GAAU,CAAC,EAAM,aAC3B,CACD,cAAe,CACb,KAAM,EAAY,QAClB,MAAO,kBACP,aAAc,GACd,YAAa,sDACd,CACD,iBAAkB,CAChB,KAAM,EAAY,OAClB,MAAO,qBACP,aAAc,GACd,IAAK,EACL,IAAK,EACL,KAAM,IACN,YAAa,8CACb,OAAS,GAAU,CAAC,EAAM,cAC3B,CACF,iCC/SoC,CACxB,GAAY,oKACZC,GAAkB,CAC3B,SAAU,WACV,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACf,CAGG,CADA,GAAGA,GACW,CAMLE,GAAgB,CACzB,QAAS,CACL,KAAM,EAAY,aACrB,CACD,aAAc,CACV,KAAM,EAAY,aACrB,CACD,aAAc,CACV,KAAM,EAAY,aACrB,CACJ,CACY,GAAkB,CAC3B,KAAM,EAAY,OAClB,MAAO,YACP,IAAK,EACL,IAAK,IACL,KAAM,EACN,eAAgB,GACnB,CACY,GAAe,CACxB,KAAM,CACF,KAAM,EAAY,QAClB,MAAO,OACP,aAAc,GACd,cAAe,UACf,aAAc,SACjB,CACD,WAAY,CACR,KAAM,EAAY,OAClB,MAAO,SACP,YAAa,QACb,QAAS,CAAE,UAAU,CAAC,EACzB,CACD,WAAY,CACR,KAAM,EAAY,KAClB,MAAO,SACP,QAAS,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACH,CACD,aAAc,CACV,OACA,cACA,QACA,UACA,SACA,YACA,OACA,aACA,QACH,CACD,QAAS,CAAE,UAAU,CAAC,EACzB,CACJ,IC5ED,SAAgB,GAAW,EAAS,EAAS,CACzC,OAAO,GAA0B,GAAM,EAAS,EAAQ,CAE5D,SAAgB,GAAU,EAAQ,EAAS,CACvC,OAAO,GAA0B,GAAO,EAAQ,EAAQ,CAE5D,SAAS,GAA0B,EAAM,EAAU,EAAU,GAAM,CAC/D,IAAM,EAAa,IAAgC,CACnD,MAAc,CACN,GAAW,IAAe,GAAM,GAAU,EAC/C,CACC,EACH,CAAC,mBAdkD,IACtB,ICM9B,SAAgB,GAAY,EAAM,CAClC,IAAM,EAAMC,EAAO,KAAK,CAIxB,OAHI,EAAI,UAAY,OAChB,EAAI,QAAU,GAAM,EAEjB,EAAI,0BAZgB,ICC/B,SAAgB,GAAe,EAAO,CAElC,OADIC,EAAM,WAAW,eAAe,CAAS,MAAQA,EAAM,MAAM,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,GACpFA,EAEX,SAAgB,GAAkB,EAAO,CACrC,OAAO,GAAM,GAAeA,EAAM,CAAC,CAAC,SAAS,mBANlB,qBCAM,CACxB,GAAiB,GAAIC,aAAa,oBCDhB,kBCAM,4BCAL,CACnB,OAAsB,CAC/B,GAAW,IAAc,OAAa,CAClC,IAAM,EAAY,EAAU,UAAU,aAAa,CAEnD,OADkB,EAAU,QAAQ,SAAS,CAAG,IAAM,EAAU,QAAQ,eAAe,CAAG,IAAM,EAAU,QAAQ,UAAU,CAAG,KAAO,EAAU,QAAQ,SAAS,CAAG,OAEjK,MAAO,IAEL,OAAyBC,MAAY,IAAiB,CAC7D,EAAE,CAAC,ICNT,SAAgB,GAAY,EAAO,EAAU,CACzC,MACI,GAAc,EAAM,CAAG,EAAM,SAAS,EAAS,CAAG,IAAA,GACrD,mBAN6B,KAE+F,ICIjI,SAAgB,GAAmB,EAAY,EAAS,CAIpD,IAAM,EAAaC,EAAO,EAAQ,CAC5B,EAAYA,GAAQ,CACpB,EAAkBA,EAAO,GAAM,CAC/BC,EAAa,EAAa,SAAS,GAAK,EAAa,OAErD,EAAgB,GAA0D,aAAgB,EAAQ,aAAe,EAAE,CAEnH,EAAWC,EAAY,GAA0D,SAAU,CAC7F,GAAG,EACN,CAAC,CAEI,EAAcA,EAAa,GAAgB,EAAW,SAAmD,UAAa,EAAW,QAAQ,UAAUC,EAAM,CAAGA,EAChK,EAAE,CAAC,CAEC,EAAQ,OAAgB,GAAc,EAAW,CAAG,EAAa,GAAY,EAAY,EAAW,CAAC,CAC1G,CAuBD,OArBA,MAAc,CACV,GAAI,CAAC,GAAc,EAAW,EAAI,EAAgB,QAAS,CACvD,IAAI,EACJ,IAAM,EAAW,EAAY,EAAW,EACvC,EAAO,EAAU,UAAa,MAAmC,EAAK,MAAM,CAEzE,GAAU,EAAS,EAAU,EAAM,CAE1B,EAAW,SAAqD,SAAY,CAACF,EAGtF,EAAU,QAAUG,GAAQ,EAAO,EAAkB,EAAW,SAAqD,WAAW,CAEhI,EAAM,IAAI,EAAS,CAG3B,EAAgB,QAAU,IAC3B,CACC,EACA,GAAG,EACN,CAAC,CACK,oBAhD4C,IACK,KAEqE,KAEJ,ICJkM,SAAgB,GAAgB,EAAM,CAAC,GAAK,CAAC,aAAW,QAAQ,WAAS,GAAG,aAAW,IAAI,OAAK,IAAO,EAAY,EAAe,GAAY,GAAkB,EAAgB,IAAI,EAAW,GAAG,EAAe,MAAM,EAAW,KAAK,KAAkB,EAAgB,EAAW,CAAC,WAAS,aAAW,WAAW,EAAgB,CAAC,CAAC,WAAS,aAAW,CAAO,EAAiB,SAAS,CAAC,MAAM,GAAU,0BAA0B,CAAC,UAAU,IAAa,UAAU,EAAW,GAAG,IAAiB,MAAM,EAAW,GAAG,EAAe,aAAa,GAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,MAAMC,EAAE,CAAC,EAA6E,OAA1E,MAAc,CAAI,GAAK,GAAkB,EAAG,CAAC,EAAK,EAAW,EAAW,CAAC,CAAQ,uBAA56B,IAA6B,KAAoH,CAAM,GAAY,CAAC,IAAI,OAAO,IAAI,cAAc,IAAI,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,YAAY,IAAI,OAAO,IAAI,aAAa,IAAI,QAAQ,ICC9T,SAAgB,IAAkB,CAG9B,OAF4BC,MAAY,EAAa,SAAS,CAC5D,EAAE,CAAC,CAGT,SAAgB,IAAiB,CAG7B,OAFkBA,MAAY,EAAa,SAAS,GAAK,EAAa,QACpE,EAAE,CAAC,CAGT,SAAgB,IAAgB,CAG5B,OAFiBA,MAAY,EAAa,SAAS,GAAK,EAAa,OACnE,EAAE,CAAC,mBAduB,IACM,ICAtC,SAAgB,GAAmB,EAAO,CACtC,GAAM,CAAC,EAAiB,GAAYC,EAAe,EAAM,CAMzD,OALA,MAAoB,CAChB,EAAS,EAAM,EAChB,CACC,EACH,CAAC,CACK,CACH,EACA,EACH,mBAX0B,ICE/B,SAAgB,GAAU,EAAO,CAC7B,GAAM,CAAE,eAAe,sBAAsB,gBAAgB,iBAAiB,oBAAoB,oBAAwB,EAU1H,OAToBC,MAAY,EAAsB,GAAG,EAAc,KAAK,EAAe,KAAK,EAAkB,KAAK,EAAiB,IAAM,GAAG,EAAa,IAC5J,CACE,EACA,EACA,EACA,EACA,EACA,EACH,CAAC,CA2BN,SAAgB,GAAW,EAAO,CAC9B,GAAM,CAAE,UAAU,iBAAiB,aAAa,eAAe,gBAAgB,eAAmB,EAUlG,OATqBA,MAAY,EAAiB,GAAG,EAAW,KAAK,EAAa,KAAK,EAAc,KAAK,EAAY,IAAM,EAC1H,CACE,EACA,EACA,EACA,EACA,EACA,EACH,CAAC,yBAjD0B,IACK,CAcxB,GAAsB,CAC/B,aAAc,CACV,MAAO,SACP,KAAM,EAAY,YAClB,UAAW,sBACX,aAAc,CACV,SACA,oBACH,CACD,UAAW,CACP,gBACA,iBACA,oBACA,mBACH,CACD,YAAa,CACT,KACA,KACA,KACA,KACH,CACD,IAAK,EACR,CACJ,CAcY,GAAiB,CAC1B,QAAS,CACL,KAAM,EAAY,YAClB,UAAW,iBACX,aAAc,CACV,UACA,mBACH,CACD,UAAW,CACP,aACA,eACA,gBACA,cACH,CACD,YAAa,CACT,IACA,IACA,IACA,IACH,CACD,IAAK,EACL,MAAO,UACV,CACJ,mBC3E4M,KAAiJ,KAAwH,KAAgJ,KAA4H,KAA+I,KAAgI,KAA6H,KAAyI,KAA0Q,KAAgI,KAA6J,KAAsI,KAAkK,uBEWtkE,SAAS,GAAS,EAAO,CACrB,IAAI,EAAO,OAAO,EAClB,OAAO,GAAS,OAAS,GAAQ,UAAY,GAAQ,YAKzD,SAAS,GAAS,EAAO,CACrB,GAAI,OAAO,GAAS,SAChB,OAAO,EAEX,GAAI,OAAO,GAAS,SAChB,OAAO,GAEX,GAAI,GAAS,EAAM,CAAE,CACjB,IAAI,EAAQ,OAAO,EAAM,SAAW,WAAa,EAAM,SAAS,CAAG,EACnE,EAAQ,GAAS,EAAM,CAAG,EAAQ,GAAK,EAE3C,GAAI,OAAO,GAAS,SAChB,OAAO,IAAU,EAAI,EAAQ,CAAC,EAElC,EAAQ,EAAM,QAAQ,GAAQ,GAAG,CACjC,IAAI,EAAW,GAAW,KAAK,EAAM,CACrC,OAAO,GAAY,GAAU,KAAK,EAAM,CAAG,GAAa,EAAM,MAAM,EAAE,CAAE,EAAW,EAAI,EAAE,CAAG,GAAW,KAAK,EAAM,CAAG,GAAM,CAAC,EAEhI,SAAgB,GAAS,EAAM,EAAM,EAAS,CAC1C,IAAI,EAAU,EAAU,EAAS,EAAQ,EAAS,EAAc,EAAiB,EAAG,EAAU,GAAO,EAAS,GAAO,EAAW,GAChI,GAAI,OAAO,GAAQ,WACf,MAAU,UAAU,GAAgB,CAExC,EAAO,GAAS,EAAK,EAAI,EACrB,GAAS,EAAQ,GACjB,EAAU,CAAC,CAAC,EAAQ,QACpB,EAAS,YAAa,EACtB,EAAU,EAAS,GAAU,GAAS,EAAQ,QAAQ,EAAI,EAAG,EAAK,CAAG,EACrE,EAAW,aAAc,EAAU,CAAC,CAAC,EAAQ,SAAW,GAE5D,SAAS,EAAW,EAAM,CACtB,IAAI,EAAO,EAAU,EAAU,EAI/B,MAHA,GAAW,EAAW,IAAA,GACtB,EAAiBC,EACjB,EAAS,EAAK,MAAM,EAAS,EAAK,CAC3B,EAEX,SAAS,EAAY,EAAM,CAMvB,MAJA,GAAiBA,EAEjB,EAAU,WAAW,EAAc,EAAK,CAEjC,EAAU,EAAWA,EAAK,CAAG,EAExC,SAAS,EAAc,EAAM,CACzB,IAAI,EAAoBA,EAAO,EAAc,EAAsBA,EAAO,EAAgB,EAAc,EAAO,EAC/G,OAAO,EAAS,GAAU,EAAa,EAAU,EAAoB,CAAG,EAE5E,SAAS,EAAa,EAAM,CACxB,IAAI,EAAoBA,EAAO,EAAc,EAAsBA,EAAO,EAI1E,OAAO,IAAiB,IAAA,IAAa,GAAqB,GAAQ,EAAoB,GAAK,GAAU,GAAuB,EAEhI,SAAS,GAAe,CACpB,IAAIA,EAAO,IAAK,CAChB,GAAI,EAAaA,EAAK,CAClB,OAAO,EAAaA,EAAK,CAG7B,EAAU,WAAW,EAAc,EAAcA,EAAK,CAAC,CAE3D,SAAS,EAAa,EAAM,CAQxB,MAPA,GAAU,IAAA,GAGN,GAAY,EACL,EAAWA,EAAK,EAE3B,EAAW,EAAW,IAAA,GACf,GAEX,SAAS,GAAS,CACV,IAAY,IAAA,IACZ,aAAa,EAAQ,CAEzB,EAAiB,EACjB,EAAW,EAAe,EAAW,EAAU,IAAA,GAEnD,SAAS,GAAQ,CACb,OAAO,IAAY,IAAA,GAAY,EAAS,EAAa,IAAK,CAAC,CAE/D,SAAS,GAAY,CACjB,IAAIA,EAAO,IAAK,CAAE,EAAa,EAAaA,EAAK,CAIjD,GAHA,EAAW,UACX,EAAW,KACX,EAAeA,EACX,EAAY,CACZ,GAAI,IAAY,IAAA,GACZ,OAAO,EAAY,EAAa,CAEpC,GAAI,EAIA,OAFA,aAAa,EAAQ,CACrB,EAAU,WAAW,EAAc,EAAK,CACjC,EAAW,EAAa,CAMvC,OAHI,IAAY,IAAA,KACZ,EAAU,WAAW,EAAc,EAAK,EAErC,EAIX,MAFA,GAAU,OAAS,EACnB,EAAU,MAAQ,EACX,EAEX,SAAgB,GAAS,EAAM,EAAM,EAAS,CAC1C,IAAI,EAAU,GAAM,EAAW,GAC/B,GAAI,OAAO,GAAQ,WACf,MAAU,UAAU,GAAgB,CAMxC,OAJI,GAAS,EAAQ,GACjB,EAAU,YAAa,EAAU,CAAC,CAAC,EAAQ,QAAU,EACrD,EAAW,aAAc,EAAU,CAAC,CAAC,EAAQ,SAAW,GAErD,GAAS,EAAM,EAAM,CACf,UACT,QAAS,EACC,WACb,CAAC,8CA5I8B,GAAkB,sBACuC,GAAY,KAAK,IAAK,GAAY,KAAK,IACtE,GAAM,IACV,GAAS,aACH,GAAa,qBAC7B,GAAa,aACd,GAAY,cACW,GAAe,SACjF,GAAM,UAAW,CACjB,OAAO,KAAK,KAAK,0CENS,IAG8B,KAMrC,IAC+B,KAKQ,KACS,IACzB,CAC1C,GAAe,GACjB,SAAgB,EAAO,CACrB,GAAM,CACJ,MAAO,EACP,cACA,YACA,aACA,MACA,MACA,WACA,eACA,QACA,QACA,aACA,cACA,WACA,YACA,gBACA,SACA,sBACA,aACA,WACA,cACA,SACE,EACE,CAAC,EAAS,GAAcE,EAAS,GAAM,CACvC,CAAC,EAAS,GAAcA,EAAS,GAAM,CACvC,GAAW,EAAa,SAAS,GAAK,EAAa,OACnD,EAAgB,GAAuB,CAAC,GACxC,GAAgB,GAAiB,IAAgB,OACjD,EAAW,IAAgB,OAC3B,GAAQC,GAAQ,CAEhB,GAAcC,GACjB,EAAQ,IAAW,CAClB,GAAqB,EAAO,CACxB,GAAU,EAAS,EAAO,CAC1B,EAAe,GAAQC,EAAQ,EAAQ,EAAW,CACjD,0BAA4BA,EAAO,IAAI,EAAO,CAAC,EAEtD,CAAC,EAAY,EAAe,EAAS,CACtC,CACK,GAAQ,GAAmB,EAAW,CAC1C,SAAU,GACV,UAAY,GAAW,GAAU,EAAQ,CAAC,EAAG,IAAI,CAAE,CAAC,EAAK,EAAI,CAAC,CAC/D,CAAC,CACI,GAAQ,GAAa,GAAO,CAAC,EAAK,EAAI,CAAE,CAAC,KAAM,OAAO,CAAC,CACvD,GAAkB,GAAa,GAAO,CAAC,EAAK,EAAI,CAAE,CAAC,EAAG,EAAE,CAAC,CACzD,GAAuBD,EAC3B,GAAU,GAAQ,CAEN,GAAM,SAA+B,QAAO,GAAM,QAAQ,MAAQ,IAC3E,IAAI,CACP,CAAC,GAAM,CACR,CACD,GAAY,GAAQ,GAAQ,CACtB,GAAc,EAAU,EAAE,GAAqB,EAAI,CACnD,GAAS,GAAO,GAAK,GAAO,CAC5B,GAAS,GAAO,GAAK,GAAO,CAC5B,GAAc,EAAa,EAAI,EACnC,CACF,IAAM,GAAqB,GAAM,CAC/B,GAAY,WAAWG,EAAE,OAAO,MAAM,CAAE,GAAM,EAE1C,GAAmB,GAAM,CACzB,WAAWA,EAAE,OAAO,MAAM,GAAK,GACjC,GAAY,WAAWA,EAAE,OAAO,MAAM,CAAE,GAAM,EAE5C,OAAsB,GAEtB,EAAiB,EAAW,EAAW,EAAc,EACrD,GAAc,KAAK,IAAI,EAAW,EAAa,EAAY,CACjE,OAAuB,EACrB,MACA,CACE,UAAW,wBACX,iBAAoB,EAAW,GAAK,CACpC,iBAAoB,EAAW,GAAM,CACrC,MAAO,EAAc,EAAe,CAClC,SAAU,WACX,CAAE,EAAM,CAAE,CACT,WAAY,SACZ,eAAgB,aAChB,OAAQ,aAAa,IACrB,iCAAkC,GAClC,gCAAiC,EAClC,CAAC,CACF,SAAU,CACQ,EACd,QACA,CACE,IAAK,GACL,MAAO,EAAe,EAAc,EAAe,CACjD,WAAY,EACZ,UAAW,GACX,QAAS,EACT,OAAQ,EACR,QAAS,OACV,CAAE,EAAM,CAAE,CACT,wBAAyB,mBAC1B,CAAC,CAAE,CAAC,IAAiB,CACpB,MAAO,eAAe,EAAe,KACrC,WAAY,CAAC,EAAiB,EAC/B,CAAC,CACF,YAAe,EAAW,GAAK,CAC/B,WAAc,EAAW,GAAM,CAC/B,KAAM,QACN,MACA,MACA,aAAc,GACd,KAAM,MACN,SAAU,GACV,YAAa,GACb,UAAW,GACZ,CACF,CACe,EACd,MACA,CACE,MAAO,CACL,WAAY,EACZ,SAAU,WACV,IAAK,cAAc,KAAK,KAAK,EAAc,EAAE,CAAC,KAC9C,aAAc,EACd,QAAS,OACT,OAAQ,EACR,MAAO,OACP,gBAAiB,OACjB,cAAe,OACf,SAAU,SACX,CACD,SAA0B,EACxB,EAAO,IACP,CACE,MAAO,CACL,OAAQ,EACR,MAAO,OACP,WAAY,EACZ,OAAQ,GACR,SAAU,WACV,IAAK,cAAc,KAAK,KAAK,EAAc,EAAE,CAAC,KAC9C,gBAAiB,OACjB,cAAe,OAChB,CACF,CACF,CACF,CACF,CACe,EACd,EAAO,IACP,CACE,MAAO,EAAe,CACpB,EAAG,GACH,SAAU,WACV,QAAS,OACT,MAAO,OACP,IAAK,cAAc,KAAK,MAAM,EAAW,EAAE,CAAC,KAC5C,cAAe,OAChB,CAAE,GAAgB,CACjB,MAAO,eAAe,EAAS,IAC/B,KAAM,EACP,CAAG,CACF,MAAO,OACP,KAAM,CAAC,EAAW,EACnB,CAAC,CACF,SAA0B,EACxB,EAAO,IACP,CACE,QAAS,GACT,QAAS,CACP,MAAO,GAAW,IAAgB,SAAuB,IAAgB,OAAoB,EAAI,EAClG,CACD,WAAY,CACV,KAAM,SACN,UAAW,IACX,QAAS,GACV,CACD,MAAO,CACL,gBAAiB,UACjB,MAAO,EACP,OAAQ,EACR,aAAc,MACd,WAAY,EACZ,cAAe,OACf,UAAW,mBAAmB,EAAO;kDACP,EAAO;kDACP,IAC/B,CACF,CACF,CACF,CACF,CACF,CACF,CACF,EAEH,CACE,2GACA,oEACA,gKACA,4MACA,wMACA,kMACD,CACF,CACD,GAAa,YAAc,eAC3B,GAAa,aAAe,CAC1B,OAAQ,GACR,MAAO,IACP,YAAa,EACb,UAAW,OACX,WAAY,OACZ,UAAW,OACX,WAAY,sBACZ,OAAQ,kBACR,SAAU,GACV,SAAU,GACV,IAAK,EACL,IAAK,IACL,MAAO,GACP,YAAa,EACb,YAAa,OACb,cAAe,GACf,WAAY,CACV,KAAM,SACN,MAAO,EACP,UAAW,IACX,QAAS,GACV,CACD,oBAAqB,GACtB,CACD,GAAa,iBAAmB,CAC9B,UAAW,CACT,MAAO,OACP,KAAM,EAAY,MACnB,CACD,WAAY,CACV,MAAO,QACP,KAAM,EAAY,MACnB,CACD,UAAW,CACT,MAAO,OACP,KAAM,EAAY,MACnB,CACD,OAAQ,CAAE,KAAM,EAAY,MAAO,MAAO,SAAU,CAKpD,oBAAqB,CACnB,KAAM,EAAY,QAClB,MAAO,UACP,aAAc,UACd,cAAe,UAChB,CACD,WAAY,CACV,KAAM,EAAY,WAClB,aAAc,GAAa,aAAa,WACzC,CACD,YAAa,CACX,KAAM,EAAY,KAClB,wBAAyB,GACzB,MAAO,OACP,QAAS,CAAC,OAAQ,QAAS,OAAO,CACnC,CACD,cAAe,CACb,KAAM,EAAY,QAClB,MAAO,YACP,aAAc,MACd,cAAe,KACf,QAAS,CAAE,iBAAkB,IAAgB,OAC9C,CACD,SAAU,CACR,KAAM,EAAY,OAClB,MAAO,OACP,IAAK,GACL,IAAK,IACL,QAAS,CAAE,iBAAkB,IAAgB,OAC9C,CACD,MAAO,CACL,KAAM,EAAY,OAClB,MAAO,QACP,IAAK,EACL,IAAK,IACL,KAAM,IACP,CACD,YAAa,CACX,MAAO,SACP,KAAM,EAAY,OAClB,IAAK,EACN,CACD,IAAK,CACH,MAAO,MACP,KAAM,EAAY,OAClB,eAAgB,GACjB,CACD,YAAa,CACX,KAAM,EAAY,OAClB,eAAgB,GAChB,IAAK,EACL,IAAK,IACL,MAAO,SACR,CACD,IAAK,CACH,MAAO,MACP,KAAM,EAAY,OAClB,eAAgB,GACjB,CACD,SAAU,CAAE,KAAM,EAAY,aAAc,CAC5C,MAAO,CAAE,KAAM,EAAY,aAAc,CACzC,MAAO,CAAE,KAAM,EAAY,aAAc,CAC1C,ICpUD,SAAS,GAAe,CAAE,QAAO,SAAQ,SAAS,CAChD,GAAM,CAAC,EAAW,GAAgBC,EAAS,GAAQ,CAYnD,OAXA,MAAgB,CACd,IAAM,EAAiB,GAAU,CAC3B,EAAM,SAAW,EAAM,UAAY,EAAM,MAAQ,KACnD,EAAc,GAAc,CAAC,EAAU,EAI3C,OADA,EAAO,iBAAiB,UAAW,EAAc,KACpC,CACX,EAAO,oBAAoB,UAAW,EAAc,GAErD,EAAE,CAAC,CACiB,EACrB,MACA,CACE,MAAO,CACL,SAAU,WACV,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,QAAS,EAAY,EAAI,EACzB,WAAY,0BACZ,MAAO,MACP,UAAW,4BACX,SAAU,EACV,WAAY,QACb,CACD,SAAU,EACX,CACF,wBAtC2B,IAGO,IACO,IACJ,CAmCxC,GAAe,iBAAmB,CAChC,MAAO,CACL,KAAM,EAAY,OAClB,aAAc,QACf,CACF,ICvCD,SAAS,GAAe,EAAO,CAC7B,GAAM,CAAE,cAAa,WAAY,EAC3B,EAAe,GAAkB,GAAU,EAAM,aAAa,CAapE,OAZA,MAAgB,CACd,QAAQ,IACN,+CACA,EAAc,WAAa,UAC5B,CACG,GAAe,GACjB,QAAQ,IAAI,mDAAmD,CAC/D,EAAa,EAAa,EAAQ,EAElC,QAAQ,KAAK,kDAAkD,EAEhE,CAAC,EAAa,EAAQ,CAAC,CACH,EAAI,MAAO,CAAE,MAAO,CAAE,MAAO,OAAQ,OAAQ,OAAQ,WAAY,OAAQ,CAAE,CAAC,oBArBvE,IAGI,IACG,IACG,CAkBxC,GAAe,iBAAmB,CAChC,YAAa,CACX,MAAO,SACP,KAAM,EAAY,OAClB,aAAc,GACf,CACD,QAAS,CACP,MAAO,WACP,KAAM,EAAY,OAClB,aAAc,GACf,CACF,qBCnCwD,IACX,CAC1C,IAAe,CACjB,QACA,QACA,WACA,cACA,iBACA,MACA,MACA,UACI,CACJ,GAAM,CAAC,EAAU,GAAeC,EAAS,EAAM,CACzC,CAAC,EAAU,GAAeA,EAAS,EAAE,CACrC,EAAUC,EACb,GAAU,CACT,EAAY,EAAM,QAAQ,CAC1B,EAAY,EAAM,EAEpB,CAAC,EAAM,CACR,CAyBD,OAxBA,MAAgB,CACd,IAAM,EAAY,GAAU,CAE1B,GAAI,EAAU,CAGZ,IAAM,EAAW,GAFJ,EAAM,QAAU,GACT,GAEd,EAAW,EAAO,KAAK,MAAM,EAAW,EAAK,CAAG,EAAO,EAE7D,GADI,IAAQ,IAAK,IAAK,EAAW,GAC7B,IAAQ,IAAK,IAAK,EAAW,EAAK,OACtC,IAAM,EAAgB,GAAc,EAAK,UAAU,CAAC,MAAM,IAAI,CAAC,IAA0B,QAAe,EACxG,EAAS,WAAW,EAAS,QAAQ,EAAc,CAAC,CAAC,GAGnD,MAAc,CAClB,EAAY,EAAE,EAIhB,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,UAAW,EAAM,KAC9B,CACX,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,UAAW,EAAM,GAE/C,CAAC,EAAU,EAAU,EAAU,EAAK,EAAK,EAAK,CAAC,CAC3B,EACrB,MACA,CACE,UAAW,iIACX,gBAAmB,EAAe,EAAM,CACxC,iBAAoB,EAAe,GAAG,CACtC,YAAa,EACb,SAAU,CACQ,EAAI,MAAO,CAAE,UAAW,6GAA8G,SAAU,EAAO,CAAC,CACxJ,EAAI,MAAO,CAAE,UAAW,0CAA2C,SAA0B,EAC3G,QACA,CACE,KAAM,SACN,QACA,SAAW,GAAM,CACf,IAAM,EAAS,WAAWE,EAAE,OAAO,MAAM,CACpC,MAAM,EAAO,EAChB,EAAS,EAAO,EAGpB,UAAW,+JAAiK,IAAgB,EAAQ,iBAAmB,kBACvN,MACA,MACA,OACD,CACF,CAAE,CAAC,CACL,CACF,CACF,KCvEH,SAAS,GAAW,CAClB,QACA,OACA,cACA,YAAY,IACX,CACD,GAAM,CAAC,EAAa,GAAkBC,EAAS,GAAM,CACrD,OAAuB,EACrB,MACA,CACE,UAAW,wFACX,SAAU,CACQ,EAAK,IAAK,CAAE,UAAW,4CAA6C,SAAU,CAC5F,IAAc,IAAwB,EAAI,OAAQ,CAAE,UAAW,aAAc,SAAU,KAAW,CAAC,CACnG,EACD,CAAE,CAAC,CACJ,IAAS,IAAwB,EAC/B,MACA,CACE,UAAW,6EACX,gBAAmB,EAAe,GAAK,CACvC,iBAAoB,EAAe,GAAM,CACzC,SAA0B,EACxB,MACA,CACE,MAAO,6BACP,MAAO,KACP,OAAQ,KACR,KAAM,UACN,QAAS,cACT,UAAW,aACX,SAA0B,EAAI,OAAQ,CAAE,EAAG,qWAAsW,CAAC,CACnZ,CACF,CACF,CACF,CACD,IAAS,IAAwB,EAC/B,MACA,CACE,UAAW,+DAAiE,IAAgB,GAAO,uBAAyB,sBAC5H,SAAU,CACQ,EAAI,MAAO,CAAE,UAAW,gEAAiE,SAA0B,EAAI,MAAO,CAAE,UAAW,+EAAgF,CAAC,CAAE,CAAC,CAC/N,EAAI,IAAK,CAAE,UAAW,yDAA0D,SAAU,EAAa,CAAC,CACzH,CACF,CACF,CACF,CACF,CACF,mBAlD8B,IACa,ICQ9C,SAAS,GAAkB,CACzB,QACA,gBACA,gBACA,gBACA,YACA,YACA,YACA,OACA,MACA,MACA,OACA,cACA,aACC,CACD,GAAM,CAAC,EAAc,GAAmBC,EAAS,EAAc,CACzD,CAAC,EAAc,GAAmBA,EAAS,EAAc,CACzD,CAAC,EAAc,GAAmBA,EAAS,EAAc,CACzD,CAAC,EAAa,GAAkBA,EAAS,GAAG,CAwBlD,OAvBA,MAAgB,CACd,EAAgB,EAAc,CAC9B,EAAgB,EAAc,CAC9B,EAAgB,EAAc,EAC7B,EAAE,CAAC,CACN,MAAgB,CACd,EAAU,EAAa,EACtB,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAU,EAAa,EACtB,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAU,EAAa,EACtB,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAgB,EAAc,EAC7B,CAAC,EAAc,CAAC,CACnB,MAAgB,CACd,EAAgB,EAAc,EAC7B,CAAC,EAAc,CAAC,CACnB,MAAgB,CACd,EAAgB,EAAc,EAC7B,CAAC,EAAc,CAAC,CACI,EACrB,MACA,CACE,UAAW,mDACX,MAAO,CAAE,WAAY,eAAgB,CACrC,SAAU,CACQ,EACd,GACA,CACE,QACA,OACA,cACA,YACD,CACF,CACe,EAAK,MAAO,CAAE,UAAW,gDAAiD,SAAU,CAClF,EACd,GACA,CACE,MAAO,IACP,MAAO,EACP,SAAU,EACV,cACA,iBACA,MACA,MACA,OACD,CACF,CACe,EACd,GACA,CACE,MAAO,IACP,MAAO,EACP,SAAU,EACV,cACA,iBACA,MACA,MACA,OACD,CACF,CACe,EACd,GACA,CACE,MAAO,IACP,MAAO,EACP,SAAU,EACV,cACA,iBACA,MACA,MACA,OACD,CACF,CACF,CAAE,CAAC,CACL,CACF,CACF,oBA5G2B,KAGA,IAGc,IACE,ICD9C,SAAS,IAAoB,CAC3B,GAAM,EAAG,GAAa,EAAc,SAAS,CAC7C,OAAuB,EAAI,SAAU,CAAE,YAAe,EAAU,UAAU,CAAE,SAAU,gBAAiB,CAAC,CAE1G,SAAS,GAAc,CAAE,OAAO,CAC9B,IAAM,EAAgB,IAAkB,CACxC,OAAuB,EAAI,SAAU,CAAE,YAAe,EAAc,EAAI,CAAE,SAAU,gBAAiB,CAAC,oBAX1E,IAGO,IACG,CASxC,GAAc,iBAAmB,CAC/B,IAAK,CACH,KAAM,EAAY,OACnB,CACF,ICRD,SAAS,GAAc,CACrB,WACA,MAAA,EACA,UACA,QAAQ,IACR,QAAQ,KACR,UAAU,GACV,aAAa,gBACb,gBAAgB,GACf,CACD,IAAM,EAAa,CACjB,UAAW,OACX,WACA,MAAA,EACA,WAAY,IACZ,aACA,WAAY,IACb,CACKC,EAA0B,CAC9B,OAAQ,CAAE,WAAY,CAAE,gBAAiB,KAAO,CAAE,CAClD,MAAO,CAAE,WAAY,CAAE,gBAAiB,KAAO,CAAE,CAClD,CACKC,EAAiB,CACrB,OAAQ,CACN,QAAS,EACT,EAAG,EACH,OAAQ,IACR,MAAO,GACP,WAAY,CACV,KAAM,SACN,SAAU,GACV,QAAS,GACV,CACF,CACD,MAAO,CACL,QAAS,EACT,EAAG,EACH,MAAO,EACP,OAAQ,EACR,WAAY,CACV,KAAM,SACN,SAAU,GACV,QAAS,GAEV,CACF,CACF,CACK,EAAMC,EAAO,KAAK,CAClB,EAAS,GAAU,EAAI,CACvB,EAAW,IAAc,CACzB,CAAC,EAAoB,GAAyBC,EAAS,GAAM,CAcnE,OAbA,MAAgB,CACV,EACF,EAAS,MAAM,QAAQ,CAEvB,EAAS,MAAM,SAAS,EAEzB,CAAC,EAAU,EAAO,CAAC,CACtB,MAAgB,CACd,IAAM,EAAQ,eAAiB,CAC7B,EAAsB,GAAK,EAC1B,EAAM,CACT,UAAa,aAAa,EAAM,EAC/B,CAAC,EAAM,CAAC,CACY,EACrB,EAAO,IACP,CACE,MAAO,CACL,SAAU,WACV,UAAW,aACX,MAAO,IAAU,EAAI,cAAgB,EACtC,CACD,SAAU,CACQ,EACd,MACA,CACE,MAAO,EAAc,EAAe,EAAE,CAAE,EAAW,CAAE,CACnD,QAAS,EACT,cAAe,OACf,WAAY,OACZ,WAAY,SACZ,OAAQ,EACT,CAAC,CACF,SAAU,EACX,CACF,CACe,EACd,EAAO,GACP,CACE,SAAUH,EACV,MACA,QAAS,GAAa,QAAU,SAChC,QAAS,GAAa,QAAU,EAChC,cAAe,GACf,MAAO,EAAc,EAAe,EAAE,CAAE,EAAW,CAAE,CACnD,SAAU,WACV,MAAO,EACP,OAAQ,EACR,MAAO,OACP,cAAe,OACf,QAAS,OACT,WAAY,aACb,CAAC,CACF,SAA0B,EAAI,MAAO,CAAE,MAAO,CAAE,MAAO,OAAQ,CAAE,SAAU,EAAQ,MAAM,IAAI,CAAC,KAAK,EAAM,IAA0B,EACjI,MACA,CACE,MAAO,CACL,QAAS,cACV,CACD,SAAU,CACR,MAAM,KAAK,EAAK,CAAC,KAAK,EAAQ,IAA0B,EACtD,EAAO,KACP,CACE,MAAO,CACL,SAAU,WACV,QAAS,eACT,MAAO,OACP,cAAe,MAChB,CACD,SAAUC,EACV,SAAU,IAAW,IAAM,OAAS,EACrC,CACD,GAAG,EAAM,GAAG,IACb,CAAC,CACF,IAAU,EAAQ,MAAM,IAAI,CAAC,OAAS,EAAa,KAAT,OAC3C,CACF,CACD,QAAQ,EAAK,GAAG,IACjB,CAAC,CAAE,CAAC,CACN,CACF,CACF,CACF,CACF,uBA9I2B,IAGqB,IACC,KACY,IAClB,CAE1C,GADgB,EAAa,SAAS,GACP,EAAa,OAwIhD,GAAc,iBAAmB,CAC/B,MAAO,CAAE,KAAM,EAAY,OAAQ,aAAc,IAAK,CACtD,QAAS,CAAE,KAAM,EAAY,OAAQ,aAAc,cAAe,CAClE,MAAO,CAAE,KAAM,EAAY,MAAO,aAAc,UAAW,CAC3D,SAAU,CAAE,KAAM,EAAY,OAAQ,aAAc,GAAI,CACxD,WAAY,CAAE,KAAM,EAAY,OAAQ,aAAc,OAAQ,CAC9D,cAAe,CAAE,KAAM,EAAY,OAAQ,aAAc,EAAG,IAAK,EAAG,IAAK,EAAG,CAC7E,IClHD,SAAS,GAAU,CACjB,WACA,MAAA,EACA,UACA,QAAQ,EACR,QAAQ,KACR,OAAO,KACP,SAAS,GACT,aAAa,IACb,iBAAiB,IAChB,CACD,OAAuB,EACrB,EAAO,IACP,CACE,MAAO,CACL,SAAU,WACV,UAAW,aACX,SAAU,IAAU,EAAI,cAAgB,EACxC,MAAO,cACP,OAAQ,cACR,WAAY,IAAM,EAAO,eACzB,QAAS,OACT,cAAe,SACf,MAAA,EACA,WAAY,SACZ,WAAY,OACb,CACD,SAA0B,EACxB,EAAO,GACP,CACE,SAAU,GACV,QAAS,EAAiB,UAAY,UACtC,YAAa,UACb,WAAY,QACZ,MAAO,CACL,aACA,OAAQ,EACR,MAAO,cACP,WAAY,OACb,CACD,WAAY,CAAE,QAAO,CACrB,SAAU,CACQ,EACd,MACA,CACE,MAAO,CACL,UAAW,OACX,WACA,MAAA,EACA,QAAS,OACT,SAAU,OACV,WAAY,SACZ,OAAQ,cACT,CACD,SAAU,EAAQ,MAAM,IAAI,CAAC,KAAK,EAAM,IAA0B,EAChE,MACA,CACE,MAAO,CACL,OAAQ,cACR,QAAS,OACT,WAAY,SACb,CACD,SAAU,CACR,MAAM,KAAK,EAAK,CAAC,KAAK,EAAQ,IAA0B,EACtD,EAAO,IACP,CACE,MAAO,CACL,MAAO,cACP,OAAQ,cACR,SAAU,SACV,SAAU,WACV,QAAS,eACV,CACD,SAA0B,EACxB,EAAO,KACP,CACE,SAAU,GACV,WAAY,CAAE,SAAU,GAAK,CAC7B,MAAO,CACL,SAAU,WACV,QAAS,eACV,CACD,SAAU,IAAW,IAAM,OAAS,EACrC,CACF,CACF,CACD,GAAG,EAAM,GAAG,IACb,CAAC,CACF,IAAU,EAAQ,MAAM,IAAI,CAAC,OAAS,EAAa,KAAT,OAC3C,CACF,CACD,QAAQ,EAAK,GAAG,IACjB,CAAC,CACH,CACF,CACD,GAA0B,EACxB,EAAO,IACP,CACE,MAAO,CAAE,WAAYG,EAAO,OAAQ,EAAG,UAAW,EAAG,CACrD,QAAS,CAAE,MAAO,EAAG,CACrB,QAAS,CAAE,MAAO,OAAQ,CAC1B,WAAY,CAAE,MAAO,EAAQ,GAAK,CACnC,CACF,CACF,CACF,CACF,CACF,CACF,0BAnJoC,IACO,CAC1C,GAA0B,CAC5B,QAAS,CAAE,WAAY,CAAE,gBAAiB,KAAO,CAAE,CACnD,QAAS,CAAE,WAAY,CAAE,gBAAiB,KAAO,CAAE,CACnD,MAAO,CAAE,WAAY,CAAE,gBAAiB,IAAM,CAAE,CACjD,CACG,GAAiB,CACnB,QAAS,CACP,QAAS,EACT,EAAG,GACH,OAAQ,EACR,WAAY,CACV,KAAM,SACN,QAAS,GACT,UAAW,IACZ,CACF,CACD,QAAS,CACP,QAAS,EACT,EAAG,EACH,OAAQ,EACR,WAAY,CACV,KAAM,SACN,QAAS,GACT,UAAW,IACZ,CACF,CACD,MAAO,CACL,QAAS,EACT,EAAG,GACH,OAAQ,EACR,WAAY,CACV,KAAM,SACN,QAAS,GACT,UAAW,IACZ,CACF,CACF,ICnBD,SAAS,GAAW,CAClB,eACA,YACC,CACD,GAAM,CAAC,EAAa,GAAkBC,EAAe,EAAa,CAC5D,CAAC,EAAW,GAAgBA,EAAe,GAAM,CACjD,EAAiBC,EAAa,KAAK,CACnC,EAAaA,EAAa,KAAK,CACrC,MAAsB,CACpB,EAAe,EAAa,EAC3B,EAAE,CAAC,CACN,MAAsB,CACpB,EAAS,EAAY,EACpB,CAAC,EAAY,CAAC,CACjB,MAAsB,CACpB,EAAe,EAAa,EAC3B,CAAC,EAAa,CAAC,CAClB,MAAsB,CACpB,IAAM,EAAW,IAAI,sBAClB,CAAC,KAAW,CACP,CAAC,EAAM,gBAAkB,GAC3B,EAAa,GAAM,EAGvB,CAAE,UAAW,GAAK,CAEnB,CAID,OAHI,EAAW,SACb,EAAS,QAAQ,EAAW,QAAQ,KAEzB,CACP,EAAW,SACb,EAAS,UAAU,EAAW,QAAQ,GAGzC,CAAC,EAAU,CAAC,CACf,IAAM,EAA2BC,MAAwB,CACvD,GAAI,GAAa,EAAe,SAAW,EAAW,QAAS,CAC7D,IAAM,EAAc,EAAW,QAAQ,uBAAuB,CACxD,EAAiB,EAAe,QAAQ,uBAAuB,CAC/D,EAAO,EAAY,KAAO,EAAY,MAAQ,EAAI,EAAe,MAAQ,EACzE,EAAM,EAAY,IAAM,EAAe,OAAS,EACtD,EAAe,QAAQ,MAAM,KAAO,GAAG,EAAK,IAC5C,EAAe,QAAQ,MAAM,IAAM,GAAG,EAAI,MAE3C,CAAC,EAAU,CAAC,CAcf,OAbA,GAAkB,MAAsB,EAAa,GAAM,CAAC,CAC5D,MAAsB,CACpB,GAA0B,CAC1B,IAAM,MAAqB,CACzB,GAA0B,EAK5B,OAHI,GACF,EAAO,iBAAiB,SAAU,EAAc,GAAK,KAE1C,CACX,EAAO,oBAAoB,SAAU,EAAc,GAAK,GAEzD,CAAC,EAAW,EAAyB,CAAC,CAClB,EAAK,MAAO,CAAE,UAAW,iDAAkD,SAAU,CAC1F,EAAK,MAAO,CAAE,UAAW,iDAAkD,SAAU,CACnF,EACd,MACA,CACE,IAAK,EACL,UAAW,4CACX,MAAO,CACL,WAAY,GAAwB,EAAY,CAChD,OAAQ,GAAwB,EAAY,GAAK,UAAY,oBAAsB,wBACpF,CACD,YAAe,CACb,EAAa,CAAC,EAAU,EAE3B,CACF,CACe,EACd,MACA,CACE,IAAK,EACL,GAAI,aACJ,MAAO,CACL,MAAO,cACP,OAAQ,cACR,SAAU,QACV,OAAQ,IACR,QAAS,IAAc,GAAO,QAAU,OACzC,CACD,SAA0B,EACxB,MACA,CACE,MAAO,CACL,QAAS,OACT,MAAO,cACP,OAAQ,cACR,WAAY,QACZ,QAAS,GACT,cAAe,SACf,eAAgB,SAChB,WAAY,SACZ,IAAK,GACL,aAAc,EACd,OAAQ,6CACT,CACD,SAAU,CACQ,EACdC,GACA,CACE,MAAO,GAAwB,EAAY,CAC3C,SAAW,GAAU,CACnB,EAAeC,EAAM,IAAI,EAE3B,MAAO,IACP,OAAQ,IACT,CACF,CACe,EACdC,GACA,CACE,MAAO,IACP,OAAQ,EACR,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,CAChD,KAAM,GAAU,GAAwB,EAAY,CAAC,CACrD,SAAW,GAAU,CAEnB,EACE,GAAU,CACR,EAAG,GAHY,GAAwB,EAAY,CAG3B,CAAC,EAEzB,EAAGD,EAAM,EACT,EAAGA,EAAM,EACT,EAAG,EACJ,CAAC,CACH,EAEJ,CACF,CACe,EACd,MACA,CACE,MAAO,CACL,MAAO,GACP,OAAQ,GACR,WAAY,QACZ,SAAU,WACV,aAAc,EACd,OAAQ,GACR,UAAW,gBACZ,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAAE,CAAC,CACY,EACd,QACA,CACE,KAAM,OACN,MAAO,EACP,SAAW,GAAM,EAAeE,EAAE,OAAO,MAAM,CAC/C,UAAW,sGACZ,CACF,CACF,CAAE,CAAC,8BApLwB,KAGA,IAGC,IACe,CAC1C,GAAc,GACZ,CAACF,GAAS,OAAOA,GAAU,SAAiB,GACzC,qCAAqC,KAAKA,EAAM,CAErD,IAA2B,EAAO,EAAW,YACxC,GAAWA,EAAM,CAAGA,EAAQ,KCRrC,SAAS,GAAkB,CACzB,QACA,gBACA,gBACA,SACA,SACA,YACA,YACA,OACA,MACA,MACA,OACA,cACA,aACC,CACD,GAAM,CAAC,EAAc,GAAmBG,EAAS,EAAc,CACzD,CAAC,EAAc,GAAmBA,EAAS,EAAc,CACzD,CAAC,EAAa,GAAkBA,EAAS,GAAG,CAiBlD,OAhBA,MAAgB,CACd,EAAgB,EAAc,CAC9B,EAAgB,EAAc,EAC7B,EAAE,CAAC,CACN,MAAgB,CACd,EAAU,EAAa,EACtB,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAU,EAAa,EACtB,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAgB,EAAc,EAC7B,CAAC,EAAc,CAAC,CACnB,MAAgB,CACd,EAAgB,EAAc,EAC7B,CAAC,EAAc,CAAC,CACI,EACrB,MACA,CACE,UAAW,mDACX,MAAO,CAAE,WAAY,eAAgB,CACrC,SAAU,CACQ,EACd,GACA,CACE,QACA,OACA,cACA,YACD,CACF,CACe,EAAK,MAAO,CAAE,UAAW,gDAAiD,SAAU,CAClF,EACd,GACA,CACE,MAAO,EACP,MAAO,EACP,SAAU,EACV,cACA,iBACA,MACA,MACA,OACD,CACF,CACe,EACd,GACA,CACE,MAAO,EACP,MAAO,EACP,SAAU,EACV,cACA,iBACA,MACA,MACA,OACD,CACF,CACF,CAAE,CAAC,CACL,CACF,CACF,oBAvF2B,KAGA,IAGc,IACE,ICK9C,SAAS,GAAY,CACnB,QACA,eACA,WACA,OACA,MACA,MACA,OACA,cACA,aACC,CACD,GAAM,CAAC,EAAY,GAAiBC,EAAS,EAAa,CACpD,CAAC,EAAa,GAAkBA,EAAS,GAAM,CAUrD,OATA,MAAgB,CACd,EAAc,EAAa,EAC1B,EAAE,CAAC,CACN,MAAgB,CACd,EAAc,EAAa,EAC1B,CAAC,EAAa,CAAC,CAClB,MAAgB,CACd,EAAS,EAAW,EACnB,CAAC,EAAW,CAAC,CACO,EACrB,MACA,CACE,UAAW,kEACX,SAAU,CACQ,EACd,GACA,CACE,QACA,OACA,cACA,YACD,CACF,CACe,EACd,MACA,CACE,UAAW,gDACX,gBAAmB,EAAe,GAAK,CACvC,iBAAoB,EAAe,GAAM,CACzC,SAAU,CACQ,EACd,QACA,CACE,KAAM,SACN,MAAO,EAAW,GAClB,SAAW,GAAM,CACf,EAAc,CAAC,OAAOC,EAAE,OAAO,MAAM,CAAE,EAAW,GAAG,CAAC,EAExD,IAAK,EACL,UAAW,mKAAqK,IAAgB,GAAO,iBAAmB,kBAC1N,OACD,CACF,CACe,EACd,GACA,CACE,MAAO,EACP,OACA,MACA,MACA,SAAW,GAAW,CACpB,EAAc,EAAO,EAEvB,UAAW,mGAAqG,IAAgB,GAAO,WAAa,WACpJ,eAAgB,wBAA0B,IAAgB,GAAO,eAAiB,gBAClF,aAAc,EAAO,IAA0B,EAC7C,MACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,UAAW,yBAA2B,IAAgB,GAAO,eAAiB,gBAC9E,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,MAAM,CAAE,CACpD,QAAS,EAAM,QAAU,EAAI,EAAI,EAClC,CAAC,CACH,CAAC,CACH,CACD,aAAc,EAAO,IAA0B,EAC7C,MACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,UAAW,kDACX,SAA0B,EACxB,MACA,CACE,UAAW,wFAA0F,IAAgB,GAAO,cAAgB,aAC7I,CACF,CACF,CAAC,CACH,CACF,CACF,CACe,EACd,QACA,CACE,KAAM,SACN,MAAO,EAAW,GAClB,SAAW,GAAM,CACf,EAAc,CAAC,EAAW,GAAI,OAAOA,EAAE,OAAO,MAAM,CAAC,CAAC,EAExD,UAAW,mKAAqK,IAAgB,GAAO,iBAAmB,kBAC1N,OACA,MACD,CACF,CACF,CACF,CACF,CACF,CACF,CACF,oBAzH2B,KAGA,KAIA,IAGc,IACE,ICC9C,SAAS,GAAO,CACd,QACA,eACA,WACA,OACA,MACA,MACA,OACA,cACA,aACC,CACD,GAAM,CAAC,EAAa,GAAkBC,EAAS,EAAa,CACtD,CAAC,EAAa,GAAkBA,EAAS,GAAM,CAUrD,OATA,MAAgB,CACd,EAAe,EAAa,EAC3B,EAAE,CAAC,CACN,MAAgB,CACd,EAAS,EAAY,EACpB,CAAC,EAAY,CAAC,CACjB,MAAgB,CACd,EAAe,EAAa,EAC3B,CAAC,EAAa,CAAC,CACK,EACrB,MACA,CACE,UAAW,kEACX,SAAU,CACQ,EACd,GACA,CACE,QACA,OACA,cACA,YACD,CACF,CACe,EACd,MACA,CACE,UAAW,gDACX,gBAAmB,EAAe,GAAK,CACvC,iBAAoB,EAAe,GAAM,CACzC,SAAU,CACQ,EACd,GACA,CACE,MAAO,OAAO,EAAY,CAC1B,OACA,MACA,MACA,UAAW,EAAO,IAAU,EAAe,EAAM,CACjD,UAAW,mGAAqG,IAAgB,GAAO,WAAa,WACpJ,eAAgB,wBAA0B,IAAgB,GAAO,eAAiB,gBAClF,aAAc,EAAO,IAA0B,EAC7C,MACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,UAAW,yBAA2B,IAAgB,GAAO,eAAiB,gBAC9E,MAAO,EAAc,EAAe,EAAE,CAAE,EAAM,MAAM,CAAE,CACpD,QAAS,EAAM,QAAU,EAAI,EAAI,EAClC,CAAC,CACH,CAAC,CACH,CACD,aAAc,EAAO,IAA0B,EAC7C,MACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,UAAW,kDACX,SAA0B,EACxB,MACA,CACE,UAAW,wFAA0F,IAAgB,GAAO,cAAgB,aAC7I,CACF,CACF,CAAC,CACH,CACF,CACF,CACe,EACd,QACA,CACE,KAAM,SACN,MAAO,EACP,SAAW,GAAM,EAAeC,EAAE,OAAO,MAAM,CAC/C,UAAW,mKAAqK,IAAgB,GAAO,iBAAmB,kBAC1N,MACA,MACA,OACD,CACF,CACF,CACF,CACF,CACF,CACF,CACF,oBAzG2B,KAGA,KAIA,IAGc,IACE,ICK9C,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAU,CAChB,GAAM,CAAC,EAAO,GAAYC,EAAS,GAAG,CAKtC,OAJA,MAAgB,CACd,EAAS,SAAS,KAAK,QAAQ,YAAY,CAC3C,QAAQ,IAAI,EAAM,EACjB,EAAE,CAAC,CACiB,EACrBC,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,IAAU,QAAU,SAAW,OACzC,CAAC,CACH,EAGL,SAAS,GAAY,EAAW,CAC9B,MAAQ,IAAU,CAChB,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CACxD,EAAY,GAAY,GAAU,EAAM,UAAU,CAClD,EAAW,GAAY,GAAU,EAAM,SAAS,CAEtD,OADA,QAAQ,IAAI,sBAAuB,CAAE,YAAW,WAAU,eAAc,CAAC,CAClD,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,QAAS,IAAc,UAAY,IAAc,OAAS,IAAa,GAAK,SAAW,WACvF,YAAe,EAAQ,KAAM,KAAM,WAAa,CAM9C,GALA,QAAQ,IAAI,sBAAuB,CACjC,YACA,WACA,eACD,CAAC,CACE,IAAc,OAAS,IAAa,GACtC,QAAQ,IACN,kCACA,EACA,GAAoB,EAAS,CAC9B,CACD,EAAO,OAAO,YACZ,EAAe,CACb,QAAS,gBACV,CAAE,GAAoB,EAAS,CAAC,CACjC,IACD,SACQ,IAAc,SAAU,CACjC,IAAM,EAAkB,sCAAwC,GAAQ,GAAc,IACtF,QAAQ,IACN,+BACA,EACA,EACA,GAAoB,EAAgB,CACrC,CACD,EAAO,OAAO,YACZ,EAAe,CACb,QAAS,gBACV,CAAE,GAAoB,EAAgB,CAAC,CACxC,IACD,GAEH,CACH,CAAC,CACH,yBA5EyB,KAGA,KAGA,KAKA,IAGc,IACJ,ICIxC,SAAS,GAAW,EAAW,CAC7B,MAAQ,KACN,MAAgB,CACd,IAAM,EAAQ,SAAS,eAAe,2BAA2B,CAC7D,GAAO,EAAM,QAAQ,EACxB,EAAE,CAAC,CACiB,EAAIC,EAAW,EAAe,EAAE,CAAE,EAAM,CAAC,EAGpE,SAAS,GAAc,EAAW,CAChC,MAAQ,IAAU,CAEhB,IAAM,EAAc,GADC,GAAY,GAAU,EAAM,aAAa,EACpB,MAC1C,OAAuB,EAAIA,EAAW,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CAAE,KAAM,EAAa,CAAC,CAAC,EAG1G,SAAS,GAAa,EAAW,CAC/B,MAAQ,IAAU,CAChB,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CAC9D,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAe,CACb,EAAa,SAAS,CACtB,QAAQ,IAAI,SAAS,EAExB,CAAC,CACH,EAGL,SAAS,GAAU,EAAW,CAC5B,MAAQ,IAAU,CAChB,IAAM,EAAe,GAAY,GAAU,EAAM,aAAa,CAC9D,OAAuB,EACrBA,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,YAAe,CACb,EAAa,MAAM,CACnB,QAAQ,IAAI,MAAM,EAErB,CAAC,CACH,EAGL,SAAS,GAAS,EAAW,CAC3B,MAAQ,IAAU,CAChB,IAAM,EAAgB,IAAkB,CAClC,EAAc,GAAY,GAAU,EAAM,YAAY,CACtD,CAAC,EAAO,GAAYC,EAAS,GAAG,CAChC,CAAC,EAAO,GAAYA,EAAS,GAAK,CAMxC,OAAuB,EACrBD,EACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,SAAW,GAAM,CACf,IAAM,EAASE,EAAE,OAAO,MACxB,EAAS,EAAO,CAChB,QAAQ,IAAI,GAAW,EAAO,CAAC,CAC3B,GAAW,EAAO,EACpB,EAAS,GAAK,CACd,EAAc,EAAO,CACrB,EAAY,EAAO,CACnB,QAAQ,IAAI,GAAoB,EAAO,CAAC,EAExC,EAAS,GAAM,EAGpB,CAAC,CACH,EAIL,SAAS,GAAgB,EAAW,CAClC,OAAOC,GAAY,EAAO,IAAQ,CAChC,GAAM,CAAC,EAAU,GAAeF,EAAS,GAAM,CA0B/C,OAzBA,MAAgB,CACd,IAAI,EAAO,SAAS,cAClB,cAAc,GAAK,IACpB,CACI,IACH,EAAO,SAAS,cAAc,OAAO,CACrC,EAAK,IAAM,aACX,EAAK,KAAO,GACZ,SAAS,KAAK,YAAY,EAAK,EAEjC,IAAM,MAAmB,EAAY,GAAK,CAU1C,OATI,EAAK,MACP,EAAY,GAAK,EAEjB,EAAK,iBAAiB,OAAQ,EAAW,CACzC,EAAK,iBAAiB,YAAe,CACnC,QAAQ,MAAM,uBAAuB,KAAO,CAC5C,EAAY,GAAK,EACjB,MAES,CACX,EAAK,oBAAoB,OAAQ,EAAW,GAE7C,EAAE,CAAC,CACD,EACkB,EAAID,EAAW,EAAe,CAAE,MAAK,CAAE,EAAM,CAAC,CAD/C,MAEtB,uBA3H0B,KAGA,KAGA,KAGA,KAIA,IAG0B,IAChB,CA4EpC,GAAO,gFC9FmB,KAGA,CAG9B,IAAoB,CACpB,IAAY,ICSZ,SAAS,GAA8B,EAAO,CAC5C,GAAM,CAAC,GAAgB,EAAc,eAAe,CAC9C,CAACI,GAAO,EAAc,MAAM,CAC5B,CAAC,GAAyB,EAAc,wBAAwB,CAChE,CAAC,GAAmB,EAAc,kBAAkB,CACpDC,EAAc,GAAiB,CACnC,kBAAmB,EACnB,SAAUD,EACV,2BAA4B,EAC5B,qBAAsB,EACtB,QACD,CAAC,CACF,OAAuB,EACrB,GACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,aAAcC,EAAY,aAC1B,IAAKA,EAAY,IACjB,sBAAuBA,EAAY,sBACnC,gBAAiBA,EAAY,gBAC9B,CAAC,CACH,oBAnC2B,KAKA,KAIA,IAKU,CAFxC,IAAW,CACX,IAAoB,ICRpB,SAAS,IAAwB,CAC/B,MAAgB,CACd,GAAoB,EAAO,SAAS,OAAO,EAC1C,EAAE,CAAC,wBARsB,IAII,CADlC,IAAY,ICSZ,SAAS,IAAmB,CAC1B,IAAM,EAAeC,GAAY,GAAU,EAAM,aAAa,CAC9D,MAAgB,CAEd,IAAI,EACJ,AAEK,EAFD,CAAC,IAAqB,EAAO,SAAS,QAA8B,SAAS,eAAe,CAChF,EAAO,SAAS,OACb,GAAQ,GAAc,IACzC,GAAoB,EAAY,CAChC,GAAa,IACZ,CAAC,EAAa,CAAC,8BArBU,KAIA,KAGA,IAGI,CAc9B,GAAwB,EAAM,CAChC,2EAA4E,CAC1E,IAAiB,CACjB,IAAY,CACZ,GAAa,IAEhB,CAAC,yBC/B4B,KAKA,KAWA,KAMA,KAIA,CAG1B,GAAgB,EAAE,CACtB,GAAS,GAAe,CACtB,mBAAsB,GACtB,YAAe,GACf,wBAA2BE,GAC3B,wBAA2B,GAC3B,uBAA0BC,GAC1B,4BAA+BC,GAC/B,mBAAsB,GACtB,gBAAmB,GACnB,aAAgBC,GAChB,qBAAwB,GACxB,kBAAqB,EACrB,kBAAqB,GACrB,eAAkBC,GAClB,qBAAwB,GACzB,CAAC,CACE,GAAc,EAAM,CACtB,gEAAiE,CAC/D,IAAY,CACZ,IAAoB,CACpB,IAAiB,CACjB,IAAuB,EAE1B,CAAC,IC7BF,SAAS,GAAiB,EAAS,EAAI,CACrC,IAAIC,EAAKC,EAAI,CAAE,aAAcD,EAAI,EAAQ,GAAUA,EAAI,CAAC,YAAY,CAAC,CACrE,GAAM,CAAC,GAAQ,EAAc,OAAO,CAC9B,CAACE,GAAW,EAAc,UAAU,CACpC,CAAC,GAAS,EAAc,QAAQ,CAChC,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,GAAY,EAAc,WAAW,CACtC,CAAC,GAAQ,EAAc,OAAO,CAC9B,CAAC,GAAgB,EAAc,eAAe,CAC9C,CAAC,GAAS,EAAc,QAAQ,CAChC,CAAC,GAAU,EAAc,SAAS,CAClC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAY,EAAc,WAAW,CACtC,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAU,EAAc,SAAS,CAClC,CAAC,GAAU,EAAc,SAAS,CAClC,CAAC,GAAU,EAAc,SAAS,CAClC,CAAC,GAAiB,EAAc,gBAAgB,CAChD,CAAC,GAAe,EAAc,cAAc,CAC5C,CAAC,GAAa,EAAc,YAAY,CACxC,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,IAAa,EAAc,YAAY,CACxC,CAAC,GAAU,EAAc,SAAS,CAClC,CAAC,IAAa,EAAc,YAAY,CACxC,CAAC,GAAc,EAAc,aAAa,CAC1C,CAAC,IAAa,EAAc,YAAY,CACxC,CAAC,IAAS,EAAc,QAAQ,CAChC,CAAC,IAAc,EAAc,aAAa,CAC1C,CAAC,IAAW,EAAc,UAAU,CACpC,CAAC,GAAc,EAAc,aAAa,CAC1C,GAAa,GAAgB,GAAU,EAAM,WAAW,CACxD,CAAC,IAAa,EAAc,YAAY,CACxC,CAAC,IAAe,EAAc,cAAc,CAC5C,CAAC,IAAU,EAAc,SAAS,CAClC,GAAa,CACjB,OACA,QAAA,EACA,QACA,aACA,WACA,OACA,eACA,aACA,eACA,UACA,QACA,SACA,YACA,WACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,SACA,gBACA,cACA,YACA,aACA,aACA,SACA,aACA,aACA,aACA,SACA,cACA,WACA,aACA,cAED,CACD,GAAI,IAAY,QACd,OAAO,GAAM,EAAe,EAAe,EAAE,CAAE,GAAW,CAAE,GAAkB,EAAM,CAAC,CAAC,IAC/E,IAAY,QACnB,OAAO,GACL,EAAY,GAAU,GAAgB,EAAU,CAAE,CAChD,aAAc,GACd,cAAe,GACf,YAAa,QACd,CAAC,CAAG,GACN,CAEL,SAAS,GAAM,EAAK,CAClB,IAAM,EAAgB,EAAE,CACxB,IAAK,IAAM,KAAO,EACZ,EAAI,KAAS,OACf,EAAc,GAAO,EAAI,IAG7B,OAAO,qBA9HqB,KAIA,KAKA,KAKA,KAIA,CAG9B,IAAY,CACZ,IAAW,CACX,IAAoB,CACpB,IAAmB,ICCnB,SAAS,GAAwB,EAAa,CAC5C,IAAuB,CACvB,IAAM,EAAQ,GAAiB,EAAY,QAAS,EAAY,CAC1D,EAAqB,EAAY,qBAAuB,GAC9D,OAAuB,EACrB,GACA,EAAc,EAAe,EAAE,CAAE,EAAM,CAAE,CACvC,eAAgB,EAAsB,GAAY,CAChD,GAAM,CAAE,gBAAe,cAAa,YAAW,cAAe,EAC9D,GAAW,IAAW,OAAa,CACjC,GAAM,CAAE,cAAA,IAAmBC,IAAY,CAAE,GAAa,GAAc,EAC9D,EAAO,EAAE,CACJ,IAAkB,SAC3B,EAAK,cAAgB,GACZ,IAAgB,SACzB,EAAK,YAAc,GACV,IAAc,SAAa,EAAK,UAAY,GAC5C,IAAe,SACxB,EAAK,WAAa,GAChB,OAAO,KAAK,EAAK,CAAC,QACpB,EAAc,SAAS,EAAK,GAG9B,IAAK,GACV,CAAC,CACH,wBAlD2B,KAGA,KAIA,KAMA,KAKA,IAIO,IAEG,CAHxC,IAAW,CAEX,IAAiB,CA6BjB,GAAwB,iBAAmB,GACzC,EACA,YACD,q5ECpD6B,KAgBA,KAmBA,KACA,KACA,KAWA,KA+BA,KACA,KAEA,KASA,KACA,KACA,KACA,KAOA,KAGA,KAGA,KAGA,KAIA,KAGA,KAGA,KAGA,KAGA,KACA,KAGA,KAIA,KAGA,KAIA,KACA,KAGA,KAGA,KAGA,KACA,KAIA,KACA,KAGA,KAGA,KACA,KAGA,KACA,KACA,KACA,KAIA,KAQA,KAEA,KAGA,KAGA,KACA,KACA,KACA,KACA,KAIA,KAGA,KAGA,KAYA,KACA,mBC9NgD,sCEE9B,2BCFA,IACjB,CAClB,GAAkB,CAC3B,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACf,CASK,GAAkB,CACpB,GAAG,GACH,aAAc,EACd,WAAY,2BACZ,OAAQ,uCACR,MAAO,UACP,cAAe,SAClB,CACY,GAA0B,GAAkB,EAAG,IACnC,EAAK,MAAO,CAC7B,MAAO,GACF,MACR,CAAC,CACJ,8CE5BEC,GAAQ,IACL,KACH,GAA4B,IAAI,IAAI,CAClC,CACE,OACgB,EAAM,cAAc,EAAM,SAAU,KAAsB,EAAM,cAAc,OAAQ,CAAE,EAAG,8RAA+R,CAAC,CAAC,CAC7Y,CACD,CACE,UACgB,EAAM,cAAc,EAAM,SAAU,KAAsB,EAAM,cAC9E,OACA,CACE,EAAG,yGACH,QAAS,MACV,CACF,CAAkB,EAAM,cAAc,OAAQ,CAAE,EAAG,mQAAoQ,CAAC,CAAC,CAC3T,CACD,CACE,OACgB,EAAM,cAAc,EAAM,SAAU,KAAsB,EAAM,cAAc,OAAQ,CAAE,EAAG,oMAAqM,CAAC,CAAC,CACnT,CACD,CACE,QACgB,EAAM,cAAc,EAAM,SAAU,KAAsB,EAAM,cAAc,OAAQ,CAAE,EAAG,oTAAqT,CAAC,CAAC,CACna,CACD,CACE,UACgB,EAAM,cAAc,EAAM,SAAU,KAAsB,EAAM,cAAc,OAAQ,CAAE,EAAG,mQAAoQ,CAAC,CAAC,CAClX,CACD,CACE,OACgB,EAAM,cAAc,EAAM,SAAU,KAAsB,EAAM,cAAc,OAAQ,CAAE,EAAG,2SAA4S,CAAC,CAAC,CAC1Z,CACF,CAAC,CACF,GAAY,EAAM,YAAY,EAAO,IAAwB,EAAM,cAAc,IAAK,CAAE,MAAK,GAAG,EAAO,CAAE,GAAU,IAAI,EAAM,OAAO,CAAC,CAAC,EAEjI,IAYL,GAAgBA,0BC3C8F,ICAoE,SAAgB,GAAiB,EAAS,EAAa,EAAW,GAAG,EAAc,EAAsB,CAC/R,IAAM,EAAiBC,MAAY,CAAC,GAAG,GAAY,MAAO,GAAyD,SAAU,EAAE,OAAO,KAAK,IAAM,EAAe,EAAW,aAAa,CAAC,QAAQ,QAAQ,GAAG,CAC3C,OAA7HC,EAAsB,IAAkE,GAAYC,EAAS,EAAe,EAAuB,CAAC,EAAc,EAAW,CAAC,CAAwD,OAA5C,EAAa,EAAc,0BAT9N,IAAgC,CAI2E,GAAc,CAAC,QAAQ,CAAC,KAAK,EAAY,aAAa,CAAC,YAAY,CAAC,KAAK,EAAY,aAAa,CAAC,UAAU,CAAC,KAAK,EAAY,aAAa,CAAC,aAAa,CAAC,KAAK,EAAY,aAAa,CAAC,aAAa,CAAC,KAAK,EAAY,aAAa,CAAC,CAAO,IAAa,EAAI,IAAS,EAAI,KAAK,GAAGC,EAAE,aAAa,CAAC,SAAS,EAAO,CAAC,ICIxb,SAAgB,GAAK,EAAM,CAAC,GAAK,CAAC,MAAA,EAAM,eAAa,aAAW,gBAAc,UAAQ,cAAY,YAAU,eAAa,eAAa,SAAO,YAAU,EAAY,EAAUC,EAAO,GAAM,CAAO,EAAQ,GAAiB,GAAS,EAAa,EAAW,EAAc,GAAsB,CAAM,CAAC,EAAa,GAAiBC,EAAS,IAAU,OAAOC,GAAaC,EAAM,CAAC,KAAK,CAAC,eAAe,GAAc,CACxZ,GAAG,CAAuF,IAAMC,EAAO,MAAM,OAA9D,GAAG,KAAgB,EAAQ,aAAqF,EAAU,SAAQ,EAAgBA,EAAO,QAAQD,EAAM,CAAC,MAAY,CAAI,EAAU,SAAQ,EAAgB,KAAK,EAAG,OAAe,EAAU,QAAQ,GAAK,GAAc,KAAW,CAAC,EAAU,QAAQ,KAAU,CAAC,EAAQ,CAAC,CAA+D,IAAM,EAAnD,EAAa,SAAS,GAAG,EAAa,OAAgD,EAAK,GAAU,EAAE,CAAC,CAAC,KAAK,OAAoB,EAAK,EAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,WAAW,CAAC,UAAQ,eAAa,eAAa,cAAY,YAAU,SAAS,EAA0B,EAAK,MAAM,CAAC,MAAM,6BAA6B,QAAQ,cAAc,MAAM,CAAC,WAAW,OAAO,MAAM,OAAO,OAAO,OAAO,QAAQ,eAAe,KAAKE,EAAM,MAAA,EAAM,WAAW,EAAE,UAAU,EAAS,eAAe,IAAA,GAAU,CAAC,UAAU,QAAQ,MAAMA,EAAM,SAAsB,EAAK,EAAa,CAAC,MAAMA,EAAa,SAAO,CAAC,CAAC,CAAC,CAAC,EAAW,CAAC,+BATn7B,IAA4B,IAA8G,KAAkC,KAA2E,KAA8E,KAAqI,CAAM,GAAS,+4gBAAgzmB,CAAO,GAAc,uCAA6C,GAAc,CAAC,OAAO,QAAQ,UAAU,OAAO,OAAO,UAAU,CAAO,GAAsB,GAAS,QAAQ,EAAI,KAAO,EAAI,EAAI,aAAa,EAAE,EAAW,GAAM,EAAE,CAAC,CAS1jmB,GAAK,YAAY,WAAW,GAAK,aAAa,CAAC,MAAM,GAAG,OAAO,GAAG,cAAc,QAAQ,WAAW,QAAQ,MAAM,OAAO,aAAa,GAAK,OAAO,UAAU,SAAS,GAAM,CAAC,EAAoB,GAAK,CAAC,aAAa,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,OAAO,cAAc,SAAS,aAAa,GAAK,aAAa,aAAa,CAAC,cAAc,CAAC,KAAK,EAAY,KAAK,QAAQ,GAAS,aAAa,GAAK,aAAa,cAAc,MAAM,OAAO,QAAQ,CAAC,kBAAgB,CAAC,EAAa,YAAY,0EAA0E,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,YAAY,mBAAmB,QAAQ,CAAC,kBAAgB,EAAa,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,GAAK,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,aAAa,GAAc,IAAI,GAAO,EAAM,OAAO,EAAE,CAAC,aAAa,CAAC,EAAM,MAAM,EAAE,CAAC,CAAC,QAAQ,GAAc,aAAa,GAAK,aAAa,OAAO,CAAC,SAAS,CAAC,KAAK,EAAY,QAAQ,aAAa,MAAM,cAAc,KAAK,aAAa,GAAK,aAAa,SAAS,CAAC,GAAG,GAAc,CAAC,ICR5iE,SAAwB,GAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,+DAA+D,QAAQ,uEAAuE,OAAO,0BAA0B,YAAY,uEAAuE,MAAM,kBAAkB"}